|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
event'ы попадения в somatch, chest, head и какой dmg
|
|
He_npeT | Дата: Вторник, 22.05.2007, 21:11:50 | Сообщение # 1 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Большая просьба выложить event dmg'a при попадение в stomach, chest, head и какой dmg нанесён. Ещё просьба с index'ом в кого попло. P.S. Я начинающий скриптёр, так-что пойму код, а не слишком умные фразы которые чтото говорят токо професиональным скриптерам. Зарание сасибо.
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
|
|
| |
AlMod | Дата: Среда, 23.05.2007, 09:50:50 | Сообщение # 2 |
Сонный кодер
Группа: Админы
Сообщений: 600
Статус: Не в сети
| Если аимится Quote | get_user_aiming Description get_user_aiming - Traces where a player is aiming for a maximum distance defaulted to 9999. Syntax Float: get_user_aiming ( index, &id, &body, [ distance ] ) Notes If the player's aim doesn't hit anything, 0.0 is returned. If the player is aiming at another player, then the id and part of the body is set into the second and third parameters (passed by reference). Otherwise, the distance between the hit point and the player is returned. index,is a player index from 1 to 32. | А это если попал Quote | get_user_attacker Description get_user_attacker - Returns the index of an attacking player. Syntax get_user_attacker ( index, [ &weapon, &hitzone ] ) Notes index is a player index from 1 to 32. If a second or third parameter is supplied, information about the weapon and hitzone is stored in the variables (passed byref). If no player is attacking the indexed player, get_user_attacker will return 0. |
|
|
| |
slogic | Дата: Среда, 23.05.2007, 12:51:14 | Сообщение # 3 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Пример использования: Quote | public plugin_init() { register_event("Damage", "onDamage", "b", "2!0") // dmg_take <> 0 } public onDamage(id) { if(!id) return new iWeapon new iHitZone new iAttacker iAttacker = get_user_attacker(id, iWeapon, iHitZone) } | iHitZone будет содержать одно из значений (см. amxconst.inc): Quote | /* Parts of body for hits */ #define HIT_GENERIC 0 /* none */ #define HIT_HEAD 1 #define HIT_CHEST 2 #define HIT_STOMACH 3 #define HIT_LEFTARM 4 #define HIT_RIGHTARM 5 #define HIT_LEFTLEG 6 #define HIT_RIGHTLEG 7 |
|
|
| |
He_npeT | Дата: Среда, 23.05.2007, 16:48:17 | Сообщение # 4 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Можите ещё пожалуйсто сказать как вычеслить нанесёный урон и каой victum index? и Code | /* Parts of body for hits */ #define HIT_GENERIC 0 /* none */ #define HIT_HEAD 1 #define HIT_CHEST 2 #define HIT_STOMACH 3 #define HIT_LEFTARM 4 #define HIT_RIGHTARM 5 #define HIT_LEFTLEG 6 #define HIT_RIGHTLEG 7 | То-есть если в этом: Code | public plugin_init() { register_event("Damage", "onDamage", "b", "2!0") // dmg_take <> 0 }
public onDamage(id) { if(!id) return
new iWeapon new iHitZone new iAttacker
iAttacker = get_user_attacker(id, iWeapon, iHitZone) } | если игрок попал в голову какой вариант будет правелен: Code | if (equali(iHitZone,HIT_HEAD)) | или ???
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
Сообщение отредактировал He_npeT - Среда, 23.05.2007, 16:57:16 |
|
| |
AlMod | Дата: Среда, 23.05.2007, 17:08:59 | Сообщение # 5 |
Сонный кодер
Группа: Админы
Сообщений: 600
Статус: Не в сети
| Но это аналогично Code | if (iHitZone == HIT_HEAD) |
|
|
| |
slogic | Дата: Среда, 23.05.2007, 17:40:34 | Сообщение # 6 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Quote (He_npeT) | Можите ещё пожалуйсто сказать как вычеслить нанесёный урон и каой victum index? | Не, ну ты вообще не представляешь что такое обработчик сообщения и что такое сообщение HL. Жертва в onDamage это и есть id. Вообще Damage событие имеет след. параметры (взято с http://wiki.amxmodx.org/index.php/Half-Life_1_Game_Events ): Quote | byte DamageSave byte DamageTake long DamageType coord CoordX coord CoordY coord CoordZ | Т.о. чтобы получить повреждение надо считать второй параметр события Damage (DamageTake) в обработчике onDamage. Для этого требуется в нем выполнить функцию read_data(2). Вообще все наглядно видно в скрипте, который выложен в этой теме: http://amxmodx.ucoz.ru/forum/17-103-1
Сообщение отредактировал slogic - Среда, 23.05.2007, 17:42:02 |
|
| |
He_npeT | Дата: Среда, 23.05.2007, 17:47:43 | Сообщение # 7 |
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Ясно, id = victum, a dmg = read_data(2). Thx.
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
Сообщение отредактировал He_npeT - Среда, 23.05.2007, 17:59:10 |
|
| |
RE_an1m@t0rr | Дата: Среда, 23.05.2007, 20:13:55 | Сообщение # 8 |
Лейтенант
Группа: Скриптеры
Сообщений: 77
Статус: Не в сети
| а етот способ не хуже? ... #include <engine> ... public client_damage(attacker,victim,damage,weapon,hitplace,TA) { //code.... }
|
|
| |
VEN | Дата: Среда, 23.05.2007, 22:07:11 | Сообщение # 9 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Engine тут не при чем. А вот "бутерброд" точно не хуже.
|
|
| |
slogic | Дата: Четверг, 24.05.2007, 15:59:47 | Сообщение # 10 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Еще есть в модуле csx обработчик: forward client_death(killer,victim,wpnindex,hitplace,TK); Вообще халява, но работать будет только под CS/CZ. PS. Точнее не death, а damage, RE_an1m@t0rr об этом как раз говорил, только с модулем ошибся.
Сообщение отредактировал slogic - Четверг, 24.05.2007, 16:01:16 |
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |