120 lines
3.2 KiB
JavaScript
120 lines
3.2 KiB
JavaScript
// ===========================================================================
|
|
// Vortrex's Roleplay Resource
|
|
// https://github.com/VortrexFTW/gtac_roleplay
|
|
// ===========================================================================
|
|
// FILE: gate.js
|
|
// DESC: Provides gate functions and commands
|
|
// TYPE: Server (JavaScript)
|
|
// ===========================================================================
|
|
|
|
function doesPlayerHaveGateKeys(client, vehicle) {
|
|
let gateData = getGateData(vehicle);
|
|
|
|
if(gateData.ownerType == VRR_GATEOWNER_PUBLIC) {
|
|
return true;
|
|
}
|
|
|
|
if(gateData.ownerType == VRR_GATEOWNER_PLAYER) {
|
|
if(gateData.ownerId == getPlayerCurrentSubAccount(client).databaseId) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
if(gateData.ownerType == VRR_GATEOWNER_CLAN) {
|
|
if(doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageClans"))) {
|
|
return true;
|
|
}
|
|
|
|
if(gateData.ownerId == getPlayerCurrentSubAccount(client).clan) {
|
|
if(gateData.clanRank <= getPlayerCurrentSubAccount(client).clanRank) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(gateData.ownerType == VRR_GATEOWNER_FACTION) {
|
|
if(doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageFactions"))) {
|
|
return true;
|
|
}
|
|
|
|
if(gateData.ownerId == getPlayerCurrentSubAccount(client).faction) {
|
|
if(gateData.factionRank <= getPlayerCurrentSubAccount(client).factionRank) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(gateData.ownerType == VRR_GATEOWNER_JOB) {
|
|
if(doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageJobs"))) {
|
|
return true;
|
|
}
|
|
|
|
if(gateData.ownerId == getPlayerCurrentSubAccount(client).job) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
if(gateData.ownerType == VRR_GATEOWNER_BUSINESS) {
|
|
if(doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageBusinesses"))) {
|
|
return true;
|
|
}
|
|
|
|
if(canPlayerManageBusiness(client, getBusinessIdFromDatabaseId(gateData.ownerId))) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
if(gateData.ownerType == VRR_GATEOWNER_HOUSE) {
|
|
if(doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageHouses"))) {
|
|
return true;
|
|
}
|
|
|
|
if(canPlayerManageHouse(client, getHouseIdFromDatabaseId(gateData.ownerId))) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// ===========================================================================
|
|
|
|
function getGateData(gateId) {
|
|
if(typeof getServerData().gates[gateId] != "undefined") {
|
|
return getServerData().gates[gateId];
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// ===========================================================================
|
|
|
|
function getClosestGate(position) {
|
|
let closest = 0;
|
|
for(let i in getServerData().gates[getServerGame()]) {
|
|
if(getDistance(getServerData().gates[i].position, position) < getDistance(getServerData().gates[closest].position, position)) {
|
|
closest = i;
|
|
}
|
|
}
|
|
|
|
return closest;
|
|
}
|
|
|
|
// ===========================================================================
|
|
|
|
function triggerGateCommand(command, params, client) {
|
|
let closestGate = getClosestGate(getPlayerPosition(client));
|
|
|
|
if(!getGateData(closestGate)) {
|
|
messagePlayerError(client, getLocaleString(client, "InvalidGate"));
|
|
}
|
|
|
|
if(!canPlayerUseGate(client, closestGate)) {
|
|
messagePlayerError(client, getLocaleString(client, "NoGateAccess"));
|
|
return false;
|
|
}
|
|
|
|
triggerGate(getGateData(closestGate).scriptName);
|
|
}
|
|
|
|
// ===========================================================================
|