Raised This Month: $ Target: $400
 0% 

Class Zombie Spitter


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Multipower
Junior Member
Join Date: May 2018
Location: İstanbul/Turkey
Old 08-08-2019 , 21:16   Class Zombie Spitter
Reply With Quote #1

PHP Code:
#include <amxmodx>
#include <zombieapocalypse>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>

/*                      L4D Tank Zombie
                by x[L]eoNNN
    
    #Description :
    
        this is a Zombie Class of Famous Game, "L4d" with the ability to throw rocks at enemies,
        either killing him, infecting taking life, etc. (controlled by a cvar)
    
    #Cvars :
    
        zp_tank_rockspeed 700 // Rock Speed Launched by Tank
        zp_tank_rockdamage 70 // damage done by the rock
        zp_tank_rockreward 1 // Ammo Pack's Reward by touching the enemy with the rock
        zp_tank_rockmode 1 // Rock Mode :
                    1 = Take Damage
                    2 = Killing
                    3 = Infect
                    4 = Bad Aim
        zp_tank_rock_energynesesary 20 // energy nesesary to launch a rock

    #Changelog :
    
        v1.0: public release
        v1.1: print messages changed to hudmessages (for spam), fix time reload bug,add effect touching rock
        v1.2: fix a survivor bugs', To break an entity "func_breakable" when the rock touches the entity, 
              fix a problem with logs : native error : get_user_origin.
*/
new const zclass_name[] = { "Zombie Spitter" 
new const 
zclass_info[] = { "Lanza Acido" 
new const 
zclass_model[] = { "SpitterL4D2" 
new const 
zclass_clawmodel[] = { "spitter.mdl" 
const 
zclass_level 
const zclass_health 2000 
const zclass_speed 260
const Float:zclass_gravity 0.90 
const Float:zclass_knockback 1.0  

new g_L4dTank

new g_trailSpriterockmodel
new g_trail[] = "sprites/laserbeam.spr"
new const rock_model[] = "models/spit.mdl"
new const rock_model2[] = "models/spit.mdl"
new tank_rocklaunch[] = "zombie_plague/spitter_vomit1.wav"
new Float:g_stealth_cooldown_standart 10.0 //cooldown time

new g_power[33]
new 
g_cooldown[33]
new 
i_cooldown_time[33]
new 
g_maxplayers

new cvar_rock_damagecvar_rock_rewardcvar_rockmodecvar_rockEnergyNesesarycvar_rock_speedcvar_reloadpower

public plugin_init()
{
    
register_plugin("[ZP] Zombie Class: L4D Tank Zombie""1.2""x[L]eoNNN"
 
    
cvar_rock_speed register_cvar("za_spitter_acidspeed""700")
    
cvar_rock_damage register_cvar("za_spitter_aciddamage""50")
    
cvar_rock_reward register_cvar("za_spitter_acidreward""0")
    
cvar_rockmode register_cvar("za_spitter_acidmode""1")
    
cvar_rockEnergyNesesary register_cvar("za_spitter_acid_energynesesary""20")
    
cvar_reloadpower register_cvar("za_spitter_reload_power""1")
    
register_touch("acid_ent","*","AcidTouch")
    
register_forward(FM_CmdStart"CmdStart" )
    
register_logevent("roundStart"2"1=Round_Start")
    
g_maxplayers get_maxplayers()


public 
plugin_precache()
{
    
g_L4dTank za_register_zombie_class(zclass_namezclass_infozclass_modelzclass_clawmodelzclass_levelzclass_healthzclass_speedzclass_gravityzclass_knockback
    
g_trailSprite precache_model(g_trail)
    
engfunc(EngFunc_PrecacheModelrock_model)
    
precache_sound(tank_rocklaunch)
}

public 
roundStart()
{
    for (new 
1<= g_maxplayersi++)
    {
        
i_cooldown_time[i] = floatround(g_stealth_cooldown_standart)
        
g_cooldown[i] = 0
        remove_task
(i)
    }
}
    
public 
zp_user_humanized_post(id)
{
    for (new 
1<= g_maxplayersi++)
    {
        
i_cooldown_time[i] = floatround(g_stealth_cooldown_standart)
        
g_cooldown[i] = 0
        remove_task
(i)
    }
}    
    
public 
zp_user_infected_post idinfector )
{
             if (
zp_get_user_zombie_class(id) == g_L4dTank && !zp_get_user_nemesis(id) && !za_get_user_alien(id) && !zp_get_user_assassin(id) && !zp_get_user_demon(id))
             {
        
print_chatColor(id"\g[ZE]\t Para usar tu Habilidad presiona :\g [R]")
        
g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
        
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) || za_get_user_alien(id) || zp_get_user_assassin(id) || zp_get_user_demon(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_L4dTank))
        if(
oldbutton IN_RELOAD && !(button IN_RELOAD))
        {
            if(
g_cooldown[id] == 0)
            {
                
MakeRock(id)
                
emit_sound(idCHAN_STREAMtank_rocklaunchVOL_NORMATTN_NORM0PITCH_NORM)
                
set_task(g_stealth_cooldown_standart,"reset_cooldown",id)
                
g_cooldown[id] = 1
            
                     i_cooldown_time
[id] = floatround(g_stealth_cooldown_standart)
            
                     
set_task(1.0"ShowHUD"id__"a",i_cooldown_time[id])
            }
            
        }
            
    return 
FMRES_IGNORED
}

public 
ShowHUD(id)
{
    if(
is_valid_ent(id) && is_user_alive(id))
    {
        
i_cooldown_time[id] = i_cooldown_time[id] - 1;
        
set_hudmessage(01500, -1.00.1701.01.10.00.0, -1)
        
show_hudmessage(id"[Tiempo de Recarga]^n > %d <",i_cooldown_time[id])
    }else{
        
remove_task(id)
    }
}

public 
power1(id)
{
    
g_power[id] += 1
    
    
if( g_power[id] > get_pcvar_num(cvar_rockEnergyNesesary) )
    {
        
g_power[id] = get_pcvar_num(cvar_rockEnergyNesesary)
    }
}

public 
reset_cooldown(id)
{
    if(
is_valid_ent(id) && zp_get_user_zombie(id) && !zp_get_user_nemesis(id) && !za_get_user_alien(id) && !zp_get_user_assassin(id) && !zp_get_user_demon(id) && zp_get_user_zombie_class(id) == g_L4dTank)
    {
        
g_cooldown[id] = 0
        
        
new text[100]
        
print_chatColor(id"\g[ZE]\t Activa tu Habilidad, presione la tecla :\g [R]")
        
message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id
        
write_byte(id
        
write_string(text
        
message_end()
    }
}

public 
AcidTouchRockEntTouched )
{
    if ( !
pev_valid RockEnt ) )
        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 
TankKiller entity_get_edictRockEntEV_ENT_owner )
                
                switch(
get_pcvar_num(cvar_rockmode))
                {
                    case 
1// Health
                    
{
                        new 
iHealth get_user_health(Touched)

                        if( 
iHealth >= && iHealth <= get_pcvar_num(cvar_rock_damage))
                        {
                            
ExecuteHamBHam_KilledTouchedTankKiller)
                            
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                        else
                        {
                            
set_user_health(Touchedget_user_health(Touched) - get_pcvar_num(cvar_rock_damage))
                            
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        }
                    }
                    case 
2// Kill
                    
{
                        if(
zp_get_user_survivor(Touched))
                            return
                                
                        
ExecuteHamBHam_KilledTouchedTankKiller)
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                    }
                    case 
3//infect
                    
{
                        if(
zp_get_user_survivor(Touched))
                            return
                            
                        
zp_infect_user(TouchedTankKiller11)
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_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
                        
                        
zp_set_user_ammo_packs(TankKillerzp_get_user_ammo_packs(TankKiller) + get_pcvar_num(cvar_rock_reward))
                        
set_task(1.50"EndVictimAim"Touched)
                    }
                }
            }
        }
        
    if(
equal(Class, "func_breakable") && entity_get_int(TouchedEV_INT_solid) != SOLID_NOT)
        
force_use(RockEntTouched)
        
    
remove_entity(RockEnt)
    
    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(rockmodel); 
    
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 
MakeRock(id)
{
            
    new 
Float:Origin[3]
    new 
Float:Velocity[3]
    new 
Float:vAngle[3]

    new 
RockSpeed get_pcvar_num(cvar_rock_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"acid_ent")

    
entity_set_model(NewEntrock_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(idRockSpeed  Velocity)
    
entity_set_vector(NewEntEV_VEC_velocity ,Velocity)

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMFOLLOW// TE id
    
write_short(NewEnt// entity
    
write_short(g_trailSprite// sprite
    
write_byte(5// life
    
write_byte(6// width
    
write_byte(0// r
    
write_byte(255// g
    
write_byte(0// b
    
write_byte(255// brightness
    
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();
    }

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3082\\ f0\\ fs16 \n\\ par }
*/ 
Hello. I using this class on my server. But this class only make spit on bots, so if i use this class on multiplayer class is working but spit isn't working. Anyone help me ?
Multipower is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 04:42.


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