View Single Post
Author Message
leonard19941
Veteran Member
Join Date: Jun 2011
Old 04-12-2012 , 21:12   Bug con los models
#1

Hola buenas, miren que tengo un problema. Yo utilizo el cod mod de peyote, que el cod, las clases y

los objetos viene separados unos de otros y resulta que tengo varias clases que tiene la "habilidad"

de tener el traje del enemigo al renacer, estoy utilizando el plugin "Players Models" de "ConnorMcLeod"

para que mis players tengan un model diferente, mas parecido a un cod, y la cosa es que cuando

alguien se elije algunas de las clases que tiene la "habilidad" de tener el traje del enemigo al renacer

pues tiene el traje del enemigo pero no el que yo puse con el plugin de connor sino el que viene por

defecto con el cs1.6, bueno un lio espero que hayan entendido y me puedan ayudar .



Players Models

PHP Code:
/*    Formatright © 2009, ConnorMcLeod

    Players Models is free software;
    you can redistribute it and/or modify it under the terms of the
    GNU General Public License as published by the Free Software Foundation.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with Players Models; if not, write to the
    Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.
*/

//#define SET_MODELINDEX

#include <amxmodx>
#include <fakemeta>

#define VERSION "1.3.1"

#define SetUserModeled(%1)        g_bModeled |= 1<<(%1 & 31)
#define SetUserNotModeled(%1)        g_bModeled &= ~( 1<<(%1 & 31) )
#define IsUserModeled(%1)        ( g_bModeled &  1<<(%1 & 31) )

#define SetUserConnected(%1)        g_bConnected |= 1<<(%1 & 31)
#define SetUserNotConnected(%1)        g_bConnected &= ~( 1<<(%1 & 31) )
#define IsUserConnected(%1)        ( g_bConnected &  1<<(%1 & 31) )

#define MAX_MODEL_LENGTH 32
#define MAX_AUTHID_LENGTH 32

#define MAX_PLAYERS 32

#define ClCorpse_ModelName 1
#define ClCorpse_PlayerID 12

#define m_iTeam 114
#define g_ulModelIndexPlayer 491
#define fm_cs_get_user_team_index(%1)    get_pdata_int(%1, m_iTeam)

new const MODEL[] = "model";
new 
g_bModeled;
new 
g_szCurrentModel[MAX_PLAYERS+1][MAX_MODEL_LENGTH];

new 
Trie:g_tTeamModels[2];
new 
Trie:g_tModelIndexes;
new 
Trie:g_tDefaultModels;

new 
g_szAuthid[MAX_PLAYERS+1][MAX_AUTHID_LENGTH];
new 
g_bPersonalModel[MAX_PLAYERS+1];

new 
g_bConnected;

public 
plugin_init()
{
    
register_plugin("Players Models"VERSION"ConnorMcLeod");
    
    
register_forward(FM_SetClientKeyValue"SetClientKeyValue");
    
register_message(get_user_msgid("ClCorpse"), "Message_ClCorpse");
}

