RSSy MYGO.pl Opublikowano Październik 8, 2020 o 19:07 RSSy Udostępnij Opublikowano Październik 8, 2020 o 19:07 Code: #include <amxmodx> #include <amxmisc> #include <cs_player_models_api> #include <hamsandwich> #include <fakemeta> #include <nvault> #include <sqlx> #define PLUGIN "CSO Costumes" #define VERSION "3.8" #define AUTHOR "Smilex_Gamer" //#define ZP_SUPPORT #if defined ZP_SUPPORT #include <zombieplague> #endif #if !defined client_disconnected #define client_disconnected client_disconnect #endif #define PREFIX_CHAT "!g[CSO Costumes]!n" #define PREFIX_MENU "\r[CSO Costumes]" #define MAX_COSTUMES 257 #if defined ZP_SUPPORT new Total_Skin = 1 #else new Total_SkinCT = 1, Total_SkinTR = 1 #endif new File[64], Total_Head = 1, Total_Back = 1, Total_Pelvis = 1 new Handle:g_SqlTuple, g_Error[512], g_Vault, g_szAuthID[33][35] enum _:Configuration { Cash_per_Kill, Saving_Method, Host[128], User[128], Pass[128], Db[128], Table[128], Vault[128], ZP43_Support } enum _:Vars { g_name[128], g_price, g_model[128], g_anim, g_preview[128] } enum _:Vars2 { #if defined ZP_SUPPORT g_skin, g_acquiredSkin[MAX_COSTUMES], #else g_skinct, g_skintr, g_acquiredSkinCT[MAX_COSTUMES], g_acquiredSkinTR[MAX_COSTUMES], #endif g_head, g_back, g_pelvis, g_cash, g_buying, g_costume, g_CostumeModelHead, g_CostumeModelBack, g_CostumeModelPelvis, g_acquiredHead[MAX_COSTUMES], g_acquiredBack[MAX_COSTUMES], g_acquiredPelvis[MAX_COSTUMES], bool:is_connected, bool:is_bot_or_hltv } #if defined ZP_SUPPORT new Costumes_Skin[MAX_COSTUMES][Vars] #else new Costumes_SkinCT[MAX_COSTUMES][Vars], Costumes_SkinTR[MAX_COSTUMES][Vars] #endif new Costumes_Head[MAX_COSTUMES][Vars], Costumes_Back[MAX_COSTUMES][Vars], Costumes_Pelvis[MAX_COSTUMES][Vars], g_vars[33][Vars2], g_settings[Configuration] #if defined ZP_SUPPORT const y = 1; const z = 3 #else const y = 2; const z = 4 #endif public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_cvar("CSOCostumes", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED) register_dictionary("cso_costumes.txt") RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1) register_event("DeathMsg", "Event_DeathMsg", "a") register_clcmd("say /costumes", "clcmd_costumes") register_clcmd("say_team /costumes", "clcmd_costumes") register_clcmd("say /inventory", "clcmd_inventory") register_clcmd("say_team /inventory", "clcmd_inventory") register_clcmd("say /shop", "clcmd_shop") register_clcmd("say_team /shop", "clcmd_shop") register_clcmd("say /deactivate", "clcmd_deactivate") register_clcmd("say_team /deactivate", "clcmd_deactivate") register_clcmd("say /cash", "clcmd_cash") register_clcmd("say_team /cash", "clcmd_cash") register_concmd("costumes_give_cash", "Cmd_GiveCash", ADMIN_RCON, "<nick|#userid> <amount>") if(g_settings[Saving_Method] != 0) { register_event("TextMsg", "Save_Data", "a", "2=#Game_Commencing", "2=#Game_will_restart_in") register_event("SendAudio", "Save_Data", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw") register_forward(FM_Sys_Error, "Save_Data") register_forward(FM_GameShutdown, "Save_Data") register_forward(FM_ServerDeactivate, "Save_Data") switch(g_settings[Saving_Method]) { case 1: Nvault_Init() case 2: MySql_Init() } } } public plugin_precache() { new cfgDir[32] get_configsdir(cfgDir, charsmax(cfgDir)) formatex(File, charsmax(File), "%s/costumes.ini", cfgDir) Load_Configuration(0) Load_Costumes() #if defined ZP_SUPPORT for(new i = 1; i < Total_Skin; i++) { precache_player_model(Costumes_Skin[i][g_model]) } #else for(new i = 1; i < Total_SkinCT; i++) { precache_player_model(Costumes_SkinCT[i][g_model]) } for(new i = 1; i < Total_SkinTR; i++) { precache_player_model(Costumes_SkinTR[i][g_model]) } #endif for(new i = 1; i < Total_Head; i++) { precache_model(Costumes_Head[i][g_model]) } for(new i = 1; i < Total_Back; i++) { precache_model(Costumes_Back[i][g_model]) } for(new i = 1; i < Total_Pelvis; i++) { precache_model(Costumes_Pelvis[i][g_model]) } } public plugin_end() { switch(g_settings[Saving_Method]) { case 1: nvault_close(g_Vault) case 2: SQL_FreeHandle(g_SqlTuple) } } Load_Configuration(MySQL_to_Nvault) { if(file_exists(File)) { new sfLineData[256] new file = fopen(File, "rt") while(file && !feof(file)) { fgets(file, sfLineData, charsmax(sfLineData)) if(sfLineData[0] == ';' || strlen(sfLineData) <= 2 || (sfLineData[0] == '/' && sfLineData[1] == '/')) { continue } new Config[32], Value[128] parse(sfLineData, Config, charsmax(Config), Value, charsmax(Value)) new value = str_to_num(Value) if(MySQL_to_Nvault) { if(equal(Config, "VAULT")) { if(!Value[0]) { server_print("[CSO Costumes] No Vault name was defined! Continuing with the default setting: ^"cso_costumes^".") copy(g_settings[Vault], charsmax(g_settings[Vault]), "cso_costumes") } else { copy(g_settings[Vault], charsmax(g_settings[Vault]), Value) } Nvault_Init() break } else { continue } } if(equal(Config, "CASH_PER_KILL")) { if(value <= 0) { server_print("[CSO Costumes] Cash per kill is less than or equal to 0! Continuing with the default setting: 5.") g_settings[Cash_per_Kill] = 5 } else { g_settings[Cash_per_Kill] = value } continue } else if(equal(Config, "SAVING_METHOD")) { switch(value) { case 0..2: g_settings[Saving_Method] = value default: { server_print("[CSO Costumes] No valid saving system was defined! Continuing without saving system.") g_settings[Saving_Method] = 0 } } continue } else if(equal(Config, "ZP43_SUPPORT")) { #if defined ZP_SUPPORT switch(value) { case 0,1: g_settings[ZP43_Support] = value default: { server_print("[CSO Costumes] No valid input was defined! Continuing without Zombie Plague 4.3 Support.") g_settings[ZP43_Support] = 0 } } #else if(value >= 1) { server_print("[CSO Costumes] You need to edit the source code and uncomment ^"#define ZP_SUPPORT^" in order to support Zombie Plague 4.3 (line 13).") } #endif continue } switch(g_settings[Saving_Method]) { case 0: break case 1: { if(equal(Config, "VAULT")) { if(!Value[0]) { server_print("[CSO Costumes] No Vault name was defined! Continuing with the default setting: ^"cso_costumes^".") copy(g_settings[Vault], charsmax(g_settings[Vault]), "cso_costumes") } else { copy(g_settings[Vault], charsmax(g_settings[Vault]), Value) } break } } case 2: { if(equal(Config, "HOST")) { if(!Value[0]) { server_print("[CSO Costumes] No Hostname was defined! Continuing with Nvault saving system.") g_settings[Saving_Method] = 1 } else { copy(g_settings[Host], charsmax(g_settings[Host]), Value) } } else if(equal(Config, "USER")) { if(!Value[0]) { server_print("[CSO Costumes] No Username was defined! Continuing with Nvault saving system.") g_settings[Saving_Method] = 1 } else { copy(g_settings[User], charsmax(g_settings[User]), Value) } } else if(equal(Config, "PASSWORD")) { copy(g_settings[Pass], charsmax(g_settings[Pass]), Value) } else if(equal(Config, "DATABASE")) { if(!Value[0]) { server_print("[CSO Costumes] No Database name was defined! Continuing with Nvault saving system.") g_settings[Saving_Method] = 1 } else { copy(g_settings[Db], charsmax(g_settings[Db]), Value) } } else if(equal(Config, "TABLE")) { if(!Value[0]) { server_print("[CSO Costumes] No Table name was defined! Continuing with the default setting: ^"cso_costumes^".") copy(g_settings[Table], charsmax(g_settings[Table]), "cso_costumes") } else { copy(g_settings[Table], charsmax(g_settings[Table]), Value) } break } } } } if(file && !MySQL_to_Nvault) { server_print("[CSO Costumes] Configuration loaded") fclose(file) } } else { set_fail_state("File ^"costumes.ini^" is missing! Plugin stopped.") } } Load_Costumes() { if(file_exists(File)) { new sfLineData[256], TotalCostumes = 0 new file = fopen(File, "rt") while(file && !feof(file)) { fgets(file, sfLineData, charsmax(sfLineData)) if(sfLineData[0] != '"') { continue } new Costume[10], CostumeName[128], CostumePrice[10], CostumeModel[128], CostumeAnim[10], CostumePreview[128] parse(sfLineData, Costume, charsmax(Costume), CostumeName, charsmax(CostumeName), CostumePrice, charsmax(CostumePrice), CostumeModel, charsmax(CostumeModel), CostumeAnim, charsmax(CostumeAnim), CostumePreview, charsmax(CostumePreview)) #if defined ZP_SUPPORT if(equal(Costume, "SkinCT") || equal(Costume, "SkinTR")) { copy(Costumes_Skin[Total_Skin][g_name], charsmax(Costumes_Skin[][g_name]), CostumeName) Costumes_Skin[Total_Skin][g_price] = str_to_num(CostumePrice) copy(Costumes_Skin[Total_Skin][g_model], charsmax(Costumes_Skin[][g_model]), CostumeModel) copy(Costumes_Skin[Total_Skin][g_preview], charsmax(Costumes_Skin[][g_model]), CostumePreview) Total_Skin += 1 TotalCostumes += 1 } #else if(equal(Costume, "SkinCT")) { copy(Costumes_SkinCT[Total_SkinCT][g_name], charsmax(Costumes_SkinCT[][g_name]), CostumeName) Costumes_SkinCT[Total_SkinCT][g_price] = str_to_num(CostumePrice) copy(Costumes_SkinCT[Total_SkinCT][g_model], charsmax(Costumes_SkinCT[][g_model]), CostumeModel) copy(Costumes_SkinCT[Total_SkinCT][g_preview], charsmax(Costumes_SkinCT[][g_preview]), CostumePreview) Total_SkinCT += 1 TotalCostumes += 1 } else if(equal(Costume, "SkinTR")) { copy(Costumes_SkinTR[Total_SkinTR][g_name], charsmax(Costumes_SkinTR[][g_name]), CostumeName) Costumes_SkinTR[Total_SkinTR][g_price] = str_to_num(CostumePrice) copy(Costumes_SkinTR[Total_SkinTR][g_model], charsmax(Costumes_SkinTR[][g_model]), CostumeModel) copy(Costumes_SkinTR[Total_SkinTR][g_preview], charsmax(Costumes_SkinTR[][g_preview]), CostumePreview) Total_SkinTR += 1 TotalCostumes += 1 } #endif else if(equal(Costume, "Head")) { copy(Costumes_Head[Total_Head][g_name], charsmax(Costumes_Head[][g_name]), CostumeName) Costumes_Head[Total_Head][g_price] = str_to_num(CostumePrice) copy(Costumes_Head[Total_Head][g_model], charsmax(Costumes_Head[][g_model]), CostumeModel) Costumes_Head[Total_Head][g_anim] = str_to_num(CostumeAnim) copy(Costumes_Head[Total_Head][g_preview], charsmax(Costumes_Head[][g_preview]), CostumePreview) Total_Head += 1 TotalCostumes += 1 } else if(equal(Costume, "Back")) { copy(Costumes_Back[Total_Back][g_name], charsmax(Costumes_Back[][g_name]), CostumeName) Costumes_Back[Total_Back][g_price] = str_to_num(CostumePrice) copy(Costumes_Back[Total_Back][g_model], charsmax(Costumes_Back[][g_model]), CostumeModel) Costumes_Back[Total_Back][g_anim] = str_to_num(CostumeAnim) copy(Costumes_Back[Total_Back][g_preview], charsmax(Costumes_Back[][g_preview]), CostumePreview) Total_Back += 1 TotalCostumes += 1 } else if(equal(Costume, "Pelvis")) { copy(Costumes_Pelvis[Total_Pelvis][g_name], charsmax(Costumes_Pelvis[][g_name]), CostumeName) Costumes_Pelvis[Total_Pelvis][g_price] = str_to_num(CostumePrice) copy(Costumes_Pelvis[Total_Pelvis][g_model], charsmax(Costumes_Pelvis[][g_model]), CostumeModel) Costumes_Pelvis[Total_Pelvis][g_anim] = str_to_num(CostumeAnim) copy(Costumes_Pelvis[Total_Pelvis][g_preview], charsmax(Costumes_Pelvis[][g_preview]), CostumePreview) Total_Pelvis += 1 TotalCostumes += 1 } if(TotalCostumes >= MAX_COSTUMES-1) { server_print("[CSO Costumes] Costumes limit reached [%d]", MAX_COSTUMES-1) break } } if(file) { server_print("[CSO Costumes] %d Costumes loaded", TotalCostumes) fclose(file) } } } #if defined ZP_SUPPORT public zp_user_infected_post(id) { if(!g_vars[id][is_connected] || g_vars[id][is_bot_or_hltv]) { return } if(g_settings[ZP43_Support]) { cs_reset_player_model(id) } reset_costume(id, 1) reset_costume(id, 2) reset_costume(id, 3) } public zp_user_humanized_post(id, survivor) { if(!g_vars[id][is_connected] || g_vars[id][is_bot_or_hltv]) { return } if(survivor) { if(g_settings[ZP43_Support]) { cs_reset_player_model(id) } reset_costume(id, 1) reset_costume(id, 2) reset_costume(id, 3) } else { checkCostumes(id, 0) checkCostumes(id, 1) checkCostumes(id, 2) checkCostumes(id, 3) } } public ZP43_checkCostumes(id) { checkCostumes(id, 0) checkCostumes(id, 1) checkCostumes(id, 2) checkCostumes(id, 3) } #endif public Nvault_Init() { g_Vault = nvault_open(g_settings[Vault]) if(g_Vault == INVALID_HANDLE) { g_settings[Saving_Method] = 0 server_print("[CSO Costumes] Failed to use Nvault saving system! Continuing without saving system.") nvault_close(g_Vault) } } public Load_Nvault(id) { new szCash[64]; formatex(szCash, charsmax(szCash), "%sCash", g_szAuthID[id]) g_vars[id][g_cash] = nvault_get(g_Vault, szCash) #if defined ZP_SUPPORT new szSkin[64]; formatex(szSkin, charsmax(szSkin), "%sSkin", g_szAuthID[id]) g_vars[id][g_skin] = nvault_get(g_Vault, szSkin) if(g_vars[id][g_skin] >= Total_Skin) { g_vars[id][g_skin] = 0 } for(new i = 1; i < Total_Skin; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkin%d", g_szAuthID[id], i) g_vars[id][g_acquiredSkin][i] = nvault_get(g_Vault, szKey) } #else new szSkinCT[64]; formatex(szSkinCT, charsmax(szSkinCT), "%sSkinCT", g_szAuthID[id]) new szSkinTR[64]; formatex(szSkinTR, charsmax(szSkinTR), "%sSkinTR", g_szAuthID[id]) g_vars[id][g_skinct] = nvault_get(g_Vault, szSkinCT) g_vars[id][g_skintr] = nvault_get(g_Vault, szSkinTR) if(g_vars[id][g_skinct] >= Total_SkinCT) { g_vars[id][g_skinct] = 0 } if(g_vars[id][g_skintr] >= Total_SkinTR) { g_vars[id][g_skintr] = 0 } for(new i = 1; i < Total_SkinCT; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkinCT%d", g_szAuthID[id], i) g_vars[id][g_acquiredSkinCT][i] = nvault_get(g_Vault, szKey) } for(new i = 1; i < Total_SkinTR; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkinTR%d", g_szAuthID[id], i) g_vars[id][g_acquiredSkinTR][i] = nvault_get(g_Vault, szKey) } #endif new szHead[64]; formatex(szHead, charsmax(szHead), "%sHead", g_szAuthID[id]) new szBack[64]; formatex(szBack, charsmax(szBack), "%sBack", g_szAuthID[id]) new szPelvis[64]; formatex(szPelvis, charsmax(szPelvis), "%sPelvis", g_szAuthID[id]) g_vars[id][g_head] = nvault_get(g_Vault, szHead) g_vars[id][g_back] = nvault_get(g_Vault, szBack) g_vars[id][g_pelvis] = nvault_get(g_Vault, szPelvis) if(g_vars[id][g_head] >= Total_Head) { g_vars[id][g_head] = 0 } if(g_vars[id][g_back] >= Total_Back) { g_vars[id][g_back] = 0 } if(g_vars[id][g_pelvis] >= Total_Pelvis) { g_vars[id][g_pelvis] = 0 } for(new i = 1; i < Total_Head; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sHead%d", g_szAuthID[id], i) g_vars[id][g_acquiredHead][i] = nvault_get(g_Vault, szKey) } for(new i = 1; i < Total_Back; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sBack%d", g_szAuthID[id], i) g_vars[id][g_acquiredBack][i] = nvault_get(g_Vault, szKey) } for(new i = 1; i < Total_Pelvis; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sPelvis%d", g_szAuthID[id], i) g_vars[id][g_acquiredPelvis][i] = nvault_get(g_Vault, szKey) } } public Save_Nvault(id) { new szCash[64]; formatex(szCash, charsmax(szCash), "%sCash", g_szAuthID[id]) new szCash1[11]; num_to_str(g_vars[id][g_cash], szCash1, charsmax(szCash1)) nvault_pset(g_Vault, szCash, szCash1) #if defined ZP_SUPPORT new szSkin[64]; formatex(szSkin, charsmax(szSkin), "%sSkin", g_szAuthID[id]) new szSkin1[11]; num_to_str(g_vars[id][g_skin], szSkin1, charsmax(szSkin1)) nvault_pset(g_Vault, szSkin, szSkin1) for(new i = 1; i < Total_Skin; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkin%d", g_szAuthID[id], i) new szKey2[2]; num_to_str(g_vars[id][g_acquiredSkin][i], szKey2, charsmax(szKey2)) nvault_pset(g_Vault, szKey, szKey2) } #else new szSkinCT[64]; formatex(szSkinCT, charsmax(szSkinCT), "%sSkinCT", g_szAuthID[id]) new szSkinCT1[11]; num_to_str(g_vars[id][g_skinct], szSkinCT1, charsmax(szSkinCT1)) new szSkinTR[64]; formatex(szSkinTR, charsmax(szSkinTR), "%sSkinTR", g_szAuthID[id]) new szSkinTR1[11]; num_to_str(g_vars[id][g_skintr], szSkinTR1, charsmax(szSkinTR1)) nvault_pset(g_Vault, szSkinCT, szSkinCT1) nvault_pset(g_Vault, szSkinTR, szSkinTR1) for(new i = 1; i < Total_SkinCT; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkinCT%d", g_szAuthID[id], i) new szKey2[2]; num_to_str(g_vars[id][g_acquiredSkinCT][i], szKey2, charsmax(szKey2)) nvault_pset(g_Vault, szKey, szKey2) } for(new i = 1; i < Total_SkinTR; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkinTR%d", g_szAuthID[id], i) new szKey2[2]; num_to_str(g_vars[id][g_acquiredSkinTR][i], szKey2, charsmax(szKey2)) nvault_pset(g_Vault, szKey, szKey2) } #endif new szHead[64]; formatex(szHead, charsmax(szHead), "%sHead", g_szAuthID[id]) new szHead1[11]; num_to_str(g_vars[id][g_head], szHead1, charsmax(szHead1)) new szBack[64]; formatex(szBack, charsmax(szBack), "%sBack", g_szAuthID[id]) new szBack1[11]; num_to_str(g_vars[id][g_back], szBack1, charsmax(szBack1)) new szPelvis[64]; formatex(szPelvis, charsmax(szPelvis), "%sPelvis", g_szAuthID[id]) new szPelvis1[11]; num_to_str(g_vars[id][g_pelvis], szPelvis1, charsmax(szPelvis1)) nvault_pset(g_Vault, szHead, szHead1) nvault_pset(g_Vault, szBack, szBack1) nvault_pset(g_Vault, szPelvis, szPelvis1) for(new i = 1; i < Total_Head; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sHead%d", g_szAuthID[id], i) new szKey2[2]; num_to_str(g_vars[id][g_acquiredHead][i], szKey2, charsmax(szKey2)) nvault_pset(g_Vault, szKey, szKey2) } for(new i = 1; i < Total_Back; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sBack%d", g_szAuthID[id], i) new szKey2[2]; num_to_str(g_vars[id][g_acquiredBack][i], szKey2, charsmax(szKey2)) nvault_pset(g_Vault, szKey, szKey2) } for(new i = 1; i < Total_Pelvis; i++) { new szKey[64]; formatex(szKey, charsmax(szKey), "%sPelvis%d", g_szAuthID[id], i) new szKey2[2]; num_to_str(g_vars[id][g_acquiredPelvis][i], szKey2, charsmax(szKey2)) nvault_pset(g_Vault, szKey, szKey2) } } public MySql_Init() { g_SqlTuple = SQL_MakeDbTuple(g_settings[Host], g_settings[User], g_settings[Pass], g_settings[Db]) new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode, g_Error, charsmax(g_Error)) if(SqlConnection == Empty_Handle) { log_amx(g_Error) g_settings[Saving_Method] = 1 server_print("[CSO Costumes] Failed to use MySQL saving system! Continuing with Nvault saving system.") SQL_FreeHandle(g_SqlTuple) Load_Configuration(1) return } static len; len = 0 static szTemp[8192] #if defined ZP_SUPPORT len += formatex(szTemp[len], charsmax(szTemp), "CREATE TABLE IF NOT EXISTS `%s` (\ `Id` INT(11) AUTO_INCREMENT PRIMARY KEY, `SteamID` varchar(35), `Cash` INT(11),\ `Skin` INT(11), `Head` INT(11), `Back` INT(11), `Pelvis` INT(11)", g_settings[Table]) for(new i = 1; i < Total_Skin; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`Skin%d` INT(1)", i) } #else len += formatex(szTemp[len], charsmax(szTemp), "CREATE TABLE IF NOT EXISTS `%s` (\ `Id` INT(11) AUTO_INCREMENT PRIMARY KEY, `SteamID` varchar(35), `Cash` INT(11),\ `SkinCT` INT(11), `SkinTR` INT(11), `Head` INT(11), `Back` INT(11), `Pelvis` INT(11)", g_settings[Table]) for(new i = 1; i < Total_SkinCT; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`SkinCT%d` INT(1)", i) } for(new i = 1; i < Total_SkinTR; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`SkinTR%d` INT(1)", i) } #endif for(new i = 1; i < Total_Head; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`Head%d` INT(1)", i) } for(new i = 1; i < Total_Back; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`Back%d` INT(1)", i) } for(new i = 1; i < Total_Pelvis; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`Pelvis%d` INT(1)", i) } len += formatex(szTemp[len], charsmax(szTemp), ")") new Handle:Queries Queries = SQL_PrepareQuery(SqlConnection, szTemp) if(!SQL_Execute(Queries)) { SQL_QueryError(Queries, g_Error, charsmax(g_Error)) log_amx(g_Error) g_settings[Saving_Method] = 1 server_print("[CSO Costumes] Failed to use MySQL saving system! Continuing with Nvault saving system.") SQL_FreeHandle(g_SqlTuple) Load_Configuration(1) return } SQL_FreeHandle(Queries) SQL_FreeHandle(SqlConnection) MySql_Init2() } public MySql_Init2() { new szTemp[128], Data[1]; Data[0] = 1 formatex(szTemp, charsmax(szTemp), "SELECT * FROM `%s`", g_settings[Table]) SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data, 1) } public Load_MySql(id) { new szTemp[256], Data[1]; Data[0] = id formatex(szTemp, charsmax(szTemp), "SELECT * FROM `%s` WHERE (`%s`.`SteamID` = '%s')", g_settings[Table], g_settings[Table], g_szAuthID[id]) SQL_ThreadQuery(g_SqlTuple, "register_client", szTemp, Data, 1) } public register_client(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { switch(FailState) { case TQUERY_CONNECT_FAILED: log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error) case TQUERY_QUERY_FAILED: log_amx("Load - Query failed. [%d] %s", Errcode, Error) } new id; id = Data[0] if(SQL_NumResults(Query) < 1) { if(equal(g_szAuthID[id], "ID_PENDING")) { return } static len; len = 0 new szTemp[128], Data[1]; Data[0] = 0 len += formatex(szTemp[len], charsmax(szTemp), "INSERT INTO `%s` (`SteamID`) VALUES ('%s')", g_settings[Table], g_szAuthID[id]) SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data, 1) Save_MySql(id) } else { new query; query = 2 g_vars[id][g_cash] = SQL_ReadResult(Query, query); query++ #if defined ZP_SUPPORT g_vars[id][g_skin] = SQL_ReadResult(Query, query); query++ if(g_vars[id][g_skin] >= Total_Skin) { g_vars[id][g_skin] = 0 } for(new i = 1; i < Total_Skin; i++) { new szname[20]; formatex(szname, charsmax(szname), "Skin%d", i) new num = SQL_FieldNameToNum(Query, szname) g_vars[id][g_acquiredSkin][i] = SQL_ReadResult(Query, num) } #else g_vars[id][g_skinct] = SQL_ReadResult(Query, query); query++ g_vars[id][g_skintr] = SQL_ReadResult(Query, query); query++ if(g_vars[id][g_skinct] >= Total_SkinCT) { g_vars[id][g_skinct] = 0 } if(g_vars[id][g_skintr] >= Total_SkinTR) { g_vars[id][g_skintr] = 0 } for(new i = 1; i < Total_SkinCT; i++) { new szname[20]; formatex(szname, charsmax(szname), "SkinCT%d", i) new num = SQL_FieldNameToNum(Query, szname) g_vars[id][g_acquiredSkinCT][i] = SQL_ReadResult(Query, num) } for(new i = 1; i < Total_SkinTR; i++) { new szname[20]; formatex(szname, charsmax(szname), "SkinTR%d", i) new num = SQL_FieldNameToNum(Query, szname) g_vars[id][g_acquiredSkinTR][i] = SQL_ReadResult(Query, num) } #endif g_vars[id][g_head] = SQL_ReadResult(Query, query); query++ g_vars[id][g_back] = SQL_ReadResult(Query, query); query++ g_vars[id][g_pelvis] = SQL_ReadResult(Query, query); query++ if(g_vars[id][g_head] >= Total_Head) { g_vars[id][g_head] = 0 } if(g_vars[id][g_back] >= Total_Back) { g_vars[id][g_back] = 0 } if(g_vars[id][g_pelvis] >= Total_Pelvis) { g_vars[id][g_pelvis] = 0 } for(new i = 1; i < Total_Head; i++) { new szname[20]; formatex(szname, charsmax(szname), "Head%d", i) new num = SQL_FieldNameToNum(Query, szname) g_vars[id][g_acquiredHead][i] = SQL_ReadResult(Query, num) } for(new i = 1; i < Total_Back; i++) { new szname[20]; formatex(szname, charsmax(szname), "Back%d", i) new num = SQL_FieldNameToNum(Query, szname) g_vars[id][g_acquiredBack][i] = SQL_ReadResult(Query, num) } for(new i = 1; i < Total_Pelvis; i++) { new szname[20]; formatex(szname, charsmax(szname), "Pelvis%d", i) new num = SQL_FieldNameToNum(Query, szname) g_vars[id][g_acquiredPelvis][i] = SQL_ReadResult(Query, num) } } } public Save_MySql(id) { static szTemp[8192] new Data[1]; Data[0] = 0 static len; len = 0 #if defined ZP_SUPPORT len += formatex(szTemp[len], charsmax(szTemp), "UPDATE `%s` SET `Cash` = '%i', `Skin` = '%i', `Head` = '%i',\ `Back` = '%i', `Pelvis` = '%i'", g_settings[Table], g_vars[id][g_cash], g_vars[id][g_skin], g_vars[id][g_head], g_vars[id][g_back], g_vars[id][g_pelvis]) for(new i = 1; i < Total_Skin; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`Skin%d` = '%i'", i, g_vars[id][g_acquiredSkin][i]) } #else len += formatex(szTemp[len], charsmax(szTemp), "UPDATE `%s` SET `Cash` = '%i', `SkinCT` = '%i', `SkinTR` = '%i', `Head` = '%i', `Back` = '%i',\ `Pelvis` = '%i'", g_settings[Table], g_vars[id][g_cash], g_vars[id][g_skinct], g_vars[id][g_skintr], g_vars[id][g_head], g_vars[id][g_back], g_vars[id][g_pelvis]) for(new i = 1; i < Total_SkinCT; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`SkinCT%d` = '%i'", i, g_vars[id][g_acquiredSkinCT][i]) } for(new i = 1; i < Total_SkinTR; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`SkinTR%d` = '%i'", i, g_vars[id][g_acquiredSkinTR][i]) } #endif for(new i = 1; i < Total_Head; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`Head%d` = '%i'", i, g_vars[id][g_acquiredHead][i]) } for(new i = 1; i < Total_Back; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`Back%d` = '%i'", i, g_vars[id][g_acquiredBack][i]) } for(new i = 1; i < Total_Pelvis; i++) { len += formatex(szTemp[len], charsmax(szTemp), ",`Pelvis%d` = '%i'", i, g_vars[id][g_acquiredPelvis][i]) } formatex(szTemp[len], charsmax(szTemp), " WHERE `%s`.`SteamID` = '%s';", g_settings[Table], g_szAuthID[id]) SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data, 1) } public IgnoreHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { new VerifyCostumes; VerifyCostumes = Data[0] if(VerifyCostumes) { new Data1[1]; Data1[0] = 0 #if defined ZP_SUPPORT for(new i = 1; i < Total_Skin; i++) { new szname[20]; formatex(szname, charsmax(szname), "Skin%d", i) new num = SQL_FieldNameToNum(Query, szname) if(num == -1) { new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname) SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, 1) } } #else for(new i = 1; i < Total_SkinCT; i++) { new szname[20]; formatex(szname, charsmax(szname), "SkinCT%d", i) new num = SQL_FieldNameToNum(Query, szname) if(num == -1) { new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname) SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, 1) } } for(new i = 1; i < Total_SkinTR; i++) { new szname[20]; formatex(szname, charsmax(szname), "SkinTR%d", i) new num = SQL_FieldNameToNum(Query, szname) if(num == -1) { new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname) SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, 1) } } #endif for(new i = 1; i < Total_Head; i++) { new szname[20]; formatex(szname, charsmax(szname), "Head%d", i) new num = SQL_FieldNameToNum(Query, szname) if(num == -1) { new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname) SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, 1) } } for(new i = 1; i < Total_Back; i++) { new szname[20]; formatex(szname, charsmax(szname), "Back%d", i) new num = SQL_FieldNameToNum(Query, szname) if(num == -1) { new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname) SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, 1) } } for(new i = 1; i < Total_Pelvis; i++) { new szname[20]; formatex(szname, charsmax(szname), "Pelvis%d", i) new num = SQL_FieldNameToNum(Query, szname) if(num == -1) { new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname) SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, 1) } } } SQL_FreeHandle(Query) } public Save_Data() { if(g_settings[Saving_Method] != 0) { new players[32], num, player get_players(players, num, "ch") for(new i = 0; i < num; i++) { player = players[i] switch(g_settings[Saving_Method]) { case 1: Save_Nvault(player) case 2: Save_MySql(player) } } } } public client_disconnected(id) { g_vars[id][is_connected] = false if(g_vars[id][is_bot_or_hltv]) { g_vars[id][is_bot_or_hltv] = false return } switch(g_settings[Saving_Method]) { case 1: Save_Nvault(id) case 2: Save_MySql(id) } } public client_authorized(id) { if(is_user_bot(id) || is_user_hltv(id)) { g_vars[id][is_bot_or_hltv] = true return } reset_vars(id) if(g_settings[Saving_Method] != 0) { get_user_authid(id, g_szAuthID[id], charsmax(g_szAuthID[])) switch(g_settings[Saving_Method]) { case 1: Load_Nvault(id) case 2: Load_MySql(id) } } } public client_putinserver(id) { g_vars[id][is_connected] = true } public fw_PlayerSpawn_Post(id) { if(is_user_alive(id) && !g_vars[id][is_bot_or_hltv]) { if(g_settings[ZP43_Support]) { set_task(0.1, "ZP43_checkCostumes", id) } else { checkCostumes(id, 0) checkCostumes(id, 1) checkCostumes(id, 2) checkCostumes(id, 3) } } } public Event_DeathMsg() { new attacker = read_data(1) new victim = read_data(2) if(attacker == victim || attacker == 0 || !g_vars[attacker][is_connected] || !g_vars[victim][is_connected] || g_vars[attacker][is_bot_or_hltv]) { return } new victimname[32] get_user_name(victim, victimname, charsmax(victimname)) ColorChat(attacker, "%L", attacker, "KILL_PLAYER", g_settings[Cash_per_Kill], victimname) g_vars[attacker][g_cash] += g_settings[Cash_per_Kill] } public clcmd_costumes(id) { show_menu_costumes(id) return PLUGIN_HANDLED } public clcmd_inventory(id) { show_menu_inventory(id) return PLUGIN_HANDLED } public clcmd_shop(id) { show_menu_shop(id) return PLUGIN_HANDLED } public clcmd_deactivate(id) { #if defined ZP_SUPPORT g_vars[id][g_skin] = 0 #else g_vars[id][g_skinct] = 0 g_vars[id][g_skintr] = 0 #endif g_vars[id][g_head] = 0 g_vars[id][g_back] = 0 g_vars[id][g_pelvis] = 0 checkCostumes(id, 0) reset_costume(id, 1) reset_costume(id, 2) reset_costume(id, 3) ColorChat(id, "%L", id, "DEACTIVATED_COSTUMES") return PLUGIN_HANDLED } public clcmd_cash(id) { ColorChat(id, "%L", id, "CASH", g_vars[id][g_cash]) return PLUGIN_HANDLED } public Cmd_GiveCash(id, iLevel, iCid) { if(!cmd_access(id, iLevel, iCid, 3)) { return PLUGIN_HANDLED } new szPlayer[32] read_argv(1, szPlayer, charsmax(szPlayer)) new iPlayer = cmd_target(id, szPlayer, 0) if(!iPlayer || g_vars[iPlayer][is_bot_or_hltv]) { return PLUGIN_HANDLED } new szName[2][32], szAmount[10] read_argv(2, szAmount, charsmax(szAmount)) get_user_name(id, szName[0], charsmax(szName[])) get_user_name(iPlayer, szName[1], charsmax(szName[])) new szKey[32], iCash = str_to_num(szAmount) g_vars[iPlayer][g_cash] += iCash if(g_vars[iPlayer][g_cash] < 0) { g_vars[iPlayer][g_cash] = 0 } if(iCash >= 0) { copy(szKey, charsmax(szKey), "GIVE_CASH") } else { copy(szKey, charsmax(szKey), "TAKE_CASH") iCash *= -1 } ColorChat(0, "%L", id, szKey, szName[0], iCash, szName[1]) return PLUGIN_HANDLED } public menu_costumes(id, menu, item) { switch(item) { case 0: show_menu_inventory(id) case 1: show_menu_shop(id) } menu_destroy(menu) return PLUGIN_HANDLED } show_menu_costumes(id) { new msgm[128], msg1[32], msg2[32], msgexit[32] formatex(msgm, charsmax(msgm), "%s \y%L", PREFIX_MENU, id, "COSTUMES") formatex(msg1, charsmax(msg1), "%L", id, "INVENTORY") formatex(msg2, charsmax(msg2), "%L", id, "SHOP") formatex(msgexit, charsmax(msgexit), "%L", id, "MENU_EXIT") new menu = menu_create(msgm, "menu_costumes") menu_additem(menu, msg1, "0", 0) menu_additem(menu, msg2, "1", 0) menu_setprop(menu, MPROP_EXITNAME, msgexit) menu_display(id, menu, 0) } public menu_inventory(id, menu, item) { switch(item) { case 0..z: { #if defined ZP_SUPPORT if(Total_Skin == 1 && item == 0 || Total_Head == 1 && item == 1 || Total_Back == 1 && item == 2 || Total_Pelvis == 1 && item == 3) { ColorChat(id, "%L", id, "NOT_AVAILABLE", id, item > -1 ? item > 0 ? item > 1 ? item > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "") show_menu_inventory(id) } #else if(Total_SkinCT == 1 && item == 0 || Total_SkinTR == 1 && item == 1 || Total_Head == 1 && item == 2 || Total_Back == 1 && item == 3 || Total_Pelvis == 1 && item == 4) { ColorChat(id, "%L", id, "NOT_AVAILABLE", id, item > -1 ? item > 0 ? item > 1 ? item > 2 ? item > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "") show_menu_inventory(id) } #endif else { g_vars[id][g_costume] = item show_menu_costumeinv(id) } } case z+1: { clcmd_deactivate(id) show_menu_inventory(id) } case MENU_EXIT: { if(g_vars[id][is_connected]) { show_menu_costumes(id) } } } menu_destroy(menu) return PLUGIN_HANDLED } show_menu_inventory(id) { new msgm[128], msghead[32], msgback[32], msgpelvis[32], msg1[64], msgexit[32] formatex(msgm, charsmax(msgm), "%s \y%L", PREFIX_MENU, id, "INVENTORY") formatex(msghead, charsmax(msghead), "%L", id, "COSTUME_HEAD") formatex(msgback, charsmax(msgback), "%L", id, "COSTUME_BACK") formatex(msgpelvis, charsmax(msgpelvis), "%L", id, "COSTUME_PELVIS") formatex(msg1, charsmax(msg1), "%L", id, "DEACTIVATE_ALLCOSTUMES") formatex(msgexit, charsmax(msgexit), "%L", id, "MENU_EXIT") new menu = menu_create(msgm, "menu_inventory") #if defined ZP_SUPPORT new msgskin[32]; formatex(msgskin, charsmax(msgskin), "%L", id, "COSTUME_SKIN") menu_additem(menu, msgskin, "0", 0) menu_additem(menu, msghead, "1", 0) menu_additem(menu, msgback, "2", 0) menu_additem(menu, msgpelvis, "3", 0) menu_additem(menu, msg1, "4", 0) #else new msgskinct[32], msgskintr[32] formatex(msgskinct, charsmax(msgskinct), "%L", id, "COSTUME_SKINCT") formatex(msgskintr, charsmax(msgskintr), "%L", id, "COSTUME_SKINTR") menu_additem(menu, msgskinct, "0", 0) menu_additem(menu, msgskintr, "1", 0) menu_additem(menu, msghead, "2", 0) menu_additem(menu, msgback, "3", 0) menu_additem(menu, msgpelvis, "4", 0) menu_additem(menu, msg1, "5", 0) #endif menu_setprop(menu, MPROP_EXITNAME, msgexit) menu_display(id, menu, 0) } public menu_costumeinv(id, menu, item) { if(item == MENU_EXIT) { if(g_vars[id][is_connected]) { show_menu_inventory(id) } menu_destroy(menu) return PLUGIN_HANDLED } if(item == 0) { #if defined ZP_SUPPORT if(!g_vars[id][g_skin] && g_vars[id][g_costume] == 0 || !g_vars[id][g_head] && g_vars[id][g_costume] == 1 || !g_vars[id][g_back] && g_vars[id][g_costume] == 2 || !g_vars[id][g_pelvis] && g_vars[id][g_costume] == 3) { ColorChat(id, "%L", id, "ALREADY_DEACTIVATED") } #else if(!g_vars[id][g_skinct] && g_vars[id][g_costume] == 0 || !g_vars[id][g_skintr] && g_vars[id][g_costume] == 1 || !g_vars[id][g_head] && g_vars[id][g_costume] == 2 || !g_vars[id][g_back] && g_vars[id][g_costume] == 3 || !g_vars[id][g_pelvis] && g_vars[id][g_costume] == 4) { ColorChat(id, "%L", id, "ALREADY_DEACTIVATED") } #endif else { switch(g_vars[id][g_costume]) { #if defined ZP_SUPPORT case 0: { g_vars[id][g_skin] = 0 checkCostumes(id, 0) } #else case 0: { g_vars[id][g_skinct] = 0 checkCostumes(id, 0) } case 1: { g_vars[id][g_skintr] = 0 checkCostumes(id, 0) } #endif case y: { g_vars[id][g_head] = 0 reset_costume(id, 1) } case y+1: { g_vars[id][g_back] = 0 reset_costume(id, 2) } case y+2: { g_vars[id][g_pelvis] = 0 reset_costume(id, 3) } } #if defined ZP_SUPPORT ColorChat(id, "%L", id, "DEACTIVATE_COSTUME", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "") #else ColorChat(id, "%L", id, "DEACTIVATE_COSTUME", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? g_vars[id][g_costume] > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "") #endif } } else { new keyc = 1 switch(g_vars[id][g_costume]) { #if defined ZP_SUPPORT case 0: { for(new i = 1; i < Total_Skin; i++) { if(!g_vars[id][g_acquiredSkin][i]) { continue } if(keyc == item) { if(g_vars[id][g_skin] == i) { ColorChat(id, "%L", id, "ALREADY_ACTIVATED") } else { g_vars[id][g_skin] = i checkCostumes(id, 0) ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_Skin[i][g_name]) } break } keyc++ } } #else case 0: { for(new i = 1; i < Total_SkinCT; i++) { if(!g_vars[id][g_acquiredSkinCT][i]) { continue } if(keyc == item) { if(g_vars[id][g_skinct] == i) { ColorChat(id, "%L", id, "ALREADY_ACTIVATED") } else { g_vars[id][g_skinct] = i checkCostumes(id, 0) ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_SkinCT[i][g_name]) } break } keyc++ } } case 1: { for(new i = 1; i < Total_SkinTR; i++) { if(!g_vars[id][g_acquiredSkinTR][i]) { continue } if(keyc == item) { if(g_vars[id][g_skintr] == i) { ColorChat(id, "%L", id, "ALREADY_ACTIVATED") } else { g_vars[id][g_skintr] = i checkCostumes(id, 0) ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_SkinTR[i][g_name]) } break } keyc++ } } #endif case y: { for(new i = 1; i < Total_Head; i++) { if(!g_vars[id][g_acquiredHead][i]) { continue } if(keyc == item) { if(g_vars[id][g_head] == i) { ColorChat(id, "%L", id, "ALREADY_ACTIVATED") } else { g_vars[id][g_head] = i checkCostumes(id, 1) ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_Head[i][g_name]) } break } keyc++ } } case y+1: { for(new i = 1; i < Total_Back; i++) { if(!g_vars[id][g_acquiredBack][i]) { continue } if(keyc == item) { if(g_vars[id][g_back] == i) { ColorChat(id, "%L", id, "ALREADY_ACTIVATED") } else { g_vars[id][g_back] = i checkCostumes(id, 2) ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_Back[i][g_name]) } break } keyc++ } } case y+2: { for(new i = 1; i < Total_Pelvis; i++) { if(!g_vars[id][g_acquiredPelvis][i]) { continue } if(keyc == item) { if(g_vars[id][g_pelvis] == i) { ColorChat(id, "%L", id, "ALREADY_ACTIVATED") } else { g_vars[id][g_pelvis] = i checkCostumes(id, 3) ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_Pelvis[i][g_name]) } break } keyc++ } } } } show_menu_costumeinv(id) menu_destroy(menu) return PLUGIN_HANDLED } show_menu_costumeinv(id) { new msgm[128], msg[128], msg1[16], msgactivated[32], msgback[32], msgnext[32], msgexit[32], item = 1 #if defined ZP_SUPPORT formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\r", PREFIX_MENU, id, "INVENTORY", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "") #else formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\r", PREFIX_MENU, id, "INVENTORY", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? g_vars[id][g_costume] > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "") #endif formatex(msgactivated, charsmax(msgactivated), " \r[%L]", id, "ACTIVATED") formatex(msgback, charsmax(msgback), "%L", id, "MENU_BACK") formatex(msgnext, charsmax(msgnext), "%L", id, "MENU_NEXT") formatex(msgexit, charsmax(msgexit), "%L", id, "MENU_EXIT") new menu = menu_create(msgm, "menu_costumeinv") formatex(msg, charsmax(msg), "%L", id, "COSTUME_NONE") menu_additem(menu, msg, "0", 0) switch(g_vars[id][g_costume]) { #if defined ZP_SUPPORT case 0: { for(new i = 1; i < Total_Skin; i++) { if(!g_vars[id][g_acquiredSkin][i]) { continue } formatex(msg, charsmax(msg), "%s%s", Costumes_Skin[i][g_name], g_vars[id][g_skin] == i ? msgactivated : "") num_to_str(item, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) item++ } } #else case 0: { for(new i = 1; i < Total_SkinCT; i++) { if(!g_vars[id][g_acquiredSkinCT][i]) { continue } formatex(msg, charsmax(msg), "%s%s", Costumes_SkinCT[i][g_name], g_vars[id][g_skinct] == i ? msgactivated : "") num_to_str(item, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) item++ } } case 1: { for(new i = 1; i < Total_SkinTR; i++) { if(!g_vars[id][g_acquiredSkinTR][i]) { continue } formatex(msg, charsmax(msg), "%s%s", Costumes_SkinTR[i][g_name], g_vars[id][g_skintr] == i ? msgactivated : "") num_to_str(item, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) item++ } } #endif case y: { for(new i = 1; i < Total_Head; i++) { if(!g_vars[id][g_acquiredHead][i]) { continue } formatex(msg, charsmax(msg), "%s%s", Costumes_Head[i][g_name], g_vars[id][g_head] == i ? msgactivated : "") num_to_str(item, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) item++ } } case y+1: { for(new i = 1; i < Total_Back; i++) { if(!g_vars[id][g_acquiredBack][i]) { continue } formatex(msg, charsmax(msg), "%s%s", Costumes_Back[i][g_name], g_vars[id][g_back] == i ? msgactivated : "") num_to_str(item, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) item++ } } case y+2: { for(new i = 1; i < Total_Pelvis; i++) { if(!g_vars[id][g_acquiredPelvis][i]) { continue } formatex(msg, charsmax(msg), "%s%s", Costumes_Pelvis[i][g_name], g_vars[id][g_pelvis] == i ? msgactivated : "") num_to_str(item, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) item++ } } } if(item == 1) { #if defined ZP_SUPPORT ColorChat(id, "%L", id, "NO_COSTUME", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "") #else ColorChat(id, "%L", id, "NO_COSTUME", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? g_vars[id][g_costume] > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "") #endif show_menu_inventory(id) menu_destroy(menu) return } menu_setprop(menu, MPROP_BACKNAME, msgback) menu_setprop(menu, MPROP_NEXTNAME, msgnext) menu_setprop(menu, MPROP_EXITNAME, msgexit) menu_display(id, menu, 0) } public menu_shop(id, menu, item) { switch(item) { case 0..z: { #if defined ZP_SUPPORT if(Total_Skin == 1 && item == 0 || Total_Head == 1 && item == 1 || Total_Back == 1 && item == 2 || Total_Pelvis == 1 && item == 3) { ColorChat(id, "%L", id, "NOT_AVAILABLE", id, item > -1 ? item > 0 ? item > 1 ? item > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "") show_menu_shop(id) } #else if(Total_SkinCT == 1 && item == 0 || Total_SkinTR == 1 && item == 1 || Total_Head == 1 && item == 2 || Total_Back == 1 && item == 3 || Total_Pelvis == 1 && item == 4) { ColorChat(id, "%L", id, "NOT_AVAILABLE", id, item > -1 ? item > 0 ? item > 1 ? item > 2 ? item > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "") show_menu_shop(id) } #endif else { g_vars[id][g_costume] = item show_menu_costumeshop(id) } } case MENU_EXIT: { if(g_vars[id][is_connected]) { show_menu_costumes(id) } } } menu_destroy(menu) return PLUGIN_HANDLED } show_menu_shop(id) { new msgm[128], msghead[32], msgback[32], msgpelvis[32], msgexit[32] formatex(msgm, charsmax(msgm), "%s \y%L^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "MENU_CASH", g_vars[id][g_cash]) formatex(msghead, charsmax(msghead), "%L", id, "COSTUME_HEAD") formatex(msgback, charsmax(msgback), "%L", id, "COSTUME_BACK") formatex(msgpelvis, charsmax(msgpelvis), "%L", id, "COSTUME_PELVIS") formatex(msgexit, charsmax(msgexit), "%L", id, "MENU_EXIT") new menu = menu_create(msgm, "menu_shop") #if defined ZP_SUPPORT new msgskin[32]; formatex(msgskin, charsmax(msgskin), "%L", id, "COSTUME_SKIN") menu_additem(menu, msgskin, "0", 0) menu_additem(menu, msghead, "1", 0) menu_additem(menu, msgback, "2", 0) menu_additem(menu, msgpelvis, "3", 0) #else new msgskinct[32], msgskintr[32] formatex(msgskinct, charsmax(msgskinct), "%L", id, "COSTUME_SKINCT") formatex(msgskintr, charsmax(msgskintr), "%L", id, "COSTUME_SKINTR") menu_additem(menu, msgskinct, "0", 0) menu_additem(menu, msgskintr, "1", 0) menu_additem(menu, msghead, "2", 0) menu_additem(menu, msgback, "3", 0) menu_additem(menu, msgpelvis, "4", 0) #endif menu_setprop(menu, MPROP_EXITNAME, msgexit) menu_display(id, menu, 0) } public menu_costumeshop(id, menu, item) { if(item == MENU_EXIT) { if(g_vars[id][is_connected]) { show_menu_shop(id) } menu_destroy(menu) return PLUGIN_HANDLED } new key = item+1 #if defined ZP_SUPPORT if(g_vars[id][g_costume] == 0 && g_vars[id][g_acquiredSkin][key] || g_vars[id][g_costume] == 1 && g_vars[id][g_acquiredHead][key] || g_vars[id][g_costume] == 2 && g_vars[id][g_acquiredBack][key] || g_vars[id][g_costume] == 3 && g_vars[id][g_acquiredPelvis][key]) { ColorChat(id, "%L", id, "ALREADY_HAVECOSTUME") show_menu_costumeshop(id) } #else if(g_vars[id][g_costume] == 0 && g_vars[id][g_acquiredSkinCT][key] || g_vars[id][g_costume] == 1 && g_vars[id][g_acquiredSkinTR][key] || g_vars[id][g_costume] == 2 && g_vars[id][g_acquiredHead][key] || g_vars[id][g_costume] == 3 && g_vars[id][g_acquiredBack][key] || g_vars[id][g_costume] == 4 && g_vars[id][g_acquiredPelvis][key]) { ColorChat(id, "%L", id, "ALREADY_HAVECOSTUME") show_menu_costumeshop(id) } #endif else { g_vars[id][g_buying] = key show_menu_buycostume(id) } menu_destroy(menu) return PLUGIN_HANDLED } show_menu_costumeshop(id) { new msgm[128], msg[128], msg1[16], msg2[64], msgacquired[32], msgback[32], msgnext[32], msgexit[32] #if defined ZP_SUPPORT formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%d^n", PREFIX_MENU, id, "SHOP", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "", id, "MENU_CASH", g_vars[id][g_cash]) #else formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%d^n", PREFIX_MENU, id, "SHOP", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? g_vars[id][g_costume] > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "", id, "MENU_CASH", g_vars[id][g_cash]) #endif formatex(msgacquired, charsmax(msgacquired), "[%L]", id, "ACQUIRED") formatex(msgback, charsmax(msgback), "%L", id, "MENU_BACK") formatex(msgnext, charsmax(msgnext), "%L", id, "MENU_NEXT") formatex(msgexit, charsmax(msgexit), "%L", id, "MENU_EXIT") new menu = menu_create(msgm, "menu_costumeshop") switch(g_vars[id][g_costume]) { #if defined ZP_SUPPORT case 0: { for(new i = 1; i < Total_Skin; i++) { formatex(msg2, charsmax(msg2), "[%L: %d]", id, "PRICE", Costumes_Skin[i][g_price]) formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredSkin][i] ? "\d" : "", Costumes_Skin[i][g_name], g_vars[id][g_acquiredSkin][i] ? msgacquired : msg2) num_to_str(i-1, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) } } #else case 0: { for(new i = 1; i < Total_SkinCT; i++) { formatex(msg2, charsmax(msg2), "[%L: %d]", id, "PRICE", Costumes_SkinCT[i][g_price]) formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredSkinCT][i] ? "\d" : "", Costumes_SkinCT[i][g_name], g_vars[id][g_acquiredSkinCT][i] ? msgacquired : msg2) num_to_str(i-1, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) } } case 1: { for(new i = 1; i < Total_SkinTR; i++) { formatex(msg2, charsmax(msg2), "[%L: %d]", id, "PRICE", Costumes_SkinTR[i][g_price]) formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredSkinTR][i] ? "\d" : "", Costumes_SkinTR[i][g_name], g_vars[id][g_acquiredSkinTR][i] ? msgacquired : msg2) num_to_str(i-1, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) } } #endif case y: { for(new i = 1; i < Total_Head; i++) { formatex(msg2, charsmax(msg1), "[%L: %d]", id, "PRICE", Costumes_Head[i][g_price]) formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredHead][i] ? "\d" : "", Costumes_Head[i][g_name], g_vars[id][g_acquiredHead][i] ? msgacquired : msg2) num_to_str(i-1, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) } } case y+1: { for(new i = 1; i < Total_Back; i++) { formatex(msg2, charsmax(msg2), "[%L: %d]", id, "PRICE", Costumes_Back[i][g_price]) formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredBack][i] ? "\d" : "", Costumes_Back[i][g_name], g_vars[id][g_acquiredBack][i] ? msgacquired : msg2) num_to_str(i-1, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) } } case y+2: { for(new i = 1; i < Total_Pelvis; i++) { formatex(msg2, charsmax(msg2), "[%L: %d]", id, "PRICE", Costumes_Pelvis[i][g_price]) formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredPelvis][i] ? "\d" : "", Costumes_Pelvis[i][g_name], g_vars[id][g_acquiredPelvis][i] ? msgacquired : msg2) num_to_str(i-1, msg1, charsmax(msg1)) menu_additem(menu, msg, msg1, 0) } } } menu_setprop(menu, MPROP_BACKNAME, msgback) menu_setprop(menu, MPROP_NEXTNAME, msgnext) menu_setprop(menu, MPROP_EXITNAME, msgexit) menu_display(id, menu, 0) } public menu_buycostume(id, menu, item) { switch(item) { case 0: { show_motd_costume(id) show_menu_buycostume(id) } case 1: { switch(g_vars[id][g_costume]) { #if defined ZP_SUPPORT case 0: { if(g_vars[id][g_cash] >= Costumes_Skin[g_vars[id][g_buying]][g_price]) { g_vars[id][g_cash] -= Costumes_Skin[g_vars[id][g_buying]][g_price] g_vars[id][g_acquiredSkin][g_vars[id][g_buying]] = 1 g_vars[id][g_skin] = g_vars[id][g_buying] checkCostumes(id, 0) ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_Skin[g_vars[id][g_buying]][g_name]) ColorChat(id, "%L", id, "BOUGHT_COSTUME2") } else { ColorChat(id, "%L", id, "NO_CASH") } } #else case 0: { if(g_vars[id][g_cash] >= Costumes_SkinCT[g_vars[id][g_buying]][g_price]) { g_vars[id][g_cash] -= Costumes_SkinCT[g_vars[id][g_buying]][g_price] g_vars[id][g_acquiredSkinCT][g_vars[id][g_buying]] = 1 g_vars[id][g_skinct] = g_vars[id][g_buying] checkCostumes(id, 0) ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_SkinCT[g_vars[id][g_buying]][g_name]) ColorChat(id, "%L", id, "BOUGHT_COSTUME2") } else { ColorChat(id, "%L", id, "NO_CASH") } } case 1: { if(g_vars[id][g_cash] >= Costumes_SkinTR[g_vars[id][g_buying]][g_price]) { g_vars[id][g_cash] -= Costumes_SkinTR[g_vars[id][g_buying]][g_price] g_vars[id][g_acquiredSkinTR][g_vars[id][g_buying]] = 1 g_vars[id][g_skintr] = g_vars[id][g_buying] checkCostumes(id, 0) ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_SkinTR[g_vars[id][g_buying]][g_name]) ColorChat(id, "%L", id, "BOUGHT_COSTUME2") } else { ColorChat(id, "%L", id, "NO_CASH") } } #endif case y: { if(g_vars[id][g_cash] >= Costumes_Head[g_vars[id][g_buying]][g_price]) { g_vars[id][g_cash] -= Costumes_Head[g_vars[id][g_buying]][g_price] g_vars[id][g_acquiredHead][g_vars[id][g_buying]] = 1 g_vars[id][g_head] = g_vars[id][g_buying] checkCostumes(id, 1) ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_Head[g_vars[id][g_buying]][g_name]) ColorChat(id, "%L", id, "BOUGHT_COSTUME2") } else { ColorChat(id, "%L", id, "NO_CASH") } } case y+1: { if(g_vars[id][g_cash] >= Costumes_Back[g_vars[id][g_buying]][g_price]) { g_vars[id][g_cash] -= Costumes_Back[g_vars[id][g_buying]][g_price] g_vars[id][g_acquiredBack][g_vars[id][g_buying]] = 1 g_vars[id][g_back] = g_vars[id][g_buying] checkCostumes(id, 2) ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_Back[g_vars[id][g_buying]][g_name]) ColorChat(id, "%L", id, "BOUGHT_COSTUME2") } else { ColorChat(id, "%L", id, "NO_CASH") } } case y+2: { if(g_vars[id][g_cash] >= Costumes_Pelvis[g_vars[id][g_buying]][g_price]) { g_vars[id][g_cash] -= Costumes_Pelvis[g_vars[id][g_buying]][g_price] g_vars[id][g_acquiredPelvis][g_vars[id][g_buying]] = 1 g_vars[id][g_pelvis] = g_vars[id][g_buying] checkCostumes(id, 3) ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_Pelvis[g_vars[id][g_buying]][g_name]) ColorChat(id, "%L", id, "BOUGHT_COSTUME2") } else { ColorChat(id, "%L", id, "NO_CASH") } } } show_menu_costumeshop(id) } case MENU_EXIT: { if(g_vars[id][is_connected]) { show_menu_costumeshop(id) } } } menu_destroy(menu) return PLUGIN_HANDLED } show_menu_buycostume(id) { new msgm[256], msgpreview[32], msgbuy[32], msgcancel[32] formatex(msgpreview, charsmax(msgpreview), "%L", id, "PREVIEW") formatex(msgbuy, charsmax(msgbuy), "%L", id, "BUY") formatex(msgcancel, charsmax(msgcancel), "%L", id, "CANCEL_PURCHASE") switch(g_vars[id][g_costume]) { #if defined ZP_SUPPORT case 0: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_SKIN", id, "COSTUME", Costumes_Skin[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_Skin[g_vars[id][g_buying]][g_price]) #else case 0: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_SKINCT", id, "COSTUME", Costumes_SkinCT[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_SkinCT[g_vars[id][g_buying]][g_price]) case 1: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_SKINTR", id, "COSTUME", Costumes_SkinTR[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_SkinTR[g_vars[id][g_buying]][g_price]) #endif case y: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_HEAD", id, "COSTUME", Costumes_Head[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_Head[g_vars[id][g_buying]][g_price]) case y+1: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_BACK", id, "COSTUME", Costumes_Back[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_Back[g_vars[id][g_buying]][g_price]) case y+2: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_PELVIS", id, "COSTUME", Costumes_Pelvis[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_Pelvis[g_vars[id][g_buying]][g_price]) } new menu = menu_create(msgm, "menu_buycostume") menu_additem(menu, msgpreview, "0", 0) menu_additem(menu, msgbuy, "1", 0) menu_setprop(menu, MPROP_EXITNAME, msgcancel) menu_display(id, menu, 0) } public show_motd_costume(id) { new motd[512], motd_name[128] switch(g_vars[id][g_costume]) { #if defined ZP_SUPPORT case 0: { formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_Skin[g_vars[id][g_buying]][g_preview]) formatex(motd_name, charsmax(motd_name), "%s", Costumes_Skin[g_vars[id][g_buying]][g_name]) } #else case 0: { formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_SkinCT[g_vars[id][g_buying]][g_preview]) formatex(motd_name, charsmax(motd_name), "%s", Costumes_SkinCT[g_vars[id][g_buying]][g_name]) } case 1: { formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_SkinTR[g_vars[id][g_buying]][g_preview]) formatex(motd_name, charsmax(motd_name), "%s", Costumes_SkinTR[g_vars[id][g_buying]][g_name]) } #endif case y: { formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_Head[g_vars[id][g_buying]][g_preview]) formatex(motd_name, charsmax(motd_name), "%s", Costumes_Head[g_vars[id][g_buying]][g_name]) } case y+1: { formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_Back[g_vars[id][g_buying]][g_preview]) formatex(motd_name, charsmax(motd_name), "%s", Costumes_Back[g_vars[id][g_buying]][g_name]) } case y+2: { formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_Pelvis[g_vars[id][g_buying]][g_preview]) formatex(motd_name, charsmax(motd_name), "%s", Costumes_Pelvis[g_vars[id][g_buying]][g_name]) } } show_motd(id, motd, motd_name) } reset_vars(id) { g_vars[id][g_cash] = 0 #if defined ZP_SUPPORT g_vars[id][g_skin] = 0 for(new i = 1; i < Total_Skin; i++) { g_vars[id][g_acquiredSkin][i] = 0 } #else g_vars[id][g_skinct] = 0 g_vars[id][g_skintr] = 0 for(new i = 1; i < Total_SkinCT; i++) { g_vars[id][g_acquiredSkinCT][i] = 0 } for(new i = 1; i < Total_SkinTR; i++) { g_vars[id][g_acquiredSkinTR][i] = 0 } #endif g_vars[id][g_head] = 0 g_vars[id][g_back] = 0 g_vars[id][g_pelvis] = 0 for(new i = 1; i < Total_Head; i++) { g_vars[id][g_acquiredHead][i] = 0 } for(new i = 1; i < Total_Back; i++) { g_vars[id][g_acquiredBack][i] = 0 } for(new i = 1; i < Total_Pelvis; i++) { g_vars[id][g_acquiredPelvis][i] = 0 } } checkCostumes(id, key) { if(!is_user_alive(id)) { return } #if defined ZP_SUPPORT if(zp_get_user_survivor(id) || zp_get_user_zombie(id) || zp_get_user_nemesis(id)) { return } #endif switch(key) { case 0: { #if defined ZP_SUPPORT if(g_vars[id][g_skin] == 0) { cs_reset_player_model(id) } else { cs_set_player_model(id, Costumes_Skin[g_vars[id][g_skin]][g_model]) } #else switch(get_user_team(id)) { case 1: { if(g_vars[id][g_skintr] == 0) { cs_reset_player_model(id) } else { cs_set_player_model(id, Costumes_SkinTR[g_vars[id][g_skintr]][g_model]) } } case 2: { if(g_vars[id][g_skinct] == 0) { cs_reset_player_model(id) } else { cs_set_player_model(id, Costumes_SkinCT[g_vars[id][g_skinct]][g_model]) } } } #endif } case 1: { reset_costume(id, 1) if(g_vars[id][g_head] != 0) { make_costume(id, Costumes_Head[g_vars[id][g_head]][g_model], 1, Costumes_Head[g_vars[id][g_head]][g_anim]) } } case 2: { reset_costume(id, 2) if(g_vars[id][g_back] != 0) { make_costume(id, Costumes_Back[g_vars[id][g_back]][g_model], 2, Costumes_Back[g_vars[id][g_back]][g_anim]) } } case 3: { reset_costume(id, 3) if(g_vars[id][g_pelvis] != 0) { make_costume(id, Costumes_Pelvis[g_vars[id][g_pelvis]][g_model], 3, Costumes_Pelvis[g_vars[id][g_pelvis]][g_anim]) } } } } make_costume(id, model[], part, anim) { if(!is_user_alive(id)) { return } switch(part) { case 1: { g_vars[id][g_CostumeModelHead] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(g_vars[id][g_CostumeModelHead], pev_movetype, MOVETYPE_FOLLOW) set_pev(g_vars[id][g_CostumeModelHead], pev_aiment, id) set_pev(g_vars[id][g_CostumeModelHead], pev_rendermode, kRenderNormal) engfunc(EngFunc_SetModel, g_vars[id][g_CostumeModelHead], model) set_pev(g_vars[id][g_CostumeModelHead], pev_body, anim) set_pev(g_vars[id][g_CostumeModelHead], pev_sequence, anim) set_pev(g_vars[id][g_CostumeModelHead], pev_animtime, get_gametime()) set_pev(g_vars[id][g_CostumeModelHead], pev_framerate, 1.0) } case 2: { g_vars[id][g_CostumeModelBack] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(g_vars[id][g_CostumeModelBack], pev_movetype, MOVETYPE_FOLLOW) set_pev(g_vars[id][g_CostumeModelBack], pev_aiment, id) set_pev(g_vars[id][g_CostumeModelBack], pev_rendermode, kRenderNormal) engfunc(EngFunc_SetModel, g_vars[id][g_CostumeModelBack], model) set_pev(g_vars[id][g_CostumeModelBack], pev_body, anim) set_pev(g_vars[id][g_CostumeModelBack], pev_sequence, anim) set_pev(g_vars[id][g_CostumeModelBack], pev_animtime, get_gametime()) set_pev(g_vars[id][g_CostumeModelBack], pev_framerate, 1.0) } case 3: { g_vars[id][g_CostumeModelPelvis] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(g_vars[id][g_CostumeModelPelvis], pev_movetype, MOVETYPE_FOLLOW) set_pev(g_vars[id][g_CostumeModelPelvis], pev_aiment, id) set_pev(g_vars[id][g_CostumeModelPelvis], pev_rendermode, kRenderNormal) engfunc(EngFunc_SetModel, g_vars[id][g_CostumeModelPelvis], model) set_pev(g_vars[id][g_CostumeModelPelvis], pev_body, anim) set_pev(g_vars[id][g_CostumeModelPelvis], pev_sequence, anim) set_pev(g_vars[id][g_CostumeModelPelvis], pev_animtime, get_gametime()) set_pev(g_vars[id][g_CostumeModelPelvis], pev_framerate, 1.0) } } } reset_costume(id, number) { if(!is_user_alive(id)) { return } switch(number) { case 1: { fm_set_entity_visibility(g_vars[id][g_CostumeModelHead], 0) g_vars[id][g_CostumeModelHead] = 0 } case 2: { fm_set_entity_visibility(g_vars[id][g_CostumeModelBack], 0) g_vars[id][g_CostumeModelBack] = 0 } case 3: { fm_set_entity_visibility(g_vars[id][g_CostumeModelPelvis], 0) g_vars[id][g_CostumeModelPelvis] = 0 } } } stock ColorChat(const id, const szInput[], any:...) { new iPlayers[32], iCount = 1 static szMessage[191] vformat(szMessage, charsmax(szMessage), szInput, 3) format(szMessage[0], charsmax(szMessage), "%s %s", PREFIX_CHAT, szMessage) replace_all(szMessage, charsmax(szMessage), "!g", "^4") replace_all(szMessage, charsmax(szMessage), "!n", "^1") replace_all(szMessage, charsmax(szMessage), "!t", "^3") if(id) { iPlayers[0] = id } else { get_players(iPlayers, iCount, "ch") } for(new i, iPlayer; i < iCount; i++) { iPlayer = iPlayers[i] if(g_vars[iPlayer][is_connected]) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayer) write_byte(iPlayer) write_string(szMessage) message_end() } } } stock fm_set_entity_visibility(index, visible = 1) { set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW) return 1 } stock precache_player_model(szModel[]) { static szFile[128] formatex(szFile, charsmax(szFile), "models/player/%s/%s.mdl", szModel, szModel) precache_model(szFile) replace(szFile, charsmax(szFile), ".mdl", "T.mdl") if(file_exists(szFile)) { precache_model(szFile) } } i want to have currency with simple money cs, please help me. Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi