Added default restrictions, added market options in the menu

This commit is contained in:
Greyscale 2009-04-14 01:29:24 +02:00
parent 0d5b805387
commit 44b0e776f2
6 changed files with 559 additions and 438 deletions

View File

@ -285,6 +285,17 @@
"en" "Modify Restrictions:\n Current Weapon Group: {1}\n * = restricted"
}
"Weapons menu market title"
{
"en" "Toggle Market Settings:"
}
"Weapons menu market toggle buyzone"
{
"#format" "{1:s}"
"en" "Buyzone Only (Current: {1})"
}
"Weapons menu weapon group restrict all"
{
"en" "Restrict All Group Weapons"

View File

@ -45,16 +45,10 @@ ammo_57mm_max 500 // p90, fiveseven
// ------------------------------------
//
// Weapon Restrictions
// Weapon Restrictions (Deprecated)
//
// ------------------------------------
zr_restrict "flashbang"
zr_restrict "smokegrenade"
zr_restrict "m249"
zr_restrict "snipers"
zr_restrict "nvgs"
// ------------------------------------
//

View File

@ -40,7 +40,6 @@ WeaponsMenuMain(client)
decl String:toggleweaponrestriction[64];
decl String:togglewgrouprestriction[64];
decl String:zmarket[64];
Format(toggleweaponrestriction, sizeof(toggleweaponrestriction), "%t", "Weapons menu main toggle weapon restrict");
@ -91,7 +90,7 @@ public WeaponsMenuMainHandle(Handle:menu_weapons_main, MenuAction:action, client
}
case 2:
{
//WeaponsMenuMarket(client);
WeaponsMenuMarket(client);
}
}
}
@ -142,8 +141,6 @@ WeaponsMenuWeapons(client, WeaponsMenu:type)
{
GetArrayString(arrayWeapons, x, weapon, sizeof(weapon));
new bool:menu = WeaponsIsWeaponMenu(weapon);
strcopy(display, sizeof(display), weapon);
if (RestrictIsWeaponRestricted(weapon))
@ -152,6 +149,8 @@ WeaponsMenuWeapons(client, WeaponsMenu:type)
}
// If weapon restriction is blocked for the menu, disable option
new bool:menu = WeaponsIsWeaponMenu(weapon);
if (menu)
{
AddMenuItem(menu_weapons_weapons, weapon, display);
@ -388,3 +387,78 @@ public WeaponsMenuWeaponGroupHandle(Handle:menu_weapons_groupweapon, MenuAction:
CloseHandle(menu_weapons_groupweapon);
}
}
/**
* Sends market options menu to client.
* @param client The client index.
*/
WeaponsMenuMarket(client)
{
// Create menu handle
new Handle:menu_weapons_market = CreateMenu(WeaponsMenuMarketHandle);
SetGlobalTransTarget(client);
SetMenuTitle(menu_weapons_market, "%t\n ", "Weapons menu market title");
decl String:togglebuyzone[64];
decl String:curSetting[8];
BoolToConfigOption(GetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE]), curSetting, sizeof(curSetting));
Format(togglebuyzone, sizeof(togglebuyzone), "%t", "Weapons menu market toggle buyzone", curSetting);
AddMenuItem(menu_weapons_market, "togglebuyzone", togglebuyzone);
// Create a "Back" button to the weapons main menu
SetMenuExitBackButton(menu_weapons_market, true);
// Send menu
DisplayMenu(menu_weapons_market, client, MENU_TIME_FOREVER);
}
/**
* Called when client selects option in the weapons main menu, and handles it.
* @param menu_weapons_main 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 WeaponsMenuMarketHandle(Handle:menu_weapons_market, MenuAction:action, client, slot)
{
// Client selected an option
if (action == MenuAction_Select)
{
switch(slot)
{
case 0:
{
if (GetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE]))
{
SetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE], false);
}
else
{
SetConVarBool(gCvars[CVAR_ZMARKET_BUYZONE], true);
}
}
}
// Resend menu
WeaponsMenuMarket(client);
}
// Client closed the menu
if (action == MenuAction_Cancel)
{
// Client hit "Back" button
if (slot == MenuCancel_ExitBack)
{
WeaponsMenuMain(client);
}
}
// Client hit "Exit" button
else if (action == MenuAction_End)
{
CloseHandle(menu_weapons_market);
}
}

View File

@ -70,9 +70,39 @@ RestrictOnMapStart()
SetFailState("\"%s\" missing from server", path);
}
RestrictDefaultRestrictions();
RestrictValidateWeaponGroups();
}
/**
* Restrict default restrictions (set in weapons.txt)
*/
RestrictDefaultRestrictions()
{
KvRewind(kvWeapons);
if (KvGotoFirstSubKey(kvWeapons))
{
decl String:weapon[WEAPONS_MAX_LENGTH];
decl String:display[WEAPONS_MAX_LENGTH + 1];
do
{
KvGetSectionName(kvWeapons, weapon, sizeof(weapon));
// If weapon is defaulted to restricted, then restrict weapon
if (WeaponsIsRestrict(weapon))
{
new WpnRestrictQuery:output = RestrictRestrict(weapon, display);
RestrictPrintRestrictOutput(0, output, display, true);
}
} while (KvGotoNextKey(kvWeapons));
}
}
/**
* Validate weapon group options
*/
RestrictValidateWeaponGroups()
{
KvRewind(kvWeaponGroups);
@ -319,7 +349,7 @@ WpnRestrictQuery:RestrictUnrestrict(const String:weapon[], String:display[] = ""
* @param weapon The weapon client is trying to restrict.
* @param cmd True if printing output in reply to a client command.
*/
RestrictPrintRestrictOutput(client, WpnRestrictQuery:output, const String:weapon[], bool:cmd)
RestrictPrintRestrictOutput(client, WpnRestrictQuery:output, const String:weapon[], bool:reply)
{
switch(output)
{
@ -336,7 +366,7 @@ RestrictPrintRestrictOutput(client, WpnRestrictQuery:output, const String:weapon
}
case Failed_Weapon:
{
if (cmd)
if (reply)
{
ZR_ReplyToCommand(client, "Restrict weapon failed", weapon);
}
@ -350,7 +380,7 @@ RestrictPrintRestrictOutput(client, WpnRestrictQuery:output, const String:weapon
decl String:weaponlist[128];
RestrictGetGroupWeapons(weapon, weaponlist, sizeof(weaponlist), ", ");
if (cmd)
if (reply)
{
ZR_ReplyToCommand(client, "Restrict custom weapon group failed", weapon, weaponlist);
}
@ -361,7 +391,7 @@ RestrictPrintRestrictOutput(client, WpnRestrictQuery:output, const String:weapon
}
case Invalid:
{
if (cmd)
if (reply)
{
ZR_ReplyToCommand(client, "Weapon invalid", weapon);
}
@ -380,7 +410,7 @@ RestrictPrintRestrictOutput(client, WpnRestrictQuery:output, const String:weapon
* @param weapon The weapon client is trying to unrestrict.
* @param cmd True if printing output in reply to a client command.
*/
RestrictPrintUnrestrictOutput(client, WpnRestrictQuery:output, const String:weapon[], bool:cmd)
RestrictPrintUnrestrictOutput(client, WpnRestrictQuery:output, const String:weapon[], bool:reply)
{
switch(output)
{
@ -397,7 +427,7 @@ RestrictPrintUnrestrictOutput(client, WpnRestrictQuery:output, const String:weap
}
case Failed_Weapon:
{
if (cmd)
if (reply)
{
ZR_ReplyToCommand(client, "Unrestrict weapon failed", weapon);
}
@ -411,7 +441,7 @@ RestrictPrintUnrestrictOutput(client, WpnRestrictQuery:output, const String:weap
decl String:weaponlist[128];
RestrictGetGroupWeapons(weapon, weaponlist, sizeof(weaponlist), ", ");
if (cmd)
if (reply)
{
ZR_ReplyToCommand(client, "Unrestrict custom weapon group failed", weapon, weaponlist);
}
@ -422,7 +452,7 @@ RestrictPrintUnrestrictOutput(client, WpnRestrictQuery:output, const String:weap
}
case Invalid:
{
if (cmd)
if (reply)
{
ZR_ReplyToCommand(client, "Weapon invalid", weapon);
}

View File

@ -191,7 +191,7 @@ bool:WeaponsIsRestrict(const String:weapon[])
if (StrEqual(validweapon, weapon, false))
{
KvGetString(kvWeapons, validweapon, restrict, sizeof(restrict), "no");
KvGetString(kvWeapons, "restrict", restrict, sizeof(restrict), "no");
return ConfigOptionToBool(restrict);
}
@ -220,7 +220,7 @@ bool:WeaponsIsWeaponMenu(const String:weapon[])
if (StrEqual(validweapon, weapon, false))
{
KvGetString(kvWeapons, validweapon, menu, sizeof(menu), "yes");
KvGetString(kvWeapons, "menu", menu, sizeof(menu), "yes");
return ConfigOptionToBool(menu);
}

View File

@ -123,6 +123,18 @@ bool:ConfigOptionToBool(const String:option[])
return false;
}
BoolToConfigOption(bool:bOption, String:option[], maxlen)
{
if (bOption)
{
strcopy(option, maxlen, "yes");
}
else
{
strcopy(option, maxlen, "no");
}
}
FindClientDXLevel(client)
{
if (IsFakeClient(client))