[AJUDA] Alguem tem uma solução pra isso? Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Zplague

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Seu portal de Zombie Plague no Brasil

Zumbis Online

Últimos assuntos

» [ANÚNCIO] Alguem vivo ai?
por Eclipse 17/9/2024, 6:39 pm

» The Fen1xS CLan | Zombie Plague | [XP/LEVELS] #2024
por hevy 5/7/2024, 8:28 pm

»
por Eclipse 29/2/2024, 12:30 am

» [Plugin] /vm Com Status
por Isr7 4/6/2023, 3:24 pm

» Alguém pra manter um servidor comigo?
por Isr7 3/6/2023, 4:52 pm

» Alguém querendo criar um servidor de zp? eu pago a host quem quiser deixar o discord ai Isr7#6920
por Isr7 3/6/2023, 3:18 pm

» PEDIDO: Multijump pros VIP
por Madness 15/3/2023, 3:44 pm

» [ZP] Modo padre para 5.0
por XperitosEspetinho123 15/7/2022, 3:31 pm

» [KZ] Servidores de cs 1.6
por [Dk]Serial-Killer 7/5/2022, 4:12 am

» [PLUGIN BY SKVD & WILLIAN] SHOP DE FANTASIAS
por dushowW 23/7/2020, 5:44 pm

Os membros mais ativos da semana

Nenhum usuário

Frases filosóficas Zplague:

....

Google Adsense

Estatísticas

Os nossos membros postaram um total de 38140 mensagens em 6680 assuntos

Temos 2796 usuários registrados

O último membro registrado é zmplugins - Henrique


