[TTT] Item: Blinding Gun
#1
Se muy poco de pawn, pero hice el intento y me las arreglé para sacar esto.
Probablemente tenga algunos errores que yo no soy capaz de observar, pero ustedes si. No sean tan duros, pues es la primera vez que publico algoTriste


[TTT] Item para Detectives
  • Congela y cega al jugador victima por una cantidad de segundos, definida mediante cvar.
  • El item no puede ser usado por un jugador que no sea Detective.
  • Tiene una cvar que puede deshabilita la opción de usar el item en contra de otro Detective.
  • Al momento de ser congelado, el jugador obtendrá un glow blanco para que los jugadores identifiquen cuando esté congelado. (En caso de ser traidor, su team lo mirará de color amarillo)

Cabe aclarar, que el código está basado en el item Inverse Golden de Sthony, pues ahorra mucho trabajo el reciclar parte de su código.
Creditos correspondientes a Sthony por usar parte de su codigo
Creditos correspondientes a Hypnotize por correción y supervisión en el código
El plugin no ha sido probado, pues no tengo los medios para hacerlo (En este caso, un servidor con TTT jajaja)

Código PHP:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <cs_weapons_api>
#include <amx_settings_api>
#include <ttt>
 
#define WEAPON_CSWID CSW_DEAGLE
#define WEAPON_NAME "weapon_deagle"
 
/*RECICLÉ PARTE DEL CÓDIGO DE STHONY DEL ITEM INVERSE GOLDEN*/
 
new g_szModels[3][TTT_FILELENGHT];
new 
g_BGun;
new 
bool:g_iBlinded[33];
new 
cvar_weapon_ammocvar_weapon_clipcvar_weapon_pricecvar_weapon_reloadcvar_weapon_recoilcvar_weapon_teamallowcvar_weapon_timeg_MaxPlayers;
new 
g_msgScreenFade;
public 
plugin_precache()
{
    if(!amx_load_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_V"g_szModels[0], charsmax(g_szModels[])))
    {
        g_szModels[0] = "models/ttt/v_bgun.mdl";
        amx_save_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_V"g_szModels[0]);
    }
    precache_model(g_szModels[0]);
  
    
if(!amx_load_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_P"g_szModels[1], charsmax(g_szModels[])))
    {
        g_szModels[1] = "models/ttt/p_bgun.mdl";
        amx_save_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_P"g_szModels[1]);
    }
    precache_model(g_szModels[1]);
  
    
if(!amx_load_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_W"g_szModels[2], charsmax(g_szModels[])))
    {
        g_szModels[2] = "models/ttt/w_bgun.mdl";
        amx_save_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_W"g_szModels[2]);
    }
    precache_model(g_szModels[2]);
}
 
public 
plugin_init()
{
    register_plugin("[TTT] Item: Blinding Gun"TTT_VERSION"GabsHp & Sthony");
  
    register_forward
(FM_AddToFullPack"AddToFullPackPost",1);
  
    cvar_weapon_clip    
my_register_cvar("ttt_bgun_clip",        "1",    "Blinding Gun clip(s). (Default: 2)");
    cvar_weapon_ammo    my_register_cvar("ttt_bgun_ammo",        "0",    "Blinding Gun ammo (Default: 0)");
    cvar_weapon_reload    my_register_cvar("ttt_bgun_reload",    "0.0",    "Blinding Gun reload speed. (Default: 0.0)");
    cvar_weapon_recoil    my_register_cvar("ttt_bgun_recoil",    "0.0",    "Blinding Gun recoil. (Default: 0.0)");
    cvar_weapon_price    my_register_cvar("ttt_bgun_price",    "2",    "Blinding Gun price. (Default: 2)");
    cvar_weapon_teamallow    my_register_cvar("ttt_bgun_teamallow",    "0",    "Permitir el uso contra compañeros");
    cvar_weapon_time    my_register_cvar("ttt_bgun_duration",    "3",    "Tiempo que durará cegado y congelado");
    g_MaxPlayers get_maxplayers();
    g_msgScreenFade get_user_msgid"ScreenFade" );
}
 
public 
ttt_plugin_cfg()
{
    g_BGun ttt_buymenu_add"Blinding Gun"get_pcvar_num(cvar_weapon_price), PC_DETECTIVE);
}
 
public 
ttt_gamemode(gamemode)
{
    
    
if(gamemode == GAME_ENDED || gamemode == GAME_RESTARTING)
    {    
        
for( new 1<= g_MaxPlayersi++ )
        {
            if(g_iBlinded[i])
            {
                g_iBlinded[i] = false;
            }
        }
    }
}
 
public 
ttt_item_selected(iditemname[], price)
{
    
    
if(g_BGun == item)
    {    
  
            
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_BGun;
                data[STRUCT_CSWA_CSW] = WEAPON_CSWID;
                data[STRUCT_CSWA_CLIP] = get_pcvar_num(cvar_weapon_clip);
                data[STRUCT_CSWA_MAXCLIP] = get_pcvar_num(cvar_weapon_clip);
                data[STRUCT_CSWA_AMMO] = get_pcvar_num(cvar_weapon_ammo);
                data[STRUCT_CSWA_STACKABLE] = true;
                data[STRUCT_CSWA_SILENCED] = -1;
                data[STRUCT_CSWA_DAMAGE] = 1.0;
                data[STRUCT_CSWA_RELOADTIME] = _:get_pcvar_float(cvar_weapon_reload);
                data[STRUCT_CSWA_RECOIL] = _:get_pcvar_float(cvar_weapon_recoil);
                data[STRUCT_CSWA_MODEL_V] = g_szModels[0];
                data[STRUCT_CSWA_MODEL_P] = g_szModels[1];
                data[STRUCT_CSWA_MODEL_W] = g_szModels[2];
            }
          
            cswa_give_specific
(iddata);
          
            client_print_color
(idprint_team_default"%s Compraste: !g'Blinding Gun'"TTT_TAG);
            return PLUGIN_HANDLED;
  
 
    
}
    return PLUGIN_CONTINUE;
}
 
