Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 2
  • 1
  • 2
  • »
Броня игрока
panorama Дата: Пятница, 26.07.2013, 18:00:37 | Сообщение # 1
Сообщений: 203
Репутация: 2 [ +/- ]
Здравствуйте , скажите каким способом можно сделать функцию
если у игрока есть броня то снимать ее с каждым выстрелом противника , если нету то выполняем дальнейшее действие ?
С броней все получается но как заставить не снимать хп , не знаю !

HELP кто может .
Спасибо !
 
ThRunningMan Дата: Пятница, 26.07.2013, 18:08:14 | Сообщение # 2
Сообщений: 140
Репутация: 12 [ +/- ]
хукай дамаг наносимы игроку другим игроком, проверяй есть ли у него броня, если есть то возвращаешь нулевой дамаг и отнимаешь броню, есили нет брони просто продолжить действие нанесения дамага
SDKHook_OnTakeDamage


Сообщение отредактировал ThRunningMan - Пятница, 26.07.2013, 19:13:52
 
panorama Дата: Пятница, 26.07.2013, 20:22:20 | Сообщение # 3
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата (ThRunningMan)
хукай дамаг наносимы игроку другим игроком, проверяй есть ли у него броня, если есть то возвращаешь нулевой дамаг и отнимаешь броню, есили нет брони просто продолжить действие нанесения дамага
SDKHook_OnTakeDamage

Ну так по идеи если я дамаг сделаю 0 то и броня не будет сниматься .
Мне нужно именно урон на броню сделать больше так чтобы она снималась от выстрела противника.
Ну типа

damage = damage+50

Только тут нужно дамаг на броню перебросить а не на здоровье .

Что то типо того ...
Если вы меня поняли то помогите
 
sssw Дата: Суббота, 27.07.2013, 12:50:02 | Сообщение # 4
Сообщений: 123
Репутация: 14 [ +/- ]
Так получи здоровье и установи его в чём проблема?
 
rasav Дата: Суббота, 27.07.2013, 20:59:24 | Сообщение # 5
Сообщений: 58
Репутация: 0 [ +/- ]
Цитата (sssw)
Так получи здоровье и установи его в чём проблема?

План действий
1. Заблокировать получение урона на здоровье что то типа
Код
SetEntProp(client, Prop_Data, "m_takedamage", 0, 1);
(Не выполнено)
2. Запретить снимать ЗДОРОВЬЕ до тех пор пока не снимется все броня (Например выстрел в грудь - 25 брони)(Выполнено)
3. Если броня закончилась разрешаем сносить здоровье .(Выполнено)
4. Выполняем функцию ... (Выполнено)

Как вы понимаете я не знаю как запретить сносить здоровье .

Спасибо !
 
Scarface_slv Дата: Суббота, 27.07.2013, 21:17:36 | Сообщение # 6
Сообщений: 737
Репутация: 61 [ +/- ]
Я наверно один тебя так и не понял) Что ты хочешь? Что бы сначала снималась вся броня и только потом снимался хп?
 
panorama Дата: Суббота, 27.07.2013, 21:46:44 | Сообщение # 7
Сообщений: 203
Репутация: 2 [ +/- ]
Наконец то ДААА ))) klas

Сможешь помочь ?


Сообщение отредактировал panorama - Суббота, 27.07.2013, 21:47:02
 
Scarface_slv Дата: Воскресенье, 28.07.2013, 00:28:39 | Сообщение # 8
Сообщений: 737
Репутация: 61 [ +/- ]
Подойдет как пример?
Код

public OnPluginStart() HookEvent("player_hurt", OnPlayerHurt);

public Action:OnPlayerHurt(Handle:event, const String:name[], bool:dontBroadcast)    
{
      if(GetEventInt(event, "armor") > 0)   
              SetEntProp(GetClientOfUserId(GetEventInt(event, "userid")), Prop_Data, "m_iHealth", 100);
}


Сообщение отредактировал Scarface_slv - Воскресенье, 28.07.2013, 00:28:50
 
TEIN Дата: Воскресенье, 28.07.2013, 06:54:21 | Сообщение # 9
Сообщений: 563
Репутация: 78 [ +/- ]
EventHookMode_Pre
 
panorama Дата: Воскресенье, 28.07.2013, 07:00:36 | Сообщение # 10
Сообщений: 203
Репутация: 2 [ +/- ]
Цитата (TEIN)
EventHookMode_Pre


Цитата (Scarface_slv)
Подойдет как пример?
Код

public OnPluginStart() HookEvent("player_hurt", OnPlayerHurt);

public Action:OnPlayerHurt(Handle:event, const String:name[], bool:dontBroadcast)    
{
      if(GetEventInt(event, "armor") > 0)   
              SetEntProp(GetClientOfUserId(GetEventInt(event, "userid")), Prop_Data, "m_iHealth", 100);
}


Блин вы меня не понимаете grust

Ладно сделаю по простому как вы советуете ...

Всем спасибо ! klas
 
TEIN Дата: Воскресенье, 28.07.2013, 07:29:50 | Сообщение # 11
Сообщений: 563
Репутация: 78 [ +/- ]
Чего не понимаете?? Здоровье не будет отниматься, пока есть броня, что непонятного в коде то?
 
Scarface_slv Дата: Воскресенье, 28.07.2013, 11:07:45 | Сообщение # 12
Сообщений: 737
Репутация: 61 [ +/- ]
panorama, Выражайся яснее...


Сообщение отредактировал Scarface_slv - Воскресенье, 28.07.2013, 11:09:19
 
ThRunningMan Дата: Воскресенье, 28.07.2013, 11:43:02 | Сообщение # 13
Сообщений: 140
Репутация: 12 [ +/- ]
А че вам не понятно...
Стреляешь в игрока 100 брони у него, один выстрел 25 брони сняло а здоровье нет, еще выстрел еще 25 или рандомное число, и так пока не станет 0, а потом стандартный дамаг на хп, во и все тут делов в две строки...
 
TEIN Дата: Воскресенье, 28.07.2013, 11:52:49 | Сообщение # 14
Сообщений: 563
Репутация: 78 [ +/- ]
тебе не кажется, что Scarface_slv уже реализовал?
 
ThRunningMan Дата: Воскресенье, 28.07.2013, 11:55:10 | Сообщение # 15
Сообщений: 140
Репутация: 12 [ +/- ]
Код

public OnClientPutInServer(client)
{
   SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}

public Action:OnTakeDamage(client, &attacker, &inflictor, &Float:damage, &damagetype)
{
   new iArmor = GetEntData(client, FindDataMapOffs(client, "m_ArmorValue"), 4); //это собственно получаем сколько у клиента брони по которому стреляют или тот который получает дамаг
   new iArmor_dmg = GetRandomInt(20,25); //это задает сколько отнмать брони когда получает дамаг, уже сам настроишь фильтры дамага, ножи там оружие падение и т.д.
   new iArmor_raz; // это для получения будующей разницы между нанесенным дамагом броне и тем что имеется
   if(iArmor > 0)  
   {
    if(iArmor_dmg <=  iArmor)
    {
     iArmor_raz = iArmor - iArmor_dmg; //собственно отнимаем установленное количество брони и записываем в перменную
     SetEntData(client, FindDataMapOffs(client, "m_ArmorValue"), iArmor_raz, 4, true); // отправляем данные игроку
     damage = 0; // меняем дамаг который должен был быть нанесен игроку п окоторому стреляем и отправляем
     return Plugin_Change;
    }else
    {
     SetEntData(client, FindDataMapOffs(client, "m_ArmorValue"), 0, 4, true); // это сработает если у игрока брони меньше чем мы хоти у него отнять, тогда установится минимальный порог брони т.е. 0
     damage = 0; // и тут также не разрешаем дамажить по хп
     return Plugin_Change;
    }
   }else
   return Plugin_Continue; // это сработает когда не выполнится условие что у игркоа етсь броня в нашем случае не нулевая, тогда все повреждения будут засчитываться
}


Сообщение отредактировал ThRunningMan - Воскресенье, 28.07.2013, 12:02:07
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: