Penguin Enthusiast
Join Date: Jun 2016
Location: Macedonia
|
01-14-2018
, 10:04
Re: Force T & CT player models
|
#4
|
Quote:
Originally Posted by TheWhitesmith
i'm lazy too, here you go.
PHP Code:
public plugin_init() { register_plugin("Admin Model", "1.0", "Tahiri") RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1) return PLUGIN_CONTINUE } public plugin_precache() { for(new i=1, model[92]; i<4; i++) { formatex(model, 91, "models/player/sya_ct%d/sya_ct%d.mdl", i, i) precache_model(model) formatex(model, 91, "models/player/sya_ct%d/sya_ct%dT.mdl", i, i) precache_model(model) formatex(model, 91, "models/player/sya_terro%d/sya_terro%d.mdl", i, i) precache_model(model) formatex(model, 91, "models/player/sya_terro%d/sya_terro%dT.mdl", i, i) precache_model(model) } return PLUGIN_CONTINUE }
public ham_PlayerSpawn_Post(id) { if (is_user_alive(id)) { new model[32] formatex(model, charsmax(model), "sya_%s%d", cs_get_user_team(id) == TEAM_CT ? "ct" : "terro", random_num(1,3)) cs_set_user_model(id, model) } return PLUGIN_CONTINUE }
|
That plugin won't work and most likely will overflow the players when the server is full.
Here you go:
PHP Code:
#include < amxmodx > #include < hamsandwich > #include < fakemeta >
#define MODELCHANGE_DELAY 0.8
#define TASK_MODELSET 125492
new const g_szTModel[ ] = "t_model"; new const g_szCTModel[ ] = "ct_model";
new bool:g_bHasCustomModel[ 33 ];
new Float:g_fRoundStartTime, Float:g_fModelsTargetTime;
public plugin_init( ) { register_plugin( "Player Models", "1.0", "DoNii" ) ; register_event( "HLTV", "OnRoundStart", "a", "1=0", "2=0" ); RegisterHam( Ham_Spawn, "player", "fw_HamSpawnPost", 1 ) ; register_forward( FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged" ); register_forward( FM_SetClientKeyValue, "fw_SetClientKeyValue" ); }
public plugin_precache( ) { new szModelT[ 64 ], szModelCT[ 64 ];
formatex( szModelT, charsmax( szModelT ), "models/player/%s/%s.mdl", g_szTModel, g_szTModel ) ; formatex( szModelCT, charsmax( szModelCT ), "models/player/%s/%s.mdl", g_szCTModel, g_szCTModel ) ; precache_model( szModelT ); precache_model( szModelCT ); }
public OnRoundStart( ) g_fRoundStartTime = get_gametime( );
public client_connect( id ) g_bHasCustomModel[ id ] = false;
public fw_HamSpawnPost( id ) { if( ! is_user_alive( id ) ) return HAM_IGNORED ;
new szCurrentModel[ 32 ], Float:fGameTime; get_user_info( id, "model", szCurrentModel, charsmax( szCurrentModel ) ) fGameTime = get_gametime( ); if( get_user_team( id ) == 1 ) { if ( ! equal( szCurrentModel, g_szTModel ) ) { if( fGameTime - g_fRoundStartTime < 1.0 ) set_task( MODELCHANGE_DELAY, "fm_user_model_update", id + TASK_MODELSET ); else fm_user_model_update( id + TASK_MODELSET ); } } else if( get_user_team( id ) == 2 ) { if ( ! equal( szCurrentModel, g_szCTModel ) ) { if( fGameTime - g_fRoundStartTime < 1.0 ) set_task( MODELCHANGE_DELAY, "fm_user_model_update", id + TASK_MODELSET ); else fm_user_model_update( id + TASK_MODELSET ); } } return HAM_IGNORED ; }
public fw_SetClientKeyValue( id, const szBuffer[ ], const szKey[ ] ) { if( equal( szKey, "model" ) ) return FMRES_SUPERCEDE; return FMRES_IGNORED; }
public fw_ClientUserInfoChanged(id) { if( ! g_bHasCustomModel[ id ] ) return FMRES_IGNORED; static szCurrentModel[ 32 ]; fm_get_user_model( id, szCurrentModel, charsmax( szCurrentModel ) ); if( get_user_team( id ) == 1 ) { if( ! equal( szCurrentModel, g_szTModel ) && ! task_exists( id + TASK_MODELSET ) ) fm_set_user_model( id + TASK_MODELSET ); } else if( get_user_team( id ) == 2 ) { if( ! equal( szCurrentModel, g_szCTModel ) && ! task_exists( id + TASK_MODELSET ) ) fm_set_user_model( id + TASK_MODELSET ); }
return FMRES_IGNORED; }
public fm_user_model_update( iTaskID ) { static Float:fCurTime; fCurTime = get_gametime( ); if ( fCurTime - g_fModelsTargetTime >= MODELCHANGE_DELAY ) { fm_set_user_model( iTaskID ) g_fModelsTargetTime = fCurTime; } else { set_task( ( g_fModelsTargetTime + MODELCHANGE_DELAY ) - fCurTime, "fm_set_user_model", iTaskID ); g_fModelsTargetTime += MODELCHANGE_DELAY } }
public fm_set_user_model( id ) { id -= TASK_MODELSET if( get_user_team( id ) == 1 ) { engfunc( EngFunc_SetClientKeyValue, id, engfunc( EngFunc_GetInfoKeyBuffer, id ), "model", g_szTModel ); g_bHasCustomModel[ id ] = true; } else if( get_user_team( id ) == 2 ) { engfunc( EngFunc_SetClientKeyValue, id, engfunc( EngFunc_GetInfoKeyBuffer, id ), "model", g_szCTModel ); g_bHasCustomModel[ id ] = true; }
return PLUGIN_CONTINUE; }
stock fm_get_user_model( id, const szModel[], iLen ) { engfunc( EngFunc_InfoKeyValue, engfunc( EngFunc_GetInfoKeyBuffer, id ), "szModel", szModel, iLen ); }
__________________
Last edited by edon1337; 01-14-2018 at 10:12.
|
|