public ignite_effects(id)
{
id = (id > 32) ? id - 345 : id;
if (is_user_alive(id) && onfire[id])
{
new origin[3];
get_user_origin(id, origin);
//TE_SPRITE - additive sprite, plays 1 cycle
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(17);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_short(mflash);
write_byte(20);
write_byte(200);
message_end();
//Smoke
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, origin);
write_byte(5);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_short(smoke);
write_byte(20);
write_byte(15);
message_end();
set_task(1.0, "ignite_effects", id+345);
}
else
{
if(onfire[id])
{
emit_sound(id, CHAN_AUTO, "scientist/scream21.wav", 0.6, ATTN_NORM, 0, PITCH_HIGH);
onfire[id] = 0;
}
if(task_exists(id + 345))
remove_task(id + 345);
}
return PLUGIN_CONTINUE;
}
public ignite_player(id)
{
id = (id > 32) ? id - 344 : id;
if (is_user_alive(id) && onfire[id] )
{
new origin[3];
get_user_origin(id, origin);
ExecuteHam(Ham_TakeDamage, id, 0, id, 10.0, 1);
message_begin(MSG_ONE, gmsgDamage, {0,0,0}, id);
write_byte(30);
write_byte(30);
write_long(1<<21);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
message_end();
//create some sound
emit_sound(id, CHAN_ITEM, "ambience/flameburst1.wav", 0.6, ATTN_NORM, 0, PITCH_NORM);
//Call Again in 2 seconds
set_task(1.0, "ignite_player", id + 344, _, _, "b");
}
else
{
if(task_exists(id + 344))
remove_task(id + 344);
}
return PLUGIN_CONTINUE;
}
public fire_player(id)
{
if(onfire[id] == 1)
{
ignite_effects(id);
ignite_player(id);
set_task(5.0, "podpal_off",_, _, _, "a");
}
}
public podpal_go(id)
{
new czas = 15-player_intelligence[id]/50
if (halflife_time()-gravitytimer[id] <= czas)
{
client_print(id,print_center,"The Eye of Diablo aktywne co %i sekund.",czas)
return PLUGIN_CONTINUE
}
gravitytimer[id] = floatround(halflife_time())
new koordy_gracza[3], koordy_przeciwnika[3];
get_user_origin(id, koordy_gracza);
for(new i = 1; i <= 32; i++)
{
if(!is_user_alive(i) || get_user_team(id) == get_user_team(i))
continue;
get_user_origin(i, koordy_przeciwnika);
if(get_distance(koordy_gracza,koordy_przeciwnika) < 300 + player_intelligence[id])
{
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, i)
write_short(1<<16);
write_short(1<<13);
write_short(1<<14);
message_end();
//// FUNKCJA OD PODPALENIA I EFEKTY
onfire[i] = 1
fire_player(i)
}
}
return PLUGIN_CONTINUE;
}
public podpal_off(id)
{
onfire[id] = 0;
if(task_exists(id + 344))
remove_task(id + 344);
if(task_exists(id + 345))
remove_task(id + 345);
}
plugin_init :
gmsgDamage = get_user_msgid("Damage");
Globalne:
new gmsgDamage, smoke, mflash;
new onfire[33];
new podpal_gracza[33];
I oczywiście precache, ale to już mało ważne.
Co ja tutaj mam źle? Powinno działać tak:
Wciskam E i w obszarze "podpala graczy", co sekundę odbiera po 10hp i efekt i tak przez 5 sekund, po 5 sekundach powinno się wyłączyć - a nie robi tego. Dlaczego?
Użytkownik GoldeNx3 edytował ten post 18.11.2010 21:54