[TTT] Model Detective
#1
[TTT] Model Player Detective


Informacion:
► Este plugin viene por default en el Trouble In Terrorist Town o mejor dicho Mata al Traidor, lo unico que hice es agregarle el model al Detective, lo quiero hacer publico ya que no lo uso y lo tengo ahi tirado nomas, a algunos le servirá a otros no.

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

#define LINUX_WEAPON_OFF            4
#define m_flNextPrimaryAttack        46
#define m_flNextSecondaryAttack        47
#define m_flNextHudTextArgs            198

new g_szCrowbarModel[2][TTT_FILELENGHT];
new 
g_szGrenadeModel[3][TTT_FILELENGHT];
new const 
g_szCrowbarSound[][] = {"weapons/cbar_hitbod2.wav""weapons/cbar_hitbod1.wav""weapons/bullet_hit2.wav",  "weapons/cbar_miss1.wav"};
new const 
g_szHeadShotSound[][] = {"player/headshot1.wav""player/headshot2.wav""player/headshot3.wav"};
new 
g_szPlayerModel[32], g_szPlayerModelDT[32], g_iKnifeID = -1;

public 
plugin_precache()
{
    
// PLAYER
    
if(!amx_load_setting_string(TTT_SETTINGSFILE"Player model""MODEL"g_szPlayerModelcharsmax(g_szPlayerModel)))
    {
        
g_szPlayerModel "terror";
        
amx_save_setting_string(TTT_SETTINGSFILE"Player model""MODEL"g_szPlayerModel);
    }

    new 
model[TTT_FILELENGHT];
    
formatex(modelcharsmax(model), "models/player/%s/%s.mdl"g_szPlayerModelg_szPlayerModel);
    
precache_model(model);
    
// PLAYER DT

    
if(!amx_load_setting_string(TTT_SETTINGSFILE"Player model DT""MODELDT"g_szPlayerModelDTcharsmax(g_szPlayerModelDT)))
    {
        
g_szPlayerModelDT "detective";
        
amx_save_setting_string(TTT_SETTINGSFILE"Player model DT""MODELDT"g_szPlayerModelDT);
    }

    new 
modeldt[TTT_FILELENGHT];
    
formatex(modeldtcharsmax(modeldt), "models/player/%s/%s.mdl"g_szPlayerModelDTg_szPlayerModelDT);
    
precache_model(modeldt);

    
// CROWBAR
    
if(!amx_load_setting_string(TTT_SETTINGSFILE"Crowbar""MODEL_V"g_szCrowbarModel[0], charsmax(g_szCrowbarModel[])))
    {
        
g_szCrowbarModel[0] = "models/ttt/v_crowbar.mdl";
        
amx_save_setting_string(TTT_SETTINGSFILE"Crowbar""MODEL_V"g_szCrowbarModel[0]);
    }
    
precache_model(g_szCrowbarModel[0]);

    if(!
amx_load_setting_string(TTT_SETTINGSFILE"Crowbar""MODEL_P"g_szCrowbarModel[1], charsmax(g_szCrowbarModel[])))
    {
        
g_szCrowbarModel[1] = "models/ttt/p_crowbar.mdl";
        
amx_save_setting_string(TTT_SETTINGSFILE"Crowbar""MODEL_P"g_szCrowbarModel[1]);
    }
    
precache_model(g_szCrowbarModel[1]);
// END

// GRENADE
    
if(!amx_load_setting_string(TTT_SETTINGSFILE"Grenade""MODEL_V"g_szGrenadeModel[0], charsmax(g_szGrenadeModel[])))
    {
        
g_szGrenadeModel[0] = "models/ttt/v_hegrenade.mdl";
        
amx_save_setting_string(TTT_SETTINGSFILE"Grenade""MODEL_V"g_szGrenadeModel[0]);
    }
    
precache_model(g_szGrenadeModel[0]);

    if(!
amx_load_setting_string(TTT_SETTINGSFILE"Grenade""MODEL_P"g_szGrenadeModel[1], charsmax(g_szGrenadeModel[])))
    {
        
g_szGrenadeModel[1] = "models/ttt/p_hegrenade.mdl";
        
amx_save_setting_string(TTT_SETTINGSFILE"Grenade""MODEL_P"g_szGrenadeModel[1]);
    }
    
precache_model(g_szGrenadeModel[1]);

    if(!
amx_load_setting_string(TTT_SETTINGSFILE"Grenade""MODEL_W"g_szGrenadeModel[2], charsmax(g_szGrenadeModel[])))
    {
        
g_szGrenadeModel[2] = "models/ttt/w_hegrenade.mdl";
        
amx_save_setting_string(TTT_SETTINGSFILE"Grenade""MODEL_W"g_szGrenadeModel[2]);
    }
    
precache_model(g_szGrenadeModel[2]);
// END

    
new i;
    for(
0<= charsmax(g_szCrowbarSound); i++)
        
precache_sound(g_szCrowbarSound[i]);

    for(
0<= charsmax(g_szHeadShotSound); i++)
        
precache_sound(g_szHeadShotSound[i]);
}

public 
plugin_init()
{
    
register_plugin("[TTT] Replacements"TTT_VERSIONTTT_AUTHOR);

    new const 
g_szBlockSet[][] =
    {
        
"BombDrop",
        
"BombPickup",
        
"DeathMsg",
        
"ScoreInfo",
        
"Radar",
        
"Money"
    
};

    new const 
g_szMessageBlock[][] =
    {
        
"ScoreAttrib",
        
"TextMsg",
        
"SendAudio",
        
"Scenario",
        
"StatusIcon"
    
};
    new 
i;
    for(
0<= charsmax(g_szBlockSet); i++)
        
set_msg_block(get_user_msgid(g_szBlockSet[i]), BLOCK_SET);

    for(
0<= charsmax(g_szMessageBlock); i++)
        
register_message(get_user_msgid(g_szMessageBlock[i]), "Block_Messages");

    
register_message(get_user_msgid("HudTextArgs"), "Block_HudTextArgs");

    
register_forward(FM_EmitSound"Forward_EmitSound_pre"0);
    
register_forward(FM_GetGameDescription"Forward_GetGameDescription_pre"0);

    
RegisterHamPlayer(Ham_Spawn"Ham_Spawn_post"1);
    
RegisterHam(Ham_Item_Deploy"weapon_knife""Ham_Knife_Deploy_post"1);
    
RegisterHam(Ham_Item_Deploy"weapon_hegrenade""Ham_He_Deploy_post"1);

    
register_clcmd("drop""clcmd_drop");
}

public 
clcmd_drop(id)
{
    if(
get_user_weapon(id) == CSW_C4)
        return 
PLUGIN_HANDLED;

    return 
PLUGIN_CONTINUE;
}

public 
cswa_killed(entvictimkiller)
{
    
ttt_set_playerdata(victimPD_KILLEDBYITEMget_weapon_edict(entREPL_CSWA_ITEMID));
}

public 
grenade_throw(identnade)
{
    if(
nade == CSW_HEGRENADE && is_user_alive(id))
    {
        if(
entity_get_float(entEV_FL_dmgtime) != 0.0)
            
entity_set_model(entg_szGrenadeModel[2]);
    }
}

public 
Block_Messages(msgiddestid)
{
    if(
get_msg_args() > 1)
    {
        static 
message[128];
        if(
get_msg_args() == 5)
            
get_msg_arg_string(5messagecharsmax(message));

        if(
equal(message"#Fire_in_the_hole"))
            return 
PLUGIN_HANDLED;

        
get_msg_arg_string(2messagecharsmax(message));
        if(
equal(message"%!MRAD_BOMBPL") || equal(message"%!MRAD_BOMBDEF") || equal(message"%!MRAD_terwin") || equal(message"%!MRAD_ctwin") || equal(message"%!MRAD_FIREINHOLE"))
            return 
PLUGIN_HANDLED;

        if(
equal(message"#Killed_Teammate") || equal(message"#Game_teammate_kills") || equal(message"#Game_teammate_attack") || equal(message"#C4_Plant_At_Bomb_Spot"))
            return 
PLUGIN_HANDLED;

        if(
equal(message"#Bomb_Planted") || equal(message"#Game_bomb_drop") || equal(message"#Game_bomb_pickup") || equal(message"#Got_bomb") || equal(message"#C4_Plant_Must_Be_On_Ground"))
            return 
PLUGIN_HANDLED;
    }

    return 
PLUGIN_CONTINUE;
}

public 
Block_HudTextArgs(msgiddestid)
{
    
set_pdata_float(idm_flNextHudTextArgs0.0);    
    return 
PLUGIN_HANDLED;
}

public 
Forward_GetGameDescription_pre()
{
    
forward_return(FMV_STRING"Trouble in Terrorist Town");
    return 
FMRES_SUPERCEDE;
}

public 
Forward_EmitSound_pre(idchannelsample[])
{
    if(!
is_user_connected(id))
        return 
FMRES_IGNORED;

    if(
equal(sample"player/bhit_helmet-1.wav"))
    {
        
emit_sound(idCHAN_BODYg_szHeadShotSound[random_num(02)], 1.0ATTN_NORM0PITCH_NORM);
        return 
FMRES_SUPERCEDE;
    }

    if((
equal(sample"player/die"10) || equal(sample"player/death6.wav")) && !is_user_alive(id) && ttt_get_playerdata(idPD_KILLEDBYITEM) > -1)
        return 
FMRES_SUPERCEDE;

    if(
g_iKnifeID == -1)
    {
        new 
name[TTT_ITEMLENGHT];
        
formatex(namecharsmax(name), "%L"LANG_SERVER"TTT_ITEM_ID11");
        
g_iKnifeID ttt_get_item_id(name);
    }

    if(
equal(sample"weapons/knife_"14) && ttt_get_playerdata(idPD_HOLDINGITEM) != g_iKnifeID)
    {
        switch(
sample[17])
        {
            case(
'b'): emit_sound(idCHAN_WEAPONg_szCrowbarSound[0], 1.0ATTN_NORM0PITCH_NORM);
            case(
'w'): emit_sound(idCHAN_WEAPONg_szCrowbarSound[1], 1.0ATTN_NORM0PITCH_LOW);
            case(
's'): emit_sound(idCHAN_WEAPONg_szCrowbarSound[3], 1.0ATTN_NORM0PITCH_NORM);
            case(
'1''2'): emit_sound(idCHAN_WEAPONg_szCrowbarSound[2], random_float(0.51.0), ATTN_NORM0PITCH_NORM);
        }
        return 
FMRES_SUPERCEDE;
    }

    return 
FMRES_IGNORED;
}

public 
Ham_Spawn_post(id)
{
    if(
is_user_alive(id))
    {
        
// CAUSES NAME CHANGE MESSAGE TO DISAPPEAR, WTF?
        
cs_reset_user_model(id);
        
cs_set_user_model(idg_szPlayerModel);
        static 
model[20];
        
cs_get_user_model(idmodelcharsmax(model));

        if(!
equal(modelg_szPlayerModel))
            
cs_set_user_model(idg_szPlayerModel);
            
        
set_task(get_cvar_float("ttt_preparation_time")+1.0"check_model"id); // Para cuando se elijan los Traidores y Detectives
        
    
}
}

public 
check_model(id)
{
    if(
is_user_alive(id) && is_user_connected(id))
    {
        if(
ttt_get_playerstate(id) != PC_DETECTIVE) return;

        static 
modeldt[20];
        
cs_get_user_model(idmodeldtcharsmax(modeldt));
    
        if(!
equal(modeldtg_szPlayerModelDT))
            
cs_set_user_model(idg_szPlayerModelDT);
    }
}

public 
Ham_Knife_Deploy_post(ent)
{
    new 
id get_weapon_owner(ent);
    if(
is_user_alive(id))
    {
        
entity_set_string(idEV_SZ_viewmodelg_szCrowbarModel[0]);
        
entity_set_string(idEV_SZ_weaponmodelg_szCrowbarModel[1]);
    }
}

