aelrond | Дата: Четверг, 30.07.2015, 03:16 | Сообщение # 1 |
- Сообщения: 29
- Награды: 0
- Замечания:
|
Доброго всем времени суток!
Может кто помочь довести до ума плагин? Как сделать что бы не наносило урон своей команде и самому себе? Как сделать, что бы дым висел определенное время? секунд 20, например.Как сделать, что бы дым исчезал в новом раунде?
Код #include <amxmodx> #include <fakemeta> #include <hamsandwich> new smoke public plugin_init() { RegisterHam(Ham_Killed, "player", "player_killed", 1) }
public plugin_precache() { smoke = precache_model("sprites/ballsmoke.spr") } public player_killed(victim, attacker, shouldgib) { if(!attacker) return if(victim == attacker) return static Float:origin[3]; pev(victim, pev_origin, origin) set_task(0.0, "create_gas", 20, _:origin, 3, "a", 1) } Public create_gas(Float:origin[3],times) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_SPRITE) engfunc(EngFunc_WriteCoord, origin[0]) engfunc(EngFunc_WriteCoord, origin[1]) engfunc(EngFunc_WriteCoord,origin[2]) write_short(smoke) write_byte(50) write_byte(115) message_end() new target = -1 while((target = engfunc(EngFunc_FindEntityInSphere,target,origin, 100.0))) { if(!is_user_alive(target)) continue ExecuteHamB(Ham_TakeDamage, target, 0, 0, 10.0, DMG_NERVEGAS) } set_task(1.0, "create_gas", --times, _:origin, 3, "a", 1) }
Сообщение отредактировал aelrond - Четверг, 30.07.2015, 03:26 |
|
| |
s13cs_user2 | Дата: Вторник, 04.08.2015, 00:44 | Сообщение # 2 |
- Сообщения: 2
- Награды: 0
- Замечания:
|
Код #include <amxmodx> #include <fakemeta> #include <hamsandwich>
#define get_team(%0) get_pdata_int(%0, 114, 5)
const POST = 1; const TASK_ID = 100;
new smoke_sid;
public plugin_init() { RegisterHam(Ham_Killed, "player", "player_Killed_Post", POST); }
public plugin_precache() { smoke_sid = precache_model("sprites/ballsmoke.spr"); }
public player_Killed_Post(victim, attacker, shouldgib) { if (!attacker || victim == attacker) return; static Float:origin[3]; pev(victim, pev_origin, origin); set_task(1.0, "create_gas", TASK_ID + victim, _:origin, sizeof origin, "a", 20); }
public create_gas(Float: origin[3], owner) { owner -= TASK_ID; message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_SPRITE); engfunc(EngFunc_WriteCoord, origin[0]); engfunc(EngFunc_WriteCoord, origin[1]); engfunc(EngFunc_WriteCoord, origin[2]); write_short(smoke_sid); write_byte(50); write_byte(115); message_end(); new target = -1; while((target = engfunc(EngFunc_FindEntityInSphere,target,origin, 100.0))) { if (!is_user_alive(target) || target == owner || get_team(target) == get_team(owner)) continue; ExecuteHamB(Ham_TakeDamage, target, 0, 0, 10.0, DMG_NERVEGAS); } }
|
|
| |