Imported fix from dev: 750:c5cd9d89414a - Fixed class menus being disabled and not checking if the player have access to private classes.
This commit is contained in:
parent
4fd2e9f545
commit
f355ee94fc
@ -62,10 +62,26 @@ ClassMenuMain(client)
|
|||||||
decl String:adminmode[MENU_LINE_BIG_LENGTH];
|
decl String:adminmode[MENU_LINE_BIG_LENGTH];
|
||||||
decl String:toggleadminmode[MENU_LINE_BIG_LENGTH];
|
decl String:toggleadminmode[MENU_LINE_BIG_LENGTH];
|
||||||
|
|
||||||
|
// Setup filtering.
|
||||||
|
// ----------------
|
||||||
|
new filter[ClassFilter];
|
||||||
|
|
||||||
|
// Hide mother zombie classes.
|
||||||
|
filter[ClassFilter_DenyFlags] = ZR_CLASS_FLAG_MOTHER_ZOMBIE;
|
||||||
|
|
||||||
|
// Hide admin-only classes if not admin.
|
||||||
|
filter[ClassFilter_DenyFlags] += !ZRIsClientAdmin(client) ? ZR_CLASS_FLAG_ADMIN_ONLY : 0;
|
||||||
|
|
||||||
|
// Specify client for checking class group permissions.
|
||||||
|
filter[ClassFilter_Client] = client;
|
||||||
|
|
||||||
|
// Setup item draw style.
|
||||||
|
// ----------------------
|
||||||
|
|
||||||
// Get number of enabled classes per team.
|
// Get number of enabled classes per team.
|
||||||
new zombiecount = ClassCountTeam(ZR_CLASS_TEAM_ZOMBIES);
|
new zombiecount = ClassCountTeam(ZR_CLASS_TEAM_ZOMBIES, filter);
|
||||||
new humancount = ClassCountTeam(ZR_CLASS_TEAM_ZOMBIES);
|
new humancount = ClassCountTeam(ZR_CLASS_TEAM_ZOMBIES, filter);
|
||||||
new admincount = ClassCountTeam(ZR_CLASS_TEAM_ADMINS);
|
new admincount = ClassCountTeam(ZR_CLASS_TEAM_ADMINS, filter);
|
||||||
|
|
||||||
// Get next class indexes, if set.
|
// Get next class indexes, if set.
|
||||||
new nextzombie = ClassSelectedNext[client][ZR_CLASS_TEAM_ZOMBIES];
|
new nextzombie = ClassSelectedNext[client][ZR_CLASS_TEAM_ZOMBIES];
|
||||||
@ -75,9 +91,9 @@ ClassMenuMain(client)
|
|||||||
// Set draw style on class options depending on number of enabled classes
|
// Set draw style on class options depending on number of enabled classes
|
||||||
// and selection permissions. Disable class selection if there's only one
|
// and selection permissions. Disable class selection if there's only one
|
||||||
// class.
|
// class.
|
||||||
new zombie_itemdraw = (zombiecount > 1 && ClassAllowSelection(client, ZR_CLASS_TEAM_ZOMBIES)) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED;
|
new zombie_itemdraw = (zombiecount > 1 && ClassAllowSelection(client, ZR_CLASS_TEAM_ZOMBIES, filter)) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED;
|
||||||
new human_itemdraw = (humancount > 1 && ClassAllowSelection(client, ZR_CLASS_TEAM_HUMANS)) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED;
|
new human_itemdraw = (humancount > 1 && ClassAllowSelection(client, ZR_CLASS_TEAM_HUMANS, filter)) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED;
|
||||||
new admin_itemdraw = (admincount > 1 && ClassAllowSelection(client, ZR_CLASS_TEAM_ADMINS)) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED;
|
new admin_itemdraw = (admincount > 1 && ClassAllowSelection(client, ZR_CLASS_TEAM_ADMINS, filter)) ? ITEMDRAW_DEFAULT : ITEMDRAW_DISABLED;
|
||||||
|
|
||||||
// Check if the player is in admin mode.
|
// Check if the player is in admin mode.
|
||||||
if (ClassPlayerInAdminMode[client])
|
if (ClassPlayerInAdminMode[client])
|
||||||
|
@ -751,9 +751,10 @@ stock bool:ClassFlagFilterMatch(index, require, deny, cachetype)
|
|||||||
* based on zr_class_allow_* console variables.
|
* based on zr_class_allow_* console variables.
|
||||||
*
|
*
|
||||||
* @param team Optional. Team ID to match. Default is all.
|
* @param team Optional. Team ID to match. Default is all.
|
||||||
|
* @param filter Optional. Filter to use on classes.
|
||||||
* @return True if allowed, false otherwise.
|
* @return True if allowed, false otherwise.
|
||||||
*/
|
*/
|
||||||
bool:ClassAllowSelection(client, team = -1)
|
bool:ClassAllowSelection(client, team = -1, filter[ClassFilter] = ClassNoFilter)
|
||||||
{
|
{
|
||||||
// Get selection settings.
|
// Get selection settings.
|
||||||
new bool:zombie = GetConVarBool(g_hCvarsList[CVAR_CLASSES_ZOMBIE_SELECT]);
|
new bool:zombie = GetConVarBool(g_hCvarsList[CVAR_CLASSES_ZOMBIE_SELECT]);
|
||||||
@ -767,10 +768,10 @@ bool:ClassAllowSelection(client, team = -1)
|
|||||||
// Check if player is admin.
|
// Check if player is admin.
|
||||||
new bool:isadmin = ZRIsClientAdmin(client);
|
new bool:isadmin = ZRIsClientAdmin(client);
|
||||||
|
|
||||||
// Only count admin mode classes if client is admin for better performance.
|
// Only count admin mode classes if client is admin.
|
||||||
if (isadmin)
|
if (isadmin)
|
||||||
{
|
{
|
||||||
adminexist = ClassCountTeam(ZR_CLASS_TEAM_ADMINS) > 0;
|
adminexist = ClassCountTeam(ZR_CLASS_TEAM_ADMINS, filter) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if a team id is specified.
|
// Check if a team id is specified.
|
||||||
|
Loading…
Reference in New Issue
Block a user