[ TTT ] Item: Skeleton Gun
#1
[ TTT ] Item: Skeleton Gun

Descripción:
- Item especial utilizado para convertir en esqueleto a la victima emitiendo un sonido de horror y luego de 4 segundos (configurable por variable) la victima logra morir, los segundos fueron agregados para que la victima tenga ese tiempo para reaccionar y localizar al enemigo en ese corto tiempo y así poder vengar su propia muerte puede tratar de avisar quien fue su asesino, que ya después de haber sido atacado con esa arma es inevitable morirÁngel

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

Requerimientos:

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

#define WEAPON_CSWID CSW_DEAGLE
#define WEAPON_NAME "weapon_deagle"
#define MODEL_NAME "skeleton"

new g_SkeletonGung_pMsgScreenFadeg_pMsgScreenShakeg_MaxPlayersg_Attacker[33];
new 
g_szFiles[5][TTT_FILELENGHT], Cvars[7];

public 
plugin_precache()
{
    const 
cantCases 5;
    new 
szTypeFile[15], szPath[29];
    
    for( new 
0cantCasesi++ )
    {
        switch(
i)
        {
            case 

            {
                
szTypeFile "MODEL_V";
                
szPath "models/ttt/v_skeletongun.mdl";
            }
            case 
:
            {
                
szTypeFile "MODEL_P";
                
szPath "models/ttt/p_skeletongun.mdl";    
            }
            case 
:
            {
                
szTypeFile "MODEL_W";
                
szPath "models/ttt/w_skeletongun.mdl";        
            }
            case 
:
            {
                
szTypeFile "SOUND_HORROR";
                
szPath "ttt/horror.wav";        
            }
            case 
:
            {
                
szTypeFile "MODEL_SKELETON";
                
szPath = ("models/player/%s/%s.mdl"MODEL_NAMEMODEL_NAME);        
            }
        }    

        if( !
amx_load_setting_string(TTT_SETTINGSFILE"SKELETON GUN"szTypeFileg_szFiles[i], charsmax(g_szFiles[])) )
        {
            
g_szFiles[i] = szPath;
            
amx_save_setting_string(TTT_SETTINGSFILE"SKELETON 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: Skeleton Gun"TTT_VERSION"SthoNy'");
    
    
Cvars[0]    = my_register_cvar("ttt_skeleton_clip",        "1",    "Skeleton gun clip ammo. (Default: 1)");
    
Cvars[1]    = my_register_cvar("ttt_skeleton_ammo",        "0",    "Skeleton gun backpack ammo. (Default: 0)");
    
Cvars[2]    = my_register_cvar("ttt_skeleton_speed",        "10.0",    "Skeleton gun attack speed delay. (Default: 10.0)");
    
Cvars[3]    = my_register_cvar("ttt_skeleton_reload",    "0.0",    "Skeleton gun reload speed. (Default: 0.0)");
    
Cvars[4]    = my_register_cvar("ttt_skeleton_recoil",    "0.0",    "Skeleton gun recoil. (Default: 0.0)");
    
Cvars[5]    = my_register_cvar("ttt_price_skeleton",        "2",    "Skeleton gun price. (Default: 2)");
    
Cvars[6]    = my_register_cvar("ttt_time_killed""4.0""Skeleton gun time to killed (Default: 4.0)");
    
    
g_MaxPlayers get_maxplayers();
    
g_pMsgScreenFade                                get_user_msgid("ScreenFade");
    
g_pMsgScreenShake                                get_user_msgid("ScreenShake");
}

public 
client_disconnect(idremove_task(id);

public 
ttt_plugin_cfg()    g_SkeletonGun ttt_buymenu_add"Skeleton Gun"get_pcvar_num(Cvars[5]), PC_TRAITOR);

public 
ttt_gamemode(gamemode)
{    
    if(
gamemode == GAME_ENDED || gamemode == GAME_RESTARTING)
    {    
        for( new 
1<= g_MaxPlayersi++ )
        {
            
            
remove_task(i);
            
        }
    }
}
public 
ttt_item_selected(iditemname[], price)
{
    if(
g_SkeletonGun == 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_SkeletonGun;
            
data[STRUCT_CSWA_CSW] = WEAPON_CSWID;
            
data[STRUCT_CSWA_CLIP] = get_pcvar_num(Cvars[0]);
            
data[STRUCT_CSWA_MAXCLIP] = get_pcvar_num(Cvars[0]);
            
data[STRUCT_CSWA_AMMO] = get_pcvar_num(Cvars[1]);
            
data[STRUCT_CSWA_STACKABLE] = true;
            
data[STRUCT_CSWA_SILENCED] = -1;
            
data[STRUCT_CSWA_SPEEDDELAY] = _:get_pcvar_float(Cvars[2]);
            
data[STRUCT_CSWA_DAMAGE] = _:0;
            
data[STRUCT_CSWA_RELOADTIME] = _:get_pcvar_float(Cvars[3]);
            
data[STRUCT_CSWA_RECOIL] = _:get_pcvar_float(Cvars[4]);
            
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 ^4Skeleton Gun!"TTT_TAG);
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
cswa_damage(weapon_idvictimattackerFloat:damage)
{    
    if(
get_weapon_edict(weapon_idREPL_CSWA_ITEMID) == g_SkeletonGun)
    {    
        
client_print_colorvictimprint_team_default"%s Te han disparado con una ^4Skeleton Gun ^1Preparate para ser llevado al ^3INFIERNO^4!"TTT_TAG);
        
        
g_Attacker[victim] = attacker;
        
        
cs_set_player_model(victimMODEL_NAME);
        
        
emit_sound(victimCHAN_AUTOg_szFiles[3], 1.0ATTN_NORM0PITCH_NORM);
        
set_taskget_pcvar_float(Cvars[6]), "Killed"victim);
        
        
Set_user_screenfade(victim85422554100);
        
shake_user_screen(victim);
    }
}
public 
Killed(id)
{
    if( !
is_user_alive(id) || ttt_get_gamemode() == GAME_ENDED || ttt_get_gamemode() == GAME_PREPARING || !is_user_connected(g_Attacker[id]) )
        return 
PLUGIN_HANDLED;
    
    
strip_user_weapons(id);
    
ExecuteHam(Ham_TakeDamageidg_Attacker[id], g_Attacker[id], 150.0DMG_BLAST);
    
remove_task(id);
    
    return 
PLUGIN_HANDLED;
}


public 
Set_user_screenfade(indexrrrgggbbbduracionalpha)
{
    
message_beginindex MSG_ONE_UNRELIABLE MSG_BROADCASTg_pMsgScreenFade_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_pMsgScreenShake, {0,0,0}, index);
    
write_short(1<<14);
    
write_short(1<<14);
    
write_short(1<<14);
    
message_end();


Models y sonido

PD: Es MUY IMPORTANTE utilizar la api Player Models que dejé en los requerimientos ya que utilicé esa api para evitar la caída del servidor con el bug ese de cambiarse de model, Sí piensan utilizar este item tendrán que empezar setear el models con esta api ya que funcionaría mucho mejor Mario

PD2: tengo varios addons por ahí que desde mi punto de vista son buenísimos pero para poder compartirlos tendría que echarles un ojo ya que los hice hace mucho y no creo que los haya hecho de la mejor maneraWhatever


Archivos adjuntos
.sma   Descargar AMXX / ttt_item_skeleton_gun.sma (Tamaño: 5.67 KB / Descargas: 51)
Mis Aportes:

[ TTT ] Item: Target Gun

[ TTT ] Item: Skeleton Gun (New)
[ TTT ] Item: Pipe Bomb
[ TTT ] Item: Inverse Golden
[Imagen: 76561198074954930.png] [Imagen: venezuela.gif]
Pregúntate si lo que estás haciendo hoy te acerca a el lugar en el que quieres estar mañana. Corazón
Responder
#2
Buen plugin, pero ese precache no me convence Whatever
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#3
(21/09/2019, 08:43 PM)kikizon2 escribió: Buen plugin, pero ese precache no me convence Whatever

que es lo que no te convence? me caería bien una sugerencia tuya
Mis Aportes:

[ TTT ] Item: Target Gun

[ TTT ] Item: Skeleton Gun (New)
[ TTT ] Item: Pipe Bomb
[ TTT ] Item: Inverse Golden
[Imagen: 76561198074954930.png] [Imagen: venezuela.gif]
Pregúntate si lo que estás haciendo hoy te acerca a el lugar en el que quieres estar mañana. Corazón
Responder
#4
El loop no me convence no se me hace muy legible, ademas tienes que asignarle un id al task, y removerlo en disconnect para evitar errores.

Lo demás lo veo perfecto bien.
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#5
(22/09/2019, 06:26 AM)kikizon2 escribió: El loop no me convence no se me hace muy legible, ademas tienes que asignarle un id al task, y removerlo en disconnect para evitar errores.

Lo demás lo veo perfecto bien.

Pues si, es muy poco legible pero lo tuve que hacer así ya que lo que e tratado de hacer es optimizar un poco más el mod ya que sí lo viste no está hecho de la mejor forma, claro que no es mucho lo que se optimiza en este item pero es un grano de arena menos pero sí es de dar una versión más legible lo puedo hacer y que lo usen dependiendo de que manera se sientan más cómodo.

Lo de agregarle el id al task se me había olvidado pero cuando esté en mi compu lo hago también, gracias por tus sugerenciasMario
Mis Aportes:

[ TTT ] Item: Target Gun

[ TTT ] Item: Skeleton Gun (New)
[ TTT ] Item: Pipe Bomb
[ TTT ] Item: Inverse Golden
[Imagen: 76561198074954930.png] [Imagen: venezuela.gif]
Pregúntate si lo que estás haciendo hoy te acerca a el lugar en el que quieres estar mañana. Corazón
Responder
#6
Muy buena idea!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)