| alexclaudiu2003 |
01-12-2016 10:38 |
cooldown problem
after three or four rounds the cooldown energy don't respect time, spitting at second
PHP Code:
#include <amxmodx> #include <zombie_plague_advance> #include <fakemeta> #include <engine> #include <fun> #include <hamsandwich> /* L4D Spitt Zombie by x[L]eoNNN #Description : this is a Zombie Class of Famous Game, "L4d" with the ability to throw spitts at enemies, either killing him, infecting taking life, etc. (controlled by a cvar) #Cvars : zp_Spitt_spittspeed 700 // spitt Speed Launched by Spitt zp_Spitt_spittdamage 70 // damage done by the spitt zp_Spitt_spittreward 1 // Ammo Pack's Reward by touching the enemy with the spitt zp_Spitt_spittmode 1 // spitt Mode : 1 = Take Damage 2 = Killing 3 = Infect 4 = Bad Aim zp_Spitt_spitt_energynesesary 20 // energy nesesary to launch a spitt #Changelog : v1.0: public release v1.1: print messages changed to hudmessages (for spam), fix time reload bug,add effect touching spitt v1.2: fix a survivor bugs', To break an entity "func_breakable" when the spitt touches the entity, fix a problem with logs : native error : get_user_origin. */ new const zclass_name[] = { "Spitter" } new const zclass_info[] = { "Acid Spit" } new const zclass_model[] = { "SpitterL4D2" } new const zclass_clawmodel[] = { "v_Spitter_manos.mdl" } const zclass_health = 8500 const zclass_speed = 250 const Float:zclass_gravity = 1.0 const Float:zclass_knockback = 1.0 new g_spitter new g_trailSprite, spittmodel new g_trail[] = "sprites/xbeam3.spr" new spitt_model[] = "models/spit.mdl" new spitt_model2[] = "models/spit.mdl" new Spitt_spittlaunch[] = "zombie_plague/spitter_vomit1.wav"
new g_power[33] new cvar_spitt_damage, cvar_spitt_reward, cvar_spittmode, cvar_spittEnergyNesesary, cvar_spitt_speed, cvar_reloadpower public plugin_init() { register_plugin("[ZP] Zombie Class: Spitter", "1.2", "x[L]eoNNN") cvar_spitt_speed = register_cvar("zp_Spitt_spittspeed", "1400") cvar_spitt_damage = register_cvar("zp_Spitt_spittdamage", "20") cvar_spitt_reward = register_cvar("zp_Spitt_spittreward", "1") cvar_spittmode = register_cvar("zp_Spitt_spittmode", "4") cvar_spittEnergyNesesary = register_cvar("zp_Spitt_spitt_energynesesary", "15") cvar_reloadpower = register_cvar("zp_Spitt_reload_power", "1") register_touch("spitt_ent","*","spittTouch") register_forward(FM_CmdStart, "CmdStart" ) } public plugin_precache() { g_spitter = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback) g_trailSprite = precache_model(g_trail) spittmodel = precache_model(spitt_model) precache_sound(Spitt_spittlaunch) } public zp_user_infected_post ( id, infector ) { if (zp_get_user_zombie_class(id) == g_spitter) { print_chatColor(id, "\g[ZP]\n You Are A \gSpitter\n, You Cant spitt acid \tIN_USE [+E]") g_power[id] = get_pcvar_num(cvar_spittEnergyNesesary) set_task(get_pcvar_float(cvar_reloadpower), "power1", id, _, _, "b") } } public CmdStart( const id, const uc_handle, random_seed ) { if(!is_user_alive(id)) return FMRES_IGNORED; if(!zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_assassin(id)) return FMRES_IGNORED; new button = pev(id, pev_button) new oldbutton = pev(id, pev_oldbuttons) if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_spitter)) if(oldbutton & IN_USE && !(button & IN_USE)) { if(g_power[id] >= get_pcvar_num(cvar_spittEnergyNesesary)) { Makespitt(id) emit_sound(id, CHAN_STREAM, Spitt_spittlaunch, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) g_power[id] = 0 } else { set_hudmessage(255, 0, 0, 0.0, 0.6, 0, 6.0, 3.0) show_hudmessage(id, "[ZP] Energy Nesesary To spitt [%d] || You Energy [%d]", get_pcvar_num(cvar_spittEnergyNesesary), g_power[id]) } } return FMRES_IGNORED } public power1(id) { g_power[id] += 1 if( g_power[id] > get_pcvar_num(cvar_spittEnergyNesesary) ) { g_power[id] = get_pcvar_num(cvar_spittEnergyNesesary) } } public spittTouch( spittEnt, Touched ) { if ( !pev_valid ( spittEnt ) ) return static Class[ 32 ] entity_get_string( Touched, EV_SZ_classname, Class, charsmax( Class ) ) new Float:origin[3] pev(Touched,pev_origin,origin) if( equal( Class, "player" ) ) if (is_user_alive(Touched)) { if(!zp_get_user_zombie(Touched)) { new SpittKiller = entity_get_edict( spittEnt, EV_ENT_owner ) switch(get_pcvar_num(cvar_spittmode)) { case 1: // Health { new iHealth = get_user_health(Touched) if( iHealth >= 1 && iHealth <= get_pcvar_num(cvar_spitt_damage)) { ExecuteHamB( Ham_Killed, Touched, SpittKiller, 0 ) print_chatColor(SpittKiller, "\g[ZP]\n You Receive \t%d\n Ammo Packs", get_pcvar_num(cvar_spitt_reward)) zp_set_user_ammo_packs(SpittKiller, zp_get_user_ammo_packs(SpittKiller) + get_pcvar_num(cvar_spitt_reward)) } else { set_user_health(Touched, get_user_health(Touched) - get_pcvar_num(cvar_spitt_damage)) print_chatColor(SpittKiller, "\g[ZP]\n You Receive \t%d\n Ammo Packs", get_pcvar_num(cvar_spitt_reward)) zp_set_user_ammo_packs(SpittKiller, zp_get_user_ammo_packs(SpittKiller) + get_pcvar_num(cvar_spitt_reward)) } } case 2: // Kill { if(zp_get_user_survivor(Touched)) return ExecuteHamB( Ham_Killed, Touched, SpittKiller, 0 ) zp_set_user_ammo_packs(SpittKiller, zp_get_user_ammo_packs(SpittKiller) + get_pcvar_num(cvar_spitt_reward)) print_chatColor(SpittKiller, "\g[ZP]\n You Receive \t%d\n Ammo", get_pcvar_num(cvar_spitt_reward)) } case 3: //infect { if(zp_get_user_survivor(Touched)) return zp_infect_user(Touched, SpittKiller, 1, 1) print_chatColor(SpittKiller, "\g[ZP]\n You Receive \t%d\n Ammo Packs", get_pcvar_num(cvar_spitt_reward)) zp_set_user_ammo_packs(SpittKiller, zp_get_user_ammo_packs(SpittKiller) + get_pcvar_num(cvar_spitt_reward)) } case 4: //BadAim { new Float:vec[3] = {100.0,100.0,100.0} entity_set_vector(Touched,EV_VEC_punchangle,vec) entity_set_vector(Touched,EV_VEC_punchangle,vec) entity_set_vector(Touched,EV_VEC_punchangle,vec) print_chatColor(SpittKiller, "\g[ZP]\n You Receive \t%d\n Ammo Packs", get_pcvar_num(cvar_spitt_reward)) zp_set_user_ammo_packs(SpittKiller, zp_get_user_ammo_packs(SpittKiller) + get_pcvar_num(cvar_spitt_reward)) set_task(1.50, "EndVictimAim", Touched) } } } } if(equal(Class, "func_breakable") && entity_get_int(Touched, EV_INT_solid) != SOLID_NOT) force_use(spittEnt, Touched) remove_entity(spittEnt) if(!is_user_alive(Touched)) return static origin1[3] get_user_origin(Touched, origin1) message_begin(MSG_BROADCAST,SVC_TEMPENTITY, origin1); write_byte(TE_BREAKMODEL); write_coord(origin1[0]); write_coord(origin1[1]); write_coord(origin1[2] + 24); write_coord(16); write_coord(16); write_coord(16); write_coord(random_num(-50,50)); write_coord(random_num(-50,50)); write_coord(25); write_byte(10); write_short(spittmodel); write_byte(10); write_byte(25); write_byte(0x01); message_end(); } public EndVictimAim(Touched) { new Float:vec[3] = {-100.0,-100.0,-100.0} entity_set_vector(Touched,EV_VEC_punchangle,vec) entity_set_vector(Touched,EV_VEC_punchangle,vec) entity_set_vector(Touched,EV_VEC_punchangle,vec) } public Makespitt(id) { new Float:Origin[3] new Float:Velocity[3] new Float:vAngle[3] new spittSpeed = get_pcvar_num(cvar_spitt_speed) entity_get_vector(id, EV_VEC_origin , Origin) entity_get_vector(id, EV_VEC_v_angle, vAngle) new NewEnt = create_entity("info_target") entity_set_string(NewEnt, EV_SZ_classname, "spitt_ent") entity_set_model(NewEnt, spitt_model2) entity_set_size(NewEnt, Float:{-1.5, -1.5, -1.5}, Float:{1.5, 1.5, 1.5}) entity_set_origin(NewEnt, Origin) entity_set_vector(NewEnt, EV_VEC_angles, vAngle) entity_set_int(NewEnt, EV_INT_solid, 2) entity_set_int(NewEnt, EV_INT_rendermode, 5) entity_set_float(NewEnt, EV_FL_renderamt, 200.0) entity_set_float(NewEnt, EV_FL_scale, 1.00) entity_set_int(NewEnt, EV_INT_movetype, 5) entity_set_edict(NewEnt, EV_ENT_owner, id) velocity_by_aim(id, spittSpeed , Velocity) entity_set_vector(NewEnt, EV_VEC_velocity ,Velocity) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) write_short(NewEnt) write_short(g_trailSprite) write_byte(10) write_byte(10) write_byte(255) write_byte(0) write_byte(0) write_byte(200) message_end() return PLUGIN_HANDLED } stock print_chatColor(const id,const input[], any:...) { new msg[191], players[32], count = 1; vformat(msg,190,input,3); replace_all(msg,190,"\g","^4");// green replace_all(msg,190,"\n","^1");// normal replace_all(msg,190,"\t","^3");// team if (id) players[0] = id; else get_players(players,count,"ch"); for (new i=0;i<count;i++) if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]); write_byte(players[i]); write_string(msg); message_end(); } }
|