AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Zombie Plague Mod (https://forums.alliedmods.net/forumdisplay.php?f=126)
-   -   Add VIP Only to SMA Smoker Zombie plague (https://forums.alliedmods.net/showthread.php?t=305640)

Godofwar 02-27-2018 05:33

Add VIP Only to SMA Smoker Zombie plague
 
Can anyone edit it that only VIPS can use it? For ADMIN LEVEL H Flag F Please?

Code:

/*
*        ---------------------------------------------------------------------------------------------------------
*        ------------------------------------[ZP] Zombie Class: Smoker--------------------------------------------
*        ---------------------------------------------------------------------------------------------------------
*        ------------------------------------Author: SNAKER_BEATTER-----------------------------------------------
*        ---------------------------------------------------------------------------------------------------------
*                                About:
*                When Left4Dead2 i watched in youtube and i found smoker. I dont get hes command but when i played
*                it, He drags players using hes long tongue, like a real monster that attacks pregnant mothers...
*                like from L4D2 when have to many damage long tongue ends
*        ---------------------------------------------------------------------------------------------------------
*                                Description:
*                Smoker is a zombie class for zombie plague 4.3 or later version. Like from L4D2 smoker can drag
*                players by he's long tongue, After a long tongue use a cooldown starts, when take 500 damage
*                long tongue is off and if falls with 50 damage long tongue is off too... you can use it on zombies
                too(bug)
*                        You can use tha command with 'E' key (such as USE key) and when fall with 50 damage
*                        smoke release and if damaged 100 release smokes
*                        you and you're long tongue's target will be 3rdperson view and a hudmessage will show
*                        if you're zombie and not smoker you cant do anything
*                        if the cooldown starts the thirdpeson view sets to firstperson
*
*                        Well green smokes from 1.4 version is not good and not like smokes so i change it
*        ---------------------------------------------------------------------------------------------------------
*                                Credits:
*                L4D2 (game) - the very original zombie smoker
*        ---------------------------------------------------------------------------------------------------------
*                                Cvars:
*                Their are no new cvar than the old version
*                zp_smoker_tongue_max // how many times Smoker can use long tongue? default=999
*                zp_smoker_tongue_speed // speed of long tongue default=250
*                zp_smoker_tongue_cooldown // time in seconds before you can use long tongue again. default=15
*                zp_smoker_tongue_stop_damage // damage to stop using long tongue set 0 to disable it. default=300
*                zp_smoker_tongue_stop_damage_fall // damage to stop usng long tongue(only if falls) set 0 to disable it. default=50
*                zp_smoker_tongue_infecthook // additional hooks after Smoker infects smb. def=5
*                zp_smoker_tongue_unable_move // 0=human & Smoker can move / 1=unable human to move when dragging / 2=unable Smoker to move / 3=unable both
*                zp_smoker_tongue_reward .// How many reward gives to smoker when used long tongue to any. default=2
*                zp_smoker_tongue_target_zombie // Allow/disallow using long tongue to zombies / 1=enable for all zombies / 2=Only to smokers
*                zp_smoker_smoke_damage_by_player // how many damage by player should smoke release smokes. default=5
*                zp_smoker_smoke_damage_by_fall // how many damage by fall should smoke release. default=5
*                zp_smoker_smoke_death_distance // Smoke death distance
*                zp_smoker_smoke_death_blind // Smoke death set smoked all users around you're death body
*                zp_smoker_smoke_death_glow // Glow all you're death smoke victims
*
*        ----------------------------------------------------------------------------------------------------------
*                                Modules:
*                hamsandwich
*                fakemeta
*                engine
*        -----------------------------------------------------------------------------------------------------------
*                                Change log:
*                1.0 (Sept 12, 2011)
*                {
*                        First release
*                }
*                1.1 (Sept 12, 2011)
*                {
*                        smoke death function rewritten
*                        Fix if a human is using smoker class, when dies smoke releases
*                        (not sure) Fix if a survivor is using smoker class, when dies smoke releases
*                }
*                1.2 (Sept 16, 2011)
*                {
*                        change autbind into e key
*                        Fix if a nemesis is using smoker class, when dies smoke releases
*                        Change print_chat on long tongue cooldown to Hudmessage
*                }
*                1.3 (Sept 17, 2011)
*                {
*                        (new) thirdperson view when tongue start and firstperson when end
*                        (new) rewritten tongue_start function
*                        Fix new round human and survvor can use tongue abillity
*                        Fix damage smoke not working :: Now the damage tongue end and smoke damage have their own
*                        Fix cooldown hudmessage bug
*                }
*                1.4 (Sept 18, 2011)
*                {
*                        (best) added smoke damage : hes own cvars and with custom smokes
*                        Smoker damage function rewritten
*                        Fix smoker is human he can smoke damage and if survivor and nemesis too
*                        Fix if player is zombie and he is not smoker he can smoke damage
*                }
*                1.5 (Sept 24, 2011)
*                {
*                        Fix cooldown not working after smoker backs to human/survivor and get infected again
*                        Fix when cooldown is working still 3rdperson view
*                        Fix Floortarget's beam not working
*                        Fix nemesis and survivor may not be tongued
*                        Fix nemesis can use long tongue
*                        Fix survivor can release smoke death
*                        (best) Added bot support on smoke damage
*                        (bestornot) replace damage and death smokes
*                        (best) created my own smoker's tongue
*                }
*                1.6 (Sept 24, 2011 (Uploaded))
*                {
*                        Added cfg dir
*                        (best) Added sounds when using long tongue
*                        (best) Added smoker models and v-models       
*                        tongue_Start function rewritten
*                }
*                1.7 (Sept 24, 2011 (Uploaded))
*                {
*                        (best) Added rewards when used long tongue to somebody
*                        (best) Added death smoke damage and block sreen every players at his radius
*                        Fix if zombie can smoked via death smoke command
*                }
*                1.8 (Sept 24, 2011 (Uploaded))
*                {
*                        Fix nemesis can be smoked via death smoke
*                        Added rewards when victim somebody victimed by death smoke
*                        (bestornot) Removed/Fix if zombie or a nemesis is long tongued smoker rewarded
*                        Fix smoke death victim's smoke not working
*                        Wrewwritten tongue_Start function
*                }
*                1.9 (Sept 24, 2011 (Uploaded))
*                {
*                        (best) Fix smoke death not working
*                        (best) renew sounds + smoke death sound
*                        Increases smoker's knockback so no need to stop damage
*                        Changed some humesssage mistypes
*                }
*                2.0 (Forgotten)
*                {
*                        Removed some useless codes
*                        (best) Fix smoke death victim = after smoking hes screens turns to darky
*                          Changed all hudmessage to colorchat
*                }
*                2.1 (Oct 12, 2011 (Created))
*                {
*                        Added cvar to allow/disallow using tongue to zombie (as requested by survival)
*                }
*                2.2 (Oct 13, 2011 (Uploaded))
*                {
*                        Optomized codes
*                }
*/

/******************************************************
                [Include files]
******************************************************/

#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <hamsandwich>
#include <engine>

//IMPORTANT (install cs_ham_bots.amxx to your server)
        #include <cs_ham_bots_api>

/******************************************************
                [Plugin infos]
******************************************************/

#define PLUGIN "[ZP] Zombie Class Smoker"
#define VERSION "2.2"
#define AUTHOR "Snaker_beatter"

/******************************************************
                [Id(s)]
******************************************************/
//Sounds
new const sound_drag[] = "barnacle/bcl_chew1.wav"
new const sound_smo_die[] = "weapons/explode5.wav"
//Main Class, modelT & Sprite
new g_zclass_smoker, g_Tongue , g_xsmoke1 , g_xsmoke2
//Some vars
new g_tongued[33], g_tonguesLeft[33], g_unable2move[33]
new Float:g_lastTongue[33]
new bool: g_Ltongue_i[33] = false , bool: g_bind_isuse[33] = false
//Cvars
new cvar_tongue_speed, cvar_tongue_cooldown, cvar_tongue_stop_damage, cvar_tongue_stop_damage_fall, cvar_tongue_unb2move , cvar_tongue_start_autobind , cvar_smoke_damage_byplayer, cvar_smoke_damage_byfall , cvar_smoke_death_distance, cvar_smoke_death_blind, cvar_smoke_death_victimglow, cvar_tongue_reward,
cvar_tongue_zombietarget
//Smoker Atributes
new const zclass_name[] = { "Smoker" }
new const zclass_info[] = { "Long tongue & smokes" }
new const zclass_model[] = { "zombie_smoker" }
new const zclass_clawmodel[] = { "v_knife_smoker.mdl" }
const zclass_health = 2602
const zclass_speed = 249
const Float:zclass_gravity = 1.0
const Float:zclass_knockback = 1.5
/******************************************************
                [Main event] + [PLugin cfg]
******************************************************/

public plugin_init()
{
        cvar_tongue_speed = register_cvar("zp_smoker_tongue_speed", "250")
        cvar_tongue_cooldown = register_cvar("zp_smoker_tongue_cooldown", "0")
        cvar_tongue_stop_damage = register_cvar("zp_smoker_tongue_stop_damage", "250")
        cvar_tongue_stop_damage_fall = register_cvar("zp_smoker_tongue_stop_damage_fall", "25")
        cvar_tongue_unb2move = register_cvar("zp_smoker_tongue_unable_move", "3")
        cvar_tongue_start_autobind = register_cvar("zp_smoker_autobind", "1")
        cvar_tongue_reward = register_cvar("zp_smoker_tongue_reward", "2")
        cvar_tongue_zombietarget = register_cvar("zp_smoker_tongue_target_zombie", "1")
        cvar_smoke_damage_byfall = register_cvar("zp_smoker_smoke_damage_byfall", "1")
        cvar_smoke_damage_byplayer = register_cvar("zp_smoker_smoke_damage_byplayer", "1")
        cvar_smoke_death_distance = register_cvar("zp_smoker_smoke_death_distance", "180")
        cvar_smoke_death_blind = register_cvar("zp_smoker_smoke_death_blind", "5")
        cvar_smoke_death_victimglow = register_cvar("zp_smoker_smoke_death_glow", "1")
        register_event("ResetHUD", "newSpawn", "b")
        register_event("DeathMsg", "smoker_death", "a")
        register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
        RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
        /* Bot support start */
        //RegisterHamBots(Ham_Killed, "smoker_botdeath")
        RegisterHamBots(Ham_TakeDamage, "fw_TakeDamage")
        /* Bot support end */
        register_clcmd("+smoker_tongue","tongue_start")
        register_clcmd("-smoker_tongue","tongue_end")
        plugin_cfg()
}

public plugin_cfg()
{
        new const derectory[] = "addons/amxmodx/configs/zp_zclass_smoker.cfg"
        server_cmd("exec %s", derectory)
}

/******************************************************
                [Precache event]
******************************************************/

public plugin_precache()
{
        register_plugin(PLUGIN, VERSION, AUTHOR)
        g_zclass_smoker = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
        g_Tongue = precache_model("sprites/zbeam4.spr")
        g_xsmoke1 = precache_model("sprites/l4d_smoke_damage.spr")
        g_xsmoke2 = precache_model("sprites/l4d_smoke_death.spr")
        precache_sound(sound_drag)
        precache_sound(sound_smo_die)
}

/****************************************************
                [Events]
****************************************************/

public zp_user_infected_post(id, infector)
{
        if (zp_get_user_zombie_class(id) == g_zclass_smoker)
        {       
                g_tonguesLeft[id] = 999
                new bind_mode = get_pcvar_num(cvar_tongue_start_autobind)
                if (bind_mode == 1)
                {
                        g_bind_isuse[id] = true
                        client_print(id, print_chat, "[ZP] You can use long tongue with 'E' key")
                }
                else if (bind_mode == 0)
                {
                        g_bind_isuse[id] = false
                        client_print(id, print_chat, "[ZP] You can use long tongue, just bind 'KEY' +tongue_start")
                }
        }
}

public newSpawn(id)
{
        if (g_tongued[id])
        {
                tongue_end(id)
        }
}

public smoker_botdeath(victim, attacker, shouldgib)
{       
}
public smoker_death() // if smoker dies drag off
{
        new id = read_data(2)
        smoke_death(id)
        beam_remove(id)
       
        if (g_tongued[id])
                tongue_end(id)
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage) // if take damage drag off
{
        new g_cvar_falls = get_pcvar_num(cvar_tongue_stop_damage_fall) > 0 || get_pcvar_num(cvar_smoke_damage_byfall) > 0
        new g_cvar_players = get_pcvar_num(cvar_tongue_stop_damage) > 0 || get_pcvar_num(cvar_smoke_damage_byplayer) > 0
               
        if (zp_get_user_zombie_class(victim) == g_zclass_smoker)
        {
                new g_over_damage[33]
                g_over_damage[victim] = g_over_damage[victim] + floatround(damage)

                if (victim == attacker || !is_user_connected(attacker) && (g_cvar_falls))
                {
                        if (g_over_damage[victim] >= get_pcvar_num(cvar_tongue_stop_damage_fall))
                        {
                                g_over_damage[victim] = 0
                                tongue_end(victim)
                                return HAM_IGNORED;
                        }
                        if (damage > get_pcvar_num(cvar_smoke_damage_byfall))
                        {
                                g_over_damage[victim] = 0
                                smoke_damage(victim)
                                return HAM_IGNORED;
                        }
                }
               
                if (is_user_alive(attacker) && (g_cvar_players))
                {
                        if (g_over_damage[victim] >= get_pcvar_num(cvar_smoke_damage_byplayer))
                        {
                                g_over_damage[victim] = 0
                                smoke_damage(victim)
                        }
                       
                        if (g_over_damage[victim] >= get_pcvar_num(cvar_tongue_stop_damage))
                        {
                                g_over_damage[victim] = 0
                                tongue_end(victim)
                                return HAM_IGNORED;
                        }
                }               
        }
       
        return HAM_IGNORED
}

public fw_PlayerPreThink(id)
{
        if (!is_user_alive(id))
        {
                return FMRES_IGNORED
        }
               
        new button = get_user_button(id)
        new oldbutton = get_user_oldbutton(id)
       
        if (g_bind_isuse[id] && zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_zclass_smoker))
        {
                if (!(oldbutton & IN_USE) && (button & IN_USE))
                {
                        tongue_start(id)
                }
                if ((oldbutton & IN_USE) && !(button & IN_USE))
                {
                        tongue_end(id)
                }
        }
       
        if (!g_Ltongue_i[id])
        {
                g_unable2move[id] = false
        }
               
        if (g_unable2move[id] && get_pcvar_num(cvar_tongue_unb2move) > 0)
        {
                set_pev(id, pev_maxspeed, 1.0)
        }
       
        return PLUGIN_CONTINUE
}

public client_disconnect(id) // if client disconnects drag off
{
        if (id <= 0 || id > 32)
                return
       
        if (g_tongued[id])
                tongue_end(id)
       
        if(g_unable2move[id])
                g_unable2move[id] = false
}

/*****************************************************
                [main commands]
*****************************************************/

public tongue_start(id) // starts drag, checks if player is Smoker, checks cvars
{       
        new g_unalive = is_user_alive(id)
        if (zp_get_user_survivor(id))
        {
                print_chatColor(id, "\g[ZP] \nYou can't use smoker's\tlong tongue if you're a survivor!")
                return PLUGIN_HANDLED
        }
       
        if (zp_get_user_nemesis(id))
        {
                print_chatColor(id, "\g[ZP] \nYou can't use \tlong tongue if you are nemesis!")
                return PLUGIN_HANDLED
        }
       
        if (!g_unalive)
        {
                print_chatColor(id, "\g[ZP] \nYou can't use \tlong tongue if you are death!")
                return PLUGIN_HANDLED
        }
                       
        if (zp_get_user_zombie(id))
        {
                if (zp_get_user_zombie_class(id) == g_zclass_smoker)
                {       
                        if (!g_Ltongue_i[id])
                        {
                                set_view(id, CAMERA_NONE)
                                static Float:cdown
                                cdown = get_pcvar_float(cvar_tongue_cooldown)

                                if (!g_unalive)
                                {
                                        print_chatColor(id, "\g[ZP] \nYou can't use \tlong tongue if you are death!")
                                        return PLUGIN_HANDLED
                                }
                       
                                if (g_tonguesLeft[id] <= 0)
                                {
                                        print_chatColor(id, "\g[ZP] \nYou use max \tlong tongue, you cant do anymore")
                                        return PLUGIN_HANDLED
                                }

                                if (get_gametime() - g_lastTongue[id] < cdown)
                                {
                                        print_chatColor(id, "\g[ZP] \nYou have to \twait %.f0  to use long tongue again!", get_pcvar_float(cvar_tongue_cooldown) - (get_gametime() - g_lastTongue[id]))
                                        set_view(id, CAMERA_NONE)
                                        return PLUGIN_HANDLED
                                }

                                new tonguetarget, targetbody
                                get_user_aiming(id, tonguetarget, targetbody)
                               
                                if (is_user_alive(tonguetarget))
                                {
                                        tonguetarget_classes(id, tonguetarget)
                                       
                                        if (get_pcvar_float(cvar_tongue_speed) <= 0.0)
                                                cvar_tongue_speed = 1
                       
                                        new parm[2]
                                        parm[0] = id
                                        parm[1] = tonguetarget
                                       
                                        set_task(0.1, "smoker_reelin", id, parm, 2, "b")
                                        harpoon_target(parm)
                                               
                                        g_tonguesLeft[id]--
                                        g_Ltongue_i[id] = true
                               
                                        if (get_pcvar_num(cvar_tongue_unb2move) == 1)
                                        {
                                                g_unable2move[tonguetarget] = true
                                        }       
                                }
                                else
                                {
                                        g_tongued[id] = 33
                                        FloorTarget(id)
                                        emit_sound(tonguetarget, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_HIGH)
                                        g_Ltongue_i[id] = true
                                        g_tonguesLeft[id]--
                                }               
                        }
                        else
                                return PLUGIN_HANDLED
                }       
        }
        else
        {
                print_chatColor(id, "\g[ZP] \nYou can't use \tsmoker's long tongue if you're a  human!")       
                return PLUGIN_HANDLED
        }
        return PLUGIN_CONTINUE
}

public smoker_reelin(parm[]) // player to smoker
{
        new id = parm[0]
        new victim = parm[1]

        if (!g_tongued[id] || !is_user_alive(victim))
        {
                tongue_end(id)
                return
        }
       
        new Float:fl_Velocity[3]
        new idOrigin[3], vicOrigin[3]

        get_user_origin(victim, vicOrigin)
        get_user_origin(id, idOrigin)

        new distance = get_distance(idOrigin, vicOrigin)

        if (distance > 1)
        {
                new Float:fl_Time = distance / get_pcvar_float(cvar_tongue_speed)

                fl_Velocity[0] = (idOrigin[0] - vicOrigin[0]) / fl_Time
                fl_Velocity[1] = (idOrigin[1] - vicOrigin[1]) / fl_Time
                fl_Velocity[2] = (idOrigin[2] - vicOrigin[2]) / fl_Time
        }
        else
        {
                fl_Velocity[0] = 0.0
                fl_Velocity[1] = 0.0
                fl_Velocity[2] = 0.0
        }

        entity_set_vector(victim, EV_VEC_velocity, fl_Velocity)
}

public tongue_end(id) // drags end function
{
        g_tongued[id] = 0
        beam_remove(id)
        remove_task(id)
        set_view(id, CAMERA_NONE)
       
        if (g_Ltongue_i[id])
        {
                g_lastTongue[id] = get_gametime()
        }
        g_Ltongue_i[id] = false
        g_unable2move[id] = false
}

public harpoon_target(parm[]) // set long tongue if target is player
{
        new id = parm[0]
        new tonguetarget = parm[1]

        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(8)        // TE_BEAMENTS
        write_short(id)
        write_short(tonguetarget)
        write_short(g_Tongue)        // sprite index
        write_byte(0)        // start frame
        write_byte(0)        // framerate
        write_byte(200)        // life
        write_byte(12)        // width
        write_byte(1)        // noise
        write_byte(58)        // r, g, b
        write_byte(68)        // r, g, b
        write_byte(57)        // r, g, b
        write_byte(90)        // brightness
        write_byte(10)        // speed
        message_end()
}

public FloorTarget(id) // set long tongue target isn't player
{
        set_view(id, CAMERA_NONE)
        new endorigin[3]
        get_user_origin(id, endorigin, 3)

        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte (TE_BEAMENTPOINT); // TE_BEAMENTPOINT
        write_short(id)
        write_coord(endorigin[0])
        write_coord(endorigin[1])
        write_coord(endorigin[2])
        write_short(g_Tongue) // sprite index
        write_byte(0)        // start frame
        write_byte(0)        // framerate
        write_byte(200)        // life
        write_byte(15)        // width
        write_byte(1)        // noise
        write_byte(58)        // r, g, b
        write_byte(68)        // r, g, b
        write_byte(57)        // r, g, b
        write_byte(90)        // brightness
        write_byte(10)        // speed
        message_end()
}

public beam_remove(id) // remove beam
{
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(99)        //TE_KILLBEAM
        write_short(id)        //entity
        message_end()
}

public smoke_damage(id) // when smoker damaged create smoke
{
        if (zp_get_user_survivor(id))
        {
                return PLUGIN_HANDLED
        }
        if (zp_get_user_nemesis(id))
        {
                return PLUGIN_HANDLED
        }
        if (zp_get_user_zombie(id))
        {
                if (zp_get_user_zombie_class(id) == g_zclass_smoker)
                {
                        new g_scale
                        g_scale = random_num(60, 70)
                        new Float:origin[3]
                        pev(id, pev_origin, origin)
                        create_sprite(origin, g_xsmoke1, 100, g_scale)
                        screenshakeandflash(id)
                }
        }
        else
        {
                return PLUGIN_HANDLED
        }
        return PLUGIN_HANDLED
}

public smoke_death(id) // when smoker dies create smoke
{
        if (zp_get_user_survivor(id))
        {
                return PLUGIN_HANDLED
        }
        if (zp_get_user_nemesis(id))
        {
                return PLUGIN_HANDLED
        }
        if (zp_get_user_zombie(id))
        {
                if (zp_get_user_zombie_class(id) == g_zclass_smoker)
                {
                        new Float:origin[3]
                        pev(id, pev_origin, origin)
                        create_sprite(origin, g_xsmoke2, 200, 180)
                        deathh_smoke(id)
                        emit_sound(id, CHAN_BODY, sound_smo_die, 1.0, ATTN_NORM, 0, PITCH_NORM)
                }
        }
        else
        {
                return PLUGIN_HANDLED
        }
       
        return PLUGIN_HANDLED
}

public screenshakeandflash(id)
{
        new g_msgScreenShake = get_user_msgid("ScreenShake")
        message_begin(MSG_ONE_UNRELIABLE, g_msgScreenShake, _, id)
        write_short(1<<12*4) // amplitude
        write_short(1<<12*2) // duration
        write_short(1<<12*10) // frequency
        message_end()
        new g_msgScreenFade = get_user_msgid("ScreenFade")
        message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id)
        write_short( 1<<10) // fade lasts this long duration
        write_short( 1<<10) // fade lasts this long hold time
        write_short( 1<<12 ) // fade type (in / out)
        write_byte(255) // fade red
        write_byte(255) // fade green
        write_byte(255) // fade blue
        write_byte(100) // fade alpha
        message_end()
}

