PHP Code:
#include <amxmodx>
#include <cromchat>
#include <cstrike>
#include <hamsandwich>
#include <cs_player_models_api>
#if !defined MAX_PLAYERS
const MAX_PLAYERS = 32
#endif
enum _:ModelInfo
{
szModelName[64],
CsTeams:szTeam,
iGender,
szModelPath[64]
}
enum {
Male = 1,
Female = 2
}
new const g_eModels[][ModelInfo] =
{
{ "Special_CT", CS_TEAM_CT, Male, "models/player/Special_CT/Special_CT.mdl" },
{ "Special_CT2", CS_TEAM_CT, Male, "models/player/Special_CT2/Special_CT2.mdl" },
// CT Female
{ "Perfect", CS_TEAM_CT, Female, "models/player/Perfect/Perfect.mdl" },
{ "Pirate", CS_TEAM_CT, Female, "models/player/pirate/pirate.mdl" },
// TR Male
{ "Trey", CS_TEAM_T, Male, "models/player/trey/trey.mdl" },
{ "Fast", CS_TEAM_T, Male, "models/player/fast/fast.mdl" },
// TR Female
{ "Ashley", CS_TEAM_T, Female, "models/player/ashley/ashley.mdl" },
{ "Nyjon", CS_TEAM_T, Female, "models/player/Nyjon/Nyjon.mdl" },
}
const INVALID_SKIN = -1
const MENU_ACCESS_FLAG = ADMIN_LEVEL_H
const Float:CONNECT_MSG_DELAY = 5.0
new g_iModel[MAX_PLAYERS + 1][CsTeams]
public plugin_init()
{
register_plugin("Models Menu", "1.0", "OciXCrom")
RegisterHam(Ham_Spawn, "player", "OnPlayerSpawn", 1)
register_clcmd("say /vip", "Cmd_VipSkin")
register_clcmd("say_team /vip", "Cmd_VipSkin")
CC_SetPrefix("&x04[Prefix]")
}
public plugin_precache()
{
for(new i; i < sizeof(g_eModels); i++)
{
precache_player_model(g_eModels[i][szModelName])
}
}
public client_putinserver(id)
{
for(new CsTeams:iTeam = CS_TEAM_UNASSIGNED; iTeam <= CS_TEAM_SPECTATOR; iTeam++)
{
g_iModel[id][iTeam] = INVALID_SKIN
}
set_task(CONNECT_MSG_DELAY, "DisplayMessage", id)
}
public DisplayMessage(id)
{
if(is_user_connected(id) && has_menu_access(id))
{
CC_SendMessage(id, "Type &x03/vipskin &x01to open the &x04VIP Skin Menu")
}
}
public OnPlayerSpawn(id)
{
if(!is_user_alive(id))
{
return
}
new iModel = g_iModel[id][cs_get_user_team(id)]
if(iModel == INVALID_SKIN)
{
return
}
cs_set_user_model(id, g_eModels[iModel][szModelPath])
}
public Cmd_VipSkin(id)
{
if(!has_menu_access(id))
{
CC_SendMessage(id, "Only vips can open this menu, sorry!")
return PLUGIN_HANDLED
}
new CsTeams:csTeam = cs_get_user_team(id);
new iMenu = menu_create("Selecione Sua skin111", "VipSkin_Handler")
for(new i, szItemIndex[2]; i < sizeof(g_eModels); i++)
{
if(g_eModels[i][szTeam] == csTeam)
{
num_to_str(i, szItemIndex, charsmax(szItemIndex));
menu_additem(iMenu, g_eModels[i][szModelName], szItemIndex);
}
}
menu_setprop(iMenu, MPROP_EXITNAME, "Sair")
menu_display(id, iMenu)
return PLUGIN_HANDLED
}
public VipSkin_Handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new szItemIndex[2];
menu_item_getinfo(menu, item, _, szItemIndex, charsmax(szItemIndex), _, _, _);
g_iModel[id][cs_get_user_team(id)] = str_to_num(szItemIndex);
return PLUGIN_CONTINUE;
}
bool:has_menu_access(id)
{
return (get_user_flags(id) & MENU_ACCESS_FLAG) != 0
}
precache_player_model(const szModel[], &id = 0)
{
new model[128]
formatex(model, charsmax(model), "models/player/%s/%sT.mdl", szModel, szModel)
if(file_exists(model))
id = precache_generic(model)
static const extension[] = "T.mdl"
#pragma unused extension
copy(model[strlen(model) - charsmax(extension)], charsmax(model), ".mdl")
return precache_model(model)
}