2 participantes

    [AJUDA] Alguem tem uma solução pra isso?

    joao vitor
    joao vitor
    Humano


    Masculino Número de Mensagens : 9
    Ammo Packs : 4241
    Honra : 0
    Data de inscrição : 17/04/2013

    [AJUDA] Alguem tem uma solução pra isso? Empty [AJUDA] Alguem tem uma solução pra isso?

    Mensagem por joao vitor 7/5/2013, 6:21 pm

    Estou com 3 armas extras com o mesmo problema. Resumindo tudo:
    1 -Preciso de um plugin que trava as compras Extras durante a contagem regressiva, alguem sabe onde conseguir?

    2 -E to tendo um BUG com os cartuchos destas 3 armas, exemplo:
    Quando está na contagem regressiva (ou depois tanto faz) e compro a 'Arma Extra', ela vem com 0 balas no cartucho, então quando acaba as balas do pente ela não recarrega fica [0 / 0] Balas.
    Quando compro a arma Primaria, ex: "Ak-47", e depois compro a Arma Extra o Bug não acontece, fica por exemplo: [50/120]

    Se eu compro arma primaria não da bug, e a arma extra fica com [50/100]
    Se eu não compro arma primaria da bug, e a arma extra fica com [50/0] E no final das balas fica [0/0] e eu perco a arma porque não da pra recarregar.

    Não sei se o problema é nos plugins ou em alguma configuração, mas acho estranho. To usando as CVARs tudo direitinho, já fiz de tudo.

    Vou colocar aqui:

    CVARs da MP5 Dourada
    Código:

    // Multiplicar Dano 0 a 5
    zp_gmp5_dmg_multiplier 5

    // Ativar Efeito Das Balas 0/1
    zp_gmp5_gold_bullets 1

    // Ativar Modelo Customizado 0/1
    zp_gmp5_custom_model 1

    // Ativar Balas Infinitas
    zp_gmp5_unlimited_clip 0

    SMA MP5 Dourada
    Código:

    /*
    [ZP] Extra Item: Golden MP5 NAVY
    Team: Humans

    Description: This plugin adds a new weapon for Human Teams.
    Weapon Cost: 15

    Features:
    - This weapon do more damage
    - This weapon has zoom
    - Launch Lasers
    - This weapon has unlimited bullets


    Cvars:


    - zp_gmp5_dmg_multiplier <5> - Damage Multiplier for Golden mp5?
    - zp_gmp5_gold_bullets <1|0> - Golden bullets effect ?
    - zp_gmp5_custom_model <1|0> - golden mp5 Custom Model
    - zp_gmp5_unlimited_clip <1|0> - golden mp5 Unlimited Clip

    */



    #include <amxmodx>
    #include <fakemeta>
    #include < fun >
    #include <hamsandwich>
    #include <cstrike>
    #include <zombieplague>

    #define is_valid_player(%1) (1 <= %1 <= 32)

    new gmp5_V_MODEL[64] = "models/zombie_plague/v_mp5navygold.mdl"
    new gmp5_P_MODEL[64] = "models/zombie_plague/p_mp5navygold.mdl"

    /* Pcvars */
    new cvar_dmgmultiplier, cvar_goldbullets,  cvar_custommodel, cvar_uclip

    // Item ID
    new g_itemid

    new bool:g_Hasmp5navy[33]

    new g_hasZoom[ 33 ]
    new bullets[ 33 ]

    // Sprite
    new m_spriteTexture

    const Wep_mp5navy = ((1<<CSW_MP5NAVY))

    public plugin_init()
    {
       
        /* CVARS */
        cvar_dmgmultiplier = register_cvar("zp_gmp5_dmg_multiplier", "5")
        cvar_custommodel = register_cvar("zp_gmp5_custom_model", "1")
        cvar_goldbullets = register_cvar("zp_gmp5_gold_bullets", "1")
        cvar_uclip = register_cvar("zp_gmp5_unlimited_clip", "1")   

        // Register The Plugin
        register_plugin("[ZP] Extra: Golden MP5", "1.1", "Wisam187")
        // Register Zombie Plague extra item
        g_itemid = zp_register_extra_item("Golden MP5", 15, ZP_TEAM_HUMAN)
        // Death Msg
        register_event("DeathMsg", "Death", "a")
        // Weapon Pick Up
        register_event("WeapPickup","checkModel","b","1=19")
        // Current Weapon Event
        register_event("CurWeapon","checkWeapon","be","1=1")
        register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")
        // Ham TakeDamage
        RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
        register_forward( FM_CmdStart, "fw_CmdStart" )
        RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
       
    }

    public client_connect(id)
    {
        g_Hasmp5navy[id] = false
    }

    public client_disconnect(id)
    {
        g_Hasmp5navy[id] = false
    }

    public Death()
    {
        g_Hasmp5navy[read_data(2)] = false
    }

    public fwHamPlayerSpawnPost(id)
    {
        g_Hasmp5navy[id] = false
    }

    public plugin_precache()
    {
        precache_model(gmp5_V_MODEL)
        precache_model(gmp5_P_MODEL)
        m_spriteTexture = precache_model("sprites/dot.spr")
        precache_sound("weapons/zoom.wav")
    }

    public zp_user_infected_post(id)
    {
        if (zp_get_user_zombie(id))
        {
            g_Hasmp5navy[id] = false
        }
    }

    public checkModel(id)
    {
        if ( zp_get_user_zombie(id) )
            return PLUGIN_HANDLED
       
        new szWeapID = read_data(2)
       
        if ( szWeapID == CSW_MP5NAVY && g_Hasmp5navy[id] == true && get_pcvar_num(cvar_custommodel) )
        {
            set_pev(id, pev_viewmodel2, gmp5_V_MODEL)
            set_pev(id, pev_weaponmodel2, gmp5_P_MODEL)
        }
        return PLUGIN_HANDLED
    }

    public checkWeapon(id)
    {
        new plrClip, plrAmmo, plrWeap[32]
        new plrWeapId
       
        plrWeapId = get_user_weapon(id, plrClip , plrAmmo)
       
        if (plrWeapId == CSW_MP5NAVY && g_Hasmp5navy[id])
        {
            checkModel(id)
        }
        else
        {
            return PLUGIN_CONTINUE
        }
       
        if (plrClip == 0 && get_pcvar_num(cvar_uclip))
        {
            // If the user is out of ammo..
            get_weaponname(plrWeapId, plrWeap, 31)
            // Get the name of their weapon
            give_item(id, plrWeap)
            engclient_cmd(id, plrWeap)
            engclient_cmd(id, plrWeap)
            engclient_cmd(id, plrWeap)
        }
        return PLUGIN_HANDLED
    }



    public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
    {
        if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_MP5NAVY && g_Hasmp5navy[attacker] )
        {
            SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
        }
    }

    public fw_CmdStart( id, uc_handle, seed )
    {
        if( !is_user_alive( id ) )
            return PLUGIN_HANDLED
       
        if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
        {
            new szClip, szAmmo
            new szWeapID = get_user_weapon( id, szClip, szAmmo )
           
            if( szWeapID == CSW_MP5NAVY && g_Hasmp5navy[id] == true && !g_hasZoom[id] == true)
            {
                g_hasZoom[id] = true
                cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
                emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
            }
           
            else if ( szWeapID == CSW_MP5NAVY && g_Hasmp5navy[id] == true && g_hasZoom[id])
            {
                g_hasZoom[ id ] = false
                cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
               
            }
           
        }
        return PLUGIN_HANDLED
    }


    public make_tracer(id)
    {
        if (get_pcvar_num(cvar_goldbullets))
        {
            new clip,ammo
            new wpnid = get_user_weapon(id,clip,ammo)
            new pteam[16]
           
            get_user_team(id, pteam, 15)
           
            if ((bullets[id] > clip) && (wpnid == CSW_MP5NAVY) && g_Hasmp5navy[id])
            {
                new vec1[3], vec2[3]
                get_user_origin(id, vec1, 1) // origin; your camera point.
                get_user_origin(id, vec2, 4) // termina; where your bullet goes (4 is cs-only)
               
               
                //BEAMENTPOINTS
                message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
                write_byte (0)    //TE_BEAMENTPOINTS 0
                write_coord(vec1[0])
                write_coord(vec1[1])
                write_coord(vec1[2])
                write_coord(vec2[0])
                write_coord(vec2[1])
                write_coord(vec2[2])
                write_short( m_spriteTexture )
                write_byte(1) // framestart
                write_byte(5) // framerate
                write_byte(2) // life
                write_byte(10) // width
                write_byte(0) // noise
                write_byte( 255 )    // r, g, b
                write_byte( 215 )      // r, g, b
                write_byte( 0 )      // r, g, b
                write_byte(200) // brightness
                write_byte(150) // speed
                message_end()
            }
       
            bullets[id] = clip
        }
       
    }

    public zp_extra_item_selected(player, itemid)
    {
        if ( itemid == g_itemid )
        {
            if ( user_has_weapon(player, CSW_MP5NAVY) )
            {
                drop_prim(player)
            }
           
            give_item(player, "weapon_mp5navy")
            client_print(player, print_chat, "[ZP] Voce Comprou MP5 [Dourada]")
            g_Hasmp5navy[player] = true;
        }
    }

    stock drop_prim(id)
    {
        new weapons[32], num
        get_user_weapons(id, weapons, num)
        for (new i = 0; i < num; i++) {
            if (Wep_mp5navy & (1<<weapons[i]))
            {
                static wname[32]
                get_weaponname(weapons[i], wname, sizeof wname - 1)
                engclient_cmd(id, "drop", wname)
            }
        }
    }
    /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
    *{\\ rtf1\\ fbidis\\ ansi\\ ansicpg1252\\ deff0{\\ fonttbl{\\ f0\\ fnil\\ fcharset0 Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ ltrpar\\ lang1034\\ f0\\ fs16 \n\\ par }
    */


    CVARs AK Dourada
    Código:

    zp_goldenak_dmg_multiplier 5        ; Multiplica o dano [0-Desativa, 5-Maximo]
    zp_goldenak_gold_bullets 1        ; Efeito amarelo das balas [0-Desativa, 1-Ativa]
    zp_goldenak_cost 30            ; Preço em Ammo Packs
    zp_goldenak_custom_model 1        ; Modelo personalizado
    zp_goldenak_unlimited_clip 0        ; Bala sem recarga [infinita] [0-Desativa, 1-Ativa]

    SMA AK Dourada
    Código:

    /*
    [ZP] Extra Item: Golden Ak 47
    Team: Humans

    Description: This plugin adds a new weapon for Human Teams.
    Weapon Cost: 30

    Features:
    - This weapon do more damage
    - This weapon has zoom
    - Launch Lasers
    - This weapon has unlimited bullets

    Credits:

    KaOs - For his Dual MP5 mod

    Cvars:


    - zp_goldenak_dmg_multiplier <5> - Multiplica o dano [0-Desativa, 5-Maximo]
    - zp_goldenak_gold_bullets <1|0> - Efeito amarelo das balas [0-Desativa, 1-Ativa]
    - zp_goldenak_custom_model <1|0> - Modelo personalizado
    - zp_goldenak_unlimited_clip <1|0> - Bala sem recarga [infinita] [0-Desativa, 1-Ativa]

    */



    #include <amxmodx>
    #include <fakemeta>
    #include < fun >
    #include <hamsandwich>
    #include <cstrike>
    #include <zombieplague>

    #define is_valid_player(%1) (1 <= %1 <= 32)

    new AK_V_MODEL[64] = "models/zombie_plague/v_golden_ak47.mdl"
    new AK_P_MODEL[64] = "models/zombie_plague/p_golden_ak47.mdl"

    /* Pcvars */
    new cvar_dmgmultiplier, cvar_goldbullets,  cvar_custommodel, cvar_uclip

    // Item ID
    new g_itemid

    new bool:g_HasAk[33]

    new g_hasZoom[ 33 ]
    new bullets[ 33 ]

    // Sprite
    new m_spriteTexture

    const Wep_ak47 = ((1<<CSW_AK47))

    public plugin_init()
    {
       
        /* CVARS */
        cvar_dmgmultiplier = register_cvar("zp_goldenak_dmg_multiplier", "5")
        cvar_custommodel = register_cvar("zp_goldenak_custom_model", "1")
        cvar_goldbullets = register_cvar("zp_goldenak_gold_bullets", "1")
        cvar_uclip = register_cvar("zp_goldenak_unlimited_clip", "1")
       
        // Register The Plugin
        register_plugin("[ZP] Extra: Golden Ak 47", "1.1", "AlejandroSk")
        // Register Zombie Plague extra item
        g_itemid = zp_register_extra_item("Golden Ak 47", 30, ZP_TEAM_HUMAN)
        // Death Msg
        register_event("DeathMsg", "Death", "a")
        // Weapon Pick Up
        register_event("WeapPickup","checkModel","b","1=19")
        // Current Weapon Event
        register_event("CurWeapon","checkWeapon","be","1=1")
        register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")
        // Ham TakeDamage
        RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
        register_forward( FM_CmdStart, "fw_CmdStart" )
        RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
       
    }

    public client_connect(id)
    {
        g_HasAk[id] = false
    }

    public client_disconnect(id)
    {
        g_HasAk[id] = false
    }

    public Death()
    {
        g_HasAk[read_data(2)] = false
    }

    public fwHamPlayerSpawnPost(id)
    {
        g_HasAk[id] = false
    }

    public plugin_precache()
    {
        precache_model(AK_V_MODEL)
        precache_model(AK_P_MODEL)
        m_spriteTexture = precache_model("sprites/dot.spr")
        precache_sound("weapons/zoom.wav")
    }

    public zp_user_infected_post(id)
    {
        if (zp_get_user_zombie(id))
        {
            g_HasAk[id] = false
        }
    }

    public checkModel(id)
    {
        if ( zp_get_user_zombie(id) )
            return PLUGIN_HANDLED
       
        new szWeapID = read_data(2)
       
        if ( szWeapID == CSW_AK47 && g_HasAk[id] == true && get_pcvar_num(cvar_custommodel) )
        {
            set_pev(id, pev_viewmodel2, AK_V_MODEL)
            set_pev(id, pev_weaponmodel2, AK_P_MODEL)
        }
        return PLUGIN_HANDLED
    }

    public checkWeapon(id)
    {
        new plrClip, plrAmmo, plrWeap[32]
        new plrWeapId
       
        plrWeapId = get_user_weapon(id, plrClip , plrAmmo)
       
        if (plrWeapId == CSW_AK47 && g_HasAk[id])
        {
            checkModel(id)
        }
        else
        {
            return PLUGIN_CONTINUE
        }
       
        if (plrClip == 0 && get_pcvar_num(cvar_uclip))
        {
            // If the user is out of ammo..
            get_weaponname(plrWeapId, plrWeap, 31)
            // Get the name of their weapon
            give_item(id, plrWeap)
            engclient_cmd(id, plrWeap)
            engclient_cmd(id, plrWeap)
            engclient_cmd(id, plrWeap)
        }
        return PLUGIN_HANDLED
    }



    public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
    {
        if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_AK47 && g_HasAk[attacker] )
        {
            SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
        }
    }

    public fw_CmdStart( id, uc_handle, seed )
    {
        if( !is_user_alive( id ) )
            return PLUGIN_HANDLED
       
        if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
        {
            new szClip, szAmmo
            new szWeapID = get_user_weapon( id, szClip, szAmmo )
           
            if( szWeapID == CSW_AK47 && g_HasAk[id] == true && !g_hasZoom[id] == true)
            {
                g_hasZoom[id] = true
                cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
                emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
            }
           
            else if ( szWeapID == CSW_AK47 && g_HasAk[id] == true && g_hasZoom[id])
            {
                g_hasZoom[ id ] = false
                cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
               
            }
           
        }
        return PLUGIN_HANDLED
    }


    public make_tracer(id)
    {
        if (get_pcvar_num(cvar_goldbullets))
        {
            new clip,ammo
            new wpnid = get_user_weapon(id,clip,ammo)
            new pteam[16]
           
            get_user_team(id, pteam, 15)
           
            if ((bullets[id] > clip) && (wpnid == CSW_AK47) && g_HasAk[id])
            {
                new vec1[3], vec2[3]
                get_user_origin(id, vec1, 1) // origin; your camera point.
                get_user_origin(id, vec2, 4) // termina; where your bullet goes (4 is cs-only)
               
               
                //BEAMENTPOINTS
                message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
                write_byte (0)    //TE_BEAMENTPOINTS 0
                write_coord(vec1[0])
                write_coord(vec1[1])
                write_coord(vec1[2])
                write_coord(vec2[0])
                write_coord(vec2[1])
                write_coord(vec2[2])
                write_short( m_spriteTexture )
                write_byte(1) // framestart
                write_byte(5) // framerate
                write_byte(2) // life
                write_byte(10) // width
                write_byte(0) // noise
                write_byte( 255 )    // r, g, b
                write_byte( 215 )      // r, g, b
                write_byte( 0 )      // r, g, b
                write_byte(200) // brightness
                write_byte(150) // speed
                message_end()
            }
       
            bullets[id] = clip
        }
       
    }

    public zp_extra_item_selected(player, itemid)
    {
        if ( itemid == g_itemid )
        {
            if ( user_has_weapon(player, CSW_AK47) )
            {
                drop_prim(player)
            }
           
            give_item(player, "weapon_ak47")
            client_print(player, print_chat, "[ZP] Voce Comprou AK-47 [Dourada]")
            g_HasAk[player] = true;
        }
    }

    stock drop_prim(id)
    {
        new weapons[32], num
        get_user_weapons(id, weapons, num)
        for (new i = 0; i < num; i++) {
            if (Wep_ak47 & (1<<weapons[i]))
            {
                static wname[32]
                get_weaponname(weapons[i], wname, sizeof wname - 1)
                engclient_cmd(id, "drop", wname)
            }
        }
    }
    /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
    *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1034\\ f0\\ fs16 \n\\ par }
    */

    CVARs Watergun
    Código:

    // Quantidade de Dano
    zp_watergun_dmg 0.3

    // Quantidade de Recoil da arma
    zp_watergun_recoil 1.01

    // Quantidade de Balas no Pente Principal
    zp_watergun_clip 50

    // Velocidade da recarga
    zp_watergun_spd 1.02

    // Quantidade de Balas no Pente Reserva
    zp_watergun_ammo 300

    SMA Watergun
    Código:

    #include <amxmodx>
    #include <engine>
    #include <fakemeta>
    #include < fun >
    #include <hamsandwich>
    #include < xs >
    #include <cstrike>
    #include <zombieplague>

    #define ENG_NULLENT        -1
    #define EV_INT_WEAPONKEY    EV_INT_impulse
    #define watergun_WEAPONKEY 893
    #define MAX_PLAYERS                32
    #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)

    #define TASK_FBURN                100
    #define ID_FBURN                    ( taskid - TASK_FBURN )

    #define MAX_CLIENTS                32

    new bool:g_fRoundEnd

    #define FIRE_DURATION        6
    #define FIRE_DAMAGE        25

    const USE_STOPPED = 0
    const OFFSET_ACTIVE_ITEM = 373
    const OFFSET_WEAPONOWNER = 41
    const OFFSET_LINUX = 5
    const OFFSET_LINUX_WEAPONS = 4

    #define WEAP_LINUX_XTRA_OFF        4
    #define m_fKnown                    44
    #define m_flNextPrimaryAttack        46
    #define m_flTimeWeaponIdle            48
    #define m_iClip                    51
    #define m_fInReload                54
    #define PLAYER_LINUX_XTRA_OFF    5
    #define m_flNextAttack                83

    #define watergun_RELOAD_TIME    3.5
    #define watergun_RELOAD        1
    #define watergun_DRAW        2
    #define watergun_SHOOT1        3
    #define watergun_SHOOT2        4

    new g_flameSpr
    new g_smokeSpr

    new g_burning_duration[ MAX_CLIENTS + 1 ]

    #define write_coord_f(%1)    engfunc(EngFunc_WriteCoord,%1)

    new const Fire_Sounds[][] = { "weapons/waterp.wav" }

    new watergun_V_MODEL[64] = "models/v_waterg.mdl"
    new watergun_P_MODEL[64] = "models/p_waterg.mdl"
    new watergun_W_MODEL[64] = "models/w_waterg.mdl"

    //new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 }

    new cvar_dmg_watergun, cvar_recoil_watergun, g_itemid_watergun, cvar_clip_watergun, cvar_spd_watergun, cvar_watergun_ammo
    new g_MaxPlayers, g_orig_event_watergun, g_IsInPrimaryAttack
    new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2]
    new g_has_watergun[33], g_clip_ammo[33], g_watergun_TmpClip[33], oldweap[33]
    new watergun_sprite

    const PRIMARY_WEAPONS_BIT_SUM =
    (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
    CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
    new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
                "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
                "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
                "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
                "weapon_ak47", "weapon_knife", "weapon_p90" }

    public plugin_init()
    {
        register_plugin("[ZP] Extra: Water Gun", "1.0", "Crock/LARS-DAY[BR]EAKER/heka")
        register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
        register_event("CurWeapon","CurrentWeapon","be","1=1")
        RegisterHam(Ham_Item_AddToPlayer, "weapon_mp5navy", "fw_watergun_AddToPlayer")
        RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1)
        RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1)
        RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1)
        RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1)
        for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
        if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
        RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_watergun_PrimaryAttack")
        RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_watergun_PrimaryAttack_Post", 1)
        RegisterHam(Ham_Item_PostFrame, "weapon_mp5navy", "watergun_ItemPostFrame")
        RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "watergun_Reload")
        RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "watergun_Reload_Post", 1)
        RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
        RegisterHam( Ham_Spawn, "player", "PlayerSpawn_Post", 1 );
        register_forward(FM_SetModel, "fw_SetModel")
        register_event( "DeathMsg", "EV_DeathMsg", "a" );
        register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
        register_forward(FM_PlaybackEvent, "fwPlaybackEvent")
       
        //RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1)
        //RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1)
        //RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1)
        //RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1)
        //RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1)
        //RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1)
        //RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1)

        cvar_dmg_watergun = register_cvar("zp_watergun_dmg", "0.86")
        cvar_recoil_watergun = register_cvar("zp_watergun_recoil", "1.01")
        cvar_clip_watergun = register_cvar("zp_watergun_clip", "50")
        cvar_spd_watergun = register_cvar("zp_watergun_spd", "1.02")
        cvar_watergun_ammo = register_cvar("zp_watergun_ammo", "100")
       
        g_itemid_watergun = zp_register_extra_item("Lightning SMG-1[FireBulet]", 1, ZP_TEAM_HUMAN)
        g_MaxPlayers = get_maxplayers()
    }

    public plugin_precache()
    {
        precache_model(watergun_V_MODEL)
        precache_model(watergun_P_MODEL)
        precache_model(watergun_W_MODEL)
        for(new i = 0; i < sizeof Fire_Sounds; i++)
        precache_sound(Fire_Sounds[i])   
        m_iBlood[0] = precache_model("sprites/blood.spr")
        m_iBlood[1] = precache_model("sprites/bloodspray.spr")
        watergun_sprite = precache_model("sprites/watergun.spr")

        g_flameSpr = precache_model( "sprites/flame.spr" );
        g_smokeSpr = precache_model( "sprites/black_smoke3.spr" );

        register_forward(FM_PrecacheEvent, "fwPrecacheEvent_Post", 1)
    }

    /*================================================================================
    public fw_TraceAttack(iEnt, iAttacker, Float:flDamage, Float:fDir[3], ptr, iDamageType)
    {
        if(!is_user_alive(iAttacker))
            return

        new g_currentweapon = get_user_weapon(iAttacker)

        if(g_currentweapon != CSW_MP5NAVY) return
       
        if(!g_has_watergun[iAttacker]) return

        static Float:flEnd[3]
        get_tr2(ptr, TR_vecEndPos, flEnd)
       
        if(iEnt)
        {
            message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
            write_byte(TE_DECAL)
            write_coord_f(flEnd[0])
            write_coord_f(flEnd[1])
            write_coord_f(flEnd[2])
            write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
            write_short(iEnt)
            message_end()
        }
        else
        {
            message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
            write_byte(TE_WORLDDECAL)
            write_coord_f(flEnd[0])
            write_coord_f(flEnd[1])
            write_coord_f(flEnd[2])
            write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
            message_end()
        }
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(TE_GUNSHOTDECAL)
        write_coord_f(flEnd[0])
        write_coord_f(flEnd[1])
        write_coord_f(flEnd[2])
        write_short(iAttacker)
        write_byte(GUNSHOT_DECALS[random_num (0, sizeof GUNSHOT_DECALS -1)])
        message_end()
    }
    =================================================================================*/

    public zp_user_humanized_post(id)
    {
        g_has_watergun[id] = false
    }

    public plugin_natives ()
    {
        register_native("give_weapon_watergun", "native_give_weapon_add", 1)
    }
    public native_give_weapon_add(id)
    {
        give_watergun(id)
    }

    public fwPrecacheEvent_Post(type, const name[])
    {
        if (equal("events/mp5n.sc", name))
        {
            g_orig_event_watergun = get_orig_retval()
            return FMRES_HANDLED
        }
        return FMRES_IGNORED
    }

    public client_connect(id)
    {
        g_has_watergun[id] = false
    }

    public client_disconnect(id)
    {
        g_has_watergun[id] = false

        remove_task(id + TASK_FBURN )
    }

    public zp_user_infected_post(id)
    {
        if (zp_get_user_zombie(id))
        {
            g_has_watergun[id] = false

            remove_task(id + TASK_FBURN)
        }
    }

    public fw_SetModel(entity, model[])
    {
        if(!is_valid_ent(entity))
            return FMRES_IGNORED
       
        static szClassName[33]
        entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName))
           
        if(!equal(szClassName, "weaponbox"))
            return FMRES_IGNORED
       
        static iOwner
       
        iOwner = entity_get_edict(entity, EV_ENT_owner)
       
        if(equal(model, "models/w_mp5.mdl"))
        {
            static iStoredAugID
           
            iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_mp5navy", entity)
       
            if(!is_valid_ent(iStoredAugID))
                return FMRES_IGNORED
       
            if(g_has_watergun[iOwner])
            {
                entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, watergun_WEAPONKEY)
               
                g_has_watergun[iOwner] = false
               
                entity_set_model(entity, watergun_W_MODEL)
               
                return FMRES_SUPERCEDE
            }
        }
        return FMRES_IGNORED
    }

    public EV_DeathMsg( )
    {
        static pevVictim;
        pevVictim = read_data( 2 )
       
        if( !is_user_connected( pevVictim ) )
            return
           
        remove_task( pevVictim + TASK_FBURN )
    }

    public PlayerSpawn_Post( Player )
    {
        if( !is_user_alive( Player ) )
            return;
           
        g_burning_duration[ Player ] = 0
    }

    public give_watergun(id)
    {
        drop_weapons(id, 1)
        new iWep2 = give_item(id,"weapon_mp5navy")
        if( iWep2 > 0 )
        {
            cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_watergun))
            cs_set_user_bpammo (id, CSW_MP5NAVY, get_pcvar_num(cvar_watergun_ammo))   
            UTIL_PlayWeaponAnimation(id, watergun_DRAW)
            set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
        }
        g_has_watergun[id] = true
    }

    public zp_extra_item_selected(id, itemid)
    {
        if(itemid != g_itemid_watergun)
            return

        give_watergun(id)
    }

    public fw_watergun_AddToPlayer(watergun, id)
    {
        if(!is_valid_ent(watergun) || !is_user_connected(id))
            return HAM_IGNORED
       
        if(entity_get_int(watergun, EV_INT_WEAPONKEY) == watergun_WEAPONKEY)
        {
            g_has_watergun[id] = true
           
            entity_set_int(watergun, EV_INT_WEAPONKEY, 0)
           
            return HAM_HANDLED
        }
        return HAM_IGNORED
    }

    public fw_UseStationary_Post(entity, caller, activator, use_type)
    {
        if (use_type == USE_STOPPED && is_user_connected(caller))
            replace_weapon_models(caller, get_user_weapon(caller))
    }

    public fw_Item_Deploy_Post(weapon_ent)
    {
        static owner
        owner = fm_cs_get_weapon_ent_owner(weapon_ent)
       
        static weaponid
        weaponid = cs_get_weapon_id(weapon_ent)
       
        replace_weapon_models(owner, weaponid)
    }

    public CurrentWeapon(id)
    {
        replace_weapon_models(id, read_data(2))

        if(read_data(2) != CSW_MP5NAVY || !g_has_watergun[id])
              return
       
        static Float:iSpeed
        if(g_has_watergun[id])
              iSpeed = get_pcvar_float(cvar_spd_watergun)
       
        static weapon[32],Ent
        get_weaponname(read_data(2),weapon,31)
        Ent = find_ent_by_owner(-1,weapon,id)
        if(Ent)
        {
              static Float:Delay
              Delay = get_pdata_float( Ent, 46, 4) * iSpeed
              if (Delay > 0.0)
              {
                  set_pdata_float(Ent, 46, Delay, 4)
              }
        }
    }

    replace_weapon_models(id, weaponid)
    {
        switch (weaponid)
        {
            case CSW_MP5NAVY:
            {
                if (zp_get_user_zombie(id) || zp_get_user_survivor(id))
                    return
               
                if(g_has_watergun[id])
                {
                    set_pev(id, pev_viewmodel2, watergun_V_MODEL)
                    set_pev(id, pev_weaponmodel2, watergun_P_MODEL)
                    if(oldweap[id] != CSW_MP5NAVY)
                    {
                        UTIL_PlayWeaponAnimation(id, watergun_DRAW)
                        set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF)
                    }
                }
            }
        }
        oldweap[id] = weaponid
    }

    public fw_UpdateClientData_Post(Player, SendWeapons, CD_Handle)
    {
        if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_MP5NAVY || !g_has_watergun[Player]))
            return FMRES_IGNORED
       
        set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
        return FMRES_HANDLED
    }

    public fw_watergun_PrimaryAttack(Weapon)
    {
        new Player = get_pdata_cbase(Weapon, 41, 4)
       
        if (!g_has_watergun[Player])
            return
       
        g_IsInPrimaryAttack = 1
        pev(Player,pev_punchangle,cl_pushangle[Player])
       
        g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
    }

    public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
    {
        if ((eventid != g_orig_event_watergun) || !g_IsInPrimaryAttack)
            return FMRES_IGNORED
        if (!(1 <= invoker <= g_MaxPlayers))
        return FMRES_IGNORED

        playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
        return FMRES_SUPERCEDE
    }

    public fw_watergun_PrimaryAttack_Post(Weapon)
    {
        g_IsInPrimaryAttack = 0
        new Player = get_pdata_cbase(Weapon, 41, 4)
       
        new szClip, szAmmo
        get_user_weapon(Player, szClip, szAmmo)
       
        if(!is_user_alive(Player))
            return

        if(g_has_watergun[Player])
        {
            if (!g_clip_ammo[Player])
                return

            new Float:push[3]
            pev(Player,pev_punchangle,push)
            xs_vec_sub(push,cl_pushangle[Player],push)
           
            xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_watergun),push)
            xs_vec_add(push,cl_pushangle[Player],push)
            set_pev(Player,pev_punchangle,push)
           
            emit_sound(Player, CHAN_WEAPON, Fire_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
            UTIL_PlayWeaponAnimation(Player, random_num(watergun_SHOOT1, watergun_SHOOT2))

            static Float:plrViewAngles[3], Float:VecEnd[3], Float:VecDir[3], Float:PlrOrigin[3]
            pev(Player, pev_v_angle, plrViewAngles)

            static Float:VecSrc[3], Float:VecDst[3]
       
            //VecSrc = pev->origin + pev->view_ofs
            pev(Player, pev_origin, PlrOrigin)
            pev(Player, pev_view_ofs, VecSrc)
            xs_vec_add(VecSrc, PlrOrigin, VecSrc)

            //VecDst = VecDir * 8192.0
            angle_vector(plrViewAngles, ANGLEVECTOR_FORWARD, VecDir);
            xs_vec_mul_scalar(VecDir, 8192.0, VecDst);
            xs_vec_add(VecDst, VecSrc, VecDst);
       
            new hTrace = create_tr2()
            engfunc(EngFunc_TraceLine, VecSrc, VecDst, 0, Player, hTrace)
            get_tr2(hTrace, TR_vecEndPos, VecEnd);

            create_tracer_water(Player, VecSrc, VecEnd)   
        }
    }

    public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
    {
        if(!is_user_alive(attacker))
            return;

        if (victim != attacker && is_user_connected(attacker))
        {
            if(get_user_weapon(attacker) == CSW_MP5NAVY)
            {
                if(g_has_watergun[attacker])
                {
                    SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_watergun))

                    if( !task_exists( victim + TASK_FBURN ) )
                    {
                        g_burning_duration[ victim ] += FIRE_DURATION * 5
                   
                        set_task( 0.2, "CTask__BurningFlame", victim + TASK_FBURN, _, _, "b" )
                    }
                }
            }
        }
    }

    public message_DeathMsg(msg_id, msg_dest, id)
    {
        static szTruncatedWeapon[33], iAttacker, iVictim
       
        get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
       
        iAttacker = get_msg_arg_int(1)
        iVictim = get_msg_arg_int(2)
       
        if(!is_user_connected(iAttacker) || iAttacker == iVictim)
            return PLUGIN_CONTINUE
       
        if(equal(szTruncatedWeapon, "mp5navy") && get_user_weapon(iAttacker) == CSW_MP5NAVY)
        {
            if(g_has_watergun[iAttacker])
                set_msg_arg_string(4, "mp5navy")
        }
        return PLUGIN_CONTINUE
    }

    stock fm_cs_get_current_weapon_ent(id)
    {
        return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX)
    }

    stock fm_cs_get_weapon_ent_owner(ent)
    {
        return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
    }

    stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
    {
        set_pev(Player, pev_weaponanim, Sequence)
       
        message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
        write_byte(Sequence)
        write_byte(pev(Player, pev_body))
        message_end()
    }

    public watergun_ItemPostFrame(weapon_entity)
    {
        new id = pev(weapon_entity, pev_owner)
        if (!is_user_connected(id))
              return HAM_IGNORED

        if (!g_has_watergun[id])
              return HAM_IGNORED

        static iClipExtra
       
        iClipExtra = get_pcvar_num(cvar_clip_watergun)
        new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF)

        new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY);
        new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)

        new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF)

        if( fInReload && flNextAttack <= 0.0 )
        {
            new j = min(iClipExtra - iClip, iBpAmmo)
       
            set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF)
            cs_set_user_bpammo(id, CSW_MP5NAVY, iBpAmmo-j)
           
            set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF)
            fInReload = 0
        }
        return HAM_IGNORED
    }

    public watergun_Reload(weapon_entity)
    {
        new id = pev(weapon_entity, pev_owner)
        if (!is_user_connected(id))
              return HAM_IGNORED

        if (!g_has_watergun[id])
              return HAM_IGNORED

        static iClipExtra

        if(g_has_watergun[id])
              iClipExtra = get_pcvar_num(cvar_clip_watergun)

        g_watergun_TmpClip[id] = -1

        new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY)
        new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF)

        if (iBpAmmo <= 0)
              return HAM_SUPERCEDE

        if (iClip >= iClipExtra)
              return HAM_SUPERCEDE

        g_watergun_TmpClip[id] = iClip

        return HAM_IGNORED
    }

    public watergun_Reload_Post(weapon_entity)
    {
        new id = pev(weapon_entity, pev_owner)
        if (!is_user_connected(id))
            return HAM_IGNORED

        if (!g_has_watergun[id])
            return HAM_IGNORED

        if (g_watergun_TmpClip[id] == -1)
            return HAM_IGNORED

        set_pdata_int(weapon_entity, m_iClip, g_watergun_TmpClip[id], WEAP_LINUX_XTRA_OFF)

        set_pdata_float(weapon_entity, m_flTimeWeaponIdle, watergun_RELOAD_TIME, WEAP_LINUX_XTRA_OFF)

        set_pdata_float(id, m_flNextAttack, watergun_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF)

        set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF)

        UTIL_PlayWeaponAnimation(id, watergun_RELOAD)

        return HAM_IGNORED
    }

    stock create_tracer_water(id, Float:fVec1[3], Float:fVec2[3])
    {
        static iVec1[3]
        FVecIVec(fVec1, iVec1)

        static Float:origin[3], Float:vSrc[3], Float:angles[3], Float:v_forward[3], Float:v_right[3], Float:v_up[3], Float:gun_position[3], Float:player_origin[3], Float:player_view_offset[3]
        pev(id, pev_v_angle, angles)
        engfunc(EngFunc_MakeVectors, angles)
        global_get(glb_v_forward, v_forward)
        global_get(glb_v_right, v_right)
        global_get(glb_v_up, v_up)

        //m_pPlayer->GetGunPosition( ) = pev->origin + pev->view_ofs
        pev(id, pev_origin, player_origin)
        pev(id, pev_view_ofs, player_view_offset)
        xs_vec_add(player_origin, player_view_offset, gun_position)

        xs_vec_mul_scalar(v_forward, 24.0, v_forward)
        xs_vec_mul_scalar(v_right, 3.0, v_right)

        if ((pev(id, pev_flags) & FL_DUCKING) == FL_DUCKING)
            xs_vec_mul_scalar(v_up, 6.0, v_up)
        else
            xs_vec_mul_scalar(v_up, -2.0, v_up)

        xs_vec_add(gun_position, v_forward, origin)
        xs_vec_add(origin, v_right, origin)
        xs_vec_add(origin, v_up, origin)

        vSrc[0] = origin[0]
        vSrc[1] = origin[1]
        vSrc[2] = origin[2]

        new Float:dist = get_distance_f(vSrc, fVec2)
        new CountDrops = floatround(dist / 50.0)
       
        if (CountDrops > 20)
            CountDrops = 20
       
        if (CountDrops < 2)
            CountDrops = 2

        message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1)
        write_byte(TE_SPRITETRAIL)
        engfunc(EngFunc_WriteCoord, vSrc[0])
        engfunc(EngFunc_WriteCoord, vSrc[1])
        engfunc(EngFunc_WriteCoord, vSrc[2])
        engfunc(EngFunc_WriteCoord, fVec2[0])
        engfunc(EngFunc_WriteCoord, fVec2[1])
        engfunc(EngFunc_WriteCoord, fVec2[2])
        write_short(watergun_sprite)
        write_byte(CountDrops)
        write_byte(0)
        write_byte(1)
        write_byte(60)
        write_byte(10)
        message_end()

        message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1)
        write_byte(TE_BEAMPOINTS)
        engfunc(EngFunc_WriteCoord, fVec2[0])
        engfunc(EngFunc_WriteCoord, fVec2[1])
        engfunc(EngFunc_WriteCoord, fVec2[2])
        engfunc(EngFunc_WriteCoord, vSrc[0])
        engfunc(EngFunc_WriteCoord, vSrc[1])
        engfunc(EngFunc_WriteCoord, vSrc[2])
        write_short(watergun_sprite)
        write_byte(6)
        write_byte(200)
        write_byte(1)
        write_byte(100)
        write_byte(0)
        write_byte(64); write_byte(64); write_byte(192);
        write_byte(192)
        write_byte(250)
        message_end()
    }

    stock drop_weapons(id, dropwhat)
    {
        static weapons[32], num, i, weaponid
        num = 0
        get_user_weapons(id, weapons, num)
       
        for (i = 0; i < num; i++)
        {
              weaponid = weapons[i]
             
              if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
              {
                  static wname[32]
                  get_weaponname(weaponid, wname, sizeof wname - 1)
                  engclient_cmd(id, "drop", wname)
              }
        }
    }

    public CTask__BurningFlame( taskid )
    {
        // Get player origin and flags
        static origin[3], flags
        get_user_origin(ID_FBURN, origin)
        flags = pev(ID_FBURN, pev_flags)
       
        // Madness mode - in water - burning stopped
        if ((flags & FL_INWATER) || g_burning_duration[ID_FBURN] < 1 || g_fRoundEnd || !is_user_alive(ID_FBURN))
        {
            // Smoke sprite
            message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
            write_byte(TE_SMOKE) // TE id
            write_coord(origin[0]) // x
            write_coord(origin[1]) // y
            write_coord(origin[2]-50) // z
            write_short(g_smokeSpr) // sprite
            write_byte(random_num(15, 20)) // scale
            write_byte(random_num(10, 20)) // framerate
            message_end()
           
            // Task not needed anymore
            remove_task(taskid)
            return
        }
       
        // Get player's health
        static health
        health = pev(ID_FBURN, pev_health)
       
        // Take damage from the fire
        if (health - FIRE_DAMAGE > 0)
            fm_set_user_health(ID_FBURN, health - FIRE_DAMAGE)
       
        // Flame sprite
        message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
        write_byte(TE_SPRITE) // TE id
        write_coord(origin[0]+random_num(-5, 5)) // x
        write_coord(origin[1]+random_num(-5, 5)) // y
        write_coord(origin[2]+random_num(-10, 10)) // z
        write_short(g_flameSpr) // sprite
        write_byte(random_num(5, 10)) // scale
        write_byte(200) // brightness
        message_end()

       
        g_burning_duration[ID_FBURN]--
    }

    stock fm_set_user_health( index, health )
        health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index);

    Se possível me mostrar a alteração, e preciso tambem do plugin que bloqueia a compra de itens antes da contagem.

    Me ajudem, por favor... dou REP ++
    [P]erfec[T] [S]cr[@]s[H]
    [P]erfec[T] [S]cr[@]s[H]
    Scripter


    Masculino Número de Mensagens : 564
    Jogador FODA Perfect Scrash entrou na zplague
    Ammo Packs : 4545
    Honra : 177
    Data de inscrição : 04/04/2013

    [AJUDA] Alguem tem uma solução pra isso? Empty Re: [AJUDA] Alguem tem uma solução pra isso?

    Mensagem por [P]erfec[T] [S]cr[@]s[H] 7/5/2013, 7:25 pm

    Bom o da Ak já consegui resolver ta aqui a sma:

    Código:


    /*
    [ZP] Extra Item: Golden Ak 47
    Team: Humans

    Description: This plugin adds a new weapon for Human Teams.
    Weapon Cost: 30

    Features:
    - This weapon do more damage
    - This weapon has zoom
    - Launch Lasers
    - This weapon has unlimited bullets

    Credits:

    KaOs - For his Dual MP5 mod

    Cvars:


    - zp_goldenak_dmg_multiplier <5> - Multiplica o dano [0-Desativa, 5-Maximo]
    - zp_goldenak_gold_bullets <1|0> - Efeito amarelo das balas [0-Desativa, 1-Ativa]
    - zp_goldenak_custom_model <1|0> - Modelo personalizado
    - zp_goldenak_unlimited_clip <1|0> - Bala sem recarga [infinita] [0-Desativa, 1-Ativa]

    */



    #include <amxmodx>
    #include <fakemeta>
    #include <  fun >
    #include <hamsandwich>
    #include <cstrike>
    #include <zombieplague>

    #define is_valid_player(%1) (1 <= %1 <= 32)

    new AK_V_MODEL[64] = "models/zombie_plague/v_golden_ak47.mdl"
    new AK_P_MODEL[64] = "models/zombie_plague/p_golden_ak47.mdl"

    /* Pcvars */
    new cvar_dmgmultiplier, cvar_goldbullets,  cvar_custommodel, cvar_uclip

    // Item ID
    new g_itemid

    new bool:g_HasAk[33]

    new g_hasZoom[ 33 ]
    new bullets[ 33 ]

    // Sprite
    new m_spriteTexture

    const Wep_ak47 = ((1<<CSW_AK47))

    const golden_cost = 30

    public plugin_init()
    {
       
        /* CVARS */
        cvar_dmgmultiplier = register_cvar("zp_goldenak_dmg_multiplier", "5")
        cvar_custommodel = register_cvar("zp_goldenak_custom_model", "1")
        cvar_goldbullets = register_cvar("zp_goldenak_gold_bullets", "1")
        cvar_uclip = register_cvar("zp_goldenak_unlimited_clip", "1")
       
        // Register The Plugin
        register_plugin("[ZP] Extra: Golden Ak 47", "1.1", "AlejandroSk")
        // Register Zombie Plague extra item
        g_itemid = zp_register_extra_item("Golden Test", golden_cost, ZP_TEAM_HUMAN)
        // Death Msg
        register_event("DeathMsg", "Death", "a")
        // Weapon Pick Up
        register_event("WeapPickup","checkModel","b","1=19")
        // Current Weapon Event
        register_event("CurWeapon","checkWeapon","be","1=1")
        register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")
        // Ham TakeDamage
        RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
        register_forward( FM_CmdStart, "fw_CmdStart" )
        RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
       
    }

    public client_connect(id)
    {
        g_HasAk[id] = false
    }

    public client_disconnect(id)
    {
        g_HasAk[id] = false
    }

    public Death()
    {
        g_HasAk[read_data(2)] = false
    }

    public fwHamPlayerSpawnPost(id)
    {
        g_HasAk[id] = false
    }

    public plugin_precache()
    {
        precache_model(AK_V_MODEL)
        precache_model(AK_P_MODEL)
        m_spriteTexture = precache_model("sprites/dot.spr")
        precache_sound("weapons/zoom.wav")
    }

    public zp_user_infected_post(id)
    {
        if (zp_get_user_zombie(id))
        {
            g_HasAk[id] = false
        }
    }

    public checkModel(id)
    {
        if ( zp_get_user_zombie(id) )
            return PLUGIN_HANDLED
       
        new szWeapID = read_data(2)
       
        if ( szWeapID == CSW_AK47 && g_HasAk[id] == true && get_pcvar_num(cvar_custommodel) )
        {
            set_pev(id, pev_viewmodel2, AK_V_MODEL)
            set_pev(id, pev_weaponmodel2, AK_P_MODEL)
        }
        return PLUGIN_HANDLED
    }

    public checkWeapon(id)
    {
        new plrClip, plrAmmo, plrWeap[32]
        new plrWeapId
       
        plrWeapId = get_user_weapon(id, plrClip , plrAmmo)
       
        if (plrWeapId == CSW_AK47 && g_HasAk[id])
        {
            checkModel(id)
        }
        else
        {
            return PLUGIN_CONTINUE
        }
       
        if (plrClip == 0 && get_pcvar_num(cvar_uclip))
        {
            // If the user is out of ammo..
            get_weaponname(plrWeapId, plrWeap, 31)
            // Get the name of their weapon
            give_item(id, plrWeap)
            engclient_cmd(id, plrWeap)
            engclient_cmd(id, plrWeap)
            engclient_cmd(id, plrWeap)
        }
        return PLUGIN_HANDLED
    }



    public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
    {
        if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_AK47 && g_HasAk[attacker] )
        {
            SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
        }
    }

    public fw_CmdStart( id, uc_handle, seed )
    {
        if( !is_user_alive( id ) )
            return PLUGIN_HANDLED
       
        if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
        {
            new szClip, szAmmo
            new szWeapID = get_user_weapon( id, szClip, szAmmo )
           
            if( szWeapID == CSW_AK47 && g_HasAk[id] == true && !g_hasZoom[id] == true)
            {
                g_hasZoom[id] = true
                cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
                emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
            }
           
            else if ( szWeapID == CSW_AK47 && g_HasAk[id] == true && g_hasZoom[id])
            {
                g_hasZoom[ id ] = false
                cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
               
            }
           
        }
        return PLUGIN_HANDLED
    }


    public make_tracer(id)
    {
        if (get_pcvar_num(cvar_goldbullets))
        {
            new clip,ammo
            new wpnid = get_user_weapon(id,clip,ammo)
            new pteam[16]
           
            get_user_team(id, pteam, 15)
           
            if ((bullets[id] > clip) && (wpnid == CSW_AK47) && g_HasAk[id])
            {
                new vec1[3], vec2[3]
                get_user_origin(id, vec1, 1) // origin; your camera point.
                get_user_origin(id, vec2, 4) // termina; where your bullet goes (4 is cs-only)
               
               
                //BEAMENTPOINTS
                message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
                write_byte (0)    //TE_BEAMENTPOINTS 0
                write_coord(vec1[0])
                write_coord(vec1[1])
                write_coord(vec1[2])
                write_coord(vec2[0])
                write_coord(vec2[1])
                write_coord(vec2[2])
                write_short( m_spriteTexture )
                write_byte(1) // framestart
                write_byte(5) // framerate
                write_byte(2) // life
                write_byte(10) // width
                write_byte(0) // noise
                write_byte( 255 )    // r, g, b
                write_byte( 215 )      // r, g, b
                write_byte( 0 )      // r, g, b
                write_byte(200) // brightness
                write_byte(150) // speed
                message_end()
            }
       
            bullets[id] = clip
        }
       
    }

    public zp_extra_item_selected(player, itemid)
    {
        if ( itemid == g_itemid )
        {
          if (!zp_has_round_started())
          {
            client_print(player, print_chat, "[ZP] Espere o round comecar primeiro", player, "WAIT")
            zp_set_user_ammo_packs(player, zp_get_user_ammo_packs(player) + golden_cost)
            return
          }

            if ( user_has_weapon(player, CSW_AK47) )
            {
                drop_prim(player)
            }
           
            give_item(player, "weapon_ak47")
            give_item(player, "ammo_762nato")
          give_item(player, "ammo_762nato")
          give_item(player, "ammo_762nato")

            client_print(player, print_chat, "[ZP] Voce Comprou AK-47 [Dourada]")
            g_HasAk[player] = true;
        }
    }

    stock drop_prim(id)
    {
        new weapons[32], num
        get_user_weapons(id, weapons, num)
        for (new i = 0; i < num; i++) {
            if (Wep_ak47 & (1<<weapons[i]))
            {
                static wname[32]
                get_weaponname(weapons[i], wname, sizeof wname - 1)
                engclient_cmd(id, "drop", wname)
            }
        }
    }
    /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
    *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1034\\ f0\\ fs16 \n\\ par }
    */

    Os outros eu irei tentar ainda.

    Espero Ter Ajudado
    joao vitor
    joao vitor
    Humano


    Masculino Número de Mensagens : 9
    Ammo Packs : 4241
    Honra : 0
    Data de inscrição : 17/04/2013

    [AJUDA] Alguem tem uma solução pra isso? Empty Re: [AJUDA] Alguem tem uma solução pra isso?

    Mensagem por joao vitor 8/5/2013, 10:44 pm

    Cara muito legal da sua parte, agradeço mesmo sua ajuda...
    Mas, fui copilar aqui e está dando erro, se puder dar uma revisada aí eu agradeço.. Quer ver? Tenta copilar aí que você vai ver o erro.

    O Plugin que trava os itens até o fim da contagem alguem tem? Só falta isso pra eu terminar o Addon...
    [P]erfec[T] [S]cr[@]s[H]
    [P]erfec[T] [S]cr[@]s[H]
    Scripter


    Masculino Número de Mensagens : 564
    Jogador FODA Perfect Scrash entrou na zplague
    Ammo Packs : 4545
    Honra : 177
    Data de inscrição : 04/04/2013

    [AJUDA] Alguem tem uma solução pra isso? Empty Re: [AJUDA] Alguem tem uma solução pra isso?

    Mensagem por [P]erfec[T] [S]cr[@]s[H] 9/5/2013, 5:42 pm

    joao vitor escreveu:Cara muito legal da sua parte, agradeço mesmo sua ajuda...
    Mas, fui copilar aqui e está dando erro, se puder dar uma revisada aí eu agradeço.. Quer ver? Tenta copilar aí que você vai ver o erro.

    O Plugin que trava os itens até o fim da contagem alguem tem? Só falta isso pra eu terminar o Addon...

    Cara eu tentei compilar e de cara deu certo.
    Vô passar o link do já compilado (que eu coloquei para download):

    http://adf.ly/1256340/banner/4shared.com/rar/ELhficKS/zp_extra_golden_ak.html?

    Espero Ter Ajudado !!!!!!!

    Conteúdo patrocinado


    [AJUDA] Alguem tem uma solução pra isso? Empty Re: [AJUDA] Alguem tem uma solução pra isso?

    Mensagem por Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 11:50 am