public tonguetarget_classes(id, target)
{
        /* Note: this targets are alive, if you want death go back to line "447" */
        new id_name[32], target_name[32]
        get_user_name(id, id_name, 31)
        get_user_name(target, target_name, 31)
                               
        if (zp_get_user_survivor(target))
        {
                give_ammopacks(id)
                print_chatColor(id, "\g[ZP] \nYou are using you're \tlong tongue to enemy %s You are rewarded %d AP", target_name, get_pcvar_num(cvar_tongue_reward))
                print_chatColor(target, "\g[ZP] \tsmoker %s is using he's long tongue to you!", id_name)
                g_tongued[id] = target
                emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM)
        }
        if (zp_get_user_nemesis(target))
        {
                print_chatColor(id, "\g[ZP] \nYou are using you're \tlong tongue to %s", target_name)
                print_chatColor(target, "\g[ZP] \nsmoker %s is using \the's long tongue to you!", id_name)
                g_tongued[id] = target
                emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM)
        }
       
        if (zp_get_user_zombie(target))
        {
                if (get_pcvar_num(cvar_tongue_zombietarget) == 1)
                {
                        print_chatColor(id, "\g[ZP] \nYou are using you're \tlong tongue to %s", target_name)
                        print_chatColor(target, "\g[ZP] \nsmoker %s is using \the's long tongue to you!", id_name)
                        g_tongued[id] = target
                        emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM)
                }
                else
                {
                        g_tongued[id] = target = false
                        print_chatColor(id, "\g[ZP] \nYou \tCant use long tongue to %s", target_name)
                        emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM) // still add some sound so it wont show as a bug
                }
                if (get_pcvar_num(cvar_tongue_zombietarget) == 2) // allow only for smoker zombies
                {
                        if (zp_get_user_zombie_class(target) == g_zclass_smoker)
                        {
                                g_tongued[id] = target                       
                                print_chatColor(id, "\g[ZP] \nYou are using you're \tlong tongue to %s", target_name)
                                print_chatColor(target, "\g[ZP] \nsmoker %s is using \the's long tongue to you!", id_name)                               
                                emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM) // still add some sound so it wont show as a bug
                        }
                        //else {
                        if (zp_get_user_zombie_class(target) != g_zclass_smoker)
                        {
                                g_tongued[id] = target = false
                                print_chatColor(id, "\g[ZP] \nYou \tCan only use long tongue to smokers")
                                emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM)
                        }
                        //} //else is end
                }
        }
        else
        {
                give_ammopacks(id)
                print_chatColor(id, "\g[ZP] \nYou are using you're \tlong tongue to enemy %s You rewarded %d AP", target_name, get_pcvar_num(cvar_tongue_reward))
                print_chatColor(target, "\g[ZP] \nsmoker %s is using \the's long tongue to you!", id_name)
                g_tongued[id] = target
                emit_sound(target, CHAN_BODY, sound_drag, 1.0, ATTN_NORM, 0, PITCH_NORM)
        }
}