public 
Ham_He_Deploy_post(ent)
{
    new 
id get_weapon_owner(ent);
    if(
is_user_alive(id))
    {
        
entity_set_string(idEV_SZ_viewmodelg_szGrenadeModel[0]);
        
entity_set_string(idEV_SZ_weaponmodelg_szGrenadeModel[1]);
    }


Tambien para el extra "Fake Detective" con el model les dejo.
Código PHP:
#include <amxmodx>
#include <cstrike>
#include <ttt>

new cvar_price_fakecvar_max_count;
new 
g_iCurrentCountg_iItemIDg_pMsgTeamInfo;

public 
plugin_init()
{
    
register_plugin("[TTT] Item: Fake Detective"TTT_VERSIONTTT_AUTHOR);
    
cvar_max_count    my_register_cvar("ttt_fake_max_count",    "1",    "Fake detective max count. (Default: 1)");
    
cvar_price_fake    my_register_cvar("ttt_price_fake",        "2",    "Fake detective price. (Default: 2)");

    
g_pMsgTeamInfo    get_user_msgid("TeamInfo");
}

public 
ttt_plugin_cfg()
{
    new 
name[TTT_ITEMLENGHT];
    
formatex(namecharsmax(name), "%L"LANG_PLAYER"TTT_ITEM_FAKEDETECTIVE");
    
g_iItemID ttt_buymenu_add(nameget_pcvar_num(cvar_price_fake), PC_TRAITOR);
}

public 
ttt_gamemode(gamemode)
{
    if(
gamemode == GAME_ENDED || gamemode == GAME_RESTARTING)
        
g_iCurrentCount 0;
}

public 
ttt_item_selected(iditemname[], price)
{
    if(
g_iItemID == item)
    {
        if(
ttt_get_specialcount(PC_DETECTIVE))
        {
            if(
g_iCurrentCount get_pcvar_num(cvar_max_count))
            {
                
set_fake_team(id);
                
ttt_set_playerdata(idPD_FAKESTATEPC_DETECTIVE);
                
g_iCurrentCount++;
                
client_print_color(idprint_team_default"%s %L"TTT_TAGid"TTT_ITEM2"nameid"TTT_FAKEDETECTIVE1"idspecial_names[PC_DETECTIVE]);
                return 
PLUGIN_HANDLED;
            }
            else 
client_print_color(idprint_team_default"%s %L"TTT_TAGid"TTT_FAKEDETECTIVE2"g_iCurrentCountname);
        }
        else 
client_print_color(idprint_team_default"%s %L"TTT_TAGid"TTT_FAKEDETECTIVE4"idspecial_names[PC_DETECTIVE], name);
    }

    return 
PLUGIN_CONTINUE;
}

stock set_fake_team(id)
{
    new 
numi;
    static 
players[32], name[32];
    
get_players(playersnum);
    
get_user_name(idnamecharsmax(name));

    for(--
numnum >= 0num--)
    {
        
players[num];
        
message_begin(MSG_ONE_UNRELIABLEg_pMsgTeamInfo_i);
        
write_byte(id);
        
write_string("CT");
        
message_end();

        if(
id != && ttt_get_playerstate(i) == PC_TRAITOR)
        {
            
client_print_color(iprint_team_default"%s %L"TTT_TAGid"TTT_FAKEDETECTIVE3"nameidspecial_names[PC_DETECTIVE]);
            new 
g_szPlayerModelDT[32];
            static 
modeldt[20];
            
g_szPlayerModelDT "detective";
        
        
            
cs_get_user_model(idmodeldtcharsmax(modeldt));
            if(!
equal(modeldtg_szPlayerModelDT))
                
cs_set_user_model(idg_szPlayerModelDT);
        }
    }


Descargas:
► Abajo les dejare el .sma, el archivo .ini que necesita para que el plugin funcione correctamente y tambien un model que yo use cuando tenia el TTT. Es optativo si quieren dejan ese model sino se lo cambian.
► Cualquier cosa que no funcione o algo me dicen, saludos.

Imagenes:
[Imagen: wBER0CF.png]
[Imagen: YCVIXoe.png]


Archivos adjuntos
.ini   ttt_mod.ini (Tamaño: 1.55 KB / Descargas: 89)
.sma   Descargar AMXX / ttt_replacements.sma (Tamaño: 8.69 KB / Descargas: 113)
.rar   Model Detective.rar (Tamaño: 1.28 MB / Descargas: 101)
.sma   Descargar AMXX / ttt_item_fakedetective.sma (Tamaño: 2.51 KB / Descargas: 99)
Responder
#2
Interesante aporte :V
Responder
#3
Deberías dejar aunque sea 1 imagen del model así la gente lo puede ver antes de descargarlo.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#4
me gusta lo usare

Ah y esto
(20/09/2016, 12:11 AM)Federicomb escribió: Deberías dejar aunque sea 1 imagen del model así la gente lo puede ver antes de descargarlo.
Responder
#5
(20/09/2016, 12:11 AM)Federicomb escribió: Deberías dejar aunque sea 1 imagen del model así la gente lo puede ver antes de descargarlo.

Me habia olvidado de eso, hoy subo la imagen.
Responder
#6
Me gusta x2
Responder
#7
(20/09/2016, 12:11 AM)Federicomb escribió: Deberías dejar aunque sea 1 imagen del model así la gente lo puede ver antes de descargarlo.

Esta bueno

(20/09/2016, 12:11 AM)Federicomb escribió: Deberías dejar aunque sea 1 imagen del model así la gente lo puede ver antes de descargarlo.

Esta bueno
Hello People!!!
Responder
#8
- Actualizado.
Agregado Imagenes del Model.
Responder
#9
HOLA BRO, Quisiera saber si este mod sirve para host que tangan el RE HLDS.

estoy intentando montar un TTT y todo a salido mal por este del HLDS
Responder
#10
(17/01/2022, 03:24 AM)Alapcus escribió: HOLA BRO, Quisiera saber si este mod sirve para host que tangan el RE HLDS.

estoy intentando montar un TTT y todo a salido mal por este del HLDS

Que errores te sale en la consola?
Responder
#11
Directamente no inicia el mod, No se si es porque los TTT solo estan para HLDS o que pasa
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)