Tak wygląda plugin w działaniu http://pl.youtube.co...h?v=zWexYWDMi8s
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#define TE_SPARKS 9
#define TE_ELIGHT 28
/* Rodzaj lotu flary
MOVETYPE_STEP // domyslne, leci troche a pozniej upada
MOVETYPE_BOUNCEMISSILE // odbijajace sie - fajny efekt, niczymmocno kopieta pilka
MOVETYPE_FLY // lata, nie odbija sie (pozniej spada oczywiscie)
MOVETYPE_TOSS // stawia flare w tym miejscu gdzie jest gracz,na ziemii
MOVETYPE_PUSH // stawia flare w miejscu gdzie stoi gracz, lecz wisi ona w powietrzu
MOVETYPE_NOCLIP // noclip, 0 grawitacji
MOVETYPE_FLYMISSILE // leci, w momencie dotniecia z ziemia od razu staje w miejscu
MOVETYPE_BOUNCE // lecaca przy zmiemii,odbijajaca sie
MOVETYPE_PUSHSTEP // leci przy ziemii, leciutko sie odbija
*/
#define MOVETYPE MOVETYPE_STEP
new FlareAmmo[33]
public plugin_init()
{
register_plugin("Flare Flashlight","1.7","Sn!ff3r")
register_cvar("flare_duration","10.0")
register_cvar("flare_num","1")
register_cvar("flare_r","0.0")
register_cvar("flare_g","0.0")
register_cvar("flare_b","0.0")
register_cvar("flare_slap","0")
register_cvar("flare_slap_power","1")
register_cvar("flare_gravity","0.5")
// pobrano z cs-puchatek.pl
register_event("ResetHUD","PlayerInit","b")
}
public client_impulse(id,impulse)
{
if(impulse == 100) InitFlare(id)
return PLUGIN_HANDLED
}
public plugin_precache()
{
precache_sound("weapons/rocketfire1.wav")
precache_model("models/w_flare.mdl")
}
public client_disconnect(id)
FlareAmmo[id] = 0
public pfn_touch(ptr,ptd)
{
new classn[32]
entity_get_string(ptr,EV_SZ_classname,classn,31)
if(equal(classn,"Flare"))
{
new Float:FlareOrigin[3]
entity_get_vector(ptr,EV_VEC_origin,FlareOrigin)
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_SPARKS)
write_coord(floatround(FlareOrigin[0]))
write_coord(floatround(FlareOrigin[1]))
write_coord(floatround(FlareOrigin[2]))
message_end()
new Float:colour[3]
colour[0] = get_cvar_float("flare_r")
colour[1] = get_cvar_float("flare_g")
colour[2] = get_cvar_float("flare_b")
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_ELIGHT)
write_short(ptr)
write_coord(floatround(FlareOrigin[0]))
write_coord(floatround(FlareOrigin[1]))
write_coord(floatround(FlareOrigin[2]))
write_coord(500)
write_byte(floatround(colour[0]))
write_byte(floatround(colour[1]))
write_byte(floatround(colour[2]))
write_byte(get_cvar_num("flare_duration")*10)
write_coord(0)
message_end()
entity_set_int(ptr,EV_INT_rendermode,kRenderNormal)
entity_set_int(ptr,EV_INT_renderfx,kRenderFxGlowShell)
entity_set_float(ptr,EV_FL_renderamt,10.0)
entity_set_vector(ptr,EV_VEC_rendercolor,colour)
}
}
public PlayerInit(id)
{
FlareAmmo[id] = get_cvar_num("flare_num")
return PLUGIN_CONTINUE
}
public InitFlare(id)
{
if(FlareAmmo[id] != 0)
{
new Float:PlayerOrigin[3]
entity_get_vector(id,EV_VEC_origin,PlayerOrigin);
// pobrano z cs-puchatek.pl
new flare = create_entity("info_target")
entity_set_string(flare,EV_SZ_classname,"Flare")
entity_set_model(flare,"models/w_flare.mdl")
entity_set_origin(flare,PlayerOrigin)
entity_set_int(flare,EV_INT_solid,2)
entity_set_edict(flare,EV_ENT_owner,id)
entity_set_int(flare,EV_INT_movetype,MOVETYPE)
entity_set_float(flare,EV_FL_gravity,get_cvar_float("flare_gravity"))
entity_set_int(flare,EV_INT_effects,EF_BRIGHTLIGHT)
new Float:PlayerVelocity[3]
VelocityByAim(id,1000,PlayerVelocity)
entity_set_vector(flare,EV_VEC_velocity,PlayerVelocity)
FlareAmmo[id]--
emit_sound(id,CHAN_BODY,"weapons/rocketfire1.wav",1.0,ATTN_NORM,0,PITCH_NORM)
set_task(get_cvar_float("flare_duration"),"RemoveFlare",flare)
}
else if(FlareAmmo[id] == 0)
{
if(get_cvar_num("flare_slap"))
user_slap(id,get_cvar_num("flare_slap_power"))
client_print(id,print_chat,"[AMX] Wykorzystales limit flar (%d)! Czekaj do nowej rundy.",get_cvar_num("flare_num"))
// pobrano z cs-puchatek.pl
}
return PLUGIN_HANDLED
}
public RemoveFlare(flare)
{
remove_entity(flare)
return PLUGIN_CONTINUE
}


Dodatki SourceMod



Temat jest zamknięty









