Здравствуйте.
Добавил еще две модели для т и кт, поставил на сервер он упал.
Код:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#define MAX_PLAYERS 32
#define BIT_VALID(%1,%2) ((%1) & (1 << ((%2) - 1)))
#define BIT_ADD(%1,%2) ((%1) |= (1 << ((%2) - 1)))
#define BIT_SUB(%1,%2) ((%1) &= ~(1 << ((%2) - 1)))
#define BIT_NOT_VALID(%1,%2) (~(%1) & (1 << ((%2) - 1)))
new g_iBitClientAccess, g_iBitCustomModel;
new g_iBitJenAccess, g_iBitJenModel;
public plugin_init()
{
register_plugin("Lady Models", "0.1b", "Freedo.m");
RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
register_forward(FM_SetClientKeyValue, "FM_SetClientKeyValue_Pre", 0);
}
public plugin_precache()
{
precache_model("models/player/vip_t/vip_t.mdl");
precache_model("models/player/vip_ct/vip_ct.mdl");
precache_model("models/player/vip_jt/vip_jt.mdl");
precache_model("models/player/vip_jct/vip_jct.mdl");
}
public client_putinserver(id)
{
if(~get_user_flags(id) & ADMIN_IMMUNITY) return;
BIT_ADD(g_iBitClientAccess, id);
if(~get_user_flags(id) & ADMIN_LEVEL_E) return;
BIT_ADD(g_iBitJenAccess, id);
}
public client_disconnect(id)
{
BIT_SUB(g_iBitClientAccess, id);
BIT_SUB(g_iBitCustomModel, id);
BIT_SUB(g_iBitJenAccess, id);
BIT_SUB(g_iBitJenModel, id);
}
public Ham_PlayerSpawn_Post(id)
{
if(BIT_VALID(g_iBitClientAccess, id) && is_user_alive(id))
{
switch(cs_get_user_team(id))
{
case CS_TEAM_T: fm_cs_set_user_model(id, "vip_t");
case CS_TEAM_CT: fm_cs_set_user_model(id, "vip_ct");
}
}
if(BIT_VALID(g_iBitJenAccess, id) && is_user_alive(id))
{
switch(cs_get_user_team(id))
{
case CS_TEAM_T: fm_cs_set_user_model(id, "vip_jt");
case CS_TEAM_CT: fm_cs_set_user_model(id, "vip_jct");
}
}
}
new g_szPlayerModel[MAX_PLAYERS + 1][32];
public FM_SetClientKeyValue_Pre(id, const szInfobuffer[], const szKey[])
{
if(BIT_VALID(g_iBitCustomModel, id) && equal(szKey, "model"))
{
static szCurrentModel[32];
fm_cs_get_user_model(id, szCurrentModel, charsmax(szCurrentModel));
if(!equal(szCurrentModel, g_szPlayerModel[id])) fm_cs_set_user_model(id, g_szPlayerModel[id]);
return FMRES_SUPERCEDE;
}
if(BIT_VALID(g_iBitJenModel, id) && equal(szKey, "model"))
{
static szCurrentModel[32];
fm_cs_get_user_model(id, szCurrentModel, charsmax(szCurrentModel));
if(!equal(szCurrentModel, g_szPlayerModel[id])) fm_cs_set_user_model(id, g_szPlayerModel[id]);
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
stock fm_cs_get_user_model(id, szModel[], szLen) engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", szModel, szLen);
stock fm_cs_set_user_model(id, const szModelName[])
{
engfunc(EngFunc_SetClientKeyValue, id, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", szModelName);
copy(g_szPlayerModel[id], charsmax(g_szPlayerModel[]), szModelName);
BIT_ADD(g_iBitCustomModel, id);
BIT_ADD(g_iBitJenModel, id);
}
stock fm_cs_reset_user_model(id)
{
BIT_SUB(g_iBitCustomModel, id);
BIT_SUB(g_iBitJenModel, id);
dllfunc(DLLFunc_ClientUserInfoChanged, id, engfunc(EngFunc_GetInfoKeyBuffer, id));
}
Что я сделал не так?
Отредактировал: DRIVE37, - 31.10.2015, 16:06