Re: Models Menu enum
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"), szItem[64];
for(new i, szItemIndex[2]; i < sizeof(g_eModels); i++) { if(g_eModels[i][szTeam] == csTeam) { num_to_str(i, szItemIndex, charsmax(szItemIndex)); formatex(szItem, charsmax(szItem), "%s \d-\r [%s]", g_eModels[i][szModelName], g_eModels[i][iGender] == Male ? "MALE" : "FEMALE"); menu_additem(iMenu, szItem, 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) }
don t have enough time for this
|