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 }