From c3d0f826db6384fd278e4d003524aa98a78df8b8 Mon Sep 17 00:00:00 2001 From: Vortrex <3858226+VortrexFTW@users.noreply.github.com> Date: Sat, 23 Jul 2022 17:42:39 -0500 Subject: [PATCH] Add job rank bitflags --- scripts/server/bitflag.js | 51 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/scripts/server/bitflag.js b/scripts/server/bitflag.js index 116952ae..fbe62cdb 100644 --- a/scripts/server/bitflag.js +++ b/scripts/server/bitflag.js @@ -65,6 +65,7 @@ let serverBitFlagKeys = { "DontSyncClientElements", "IsTester" ], + /* factionFlagKeys: [ "None", "Police", @@ -73,6 +74,7 @@ let serverBitFlagKeys = { "Government", "Generic", ], + */ clanTypeFlagKeys: [ "None", "Illegal", @@ -227,6 +229,19 @@ let serverBitFlagKeys = { "ShowItemsAfterPurchase", "BuyCommandAfterEnterBusiness", ], + jobRankKeys: [ + "None", + "PublicAccess", + "WhiteList", + "BlackList", + "SetRank", + "SetPay", + "ManageUniforms", + "ManageEquipment", + "ManageVehicles", + "ManageBusinesses", + "Leader", + ], }; // =========================================================================== @@ -239,10 +254,12 @@ function initBitFlagScript() { //serverBitFlags.subAccountSettingsFlags = createBitFlagTable(getServerData().subAccountSettingsFlagKeys); serverBitFlags.clanFlags = createBitFlagTable(serverBitFlagKeys.clanFlagKeys); serverBitFlags.clanTypeFlagKeys = createBitFlagTable(serverBitFlagKeys.clanTypeFlagKeys); - serverBitFlags.factionFlags = createBitFlagTable(serverBitFlagKeys.factionFlagKeys); + //serverBitFlags.factionFlags = createBitFlagTable(serverBitFlagKeys.factionFlagKeys); serverBitFlags.npcTriggerTypes = createBitFlagTable(serverBitFlagKeys.npcTriggerTypeKeys); serverBitFlags.npcTriggerConditionTypes = createBitFlagTable(serverBitFlagKeys.npcTriggerConditionTypeKeys); serverBitFlags.npcTriggerResponseTypes = createBitFlagTable(serverBitFlagKeys.npcTriggerResponseTypeKeys); + serverBitFlags.seenHelpTips = createBitFlagTable(serverBitFlagKeys.seenHelpTipsKeys); + serverBitFlags.jobRankFlags = createBitFlagTable(serverBitFlagKeys.jobRankKeys); logToConsole(LOG_INFO, "[VRR.BitFlag]: Bit flag script initialized successfully!"); return true; } @@ -291,7 +308,7 @@ function doesPlayerHaveClanPermission(client, requiredFlags) { } let clanFlags = 0; - clanFlags = getPlayerCurrentSubAccount(client).clanFlags | getClanRankFlags(getPlayerCurrentSubAccount(client).clanRank); + clanFlags = getPlayerCurrentSubAccount(client).clanFlags | getClanRankData(getPlayerClan(client), getPlayerClanRank(client)).flags; // -1 is automatic override (having -1 for staff flags is basically god mode admin level) if (clanFlags == getClanFlagValue("All")) { @@ -307,6 +324,36 @@ function doesPlayerHaveClanPermission(client, requiredFlags) { // =========================================================================== +function doesPlayerHaveJobPermission(client, requiredFlags) { + if (isConsole(client)) { + return true; + } + + if (requiredFlags == getClanFlagValue("None")) { + return true; + } + + if (doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageJobs"))) { + return true; + } + + let jobFlags = 0; + jobFlags = getPlayerCurrentSubAccount(client).jobFlags | getJobRankData(getPlayerJob(client), getPlayerJobRank(client)).flags; + + // -1 is automatic override (having -1 for staff flags is basically god mode admin level) + if (jobFlags == getJobFlagValue("All")) { + return true; + } + + if (hasBitFlag(jobFlags, requiredFlags)) { + return true; + } + + return false; +} + +// =========================================================================== + function getStaffFlagValue(flagName) { if (flagName == "All") { return -1;