Welcome Soldier.



[TTT] Item: Target Gun v1.2

SthoNy' Sin conexión
User
#1
Pues, es la misma target gun con que postee anteriormente (No aquí) pero con un codigo un poco mejorado y optimizado, además de una limite de compras de Target's definido por cvar (ttt_max_targets).

Espero que puedan disfrutar de ella, es super más recomendable ésta versión obviamente.

Code:
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <engine>
#include <cs_weapons_api>
#include <fun>
#include <amx_settings_api>
#include <ttt>

#define WEAPON_CSWID CSW_DEAGLE
#define WEAPON_NAME "weapon_deagle"

new g_TargetGung_Glowing[33], g_Attacker[33], g_Count[33], g_pMsgScreeFadeg_pMsgScreeShakeg_MaxPlayers;
new 
g_szFiles[4][TTT_FILELENGHT], Cvars[10];

public 
plugin_precache()
{
    const 
cantCases 4;
    new 
szTypeFile[11], szPath[28];
 
   
    
for( new 0cantCasesi++ )
    {
        switch(
i)
        {
            case 

            {
                
szTypeFile "MODEL_V";
                
szPath "models/ttt/v_targetgun.mdl";
            }
            case 
:
            {
                
szTypeFile "MODEL_P";
                
szPath "models/ttt/p_targetgun.mdl"   
            
}
            case 
:
            {
                
szTypeFile "MODEL_W";
                
szPath "models/ttt/w_targetgun.mdl"       
            
}
            case 
:
            {
                
szTypeFile "SOUND_BEEP";
                
szPath "ttt/targetgun_beep.wav"       
            
}
        } 
   

        
if( !amx_load_setting_string(TTT_SETTINGSFILE"TARGET GUN"szTypeFileg_szFiles[i], charsmax(g_szFiles[])) )
        {
            
g_szFiles[i] = szPath;
            
amx_save_setting_string(TTT_SETTINGSFILE"TARGET GUN"szTypeFileg_szFiles[i]);
        }
 
       
        
if( szTypeFile[0] == 'M')
            
precache_model(g_szFiles[i]);   
        
else
            
precache_sound(g_szFiles[i]);
    }


public 
plugin_init()
{
    
register_plugin("[TTT] Item: Target Gun"TTT_VERSION"SthoNy'");
 
   
    Cvars
[0   my_register_cvar("ttt_target_damage"   "300.0"   "Target gun explosion damage. (Default: 300.0)");
    
Cvars[1   my_register_cvar("ttt_target_radius"   "420.0"   "Target gun radius. (Default: 420.0)");
    
Cvars[2   my_register_cvar("ttt_target_clip"       "1"   "Target gun clip ammo. (Default: 1)");
    
Cvars[3   my_register_cvar("ttt_target_ammo"       "0"   "Target gun backpack ammo. (Default: 0)");
    
Cvars[4   my_register_cvar("ttt_target_speed"       "10.0"   "Target gun attack speed delay. (Default: 10.0)");
    
Cvars[5   my_register_cvar("ttt_target_reload"   "0.0"   "Target gun reload speed. (Default: 0.0)");
    
Cvars[6   my_register_cvar("ttt_target_recoil"   "0.0"   "Target gun recoil. (Default: 0.0)");
    
Cvars[7   my_register_cvar("ttt_price_target"       "2"   "Target gun price. (Default: 3)");
    
Cvars[8   my_register_cvar("ttt_max_targets""1""Maximum Target Gun per round. (Default: 1)");
    
Cvars[9   my_register_cvar("ttt_time_explode""3.0""Target gun time to explode (Default: 3.0)");
 
   
    g_MaxPlayers 
get_maxplayers();
    
g_pMsgScreeFade                                get_user_msgid("ScreenFade");
    
g_pMsgScreeShake                                get_user_msgid("ScreenShake");
}

public 
client_disconnect(idremove_task(id);

public 
ttt_plugin_cfg() g_TargetGun ttt_buymenu_add"Target Gun"get_pcvar_num(Cvars[7]), PC_TRAITOR);

public 
ttt_gamemode(gamemode)
   
    
if(gamemode == GAME_ENDED || gamemode == GAME_RESTARTING || gamemode == GAME_PREPARING)
    { 
   
        
for( new 1<= g_MaxPlayersi++ )
        {
            if(
g_Glowing[i])
            {
                
g_Glowing[i] = false;
                
set_user_rendering(i);
            }
            
remove_task(i);
            
g_Count[i] = 0;
        }
    }
}
public 
ttt_item_selected(iditemname[], price)
{
    if(
g_TargetGun == item)
    {
        if(
g_Count[id] < get_pcvar_num(Cvars[8]))
        {
            if(
user_has_weapon(idWEAPON_CSWID))
                
engclient_cmd(id"drop"WEAPON_NAME);
 
       
            
static data[STOREABLE_STRUCTURE];
            if(!
data[STRUCT_CSWA_CSW])
            {
                
data[STRUCT_CSWA_ITEMID] = g_TargetGun;
                
data[STRUCT_CSWA_CSW] = WEAPON_CSWID;
                
data[STRUCT_CSWA_CLIP] = get_pcvar_num(Cvars[2]);
                
data[STRUCT_CSWA_MAXCLIP] = get_pcvar_num(Cvars[2]);
                
data[STRUCT_CSWA_AMMO] = get_pcvar_num(Cvars[3]);
                
data[STRUCT_CSWA_STACKABLE] = true;
                
data[STRUCT_CSWA_SILENCED] = -1;
                
data[STRUCT_CSWA_SPEEDDELAY] = _:get_pcvar_float(Cvars[4]);
                
data[STRUCT_CSWA_DAMAGE] = _:0;
                
data[STRUCT_CSWA_RELOADTIME] = _:get_pcvar_float(Cvars[5]);
                
data[STRUCT_CSWA_RECOIL] = _:get_pcvar_float(Cvars[6]);
                
data[STRUCT_CSWA_MODEL_V] = g_szFiles[0];
                
data[STRUCT_CSWA_MODEL_P] = g_szFiles[1];
                
data[STRUCT_CSWA_MODEL_W] = g_szFiles[2];
            }
            
cswa_give_specific(iddata);
 
       
            client_print_color
(idprint_team_default"%s Compraste una !gTarget Gun!"TTT_TAG);
            
g_Count[id]++;
        
            return 
PLUGIN_HANDLED;
        }
        else
        {
            
client_print_color(idprint_team_default"%s Limite maximo de !gTarget Guns !nalcanzado !g(!t%d!n por ronda!g)"TTT_TAGget_pcvar_num(Cvars[8]));
        }
    }
    return 
PLUGIN_CONTINUE;
}

public 
cswa_damage(weapon_idvictimattackerFloat:damage)
   
    
if(get_weapon_edict(weapon_idREPL_CSWA_ITEMID) == g_TargetGun)
    {
        
client_print_colorvictimprint_team_default"%s Han introducido un !tProyectil Explosivo !nen ti, !gEXPLOTARAS!"TTT_TAG);
 
       
        g_Glowing
[victim] = true;
        
g_Attacker[victim] = attacker;
 
       
        set_user_rendering
(victimkRenderFxGlowShell25500kRenderNormal30);
        
emit_sound(victimCHAN_AUTOg_szFiles[3], 1.0ATTN_NORM0PITCH_NORM);
        
set_taskget_pcvar_float(Cvars[9]), "targetgun_Explode"victim); 
        
Set_user_screenfade(victim255002100);
        
shake_user_screen(victim);
    }
}
public 
targetgun_Explode(id)
{
    
    if( !
is_user_alive(id) || ttt_get_gamemode() != GAME_STARTED || !is_user_connected(g_Attacker[id]) )
    {
        
remove_task(id);
        return 
PLUGIN_HANDLED;
    }
    
    
strip_user_weapons(id);
    
Explode(id);
    
CreateExplosion(id);
    
remove_task(id);
 
   
    
return PLUGIN_HANDLED;
}

CreateExplosion(id)
{
    static 
Float:origin[3];
    
entity_get_vector(idEV_VEC_originorigin);

    new 
victim = -1Float:damage;
    new 
Float:radius get_pcvar_float(Cvars[1]);
    new 
Float:dmg get_pcvar_float(Cvars[0]);

    while((
victim find_ent_in_sphere(victimoriginradius)) != 0)
    {
        if(
is_valid_ent(victim) && entity_get_float(victimEV_FL_takedamage) != DAMAGE_NO)
        {
            
damage = (dmg/radius)*(radius entity_range(idvictim));
 
       
            
if(damage 0.0 && is_user_alive(victim))
            {
                
ttt_set_playerdata(victimPD_KILLEDBYITEMg_TargetGun);
                
ExecuteHam(Ham_TakeDamagevictimg_Attacker[id], g_Attacker[id], damageDMG_BLAST);
                
entity_set_vector(victimEV_VEC_velocityFloat:{0.00.00.0});
            }
        }
    }
    
ttt_set_playerdata(idPD_KILLEDBYITEMg_TargetGun);
    
ExecuteHam(Ham_TakeDamageidg_Attacker[id], g_Attacker[id], dmgDMG_BLAST);
}

Explode(id)
{
 
   static origin[3];
 
   get_user_origin(idorigin0);

 
   message_begin(MSG_BROADCASTSVC_TEMPENTITY);
 
   write_byte(TE_TAREXPLOSION);
 
   write_coord(origin[0]);
 
   write_coord(origin[1]);
 
   write_coord(origin[2]);
 
   message_end();
}
public 
Set_user_screenfade(indexrrrgggbbbduracionalpha)
{
 
   message_beginindex MSG_ONE_UNRELIABLE MSG_BROADCASTg_pMsgScreeFade_index );
 
   write_shortduracion 4096 );
 
   write_shortduracion 4096 );
 
   write_short0x0000 );
 
   write_byterrr ); 
 
   write_byteggg );
 
   write_bytebbb ); 
 
   write_bytealpha );
 
   message_end( );    
}
stock shake_user_screen(index)
{
 
   message_begin(MSG_ONEg_pMsgScreeShake, {0,0,0}, index);
 
   write_short(1<<14);
 
   write_short(1<<14);
 
   write_short(1<<14);
 
   message_end();

[+] 1 user says Thank You to SthoNy' for this post
Responder





Usuarios navegando en este tema:
1 invitado(s)



Sobre M X E M E X I C O

Comunidad MxE © 2020 - La mejorar comunidad de Counter Strike 1.6 .