RSSy MYGO.pl Opublikowano Styczeń 22, 2022 o 23:29 RSSy Udostępnij Opublikowano Styczeń 22, 2022 o 23:29 Hi, can anyone edit the code below Adding the default jailbreak models from the edited OcixCrom mod : https://www.amxx-bg.info/forum/viewt...hp?f=96&t=2420 By just putting it on by default Because otherwise are the normal models of cs terror / guerrilla, etc. Php code: #include <amxmodx> #include <amxmisc> #include <fakemeta> #include <hamsandwich> #include <fvault> #define VERSION "1.2" new Array:g_szNames, Array:g_szModel, Array:g_szFlag, Array:g_iTeam, Trie:UserModel[2] new iTotalModels, iCurrentModel[33] new p_admin_only, p_admin_flag, p_set_atm, p_save new const szDefaultModels[][][] = { { "terror", "leet", "arctic", "guerilla" }, { "urban", "gsg9", "sas", "gign" } } new const szPrefix[] = "ModelsMenu" new const szFVaultFile[] = "models_menu" public plugin_init() { register_plugin("Models Menu", VERSION, "TheRedShoko") register_cvar("models_menu", VERSION, FCVAR_SERVER | FCVAR_SPONLY) register_clcmd("say /models", "show_model_menu") register_clcmd("say_team /models", "show_model_menu") RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawnPost", 1) register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue") p_admin_only = register_cvar("models_menu_adminonly", "0") p_admin_flag = register_cvar("models_menu_adminflag", "a") p_set_atm = register_cvar("models_menu_setnow", "1") p_save = register_cvar("models_menu_save", "1") } public plugin_precache() { g_szNames = ArrayCreate(32, 1) g_szModel = ArrayCreate(32, 1) g_szFlag = ArrayCreate(8, 1) g_iTeam = ArrayCreate(8, 1) UserModel[0] = TrieCreate() UserModel[1] = TrieCreate() load_menu_file() load_user_file() } public plugin_end() { ArrayDestroy(g_szNames) ArrayDestroy(g_szModel) ArrayDestroy(g_szFlag) ArrayDestroy(g_iTeam) TrieDestroy(UserModel[0]) TrieDestroy(UserModel[1]) } public client_putinserver(id) { if (get_pcvar_num(p_save)) { LoadModel(id) } } public client_disconnect(id) { if (get_pcvar_num(p_save)) { SaveModel(id) } } public fw_PlayerSpawnPost(id) { if (is_user_alive(id) && 1 <= get_user_team(id) <= 2) { new szModel[32] if (iCurrentModel[id]) { new iTeam = ArrayGetCell(g_iTeam, iCurrentModel[id]) if (iTeam && get_user_team(id) == iTeam) { ArrayGetString(g_szModel, iCurrentModel[id], szModel, charsmax(szModel)) } else if (iTeam) { ColorMessage(id, "^x04[%s]^x01 Your current model is not for your team!", szPrefix) } } if (szModel[0] == EOS) { new szName[32] get_user_name(id, szName, charsmax(szName)) if (TrieKeyExists(UserModel[get_user_team(id) - 1], szName)) { TrieGetString(UserModel[get_user_team(id) - 1], szName, szModel, charsmax(szModel)) } else { copy(szModel, charsmax(szModel), szDefaultModels[get_user_team(id) - 1][random(sizeof(szDefaultModels[]))]) } } set_user_info(id, "model", szModel) } } public show_model_menu(id) { new szFlag[8] get_pcvar_string(p_admin_flag, szFlag, charsmax(szFlag)) if (get_pcvar_num(p_admin_only) && !(get_user_flags(id) & read_flags(szFlag))) { ColorMessage(id, "^x04[%s]^x01 This menu is currently^x03 Admin Only^x01!", szPrefix) return PLUGIN_HANDLED } new iMenu = menu_create("\rModels Menu^n\yChoose a model:", "model_handler") new szName[64] for (new i = 0; i < iTotalModels; i++) { ArrayGetString(g_szNames, i, szName, charsmax(szName)) menu_additem(iMenu, szName, _, _, menu_makecallback("model_callback")) } menu_display(id, iMenu) return PLUGIN_HANDLED } public model_callback(id, iMenu, Item) { new szFlag[8] ArrayGetString(g_szFlag, Item, szFlag, charsmax(szFlag)) new iFlags = get_user_flags(id) new iTeam = ArrayGetCell(g_iTeam, Item) new szName[64], szInfo[1], iCallback, iAccess menu_item_getinfo(iMenu, Item, iAccess, szInfo, charsmax(szInfo), szName, charsmax(szName), iCallback) if (equal(szName, "ERROR")) { add(szName, charsmax(szName), " \r(Failed to load model)") menu_item_setname(iMenu, Item, szName) return ITEM_DISABLED } new szToAdd[64] if (szFlag[0] != EOS) { formatex(szToAdd, charsmax(szToAdd), " \%s(Admin Only)", (iFlags & read_flags(szFlag)) ? "y" : "r") add(szName, charsmax(szName), szToAdd) } if (1 <= iTeam <= 2) { formatex(szToAdd, charsmax(szToAdd), " \%s(%s)", (get_user_team(id) == iTeam) ? "y" : "r", (iTeam == 1) ? "Terrorist Only" : "CT Only") add(szName, charsmax(szName), szToAdd) } menu_item_setname(iMenu, Item, szName) if (Item == iCurrentModel[id] || 1 <= iTeam <= 2 && get_user_team(id) != iTeam || !(iFlags & read_flags(szFlag)) && szFlag[0] != EOS) { return ITEM_DISABLED } return ITEM_ENABLED } public model_handler(id, iMenu, Item) { if (Item == MENU_EXIT) { menu_destroy(iMenu) return } iCurrentModel[id] = Item new szName[32] ArrayGetString(g_szNames, Item, szName, charsmax(szName)) if (is_user_alive(id) && get_pcvar_num(p_set_atm) && 1 <= get_user_team(id) <= 2) { new szModel[32] if (Item) { ArrayGetString(g_szModel, Item, szModel, charsmax(szModel)) } else { new szName[32] get_user_name(id, szName, charsmax(szName)) if (TrieKeyExists(UserModel[get_user_team(id) - 1], szName)) { TrieGetString(UserModel[get_user_team(id) - 1], szName, szModel, charsmax(szModel)) } else { copy(szModel, charsmax(szModel), szDefaultModels[get_user_team(id) - 1][random(sizeof(szDefaultModels[]))]) } } set_user_info(id, "model", szModel) ColorMessage(id, "^x04[%s]^x01 Your model is now^x03 %s^x01!", szPrefix, szName) } else { ColorMessage(id, "^x04[%s]^x01 Your model will be changed to^x03 %s^x01 after your next spawn!", szPrefix, szName) } menu_destroy(iMenu) } load_menu_file() { new szFile[128] get_configsdir(szFile, charsmax(szFile)) add(szFile, charsmax(szFile), "/models.ini") new iLine, szData[128], buffer new szName[32], szModel[32], szFlag[8], szTeam[8], iTeam if (file_exists(szFile)) { iTotalModels = 1 ArrayPushString(g_szNames, "Default") ArrayPushString(g_szModel, "") ArrayPushString(g_szFlag, "") ArrayPushCell(g_iTeam, 0) while ( (iLine = read_file(szFile, iLine, szData, charsmax(szData), buffer)) ) { if (szData[0] == EOS || szData[0] == '/' && szData[1] == '/' || szData[0] == ';') continue parse(szData, szName, charsmax(szName), szModel, charsmax(szModel), szFlag, charsmax(szFlag), szTeam, charsmax(szTeam)) switch (szTeam[0]) { case 'T', 't': { iTeam = 1 } case 'c', 'C': { iTeam = 2 } default: { iTeam = 0 } } if (try_to_precache(szModel)) { ArrayPushString(g_szNames, szName) ArrayPushString(g_szModel, szModel) ArrayPushString(g_szFlag, szFlag) ArrayPushCell(g_iTeam, iTeam) } else { ArrayPushString(g_szNames, "ERROR") ArrayPushString(g_szModel, "") ArrayPushString(g_szFlag, "") ArrayPushCell(g_iTeam, 0) } iTotalModels++ } } else { new iFile = fopen(szFile, "wt") if (iFile) { new szLine[256] formatex(szLine, charsmax(szLine), "; Player models menu by TheRedShoko^n; Usage: ^"Name to be displayed in the menu^" ^"Name of the model^" ^"Admin flag^" ^"T | CT | 0^"") fputs(iFile, szLine) fclose(iFile) } } } load_user_file() { new szFile[128] get_configsdir(szFile, charsmax(szFile)) add(szFile, charsmax(szFile), "/user_models.ini") new iLine, szData[128], buffer new szName[32], szModel[2][32] if (file_exists(szFile)) { while ( (iLine = read_file(szFile, iLine, szData, charsmax(szData), buffer)) ) { if (szData[0] == EOS || szData[0] == '/' && szData[1] == '/' || szData[0] == ';') continue parse(szData, szName, charsmax(szName), szModel[0], charsmax(szModel[]), szModel[1], charsmax(szModel[])) for (new i = 0; i < sizeof(szModel); i++) { if (szModel[i][0] != EOS && try_to_precache(szModel[i])) { TrieSetString(UserModel[i], szName, szModel[i]) } } } } else { new iFile = fopen(szFile, "wt") if (iFile) { new szLine[256] formatex(szLine, charsmax(szLine), "; Player models menu by TheRedShoko^n; Usage: ^"Player Name^" ^"Name of the model for terrorist^" ^"Name of model for CT^"") fputs(iFile, szLine) fclose(iFile) } } } SaveModel(id) { new szData[8], szName[32] get_user_name(id, szName, charsmax(szName)) num_to_str(iCurrentModel[id], szData, charsmax(szData)) fvault_set_data(szFVaultFile, szName, szData) } LoadModel(id) { new szData[8], szName[32] get_user_name(id, szName, charsmax(szName)) if (fvault_get_data(szFVaultFile, szName, szData, charsmax(szData))) { iCurrentModel[id] = str_to_num(szData) } else { iCurrentModel[id] = 0 } } public fw_SetClientKeyValue(id, szInfoBuffer[], szKey[], szValue[]) { if (equal(szKey, "model")) { return FMRES_SUPERCEDE } return FMRES_IGNORED } try_to_precache(model[]) { new szModel[64] formatex(szModel, charsmax(szModel), "models/player/%s/%s.mdl", model, model) if (!file_exists(szModel)) { log_amx("Failed to precache ^"%s^"! File is missing or may have wrong name!", szModel) return 0; } precache_generic(szModel) return 1 } stock ColorMessage(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); if (id) players[0] = id; else get_players(players , count , "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE , get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1026\\ f0\\ fs16 \n\\ par } */ Sorry for my poor english Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi