Initial commit
This commit is contained in:
80
scripts/server/bitflag.js
Normal file
80
scripts/server/bitflag.js
Normal file
@@ -0,0 +1,80 @@
|
||||
// ===========================================================================
|
||||
// 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;
|
||||
}
|
||||
|
||||
return serverData.staffFlags[flagName];
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user