AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   cooldown problem (https://forums.alliedmods.net/showthread.php?t=277611)

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_trailSpritespittmodel
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_damagecvar_spitt_rewardcvar_spittmodecvar_spittEnergyNesesarycvar_spitt_speedcvar_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_namezclass_infozclass_modelzclass_clawmodelzclass_healthzclass_speedzclass_gravityzclass_knockback
 
g_trailSprite precache_model(g_trail)
 
spittmodel precache_model(spitt_model)
 
precache_sound(Spitt_spittlaunch)
}
 
public 
zp_user_infected_post idinfector )
{
             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_handlerandom_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(idpev_button)
 new 
oldbutton pev(idpev_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(idCHAN_STREAMSpitt_spittlaunchVOL_NORMATTN_NORM0PITCH_NORM)
    
g_power[id] = 0
   
}
   else
   {
    
set_hudmessage(255000.00.606.03.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 
spittTouchspittEntTouched )
{
 if ( !
pev_valid spittEnt ) )
  return
  
 static Class[ 
32 ]
 
entity_get_stringTouchedEV_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_edictspittEntEV_ENT_owner )
    
    switch(
get_pcvar_num(cvar_spittmode))
    {
     case 
1// Health
     
{
      new 
iHealth get_user_health(Touched)
      if( 
iHealth >= && iHealth <= get_pcvar_num(cvar_spitt_damage))
      {
       
ExecuteHamBHam_KilledTouchedSpittKiller)
       
print_chatColor(SpittKiller"\g[ZP]\n You Receive \t%d\n Ammo Packs"get_pcvar_num(cvar_spitt_reward))
       
zp_set_user_ammo_packs(SpittKillerzp_get_user_ammo_packs(SpittKiller) + get_pcvar_num(cvar_spitt_reward))
      }
      else
      {
       
set_user_health(Touchedget_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(SpittKillerzp_get_user_ammo_packs(SpittKiller) + get_pcvar_num(cvar_spitt_reward))
      }
     }
     case 
2// Kill
     
{
      if(
zp_get_user_survivor(Touched))
       return
        
      
ExecuteHamBHam_KilledTouchedSpittKiller)
      
zp_set_user_ammo_packs(SpittKillerzp_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(TouchedSpittKiller11)
      
print_chatColor(SpittKiller"\g[ZP]\n You Receive \t%d\n Ammo Packs"get_pcvar_num(cvar_spitt_reward))
      
zp_set_user_ammo_packs(SpittKillerzp_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(SpittKillerzp_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(TouchedEV_INT_solid) != SOLID_NOT)
  
force_use(spittEntTouched)
  
 
remove_entity(spittEnt)
 
 if(!
is_user_alive(Touched))
  return
  
 static 
origin1[3]
 
get_user_origin(Touchedorigin1)
 
 
message_begin(MSG_BROADCAST,SVC_TEMPENTITYorigin1);
 
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(idEV_VEC_origin Origin)
 
entity_get_vector(idEV_VEC_v_anglevAngle)
 new 
NewEnt create_entity("info_target")
 
entity_set_string(NewEntEV_SZ_classname"spitt_ent")
 
entity_set_model(NewEntspitt_model2)
 
entity_set_size(NewEntFloat:{-1.5, -1.5, -1.5}, Float:{1.51.51.5})
 
entity_set_origin(NewEntOrigin)
 
entity_set_vector(NewEntEV_VEC_anglesvAngle)
 
entity_set_int(NewEntEV_INT_solid2)
 
entity_set_int(NewEntEV_INT_rendermode5)
 
entity_set_float(NewEntEV_FL_renderamt200.0)
 
entity_set_float(NewEntEV_FL_scale1.00)
 
entity_set_int(NewEntEV_INT_movetype5)
 
entity_set_edict(NewEntEV_ENT_ownerid)
 
velocity_by_aim(idspittSpeed  Velocity)
 
entity_set_vector(NewEntEV_VEC_velocity ,Velocity)
 
message_begin(MSG_BROADCASTSVC_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 (idplayers[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();
 }




All times are GMT -4. The time now is 09:30.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.