[CS 1.6][SOLUCIONADO] Cambio de Modelos
#1
Hola, estoy haciendo un furien y quiero cambiar modelos de jugadores y puse estos plugins:

furien_models.amxx + cs_player_models_api.sma

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <fun>

#define PLUGIN "Furien models"
#define VERSION "1.0"
#define AUTHOR "Chose"

new TEAM_T[64]="models/player/furien/furien.mdl"
new TEAM_CT[64]="models/player/antifurien/antifurien.mdl"

public plugin_init() {
    
register_plugin("Furien models""1.0""Chose")
    
RegisterHam(Ham_Spawn"player""fw_playerspawnt"1)
    
RegisterHam(Ham_Spawn"player""fw_playerspawnct"1)
}

public 
fw_playerspawnt(id) {
    if (
cs_get_user_team(id) == CS_TEAM_T )
    {
        
cs_set_user_model(id"TEAM_T")
    }
}

public 
fw_playerspawnct(id) {
    if (
cs_get_user_team(id) == CS_TEAM_CT )
    {  
        
cs_set_user_model(id"TEAM_CT")
    }
}

public 
plugin_precache()  
{  
    
precache_modelTEAM_T )
    
precache_modelTEAM_CT )    


Código PHP:
/*================================================================================
    
    ----------------------------------
    -*- [CS] Player Models API 1.2 -*-
    ----------------------------------
    
    - Allows easily setting and restoring custom player models in CS and CZ
       (models last until player disconnects or are manually reset)
    - Built-in SVC_BAD prevention
    - Support for custom hitboxes (model index offset setting)
    - You still need to precache player models in your plugin!
    
    Original thread:
    http://forums.alliedmods.net/showthread.php?t=161255
    
================================================================================*/

// Delay between model changes (increase if getting SVC_BAD kicks)
#define MODELCHANGE_DELAY 0.2

// Delay after roundstart (increase if getting kicks at round start)
#define ROUNDSTART_DELAY 2.0

// Enable custom hitboxes (experimental, might lag your server badly with some models)
//#define SET_MODELINDEX_OFFSET

/*=============================================================================*/

#include <amxmodx>
#include <cstrike>
#include <fakemeta>

#define MAXPLAYERS 32
#define MODELNAME_MAXLENGTH 32

#define TASK_MODELCHANGE 100
#define ID_MODELCHANGE (taskid - TASK_MODELCHANGE)

new const DEFAULT_MODELINDEX_T[] = "models/player/terror/terror.mdl"
new const DEFAULT_MODELINDEX_CT[] = "models/player/urban/urban.mdl"

// CS Player PData Offsets (win32)
#define PDATA_SAFE 2
#define OFFSET_CSTEAMS 114
#define OFFSET_MODELINDEX 491 // Orangutanz

#define flag_get(%1,%2)        (%1 & (1 << (%2 & 31)))
#define flag_set(%1,%2)        (%1 |= (1 << (%2 & 31)));
#define flag_unset(%1,%2)    (%1 &= ~(1 << (%2 & 31)));

new g_MaxPlayers
new g_HasCustomModel
new Float:g_ModelChangeTargetTime
new g_CustomPlayerModel[MAXPLAYERS+1][MODELNAME_MAXLENGTH]
#if defined SET_MODELINDEX_OFFSET
new g_CustomModelIndex[MAXPLAYERS+1]
#endif

public plugin_init()
{
    
register_plugin("[CS] Player Models API""1.2""WiLS")
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_forward(FM_SetClientKeyValue"fw_SetClientKeyValue")
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_natives()
{
    
register_library("cs_player_models_api")
    
register_native("cs_set_player_model""native_set_player_model")
    
register_native("cs_reset_player_model""native_reset_player_model")
}

public 
native_set_player_model(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[CS] Player is not in game (%d)"id)
        return 
false;
    }
    
    new 
newmodel[MODELNAME_MAXLENGTH]
    
get_string(2newmodelcharsmax(newmodel))
    
    
remove_task(id+TASK_MODELCHANGE)
    
flag_set(g_HasCustomModelid)
    
    
copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), newmodel)
    
#if defined SET_MODELINDEX_OFFSET    
    
new modelpath[32+(2*MODELNAME_MAXLENGTH)]
    
formatex(modelpathcharsmax(modelpath), "models/player/%s/%s.mdl"newmodelnewmodel)
    
g_CustomModelIndex[id] = engfunc(EngFunc_ModelIndexmodelpath)
#endif
    
    
new currentmodel[MODELNAME_MAXLENGTH]
    
fm_cs_get_user_model(idcurrentmodelcharsmax(currentmodel))
    
    if (!
equal(currentmodelnewmodel))
        
fm_cs_user_model_update(id+TASK_MODELCHANGE)
    
    return 
true;
}

public 
native_reset_player_model(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[CS] Player is not in game (%d)"id)
        return 
false;
    }
    
    
// Player doesn't have a custom model, no need to reset
    
if (!flag_get(g_HasCustomModelid))
        return 
true;
    
    
remove_task(id+TASK_MODELCHANGE)
    
flag_unset(g_HasCustomModelid)
    
fm_cs_reset_user_model(id)
    
    return 
true;
}

public 
client_disconnect(id)
{
    
remove_task(id+TASK_MODELCHANGE)
    
flag_unset(g_HasCustomModelid)
}

public 
event_round_start()
{
    
// An additional delay is offset at round start
    // since SVC_BAD is more likely to be triggered there
    
g_ModelChangeTargetTime get_gametime() + ROUNDSTART_DELAY
    
    
// If a player has a model change task in progress,
    // reschedule the task, since it could potentially
    // be executed during roundstart
    
new player
    
for (player 1player <= g_MaxPlayersplayer++)
    {
        if (
task_exists(player+TASK_MODELCHANGE))
        {
            
remove_task(player+TASK_MODELCHANGE)
            
fm_cs_user_model_update(player+TASK_MODELCHANGE)
        }
    }
}