public 
plugin_precache()
{
    new 
szConfigFile[128];
    
get_localinfo("amxx_configsdir"szConfigFilecharsmax(szConfigFile));
    
format(szConfigFilecharsmax(szConfigFile), "%s/players_models.ini"szConfigFile);
    
    new 
iFile fopen(szConfigFile"rt");
    if( 
iFile )
    {
        new const 
szDefaultModels[][] = {"""urban""terror""leet""arctic""gsg9"
        
"gign""sas""guerilla""vip""militia""spetsnaz" };
        
g_tDefaultModels TrieCreate();
        for(new 
i=1i<sizeof(szDefaultModels); i++)
        {
            
TrieSetCell(g_tDefaultModelsszDefaultModels[i], i);
        }
        
        
g_tModelIndexes TrieCreate();
        
        
g_tTeamModels[0] = TrieCreate();
        
g_tTeamModels[1] = TrieCreate();
        
        new 
szDatas[70], szRest[40], szKey[MAX_AUTHID_LENGTH], szModel1[MAX_MODEL_LENGTH], szModel2[MAX_MODEL_LENGTH];
        while( !
feof(iFile) )
        {
            
fgets(iFileszDatascharsmax(szDatas));
            
trim(szDatas);
            if(!
szDatas[0] || szDatas[0] == ';' || szDatas[0] == '#' || (szDatas[0] == '/' && szDatas[1] == '/'))
            {
                continue;
            }
            
            
parse(szDatasszKeycharsmax(szKey), szModel1charsmax(szModel1), szModel2charsmax(szModel2));
            
            if( 
TrieKeyExists(g_tDefaultModelsszKey) )
            {
                if( 
szModel1[0] && !equal(szModel1szKey) && PrecachePlayerModel(szModel1) )
                {
                    
TrieSetString(g_tDefaultModelsszKeyszModel1);
                }
            }
            else if( 
equal(szKey"STEAM_"6) || equal(szKey"BOT") )
            {
                
parse(szRestszModel1charsmax(szModel1), szModel2charsmax(szModel2));
                if( 
szModel1[0] && PrecachePlayerModel(szModel1) )
                {
                    
TrieSetString(g_tTeamModels[1], szKeyszModel1);
                }
                if( 
szModel2[0] && PrecachePlayerModel(szModel2) )
                {
                    
TrieSetString(g_tTeamModels[0], szKeyszModel2);
                }
            }
        }
        
fcloseiFile );
    }
}

PrecachePlayerModel( const szModel[] )
{
    if( 
TrieKeyExists(g_tModelIndexesszModel) )
    {
        return 
1;
    }

    new 
szFileToPrecache[64];
    
formatex(szFileToPrecachecharsmax(szFileToPrecache), "models/player/%s/%s.mdl"szModelszModel);
    if( !
file_existsszFileToPrecache ) && !TrieKeyExists(g_tDefaultModelsszModel) )
    {
        return 
0;
    }

    
TrieSetCell(g_tModelIndexesszModelprecache_model(szFileToPrecache));

    
formatex(szFileToPrecachecharsmax(szFileToPrecache), "models/player/%s/%st.mdl"szModelszModel);
    if( 
file_existsszFileToPrecache ) )
    {
        
precache_model(szFileToPrecache);
        return 
1;
    }
    
formatex(szFileToPrecachecharsmax(szFileToPrecache), "models/player/%s/%sT.mdl"szModelszModel);
    if( 
file_existsszFileToPrecache ) )
    {
        
precache_model(szFileToPrecache);
        return 
1;
    }

    return 
1;
}

public 
plugin_end()
{
    
TrieDestroy(g_tTeamModels[0]);
    
TrieDestroy(g_tTeamModels[1]);
    
TrieDestroy(g_tModelIndexes);
    
TrieDestroy(g_tDefaultModels);
}

public 
client_authorizedid )
{
    
get_user_authid(idg_szAuthid[id], MAX_AUTHID_LENGTH-1);

    for(new 
i=1i<=2i++)
    {
        if( 
TrieKeyExists(g_tTeamModels[2-i], g_szAuthid[id]) )
        {
            
g_bPersonalModel[id] |= i;
        }
        else
        {
            
g_bPersonalModel[id] &= ~i;
        }
    }
}

public 
client_putinserver(id)
{
    if( !
is_user_hltv(id) )
    {
        
SetUserConnected(id);
    }
}

public 
client_disconnect(id)
{
    
g_bPersonalModel[id] = 0;
    
SetUserNotModeled(id);
    
SetUserNotConnected(id);
}

public 
SetClientKeyValue(id, const szInfoBuffer[], const szKey[], const szValue[])
{
    if( 
equal(szKeyMODEL) && IsUserConnected(id) )
    {
        new 
iTeam fm_cs_get_user_team_index(id);
        if( 
<= iTeam <= )
        {
            new 
szSupposedModel[MAX_MODEL_LENGTH];

            if( 
g_bPersonalModel[id] & iTeam )
            {
                
TrieGetString(g_tTeamModels[2-iTeam], g_szAuthid[id], szSupposedModelcharsmax(szSupposedModel));
            }
            else
            {
                
TrieGetString(g_tDefaultModelsszValueszSupposedModelcharsmax(szSupposedModel));
            }

            if( 
szSupposedModel[0] )
            {
                if(    !
IsUserModeled(id)
                ||    !
equal(g_szCurrentModel[id], szSupposedModel)
                ||    !
equal(szValueszSupposedModel)    )
                {
                    
copy(g_szCurrentModel[id], MAX_MODEL_LENGTH-1szSupposedModel);
                    
SetUserModeled(id);
                    
set_user_info(idMODELszSupposedModel);
                
#if defined SET_MODELINDEX
                    
new iModelIndex;
                    
TrieGetCell(g_tModelIndexesszSupposedModeliModelIndex);
                
//    set_pev(id, pev_modelindex, iModelIndex); // is this needed ?
                    
set_pdata_int(idg_ulModelIndexPlayeriModelIndex);
                
#endif
                    
return FMRES_SUPERCEDE;
                }
            }

            if( 
IsUserModeled(id) )
            {
                
SetUserNotModeled(id);
                
g_szCurrentModel[id][0] = 0;
            }
        }
    }
    return 
FMRES_IGNORED;
}

public 
Message_ClCorpse()
{
    new 
id get_msg_arg_int(ClCorpse_PlayerID);
    if( 
IsUserModeled(id) )
    {
        
set_msg_arg_string(ClCorpse_ModelNameg_szCurrentModel[id]);
    }



Camuflado (una de las clases con ese problema)

PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <codmod>
#include <cstrike>
#include <hamsandwich>

new bool:mw2_class[33];

new 
CT_Skins[4][] = {"sas""gsg9""urban""gign"};
new 
Terros_Skins[4][] = {"arctic""leet""guerilla""terror"};

new const 
name[] = "Camuflado";
new const 
description[] = "Tiene el Traje del Enemigo.";
new const 
weapons 1<<CSW_AK47 1<<CSW_DEAGLE 1<<CSW_HEGRENADE 1<<CSW_FLASHBANG;
new const 
health 14;
new const 
condition 30;
new const 
intelligence 0;
new const 
strength 10;

public 
plugin_init() 
{
    
register_plugin(name"1.0""QTM_Peyote");
    
    
cod_register_class(namedescriptionweaponshealthconditionintelligencestrength);
    
    
RegisterHam(Ham_Spawn"player""Spawn"1);
}

public 
cod_class_enabled(id)
    
mw2_class[id] = true;

public 
cod_class_disabled(id)
{
    
ChangeSkins(id1);
    
mw2_class[id] = false;
}

public 
Spawn(id)
{
    if(!
is_user_alive(id))
        return;
    
    if(!
mw2_class[id])
        return;
    
    if(
random_num(1,3) == 1)
    {
        new 
CsTeams:team cs_get_user_team(id);
        
        
cs_set_user_team(id, (team == CS_TEAM_CT)? CS_TEAM_TCS_TEAM_CT);
        
ExecuteHam(Ham_CS_RoundRespawnid);
        
        
cs_set_user_team(idteam);
    }
    
ChangeSkins(id0);
}

public 
ChangeSkins(idreset)
{
    if (!
is_user_connected(id)) 
        return 
PLUGIN_CONTINUE;
    
    if(
reset)
        
cs_reset_user_model(id);
    else
    {
        new 
num random_num(0,3);
        
cs_set_user_model(id, (cs_get_user_team(id) == CS_TEAM_T)? CT_Skins[num]: Terros_Skins[num]);
    }
    
    return 
PLUGIN_CONTINUE;

__________________

Last edited by leonard19941; 04-12-2012 at 22:41.
leonard19941 is offline