From 3afde8523896b06c84fc10c3334f43fdc24f7027 Mon Sep 17 00:00:00 2001 From: BotoX Date: Fri, 12 Feb 2016 04:16:59 +0100 Subject: [PATCH] reworked zmarket fixed kevlar bug --- .../addons/sourcemod/configs/zr/weapons.txt | 53 +- .../es/zombiereloaded.phrases.txt | 50 +- .../no/zombiereloaded.phrases.txt | 50 +- .../ru/zombiereloaded.phrases.txt | 50 +- .../translations/zombiereloaded.phrases.txt | 54 +-- src/zr/cvars.inc | 6 +- src/zr/infect.inc | 10 + src/zr/weapons/weapons.inc | 25 +- src/zr/weapons/zmarket.inc | 455 +++++++++++------- src/zr/zcookies.inc | 19 +- 10 files changed, 423 insertions(+), 349 deletions(-) diff --git a/cstrike/addons/sourcemod/configs/zr/weapons.txt b/cstrike/addons/sourcemod/configs/zr/weapons.txt index 970057a..eb8119b 100644 --- a/cstrike/addons/sourcemod/configs/zr/weapons.txt +++ b/cstrike/addons/sourcemod/configs/zr/weapons.txt @@ -52,6 +52,7 @@ // ZMarket (module) "zmarketprice" "400" + "zmarketcommand" "sm_glock" } "USP" @@ -79,6 +80,7 @@ // ZMarket (module) "zmarketprice" "500" + "zmarketcommand" "sm_usp" } "P228" @@ -106,7 +108,7 @@ // ZMarket (module) "zmarketprice" "600" - + "zmarketcommand" "sm_p228" } "Deagle" @@ -134,7 +136,7 @@ // ZMarket (module) "zmarketprice" "650" - + "zmarketcommand" "sm_deagle" } "Elite" @@ -162,7 +164,7 @@ // ZMarket (module) "zmarketprice" "800" - + "zmarketcommand" "sm_elite" } "Fiveseven" @@ -190,7 +192,7 @@ // ZMarket (module) "zmarketprice" "750" - + "zmarketcommand" "sm_fiveseven" } "M3" @@ -218,7 +220,7 @@ // ZMarket (module) "zmarketprice" "1700" - + "zmarketcommand" "sm_m3" } "XM1014" @@ -246,7 +248,7 @@ // ZMarket (module) "zmarketprice" "3000" - + "zmarketcommand" "sm_xm" } "Mac10" @@ -274,6 +276,7 @@ // ZMarket (module) "zmarketprice" "1400" + "zmarketcommand" "sm_mac10" } "TMP" @@ -301,6 +304,7 @@ // ZMarket (module) "zmarketprice" "1250" + "zmarketcommand" "sm_tmp" } "MP5Navy" @@ -328,6 +332,7 @@ // ZMarket (module) "zmarketprice" "1500" + "zmarketcommand" "sm_mp5" } "UMP45" @@ -355,6 +360,7 @@ // ZMarket (module) "zmarketprice" "1700" + "zmarketcommand" "sm_ump" } "P90" @@ -382,6 +388,7 @@ // ZMarket (module) "zmarketprice" "2350" + "zmarketcommand" "sm_p90" } "Galil" @@ -409,6 +416,7 @@ // ZMarket (module) "zmarketprice" "2000" + "zmarketcommand" "sm_galil" } "Famas" @@ -436,6 +444,7 @@ // ZMarket (module) "zmarketprice" "2250" + "zmarketcommand" "sm_famas" } "AK47" @@ -463,6 +472,7 @@ // ZMarket (module) "zmarketprice" "2500" + "zmarketcommand" "sm_ak" } "M4A1" @@ -490,6 +500,7 @@ // ZMarket (module) "zmarketprice" "3100" + "zmarketcommand" "sm_m4" } "SG552" @@ -517,6 +528,7 @@ // ZMarket (module) "zmarketprice" "3500" + "zmarketcommand" "sm_sg552" } "AUG" @@ -544,6 +556,7 @@ // ZMarket (module) "zmarketprice" "3500" + "zmarketcommand" "sm_aug" } "Scout" @@ -571,6 +584,7 @@ // ZMarket (module) "zmarketprice" "2750" + "zmarketcommand" "sm_scout" } "SG550" @@ -598,6 +612,7 @@ // ZMarket (module) "zmarketprice" "4200" + "zmarketcommand" "sm_sg550" } "G3SG1" @@ -625,6 +640,7 @@ // ZMarket (module) "zmarketprice" "5000" + "zmarketcommand" "sm_g3sg1" } "AWP" @@ -652,6 +668,7 @@ // ZMarket (module) "zmarketprice" "4750" + "zmarketcommand" "sm_awp" } "M249" @@ -679,6 +696,7 @@ // ZMarket (module) "zmarketprice" "5750" + "zmarketcommand" "sm_m249" } "Knife" @@ -720,6 +738,7 @@ "zmarketprice" "300" "zmarketpurchasemax" "1" + "zmarketcommand" "sm_he" } "Flashbang" @@ -739,6 +758,7 @@ "zmarketprice" "200" "zmarketpurchasemax" "1" + "zmarketcommand" "sm_flash" } "Smokegrenade" @@ -758,6 +778,7 @@ "zmarketprice" "300" "zmarketpurchasemax" "1" + "zmarketcommand" "sm_smoke" } "NVGs" @@ -776,5 +797,25 @@ // ZMarket (module) "zmarketprice" "1000" + "zmarketcommand" "sm_nvg" + } + + "Kevlar Vest" + { + // General + + "weaponentity" "item_kevlar" + "weapontype" "All, Equipment" + "weaponslot" "5" + + // Restrict (core) + + "restrictdefault" "no" + "toggleable" "yes" + + // ZMarket (module) + + "zmarketprice" "1000" + "zmarketcommand" "sm_kevlar" } } diff --git a/cstrike/addons/sourcemod/translations/es/zombiereloaded.phrases.txt b/cstrike/addons/sourcemod/translations/es/zombiereloaded.phrases.txt index 2b57c0f..6fb5e54 100644 --- a/cstrike/addons/sourcemod/translations/es/zombiereloaded.phrases.txt +++ b/cstrike/addons/sourcemod/translations/es/zombiereloaded.phrases.txt @@ -75,7 +75,12 @@ { "es" "Esta funcion requiere que tu seas humano." } - + + "Must be in buyzone" + { + "es" "This feature requires that you are in a buyzone." // TODO: Translate + } + "Increase by" { "es" "Aumentado en {1}" @@ -573,14 +578,9 @@ "es" "solo se puede llevar {1} granada(s) de este tipo." } - "Weapons zmarket auto-rebuy toggle on" + "Weapons zmarket not enough money" { - "es" "Auto-recompra ha sido activado, su preseleccion se obtienen automaticamente cada vez que aparezcas." - } - - "Weapons zmarket auto-rebuy toggle off" - { - "es" "Auto-recompra ha sido desactivada." + "es" "You have insufficient funds." // TODO: Translate } "Weapons zmarket updated loadout" @@ -664,9 +664,9 @@ "es" "Guardar configuracion actual" } - "Weapons menu zmarket main view loadout" + "Weapons menu zmarket main edit loadout" { - "es" "Ver configuracion actual" + "es" "Edit Saved Setup" // TODO: Translate } "Weapons menu zmarket main rebuy" @@ -674,11 +674,6 @@ "es" "Comprar configuracion actual" } - "Weapons menu zmarket main auto-rebuy" - { - "es" "Auto-Recompra: {1}" - } - "Weapons menu zmarket main weapons list" { "es" "Comprar Armas" @@ -687,6 +682,7 @@ "Weapons menu zmarket loadout title" { "es" "ZMarket\nMi configuracion actual:\nSeleccione la ranura de armas para borrar.\nNota: Recompra se refiere a estas armas." + //"es" "ZMarket\nMy Current Setup:\nSelect weapon slot to modify.\nNote: Rebuy refers to these weapons.\nYou will spawn with these weapons." // TODO: Translate } "Weapons menu zmarket loadout primary" @@ -699,29 +695,15 @@ "es" "Secundaria: {1}" } - "Weapons menu zmarket loadout melee" + "Weapons menu zmarket loadout default" { - "es" "Melee: {1}" + "#format" "{1:s}" + "es" "Default ({1})" // TODO: Translate } - "Weapons menu zmarket loadout projectile" + "Weapons menu zmarket loadout weapons title" { - "es" "Projectil: {1}" - } - - "Weapons menu zmarket loadout explosive" - { - "es" "Explosivo: {1}" - } - - "Weapons menu zmarket loadout nvgs" - { - "es" "Vision Nocturna: {1}" - } - - "Weapons menu zmarket loadout empty" - { - "es" "(Ninguno)" + "es" "ZMarket\nSelect Weapon Loadout:" // TODO: Translate } "Weapons menu zmarket types title" diff --git a/cstrike/addons/sourcemod/translations/no/zombiereloaded.phrases.txt b/cstrike/addons/sourcemod/translations/no/zombiereloaded.phrases.txt index 10c7c22..1fced81 100644 --- a/cstrike/addons/sourcemod/translations/no/zombiereloaded.phrases.txt +++ b/cstrike/addons/sourcemod/translations/no/zombiereloaded.phrases.txt @@ -74,7 +74,12 @@ { "no" "Du må være menneske for å kunne bruke denne funksjonen." } - + + "Must be in buyzone" + { + "no" "This feature requires that you are in a buyzone." // TODO: Translate + } + "Increase by" { "no" "Økning med {1}" @@ -572,14 +577,9 @@ "no" "Du kan bare holde {1} granat(er) av denne typen." } - "Weapons zmarket auto-rebuy toggle on" + "Weapons zmarket not enough money" { - "no" "Autokjøp er aktivert, dine valg vil automatisk bli kjøpt hver runde eller hver gjenoppliving." - } - - "Weapons zmarket auto-rebuy toggle off" - { - "no" "Autokjøp er deaktivert." + "no" "You have insufficient funds." // TODO: Translate } "Weapons zmarket updated loadout" @@ -663,9 +663,9 @@ "no" "Lagre gjeldende våpenvalg" } - "Weapons menu zmarket main view loadout" + "Weapons menu zmarket main edit loadout" { - "no" "Vis våpenvalg" + "no" "Edit Saved Setup" // TODO: Translate } "Weapons menu zmarket main rebuy" @@ -673,11 +673,6 @@ "no" "Kjøp lagret våpenvalg" } - "Weapons menu zmarket main auto-rebuy" - { - "no" "Autokjøp: {1}" - } - "Weapons menu zmarket main weapons list" { "no" "Vis våpenliste" @@ -686,6 +681,7 @@ "Weapons menu zmarket loadout title" { "no" "ZMarket\nGjeldende våpenvalg:\nFjern våpen ved å velge det." + //"no" "ZMarket\nMy Current Setup:\nSelect weapon slot to modify.\nNote: Rebuy refers to these weapons.\nYou will spawn with these weapons." // TODO: Translate } "Weapons menu zmarket loadout primary" @@ -698,29 +694,15 @@ "no" "sekundærvåpen: {1}" } - "Weapons menu zmarket loadout melee" + "Weapons menu zmarket loadout default" { - "no" "Nærkamp: {1}" + "#format" "{1:s}" + "no" "Default ({1})" // TODO: Translate } - "Weapons menu zmarket loadout projectile" + "Weapons menu zmarket loadout weapons title" { - "no" "Prosjektiler: {1}" - } - - "Weapons menu zmarket loadout explosive" - { - "no" "Granater: {1}" - } - - "Weapons menu zmarket loadout nvgs" - { - "no" "Nattsyn: {1}" - } - - "Weapons menu zmarket loadout empty" - { - "no" "(Ingen)" + "no" "ZMarket\nSelect Weapon Loadout:" // TODO: Translate } "Weapons menu zmarket types title" diff --git a/cstrike/addons/sourcemod/translations/ru/zombiereloaded.phrases.txt b/cstrike/addons/sourcemod/translations/ru/zombiereloaded.phrases.txt index 018380f..c23aeb4 100644 --- a/cstrike/addons/sourcemod/translations/ru/zombiereloaded.phrases.txt +++ b/cstrike/addons/sourcemod/translations/ru/zombiereloaded.phrases.txt @@ -75,7 +75,12 @@ { "ru" "Данная функция доступна только, когда вы человек." } - + + "Must be in buyzone" + { + "ru" "This feature requires that you are in a buyzone." // TODO: Translate + } + "Increase by" { "ru" "Увеличить на {1}" @@ -573,14 +578,9 @@ "ru" "Вы можете нести только {1} гранаты данного типа." } - "Weapons zmarket auto-rebuy toggle on" + "Weapons zmarket not enough money" { - "ru" "Авто-покупка была включена, ваша амуниция будет автоматически закупаться при каждом респавне." - } - - "Weapons zmarket auto-rebuy toggle off" - { - "ru" "Авто-покупка была отключена." + "ru" "You have insufficient funds." // TODO: Translate } "Weapons zmarket updated loadout" @@ -664,9 +664,9 @@ "ru" "Сохранить текущее оружие" } - "Weapons menu zmarket main view loadout" + "Weapons menu zmarket main edit loadout" { - "ru" "Просмотр текущй амуниции" + "ru" "Edit Saved Setup" // TODO: Translate } "Weapons menu zmarket main rebuy" @@ -674,11 +674,6 @@ "ru" "Снова купить мою амуницию" } - "Weapons menu zmarket main auto-rebuy" - { - "ru" "Авто-покупка: {1}" - } - "Weapons menu zmarket main weapons list" { "ru" "Просмотр списка оружия" @@ -687,6 +682,7 @@ "Weapons menu zmarket loadout title" { "ru" "ZMarket\nМоя текущая амуниция:\nВыберите слот для очистки.\nПримечаие: Авто-покупка использует данный список." + //"ru" "ZMarket\nMy Current Setup:\nSelect weapon slot to modify.\nNote: Rebuy refers to these weapons.\nYou will spawn with these weapons." // TODO: Translate } "Weapons menu zmarket loadout primary" @@ -699,29 +695,15 @@ "ru" "Пистолет: {1}" } - "Weapons menu zmarket loadout melee" + "Weapons menu zmarket loadout default" { - "ru" "Ближний бой: {1}" + "#format" "{1:s}" + "ru" "Default ({1})" // TODO: Translate } - "Weapons menu zmarket loadout projectile" + "Weapons menu zmarket loadout weapons title" { - "ru" "Снаряды: {1}" - } - - "Weapons menu zmarket loadout explosive" - { - "ru" "Взрывчатка: {1}" - } - - "Weapons menu zmarket loadout nvgs" - { - "ru" "Ночное видение: {1}" - } - - "Weapons menu zmarket loadout empty" - { - "ru" "(Пусто)" + "ru" "ZMarket\nSelect Weapon Loadout:" // TODO: Translate } "Weapons menu zmarket types title" diff --git a/cstrike/addons/sourcemod/translations/zombiereloaded.phrases.txt b/cstrike/addons/sourcemod/translations/zombiereloaded.phrases.txt index 4e32665..6e4dfab 100644 --- a/cstrike/addons/sourcemod/translations/zombiereloaded.phrases.txt +++ b/cstrike/addons/sourcemod/translations/zombiereloaded.phrases.txt @@ -77,7 +77,12 @@ { "en" "This feature requires that you are a human." } - + + "Must be in buyzone" + { + "en" "This feature requires that you are in a buyzone." + } + "Increase by" { "#format" "{1:s}" @@ -610,14 +615,9 @@ "en" "You may only carry {1} grenade(s) of this type." } - "Weapons zmarket auto-rebuy toggle on" + "Weapons zmarket not enough money" { - "en" "Auto-rebuy has been enabled, your loadout will be automatically purchased for you each time you spawn." - } - - "Weapons zmarket auto-rebuy toggle off" - { - "en" "Auto-rebuy has been disabled." + "en" "You have insufficient funds." } "Weapons zmarket updated loadout" @@ -705,9 +705,9 @@ "en" "Save Current Setup" } - "Weapons menu zmarket main view loadout" + "Weapons menu zmarket main edit loadout" { - "en" "View Saved Setup" + "en" "Edit Saved Setup" } "Weapons menu zmarket main rebuy" @@ -715,12 +715,6 @@ "en" "Buy Saved Setup" } - "Weapons menu zmarket main auto-rebuy" - { - "#format" "{1:s}" - "en" "Auto-Rebuy: {1}" - } - "Weapons menu zmarket main weapons list" { "en" "Buy Weapons" @@ -728,7 +722,7 @@ "Weapons menu zmarket loadout title" { - "en" "ZMarket\nMy Current Setup:\nSelect weapon slot to clear.\nNote: Rebuy refers to these weapons." + "en" "ZMarket\nMy Current Setup:\nSelect weapon slot to modify.\nNote: Rebuy refers to these weapons.\nYou will spawn with these weapons." } "Weapons menu zmarket loadout primary" @@ -743,33 +737,15 @@ "en" "Secondary: {1}" } - "Weapons menu zmarket loadout melee" + "Weapons menu zmarket loadout default" { "#format" "{1:s}" - "en" "Melee: {1}" + "en" "Default ({1})" } - "Weapons menu zmarket loadout projectile" + "Weapons menu zmarket loadout weapons title" { - "#format" "{1:s}" - "en" "Projectile: {1}" - } - - "Weapons menu zmarket loadout explosive" - { - "#format" "{1:s}" - "en" "Explosive: {1}" - } - - "Weapons menu zmarket loadout nvgs" - { - "#format" "{1:s}" - "en" "NVGs: {1}" - } - - "Weapons menu zmarket loadout empty" - { - "en" "(None)" + "en" "ZMarket\nSelect Weapon Loadout:" } "Weapons menu zmarket types title" diff --git a/src/zr/cvars.inc b/src/zr/cvars.inc index 7741f2b..4939f51 100644 --- a/src/zr/cvars.inc +++ b/src/zr/cvars.inc @@ -79,6 +79,8 @@ enum CvarsList Handle:CVAR_WEAPONS_ZMARKET_BUYZONE, Handle:CVAR_WEAPONS_ZMARKET_REBUY, Handle:CVAR_WEAPONS_ZMARKET_REBUY_AUTO, + Handle:CVAR_WEAPONS_ZMARKET_REBUY_PRIMARY, + Handle:CVAR_WEAPONS_ZMARKET_REBUY_SECONDARY, Handle:CVAR_HITGROUPS, Handle:CVAR_DAMAGE_HITGROUPS, Handle:CVAR_DAMAGE_BLOCK_FF, @@ -299,7 +301,9 @@ CvarsCreate() g_hCvarsList[CVAR_WEAPONS_ZMARKET] = CreateConVar("zr_weapons_zmarket", "1", "Allow player to buy from a list of weapons in the weapons config."); g_hCvarsList[CVAR_WEAPONS_ZMARKET_BUYZONE] = CreateConVar("zr_weapons_zmarket_buyzone", "1", "Requires player to be inside a buyzone to use ZMarket. [Dependency: zr_weapons_zmarket]"); g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY] = CreateConVar("zr_weapons_zmarket_rebuy", "1", "Allow players to rebuy their previous weapons. [Dependency: zr_weapons_zmarket]"); - g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_AUTO] = CreateConVar("zr_weapons_zmarket_rebuy_auto", "1", "Allow players to automatically rebuy their previous weapons. [Dependency: zr_weapons_zmarket&zr_weapons_zmarket_rebuy]"); + g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_AUTO] = CreateConVar("zr_weapons_zmarket_rebuy_auto", "1", "Automatically equip default or loadout weapons. [Dependency: zr_weapons_zmarket&zr_weapons_zmarket_rebuy]"); + g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_PRIMARY] = CreateConVar("zr_weapons_zmarket_rebuy_primary","P90", "Default primary weapon. [Dependency: zr_weapons_zmarket&zr_weapons_zmarket_rebuy]"); + g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_SECONDARY] = CreateConVar("zr_weapons_zmarket_rebuy_secondary","Elite", "Default secondary weapon. [Dependency: zr_weapons_zmarket&zr_weapons_zmarket_rebuy]"); // =========================== diff --git a/src/zr/infect.inc b/src/zr/infect.inc index 63f7aa5..a7a56d7 100644 --- a/src/zr/infect.inc +++ b/src/zr/infect.inc @@ -275,6 +275,9 @@ InfectOnClientSpawn(client) CS_SwitchTeam(client, CS_TEAM_CT); CS_RespawnPlayer(client); } + + // Unglitch kevlar. (Reset hitbox to HITBOX_GENERIC) + SetEntData(client, 4444, 0, 4); } /** @@ -782,6 +785,10 @@ InfectHumanToZombie(client, attacker = -1, bool:motherinfect = false, bool:respa } } + // Remove kevlar and helmet + SetEntProp(client, Prop_Send, "m_ArmorValue", 0, 1); + SetEntProp(client, Prop_Send, "m_bHasHelmet", 0); + // Print message to client. TranslationPrintToChat(client, "Infect infected"); @@ -853,6 +860,9 @@ InfectZombieToHuman(client, bool:respawn = false, bool:protect = false) SpawnProtectStart(client); } + // Unglitch kevlar. (Reset hitbox to HITBOX_GENERIC) + SetEntData(client, 4444, 0, 4); + // Forward event to modules. SEffectsOnClientHuman(client); APIOnClientHumanPost(client, respawn, protect); diff --git a/src/zr/weapons/weapons.inc b/src/zr/weapons/weapons.inc index 23fc8e0..0b14a21 100644 --- a/src/zr/weapons/weapons.inc +++ b/src/zr/weapons/weapons.inc @@ -60,6 +60,7 @@ enum WeaponsData WEAPONS_DATA_KNOCKBACK, WEAPONS_DATA_ZMARKETPRICE, WEAPONS_DATA_ZMARKETPURCHASEMAX, + WEAPONS_DATA_ZMARKETCOMMAND, WEAPONS_DATA_RESTRICTED, } @@ -214,6 +215,7 @@ WeaponsLoad() // Forward event to sub-modules RestrictLoad(); + ZMarketLoad(); } /** @@ -253,6 +255,7 @@ WeaponsCacheData() decl String:weaponentity[CONFIG_MAX_LENGTH]; decl String:weapontype[CONFIG_MAX_LENGTH]; decl String:ammotype[CONFIG_MAX_LENGTH]; + decl String:zmarketcommand[CONFIG_MAX_LENGTH]; // General KvGetString(kvWeapons, "weaponentity", weaponentity, sizeof(weaponentity)); @@ -273,6 +276,7 @@ WeaponsCacheData() // ZMarket (module) new zmarketprice = KvGetNum(kvWeapons, "zmarketprice", -1); new zmarketpurchasemax = KvGetNum(kvWeapons, "zmarketpurchasemax", 0); + KvGetString(kvWeapons, "zmarketcommand", zmarketcommand, sizeof(zmarketcommand), ""); new Handle:arrayWeapon = GetArrayCell(arrayWeapons, x); @@ -286,10 +290,11 @@ WeaponsCacheData() PushArrayCell(arrayWeapon, ammoprice); // Index: 7 PushArrayCell(arrayWeapon, knockback); // Index: 8 PushArrayCell(arrayWeapon, zmarketprice); // Index: 9 - PushArrayCell(arrayWeapon, zmarketpurchasemax); // Index: 10 + PushArrayCell(arrayWeapon, zmarketpurchasemax); // Index: 10 + PushArrayString(arrayWeapon, zmarketcommand); // Index: 11 // Initialize other stored weapon info here. - PushArrayCell(arrayWeapon, restrictdefault); // Index: 11 + PushArrayCell(arrayWeapon, restrictdefault); // Index: 12 } // We're done with this file now, so we can close it. @@ -691,6 +696,22 @@ stock WeaponsGetZMarketPurchaseMax(index) return GetArrayCell(arrayWeapon, _:WEAPONS_DATA_ZMARKETPURCHASEMAX); } +/** + * Gets the name of the command to purchase this weapon through zmarket. + * @param index The weapon index. + * @param command The string to return zmarketcommand in. + * @param maxlen The max length of the string. + * @return The max purchases of the weapon. + */ +stock WeaponsGetZMarketCommand(index, String:command[], maxlen) +{ + // Get array handle of weapon at given index. + new Handle:arrayWeapon = GetArrayCell(arrayWeapons, index); + + // Return the ZMarket price of the weapon. + GetArrayString(arrayWeapon, _:WEAPONS_DATA_ZMARKETCOMMAND, command, maxlen); +} + /** * General weapon API. */ diff --git a/src/zr/weapons/zmarket.inc b/src/zr/weapons/zmarket.inc index fef8359..e00f284 100644 --- a/src/zr/weapons/zmarket.inc +++ b/src/zr/weapons/zmarket.inc @@ -34,6 +34,11 @@ * @endsection */ +/** + * Slots saved for auto-rebuy + */ +#define ZMARKET_REBUY_WEAPONS_SLOTS_MAX 1 + /** * Variable to store buyzone offset value. */ @@ -49,11 +54,6 @@ new g_iZMarketCurType[MAXPLAYERS + 1]; */ new Handle:g_hZMarketPurchaseCount[MAXPLAYERS + 1]; -/** - * Cookie handle for auto-rebuy. - */ -new Handle:g_hZMarketAutoRebuyCookie = INVALID_HANDLE; - /** * Whether weapons has been bought automatically. Used to prevent double rebuy * when cookies are loaded after the player was spawned. @@ -63,7 +63,9 @@ new bool:g_bZMarketWeaponsBought[MAXPLAYERS + 1]; /** * Cookie handle array for weapon loadouts. */ -new Handle:g_hZMarketLoadoutCookie[WEAPONS_SLOTS_MAX + 1]; +new Handle:g_hZMarketLoadoutCookie[ZMARKET_REBUY_WEAPONS_SLOTS_MAX + 1]; + +new bool:g_bZMarketCommandInitialized = false; /** * Create commands specific to ZMarket. @@ -72,21 +74,16 @@ ZMarketOnCommandsCreate() { // Register ZMarket command. RegConsoleCmd(SAYHOOKS_KEYWORD_ZMARKET, ZMarketCommand, "Opens custom buymenu."); + g_bZMarketCommandInitialized = false; } ZMarketOnCookiesCreate() { - // Create auto-rebuy cookie handle if doesn't exist. - if (g_hZMarketAutoRebuyCookie == INVALID_HANDLE) - { - g_hZMarketAutoRebuyCookie = RegClientCookie(ZMARKET_COOKIE_AUTOREBUY, "The toggle state of auto-rebuy.", CookieAccess_Protected); - } - decl String:rebuycookiename[32]; decl String:rebuycookiedesc[64]; // x = Weapon slot. - for (new x = 0; x < WEAPONS_SLOTS_MAX + 1; x++) + for (new x = 0; x < ZMARKET_REBUY_WEAPONS_SLOTS_MAX + 1; x++) { // Format cookie name and description. Format(rebuycookiename, sizeof(rebuycookiename), "%s_%d", ZMARKET_COOKIE_REBUY, x); @@ -100,6 +97,52 @@ ZMarketOnCookiesCreate() } } +ZMarketLoad() +{ + // Do not register commands multiple times + if(g_bZMarketCommandInitialized) + return; + + decl String:zmarketcommand[CONFIG_MAX_LENGTH]; + decl String:weaponname[WEAPONS_MAX_LENGTH]; + + new size = GetArraySize(arrayWeapons); + for (new weaponindex = 0; weaponindex < size; weaponindex++) + { + WeaponsGetZMarketCommand(weaponindex, zmarketcommand, sizeof(zmarketcommand)); + if(zmarketcommand[0]) + { + WeaponsGetName(weaponindex, weaponname, sizeof(weaponname)); + RegConsoleCmd(zmarketcommand, ZMarketBuyCommand, weaponname); + } + } + + g_bZMarketCommandInitialized = true; +} + +public Action:ZMarketBuyCommand(client, argc) +{ + decl String:command[CONFIG_MAX_LENGTH]; + decl String:zmarketcommand[CONFIG_MAX_LENGTH]; + decl String:weaponname[WEAPONS_MAX_LENGTH]; + + GetCmdArg(0, command, sizeof(command)); + + new size = GetArraySize(arrayWeapons); + for (new weaponindex = 0; weaponindex < size; weaponindex++) + { + WeaponsGetZMarketCommand(weaponindex, zmarketcommand, sizeof(zmarketcommand)); + if(StrEqual(command, zmarketcommand)) + { + WeaponsGetName(weaponindex, weaponname, sizeof(weaponname)); + ZMarketEquip(client, weaponname); + return Plugin_Handled; + } + } + + return Plugin_Handled; +} + /** * Client is joining the server. * @@ -123,22 +166,10 @@ ZMarketClientInit(client) /** * Called once a client's saved cookies have been loaded from the database. * - * @param client Client index. + * @param client Client index. */ ZMarketOnCookiesCached(client) { - // Initialize auto-rebuy data. - decl String:zmarketautorebuy[8]; - GetClientCookie(client, g_hZMarketAutoRebuyCookie, zmarketautorebuy, sizeof(zmarketautorebuy)); - - // If the cookie is empty, then set the default value. - if (!zmarketautorebuy[0]) - { - // Set cookie to false. - CookiesSetClientCookieBool(client, g_hZMarketAutoRebuyCookie, false); - return; - } - // Rebuy wapons (if auto-rebuy is enabled, and not bought already). if (!g_bZMarketWeaponsBought[client]) { @@ -184,13 +215,6 @@ ZMarketOnClientSpawnPost(client) */ ZMarketCheckRebuy(client) { - // If auto-rebuy is disabled, then ensure it is also disabled on the client as well. - new bool:zmarketrebuyauto = GetConVarBool(g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_AUTO]); - if (!zmarketrebuyauto) - { - CookiesSetClientCookieBool(client, g_hZMarketAutoRebuyCookie, false); - } - // If client hasn't spawned into the game yet, then stop. if (!IsClientConnected(client) || !IsClientInGame(client) || !IsPlayerAlive(client)) { @@ -203,12 +227,9 @@ ZMarketCheckRebuy(client) return; } - // If auto-rebuy is enabled, then force client to rebuy weapons. - if (CookiesGetClientCookieBool(client, g_hZMarketAutoRebuyCookie)) - { - ZMarketRebuy(client, true); - g_bZMarketWeaponsBought[client] = true; - } + // Give default/prefered spawn weapons + ZMarketRebuy(client, true); + g_bZMarketWeaponsBought[client] = true; } /** @@ -301,29 +322,22 @@ bool:ZMarketMenuMain(client) // Add "Get Current Loadout" option. decl String:title[MENU_LINE_TITLE_LENGTH]; decl String:getloadout[MENU_LINE_REG_LENGTH]; - decl String:viewloadout[MENU_LINE_REG_LENGTH]; + decl String:editloadout[MENU_LINE_REG_LENGTH]; decl String:rebuy[MENU_LINE_REG_LENGTH]; - decl String:rebuyauto[MENU_LINE_REG_LENGTH]; decl String:weaponslist[MENU_LINE_REG_LENGTH]; - // Get auto-rebuy setting. - decl String:rebuyautosetting[MENU_LINE_SMALL_LENGTH]; - ConfigBoolToSetting(CookiesGetClientCookieBool(client, g_hZMarketAutoRebuyCookie), rebuyautosetting, sizeof(rebuyautosetting), true, client); - // Format menu options. Format(title, sizeof(title), "%t\n ", "Weapons menu zmarket main title"); Format(getloadout, sizeof(getloadout), "%t", "Weapons menu zmarket main get loadout"); - Format(viewloadout, sizeof(viewloadout), "%t", "Weapons menu zmarket main view loadout"); + Format(editloadout, sizeof(editloadout), "%t", "Weapons menu zmarket main edit loadout"); Format(rebuy, sizeof(rebuy), "%t", "Weapons menu zmarket main rebuy"); - Format(rebuyauto, sizeof(rebuyauto), "%t", "Weapons menu zmarket main auto-rebuy", rebuyautosetting); Format(weaponslist, sizeof(weaponslist), "%t", "Weapons menu zmarket main weapons list"); // Add formatted options to menu. SetMenuTitle(menu_zmarket_main, title); AddMenuItem(menu_zmarket_main, "Get Loadout", getloadout, MenuGetItemDraw(zmarketrebuy || zmarketrebuyauto)); - AddMenuItem(menu_zmarket_main, "View Loadout", viewloadout, MenuGetItemDraw(zmarketrebuy || zmarketrebuyauto)); + AddMenuItem(menu_zmarket_main, "Edit Loadout", editloadout, MenuGetItemDraw(zmarketrebuy || zmarketrebuyauto)); AddMenuItem(menu_zmarket_main, "Rebuy", rebuy, MenuGetItemDraw(zmarketrebuy || zmarketrebuyauto)); - AddMenuItem(menu_zmarket_main, "Auto-Rebuy", rebuyauto, MenuGetItemDraw(zmarketrebuyauto)); AddMenuItem(menu_zmarket_main, "Weapons List", weaponslist); // Set exit back button. @@ -359,10 +373,10 @@ public ZMarketMenuMainHandle(Handle:menu_zmarket_main, MenuAction:action, client // Resend menu. ZMarketMenuMain(client); } - // View loadout. + // Edit loadout. case 1: { - // Show a client their current loadout. + // Send the weapon loadout edit menu. ZMarketMenuLoadout(client); } // Rebuy. @@ -374,17 +388,8 @@ public ZMarketMenuMainHandle(Handle:menu_zmarket_main, MenuAction:action, client // Resend menu. ZMarketMenuMain(client); } - // Auto-rebuy. - case 3: - { - // Toggle the auto-rebuy cookie. - ZMarketToggleAutoRebuy(client); - - // Resend menu. - ZMarketMenuMain(client); - } // Weapons list. - case 4: + case 3: { // Send the weapon types list. ZMarketMenuTypes(client); @@ -418,60 +423,48 @@ bool:ZMarketMenuLoadout(client) new Handle:menu_zmarket_loadout = CreateMenu(ZMarketMenuLoadoutHandle); // Transfer cookie values into an array. - new String:rebuyweapons[WeaponsSlot][WEAPONS_MAX_LENGTH]; - ZMarketCookiesToArray(client, rebuyweapons, WEAPONS_SLOTS_MAX + 1, sizeof(rebuyweapons[])); + new String:rebuyweapons[ZMARKET_REBUY_WEAPONS_SLOTS_MAX + 1][WEAPONS_MAX_LENGTH]; + ZMarketCookiesToArray(client, rebuyweapons, sizeof(rebuyweapons), sizeof(rebuyweapons[])); SetGlobalTransTarget(client); - // Get the empty translation. - decl String:empty[MENU_LINE_SMALL_LENGTH]; - Format(empty, sizeof(empty), "%t", "Weapons menu zmarket loadout empty"); - // x = Rebuy weapon slot. for (new x = 0; x < sizeof(rebuyweapons); x++) { - // Ignore the NVG slot, we handle this separately. - if (WeaponsSlot:x == Slot_NVGs) - { - continue; - } - - // If the client doesn't have a weapon in this slot, then set the weapon to the empty translation. + // If the client doesn't have a weapon in this slot, then set the weapon to the default translation. if (!rebuyweapons[x][0]) { - strcopy(rebuyweapons[x], sizeof(rebuyweapons[]), empty); + // Get default weapon for this slot + decl String:weaponname[WEAPONS_MAX_LENGTH]; + switch(x) + { + case Slot_Primary: + { + GetConVarString(g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_PRIMARY], weaponname, sizeof(weaponname)); + } + case Slot_Secondary: + { + GetConVarString(g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_SECONDARY], weaponname, sizeof(weaponname)); + } + } + + Format(rebuyweapons[x], sizeof(rebuyweapons[]), "%t", "Weapons menu zmarket loadout default", weaponname); } } - // Copy "Yes/No" to NVGs string. - decl String:nvgsbool[MENU_LINE_SMALL_LENGTH]; - ConfigBoolToSetting(bool:rebuyweapons[Slot_NVGs][0], nvgsbool, sizeof(nvgsbool), true, client); - decl String:title[MENU_LINE_HUGE_LENGTH]; decl String:primary[MENU_LINE_REG_LENGTH]; decl String:secondary[MENU_LINE_REG_LENGTH]; - decl String:melee[MENU_LINE_REG_LENGTH]; - decl String:projectile[MENU_LINE_REG_LENGTH]; - decl String:explosive[MENU_LINE_REG_LENGTH]; - decl String:nvgs[MENU_LINE_REG_LENGTH]; // Format all the lines of the menu. Format(title, sizeof(title), "%t\n ", "Weapons menu zmarket loadout title"); Format(primary, sizeof(primary), "%t", "Weapons menu zmarket loadout primary", rebuyweapons[Slot_Primary]); Format(secondary, sizeof(secondary), "%t", "Weapons menu zmarket loadout secondary", rebuyweapons[Slot_Secondary]); - Format(melee, sizeof(melee), "%t", "Weapons menu zmarket loadout melee", rebuyweapons[Slot_Melee]); - Format(projectile, sizeof(projectile), "%t", "Weapons menu zmarket loadout projectile", rebuyweapons[Slot_Projectile]); - Format(explosive, sizeof(explosive), "%t", "Weapons menu zmarket loadout explosive", rebuyweapons[Slot_Explosive]); - Format(nvgs, sizeof(nvgs), "%t", "Weapons menu zmarket loadout nvgs", nvgsbool); // Add formatted options to menu. SetMenuTitle(menu_zmarket_loadout, title); - AddMenuItem(menu_zmarket_loadout, "0", primary, MenuGetItemDraw(!StrEqual(rebuyweapons[Slot_Primary], empty))); - AddMenuItem(menu_zmarket_loadout, "1", secondary, MenuGetItemDraw(!StrEqual(rebuyweapons[Slot_Secondary], empty))); - AddMenuItem(menu_zmarket_loadout, "2", melee, MenuGetItemDraw(!StrEqual(rebuyweapons[Slot_Melee], empty))); - AddMenuItem(menu_zmarket_loadout, "3", projectile, MenuGetItemDraw(!StrEqual(rebuyweapons[Slot_Projectile], empty))); - AddMenuItem(menu_zmarket_loadout, "4", explosive, MenuGetItemDraw(!StrEqual(rebuyweapons[Slot_Explosive], empty))); - AddMenuItem(menu_zmarket_loadout, "5", nvgs, MenuGetItemDraw(bool:rebuyweapons[Slot_NVGs][0])); + AddMenuItem(menu_zmarket_loadout, "0", primary); + AddMenuItem(menu_zmarket_loadout, "1", secondary); // Set exit back button. SetMenuExitBackButton(menu_zmarket_loadout, true); @@ -493,11 +486,20 @@ public ZMarketMenuLoadoutHandle(Handle:menu_zmarket_loadout, MenuAction:action, // Client selected an option. if (action == MenuAction_Select) { - // Clear rebuy slot. - ZMarketSetRebuyCookie(client, WeaponsSlot:slot, ""); - - // Re-send menu. - ZMarketMenuLoadout(client); + // Open correct submenu for weapon type + switch(slot) + { + case 0: + { + g_iZMarketCurType[client] = _:Slot_Primary; + ZMarketMenuLoadoutWeapons(client, Slot_Primary); + } + case 1: + { + g_iZMarketCurType[client] = _:Slot_Secondary; + ZMarketMenuLoadoutWeapons(client, Slot_Secondary); + } + } } // Client closed the menu. if (action == MenuAction_Cancel) @@ -515,6 +517,110 @@ public ZMarketMenuLoadoutHandle(Handle:menu_zmarket_loadout, MenuAction:action, } } +ZMarketMenuLoadoutWeapons(client, WeaponsSlot:slot) +{ + // Create menu handle. + new Handle:menu_zmarket_loadout_weapons = CreateMenu(ZMarketMenuLoadoutWeaponsHandle); + + // Set translation target as client. + SetGlobalTransTarget(client); + + decl String:title[MENU_LINE_TITLE_LENGTH]; + Format(title, sizeof(title), "%t\n ", "Weapons menu zmarket loadout weapons title"); + SetMenuTitle(menu_zmarket_loadout_weapons, title); + + decl String:weaponname[WEAPONS_MAX_LENGTH]; + decl String:weapondisplay[MENU_LINE_REG_LENGTH]; + + // Get default weapon for this slot + switch(slot) + { + case Slot_Primary: + { + GetConVarString(g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_PRIMARY], weaponname, sizeof(weaponname)); + } + case Slot_Secondary: + { + GetConVarString(g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_SECONDARY], weaponname, sizeof(weaponname)); + } + } + + // First item = Server default weapon + Format(weapondisplay, sizeof(weapondisplay), "%t", "Weapons menu zmarket loadout default", weaponname); + AddMenuItem(menu_zmarket_loadout_weapons, "", weapondisplay); + + new size = GetArraySize(arrayWeapons); + for (new weaponindex = 0; weaponindex < size; weaponindex++) + { + // Get weapons slot + new WeaponsSlot:wslot = WeaponsGetSlot(weaponindex); + + // Does it match with the slot we want? + if(wslot != slot) + continue; + + WeaponsGetName(weaponindex, weaponname, sizeof(weaponname)); + + // Get restricted status on the weapon. + new bool:restricted = RestrictIsWeaponRestricted(weaponindex); + + // If weapon is restricted then format "[]" around it. + strcopy(weapondisplay, sizeof(weapondisplay), weaponname); + if (restricted) + { + Format(weapondisplay, sizeof(weapondisplay), "[%s]", weaponname); + } + + // Disable weapon if it's restricted. + AddMenuItem(menu_zmarket_loadout_weapons, weaponname, weapondisplay, MenuGetItemDraw(!restricted)); + } + + // Set exit back button. + SetMenuExitBackButton(menu_zmarket_loadout_weapons, true); + + DisplayMenu(menu_zmarket_loadout_weapons, client, MENU_TIME_FOREVER); +} + + +/** + * Called when client selects a weapon in the loadout weapons menu, and handles it. + * + * @param menu_zmarket_loadout_weapons Handle of the menu being used. + * @param action The action done on the menu (see menus.inc, enum MenuAction). + * @param client The client index. + * @param slot The slot index selected (starting from 0). + */ +public ZMarketMenuLoadoutWeaponsHandle(Handle:menu_zmarket_loadout_weapons, MenuAction:action, client, slot) +{ + // Client selected an option. + if (action == MenuAction_Select) + { + // Get name of selected weapon. + decl String:weapon[WEAPONS_MAX_LENGTH]; + GetMenuItem(menu_zmarket_loadout_weapons, slot, weapon, sizeof(weapon)); + + // Update cookie with new weapon. + ZMarketSetRebuyCookie(client, WeaponsSlot:g_iZMarketCurType[client], weapon); + + // Open loadout menu. + ZMarketMenuLoadout(client); + } + // Client closed the menu. + if (action == MenuAction_Cancel) + { + // Client hit "Back" button. + if (slot == MenuCancel_ExitBack) + { + ZMarketMenuLoadout(client); + } + } + // Client hit "Exit" button. + else if (action == MenuAction_End) + { + CloseHandle(menu_zmarket_loadout_weapons); + } +} + /** * Sends weapon type list to client. * @@ -784,10 +890,14 @@ public ZMarketMenuTypeWeaponsHandle(Handle:menu_zmarket_typeweapons, MenuAction: * * @param client The client index. * @param weapon The weapon to equip. (must be in weapons config file) - * @param rebuy (Optional) If client is rebuying, ammo will be ignored. + * @param rebuy (Optional) If client is rebuying, ammo and cash will be ignored. */ stock bool:ZMarketEquip(client, const String:weapon[], bool:rebuy = false) { + // if zombie hasn't spawned yet we're always rebuying: + if(!InfectHasZombieSpawned()) + rebuy = true; + // Get weapon index. new weaponindex = WeaponsNameToIndex(weapon); @@ -801,23 +911,24 @@ stock bool:ZMarketEquip(client, const String:weapon[], bool:rebuy = false) // Get slot index of the weapon being purchased. new WeaponsSlot:slot = WeaponsGetSlot(weaponindex); - // If client is dead or a zombie, update weapon loadout instead. - if (!IsPlayerAlive(client) || InfectIsClientInfected(client)) + // If client is dead, then stop. + if (!IsPlayerAlive(client)) { - // Update cookie with new weapon. - ZMarketSetRebuyCookie(client, slot, weapon); + TranslationPrintToChat(client, "Must be alive"); + return false; + } - TranslationPrintToChat(client, "Weapons zmarket updated loadout"); + // If client is a zombie, then stop. + if (InfectIsClientInfected(client)) + { + TranslationPrintToChat(client, "Must be human"); return false; } new bool:zmarketbuyzone = GetConVarBool(g_hCvarsList[CVAR_WEAPONS_ZMARKET_BUYZONE]); if (!rebuy && zmarketbuyzone && !WeaponsIsClientInBuyZone(client)) { - // Update cookie with new weapon. - ZMarketSetRebuyCookie(client, slot, weapon); - - TranslationPrintToChat(client, "Weapons zmarket updated loadout"); + TranslationPrintToChat(client, "Must be in buyzone"); return false; } @@ -884,22 +995,22 @@ stock bool:ZMarketEquip(client, const String:weapon[], bool:rebuy = false) } } - // Get client's current money. - new cash = AccountGetClientCash(client); - - // If client doesn't have enough money, tell them, resend menu, and then stop. - if (cash < itemprice) + if(!rebuy) { - // Update cookie with new weapon. - ZMarketSetRebuyCookie(client, slot, weapon); + // Get client's current money. + new cash = AccountGetClientCash(client); - TranslationPrintToChat(client, "Weapons zmarket updated loadout"); - return false; + // If client doesn't have enough money, tell them, resend menu, and then stop. + if (cash < itemprice) + { + TranslationPrintToChat(client, "Weapons zmarket not enough money"); + return false; + } + + // Set client's new cash after purchase. + AccountSetClientCash(client, cash - itemprice); } - // Set client's new cash after purchase. - AccountSetClientCash(client, cash - itemprice); - // Get a list of the client's current weapons. new weapons[WeaponsSlot]; WeaponsGetClientWeapons(client, weapons); @@ -913,14 +1024,23 @@ stock bool:ZMarketEquip(client, const String:weapon[], bool:rebuy = false) // If there is already a weapon in the slot, then force client to drop it. if (weapons[slot] > -1) { - // Force client to drop the weapon. - WeaponsForceClientDrop(client, weapons[slot]); + if(rebuy) + { + // Kill weapon right away to decrease amount of entities on roundstart. + RemoveEdict(weapons[slot]); + } + else + { + // Force client to drop the weapon. + WeaponsForceClientDrop(client, weapons[slot]); + } } } if (StrEqual(weaponentity, "item_kevlar")) { SetEntProp(client, Prop_Send, "m_ArmorValue", 100); + SetEntProp(client, Prop_Send, "m_bHasHelmet", 1); } else { @@ -928,16 +1048,12 @@ stock bool:ZMarketEquip(client, const String:weapon[], bool:rebuy = false) GivePlayerItem(client, weaponentity); } - // Update cookie with new weapon. - ZMarketSetRebuyCookie(client, slot, weapon); - - // Add 1 to the client's purchase count. - ZMarketSetPurchaseCount(client, weapon, 1, true); - - // If client isn't rebuying the weapon, then tell them the weapon has been purchased. if (!rebuy) { - // Tell client they bought a weapon. + // Add 1 to the client's purchase count. + ZMarketSetPurchaseCount(client, weapon, 1, true); + + // If client isn't rebuying the weapon, then tell them the weapon has been purchased. TranslationPrintToChat(client, "Weapons zmarket purchase", weapondisplay); } } @@ -989,15 +1105,15 @@ stock bool:ZMarketEquip(client, const String:weapon[], bool:rebuy = false) */ bool:ZMarketGetCurrentLoadout(client) { - // If client is dead, then tell them they must be alive and stop. + // If client is dead, then stop. if (!IsPlayerAlive(client)) { TranslationPrintToChat(client, "Must be alive"); return false; } - // If client is a zombie, then tell them they must be human and stop. - if (!IsPlayerAlive(client)) + // If client is a zombie, then stop. + if (InfectIsClientInfected(client)) { TranslationPrintToChat(client, "Must be human"); return false; @@ -1011,7 +1127,7 @@ bool:ZMarketGetCurrentLoadout(client) decl String:weaponentity[WEAPONS_MAX_LENGTH]; // x = Weapon slot. - for (new x = 0; x < WEAPONS_SLOTS_MAX; x++) + for (new x = 0; x < ZMARKET_REBUY_WEAPONS_SLOTS_MAX + 1; x++) { // If slot is empty, then clear this slot in rebuy cache and stop. if (weapons[x] == -1) @@ -1031,18 +1147,6 @@ bool:ZMarketGetCurrentLoadout(client) ZMarketSetRebuyCookie(client, WeaponsSlot:x, weaponname); } - // Update nightvision ownership. - new bool:nightvision = ToolsGetClientNightVision(client); - if (!nightvision) - { - // Empty rebuy slot. - ZMarketSetRebuyCookie(client, Slot_NVGs, ""); - } - else - { - ZMarketSetRebuyCookie(client, Slot_NVGs, "nvgs"); - } - // Tell client their loadout has been updated. TranslationPrintToChat(client, "Weapons zmarket get current loadout"); @@ -1057,7 +1161,7 @@ bool:ZMarketGetCurrentLoadout(client) * @param maxweapons The max amount of weapons in the array. * @param maxlen The max length of each cookie result. */ -stock ZMarketArrayToCookies(client, String:rebuyweapons[WeaponsSlot][], maxweapons, maxlen) +stock ZMarketArrayToCookies(client, String:rebuyweapons[ZMARKET_REBUY_WEAPONS_SLOTS_MAX + 1][], maxweapons, maxlen) { decl String:rebuycookiename[32]; new Handle:rebuycookie; @@ -1083,7 +1187,7 @@ stock ZMarketArrayToCookies(client, String:rebuyweapons[WeaponsSlot][], maxweapo * @param maxweapons The max amount of weapons in the array. * @param maxlen The max length of each cookie result. */ -stock ZMarketCookiesToArray(client, String:rebuyweapons[WeaponsSlot][], maxweapons, maxlen) +stock ZMarketCookiesToArray(client, String:rebuyweapons[ZMARKET_REBUY_WEAPONS_SLOTS_MAX + 1][], maxweapons, maxlen) { decl String:rebuycookiename[32]; new Handle:rebuycookie; @@ -1155,51 +1259,36 @@ ZMarketRebuy(client, bool:autorebuy = false) } // Transfer cookie values into an array. - new String:rebuyweapons[WeaponsSlot][WEAPONS_MAX_LENGTH]; - ZMarketCookiesToArray(client, rebuyweapons, WEAPONS_SLOTS_MAX + 1, sizeof(rebuyweapons[])); + new String:rebuyweapons[ZMARKET_REBUY_WEAPONS_SLOTS_MAX + 1][WEAPONS_MAX_LENGTH]; + ZMarketCookiesToArray(client, rebuyweapons, sizeof(rebuyweapons), sizeof(rebuyweapons[])); // x = Weapon slot. - for (new x = 0; x < WEAPONS_SLOTS_MAX + 1; x++) + for (new x = 0; x < ZMARKET_REBUY_WEAPONS_SLOTS_MAX + 1; x++) { - // If slot is empty, then stop. + // If slot is empty, then use the default value. if (!rebuyweapons[x][0]) { - continue; + switch(x) + { + case Slot_Primary: + { + GetConVarString(g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_PRIMARY], rebuyweapons[x], sizeof(rebuyweapons[])); + } + case Slot_Secondary: + { + GetConVarString(g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_SECONDARY], rebuyweapons[x], sizeof(rebuyweapons[])); + } + } } - ZMarketEquip(client, rebuyweapons[x], true); - } -} - -/** - * Toggle auto-rebuy on a client. - * - * @param client The client index. - */ -ZMarketToggleAutoRebuy(client) -{ - // If auto-rebuy is disabled, then stop. - new bool:zmarketrebuyauto = GetConVarBool(g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_AUTO]); - if (!zmarketrebuyauto) - { - return; + ZMarketEquip(client, rebuyweapons[x], autorebuy); } - // Get the cookie value. - new bool:autorebuystate = CookiesGetClientCookieBool(client, g_hZMarketAutoRebuyCookie); - - // Toggle the value. - CookiesSetClientCookieBool(client, g_hZMarketAutoRebuyCookie, !autorebuystate); - - // If auto-rebuy was enabled, then tell client it has been disabled. - if (autorebuystate) + if(autorebuy) { - TranslationPrintToChat(client, "Weapons zmarket auto-rebuy toggle off"); - } - // If auto-rebuy was disabled, then tell client it has been enabled. - else - { - TranslationPrintToChat(client, "Weapons zmarket auto-rebuy toggle on"); + // Always equip kevlar and hegrenade + ZMarketEquip(client, "Kevlar Vest", autorebuy); + ZMarketEquip(client, "HEGrenade", autorebuy); } } diff --git a/src/zr/zcookies.inc b/src/zr/zcookies.inc index 684924b..0aca33c 100644 --- a/src/zr/zcookies.inc +++ b/src/zr/zcookies.inc @@ -47,38 +47,31 @@ ZCookiesMenuMain(client) // Make client global translations target. SetGlobalTransTarget(client); - decl String:autorebuyenabled[MENU_LINE_SMALL_LENGTH]; decl String:zhpenabled[MENU_LINE_SMALL_LENGTH]; decl String:overlayenabled[MENU_LINE_SMALL_LENGTH]; // Get the current toggle state of the cookies. - ConfigBoolToSetting(CookiesGetClientCookieBool(client, g_hZMarketAutoRebuyCookie), autorebuyenabled, sizeof(autorebuyenabled), false, client); ConfigBoolToSetting(CookiesGetClientCookieBool(client, g_hZHPEnabledCookie), zhpenabled, sizeof(zhpenabled), false, client); ConfigBoolToSetting(CookiesGetClientCookieBool(client, g_hOverlayEnabledCookie), overlayenabled, sizeof(overlayenabled), false, client); decl String:title[MENU_LINE_TITLE_LENGTH]; - decl String:autorebuy[MENU_LINE_REG_LENGTH]; decl String:zhp[MENU_LINE_REG_LENGTH]; decl String:overlay[MENU_LINE_REG_LENGTH]; decl String:zmarket[MENU_LINE_REG_LENGTH]; // Translate each line into client's language. Format(title, sizeof(title), "%t\n ", "ZCookies Menu main title"); - Format(autorebuy, sizeof(autorebuy), "%t", "ZCookies menu main auto-rebuy", autorebuyenabled); Format(zhp, sizeof(zhp), "%t", "ZCookies menu main zhp", zhpenabled); Format(overlay, sizeof(overlay), "%t", "ZCookies menu main overlay", overlayenabled); Format(zmarket, sizeof(zmarket), "%t", "ZCookies zmarket loadout"); // Get conditional values for each option. - new bool:weapons = GetConVarBool(g_hCvarsList[CVAR_WEAPONS]); // For auto-rebuy. - new bool:zmarketrebuyauto = GetConVarBool(g_hCvarsList[CVAR_WEAPONS_ZMARKET_REBUY_AUTO]); // For auto-rebuy. new bool:zhpcvar = GetConVarBool(g_hCvarsList[CVAR_ZHP]); // For ZHP. new bool:overlaytoggle = GetConVarBool(g_hCvarsList[CVAR_CLASSES_OVERLAY_TOGGLE]); // For class overlay. new bool:zmarketenabled = GetConVarBool(g_hCvarsList[CVAR_WEAPONS_ZMARKET]); // For ZMarket loadout. // Add items to menu. SetMenuTitle(zcookies_menu_main, title); - AddMenuItem(zcookies_menu_main, "autorebuy", autorebuy, MenuGetItemDraw(weapons && zmarketrebuyauto)); AddMenuItem(zcookies_menu_main, "zhp", zhp, MenuGetItemDraw(zhpcvar)); AddMenuItem(zcookies_menu_main, "overlay", overlay, MenuGetItemDraw(overlaytoggle)); AddMenuItem(zcookies_menu_main, "zmarket", zmarket, MenuGetItemDraw(zmarketenabled)); @@ -108,19 +101,13 @@ public ZCookiesMenuMainHandle(Handle:menu, MenuAction:action, client, slot) switch(slot) { - // Toggled auto-rebuy - case 0: - { - // Toggle the auto-rebuy cookie. - ZMarketToggleAutoRebuy(client); - } // Toggled ZHP. - case 1: + case 0: { ZHPToggle(client); } // Toggled class overlay. - case 2: + case 1: { // If overlay toggle is disabled, then stop. new bool:overlaytoggle = GetConVarBool(g_hCvarsList[CVAR_CLASSES_OVERLAY_TOGGLE]); @@ -132,7 +119,7 @@ public ZCookiesMenuMainHandle(Handle:menu, MenuAction:action, client, slot) } } // Opened ZMarket loadout. - case 3: + case 2: { // Show a client their current loadout. ZMarketMenuLoadout(client);