public 
fw_SetClientKeyValue(id, const infobuffer[], const key[], const value[])
{
    if (
flag_get(g_HasCustomModelid) && equal(key"model"))
    {
        static 
currentmodel[MODELNAME_MAXLENGTH]
        
fm_cs_get_user_model(idcurrentmodelcharsmax(currentmodel))
        
        if (!
equal(currentmodelg_CustomPlayerModel[id]) && !task_exists(id+TASK_MODELCHANGE))
            
fm_cs_set_user_model(id+TASK_MODELCHANGE)
        
#if defined SET_MODELINDEX_OFFSET
        
fm_cs_set_user_model_index(id)
#endif
        
        
return FMRES_SUPERCEDE;
    }
    
    return 
FMRES_IGNORED;
}

public 
fm_cs_set_user_model(taskid)
{
    
set_user_info(ID_MODELCHANGE"model"g_CustomPlayerModel[ID_MODELCHANGE])
}

stock fm_cs_set_user_model_index(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return;
    
    
set_pdata_int(idOFFSET_MODELINDEXg_CustomModelIndex[id])
}

stock fm_cs_reset_user_model_index(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return;
    
    switch (
fm_cs_get_user_team(id))
    {
        case 
CS_TEAM_T:
        {
            
set_pdata_int(idOFFSET_MODELINDEXengfunc(EngFunc_ModelIndexDEFAULT_MODELINDEX_T))
        }
        case 
CS_TEAM_CT:
        {
            
set_pdata_int(idOFFSET_MODELINDEXengfunc(EngFunc_ModelIndexDEFAULT_MODELINDEX_CT))
        }
    }
}

stock fm_cs_get_user_model(idmodel[], len)
{
    
get_user_info(id"model"modellen)
}

stock fm_cs_reset_user_model(id)
{
    
// Set some generic model and let CS automatically reset player model to default
    
copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), "gordon")
    
fm_cs_user_model_update(id+TASK_MODELCHANGE)
#if defined SET_MODELINDEX_OFFSET
    
fm_cs_reset_user_model_index(id)
#endif
}

stock fm_cs_user_model_update(taskid)
{
    new 
Float:current_time
    current_time 
get_gametime()
    
    if (
current_time g_ModelChangeTargetTime >= MODELCHANGE_DELAY)
    {
        
fm_cs_set_user_model(taskid)
        
g_ModelChangeTargetTime current_time
    
}
    else
    {
        
set_task((g_ModelChangeTargetTime MODELCHANGE_DELAY) - current_time"fm_cs_set_user_model"taskid)
        
g_ModelChangeTargetTime g_ModelChangeTargetTime MODELCHANGE_DELAY
    
}
}

stock CsTeams:fm_cs_get_user_team(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return 
CS_TEAM_UNASSIGNED;
    
    return 
CsTeams:get_pdata_int(idOFFSET_CSTEAMS);


Los modelos se cambian, pero me esta llenando el .log con este error:

Cita:L 01/19/2014 - 12:34:39: [CSTRIKE] Invalid player 3
L 01/19/2014 - 12:34:39: [AMXX] Displaying debug trace (plugin "furien_models.amxx")
L 01/19/2014 - 12:34:39: [AMXX] Run time error 10: native error (native "cs_get_user_team")
L 01/19/2014 - 12:34:39: [AMXX] [0] furien_models.sma::fw_playerspawnct (line 34)

Alguna solución?

Saludos!
Responder
#2
Siempre que chequeas el team antes de hacerlo debes chequear que este conectado... reemplaza en todos lados esto
Código:
if (cs_get_user_team(id)...
por esto
Código:
if (is_user_connected(id) && cs_get_user_team(id)...
Responder
#3
A ver te comento, hize lo que me dijiste pero no me salen los modelos y no salen errores en .log, los tengo todos los plugins con debug, 5 plugins que no tienen nada que ver pero bueno...

Alguna idea?
Responder
#4
Dale dale!! Estoy seguro que es eso igual, asi que deberia andar, tambien te dejo esto para que este mejor hecho
Código PHP:
RegisterHam(Ham_Spawn"player""fw_playerspawnt"1)
RegisterHam(Ham_Spawn"player""fw_playerspawnct"1

--->

Código PHP:
RegisterHam(Ham_Spawn"player""fw_playerspawn"1

y aca...

Código PHP:
public fw_playerspawnt(id) {
    if (
cs_get_user_team(id) == CS_TEAM_T )
    {
        
cs_set_user_model(id"TEAM_T")
    }
}

public 
fw_playerspawnct(id) {
    if (
cs_get_user_team(id) == CS_TEAM_CT )
    {  
        
cs_set_user_model(id"TEAM_CT")
    }


--->

Código PHP:
public fw_playerspawn(id)
{
    if (
cs_get_user_team(id) == CS_TEAM_T )
    {
        
cs_set_user_model(id"TEAM_T")
    }
   else if (
cs_get_user_team(id) == CS_TEAM_CT )
    {  
        
cs_set_user_model(id"TEAM_CT")
    }


Pero con el is_user_connected(id) adelante obvio...
Responder
#5
Código PHP:
new TEAM_T[64]="models/player/furien/furien.mdl"
new TEAM_CT[64]="models/player/antifurien/antifurien.mdl"

public plugin_init() {
    
register_plugin("Furien models""1.0""Chose")
    
RegisterHam(Ham_Spawn"player""fw_playerspawn"1)
    
//RegisterHam(Ham_Spawn, "player", "fw_playerspawnt", 1)
    //RegisterHam(Ham_Spawn, "player", "fw_playerspawnct", 1)
}

public 
fw_playerspawn(id)
{
    if (
is_user_connected(id) && cs_get_user_team(id) == CS_TEAM_CT )
    {
        
cs_set_user_model(id"TEAM_T")
    }
    else if (
is_user_connected(id) && cs_get_user_team(id) == CS_TEAM_T )
    {  
        
cs_set_user_model(id"TEAM_CT")
    }


Cita:Warning: Symbol is never used: "TEAM_CT" on line 38
Warning: Symbol is never used: "TEAM_T" on line 38
Responder
#6
Te dice que nunca usas TEAM_T y TEAM_CT porque no lo estas precacheando, por ende tampoco podrias setear el model! Wallhang? Que es eso? Yao ming
Responder
#7
(19/01/2014, 09:14 AM)Gonza.-* escribió: Te dice que nunca usas TEAM_T y TEAM_CT porque no lo estas precacheando, por ende tampoco podrias setear el model! Wallhang? Que es eso? Yao ming

El wallhang es un item que compras que cuando pulsas "E" te queda enganchado en la pared.

Vale, ya está:

Código PHP:
public plugin_precache()  
{  
        
precache_modelTEAM_T )
        
precache_modelTEAM_CT )    


Lo que sigo sin poder ver los models...no entiendo...esto lo tengo que modificar en cs players api?

Código PHP:
new const DEFAULT_MODELINDEX_T[] = "models/player/furien/furien.mdl"
new const DEFAULT_MODELINDEX_CT[] = "models/player/antifurien/antifurien.mdl" 


Quiero que los Terroristas usen furien.mdl y Anti-Terroristas antifurien.mdl ... pero no se que pasa que ahora no me carga...

Son necesarios estos includes?

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <fun> 
Responder
#8
si el server donde vas a poner el plugin es chico, no uses el models api ese... sino si, y si usas esa api usa esta native cs_set_player_model
Responder
#9
Hice esto:

Código PHP:
#include <cs_player_models_api>

public fw_playerspawn(id)
{
    if (
is_user_connected(id) && cs_get_user_team(id) == CS_TEAM_CT )
    {
        
cs_set_player_model(id"TEAM_T")
    }
    else if (
is_user_connected(id) && cs_get_user_team(id) == CS_TEAM_T )
    {  
        
cs_set_player_model (id"TEAM_CT")
    }


Es correcto eso? No funciona.
Responder
#10
-->

Código PHP:
cs_set_user_model(idTEAM_T)
//...
cs_set_user_model(idTEAM_CT

no hace falta chequear is_user_connected
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#11
Tengo esto asi:

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <cs_player_models_api>

#define PLUGIN "Furien models"
#define VERSION "1.0"
#define AUTHOR "Chose"

new TEAM_T[64]="models/player/furien/furien.mdl"
new TEAM_CT[64]="models/player/antifurien/antifurien.mdl"

public plugin_init() {
    
register_plugin("Furien models""1.0""Chose")
    
RegisterHam(Ham_Spawn"player""fw_playerspawn"1)
    
//RegisterHam(Ham_Spawn, "player", "fw_playerspawnt", 1)
    //RegisterHam(Ham_Spawn, "player", "fw_playerspawnct", 1)
}

public 
fw_playerspawn(id)
{
    if (
is_user_connected(id) && cs_get_user_team(id) == CS_TEAM_CT )
    {
        
cs_set_user_model(idTEAM_T)
    }
    else if (
is_user_connected(id) && cs_get_user_team(id) == CS_TEAM_T )
    {  
        
cs_set_player_model (idTEAM_CT)
    }
}

public 
plugin_precache()  
{  
        
precache_modelTEAM_T )
        
precache_modelTEAM_CT )    


Y el otro asi:

Código PHP:
/*================================================================================
    
    ----------------------------------
    -*- [CS] Player Models API 1.2 -*-
    ----------------------------------
    
    - Allows easily setting and restoring custom player models in CS and CZ
       (models last until player disconnects or are manually reset)
    - Built-in SVC_BAD prevention
    - Support for custom hitboxes (model index offset setting)
    - You still need to precache player models in your plugin!
    
    Original thread:
    http://forums.alliedmods.net/showthread.php?t=161255
    
================================================================================*/

// Delay between model changes (increase if getting SVC_BAD kicks)
#define MODELCHANGE_DELAY 0.2

// Delay after roundstart (increase if getting kicks at round start)
#define ROUNDSTART_DELAY 2.0

// Enable custom hitboxes (experimental, might lag your server badly with some models)
//#define SET_MODELINDEX_OFFSET

/*=============================================================================*/

#include <amxmodx>
#include <cstrike>
#include <fakemeta>

#define MAXPLAYERS 32
#define MODELNAME_MAXLENGTH 32

#define TASK_MODELCHANGE 100
#define ID_MODELCHANGE (taskid - TASK_MODELCHANGE)

new const DEFAULT_MODELINDEX_T[] = "models/player/furien/furien.mdl"
new const DEFAULT_MODELINDEX_CT[] = "models/player/antifurien/antifurien.mdl"

// CS Player PData Offsets (win32)
#define PDATA_SAFE 2
#define OFFSET_CSTEAMS 114
#define OFFSET_MODELINDEX 491 // Orangutanz

#define flag_get(%1,%2)        (%1 & (1 << (%2 & 31)))
#define flag_set(%1,%2)        (%1 |= (1 << (%2 & 31)));
#define flag_unset(%1,%2)    (%1 &= ~(1 << (%2 & 31)));

new g_MaxPlayers
new g_HasCustomModel
new Float:g_ModelChangeTargetTime
new g_CustomPlayerModel[MAXPLAYERS+1][MODELNAME_MAXLENGTH]
#if defined SET_MODELINDEX_OFFSET
new g_CustomModelIndex[MAXPLAYERS+1]
#endif

public plugin_init()
{
    
register_plugin("[CS] Player Models API""1.2""WiLS")
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_forward(FM_SetClientKeyValue"fw_SetClientKeyValue")
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_natives()
{
    
register_library("cs_player_models_api")
    
register_native("cs_set_player_model""native_set_player_model")
    
register_native("cs_reset_player_model""native_reset_player_model")
}

public 
native_set_player_model(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[CS] Player is not in game (%d)"id)
        return 
false;
    }
    
    new 
newmodel[MODELNAME_MAXLENGTH]
    
get_string(2newmodelcharsmax(newmodel))
    
    
remove_task(id+TASK_MODELCHANGE)
    
flag_set(g_HasCustomModelid)
    
    
copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), newmodel)
    
#if defined SET_MODELINDEX_OFFSET    
    
new modelpath[32+(2*MODELNAME_MAXLENGTH)]
    
formatex(modelpathcharsmax(modelpath), "models/player/%s/%s.mdl"newmodelnewmodel)
    
g_CustomModelIndex[id] = engfunc(EngFunc_ModelIndexmodelpath)
#endif
    
    
new currentmodel[MODELNAME_MAXLENGTH]
    
fm_cs_get_user_model(idcurrentmodelcharsmax(currentmodel))
    
    if (!
equal(currentmodelnewmodel))
        
fm_cs_user_model_update(id+TASK_MODELCHANGE)
    
    return 
true;
}

public 
native_reset_player_model(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[CS] Player is not in game (%d)"id)
        return 
false;
    }
    
    
// Player doesn't have a custom model, no need to reset
    
if (!flag_get(g_HasCustomModelid))
        return 
true;
    
    
remove_task(id+TASK_MODELCHANGE)
    
flag_unset(g_HasCustomModelid)
    
fm_cs_reset_user_model(id)
    
    return 
true;
}

public 
client_disconnect(id)
{
    
remove_task(id+TASK_MODELCHANGE)
    
flag_unset(g_HasCustomModelid)
}

public 
event_round_start()
{
    
// An additional delay is offset at round start
    // since SVC_BAD is more likely to be triggered there
    
g_ModelChangeTargetTime get_gametime() + ROUNDSTART_DELAY
    
    
// If a player has a model change task in progress,
    // reschedule the task, since it could potentially
    // be executed during roundstart
    
new player
    
for (player 1player <= g_MaxPlayersplayer++)
    {
        if (
task_exists(player+TASK_MODELCHANGE))
        {
            
remove_task(player+TASK_MODELCHANGE)
            
fm_cs_user_model_update(player+TASK_MODELCHANGE)
        }
    }
}

public 
fw_SetClientKeyValue(id, const infobuffer[], const key[], const value[])
{
    if (
flag_get(g_HasCustomModelid) && equal(key"model"))
    {
        static 
currentmodel[MODELNAME_MAXLENGTH]
        
fm_cs_get_user_model(idcurrentmodelcharsmax(currentmodel))
        
        if (!
equal(currentmodelg_CustomPlayerModel[id]) && !task_exists(id+TASK_MODELCHANGE))
            
fm_cs_set_user_model(id+TASK_MODELCHANGE)
        
#if defined SET_MODELINDEX_OFFSET
        
fm_cs_set_user_model_index(id)
#endif
        
        
return FMRES_SUPERCEDE;
    }
    
    return 
FMRES_IGNORED;
}

public 
fm_cs_set_user_model(taskid)
{
    
set_user_info(ID_MODELCHANGE"model"g_CustomPlayerModel[ID_MODELCHANGE])
}

stock fm_cs_set_user_model_index(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return;
    
    
set_pdata_int(idOFFSET_MODELINDEXg_CustomModelIndex[id])
}

stock fm_cs_reset_user_model_index(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return;
    
    switch (
fm_cs_get_user_team(id))
    {
        case 
CS_TEAM_T:
        {
            
set_pdata_int(idOFFSET_MODELINDEXengfunc(EngFunc_ModelIndexDEFAULT_MODELINDEX_T))
        }
        case 
CS_TEAM_CT:
        {
            
set_pdata_int(idOFFSET_MODELINDEXengfunc(EngFunc_ModelIndexDEFAULT_MODELINDEX_CT))
        }
    }
}

stock fm_cs_get_user_model(idmodel[], len)
{
    
get_user_info(id"model"modellen)
}

stock fm_cs_reset_user_model(id)
{
    
// Set some generic model and let CS automatically reset player model to default
    
copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), "gordon")
    
fm_cs_user_model_update(id+TASK_MODELCHANGE)
#if defined SET_MODELINDEX_OFFSET
    
fm_cs_reset_user_model_index(id)
#endif
}

stock fm_cs_user_model_update(taskid)
{
    new 
Float:current_time
    current_time 
get_gametime()
    
    if (
current_time g_ModelChangeTargetTime >= MODELCHANGE_DELAY)
    {
        
fm_cs_set_user_model(taskid)
        
g_ModelChangeTargetTime current_time
    
}
    else
    {
        
set_task((g_ModelChangeTargetTime MODELCHANGE_DELAY) - current_time"fm_cs_set_user_model"taskid)
        
g_ModelChangeTargetTime g_ModelChangeTargetTime MODELCHANGE_DELAY
    
}
}

stock CsTeams:fm_cs_get_user_team(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return 
CS_TEAM_UNASSIGNED;
    
    return 
CsTeams:get_pdata_int(idOFFSET_CSTEAMS);


No sé si hice algo mal, pero cambie las natives, le puse include y cambie los .mdl nada más...y sigue sin funcionar :/ me falta algo raul?
Responder
#12
Si vas a usar cs_set_user_model no uses el include de la api esa, si vas a usar cs_set_player_model si usala, y si la usas no es nesesario chequear si esta conectado porque ya lo hace la api, y esto
Código PHP:
cs_set_user_model(idTEAM_T
--->
Código PHP:
cs_set_user_model(id"antifurien"
y lo mismo para el ct, se entiende?
Responder
#13
a ver, si utilizas cs_set_user_model tendrás problemas en un sv con más de 20 jugadores.

mejor, deja la api, y cambia en el otro plugin:
cs_set_player_model(id, TEAM_T) y el otro igual con TEAM_CT

ya te dije que no hace falta is_user_connected, bórralo

los includes amxmisc, engine, fakemeta y fun se los puedes quitar
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#14
A ver lo tengo asi:

Código PHP:
/*================================================================================
    
    ----------------------------------
    -*- [CS] Player Models API 1.2 -*-
    ----------------------------------
    
    - Allows easily setting and restoring custom player models in CS and CZ
       (models last until player disconnects or are manually reset)
    - Built-in SVC_BAD prevention
    - Support for custom hitboxes (model index offset setting)
    - You still need to precache player models in your plugin!
    
    Original thread:
    http://forums.alliedmods.net/showthread.php?t=161255
    
================================================================================*/

// Delay between model changes (increase if getting SVC_BAD kicks)
#define MODELCHANGE_DELAY 0.2

// Delay after roundstart (increase if getting kicks at round start)
#define ROUNDSTART_DELAY 2.0

// Enable custom hitboxes (experimental, might lag your server badly with some models)
//#define SET_MODELINDEX_OFFSET

/*=============================================================================*/

#include <amxmodx>
#include <cstrike>
#include <fakemeta>

#define MAXPLAYERS 32
#define MODELNAME_MAXLENGTH 32

#define TASK_MODELCHANGE 100
#define ID_MODELCHANGE (taskid - TASK_MODELCHANGE)

new const DEFAULT_MODELINDEX_T[] = "models/player/furien/furien.mdl"
new const DEFAULT_MODELINDEX_CT[] = "models/player/antifurien/antifurien.mdl"
//new const DEFAULT_MODELINDEX_T[] = "models/player/terror/terror.mdl"
//new const DEFAULT_MODELINDEX_CT[] = "models/player/urban/urban.mdl"

// CS Player PData Offsets (win32)
#define PDATA_SAFE 2
#define OFFSET_CSTEAMS 114
#define OFFSET_MODELINDEX 491 // Orangutanz

#define flag_get(%1,%2)        (%1 & (1 << (%2 & 31)))
#define flag_set(%1,%2)        (%1 |= (1 << (%2 & 31)));
#define flag_unset(%1,%2)    (%1 &= ~(1 << (%2 & 31)));

new g_MaxPlayers
new g_HasCustomModel
new Float:g_ModelChangeTargetTime
new g_CustomPlayerModel[MAXPLAYERS+1][MODELNAME_MAXLENGTH]
#if defined SET_MODELINDEX_OFFSET
new g_CustomModelIndex[MAXPLAYERS+1]
#endif

public plugin_init()
{
    
register_plugin("[CS] Player Models API""1.2""WiLS")
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_forward(FM_SetClientKeyValue"fw_SetClientKeyValue")
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_natives()
{
    
register_library("cs_player_models_api")
    
register_native("cs_set_player_model""native_set_player_model")
    
register_native("cs_reset_player_model""native_reset_player_model")
}

public 
native_set_player_model(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[CS] Player is not in game (%d)"id)
        return 
false;
    }
    
    new 
newmodel[MODELNAME_MAXLENGTH]
    
get_string(2newmodelcharsmax(newmodel))
    
    
remove_task(id+TASK_MODELCHANGE)
    
flag_set(g_HasCustomModelid)
    
    
copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), newmodel)
    
#if defined SET_MODELINDEX_OFFSET    
    
new modelpath[32+(2*MODELNAME_MAXLENGTH)]
    
formatex(modelpathcharsmax(modelpath), "models/player/%s/%s.mdl"newmodelnewmodel)
    
g_CustomModelIndex[id] = engfunc(EngFunc_ModelIndexmodelpath)
#endif
    
    
new currentmodel[MODELNAME_MAXLENGTH]
    
fm_cs_get_user_model(idcurrentmodelcharsmax(currentmodel))
    
    if (!
equal(currentmodelnewmodel))
        
fm_cs_user_model_update(id+TASK_MODELCHANGE)
    
    return 
true;
}

public 
native_reset_player_model(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[CS] Player is not in game (%d)"id)
        return 
false;
    }
    
    
// Player doesn't have a custom model, no need to reset
    
if (!flag_get(g_HasCustomModelid))
        return 
true;
    
    
remove_task(id+TASK_MODELCHANGE)
    
flag_unset(g_HasCustomModelid)
    
fm_cs_reset_user_model(id)
    
    return 
true;
}

public 
client_disconnect(id)
{
    
remove_task(id+TASK_MODELCHANGE)
    
flag_unset(g_HasCustomModelid)
}

public 
event_round_start()
{
    
// An additional delay is offset at round start
    // since SVC_BAD is more likely to be triggered there
    
g_ModelChangeTargetTime get_gametime() + ROUNDSTART_DELAY
    
    
// If a player has a model change task in progress,
    // reschedule the task, since it could potentially
    // be executed during roundstart
    
new player
    
for (player 1player <= g_MaxPlayersplayer++)
    {
        if (
task_exists(player+TASK_MODELCHANGE))
        {
            
remove_task(player+TASK_MODELCHANGE)
            
fm_cs_user_model_update(player+TASK_MODELCHANGE)
        }
    }
}

public 
fw_SetClientKeyValue(id, const infobuffer[], const key[], const value[])
{
    if (
flag_get(g_HasCustomModelid) && equal(key"model"))
    {
        static 
currentmodel[MODELNAME_MAXLENGTH]
        
fm_cs_get_user_model(idcurrentmodelcharsmax(currentmodel))
        
        if (!
equal(currentmodelg_CustomPlayerModel[id]) && !task_exists(id+TASK_MODELCHANGE))
            
fm_cs_set_user_model(id+TASK_MODELCHANGE)
        
#if defined SET_MODELINDEX_OFFSET
        
fm_cs_set_user_model_index(id)
#endif
        
        
return FMRES_SUPERCEDE;
    }
    
    return 
FMRES_IGNORED;
}

public 
fm_cs_set_user_model(taskid)
{
    
set_user_info(ID_MODELCHANGE"model"g_CustomPlayerModel[ID_MODELCHANGE])
}

stock fm_cs_set_user_model_index(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return;
    
    
set_pdata_int(idOFFSET_MODELINDEXg_CustomModelIndex[id])
}

stock fm_cs_reset_user_model_index(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return;
    
    switch (
fm_cs_get_user_team(id))
    {
        case 
CS_TEAM_T:
        {
            
set_pdata_int(idOFFSET_MODELINDEXengfunc(EngFunc_ModelIndexDEFAULT_MODELINDEX_T))
        }
        case 
CS_TEAM_CT:
        {
            
set_pdata_int(idOFFSET_MODELINDEXengfunc(EngFunc_ModelIndexDEFAULT_MODELINDEX_CT))
        }
    }
}

stock fm_cs_get_user_model(idmodel[], len)
{
    
get_user_info(id"model"modellen)
}

stock fm_cs_reset_user_model(id)
{
    
// Set some generic model and let CS automatically reset player model to default
    
copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), "gordon")
    
fm_cs_user_model_update(id+TASK_MODELCHANGE)
#if defined SET_MODELINDEX_OFFSET
    
fm_cs_reset_user_model_index(id)
#endif
}

stock fm_cs_user_model_update(taskid)
{
    new 
Float:current_time
    current_time 
get_gametime()
    
    if (
current_time g_ModelChangeTargetTime >= MODELCHANGE_DELAY)
    {
        
fm_cs_set_user_model(taskid)
        
g_ModelChangeTargetTime current_time
    
}
    else
    {
        
set_task((g_ModelChangeTargetTime MODELCHANGE_DELAY) - current_time"fm_cs_set_user_model"taskid)
        
g_ModelChangeTargetTime g_ModelChangeTargetTime MODELCHANGE_DELAY
    
}
}

stock CsTeams:fm_cs_get_user_team(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return 
CS_TEAM_UNASSIGNED;
    
    return 
CsTeams:get_pdata_int(idOFFSET_CSTEAMS);


Y el otro asi:

Código PHP:
/*Furien models by Chose
*C-strike.cz COPYRIGHT!
*/

#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <cs_player_models_api>

#define PLUGIN "Furien models"
#define VERSION "1.0"
#define AUTHOR "Chose"

new TEAM_T[64]="models/player/furien/furien.mdl"
new TEAM_CT[64]="models/player/antifurien/antifurien.mdl"

public plugin_init() {
    
register_plugin("Furien models""1.0""Chose")
    
RegisterHam(Ham_Spawn"player""fw_playerspawn"1)
    
//RegisterHam(Ham_Spawn, "player", "fw_playerspawnt", 1)
    //RegisterHam(Ham_Spawn, "player", "fw_playerspawnct", 1)
}

public 
fw_playerspawn(id)
{
    if (
cs_get_user_team(id) == CS_TEAM_CT )
    {
        
cs_set_player_model(id"furien")
    }
    else if (
cs_get_user_team(id) == CS_TEAM_T )
    {  
        
cs_set_player_model(id"antifurien")
    }
}

public 
plugin_precache()  
{  
        
precache_modelTEAM_T )
        
precache_modelTEAM_CT )    


Y el ctswitch:

Código PHP:
#include <amxmodx>
#include <cstrike>
new const VERSION[] = "0.0.3"
const MAX_PLAYERS 32
public plugin_init()
{
    
register_plugin("Switch Teams On Ct Wins"VERSION"ConnorMcLeod")
    
register_event("SendAudio""Event_SendAudio_MRAD_ctwin""a""1=0""2=%!MRAD_ctwin")
}
//http://wiki.amxmodx.org/Half-Life_1_Game_Events#SendAudio
public Event_SendAudio_MRAD_ctwin()
{
    new 
iPlayers[MAX_PLAYERS], iNumid
    get_players
(iPlayersiNum)
    for(new 
ii<iNumi++)
    {
        
id iPlayers[i]
        switch( 
cs_get_user_team(id) )
        {
            case 
CS_TEAM_T:
            {
                
cs_set_user_team(idCS_TEAM_CT)
            }
            case 
CS_TEAM_CT:
            {
                
cs_set_user_team(idCS_TEAM_T)
            }
        }
    }


Según he leido, el ctswitch da conflicto con el API pero no se por que...
Responder
#15
ese cs_set_player_models creo que está mal, fíjate como te lo puse

pruébalo antes de afirmar nada, a ver
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#16
Voy a probarlo asi:

Código PHP:
public fw_playerspawn(id)
{
    if (
cs_get_user_team(id) == CS_TEAM_CT )
    {
        
cs_set_player_model(idTEAM_CT)
    }
    else if (
cs_get_user_team(id) == CS_TEAM_T )
    {  
        
cs_set_player_model(idTEAM_T)
    }


Y la API la dejé así:

Código PHP:
new const DEFAULT_MODELINDEX_T[] = "models/player/furien/furien.mdl"
new const DEFAULT_MODELINDEX_CT[] = "models/player/antifurien/antifurien.mdl" 

Y me sale este error:

Código PHP:
L 01/20/2014 13:08:03: [CSTRIKEInvalid player 3
L 01
/20/2014 13:08:03: [AMXXDisplaying debug trace (plugin "furien_models.amxx")
L 01/20/2014 13:08:03: [AMXXRun time error 10native error (native "cs_get_user_team")
L 01/20/2014 13:08:03: [AMXX]    [0furien_models.sma::fw_playerspawn (line 26

Esa linea es: if (cs_get_user_team(id) == CS_TEAM_CT )
Responder
#17
verifica que este vivo antes de obtener el team
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#18
if (cs_get_user_team(id) == CS_TEAM_CT )

-->

if (get_user_team(id) == 2 )

yo tenia problemas con eso... utilize de esta manera y empezo a compilar mejor y sin tanto quilombo, fijate si te cambia en algo
Responder
#19
cs_get_user_team es mas efectivo. y esta bien lo que yo le puse.
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#20
Lo puse asi:

Código PHP:
public fw_playerspawn(id)
{
    
//if (cs_get_user_team(id) == CS_TEAM_CT )
    
if (is_user_alive(id) && (get_user_team(id) == ))
    {
        
cs_set_player_model(idTEAM_CT)
    }
    else if (
is_user_alive(id) && (cs_get_user_team(id) == CS_TEAM_T ))
    {  
        
cs_set_player_model(idTEAM_T)
    }


Errores:

Por ahora ninguno pero los skins no se cambian...alguna idea?

Subo los 3 archivos para que veais lo que tengo.


Archivos adjuntos
.sma   Descargar AMXX / ctswitch.sma (Tamaño: 816 bytes / Descargas: 125)
.sma   Descargar AMXX / furien_models.sma (Tamaño: 1.01 KB / Descargas: 29)
.sma   Descargar AMXX / cs_player_models_api.sma (Tamaño: 6.54 KB / Descargas: 132)
Responder
#21
en la API no tienes que cambiar nada
(17/04/2015, 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
Responder
#22
Vale, lo dejé así en API y sigue sin funcionar, solo modifique eso nada más:

Código PHP:
new const DEFAULT_MODELINDEX_T[] = "models/player/terror/terror.mdl"
new const DEFAULT_MODELINDEX_CT[] = "models/player/urban/urban.mdl" 

No entiendo por que se complican tanto con los models...de verdad :/
Responder
#23
Te tira algun log/error el plugin? No puede ser que no funcione, deja el codigo entero de tu plugin
Responder
#24
Archivo ctswitch.sma:

Código PHP:
#include <amxmodx>
#include <cstrike>
new const VERSION[] = "0.0.3"
const MAX_PLAYERS 32
public plugin_init()
{
    
register_plugin("Switch Teams On Ct Wins"VERSION"ConnorMcLeod")
    
register_event("SendAudio""Event_SendAudio_MRAD_ctwin""a""1=0""2=%!MRAD_ctwin")
}
//http://wiki.amxmodx.org/Half-Life_1_Game_Events#SendAudio
public Event_SendAudio_MRAD_ctwin()
{
    new 
iPlayers[MAX_PLAYERS], iNumid
    get_players
(iPlayersiNum)
    for(new 
ii<iNumi++)
    {
        
id iPlayers[i]
        switch( 
cs_get_user_team(id) )
        {
            case 
CS_TEAM_T:
            {
                
cs_set_user_team(idCS_TEAM_CT)
            }
            case 
CS_TEAM_CT:
            {
                
cs_set_user_team(idCS_TEAM_T)
            }
        }
    }


Archivo furien_models.sma:

Código PHP:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <cs_player_models_api>

#define PLUGIN "Furien models"
#define VERSION "1.0"
#define AUTHOR "Chose"

new TEAM_T[64]="models/player/furien/furien.mdl"
new TEAM_CT[64]="models/player/antifurien/antifurien.mdl"

public plugin_init() {
    
register_plugin("Furien models""1.0""Chose")
    
RegisterHam(Ham_Spawn"player""fw_playerspawn"1)
    
//RegisterHam(Ham_Spawn, "player", "fw_playerspawnt", 1)
    //RegisterHam(Ham_Spawn, "player", "fw_playerspawnct", 1)
}

public 
fw_playerspawn(id)
{
    
//if (cs_get_user_team(id) == CS_TEAM_CT )
    
if (is_user_alive(id) && (get_user_team(id) == ))
    {
        
cs_set_player_model(idTEAM_CT)
    }
    else if (
is_user_alive(id) && (cs_get_user_team(id) == CS_TEAM_T ))
    {  
        
cs_set_player_model(idTEAM_T)
    }
}

public 
plugin_precache()  
{  
        
precache_modelTEAM_T )
        
precache_modelTEAM_CT )    


Archivo cs_player_models_api.sma:

Código PHP:
/*================================================================================
    
    ----------------------------------
    -*- [CS] Player Models API 1.2 -*-
    ----------------------------------
    
    - Allows easily setting and restoring custom player models in CS and CZ
       (models last until player disconnects or are manually reset)
    - Built-in SVC_BAD prevention
    - Support for custom hitboxes (model index offset setting)
    - You still need to precache player models in your plugin!
    
    Original thread:
    http://forums.alliedmods.net/showthread.php?t=161255
    
================================================================================*/

// Delay between model changes (increase if getting SVC_BAD kicks)
#define MODELCHANGE_DELAY 0.2

// Delay after roundstart (increase if getting kicks at round start)
#define ROUNDSTART_DELAY 2.0

// Enable custom hitboxes (experimental, might lag your server badly with some models)
//#define SET_MODELINDEX_OFFSET

/*=============================================================================*/

#include <amxmodx>
#include <cstrike>
#include <fakemeta>

#define MAXPLAYERS 32
#define MODELNAME_MAXLENGTH 32

#define TASK_MODELCHANGE 100
#define ID_MODELCHANGE (taskid - TASK_MODELCHANGE)

new const DEFAULT_MODELINDEX_T[] = "models/player/terror/terror.mdl"
new const DEFAULT_MODELINDEX_CT[] = "models/player/urban/urban.mdl"

// CS Player PData Offsets (win32)
#define PDATA_SAFE 2
#define OFFSET_CSTEAMS 114
#define OFFSET_MODELINDEX 491 // Orangutanz

#define flag_get(%1,%2)        (%1 & (1 << (%2 & 31)))
#define flag_set(%1,%2)        (%1 |= (1 << (%2 & 31)));
#define flag_unset(%1,%2)    (%1 &= ~(1 << (%2 & 31)));

new g_MaxPlayers
new g_HasCustomModel
new Float:g_ModelChangeTargetTime
new g_CustomPlayerModel[MAXPLAYERS+1][MODELNAME_MAXLENGTH]
#if defined SET_MODELINDEX_OFFSET
new g_CustomModelIndex[MAXPLAYERS+1]
#endif

public plugin_init()
{
    
register_plugin("[CS] Player Models API""1.2""WiLS")
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_forward(FM_SetClientKeyValue"fw_SetClientKeyValue")
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_natives()
{
    
register_library("cs_player_models_api")
    
register_native("cs_set_player_model""native_set_player_model")
    
register_native("cs_reset_player_model""native_reset_player_model")
}

public 
native_set_player_model(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[CS] Player is not in game (%d)"id)
        return 
false;
    }
    
    new 
newmodel[MODELNAME_MAXLENGTH]
    
get_string(2newmodelcharsmax(newmodel))
    
    
remove_task(id+TASK_MODELCHANGE)
    
flag_set(g_HasCustomModelid)
    
    
copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), newmodel)
    
#if defined SET_MODELINDEX_OFFSET    
    
new modelpath[32+(2*MODELNAME_MAXLENGTH)]
    
formatex(modelpathcharsmax(modelpath), "models/player/%s/%s.mdl"newmodelnewmodel)
    
g_CustomModelIndex[id] = engfunc(EngFunc_ModelIndexmodelpath)
#endif
    
    
new currentmodel[MODELNAME_MAXLENGTH]
    
fm_cs_get_user_model(idcurrentmodelcharsmax(currentmodel))
    
    if (!
equal(currentmodelnewmodel))
        
fm_cs_user_model_update(id+TASK_MODELCHANGE)
    
    return 
true;
}

public 
native_reset_player_model(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[CS] Player is not in game (%d)"id)
        return 
false;
    }
    
    
// Player doesn't have a custom model, no need to reset
    
if (!flag_get(g_HasCustomModelid))
        return 
true;
    
    
remove_task(id+TASK_MODELCHANGE)
    
flag_unset(g_HasCustomModelid)
    
fm_cs_reset_user_model(id)
    
    return 
true;
}

public 
client_disconnect(id)
{
    
remove_task(id+TASK_MODELCHANGE)
    
flag_unset(g_HasCustomModelid)
}

public 
event_round_start()
{
    
// An additional delay is offset at round start
    // since SVC_BAD is more likely to be triggered there
    
g_ModelChangeTargetTime get_gametime() + ROUNDSTART_DELAY
    
    
// If a player has a model change task in progress,
    // reschedule the task, since it could potentially
    // be executed during roundstart
    
new player
    
for (player 1player <= g_MaxPlayersplayer++)
    {
        if (
task_exists(player+TASK_MODELCHANGE))
        {
            
remove_task(player+TASK_MODELCHANGE)
            
fm_cs_user_model_update(player+TASK_MODELCHANGE)
        }
    }
}

public 
fw_SetClientKeyValue(id, const infobuffer[], const key[], const value[])
{
    if (
flag_get(g_HasCustomModelid) && equal(key"model"))
    {
        static 
currentmodel[MODELNAME_MAXLENGTH]
        
fm_cs_get_user_model(idcurrentmodelcharsmax(currentmodel))
        
        if (!
equal(currentmodelg_CustomPlayerModel[id]) && !task_exists(id+TASK_MODELCHANGE))
            
fm_cs_set_user_model(id+TASK_MODELCHANGE)
        
#if defined SET_MODELINDEX_OFFSET
        
fm_cs_set_user_model_index(id)
#endif
        
        
return FMRES_SUPERCEDE;
    }
    
    return 
FMRES_IGNORED;
}

public 
fm_cs_set_user_model(taskid)
{
    
set_user_info(ID_MODELCHANGE"model"g_CustomPlayerModel[ID_MODELCHANGE])
}

stock fm_cs_set_user_model_index(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return;
    
    
set_pdata_int(idOFFSET_MODELINDEXg_CustomModelIndex[id])
}

stock fm_cs_reset_user_model_index(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return;
    
    switch (
fm_cs_get_user_team(id))
    {
        case 
CS_TEAM_T:
        {
            
set_pdata_int(idOFFSET_MODELINDEXengfunc(EngFunc_ModelIndexDEFAULT_MODELINDEX_T))
        }
        case 
CS_TEAM_CT:
        {
            
set_pdata_int(idOFFSET_MODELINDEXengfunc(EngFunc_ModelIndexDEFAULT_MODELINDEX_CT))
        }
    }
}

stock fm_cs_get_user_model(idmodel[], len)
{
    
get_user_info(id"model"modellen)
}

stock fm_cs_reset_user_model(id)
{
    
// Set some generic model and let CS automatically reset player model to default
    
copy(g_CustomPlayerModel[id], charsmax(g_CustomPlayerModel[]), "gordon")
    
fm_cs_user_model_update(id+TASK_MODELCHANGE)
#if defined SET_MODELINDEX_OFFSET
    
fm_cs_reset_user_model_index(id)
#endif
}

stock fm_cs_user_model_update(taskid)
{
    new 
Float:current_time
    current_time 
get_gametime()
    
    if (
current_time g_ModelChangeTargetTime >= MODELCHANGE_DELAY)
    {
        
fm_cs_set_user_model(taskid)
        
g_ModelChangeTargetTime current_time
    
}
    else
    {
        
set_task((g_ModelChangeTargetTime MODELCHANGE_DELAY) - current_time"fm_cs_set_user_model"taskid)
        
g_ModelChangeTargetTime g_ModelChangeTargetTime MODELCHANGE_DELAY
    
}
}

stock CsTeams:fm_cs_get_user_team(id)
{
    if (
pev_valid(id) != PDATA_SAFE)
        return 
CS_TEAM_UNASSIGNED;
    
    return 
CsTeams:get_pdata_int(idOFFSET_CSTEAMS);


Esos son exactamente los que tengo puestos, esos mismos y no me los cambia. Lo que yo quiero es que me ponga estos modelos furien.mdl y antifurien.mdl

Saludos!
Responder
#25
Hace esto, proba y decime...
Código PHP:
public fw_playerspawn(id)
{
    
//if (cs_get_user_team(id) == CS_TEAM_CT )
    
if (is_user_alive(id) && (get_user_team(id) == ))
    {
        
cs_set_player_model(idTEAM_CT)
    }
    else if (
is_user_alive(id) && (cs_get_user_team(id) == CS_TEAM_T ))
    {  
        
cs_set_player_model(idTEAM_T)
    }


---->

Código PHP:
public fw_playerspawn(id)
{
    
//if (cs_get_user_team(id) == CS_TEAM_CT )
    
if (is_user_alive(id) && (get_user_team(id) == ))
    {
        
cs_set_player_model(id"furien")
    }
    else if (
is_user_alive(id) && (cs_get_user_team(id) == CS_TEAM_T ))
    {  
        
cs_set_player_model(id"antifurien")
    }

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)