public deathh_smoke(id)
{
        new bool:deathh_smoke_allowed[33]
        for(new i = 1; i <= get_maxplayers(); i ++)
        {
                if (zp_get_user_zombie(i) || get_entity_distance(id, i) > get_pcvar_num(cvar_smoke_death_distance))
                {
                        return PLUGIN_HANDLED
                }
               
                if (is_user_bot(i))
                {
                        deathh_smoke_allowed[id] = true
                }
               
                print_chatColor(id, "\g[ZP] \nYou rewarded \t2 ammopacks by using smoke death to a victim")
                give_ammopacks(id)

                new g_msgScreenFade = get_user_msgid("ScreenFade")
                message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, i)
                write_short(get_pcvar_num(cvar_smoke_death_blind)) // Time
                write_short(get_pcvar_num(cvar_smoke_death_blind)) // time
                write_short(0x0004)
                write_byte(255) // red
                write_byte(255) // green
                write_byte(255) // blue
                write_byte(135) // Alpha
                message_end()
               
                new Float:orgin[3]
                pev(i, pev_origin, orgin)
                new g_scale = random_num(40, 30)
                create_sprite(orgin, g_xsmoke1, 150, g_scale)
               
                if(get_pcvar_num(cvar_smoke_death_victimglow) == 1)
                {
                        set_rendering(i, kRenderFxGlowShell, 255, 255, 255, kRenderNormal, 25)
                        print_chatColor(i, "\g[ZP] \n You'd been \tsmoked by smoker's death smoke")
                }
               
                set_task(get_pcvar_float(cvar_smoke_death_blind), "deathh_smoke_unblind", i)
        }
        return PLUGIN_HANDLED
}

public deathh_smoke_unblind(user)
{
        new g_msgScreenFade = get_user_msgid("ScreenFade")
        message_begin(MSG_ONE_UNRELIABLE, g_msgScreenFade, _, user)
        write_short(1<<12) // Time
        write_short(0) // time
        write_short(0x0004)
        write_byte(0) // red
        write_byte(0) // green
        write_byte(0) // blue
        write_byte(1) // Alpha (if use 100 or upper will cause dark screen to user (not bug))
        message_end()
       
        new Float:orgin[3]
        pev(user, pev_origin, orgin)
        new g_scale = random_num(40, 30)
        create_sprite(orgin, g_xsmoke1, 130, g_scale)
       
        // plus remove glow
        if (get_pcvar_num(cvar_smoke_death_victimglow) == 1)
        {
                set_rendering(user)
        }
}

stock give_ammopacks(id)
{
        new get_ammopacks = zp_get_user_ammo_packs(id)
        new gives_ammopacks = get_pcvar_num(cvar_tongue_reward)
        zp_set_user_ammo_packs(id, get_ammopacks + gives_ammopacks)
}

stock create_sprite(const Float:XYZ_position[3], sprite_index, brightness, scale)
{
        // Sprite
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(TE_SPRITE) // TE id (Additive sprite, plays 1 cycle)
        engfunc(EngFunc_WriteCoord, XYZ_position[0]) // x
        engfunc(EngFunc_WriteCoord, XYZ_position[1]) // y
        engfunc(EngFunc_WriteCoord, XYZ_position[2]) // z
        write_short(sprite_index) // sprite index
        write_byte(scale) // scale in 0.1's
        write_byte(brightness) // brightness
        message_end()
}

// Print chat color by x[L]eonn
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();
        }
}


ExceLo 02-28-2018 04:43

Re: Add VIP Only to SMA Smoker Zombie plague
 
1 Attachment(s)
Learn How From this Link : https://forums.alliedmods.net/showpo...&postcount=171

Don't Forget to add this include to your Includes File .

Godofwar 02-28-2018 13:48

Re: Add VIP Only to SMA Smoker Zombie plague
 
THX !!!!

oussama90 03-28-2018 06:44

Re: Add VIP Only to SMA Smoker Zombie plague
 
bro i want zm class only with who have flag "r" will use this ZM
this ZM can frezz human when he throw bullet by cliking "g"

name this ZM CLASS is ice revenat
pic of this ZM :
https://imgur.com/a/sS7Z1

and i want zm his name is "spendor" you can find that in server CLARION ZM ARMY
this ZM class when he press g will got ZM madness for 10 sec and shold wait 10 sec to use that power next
i want zm class only with who have flag "o" will use this ZM

and if you can i want to plugin for unlimited ammo packs with flag "r"
who have flag "r" will have unlimited ammo packs

zm plugin mod 5.0.8 :cry:


and thx for help


All times are GMT -4. The time now is 12:25.

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