Русское сообщество по скриптингу

[TUT] Работа с damagebits

Статьи или фрагменты кода для новичков и уже опытных скриптеров по AMXX.

Модератор: Chuvi

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по AMX Mod X.

[TUT] Работа с damagebits

Сообщение foxmits » 20 фев 2013, 23:53

[align=center]Ниже приведены обозначение и тип урона[/align]
DMG_GENERIC 0 //Общий ущерб
DMG_CRUSH (1 << 0) //Жвижущимися объектами
DMG_BULLET (1 << 1) //Выстрел
DMG_SLASH (1 << 2) /От порезов
DMG_BURN (1 << 3) //Огня
DMG_FREEZE (1 << 4) //Холодного
DMG_FALL (1 << 5) //Падение с высоты
DMG_BLAST (1 << 6) //Например, взрыв бомбы
DMG_CLUB (1 << 7) //Лом
DMG_SHOCK (1 << 8) //Электричество
DMG_SONIC (1 << 9) //Звуковая волна
DMG_ENERGYBEAM (1 << 10) //Лазер, луч энергии
(1 << 11) //?
DMG_NEVERGIB (1 << 12) //?
DMG_ALWAYSGIB (1 << 13) //?
DMG_DROWN (1 << 14) //Вопросы если игрок раковины
DMG_PARALYZE (1 << 15) //Паралича
DMG_NERVEGAS (1 << 16) //Токсинов
DMG_POISON (1 << 17) //Яд
DMG_RADIATION (1 << 18) //Излучения
DMG_DROWNRECOVER (1 << 19) //Восстановление игроку выйти
DMG_ACID (1 << 20) //Указанный после падения в кислоту
DMG_SLOWBURN (1 << 21) // ?
DMG_SLOWFREEZE (1 << 22) //?
DMG_MORTAR (1 << 23) //?
DMG_HEGRANADE (1 << 24) //HE Granade
DMG_TIMEBASED (~ (0x3fff)) //Маска компенсированное время

[align=center]Рассмотрим пример, чтобы при нанесении урона с гранаты, у игрока устанавливалось 200ХП[/align]

[pawn]
  1. #include <amxmodx>

  2. #include <cstrike>

  3. #include <fun>

  4. #include <hamsandwich>

  5.  

  6. #define PLUGIN "Demage BIts"

  7. #define VERSION "1.0"

  8. #define AUTHOR "Foxmits"

  9.  

  10. public plugin_init() {

  11. register_plugin(PLUGIN, VERSION, AUTHOR)

  12. RegisterHam(Ham_TakeDamage, "player", "HamTakeDamage")

  13. }

  14.  

  15. public HamTakeDamage ( victim, weapon, attacker, Float:damage, damagebits ) {

  16. if(damagebits==(1<<24)) {

  17. set_user_health(victim, 250)

  18. }

  19. }
[/pawn]
С уважением,
Иван Зимин
iwonz.ru
Аватара пользователя
foxmits
 
Сообщения: 110
Зарегистрирован: 13 фев 2013, 20:49
Откуда: Санкт-Петербург
Благодарил (а): 4 раз.
Поблагодарили: 15 раз.
Опыт программирования: Больше трех лет
Языки программирования: HTML, CSS, JS, PHP, PAWN

Re: [TUT] Работа с damagebits

Сообщение Polarhigh » 06 июн 2014, 22:26

PRoSToTeM@, ты зол на меня?
"как ему вообще дали группу, он же ничего не понимает" мм?
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Re: [TUT] Работа с damagebits

Сообщение PRoSToTeM@ » 06 июн 2014, 22:36

trofian, почему ты тогда не мог ошибку признать ?
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: [TUT] Работа с damagebits

Сообщение Polarhigh » 06 июн 2014, 23:03

PRoSToTeM@, я не знаю, как я не заметил, что я написал неправильный код; я не мог признать ошибку, потому-что не видел её
картинка Джеки Чана не показывала где я ошибся

было очень обидно

Та же история с так называемыми вежливыми дискуссиями. Русские не подкрепляют контр-аргументы тонкими намёками, а просто говорят: «Вы не правы».
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Re: [TUT] Работа с damagebits

Сообщение quckly » 07 июн 2014, 12:29

trofian писал(а):я в каком-нибудь своём плагине через ExecuteHamB наношу урон в 1hp с дамагом DMG_HEGRANADE, потому-что мне нужно так и никак иначе
и тут хоп и неверно составленное условие в другом плагине мне выставляет hp в 200

вообще это обсуждалось и правильней будет так
[pawn]
  1. #define is_entity_player(%1)    (0 < (%1) <= g_maxplayers)

  2. //...

  3. public HamTakeDamage(victim, weapon, attacker, Float:damage, damagebits)

  4. {

  5.  static iAgressor

  6.  if(is_entity_player(iAgressor = weapon) || is_entity_player(iAgressor = attacker))

  7.   if(get_user_weapon(iAgressor) == CSW_HEGRENADE)

  8.    set_user_health(victim, 250)

  9. }
[/pawn]

Как раз для этого есть ExecuteHam.
Аватара пользователя
quckly
Скриптер
 
Сообщения: 403
Зарегистрирован: 20 ноя 2009, 10:03
Благодарил (а): 41 раз.
Поблагодарили: 243 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: [TUT] Работа с damagebits

Сообщение Polarhigh » 07 июн 2014, 12:47

quckly, не понял, что ты подразумеваешь под 'этим'?
Аватара пользователя
Polarhigh
 
Сообщения: 1006
Зарегистрирован: 04 май 2010, 17:41
Благодарил (а): 131 раз.
Поблагодарили: 388 раз.
Опыт программирования: Больше трех лет

Re: [TUT] Работа с damagebits

Сообщение quckly » 07 июн 2014, 16:48

trofian, чтобы другой плагин 200 хп не дал, когда ты нанесешь урон типа гранаты.
Аватара пользователя
quckly
Скриптер
 
Сообщения: 403
Зарегистрирован: 20 ноя 2009, 10:03
Благодарил (а): 41 раз.
Поблагодарили: 243 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: [TUT] Работа с damagebits

Сообщение Mapaky9 » 07 июн 2014, 19:32

Мб не надо апать старые темы чтоб не сратья?
Аватара пользователя
Mapaky9
 
Сообщения: 185
Зарегистрирован: 02 июн 2013, 20:30
Откуда: Уфа
Благодарил (а): 61 раз.
Поблагодарили: 67 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: [TUT] Работа с damagebits

Сообщение Leo_[BH] » 14 июл 2014, 17:41

Скажите, а возможно ли НАНОСИТЬ УРОН с помощью, к примеру, Яда или Огня?

Или для этого нужно использовать set_user_heath и спрайты?
Сохраняйте историю
Аватара пользователя
Leo_[BH]
 
Сообщения: 98
Зарегистрирован: 06 апр 2014, 17:51
Откуда: UA
Благодарил (а): 9 раз.
Поблагодарили: 30 раз.
Опыт программирования: Больше трех лет

Re: [TUT] Работа с damagebits

Сообщение Leonidddd » 14 июл 2014, 21:59

Leo_[BH], До plugin_init()
[pawn]
  1. new g_ent_burn, g_ent_poison;
[/pawn]

Где-то в plugin_init()/plugin_precache()
[pawn]
  1.     g_ent_burn = create_entity("burn");
[/pawn]
[pawn]
  1.     g_ent_poison = create_entity("poison");
[/pawn]
И в своей паблик функции:
[pawn]
  1. ExecuteHam(Ham_TakeDamage, index, g_ent_burn, index, 10.0, DMG_BURN);
[/pawn]
[pawn]
  1. ExecuteHam(Ham_TakeDamage, index, g_ent_poison, index, 5.0, DMG_POISON );
[/pawn]
Числа 10.0 и 5.0 - кол-во урона.
DMG_BURN - огонь.
DMG_POISON - яд.
Вторая константа - index (индекс жертвы).
Четвертая - index(индекс атакующего, в данном случае я индекс жертвы выставил).
Как-то так.Ну или сток(untested):
[pawn]
  1. #include <amxmodx>

  2. #include <engine>

  3. #include <hamsandwich>

  4.  

  5. public plugin_init() register_clcmd("say /test", "test");

  6.  

  7. public test(id) create_damage(id, id, 10.0, DMG_BURN);

  8.  

  9. stock create_damage(victim, attacker, Float:damage, DMG_TYPE){

  10.  

  11.         static g_ent_burn, g_ent_poison;

  12.        

  13.         if(!g_ent_burn || !g_ent_poison){

  14.        

  15.                 g_ent_burn = create_entity("burn");

  16.                 g_ent_poison = create_entity("poison");

  17.         }

  18.        

  19.         switch(DMG_TYPE){

  20.                 case DMG_BURN: ExecuteHam(Ham_TakeDamage, victim, g_ent_burn, attacker, damage, DMG_BURN);

  21.                 case DMG_POISON:ExecuteHam(Ham_TakeDamage, victim, g_ent_poison, attacker, damage, DMG_POISON);

  22.         }

  23. }
[/pawn]
Аватара пользователя
Leonidddd
Модератор
 
Сообщения: 2557
Зарегистрирован: 08 апр 2012, 18:13
Откуда: г. Запорожье
Благодарил (а): 192 раз.
Поблагодарили: 718 раз.

Пред.

Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

cron