Files
GTA4RP/scripts/server/bitflag.js
2020-09-08 22:02:59 -05:00

113 lines
3.3 KiB
JavaScript

// ===========================================================================
// Asshat Gaming RP
// http://asshatgaming.com
// © 2020 Asshat Gaming
// ---------------------------------------------------------------------------
// FILE: bitflags.js
// DESC: Provides bitwise operations, functions and usage
// TYPE: Server (JavaScript)
// ===========================================================================
function initBitFlagScript() {
serverData.staffFlags = createBitFlagTable(serverData.staffFlagKeys);
serverData.moderationFlags = createBitFlagTable(serverData.moderationFlagKeys);
serverData.accountSettingsFlags = createBitFlagTable(serverData.accountSettingsFlagKeys);
//serverData.subAccountSettingsFlags = createBitFlagTable(serverData.subAccountSettingsFlagKeys);
serverData.clanFlags = createBitFlagTable(serverData.clanFlagKeys);
serverData.clanPermissionFlags = createBitFlagTable(serverData.clanPermissionFlagKeys);
serverData.factionFlags = createBitFlagTable(serverData.factionFlagKeys);
return true;
}
// ---------------------------------------------------------------------------
function addBitFlagCommandHandlers() {
return true;
}
// ---------------------------------------------------------------------------
function createBitFlagTable(keyNames) {
let bitVal = 0;
let bitTable = {};
let incVal = 1;
for(let i in keyNames) {
let key = keyNames[i];
bitTable[key] = bitVal;
bitVal = 1 << incVal;
incVal++;
}
return bitTable;
}
// ---------------------------------------------------------------------------
function doesClientHaveStaffPermission(client, requiredFlags) {
if(requiredFlags == getStaffFlagValue("none")) {
return true;
}
let staffFlags = 0;
if(isClientFromDiscord(client)) {
staffFlags = serverData.clients[client.index].accountData.staffFlags;
} else {
staffFlags = getDiscordUserData(client).accountData.staffFlags;
}
// -1 is automatic override (having -1 for staff flags is basically god mode admin level)
if(staffFlags == getStaffFlagValue("all")) {
return true;
}
if(staffFlags & requiredFlags) {
return true;
}
return false;
}
// ---------------------------------------------------------------------------
function getStaffFlagValue(flagName) {
if(flagName == "all") {
return -1;
}
if(typeof serverData.staffFlags[flagName] === "undefined") {
return false;
}
return serverData.staffFlags[flagName];
}
// ---------------------------------------------------------------------------
function giveClientStaffFlag(client, flagName) {
if(!getStaffFlagValue(flagName)) {
return false;
}
getClientData(client).accountData.staffFlags = getClientData(client).accountData.staffFlags | getStaffFlagValue(flagName);
return true;
}
// ---------------------------------------------------------------------------
function takeClientStaffFlag(client, flagName) {
if(!getStaffFlagValue(flagName)) {
return false;
}
getClientData(client).accountData.staffFlags = getClientData(client).accountData.staffFlags & ~getStaffFlagValue(flagName);
return true;
}
// ---------------------------------------------------------------------------
function clearClientStaffFlags(client) {
getClientData(client).accountData.staffFlags = getStaffFlagValue("none");
return true;
}
// ---------------------------------------------------------------------------