public 
cswa_damage(weapon_idvictimattackerFloat:damage)
{
    if(get_weapon_edict(weapon_idREPL_CSWA_ITEMID) == g_BGun)
    {
 
        if(ttt_get_playerstate(attacker) != PC_DETECTIVE ){
          
            
new szAttackerName[32]; get_user_name(attackerszAttackerName31);
            client_print_color(attackerprint_team_default"%s !nEsta es un arma exclusiva de detectives, evita ser baneado!"TTT_TAG);
            return HAM_IGNORED;
        }
        //FUNCION DE CONGELAR Y CEGAR AL ATACADO ...
        if(ttt_get_playerstate(victim) == PC_DETECTIVE && get_pcvar_num(cvar_weapon_teamallow)!=1)
        {
            client_print_color(attackerprint_team_default"%s !nHas sido castigado por intentar usar el arma en contra de tu team!"TTT_TAG);
            FreezePlayer(attacker);
            return HAM_IGNORED;
        }
        FreezePlayer(victim);
        client_print_color(attackerprint_team_default"%s !gHas sido blindeado por un detective!"TTT_TAG);
 
    }
    return HAM_IGNORED;
}
 
public 
FreezePlayer( const iId)
{
    if(!is_user_connected(iId))
        return;
 
    entity_set_floatiIdEV_FL_maxspeed1.0 );
    entity_set_vectoriIdEV_VEC_velocityFloat:{ 0.00.00.0 } );
    g_iBlinded[iId]=true;
    set_screenfade(iIdget_pcvar_num(cvar_weapon_time), 255);
    set_task(Float:(get_pcvar_num(cvar_weapon_time)), "UnFreezePlayer"iId);
}
 
public 
UnFreezePlayer(const iId)
{
    if(!is_user_connected(iId))
        return;
 
    ExecuteHamBHam_CS_Player_ResetMaxSpeediId );
    g_iBlinded[iId]=false;
}
 
 
public 
AddToFullPackPost(es_handleeenthosthostflagsplayerpSet)
{
    if (!player)
        return FMRES_IGNORED;
 
 
    if (g_iBlinded[ent])
    {
        set_es(es_handleES_RenderFxkRenderFxGlowShell);
 
        if(ttt_get_playerstate(host) == PC_TRAITOR && ttt_get_playerstate(ent) == PC_TRAITOR)
 {
            //SI EL ATACADO ES TRAIDOR, SETEA UN COLOR AMARILLO QUE SOLO VERÁN LOS TRAIDORES
            set_es es_handleES_RenderColor, { 255255} );
  }
        else
 {
            //SI EL HOST ES INOCENTE O DETECTIVE, EL GLOW LO VERÁN BLANCO BLANCO
            set_es es_handleES_RenderColor, { 255255255 } );
  }
    }
    return FMRES_IGNORED;
}
stock set_screenfadeidiDuracioniAlpha )
{
    message_beginid MSG_ONE_UNRELIABLE MSG_BROADCASTg_msgScreenFade_id );
    write_shortiDuracion 4096 );
    write_shortiDuracion 4096 );
    write_short0x0000 );
    write_byte(255); // Color 1
    write_byte(255); // Color 2
    write_byte(255); // Color 3
    write_byteiAlpha );
    message_end( );
  

Responder
#2
buen aporte negro

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

#define WEAPON_CSWID CSW_DEAGLE
#define WEAPON_NAME "weapon_deagle"

/*RECICLÉ PARTE DEL CÓDIGO DE STHONY DEL ITEM INVERSE GOLDEN*/

new g_szModels[3][TTT_FILELENGHT];
new 
g_BGun;
new 
bool:g_iBlinded[33];
new 
cvar_weapon_ammocvar_weapon_clipcvar_weapon_pricecvar_weapon_reloadcvar_weapon_recoilcvar_weapon_teamallowcvar_weapon_timeg_MaxPlayers;
new 
g_msgScreenFade;
public 
plugin_precache()
{
    if(!
amx_load_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_V"g_szModels[0], charsmax(g_szModels[])))
    {
        
g_szModels[0] = "models/ttt/v_bgun.mdl";
        
amx_save_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_V"g_szModels[0]);
    }
    
precache_model(g_szModels[0]);
    
    if(!
amx_load_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_P"g_szModels[1], charsmax(g_szModels[])))
    {
        
g_szModels[1] = "models/ttt/p_bgun.mdl";
        
amx_save_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_P"g_szModels[1]);
    }
    
precache_model(g_szModels[1]);
    
    if(!
amx_load_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_W"g_szModels[2], charsmax(g_szModels[])))
    {
        
g_szModels[2] = "models/ttt/w_bgun.mdl";
        
amx_save_setting_string(TTT_SETTINGSFILE"BLINDING GUN""MODEL_W"g_szModels[2]);
    }
    
precache_model(g_szModels[2]);
}

public 
plugin_init()
{
    
register_plugin("[TTT] Item: Blinding Gun"TTT_VERSION"GabsHp & Sthony");
    
    
register_forward(FM_AddToFullPack"AddToFullPackPost",1);
    
    
cvar_weapon_clip    my_register_cvar("ttt_bgun_clip",        "1",    "Blinding Gun clip(s). (Default: 2)");
    
cvar_weapon_ammo    my_register_cvar("ttt_bgun_ammo",        "0",    "Blinding Gun ammo (Default: 0)");
    
cvar_weapon_reload    my_register_cvar("ttt_bgun_reload",    "0.0",    "Blinding Gun reload speed. (Default: 0.0)");
    
cvar_weapon_recoil    my_register_cvar("ttt_bgun_recoil",    "0.0",    "Blinding Gun recoil. (Default: 0.0)");
    
cvar_weapon_price    my_register_cvar("ttt_bgun_price",    "2",    "Blinding Gun price. (Default: 2)");
    
cvar_weapon_teamallow    my_register_cvar("ttt_bgun_teamallow",    "0",    "Permitir el uso contra compañeros");
    
cvar_weapon_time    my_register_cvar("ttt_bgun_duration",    "3",    "Tiempo que durará cegado y congelado");
    
g_MaxPlayers get_maxplayers();
    
g_msgScreenFade get_user_msgid"ScreenFade" );
}

public 
ttt_plugin_cfg()
{
    
g_BGun ttt_buymenu_add"Blinding Gun"get_pcvar_num(cvar_weapon_price), PC_DETECTIVE);
}

public 
ttt_gamemode(gamemode)
{    
    if(
gamemode == GAME_ENDED || gamemode == GAME_RESTARTING)
    {    
        for( new 
1<= g_MaxPlayersi++ )
        {
            if(
g_iBlinded[i])
            {
                
g_iBlinded[i] = false;
            }
        }
    }
}

public 
ttt_item_selected(iditemname[], price)
{    
    if(
g_BGun == item)
    {    
    
            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_BGun;
                
data[STRUCT_CSWA_CSW] = WEAPON_CSWID;
                
data[STRUCT_CSWA_CLIP] = get_pcvar_num(cvar_weapon_clip);
                
data[STRUCT_CSWA_MAXCLIP] = get_pcvar_num(cvar_weapon_clip);
                
data[STRUCT_CSWA_AMMO] = get_pcvar_num(cvar_weapon_ammo);
                
data[STRUCT_CSWA_STACKABLE] = true;
                
data[STRUCT_CSWA_SILENCED] = -1;
                
data[STRUCT_CSWA_DAMAGE] = 1.0;
                
data[STRUCT_CSWA_RELOADTIME] = _:get_pcvar_float(cvar_weapon_reload);
                
data[STRUCT_CSWA_RECOIL] = _:get_pcvar_float(cvar_weapon_recoil);
                
data[STRUCT_CSWA_MODEL_V] = g_szModels[0];
                
data[STRUCT_CSWA_MODEL_P] = g_szModels[1];
                
data[STRUCT_CSWA_MODEL_W] = g_szModels[2];
            }
            
            
cswa_give_specific(iddata);
            
            
client_print_color(idprint_team_default"%s Compraste: !g'Blinding Gun'"TTT_TAG);
            return 
PLUGIN_HANDLED;
    

    }
    return 
PLUGIN_CONTINUE;
}

public 
cswa_damage(weapon_idvictimattackerFloat:damage)
{
    if(
get_weapon_edict(weapon_idREPL_CSWA_ITEMID) == g_BGun)
    {

        if(
ttt_get_playerstate(attacker) != PC_DETECTIVE ){
            
            new 
szAttackerName[32]; get_user_name(attackerszAttackerName31);
            
client_print_color(attackerprint_team_default"%s !nEsta es un arma exclusiva de detectives, evita ser baneado!"TTT_TAG);
            return 
HAM_IGNORED;
        }
        
//FUNCION DE CONGELAR Y CEGAR AL ATACADO ...
        
if(ttt_get_playerstate(victim) == PC_DETECTIVE && get_pcvar_num(cvar_weapon_teamallow)!=1)
        {
            
client_print_color(attackerprint_team_default"%s !nHas sido castigado por intentar usar el arma en contra de tu team!"TTT_TAG);
            
FreezePlayer(attacker);
            return 
HAM_IGNORED;
        }
        
FreezePlayer(victim);
        
client_print_color(attackerprint_team_default"%s !gHas sido blindeado por un detective!"TTT_TAG);

    }
    return 
HAM_IGNORED;
}

public 
FreezePlayer( const iId)
{
    if(!
is_user_connected(iId)) 
        return;

    
entity_set_floatiIdEV_FL_maxspeed1.0 );
    
entity_set_vectoriIdEV_VEC_velocityFloat:{ 0.00.00.0 } );
    
g_iBlinded[iId]=true;
    
set_screenfade(iIdget_pcvar_num(cvar_weapon_time), 255);
    
set_task(Float:(get_pcvar_num(cvar_weapon_time)), "UnFreezePlayer"iId);
}

public 
UnFreezePlayer(const iId)
{
    if(!
is_user_connected(iId)) 
        return;

    
ExecuteHamBHam_CS_Player_ResetMaxSpeediId );
    
g_iBlinded[iId]=false;
}


public 
AddToFullPackPost(es_handleeenthosthostflagsplayerpSet)
{
    if (!
player)
        return 
FMRES_IGNORED;


    if (
g_iBlinded[ent])
    {
        
set_es(es_handleES_RenderFxkRenderFxGlowShell);

        if(
ttt_get_playerstate(host) == PC_TRAITOR && ttt_get_playerstate(ent) == PC_TRAITOR)
 {
            
//SI EL ATACADO ES TRAIDOR, SETEA UN COLOR AMARILLO QUE SOLO VERÁN LOS TRAIDORES
            
set_es es_handleES_RenderColor, { 255255} );
   }
        else
 {
            
//SI EL HOST ES INOCENTE O DETECTIVE, EL GLOW LO VERÁN BLANCO BLANCO
            
set_es es_handleES_RenderColor, { 255255255 } );
   }
    }
    return 
FMRES_IGNORED;
}
stock set_screenfadeidiDuracioniAlpha )
{
    
message_beginid MSG_ONE_UNRELIABLE MSG_BROADCASTg_msgScreenFade_id );
    
write_shortiDuracion 4096 );
    
write_shortiDuracion 4096 );
    
write_short0x0000 );
    
write_byte(255); // Color 1
    
write_byte(255); // Color 2
    
write_byte(255); // Color 3
    
write_byteiAlpha );
    
message_end( );
    


ahí te hice que te compilara xd
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#3
(08/07/2020, 03:24 AM)Hypnotize escribió: buen aporte negro

Gracias n3gr0
Responder
#4
Buen aporte, lo voy a probar mas tarde Gran sonrisa
_______________________________________________
Cada día aprendiendo un poco mas, de eso se trata la vida
_______________________________________________

[Imagen: averahoracapo.jpg]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)