diff --git a/config/client/locale.json b/config/client/locale.json
index 62caa2db..f0478a35 100644
--- a/config/client/locale.json
+++ b/config/client/locale.json
@@ -7,7 +7,8 @@
"flagImageFile": "uk.png",
"countries": ["gb", "us", "au", "bz", "ca", "ie", "jm", "nz", "za", "tt"],
"requiresUnicode": false,
- "contributor": "Vortrex"
+ "contributor": "Vortrex",
+ "enabled": true
},
{
"id": 1,
@@ -17,7 +18,8 @@
"flagImageFile": "ru.png",
"countries": ["ru", "ua"],
"requiresUnicode": false,
- "contributor": "VNDTTS"
+ "contributor": "VNDTTS",
+ "enabled": true
},
{
"id": 2,
@@ -27,7 +29,8 @@
"flagImageFile": "pl.png",
"countries": ["pl"],
"requiresUnicode": false,
- "contributor": "Suprise444"
+ "contributor": "Suprise444",
+ "enabled": true
},
{
"id": 3,
@@ -37,7 +40,8 @@
"flagImageFile": "es.png",
"countries": ["es", "ar", "bo", "cl", "co", "cr", "do", "ec", "sv", "gt", "hn", "mx", "ni", "pa", "py", "pe", "pr", "uy", "ve"],
"requiresUnicode": false,
- "contributor": "PerikiyoXD"
+ "contributor": "PerikiyoXD",
+ "enabled": true
},
{
"id": 4,
@@ -47,7 +51,8 @@
"flagImageFile": "cn.png",
"countries": ["cn", "hk", "sg", "tw"],
"requiresUnicode": true,
- "contributor": "Renzuko_Ctone"
+ "contributor": "Renzuko_Ctone",
+ "enabled": true
},
{
"id": 5,
@@ -57,7 +62,8 @@
"flagImageFile": "sa.png",
"countries": ["dz", "bh", "eg", "iq", "jo", "kw", "lb", "ly", "ma", "om", "qa", "sa", "sy", "tn", "ae", "ye"],
"requiresUnicode": true,
- "contributor": "! KASIR"
+ "contributor": "! KASIR",
+ "enabled": true
},
{
"id": 6,
@@ -67,7 +73,8 @@
"flagImageFile": "sk.png",
"countries": ["sk"],
"requiresUnicode": false,
- "contributor": "UAKLAUS"
+ "contributor": "UAKLAUS",
+ "enabled": false
},
{
"id": 7,
@@ -77,7 +84,8 @@
"flagImageFile": "de.png",
"countries": ["de", "at", "be", "ch", "li", "lu"],
"requiresUnicode": false,
- "contributor": "Sladernimo"
+ "contributor": "Sladernimo",
+ "enabled": true
},
{
"id": 8,
@@ -87,7 +95,8 @@
"flagImageFile": "fr.png",
"countries": ["fr", "cd", "bj", "bf", "cd", "cg", "ga", "gn", "ml", "mc", "ne", "sn"],
"requiresUnicode": false,
- "contributor": "Cocam"
+ "contributor": "Cocam",
+ "enabled": false
},
{
"id": 9,
@@ -97,7 +106,8 @@
"flagImageFile": "jp.png",
"countries": ["jp"],
"requiresUnicode": true,
- "contributor": "Cocam"
+ "contributor": "Cocam",
+ "enabled": false
},
{
"id": 10,
@@ -107,6 +117,29 @@
"flagImageFile": "fi.png",
"countries": ["fi"],
"requiresUnicode": false,
- "contributor": "SIMBA_MEOW"
+ "contributor": "SIMBA_MEOW",
+ "enabled": true
+ },
+ {
+ "id": 11,
+ "englishName": "Lithuanian",
+ "stringsFile": "lithuanian.json",
+ "isoCode": "lt",
+ "flagImageFile": "lt.png",
+ "countries": ["lt"],
+ "requiresUnicode": false,
+ "contributor": "dovis",
+ "enabled": false
+ },
+ {
+ "id": 12,
+ "englishName": "Latvian",
+ "stringsFile": "latvian.json",
+ "isoCode": "lv",
+ "flagImageFile": "lv.png",
+ "countries": ["lv"],
+ "requiresUnicode": false,
+ "contributor": "YuOn",
+ "enabled": false
}
]
\ No newline at end of file
diff --git a/config/discord.json b/config/discord.json
index 3fe219f5..d9e9456d 100644
--- a/config/discord.json
+++ b/config/discord.json
@@ -5,6 +5,8 @@
"sendVehicleEvents": false,
"sendDeathEvents": false,
"sendAdmin": false,
+ "sendClan": false,
+ "sendAction": false,
"webhook": {
"enabled": false,
"webhookBaseURL": "http://127.0.0.1:8090/discord.php?message={0}&server={1}&type={2}&pass={3}",
diff --git a/config/economy.json b/config/economy.json
index 15284ba5..549a9759 100644
--- a/config/economy.json
+++ b/config/economy.json
@@ -4,6 +4,7 @@
"applyUpkeep": true,
"grossIncomeMultiplier": 1.0,
"incomeTaxRate": 0.7,
+ "currencyString": "${AMOUNT}",
"upKeepCosts": {
"upKeepPerVehicle": 250,
"upKeepPerHouse": 350,
diff --git a/config/locale.json b/config/locale.json
index 5a68a5de..11c90448 100644
--- a/config/locale.json
+++ b/config/locale.json
@@ -11,7 +11,8 @@
"flagImageFile": "uk.png",
"countries": ["gb", "us", "au", "bz", "ca", "ie", "jm", "nz", "za", "tt"],
"requiresUnicode": false,
- "contributor": "Vortrex"
+ "contributor": "Vortrex",
+ "enabled": true
},
{
"id": 1,
@@ -21,7 +22,8 @@
"flagImageFile": "ru.png",
"countries": ["ru", "ua"],
"requiresUnicode": false,
- "contributor": "VNDTTS"
+ "contributor": "VNDTTS",
+ "enabled": true
},
{
"id": 2,
@@ -31,7 +33,8 @@
"flagImageFile": "pl.png",
"countries": ["pl"],
"requiresUnicode": false,
- "contributor": "Suprise444"
+ "contributor": "Suprise444",
+ "enabled": true
},
{
"id": 3,
@@ -41,7 +44,8 @@
"flagImageFile": "es.png",
"countries": ["es", "ar", "bo", "cl", "co", "cr", "do", "ec", "sv", "gt", "hn", "mx", "ni", "pa", "py", "pe", "pr", "uy", "ve"],
"requiresUnicode": false,
- "contributor": "PerikiyoXD"
+ "contributor": "PerikiyoXD",
+ "enabled": true
},
{
"id": 4,
@@ -51,7 +55,8 @@
"flagImageFile": "cn.png",
"countries": ["cn", "hk", "sg", "tw"],
"requiresUnicode": true,
- "contributor": "Renzuko_Ctone"
+ "contributor": "Renzuko_Ctone",
+ "enabled": true
},
{
"id": 5,
@@ -61,7 +66,8 @@
"flagImageFile": "sa.png",
"countries": ["dz", "bh", "eg", "iq", "jo", "kw", "lb", "ly", "ma", "om", "qa", "sa", "sy", "tn", "ae", "ye"],
"requiresUnicode": true,
- "contributor": "! KASIR"
+ "contributor": "! KASIR",
+ "enabled": true
},
{
"id": 6,
@@ -71,7 +77,8 @@
"flagImageFile": "sk.png",
"countries": ["sk"],
"requiresUnicode": false,
- "contributor": "UAKLAUS"
+ "contributor": "UAKLAUS",
+ "enabled": false
},
{
"id": 7,
@@ -81,7 +88,8 @@
"flagImageFile": "de.png",
"countries": ["de", "at", "be", "ch", "li", "lu"],
"requiresUnicode": false,
- "contributor": "Sladernimo"
+ "contributor": "Sladernimo",
+ "enabled": true
},
{
"id": 8,
@@ -91,7 +99,8 @@
"flagImageFile": "fr.png",
"countries": ["fr", "cd", "bj", "bf", "cd", "cg", "ga", "gn", "ml", "mc", "ne", "sn"],
"requiresUnicode": false,
- "contributor": "Cocam"
+ "contributor": "Cocam",
+ "enabled": false
},
{
"id": 9,
@@ -101,7 +110,8 @@
"flagImageFile": "jp.png",
"countries": ["jp"],
"requiresUnicode": true,
- "contributor": "Cocam"
+ "contributor": "Cocam",
+ "enabled": false
},
{
"id": 10,
@@ -111,7 +121,30 @@
"flagImageFile": "fi.png",
"countries": ["fi"],
"requiresUnicode": false,
- "contributor": "SIMBA_MEOW"
+ "contributor": "SIMBA_MEOW",
+ "enabled": true
+ },
+ {
+ "id": 11,
+ "englishName": "Lithuanian",
+ "stringsFile": "lithuanian.json",
+ "isoCode": "lt",
+ "flagImageFile": "lt.png",
+ "countries": ["lt"],
+ "requiresUnicode": false,
+ "contributor": "dovis",
+ "enabled": false
+ },
+ {
+ "id": 12,
+ "englishName": "Latvian",
+ "stringsFile": "latvian.json",
+ "isoCode": "lv",
+ "flagImageFile": "lv.png",
+ "countries": ["lv"],
+ "requiresUnicode": false,
+ "contributor": "YuOn",
+ "enabled": false
}
]
}
\ No newline at end of file
diff --git a/files/fonts/aurora-bold-condensed.ttf b/files/fonts/aurora-bold-condensed.ttf
new file mode 100644
index 00000000..d8dc93ce
Binary files /dev/null and b/files/fonts/aurora-bold-condensed.ttf differ
diff --git a/files/images/cursor.png b/files/images/cursor.png
new file mode 100644
index 00000000..2f19d2d6
Binary files /dev/null and b/files/images/cursor.png differ
diff --git a/meta.xml b/meta.xml
index db9a24c2..7706aa96 100644
--- a/meta.xml
+++ b/meta.xml
@@ -1,5 +1,5 @@
-
+
@@ -10,7 +10,7 @@
-
+
@@ -50,6 +50,7 @@
+
@@ -85,9 +86,11 @@
+
+
@@ -98,19 +101,28 @@
-
+
+
+
+
-
+
+
+
+
+
+
+
@@ -121,19 +133,17 @@
-
-
-
+
diff --git a/scripts/client/afk.js b/scripts/client/afk.js
index 54f3adc5..e0299442 100644
--- a/scripts/client/afk.js
+++ b/scripts/client/afk.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: afk.js
// DESC: Provides AFK detection
@@ -10,8 +9,8 @@
// Init AFK script
function initAFKScript() {
- logToConsole(LOG_DEBUG, "[VRR.AFK]: Initializing AFK script ...");
- logToConsole(LOG_DEBUG, "[VRR.AFK]: AFK script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.AFK]: Initializing AFK script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.AFK]: AFK script initialized!");
}
// ===========================================================================
diff --git a/scripts/client/animation.js b/scripts/client/animation.js
index 22a2ed52..1c85af40 100644
--- a/scripts/client/animation.js
+++ b/scripts/client/animation.js
@@ -1,13 +1,19 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: animation.js
// DESC: Provides animation functions and usage
// TYPE: Client (JavaScript)
// ===========================================================================
+function initAnimationScript() {
+ logToConsole(LOG_DEBUG, "[AGRP.Animation]: Initializing animation script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Animation]: Animation script initialized!");
+}
+
+// ===========================================================================
+
function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
let ped = getElementFromId(pedId);
@@ -16,11 +22,11 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
}
let animationData = getAnimationData(animationSlot);
- logToConsole(LOG_DEBUG, `[VRR.Animation] Playing animation ${animationData[0]} for ped ${pedId}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Animation] Playing animation ${animationData[0]} for ped ${pedId}`);
let freezePlayer = false;
switch (animationData.moveType) {
- case AGRP_ANIMMOVE_FORWARD: {
+ case V_ANIMMOVE_FORWARD: {
setElementCollisionsEnabled(ped, false);
if (ped.isSyncer) {
setElementPosition(ped, getPosInFrontOfPos(getElementPosition(pedId), fixAngle(getElementHeading(pedId)), positionOffset));
@@ -29,7 +35,7 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
break;
}
- case AGRP_ANIMMOVE_BACK: {
+ case V_ANIMMOVE_BACK: {
setElementCollisionsEnabled(pedId, false);
if (ped.isSyncer) {
setElementPosition(pedId, getPosBehindPos(getElementPosition(pedId), fixAngle(getElementHeading(pedId)), positionOffset));
@@ -38,7 +44,7 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
break;
}
- case AGRP_ANIMMOVE_LEFT: {
+ case V_ANIMMOVE_LEFT: {
setElementCollisionsEnabled(pedId, false);
if (ped.isSyncer) {
setElementPosition(pedId, getPosToLeftOfPos(getElementPosition(pedId), fixAngle(getElementHeading(pedId)), positionOffset));
@@ -47,7 +53,7 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
break;
}
- case AGRP_ANIMMOVE_RIGHT: {
+ case V_ANIMMOVE_RIGHT: {
setElementCollisionsEnabled(pedId, false);
if (ped.isSyncer) {
setElementPosition(pedId, getPosToRightOfPos(getElementPosition(pedId), fixAngle(getElementHeading(pedId)), positionOffset));
@@ -61,9 +67,9 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
}
}
- if (getGame() < AGRP_GAME_GTA_IV) {
- if (animationData.animType == AGRP_ANIMTYPE_NORMAL || animationData.animType == AGRP_ANIMTYPE_SURRENDER) {
- if (getGame() == AGRP_GAME_GTA_VC || getGame() == AGRP_GAME_GTA_SA) {
+ if (getGame() < V_GAME_GTA_IV) {
+ if (animationData.animType == V_ANIMTYPE_NORMAL || animationData.animType == V_ANIMTYPE_SURRENDER) {
+ if (getGame() == V_GAME_GTA_VC || getGame() == V_GAME_GTA_SA) {
ped.clearAnimations();
} else {
ped.clearObjective();
@@ -75,7 +81,7 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
setLocalPlayerControlState(false, false);
localPlayer.collisionsEnabled = false;
}
- } else if (animationData.animType == AGRP_ANIMTYPE_BLEND) {
+ } else if (animationData.animType == V_ANIMTYPE_BLEND) {
ped.position = ped.position;
ped.blendAnimation(animationData.groupId, animationData.animId, animationData.animSpeed);
}
@@ -96,7 +102,7 @@ function forcePedAnimation(pedId, animSlot) {
let animationData = getAnimationData(animSlot);
- if (getGame() < AGRP_GAME_GTA_IV) {
+ if (getGame() < V_GAME_GTA_IV) {
ped.position = ped.position;
ped.addAnimation(animationData.groupId, animationData.animId);
@@ -120,8 +126,8 @@ function makePedStopAnimation(pedId) {
return false;
}
- if (getGame() != AGRP_GAME_GTA_IV) {
- if (getGame() == AGRP_GAME_GTA_VC || getGame() == AGRP_GAME_GTA_SA) {
+ if (getGame() != V_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_VC || getGame() == V_GAME_GTA_SA) {
ped.clearAnimations();
} else {
ped.clearObjective();
@@ -129,7 +135,7 @@ function makePedStopAnimation(pedId) {
}
if (ped == localPlayer) {
- if (getGame() != AGRP_GAME_GTA_IV) {
+ if (getGame() != V_GAME_GTA_IV) {
localPlayer.collisionsEnabled = true;
}
setLocalPlayerControlState(true, false);
diff --git a/scripts/client/business.js b/scripts/client/business.js
index 49fb1911..d52ad960 100644
--- a/scripts/client/business.js
+++ b/scripts/client/business.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: business.js
// DESC: Provides business functions and usage
@@ -17,18 +16,29 @@ class BusinessData {
this.blipModel = blipModel;
this.pickupModel = pickupModel;
this.hasInterior = hasInterior;
+ this.rentPrice = 0;
+ this.buyPrice = 0;
this.hasItems = hasItems;
this.blipId = -1;
this.labelInfoType = 0;
+ this.locked = false;
+ this.entranceFee = 0;
}
}
// ===========================================================================
-function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems) {
- logToConsole(LOG_DEBUG, `[VRR.Business] Received business ${businessId} (${name}) from server`);
+function initBusinessScript() {
+ logToConsole(LOG_DEBUG, "[AGRP.Business]: Initializing business script ...");
+ logToConsole(LOG_INFO, "[AGRP.Business]: Business script initialized!");
+}
- if (!areServerElementsSupported()) {
+// ===========================================================================
+
+function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel, pickupModel, buyPrice, rentPrice, hasInterior, locked, hasItems, entranceFee) {
+ logToConsole(LOG_DEBUG, `[AGRP.Business] Received business ${businessId} (${name}) from server`);
+
+ if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE || getGame() == V_GAME_GTA_IV) {
if (getBusinessData(businessId) != false) {
let businessData = getBusinessData(businessId);
businessData.name = name;
@@ -36,13 +46,27 @@ function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel
businessData.blipModel = blipModel;
businessData.pickupModel = pickupModel;
businessData.hasInterior = hasInterior;
+ businessData.buyPrice = buyPrice;
+ businessData.rentPrice = rentPrice;
businessData.hasItems = hasItems;
+ businessData.locked = locked;
+ businessData.entranceFee = entranceFee;
- logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} already exists. Checking blip ...`);
+ if (hasInterior && !hasItems) {
+ businessData.labelInfoType = V_PROPLABEL_INFO_ENTER;
+ } else if (!hasInterior && hasItems) {
+ businessData.labelInfoType = V_PROPLABEL_INFO_BUY;
+ } else {
+ if (businessData.buyPrice > 0) {
+ businessData.labelInfoType = V_PROPLABEL_INFO_BUYBIZ;
+ }
+ }
+
+ logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId} already exists. Checking blip ...`);
if (blipModel == -1) {
if (businessData.blipId != -1) {
- logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been removed by the server`);
- if (getGame() == AGRP_GAME_GTA_IV) {
+ logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId}'s blip has been removed by the server`);
+ if (getGame() == V_GAME_GTA_IV) {
natives.removeBlipAndClearIndex(getBusinessData(businessId).blipId);
} else {
destroyElement(getElementFromId(blipId));
@@ -51,12 +75,12 @@ function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel
//businesses.splice(businessData.index, 1);
//setAllBusinessDataIndexes();
} else {
- logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip is unchanged`);
+ logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId}'s blip is unchanged`);
}
} else {
if (businessData.blipId != -1) {
- logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been changed by the server`);
- if (getGame() == AGRP_GAME_GTA_IV) {
+ logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId}'s blip has been changed by the server`);
+ if (getGame() == V_GAME_GTA_IV) {
natives.setBlipCoordinates(businessData.blipId, businessData.entrancePosition);
natives.changeBlipSprite(businessData.blipId, businessData.blipModel);
natives.setBlipMarkerLongDistance(businessData.blipId, false);
@@ -68,20 +92,20 @@ function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel
if (blipId != -1) {
tempBusinessData.blipId = blipId;
}
- logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
+ logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
}
}
} else {
- logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} doesn't exist. Adding ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId} doesn't exist. Adding ...`);
let tempBusinessData = new BusinessData(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
if (blipModel != -1) {
let blipId = createGameBlip(tempBusinessData.blipModel, tempBusinessData.entrancePosition, tempBusinessData.name);
if (blipId != -1) {
tempBusinessData.blipId = blipId;
}
- logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
+ logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
} else {
- logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} has no blip.`);
+ logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId} has no blip.`);
}
getServerData().businesses.push(tempBusinessData);
setAllBusinessDataIndexes();
diff --git a/scripts/client/camera.js b/scripts/client/camera.js
new file mode 100644
index 00000000..8d788fc1
--- /dev/null
+++ b/scripts/client/camera.js
@@ -0,0 +1,38 @@
+// ===========================================================================
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
+// ===========================================================================
+// FILE: camera.js
+// DESC: Provides camera functions and usage
+// TYPE: Client (JavaScript)
+// ===========================================================================
+
+let cameraFadeEnabled = false;
+let cameraFadeIn = false;
+let cameraFadeStart = 0;
+let cameraFadeDuration = 0;
+let cameraFadeColour = 0;
+
+// ===========================================================================
+
+function processCameraFadeRendering() {
+ if (cameraFadeEnabled) {
+ let finishTime = cameraFadeStart + cameraFadeDuration;
+ if (sdl.ticks >= finishTime) {
+ cameraFadeEnabled = false;
+ cameraFadeDuration = 0;
+ cameraFadeStart = 0;
+ } else {
+ let currentTick = sdl.ticks - cameraFadeStart;
+ let progressPercent = Math.ceil(currentTick * 100 / cameraFadeDuration);
+ let rgbaArray = rgbaArrayFromToColour(cameraFadeColour);
+
+ let alpha = (cameraFadeIn) ? Math.ceil(255 / progressPercent) : Math.ceil(progressPercent / 255);
+
+ cameraFadeColour = toColour(rgbaArray[0], rgbaArray[1], rgbaArray[2], alpha);
+ graphics.drawRectangle(null, toVector2(0, 0), toVector2(game.width, game.height), cameraFadeColour, cameraFadeColour, cameraFadeColour, cameraFadeColour);
+ }
+ }
+}
+
+// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/chat.js b/scripts/client/chat.js
index c5f107d8..2d1a5e23 100644
--- a/scripts/client/chat.js
+++ b/scripts/client/chat.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: chatbox.js
// DESC: Provides extra chatbox features
@@ -29,11 +28,11 @@ let scrollDownKey = false;
// ===========================================================================
function initChatBoxScript() {
- logToConsole(LOG_DEBUG, "[VRR.Chat]: Initializing chat script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Chat]: Initializing chat script ...");
scrollUpKey = getKeyIdFromParams("pageup");
scrollDownKey = getKeyIdFromParams("pagedown");
bindChatBoxKeys();
- logToConsole(LOG_DEBUG, "[VRR.Chat]: Chat script initialized!");
+ logToConsole(LOG_INFO, "[AGRP.Chat]: Chat script initialized!");
}
// ===========================================================================
@@ -53,7 +52,7 @@ function unBindChatBoxKeys() {
// ===========================================================================
function receiveChatBoxMessageFromServer(messageString, colour, hour, minute, second) {
- logToConsole(LOG_DEBUG, `[VRR.Chat]: Received chatbox message from server: ${messageString}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Chat]: Received chatbox message from server: ${messageString}`);
// Just in case it's hidden by auto hide
//setChatWindowEnabled(true);
@@ -73,21 +72,21 @@ function receiveChatBoxMessageFromServer(messageString, colour, hour, minute, se
let outputString = messageString;
if (chatTimeStampsEnabled == true) {
- //timeStampString = `{TIMESTAMPCOLOUR}[${findResourceByName("agrp_time").exports.getTimeStampOutput(timeStamp)}]{MAINCOLOUR}`;
- let timeStampString = `{TIMESTAMPCOLOUR}[${hour}:${minute}:${second}] `;
+ let colourRGBA = rgbaArrayFromToColour(colour);
+ let timeStampString = `{TIMESTAMPCOLOUR}[${hour}:${minute}:${second}][${rgbToHex(colourRGBA[0], colourRGBA[1], colourRGBA[2])}] `;
outputString = `${timeStampString}${messageString}`;
}
- logToConsole(LOG_DEBUG, `[VRR.Chat]: Changed colours in string: ${outputString}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Chat]: Changed colours in string: ${outputString}`);
outputString = replaceColoursInMessage(`${outputString}`);
if (chatEmojiEnabled == true) {
- logToConsole(LOG_DEBUG, `[VRR.Chat]: Enabled emoji in string: ${outputString}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Chat]: Enabled emoji in string: ${outputString}`);
outputString = replaceEmojiInMessage(outputString);
}
if (profanityFilterEnabled == true) {
- logToConsole(LOG_DEBUG, `[VRR.Chat]: Removed profanity in string: ${outputString}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Chat]: Removed profanity in string: ${outputString}`);
outputString = replaceProfanityInMessage(outputString);
}
@@ -163,12 +162,9 @@ function updateChatBox() {
if (typeof chatBoxHistory[i] != "undefined") {
let outputString = chatBoxHistory[i][0];
if (chatTimeStampsEnabled == true) {
- //let timeStampDate = new Date(chatBoxHistory[i][2]);
- //let timeStampText = `${timeStampDate.getHours()}:${timeStampDate.getMinutes()}:${timeStampDate.getSeconds()}`;
- //let timeStampText = findResourceByName("agrp_time").exports.getTimeStampOutput(chatBoxHistory[i][2]);
let timeStampText = `${chatBoxHistory[i][2]}:${chatBoxHistory[i][3]}:${chatBoxHistory[i][4]}`;
-
- outputString = `{TIMESTAMPCOLOUR}[${timeStampText}]{MAINCOLOUR} ${chatBoxHistory[i][0]}`;
+ let colourRGBA = rgbaArrayFromToColour(chatBoxHistory[i][1]);
+ outputString = `{TIMESTAMPCOLOUR}[${timeStampText}][${rgbToHex(colourRGBA[0], colourRGBA[1], colourRGBA[2])}] ${chatBoxHistory[i][0]}`;
}
outputString = replaceColoursInMessage(outputString);
diff --git a/scripts/client/content.js b/scripts/client/content.js
index f77e4304..4b33fb9c 100644
--- a/scripts/client/content.js
+++ b/scripts/client/content.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: content.js
// DESC: Provides connection to extra content resources
diff --git a/scripts/client/main.js b/scripts/client/core.js
similarity index 72%
rename from scripts/client/main.js
rename to scripts/client/core.js
index 039836bd..e10400bb 100644
--- a/scripts/client/main.js
+++ b/scripts/client/core.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: main.js
// DESC: Main client script (will be reorganized into individual files later)
@@ -19,8 +18,8 @@ let isSpawned = false;
let garbageCollectorInterval = null;
-let parkedVehiclePosition = false;
-let parkedVehicleHeading = false;
+//let parkedVehiclePosition = false;
+//let parkedVehicleHeading = false;
let renderHUD = true;
let renderLabels = true;
@@ -31,7 +30,7 @@ let renderHotBar = true;
let renderItemActionDelay = true;
let renderInteriorLights = true;
-let logLevel = LOG_DEBUG;
+let logLevel = LOG_INFO | LOG_DEBUG;
let weaponDamageEnabled = {};
let weaponDamageEvent = {};
@@ -61,10 +60,11 @@ let interiorLightsEnabled = true;
let interiorLightsColour = toColour(0, 0, 0, 150);
let mouseCameraEnabled = false;
+let mouseCursorEnabled = false;
let currentPickup = false;
-let vehiclePurchaseState = AGRP_VEHBUYSTATE_NONE;
+let vehiclePurchaseState = V_VEHBUYSTATE_NONE;
let vehiclePurchasing = null;
let vehiclePurchasePosition = null;
@@ -83,6 +83,15 @@ let profanityFilterEnabled = false;
let localLocaleId = 0;
+/**
+ * @typedef {Object} ServerData
+ * @property {Array.} houses
+ * @property {Array.} businesses
+ * @property {Array.} vehicles
+ * @property {Array} localeStrings
+ * @property {Array} localeOptions
+ * @property {Object} cvars
+*/
let serverData = {
houses: [],
businesses: [],
@@ -90,6 +99,19 @@ let serverData = {
localeOptions: [],
vehicles: [],
jobs: [],
+ cvars: {},
};
+let localPlayerMoney = 0;
+let localPlayerMoneyInterval = null;
+
+let currencyString = "${AMOUNT}";
+
+let mapChangeWarning = false;
+
+let cruiseControlEnabled = false;
+let cruiseControlSpeed = 0.0;
+
+let myToken = "";
+
// ===========================================================================
diff --git a/scripts/client/cursor.js b/scripts/client/cursor.js
new file mode 100644
index 00000000..7e19c4fb
--- /dev/null
+++ b/scripts/client/cursor.js
@@ -0,0 +1,39 @@
+// ===========================================================================
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
+// ===========================================================================
+// FILE: cursor.js
+// DESC: Provides cursor functions and usage
+// TYPE: Client (JavaScript)
+// ===========================================================================
+
+let cursorImage = null;
+let cursorImagePath = "files/images/cursor.png";
+let cursorSize = toVector2(16.0, 24.0);
+
+// ===========================================================================
+
+function initCursorScript() {
+ logToConsole(LOG_DEBUG, "[AGRP.Cursor]: Initializing cursor script ...");
+ let cursorStream = openFile(cursorImagePath);
+ if (cursorStream != null) {
+ cursorImage = graphics.loadPNG(cursorStream);
+ cursorStream.close();
+ }
+
+ logToConsole(LOG_INFO, "[AGRP.Cursor]: Cursor script initialized!");
+}
+
+// ===========================================================================
+
+function processMouseCursorRendering() {
+ if (isGameFeatureSupported("mouseCursor")) {
+ return false;
+ }
+
+ if (gui.cursorEnabled) {
+ graphics.drawRectangle(cursorImage, gui.cursorPosition, cursorSize);
+ }
+}
+
+// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/gui/games/5-card-poker.js b/scripts/client/economy.js
similarity index 55%
rename from scripts/client/gui/games/5-card-poker.js
rename to scripts/client/economy.js
index d254829b..eb1cd329 100644
--- a/scripts/client/gui/games/5-card-poker.js
+++ b/scripts/client/economy.js
@@ -1,9 +1,12 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
-// FILE: 5cardpoker.js
-// DESC: Provides 5-card poker games GUI
+// FILE: economy.js
+// DESC: Provides economy functions
// TYPE: Client (JavaScript)
+// ===========================================================================
+
+
+
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/event.js b/scripts/client/event.js
index 8cfa7bfa..4313e47e 100644
--- a/scripts/client/event.js
+++ b/scripts/client/event.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: event.js
// DESC: Provides handlers for built in GTAC and Asshat-Gaming created events
@@ -9,9 +8,9 @@
// ===========================================================================
function initEventScript() {
- logToConsole(LOG_DEBUG, "[VRR.Event]: Initializing event script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Event]: Initializing event script ...");
addAllEventHandlers();
- logToConsole(LOG_DEBUG, "[VRR.Event]: Event script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.Event]: Event script initialized!");
}
// ===========================================================================
@@ -41,15 +40,15 @@ function addAllEventHandlers() {
addEventHandler("OnPedExitedSphereEx", onPedExitedSphere);
}
}
+
+ if (getGame() == V_GAME_MAFIA_ONE) {
+ addEventHandler("OnMapLoaded", onMapLoaded);
+ }
}
// ===========================================================================
function onResourceStart(event, resource) {
- if (resource == thisResource) {
- sendResourceStartedSignalToServer();
- }
-
if (resource == findResourceByName("v-events")) {
// Remove and re-add events, in case v-events was loaded after agrp_main
removeEventHandler("OnPedEnteredVehicleEx");
@@ -62,13 +61,20 @@ function onResourceStart(event, resource) {
addEventHandler("OnPedEnteredSphereEx", onPedEnteredSphere);
addEventHandler("OnPedExitedSphereEx", onPedExitedSphere);
}
- //garbageCollectorInterval = setInterval(collectAllGarbage, 1000*60);
+
+ if (resource == thisResource) {
+ logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.Event] onResourceStart called - Sending signal to server`);
+ garbageCollectorInterval = setInterval(collectAllGarbage, 1000 * 60);
+ localPlayerMoneyInterval = setInterval(updateLocalPlayerMoney, 1000 * 5);
+ sendResourceStartedSignalToServer();
+ }
}
// ===========================================================================
function onResourceStop(event, resource) {
if (resource == thisResource) {
+ logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.Event] onResourceStop called - Sending signal to server`);
sendResourceStoppedSignalToServer();
}
}
@@ -77,6 +83,8 @@ function onResourceStop(event, resource) {
function onResourceReady(event, resource) {
if (resource == thisResource) {
+ logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.Event] onResourceReady called - Sending signal to server`);
+ loadLocaleConfig();
sendResourceReadySignalToServer();
}
}
@@ -84,6 +92,7 @@ function onResourceReady(event, resource) {
// ===========================================================================
function onProcess(event, deltaTime) {
+ logToConsole(LOG_VERBOSE, `[AGRP.Event] onProcess`);
if (localPlayer == null) {
return false;
}
@@ -101,9 +110,9 @@ function onProcess(event, deltaTime) {
processNearbyPickups();
processVehiclePurchasing();
processVehicleBurning();
+ processVehicleCruiseControl();
//checkChatBoxAutoHide(); // Will be uncommented on 1.4.0 GTAC update
//processVehicleFires();
-
}
// ===========================================================================
@@ -118,6 +127,9 @@ function onKeyUp(event, keyCode, scanCode, keyModifiers) {
// ===========================================================================
function onDrawnHUD(event) {
+ logToConsole(LOG_VERBOSE, `[AGRP.Event] HUD drawn`);
+ processMouseCursorRendering();
+
if (!renderHUD) {
return false;
}
@@ -139,7 +151,7 @@ function onDrawnHUD(event) {
// ===========================================================================
function onPedWasted(event, wastedPed, killerPed, weapon, pedPiece) {
- logToConsole(LOG_DEBUG, `[VRR.Event] Ped ${wastedPed.name} died`);
+ logToConsole(LOG_DEBUG, `[AGRP.Event] Ped ${wastedPed.name} died`);
wastedPed.clearWeapons();
}
@@ -152,27 +164,62 @@ function onElementStreamIn(event, element) {
// ===========================================================================
function onPedExitedVehicle(event, ped, vehicle, seat) {
- //logToConsole(LOG_DEBUG, `[VRR.Event] Local player exited vehicle`);
- //sendNetworkEventToServer("agrp.onPlayerExitVehicle", getVehicleForNetworkEvent(vehicle), seat);
+ //logToConsole(LOG_DEBUG, `[AGRP.Event] Local player exited vehicle`);
+ //sendNetworkEventToServer("v.rp.onPlayerExitVehicle", getVehicleForNetworkEvent(vehicle), seat);
- if (inVehicleSeat) {
- parkedVehiclePosition = false;
- parkedVehicleHeading = false;
+ cruiseControlEnabled = false;
+ cruiseControlSpeed = 0.0;
+
+ if (localPlayer != null) {
+ if (ped == localPlayer) {
+ if (areServerElementsSupported()) {
+ if (inVehicleSeat == 0) {
+ //setVehicleEngine(vehicle.id, false);
+ //if (!inVehicle.engine) {
+ // parkedVehiclePosition = false;
+ // parkedVehicleHeading = false;
+ //}
+ }
+ }
+ }
+ }
+}
+
+// ===========================================================================
+
+function onPedExitingVehicle(event, ped, vehicle, seat) {
+ //logToConsole(LOG_DEBUG, `[AGRP.Event] Local player exited vehicle`);
+ //sendNetworkEventToServer("v.rp.onPlayerExitVehicle", getVehicleForNetworkEvent(vehicle), seat);
+
+ if (localPlayer != null) {
+ if (ped == localPlayer) {
+ cruiseControlEnabled = false;
+ cruiseControlSpeed = 0.0;
+ }
}
}
// ===========================================================================
function onPedEnteredVehicle(event, ped, vehicle, seat) {
- logToConsole(LOG_DEBUG, `[VRR.Event] Local player entered vehicle`);
- //sendNetworkEventToServer("agrp.onPlayerEnterVehicle", getVehicleForNetworkEvent(vehicle), seat);
+ logToConsole(LOG_DEBUG, `[AGRP.Event] Ped entered vehicle`);
+ //sendNetworkEventToServer("v.rp.onPlayerEnterVehicle", getVehicleForNetworkEvent(vehicle), seat);
- if (areServerElementsSupported()) {
- if (inVehicleSeat == 0) {
- setVehicleEngine(vehicle.id, false);
- if (!inVehicle.engine) {
- parkedVehiclePosition = inVehicle.position;
- parkedVehicleHeading = inVehicle.heading;
+ cruiseControlEnabled = false;
+ cruiseControlSpeed = 0.0;
+
+ if (localPlayer != null) {
+ if (ped == localPlayer) {
+ if (areServerElementsSupported()) {
+ if (inVehicleSeat == 0) {
+ //parkedVehiclePosition = inVehicle.position;
+ //parkedVehicleHeading = inVehicle.heading;
+ if (doesEntityDataExist(vehicle, "v.rp.server") == true) {
+ //setVehicleEngine(vehicle.id, false);
+ setVehicleEngine(vehicle.id, getEntityData(vehicle, "v.rp.engine"));
+ //setLocalPlayerControlState(false, false);
+ }
+ }
}
}
}
@@ -183,14 +230,14 @@ function onPedEnteredVehicle(event, ped, vehicle, seat) {
function onPedInflictDamage(event, damagedEntity, damagerEntity, weaponId, healthLoss, pedPiece) {
//let damagerEntityString = (!isNull(damagedEntity)) ? `${damagerEntity.name} (${damagerEntity.name}, ${damagerEntity.type} - ${typeof damagerEntity})` : `Unknown ped`;
//let damagedEntityString = (!isNull(damagedEntity)) ? `${damagedEntity.name} (${damagedEntity.name}, ${damagedEntity.type} - ${typeof damagedEntity})` : `Unknown ped`;
- //logToConsole(LOG_DEBUG, `[VRR.Event] ${damagerEntityString} damaged ${damagedEntityString}'s '${pedPiece} with weapon ${weaponId}`);
+ //logToConsole(LOG_DEBUG, `[AGRP.Event] ${damagerEntityString} damaged ${damagedEntityString}'s '${pedPiece} with weapon ${weaponId}`);
if (!isNull(damagedEntity) && !isNull(damagerEntity)) {
if (damagedEntity.isType(ELEMENT_PLAYER)) {
if (damagedEntity == localPlayer) {
if (!weaponDamageEnabled[damagerEntity.name]) {
preventDefaultEventAction(event);
}
- sendNetworkEventToServer("agrp.weaponDamage", damagerEntity.name, weaponId, pedPiece, healthLoss);
+ sendNetworkEventToServer("v.rp.weaponDamage", damagerEntity.name, weaponId, pedPiece, healthLoss);
}
}
}
@@ -246,4 +293,10 @@ function onEntityProcess(event, entity) {
}
+// ===========================================================================
+
+function onMapLoaded(mapName) {
+ sendNetworkEventToServer("v.rp.mapLoaded", mapName);
+}
+
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/gps.js b/scripts/client/gps.js
index 81adfaa4..600e56e7 100644
--- a/scripts/client/gps.js
+++ b/scripts/client/gps.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: gps.js
// DESC: Provides GPS functions and usage
@@ -17,9 +16,9 @@ let gpsBlipBlinkTimer = null;
// ===========================================================================
function showGPSLocation(position, colour) {
- logToConsole(LOG_DEBUG, `[VRR.GPS] Showing gps location`);
- if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
- if (getGame() == AGRP_GAME_GTA_SA) {
+ logToConsole(LOG_DEBUG, `[AGRP.GPS] Showing gps location`);
+ if (getMultiplayerMod() == V_MPMOD_GTAC) {
+ if (getGame() == V_GAME_GTA_SA) {
// Server-side spheres don't show in GTA SA for some reason.
gpsSphere = game.createPickup(1318, position, 1);
} else {
diff --git a/scripts/client/gui.js b/scripts/client/gui.js
index 98058341..03886e7e 100644
--- a/scripts/client/gui.js
+++ b/scripts/client/gui.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: gui.js
// DESC: Provides GUI functionality and styles (using MexUI)
@@ -41,14 +40,14 @@ let creatingCharacter = false;
// ===========================================================================
function initGUIScript() {
- logToConsole(LOG_DEBUG, "[VRR.GUI]: Initializing GUI script ...");
- logToConsole(LOG_DEBUG, "[VRR.GUI]: GUI script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.GUI]: Initializing GUI script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.GUI]: GUI script initialized!");
}
// ===========================================================================
function initGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Initializing GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Initializing GUI ...`);
initLoginGUI();
initRegisterGUI();
@@ -62,21 +61,27 @@ function initGUI() {
initResetPasswordGUI();
initChangePasswordGUI();
initLocaleChooserGUI();
+ //initInventoryGUI();
+ //initInventoryBulkGUI();
+ //initClanManagerGUI();
+ //initBusinessManagerGUI();
+ //initHouseManagerGUI();
+ //initFiveCardPokerGUI();
+ //initBettingGUI();
+ //initBlackJackGUI();
closeAllWindows();
guiReady = true;
- logToConsole(LOG_DEBUG, `[VRR.GUI] All GUI created successfully!`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] All GUI created successfully!`);
- loadLocaleConfig();
-
- sendNetworkEventToServer("agrp.guiReady", true);
+ sendNetworkEventToServer("v.rp.guiReady", true);
};
// ===========================================================================
function closeAllWindows() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Closing all GUI windows`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing all GUI windows`);
infoDialog.window.shown = false;
yesNoDialog.window.shown = false;
errorDialog.window.shown = false;
@@ -89,6 +94,14 @@ function closeAllWindows() {
passwordReset.window.shown = false;
passwordChange.window.shown = false;
localeChooser.window.shown = false;
+ //houseManager.window.shown = false;
+ //businessManager.window.shown = false;
+ //clanManager.window.shown = false;
+ //inventoryGUI.window.shown = false;
+ //inventoryBulkGUI.window.shown = false;
+ //bettingGUI.window.shown = false;
+ //blackJackGUI.window.shown = false;
+ //fiveCardPokerGUI.window.shown = false;
mexui.setInput(false);
mexui.focusedControl = false;
@@ -157,13 +170,45 @@ function isAnyGUIActive() {
return true;
}
+ //if (clanManager.window.shown == true) {
+ // return true;
+ //}
+
+ //if (businessManager.window.shown == true) {
+ // return true;
+ //}
+
+ //if (houseManager.window.shown == true) {
+ // return true;
+ //}
+
+ //if (inventoryGUI.window.shown == true) {
+ // return true;
+ //}
+
+ //if (inventoryBulkGUI.window.shown == true) {
+ // return true;
+ //}
+
+ //if (bettingGUI.window.shown == true) {
+ // return true;
+ //}
+
+ //if (blackJackGUI.window.shown == true) {
+ // return true;
+ //}
+
+ //if (fiveCardPokerGUI.window.shown == true) {
+ // return true;
+ //}
+
return false;
}
// ===========================================================================
function setGUIColours(red1, green1, blue1, red2, green2, blue2, red3, green3, blue3) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Received new GUI colours from server: ${red1}, ${green1}, ${blue1} / ${red2}, ${green2}, ${blue2} / ${red3}, ${green3}, ${blue3}`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Received new GUI colours from server: ${red1}, ${green1}, ${blue1} / ${red2}, ${green2}, ${blue2} / ${red3}, ${green3}, ${blue3}`);
primaryColour = [red1, green1, blue1];
secondaryColour = [red2, green2, blue2];
primaryTextColour = [red3, green3, blue3];
@@ -183,41 +228,45 @@ function hideAllGUI() {
// ===========================================================================
function processGUIKeyPress(keyCode) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Processing key press: ${keyCode}`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Processing key press: ${keyCode}`);
+
+ if (!guiReady) {
+ return false;
+ }
if (!isAnyGUIActive()) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] GUI is not active. Cancelling keypress processing.`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] GUI is not active. Cancelling keypress processing.`);
return false;
}
if (keyCode == SDLK_RETURN || keyCode == SDLK_RETURN2) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Key press is submit (${guiSubmitKey})`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Key press is submit (${guiSubmitKey})`);
if (guiSubmitKey != false) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Calling submit key function`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Calling submit key function`);
guiSubmitKey.call();
}
} else if (keyCode == getKeyIdFromParams("left") || keyCode == getKeyIdFromParams("a")) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Key press is left (${guiLeftKey})`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Key press is left (${guiLeftKey})`);
if (guiLeftKey != false) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Calling left key function`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Calling left key function`);
guiLeftKey.call();
}
} else if (keyCode == getKeyIdFromParams("right") || keyCode == getKeyIdFromParams("d")) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Key press is right (${guiRightKey})`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Key press is right (${guiRightKey})`);
if (guiRightKey != false) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Calling right key function`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Calling right key function`);
guiRightKey.call();
}
} else if (keyCode == getKeyIdFromParams("down") || keyCode == getKeyIdFromParams("s")) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Key press is down (${guiDownKey})`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Key press is down (${guiDownKey})`);
if (guiDownKey != false) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Calling down key function`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Calling down key function`);
guiDownKey.call();
}
} else if (keyCode == getKeyIdFromParams("up") || keyCode == getKeyIdFromParams("w")) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Key press is up (${guiUpKey})`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Key press is up (${guiUpKey})`);
if (guiUpKey != false) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Calling up key function`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Calling up key function`);
guiUpKey.call();
}
}
@@ -227,13 +276,17 @@ function processGUIKeyPress(keyCode) {
function processToggleGUIKeyPress(keyCode) {
if (keyCode == disableGUIKey) {
- sendNetworkEventToServer("agrp.toggleGUI");
+ sendNetworkEventToServer("v.rp.toggleGUI");
}
}
// ===========================================================================
function resetGUIStrings() {
+ if (!guiReady) {
+ return false;
+ }
+
// Login GUI
login.messageLabel.text = getLocaleString("GUILoginWindowLabelEnterPassword");
login.passwordInput.placeholder = getLocaleString("GUILoginWindowPasswordPlaceholder");
@@ -277,4 +330,16 @@ function resetGUIStrings() {
newCharacter.firstNameInput.placeholder = getLocaleString("GUINewCharacterFirstNamePlaceholder");
newCharacter.lastNameInput.placeholder = getLocaleString("GUINewCharacterLastNamePlaceholder");
newCharacter.createCharacterButton.text = toUpperCase(getLocaleString("GUINewCharacterSubmitButton"));
-}
\ No newline at end of file
+}
+
+// ===========================================================================
+
+function dimAllGUIElementsInWindow(guiObject) {
+ for (let i in guiObject) {
+ if (i != "window") {
+ guiObject[i].shown = false;
+ }
+ }
+}
+
+// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/gui/2fa.js b/scripts/client/gui/2fa.js
index e72d09eb..33fc08a4 100644
--- a/scripts/client/gui/2fa.js
+++ b/scripts/client/gui/2fa.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: 2fa.js
// DESC: Provides two factor authentication GUI
@@ -21,7 +20,7 @@ let twoFactorAuth = {
// ===========================================================================
function initTwoFactorAuthenticationGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Creating two factor auth GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating two factor auth GUI ...`);
twoFactorAuth.window = mexui.window(game.width / 2 - 150, game.height / 2 - 129, 300, 258, 'LOGIN', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -95,14 +94,14 @@ function initTwoFactorAuthenticationGUI() {
},
}, checkTwoFactorAuth);
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created two factor auth GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created two factor auth GUI`);
}
// ===========================================================================
function showTwoFactorAuthGUI() {
closeAllWindows();
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing two-factor authentication window`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing two-factor authentication window`);
setChatWindowEnabled(false);
mexui.setInput(true);
twoFactorAuth.window.shown = true;
@@ -113,7 +112,7 @@ function showTwoFactorAuthGUI() {
// ===========================================================================
function twoFactorAuthFailed(errorMessage) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports two-factor authentication failed. Reason: ${errorMessage}`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports two-factor authentication failed. Reason: ${errorMessage}`);
twoFactorAuth.messageLabel.text = errorMessage;
twoFactorAuth.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
twoFactorAuth.codeInput.text = "";
@@ -122,15 +121,15 @@ function twoFactorAuthFailed(errorMessage) {
// ===========================================================================
function twoFactorAuthSuccess() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports two-factor authentication was successful`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports two-factor authentication was successful`);
closeAllWindows();
}
// ===========================================================================
function checkTwoFactorAuth() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Checking two-factor authentication with server ...`);
- sendNetworkEventToServer("agrp.2fa", twoFactorAuth.codeInput.lines[0]);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking two-factor authentication with server ...`);
+ sendNetworkEventToServer("v.rp.2fa", twoFactorAuth.codeInput.lines[0]);
}
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/gui/bizmgr.js b/scripts/client/gui/bizmgr.js
index 717eda31..1929454d 100644
--- a/scripts/client/gui/bizmgr.js
+++ b/scripts/client/gui/bizmgr.js
@@ -1,9 +1,84 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: bizmgr.js
// DESC: Provides business manager GUI
// TYPE: Client (JavaScript)
+// ===========================================================================
+
+/*
+class BusinessManagerData {
+ constructor(businessIndex, name, locked, entranceFee, buyPrice, rentPrice, floorItems, storageItems) {
+ this.businessIndex = businessIndex;
+ this.name = name;
+ this.locked = locked;
+ this.entranceFee = entranceFee;
+ this.buyPrice = buyPrice;
+ this.rentPrice = rentPrice;
+ this.till = till;
+ this.ownerName = ownerName;
+ this.floorItems = floorItems;
+ this.storageItems = storageItems;
+ }
+}
+
+// ===========================================================================
+
+let businessManager = {
+ window: null,
+ generalTabButton: null,
+ floorItemsTab: null,
+ storageItemsTab: null,
+ orderItemsTab: null,
+ data: null,
+
+ // General Tab
+ businessName: null,
+ businessOwnerName: null,
+ businessEntranceFee: null,
+ businessBuyPrice: null,
+ businessRentPrice: null,
+
+};
+
+// ===========================================================================
+
+function initBusinessManagerGUI() {
+
+}
+
+// ===========================================================================
+
+function showBusinessManagerGUI() {
+
+}
+
+// ===========================================================================
+
+function hideBusinessManagerGUI() {
+
+}
+
+// ===========================================================================
+
+function updateBusinessManagerGUIStrings() {
+
+}
+
+// ===========================================================================
+
+function receiveBusinessManagerData(businessIndex, name, locked, entranceFee, buyPrice, rentPrice, floorItems, storageItems) {
+ let businessManagerData = new BusinessManagerData(businessIndex, name, locked, entranceFee, buyPrice, rentPrice, floorItems, storageItems);
+ businessManager.data = businessManagerData;
+ updateBusinessManagerGUIStrings();
+}
+
+// ===========================================================================
+
+function saveBusinessData() {
+ sendNetworkEventToServer("v.rp.businessManagerSave", businessManager.data.businessIndex);
+}
+*/
+
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/gui/changepass.js b/scripts/client/gui/changepass.js
index 23f09d15..f2770a23 100644
--- a/scripts/client/gui/changepass.js
+++ b/scripts/client/gui/changepass.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: changepass.js
// DESC: Provides change password GUI
@@ -20,7 +19,7 @@ let passwordChange = {
// ===========================================================================
function initChangePasswordGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Creating password change GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating password change GUI ...`);
passwordChange.window = mexui.window(game.width / 2 - 130, game.height / 2 - 125, 300, 250, 'Change Password', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -111,13 +110,13 @@ function initChangePasswordGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkChangePassword);
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created change password GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created change password GUI`);
}
// ===========================================================================
function passwordChangeFailed(errorMessage) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports change password failed. Reason: ${errorMessage}`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports change password failed. Reason: ${errorMessage}`);
passwordChange.messageLabel.text = errorMessage;
passwordChange.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
passwordChange.passwordInput.text = "";
@@ -128,14 +127,14 @@ function passwordChangeFailed(errorMessage) {
// ===========================================================================
function checkChangePassword() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Checking password change with server ...`);
- sendNetworkEventToServer("agrp.checkChangePassword", passwordChange.passwordInput.lines[0], passwordChange.confirmPasswordInput.lines[0]);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking password change with server ...`);
+ sendNetworkEventToServer("v.rp.checkChangePassword", passwordChange.passwordInput.lines[0], passwordChange.confirmPasswordInput.lines[0]);
}
// ===========================================================================
function showChangePasswordGUI(errorMessage) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing change password window`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing change password window`);
closeAllWindows();
setChatWindowEnabled(false);
mexui.setInput(true);
@@ -150,7 +149,7 @@ function showChangePasswordGUI(errorMessage) {
// ===========================================================================
function passwordChangeSuccess() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports password change was successful`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports password change was successful`);
guiSubmitKey = false;
closeAllWindows();
}
diff --git a/scripts/client/gui/charselect.js b/scripts/client/gui/charselect.js
index f46f4a9c..b5cd2838 100644
--- a/scripts/client/gui/charselect.js
+++ b/scripts/client/gui/charselect.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: charselect.js
// DESC: Provides character select GUI
@@ -24,7 +23,7 @@ let characterSelect = {
// ===========================================================================
function initCharacterSelectGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Creating character select GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating character select GUI ...`);
characterSelect.window = mexui.window(game.width / 2 - 215, game.height / 2 - 83, 430, 190, 'SELECT CHARACTER', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -151,18 +150,18 @@ function initCharacterSelectGUI() {
borderColour: toColour(0, 0, 0, 0),
}
});
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created character select GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created character select GUI`);
}
// ===========================================================================
function showCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, skinId) {
closeAllWindows();
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing character selection window`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing character selection window`);
setChatWindowEnabled(false);
mexui.setInput(true);
characterSelect.nameText.text = `${firstName} ${lastName}`;
- characterSelect.cashText.text = `Money: $${cash}`;
+ characterSelect.cashText.text = `Money: ${getCurrencyString(cash)}`;
characterSelect.clanText.text = `Clan: ${clan}`;
characterSelect.lastPlayedText.text = `Last Played: ${lastPlayed}`;
characterSelect.skinImage = characterSelect.window.image(310, 32, 100, 90, "files/images/skins/none.png");
@@ -179,46 +178,46 @@ function showCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, ski
function showNewCharacter() {
closeAllWindows();
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing new character dialog window`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing new character dialog window`);
showNewCharacterGUI();
}
// ===========================================================================
function selectNextCharacter() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Requesting next character info from server for character select window`);
- sendNetworkEventToServer("agrp.nextCharacter");
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Requesting next character info from server for character select window`);
+ sendNetworkEventToServer("v.rp.nextCharacter");
}
// ===========================================================================
function selectPreviousCharacter() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Requesting previous character info from server for character select window`);
- sendNetworkEventToServer("agrp.previousCharacter");
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Requesting previous character info from server for character select window`);
+ sendNetworkEventToServer("v.rp.previousCharacter");
}
// ===========================================================================
function selectThisCharacter() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Tell server the current shown character was selected in character select window`);
- sendNetworkEventToServer("agrp.selectCharacter");
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Tell server the current shown character was selected in character select window`);
+ sendNetworkEventToServer("v.rp.selectCharacter");
}
// ===========================================================================
function switchCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, skinId) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Updating character info with data from server`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Updating character info with data from server`);
setChatWindowEnabled(false);
characterSelect.window.shown = false;
characterSelect.nameText.text = `${firstName} ${lastName}`;
- characterSelect.cashText.text = `Money: $${cash}`;
+ characterSelect.cashText.text = `Money: ${getCurrencyString(cash)}`;
characterSelect.clanText.text = `Clan: ${clan}`;
characterSelect.lastPlayedText.text = `Last Played: ${lastPlayed}`;
if (characterSelect.skinImage != null) {
characterSelect.skinImage.remove();
}
- characterSelect.skinImage = (getGame() == AGRP_GAME_GTA_III) ? characterSelect.window.image(310, 32, 100, 90, `files/images/skins/gta3/${getSkinImage(skinId)}.png`) : characterSelect.window.image(310, 32, 100, 90, "files/images/skins/none.png");
+ characterSelect.skinImage = (getGame() == V_GAME_GTA_III) ? characterSelect.window.image(310, 32, 100, 90, `files/images/skins/gta3/${getSkinImage(skinId)}.png`) : characterSelect.window.image(310, 32, 100, 90, "files/images/skins/none.png");
characterSelect.window.shown = true;
@@ -230,7 +229,7 @@ function switchCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, s
// ===========================================================================
function characterSelectSuccess() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports character selection was successful`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports character selection was successful`);
closeAllWindows();
}
diff --git a/scripts/client/gui/clanmgr.js b/scripts/client/gui/clanmgr.js
index 7928a7be..ccb71959 100644
--- a/scripts/client/gui/clanmgr.js
+++ b/scripts/client/gui/clanmgr.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: clanmgr.js
// DESC: Provides clan manager GUI
@@ -10,12 +9,16 @@
let clanManager = {
window: null,
- generalTab: null,
- ranksTab: null,
- membersTab: null,
- vehiclesTab: null,
- businessesTab: null,
- housesTab: null,
+ generalTabButton: null,
+ ranksTabButton: null,
+ membersTabButton: null,
+ vehiclesTabButton: null,
+ businessesTabButton: null,
+ housesTabButton: null,
};
-// ===========================================================================
\ No newline at end of file
+// ===========================================================================
+
+function initClanManagerGUI() {
+
+}
\ No newline at end of file
diff --git a/scripts/client/gui/error.js b/scripts/client/gui/error.js
index 65f67f76..499c17e3 100644
--- a/scripts/client/gui/error.js
+++ b/scripts/client/gui/error.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: error.js
// DESC: Provides error box GUI
@@ -17,7 +16,7 @@ let errorDialog = {
// ===========================================================================
function initErrorDialogGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Creating error GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating error GUI ...`);
errorDialog.window = mexui.window(getScreenWidth() / 2 - 200, getScreenHeight() / 2 - 70, 400, 140, 'ERROR', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -59,14 +58,14 @@ function initErrorDialogGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
}, closeErrorDialog);
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created error GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created error GUI ...`);
}
// ===========================================================================
function showErrorGUI(errorMessage, errorTitle, buttonText) {
closeAllWindows();
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing error window. Error: ${errorTitle} - ${errorMessage}`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing error window. Error: ${errorTitle} - ${errorMessage}`);
setChatWindowEnabled(false);
mexui.setInput(true);
errorDialog.messageLabel.text = errorMessage;
@@ -78,7 +77,7 @@ function showErrorGUI(errorMessage, errorTitle, buttonText) {
// ===========================================================================
function closeErrorDialog() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Closing error dialog`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing error dialog`);
errorDialog.window.shown = false;
mexui.setInput(false);
}
diff --git a/scripts/client/gui/games/5cardpoker.js b/scripts/client/gui/games/5cardpoker.js
new file mode 100644
index 00000000..7e64b238
--- /dev/null
+++ b/scripts/client/gui/games/5cardpoker.js
@@ -0,0 +1,39 @@
+// ===========================================================================
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
+// ===========================================================================
+// FILE: 5cardpoker.js
+// DESC: Provides 5-card poker games GUI
+// TYPE: Client (JavaScript)
+// ===========================================================================
+
+let fiveCardPokerGUI = {
+ window: null,
+}
+
+function initFiveCardPokerGUI() {
+ // Render a five card poker game in MexUI
+ //logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating five-card poker GUI ...`);
+ fiveCardPokerGUI.window = mexui.window(game.width / 2 - 200, game.height - 150, 400, 400, 'Five Card Poker', {
+ main: {
+ backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], 0),
+ },
+ title: {
+ textSize: 11.0,
+ textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
+ backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
+ },
+ icon: {
+ textSize: 0.0,
+ textColour: toColour(0, 0, 0, 0),
+ backgroundColour: toColour(0, 0, 0, 0),
+ },
+ });
+ fiveCardPokerGUI.window.titleBarShown = false;
+
+ fiveCardPokerGUI.window.shown = false;
+
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created five card poker GUI`);
+}
+
+// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/gui/games/betting.js b/scripts/client/gui/games/betting.js
index fcfad194..317cae5d 100644
--- a/scripts/client/gui/games/betting.js
+++ b/scripts/client/gui/games/betting.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: betting.js
// DESC: Provides betting GUI (used for multiple casino games)
diff --git a/scripts/client/gui/games/blackjack.js b/scripts/client/gui/games/blackjack.js
index c4bc9a5b..aa975ad5 100644
--- a/scripts/client/gui/games/blackjack.js
+++ b/scripts/client/gui/games/blackjack.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: blackjack.js
// DESC: Provides blackjack game GUI
@@ -23,7 +22,7 @@ let dealerCards = [];
function initBlackJackGUI() {
// Render a blackjack game in MexUI
- //logToConsole(LOG_DEBUG, `[VRR.GUI] Creating blackjack GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating blackjack GUI ...`);
blackJackGUI.window = mexui.window(game.width / 2 - 200, game.height - 150, 400, 400, 'Blackjack', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], 0),
@@ -43,7 +42,7 @@ function initBlackJackGUI() {
blackJackGUI.window.shown = false;
- //logToConsole(LOG_DEBUG, `[VRR.GUI] Created blackjack GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created blackjack GUI`);
}
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/gui/housemgr.js b/scripts/client/gui/housemgr.js
index 1c421d6e..52fa037e 100644
--- a/scripts/client/gui/housemgr.js
+++ b/scripts/client/gui/housemgr.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: housemgr.js
// DESC: Provides house manager GUI
diff --git a/scripts/client/gui/info.js b/scripts/client/gui/info.js
index 3845de36..c6d1d4ad 100644
--- a/scripts/client/gui/info.js
+++ b/scripts/client/gui/info.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: info.js
// DESC: Provides info dialog box GUI
@@ -17,7 +16,7 @@ let infoDialog = {
// ===========================================================================
function initInfoDialogGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Creating info dialog GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating info dialog GUI ...`);
infoDialog.window = mexui.window(getScreenWidth() / 2 - 200, getScreenHeight() / 2 - 70, 400, 140, 'Information', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -58,13 +57,13 @@ function initInfoDialogGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
}, closeInfoDialog);
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created info dialog GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created info dialog GUI`);
}
// ===========================================================================
function closeInfoDialog() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Closing info dialog`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing info dialog`);
infoDialog.window.shown = false;
mexui.setInput(false);
}
@@ -73,7 +72,7 @@ function closeInfoDialog() {
function showInfoGUI(infoMessage, infoTitle, buttonText) {
closeAllWindows();
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing info dialog window. Info: ${infoTitle} - ${infoMessage}`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing info dialog window. Info: ${infoTitle} - ${infoMessage}`);
mexui.setInput(true);
infoDialog.messageLabel.text = infoMessage;
infoDialog.okayButton.text = buttonText;
diff --git a/scripts/client/gui/inventory.js b/scripts/client/gui/inventory.js
new file mode 100644
index 00000000..bfc78f74
--- /dev/null
+++ b/scripts/client/gui/inventory.js
@@ -0,0 +1,44 @@
+// ===========================================================================
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
+// ===========================================================================
+// FILE: inventory.js
+// DESC: Provides inventory dialog box GUI
+// TYPE: Client (JavaScript)
+// ===========================================================================
+
+let inventoryGUI = [
+ {
+ window: null,
+ },
+ {
+ window: null,
+ },
+];
+
+// ===========================================================================
+
+function initInventoryGUI() {
+
+}
+
+// ===========================================================================
+
+function closeAllInventoryGUI() {
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing all inventory GUI`);
+ for (let i in inventoryGUI) {
+ inventoryGUI[i].window.shown = false;
+ }
+ mexui.setInput(false);
+}
+
+// ===========================================================================
+
+function showInventoryGUI(inventoryIndex, items) {
+ closeAllWindows();
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing inventory window. Index: ${inventoryIndex}`);
+ inventoryGUI[inventoryIndex].window.shown = true;
+ mexui.setInput(true);
+}
+
+// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/gui/inventorybulk.js b/scripts/client/gui/inventorybulk.js
new file mode 100644
index 00000000..97ae538f
--- /dev/null
+++ b/scripts/client/gui/inventorybulk.js
@@ -0,0 +1,44 @@
+// ===========================================================================
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
+// ===========================================================================
+// FILE: inventorybulk.js
+// DESC: Provides bulk inventory box GUI
+// TYPE: Client (JavaScript)
+// ===========================================================================
+
+let inventoryBulkGUI = [
+ {
+ window: null,
+ },
+ {
+ window: null,
+ },
+];
+
+// ===========================================================================
+
+function initInventoryBulkGUI() {
+
+}
+
+// ===========================================================================
+
+function closeAllInventoryBulkGUI() {
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing all bulk inventory GUI`);
+ for (let i in inventoryBulkGUI) {
+ inventoryBulkGUI[i].window.shown = false;
+ }
+ mexui.setInput(false);
+}
+
+// ===========================================================================
+
+function showInventoryBulkGUI(inventoryIndex, items) {
+ closeAllWindows();
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing bulk inventory window. Index: ${inventoryIndex}`);
+ inventoryBulkGUI[inventoryIndex].window.shown = true;
+ mexui.setInput(true);
+}
+
+// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/gui/list.js b/scripts/client/gui/list.js
index bbf5f1b3..4c48951b 100644
--- a/scripts/client/gui/list.js
+++ b/scripts/client/gui/list.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: list.js
// DESC: Provides simple list GUI
@@ -12,12 +11,14 @@ let listDialog = {
window: null,
messageLabel: null,
listGrid: null,
+
+ listRows: [],
};
// ===========================================================================
function initListGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Creating list dialog GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating list dialog GUI ...`);
listDialog.window = mexui.window(game.width / 2 - 200, game.height / 2 - 70, 400, 500, 'List', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -71,14 +72,14 @@ function initListGUI() {
}
}
});
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created list dialog GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created list dialog GUI`);
}
// ===========================================================================
function showListGUI() {
closeAllWindows();
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing login window`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing list window`);
setChatWindowEnabled(false);
mexui.setInput(true);
listDialog.window.shown = true;
@@ -90,19 +91,56 @@ function showListGUI() {
// ===========================================================================
function checkListDialogSelection() {
+ if (!listDialog.listGrid.activeRow) {
+ return false;
+ }
+ sendNetworkEventToServer("v.rp.list.select", listDialog.listGrid.activeRow.getEntryIndex());
}
// ===========================================================================
function selectPreviousListItem() {
+ if (!listDialog.listGrid.activeRow) {
+ return false;
+ }
+ let activeRowId = listDialog.listGrid.activeRow.getEntryIndex();
+ if (activeRowId <= 1) {
+ listDialog.listGrid.activeRow = 0;
+ } else {
+ listDialog.listGrid.activeRow = listDialog.listRows[activeRowId - 1];
+ }
+
+ //sendNetworkEventToServer("v.rp.list.next", listDialog.listGrid.activeRow.getEntryIndex());
}
// ===========================================================================
function selectNextListItem() {
+ let activeRowId = listDialog.listGrid.activeRow.getEntryIndex();
+ if (activeRowId >= listDialog.listRows.length - 1) {
+ listDialog.listGrid.activeRow = 0;
+ } else {
+ listDialog.listGrid.activeRow = listDialog.listRows[activeRowId + 1];
+ }
+ //sendNetworkEventToServer("v.rp.list.next", listDialog.listGrid.activeRow.getEntryIndex());
+}
+
+// ===========================================================================
+
+function clearListGUI() {
+ listDialog.listGrid.removeAllEntries();
+}
+
+// ===========================================================================
+
+function populateListGUI(listItems) {
+ for (let i in listItems) {
+ let row = listDialog.listGrid.row(listItems[i]);
+ listDialog.listRows.push(row);
+ }
}
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/gui/localechooser.js b/scripts/client/gui/localechooser.js
index b80980b3..ab9f0e64 100644
--- a/scripts/client/gui/localechooser.js
+++ b/scripts/client/gui/localechooser.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: localechooser.js
// DESC: Provides locale chooser GUI
@@ -20,7 +19,7 @@ let flagImageGap = toVector2(5, 5);
// ===========================================================================
function initLocaleChooserGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Creating locale chooser GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating locale chooser GUI ...`);
localeChooser.window = mexui.window(game.width / 2 - 200, game.height - 150, 60, 60, 'Choose a language', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], 0),
@@ -40,15 +39,13 @@ function initLocaleChooserGUI() {
localeChooser.window.shown = false;
- loadLocaleConfig();
-
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created locale chooser GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created locale chooser GUI`);
}
// ===========================================================================
function closeLocaleChooserGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Closing locale chooser window`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing locale chooser window`);
localeChooser.window.shown = false;
for (let i in localeChooser.flagImages) {
localeChooser.flagImages[i].shown = false;
@@ -59,9 +56,6 @@ function closeLocaleChooserGUI() {
// ===========================================================================
function showLocaleChooserGUI(position = toVector2(0.0, 0.0)) {
- // Disabled for now until image loading crash can be fixed
- return false;
-
if (position.x != 0.0 && position.y != 0.0) {
localeChooser.window.position = position;
} else {
@@ -69,7 +63,7 @@ function showLocaleChooserGUI(position = toVector2(0.0, 0.0)) {
}
//closeAllWindows();
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing locale chooser window`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing locale chooser window`);
mexui.setInput(true);
localeChooser.window.shown = true;
@@ -81,7 +75,7 @@ function showLocaleChooserGUI(position = toVector2(0.0, 0.0)) {
// ===========================================================================
function toggleLocaleChooserGUI() {
- if (localeChooser.window.shown) {
+ if (localeChooser.window.shown == true) {
closeLocaleChooserGUI();
} else {
showLocaleChooserGUI();
@@ -91,14 +85,14 @@ function toggleLocaleChooserGUI() {
// ===========================================================================
function localeChooserSetLocale(localeId) {
- logToConsole(LOG_DEBUG | LOG_WARN, `[VRR.GUI] Asking server to change locale to ${localeId}`);
+ logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.GUI] Asking server to change locale to ${localeId}`);
sendLocaleSelectToServer(localeId);
}
// ===========================================================================
function resetLocaleChooserOptions() {
- logToConsole(LOG_DEBUG | LOG_WARN, `[VRR.GUI] Resetting locale chooser options`);
+ logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.GUI] Resetting locale chooser options`);
// let tempLocaleOptions = getServerData().localeOptions; // getAvailableLocaleOptions();
let tempLocaleOptions = getAvailableLocaleOptions();
@@ -122,7 +116,7 @@ function resetLocaleChooserOptions() {
localeChooser.flagImages[i].shown = false;
- logToConsole(LOG_DEBUG | LOG_WARN, `[VRR.GUI] Created locale chooser option ${tempLocaleOptions[i].englishName} with image ${imagePath}`);
+ logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.GUI] Created locale chooser option ${tempLocaleOptions[i].englishName} with image ${imagePath}`);
//localeChooser.activeRingImages.push(activeRingImage);
}
diff --git a/scripts/client/gui/login.js b/scripts/client/gui/login.js
index e739f5af..2cf4b885 100644
--- a/scripts/client/gui/login.js
+++ b/scripts/client/gui/login.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: login.js
// DESC: Provides login GUI
@@ -43,7 +42,7 @@ let loginHTML =
// ===========================================================================
function initLoginGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Creating login GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating login GUI ...`);
login.window = mexui.window(getScreenWidth() / 2 - 150, getScreenHeight() / 2 - 135, 300, 275, 'LOGIN', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -109,7 +108,7 @@ function initLoginGUI() {
login.loginButton = login.window.button(20, 205, 260, 30, 'LOGIN', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
- textColour: toColour(0, 0, 0, 255),
+ textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 12.0,
textFont: mainFont,
textAlign: 0.5,
@@ -122,7 +121,7 @@ function initLoginGUI() {
login.forgotPasswordButton = login.window.button(180, 240, 100, 15, 'RESET PASS', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
- textColour: toColour(0, 0, 0, 255),
+ textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 8.0,
textFont: mainFont,
textAlign: 0.5,
@@ -144,14 +143,14 @@ function initLoginGUI() {
},
});
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created login GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created login GUI`);
}
// ===========================================================================
function showLoginGUI() {
closeAllWindows();
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing login window`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing login window`);
setChatWindowEnabled(false);
mexui.setInput(true);
login.window.shown = true;
@@ -165,14 +164,14 @@ function showLoginGUI() {
// ===========================================================================
function checkLogin() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Checking login with server ...`);
- sendNetworkEventToServer("agrp.checkLogin", login.passwordInput.lines[0]);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking login with server ...`);
+ sendNetworkEventToServer("v.rp.checkLogin", login.passwordInput.lines[0]);
}
// ===========================================================================
function loginFailed(errorMessage) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports login failed`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports login failed`);
login.messageLabel.text = errorMessage;
login.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
login.passwordInput.text = "";
@@ -181,7 +180,7 @@ function loginFailed(errorMessage) {
// ===========================================================================
function loginSuccess() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports login was successful`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports login was successful`);
guiSubmitKey = false;
closeAllWindows();
}
@@ -190,9 +189,9 @@ function loginSuccess() {
function switchToPasswordResetGUI() {
//closeAllWindows();
- //logToConsole(LOG_DEBUG, `[VRR.GUI] Showing password reset dialog window`);
+ //logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing password reset dialog window`);
//showResetPasswordGUI();
- sendNetworkEventToServer("agrp.checkResetPassword", "");
+ sendNetworkEventToServer("v.rp.checkResetPassword", "");
return false;
}
diff --git a/scripts/client/gui/newchar.js b/scripts/client/gui/newchar.js
index 6fbc75ed..e39b1b98 100644
--- a/scripts/client/gui/newchar.js
+++ b/scripts/client/gui/newchar.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: newchar.js
// DESC: Provides new character creation GUI
@@ -20,7 +19,7 @@ let newCharacter = {
// ===========================================================================
function initNewCharacterGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Creating new character GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating new character GUI ...`);
newCharacter.window = mexui.window(getScreenWidth() / 2 - 130, getScreenHeight() / 2 - 115, 300, 230, 'NEW CHARACTER', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -111,13 +110,13 @@ function initNewCharacterGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkNewCharacter);
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created new character GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created new character GUI`);
}
// ===========================================================================
function newCharacterFailed(errorMessage) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports new character creation failed. Reason: ${errorMessage}`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports new character creation failed. Reason: ${errorMessage}`);
newCharacter.messageLabel.text = errorMessage;
newCharacter.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
newCharacter.firstNameInput.text = "";
@@ -135,7 +134,7 @@ function newCharacterFailed(errorMessage) {
// ===========================================================================
function checkNewCharacter() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Checking new character with server ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking new character with server ...`);
if (newCharacter.firstNameInput.lines[0].length < 2) {
return false;
}
@@ -144,7 +143,7 @@ function checkNewCharacter() {
return false;
}
- sendNetworkEventToServer("agrp.checkNewCharacter",
+ sendNetworkEventToServer("v.rp.checkNewCharacter",
newCharacter.firstNameInput.lines[0],
newCharacter.lastNameInput.lines[0],
);
@@ -153,7 +152,7 @@ function checkNewCharacter() {
// ===========================================================================
function showNewCharacterGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing new character window`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing new character window`);
closeAllWindows();
setChatWindowEnabled(false);
mexui.setInput(true);
diff --git a/scripts/client/gui/register.js b/scripts/client/gui/register.js
index 7208bdc2..ce3e448f 100644
--- a/scripts/client/gui/register.js
+++ b/scripts/client/gui/register.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: register.js
// DESC: Provides account registration GUI
@@ -21,7 +20,7 @@ let register = {
// ===========================================================================
function initRegisterGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Creating register GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating register GUI ...`);
register.window = mexui.window(getScreenWidth() / 2 - 150, getScreenHeight() / 2 - 150, 300, 300, 'Register', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -131,13 +130,13 @@ function initRegisterGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkRegistration);
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created register GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created register GUI`);
}
// ===========================================================================
function registrationFailed(errorMessage) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports registration failed. Reason: ${errorMessage}`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports registration failed. Reason: ${errorMessage}`);
register.messageLabel.text = errorMessage;
register.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
register.passwordInput.text = "";
@@ -148,14 +147,14 @@ function registrationFailed(errorMessage) {
// ===========================================================================
function checkRegistration() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Checking registration with server ...`);
- sendNetworkEventToServer("agrp.checkRegistration", register.passwordInput.lines[0], register.confirmPasswordInput.lines[0], register.emailInput.lines[0]);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking registration with server ...`);
+ sendNetworkEventToServer("v.rp.checkRegistration", register.passwordInput.lines[0], register.confirmPasswordInput.lines[0], register.emailInput.lines[0]);
}
// ===========================================================================
function showRegistrationGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing registration window`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing registration window`);
closeAllWindows();
setChatWindowEnabled(false);
mexui.setInput(true);
@@ -171,7 +170,7 @@ function showRegistrationGUI() {
// ===========================================================================
function registrationSuccess() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports registration was successful`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports registration was successful`);
guiSubmitKey = false;
closeAllWindows();
}
diff --git a/scripts/client/gui/resetpass.js b/scripts/client/gui/resetpass.js
index 148f1b30..3b6cf59f 100644
--- a/scripts/client/gui/resetpass.js
+++ b/scripts/client/gui/resetpass.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: resetpass.js
// DESC: Provides password reset GUI
@@ -21,7 +20,7 @@ let passwordReset = {
// ===========================================================================
function initResetPasswordGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Creating password reset GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating password reset GUI ...`);
passwordReset.window = mexui.window(getScreenWidth() / 2 - 150, getScreenHeight() / 2 - 135, 300, 275, 'RESET PASSWORD', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -121,14 +120,14 @@ function initResetPasswordGUI() {
},
});
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created password reset GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created password reset GUI`);
}
// ===========================================================================
function showResetPasswordGUI() {
closeAllWindows();
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing password reset window`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing password reset window`);
setChatWindowEnabled(false);
mexui.setInput(true);
passwordReset.window.shown = true;
@@ -142,14 +141,14 @@ function showResetPasswordGUI() {
// ===========================================================================
function checkResetPassword() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Checking password reset with server (${passwordReset.emailInput.lines[0]}) ...`);
- sendNetworkEventToServer("agrp.checkResetPassword", passwordReset.emailInput.lines[0]);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking password reset with server (${passwordReset.emailInput.lines[0]}) ...`);
+ sendNetworkEventToServer("v.rp.checkResetPassword", passwordReset.emailInput.lines[0]);
}
// ===========================================================================
function resetPasswordFailed(errorMessage) {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports password reset failed`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports password reset failed`);
passwordReset.messageLabel.text = errorMessage;
passwordReset.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
passwordReset.emailInput.text = "";
@@ -158,7 +157,7 @@ function resetPasswordFailed(errorMessage) {
// ===========================================================================
function resetPasswordCodeInputGUI() {
- logToConsole(LOG_DEBUG | LOG_WARN, `[VRR.GUI] Server reports password reset email confirmation was successful. Asking for code ...`);
+ logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.GUI] Server reports password reset email confirmation was successful. Asking for code ...`);
closeAllWindows();
passwordReset.messageLabel.text = getLocaleString("GUIResetPasswordCodeInputLabel");
@@ -173,7 +172,7 @@ function resetPasswordCodeInputGUI() {
// ===========================================================================
function resetPasswordEmailInputGUI() {
- logToConsole(LOG_DEBUG | LOG_WARN, `[VRR.GUI] Server reports password reset request was approved. Asking for email ...`);
+ logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.GUI] Server reports password reset request was approved. Asking for email ...`);
closeAllWindows();
passwordReset.messageLabel.text = getLocaleString("GUIResetPasswordConfirmEmailLabel");
diff --git a/scripts/client/gui/yesno.js b/scripts/client/gui/yesno.js
index 554fb094..7eeaeebe 100644
--- a/scripts/client/gui/yesno.js
+++ b/scripts/client/gui/yesno.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: yesno.js
// DESC: Provides yes/no prompt dialog GUI
@@ -19,7 +18,7 @@ let yesNoDialog = {
// ===========================================================================
function initYesNoDialogGUI() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created prompt GUI ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created prompt GUI ...`);
yesNoDialog.window = mexui.window(game.width / 2 - 200, game.height / 2 - 70, 400, 140, 'Question', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -74,14 +73,14 @@ function initYesNoDialogGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
}, yesNoDialogAnswerNo);
- logToConsole(LOG_DEBUG, `[VRR.GUI] Created prompt GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Created prompt GUI`);
}
// ===========================================================================
function showYesNoPromptGUI(promptMessage, promptTitle, yesButtonText, noButtonText) {
closeAllWindows();
- logToConsole(LOG_DEBUG, `[VRR.GUI] Showing prompt window. Prompt: ${promptTitle} - ${promptMessage}`);
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing prompt window. Prompt: ${promptTitle} - ${promptMessage}`);
mexui.setInput(true);
yesNoDialog.messageLabel.text = "";
@@ -100,16 +99,16 @@ function showYesNoPromptGUI(promptMessage, promptTitle, yesButtonText, noButtonT
// ===========================================================================
function yesNoDialogAnswerNo() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Responding with answer NO to server prompt`);
- sendNetworkEventToServer("agrp.promptAnswerNo");
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Responding with answer NO to server prompt`);
+ sendNetworkEventToServer("v.rp.promptAnswerNo");
closeAllWindows();
}
// ===========================================================================
function yesNoDialogAnswerYes() {
- logToConsole(LOG_DEBUG, `[VRR.GUI] Responding with answer YES to server prompt`);
- sendNetworkEventToServer("agrp.promptAnswerYes");
+ logToConsole(LOG_DEBUG, `[AGRP.GUI] Responding with answer YES to server prompt`);
+ sendNetworkEventToServer("v.rp.promptAnswerYes");
closeAllWindows();
}
diff --git a/scripts/client/house.js b/scripts/client/house.js
index 26a7df8c..c444d9c8 100644
--- a/scripts/client/house.js
+++ b/scripts/client/house.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: house.js
// DESC: Provides house functions and usage
@@ -17,16 +16,19 @@ class HouseData {
this.blipModel = blipModel;
this.pickupModel = pickupModel;
this.hasInterior = hasInterior;
+ this.rentPrice = 0;
+ this.buyPrice = 0;
this.blipId = -1;
+ this.locked = false;
}
}
// ===========================================================================
-function receiveHouseFromServer(houseId, description, entrancePosition, blipModel, pickupModel, hasInterior) {
- logToConsole(LOG_DEBUG, `[VRR.House] Received house ${houseId} (${name}) from server`);
+function receiveHouseFromServer(houseId, description, entrancePosition, blipModel, pickupModel, buyPrice, rentPrice, hasInterior, locked) {
+ logToConsole(LOG_DEBUG, `[AGRP.House] Received house ${houseId} (${name}) from server`);
- if (!areServerElementsSupported()) {
+ if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE || getGame() == V_GAME_GTA_IV) {
if (getHouseData(houseId) != false) {
let houseData = getHouseData(houseId);
houseData.description = description;
@@ -34,24 +36,37 @@ function receiveHouseFromServer(houseId, description, entrancePosition, blipMode
houseData.blipModel = blipModel;
houseData.pickupModel = pickupModel;
houseData.hasInterior = hasInterior;
+ houseData.buyPrice = buyPrice;
+ houseData.rentPrice = rentPrice;
+ houseData.locked = locked;
- logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId} already exists. Checking blip ...`);
+ if (houseData.buyPrice > 0) {
+ houseData.labelInfoType = V_PROPLABEL_INFO_BUYHOUSE;
+ } else {
+ if (houseData.rentPrice > 0) {
+ houseData.labelInfoType = V_PROPLABEL_INFO_RENTHOUSE;
+ } else {
+ houseData.labelInfoType = V_PROPLABEL_INFO_ENTER;
+ }
+ }
+
+ logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId} already exists. Checking blip ...`);
if (blipModel == -1) {
if (houseData.blipId != -1) {
- logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId}'s blip has been removed by the server`);
- if (getGame() == AGRP_GAME_GTA_IV) {
+ logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId}'s blip has been removed by the server`);
+ if (getGame() == V_GAME_GTA_IV) {
natives.removeBlipAndClearIndex(getHouseData(houseId).blipId);
} else {
destroyElement(getElementFromId(blipId));
}
houseData.blipId = -1;
} else {
- logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId}'s blip is unchanged`);
+ logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId}'s blip is unchanged`);
}
} else {
if (houseData.blipId != -1) {
- logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId}'s blip has been changed by the server`);
- if (getGame() == AGRP_GAME_GTA_IV) {
+ logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId}'s blip has been changed by the server`);
+ if (getGame() == V_GAME_GTA_IV) {
natives.setBlipCoordinates(houseData.blipId, houseData.entrancePosition);
natives.changeBlipSprite(houseData.blipId, houseData.blipModel);
natives.setBlipMarkerLongDistance(houseData.blipId, false);
@@ -63,20 +78,20 @@ function receiveHouseFromServer(houseId, description, entrancePosition, blipMode
if (blipId != -1) {
houseData.blipId = blipId;
}
- logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
+ logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
}
}
} else {
- logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId} doesn't exist. Adding ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId} doesn't exist. Adding ...`);
let tempHouseData = new HouseData(houseId, description, entrancePosition, blipModel, pickupModel, hasInterior);
if (blipModel != -1) {
let blipId = createGameBlip(tempHouseData.blipModel, tempHouseData.entrancePosition, "House");
if (blipId != -1) {
tempHouseData.blipId = blipId;
}
- logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
+ logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
} else {
- logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId} has no blip.`);
+ logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId} has no blip.`);
}
getServerData().houses.push(tempHouseData);
setAllHouseDataIndexes();
diff --git a/scripts/client/item.js b/scripts/client/item.js
index 750f2fca..8b5d07fa 100644
--- a/scripts/client/item.js
+++ b/scripts/client/item.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: item.js
// DESC: Provides item action and hotbar functions
@@ -17,8 +16,8 @@ let itemActionDelaySize = toVector2(200, 5);
// ===========================================================================
function initItemScript() {
- logToConsole(LOG_DEBUG, "[VRR.Item]: Initializing item script ...");
- logToConsole(LOG_DEBUG, "[VRR.Item]: Item script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.Item]: Initializing item script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Item]: Item script initialized!");
}
// ===========================================================================
@@ -48,7 +47,7 @@ function processItemActionRendering() {
// ===========================================================================
function updatePlayerHotBar(activeSlot, itemsArray) {
- logToConsole(LOG_DEBUG, `[VRR.Main] Updating hotbar`);
+ logToConsole(LOG_DEBUG, `[AGRP.Main] Updating hotbar`);
}
// ===========================================================================
diff --git a/scripts/client/job.js b/scripts/client/job.js
index 2877bc06..5932c441 100644
--- a/scripts/client/job.js
+++ b/scripts/client/job.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: job.js
// DESC: Provides job functions and usage
@@ -36,31 +35,31 @@ class JobData {
// ===========================================================================
function initJobScript() {
- logToConsole(LOG_DEBUG, "[VRR.Job]: Initializing job script ...");
- logToConsole(LOG_DEBUG, "[VRR.Job]: Job script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.Job]: Initializing job script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Job]: Job script initialized!");
}
// ===========================================================================
function setLocalPlayerJobType(tempJobType) {
- logToConsole(LOG_DEBUG, `[VRR.Job] Set local player job type to ${tempJobType}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Set local player job type to ${tempJobType}`);
localPlayerJobType = tempJobType;
}
// ===========================================================================
function setLocalPlayerWorkingState(tempWorking) {
- logToConsole(LOG_DEBUG, `[VRR.Job] Setting working state to ${tempWorking}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Setting working state to ${tempWorking}`);
localPlayerWorking = tempWorking;
}
// ===========================================================================
function showJobRouteLocation(position, colour) {
- logToConsole(LOG_DEBUG, `[VRR.Job] Showing job route location at ${position.x}, ${position.y}, ${position.z}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Showing job route location at ${position.x}, ${position.y}, ${position.z}`);
hideJobRouteLocation();
- if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
- if (getGame() == AGRP_GAME_GTA_SA) {
+ if (getMultiplayerMod() == V_MPMOD_GTAC) {
+ if (getGame() == V_GAME_GTA_SA) {
// Server-side spheres don't show in GTA SA for some reason.
jobRouteLocationSphere = game.createPickup(1318, position, 1);
} else {
@@ -81,7 +80,7 @@ function showJobRouteLocation(position, colour) {
// ===========================================================================
function enteredJobRouteSphere() {
- logToConsole(LOG_DEBUG, `[VRR.Job] Entered job route sphere`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Entered job route sphere`);
hideJobRouteLocation();
tellServerPlayerArrivedAtJobRouteLocation();
}
@@ -115,7 +114,7 @@ function blinkJobRouteLocationBlip(times, position, colour) {
// ===========================================================================
function hideJobRouteLocation() {
- logToConsole(LOG_DEBUG, `[VRR.Job] Hiding job route location`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Hiding job route location`);
if (jobRouteLocationBlip != null) {
destroyElement(jobRouteLocationBlip);
@@ -138,9 +137,9 @@ function hideJobRouteLocation() {
// ===========================================================================
function receiveJobFromServer(jobId, jobLocationId, name, position, blipModel, pickupModel) {
- logToConsole(LOG_DEBUG, `[VRR.Job] Received job ${jobId} (${name}) from server`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Received job ${jobId} (${name}) from server`);
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE || getGame() == V_GAME_GTA_IV) {
if (getJobData(jobId) != false) {
let jobData = getJobData(jobId);
jobData.jobLocationId = jobLocationId;
@@ -149,23 +148,23 @@ function receiveJobFromServer(jobId, jobLocationId, name, position, blipModel, p
jobData.blipModel = blipModel;
jobData.pickupModel = pickupModel;
- logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId} already exists. Checking blip ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId} already exists. Checking blip ...`);
if (blipModel == -1) {
if (jobData.blipId != -1) {
- logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId}'s blip has been removed by the server`);
- if (getGame() == AGRP_GAME_GTA_IV) {
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId}'s blip has been removed by the server`);
+ if (getGame() == V_GAME_GTA_IV) {
natives.removeBlipAndClearIndex(getJobData(jobId).blipId);
} else {
destroyElement(getElementFromId(blipId));
}
jobData.blipId = -1;
} else {
- logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId}'s blip is unchanged`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId}'s blip is unchanged`);
}
} else {
if (jobData.blipId != -1) {
- logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId}'s blip has been changed by the server`);
- if (getGame() == AGRP_GAME_GTA_IV) {
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId}'s blip has been changed by the server`);
+ if (getGame() == V_GAME_GTA_IV) {
natives.setBlipCoordinates(jobData.blipId, jobData.position);
natives.changeBlipSprite(jobData.blipId, jobData.blipModel);
natives.setBlipMarkerLongDistance(jobData.blipId, false);
@@ -177,20 +176,20 @@ function receiveJobFromServer(jobId, jobLocationId, name, position, blipModel, p
if (blipId != -1) {
jobData.blipId = blipId;
}
- logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
}
}
} else {
- logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId} doesn't exist. Adding ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId} doesn't exist. Adding ...`);
let tempJobData = new JobData(jobId, jobLocationId, name, position, blipModel, pickupModel);
if (blipModel != -1) {
let blipId = createGameBlip(blipModel, tempJobData.position, tempJobData.name);
if (blipId != -1) {
tempJobData.blipId = blipId;
}
- logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
} else {
- logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId} has no blip.`);
+ logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId} has no blip.`);
}
getServerData().jobs.push(tempJobData);
setAllJobDataIndexes();
diff --git a/scripts/client/keybind.js b/scripts/client/keybind.js
index 751759b8..29be6d32 100644
--- a/scripts/client/keybind.js
+++ b/scripts/client/keybind.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: keybind.js
// DESC: Provides keybind features
@@ -17,14 +16,14 @@ let keyBindLongHoldDuration = 1500;
// ===========================================================================
function initKeyBindScript() {
- logToConsole(LOG_DEBUG, "[VRR.KeyBind]: Initializing key bind script ...");
- logToConsole(LOG_DEBUG, "[VRR.KeyBind]: Key bind script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.KeyBind]: Initializing key bind script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.KeyBind]: Key bind script initialized!");
}
// ===========================================================================
function bindAccountKey(key, keyState) {
- logToConsole(LOG_DEBUG, `[VRR.KeyBind]: Binded key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
+ logToConsole(LOG_DEBUG, `[AGRP.KeyBind]: Binded key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
keyBinds.push(toInteger(key));
bindKey(toInteger(key), keyState, function (event) {
if (isAnyGUIActive()) {
@@ -33,14 +32,14 @@ function bindAccountKey(key, keyState) {
if (hasKeyBindDelayElapsed()) {
if (canLocalPlayerUseKeyBinds()) {
- logToConsole(LOG_DEBUG, `[VRR.KeyBind]: Using keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
+ logToConsole(LOG_DEBUG, `[AGRP.KeyBind]: Using keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
lastKeyBindUse = sdl.ticks;
tellServerPlayerUsedKeyBind(key);
} else {
- logToConsole(LOG_DEBUG, `[VRR.KeyBind]: Failed to use keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key}) - Not allowed to use keybinds!`);
+ logToConsole(LOG_DEBUG, `[AGRP.KeyBind]: Failed to use keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key}) - Not allowed to use keybinds!`);
}
} else {
- logToConsole(LOG_DEBUG, `[VRR.KeyBind]: Failed to use keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key}) - Not enough time has passed since last keybind use!`);
+ logToConsole(LOG_DEBUG, `[AGRP.KeyBind]: Failed to use keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key}) - Not enough time has passed since last keybind use!`);
}
});
}
@@ -48,7 +47,7 @@ function bindAccountKey(key, keyState) {
// ===========================================================================
function unBindAccountKey(key) {
- logToConsole(LOG_DEBUG, `[VRR.KeyBind]: Unbinded key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
+ logToConsole(LOG_DEBUG, `[AGRP.KeyBind]: Unbinded key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
unbindKey(key);
keyBinds.splice(keyBinds.indexOf(key), 1);
return true;
diff --git a/scripts/client/label.js b/scripts/client/label.js
index 8c1c8884..582ec825 100644
--- a/scripts/client/label.js
+++ b/scripts/client/label.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: labels.js
// DESC: Provides functionality for world labels (3D labels)
@@ -14,7 +13,12 @@ let jobLabels = [];
let propertyLabelNameFont = null;
let propertyLabelLockedFont = null;
-let propertyLabelHeight = 1.0;
+let propertyLabelHeight = (getGame() == V_GAME_MAFIA_ONE) ? 2.0 : 1.0;
+let propertyPickupRenderDistance = 75.0;
+let propertyLabelRenderDistance = 5.0;
+let propertyLabelLockedOffset = 16;
+let propertyLabelNameOffset = 20;
+let propertyLabelPriceOffset = 16;
let jobNameLabelFont = null;
let jobHelpLabelFont = null;
@@ -23,21 +27,15 @@ let unlockedColour = toColour(50, 205, 50, 255);
let lockedColour = toColour(205, 92, 92, 255);
let jobHelpColour = toColour(234, 198, 126, 255);
-let renderLabelDistance = 7.5;
-
-let propertyLabelLockedOffset = 16;
-let propertyLabelNameOffset = 18;
-let propertyLabelPriceOffset = 16;
-
// ===========================================================================
function initLabelScript() {
- logToConsole(LOG_DEBUG, "[VRR.Label]: Initializing label script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Label]: Initializing label script ...");
propertyLabelNameFont = initLabelPropertyNameFont();
propertyLabelLockedFont = initLabelPropertyLockedFont();
jobNameLabelFont = initLabelJobNameFont();
jobHelpLabelFont = initLabelJobHelpFont();
- logToConsole(LOG_DEBUG, "[VRR.Label]: Label script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.Label]: Label script initialized!");
}
// ===========================================================================
@@ -66,7 +64,7 @@ function initLabelJobHelpFont() {
// ===========================================================================
-function renderPropertyEntranceLabel(name, position, locked, isBusiness, price, rentPrice, labelInfoType) {
+function renderPropertyEntranceLabel(name, position, locked, isBusiness, price, rentPrice, labelInfoType, fee) {
if (localPlayer == null) {
return false;
}
@@ -79,34 +77,35 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
return false;
}
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
if (!natives.doesViewportExist(natives.getGameViewportId())) {
- logToConsole(LOG_INFO, "[VRR.Label]: Game viewport does not exist!");
+ logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport does not exist!");
return false;
}
if (!natives.isViewportActive(natives.getGameViewportId())) {
- logToConsole(LOG_INFO, "[VRR.Label]: Game viewport is not active!");
+ logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport is not active!");
return false;
}
}
- let tempPosition = position;
- tempPosition.z = tempPosition.z + propertyLabelHeight;
+ position = getPosAbovePos(position, propertyLabelHeight);
let screenPosition = new Vec3(0.0, 0.0, 0.0);
- if (getGame() == AGRP_GAME_GTA_IV) {
- screenPosition = natives.getViewportPositionOfCoord(tempPosition, natives.getGameViewportId());
+ if (getGame() == V_GAME_GTA_IV) {
+ screenPosition = natives.getViewportPositionOfCoord(position, natives.getGameViewportId());
} else {
- screenPosition = getScreenFromWorldPosition(tempPosition);
+ screenPosition = getScreenFromWorldPosition(position);
}
+ logToConsole(LOG_VERBOSE, `[AGRP.Label] World [${position.x}, ${position.y}, ${position.z}] to screen [${screenPosition.x}, ${screenPosition.y}, ${screenPosition.z}]`);
+
if (screenPosition.x < 0 || screenPosition.x > game.width) {
return false;
}
let text = "";
- if (price > "0") {
- text = getLocaleString("PropertyForSaleLabel", price);
+ if (toInteger(price) > 0) {
+ text = getLocaleString("PropertyForSaleLabel", getCurrencyString(price));
let size = propertyLabelLockedFont.measure(text, game.width, 0.0, 0.0, propertyLabelLockedFont.size, true, true);
propertyLabelLockedFont.render(text, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, toColour(200, 200, 200, 255), false, true, false, true);
@@ -114,8 +113,17 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
}
text = "";
- if (rentPrice != "0") {
- text = getLocaleString("PropertyForRentLabel", rentPrice);
+ if (toInteger(rentPrice) > 0) {
+ text = getLocaleString("PropertyForRentLabel", getCurrencyString(rentPrice));
+ let size = propertyLabelLockedFont.measure(text, game.width, 0.0, 0.0, propertyLabelLockedFont.size, true, true);
+ propertyLabelLockedFont.render(text, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, toColour(200, 200, 200, 255), false, true, false, true);
+
+ screenPosition.y -= propertyLabelPriceOffset;
+ }
+
+ text = "";
+ if (toInteger(fee) > 0) {
+ text = getLocaleString("PropertyEntranceFeeLabel", getCurrencyString(fee));
let size = propertyLabelLockedFont.measure(text, game.width, 0.0, 0.0, propertyLabelLockedFont.size, true, true);
propertyLabelLockedFont.render(text, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, toColour(200, 200, 200, 255), false, true, false, true);
@@ -128,10 +136,10 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
text = (locked) ? toUpperCase(getLocaleString("Locked")) : toUpperCase(getLocaleString("Unlocked"));
}
- if (!locked && labelInfoType != AGRP_PROPLABEL_INFO_NONE) {
+ if (!locked && labelInfoType != V_PROPLABEL_INFO_NONE) {
let infoText = "";
switch (labelInfoType) {
- case AGRP_PROPLABEL_INFO_ENTER: {
+ case V_PROPLABEL_INFO_ENTER: {
if (enterPropertyKey) {
infoText = getLocaleString("PropertyEnterKeyPressLabel", toUpperCase(getKeyNameFromId(enterPropertyKey)));
} else {
@@ -140,27 +148,27 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
break;
}
- case AGRP_PROPLABEL_INFO_BUY: {
+ case V_PROPLABEL_INFO_BUY: {
infoText = getLocaleString("BusinessBuyItemsLabel", "/buy");
break;
}
- case AGRP_PROPLABEL_INFO_BUYBIZ: {
+ case V_PROPLABEL_INFO_BUYBIZ: {
infoText = getLocaleString("BuyBusinessLabel", "/bizbuy");
break;
}
- case AGRP_PROPLABEL_INFO_BUYHOUSE: {
+ case V_PROPLABEL_INFO_BUYHOUSE: {
infoText = getLocaleString("BuyHouseLabel", "/housebuy");
break;
}
- case AGRP_PROPLABEL_INFO_RENTHOUSE: {
+ case V_PROPLABEL_INFO_RENTHOUSE: {
infoText = getLocaleString("RentHouseLabel", "/houserent");
break;
}
- case AGRP_PROPLABEL_INFO_ENTERVEHICLE: {
+ case V_PROPLABEL_INFO_ENTERVEHICLE: {
infoText = getLocaleString("VehicleDealershipLabel");
break;
}
@@ -174,7 +182,7 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
break;
}
}
- if (getDistance(localPlayer.position, position) <= renderLabelDistance - 2) {
+ if (getDistance(localPlayer.position, position) <= propertyLabelRenderDistance - 2) {
let size = propertyLabelLockedFont.measure(infoText, game.width, 0.0, 0.0, propertyLabelLockedFont.size, true, true);
propertyLabelLockedFont.render(infoText, [screenPosition.x - size[0] / 2, screenPosition.y - size[1] / 2], game.width, 0.0, 0.0, propertyLabelLockedFont.size, toColour(234, 198, 126, 255), false, true, false, true);
screenPosition.y -= propertyLabelLockedOffset;
@@ -210,14 +218,14 @@ function renderPropertyExitLabel(position) {
return false;
}
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
if (!natives.doesViewportExist(natives.getGameViewportId())) {
- logToConsole(LOG_INFO, "[VRR.Label]: Game viewport does not exist!");
+ logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport does not exist!");
return false;
}
if (!natives.isViewportActive(natives.getGameViewportId())) {
- logToConsole(LOG_INFO, "[VRR.Label]: Game viewport is not active!");
+ logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport is not active!");
return false;
}
}
@@ -225,7 +233,7 @@ function renderPropertyExitLabel(position) {
let tempPosition = position;
tempPosition.z = tempPosition.z + propertyLabelHeight;
let screenPosition = new Vec3(0.0, 0.0, 0.0);
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
screenPosition = natives.getViewportPositionOfCoord(tempPosition, natives.getGameViewportId());
} else {
screenPosition = getScreenFromWorldPosition(tempPosition);
@@ -255,14 +263,14 @@ function renderJobLabel(name, position, jobType) {
return false;
}
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
if (!natives.doesViewportExist(natives.getGameViewportId())) {
- logToConsole(LOG_INFO, "[VRR.Label]: Game viewport does not exist!");
+ logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport does not exist!");
return false;
}
if (!natives.isViewportActive(natives.getGameViewportId())) {
- logToConsole(LOG_INFO, "[VRR.Label]: Game viewport is not active!");
+ logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport is not active!");
return false;
}
}
@@ -270,7 +278,7 @@ function renderJobLabel(name, position, jobType) {
let tempPosition = position;
tempPosition.z = tempPosition.z + propertyLabelHeight;
let screenPosition = new Vec3(0.0, 0.0, 0.0);
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
screenPosition = natives.getViewportPositionOfCoord(tempPosition, natives.getGameViewportId());
} else {
screenPosition = getScreenFromWorldPosition(tempPosition);
@@ -309,26 +317,41 @@ function renderJobLabel(name, position, jobType) {
function processLabelRendering() {
if (renderLabels) {
- if (!areServerElementsSupported()) {
+ if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE) {
if (localPlayer != null) {
getServerData().businesses.forEach((business) => {
- if (getDistance(localPlayer.position, business.entrancePosition) <= 75.0) {
- natives.drawColouredCylinder(getPosBelowPos(business.entrancePosition, 1.0), 0.0, 0.0, 0, 153, 255, 255);
- //renderPropertyEntranceLabel(business.name, business.entrancePosition, business.locked, true, makeLargeNumberReadable(business.price), makeLargeNumberReadable(business.rentPrice), business.labelInfoType);
+ if (getDistance(localPlayer.position, business.entrancePosition) <= propertyPickupRenderDistance) {
+ if (getGame() == V_GAME_GTA_IV || getGame() == V_GAME_GTA_IV_EFLC) {
+ natives.drawColouredCylinder(getPosBelowPos(business.entrancePosition, 1.0), 0.0, 0.0, 0, 153, 255, 255);
+ }
+
+ if (getDistance(localPlayer.position, business.entrancePosition) <= propertyLabelRenderDistance) {
+ renderPropertyEntranceLabel(business.name, business.entrancePosition, business.locked, true, business.buyPrice, business.rentPrice, business.labelInfoType, business.entranceFee);
+ }
}
});
getServerData().houses.forEach((house) => {
- if (getDistance(localPlayer.position, house.entrancePosition) <= 75.0) {
- natives.drawColouredCylinder(getPosBelowPos(house.entrancePosition, 1.0), 0.0, 0.0, 0, 200, 0, 255);
- //renderPropertyEntranceLabel("House", house.entrancePosition, house.locked, true, makeLargeNumberReadable(house.price), makeLargeNumberReadable(house.rentPrice), 0);
+ if (getDistance(localPlayer.position, house.entrancePosition) <= propertyPickupRenderDistance) {
+ if (getGame() == V_GAME_GTA_IV || getGame() == V_GAME_GTA_IV_EFLC) {
+ natives.drawColouredCylinder(getPosBelowPos(house.entrancePosition, 1.0), 0.0, 0.0, 0, 200, 0, 255);
+ }
+
+ if (getDistance(localPlayer.position, house.entrancePosition) <= propertyLabelRenderDistance) {
+ renderPropertyEntranceLabel(house.description, house.entrancePosition, house.locked, true, house.buyPrice, house.rentPrice, house.labelInfoType);
+ }
}
});
getServerData().jobs.forEach((job) => {
- if (getDistance(localPlayer.position, job.position) <= 75.0) {
- natives.drawColouredCylinder(getPosBelowPos(job.position, 1.0), 0.0, 0.0, 255, 255, 0, 255);
- //renderJobLabel(job.name, job.position, job.jobType);
+ if (getDistance(localPlayer.position, job.position) <= propertyPickupRenderDistance) {
+ if (getGame() == V_GAME_GTA_IV || getGame() == V_GAME_GTA_IV_EFLC) {
+ natives.drawColouredCylinder(getPosBelowPos(job.position, 1.0), 0.0, 0.0, 255, 255, 0, 255);
+ }
+ }
+
+ if (getDistance(localPlayer.position, job.position) <= 5.0) {
+ renderJobLabel(job.name, job.position, job.jobType);
}
});
}
@@ -338,41 +361,47 @@ function processLabelRendering() {
if (localPlayer != null) {
let pickups = getElementsByType(ELEMENT_PICKUP);
for (let i in pickups) {
- if (pickups[i].getData("agrp.label.type") != null) {
- if (getDistance(localPlayer.position, pickups[i].position) <= renderLabelDistance) {
+ if (pickups[i].getData("v.rp.label.type") != null) {
+ if (getDistance(localPlayer.position, pickups[i].position) <= propertyLabelRenderDistance) {
if (!pickups[i].isOnScreen) {
let price = "0";
let rentPrice = "0";
- let labelInfoType = AGRP_PROPLABEL_INFO_NONE;
- if (pickups[i].getData("agrp.label.price") != null) {
- price = makeLargeNumberReadable(pickups[i].getData("agrp.label.price"));
+ let fee = "0";
+
+ let labelInfoType = V_PROPLABEL_INFO_NONE;
+ if (pickups[i].getData("v.rp.label.price") != null) {
+ price = pickups[i].getData("v.rp.label.price");
}
- if (pickups[i].getData("agrp.label.rentprice") != null) {
- rentPrice = makeLargeNumberReadable(pickups[i].getData("agrp.label.rentprice"));
+ if (pickups[i].getData("v.rp.label.rentprice") != null) {
+ rentPrice = pickups[i].getData("v.rp.label.rentprice");
}
- if (pickups[i].getData("agrp.label.help") != null) {
- labelInfoType = pickups[i].getData("agrp.label.help");
+ if (pickups[i].getData("v.rp.label.help") != null) {
+ labelInfoType = pickups[i].getData("v.rp.label.help");
}
- switch (pickups[i].getData("agrp.label.type")) {
- case AGRP_LABEL_BUSINESS: {
- renderPropertyEntranceLabel(pickups[i].getData("agrp.label.name"), pickups[i].position, pickups[i].getData("agrp.label.locked"), true, price, rentPrice, labelInfoType);
+ if (pickups[i].getData("v.rp.label.fee") != null) {
+ fee = pickups[i].getData("v.rp.label.fee");
+ }
+
+ switch (pickups[i].getData("v.rp.label.type")) {
+ case V_LABEL_BUSINESS: {
+ renderPropertyEntranceLabel(pickups[i].getData("v.rp.label.name"), pickups[i].position, pickups[i].getData("v.rp.label.locked"), true, price, rentPrice, labelInfoType, fee);
break;
}
- case AGRP_LABEL_HOUSE: {
- renderPropertyEntranceLabel(pickups[i].getData("agrp.label.name"), pickups[i].position, pickups[i].getData("agrp.label.locked"), false, price, rentPrice, labelInfoType);
+ case V_LABEL_HOUSE: {
+ renderPropertyEntranceLabel(pickups[i].getData("v.rp.label.name"), pickups[i].position, pickups[i].getData("v.rp.label.locked"), false, price, rentPrice, labelInfoType);
break;
}
- case AGRP_LABEL_JOB: {
- renderJobLabel(pickups[i].getData("agrp.label.name"), pickups[i].position, pickups[i].getData("agrp.label.jobType"));
+ case V_LABEL_JOB: {
+ renderJobLabel(pickups[i].getData("v.rp.label.name"), pickups[i].position, pickups[i].getData("v.rp.label.jobType"));
break;
}
- case AGRP_LABEL_EXIT: {
+ case V_LABEL_EXIT: {
renderPropertyExitLabel(pickups[i].position);
break;
}
diff --git a/scripts/client/locale.js b/scripts/client/locale.js
index 9166f443..e314ecd5 100644
--- a/scripts/client/locale.js
+++ b/scripts/client/locale.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: locale.js
// DESC: Provides locale functions and usage
@@ -38,7 +37,7 @@ function loadLocaleConfig() {
let configFile = loadTextFile("config/client/locale.json");
getServerData().localeOptions = JSON.parse(configFile);
- resetLocaleChooserOptions();
+ //resetLocaleChooserOptions();
loadAllLocaleStrings();
}
@@ -47,11 +46,12 @@ function loadLocaleConfig() {
function loadAllLocaleStrings() {
let localeOptions = getServerData().localeOptions;
for (let i in localeOptions) {
- logToConsole(LOG_INFO, `[VRR.Locale] Loading locale strings for ${localeOptions[i].englishName} (${i})`);
- let localeFile = loadTextFile(`locale/${localeOptions[i].stringsFile}`);
- let localeData = JSON.parse(localeFile);
+ logToConsole(LOG_INFO, `[AGRP.Locale] Loading locale strings for ${localeOptions[i].englishName} (${i})`);
+ let localeStringFile = loadTextFile(`locale/${localeOptions[i].stringsFile}`);
+ let localeStringData = JSON.parse(localeStringFile);
- getServerData().localeStrings[i] = localeData;
+ let localeId = localeOptions[i].id;
+ getServerData().localeStrings[localeId] = localeStringData;
}
resetGUIStrings();
@@ -60,7 +60,7 @@ function loadAllLocaleStrings() {
// ===========================================================================
function setLocale(tempLocaleId) {
- logToConsole(LOG_DEBUG, `[VRR.Locale] Setting locale to ${tempLocaleId} (${getServerData().localeOptions[tempLocaleId].englishName})`);
+ logToConsole(LOG_DEBUG, `[AGRP.Locale] Setting locale to ${tempLocaleId} (${getServerData().localeOptions[tempLocaleId].englishName})`);
localLocaleId = tempLocaleId;
resetGUIStrings();
}
\ No newline at end of file
diff --git a/scripts/client/logo.js b/scripts/client/logo.js
index 33eb812e..fffc47b6 100644
--- a/scripts/client/logo.js
+++ b/scripts/client/logo.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: logo.js
// DESC: Provides logo rendering functions
@@ -15,14 +14,18 @@ let logoSize = toVector2(128, 128);
// ===========================================================================
function initLogoScript() {
- logToConsole(LOG_DEBUG, "[VRR.Logo]: Initializing logo script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Logo]: Initializing logo script ...");
//logoImage = loadLogoImage();
- logToConsole(LOG_DEBUG, "[VRR.Logo]: Logo script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.Logo]: Logo script initialized!");
}
// ===========================================================================
function loadLogoImage() {
+ //if (getGame() == V_GAME_MAFIA_ONE) {
+ // return false;
+ //}
+
let logoStream = openFile(mainLogoPath);
let tempLogoImage = null;
if (logoStream != null) {
@@ -36,6 +39,10 @@ function loadLogoImage() {
// ===========================================================================
function processLogoRendering() {
+ if (getGame() == V_GAME_MAFIA_ONE) {
+ return false;
+ }
+
if (renderLogo) {
if (logoImage != null) {
graphics.drawRectangle(logoImage, logoPos, logoSize);
@@ -46,7 +53,7 @@ function processLogoRendering() {
// ===========================================================================
function setServerLogoRenderState(state) {
- logToConsole(LOG_DEBUG, `[VRR.Main] Server logo ${(state) ? "enabled" : "disabled"}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Main] Server logo ${(state) ? "enabled" : "disabled"}`);
renderLogo = state;
}
diff --git a/scripts/client/messaging.js b/scripts/client/messaging.js
index 4b614cb9..73371669 100644
--- a/scripts/client/messaging.js
+++ b/scripts/client/messaging.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: messaging.js
// DESC: Provides messaging/textdraw functions and usage
@@ -23,10 +22,10 @@ let smallGameMessageTimer = null;
// ===========================================================================
function initMessagingScript() {
- logToConsole(LOG_DEBUG, "[VRR.Messaging]: Initializing messaging script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Messaging]: Initializing messaging script ...");
smallGameMessageFonts = loadSmallGameMessageFonts();
bigGameMessageFonts = loadSmallGameMessageFonts();
- logToConsole(LOG_DEBUG, "[VRR.Messaging]: Messaging script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.Messaging]: Messaging script initialized!");
}
// ===========================================================================
@@ -39,6 +38,12 @@ function loadSmallGameMessageFonts() {
fontStream.close();
}
+ fontStream = openFile("files/fonts/aurora-bold-condensed.ttf");
+ if (fontStream != null) {
+ tempSmallGameMessageFonts["AuroraBdCnBT"] = lucasFont.createFont(fontStream, 20.0);
+ fontStream.close();
+ }
+
tempSmallGameMessageFonts["Roboto"] = lucasFont.createDefaultFont(20.0, "Roboto");
tempSmallGameMessageFonts["RobotoLight"] = lucasFont.createDefaultFont(20.0, "Roboto", "Light");
@@ -55,6 +60,12 @@ function loadBigGameMessageFont() {
fontStream.close();
}
+ fontStream = openFile("files/fonts/aurora-bold-condensed.ttf");
+ if (fontStream != null) {
+ tempBigGameMessageFonts["AuroraBdCnBT"] = lucasFont.createFont(fontStream, 20.0);
+ fontStream.close();
+ }
+
tempBigGameMessageFonts["Roboto"] = lucasFont.createDefaultFont(28.0, "Roboto");
tempBigGameMessageFonts["RobotoLight"] = lucasFont.createDefaultFont(28.0, "Roboto", "Light");
@@ -64,10 +75,10 @@ function loadBigGameMessageFont() {
// ===========================================================================
function processSmallGameMessageRendering() {
- logToConsole(LOG_VERBOSE, "[VRR.Messaging]: Processing small game message rendering ...");
+ logToConsole(LOG_VERBOSE, "[AGRP.Messaging]: Processing small game message rendering ...");
if (renderSmallGameMessage) {
if (smallGameMessageText != "") {
- logToConsole(LOG_VERBOSE, `[VRR.Messaging]: Rendering small game message: ${smallGameMessageText}`);
+ logToConsole(LOG_VERBOSE, `[AGRP.Messaging]: Rendering small game message: ${smallGameMessageText}`);
if (smallGameMessageFonts[smallGameMessageFontName] != null) {
smallGameMessageFonts[smallGameMessageFontName].render(smallGameMessageText, [0, game.height - 90], game.width, 0.5, 0.0, smallGameMessageFonts[smallGameMessageFontName].size, smallGameMessageColour, true, true, false, true);
}
@@ -78,7 +89,7 @@ function processSmallGameMessageRendering() {
// ===========================================================================
function showSmallGameMessage(text, colour, duration, fontName) {
- logToConsole(LOG_DEBUG, `[VRR.Messaging] Showing small game message '${text}' using font ${fontName} for ${duration}ms`);
+ logToConsole(LOG_DEBUG, `[AGRP.Messaging] Showing small game message '${text}' using font ${fontName} for ${duration}ms`);
if (smallGameMessageText != "") {
clearTimeout(smallGameMessageTimer);
}
diff --git a/scripts/client/mousecam.js b/scripts/client/mousecam.js
index 08889376..bfd6fa2b 100644
--- a/scripts/client/mousecam.js
+++ b/scripts/client/mousecam.js
@@ -12,34 +12,29 @@
// CREDITS TO LUCASC190 FOR MAKING THE MOUSE CAMERA
// WALKING CODE ADDED BY VORTREX
-function SetStandardControlsEnabled(bEnabled)
-{
- if(typeof gta == "undefined") {
+function SetStandardControlsEnabled(bEnabled) {
+ if (typeof gta == "undefined") {
return false;
}
- if (game.standardControls === undefined)
- {
+ if (game.standardControls === undefined) {
logToConsole(LOG_WARN, "game.standardControls not implemented");
return;
}
game.standardControls = bEnabled;
}
-function GetCurrentPlayerIndex()
-{
+function GetCurrentPlayerIndex() {
return 0;
}
-function GetPlayerPed(uiIndex)
-{
+function GetPlayerPed(uiIndex) {
if (uiIndex >= 1)
throw new Error("player index out of range");
return localPlayer;
}
-function GetPedVehicle(pPed)
-{
+function GetPedVehicle(pPed) {
return pPed.vehicle;
}
@@ -49,8 +44,7 @@ let ENTITYTYPE_PED = 3;
let ENTITYTYPE_OBJECT = 4;
let ENTITYTYPE_DUMMY = 5;
-function GetEntityType(Entity)
-{
+function GetEntityType(Entity) {
if (Entity.isType(ELEMENT_BUILDING))
return ENTITYTYPE_BUILDING;
if (Entity.isType(ELEMENT_VEHICLE))
@@ -64,79 +58,66 @@ function GetEntityType(Entity)
return undefined;
}
-function GetPlaceableMatrix(pPlaceable)
-{
+function GetPlaceableMatrix(pPlaceable) {
if (pPlaceable == GetCamera())
return game.cameraMatrix;
return pPlaceable.matrix;
}
-function GetEntityModel(pEntity)
-{
+function GetEntityModel(pEntity) {
return pEntity;
}
-function GetModelBoundingSphere(usModel)
-{
+function GetModelBoundingSphere(usModel) {
return [usModel.boundingRadius, usModel.boundingCentre.x, usModel.boundingCentre.y, usModel.boundingCentre.z];
}
-function GetMouseSpeed()
-{
+function GetMouseSpeed() {
if (gui.cursorEnabled)
- return [0,0];
+ return [0, 0];
let MouseSpeed = game.getMouseSpeed();
- return [MouseSpeed.x,-MouseSpeed.y];
+ return [MouseSpeed.x, -MouseSpeed.y];
}
-function GetMouseSensitivity()
-{
- if (game.getMouseSensitivity === undefined)
- {
+function GetMouseSensitivity() {
+ if (game.getMouseSensitivity === undefined) {
//logToConsole(LOG_ERROR, "game.getMouseSensitivity not implemented");
- return [0.0025,0.003];
+ return [0.0025, 0.003];
}
let MouseSensitivity = game.getMouseSensitivity();
- return [MouseSensitivity.x,MouseSensitivity.y];
+ return [MouseSensitivity.x, MouseSensitivity.y];
}
let GetCamera;
{
const Camera = Symbol();
- GetCamera = function()
- {
+ GetCamera = function () {
return Camera;
}
}
-function AreEntityCollisionsEnabled(pEntity)
-{
+function AreEntityCollisionsEnabled(pEntity) {
return pEntity.collisionsEnabled;
}
-function SetEntityCollisionsEnabled(pEntity, bCollisionsEnabled)
-{
+function SetEntityCollisionsEnabled(pEntity, bCollisionsEnabled) {
pEntity.collisionsEnabled = bCollisionsEnabled;
}
-function ProcessLineOfSight(vecStartX, vecStartY, vecStartZ, vecEndX, vecEndY, vecEndZ, bCheckBuildings, bCheckVehicles, bCheckPeds, bCheckObjects, bCheckDummies, bCheckSeeThroughStuff, bIgnoreSomeObjectsForCamera)
-{
- if (game.processLineOfSight === undefined)
- {
+function ProcessLineOfSight(vecStartX, vecStartY, vecStartZ, vecEndX, vecEndY, vecEndZ, bCheckBuildings, bCheckVehicles, bCheckPeds, bCheckObjects, bCheckDummies, bCheckSeeThroughStuff, bIgnoreSomeObjectsForCamera) {
+ if (game.processLineOfSight === undefined) {
logToConsole(LOG_WARN, "game.processLineOfSight not implemented");
return [null];
}
let Result = game.processLineOfSight([vecStartX, vecStartY, vecStartZ], [vecEndX, vecEndY, vecEndZ], bCheckBuildings, bCheckVehicles, bCheckPeds, bCheckObjects, bCheckDummies, bCheckSeeThroughStuff, bIgnoreSomeObjectsForCamera);
if (Result == null)
return [null];
- return [Result.position.x, Result.position.y ,Result.position.z, Result.normal.x, Result.normal.y ,Result.normal.z, Result.entity];
+ return [Result.position.x, Result.position.y, Result.position.z, Result.normal.x, Result.normal.y, Result.normal.z, Result.entity];
}
-function SetPlaceableMatrix(pPlaceable, mat)
-{
- if (pPlaceable == GetCamera())
- {
+function SetPlaceableMatrix(pPlaceable, mat) {
+ if (pPlaceable == GetCamera()) {
game.setCameraMatrix(mat);
return;
}
@@ -149,20 +130,17 @@ let GetTickCount;
{
let FrameCount = 0;
- setInterval(() =>
- {
+ setInterval(() => {
++FrameCount;
}, 0);
let GTAFrameCount = 0;
- addEventHandler("OnProcess", (event, deltaTime) =>
- {
+ addEventHandler("OnProcess", (event, deltaTime) => {
++GTAFrameCount;
});
- GetTickCount = function(bGTA, bFrames)
- {
+ GetTickCount = function (bGTA, bFrames) {
if (bFrames)
return bGTA ? GTAFrameCount : FrameCount;
else
@@ -170,16 +148,16 @@ let GetTickCount;
}
}
-function easingSinusoidalInOut(t,b,c,d)//TODO: Move this to MathUtil.js
+function easingSinusoidalInOut(t, b, c, d)//TODO: Move this to MathUtil.js
{
- return -c/2 * (Math.cos((Math.PI)*t/d) - 1) + b;
+ return -c / 2 * (Math.cos((Math.PI) * t / d) - 1) + b;
}
//TODO: extract
-function applyMultiplierTimeStep(m,t)//TODO: Move this to MathUtil.js
+function applyMultiplierTimeStep(m, t)//TODO: Move this to MathUtil.js
{
- return Math.max(Math.min(1.0-(1.0-m)*(t),1),0);
+ return Math.max(Math.min(1.0 - (1.0 - m) * (t), 1), 0);
}
//TODO: getOffset
@@ -192,8 +170,7 @@ function applyMultiplierTimeStep(m,t)//TODO: Move this to MathUtil.js
//TODO: confirm
const identityMatrix = new Matrix4x4();
-if (identityMatrix.setIdentity === undefined)
-{
+if (identityMatrix.setIdentity === undefined) {
identityMatrix.m11 = 1;
identityMatrix.m12 = 0;
identityMatrix.m13 = 0;
@@ -230,72 +207,62 @@ cameraIdentityMatrix.m42 = 0;
cameraIdentityMatrix.m43 = 0;
cameraIdentityMatrix.m44 = 1;
-function createMultipliedMatrix()
-{
+function createMultipliedMatrix() {
let matrix = new Matrix4x4();
matrix.setMultiply.apply(matrix, arguments);
return matrix;
}
-function createXRotationMatrix(x)
-{
+function createXRotationMatrix(x) {
let matrix = new Matrix4x4();
matrix.setRotateX(x);
return matrix;
}
-function createYRotationMatrix(x)
-{
+function createYRotationMatrix(x) {
let matrix = new Matrix4x4();
matrix.setRotateY(x);
return matrix;
}
-function createZRotationMatrix(z)
-{
+function createZRotationMatrix(z) {
let matrix = new Matrix4x4();
matrix.setRotateZ(z);
return matrix;
}
-function createTranslationMatrix(x,y,z)
-{
+function createTranslationMatrix(x, y, z) {
let matrix = new Matrix4x4();
- matrix.setTranslate([x,y,z]);
+ matrix.setTranslate([x, y, z]);
return matrix;
}
//TODO: createScaleMatrix
-function getDotProduct(x,y,z,x2,y2,z2)
-{
- return x*x2 + y*y2 + z*z2;
+function getDotProduct(x, y, z, x2, y2, z2) {
+ return x * x2 + y * y2 + z * z2;
}
-function getCrossProduct(x,y,z,x2,y2,z2)
-{
- return [y*z2-z*y2, z*x2-x*z2, x*y2-y*x2];
+function getCrossProduct(x, y, z, x2, y2, z2) {
+ return [y * z2 - z * y2, z * x2 - x * z2, x * y2 - y * x2];
}
-function getLength(x,y,z)
-{
- return Math.sqrt(getDotProduct(x,y,z,x,y,z));
+function getLength(x, y, z) {
+ return Math.sqrt(getDotProduct(x, y, z, x, y, z));
}
-function normalise(x,y,z)
-{
- let length = getLength(x,y,z);
+function normalise(x, y, z) {
+ let length = getLength(x, y, z);
if (length == 0)
throw new Error("an attempt was made to normalise a three dimensional vector with a length of zero");
- return [x/length, y/length, z/length];
+ return [x / length, y / length, z / length];
}
-function createLookAtLHMatrix(eyeX, eyeY, eyeZ, atX, atY, atZ, upX,upY,upZ)
-{
+function createLookAtLHMatrix(eyeX, eyeY, eyeZ, atX, atY, atZ, upX, upY, upZ) {
let matrix = new Matrix4x4();
- let [lookX, lookY, lookZ] = normalise(atX-eyeX,atY-eyeY,atZ-eyeZ);
- let [rightX, rightY, rightZ] = normalise.apply(null,getCrossProduct(upX,upY,upZ,lookX, lookY, lookZ));
- [upX,upY,upZ] = getCrossProduct(lookX, lookY, lookZ,rightX, rightY, rightZ);
+ let [lookX, lookY, lookZ] = normalise(atX - eyeX, atY - eyeY, atZ - eyeZ);
+ let [rightX, rightY, rightZ] = normalise.apply(null, getCrossProduct(upX, upY, upZ, lookX, lookY, lookZ));
+ [upX, upY, upZ] = getCrossProduct(lookX, lookY, lookZ, rightX, rightY, rightZ);
matrix.m11 = rightX;
matrix.m12 = rightY;
matrix.m13 = rightZ;
@@ -323,10 +290,9 @@ function createLookAtLHMatrix(eyeX, eyeY, eyeZ, atX, atY, atZ, upX,upY,upZ)
return matrix;
}
-function getDifferenceBetweenAngles(current,target)
-{
- let f = (((target-current)+Math.PI)/(Math.PI*2));
- return ((f-Math.floor(f))*(Math.PI*2))-Math.PI;
+function getDifferenceBetweenAngles(current, target) {
+ let f = (((target - current) + Math.PI) / (Math.PI * 2));
+ return ((f - Math.floor(f)) * (Math.PI * 2)) - Math.PI;
}
let easeCamera = false;
@@ -336,46 +302,41 @@ let easeStartPosX, easeStartPosY, easeStartPosZ;
let easeStartLookX, easeStartLookY, easeStartLookZ;
let easeStartUpX, easeStartUpY, easeStartUpZ;
-function getCameraPositionInfo(matrix)
-{
+function getCameraPositionInfo(matrix) {
return [matrix.m41, matrix.m42, matrix.m43, matrix.m21, matrix.m22, matrix.m23, matrix.m31, matrix.m32, matrix.m33];
}
-function startCameraEase()
-{
+function startCameraEase() {
easeCamera = true;
- easeStartTicks = GetTickCount(true,false);
+ easeStartTicks = GetTickCount(true, false);
easeDuration = 1000;
let matrix = GetPlaceableMatrix(GetCamera());
[easeStartPosX, easeStartPosY, easeStartPosZ, easeStartLookX, easeStartLookY, easeStartLookZ, easeStartUpX, easeStartUpY, easeStartUpZ] = getCameraPositionInfo(matrix);
}
-function applyCameraEase(matrix)
-{
+function applyCameraEase(matrix) {
if (!easeCamera)
return matrix;
- let ease = (GetTickCount(true,false)-easeStartTicks)/easeDuration;
- if (ease < 1)
- {
- ease = easingSinusoidalInOut(ease,0,1,1);
+ let ease = (GetTickCount(true, false) - easeStartTicks) / easeDuration;
+ if (ease < 1) {
+ ease = easingSinusoidalInOut(ease, 0, 1, 1);
let [newPosX, newPosY, newPosZ, newLookX, newLookY, newLookZ, newUpX, newUpY, newUpZ] = getCameraPositionInfo(matrix);
- let easePosX = easeStartPosX+(newPosX-easeStartPosX)*ease;
- let easePosY = easeStartPosY+(newPosY-easeStartPosY)*ease;
- let easePosZ = easeStartPosZ+(newPosZ-easeStartPosZ)*ease;
- let easeLookX = easeStartLookX+(newLookX-easeStartLookX)*ease;
- let easeLookY = easeStartLookY+(newLookY-easeStartLookY)*ease;
- let easeLookZ = easeStartLookZ+(newLookZ-easeStartLookZ)*ease;
- let easeUpX = easeStartUpX+(newUpX-easeStartUpX)*ease;
- let easeUpY = easeStartUpY+(newUpY-easeStartUpY)*ease;
- let easeUpZ = easeStartUpZ+(newUpZ-easeStartUpZ)*ease;
- return createLookAtLHMatrix(easePosX,easePosY,easePosZ,easePosX+easeLookX,easePosY+easeLookY,easePosZ+easeLookZ,easeUpX,easeUpY,easeUpZ);
+ let easePosX = easeStartPosX + (newPosX - easeStartPosX) * ease;
+ let easePosY = easeStartPosY + (newPosY - easeStartPosY) * ease;
+ let easePosZ = easeStartPosZ + (newPosZ - easeStartPosZ) * ease;
+ let easeLookX = easeStartLookX + (newLookX - easeStartLookX) * ease;
+ let easeLookY = easeStartLookY + (newLookY - easeStartLookY) * ease;
+ let easeLookZ = easeStartLookZ + (newLookZ - easeStartLookZ) * ease;
+ let easeUpX = easeStartUpX + (newUpX - easeStartUpX) * ease;
+ let easeUpY = easeStartUpY + (newUpY - easeStartUpY) * ease;
+ let easeUpZ = easeStartUpZ + (newUpZ - easeStartUpZ) * ease;
+ return createLookAtLHMatrix(easePosX, easePosY, easePosZ, easePosX + easeLookX, easePosY + easeLookY, easePosZ + easeLookZ, easeUpX, easeUpY, easeUpZ);
}
return matrix;
}
-function isCameraEasing()
-{
- return easeCamera && GetTickCount(true,false) < (easeStartTicks+easeDuration);
+function isCameraEasing() {
+ return easeCamera && GetTickCount(true, false) < (easeStartTicks + easeDuration);
}
let oldCameraTarget = null;
@@ -383,14 +344,12 @@ let OldPosition = null;//2019 Lucas was here!
let cameraRotZ;
let cameraRotY;
-function getCameraTarget()
-{
+function getCameraTarget() {
let playerPed = GetPlayerPed(GetCurrentPlayerIndex());
let vehicle = GetPedVehicle(playerPed);
if (vehicle != null)
return vehicle;
- if (playerPed != null)
- {
+ if (playerPed != null) {
//if (playerPed.health <= 1)//Breaks because of fade//2019 Lucas was here!
// return null;
return playerPed;
@@ -398,59 +357,52 @@ function getCameraTarget()
return null;
}
-function isRelativeToTarget(target)
-{
+function isRelativeToTarget(target) {
if (GetEntityType(target) == ENTITYTYPE_PED)
return false;
return false
}
-function isClipped(target)
-{
+function isClipped(target) {
if (GetEntityType(target) == ENTITYTYPE_PED)
return true;
return true;
}
//2019 Lucas was here!
-function ShouldReturnToRestRotation(Target)
-{
+function ShouldReturnToRestRotation(Target) {
if (GetEntityType(Target) == ENTITYTYPE_PED)
return false;
return true;
}
-function getCameraRestRotation(target)
-{
+function getCameraRestRotation(target) {
let targetMatrix = GetPlaceableMatrix(target);
let rotZ;
if (isRelativeToTarget(target))
rotZ = 0;
else
- rotZ = -Math.atan2(targetMatrix.m21,targetMatrix.m22);
+ rotZ = -Math.atan2(targetMatrix.m21, targetMatrix.m22);
let rotY = -0.2;
return [rotZ, rotY];
}
-function resetCameraRotation()
-{
+function resetCameraRotation() {
[cameraRotZ, cameraRotY] = getCameraRestRotation(getCameraTarget());
}
//2019 Lucas was here!
let DeltaTime = 0;
-addEventHandler("OnProcess", (event, deltaTime) =>
-{
+addEventHandler("OnProcess", (event, deltaTime) => {
DeltaTime = deltaTime;
- if(!localPlayer) {
+ if (!localPlayer) {
return false;
}
});
let IdleTime = 0;//2019 Lucas was here!
-function processReturnToRestRotation()
-{
+function processReturnToRestRotation() {
//resetCameraRotation();//2019 Lucas was here!
//2019 Lucas was here!
@@ -458,37 +410,32 @@ function processReturnToRestRotation()
if (!ShouldReturnToRestRotation(Target))
return;
IdleTime += DeltaTime;
- if (IdleTime > 1.5)
- {
+ if (IdleTime > 1.5) {
let Velocity = Target.velocity;
let Matrix = Target.matrix;
- let Speed = getDotProduct(Velocity.x,Velocity.y,Velocity.z,Matrix.getElement(1*4+0),Matrix.getElement(1*4+1),Matrix.getElement(1*4+2));
+ let Speed = getDotProduct(Velocity.x, Velocity.y, Velocity.z, Matrix.getElement(1 * 4 + 0), Matrix.getElement(1 * 4 + 1), Matrix.getElement(1 * 4 + 2));
let AbsSpeed = Math.abs(Speed);
- let Multiplier = Math.min(AbsSpeed/0.75, 1);
- if (Multiplier != 0)
- {
+ let Multiplier = Math.min(AbsSpeed / 0.75, 1);
+ if (Multiplier != 0) {
let [TargetCameraRotZ2, TargetCameraRotY2] = getCameraRestRotation(Target);
if (Speed < 0)
TargetCameraRotZ2 += Math.PI;
- let TimeStep = game.timeStep/50*60;
- cameraRotZ += getDifferenceBetweenAngles(cameraRotZ,TargetCameraRotZ2)*applyMultiplierTimeStep(1/20,TimeStep)*Multiplier;
- cameraRotY += getDifferenceBetweenAngles(cameraRotY,TargetCameraRotY2)*applyMultiplierTimeStep(1/20,TimeStep)*Multiplier;
+ let TimeStep = game.timeStep / 50 * 60;
+ cameraRotZ += getDifferenceBetweenAngles(cameraRotZ, TargetCameraRotZ2) * applyMultiplierTimeStep(1 / 20, TimeStep) * Multiplier;
+ cameraRotY += getDifferenceBetweenAngles(cameraRotY, TargetCameraRotY2) * applyMultiplierTimeStep(1 / 20, TimeStep) * Multiplier;
}
}
}
-function cancelReturnToRestRotation()
-{
+function cancelReturnToRestRotation() {
IdleTime = 0;//2019 Lucas was here!
}
let distance;
let zIncrease;
-function getCameraOffsetInfo(target)
-{
- if (GetEntityType(target) == ENTITYTYPE_PED)
- {
+function getCameraOffsetInfo(target) {
+ if (GetEntityType(target) == ENTITYTYPE_PED) {
let distance = 4;
let zIncrease = 0.8;
let offsetX = 0;
@@ -507,8 +454,7 @@ function getCameraOffsetInfo(target)
let offsetX;
let offsetY;
let offsetZ;
- if (radius <= 3.0535011291504)
- {
+ if (radius <= 3.0535011291504) {
minDistance = 4;
maxDistance = 8;
minZIncrease = 0.5;
@@ -516,8 +462,7 @@ function getCameraOffsetInfo(target)
minRadius = 2;
maxRadius = 3.0535011291504;
}
- else
- {
+ else {
minDistance = 8;
maxDistance = 16;
minZIncrease = 1;
@@ -528,66 +473,59 @@ function getCameraOffsetInfo(target)
offsetX = 0;
offsetY = 0;
offsetZ = 0;
- distance = minDistance+(radius-minRadius)/(maxRadius-minRadius)*(maxDistance-minDistance);
- zIncrease = minZIncrease+(radius-minRadius)/(maxRadius-minRadius)*(maxZIncrease-minZIncrease);
+ distance = minDistance + (radius - minRadius) / (maxRadius - minRadius) * (maxDistance - minDistance);
+ zIncrease = minZIncrease + (radius - minRadius) / (maxRadius - minRadius) * (maxZIncrease - minZIncrease);
return [distance, zIncrease, offsetX, offsetY, offsetZ];
}
-function update()
-{
+function update() {
let target = getCameraTarget();
- if (target != null)
- {
- if (oldCameraTarget != target)
- {
+ if (target != null) {
+ if (oldCameraTarget != target) {
//if (oldCameraTarget != null)//2019 Lucas was here!
let Position = target.position;
- if (OldPosition == null || getLength(Position.x-OldPosition.x,Position.y-OldPosition.y,Position.z-OldPosition.z) < 10)
+ if (OldPosition == null || getLength(Position.x - OldPosition.x, Position.y - OldPosition.y, Position.z - OldPosition.z) < 10)
startCameraEase()
resetCameraRotation()
}
let [mouseSpeedX, mouseSpeedY] = GetMouseSpeed();
let [mouseSensitivityX, mouseSensitivityY] = GetMouseSensitivity();
- mouseSpeedX = mouseSpeedX*mouseSensitivityX*2;
- mouseSpeedY = mouseSpeedY*mouseSensitivityY*2;
- if (mouseSpeedX == 0 && mouseSpeedY == 0)
- {
+ mouseSpeedX = mouseSpeedX * mouseSensitivityX * 2;
+ mouseSpeedY = mouseSpeedY * mouseSensitivityY * 2;
+ if (mouseSpeedX == 0 && mouseSpeedY == 0) {
processReturnToRestRotation();
}
- else
- {
- cameraRotZ = cameraRotZ-mouseSpeedX;
- cameraRotY = cameraRotY-mouseSpeedY;
+ else {
+ cameraRotZ = cameraRotZ - mouseSpeedX;
+ cameraRotY = cameraRotY - mouseSpeedY;
cancelReturnToRestRotation();
}
- cameraRotY = Math.max(cameraRotY,-Math.PI/2+0.01);
+ cameraRotY = Math.max(cameraRotY, -Math.PI / 2 + 0.01);
if (GetEntityType(target) != ENTITYTYPE_PED)
- cameraRotY = Math.min(cameraRotY,Math.PI/8.5);//2019 Lucas was here!
+ cameraRotY = Math.min(cameraRotY, Math.PI / 8.5);//2019 Lucas was here!
else
- cameraRotY = Math.min(cameraRotY,Math.PI/4);
+ cameraRotY = Math.min(cameraRotY, Math.PI / 4);
let camera = GetCamera();
let targetMatrix = GetPlaceableMatrix(target);
let [distance, zIncrease, offsetX, offsetY, offsetZ] = getCameraOffsetInfo(target);
let offsetTranslationMatrix = createTranslationMatrix(offsetX, offsetY, offsetZ);
- targetMatrix = createMultipliedMatrix(offsetTranslationMatrix,targetMatrix);
+ targetMatrix = createMultipliedMatrix(offsetTranslationMatrix, targetMatrix);
let targetPosX, targetPosY, targetPosZ;
if (isRelativeToTarget(target))
- [targetPosX, targetPosY, targetPosZ] = [0,0,0];
+ [targetPosX, targetPosY, targetPosZ] = [0, 0, 0];
else
- [targetPosX, targetPosY, targetPosZ] = [targetMatrix.m41,targetMatrix.m42,targetMatrix.m43];
- let distanceTranslationMatrix = createTranslationMatrix(0,-distance,0);
- targetPosZ = targetPosZ+zIncrease;
+ [targetPosX, targetPosY, targetPosZ] = [targetMatrix.m41, targetMatrix.m42, targetMatrix.m43];
+ let distanceTranslationMatrix = createTranslationMatrix(0, -distance, 0);
+ targetPosZ = targetPosZ + zIncrease;
let targetTranslationMatrix = createTranslationMatrix(targetPosX, targetPosY, targetPosZ);
let offsetRotationX = createXRotationMatrix(cameraRotY);
let offsetRotationZ = createZRotationMatrix(cameraRotZ);
- let cameraMatrix = createMultipliedMatrix(cameraIdentityMatrix,distanceTranslationMatrix,offsetRotationX,offsetRotationZ,targetTranslationMatrix);
- if (isRelativeToTarget(target))
- {
- cameraMatrix = createMultipliedMatrix(cameraMatrix,targetMatrix);
- targetTranslationMatrix = createMultipliedMatrix(targetTranslationMatrix,targetMatrix);
+ let cameraMatrix = createMultipliedMatrix(cameraIdentityMatrix, distanceTranslationMatrix, offsetRotationX, offsetRotationZ, targetTranslationMatrix);
+ if (isRelativeToTarget(target)) {
+ cameraMatrix = createMultipliedMatrix(cameraMatrix, targetMatrix);
+ targetTranslationMatrix = createMultipliedMatrix(targetTranslationMatrix, targetMatrix);
}
- if (isClipped(target))
- {
+ if (isClipped(target)) {
let startX = targetTranslationMatrix.m41;
let startY = targetTranslationMatrix.m42;
let startZ = targetTranslationMatrix.m43;
@@ -603,17 +541,16 @@ function update()
let ignoreSomeObjectsForCamera = true;
let collisionsEnabled = AreEntityCollisionsEnabled(target);
if (collisionsEnabled)
- SetEntityCollisionsEnabled(target,false);
- let [positionX,positionY,positionZ,normalX,normalY,normalZ,targetEntity] = ProcessLineOfSight(startX,startY,startZ,endX,endY,endZ,checkBuildings,checkVehicles,checkPeds,checkObjects,checkDummies,checkSeeThroughStuff,ignoreSomeObjectsForCamera);
+ SetEntityCollisionsEnabled(target, false);
+ let [positionX, positionY, positionZ, normalX, normalY, normalZ, targetEntity] = ProcessLineOfSight(startX, startY, startZ, endX, endY, endZ, checkBuildings, checkVehicles, checkPeds, checkObjects, checkDummies, checkSeeThroughStuff, ignoreSomeObjectsForCamera);
if (collisionsEnabled)
- SetEntityCollisionsEnabled(target,true);
- if (positionX != null)
- {
+ SetEntityCollisionsEnabled(target, true);
+ if (positionX != null) {
//2019 Lucas was here!
let Distance = 0.3;
- positionX += normalX*Distance;
- positionY += normalY*Distance;
- positionZ += normalZ*Distance;
+ positionX += normalX * Distance;
+ positionY += normalY * Distance;
+ positionZ += normalZ * Distance;
cameraMatrix.m41 = positionX;
cameraMatrix.m42 = positionY;
@@ -622,7 +559,7 @@ function update()
}
if (isCameraEasing())
cameraMatrix = applyCameraEase(cameraMatrix);
- SetPlaceableMatrix(camera,cameraMatrix);
+ SetPlaceableMatrix(camera, cameraMatrix);
UpdateCamera(camera);
}
oldCameraTarget = target;
@@ -630,9 +567,8 @@ function update()
return target != null;
}
-addEventHandler("OnCameraProcess", (event) =>
-{
- if(mouseCameraEnabled) {
+addEventHandler("OnCameraProcess", (event) => {
+ if (mouseCameraEnabled) {
update();
event.preventDefault();
}
diff --git a/scripts/client/nametag.js b/scripts/client/nametag.js
index c90f0fc1..04964621 100644
--- a/scripts/client/nametag.js
+++ b/scripts/client/nametag.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: nametags.js
// DESC: Provides nametag rendering
@@ -23,10 +22,10 @@ let playerPing = {};
// ===========================================================================
function initNameTagScript() {
- logToConsole(LOG_DEBUG, "[VRR.NameTag]: Initializing nametag script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.NameTag]: Initializing nametag script ...");
nametagFont = loadNameTagFont();
afkStatusFont = loadPausedStatusFont();
- logToConsole(LOG_DEBUG, "[VRR.NameTag]: Nametag script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.NameTag]: Nametag script initialized!");
}
// ===========================================================================
@@ -53,7 +52,7 @@ function updatePlayerNameTag(clientName, characterName, colour, paused, ping) {
playerPaused[clientName] = paused;
playerPing[clientName] = ping;
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
let client = getPlayerFromParams(clientName);
if (client != false) {
if (getPlayerPed(client) != null) {
@@ -85,8 +84,8 @@ function drawNametag(x, y, health, armour, text, ping, alpha, distance, colour,
// -------------------------------------------
// Health Bar
- if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
- if (getGame() == AGRP_GAME_GTA_III) {
+ if (getMultiplayerMod() == V_MPMOD_GTAC) {
+ if (getGame() == V_GAME_GTA_III) {
// Mickey Hamfists is ridiculously tall. Raise the nametag for him a bit
if (skin == 109) {
y -= 20;
diff --git a/scripts/client/native/connected.js b/scripts/client/native/connected.js
index aa352e94..4b805aa9 100644
--- a/scripts/client/native/connected.js
+++ b/scripts/client/native/connected.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: connected.js
// DESC: Provides wrapped natives for GTA Connected and Mafia Connected mods
@@ -38,7 +37,7 @@ function getPlayerPosition() {
// ===========================================================================
function setPlayerPosition(position) {
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
natives.setCharCoordinates(localPlayer, position);
} else {
localPlayer.position = position;
@@ -188,7 +187,7 @@ function getVehiclesInRange(position, range) {
// ===========================================================================
function createGameBlip(blipModel, position, name = "") {
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
let blipId = natives.addBlipForCoord(position);
if (blipId) {
natives.changeBlipSprite(blipId, blipModel);
@@ -213,6 +212,7 @@ function setEntityData(entity, dataName, dataValue, syncToClients = true) {
// ===========================================================================
function setVehicleEngine(vehicleId, state) {
+ //getElementFromId(vehicleId).netFlags.sendSync = state;
getElementFromId(vehicleId).engine = state;
}
@@ -231,50 +231,50 @@ function repairVehicle(syncId) {
// ===========================================================================
function syncVehicleProperties(vehicle) {
- if (doesEntityDataExist(vehicle, "agrp.lights")) {
- let lightStatus = getEntityData(vehicle, "agrp.lights");
+ if (doesEntityDataExist(vehicle, "v.rp.lights")) {
+ let lightStatus = getEntityData(vehicle, "v.rp.lights");
vehicle.lights = lightStatus;
}
- if (doesEntityDataExist(vehicle, "agrp.invincible")) {
- let invincible = getEntityData(vehicle, "agrp.invincible");
+ if (doesEntityDataExist(vehicle, "v.rp.invincible")) {
+ let invincible = getEntityData(vehicle, "v.rp.invincible");
element.setProofs(invincible, invincible, invincible, invincible, invincible);
}
- if (doesEntityDataExist(vehicle, "agrp.panelStatus")) {
- let panelsStatus = getEntityData(vehicle, "agrp.panelStatus");
+ if (doesEntityDataExist(vehicle, "v.rp.panelStatus")) {
+ let panelsStatus = getEntityData(vehicle, "v.rp.panelStatus");
for (let i in panelsStatus) {
vehicle.setPanelStatus(i, panelsStatus[i]);
}
}
- if (doesEntityDataExist(vehicle, "agrp.wheelStatus")) {
- let wheelsStatus = getEntityData(vehicle, "agrp.wheelStatus");
+ if (doesEntityDataExist(vehicle, "v.rp.wheelStatus")) {
+ let wheelsStatus = getEntityData(vehicle, "v.rp.wheelStatus");
for (let i in wheelsStatus) {
vehicle.setWheelStatus(i, wheelsStatus[i]);
}
}
- if (doesEntityDataExist(vehicle, "agrp.lightStatus")) {
- let lightStatus = getEntityData(vehicle, "agrp.lightStatus");
+ if (doesEntityDataExist(vehicle, "v.rp.lightStatus")) {
+ let lightStatus = getEntityData(vehicle, "v.rp.lightStatus");
for (let i in lightStatus) {
vehicle.setLightStatus(i, lightStatus[i]);
}
}
- if (doesEntityDataExist(vehicle, "agrp.suspensionHeight")) {
- let suspensionHeight = getEntityData(vehicle, "agrp.suspensionHeight");
+ if (doesEntityDataExist(vehicle, "v.rp.suspensionHeight")) {
+ let suspensionHeight = getEntityData(vehicle, "v.rp.suspensionHeight");
vehicle.setSuspensionHeight(suspensionHeight);
}
- if (getGame() == AGRP_GAME_GTA_SA) {
+ if (getGame() == V_GAME_GTA_SA) {
let allUpgrades = getGameConfig().vehicleUpgrades[getGame()];
for (let i in allUpgrades) {
vehicle.removeUpgrade(i);
}
- if (doesEntityDataExist(vehicle, "agrp.upgrades")) {
- let upgrades = getEntityData(vehicle, "agrp.upgrades");
+ if (doesEntityDataExist(vehicle, "v.rp.upgrades")) {
+ let upgrades = getEntityData(vehicle, "v.rp.upgrades");
for (let i in upgrades) {
if (upgrades[i] != 0) {
vehicle.addUpgrade(upgrades[i]);
@@ -283,12 +283,12 @@ function syncVehicleProperties(vehicle) {
}
}
- if (getGame() == AGRP_GAME_GTA_SA || getGame() == AGRP_GAME_GTA_IV) {
- if (doesEntityDataExist(vehicle, "agrp.livery")) {
- let livery = getEntityData(vehicle, "agrp.livery");
- if (getGame() == AGRP_GAME_GTA_SA) {
+ if (getGame() == V_GAME_GTA_SA || getGame() == V_GAME_GTA_IV) {
+ if (doesEntityDataExist(vehicle, "v.rp.livery")) {
+ let livery = getEntityData(vehicle, "v.rp.livery");
+ if (getGame() == V_GAME_GTA_SA) {
vehicle.setPaintJob(livery);
- } else if (getGame() == AGRP_GAME_GTA_IV) {
+ } else if (getGame() == V_GAME_GTA_IV) {
vehicle.livery = livery;
}
}
@@ -316,9 +316,9 @@ function doesEntityDataExist(entity, dataName) {
// ===========================================================================
function syncCivilianProperties(civilian) {
- if (getGame() == AGRP_GAME_GTA_III) {
- if (doesEntityDataExist(civilian, "agrp.scale")) {
- let scaleFactor = getEntityData(civilian, "agrp.scale");
+ if (getGame() == V_GAME_GTA_III) {
+ if (doesEntityDataExist(civilian, "v.rp.scale")) {
+ let scaleFactor = getEntityData(civilian, "v.rp.scale");
let tempMatrix = civilian.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = civilian.position;
@@ -328,79 +328,79 @@ function syncCivilianProperties(civilian) {
}
}
- if (getGame() == AGRP_GAME_GTA_SA) {
- if (doesEntityDataExist(civilian, "agrp.fightStyle")) {
- let fightStyle = getEntityData(civilian, "agrp.fightStyle");
+ if (getGame() == V_GAME_GTA_SA) {
+ if (doesEntityDataExist(civilian, "v.rp.fightStyle")) {
+ let fightStyle = getEntityData(civilian, "v.rp.fightStyle");
civilian.setFightStyle(fightStyle[0], fightStyle[1]);
}
}
- if (getGame() == AGRP_GAME_GTA_III) {
- if (doesEntityDataExist(civilian, "agrp.walkStyle")) {
- let walkStyle = getEntityData(civilian, "agrp.walkStyle");
+ if (getGame() == V_GAME_GTA_III) {
+ if (doesEntityDataExist(civilian, "v.rp.walkStyle")) {
+ let walkStyle = getEntityData(civilian, "v.rp.walkStyle");
civilian.walkStyle = walkStyle;
}
}
- if (getGame() == AGRP_GAME_GTA_IV) {
- if (doesEntityDataExist(civilian, "agrp.bodyPropHair")) {
- let bodyPropHair = getEntityData(civilian, "agrp.bodyPropHair");
+ if (getGame() == V_GAME_GTA_IV) {
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropHair")) {
+ let bodyPropHair = getEntityData(civilian, "v.rp.bodyPropHair");
civilian.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropHead")) {
- let bodyPropHead = getEntityData(civilian, "agrp.bodyPropHead");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropHead")) {
+ let bodyPropHead = getEntityData(civilian, "v.rp.bodyPropHead");
civilian.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropEyes")) {
- let bodyPropEyes = getEntityData(civilian, "agrp.bodyPropEyes");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropEyes")) {
+ let bodyPropEyes = getEntityData(civilian, "v.rp.bodyPropEyes");
civilian.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropLeftHand")) {
- let bodyPropLeftHand = getEntityData(civilian, "agrp.bodyPropLeftHand");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftHand")) {
+ let bodyPropLeftHand = getEntityData(civilian, "v.rp.bodyPropLeftHand");
civilian.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropRightHand")) {
- let bodyPropRightHand = getEntityData(civilian, "agrp.bodyPropRightHand");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropRightHand")) {
+ let bodyPropRightHand = getEntityData(civilian, "v.rp.bodyPropRightHand");
civilian.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropLeftWrist")) {
- let bodyPropLeftWrist = getEntityData(civilian, "agrp.bodyPropLeftWrist");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftWrist")) {
+ let bodyPropLeftWrist = getEntityData(civilian, "v.rp.bodyPropLeftWrist");
civilian.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
- let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropRightWrist")) {
+ let bodyPropRightWrist = getEntityData(civilian, "v.rp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
- let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropRightWrist")) {
+ let bodyPropRightWrist = getEntityData(civilian, "v.rp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropHip")) {
- let bodyPropHip = getEntityData(civilian, "agrp.bodyPropHip");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropHip")) {
+ let bodyPropHip = getEntityData(civilian, "v.rp.bodyPropHip");
civilian.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropLeftFoot")) {
- let bodyPropLeftFoot = getEntityData(civilian, "agrp.bodyPropLeftFoot");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftFoot")) {
+ let bodyPropLeftFoot = getEntityData(civilian, "v.rp.bodyPropLeftFoot");
civilian.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropRightFoot")) {
- let bodyPropRightFoot = getEntityData(civilian, "agrp.bodyPropRightFoot");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropRightFoot")) {
+ let bodyPropRightFoot = getEntityData(civilian, "v.rp.bodyPropRightFoot");
civilian.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
}
}
- if (doesEntityDataExist(civilian, "agrp.anim")) {
- let animData = getEntityData(vehicle, "agrp.anim");
+ if (doesEntityDataExist(civilian, "v.rp.anim")) {
+ let animData = getEntityData(vehicle, "v.rp.anim");
civilian.addAnimation(animData[0], animData[1]);
}
}
@@ -414,9 +414,9 @@ function preventDefaultEventAction(event) {
// ===========================================================================
function syncPlayerProperties(player) {
- if (getGame() == AGRP_GAME_GTA_III) {
- if (doesEntityDataExist(player, "agrp.scale")) {
- let scaleFactor = getEntityData(player, "agrp.scale");
+ if (getGame() == V_GAME_GTA_III) {
+ if (doesEntityDataExist(player, "v.rp.scale")) {
+ let scaleFactor = getEntityData(player, "v.rp.scale");
let tempMatrix = player.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = player.position;
@@ -426,95 +426,95 @@ function syncPlayerProperties(player) {
}
}
- if (getGame() == AGRP_GAME_GTA_SA) {
- if (doesEntityDataExist(player, "agrp.fightStyle")) {
- let fightStyle = getEntityData(player, "agrp.fightStyle");
+ if (getGame() == V_GAME_GTA_SA) {
+ if (doesEntityDataExist(player, "v.rp.fightStyle")) {
+ let fightStyle = getEntityData(player, "v.rp.fightStyle");
player.setFightStyle(fightStyle[0], fightStyle[1]);
}
}
- //if(getGame() == AGRP_GAME_GTA_SA) {
- // if(doesEntityDataExist(player, "agrp.walkStyle")) {
- // let walkStyle = getEntityData(player, "agrp.walkStyle");
+ //if(getGame() == V_GAME_GTA_SA) {
+ // if(doesEntityDataExist(player, "v.rp.walkStyle")) {
+ // let walkStyle = getEntityData(player, "v.rp.walkStyle");
// player.walkStyle = walkStyle;
// }
//}
- if (getGame() == AGRP_GAME_GTA_IV) {
- if (doesEntityDataExist(player, "agrp.bodyPartHair")) {
- let bodyPartHead = getEntityData(player, "agrp.bodyPartHair");
+ if (getGame() == V_GAME_GTA_IV) {
+ if (doesEntityDataExist(player, "v.rp.bodyPartHair")) {
+ let bodyPartHead = getEntityData(player, "v.rp.bodyPartHair");
player.changeBodyPart(0, bodyPartHead[0], bodyPartHair[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPartHead")) {
- let bodyPartHead = getEntityData(player, "agrp.bodyPartHead");
+ if (doesEntityDataExist(player, "v.rp.bodyPartHead")) {
+ let bodyPartHead = getEntityData(player, "v.rp.bodyPartHead");
player.changeBodyPart(1, bodyPartHead[0], bodyPartHead[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPartUpper")) {
- let bodyPartUpper = getEntityData(player, "agrp.bodyPartUpper");
+ if (doesEntityDataExist(player, "v.rp.bodyPartUpper")) {
+ let bodyPartUpper = getEntityData(player, "v.rp.bodyPartUpper");
player.changeBodyPart(1, bodyPartUpper[0], bodyPartUpper[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPartLower")) {
- let bodyPartLower = getEntityData(player, "agrp.bodyPartLower");
+ if (doesEntityDataExist(player, "v.rp.bodyPartLower")) {
+ let bodyPartLower = getEntityData(player, "v.rp.bodyPartLower");
player.changeBodyPart(1, bodyPartLower[0], bodyPartLower[1]);
}
}
- if (getGame() == AGRP_GAME_GTA_IV) {
- if (doesEntityDataExist(player, "agrp.bodyPropHair")) {
- let bodyPropHair = getEntityData(player, "agrp.bodyPropHair");
+ if (getGame() == V_GAME_GTA_IV) {
+ if (doesEntityDataExist(player, "v.rp.bodyPropHair")) {
+ let bodyPropHair = getEntityData(player, "v.rp.bodyPropHair");
player.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropHead")) {
- let bodyPropHead = getEntityData(player, "agrp.bodyPropHead");
+ if (doesEntityDataExist(player, "v.rp.bodyPropHead")) {
+ let bodyPropHead = getEntityData(player, "v.rp.bodyPropHead");
player.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropEyes")) {
- let bodyPropEyes = getEntityData(player, "agrp.bodyPropEyes");
+ if (doesEntityDataExist(player, "v.rp.bodyPropEyes")) {
+ let bodyPropEyes = getEntityData(player, "v.rp.bodyPropEyes");
player.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropLeftHand")) {
- let bodyPropLeftHand = getEntityData(player, "agrp.bodyPropLeftHand");
+ if (doesEntityDataExist(player, "v.rp.bodyPropLeftHand")) {
+ let bodyPropLeftHand = getEntityData(player, "v.rp.bodyPropLeftHand");
player.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropRightHand")) {
- let bodyPropRightHand = getEntityData(player, "agrp.bodyPropRightHand");
+ if (doesEntityDataExist(player, "v.rp.bodyPropRightHand")) {
+ let bodyPropRightHand = getEntityData(player, "v.rp.bodyPropRightHand");
player.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropLeftWrist")) {
- let bodyPropLeftWrist = getEntityData(player, "agrp.bodyPropLeftWrist");
+ if (doesEntityDataExist(player, "v.rp.bodyPropLeftWrist")) {
+ let bodyPropLeftWrist = getEntityData(player, "v.rp.bodyPropLeftWrist");
player.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
- let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
+ if (doesEntityDataExist(player, "v.rp.bodyPropRightWrist")) {
+ let bodyPropRightWrist = getEntityData(player, "v.rp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
- let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
+ if (doesEntityDataExist(player, "v.rp.bodyPropRightWrist")) {
+ let bodyPropRightWrist = getEntityData(player, "v.rp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropHip")) {
- let bodyPropHip = getEntityData(player, "agrp.bodyPropHip");
+ if (doesEntityDataExist(player, "v.rp.bodyPropHip")) {
+ let bodyPropHip = getEntityData(player, "v.rp.bodyPropHip");
player.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropLeftFoot")) {
- let bodyPropLeftFoot = getEntityData(player, "agrp.bodyPropLeftFoot");
+ if (doesEntityDataExist(player, "v.rp.bodyPropLeftFoot")) {
+ let bodyPropLeftFoot = getEntityData(player, "v.rp.bodyPropLeftFoot");
player.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropRightFoot")) {
- let bodyPropRightFoot = getEntityData(player, "agrp.bodyPropRightFoot");
+ if (doesEntityDataExist(player, "v.rp.bodyPropRightFoot")) {
+ let bodyPropRightFoot = getEntityData(player, "v.rp.bodyPropRightFoot");
player.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
}
}
@@ -523,9 +523,9 @@ function syncPlayerProperties(player) {
// ===========================================================================
function syncObjectProperties(object) {
- if (getGame() == AGRP_GAME_GTA_III || getGame() == AGRP_GAME_GTA_VC) {
- if (doesEntityDataExist(object, "agrp.scale")) {
- let scaleFactor = getEntityData(object, "agrp.scale");
+ if (getGame() == V_GAME_GTA_III || getGame() == V_GAME_GTA_VC) {
+ if (doesEntityDataExist(object, "v.rp.scale")) {
+ let scaleFactor = getEntityData(object, "v.rp.scale");
let tempMatrix = object.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = object.position;
@@ -575,9 +575,9 @@ function getPlayerId(client) {
// ===========================================================================
function syncElementProperties(element) {
- if (doesEntityDataExist(element, "agrp.interior")) {
+ if (doesEntityDataExist(element, "v.rp.interior")) {
if (typeof element.interior != "undefined") {
- element.interior = getEntityData(element, "agrp.interior");
+ element.interior = getEntityData(element, "v.rp.interior");
}
}
@@ -627,21 +627,21 @@ function getScreenHeight() {
function openAllGarages() {
switch (getGame()) {
- case AGRP_GAME_GTA_III:
+ case V_GAME_GTA_III:
for (let i = 0; i <= 26; i++) {
openGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
}
break;
- case AGRP_GAME_GTA_VC:
+ case V_GAME_GTA_VC:
for (let i = 0; i <= 32; i++) {
openGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
}
break;
- case AGRP_GAME_GTA_SA:
+ case V_GAME_GTA_SA:
for (let i = 0; i <= 44; i++) {
openGarage(i);
}
@@ -656,21 +656,21 @@ function openAllGarages() {
function closeAllGarages() {
switch (getGame()) {
- case AGRP_GAME_GTA_III:
+ case V_GAME_GTA_III:
for (let i = 0; i <= 26; i++) {
closeGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
}
break;
- case AGRP_GAME_GTA_VC:
+ case V_GAME_GTA_VC:
for (let i = 0; i <= 32; i++) {
closeGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
}
break;
- case AGRP_GAME_GTA_SA:
+ case V_GAME_GTA_SA:
for (let i = 0; i <= 44; i++) {
closeGarage(i);
}
@@ -690,7 +690,7 @@ function setPedInvincible(ped, state) {
// ===========================================================================
function setPedLookAt(ped, position) {
- if (getGame() == AGRP_GAME_GTA_SA) {
+ if (getGame() == V_GAME_GTA_SA) {
ped.lookAt(position, 10000);
return true;
} else {
@@ -710,4 +710,24 @@ function deleteLocalPlayerPed() {
destroyElement(localPlayer);
}
+// ===========================================================================
+
+function setElementCollisionsEnabled(elementId, state) {
+ if (getElementFromId(elementId) == null) {
+ return false;
+ }
+
+ getElementFromId(elementId).collisionsEnabled = state;
+}
+
+// ===========================================================================
+
+function getElementCollisionsEnabled(elementId, state) {
+ if (getElementFromId(elementId) == null) {
+ return false;
+ }
+
+ return getElementFromId(elementId).collisionsEnabled;
+}
+
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/netevents.js b/scripts/client/netevents.js
index e7a1e715..93bd5afc 100644
--- a/scripts/client/netevents.js
+++ b/scripts/client/netevents.js
@@ -1,190 +1,197 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: netevents.js
// DESC: Provides server communication and cross-endpoint network events
// TYPE: Client (JavaScript)
// ===========================================================================
-function initServerScript() {
- logToConsole(LOG_DEBUG, "[VRR.Server]: Initializing server script ...");
- addAllNetworkHandlers();
- logToConsole(LOG_DEBUG, "[VRR.Server]: Server script initialized!");
+function initNetworkEventsScript() {
+ logToConsole(LOG_DEBUG, "[AGRP.NetEvents]: Initializing server script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.NetEvents]: Server script initialized!");
}
// ===========================================================================
function addAllNetworkHandlers() {
- logToConsole(LOG_DEBUG, "[VRR.Server]: Adding network handlers ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Server]: Adding network handlers ...");
// Chat Box
addNetworkEventHandler("m", receiveChatBoxMessageFromServer); // Not prefixed with VRR to make it as small as possible
- addNetworkEventHandler("agrp.chatScrollLines", setChatScrollLines);
- addNetworkEventHandler("agrp.chatAutoHideDelay", setChatAutoHideDelay);
- addNetworkEventHandler("agrp.chatTimeStamps", setChatTimeStampsState);
- addNetworkEventHandler("agrp.chatEmoji", setChatEmojiState);
+ addNetworkEventHandler("v.rp.chatScrollLines", setChatScrollLines);
+ addNetworkEventHandler("v.rp.chatAutoHideDelay", setChatAutoHideDelay);
+ addNetworkEventHandler("v.rp.chatTimeStamps", setChatTimeStampsState);
+ addNetworkEventHandler("v.rp.chatEmoji", setChatEmojiState);
// Messaging (like textdraws and stuff)
- addNetworkEventHandler("agrp.smallGameMessage", showSmallGameMessage);
+ addNetworkEventHandler("v.rp.smallGameMessage", showSmallGameMessage);
// Job
- addNetworkEventHandler("agrp.job", receiveJobFromServer);
- addNetworkEventHandler("agrp.working", setLocalPlayerWorkingState);
- addNetworkEventHandler("agrp.jobType", setLocalPlayerJobType);
- addNetworkEventHandler("agrp.showJobRouteLocation", showJobRouteLocation);
- addNetworkEventHandler("agrp.hideJobRouteLocation", hideJobRouteLocation);
+ addNetworkEventHandler("v.rp.job", receiveJobFromServer);
+ addNetworkEventHandler("v.rp.working", setLocalPlayerWorkingState);
+ addNetworkEventHandler("v.rp.jobType", setLocalPlayerJobType);
+ addNetworkEventHandler("v.rp.showJobRouteLocation", showJobRouteLocation);
+ addNetworkEventHandler("v.rp.hideJobRouteLocation", hideJobRouteLocation);
// Local player states and values
- addNetworkEventHandler("agrp.restoreCamera", restoreLocalCamera);
- addNetworkEventHandler("agrp.cameraLookAt", setLocalCameraLookAt);
- addNetworkEventHandler("agrp.freeze", setLocalPlayerFrozenState);
- addNetworkEventHandler("agrp.control", setLocalPlayerControlState);
- addNetworkEventHandler("agrp.fadeCamera", fadeLocalCamera);
- addNetworkEventHandler("agrp.removeFromVehicle", removeLocalPlayerFromVehicle);
- addNetworkEventHandler("agrp.clearWeapons", clearLocalPlayerWeapons);
- addNetworkEventHandler("agrp.giveWeapon", giveLocalPlayerWeapon);
- addNetworkEventHandler("agrp.position", setLocalPlayerPosition);
- addNetworkEventHandler("agrp.heading", setLocalPlayerHeading);
- addNetworkEventHandler("agrp.interior", setLocalPlayerInterior);
- addNetworkEventHandler("agrp.spawned", onServerSpawnedLocalPlayer);
- addNetworkEventHandler("agrp.money", setLocalPlayerCash);
- addNetworkEventHandler("agrp.armour", setLocalPlayerArmour);
- addNetworkEventHandler("agrp.localPlayerSkin", setLocalPlayerSkin);
- addNetworkEventHandler("agrp.pedSpeak", makeLocalPlayerPedSpeak);
- addNetworkEventHandler("agrp.infiniteRun", setLocalPlayerInfiniteRun);
- addNetworkEventHandler("agrp.playerCop", setLocalPlayerAsCopState);
- addNetworkEventHandler("agrp.health", setLocalPlayerHealth);
- addNetworkEventHandler("agrp.wantedLevel", setLocalPlayerWantedLevel);
- addNetworkEventHandler("agrp.playerPedId", sendLocalPlayerNetworkIdToServer);
- addNetworkEventHandler("agrp.ped", setLocalPlayerPedPartsAndProps);
- addNetworkEventHandler("agrp.spawn", serverRequestedLocalPlayerSpawn);
- addNetworkEventHandler("agrp.clearPedState", clearLocalPedState);
- addNetworkEventHandler("agrp.drunkEffect", setLocalPlayerDrunkEffect);
- addNetworkEventHandler("agrp.deleteLocalPlayerPed", deleteLocalPlayerPed);
+ addNetworkEventHandler("v.rp.restoreCamera", restoreLocalCamera);
+ addNetworkEventHandler("v.rp.cameraLookAt", setLocalCameraLookAt);
+ addNetworkEventHandler("v.rp.freeze", setLocalPlayerFrozenState);
+ addNetworkEventHandler("v.rp.control", setLocalPlayerControlState);
+ addNetworkEventHandler("v.rp.fadeCamera", fadeLocalCamera);
+ addNetworkEventHandler("v.rp.removeFromVehicle", removeLocalPlayerFromVehicle);
+ addNetworkEventHandler("v.rp.clearWeapons", clearLocalPlayerWeapons);
+ addNetworkEventHandler("v.rp.giveWeapon", giveLocalPlayerWeapon);
+ addNetworkEventHandler("v.rp.position", setLocalPlayerPosition);
+ addNetworkEventHandler("v.rp.heading", setLocalPlayerHeading);
+ addNetworkEventHandler("v.rp.interior", setLocalPlayerInterior);
+ addNetworkEventHandler("v.rp.spawned", onServerSpawnedLocalPlayer);
+ addNetworkEventHandler("v.rp.money", setLocalPlayerMoney);
+ addNetworkEventHandler("v.rp.armour", setLocalPlayerArmour);
+ addNetworkEventHandler("v.rp.localPlayerSkin", setLocalPlayerSkin);
+ addNetworkEventHandler("v.rp.pedSpeak", makeLocalPlayerPedSpeak);
+ addNetworkEventHandler("v.rp.infiniteRun", setLocalPlayerInfiniteRun);
+ addNetworkEventHandler("v.rp.playerCop", setLocalPlayerAsCopState);
+ addNetworkEventHandler("v.rp.health", setLocalPlayerHealth);
+ addNetworkEventHandler("v.rp.wantedLevel", setLocalPlayerWantedLevel);
+ addNetworkEventHandler("v.rp.playerPedId", sendLocalPlayerNetworkIdToServer);
+ addNetworkEventHandler("v.rp.ped", setLocalPlayerPedPartsAndProps);
+ addNetworkEventHandler("v.rp.spawn", serverRequestedLocalPlayerSpawn);
+ addNetworkEventHandler("v.rp.clearPedState", clearLocalPedState);
+ addNetworkEventHandler("v.rp.drunkEffect", setLocalPlayerDrunkEffect);
+ addNetworkEventHandler("v.rp.deleteLocalPlayerPed", deleteLocalPlayerPed);
// Vehicle
- addNetworkEventHandler("agrp.vehicle", receiveVehicleFromServer);
- addNetworkEventHandler("agrp.veh.lights", setVehicleLights);
- addNetworkEventHandler("agrp.veh.engine", setVehicleEngine);
- addNetworkEventHandler("agrp.veh.repair", repairVehicle);
- addNetworkEventHandler("agrp.cruiseControl", toggleVehicleCruiseControl);
+ addNetworkEventHandler("v.rp.vehicle", receiveVehicleFromServer);
+ addNetworkEventHandler("v.rp.veh.lights", setVehicleLights);
+ addNetworkEventHandler("v.rp.veh.engine", setVehicleEngine);
+ addNetworkEventHandler("v.rp.veh.repair", repairVehicle);
+ addNetworkEventHandler("v.rp.cruiseControl", toggleLocalVehicleCruiseControl);
+ addNetworkEventHandler("v.rp.passenger", enterVehicleAsPassenger);
+ addNetworkEventHandler("v.rp.vehBuyState", setVehiclePurchaseState);
// Radio
- addNetworkEventHandler("agrp.radioStream", playStreamingRadio);
- addNetworkEventHandler("agrp.audioFileStream", playAudioFile);
- addNetworkEventHandler("agrp.stopRadioStream", stopStreamingRadio);
- addNetworkEventHandler("agrp.radioVolume", setStreamingRadioVolume);
+ addNetworkEventHandler("v.rp.radioStream", playStreamingRadio);
+ addNetworkEventHandler("v.rp.audioFileStream", playAudioFile);
+ addNetworkEventHandler("v.rp.stopRadioStream", stopStreamingRadio);
+ addNetworkEventHandler("v.rp.radioVolume", setStreamingRadioVolume);
// Key Bindings
- addNetworkEventHandler("agrp.delKeyBind", unBindAccountKey);
- addNetworkEventHandler("agrp.addKeyBind", bindAccountKey);
- addNetworkEventHandler("agrp.clearKeyBinds", clearKeyBinds);
+ addNetworkEventHandler("v.rp.delKeyBind", unBindAccountKey);
+ addNetworkEventHandler("v.rp.addKeyBind", bindAccountKey);
+ addNetworkEventHandler("v.rp.clearKeyBinds", clearKeyBinds);
// Weapon Damage
- addNetworkEventHandler("agrp.weaponDamageEnabled", setPlayerWeaponDamageEnabled);
- addNetworkEventHandler("agrp.weaponDamageEvent", setPlayerWeaponDamageEvent);
+ addNetworkEventHandler("v.rp.weaponDamageEnabled", setPlayerWeaponDamageEnabled);
+ addNetworkEventHandler("v.rp.weaponDamageEvent", setPlayerWeaponDamageEvent);
// GUI
- addNetworkEventHandler("agrp.showRegistration", showRegistrationGUI);
- addNetworkEventHandler("agrp.showNewCharacter", showNewCharacterGUI);
- addNetworkEventHandler("agrp.showLogin", showLoginGUI);
- addNetworkEventHandler("agrp.2fa", showTwoFactorAuthGUI);
- addNetworkEventHandler("agrp.showResetPasswordCodeInput", resetPasswordCodeInputGUI);
- addNetworkEventHandler("agrp.showResetPasswordEmailInput", resetPasswordEmailInputGUI);
- addNetworkEventHandler("agrp.showChangePassword", showChangePasswordGUI);
- addNetworkEventHandler("agrp.showCharacterSelect", showCharacterSelectGUI);
- addNetworkEventHandler("agrp.switchCharacterSelect", switchCharacterSelectGUI);
- addNetworkEventHandler("agrp.showError", showErrorGUI);
- addNetworkEventHandler("agrp.showInfo", showInfoGUI);
- addNetworkEventHandler("agrp.showPrompt", showYesNoPromptGUI);
- addNetworkEventHandler("agrp.loginSuccess", loginSuccess);
- addNetworkEventHandler("agrp.characterSelectSuccess", characterSelectSuccess);
- addNetworkEventHandler("agrp.loginFailed", loginFailed);
- addNetworkEventHandler("agrp.registrationSuccess", registrationSuccess);
- addNetworkEventHandler("agrp.registrationFailed", registrationFailed);
- addNetworkEventHandler("agrp.newCharacterFailed", newCharacterFailed);
- addNetworkEventHandler("agrp.changePassword", showChangePasswordGUI);
- addNetworkEventHandler("agrp.showLocaleChooser", showLocaleChooserGUI);
- addNetworkEventHandler("agrp.guiColour", setGUIColours);
+ addNetworkEventHandler("v.rp.showRegistration", showRegistrationGUI);
+ addNetworkEventHandler("v.rp.showNewCharacter", showNewCharacterGUI);
+ addNetworkEventHandler("v.rp.showLogin", showLoginGUI);
+ addNetworkEventHandler("v.rp.2fa", showTwoFactorAuthGUI);
+ addNetworkEventHandler("v.rp.showResetPasswordCodeInput", resetPasswordCodeInputGUI);
+ addNetworkEventHandler("v.rp.showResetPasswordEmailInput", resetPasswordEmailInputGUI);
+ addNetworkEventHandler("v.rp.showChangePassword", showChangePasswordGUI);
+ addNetworkEventHandler("v.rp.showCharacterSelect", showCharacterSelectGUI);
+ addNetworkEventHandler("v.rp.switchCharacterSelect", switchCharacterSelectGUI);
+ addNetworkEventHandler("v.rp.showError", showErrorGUI);
+ addNetworkEventHandler("v.rp.showInfo", showInfoGUI);
+ addNetworkEventHandler("v.rp.showPrompt", showYesNoPromptGUI);
+ addNetworkEventHandler("v.rp.loginSuccess", loginSuccess);
+ addNetworkEventHandler("v.rp.characterSelectSuccess", characterSelectSuccess);
+ addNetworkEventHandler("v.rp.loginFailed", loginFailed);
+ addNetworkEventHandler("v.rp.registrationSuccess", registrationSuccess);
+ addNetworkEventHandler("v.rp.registrationFailed", registrationFailed);
+ addNetworkEventHandler("v.rp.newCharacterFailed", newCharacterFailed);
+ addNetworkEventHandler("v.rp.changePassword", showChangePasswordGUI);
+ addNetworkEventHandler("v.rp.showLocaleChooser", showLocaleChooserGUI);
+ addNetworkEventHandler("v.rp.guiColour", setGUIColours);
+ addNetworkEventHandler("v.rp.mapChangeWarning", setMapChangeWarningState);
+
+ // 2D Rendering
+ addNetworkEventHandler("v.rp.set2DRendering", set2DRendering);
+ addNetworkEventHandler("v.rp.logo", setServerLogoRenderState);
+ addNetworkEventHandler("v.rp.showItemActionDelay", showItemActionDelay);
// Business
- addNetworkEventHandler("agrp.business", receiveBusinessFromServer);
+ addNetworkEventHandler("v.rp.business", receiveBusinessFromServer);
// House
- addNetworkEventHandler("agrp.house", receiveHouseFromServer);
+ addNetworkEventHandler("v.rp.house", receiveHouseFromServer);
// GPS
- addNetworkEventHandler("agrp.showGPSBlip", showGPSLocation);
+ addNetworkEventHandler("v.rp.showGPSBlip", showGPSLocation);
// Locale
- addNetworkEventHandler("agrp.locale", setLocale);
- addNetworkEventHandler("agrp.localeChooser", toggleLocaleChooserGUI);
+ addNetworkEventHandler("v.rp.locale", setLocale);
+ addNetworkEventHandler("v.rp.localeChooser", toggleLocaleChooserGUI);
+
+ // Animation
+ addNetworkEventHandler("v.rp.anim", makePedPlayAnimation);
+ addNetworkEventHandler("v.rp.stopAnim", makePedStopAnimation);
+ addNetworkEventHandler("v.rp.forceAnim", forcePedAnimation);
+
+ // Nametags
+ addNetworkEventHandler("v.rp.nametag", updatePlayerNameTag);
+ addNetworkEventHandler("v.rp.nametagDistance", setNameTagDistance);
// Misc
- addNetworkEventHandler("agrp.mouseCursor", toggleMouseCursor);
- addNetworkEventHandler("agrp.mouseCamera", toggleMouseCamera);
- addNetworkEventHandler("agrp.clearPeds", clearLocalPlayerOwnedPeds);
- addNetworkEventHandler("agrp.clearPickups", clearLocalPlayerOwnedPickups);
- addNetworkEventHandler("agrp.passenger", enterVehicleAsPassenger);
- addNetworkEventHandler("agrp.logo", setServerLogoRenderState);
- addNetworkEventHandler("agrp.ambience", setCityAmbienceState);
- addNetworkEventHandler("agrp.runCode", runClientCode);
- addNetworkEventHandler("agrp.minuteDuration", setMinuteDuration);
- addNetworkEventHandler("agrp.snow", setSnowState);
- addNetworkEventHandler("agrp.enterPropertyKey", setEnterPropertyKey);
- addNetworkEventHandler("agrp.skinSelect", toggleSkinSelect);
- addNetworkEventHandler("agrp.hotbar", updatePlayerHotBar);
- addNetworkEventHandler("agrp.showItemActionDelay", showItemActionDelay);
- addNetworkEventHandler("agrp.set2DRendering", set2DRendering);
- addNetworkEventHandler("agrp.mouseCameraForce", setMouseCameraState);
- addNetworkEventHandler("agrp.logLevel", setLogLevel);
- addNetworkEventHandler("agrp.hideAllGUI", hideAllGUI);
- addNetworkEventHandler("agrp.nametag", updatePlayerNameTag);
- addNetworkEventHandler("agrp.nametagDistance", setNameTagDistance);
- addNetworkEventHandler("agrp.ping", updatePlayerPing);
- addNetworkEventHandler("agrp.anim", makePedPlayAnimation);
- addNetworkEventHandler("agrp.stopAnim", makePedStopAnimation);
- addNetworkEventHandler("agrp.forceAnim", forcePedAnimation);
- addNetworkEventHandler("agrp.clientInfo", serverRequestedClientInfo);
- addNetworkEventHandler("agrp.interiorLights", updateInteriorLightsState);
- addNetworkEventHandler("agrp.cutsceneInterior", setCutsceneInterior);
- addNetworkEventHandler("agrp.syncElement", forceSyncElementProperties);
- addNetworkEventHandler("agrp.elementPosition", setElementPosition);
- addNetworkEventHandler("agrp.elementCollisions", setElementCollisionsEnabled);
- addNetworkEventHandler("agrp.vehBuyState", setVehiclePurchaseState);
- addNetworkEventHandler("agrp.holdObject", makePedHoldObject);
- addNetworkEventHandler("agrp.profanityFilter", setProfanityFilterState);
+ addNetworkEventHandler("v.rp.mouseCursor", toggleMouseCursor);
+ addNetworkEventHandler("v.rp.mouseCamera", toggleMouseCamera);
+ addNetworkEventHandler("v.rp.mouseCameraForce", setMouseCameraState);
+ addNetworkEventHandler("v.rp.clearPeds", clearLocalPlayerOwnedPeds);
+ addNetworkEventHandler("v.rp.clearPickups", clearLocalPlayerOwnedPickups);
+ addNetworkEventHandler("v.rp.ambience", setCityAmbienceState);
+ addNetworkEventHandler("v.rp.runCode", runClientCode);
+ addNetworkEventHandler("v.rp.minuteDuration", setMinuteDuration);
+ addNetworkEventHandler("v.rp.snow", setSnowState);
+ addNetworkEventHandler("v.rp.enterPropertyKey", setEnterPropertyKey);
+ addNetworkEventHandler("v.rp.skinSelect", toggleSkinSelect);
+ addNetworkEventHandler("v.rp.hotbar", updatePlayerHotBar);
+ addNetworkEventHandler("v.rp.logLevel", setLogLevel);
+ addNetworkEventHandler("v.rp.hideAllGUI", hideAllGUI);
+ addNetworkEventHandler("v.rp.ping", updatePlayerPing);
+ addNetworkEventHandler("v.rp.clientInfo", serverRequestedClientInfo);
+ addNetworkEventHandler("v.rp.interiorLights", updateInteriorLightsState);
+ addNetworkEventHandler("v.rp.scene", changeScene);
+ addNetworkEventHandler("v.rp.syncElement", forceSyncElementProperties);
+ addNetworkEventHandler("v.rp.elementPosition", setElementPosition);
+ addNetworkEventHandler("v.rp.elementCollisions", setElementCollisionsEnabled);
+ addNetworkEventHandler("v.rp.holdObject", makePedHoldObject);
+ addNetworkEventHandler("v.rp.profanityFilter", setProfanityFilterState);
+ addNetworkEventHandler("v.rp.currencyString", receiveCurrencyStringFromServer);
+ addNetworkEventHandler("v.rp.token", serverRequestedToken);
}
// ===========================================================================
function sendResourceReadySignalToServer() {
- sendNetworkEventToServer("agrp.clientReady");
+ sendNetworkEventToServer("v.rp.clientReady");
}
// ===========================================================================
function sendResourceStartedSignalToServer() {
- sendNetworkEventToServer("agrp.clientStarted");
+ sendNetworkEventToServer("v.rp.clientStarted");
}
// ===========================================================================
function sendResourceStoppedSignalToServer() {
if (isConnected) {
- sendNetworkEventToServer("agrp.clientStopped");
+ sendNetworkEventToServer("v.rp.clientStopped");
}
}
// ===========================================================================
function set2DRendering(hudState, labelState, smallGameMessageState, scoreboardState, hotBarState, itemActionDelayState) {
- logToConsole(LOG_DEBUG, `[VRR.Main] Updating render states (HUD: ${hudState}, Labels: ${labelState}, Bottom Text: ${smallGameMessageState}, Scoreboard: ${scoreboardState}, HotBar: ${hotBarState}, Item Action Delay: ${itemActionDelayState})`);
+ logToConsole(LOG_DEBUG, `[AGRP.Main] Updating render states (HUD: ${hudState}, Labels: ${labelState}, Bottom Text: ${smallGameMessageState}, Scoreboard: ${scoreboardState}, HotBar: ${hotBarState}, Item Action Delay: ${itemActionDelayState})`);
renderHUD = hudState;
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
natives.displayCash(hudState);
natives.displayAmmo(hudState);
natives.displayHud(hudState);
@@ -206,7 +213,7 @@ function set2DRendering(hudState, labelState, smallGameMessageState, scoreboardS
// ===========================================================================
function onServerSpawnedLocalPlayer(state) {
- logToConsole(LOG_DEBUG, `[VRR.Main] Setting spawned state to ${state}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Main] Setting spawned state to ${state}`);
isSpawned = state;
setUpInitialGame();
if (state) {
@@ -231,19 +238,19 @@ function onServerSpawnedLocalPlayer(state) {
// ===========================================================================
function tellServerPlayerUsedKeyBind(key) {
- sendNetworkEventToServer("agrp.useKeyBind", key);
+ sendNetworkEventToServer("v.rp.useKeyBind", key);
}
// ===========================================================================
function tellServerPlayerArrivedAtJobRouteLocation() {
- sendNetworkEventToServer("agrp.arrivedAtJobRouteLocation");
+ sendNetworkEventToServer("v.rp.arrivedAtJobRouteLocation");
}
// ===========================================================================
function tellServerItemActionDelayComplete() {
- sendNetworkEventToServer("agrp.itemActionDelayComplete");
+ sendNetworkEventToServer("v.rp.itemActionDelayComplete");
}
// ===========================================================================
@@ -253,13 +260,13 @@ function sendServerClientInfo() {
if (typeof CLIENT_VERSION_MAJOR != "undefined") {
clientVersion = `${CLIENT_VERSION_MAJOR}.${CLIENT_VERSION_MINOR}.${CLIENT_VERSION_PATCH}.${CLIENT_VERSION_BUILD}`;
}
- sendNetworkEventToServer("agrp.clientInfo", clientVersion, game.width, game.height);
+ sendNetworkEventToServer("v.rp.clientInfo", clientVersion, game.width, game.height);
}
// ===========================================================================
function sendServerNewAFKStatus(state) {
- sendNetworkEventToServer("agrp.afk", state);
+ sendNetworkEventToServer("v.rp.afk", state);
}
// ===========================================================================
@@ -298,16 +305,6 @@ function forceSyncElementProperties(elementId) {
// ===========================================================================
-function setElementCollisionsEnabled(elementId, state) {
- if (getElementFromId(elementId) == null) {
- return false;
- }
-
- getElementFromId(elementId).collisionsEnabled = state;
-}
-
-// ===========================================================================
-
function setLocalPlayerArmour(armour) {
if (typeof localPlayer.armour != "undefined") {
localPlayer.armour = armour;
@@ -330,7 +327,7 @@ function setLogLevel(level) {
function setLocalPlayerInfiniteRun(state) {
if (localPlayer != null) {
- if (getGame() == AGRP_GAME_GTA_III || getGame() == AGRP_GAME_GTA_VC) {
+ if (getGame() == V_GAME_GTA_III || getGame() == V_GAME_GTA_VC) {
game.SET_PLAYER_NEVER_GETS_TIRED(game.GET_PLAYER_ID(), boolToInt(state));
}
}
@@ -339,8 +336,8 @@ function setLocalPlayerInfiniteRun(state) {
// ===========================================================================
function setLocalPlayerSkin(skinId) {
- logToConsole(LOG_INFO, `[VRR.Server] Setting locale player skin to ${skinId}`);
- if (getGame() == AGRP_GAME_GTA_IV) {
+ logToConsole(LOG_INFO, `[AGRP.Server] Setting locale player skin to ${skinId}`);
+ if (getGame() == V_GAME_GTA_IV) {
if (natives.isModelInCdimage(skinId)) {
natives.requestModel(skinId);
natives.loadAllObjectsNow();
@@ -356,7 +353,7 @@ function setLocalPlayerSkin(skinId) {
// ===========================================================================
function makePedHoldObject(pedId, modelIndex) {
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
natives.givePedAmbientObject(natives.getPedFromNetworkId(pedId), getGameConfig().objects[getGame()][modelIndex][1])
}
}
@@ -364,13 +361,15 @@ function makePedHoldObject(pedId, modelIndex) {
// ===========================================================================
function sendLocalPlayerNetworkIdToServer() {
- sendNetworkEventToServer("agrp.playerPedId", natives.getNetworkIdFromPed(localPlayer));
+ if (getGame() == V_GAME_GTA_IV || getGame() == V_GAME_GTA_IV_EFLC) {
+ sendNetworkEventToServer("v.rp.playerPedId", natives.getNetworkIdFromPed(localPlayer));
+ }
}
// ===========================================================================
-function setCutsceneInterior(cutsceneName) {
- if (getGame() == AGRP_GAME_GTA_IV) {
+function changeScene(sceneName) {
+ if (getGame() == V_GAME_GTA_IV) {
if (cutsceneName == "") {
natives.clearCutscene();
} else {
@@ -379,13 +378,15 @@ function setCutsceneInterior(cutsceneName) {
}
natives.initCutscene(cutsceneName);
}
+ } else if (getGame() == V_GAME_MAFIA_ONE) {
+ game.changeMap(sceneName);
}
}
// ===========================================================================
function makeLocalPlayerPedSpeak(speechName) {
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
// if player is in vehicle, allow megaphone (if last arg is "1", it will cancel megaphone echo)
// Only speeches with _MEGAPHONE will have the bullhorn effect
// Afaik it only works on police voices anyway
@@ -394,7 +395,7 @@ function makeLocalPlayerPedSpeak(speechName) {
} else {
natives.sayAmbientSpeech(localPlayer, speechName, true, false, 1);
}
- } else if (getGame() == AGRP_GAME_GTA_III || getGame() == AGRP_GAME_GTA_VC) {
+ } else if (getGame() == V_GAME_GTA_III || getGame() == V_GAME_GTA_VC) {
// Don't have a way to get the ped ref ID and can't use ped in arg
//game.SET_CHAR_SAY(game.GET_PLAYER_ID(), int);
}
@@ -403,7 +404,7 @@ function makeLocalPlayerPedSpeak(speechName) {
// ===========================================================================
function setLocalPlayerAsCopState(state) {
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
natives.setPlayerAsCop(natives.getPlayerId(), state);
natives.setPoliceIgnorePlayer(natives.getPlayerId(), state);
}
@@ -412,7 +413,7 @@ function setLocalPlayerAsCopState(state) {
// ===========================================================================
function serverRequestedLocalPlayerSpawn(skinId, position) {
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
natives.createPlayer(skinId, position);
//if(isCustomCameraSupported()) {
// game.restoreCamera(true);
@@ -423,7 +424,7 @@ function serverRequestedLocalPlayerSpawn(skinId, position) {
// ===========================================================================
function sendLocaleSelectToServer(localeId) {
- sendNetworkEventToServer("agrp.localeSelect", localeId);
+ sendNetworkEventToServer("v.rp.localeSelect", localeId);
}
// ===========================================================================
@@ -435,4 +436,35 @@ function clearLocalPlayerOwnedPickups() {
}
}
+// ===========================================================================
+
+function receiveCurrencyStringFromServer(newCurrencyString) {
+ currencyString = newCurrencyString;
+}
+
+// ===========================================================================
+
+function setMapChangeWarningState(state) {
+ mapChangeWarning = state;
+}
+
+// ===========================================================================
+
+function updatePlayerPing(playerName, ping) {
+ playerPing[playerName] = ping;
+}
+
+// ===========================================================================
+
+function receiveClientVariablesFromServer(clientVariablesString) {
+ serverData.cvars = JSON.parse(clientVariablesString);
+}
+
+// ===========================================================================
+
+function serverRequestedToken() {
+ let token = loadToken();
+ sendNetworkEventToServer("v.rp.token", token);
+}
+
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/npc.js b/scripts/client/npc.js
index f56f051c..a03488dc 100644
--- a/scripts/client/npc.js
+++ b/scripts/client/npc.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: npc.js
// DESC: Provides NPC functions and processing
@@ -10,7 +9,7 @@
function processNPCMovement(npc) {
//if(npc.isSyncer == true) {
- if (getEntityData(npc, "agrp.lookAtClosestPlayer") == true) {
+ if (getEntityData(npc, "v.rp.lookAtClosestPlayer") == true) {
let closestPlayer = getClosestPlayer(getElementPosition(npc.id));
setPedLookAt(npc, getElementPosition(closestPlayer.id));
}
diff --git a/scripts/client/object.js b/scripts/client/object.js
index 5614b84a..284b297d 100644
--- a/scripts/client/object.js
+++ b/scripts/client/object.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: object.js
// DESC: Provides object functions and processing
@@ -20,7 +19,7 @@ function startMovingObject(object) {
function stopMovingObject(object, save = true) {
if (save) {
- sendNetworkEventToServer("agrp.objectSave", object.id, object.position, object.rotation);
+ sendNetworkEventToServer("v.rp.objectSave", object.id, object.position, object.rotation);
}
}
diff --git a/scripts/client/radio.js b/scripts/client/radio.js
index 0c0325a1..5654ba8b 100644
--- a/scripts/client/radio.js
+++ b/scripts/client/radio.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: radio.js
// DESC: Provides internet streaming radio functions and usage
@@ -44,4 +43,8 @@ function playAudioFile(audioName, loop, volume) {
findResourceByName("connectedrp-extra").exports.playCustomAudio(audioName, volume / 100, loop);
}
-// ===========================================================================
\ No newline at end of file
+// ===========================================================================
+
+function getStreamingRadioVolumeForPosition(position1, position2) {
+ return false;
+}
\ No newline at end of file
diff --git a/scripts/client/scoreboard.js b/scripts/client/scoreboard.js
index 4f332c65..8c254995 100644
--- a/scripts/client/scoreboard.js
+++ b/scripts/client/scoreboard.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: scoreboard.js
// DESC: Provides scoreboard features and rendering
@@ -18,10 +17,10 @@ let scoreboardKey = SDLK_TAB;
// ===========================================================================
function initScoreBoardScript() {
- logToConsole(LOG_DEBUG, "[VRR.ScoreBoard]: Initializing scoreboard script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.ScoreBoard]: Initializing scoreboard script ...");
scoreBoardTitleFont = initScoreBoardTitleFont();
scoreBoardListFont = initScoreBoardListFont();
- logToConsole(LOG_DEBUG, "[VRR.ScoreBoard]: Scoreboard script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.ScoreBoard]: Scoreboard script initialized!");
}
// ===========================================================================
diff --git a/scripts/client/skin-select.js b/scripts/client/skin-select.js
index c918625e..65de3352 100644
--- a/scripts/client/skin-select.js
+++ b/scripts/client/skin-select.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: skin-select.js
// DESC: Provides skin-selector functions and usage
@@ -11,7 +10,7 @@
let skinSelectMessageFontTop = null;
let skinSelectMessageFontBottom = null;
let skinSelectMessageTextTop = "Skin Name";
-let skinSelectMessageTextBottom = "Choose a skin using PAGEUP and PAGEDOWN keys. Use ENTER to finish or BACKSPACE to cancel.";
+let skinSelectMessageTextBottom = "Choose a skin using LEFT and RIGHT arrow keys. Use ENTER to finish or BACKSPACE to cancel.";
let skinSelectMessageColourTop = COLOUR_YELLOW;
let skinSelectMessageColourBottom = COLOUR_WHITE;
@@ -24,10 +23,10 @@ let skinSelectHeading = null;
// ===========================================================================
function initSkinSelectScript() {
- logToConsole(LOG_DEBUG, "[VRR.SkinSelect]: Initializing skin selector script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.SkinSelect]: Initializing skin selector script ...");
skinSelectMessageFontTop = loadSkinSelectMessageFontTop();
skinSelectMessageFontBottom = loadSkinSelectMessageFontBottom();
- logToConsole(LOG_DEBUG, "[VRR.SkinSelect]: Skin selector script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.SkinSelect]: Skin selector script initialized!");
}
// ===========================================================================
@@ -46,7 +45,7 @@ function loadSkinSelectMessageFontBottom() {
function processSkinSelectKeyPress(keyCode) {
if (usingSkinSelector) {
- if (keyCode == SDLK_LEFT || keyCode == SDLK_A) {
+ if (keyCode == getKeyIdFromParams("left") || keyCode == getKeyIdFromParams("a")) {
if (skinSelectorIndex >= allowedSkins.length - 1) {
skinSelectorIndex = 1;
} else {
@@ -55,7 +54,7 @@ function processSkinSelectKeyPress(keyCode) {
logToConsole(LOG_DEBUG, `Switching to skin ${allowedSkins[skinSelectorIndex][1]} (Index: ${skinSelectorIndex}, Skin: ${allowedSkins[skinSelectorIndex][0]})`);
skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1];
setLocalPlayerSkin(allowedSkins[skinSelectorIndex][0]);
- } else if (keyCode == SDLK_RIGHT || keyCode == SDLK_D) {
+ } else if (keyCode == getKeyIdFromParams("right") || keyCode == getKeyIdFromParams("d")) {
if (skinSelectorIndex <= 0) {
skinSelectorIndex = allowedSkins.length - 1;
} else {
@@ -64,16 +63,19 @@ function processSkinSelectKeyPress(keyCode) {
logToConsole(LOG_DEBUG, `Switching to skin ${allowedSkins[skinSelectorIndex][1]} (Index: ${skinSelectorIndex}, Skin: ${allowedSkins[skinSelectorIndex][0]})`);
skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1];
setLocalPlayerSkin(allowedSkins[skinSelectorIndex][0]);
- } else if (keyCode == SDLK_RETURN) {
- sendNetworkEventToServer("agrp.skinSelected", skinSelectorIndex);
+ } else if (keyCode == getKeyIdFromParams("enter")) {
+ sendNetworkEventToServer("v.rp.skinSelected", skinSelectorIndex);
toggleSkinSelect(false);
return true;
- } else if (keyCode == SDLK_BACKSPACE) {
- sendNetworkEventToServer("agrp.skinSelected", -1);
+ } else if (keyCode == getKeyIdFromParams("backspace")) {
+ sendNetworkEventToServer("v.rp.skinSelected", -1);
toggleSkinSelect(false);
return true;
}
- localPlayer.heading = skinSelectHeading;
+
+ if (getGame() <= V_GAME_GTA_SA) {
+ localPlayer.heading = skinSelectHeading;
+ }
}
}
@@ -104,13 +106,21 @@ function toggleSkinSelect(state) {
skinSelectHeading = localPlayer.heading;
if (isCustomCameraSupported()) {
- let tempPosition = localPlayer.position;
- tempPosition.z += 0.5;
- let frontCameraPosition = getPosInFrontOfPos(tempPosition, localPlayer.heading, 3);
- game.setCameraLookAt(frontCameraPosition, localPlayer.position, true);
+ let cameraPosition = localPlayer.position;
+ let playerPosition = localPlayer.position;
+ if (getGame() == V_GAME_MAFIA_ONE) {
+ cameraPosition.y += 1.5;
+ playerPosition.y += 1.5;
+ distance = 3;
+ } else {
+ cameraPosition.z += 0.5;
+ distance = 3;
+ }
+ let frontCameraPosition = getPosInFrontOfPos(cameraPosition, localPlayer.heading, distance);
+ game.setCameraLookAt(frontCameraPosition, playerPosition, true);
}
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
let skinId = allowedSkins[skinSelectorIndex][0];
if (natives.isModelInCdimage(skinId)) {
natives.requestModel(skinId);
diff --git a/scripts/client/startup.js b/scripts/client/startup.js
index a8d30d48..c28d142e 100644
--- a/scripts/client/startup.js
+++ b/scripts/client/startup.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: startup.js
// DESC: Provides startup/shutdown procedures
@@ -13,7 +12,7 @@ function initClientScripts() {
initNameTagScript();
initScoreBoardScript();
initMessagingScript();
- initServerScript();
+ initNetworkEventsScript();
initLogoScript();
initLabelScript();
initChatBoxScript();
@@ -21,12 +20,15 @@ function initClientScripts() {
initKeyBindScript();
initEventScript();
initSkinSelectScript();
+ initCursorScript();
+
+ addAllNetworkHandlers();
}
// ===========================================================================
function setUpInitialGame() {
- if (getGame() == AGRP_GAME_GTA_III) {
+ if (getGame() == V_GAME_GTA_III) {
logToConsole(LOG_DEBUG | LOG_WARN, "Setting up initial game stuff for GTA III ...");
// Turn off unlimited sprint
@@ -45,7 +47,7 @@ function setUpInitialGame() {
// Provided by mouse camera script (mousecam.js)
SetStandardControlsEnabled(true);
- } else if (getGame() == AGRP_GAME_GTA_VC) {
+ } else if (getGame() == V_GAME_GTA_VC) {
logToConsole(LOG_DEBUG | LOG_WARN, "Setting up initial game stuff for GTA Vice City ...");
// Turn off unlimited sprint
@@ -88,7 +90,7 @@ function setUpInitialGame() {
// Provided by mouse camera script (mousecam.js)
SetStandardControlsEnabled(true);
- } else if (getGame() == AGRP_GAME_GTA_SA) {
+ } else if (getGame() == V_GAME_GTA_SA) {
logToConsole(LOG_DEBUG | LOG_WARN, "Setting up initial game stuff for GTA San Andreas ...");
// Turn weapon skills down a bit
game.setGameStat(STAT_WEAPONTYPE_PISTOL_SKILL, 400);
@@ -125,7 +127,7 @@ function setUpInitialGame() {
// Disables taxi/vigilante/etc and other start mission triggers
game.onMission = true;
- } else if (getGame() == AGRP_GAME_GTA_IV) {
+ } else if (getGame() == V_GAME_GTA_IV) {
natives.allowEmergencyServices(false);
natives.setCreateRandomCops(true);
natives.setMaxWantedLevel(0);
@@ -187,7 +189,7 @@ function setUpInitialGame() {
// Some last steps
//natives.loadAllObjectsNow();
- } else if (getGame() == AGRP_GAME_MAFIA_ONE) {
+ } else if (getGame() == V_GAME_MAFIA_ONE) {
game.mapEnabled = false;
game.setTrafficEnabled(false);
}
diff --git a/scripts/client/sync.js b/scripts/client/sync.js
index c8b841cc..190d24a9 100644
--- a/scripts/client/sync.js
+++ b/scripts/client/sync.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: sync.js
// DESC: Provides some elements and data sync
@@ -11,12 +10,12 @@
function processSync(event, deltaTime) {
if (localPlayer != null) {
if (!areServerElementsSupported()) {
- sendNetworkEventToServer("agrp.plr.pos", (localPlayer.vehicle != null) ? localPlayer.vehicle.position : localPlayer.position);
- sendNetworkEventToServer("agrp.plr.rot", (localPlayer.vehicle != null) ? localPlayer.vehicle.heading : localPlayer.heading);
+ sendNetworkEventToServer("v.rp.plr.pos", (localPlayer.vehicle != null) ? localPlayer.vehicle.position : localPlayer.position);
+ sendNetworkEventToServer("v.rp.plr.rot", (localPlayer.vehicle != null) ? localPlayer.vehicle.heading : localPlayer.heading);
//if(localPlayer.vehicle != null) {
- // sendNetworkEventToServer("agrp.veh.pos", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.position);
- // sendNetworkEventToServer("agrp.veh.rot", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.heading);
+ // sendNetworkEventToServer("v.rp.veh.pos", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.position);
+ // sendNetworkEventToServer("v.rp.veh.rot", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.heading);
//}
}
@@ -25,7 +24,7 @@ function processSync(event, deltaTime) {
logToConsole(LOG_DEBUG, `Local player died`);
localPlayer.clearWeapons();
calledDeathEvent = true;
- sendNetworkEventToServer("agrp.playerDeath");
+ sendNetworkEventToServer("v.rp.playerDeath");
}
}
}
@@ -35,12 +34,11 @@ function processSync(event, deltaTime) {
logToConsole(LOG_DEBUG, `Local player died`);
localPlayer.clearWeapons();
calledDeathEvent = true;
- sendNetworkEventToServer("agrp.playerDeath");
+ sendNetworkEventToServer("v.rp.playerDeath");
}
}
if (streamingRadioElement) {
- streamingRadio.position = getElementPosition(streamingRadioElement.id);
//streamingRadio.volume = getStreamingRadioVolumeForPosition(streamingRadio.position);
}
}
@@ -48,25 +46,15 @@ function processSync(event, deltaTime) {
// ===========================================================================
function setVehicleLights(vehicleId, state) {
- if (getGame() != AGRP_GAME_MAFIA_ONE) {
- if (!state) {
- getElementFromId(vehicleId).lightStatus = 2;
- } else {
- getElementFromId(vehicleId).lightStatus = 1;
- }
- } else if (getGame() == AGRP_GAME_GTA_IV) {
- if (!state) {
- natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 0));
- } else {
- natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 1));
- }
- } else {
- if (!state) {
- getElementFromId(vehicleId).lights = false;
- } else {
- getElementFromId(vehicleId).lights = true;
- }
- }
+ //if (getGame() == V_GAME_GTA_IV) {
+ // if (!state) {
+ // natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 0));
+ // } else {
+ // natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 1));
+ // }
+ //} else {
+ getElementFromId(vehicleId).lights = state;
+ //}
}
// ===========================================================================
@@ -82,54 +70,55 @@ function syncVehicleProperties(vehicle) {
return false;
}
- if (doesEntityDataExist(vehicle, "agrp.lights")) {
- let lightStatus = getEntityData(vehicle, "agrp.lights");
- if (!lightStatus) {
- vehicle.lightStatus = 2;
- } else {
- vehicle.lightStatus = 1;
- }
+ if (doesEntityDataExist(vehicle, "v.rp.lights")) {
+ let lightStatus = getEntityData(vehicle, "v.rp.lights");
+ vehicle.lights = lightStatus;
}
- if (doesEntityDataExist(vehicle, "agrp.invincible")) {
- let invincible = getEntityData(vehicle, "agrp.invincible");
+ if (doesEntityDataExist(vehicle, "v.rp.locked")) {
+ let lockStatus = getEntityData(vehicle, "v.rp.locked");
+ vehicle.locked = lockStatus;
+ }
+
+ if (doesEntityDataExist(vehicle, "v.rp.invincible")) {
+ let invincible = getEntityData(vehicle, "v.rp.invincible");
element.setProofs(invincible, invincible, invincible, invincible, invincible);
}
- if (doesEntityDataExist(vehicle, "agrp.panelStatus")) {
- let panelsStatus = getEntityData(vehicle, "agrp.panelStatus");
+ if (doesEntityDataExist(vehicle, "v.rp.panelStatus")) {
+ let panelsStatus = getEntityData(vehicle, "v.rp.panelStatus");
for (let i in panelsStatus) {
vehicle.setPanelStatus(i, panelsStatus[i]);
}
}
- if (doesEntityDataExist(vehicle, "agrp.wheelStatus")) {
- let wheelsStatus = getEntityData(vehicle, "agrp.wheelStatus");
+ if (doesEntityDataExist(vehicle, "v.rp.wheelStatus")) {
+ let wheelsStatus = getEntityData(vehicle, "v.rp.wheelStatus");
for (let i in wheelsStatus) {
vehicle.setWheelStatus(i, wheelsStatus[i]);
}
}
- if (doesEntityDataExist(vehicle, "agrp.lightStatus")) {
- let lightStatus = getEntityData(vehicle, "agrp.lightStatus");
+ if (doesEntityDataExist(vehicle, "v.rp.lightStatus")) {
+ let lightStatus = getEntityData(vehicle, "v.rp.lightStatus");
for (let i in lightStatus) {
vehicle.setLightStatus(i, lightStatus[i]);
}
}
- if (doesEntityDataExist(vehicle, "agrp.suspensionHeight")) {
- let suspensionHeight = getEntityData(vehicle, "agrp.suspensionHeight");
+ if (doesEntityDataExist(vehicle, "v.rp.suspensionHeight")) {
+ let suspensionHeight = getEntityData(vehicle, "v.rp.suspensionHeight");
vehicle.setSuspensionHeight(suspensionHeight);
}
- if (getGame() == AGRP_GAME_GTA_SA) {
+ if (isGameFeatureSupported("vehicleUpgrades")) {
//let allUpgrades = getGameConfig().vehicleUpgrades[getGame()];
//for(let i in allUpgrades) {
// vehicle.removeUpgrade(i);
//}
- if (doesEntityDataExist(vehicle, "agrp.upgrades")) {
- let upgrades = getEntityData(vehicle, "agrp.upgrades");
+ if (doesEntityDataExist(vehicle, "v.rp.upgrades")) {
+ let upgrades = getEntityData(vehicle, "v.rp.upgrades");
for (let i in upgrades) {
if (upgrades[i] != 0) {
vehicle.addUpgrade(upgrades[i]);
@@ -138,12 +127,12 @@ function syncVehicleProperties(vehicle) {
}
}
- if (getGame() == AGRP_GAME_GTA_SA || getGame() == AGRP_GAME_GTA_IV) {
- if (doesEntityDataExist(vehicle, "agrp.livery")) {
- let livery = getEntityData(vehicle, "agrp.livery");
- if (getGame() == AGRP_GAME_GTA_SA) {
+ if (getGame() == V_GAME_GTA_SA || getGame() == V_GAME_GTA_IV) {
+ if (doesEntityDataExist(vehicle, "v.rp.livery")) {
+ let livery = getEntityData(vehicle, "v.rp.livery");
+ if (getGame() == V_GAME_GTA_SA) {
vehicle.setPaintJob(livery);
- } else if (getGame() == AGRP_GAME_GTA_IV) {
+ } else if (getGame() == V_GAME_GTA_IV) {
vehicle.livery = livery;
}
}
@@ -157,9 +146,9 @@ function syncCivilianProperties(civilian) {
return false;
}
- if (getGame() == AGRP_GAME_GTA_III) {
- if (doesEntityDataExist(civilian, "agrp.scale")) {
- let scaleFactor = getEntityData(civilian, "agrp.scale");
+ if (isGameFeatureSupported("pedScale")) {
+ if (doesEntityDataExist(civilian, "v.rp.scale")) {
+ let scaleFactor = getEntityData(civilian, "v.rp.scale");
let tempMatrix = civilian.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = civilian.position;
@@ -169,79 +158,79 @@ function syncCivilianProperties(civilian) {
}
}
- if (getGame() == AGRP_GAME_GTA_SA) {
- if (doesEntityDataExist(civilian, "agrp.fightStyle")) {
- let fightStyle = getEntityData(civilian, "agrp.fightStyle");
+ if (getGame() == V_GAME_GTA_SA) {
+ if (doesEntityDataExist(civilian, "v.rp.fightStyle")) {
+ let fightStyle = getEntityData(civilian, "v.rp.fightStyle");
civilian.setFightStyle(fightStyle[0], fightStyle[1]);
}
}
- if (getGame() == AGRP_GAME_GTA_III) {
- if (doesEntityDataExist(civilian, "agrp.walkStyle")) {
- let walkStyle = getEntityData(civilian, "agrp.walkStyle");
+ if (getGame() == V_GAME_GTA_SA) {
+ if (doesEntityDataExist(civilian, "v.rp.walkStyle")) {
+ let walkStyle = getEntityData(civilian, "v.rp.walkStyle");
civilian.walkStyle = walkStyle;
}
}
- if (getGame() == AGRP_GAME_GTA_IV) {
- if (doesEntityDataExist(civilian, "agrp.bodyPropHair")) {
- let bodyPropHair = getEntityData(civilian, "agrp.bodyPropHair");
+ if (getGame() == V_GAME_GTA_IV) {
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropHair")) {
+ let bodyPropHair = getEntityData(civilian, "v.rp.bodyPropHair");
civilian.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropHead")) {
- let bodyPropHead = getEntityData(civilian, "agrp.bodyPropHead");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropHead")) {
+ let bodyPropHead = getEntityData(civilian, "v.rp.bodyPropHead");
civilian.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropEyes")) {
- let bodyPropEyes = getEntityData(civilian, "agrp.bodyPropEyes");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropEyes")) {
+ let bodyPropEyes = getEntityData(civilian, "v.rp.bodyPropEyes");
civilian.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropLeftHand")) {
- let bodyPropLeftHand = getEntityData(civilian, "agrp.bodyPropLeftHand");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftHand")) {
+ let bodyPropLeftHand = getEntityData(civilian, "v.rp.bodyPropLeftHand");
civilian.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropRightHand")) {
- let bodyPropRightHand = getEntityData(civilian, "agrp.bodyPropRightHand");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropRightHand")) {
+ let bodyPropRightHand = getEntityData(civilian, "v.rp.bodyPropRightHand");
civilian.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropLeftWrist")) {
- let bodyPropLeftWrist = getEntityData(civilian, "agrp.bodyPropLeftWrist");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftWrist")) {
+ let bodyPropLeftWrist = getEntityData(civilian, "v.rp.bodyPropLeftWrist");
civilian.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
- let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropRightWrist")) {
+ let bodyPropRightWrist = getEntityData(civilian, "v.rp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
- let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropRightWrist")) {
+ let bodyPropRightWrist = getEntityData(civilian, "v.rp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropHip")) {
- let bodyPropHip = getEntityData(civilian, "agrp.bodyPropHip");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropHip")) {
+ let bodyPropHip = getEntityData(civilian, "v.rp.bodyPropHip");
civilian.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropLeftFoot")) {
- let bodyPropLeftFoot = getEntityData(civilian, "agrp.bodyPropLeftFoot");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftFoot")) {
+ let bodyPropLeftFoot = getEntityData(civilian, "v.rp.bodyPropLeftFoot");
civilian.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
}
- if (doesEntityDataExist(civilian, "agrp.bodyPropRightFoot")) {
- let bodyPropRightFoot = getEntityData(civilian, "agrp.bodyPropRightFoot");
+ if (doesEntityDataExist(civilian, "v.rp.bodyPropRightFoot")) {
+ let bodyPropRightFoot = getEntityData(civilian, "v.rp.bodyPropRightFoot");
civilian.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
}
}
- if (doesEntityDataExist(civilian, "agrp.anim")) {
- let animationSlot = getEntityData(civilian, "agrp.anim");
+ if (doesEntityDataExist(civilian, "v.rp.anim")) {
+ let animationSlot = getEntityData(civilian, "v.rp.anim");
let animationData = getAnimationData(animationSlot);
civilian.addAnimation(animationData.groupId, animationData.animId);
}
@@ -249,14 +238,34 @@ function syncCivilianProperties(civilian) {
// ===========================================================================
+function syncObjectProperties(object) {
+ if (!areServerElementsSupported()) {
+ return false;
+ }
+
+ if (isGameFeatureSupported("objectScale")) {
+ if (doesEntityDataExist(object, "v.rp.scale")) {
+ let scaleFactor = getEntityData(object, "v.rp.scale");
+ let tempMatrix = object.matrix;
+ tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
+ let tempPosition = object.position;
+ object.matrix = tempMatrix;
+ tempPosition.z += scaleFactor.z;
+ object.position = tempPosition;
+ }
+ }
+}
+
+// ===========================================================================
+
function syncPlayerProperties(player) {
if (!areServerElementsSupported()) {
return false;
}
- if (getGame() == AGRP_GAME_GTA_III) {
- if (doesEntityDataExist(player, "agrp.scale")) {
- let scaleFactor = getEntityData(player, "agrp.scale");
+ if (isGameFeatureSupported("pedScale")) {
+ if (doesEntityDataExist(player, "v.rp.scale")) {
+ let scaleFactor = getEntityData(player, "v.rp.scale");
let tempMatrix = player.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = player.position;
@@ -266,95 +275,95 @@ function syncPlayerProperties(player) {
}
}
- if (getGame() == AGRP_GAME_GTA_SA) {
- if (doesEntityDataExist(player, "agrp.fightStyle")) {
- let fightStyle = getEntityData(player, "agrp.fightStyle");
+ if (getGame() == V_GAME_GTA_SA) {
+ if (doesEntityDataExist(player, "v.rp.fightStyle")) {
+ let fightStyle = getEntityData(player, "v.rp.fightStyle");
player.setFightStyle(fightStyle[0], fightStyle[1]);
}
}
- //if(getGame() == AGRP_GAME_GTA_SA) {
- // if(doesEntityDataExist(player, "agrp.walkStyle")) {
- // let walkStyle = getEntityData(player, "agrp.walkStyle");
+ //if(getGame() == V_GAME_GTA_SA) {
+ // if(doesEntityDataExist(player, "v.rp.walkStyle")) {
+ // let walkStyle = getEntityData(player, "v.rp.walkStyle");
// player.walkStyle = walkStyle;
// }
//}
- if (getGame() == AGRP_GAME_GTA_IV) {
- if (doesEntityDataExist(player, "agrp.bodyPartHair")) {
- let bodyPartHead = getEntityData(player, "agrp.bodyPartHair");
+ if (getGame() == V_GAME_GTA_IV) {
+ if (doesEntityDataExist(player, "v.rp.bodyPartHair")) {
+ let bodyPartHead = getEntityData(player, "v.rp.bodyPartHair");
player.changeBodyPart(0, bodyPartHead[0], bodyPartHair[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPartHead")) {
- let bodyPartHead = getEntityData(player, "agrp.bodyPartHead");
+ if (doesEntityDataExist(player, "v.rp.bodyPartHead")) {
+ let bodyPartHead = getEntityData(player, "v.rp.bodyPartHead");
player.changeBodyPart(1, bodyPartHead[0], bodyPartHead[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPartUpper")) {
- let bodyPartUpper = getEntityData(player, "agrp.bodyPartUpper");
+ if (doesEntityDataExist(player, "v.rp.bodyPartUpper")) {
+ let bodyPartUpper = getEntityData(player, "v.rp.bodyPartUpper");
player.changeBodyPart(1, bodyPartUpper[0], bodyPartUpper[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPartLower")) {
- let bodyPartLower = getEntityData(player, "agrp.bodyPartLower");
+ if (doesEntityDataExist(player, "v.rp.bodyPartLower")) {
+ let bodyPartLower = getEntityData(player, "v.rp.bodyPartLower");
player.changeBodyPart(1, bodyPartLower[0], bodyPartLower[1]);
}
}
- if (getGame() == AGRP_GAME_GTA_IV) {
- if (doesEntityDataExist(player, "agrp.bodyPropHair")) {
- let bodyPropHair = getEntityData(player, "agrp.bodyPropHair");
+ if (getGame() == V_GAME_GTA_IV) {
+ if (doesEntityDataExist(player, "v.rp.bodyPropHair")) {
+ let bodyPropHair = getEntityData(player, "v.rp.bodyPropHair");
player.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropHead")) {
- let bodyPropHead = getEntityData(player, "agrp.bodyPropHead");
+ if (doesEntityDataExist(player, "v.rp.bodyPropHead")) {
+ let bodyPropHead = getEntityData(player, "v.rp.bodyPropHead");
player.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropEyes")) {
- let bodyPropEyes = getEntityData(player, "agrp.bodyPropEyes");
+ if (doesEntityDataExist(player, "v.rp.bodyPropEyes")) {
+ let bodyPropEyes = getEntityData(player, "v.rp.bodyPropEyes");
player.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropLeftHand")) {
- let bodyPropLeftHand = getEntityData(player, "agrp.bodyPropLeftHand");
+ if (doesEntityDataExist(player, "v.rp.bodyPropLeftHand")) {
+ let bodyPropLeftHand = getEntityData(player, "v.rp.bodyPropLeftHand");
player.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropRightHand")) {
- let bodyPropRightHand = getEntityData(player, "agrp.bodyPropRightHand");
+ if (doesEntityDataExist(player, "v.rp.bodyPropRightHand")) {
+ let bodyPropRightHand = getEntityData(player, "v.rp.bodyPropRightHand");
player.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropLeftWrist")) {
- let bodyPropLeftWrist = getEntityData(player, "agrp.bodyPropLeftWrist");
+ if (doesEntityDataExist(player, "v.rp.bodyPropLeftWrist")) {
+ let bodyPropLeftWrist = getEntityData(player, "v.rp.bodyPropLeftWrist");
player.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
- let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
+ if (doesEntityDataExist(player, "v.rp.bodyPropRightWrist")) {
+ let bodyPropRightWrist = getEntityData(player, "v.rp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
- let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
+ if (doesEntityDataExist(player, "v.rp.bodyPropRightWrist")) {
+ let bodyPropRightWrist = getEntityData(player, "v.rp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropHip")) {
- let bodyPropHip = getEntityData(player, "agrp.bodyPropHip");
+ if (doesEntityDataExist(player, "v.rp.bodyPropHip")) {
+ let bodyPropHip = getEntityData(player, "v.rp.bodyPropHip");
player.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropLeftFoot")) {
- let bodyPropLeftFoot = getEntityData(player, "agrp.bodyPropLeftFoot");
+ if (doesEntityDataExist(player, "v.rp.bodyPropLeftFoot")) {
+ let bodyPropLeftFoot = getEntityData(player, "v.rp.bodyPropLeftFoot");
player.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
}
- if (doesEntityDataExist(player, "agrp.bodyPropRightFoot")) {
- let bodyPropRightFoot = getEntityData(player, "agrp.bodyPropRightFoot");
+ if (doesEntityDataExist(player, "v.rp.bodyPropRightFoot")) {
+ let bodyPropRightFoot = getEntityData(player, "v.rp.bodyPropRightFoot");
player.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
}
}
@@ -367,13 +376,21 @@ function syncElementProperties(element) {
return false;
}
- if (doesEntityDataExist(element, "agrp.interior")) {
- if (typeof element.interior != "undefined") {
- element.interior = getEntityData(element, "agrp.interior");
+ if (isGameFeatureSupported("interior")) {
+ if (doesEntityDataExist(element, "v.rp.interior")) {
+ if (typeof element.interior != "undefined") {
+ element.interior = getEntityData(element, "v.rp.interior");
+ }
}
}
- if (getGame() == AGRP_GAME_MAFIA_ONE) {
+ if (isGameFeatureSupported("toggleCollision")) {
+ if (doesEntityDataExist(element, "v.rp.collisions")) {
+ element.collisionsEnabled = getEntityData(element, "v.rp.collisions");
+ }
+ }
+
+ if (getGame() == V_GAME_MAFIA_ONE) {
switch (element.type) {
case ELEMENT_VEHICLE:
syncVehicleProperties(element);
@@ -404,6 +421,10 @@ function syncElementProperties(element) {
syncPlayerProperties(element);
break;
+ case ELEMENT_OBJECT:
+ syncObjectProperties(element);
+ break;
+
default:
break;
}
@@ -414,7 +435,7 @@ function syncElementProperties(element) {
// ===========================================================================
function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupModel, hasInterior) {
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
}
}
diff --git a/scripts/client/time.nut b/scripts/client/time.nut
deleted file mode 100644
index 1dc93ceb..00000000
--- a/scripts/client/time.nut
+++ /dev/null
@@ -1,8 +0,0 @@
-function getCurrentUnixTimeStampSquirrel() {
- return time();
-}
-
-function getTimeStampOutput(timeStamp) {
- local dateObj = date(timeStamp);
- return dateObj.hour + ":" + dateObj.minute + ":" + dateObj.second;
-}
\ No newline at end of file
diff --git a/scripts/client/token.js b/scripts/client/token.js
new file mode 100644
index 00000000..952df384
--- /dev/null
+++ b/scripts/client/token.js
@@ -0,0 +1,20 @@
+// ===========================================================================
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
+// ===========================================================================
+// FILE: token.js
+// DESC: Provides "remember me" auto-login token system and functions
+// TYPE: Client (JavaScript)
+// ===========================================================================
+
+function saveToken(token) {
+ saveDataToFile("config/client/token.js", token);
+}
+
+// ===========================================================================
+
+function loadToken() {
+ return loadDataFromFile("config/client/token.js");
+}
+
+// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/utilities.js b/scripts/client/utilities.js
index 05000645..f5f3198e 100644
--- a/scripts/client/utilities.js
+++ b/scripts/client/utilities.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: utilities.js
// DESC: Provides util functions and arrays with data
@@ -9,18 +8,19 @@
// ===========================================================================
function setLocalPlayerFrozenState(state) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Setting frozen state to ${state}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting frozen state to ${state}`);
gui.showCursor(state, !state);
}
// ===========================================================================
function setLocalPlayerControlState(controlState, cursorState = false) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Setting control state to ${controlState} (Cursor: ${cursorState})`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting control state to ${controlState} (Cursor: ${cursorState})`);
controlsEnabled = controlState;
- if (getGame() == AGRP_GAME_GTA_III || getGame() == AGRP_GAME_GTA_VC) {
+ game.setPlayerControl(controlState);
+ if (getGame() == V_GAME_GTA_III || getGame() == V_GAME_GTA_VC) {
game.SET_PLAYER_CONTROL(game.GET_PLAYER_ID(), boolToInt(controlState));
- } else if (getGame() != AGRP_GAME_GTA_IV) {
+ } else if (getGame() <= V_GAME_GTA_IV) {
setElementCollisionsEnabled(localPlayer, controlState);
setPedInvincible(localPlayer, true);
}
@@ -28,14 +28,15 @@ function setLocalPlayerControlState(controlState, cursorState = false) {
// ===========================================================================
-function fadeLocalCamera(state, time) {
- if (isFadeCameraSupported()) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Fading camera ${(state) ? "in" : "out"} for ${time} seconds`);
+function fadeLocalCamera(state, duration, colour) {
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Fading camera ${(state) ? "in" : "out"} for ${time}ms`);
- if (isFadeCameraSupported()) {
- game.fadeCamera(state, time);
- }
- }
+ cameraFadeDuration = duration;
+ cameraFadeStart = sdl.ticks;
+ cameraFadeEnabled = true;
+ cameraFadeIn = state;
+ cameraFadeColour = colour;
+ cameraFadeAlpha = (state) ? 255 : 0;
}
// ===========================================================================
@@ -47,7 +48,7 @@ function removeLocalPlayerFromVehicle() {
// ===========================================================================
function restoreLocalCamera() {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Camera restored`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Camera restored`);
if (isGameFeatureSupported("customCamera")) {
game.restoreCamera(true);
}
@@ -55,16 +56,8 @@ function restoreLocalCamera() {
// ===========================================================================
-function clearLocalPlayerOwnedPeds() {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Clearing all self-owned peds ...`);
- clearSelfOwnedPeds();
- logToConsole(LOG_DEBUG, `[VRR.Utilities] All self-owned peds cleared`);
-};
-
-// ===========================================================================
-
function setLocalCameraLookAt(cameraPosition, cameraLookAt) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Set camera to look at [${cameraLookAt.x}, ${cameraLookAt.y}, ${cameraLookAt.z}] from [${cameraPosition.x}, ${cameraPosition.y}, ${cameraPosition.z}]`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Set camera to look at [${cameraLookAt.x}, ${cameraLookAt.y}, ${cameraLookAt.z}] from [${cameraPosition.x}, ${cameraPosition.y}, ${cameraPosition.z}]`);
if (isCustomCameraSupported()) {
game.setCameraLookAt(cameraPosition, cameraLookAt, true);
}
@@ -72,13 +65,21 @@ function setLocalCameraLookAt(cameraPosition, cameraLookAt) {
// ===========================================================================
+function clearLocalPlayerOwnedPeds() {
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Clearing all self-owned peds ...`);
+ clearSelfOwnedPeds();
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] All self-owned peds cleared`);
+};
+
+// ===========================================================================
+
function setCityAmbienceState(state, clearElements = false) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Ambient civilians and traffic ${(state) ? "enabled" : "disabled"}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Ambient civilians and traffic ${(state) ? "enabled" : "disabled"}`);
game.setTrafficEnabled(state);
- if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
+ if (getMultiplayerMod() == V_MPMOD_GTAC) {
game.setGenerateCarsAroundCamera(state);
- if (getGame() != AGRP_GAME_GTA_SA) {
+ if (getGame() != V_GAME_GTA_SA) {
game.setCiviliansEnabled(state);
}
@@ -96,7 +97,7 @@ function runClientCode(code, returnTo) {
try {
returnValue = eval("(" + code + ")");
} catch (error) {
- sendNetworkEventToServer("agrp.runCodeFail", returnTo, error.toString());
+ sendNetworkEventToServer("v.rp.runCodeFail", returnTo, error.toString());
return false;
}
let returnValueString = returnValue;
@@ -105,7 +106,7 @@ function runClientCode(code, returnTo) {
} else {
returnValueString = "null/undefined";
}
- sendNetworkEventToServer("agrp.runCodeSuccess", returnTo, returnValueString);
+ sendNetworkEventToServer("v.rp.runCodeSuccess", returnTo, returnValueString);
}
// ===========================================================================
@@ -113,7 +114,7 @@ function runClientCode(code, returnTo) {
function enterVehicleAsPassenger() {
if (localPlayer.vehicle == null) {
let tempVehicle = getClosestVehicle(localPlayer.position);
- if (getGame() != AGRP_GAME_GTA_IV) {
+ if (getGame() != V_GAME_GTA_IV) {
if (tempVehicle != null) {
localPlayer.enterVehicle(tempVehicle, false);
}
@@ -133,15 +134,15 @@ function enterVehicleAsPassenger() {
// ===========================================================================
function giveLocalPlayerWeapon(weaponId, ammo, active) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Giving weapon ${weaponId} with ${ammo} ammo`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Giving weapon ${weaponId} with ${ammo} ammo`);
forceWeapon = weaponId;
- if (getGame() == AGRP_GAME_MAFIA_ONE) {
+ if (getGame() == V_GAME_MAFIA_ONE) {
localPlayer.giveWeapon(weaponId, 0, ammo);
forceWeaponAmmo = 0;
forceWeaponClipAmmo = ammo;
} else {
localPlayer.giveWeapon(weaponId, ammo, active);
- if (getGame() < AGRP_GAME_GTA_IV) {
+ if (getGame() < V_GAME_GTA_IV) {
forceWeaponAmmo = localPlayer.getWeaponAmmunition(getWeaponSlot(weaponId));
forceWeaponClipAmmo = localPlayer.getWeaponClipAmmunition(getWeaponSlot(weaponId));
} else {
@@ -154,7 +155,7 @@ function giveLocalPlayerWeapon(weaponId, ammo, active) {
// ===========================================================================
function clearLocalPlayerWeapons(clearData) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Clearing weapons`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Clearing weapons`);
localPlayer.clearWeapons();
if (clearData == true) {
forceWeapon = 0;
@@ -172,7 +173,7 @@ function getClosestVehicle(pos) {
// ===========================================================================
function setLocalPlayerPosition(position) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Setting position to ${position.x}, ${position.y}, ${position.z}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting position to ${position.x}, ${position.y}, ${position.z}`);
if (typeof localPlayer.velocity != "undefined") {
localPlayer.velocity = toVector3(0.0, 0.0, 0.0);
}
@@ -185,7 +186,7 @@ function setLocalPlayerPosition(position) {
// ===========================================================================
function setLocalPlayerHeading(heading) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Setting heading to ${heading}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting heading to ${heading}`);
if (typeof localPlayer.heading != "undefined") {
localPlayer.heading = heading;
}
@@ -194,8 +195,8 @@ function setLocalPlayerHeading(heading) {
// ===========================================================================
function setLocalPlayerInterior(interior) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Setting interior to ${interior}`);
- if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting interior to ${interior}`);
+ if (getMultiplayerMod() == V_MPMOD_GTAC) {
if (!isGTAIV()) {
localPlayer.interior = interior;
game.cameraInterior = interior;
@@ -213,8 +214,8 @@ function setLocalPlayerInterior(interior) {
if (areServerElementsSupported() && isGameFeatureSupported("interior")) {
let vehicles = getElementsByType(ELEMENT_VEHICLE);
for (let i in vehicles) {
- if (getEntityData(vehicles[i], "agrp.interior")) {
- vehicles[i].interior = getEntityData(vehicles[i], "agrp.interior");
+ if (getEntityData(vehicles[i], "v.rp.interior")) {
+ vehicles[i].interior = getEntityData(vehicles[i], "v.rp.interior");
}
}
}
@@ -222,13 +223,16 @@ function setLocalPlayerInterior(interior) {
// ===========================================================================
-function setSnowState(falling, ground) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Setting falling snow to ${falling} and ground snow to ${ground}`);
+function setSnowState(falling, ground, forceGround) {
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting falling snow to ${falling} and ground snow to ${ground}`);
snowing = falling;
- if (ground) {
- forceSnowing(false);
- forceSnowing(ground);
- }
+ //snow.force = ground;
+ //if (forceGround == true) {
+ // forceSnowing(forceGround);
+ // groundSnow.flush();
+ //} else {
+ // snow.enabled = ground;
+ //}
}
// ===========================================================================
@@ -240,8 +244,8 @@ function setLocalPlayerHealth(health) {
// ===========================================================================
function playPedSpeech(pedName, speechId) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Making ${pedName}'s ped talk (${speechId})`);
- if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Making ${pedName}'s ped talk (${speechId})`);
+ if (getMultiplayerMod() == V_MPMOD_GTAC) {
game.SET_CHAR_SAY(int, int);
}
}
@@ -249,7 +253,7 @@ function playPedSpeech(pedName, speechId) {
// ===========================================================================
function clearLocalPedState() {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Clearing local ped state`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Clearing local ped state`);
localPlayer.clearObjective();
}
@@ -262,8 +266,8 @@ function getWeaponSlot(weaponId) {
// ===========================================================================
function setLocalPlayerDrunkEffect(amount, duration) {
- if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Drunk effect set to ${amount} for ${duration} ms`);
+ if (getMultiplayerMod() == V_MPMOD_GTAC) {
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Drunk effect set to ${amount} for ${duration} ms`);
drunkEffectAmount = 0;
drunkEffectDurationTimer = setInterval(function () {
drunkEffectAmount = drunkEffectAmount;
@@ -313,7 +317,7 @@ function clearSelfOwnedVehicles() {
// ===========================================================================
function setMouseCameraState(state) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] ${(state) ? "Enabled" : "Disabled"} mouse camera`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] ${(state) ? "Enabled" : "Disabled"} mouse camera`);
mouseCameraEnabled = state;
SetStandardControlsEnabled(!mouseCameraEnabled);
}
@@ -321,50 +325,33 @@ function setMouseCameraState(state) {
// ===========================================================================
function toggleMouseCursor() {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] ${(!gui.cursorEnabled) ? "Enabled" : "Disabled"} mouse cursor`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] ${(!gui.cursorEnabled) ? "Enabled" : "Disabled"} mouse cursor`);
gui.showCursor(!gui.cursorEnabled, gui.cursorEnabled);
}
// ===========================================================================
function toggleMouseCursor() {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] ${(!gui.cursorEnabled) ? "Enabled" : "Disabled"} mouse cursor`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] ${(!gui.cursorEnabled) ? "Enabled" : "Disabled"} mouse cursor`);
setMouseCameraState(!mouseCameraEnabled);
}
// ===========================================================================
function setPlayerWeaponDamageEvent(clientName, eventType) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Set ${clientName} damage event type to ${eventType}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Set ${clientName} damage event type to ${eventType}`);
weaponDamageEvent[clientName] = eventType;
}
// ===========================================================================
function setPlayerWeaponDamageEnabled(clientName, state) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] ${(state) ? "Enabled" : "Disabled"} damage from ${clientName}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] ${(state) ? "Enabled" : "Disabled"} damage from ${clientName}`);
weaponDamageEnabled[clientName] = state;
}
// ===========================================================================
-function setLocalPlayerCash(amount) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Setting local player money`);
- if (localPlayer == null) {
- return false;
- }
-
- if (typeof localPlayer.money != "undefined") {
- localPlayer.money = toInteger(amount);
- }
-
- if (getGame() == AGRP_GAME_GTA_IV) {
- natives.setMultiplayerHudCash(amount);
- }
-}
-
-// ===========================================================================
-
function destroyAutoCreatedPickups() {
if (typeof ELEMENT_PICKUP != "undefined") {
getElementsByType(ELEMENT_PICKUP).forEach(function (pickup) {
@@ -411,21 +398,24 @@ function processWantedLevelReset() {
function processLocalPlayerVehicleControlState() {
if (areServerElementsSupported()) {
- if (inVehicle && localPlayer.vehicle != null) {
- if (doesEntityDataExist(localPlayer.vehicle, "agrp.engine")) {
- if (getEntityData(localPlayer.vehicle, "agrp.engine") == false) {
+ if (localPlayer.vehicle != null) {
+ if (doesEntityDataExist(localPlayer.vehicle, "v.rp.engine")) {
+ if (getEntityData(localPlayer.vehicle, "v.rp.engine") == false) {
localPlayer.vehicle.engine = false;
+ //localPlayer.vehicle.netFlags.sendSync = false;
if (!localPlayer.vehicle.engine) {
if (typeof localPlayer.vehicle.velocity != "undefined") {
localPlayer.vehicle.velocity = toVector3(0.0, 0.0, 0.0);
localPlayer.vehicle.turnVelocity = toVector3(0.0, 0.0, 0.0);
}
- //if(parkedVehiclePosition) {
+ //if (parkedVehiclePosition) {
// localPlayer.vehicle.position = parkedVehiclePosition;
// localPlayer.vehicle.heading = parkedVehicleHeading;
//}
}
+ } else {
+ //localPlayer.vehicle.netFlags.sendSync = true;
}
}
}
@@ -439,12 +429,12 @@ function forceLocalPlayerEquippedWeaponItem() {
if (forceWeapon != 0) {
if (localPlayer.weapon != forceWeapon) {
localPlayer.weapon = forceWeapon;
- if (getGame() < AGRP_GAME_GTA_IV) {
+ if (getGame() < V_GAME_GTA_IV) {
localPlayer.setWeaponClipAmmunition(getWeaponSlot(forceWeapon), forceWeaponClipAmmo);
localPlayer.setWeaponAmmunition(getWeaponSlot(forceWeapon), forceWeaponAmmo);
}
} else {
- //if(getGame() < AGRP_GAME_GTA_IV) {
+ //if(getGame() < V_GAME_GTA_IV) {
// forceWeaponClipAmmo = localPlayer.getWeaponClipAmmunition(getWeaponSlot(forceWeapon));
// forceWeaponAmmo = localPlayer.getWeaponAmmunition(getWeaponSlot(forceWeapon));
//}
@@ -471,7 +461,7 @@ function getLocalPlayerPosition() {
// ===========================================================================
function getVehicleForNetworkEvent(vehicle) {
- if (getGame() == AGRP_GAME_GTA_IV) {
+ if (getGame() == V_GAME_GTA_IV) {
return natives.getNetworkIdFromVehicle(vehicle);
}
return vehicle.id;
@@ -480,7 +470,7 @@ function getVehicleForNetworkEvent(vehicle) {
// ===========================================================================
function setMinuteDuration(minuteDuration) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Setting minute duration to ${minuteDuration}ms`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting minute duration to ${minuteDuration}ms`);
if (isTimeSupported()) {
game.time.minuteDuration = minuteDuration;
@@ -543,7 +533,7 @@ function processNearbyPickups() {
//if(pickups[i].interior == localPlayer.interior && pickups[i].dimension == localPlayer.dimension) {
if (currentPickup != pickups[i]) {
currentPickup = pickups[i];
- sendNetworkEventToServer("agrp.pickup", pickups[i].id);
+ sendNetworkEventToServer("v.rp.pickup", pickups[i].id);
}
//}
}
@@ -554,7 +544,7 @@ function processNearbyPickups() {
// ===========================================================================
function processGameSpecifics() {
- if (getGame() < AGRP_GAME_GTA_IV) {
+ if (getGame() < V_GAME_GTA_IV) {
game.clearMessages();
}
@@ -574,4 +564,56 @@ function setProfanityFilterState(state) {
updateChatBox();
}
+// ===========================================================================
+
+function processVehicleCruiseControl() {
+ if (localPlayer.vehicle == null) {
+ return false;
+ }
+
+ if (!localPlayer.vehicle.isSyncer) {
+ return false;
+ }
+
+ if (getLocalPlayerVehicleSeat() != 0) {
+ return false;
+ }
+
+ if (cruiseControlEnabled) {
+ setVehicleSpeed(cruiseControlSpeed);
+ }
+}
+
+// ===========================================================================
+
+function getCurrencyString(amount) {
+ let tempString = currencyString;
+ tempString = tempString.replace("{AMOUNT}", toString(makeLargeNumberReadable(amount)));
+ return tempString;
+}
+
+// ===========================================================================
+
+function updateLocalPlayerMoney() {
+ if (localPlayer == null) {
+ return false;
+ }
+
+ if (typeof localPlayer.money != "undefined") {
+ localPlayer.money = toInteger(localPlayerMoney);
+ }
+
+ if (getGame() == V_GAME_GTA_IV) {
+ natives.setMultiplayerHudCash(localPlayerMoney);
+ }
+}
+
+// ===========================================================================
+
+function setLocalPlayerMoney(amount) {
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting local player money`);
+ localPlayerMoney = amount;
+ updateLocalPlayerMoney();
+}
+
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/client/vehicle.js b/scripts/client/vehicle.js
index 2d824e35..a0947feb 100644
--- a/scripts/client/vehicle.js
+++ b/scripts/client/vehicle.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: vehicle.js
// DESC: Provides vehicle functions and arrays with data
@@ -31,9 +30,9 @@ class VehicleData {
// ===========================================================================
function receiveVehicleFromServer(vehicleId, position, model, colour1, colour2, colour3 = 0, colour4 = 0, locked = false, lights = false, engine = false, licensePlate = "") {
- logToConsole(LOG_DEBUG, `[VRR.Vehicle] Received vehicle ${vehicleId} (${getVehicleNameFromModel(model, getGame())}) from server`);
+ logToConsole(LOG_DEBUG, `[AGRP.Vehicle] Received vehicle ${vehicleId} (${getVehicleNameFromModel(model, getGame())}) from server`);
- if (getGame() != AGRP_GAME_GTA_IV) {
+ if (getGame() != V_GAME_GTA_IV) {
return false;
}
@@ -53,7 +52,7 @@ function receiveVehicleFromServer(vehicleId, position, model, colour1, colour2,
let vehicle = natives.getVehicleFromNetworkId(vehicleId.ivNetworkId);
} else {
- //logToConsole(LOG_DEBUG, `[VRR.Vehicle] Vehicle ${vehicleId} doesn't exist. Adding ...`);
+ //logToConsole(LOG_DEBUG, `[AGRP.Vehicle] Vehicle ${vehicleId} doesn't exist. Adding ...`);
//let tempVehicleData = new VehicleData(vehicleId, name, position, blipModel, pickupModel);
//vehicles.push(tempVehicleData);
@@ -64,20 +63,20 @@ function receiveVehicleFromServer(vehicleId, position, model, colour1, colour2,
// ===========================================================================
function processVehiclePurchasing() {
- if (vehiclePurchaseState == AGRP_VEHBUYSTATE_TESTDRIVE) {
+ if (vehiclePurchaseState == V_VEHBUYSTATE_TESTDRIVE) {
if (getLocalPlayerVehicle() == false) {
- vehiclePurchaseState = AGRP_VEHBUYSTATE_EXITVEH;
- sendNetworkEventToServer("agrp.vehBuyState", AGRP_VEHBUYSTATE_EXITVEH);
+ vehiclePurchaseState = V_VEHBUYSTATE_EXITVEH;
+ sendNetworkEventToServer("v.rp.vehBuyState", V_VEHBUYSTATE_EXITVEH);
return false;
} else {
if (vehiclePurchasing == getLocalPlayerVehicle()) {
if (getDistance(getLocalPlayerVehicle().position, vehiclePurchasePosition) >= 25) {
- vehiclePurchaseState = AGRP_VEHBUYSTATE_FARENOUGH;
- sendNetworkEventToServer("agrp.vehBuyState", AGRP_VEHBUYSTATE_FARENOUGH);
+ vehiclePurchaseState = V_VEHBUYSTATE_FARENOUGH;
+ sendNetworkEventToServer("v.rp.vehBuyState", V_VEHBUYSTATE_FARENOUGH);
}
} else {
- vehiclePurchaseState = AGRP_VEHBUYSTATE_WRONGVEH;
- sendNetworkEventToServer("agrp.vehBuyState", AGRP_VEHBUYSTATE_WRONGVEH);
+ vehiclePurchaseState = V_VEHBUYSTATE_WRONGVEH;
+ sendNetworkEventToServer("v.rp.vehBuyState", V_VEHBUYSTATE_WRONGVEH);
}
}
}
@@ -131,14 +130,13 @@ function setAllVehicleDataIndexes() {
// ===========================================================================
-function toggleVehicleCruiseControl(vehicle) {
- if (!vehicle.isSyncer) {
+function toggleLocalVehicleCruiseControl() {
+ if (!localPlayer.vehicle.isSyncer) {
return false;
}
-
-
- cruiseControl = !cruiseControl;
+ cruiseControlEnabled = !cruiseControlEnabled;
+ cruiseControlSpeed = getVehicleSpeed(vehicle);
}
// ===========================================================================
@@ -155,7 +153,7 @@ function getVehicleSpeed(vehicle) {
speed = getLength(vecMoveSpeed[0], vecMoveSpeed[1], vecMoveSpeed[2]);
}
- if (getGame() == AGRP_GAME_GTA_IV || getGame() == AGRP_GAME_GTA_IV_EFLC) {
+ if (getGame() == V_GAME_GTA_IV || getGame() == V_GAME_GTA_IV_EFLC) {
speed /= 40.0;
}
diff --git a/scripts/server/accent.js b/scripts/server/accent.js
index eb934510..f7ee472a 100644
--- a/scripts/server/accent.js
+++ b/scripts/server/accent.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: accent.js
// DESC: Provides accent functions and usage
diff --git a/scripts/server/account.js b/scripts/server/account.js
index bd76b8e4..8fa82d4b 100644
--- a/scripts/server/account.js
+++ b/scripts/server/account.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: account.js
// DESC: Provides account functions and usage
@@ -9,35 +8,35 @@
// ===========================================================================
// Account Contact Types
-const AGRP_CONTACT_NONE = 0;
-const AGRP_CONTACT_NEUTRAL = 1; // Contact is neutral. Used for general contacts with no special additional features
-const AGRP_CONTACT_FRIEND = 2; // Contact is a friend. Shows when they're online.
-const AGRP_CONTACT_BLOCKED = 3; // Contact is blocked. Prevents all communication to/from them except for RP
+const V_CONTACT_NONE = 0;
+const V_CONTACT_NEUTRAL = 1; // Contact is neutral. Used for general contacts with no special additional features
+const V_CONTACT_FRIEND = 2; // Contact is a friend. Shows when they're online.
+const V_CONTACT_BLOCKED = 3; // Contact is blocked. Prevents all communication to/from them except for RP
// ===========================================================================
// Account Authentication Methods
-const AGRP_ACCT_AUTHMETHOD_NONE = 0; // None
-const AGRP_ACCT_AUTHMETHOD_EMAIL = 1; // Email
-const AGRP_ACCT_AUTHMETHOD_PHONENUM = 2; // Phone number
-const AGRP_ACCT_AUTHMETHOD_2FA = 3; // Two factor authentication app (authy, google authenticator, etc)
-const AGRP_ACCT_AUTHMETHOD_PEBBLE = 4; // Pebble watch (this one's for Vortrex but anybody with a Pebble can use)
-const AGRP_ACCT_AUTHMETHOD_PHONEAPP = 5; // The Android/iOS companion app (will initially be a web based thing until I can get the apps created)
+const V_ACCT_AUTHMETHOD_NONE = 0; // None
+const V_ACCT_AUTHMETHOD_EMAIL = 1; // Email
+const V_ACCT_AUTHMETHOD_PHONENUM = 2; // Phone number
+const V_ACCT_AUTHMETHOD_2FA = 3; // Two factor authentication app (authy, google authenticator, etc)
+const V_ACCT_AUTHMETHOD_PEBBLE = 4; // Pebble watch (this one's for Vortrex but anybody with a Pebble can use)
+const V_ACCT_AUTHMETHOD_PHONEAPP = 5; // The Android/iOS companion app (will initially be a web based thing until I can get the apps created)
// ===========================================================================
// Two-Factor Authentication States
-const AGRP_2FA_STATE_NONE = 0; // None
-const AGRP_2FA_STATE_CODEINPUT = 1; // Waiting on player to enter code to play
-const AGRP_2FA_STATE_SETUP_CODETOAPP = 2; // Providing player with a code to put in their auth app
-const AGRP_2FA_STATE_SETUP_CODEFROMAPP = 3; // Waiting on player to enter code from auth app to set up
+const V_2FA_STATE_NONE = 0; // None
+const V_2FA_STATE_CODEINPUT = 1; // Waiting on player to enter code to play
+const V_2FA_STATE_SETUP_CODETOAPP = 2; // Providing player with a code to put in their auth app
+const V_2FA_STATE_SETUP_CODEFROMAPP = 3; // Waiting on player to enter code from auth app to set up
// ===========================================================================
// Reset Password States
-const AGRP_RESETPASS_STATE_NONE = 0; // None
-const AGRP_RESETPASS_STATE_CODEINPUT = 1; // Waiting on player to enter code sent via email
-const AGRP_RESETPASS_STATE_SETPASS = 2; // Waiting on player to enter new password
+const V_RESETPASS_STATE_NONE = 0; // None
+const V_RESETPASS_STATE_CODEINPUT = 1; // Waiting on player to enter code sent via email
+const V_RESETPASS_STATE_SETPASS = 2; // Waiting on player to enter new password
// ===========================================================================
@@ -58,6 +57,7 @@ class AccountData {
this.ircAccount = "";
this.discordAccount = 0;
this.settings = 0;
+ this.seenActionTips = 0;
this.emailAddress = "";
this.ipAddress = 0;
@@ -87,6 +87,7 @@ class AccountData {
this.ircAccount = toInteger(dbAssoc["acct_irc"]);
this.discordAccount = toInteger(dbAssoc["acct_discord"]);
this.settings = toInteger(dbAssoc["acct_svr_settings"]);
+ this.seenActionTips = toInteger(dbAssoc["acct_svr_seen_action_tips"]);
this.emailAddress = toString(dbAssoc["acct_email"]);
this.ipAddress = toString(dbAssoc["acct_ip"]);
@@ -193,8 +194,8 @@ class AccountStaffNoteData {
// ===========================================================================
function initAccountScript() {
- logToConsole(LOG_DEBUG, "[VRR.Account]: Initializing account script ...");
- logToConsole(LOG_DEBUG, "[VRR.Account]: Account script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.Account]: Initializing account script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Account]: Account script initialized!");
}
// ===========================================================================
@@ -283,31 +284,31 @@ function toggleAccountGUICommand(command, params, client) {
if (doesPlayerHaveGUIEnabled(client)) {
getPlayerData(client).accountData.settings = addBitFlag(getPlayerData(client).accountData.settings, flagValue);
messagePlayerNormal(client, getLocaleString(client, "GUIAccountSettingToggle", `{softRed}${toUpperCase(getLocaleString(client, "Off"))}{MAINCOLOUR}`));
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} has toggled GUI for their account OFF.`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} has toggled GUI for their account OFF.`);
} else {
getPlayerData(client).accountData.settings = removeBitFlag(getPlayerData(client).accountData.settings, flagValue);
messagePlayerNormal(client, getLocaleString(client, "GUIAccountSettingToggle", `{softGreen}${toUpperCase(getLocaleString(client, "On"))}{MAINCOLOUR}`));
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} has toggled GUI for their account ON.`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} has toggled GUI for their account ON.`);
}
if (!isPlayerLoggedIn(client)) {
if (getPlayerData().accountData.databaseId != 0) {
if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
showPlayerLoginGUI(client);
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the login GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the login GUI`);
} else {
hideAllPlayerGUI(client);
messagePlayerNormal(client, getLocaleString(client, "WelcomeBack", getServerName(), getPlayerName(client), "{ALTCOLOUR}/login{MAINCOLOUR}"));
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the login message (GUI disabled)`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the login message (GUI disabled)`);
}
} else {
if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
showPlayerRegistrationGUI(client);
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the register GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the register GUI`);
} else {
hideAllPlayerGUI(client);
messagePlayerNormal(client, getLocaleString(client, "WelcomeNewPlayer", getServerName(), getPlayerName(client), "{ALTCOLOUR}/register{MAINCOLOUR}"));
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the register message (GUI disabled)`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the register message (GUI disabled)`);
}
}
}
@@ -322,11 +323,11 @@ function toggleAccountLoginAttemptNotificationsCommand(command, params, client)
if (doesPlayerHaveLoginAlertsEnabled(client)) {
getPlayerData(client).accountData.settings = removeBitFlag(getPlayerData(client).accountData.settings, flagValue);
messagePlayerNormal(client, `⚙️ You turned ${getBoolRedGreenInlineColour(false)}OFF{MAINCOLOUR} notification by email when somebody tries to login to your account`);
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} has toggled the login attempt email notifications OFF for their account`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} has toggled the login attempt email notifications OFF for their account`);
} else {
getPlayerData(client).accountData.settings = addBitFlag(getPlayerData(client).accountData.settings, flagValue);
messagePlayerNormal(client, `⚙️ You turned ${getBoolRedGreenInlineColour(true)}ON{MAINCOLOUR} notification by email when somebody tries to login to your account`);
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} has toggled the login attempt email notifications OFF for their account`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} has toggled the login attempt email notifications OFF for their account`);
}
return true;
@@ -340,14 +341,14 @@ function toggleAccountServerLogoCommand(command, params, client) {
if (!doesPlayerHaveLogoEnabled(client)) {
getPlayerData(client).accountData.settings = removeBitFlag(getPlayerData(client).accountData.settings, flagValue);
messagePlayerSuccess(client, getLocaleString(client, "AccountServerLogoSet", `${getBoolRedGreenInlineColour(true)}${getLocaleString(client, "On")}{MAINCOLOUR}`));
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} has toggled the server logo ON for their account`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} has toggled the server logo ON for their account`);
if (getServerConfig().showLogo) {
updatePlayerShowLogoState(client, true);
}
} else {
getPlayerData(client).accountData.settings = addBitFlag(getPlayerData(client).accountData.settings, flagValue);
messagePlayerSuccess(client, getLocaleString(client, "AccountServerLogoSet", `${getBoolRedGreenInlineColour(false)}${getLocaleString(client, "Off")}{MAINCOLOUR}`));
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} has toggled the server logo OFF for their account`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} has toggled the server logo OFF for their account`);
updatePlayerShowLogoState(client, false);
}
@@ -376,11 +377,11 @@ function toggleAccountTwoFactorAuthCommand(command, params, client) {
if (!doesPlayerHaveTwoFactorAuthEnabled(client)) {
getPlayerData(client).accountData.settings = addBitFlag(getPlayerData(client).accountData.settings, flagValue);
messagePlayerSuccess(client, getLocaleString(client, "TwoFactorAuthSet", `${getBoolRedGreenInlineColour(true)}${getLocaleString(client, "On")}{MAINCOLOUR}`));
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} has toggled two-factor authentication ON for their account`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} has toggled two-factor authentication ON for their account`);
} else {
getPlayerData(client).accountData.settings = removeBitFlag(getPlayerData(client).accountData.settings, flagValue);
messagePlayerSuccess(client, getLocaleString(client, "TwoFactorAuthSet", `${getBoolRedGreenInlineColour(false)}${toUpperCase(getLocaleString(client, "Off"))}{MAINCOLOUR}`));
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} has toggled two-factor authentication OFF for their account`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} has toggled two-factor authentication OFF for their account`);
}
return true;
}
@@ -495,7 +496,7 @@ function changeAccountPasswordCommand(command, params, client) {
}
getPlayerData(client).accountData.password = hashAccountPassword(getPlayerData(client).accountData.name, params);
- messagePlayerSuccess(client, `Your password has been changed!`);
+ messagePlayerSuccess(client, getLocaleString(client, "PasswordChanged"));
}
// ===========================================================================
@@ -591,7 +592,7 @@ function verifyAccountEmailCommand(command, params, client) {
let verificationCode = getParam(params, " ", 1);
if (isAccountEmailVerified(getPlayerData(client).accountData)) {
- messagePlayerError(client, `You already verified your email!`);
+ messagePlayerError(client, getLocaleString(client, "AccountEmailAlreadyVerified"));
return false;
}
@@ -644,7 +645,7 @@ function resetAccountPasswordCommand(command, params, client) {
// ===========================================================================
function setAccountDiscordCommand(command, params, client) {
- messagePlayerError(client, `This command is not yet finished and will be available soon!`);
+ messagePlayerError(client, getLocaleString(client, "CommandDisabled"));
return false;
if (areParamsEmpty(params)) {
@@ -715,26 +716,23 @@ function isAccountPasswordCorrect(accountData, password) {
function loadAccountFromName(accountName, fullLoad = false) {
let dbConnection = connectToDatabase();
+ let dbAssoc = [];
+
if (dbConnection) {
accountName = escapeDatabaseString(dbConnection, accountName);
let dbQueryString = `SELECT acct_main.*, acct_svr.* FROM acct_main INNER JOIN acct_svr ON acct_svr.acct_svr_acct = acct_main.acct_id AND acct_svr.acct_svr_svr = ${getServerId()} WHERE acct_name = '${accountName}' LIMIT 1;`;
- let dbQuery = queryDatabase(dbConnection, dbQueryString);
- if (dbQuery) {
- if (dbQuery.numRows > 0) {
- let dbAssoc = fetchQueryAssoc(dbQuery);
- let tempAccountData = new AccountData(dbAssoc);
- if (fullLoad) {
- tempAccountData.messages = loadAccountMessagesFromDatabase(tempAccountData.databaseId);
- tempAccountData.notes = loadAccountStaffNotesFromDatabase(tempAccountData.databaseId);
- tempAccountData.contacts = loadAccountContactsFromDatabase(tempAccountData.databaseId);
- }
- freeDatabaseQuery(dbQuery);
- return tempAccountData;
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ let tempAccountData = new AccountData(dbAssoc[0]);
+ if (fullLoad) {
+ tempAccountData.messages = loadAccountMessagesFromDatabase(tempAccountData.databaseId);
+ tempAccountData.notes = loadAccountStaffNotesFromDatabase(tempAccountData.databaseId);
+ tempAccountData.contacts = loadAccountContactsFromDatabase(tempAccountData.databaseId);
}
+ return tempAccountData;
}
disconnectFromDatabase(dbConnection);
}
-
return false;
}
@@ -742,13 +740,13 @@ function loadAccountFromName(accountName, fullLoad = false) {
function loadAccountFromId(accountId, fullLoad = false) {
let dbConnection = connectToDatabase();
+ let dbAssoc = [];
+
if (dbConnection) {
let dbQueryString = `SELECT acct_main.*, acct_svr.* FROM acct_main INNER JOIN acct_svr ON acct_svr.acct_svr_acct = acct_main.acct_id AND acct_svr.acct_svr_svr = ${getServerId()} WHERE acct_id = ${accountId} LIMIT 1;`;
- let dbQuery = queryDatabase(dbConnection, dbQueryString);
- if (dbQuery) {
- let dbAssoc = fetchQueryAssoc(dbQuery);
- let tempAccountData = new AccountData(dbAssoc);
- freeDatabaseQuery(dbQuery);
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ let tempAccountData = new AccountData(dbAssoc[0]);
if (fullLoad) {
tempAccountData.messages = loadAccountMessagesFromDatabase(tempAccountData.databaseId);
tempAccountData.notes = loadAccountStaffNotesFromDatabase(tempAccountData.databaseId);
@@ -804,7 +802,7 @@ function getAccountHashingFunction() {
// ===========================================================================
-function isNameRegistered(name) {
+async function isNameRegistered(name) {
let accountData = loadAccountFromName(name, true);
if (accountData.databaseId > 0) {
return true;
@@ -830,7 +828,7 @@ function saltAccountInfo(name, password) {
// ===========================================================================
function loginSuccess(client) {
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} successfully logged in.`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} successfully logged in.`);
getPlayerData(client).loggedIn = true;
if (getPlayerData(client).loginTimeout != null) {
@@ -841,23 +839,23 @@ function loginSuccess(client) {
updateConnectionLogOnAuth(client, getPlayerData(client).accountData.databaseId);
if (doesPlayerHaveStaffPermission(client, "Developer") || doesPlayerHaveStaffPermission(client, "ManageServer")) {
- logToConsole(LOG_WARN, `[VRR.Account] ${getPlayerDisplayForConsole(client)} has needed permissions and is being given administrator access`);
+ logToConsole(LOG_WARN, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} has needed permissions and is being given administrator access`);
setPlayerNativeAdminState(client, true);
}
if (doesServerHaveTesterOnlyEnabled()) {
if (!hasBitFlag(getPlayerData(client).accountData.flags.moderation, getModerationFlagValue("IsTester"))) {
setTimeout(function () {
- getPlayerData(client).customDisconnectReason = "Kicked - Not a tester";
+ getPlayerData(client).customDisconnectReason = "NotATester";
disconnectPlayer(client);
}, 3500);
if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the error GUI (not a tester).`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the error GUI (not a tester).`);
showPlayerErrorGUI(client, getLocaleString(client, "NotATester"), getLocaleString(client, "AccessDenied"));
return false;
} else {
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the "not a tester" error message (GUI disabled).`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the "not a tester" error message (GUI disabled).`);
messagePlayerError(client, getLocaleString(client, "NotATester"));
return false;
}
@@ -867,11 +865,11 @@ function loginSuccess(client) {
if (getPlayerData(client).subAccounts.length == 0) {
if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
showPlayerPrompt(client, getLocaleString(client, "NoCharactersGUIMessage"), getLocaleString(client, "NoCharactersGUIWindowTitle"), getLocaleString(client, "Yes"), getLocaleString(client, "No"));
- getPlayerData(client).promptType = AGRP_PROMPT_CREATEFIRSTCHAR;
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the no characters prompt GUI`);
+ getPlayerData(client).promptType = V_PROMPT_CREATEFIRSTCHAR;
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the no characters prompt GUI`);
} else {
messagePlayerAlert(client, getLocaleString(client, "NoCharactersChatMessage", `{ALTCOLOUR}/newchar{MAINCOLOUR}`));
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the no characters message (GUI disabled)`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the no characters message (GUI disabled)`);
}
} else {
showCharacterSelectToClient(client);
@@ -921,6 +919,7 @@ function saveAccountToDatabase(accountData) {
let data2 = [
["acct_svr_settings", (accountData.settings != NaN) ? toInteger(accountData.settings) : 0],
+ ["acct_svr_seen_action_tips", (accountData.seenActionTips != NaN) ? toInteger(accountData.seenActionTips) : 0],
["acct_svr_staff_title", toString(safeStaffTitle)],
["acct_svr_staff_flags", (accountData.flags.admin != NaN) ? toInteger(accountData.flags.admin) : 0],
["acct_svr_mod_flags", (accountData.flags.moderation != NaN) ? toInteger(accountData.flags.moderation) : 0],
@@ -1034,7 +1033,7 @@ function saveAccountContactsToDatabase(accountContactData) {
// ===========================================================================
-function createAccount(name, password, email = "") {
+async function createAccount(name, password, email = "") {
let dbConnection = connectToDatabase();
if (dbConnection) {
@@ -1064,41 +1063,41 @@ function createAccount(name, password, email = "") {
function checkLogin(client, password) {
getPlayerData(client).loginAttemptsRemaining = getPlayerData(client).loginAttemptsRemaining - 1;
if (getPlayerData(client).loginAttemptsRemaining <= 0) {
- getPlayerData(client).customDisconnectReason = "Kicked - Failed to login";
+ getPlayerData(client).customDisconnectReason = "FailedToLogin";
disconnectPlayer(client);
}
if (isPlayerLoggedIn(client)) {
- logToConsole(LOG_WARN, `[VRR.Account] ${getPlayerDisplayForConsole(client)} attempted to login but is already logged in`);
+ logToConsole(LOG_WARN, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} attempted to login but is already logged in`);
if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
showPlayerLoginSuccessGUI(client);
} else {
- messagePlayerError(client, "You are already logged in!");
+ messagePlayerError(client, getLocaleString(client, "AlreadyLoggedIn"));
}
return false;
}
if (!isPlayerRegistered(client)) {
- logToConsole(LOG_WARN, `[VRR.Account] ${getPlayerDisplayForConsole(client)} attempted to login but is not registered`);
+ logToConsole(LOG_WARN, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} attempted to login but is not registered`);
if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
showPlayerRegistrationGUI(client);
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the register GUI`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the register GUI`);
} else {
messagePlayerError(client, "Your name is not registered! Use /register to make an account.");
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the register message (GUI disabled)`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the register message (GUI disabled)`);
}
return false;
}
if (areParamsEmpty(password)) {
- logToConsole(LOG_WARN, `[VRR.Account] ${getPlayerDisplayForConsole(client)} attempted to login but failed (empty password). ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining`);
+ logToConsole(LOG_WARN, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} attempted to login but failed (empty password). ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining`);
if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
- showPlayerLoginFailedGUI(client, `Invalid password! ${getPlayerData(client).loginAttemptsRemaining} tries remaining.`);
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the login GUI with ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining alert.`);
+ showPlayerLoginFailedGUI(client, getLocaleString(client, "LoginFailedInvalidPassword", getPlayerData(client).loginAttemptsRemaining));
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the login GUI with ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining alert.`);
} else {
- messagePlayerError(client, `You must enter a password! ${getPlayerData(client).loginAttemptsRemaining} tries remaining.`);
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the login message (GUI disabled) with ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining alert.`);
+ messagePlayerError(client, getLocaleString(client, "LoginFailedNoPassword", getPlayerData(client).loginAttemptsRemaining));
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the login message (GUI disabled) with ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining alert.`);
}
// Disabling email login alerts for now. It hangs the server for a couple seconds. Need a way to thread it.
@@ -1109,13 +1108,13 @@ function checkLogin(client, password) {
}
if (!isAccountPasswordCorrect(getPlayerData(client).accountData, hashAccountPassword(getPlayerName(client), password))) {
- logToConsole(LOG_WARN, `[VRR.Account] ${getPlayerDisplayForConsole(client)} attempted to login but failed (wrong password). ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining`);
+ logToConsole(LOG_WARN, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} attempted to login but failed (wrong password). ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining`);
if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
- showPlayerLoginFailedGUI(client, `Invalid password! ${getPlayerData(client).loginAttemptsRemaining} tries remaining.`);
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the login GUI with ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining alert.`);
+ showPlayerLoginFailedGUI(client, getLocaleString(client, "LoginFailedInvalidPassword", getPlayerData(client).loginAttemptsRemaining));
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the login GUI with ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining alert.`);
} else {
- messagePlayerError(client, `Invalid password! ${getPlayerData(client).loginAttemptsRemaining} tries remaining.`);
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the login message (GUI disabled) with ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining alert.`);
+ messagePlayerError(client, getLocaleString(client, "LoginFailedInvalidPassword", getPlayerData(client).loginAttemptsRemaining));
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the login message (GUI disabled) with ${getPlayerData(client).loginAttemptsRemaining} login attempts remaining alert.`);
}
// Disabling email login alerts for now. It hangs the server for a couple seconds. Need a way to thread it.
@@ -1148,7 +1147,7 @@ function checkLogin(client, password) {
// ===========================================================================
function checkRegistration(client, password, confirmPassword = "", emailAddress = "") {
- logToConsole(LOG_DEBUG, `[VRR.Account]: Checking registration for ${getPlayerName(client)}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: Checking registration for ${getPlayerName(client)}`);
if (isPlayerRegistered(client)) {
if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
@@ -1175,7 +1174,7 @@ function checkRegistration(client, password, confirmPassword = "", emailAddress
showPlayerRegistrationFailedGUI(client, getLocaleString(client, "RegistrationFailedNoPassword"));
logToConsole(LOG_WARN, `${getPlayerDisplayForConsole(client)} failed to create an account (password is blank)`);
} else {
- messagePlayerError(client, "The password cannot be blank!");
+ messagePlayerError(client, getLocaleString(client, "RegistrationFailedNoPassword"));
logToConsole(LOG_WARN, `${getPlayerDisplayForConsole(client)} failed to create an account (password is blank)`);
}
return false;
@@ -1211,7 +1210,20 @@ function checkRegistration(client, password, confirmPassword = "", emailAddress
showPlayerRegistrationFailedGUI(client, getLocaleString(client, "RegistrationFailedNoPasswordWeak"));
logToConsole(LOG_WARN, `${getPlayerDisplayForConsole(client)} failed to create an account (password doesn't meet requirements)`);
} else {
- messagePlayerError(client, "Password doesn't meet requirements!");
+ messagePlayerError(client, getLocaleString(client, "PasswordNotGoodEnough"));
+ let passwordRequirements = []
+ if (getGlobalConfig().passwordRequiredCapitals > 0) {
+ passwordRequirements.push(getLocaleString(client, "PasswordNeedsCapitals", getGlobalConfig().passwordRequiredCapitals))
+ }
+
+ if (getGlobalConfig().passwordRequiredNumbers > 0) {
+ passwordRequirements.push(getLocaleString(client, "PasswordNeedsNumbers", getGlobalConfig().passwordRequiredNumbers))
+ }
+
+ if (getGlobalConfig().passwordRequiredSymbols > 0) {
+ passwordRequirements.push(getLocaleString(client, "PasswordNeedsSymbols", getGlobalConfig().passwordRequiredSymbols))
+ }
+ messagePlayerInfo(client, getLocaleString(client, "PasswordNeedsBase", passwordRequirements.join(", ")));
}
return false;
}
@@ -1231,7 +1243,7 @@ function checkRegistration(client, password, confirmPassword = "", emailAddress
messagePlayerAlert(client, getLocaleString(client, "RegistrationFailedCreateError"));
}
- messagePlayerAlert(client, `${getServerName()} staff have been notified of the problem and will fix it shortly.`);
+ messagePlayerAlert(client, getLocaleString(client, "DevelopersNotified"));
return false;
}
@@ -1251,16 +1263,16 @@ function checkRegistration(client, password, confirmPassword = "", emailAddress
if (doesServerHaveTesterOnlyEnabled() && !isPlayerATester(client)) {
setTimeout(function () {
- getPlayerData(client).customDisconnectReason = "Kicked - Not a tester";
+ getPlayerData(client).customDisconnectReason = "NotATester";
disconnectPlayer(client);
}, 5000);
if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the error GUI (not a tester).`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the error GUI (not a tester).`);
showPlayerErrorGUI(client, getLocaleString(client, "NotATester"), getLocaleString(client, "AccessDenied"));
return false;
} else {
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the "not a tester" error message (GUI disabled).`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the "not a tester" error message (GUI disabled).`);
messagePlayerError(client, getLocaleString(client, "NotATester"));
return false;
}
@@ -1270,9 +1282,9 @@ function checkRegistration(client, password, confirmPassword = "", emailAddress
if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
showPlayerRegistrationSuccessGUI(client);
showPlayerPrompt(client, getLocaleString(client, "NoCharactersGUIMessage"), getLocaleString(client, "NoCharactersGUIWindowTitle"), getLocaleString(client, "Yes"), getLocaleString(client, "No"));
- getPlayerData(client).promptType = AGRP_PROMPT_CREATEFIRSTCHAR;
+ getPlayerData(client).promptType = V_PROMPT_CREATEFIRSTCHAR;
} else {
- messagePlayerAlert(client, getLocaleString(client, "NoCharactersChatMessage"), `{ALTCOLOUR}/newchar{MAINCOLOUR}`);
+ messagePlayerAlert(client, getLocaleString(client, "NoCharactersChatMessage", `{ALTCOLOUR}/newchar{MAINCOLOUR}`));
}
}
};
@@ -1285,7 +1297,7 @@ function checkAccountResetPasswordRequest(client, inputText) {
}
switch (getPlayerData(client).passwordResetState) {
- case AGRP_RESETPASS_STATE_EMAILCONFIRM: {
+ case V_RESETPASS_STATE_EMAILCONFIRM: {
if (toLowerCase(getPlayerData(client).accountData.emailAddress) != toLowerCase(inputText)) {
logToConsole(LOG_INFO | LOG_WARN, `${getPlayerDisplayForConsole(client)} failed to reset their password (email not correct)`);
showPlayerErrorGUI(client, getLocaleString(client, "GUIErrorResetPasswordFailedInvalidEmail"), getLocaleString(client, "GUIErrorTitle"), getLocaleString(client, "GUIOkButton"));
@@ -1293,7 +1305,7 @@ function checkAccountResetPasswordRequest(client, inputText) {
}
let passwordResetCode = toUpperCase(generateEmailVerificationCode());
- getPlayerData(client).passwordResetState = AGRP_RESETPASS_STATE_CODEINPUT;
+ getPlayerData(client).passwordResetState = V_RESETPASS_STATE_CODEINPUT;
getPlayerData(client).passwordResetCode = passwordResetCode;
showPlayerResetPasswordCodeInputGUI(client);
sendPasswordResetEmail(client, passwordResetCode);
@@ -1301,11 +1313,11 @@ function checkAccountResetPasswordRequest(client, inputText) {
break;
}
- case AGRP_RESETPASS_STATE_CODEINPUT: {
+ case V_RESETPASS_STATE_CODEINPUT: {
logToConsole(LOG_INFO, `${getPlayerDisplayForConsole(client)} submitted code for password reset (${inputText}) ...`);
if (inputText != "") {
if (getPlayerData(client).passwordResetCode == toUpperCase(inputText)) {
- getPlayerData(client).passwordResetState = AGRP_RESETPASS_STATE_SETPASS;
+ getPlayerData(client).passwordResetState = V_RESETPASS_STATE_SETPASS;
showPlayerChangePasswordGUI(client);
logToConsole(LOG_INFO, `${getPlayerDisplayForConsole(client)} entered the correct reset password verification code. Awaiting new password input ...`);
} else {
@@ -1313,7 +1325,7 @@ function checkAccountResetPasswordRequest(client, inputText) {
logToConsole(LOG_INFO | LOG_WARN, `${getPlayerDisplayForConsole(client)} failed to reset their password (verification code not correct, ${getPlayerData(client).passwordResetAttemptsRemaining} attempts remaining)`);
if (getPlayerData(client).passwordResetAttemptsRemaining <= 0) {
logToConsole(LOG_INFO | LOG_WARN, `${getPlayerDisplayForConsole(client)} failed to reset their password (verification code not correct, no more attempts remaining, kicking ...)`);
- getPlayerData(client).customDisconnectReason = "Kicked - Failed to login";
+ getPlayerData(client).customDisconnectReason = "FailedToLogin";
disconnectPlayer(client);
return false;
}
@@ -1322,10 +1334,10 @@ function checkAccountResetPasswordRequest(client, inputText) {
break;
}
- case AGRP_RESETPASS_STATE_NONE: {
+ case V_RESETPASS_STATE_NONE: {
logToConsole(LOG_INFO, `${getPlayerDisplayForConsole(client)} requested a password reset. Awaiting email input ...`);
showPlayerResetPasswordEmailInputGUI(client);
- getPlayerData(client).passwordResetState = AGRP_RESETPASS_STATE_EMAILCONFIRM;
+ getPlayerData(client).passwordResetState = V_RESETPASS_STATE_EMAILCONFIRM;
break;
}
}
@@ -1337,8 +1349,8 @@ function checkAccountResetPasswordRequest(client, inputText) {
function checkAccountChangePassword(client, newPassword, confirmNewPassword) {
if (!isPlayerLoggedIn(client)) {
- if (getPlayerData(client).passwordResetState != AGRP_RESETPASS_STATE_SETPASS) {
- //getPlayerData(client).passwordResetState = AGRP_RESETPASS_STATE_NONE;
+ if (getPlayerData(client).passwordResetState != V_RESETPASS_STATE_SETPASS) {
+ //getPlayerData(client).passwordResetState = V_RESETPASS_STATE_NONE;
//disconnectPlayer(client);
logToConsole(LOG_DEBUG | LOG_WARN, `${getPlayerDisplayForConsole(client)} failed to change their password (not logged in or not using reset password)`);
return false;
@@ -1352,9 +1364,9 @@ function checkAccountChangePassword(client, newPassword, confirmNewPassword) {
if (!doesPasswordMeetRequirements(newPassword)) {
let passwordRequirementsString = `${needsCapitals}, ${needsNumbers}, ${needsSymbols}`;
- let needsCapitals = getLocaleString(client, "PasswordNeedsCapitals", "1");
- let needsNumbers = getLocaleString(client, "PasswordNeedsNumbers", "1");
- let needsSymbols = getLocaleString(client, "PasswordNeedsSymbols", "1");
+ let needsCapitals = getLocaleString(client, "PasswordNeedsCapitals", getGlobalConfig().passwordRequiredCapitals);
+ let needsNumbers = getLocaleString(client, "PasswordNeedsNumbers", getGlobalConfig().passwordRequiredNumbers);
+ let needsSymbols = getLocaleString(client, "PasswordNeedsSymbols", getGlobalConfig().passwordRequiredSymbols);
messagePlayerError(client, getLocaleString(client, "AccountPasswordNeedsImproved"));
messagePlayerInfo(client, getLocaleString(client, "PasswordNeedsBase", passwordRequirementsString));
@@ -1374,8 +1386,8 @@ function checkAccountChangePassword(client, newPassword, confirmNewPassword) {
saveAccountToDatabase(getPlayerData(client).accountData);
- if (getPlayerData(client).passwordResetState == AGRP_RESETPASS_STATE_SETPASS) {
- getPlayerData(client).passwordResetState = AGRP_RESETPASS_STATE_NONE;
+ if (getPlayerData(client).passwordResetState == V_RESETPASS_STATE_SETPASS) {
+ getPlayerData(client).passwordResetState = V_RESETPASS_STATE_NONE;
}
messagePlayerSuccess(client, getLocaleString(client, "PasswordChanged"));
@@ -1391,11 +1403,11 @@ function isValidEmailAddress(emailAddress) {
// ===========================================================================
function saveAllPlayersToDatabase() {
- logToConsole(LOG_DEBUG, "[VRR.Account]: Saving all clients to database ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Account]: Saving all clients to database ...");
getClients().forEach(function (client) {
savePlayerToDatabase(client);
});
- logToConsole(LOG_DEBUG, "[VRR.Account]: All clients saved to database successfully!");
+ logToConsole(LOG_DEBUG, "[AGRP.Account]: All clients saved to database successfully!");
}
// ===========================================================================
@@ -1409,14 +1421,14 @@ function savePlayerToDatabase(client) {
return false;
}
- logToConsole(LOG_DEBUG, `[VRR.Account]: Saving client ${getPlayerName(client)} to database ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: Saving client ${getPlayerName(client)} to database ...`);
saveAccountToDatabase(getPlayerData(client).accountData);
if (getPlayerData(client).currentSubAccount != -1) {
//let subAccountData = getPlayerCurrentSubAccount(client);
if (getPlayerPed(client) != null) {
- if (getPlayerData(client).returnToPosition != null && getPlayerData(client).returnToType != AGRP_RETURNTO_TYPE_ADMINGET) {
+ if (getPlayerData(client).returnToPosition != null && getPlayerData(client).returnToType != V_RETURNTO_TYPE_ADMINGET) {
getPlayerCurrentSubAccount(client).spawnPosition = getPlayerData(client).returnToPosition;
getPlayerCurrentSubAccount(client).spawnHeading = getPlayerData(client).returnToHeading.z;
getPlayerCurrentSubAccount(client).interior = getPlayerData(client).returnToInterior;
@@ -1431,100 +1443,12 @@ function savePlayerToDatabase(client) {
saveSubAccountToDatabase(getPlayerCurrentSubAccount(client));
}
- logToConsole(LOG_DEBUG, `[VRR.Account]: Saved client ${getPlayerDisplayForConsole(client)} to database successfully!`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: Saved client ${getPlayerDisplayForConsole(client)} to database successfully!`);
return true;
}
// ===========================================================================
-function initClient(client) {
- logToConsole(LOG_DEBUG, `[VRR.Account] Initializing client ${getPlayerDisplayForConsole(client)} ...`);
-
- if (isConsole(client)) {
- logToConsole(LOG_DEBUG | LOG_ERROR, `[VRR.Account] Client initialization failed for ${getPlayerDisplayForConsole(client)}! (is console client)`);
- return false;
- }
-
- logToConsole(LOG_DEBUG, `[VRR.Account] Initializing client ${getPlayerDisplayForConsole(client)} ...`);
-
- if (playerInitialized[client.index] == true) {
- logToConsole(LOG_DEBUG | LOG_ERROR, `[VRR.Account] Client initialization failed for ${getPlayerDisplayForConsole(client)}! (already initialized)`);
- return false;
- }
-
- playerInitialized[client.index] = true;
-
- //setEntityData(client, "agrp.isInitialized", true, false);
-
- logToConsole(LOG_DEBUG, `[VRR.Account] Initializing GUI for ${getPlayerDisplayForConsole(client)} ...`);
- sendPlayerGUIColours(client);
- sendPlayerGUIInit(client);
- updatePlayerSnowState(client);
-
- //logToConsole(LOG_DEBUG, `[VRR.Account] Showing connect camera to ${getPlayerDisplayForConsole(client)} ...`);
- //showConnectCameraToPlayer(client);
-
- messageClient(`Please wait ...`, client, getColourByName("softGreen"));
-
- logToConsole(LOG_DEBUG, `[VRR.Account] Waiting for 2.5 seconds to prevent race attack ...`);
- setTimeout(function () {
- if (client != null) {
- clearChatBox(client);
- logToConsole(LOG_DEBUG, `[VRR.Account] Loading account for ${getPlayerDisplayForConsole(client)}`);
- let tempAccountData = loadAccountFromName(getPlayerName(client), true);
-
- logToConsole(LOG_DEBUG, `[VRR.Account] Loading subaccounts for ${getPlayerDisplayForConsole(client)}`);
- let tempSubAccounts = loadSubAccountsFromAccount(tempAccountData.databaseId);
-
- getServerData().clients[getPlayerId(client)] = new ClientData(client, tempAccountData, tempSubAccounts);
-
- getServerData().clients[getPlayerId(client)].sessionId = saveConnectionToDatabase(client);
- getServerData().clients[getPlayerId(client)].connectTime = getCurrentUnixTimestamp();
- requestClientInfo(client);
-
- if (tempAccountData != false) {
- sendPlayerLocaleId(client, getPlayerData(client).accountData.locale);
- if (isAccountAutoIPLoginEnabled(tempAccountData) && getPlayerData(client).accountData.ipAddress == getPlayerIP(client)) {
- messagePlayerAlert(client, getLocaleString(client, "AutoLoggedInIP"));
- loginSuccess(client);
- playRadioStreamForPlayer(client, getServerIntroMusicURL(), true, getPlayerStreamingRadioVolume(client));
- } else {
- if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the login GUI.`);
- showPlayerLoginGUI(client);
- } else {
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the login message (GUI disabled).`);
- messagePlayerNormal(client, getLocaleString(client, "WelcomeBack", getServerName(), getPlayerName(client), "/login"), getColourByName("softGreen"));
-
- //if(checkForGeoIPModule()) {
- // let iso = module.geoip.getCountryISO(getPlayerIP(client));
- // let localeId = getLocaleFromCountryISO(iso);
- //}
- //showSmallGameMessage(client, getLocaleString(client, "LocaleOffer", `/lang ${getLocaleData(localeId)[2]}`), getColourByName("white"), 10000, "Roboto");
- }
- startLoginTimeoutForPlayer(client);
- playRadioStreamForPlayer(client, getServerIntroMusicURL(), true, getPlayerStreamingRadioVolume(client));
- }
- } else {
- sendPlayerLocaleId(client, 0);
- if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the register GUI.`);
- showPlayerRegistrationGUI(client);
- } else {
- logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the register message (GUI disabled).`);
- messagePlayerNormal(client, getLocaleString(client, "WelcomeNewPlayer", getServerName(), getPlayerName(client), "/register"), getColourByName("softGreen"));
- }
- playRadioStreamForPlayer(client, getServerIntroMusicURL(), true, getPlayerStreamingRadioVolume(client));
- }
-
- getServerData().clients[getPlayerId(client)].keyBinds = loadAccountKeybindsFromDatabase(getServerData().clients[getPlayerId(client)].accountData.databaseId);
- sendAccountKeyBindsToClient(client);
- }
- }, 2500);
-}
-
-// ===========================================================================
-
function saveConnectionToDatabase(client) {
let dbConnection = connectToDatabase();
if (dbConnection) {
@@ -1548,12 +1472,11 @@ function createDefaultAccountServerData(accountDatabaseId) {
// ===========================================================================
function loadAccountKeybindsFromDatabase(accountDatabaseID) {
- logToConsole(LOG_DEBUG, `[VRR.Account]: Loading account keybinds for account ${accountDatabaseID} from database ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: Loading account keybinds for account ${accountDatabaseID} from database ...`);
let tempAccountKeybinds = [];
let dbConnection = connectToDatabase();
- let dbQuery = null;
- let dbAssoc;
+ let dbAssoc = [];
for (let i in getGlobalConfig().keyBind.defaultKeyBinds) {
let tempKeyBindData = new KeyBindData(false);
@@ -1566,109 +1489,98 @@ function loadAccountKeybindsFromDatabase(accountDatabaseID) {
if (accountDatabaseID != 0 && typeof accountDatabaseId != "undefined") {
if (dbConnection) {
- dbQuery = queryDatabase(dbConnection, `SELECT * FROM acct_hotkey WHERE acct_hotkey_enabled = 1 AND acct_hotkey_acct = ${accountDatabaseID} AND acct_hotkey_server = ${getServerId()}`);
- if (dbQuery) {
- if (dbQuery.numRows > 0) {
- while (dbAssoc = fetchQueryAssoc(dbQuery)) {
- let tempAccountKeyBindData = new KeyBindData(dbAssoc);
- tempAccountKeybinds.push(tempAccountKeyBindData);
- logToConsole(LOG_DEBUG, `[VRR.Account]: Account keybind '${tempAccountKeyBindData.databaseId}' (Key ${tempAccountKeyBindData.key} '${toUpperCase(getKeyNameFromId(tempAccountKeyBindData.key))}') loaded from database successfully!`);
- }
+ let dbQueryString = `SELECT * FROM acct_hotkey WHERE acct_hotkey_enabled = 1 AND acct_hotkey_acct = ${accountDatabaseID} AND acct_hotkey_server = ${getServerId()}`;
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ for (let i in dbAssoc) {
+ let tempAccountKeyBindData = new KeyBindData(dbAssoc[i]);
+ tempAccountKeybinds.push(tempAccountKeyBindData);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: Account keybind '${tempAccountKeyBindData.databaseId}' (Key ${tempAccountKeyBindData.key} '${toUpperCase(getKeyNameFromId(tempAccountKeyBindData.key))}') loaded from database successfully!`);
}
- freeDatabaseQuery(dbQuery);
}
disconnectFromDatabase(dbConnection);
}
}
- logToConsole(LOG_DEBUG, `[VRR.Account]: ${tempAccountKeybinds.length} account keybinds for account ${accountDatabaseID} loaded from database successfully!`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: ${tempAccountKeybinds.length} account keybinds for account ${accountDatabaseID} loaded from database successfully!`);
return tempAccountKeybinds;
}
// ===========================================================================
function loadAccountStaffNotesFromDatabase(accountDatabaseID) {
- logToConsole(LOG_DEBUG, `[VRR.Account]: Loading account staff notes for account ${accountDatabaseID} from database ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: Loading account staff notes for account ${accountDatabaseID} from database ...`);
let tempAccountStaffNotes = [];
let dbConnection = connectToDatabase();
- let dbQuery = null;
- let dbAssoc;
+ let dbAssoc = [];
if (dbConnection) {
- dbQuery = queryDatabase(dbConnection, "SELECT * FROM `acct_note` WHERE `acct_note_deleted` = 0 AND `acct_note_acct` = " + toString(accountDatabaseID));
- if (dbQuery) {
- if (dbQuery.numRows > 0) {
- while (dbAssoc = fetchQueryAssoc(dbQuery)) {
- let tempAccountStaffNoteData = new AccountStaffNoteData(dbAssoc);
- tempAccountStaffNotes.push(tempAccountStaffNoteData);
- logToConsole(LOG_DEBUG, `[VRR.Account]: Account staff note '${tempAccountStaffNoteData.databaseId}' loaded from database successfully!`);
- }
+ let dbQueryString = "SELECT * FROM `acct_note` WHERE `acct_note_deleted` = 0 AND `acct_note_acct` = " + toString(accountDatabaseID);
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ for (let i in dbAssoc) {
+ let tempAccountStaffNoteData = new AccountStaffNoteData(dbAssoc[i]);
+ tempAccountStaffNotes.push(tempAccountStaffNoteData);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: Account staff note '${tempAccountStaffNoteData.databaseId}' loaded from database successfully!`);
}
- freeDatabaseQuery(dbQuery);
}
disconnectFromDatabase(dbConnection);
}
- logToConsole(LOG_DEBUG, `[VRR.Account]: ${tempAccountStaffNotes.length} account staff notes for account ${accountDatabaseID} loaded from database successfully!`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: ${tempAccountStaffNotes.length} account staff notes for account ${accountDatabaseID} loaded from database successfully!`);
return tempAccountStaffNotes;
}
// ===========================================================================
function loadAccountContactsFromDatabase(accountDatabaseID) {
- logToConsole(LOG_DEBUG, `[VRR.Account]: Loading account contacts for account ${accountDatabaseID} from database ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: Loading account contacts for account ${accountDatabaseID} from database ...`);
let tempAccountContacts = [];
let dbConnection = connectToDatabase();
- let dbQuery = null;
- let dbAssoc;
+ let dbAssoc = [];
if (dbConnection) {
- dbQuery = queryDatabase(dbConnection, "SELECT * FROM `acct_contact` WHERE `acct_contact_deleted` = 0 AND `acct_contact_acct` = " + toString(accountDatabaseID));
- if (dbQuery) {
- if (dbQuery.numRows > 0) {
- while (dbAssoc = fetchQueryAssoc(dbQuery)) {
- let tempAccountContactData = new AccountContactData(dbAssoc);
- tempAccountContacts.push(tempAccountContactData);
- logToConsole(LOG_DEBUG, `[VRR.Account]: Account contact '${tempAccountContactData.databaseId}' loaded from database successfully!`);
- }
+ let dbQueryString = "SELECT * FROM `acct_contact` WHERE `acct_contact_deleted` = 0 AND `acct_contact_acct` = " + toString(accountDatabaseID);
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ for (let i in dbAssoc) {
+ let tempAccountContactData = new AccountContactData(dbAssoc[i]);
+ tempAccountContacts.push(tempAccountContactData);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: Account contact '${tempAccountContactData.databaseId}' loaded from database successfully!`);
}
- freeDatabaseQuery(dbQuery);
}
disconnectFromDatabase(dbConnection);
}
- logToConsole(LOG_DEBUG, `[VRR.Account]: ${tempAccountContacts.length} account contacts for account ${accountDatabaseID} loaded from database successfully!`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: ${tempAccountContacts.length} account contacts for account ${accountDatabaseID} loaded from database successfully!`);
return tempAccountContacts;
}
// ===========================================================================
function loadAccountMessagesFromDatabase(accountDatabaseID) {
- logToConsole(LOG_DEBUG, `[VRR.Account]: Loading account messages for account ${accountDatabaseID} from database ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: Loading account messages for account ${accountDatabaseID} from database ...`);
let tempAccountMessages = [];
let dbConnection = connectToDatabase();
- let dbQuery = null;
- let dbAssoc;
+ let dbAssoc = [];
if (dbConnection) {
- dbQuery = queryDatabase(dbConnection, "SELECT * FROM `acct_msg` WHERE `acct_msg_deleted` = 0 AND `acct_msg_acct` = " + toString(accountDatabaseID));
- if (dbQuery) {
- if (dbQuery.numRows > 0) {
- while (dbAssoc = fetchQueryAssoc(dbQuery)) {
- let tempAccountMessageData = new AccountContactData(dbAssoc);
- tempAccountMessages.push(tempAccountMessageData);
- logToConsole(LOG_DEBUG, `[VRR.Account]: Account contact '${tempAccountMessageData.databaseId}' loaded from database successfully!`);
- }
+ let dbQueryString = "SELECT * FROM`acct_msg` WHERE `acct_msg_deleted` = 0 AND`acct_msg_acct` = " + toString(accountDatabaseID);
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ for (let i in dbAssoc) {
+ let tempAccountMessageData = new AccountContactData(dbAssoc[i]);
+ tempAccountMessages.push(tempAccountMessageData);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: Account contact '${tempAccountMessageData.databaseId}' loaded from database successfully!`);
}
- freeDatabaseQuery(dbQuery);
}
disconnectFromDatabase(dbConnection);
}
- logToConsole(LOG_DEBUG, `[VRR.Account]: ${tempAccountMessages.length} account messages for account ${accountDatabaseID} loaded from database successfully!`);
+ logToConsole(LOG_DEBUG, `[AGRP.Account]: ${tempAccountMessages.length} account messages for account ${accountDatabaseID} loaded from database successfully!`);
return tempAccountMessages;
}
@@ -1747,34 +1659,34 @@ function generateEmailVerificationCode() {
// ===========================================================================
-function sendEmailVerificationEmail(client, emailVerificationCode) {
+async function sendEmailVerificationEmail(client, emailVerificationCode) {
let emailBodyText = getEmailConfig().bodyContent.confirmEmail;
emailBodyText = emailBodyText.replace("{VERIFICATIONCODE}", emailVerificationCode);
emailBodyText = emailBodyText.replace("{SERVERNAME}", getServerName());
- sendEmail(getPlayerData(client).accountData.emailAddress, getPlayerData(client).accountData.name, `Confirm email on ${getServerName()}`, emailBodyText);
+ await sendEmail(getPlayerData(client).accountData.emailAddress, getPlayerData(client).accountData.name, `Confirm email on ${getServerName()}`, emailBodyText);
}
// ===========================================================================
-function sendPasswordResetEmail(client, verificationCode) {
+async function sendPasswordResetEmail(client, verificationCode) {
let emailBodyText = getEmailConfig().bodyContent.confirmPasswordReset;
emailBodyText = emailBodyText.replace("{VERIFICATIONCODE}", verificationCode);
emailBodyText = emailBodyText.replace("{SERVERNAME}", getServerName());
- sendEmail(getPlayerData(client).accountData.emailAddress, getPlayerData(client).accountData.name, `Reset your password on ${getServerName()}`, emailBodyText);
+ await sendEmail(getPlayerData(client).accountData.emailAddress, getPlayerData(client).accountData.name, `Reset your password on ${getServerName()}`, emailBodyText);
}
// ===========================================================================
-function verifyAccountEmail(accountData, verificationCode) {
+async function verifyAccountEmail(accountData, verificationCode) {
let emailVerificationCode = generateRandomString(10);
let emailBodyText = getEmailConfig().bodyContent.confirmEmail;
emailBodyText = emailBodyText.replace("{VERIFICATIONCODE}", emailVerificationCode);
emailBodyText = emailBodyText.replace("{SERVERNAME}", getServerName());
- sendEmail(getPlayerData(client).accountData.emailAddress, getPlayerData(client).accountData.name, `Confirm email on ${getServerName()}`, emailBodyText);
+ await sendEmail(getPlayerData(client).accountData.emailAddress, getPlayerData(client).accountData.name, `Confirm email on ${getServerName()}`, emailBodyText);
getPlayerData(client).accountData.emailAddress = emailAddress;
getPlayerData(client).accountData.emailVerificationCode = module.hashing.sha512(emailVerificationCode);
@@ -1782,7 +1694,7 @@ function verifyAccountEmail(accountData, verificationCode) {
// ===========================================================================
-function sendAccountLoginFailedNotification(emailAddress, name, ip, game = getGame()) {
+async function sendAccountLoginFailedNotification(emailAddress, name, ip, game = getGame()) {
let countryName = module.geoip.getCountryName(getGlobalConfig().geoIPCountryDatabaseFilePath, ip);
let subDivisionName = module.geoip.getSubdivisionName(getGlobalConfig().geoIPCityDatabaseFilePath, ip);
let cityName = module.geoip.getCityName(getGlobalConfig().geoIPCityDatabaseFilePath, ip);
@@ -1794,13 +1706,13 @@ function sendAccountLoginFailedNotification(emailAddress, name, ip, game = getGa
emailBodyText = emailBodyText.replace("{SERVERNAME}", getServerName());
emailBodyText = emailBodyText.replace("{TIMESTAMP}", new Date().toLocaleString('en-US'));
- sendEmail(emailAddress, name, `Login failed on ${getServerName()}`, emailBodyText);
+ await sendEmail(emailAddress, name, `Login failed on ${getServerName()}`, emailBodyText);
return true;
}
// ===========================================================================
-function sendAccountLoginSuccessNotification(emailAddress, name, ip, game = getGame()) {
+async function sendAccountLoginSuccessNotification(emailAddress, name, ip, game = getGame()) {
let countryName = module.geoip.getCountryName(getGlobalConfig().geoIPCountryDatabaseFilePath, ip);
let subDivisionName = module.geoip.getSubdivisionName(getGlobalConfig().geoIPCityDatabaseFilePath, ip);
let cityName = module.geoip.getCityName(getGlobalConfig().geoIPCityDatabaseFilePath, ip);
@@ -1812,7 +1724,7 @@ function sendAccountLoginSuccessNotification(emailAddress, name, ip, game = getG
emailBodyText = emailBodyText.replace("{SERVERNAME}", getServerName());
emailBodyText = emailBodyText.replace("{TIMESTAMP}", new Date().toLocaleString('en-US'));
- sendEmail(emailAddress, name, `Login successful on ${getServerName()}`, emailBodyText);
+ await sendEmail(emailAddress, name, `Login successful on ${getServerName()}`, emailBodyText);
return true;
}
@@ -1845,7 +1757,7 @@ function checkPlayerTwoFactorAuthentication(client, authCode) {
}
}
- getPlayerData(client).customDisconnectReason = "Kicked - Failed to login";
+ getPlayerData(client).customDisconnectReason = "FailedToLogin";
disconnectPlayer(client);
return false;
}
@@ -1858,13 +1770,13 @@ function isPlayerATester(client) {
// ===========================================================================
-function sendAccountTwoFactorAuthCode(emailAddress, name, twoFactorAuthCode) {
+async function sendAccountTwoFactorAuthCode(emailAddress, name, twoFactorAuthCode) {
let emailBodyText = getEmailConfig().bodyContent.twoFactorAuthentication;
emailBodyText = emailBodyText.replace("{2FACODE}", twoFactorAuthCode);
emailBodyText = emailBodyText.replace("{GAMENAME}", getGameName(getGame()));
emailBodyText = emailBodyText.replace("{SERVERNAME}", getServerName());
- sendEmail(emailAddress, name, `Login code for ${getServerName()}`, emailBodyText);
+ await sendEmail(emailAddress, name, `Login code for ${getServerName()}`, emailBodyText);
return true;
}
@@ -1873,7 +1785,7 @@ function sendAccountTwoFactorAuthCode(emailAddress, name, twoFactorAuthCode) {
function startLoginTimeoutForPlayer(client) {
getPlayerData(client).loginTimeout = setTimeout(function () {
if (isPlayerLoggedIn(client) == false) {
- getPlayerData(client).customDisconnectReason = "Kicked - Login timeout";
+ getPlayerData(client).customDisconnectReason = "FailedToLogin";
disconnectPlayer(client);
}
}, getGlobalConfig().loginTimeout);
diff --git a/scripts/server/animation.js b/scripts/server/animation.js
index d92d493d..93341de7 100644
--- a/scripts/server/animation.js
+++ b/scripts/server/animation.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: animation.js
// DESC: Provides animation functions and usage
@@ -9,8 +8,8 @@
// ===========================================================================
function initAnimationScript() {
- logToConsole(LOG_DEBUG, "[VRR.Animation]: Initializing animation script ...");
- logToConsole(LOG_DEBUG, "[VRR.Animation]: Animation script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.Animation]: Initializing animation script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Animation]: Animation script initialized!");
}
// ===========================================================================
@@ -35,8 +34,8 @@ function playPlayerAnimationCommand(command, params, client) {
return false;
}
- if (getAnimationData(animationSlot)[3] == AGRP_ANIMTYPE_SURRENDER) {
- getPlayerData(client).pedState = AGRP_PEDSTATE_HANDSUP;
+ if (getAnimationData(animationSlot)[3] == V_ANIMTYPE_SURRENDER) {
+ getPlayerData(client).pedState = V_PEDSTATE_HANDSUP;
}
if (isPlayerHandCuffed(client) || isPlayerTazed(client) || isPlayerInForcedAnimation(client)) {
@@ -44,7 +43,11 @@ function playPlayerAnimationCommand(command, params, client) {
return false;
}
- messagePlayerTip(client, getLocaleString(client, "AnimationStopCommandTip", "{ALTCOLOUR}/stopanim{MAINCOLOUR}"));
+ if (getAnimationData(animationSlot).loop == true) {
+ if (hasPlayerSeenActionTip(client, "AnimationStop")) {
+ messagePlayerTip(client, getGroupedLocaleString(client, "ActionTips", "AnimationStop", "{ALTCOLOUR}/stopanim{MAINCOLOUR}"));
+ }
+ }
makePlayerPlayAnimation(client, animationSlot, animationPositionOffset);
}
@@ -66,6 +69,8 @@ function stopPlayerAnimationCommand(command, params, client) {
getPlayerData(client).animationForced = false;
//setPlayerMouseCameraState(client, false);
+
+ markPlayerActionTipSeen(client, "AnimationStop");
}
// ===========================================================================
@@ -91,16 +96,18 @@ function isPlayerInForcedAnimation(client) {
// ===========================================================================
function makePlayerPlayAnimation(client, animationSlot, offsetPosition = 1) {
- getPlayerData(client).currentAnimation = animationSlot;
- getPlayerData(client).currentAnimationPositionOffset = offsetPosition;
- getPlayerData(client).currentAnimationPositionReturnTo = getPlayerPosition(client);
- getPlayerData(client).animationStart = getCurrentUnixTimestamp();
- getPlayerData(client).animationForced = false;
+ if (getAnimationData(animationSlot).loop == true) {
+ getPlayerData(client).currentAnimation = animationSlot;
+ getPlayerData(client).currentAnimationPositionOffset = offsetPosition;
+ getPlayerData(client).currentAnimationPositionReturnTo = getPlayerPosition(client);
+ getPlayerData(client).animationStart = getCurrentUnixTimestamp();
+ getPlayerData(client).animationForced = false;
+ }
makePedPlayAnimation(getPlayerPed(client), animationSlot, offsetPosition);
- setEntityData(getPlayerPed(client), "agrp.anim", animationSlot, true);
- //if(getAnimationData(animationSlot)[9] != AGRP_ANIMMOVE_NONE) {
- // if(getGame() < AGRP_GAME_GTA_SA) {
+ //setEntityData(getPlayerPed(client), "v.rp.anim", animationSlot, true);
+ //if(getAnimationData(animationSlot)[9] != V_ANIMMOVE_NONE) {
+ // if(getGame() < V_GAME_GTA_SA) {
// setPlayerMouseCameraState(client, true);
// }
//}
@@ -109,11 +116,13 @@ function makePlayerPlayAnimation(client, animationSlot, offsetPosition = 1) {
// ===========================================================================
function forcePlayerPlayAnimation(client, animationSlot, offsetPosition = 1) {
- getPlayerData(client).currentAnimation = animationSlot;
- getPlayerData(client).currentAnimationPositionOffset = offsetPosition;
- getPlayerData(client).currentAnimationPositionReturnTo = getPlayerPosition(client);
- getPlayerData(client).animationStart = getCurrentUnixTimestamp();
- getPlayerData(client).animationForced = true;
+ if (getAnimationData(animationSlot).loop == true) {
+ getPlayerData(client).currentAnimation = animationSlot;
+ getPlayerData(client).currentAnimationPositionOffset = offsetPosition;
+ getPlayerData(client).currentAnimationPositionReturnTo = getPlayerPosition(client);
+ getPlayerData(client).animationStart = getCurrentUnixTimestamp();
+ getPlayerData(client).animationForced = true;
+ }
setPlayerControlState(client, false);
forcePedAnimation(getPlayerPed(client), animationSlot, offsetPosition);
diff --git a/scripts/server/anticheat.js b/scripts/server/anticheat.js
index fea0c43d..3a89c451 100644
--- a/scripts/server/anticheat.js
+++ b/scripts/server/anticheat.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: anticheat.js
// DESC: Provides anticheat functions and usage
@@ -9,17 +8,17 @@
// ===========================================================================
function initAntiCheatScript() {
- logToConsole(LOG_DEBUG, "[VRR.AntiCheat]: Initializing anticheat script ...");
- logToConsole(LOG_DEBUG, "[VRR.AntiCheat]: Anticheat script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.AntiCheat]: Initializing anticheat script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.AntiCheat]: Anticheat script initialized!");
}
// ===========================================================================
function clearPlayerStateToEnterExitProperty(client) {
- if (getPlayerData(client).pedState != AGRP_PEDSTATE_READY) {
- if (getPlayerData(client).pedState == AGRP_PEDSTATE_ENTERINGVEHICLE) {
+ if (getPlayerData(client).pedState != V_PEDSTATE_READY) {
+ if (getPlayerData(client).pedState == V_PEDSTATE_ENTERINGVEHICLE) {
sendPlayerClearPedState(client);
- getPlayerData(client).pedState = AGRP_PEDSTATE_READY;
+ getPlayerData(client).pedState = V_PEDSTATE_READY;
} else {
return false;
}
diff --git a/scripts/server/ban.js b/scripts/server/ban.js
index 3650bdf9..07eafb1a 100644
--- a/scripts/server/ban.js
+++ b/scripts/server/ban.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: bans.js
// DESC: Provides ban functions and usage
@@ -9,18 +8,18 @@
// ===========================================================================
// Ban Types
-const AGRP_BANTYPE_NONE = 0;
-const AGRP_BANTYPE_ACCOUNT = 1;
-const AGRP_BANTYPE_SUBACCOUNT = 2;
-const AGRP_BANTYPE_IPADDRESS = 3;
-const AGRP_BANTYPE_SUBNET = 4;
+const V_BANTYPE_NONE = 0;
+const V_BANTYPE_ACCOUNT = 1;
+const V_BANTYPE_SUBACCOUNT = 2;
+const V_BANTYPE_IPADDRESS = 3;
+const V_BANTYPE_SUBNET = 4;
// ===========================================================================
class BanData {
constructor(dbAssoc = false) {
this.databaseId = 0;
- this.type = AGRP_BANTYPE_NONE;
+ this.type = V_BANTYPE_NONE;
this.detail = "";
this.ipAddress = "";
this.name = "";
@@ -39,8 +38,8 @@ class BanData {
// ===========================================================================
function initBanScript() {
- logToConsole(LOG_INFO, "[VRR.Ban]: Initializing ban script ...");
- logToConsole(LOG_INFO, "[VRR.Ban]: Ban script initialized!");
+ logToConsole(LOG_INFO, "[AGRP.Ban]: Initializing ban script ...");
+ logToConsole(LOG_INFO, "[AGRP.Ban]: Ban script initialized!");
}
// ===========================================================================
@@ -62,16 +61,16 @@ function accountBanCommand(command, params, client) {
// Prevent banning admins with really high permissions
if (doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) {
- messagePlayerError(client, getLocaleString(client, "CantBanPlayer"));
+ messagePlayerError(client, getLocaleString(client, "CantBanClient"));
return false;
}
- logToConsole(LOG_WARN, `[VRR.Ban]: ${getPlayerDisplayForConsole(targetClient)} (${getPlayerData(targetClient).accountData.name}) account was banned by ${getPlayerDisplayForConsole(client)}. Reason: ${reason}`);
+ logToConsole(LOG_WARN, `[AGRP.Ban]: ${getPlayerDisplayForConsole(targetClient)} (${getPlayerData(targetClient).accountData.name}) account was banned by ${getPlayerDisplayForConsole(client)}. Reason: ${reason}`);
announceAdminAction(`PlayerAccountBanned`, `{ALTCOLOUR}${getPlayerName(targetClient)}{MAINCOLOUR}`);
banAccount(getPlayerData(targetClient).accountData.databaseId, getPlayerData(client).accountData.databaseId, reason);
- getPlayerData(targetClient).customDisconnectReason = `Banned - ${reason}`;
+ getPlayerData(targetClient).customDisconnectReason = "Banned";
disconnectPlayer(targetClient);
}
@@ -94,16 +93,16 @@ function subAccountBanCommand(command, params, client, fromDiscord) {
// Prevent banning admins with really high permissions
if (doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) {
- messagePlayerError(client, getLocaleString(client, "CantBanPlayer"));
+ messagePlayerError(client, getLocaleString(client, "CantBanClient"));
return false;
}
- logToConsole(LOG_WARN, `[VRR.Ban]: ${getPlayerDisplayForConsole(targetClient)} (${getPlayerData(targetClient).accountData.name})'s subaccount was banned by ${getPlayerDisplayForConsole(client)}. Reason: ${reason}`);
+ logToConsole(LOG_WARN, `[AGRP.Ban]: ${getPlayerDisplayForConsole(targetClient)} (${getPlayerData(targetClient).accountData.name})'s subaccount was banned by ${getPlayerDisplayForConsole(client)}. Reason: ${reason}`);
announceAdminAction(`PlayerCharacterBanned`, `{ALTCOLOUR}${getPlayerName(targetClient)}{MAINCOLOUR}`);
banSubAccount(getPlayerData(targetClient).currentSubAccountData.databaseId, getPlayerData(client).accountData.databaseId, reason);
- getPlayerData(targetClient).customDisconnectReason = `Banned - ${reason}`;
+ getPlayerData(targetClient).customDisconnectReason = "Banned";
disconnectPlayer(targetClient);
}
@@ -126,14 +125,14 @@ function ipBanCommand(command, params, client, fromDiscord) {
// Prevent banning admins with really high permissions
if (doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) {
- messagePlayerError(client, getLocaleString(client, "CantBanPlayer"));
+ messagePlayerError(client, getLocaleString(client, "CantBanClient"));
return false;
}
announceAdminAction(`PlayerIPBanned`, `{ALTCOLOUR}${getPlayerName(targetClient)}{MAINCOLOUR}`);
banIPAddress(getPlayerIP(targetClient), getPlayerData(client).accountData.databaseId, reason);
- getPlayerData(targetClient).customDisconnectReason = `IP Banned - ${reason}`;
+ getPlayerData(targetClient).customDisconnectReason = "Banned";
serverBanIP(getPlayerIP(targetClient));
disconnectPlayer(targetClient);
}
@@ -158,14 +157,14 @@ function subNetBanCommand(command, params, client, fromDiscord) {
// Prevent banning admins with really high permissions
if (doesPlayerHaveStaffPermission(targetClient, "ManageServer") || doesPlayerHaveStaffPermission(targetClient, "Developer")) {
- messagePlayerError(client, getLocaleString(client, "CantBanPlayer"));
+ messagePlayerError(client, getLocaleString(client, "CantBanClient"));
return false;
}
announceAdminAction(`PlayerSubNetBanned`, `{ALTCOLOUR}${getPlayerName(client)}{MAINCOLOUR}`);
banSubNet(getPlayerIP(targetClient), getSubNet(getPlayerIP(targetClient), octetAmount), getPlayerData(client).accountData.databaseId, reason);
- getPlayerData(client).customDisconnectReason = `IP Subnet Banned - ${reason}`;
+ getPlayerData(client).customDisconnectReason = "Banned";
serverBanIP(getPlayerIP(targetClient));
}
@@ -175,7 +174,7 @@ function banAccount(accountId, adminAccountId, reason) {
let dbConnection = connectToDatabase();
if (dbConnection) {
let safeReason = dbConnection.escapetoString(reason);
- let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_detail, ban_who_banned, ban_reason) VALUES (${AGRP_BANTYPE_ACCOUNT}, ${accountId}, ${adminAccountId}, '${safeReason}');`);
+ let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_detail, ban_who_banned, ban_reason) VALUES (${V_BANTYPE_ACCOUNT}, ${accountId}, ${adminAccountId}, '${safeReason}');`);
freeDatabaseQuery(dbQuery);
dbConnection.close();
return true;
@@ -190,7 +189,7 @@ function banSubAccount(subAccountId, adminAccountId, reason) {
let dbConnection = connectToDatabase();
if (dbConnection) {
let safeReason = dbConnection.escapetoString(reason);
- let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_detail, ban_who_banned, ban_reason) VALUES (${AGRP_BANTYPE_SUBACCOUNT}, ${subAccountId}, ${adminAccountId}, '${safeReason}');`);
+ let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_detail, ban_who_banned, ban_reason) VALUES (${V_BANTYPE_SUBACCOUNT}, ${subAccountId}, ${adminAccountId}, '${safeReason}');`);
freeDatabaseQuery(dbQuery);
dbConnection.close();
return true;
@@ -205,7 +204,7 @@ function banIPAddress(ipAddress, adminAccountId, reason) {
let dbConnection = connectToDatabase();
if (dbConnection) {
let safeReason = dbConnection.escapetoString(reason);
- let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_detail, ban_who_banned, ban_reason) VALUES (${AGRP_BANTYPE_IPADDRESS}, INET_ATON(${ipAddress}), ${adminAccountId}, '${safeReason}');`);
+ let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_detail, ban_who_banned, ban_reason) VALUES (${V_BANTYPE_IPADDRESS}, INET_ATON(${ipAddress}), ${adminAccountId}, '${safeReason}');`);
freeDatabaseQuery(dbQuery);
dbConnection.close();
return true;
@@ -220,7 +219,7 @@ function banSubNet(ipAddressStart, ipAddressEnd, adminAccountId, reason) {
let dbConnection = connectToDatabase();
if (dbConnection) {
let safeReason = dbConnection.escapetoString(reason);
- let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_ip_start, ban_ip_end, ban_who_banned, ban_reason) VALUES (${AGRP_BANTYPE_SUBNET}, INET_ATON(${ipAddressStart}), INET_ATON(${ipAddressEnd}), ${adminAccountId}, '${safeReason}');`);
+ let dbQuery = queryDatabase(dbConnection, `INSERT INTO ban_main (ban_type, ban_ip_start, ban_ip_end, ban_who_banned, ban_reason) VALUES (${V_BANTYPE_SUBNET}, INET_ATON(${ipAddressStart}), INET_ATON(${ipAddressEnd}), ${adminAccountId}, '${safeReason}');`);
freeDatabaseQuery(dbQuery);
dbConnection.close();
return true;
@@ -234,7 +233,7 @@ function banSubNet(ipAddressStart, ipAddressEnd, adminAccountId, reason) {
function unbanAccount(accountId, adminAccountId) {
let dbConnection = connectToDatabase();
if (dbConnection) {
- let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${AGRP_BANTYPE_ACCOUNT} AND ban_detail=${accountId}`);
+ let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${V_BANTYPE_ACCOUNT} AND ban_detail=${accountId}`);
freeDatabaseQuery(dbQuery);
dbConnection.close();
return true;
@@ -248,7 +247,7 @@ function unbanAccount(accountId, adminAccountId) {
function unbanSubAccount(subAccountId, adminAccountId) {
let dbConnection = connectToDatabase();
if (dbConnection) {
- let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${AGRP_BANTYPE_SUBACCOUNT} AND ban_detail=${subAccountId}`);
+ let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${V_BANTYPE_SUBACCOUNT} AND ban_detail=${subAccountId}`);
freeDatabaseQuery(dbQuery);
dbConnection.close();
return true;
@@ -262,7 +261,7 @@ function unbanSubAccount(subAccountId, adminAccountId) {
function unbanIPAddress(ipAddress, adminAccountId) {
let dbConnection = connectToDatabase();
if (dbConnection) {
- let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${AGRP_BANTYPE_IPADDRESS} AND ban_detail=INET_ATON(${ipAddress})`);
+ let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${V_BANTYPE_IPADDRESS} AND ban_detail=INET_ATON(${ipAddress})`);
freeDatabaseQuery(dbQuery);
dbConnection.close();
return true;
@@ -276,7 +275,7 @@ function unbanIPAddress(ipAddress, adminAccountId) {
function unbanSubNet(ipAddressStart, ipAddressEnd, adminAccountId) {
let dbConnection = connectToDatabase();
if (dbConnection) {
- let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${AGRP_BANTYPE_SUBNET} AND ban_ip_start=INET_ATON(${ipAddressStart}) AND ban_ip_end=INET_ATON(${ipAddressEnd})`);
+ let dbQuery = queryDatabase(dbConnection, `UPDATE ban_main SET ban_who_removed=${adminAccountId}, ban_removed=1 WHERE ban_type=${V_BANTYPE_SUBNET} AND ban_ip_start=INET_ATON(${ipAddressStart}) AND ban_ip_end=INET_ATON(${ipAddressEnd})`);
freeDatabaseQuery(dbQuery);
dbConnection.close();
return true;
@@ -288,7 +287,7 @@ function unbanSubNet(ipAddressStart, ipAddressEnd, adminAccountId) {
// ===========================================================================
function isAccountBanned(accountId) {
- let bans = getServerData().bans.filter(ban => ban.type === AGRP_BANTYPE_ACCOUNT && ban.detail === accountId);
+ let bans = getServerData().bans.filter(ban => ban.type === V_BANTYPE_ACCOUNT && ban.detail === accountId);
if (bans.length > 0) {
return true;
}
@@ -299,7 +298,7 @@ function isAccountBanned(accountId) {
// ===========================================================================
function isSubAccountBanned(subAccountId) {
- let bans = getServerData().bans.filter(ban => ban.type === AGRP_BANTYPE_SUBACCOUNT && ban.detail === subAccountId);
+ let bans = getServerData().bans.filter(ban => ban.type === V_BANTYPE_SUBACCOUNT && ban.detail === subAccountId);
if (bans.length > 0) {
return true;
}
@@ -310,7 +309,7 @@ function isSubAccountBanned(subAccountId) {
// ===========================================================================
function isIpAddressBanned(ipAddress) {
- let bans = getServerData().bans.filter(ban => ban.type === AGRP_BANTYPE_IPADDRESS && ban.detail === ipAddress);
+ let bans = getServerData().bans.filter(ban => ban.type === V_BANTYPE_IPADDRESS && ban.detail === ipAddress);
if (bans.length > 0) {
return true;
}
diff --git a/scripts/server/bank.js b/scripts/server/bank.js
index 481767f5..99796f2d 100644
--- a/scripts/server/bank.js
+++ b/scripts/server/bank.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: bank.js
// DESC: Provides banking functions and usage
@@ -9,13 +8,13 @@
// ===========================================================================
// House Owner Types
-const AGRP_BANK_ACCT_OWNER_NONE = 0; // Not owned
-const AGRP_BANK_ACCT_OWNER_PLAYER = 1; // Owner is a player (character/subaccount)
-const AGRP_BANK_ACCT_OWNER_JOB = 2; // Owned by a job
-const AGRP_BANK_ACCT_OWNER_CLAN = 3; // Owned by a clan
-const AGRP_BANK_ACCT_OWNER_FACTION = 4; // Owned by a faction
-const AGRP_BANK_ACCT_OWNER_BIZ = 4; // Owned by a faction
-const AGRP_BANK_ACCT_OWNER_PUBLIC = 5; // Is a public bank account. Technically not owned. This probably won't be used.
+const V_BANK_ACCT_OWNER_NONE = 0; // Not owned
+const V_BANK_ACCT_OWNER_PLAYER = 1; // Owner is a player (character/subaccount)
+const V_BANK_ACCT_OWNER_JOB = 2; // Owned by a job
+const V_BANK_ACCT_OWNER_CLAN = 3; // Owned by a clan
+const V_BANK_ACCT_OWNER_FACTION = 4; // Owned by a faction
+const V_BANK_ACCT_OWNER_BIZ = 4; // Owned by a faction
+const V_BANK_ACCT_OWNER_PUBLIC = 5; // Is a public bank account. Technically not owned. This probably won't be used.
// ===========================================================================
@@ -26,7 +25,7 @@ function isPlayerAtBank(client) {
let businessId = getPlayerBusiness(client);
if (getBusinessData(client) != false) {
- if (getBusinessData(businessId).type == AGRP_BIZ_TYPE_BANK) {
+ if (getBusinessData(businessId).type == V_BIZ_TYPE_BANK) {
return true;
}
}
diff --git a/scripts/server/bitflag.js b/scripts/server/bitflag.js
index e0635c77..077f47e4 100644
--- a/scripts/server/bitflag.js
+++ b/scripts/server/bitflag.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: bitflags.js
// DESC: Provides bitwise operations, functions and usage
@@ -16,7 +15,7 @@ let serverBitFlags = {
accountSettingsFlags: {},
subAccountSettingsFlags: {},
accountFlags: {},
- seenHelpTipsFlags: {},
+ seenActionTipsFlags: {},
npcTriggerTypeFlags: {},
npcTriggerConditionTypesFlags: {},
npcTriggerResponseTypeFlags: {},
@@ -240,12 +239,28 @@ let serverBitFlagKeys = {
"EnterProperty",
"SearchArea",
],
- seenHelpTipsKeys: [
+ seenActionTipsKeys: [
"None",
"VehicleEngineOffWhenEntering",
"VehicleLockedAfterEntryAttempt",
"ShowItemsAfterPurchase",
"BuyCommandAfterEnterBusiness",
+ "UseItemKeyAfterEquipping",
+ "UseItemKeyAfterEquippingWalkieTalkie",
+ "RadioCommandAfterEnablingWalkieTalkie",
+ "ReplyToDirectMessage",
+ "UseItemKeyAmmoAfterEquippingWeapon",
+ "AnimationStop",
+ "JobEquipmentInventory",
+ "ViewInventory",
+ "VehicleRepairItemUsage",
+ "VehicleColourItemUsage",
+ "VehiclePartItemUsage",
+ "AmmoClipItemUsage",
+ "GenericItemUsage",
+ "EnterJobVehicleForRoute",
+ "JobLocations",
+ "JobRouteStart",
],
jobRankKeys: [
"None",
@@ -265,7 +280,7 @@ let serverBitFlagKeys = {
// ===========================================================================
function initBitFlagScript() {
- logToConsole(LOG_DEBUG, "[VRR.BitFlag]: Initializing bit flag script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.BitFlag]: Initializing bit flag script ...");
serverBitFlags.staffFlags = createBitFlagTable(serverBitFlagKeys.staffFlagKeys);
serverBitFlags.moderationFlags = createBitFlagTable(serverBitFlagKeys.moderationFlagKeys);
serverBitFlags.accountSettingsFlags = createBitFlagTable(serverBitFlagKeys.accountSettingsFlagKeys);
@@ -277,9 +292,9 @@ function initBitFlagScript() {
serverBitFlags.npcTriggerTypes = createBitFlagTable(serverBitFlagKeys.npcTriggerTypeKeys);
serverBitFlags.npcTriggerConditionTypes = createBitFlagTable(serverBitFlagKeys.npcTriggerConditionTypeKeys);
serverBitFlags.npcTriggerResponseTypes = createBitFlagTable(serverBitFlagKeys.npcTriggerResponseTypeKeys);
- serverBitFlags.seenHelpTips = createBitFlagTable(serverBitFlagKeys.seenHelpTipsKeys);
+ serverBitFlags.seenActionTips = createBitFlagTable(serverBitFlagKeys.seenActionTipsKeys);
serverBitFlags.jobRankFlags = createBitFlagTable(serverBitFlagKeys.jobRankKeys);
- logToConsole(LOG_INFO, "[VRR.BitFlag]: Bit flag script initialized successfully!");
+ logToConsole(LOG_INFO, "[AGRP.BitFlag]: Bit flag script initialized successfully!");
return true;
}
@@ -313,7 +328,7 @@ function doesPlayerHaveStaffPermission(client, requiredFlags) {
// ===========================================================================
-function doesPlayerHaveClanPermission(client, requiredFlags) {
+function doesPlayerHaveClanPermission(client, requiredFlags, exemptAdminFlag = false) {
if (isConsole(client)) {
return true;
}
@@ -322,8 +337,10 @@ function doesPlayerHaveClanPermission(client, requiredFlags) {
return true;
}
- if (doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageClans"))) {
- return true;
+ if (exemptAdminFlag == false) {
+ if (doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageClans"))) {
+ return true;
+ }
}
let clanFlags = 0;
@@ -343,7 +360,7 @@ function doesPlayerHaveClanPermission(client, requiredFlags) {
// ===========================================================================
-function doesPlayerHaveJobPermission(client, requiredFlags) {
+function doesPlayerHaveJobPermission(client, requiredFlags, exemptAdminFlag = false) {
if (isConsole(client)) {
return true;
}
@@ -352,8 +369,10 @@ function doesPlayerHaveJobPermission(client, requiredFlags) {
return true;
}
- if (doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageJobs"))) {
- return true;
+ if (exemptAdminFlag == false) {
+ if (doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageJobs"))) {
+ return true;
+ }
}
let jobFlags = 0;
@@ -443,6 +462,20 @@ function getClanDiscordWebhookValue(flagName) {
// ===========================================================================
+function getSeenActionTipsValue(flagName) {
+ if (flagName == "All") {
+ return -1;
+ }
+
+ if (typeof serverBitFlags.seenActionTips[flagName] == "undefined") {
+ return false;
+ }
+
+ return serverBitFlags.seenActionTips[flagName];
+}
+
+// ===========================================================================
+
function givePlayerStaffFlag(client, flagName) {
if (!getStaffFlagValue(flagName)) {
return false;
diff --git a/scripts/server/business.js b/scripts/server/business.js
index 84b02903..72bc7ca4 100644
--- a/scripts/server/business.js
+++ b/scripts/server/business.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: business.js
// DESC: Provides business functions and usage
@@ -9,34 +8,34 @@
// ===========================================================================
// Business Types
-const AGRP_BIZ_TYPE_NONE = 0; // None (invalid)
-const AGRP_BIZ_TYPE_NORMAL = 1; // Normal business (sells items)
-const AGRP_BIZ_TYPE_BANK = 2; // Bank
-const AGRP_BIZ_TYPE_PUBLIC = 3; // Public business (Government, public service, etc)
-const AGRP_BIZ_TYPE_PAINTBALL = 4; // Paintball arena. Player joins paintball/airsoft when they enter
-const AGRP_BIZ_TYPE_DEALERSHIP = 5; // Vehicle Dealership (also for airplane, boat, etc)
+const V_BIZ_TYPE_NONE = 0; // None (invalid)
+const V_BIZ_TYPE_NORMAL = 1; // Normal business (sells items)
+const V_BIZ_TYPE_BANK = 2; // Bank
+const V_BIZ_TYPE_PUBLIC = 3; // Public business (Government, public service, etc)
+const V_BIZ_TYPE_PAINTBALL = 4; // Paintball arena. Player joins paintball/airsoft when they enter
+const V_BIZ_TYPE_DEALERSHIP = 5; // Vehicle Dealership (also for airplane, boat, etc)
// ===========================================================================
// Business Location Types
-const AGRP_BIZ_LOC_NONE = 0; // None
-const AGRP_BIZ_LOC_GATE = 1; // Center of any moveable gate that belongs to the biz
-const AGRP_BIZ_LOC_GARAGE = 2; // Location for attached garage (pos1 = outside, pos2 = inside). Use pos to teleport or spawn veh/ped
-const AGRP_BIZ_LOC_FUEL = 3; // Fuel pump
-const AGRP_BIZ_LOC_DRIVETHRU = 4; // Drivethrough
-const AGRP_BIZ_LOC_VENDMACHINE = 5; // Vending machine
-const AGRP_BIZ_LOC_ATM = 6; // ATM
-const AGRP_BIZ_LOC_PAYPHONE = 7; // Payphone
+const V_BIZ_LOC_NONE = 0; // None
+const V_BIZ_LOC_GATE = 1; // Center of any moveable gate that belongs to the biz
+const V_BIZ_LOC_GARAGE = 2; // Location for attached garage (pos1 = outside, pos2 = inside). Use pos to teleport or spawn veh/ped
+const V_BIZ_LOC_FUEL = 3; // Fuel pump
+const V_BIZ_LOC_DRIVETHRU = 4; // Drivethrough
+const V_BIZ_LOC_VENDMACHINE = 5; // Vending machine
+const V_BIZ_LOC_ATM = 6; // ATM
+const V_BIZ_LOC_PAYPHONE = 7; // Payphone
// ===========================================================================
// Business Owner Types
-const AGRP_BIZ_OWNER_NONE = 0; // Not owned
-const AGRP_BIZ_OWNER_PLAYER = 1; // Owned by a player (character/subaccount)
-const AGRP_BIZ_OWNER_JOB = 2; // Owned by a job
-const AGRP_BIZ_OWNER_CLAN = 3; // Owned by a clan
-const AGRP_BIZ_OWNER_FACTION = 4; // Owned by a faction (not used at the moment)
-const AGRP_BIZ_OWNER_PUBLIC = 5; // Public Business. Used for goverment/official places like police, fire, city hall, DMV, etc
+const V_BIZ_OWNER_NONE = 0; // Not owned
+const V_BIZ_OWNER_PLAYER = 1; // Owned by a player (character/subaccount)
+const V_BIZ_OWNER_JOB = 2; // Owned by a job
+const V_BIZ_OWNER_CLAN = 3; // Owned by a clan
+const V_BIZ_OWNER_FACTION = 4; // Owned by a faction (not used at the moment)
+const V_BIZ_OWNER_PUBLIC = 5; // Public Business. Used for goverment/official places like police, fire, city hall, DMV, etc
// ===========================================================================
@@ -50,7 +49,7 @@ class BusinessData {
constructor(dbAssoc = false) {
this.databaseId = 0;
this.name = "";
- this.ownerType = AGRP_BIZ_OWNER_NONE;
+ this.ownerType = V_BIZ_OWNER_NONE;
this.ownerId = 0;
this.buyPrice = 0;
this.locked = false;
@@ -58,7 +57,8 @@ class BusinessData {
this.index = -1;
this.needsSaved = false;
this.interiorLights = true;
- this.type = AGRP_BIZ_TYPE_NONE;
+ this.type = V_BIZ_TYPE_NONE;
+ this.propertyType = V_PROPERTY_TYPE_BUSINESS;
this.floorItemCache = [];
this.storageItemCache = [];
@@ -73,6 +73,7 @@ class BusinessData {
this.entranceBlipModel = -1;
this.entrancePickup = null;
this.entranceBlip = null;
+ this.entranceScene = "";
this.exitPosition = false;
this.exitRotation = 0.0;
@@ -82,6 +83,7 @@ class BusinessData {
this.exitBlipModel = -1;
this.exitPickup = null;
this.exitBlip = null;
+ this.exitScene = "";
this.entranceFee = 0;
this.till = 0;
@@ -89,7 +91,9 @@ class BusinessData {
this.streamingRadioStation = 0;
//this.streamingRadioStationIndex = -1;
- this.labelHelpType = AGRP_PROPLABEL_INFO_NONE;
+ this.paintBallPlayers = [];
+
+ this.labelHelpType = V_PROPLABEL_INFO_NONE;
if (dbAssoc) {
this.databaseId = toInteger(dbAssoc["biz_id"]);
@@ -108,6 +112,7 @@ class BusinessData {
this.entranceDimension = toInteger(dbAssoc["biz_entrance_vw"]);
this.entrancePickupModel = toInteger(dbAssoc["biz_entrance_pickup"]);
this.entranceBlipModel = toInteger(dbAssoc["biz_entrance_blip"]);
+ this.entranceScene = toString(dbAssoc["biz_entrance_scene"]);
this.exitPosition = toVector3(dbAssoc["biz_exit_pos_x"], dbAssoc["biz_exit_pos_y"], dbAssoc["biz_exit_pos_z"]);
this.exitRotation = toInteger(dbAssoc["biz_exit_rot_z"]);
@@ -115,6 +120,7 @@ class BusinessData {
this.exitDimension = toInteger(dbAssoc["biz_exit_vw"]);
this.exitPickupModel = toInteger(dbAssoc["biz_exit_pickup"]);
this.exitBlipModel = toInteger(dbAssoc["biz_exit_blip"]);
+ this.exitScene = toString(dbAssoc["biz_exit_scene"]);
this.entranceFee = toInteger(dbAssoc["biz_entrance_fee"]);
this.till = toInteger(dbAssoc["biz_till"]);
@@ -182,8 +188,8 @@ class BusinessGameScriptData {
// ===========================================================================
function initBusinessScript() {
- logToConsole(LOG_INFO, "[VRR.Business]: Initializing business script ...");
- logToConsole(LOG_INFO, "[VRR.Business]: Business script initialized successfully!");
+ logToConsole(LOG_INFO, "[AGRP.Business]: Initializing business script ...");
+ logToConsole(LOG_INFO, "[AGRP.Business]: Business script initialized successfully!");
return true;
}
@@ -193,11 +199,9 @@ function loadBusinessFromId(businessId) {
let dbConnection = connectToDatabase();
if (dbConnection) {
let dbQueryString = `SELECT * FROM biz_main WHERE biz_id = ${businessId} LIMIT 1;`;
- let dbQuery = queryDatabase(dbConnection, dbQueryString);
- if (dbQuery) {
- let dbAssoc = fetchQueryAssoc(dbQuery);
- freeDatabaseQuery(dbQuery);
- return new BusinessData(dbAssoc);
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ return new BusinessData(dbAssoc[0]);
}
disconnectFromDatabase(dbConnection);
}
@@ -208,62 +212,56 @@ function loadBusinessFromId(businessId) {
// ===========================================================================
function loadBusinessesFromDatabase() {
- logToConsole(LOG_INFO, "[VRR.Business]: Loading businesses from database ...");
+ logToConsole(LOG_INFO, "[AGRP.Business]: Loading businesses from database ...");
let tempBusinesses = [];
let dbConnection = connectToDatabase();
- let dbQuery = null;
- let dbAssoc;
+ let dbAssoc = [];
if (dbConnection) {
- dbQuery = queryDatabase(dbConnection, `SELECT * FROM biz_main WHERE biz_deleted = 0 AND biz_server = ${getServerId()}`);
- if (dbQuery) {
- if (dbQuery.numRows > 0) {
- while (dbAssoc = fetchQueryAssoc(dbQuery)) {
- let tempBusinessData = new BusinessData(dbAssoc);
- tempBusinessData.locations = loadBusinessLocationsFromDatabase(tempBusinessData.databaseId);
- //tempBusinessData.gameScripts = loadBusinessGameScriptsFromDatabase(tempBusinessData.databaseId);
- tempBusinesses.push(tempBusinessData);
- logToConsole(LOG_VERBOSE, `[VRR.Business]: Business '${tempBusinessData.name}' (ID ${tempBusinessData.databaseId}) loaded from database successfully!`);
- }
+ let dbQueryString = `SELECT * FROM biz_main WHERE biz_deleted = 0 AND biz_server = ${getServerId()}`;
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ for (let i in dbAssoc) {
+ let tempBusinessData = new BusinessData(dbAssoc[i]);
+ tempBusinessData.locations = loadBusinessLocationsFromDatabase(tempBusinessData.databaseId);
+ //tempBusinessData.gameScripts = loadBusinessGameScriptsFromDatabase(tempBusinessData.databaseId);
+ tempBusinesses.push(tempBusinessData);
+ logToConsole(LOG_VERBOSE, `[AGRP.Business]: Business '${tempBusinessData.name}' (ID ${tempBusinessData.databaseId}) loaded from database successfully!`);
}
- freeDatabaseQuery(dbQuery);
}
+
disconnectFromDatabase(dbConnection);
}
- logToConsole(LOG_INFO, `[VRR.Business]: ${tempBusinesses.length} businesses loaded from database successfully!`);
+ logToConsole(LOG_INFO, `[AGRP.Business]: ${tempBusinesses.length} businesses loaded from database successfully!`);
return tempBusinesses;
}
// ===========================================================================
function loadBusinessLocationsFromDatabase(businessId) {
- logToConsole(LOG_VERBOSE, `[VRR.Business]: Loading business locations for business ${businessId} from database ...`);
+ logToConsole(LOG_VERBOSE, `[AGRP.Business]: Loading business locations for business ${businessId} from database ...`);
let tempBusinessLocations = [];
let dbConnection = connectToDatabase();
- let dbQuery = null;
- let dbAssoc;
+ let dbAssoc = [];
let dbQueryString = "";
if (dbConnection) {
dbQueryString = `SELECT * FROM biz_loc WHERE biz_loc_biz = ${businessId}`;
- dbQuery = queryDatabase(dbConnection, dbQueryString);
- if (dbQuery) {
- if (dbQuery.numRows > 0) {
- while (dbAssoc = fetchQueryAssoc(dbQuery)) {
- let tempBusinessLocationData = new BusinessLocationData(dbAssoc);
- tempBusinessLocations.push(tempBusinessLocationData);
- logToConsole(LOG_VERBOSE, `[VRR.Business]: Location '${tempBusinessLocationData.name}' loaded from database successfully!`);
- }
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ for (let i in dbAssoc) {
+ let tempBusinessLocationData = new BusinessLocationData(dbAssoc[i]);
+ tempBusinessLocations.push(tempBusinessLocationData);
+ logToConsole(LOG_VERBOSE, `[AGRP.Business]: Location '${tempBusinessLocationData.name}' loaded from database successfully!`);
}
- freeDatabaseQuery(dbQuery);
}
disconnectFromDatabase(dbConnection);
}
- logToConsole(LOG_VERBOSE, `[VRR.Business]: ${tempBusinessLocations.length} location for business ${businessId} loaded from database successfully!`);
+ logToConsole(LOG_VERBOSE, `[AGRP.Business]: ${tempBusinessLocations.length} location for business ${businessId} loaded from database successfully!`);
return tempBusinessLocations;
}
@@ -271,31 +269,28 @@ function loadBusinessLocationsFromDatabase(businessId) {
/*
function loadBusinessGameScriptsFromDatabase(businessId) {
- logToConsole(LOG_VERBOSE, `[VRR.Business]: Loading business game scripts for business ${businessId} from database ...`);
+ logToConsole(LOG_VERBOSE, `[AGRP.Business]: Loading business game scripts for business ${businessId} from database ...`);
let tempBusinessGameScripts = [];
let dbConnection = connectToDatabase();
let dbQuery = null;
- let dbAssoc;
+ let dbAssoc = [];
let dbQueryString = "";
if(dbConnection) {
dbQueryString = `SELECT * FROM biz_script WHERE biz_script_biz = ${businessId}`;
- dbQuery = queryDatabase(dbConnection, dbQueryString);
- if(dbQuery) {
- if(dbQuery.numRows > 0) {
- while(dbAssoc = fetchQueryAssoc(dbQuery)) {
- let tempBusinessGameScriptData = new BusinessGameScriptData(dbAssoc);
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ for (let i in dbAssoc) {
+ let tempBusinessGameScriptData = new BusinessGameScriptData(dbAssoc[i]);
tempBusinessGameScripts.push(tempBusinessGameScriptData);
- logToConsole(LOG_VERBOSE, `[VRR.Business]: Game script '${tempBusinessGameScriptData.name}' loaded from database successfully!`);
+ logToConsole(LOG_VERBOSE, `[AGRP.Business]: Game script '${tempBusinessGameScriptData.name}' loaded from database successfully!`);
}
}
- freeDatabaseQuery(dbQuery);
- }
disconnectFromDatabase(dbConnection);
}
- logToConsole(LOG_VERBOSE, `[VRR.Business]: ${tempBusinessGameScripts.length} game scripts for business ${businessId} loaded from database successfully!`);
+ logToConsole(LOG_VERBOSE, `[AGRP.Business]: ${tempBusinessGameScripts.length} game scripts for business ${businessId} loaded from database successfully!`);
return tempBusinessGameScripts;
}
*/
@@ -312,9 +307,17 @@ function loadBusinessGameScriptsFromDatabase(businessId) {
*
*/
function createBusinessCommand(command, params, client) {
- createBusiness(params, getPlayerPosition(client), toVector3(0.0, 0.0, 0.0), getGameConfig().pickupModels[getGame()].Business, -1, getPlayerInterior(client), getPlayerDimension(client), getPlayerData(client).interiorCutscene);
+ createBusiness(
+ params,
+ getPlayerPosition(client),
+ toVector3(0.0, 0.0, 0.0),
+ (isGameFeatureSupported("pickup")) ? getGameConfig().pickupModels[getGame()].Business : -1,
+ -1,
+ getPlayerInterior(client),
+ getPlayerDimension(client),
+ getPlayerData(client).interiorScene);
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} created business: {businessBlue}${params}`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} created business: {businessBlue}${params}`, true);
}
// ===========================================================================
@@ -349,12 +352,12 @@ function createBusinessLocationCommand(command, params, client) {
let tempBusinessLocationData = createBusinessLocation(locationType, businessId);
getServerData().businesses[businessId].push(tempBusinessLocationData);
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} created location {businessBlue}${params}{MAINCOLOUR} for business {businessBlue}${tempBusinessData.name}`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} created location {businessBlue}${params}{MAINCOLOUR} for business {businessBlue}${tempBusinessData.name}`, true);
}
// ===========================================================================
-function createBusiness(name, entrancePosition, exitPosition, entrancePickupModel = -1, entranceBlipModel = -1, entranceInterior = 0, entranceDimension = 0, entranceCutscene = -1) {
+function createBusiness(name, entrancePosition, exitPosition, entrancePickupModel = -1, entranceBlipModel = -1, entranceInterior = 0, entranceDimension = 0, entranceScene = -1) {
let tempBusinessData = new BusinessData(false);
tempBusinessData.name = name;
@@ -364,7 +367,7 @@ function createBusiness(name, entrancePosition, exitPosition, entrancePickupMode
tempBusinessData.entranceBlipModel = entranceBlipModel;
tempBusinessData.entranceInterior = entranceInterior;
tempBusinessData.entranceDimension = entranceDimension;
- tempBusinessData.entranceCutscene = entranceCutscene;
+ tempBusinessData.entranceScene = entranceScene;
tempBusinessData.exitPosition = exitPosition;
tempBusinessData.exitRotation = 0.0;
@@ -372,7 +375,7 @@ function createBusiness(name, entrancePosition, exitPosition, entrancePickupMode
tempBusinessData.exitBlipModel = -1;
tempBusinessData.exitInterior = 0;
tempBusinessData.exitDimension = 0;
- tempBusinessData.exitCutscene = -1;
+ tempBusinessData.exitScene = -1;
tempBusinessData.needsSaved = true;
let businessId = getServerData().businesses.push(tempBusinessData);
@@ -408,8 +411,8 @@ function deleteBusinessCommand(command, params, client) {
return false;
}
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} deleted business {businessBlue}${getBusinessData(businessId).name}`, true);
deleteBusiness(businessId, getPlayerData(client).accountData.databaseId);
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} deleted business {businessBlue}${getBusinessData(businessId).name}`);
}
// ===========================================================================
@@ -457,9 +460,9 @@ function setBusinessNameCommand(command, params, client) {
let oldBusinessName = getBusinessData(businessId).name;
getBusinessData(businessId).name = newBusinessName;
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.name", getBusinessData(businessId).name, true);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.name", getBusinessData(businessId).name, true);
getBusinessData(businessId).needsSaved = true;
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} renamed business {businessBlue}${oldBusinessName}{MAINCOLOUR} to {businessBlue}${newBusinessName}`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} renamed business {businessBlue}${oldBusinessName}{MAINCOLOUR} to {businessBlue}${newBusinessName}`, true);
}
// ===========================================================================
@@ -497,7 +500,7 @@ function setBusinessOwnerCommand(command, params, client) {
return false;
}
- getBusinessData(businessId).ownerType = AGRP_BIZ_OWNER_PLAYER;
+ getBusinessData(businessId).ownerType = V_BIZ_OWNER_PLAYER;
getBusinessData(businessId).ownerId = getPlayerCurrentSubAccount(newBusinessOwner).databaseId;
getBusinessData(businessId).needsSaved = true;
@@ -539,11 +542,11 @@ function setBusinessJobCommand(command, params, client) {
return false;
}
- getBusinessData(businessId).ownerType = AGRP_BIZ_OWNER_JOB;
+ getBusinessData(businessId).ownerType = V_BIZ_OWNER_JOB;
getBusinessData(businessId).ownerId = getJobData(jobId).databaseId;
getBusinessData(businessId).needsSaved = true;
- messagePlayerSuccess(client, `{MAINCOLOUR}You set the owner of business {businessBlue}${getBusinessData(businessId).name} {MAINCOLOUR}to the {jobYellow}${getJobData(jobId).name}`);
+ messagePlayerSuccess(client, `{MAINCOLOUR}You set the owner of business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} to the {jobYellow}${getJobData(jobId).name}`);
}
// ===========================================================================
@@ -572,7 +575,7 @@ function setBusinessClanCommand(command, params, client) {
return false;
}
- if (getBusinessData(business).ownerType != AGRP_VEHOWNER_PLAYER) {
+ if (getBusinessData(business).ownerType != V_VEHOWNER_PLAYER) {
messagePlayerError(client, getLocaleString(client, "MustOwnBusiness"));
return false;
}
@@ -582,10 +585,11 @@ function setBusinessClanCommand(command, params, client) {
return false;
}
+ // Use confirm prompt
showPlayerPrompt(client, getLocaleString(client, "SetBusinessClanConfirmMessage"), getLocaleString(client, "SetBusinessClanConfirmTitle"), getLocaleString(client, "Yes"), getLocaleString(client, "No"));
- getPlayerData(client).promptType = AGRP_PROMPT_BIZGIVETOCLAN;
+ getPlayerData(client).promptType = V_PROMPT_GIVEBIZTOCLAN;
- //getBusinessData(businessId).ownerType = AGRP_BIZ_OWNER_CLAN;
+ //getBusinessData(businessId).ownerType = V_BIZ_OWNER_CLAN;
//getBusinessData(businessId).ownerId = getClanData(clanId).databaseId;
//getBusinessData(businessId).needsSaved = true;
}
@@ -616,7 +620,7 @@ function setBusinessRankCommand(command, params, client) {
return false;
}
- if (getVehicleData(vehicle).ownerType == AGRP_VEHOWNER_CLAN) {
+ if (getVehicleData(vehicle).ownerType == V_VEHOWNER_CLAN) {
let clanId = getClanIndexFromDatabaseId(getBusinessData(businessId).ownerId);
rankId = getClanRankFromParams(clanId, params);
if (!getClanRankData(clanId, rankId)) {
@@ -625,7 +629,7 @@ function setBusinessRankCommand(command, params, client) {
}
getBusinessData(businessId).rank = getClanRankData(clanId, rankId).databaseId;
messagePlayerSuccess(client, `{MAINCOLOUR}You set business {businessBlue}${getBusinessData(businessId).name} {MAINCOLOUR}rank to {ALTCOLOUR}${getClanRankData(clanId, rankId).name} {MAINCOLOUR}of the {clanOrange}${getClanData(clanId).name} {MAINCOLOUR}clan!`);
- } else if (getBusinessData(businessId).ownerType == AGRP_VEHOWNER_JOB) {
+ } else if (getBusinessData(businessId).ownerType == V_VEHOWNER_JOB) {
getBusinessData(businessId).rank = rankId;
messagePlayerSuccess(client, `{MAINCOLOUR}You set business {businessBlue}${getBusinessData(businessId).name} {MAINCOLOUR}rank to {ALTCOLOUR}${rankId} {MAINCOLOUR}of the {jobYellow}${getJobData(getJobIdFromDatabaseId(getBusinessData(businessId).ownerId)).name} {MAINCOLOUR}job!`);
}
@@ -722,7 +726,7 @@ function setBusinessJobCommand(command, params, client) {
return false;
}
- getBusinessData(businessId).ownerType = AGRP_BIZ_OWNER_JOB;
+ getBusinessData(businessId).ownerType = V_BIZ_OWNER_JOB;
getBusinessData(businessId).ownerId = getJobData(jobId).databaseId;
getBusinessData(businessId).needsSaved = true;
@@ -752,7 +756,7 @@ function setBusinessPublicCommand(command, params, client) {
return false;
}
- getBusinessData(businessId).ownerType = AGRP_BIZ_OWNER_PUBLIC;
+ getBusinessData(businessId).ownerType = V_BIZ_OWNER_PUBLIC;
getBusinessData(businessId).ownerId = 0;
getBusinessData(businessId).needsSaved = true;
@@ -782,7 +786,7 @@ function removeBusinessOwnerCommand(command, params, client) {
return false;
}
- getBusinessData(businessId).ownerType = AGRP_BIZ_OWNER_NONE;
+ getBusinessData(businessId).ownerType = V_BIZ_OWNER_NONE;
getBusinessData(businessId).ownerId = -1;
getBusinessData(businessId).needsSaved = true;
@@ -847,7 +851,8 @@ function setBusinessEntranceFeeCommand(command, params, client) {
getBusinessData(businessId).entranceFee = entranceFee;
getBusinessData(businessId).needsSaved = true;
- messagePlayerSuccess(client, `{MAINCOLOUR}You set business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} entrance fee to [#AAAAAAA]$${entranceFee}`);
+ updateBusinessPickupLabelData(businessId);
+ messagePlayerSuccess(client, `{MAINCOLOUR}You set business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} entrance fee to {ALTCOLOUR}${getCurrencyString(entranceFee)}`);
}
// ===========================================================================
@@ -874,7 +879,7 @@ function setBusinessPaintBallCommand(command, params, client) {
return false;
}
- getBusinessData(businessId).type = AGRP_BIZ_TYPE_PAINTBALL;
+ getBusinessData(businessId).type = V_BIZ_TYPE_PAINTBALL;
getBusinessData(businessId).needsSaved = true;
messagePlayerSuccess(client, getLocaleString(client, "BusinessIsNowPaintBall"));
}
@@ -906,24 +911,24 @@ function getBusinessInfoCommand(command, params, client) {
let ownerName = "Unknown";
switch (businessData.ownerType) {
- case AGRP_BIZ_OWNER_CLAN:
+ case V_BIZ_OWNER_CLAN:
ownerName = getClanData(businessData.ownerId).name;
break;
- case AGRP_BIZ_OWNER_JOB:
+ case V_BIZ_OWNER_JOB:
ownerName = getJobData(businessData.ownerId).name;
break;
- case AGRP_BIZ_OWNER_PLAYER:
+ case V_BIZ_OWNER_PLAYER:
let subAccountData = loadSubAccountFromId(businessData.ownerId);
ownerName = `${subAccountData.firstName} ${subAccountData.lastName} [${subAccountData.databaseId}]`;
break;
- case AGRP_BIZ_OWNER_PUBLIC:
+ case V_BIZ_OWNER_PUBLIC:
ownerName = "Public";
break;
- case AGRP_BIZ_OWNER_NONE:
+ case V_BIZ_OWNER_NONE:
//submitBugReport(client, `[AUTOMATED REPORT] getBusinessInfoCommand() - Invalid ownerType for business ${businessId}/${getBusinessData(businessId).databaseId}`);
ownerName = "None";
break;
@@ -940,14 +945,14 @@ function getBusinessInfoCommand(command, params, client) {
[`ID`, `${businessData.index}/${businessData.databaseId}`],
[`Owner`, `${ownerName} (${getBusinessOwnerTypeText(businessData.ownerType)})`],
[`Locked`, `${getLockedUnlockedFromBool(businessData.locked)}`],
- [`BuyPrice`, `$${businessData.buyPrice}`],
+ [`BuyPrice`, `${getCurrencyString(businessData.buyPrice)}`],
//[`RentPrice`, `${businessData.rentPrice}`],
[`HasInterior`, `${getYesNoFromBool(businessData.hasInterior)}`],
[`CustomInterior`, `${getYesNoFromBool(businessData.customInterior)}`],
[`HasBuyableItems`, `${getYesNoFromBool(doesBusinessHaveAnyItemsToBuy(businessId))}`],
- [`EntranceFee`, `$${businessData.entranceFee}`],
+ [`EntranceFee`, `${getCurrencyString(businessData.entranceFee)}`],
[`InteriorLights`, `${getOnOffFromBool(businessData.interiorLights)}`],
- [`Balance`, `$${businessData.till}`],
+ [`Balance`, `${getCurrencyString(businessData.till)}`],
[`RadioStation`, `${businessData.streamingRadioStation}`],
[`LabelHelpType`, `${businessData.labelHelpType}`],
];
@@ -1012,6 +1017,11 @@ function getBusinessStorageItemsCommand(command, params, client) {
return false;
}
+ if (!canPlayerManageBusiness(client, businessId)) {
+ messagePlayerError(client, getLocaleString(client, "CantModifyBusiness"));
+ return false;
+ }
+
showBusinessStorageInventoryToPlayer(client, businessId);
}
@@ -1057,7 +1067,7 @@ function setBusinessPickupCommand(command, params, client) {
getBusinessData(businessId).needsSaved = true;
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} set business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} pickup display to {ALTCOLOUR}${typeParam}!`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} set business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} pickup to {ALTCOLOUR}${typeParam}!`, true);
}
// ===========================================================================
@@ -1091,10 +1101,11 @@ function setBusinessInteriorTypeCommand(command, params, client) {
getBusinessData(businessId).exitDimension = 0;
getBusinessData(businessId).exitInterior = -1;
getBusinessData(businessId).hasInterior = false;
- getBusinessData(businessId).interiorCutscene = "";
+ getBusinessData(businessId).entranceScene = "";
+ getBusinessData(businessId).exitScene = "";
getBusinessData(businessId).exitPickupModel = -1;
getBusinessData(businessId).customInterior = false;
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} removed business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} interior`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} removed business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} interior`, true);
return false;
}
@@ -1113,10 +1124,17 @@ function setBusinessInteriorTypeCommand(command, params, client) {
getBusinessData(businessId).exitPosition = getGameConfig().interiors[getGame()][typeParam][0];
getBusinessData(businessId).exitInterior = getGameConfig().interiors[getGame()][typeParam][1];
getBusinessData(businessId).exitDimension = getBusinessData(businessId).databaseId + getGlobalConfig().businessDimensionStart;
- getBusinessData(businessId).exitPickupModel = getGameConfig().pickupModels[getGame()].Exit;
+ getBusinessData(businessId).exitPickupModel = (isGameFeatureSupported("pickup")) ? getGameConfig().pickupModels[getGame()].Exit : -1;
getBusinessData(businessId).hasInterior = true;
getBusinessData(businessId).customInterior = getGameConfig().interiors[getGame()][typeParam][2];
- getBusinessData(businessId).interiorCutscene = getGameConfig().interiors[getGame()][typeParam][3];
+
+ if (isGameFeatureSupported("interiorScene")) {
+ if (isMainWorldScene(getPlayerData(client).scene)) {
+ getBusinessData(businessId).exitScene = getGameConfig().mainWorldScene[getGame()];
+ } else {
+ getBusinessData(businessId).exitScene = getGameConfig().interiors[getGame()][typeParam][3];
+ }
+ }
}
//deleteBusinessExitPickup(businessId);
@@ -1128,7 +1146,7 @@ function setBusinessInteriorTypeCommand(command, params, client) {
getBusinessData(businessId).needsSaved = true;
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} set business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} interior type to {ALTCOLOUR}${typeParam}`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} set business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} interior type to {ALTCOLOUR}${typeParam}`, true);
}
// ===========================================================================
@@ -1175,7 +1193,7 @@ function addBusinessPropertyTemplateEntities(command, params, client) {
getBusinessData(businessId).exitPickupModel = getGameConfig().pickupModels[getGame()].Exit;
getBusinessData(businessId).hasInterior = true;
getBusinessData(businessId).customInterior = getGameConfig().interiors[getGame()][typeParam][2];
- getBusinessData(businessId).interiorCutscene = getGameConfig().interiors[getGame()][typeParam][3];
+ getBusinessData(businessId).interiorScene = getGameConfig().interiors[getGame()][typeParam][3];
}
//deleteBusinessExitPickup(businessId);
@@ -1187,7 +1205,7 @@ function addBusinessPropertyTemplateEntities(command, params, client) {
getBusinessData(businessId).needsSaved = true;
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} set business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} interior type to {ALTCOLOUR}${typeParam}`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} set business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} property template to {ALTCOLOUR}${typeParam}`, true);
}
// ===========================================================================
@@ -1232,7 +1250,7 @@ function setBusinessBlipCommand(command, params, client) {
resetBusinessBlips(businessId);
getBusinessData(businessId).needsSaved = true;
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} set business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} blip display to {ALTCOLOUR}${typeParam}`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} set business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} blip to {ALTCOLOUR}${typeParam}`, true);
}
// ===========================================================================
@@ -1276,14 +1294,14 @@ function giveDefaultItemsToBusinessCommand(command, params, client) {
let itemTypeId = getItemTypeFromParams(getGameConfig().defaultBusinessItems[getGame()][typeParam][i][0]);
let itemTypeData = getItemTypeData(itemTypeId);
if (itemTypeData) {
- let newItemIndex = createItem(itemTypeId, itemTypeData.orderValue, AGRP_ITEM_OWNER_BIZFLOOR, getBusinessData(businessId).databaseId, getGameConfig().defaultBusinessItems[getGame()][typeParam][i][1]);
+ let newItemIndex = createItem(itemTypeId, itemTypeData.orderValue, V_ITEM_OWNER_BIZFLOOR, getBusinessData(businessId).databaseId, getGameConfig().defaultBusinessItems[getGame()][typeParam][i][1]);
getItemData(newItemIndex).buyPrice = applyServerInflationMultiplier(itemTypeData.orderPrice) * getGameConfig().defaultBusinessItems[getGame()][typeParam][i][2];
}
}
cacheBusinessItems(businessId);
updateBusinessPickupLabelData(businessId);
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} gave business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} the default items for ${toLowerCase(typeParam)}`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} gave business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} the default items for ${typeParam}`, true);
}
// ===========================================================================
@@ -1305,10 +1323,10 @@ function setBusinessDealershipCommand(command, params, client) {
return false;
}
- getBusinessData(businessId).labelHelpType == AGRP_PROPLABEL_INFO_ENTERVEHICLE;
- getBusinessData(businessId).type = AGRP_BIZ_TYPE_DEALERSHIP;
+ getBusinessData(businessId).labelHelpType == V_PROPLABEL_INFO_ENTERVEHICLE;
+ getBusinessData(businessId).type = V_BIZ_TYPE_DEALERSHIP;
updateBusinessPickupLabelData(businessId);
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} set the business type of {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} to dealership`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} set the type of business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} to dealership`, true);
}
// ===========================================================================
@@ -1332,12 +1350,13 @@ function deleteBusinessFloorItemsCommand(command, params, client) {
let tempCache = getBusinessData(businessId).floorItemCache;
for (let i in tempCache) {
- deleteItem(tempCache[i]);
+ deleteItem(tempCache[i], getPlayerData(client).accountData.databaseId, false);
}
cacheBusinessItems(businessId);
+ setAllItemDataIndexes();
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} deleted all on-sale items for business {businessBlue}${getBusinessData(businessId).name}`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} deleted all on-sale items for business {businessBlue}${getBusinessData(businessId).name}`, true);
}
// ===========================================================================
@@ -1361,12 +1380,13 @@ function deleteBusinessStorageItemsCommand(command, params, client) {
let tempCache = getBusinessData(businessId).storageItemCache;
for (let i in tempCache) {
- deleteItem(tempCache[i]);
+ deleteItem(tempCache[i], getPlayerData(client).accountData.databaseId, false);
}
cacheBusinessItems(businessId);
+ setAllItemDataIndexes();
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} deleted all stored items for business {businessBlue}${getBusinessData(businessId).name}`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} deleted all storage items for business {businessBlue}${getBusinessData(businessId).name}`, true);
}
// ===========================================================================
@@ -1409,7 +1429,7 @@ function withdrawFromBusinessCommand(command, params, client) {
updatePlayerCash(client);
getBusinessData(businessId).needsSaved = true;
- messagePlayerSuccess(client, `You withdrew $${amount} from business {businessBlue}${getBusinessData(businessId).name} till`);
+ messagePlayerSuccess(client, `You withdrew ${getCurrencyString(amount)} from business {businessBlue}${getBusinessData(businessId).name} till`);
}
// ===========================================================================
@@ -1448,10 +1468,10 @@ function setBusinessBuyPriceCommand(command, params, client) {
}
getBusinessData(businessId).buyPrice = amount;
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.price", getBusinessData(businessId).buyPrice, true);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.price", getBusinessData(businessId).buyPrice, true);
getBusinessData(businessId).needsSaved = true;
- messagePlayerSuccess(client, `{MAINCOLOUR}You set business {businessBlue}${getBusinessData(businessId).name}'s {MAINCOLOUR}for-sale price to {ALTCOLOUR}$${makeLargeNumberReadable(amount)}`);
+ messagePlayerSuccess(client, `{MAINCOLOUR}You set business {businessBlue}${getBusinessData(businessId).name}'s{MAINCOLOUR} for-sale price to {ALTCOLOUR}${getCurrencyString(amount)}`);
}
// ===========================================================================
@@ -1486,7 +1506,7 @@ function depositIntoBusinessCommand(command, params, client) {
//}
if (getPlayerCurrentSubAccount(client).cash < amount) {
- messagePlayerError(client, `You don't have that much money! You only have $${getPlayerCurrentSubAccount(client).cash}`);
+ messagePlayerError(client, `You don't have that much money! You only have ${getCurrencyString(getPlayerCurrentSubAccount(client).cash)}`);
return false;
}
@@ -1495,7 +1515,7 @@ function depositIntoBusinessCommand(command, params, client) {
updatePlayerCash(client);
getBusinessData(businessId).needsSaved = true;
- messagePlayerSuccess(client, `You deposited $${amount} into business {businessBlue}${getBusinessData(businessId).name} {MAINCOLOUR}till`);
+ messagePlayerSuccess(client, `You deposited ${getCurrencyString(amount)} into business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} till`);
}
// ===========================================================================
@@ -1524,17 +1544,17 @@ function orderItemForBusinessCommand(command, params, client) {
let itemType = getItemTypeFromParams(splitParams.slice(0, -2).join(" "));
if (!getItemTypeData(itemType)) {
- messagePlayerError(client, `Invalid item type name or ID!`);
- messagePlayerInfo(client, `Use {ALTCOLOUR}/itemtypes {MAINCOLOUR}for a list of items`);
+ messagePlayerError(client, getLocaleString(client, "InvalidItemType"));
+ messagePlayerInfo(client, `Use {ALTCOLOUR}/itemtypes{MAINCOLOUR} for a list of items`);
return false;
}
let pricePerItem = getOrderPriceForItemType(itemType);
let amount = toInteger(splitParams.slice(-2, -1)) || 1;
- let value = toInteger(splitParams.slice(-1)) || getItemTypeData(itemType).capacity;
+ let value = getItemTypeData(itemType).orderValue;
let businessId = getPlayerBusiness(client);
- logToConsole(LOG_DEBUG, `[VRR.Business] ${getPlayerDisplayForConsole(client)} is ordering ${amount} ${splitParams.slice(0, -2).join(" ")} (${value})`);
+ logToConsole(LOG_DEBUG, `[AGRP.Business] ${getPlayerDisplayForConsole(client)} is ordering ${amount} ${splitParams.slice(0, -2).join(" ")}`);
if (!getBusinessData(businessId)) {
messagePlayerError(client, getLocaleString(client, "InvalidBusiness"));
@@ -1548,16 +1568,15 @@ function orderItemForBusinessCommand(command, params, client) {
let orderTotalCost = pricePerItem * amount;
- //getPlayerData(client).promptType = AGRP_PROMPT_BIZORDER;
+ //getPlayerData(client).promptType = V_PROMPT_BIZORDER;
getPlayerData(client).businessOrderAmount = amount;
getPlayerData(client).businessOrderBusiness = businessId;
getPlayerData(client).businessOrderItem = itemType;
- getPlayerData(client).businessOrderValue = value;
getPlayerData(client).businessOrderCost = orderTotalCost;
getBusinessData(businessId).needsSaved = true;
- showPlayerPrompt(client, `Ordering ${amount} ${getPluralForm(getItemTypeData(itemType).name)} (${getItemValueDisplay(itemType, value)}) at $${makeLargeNumberReadable(pricePerItem)} each will cost a total of $${makeLargeNumberReadable(orderTotalCost)}`, "Business Order Cost");
- getPlayerData(client).promptType = AGRP_PROMPT_BIZORDER;
+ showPlayerPrompt(client, `Ordering ${amount} ${getPluralForm(getItemTypeData(itemType).name)} will cost a total of ${getCurrencyString(orderTotalCost)}`, "Business Order Cost");
+ getPlayerData(client).promptType = V_PROMPT_BIZORDER;
}
// ===========================================================================
@@ -1574,13 +1593,13 @@ function orderItemForBusinessCommand(command, params, client) {
function orderItemForBusiness(businessId, itemType, amount) {
if (getBusinessData(businessId).till < orderTotalCost) {
let neededAmount = orderTotalCost - getBusinessData(businessId).till;
- //messagePlayerError(client, `The business doesn't have enough money (needs {ALTCOLOUR}$${neededAmount} {MAINCOLOUR}more)! Use {ALTCOLOUR}/bizdeposit {MAINCOLOUR}to add money to the business.`);
+ //messagePlayerError(client, `The business doesn't have enough money (needs {ALTCOLOUR}${getCurrencyString(neededAmount)} {MAINCOLOUR}more)! Use {ALTCOLOUR}/bizdeposit {MAINCOLOUR}to add money to the business.`);
return false;
}
getBusinessData(businessId).till -= orderTotalCost;
addToBusinessInventory(businessId, itemType, amount);
- //messagePlayerSuccess(client, `You ordered ${amount} ${getPluralForm(getItemTypeData(itemType).name)} (${getItemValueDisplay(itemType, value)}) at $${getItemTypeData(itemType).orderPrice} each for business {businessBlue}${getBusinessData(businessId).name}`);
+ //messagePlayerSuccess(client, `You ordered ${amount} ${getPluralForm(getItemTypeData(itemType).name)} (${getItemValueDisplay(itemType, value)}) at ${getCurrencyString(getItemTypeData(itemType).orderPrice)} each for business {businessBlue}${getBusinessData(businessId).name}`);
}
// ===========================================================================
@@ -1611,7 +1630,7 @@ function viewBusinessTillAmountCommand(command, params, client) {
return false;
}
- messagePlayerSuccess(client, `Business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} till has {ALTCOLOUR}$${getBusinessData(businessId).till}`);
+ messagePlayerSuccess(client, `Business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} till has {ALTCOLOUR}${getCurrencyString(getBusinessData(businessId).till)}`);
}
// ===========================================================================
@@ -1644,7 +1663,7 @@ function buyBusinessCommand(command, params, client) {
}
showPlayerPrompt(client, getLocaleString(client, "BuyBusinessConfirmMessage"), getLocaleString(client, "BuyBusinessConfirmTitle"), getLocaleString(client, "Yes"), getLocaleString(client, "No"));
- getPlayerData(client).promptType = AGRP_PROMPT_BIZBUY;
+ getPlayerData(client).promptType = V_PROMPT_BUYBIZ;
}
// ===========================================================================
@@ -1684,7 +1703,7 @@ function moveBusinessEntranceCommand(command, params, client) {
getBusinessData(businessId).needsSaved = true;
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} moved business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} entrance to their position`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} moved business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} entrance to their position`, true);
}
// ===========================================================================
@@ -1722,7 +1741,7 @@ function moveBusinessExitCommand(command, params, client) {
getBusinessData(businessId).needsSaved = true;
- messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} moved business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR}exit to their position`);
+ messageAdmins(`{adminOrange}${getPlayerName(client)}{MAINCOLOUR} moved business {businessBlue}${getBusinessData(businessId).name}{MAINCOLOUR} exit to their position`, true);
}
// ===========================================================================
@@ -1874,7 +1893,7 @@ function saveBusinessToDatabase(businessId) {
return false;
}
- logToConsole(LOG_DEBUG, `[VRR.Business]: Saving business '${tempBusinessData.name}' to database ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.Business]: Saving business '${tempBusinessData.name}' to database ...`);
let dbConnection = connectToDatabase();
if (dbConnection) {
let safeBusinessName = escapeDatabaseString(dbConnection, tempBusinessData.name);
@@ -1895,7 +1914,7 @@ function saveBusinessToDatabase(businessId) {
["biz_entrance_vw", tempBusinessData.entranceDimension],
["biz_entrance_pickup", tempBusinessData.entrancePickupModel],
["biz_entrance_blip", tempBusinessData.entranceBlipModel],
- //["biz_entrance_cutscene", tempBusinessData.entranceCutscene],
+ ["biz_entrance_scene", tempBusinessData.entranceScene],
["biz_exit_pos_x", tempBusinessData.exitPosition.x],
["biz_exit_pos_y", tempBusinessData.exitPosition.y],
["biz_exit_pos_z", tempBusinessData.exitPosition.z],
@@ -1904,11 +1923,11 @@ function saveBusinessToDatabase(businessId) {
["biz_exit_vw", tempBusinessData.exitDimension],
["biz_exit_pickup", tempBusinessData.exitPickupModel],
["biz_exit_blip", tempBusinessData.exitBlipModel],
- //["biz_exit_cutscene", tempBusinessData.exitCutscene],
+ ["biz_exit_scene", tempBusinessData.exitScene],
["biz_has_interior", boolToInt(tempBusinessData.hasInterior)],
["biz_interior_lights", boolToInt(tempBusinessData.interiorLights)],
["biz_label_help_type", tempBusinessData.labelHelpType],
- ["biz_radio_station", toInteger(tempBusinessData.streamingRadioStation)],
+ ["biz_radio_station", (getRadioStationData(tempBusinessData.streamingRadioStationIndex) != false) ? toInteger(getRadioStationData(tempBusinessData.streamingRadioStationIndex).databaseId) : -1],
["biz_custom_interior", boolToInt(tempBusinessData.customInterior)],
["biz_buy_price", tempBusinessData.buyPrice],
//["biz_rent_price", tempBusinessData.rentPrice],
@@ -1930,7 +1949,7 @@ function saveBusinessToDatabase(businessId) {
disconnectFromDatabase(dbConnection);
return true;
}
- logToConsole(LOG_DEBUG, `[VRR.Business]: Saved business '${tempBusinessData.name}' to database!`);
+ logToConsole(LOG_DEBUG, `[AGRP.Business]: Saved business '${tempBusinessData.name}' to database!`);
return false;
}
@@ -1948,10 +1967,6 @@ function createAllBusinessPickups() {
return false;
}
- if (!isGameFeatureSupported("pickup")) {
- return false;
- }
-
for (let i in getServerData().businesses) {
createBusinessEntrancePickup(i);
createBusinessExitPickup(i);
@@ -1994,38 +2009,34 @@ function createAllBusinessBlips() {
*
*/
function createBusinessEntrancePickup(businessId) {
- if (!areServerElementsSupported()) {
- return false;
- }
-
if (!getServerConfig().createBusinessPickups) {
return false;
}
- if (!isGameFeatureSupported("pickup")) {
- return false;
- }
-
let businessData = getBusinessData(businessId);
//if(businessData.hasInterior) {
// return false;
//}
- if (businessData.entrancePickupModel == -1) {
- return false;
- }
+ logToConsole(LOG_VERBOSE, `[AGRP.Job]: Creating entrance pickup for business ${businessData.name}`);
- let pickupModelId = getGameConfig().pickupModels[getGame()].Business;
+ if (areServerElementsSupported() && getGame() != V_GAME_MAFIA_ONE && getGame() != V_GAME_GTA_IV) {
+ let entrancePickup = null;
+ if (isGameFeatureSupported("pickup")) {
+ let pickupModelId = getGameConfig().pickupModels[getGame()].Business;
- if (businessData.entrancePickupModel != 0) {
- pickupModelId = businessData.entrancePickupModel;
- }
+ if (businessData.entrancePickupModel == -1) {
+ return false;
+ }
- logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating entrance pickup for business ${businessData.name} (model ${pickupModelId})`);
+ if (businessData.entrancePickupModel != 0) {
+ pickupModelId = businessData.entrancePickupModel;
+ }
+
+ entrancePickup = createGamePickup(pickupModelId, businessData.entrancePosition, getGameConfig().pickupTypes[getGame()].business);
+ }
- if (areServerElementsSupported()) {
- let entrancePickup = createGamePickup(pickupModelId, businessData.entrancePosition, getGameConfig().pickupTypes[getGame()].business);
if (entrancePickup != null) {
if (businessData.entranceDimension != -1) {
setElementDimension(entrancePickup, businessData.entranceDimension);
@@ -2044,15 +2055,10 @@ function createBusinessEntrancePickup(businessId) {
getBusinessData(businessId).entrancePickup = entrancePickup;
updateBusinessPickupLabelData(businessId);
}
- } else {
- let pickupModelId = getGameConfig().pickupModels[getGame()].Business;
-
- if (businessData.entrancePickupModel != 0) {
- pickupModelId = businessData.entrancePickupModel;
- }
- sendBusinessToPlayer(null, businessId, businessData.name, businessData.entrancePosition, blipModelId, pickupModelId, businessData.hasInterior, doesBusinessHaveAnyItemsToBuy(businessId));
}
+ updateBusinessPickupLabelData(businessId);
+
return false;
}
@@ -2066,10 +2072,6 @@ function createBusinessEntrancePickup(businessId) {
*
*/
function createBusinessEntranceBlip(businessId) {
- if (!areServerElementsSupported()) {
- return false;
- }
-
if (!getServerConfig().createBusinessBlips) {
return false;
}
@@ -2094,9 +2096,9 @@ function createBusinessEntranceBlip(businessId) {
blipModelId = businessData.entranceBlipModel;
}
- logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating entrance blip for business ${businessData.name} (model ${blipModelId})`);
+ logToConsole(LOG_VERBOSE, `[AGRP.Job]: Creating entrance blip for business ${businessData.name} (model ${blipModelId})`);
- if (areServerElementsSupported()) {
+ if (areServerElementsSupported() && getGame() != V_GAME_MAFIA_ONE && getGame() != V_GAME_GTA_IV) {
let entranceBlip = createGameBlip(businessData.entrancePosition, blipModelId, 1, getColourByType("businessBlue"));
if (entranceBlip != null) {
if (businessData.entranceDimension != -1) {
@@ -2136,10 +2138,6 @@ function createBusinessExitPickup(businessId) {
return false;
}
- if (!isGameFeatureSupported("pickup")) {
- return false;
- }
-
let businessData = getBusinessData(businessId);
//if(!businessData.hasInterior) {
@@ -2150,15 +2148,19 @@ function createBusinessExitPickup(businessId) {
return false;
}
- let pickupModelId = getGameConfig().pickupModels[getGame()].Exit;
+ logToConsole(LOG_VERBOSE, `[AGRP.Job]: Creating exit pickup for business ${businessData.name}`);
- if (businessData.exitPickupModel != 0) {
- pickupModelId = businessData.exitPickupModel;
+ let exitPickup = null;
+ if (isGameFeatureSupported("pickup")) {
+ let pickupModelId = getGameConfig().pickupModels[getGame()].Exit;
+
+ if (businessData.exitPickupModel != 0) {
+ pickupModelId = businessData.exitPickupModel;
+ }
+
+ exitPickup = createGamePickup(pickupModelId, businessData.exitPosition, getGameConfig().pickupTypes[getGame()].business);
}
- logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating exit pickup for business ${businessData.name} (model ${pickupModelId})`);
-
- let exitPickup = createGamePickup(pickupModelId, businessData.exitPosition, getGameConfig().pickupTypes[getGame()].business);
if (exitPickup != null) {
if (businessData.exitDimension != -1) {
setElementDimension(exitPickup, businessData.exitDimension);
@@ -2177,6 +2179,7 @@ function createBusinessExitPickup(businessId) {
getBusinessData(businessId).exitPickup = exitPickup;
updateBusinessPickupLabelData(businessId);
}
+
}
// ===========================================================================
@@ -2217,7 +2220,7 @@ function createBusinessExitBlip(businessId) {
blipModelId = businessData.exitBlipModel;
}
- logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating exit blip for business ${businessData.name} (model ${blipModelId})`);
+ logToConsole(LOG_VERBOSE, `[AGRP.Job]: Creating exit blip for business ${businessData.name} (model ${blipModelId})`);
let exitBlip = createGameBlip(businessData.exitPosition, blipModelId, 1, getColourByName("businessBlue"));
if (exitBlip != null) {
@@ -2281,11 +2284,13 @@ function deleteBusiness(businessId, whoDeleted = 0) {
* @return {Boolean} Whether or not the players were forced to exit
*
*/
-function removePlayersFromBusiness(businessId) {
+function removePlayersFromBusiness(businessIndex) {
getClients().forEach(function (client) {
- if (doesBusinessHaveInterior(businessId)) {
- if (getPlayerBusiness(client) == businessId) {
- exitBusiness(client);
+ if (doesBusinessHaveInterior(businessIndex)) {
+ if (getPlayerBusiness(client) == businessIndex) {
+ if (getPlayerInterior(client) == getBusinessData(businessIndex).exitInterior && getPlayerDimension(client) == getBusinessData(businessIndex).exitDimension) {
+ exitBusiness(client);
+ }
}
}
});
@@ -2344,17 +2349,17 @@ function exitBusiness(client) {
*/
function getBusinessOwnerTypeText(ownerType) {
switch (ownerType) {
- case AGRP_BIZ_OWNER_CLAN:
+ case V_BIZ_OWNER_CLAN:
return "clan";
- case AGRP_BIZ_OWNER_JOB:
+ case V_BIZ_OWNER_JOB:
return "job";
- case AGRP_BIZ_OWNER_PLAYER:
+ case V_BIZ_OWNER_PLAYER:
return "player";
- case AGRP_BIZ_OWNER_NONE:
- case AGRP_BIZ_OWNER_PUBLIC:
+ case V_BIZ_OWNER_NONE:
+ case V_BIZ_OWNER_PUBLIC:
return "not owned";
default:
@@ -2402,10 +2407,6 @@ function deleteBusinessEntrancePickup(businessId) {
return false;
}
- if (!isGameFeatureSupported("pickup")) {
- return false;
- }
-
if (getBusinessData(businessId).entrancePickup != null) {
//removeFromWorld(getBusinessData(businessId).entrancePickup);
deleteGameElement(getBusinessData(businessId).entrancePickup);
@@ -2429,10 +2430,6 @@ function deleteBusinessExitPickup(businessId) {
return false;
}
- if (!isGameFeatureSupported("pickup")) {
- return false;
- }
-
if (getBusinessData(businessId).exitPickup != null) {
//removeFromWorld(getBusinessData(businessId).exitPickup);
deleteGameElement(getBusinessData(businessId).exitPickup);
@@ -2540,7 +2537,7 @@ function setBusinessDataIndexes() {
//}
for (let j in getServerData().businesses[i].locations) {
- if (getServerData().businesses[i].locations[j].type == AGRP_BIZ_LOC_ATM) {
+ if (getServerData().businesses[i].locations[j].type == V_BIZ_LOC_ATM) {
getServerData().atmLocationCache.push([i, j, getServerData().businesses[i].locations[j].position]);
}
}
@@ -2556,7 +2553,7 @@ function addToBusinessInventory(businessId, itemType, amount, buyPrice) {
tempItemData.buyPrice = buyPrice;
tempItemData.itemType = getItemTypeData(itemType).databaseId;
tempItemData.ownerId = getBusinessData(business).databaseId;
- tempItemData.ownerType = AGRP_ITEMOWNER_BIZ;
+ tempItemData.ownerType = V_ITEMOWNER_BIZ;
tempItemData.ownerIndex = businessId;
tempItemData.itemTypeIndex = itemType;
saveItemToDatabase(tempItemData);
@@ -2648,17 +2645,17 @@ function buyFromBusinessCommand(command, params, client) {
}
takePlayerCash(client, totalCost);
- createItem(getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).itemTypeIndex, getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).value, AGRP_ITEM_OWNER_PLAYER, getPlayerCurrentSubAccount(client).databaseId, amount);
+ createItem(getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).itemTypeIndex, getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).value, V_ITEM_OWNER_PLAYER, getPlayerCurrentSubAccount(client).databaseId, amount);
cachePlayerHotBarItems(client);
getBusinessData(businessId).till = getBusinessData(businessId).till + totalCost;
getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).amount = getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).amount - amount;
if (getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).amount == 0) {
- destroyItem(getBusinessData(businessId).floorItemCache[itemSlot - 1]);
+ deleteItem(getBusinessData(businessId).floorItemCache[itemSlot - 1]);
}
let useType = getItemTypeData(getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).itemTypeIndex).useType;
- if (useType == AGRP_ITEM_USE_TYPE_WEAPON || AGRP_ITEM_USE_TYPE_TAZER || useType == AGRP_ITEM_USE_TYPE_AMMO_CLIP) {
+ if (useType == V_ITEM_USE_TYPE_WEAPON || V_ITEM_USE_TYPE_TAZER || useType == V_ITEM_USE_TYPE_AMMO_CLIP) {
if (isPlayerWeaponBanned(client) && !isPlayerExemptFromAntiCheat(client)) {
messagePlayerError(client, getLocaleString(client, "WeaponBanned"));
return false;
@@ -2668,12 +2665,16 @@ function buyFromBusinessCommand(command, params, client) {
//messagePlayerSuccess(client, `You bought ${amount} {ALTCOLOUR}${itemName} {MAINCOLOUR}for ${totalCost} ${priceEach}`);
meActionToNearbyPlayers(client, `buys a ${itemName}`);
- if (doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand("inv")) {
- let keyData = getPlayerKeyBindForCommand("inv");
- messagePlayerNewbieTip(client, getLocaleString(client, "ViewInventoryKeyPressTip", `{ALTCOLOUR}${getKeyNameFromId(keyData.key)}{MAINCOLOUR}`));
- } else {
- messagePlayerNewbieTip(client, getLocaleString(client, "ViewInventoryCommandTip", `{ALTCOLOUR}/inv{MAINCOLOUR}`));
+ if (!hasPlayerSeenActionTip(client, "ViewInventory")) {
+ if (doesPlayerHaveKeyBindsDisabled(client) && doesPlayerHaveKeyBindForCommand("inv")) {
+ let keyData = getPlayerKeyBindForCommand("inv");
+ messagePlayerActionTip(client, getGroupedLocaleString(client, "ActionTips", "ViewInventory", `{ALTCOLOUR}${getKeyNameFromId(keyData.key)}{MAINCOLOUR}`));
+ } else {
+ messagePlayerActionTip(client, getGroupedLocaleString(client, "ActionTips", "ViewInventory", `{ALTCOLOUR}/inv{MAINCOLOUR}`));
+ }
}
+
+ markPlayerActionTipSeen(client, "ViewInventory");
}
// ===========================================================================
@@ -2716,7 +2717,7 @@ function setBusinessItemSellPriceCommand(command, params, client) {
getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).buyPrice = newPrice;
- messagePlayerSuccess(client, `You changed the price of the {ALTCOLOUR}${getItemTypeData(getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).itemTypeIndex).name}'s {MAINCOLOUR}in slot {ALTCOLOUR}${itemSlot} {MAINCOLOUR}from $${makeLargeNumberReadable(oldPrice)} to $${makeLargeNumberReadable(newprice)}`);
+ messagePlayerSuccess(client, `You changed the price of the {ALTCOLOUR}${getItemTypeData(getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).itemTypeIndex).name}'s {MAINCOLOUR}in slot {ALTCOLOUR}${itemSlot} {MAINCOLOUR}from ${getCurrencyString(oldPrice)} to ${getCurrencyString(newprice)}`);
}
// ===========================================================================
@@ -2757,7 +2758,7 @@ function storeItemInBusinessStorageCommand(command, params, client) {
return false;
}
- getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).ownerType = AGRP_ITEM_OWNER_BIZSTORAGE;
+ getItemData(getBusinessData(businessId).floorItemCache[itemSlot - 1]).ownerType = V_ITEM_OWNER_BIZSTORAGE;
getBusinessData(businessId).storageItemCache[firstSlot] = getBusinessData(businessId).floorItemCache[itemSlot - 1];
getBusinessData(businessId).storageItemCache[itemSlot - 1] = -1;
messagePlayerSuccess(client, `You moved the ${getItemTypeData(getItemData(getBusinessData(businessId).storageItemCache[firstSlot]).itemTypeIndex).name}s in slot ${itemSlot} to the business storage in slot ${firstSlot}`);
@@ -2801,7 +2802,7 @@ function stockItemOnBusinessFloorCommand(command, params, client) {
return false;
}
- getItemData(getBusinessData(businessId).storageItemCache[itemSlot - 1]).ownerType = AGRP_ITEM_OWNER_BIZFLOOR;
+ getItemData(getBusinessData(businessId).storageItemCache[itemSlot - 1]).ownerType = V_ITEM_OWNER_BIZFLOOR;
getBusinessData(businessId).floorItemCache[firstSlot] = getBusinessData(businessId).storageItemCache[itemSlot - 1];
getBusinessData(businessId).storageItemCache[itemSlot - 1] = -1;
messagePlayerSuccess(client, `You moved the ${getItemTypeData(getItemData(getBusinessData(businessId).storageItemCache[firstSlot]).itemTypeIndex).name}s in slot ${itemSlot} of the business storage to the business floor slot ${firstSlot}`);
@@ -2825,11 +2826,11 @@ function getBusinessFloorFirstFreeItemSlot(businessId) {
// Caches all items for all businesses
function cacheAllBusinessItems() {
- logToConsole(LOG_DEBUG, "[VRR.Business] Caching all business items ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Business] Caching all business items ...");
for (let i in getServerData().businesses) {
cacheBusinessItems(i);
}
- logToConsole(LOG_DEBUG, "[VRR.Business] Cached all business items successfully!");
+ logToConsole(LOG_DEBUG, "[AGRP.Business] Cached all business items successfully!");
}
// ===========================================================================
@@ -2840,20 +2841,20 @@ function cacheBusinessItems(businessId) {
clearArray(getBusinessData(businessId).storageItemCache);
//let businessData = getBusinessData(businessId);
- //logToConsole(LOG_VERBOSE, `[VRR.Business] Caching business items for business ${businessId} (${businessData.name}) ...`);
- //getBusinessData(businessId).floorItemCache = getServerData().items.filter(item => item.ownerType == AGRP_ITEM_OWNER_BIZFLOOR && item.ownerId == businessData.databaseId).map(i => i.index);
- //getBusinessData(businessId).storageItemCache = getServerData().items.filter(item => item.ownerType == AGRP_ITEM_OWNER_BIZSTORAGE && item.ownerId == businessData.databaseId);
+ //logToConsole(LOG_VERBOSE, `[AGRP.Business] Caching business items for business ${businessId} (${businessData.name}) ...`);
+ //getBusinessData(businessId).floorItemCache = getServerData().items.filter(item => item.ownerType == V_ITEM_OWNER_BIZFLOOR && item.ownerId == businessData.databaseId).map(i => i.index);
+ //getBusinessData(businessId).storageItemCache = getServerData().items.filter(item => item.ownerType == V_ITEM_OWNER_BIZSTORAGE && item.ownerId == businessData.databaseId);
- logToConsole(LOG_VERBOSE, `[VRR.Business] Caching business items for business ${businessId} (${getBusinessData(businessId).name}) ...`);
+ logToConsole(LOG_VERBOSE, `[AGRP.Business] Caching business items for business ${businessId} (${getBusinessData(businessId).name}) ...`);
for (let i in getServerData().items) {
- if (getItemData(i).ownerType == AGRP_ITEM_OWNER_BIZFLOOR && getItemData(i).ownerId == getBusinessData(businessId).databaseId) {
+ if (getItemData(i).ownerType == V_ITEM_OWNER_BIZFLOOR && getItemData(i).ownerId == getBusinessData(businessId).databaseId) {
getBusinessData(businessId).floorItemCache.push(i);
- } else if (getItemData(i).ownerType == AGRP_ITEM_OWNER_BIZSTORAGE && getItemData(i).ownerId == getBusinessData(businessId).databaseId) {
+ } else if (getItemData(i).ownerType == V_ITEM_OWNER_BIZSTORAGE && getItemData(i).ownerId == getBusinessData(businessId).databaseId) {
getBusinessData(businessId).storageItemCache.push(i);
}
}
- logToConsole(LOG_VERBOSE, `[VRR.Business] Successfully cached ${getBusinessData(businessId).floorItemCache.length} floor items and ${getBusinessData(businessId).storageItemCache} storage items for business ${businessId} (${getBusinessData(businessId).name})!`);
+ logToConsole(LOG_VERBOSE, `[AGRP.Business] Successfully cached ${getBusinessData(businessId).floorItemCache.length} floor items and ${getBusinessData(businessId).storageItemCache} storage items for business ${businessId} (${getBusinessData(businessId).name})!`);
}
// ===========================================================================
@@ -2867,55 +2868,57 @@ function getBusinessIdFromDatabaseId(databaseId) {
// Updates all pickup data for a business by businessId
function updateBusinessPickupLabelData(businessId) {
- if (!areServerElementsSupported()) {
+ if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE || getGame() == V_GAME_GTA_IV) {
+ sendBusinessToPlayer(null, businessId, getBusinessData(businessId).name, getBusinessData(businessId).entrancePosition, getBusinessEntranceBlipModelForNetworkEvent(businessId), getBusinessEntrancePickupModelForNetworkEvent(businessId), getBusinessData(businessId).buyPrice, getBusinessData(businessId).rentPrice, getBusinessData(businessId).hasInterior, getBusinessData(businessId).locked, doesBusinessHaveAnyItemsToBuy(businessId));
return false;
}
if (getBusinessData(businessId).exitPickup != null) {
- setEntityData(getBusinessData(businessId).exitPickup, "agrp.owner.type", AGRP_PICKUP_BUSINESS_EXIT, false);
- setEntityData(getBusinessData(businessId).exitPickup, "agrp.owner.id", businessId, false);
- setEntityData(getBusinessData(businessId).exitPickup, "agrp.label.type", AGRP_LABEL_EXIT, true);
+ setEntityData(getBusinessData(businessId).exitPickup, "v.rp.owner.type", V_PICKUP_BUSINESS_EXIT, false);
+ setEntityData(getBusinessData(businessId).exitPickup, "v.rp.owner.id", businessId, false);
+ setEntityData(getBusinessData(businessId).exitPickup, "v.rp.label.type", V_LABEL_EXIT, true);
}
if (getBusinessData(businessId).entrancePickup != null) {
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.owner.type", AGRP_PICKUP_BUSINESS_ENTRANCE, false);
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.owner.id", businessId, false);
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.type", AGRP_LABEL_BUSINESS, true);
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.name", getBusinessData(businessId).name, true);
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.locked", getBusinessData(businessId).locked, true);
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", AGRP_PROPLABEL_INFO_NONE, true);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.owner.type", V_PICKUP_BUSINESS_ENTRANCE, false);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.owner.id", businessId, false);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.type", V_LABEL_BUSINESS, true);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.name", getBusinessData(businessId).name, true);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.locked", getBusinessData(businessId).locked, true);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.help", V_PROPLABEL_INFO_NONE, true);
switch (getBusinessData(businessId).labelHelpType) {
- case AGRP_PROPLABEL_INFO_ENTERVEHICLE: {
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", AGRP_PROPLABEL_INFO_ENTERVEHICLE, true);
+ case V_PROPLABEL_INFO_ENTERVEHICLE: {
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.help", V_PROPLABEL_INFO_ENTERVEHICLE, true);
break;
}
- case AGRP_PROPLABEL_INFO_ENTER: {
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", AGRP_PROPLABEL_INFO_ENTER, true);
+ case V_PROPLABEL_INFO_ENTER: {
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.help", V_PROPLABEL_INFO_ENTER, true);
break;
}
- case AGRP_PROPLABEL_INFO_REPAIR: {
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", AGRP_PROPLABEL_INFO_REPAIR, true);
+ case V_PROPLABEL_INFO_REPAIR: {
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.help", V_PROPLABEL_INFO_REPAIR, true);
break;
}
default: {
if (getBusinessData(businessId).hasInterior) {
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", AGRP_PROPLABEL_INFO_ENTER, true);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.help", V_PROPLABEL_INFO_ENTER, true);
} else {
if (doesBusinessHaveAnyItemsToBuy(businessId)) {
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", AGRP_PROPLABEL_INFO_BUY, true);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.help", V_PROPLABEL_INFO_BUY, true);
} else {
- removeEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help");
+ removeEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.help");
}
}
break;
}
}
- setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.price", getBusinessData(businessId).buyPrice, true);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.price", getBusinessData(businessId).buyPrice, true);
+ setEntityData(getBusinessData(businessId).entrancePickup, "v.rp.label.fee", getBusinessData(businessId).entranceFee, true);
}
}
@@ -2993,7 +2996,7 @@ function doesBusinessHaveAnyItemsToBuy(businessId) {
//function clearPlayerBusinessGameScripts(client, businessId) {
// for(let i in getBusinessData(businessId).gameScripts) {
-// sendPlayerGameScriptState(client, AGRP_GAMESCRIPT_DENY);
+// sendPlayerGameScriptState(client, V_GAMESCRIPT_DENY);
// }
//}
@@ -3015,11 +3018,11 @@ function canPlayerWithdrawFromBusinessTill(client, businessId) {
return true;
}
- if (getBusinessData(businessId).ownerType == AGRP_BIZ_OWNER_PLAYER && getBusinessData(businessId).ownerId == getPlayerCurrentSubAccount(client).databaseId) {
+ if (getBusinessData(businessId).ownerType == V_BIZ_OWNER_PLAYER && getBusinessData(businessId).ownerId == getPlayerCurrentSubAccount(client).databaseId) {
return true;
}
- if (getBusinessData(businessId).ownerType == AGRP_BIZ_OWNER_CLAN && getBusinessData(businessId).ownerId == getClanData(getPlayerClan(client)).databaseId) {
+ if (getBusinessData(businessId).ownerType == V_BIZ_OWNER_CLAN && getBusinessData(businessId).ownerId == getClanData(getPlayerClan(client)).databaseId) {
if (doesPlayerHaveClanPermission(client, getClanFlagValue("ManageBusinesses"))) {
return true;
}
@@ -3035,11 +3038,11 @@ function canPlayerSetBusinessInteriorLights(client, businessId) {
return true;
}
- if (getBusinessData(businessId).ownerType == AGRP_BIZ_OWNER_PLAYER && getBusinessData(businessId).ownerId == getPlayerCurrentSubAccount(client).databaseId) {
+ if (getBusinessData(businessId).ownerType == V_BIZ_OWNER_PLAYER && getBusinessData(businessId).ownerId == getPlayerCurrentSubAccount(client).databaseId) {
return true;
}
- if (getBusinessData(businessId).ownerType == AGRP_BIZ_OWNER_CLAN && getBusinessData(businessId).ownerId == getClanData(getPlayerClan(client)).databaseId) {
+ if (getBusinessData(businessId).ownerType == V_BIZ_OWNER_CLAN && getBusinessData(businessId).ownerId == getClanData(getPlayerClan(client)).databaseId) {
if (doesPlayerHaveClanPermission(client, getClanFlagValue("ManageBusinesses"))) {
return true;
}
@@ -3055,11 +3058,11 @@ function canPlayerLockUnlockBusiness(client, businessId) {
return true;
}
- if (getBusinessData(businessId).ownerType == AGRP_BIZ_OWNER_PLAYER && getBusinessData(businessId).ownerId == getPlayerCurrentSubAccount(client).databaseId) {
+ if (getBusinessData(businessId).ownerType == V_BIZ_OWNER_PLAYER && getBusinessData(businessId).ownerId == getPlayerCurrentSubAccount(client).databaseId) {
return true;
}
- if (getBusinessData(businessId).ownerType == AGRP_BIZ_OWNER_CLAN && getBusinessData(businessId).ownerId == getClanData(getPlayerClan(client)).databaseId) {
+ if (getBusinessData(businessId).ownerType == V_BIZ_OWNER_CLAN && getBusinessData(businessId).ownerId == getClanData(getPlayerClan(client)).databaseId) {
if (doesPlayerHaveClanPermission(client, getClanFlagValue("ManageBusinesses"))) {
return true;
}
@@ -3070,18 +3073,20 @@ function canPlayerLockUnlockBusiness(client, businessId) {
// ===========================================================================
-function canPlayerManageBusiness(client, businessId) {
- if (doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageBusinesses"))) {
- return true;
+function canPlayerManageBusiness(client, businessId, exemptAdminFlag = false) {
+ if (exemptAdminFlag == false) {
+ if (doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageBusinesses"))) {
+ return true;
+ }
}
- if (getBusinessData(businessId).ownerType == AGRP_BIZ_OWNER_PLAYER) {
+ if (getBusinessData(businessId).ownerType == V_BIZ_OWNER_PLAYER) {
if (getBusinessData(businessId).ownerId == getPlayerCurrentSubAccount(client).databaseId) {
return true;
}
}
- if (getBusinessData(businessId).ownerType == AGRP_BIZ_OWNER_CLAN) {
+ if (getBusinessData(businessId).ownerType == V_BIZ_OWNER_CLAN) {
if (getBusinessData(businessId).ownerId == getPlayerClan(client)) {
if (doesPlayerHaveClanPermission(client, getClanFlagValue("ManageBusinesses"))) {
return true;
@@ -3200,4 +3205,34 @@ function doesBusinessHaveBuyableItemOfUseType(businessId, useType) {
return false;
}
+// ===========================================================================
+
+function getBusinessEntranceBlipModelForNetworkEvent(businessIndex) {
+ let blipModelId = -1;
+ if (isGameFeatureSupported("blip")) {
+ blipModelId = getGameConfig().blipSprites[getGame()].Business;
+
+ if (getBusinessData(businessIndex).entranceBlipModel != 0) {
+ blipModelId = getBusinessData(businessIndex).entranceBlipModel;
+ }
+ }
+
+ return blipModelId;
+}
+
+// ===========================================================================
+
+function getBusinessEntrancePickupModelForNetworkEvent(businessIndex) {
+ let pickupModelId = -1;
+ if (isGameFeatureSupported("pickup")) {
+ pickupModelId = getGameConfig().pickupModels[getGame()].Business;
+
+ if (getBusinessData(businessIndex).entrancePickupModel != 0) {
+ pickupModelId = getBusinessData(businessIndex).entrancePickupModel;
+ }
+ }
+
+ return pickupModelId;
+}
+
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/server/casino.js b/scripts/server/casino.js
index 0a0299c4..a496e592 100644
--- a/scripts/server/casino.js
+++ b/scripts/server/casino.js
@@ -1,28 +1,27 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: casino.js
// DESC: Provides casino games functions and commands
// TYPE: Server (JavaScript)
// ===========================================================================
-const AGRP_CASINO_GAME_NONE = 0;
-const AGRP_CASINO_GAME_BLACKJACK = 1;
-const AGRP_CASINO_GAME_POKER = 2;
-const AGRP_CASINO_GAME_BACCARAT = 3;
-const AGRP_CASINO_GAME_ROULETTE = 4;
-const AGRP_CASINO_GAME_CRAPS = 5;
-const AGRP_CASINO_GAME_HOLDEM = 6;
+const V_CASINO_GAME_NONE = 0;
+const V_CASINO_GAME_BLACKJACK = 1;
+const V_CASINO_GAME_POKER = 2;
+const V_CASINO_GAME_BACCARAT = 3;
+const V_CASINO_GAME_ROULETTE = 4;
+const V_CASINO_GAME_CRAPS = 5;
+const V_CASINO_GAME_HOLDEM = 6;
// ===========================================================================
-const AGRP_CASINO_DECK_SUIT_NONE = 1;
-const AGRP_CASINO_DECK_SUIT_CLUBS = 1;
-const AGRP_CASINO_DECK_SUIT_DIAMONDS = 2;
-const AGRP_CASINO_DECK_SUIT_HEARTS = 3;
-const AGRP_CASINO_DECK_SUIT_SPADES = 4;
+const V_CASINO_DECK_SUIT_NONE = 1;
+const V_CASINO_DECK_SUIT_CLUBS = 1;
+const V_CASINO_DECK_SUIT_DIAMONDS = 2;
+const V_CASINO_DECK_SUIT_HEARTS = 3;
+const V_CASINO_DECK_SUIT_SPADES = 4;
// ===========================================================================
@@ -37,45 +36,45 @@ class DeckCard {
// ===========================================================================
let cardDeck = [
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 1, "deckCardClubAce"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 2, "deckCardClubTwo"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 3, "deckCardClubThree"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 4, "deckCardClubFour"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 5, "deckCardClubFive"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 6, "deckCardClubSix"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 7, "deckCardClubSeven"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 8, "deckCardClubEight"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 9, "deckCardClubNine"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 10, "deckCardClubTen"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 11, "deckCardClubJack"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 12, "deckCardClubQueen"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_CLUBS, 13, "deckCardClubKing"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 1, "deckCardDiamondAce"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 2, "deckCardDiamondTwo"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 3, "deckCardDiamondThree"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 4, "deckCardDiamondFour"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 5, "deckCardDiamondFive"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 6, "deckCardDiamondSix"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 7, "deckCardDiamondSeven"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 8, "deckCardDiamondEight"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 9, "deckCardDiamondNine"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 10, "deckCardDiamondTen"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 11, "deckCardDiamondJack"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 12, "deckCardDiamondQueen"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_DIAMONDS, 13, "deckCardDiamondKing"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 1, "deckCardHeartAce"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 2, "deckCardHeartTwo"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 3, "deckCardHeartThree"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 4, "deckCardHeartFour"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 5, "deckCardHeartFive"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 6, "deckCardHeartSix"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 7, "deckCardHeartSeven"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 8, "deckCardHeartEight"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 9, "deckCardHeartNine"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 10, "deckCardHeartTen"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 11, "deckCardHeartJack"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 12, "deckCardHeartQueen"),
- new DeckCard(AGRP_CASINO_DECK_SUIT_HEARTS, 13, "deckCardHeartKing"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 1, "deckCardClubAce"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 2, "deckCardClubTwo"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 3, "deckCardClubThree"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 4, "deckCardClubFour"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 5, "deckCardClubFive"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 6, "deckCardClubSix"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 7, "deckCardClubSeven"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 8, "deckCardClubEight"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 9, "deckCardClubNine"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 10, "deckCardClubTen"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 11, "deckCardClubJack"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 12, "deckCardClubQueen"),
+ new DeckCard(V_CASINO_DECK_SUIT_CLUBS, 13, "deckCardClubKing"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 1, "deckCardDiamondAce"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 2, "deckCardDiamondTwo"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 3, "deckCardDiamondThree"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 4, "deckCardDiamondFour"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 5, "deckCardDiamondFive"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 6, "deckCardDiamondSix"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 7, "deckCardDiamondSeven"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 8, "deckCardDiamondEight"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 9, "deckCardDiamondNine"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 10, "deckCardDiamondTen"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 11, "deckCardDiamondJack"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 12, "deckCardDiamondQueen"),
+ new DeckCard(V_CASINO_DECK_SUIT_DIAMONDS, 13, "deckCardDiamondKing"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 1, "deckCardHeartAce"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 2, "deckCardHeartTwo"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 3, "deckCardHeartThree"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 4, "deckCardHeartFour"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 5, "deckCardHeartFive"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 6, "deckCardHeartSix"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 7, "deckCardHeartSeven"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 8, "deckCardHeartEight"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 9, "deckCardHeartNine"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 10, "deckCardHeartTen"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 11, "deckCardHeartJack"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 12, "deckCardHeartQueen"),
+ new DeckCard(V_CASINO_DECK_SUIT_HEARTS, 13, "deckCardHeartKing"),
];
// ===========================================================================
@@ -118,20 +117,7 @@ function blackJackHitCommand(command, params, client) {
hand.push(deck.pop());
- let tempHandValue = 0;
-
- for (let i in hand) {
- if (hand[i].value == 1) {
-
- if ((tempHandValue + 11) > 21) {
- tempHandValue += 1;
- } else {
- tempHandValue += 11;
- }
- } else {
- tempHandValue += hand[i].value;
- }
- }
+ let tempHandValue = getValueOfBlackJackHand(hand);
if (handValue > 21) {
playerBustBlackJack(client);
@@ -155,14 +141,6 @@ function blackJackStandCommand(command, params, client) {
// ===========================================================================
-function blackJackHit(hand, deck) {
-
-
- return handValue;
-}
-
-// ===========================================================================
-
function dealPlayerBlackJackHand(deck, players) {
// Alternate handing cards to each player, 2 cards each
for (var i = 0; i < 2; i++) {
@@ -174,4 +152,23 @@ function dealPlayerBlackJackHand(deck, players) {
}
}
+// ===========================================================================
+
+function calculateValueOfBlackJackHand(hand) {
+ let tempHandValue = 0;
+
+ for (let i in hand) {
+ if (hand[i].value == 1) {
+
+ if ((tempHandValue + 11) > 21) {
+ tempHandValue += 1;
+ } else {
+ tempHandValue += 11;
+ }
+ } else {
+ tempHandValue += hand[i].value;
+ }
+ }
+}
+
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/server/chat.js b/scripts/server/chat.js
index c2cc5673..a4d0ed41 100644
--- a/scripts/server/chat.js
+++ b/scripts/server/chat.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: chat.js
// DESC: Provides chat functions and usage
@@ -9,8 +8,8 @@
// ===========================================================================
function initChatScript() {
- logToConsole(LOG_INFO, "[VRR.Chat]: Initializing chat script ...");
- logToConsole(LOG_INFO, "[VRR.Chat]: Chat script initialized successfully!");
+ logToConsole(LOG_INFO, "[AGRP.Chat]: Initializing chat script ...");
+ logToConsole(LOG_INFO, "[AGRP.Chat]: Chat script initialized successfully!");
return true;
}
@@ -174,7 +173,14 @@ function adminChatCommand(command, params, client) {
return false;
}
- messageAdmins(`{jobYellow}[Admin Chat] {ALTCOLOUR}${getPlayerName(client)}: ${params}`);
+ let clients = getClients();
+ for (let i in clients) {
+ if (doesPlayerHaveStaffPermission(clients[i], getStaffFlagValue("BasicModeration"))) {
+ messagePlayerAdminChat(clients[i], client, params);
+ }
+ }
+
+ messageDiscordAdminChannel(`${getPlayerData(client).accountData.staffTitle} ${getPlayerData(client).accountData.name}: ${messageText}`);
}
// ===========================================================================
@@ -217,7 +223,10 @@ function privateMessageCommand(command, params, client) {
getPlayerData(targetClient).privateMessageReplyTo = client;
messagePlayerPrivateMessage(targetClient, client, messageText);
- messagePlayerTip(client, getLocaleString(client, "PrivateMessageReplyCommandTip", "{ALTCOLOUR}/reply{MAINCOLOUR}"))
+
+ if (!hasPlayerSeenActionTip(targetClient, "ReplyToDirectMessage")) {
+ messagePlayerTip(targetClient, getGroupedLocaleString(targetClient, "ActionTips", "ReplyToDirectMessage", "{ALTCOLOUR}/reply{MAINCOLOUR}"));
+ }
}
// ===========================================================================
@@ -240,6 +249,8 @@ function replyToLastPrivateMessageCommand(command, params, client) {
getPlayerData(targetClient).privateMessageReplyTo = client;
messagePlayerPrivateMessage(targetClient, client, messageText);
+
+ markPlayerActionTipSeen(client, "ReplyToDirectMessage");
}
// ===========================================================================
@@ -390,7 +401,7 @@ function clanChat(client, messageText) {
// ===========================================================================
function canPlayerUseMegaphone(client) {
- if (getPlayerFirstItemSlotByUseType(client, AGRP_ITEM_USE_TYPE_MEGAPHONE) != -1) {
+ if (getPlayerFirstItemSlotByUseType(client, V_ITEM_USE_TYPE_MEGAPHONE) != -1) {
if (isPlayerActiveItemEnabled(client)) {
return true;
}
diff --git a/scripts/server/clan.js b/scripts/server/clan.js
index 618dc971..5032d66f 100644
--- a/scripts/server/clan.js
+++ b/scripts/server/clan.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: clan.js
// DESC: Provides clan functions and usage
@@ -110,94 +109,88 @@ class ClanMemberData {
// ===========================================================================
function initClanScript() {
- logToConsole(LOG_INFO, "[VRR.Clan]: Initializing clans script ...");
- logToConsole(LOG_INFO, "[VRR.Clan]: Clan script initialized successfully!");
+ logToConsole(LOG_INFO, "[AGRP.Clan]: Initializing clans script ...");
+ logToConsole(LOG_INFO, "[AGRP.Clan]: Clan script initialized successfully!");
return true;
}
// ===========================================================================
function loadClansFromDatabase() {
- logToConsole(LOG_INFO, "[VRR.Clan]: Loading clans from database ...");
+ logToConsole(LOG_INFO, "[AGRP.Clan]: Loading clans from database ...");
let tempClans = [];
let dbConnection = connectToDatabase();
- let dbAssoc;
+ let dbAssoc = [];
if (dbConnection) {
- let dbQuery = queryDatabase(dbConnection, `SELECT * FROM clan_main WHERE clan_deleted = 0 AND clan_server = ${getServerId()}`);
- if (dbQuery) {
- if (dbQuery.numRows > 0) {
- while (dbAssoc = fetchQueryAssoc(dbQuery)) {
- let tempClanData = new ClanData(dbAssoc);
- //tempClanData.members = loadClanMembersFromDatabase(tempClanData.databaseId);
- tempClanData.ranks = loadClanRanksFromDatabase(tempClanData.databaseId);
- tempClans.push(tempClanData);
- logToConsole(LOG_DEBUG, `[VRR.Clan]: Clan '${tempClanData.name}' loaded from database successfully!`);
- }
+ let dbQueryString = `SELECT * FROM clan_main WHERE clan_deleted = 0 AND clan_server = ${getServerId()}`;
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ for (let i in dbAssoc) {
+ let tempClanData = new ClanData(dbAssoc[i]);
+ //tempClanData.members = loadClanMembersFromDatabase(tempClanData.databaseId);
+ tempClanData.ranks = loadClanRanksFromDatabase(tempClanData.databaseId);
+ tempClans.push(tempClanData);
+ logToConsole(LOG_DEBUG, `[AGRP.Clan]: Clan '${tempClanData.name}' loaded from database successfully!`);
}
- freeDatabaseQuery(dbQuery);
}
disconnectFromDatabase(dbConnection);
}
- logToConsole(LOG_INFO, `[VRR.Clan]: ${tempClans.length} clans loaded from database successfully!`);
+ logToConsole(LOG_INFO, `[AGRP.Clan]: ${tempClans.length} clans loaded from database successfully!`);
return tempClans;
}
// ===========================================================================
function loadClanMembersFromDatabase() {
- logToConsole(LOG_INFO, "[VRR.Clan]: Loading clans from database ...");
+ logToConsole(LOG_INFO, "[AGRP.Clan]: Loading clans from database ...");
let tempClans = [];
let dbConnection = connectToDatabase();
- let dbAssoc;
+ let dbAssoc = [];
if (dbConnection) {
- let dbQuery = queryDatabase(dbConnection, `SELECT * FROM clan_main WHERE clan_deleted = 0 AND clan_server = ${getServerId()}`);
- if (dbQuery) {
- if (dbQuery.numRows > 0) {
- while (dbAssoc = fetchQueryAssoc(dbQuery)) {
- let tempClanData = new ClanData(dbAssoc);
- tempClans.push(tempClanData);
- logToConsole(LOG_VERBOSE, `[VRR.Clan]: Clan '${tempClanData.name}' loaded from database successfully!`);
- }
+ let dbQueryString = `SELECT * FROM clan_main WHERE clan_deleted = 0 AND clan_server = ${getServerId()}`;
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ for (let i in dbAssoc) {
+ let tempClanData = new ClanData(dbAssoc[i]);
+ tempClans.push(tempClanData);
+ logToConsole(LOG_VERBOSE, `[AGRP.Clan]: Clan '${tempClanData.name}' loaded from database successfully!`);
}
- freeDatabaseQuery(dbQuery);
}
disconnectFromDatabase(dbConnection);
}
- logToConsole(LOG_INFO, `[VRR.Clan]: ${tempClans.length} clans loaded from database successfully!`);
+ logToConsole(LOG_INFO, `[AGRP.Clan]: ${tempClans.length} clans loaded from database successfully!`);
return tempClans;
}
// ===========================================================================
function loadClanRanksFromDatabase(clanDatabaseId) {
- logToConsole(LOG_INFO, `[VRR.Clan]: Loading ranks for clan ${clanDatabaseId} from database ...`);
+ logToConsole(LOG_INFO, `[AGRP.Clan]: Loading ranks for clan ${clanDatabaseId} from database ...`);
let dbConnection = connectToDatabase();
- let dbAssoc;
+ let dbAssoc = [];
let tempClanRanks = [];
if (dbConnection) {
- let dbQuery = queryDatabase(dbConnection, `SELECT * FROM clan_rank WHERE clan_rank_clan = ${clanDatabaseId}`);
- if (dbQuery) {
- if (dbQuery.numRows > 0) {
- while (dbAssoc = fetchQueryAssoc(dbQuery)) {
- let tempClanRankData = new ClanRankData(dbAssoc);
- tempClanRanks.push(tempClanRankData);
- logToConsole(LOG_VERBOSE, `[VRR.Clan]: Clan rank '${tempClanRankData.name}' loaded from database successfully!`);
- }
+ let dbQueryString = `SELECT * FROM clan_rank WHERE clan_rank_clan = ${clanDatabaseId}`;
+ dbAssoc = fetchQueryAssoc(dbConnection, dbQueryString);
+ if (dbAssoc.length > 0) {
+ for (let i in dbAssoc) {
+ let tempClanRankData = new ClanRankData(dbAssoc[i]);
+ tempClanRanks.push(tempClanRankData);
+ logToConsole(LOG_VERBOSE, `[AGRP.Clan]: Clan rank '${tempClanRankData.name}' loaded from database successfully!`);
}
- freeDatabaseQuery(dbQuery);
}
disconnectFromDatabase(dbConnection);
}
- logToConsole(LOG_INFO, `[VRR.Clan]: Loaded ranks for clan ${clanDatabaseId} from database successfully!`);
+ logToConsole(LOG_INFO, `[AGRP.Clan]: Loaded ranks for clan ${clanDatabaseId} from database successfully!`);
return tempClanRanks;
}
@@ -1292,10 +1285,10 @@ function setClanRankTitle(clanId, rankId, title) {
// ===========================================================================
function saveAllClansToDatabase() {
- logToConsole(LOG_DEBUG, `[VRR.Clan]: Saving all server clans to database ...`);
+ logToConsole(LOG_DEBUG, `[AGRP.Clan]: Saving all server clans to database ...`);
if (getServerConfig().devServer) {
- logToConsole(LOG_DEBUG, `[VRR.Clan]: Aborting save all clans to database, dev server is enabled.`);
+ logToConsole(LOG_DEBUG, `[AGRP.Clan]: Aborting save all clans to database, dev server is enabled.`);
return false;
}
@@ -1303,7 +1296,7 @@ function saveAllClansToDatabase() {
saveClanToDatabase(i);
}
- logToConsole(LOG_INFO, `[VRR.Clan]: Saved all server clans to database`);
+ logToConsole(LOG_INFO, `[AGRP.Clan]: Saved all server clans to database`);
}
// ===========================================================================
diff --git a/scripts/server/client.js b/scripts/server/client.js
index 9037c59c..41420ebe 100644
--- a/scripts/server/client.js
+++ b/scripts/server/client.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: client.js
// DESC: Provides client communication and cross-endpoint operations
@@ -9,21 +8,20 @@
// ===========================================================================
// Return-To types (for when a player is teleported)
-const AGRP_RETURNTO_TYPE_NONE = 0; // "Return to" data is invalid
-const AGRP_RETURNTO_TYPE_ADMINGET = 1; // "Return to" data is from admin teleporting
-const AGRP_RETURNTO_TYPE_SKINSELECT = 2; // "Return to" data is from skin select
+const V_RETURNTO_TYPE_NONE = 0; // "Return to" data is invalid
+const V_RETURNTO_TYPE_ADMINGET = 1; // "Return to" data is from admin teleporting
+const V_RETURNTO_TYPE_SKINSELECT = 2; // "Return to" data is from skin select
// ===========================================================================
/**
* @class Representing extra data for a client
+ * @property {AccountData} accountData
+ * @property {Array.} subAccounts
*/
class ClientData {
constructor(client, accountData, subAccounts) {
- /** @member {AccountData} accountData */
this.accountData = accountData;
-
- /** @member {Array.} subAccounts */
this.subAccounts = subAccounts; // Characters
// General Info
@@ -38,9 +36,9 @@ class ClientData {
this.sessionId = 0;
// Security
- this.passwordResetState = AGRP_RESETPASS_STATE_NONE;
+ this.passwordResetState = V_RESETPASS_STATE_NONE;
this.passwordResetCode = "";
- this.twoFactorAuthenticationState = AGRP_2FA_STATE_NONE;
+ this.twoFactorAuthenticationState = V_2FA_STATE_NONE;
this.twoFactorAuthenticationCode = 0;
this.loginTimeout = null;
this.loginAttemptsRemaining = 3;
@@ -66,11 +64,11 @@ class ClientData {
// Items
this.tempLockerCache = new Array(9).fill(-1);
- this.tempLockerType = AGRP_TEMP_LOCKER_TYPE_NONE;
+ this.tempLockerType = V_TEMP_LOCKER_TYPE_NONE;
this.hotBarItems = new Array(9).fill(-1);
this.activeHotBarSlot = -1;
this.toggleUseItem = false;
- this.itemActionState = AGRP_ITEM_ACTION_NONE;
+ this.itemActionState = V_ITEM_ACTION_NONE;
this.itemActionItem = -1;
this.paintBallItemCache = [];
@@ -105,7 +103,7 @@ class ClientData {
this.returnToDimension = null;
this.returnToHouse = null;
this.returnToBusiness = null;
- this.returnToType = AGRP_RETURNTO_TYPE_NONE;
+ this.returnToType = V_RETURNTO_TYPE_NONE;
// Animation
this.currentAnimation = -1;
@@ -116,22 +114,24 @@ class ClientData {
// Misc
this.changingCharacterName = false;
- this.currentPickup = false;
+ this.currentPickup = null;
this.usingSkinSelect = false;
this.keyBinds = [];
this.incomingDamageMultiplier = 1;
- this.weaponDamageEvent = AGRP_WEAPON_DAMAGE_EVENT_NORMAL;
+ this.weaponDamageEvent = V_WEAPON_DAMAGE_EVENT_NORMAL;
this.lastJobVehicle = null;
this.health = 100;
this.locale = 0;
this.enteringVehicle = null;
this.customDisconnectReason = "";
- this.interiorCutscene = -1;
+ this.scene = "";
this.playerBlip = null;
this.alcoholLevel = 0;
- this.pedState = AGRP_PEDSTATE_NONE;
- this.promptType = AGRP_PROMPT_NONE;
+ this.pedState = V_PEDSTATE_NONE;
+ this.promptType = V_PROMPT_NONE;
this.privateMessageReplyTo = null;
+ this.enteringExitingProperty = null;
+ this.inProperty = null;
// Paintball
this.inPaintBall = false;
@@ -143,26 +143,26 @@ class ClientData {
this.jobRouteEditNextLocationDelay = 0;
this.jobRouteEditNextLocationArriveMessage = "";
this.jobRouteEditNextLocationGotoMessage = "";
- this.jobRouteEditNextLocationType = AGRP_JOB_ROUTE_LOCATION_TYPE_NONE;
+ this.jobRouteEditNextLocationType = V_JOB_ROUTE_LOC_TYPE_NONE;
// Casino Stuff
this.casinoChips = 0; // This might become an item with a useId of a business (for chips belonging to specific casinos)
this.casinoCardHand = [];
- this.casinoPlayingGame = AGRP_CASINO_GAME_NONE;
+ this.casinoPlayingGame = V_CASINO_GAME_NONE;
}
};
// ===========================================================================
function initClientScript() {
- logToConsole(LOG_DEBUG, "[VRR.Client]: Initializing client script ...");
- logToConsole(LOG_DEBUG, "[VRR.Client]: Client script initialized!");
+ logToConsole(LOG_DEBUG, "[AGRP.Client]: Initializing client script ...");
+ logToConsole(LOG_DEBUG, "[AGRP.Client]: Client script initialized!");
}
// ===========================================================================
function resetClientStuff(client) {
- logToConsole(LOG_DEBUG, `[VRR.Utilities] Resetting client data for ${getPlayerDisplayForConsole(client)}`);
+ logToConsole(LOG_DEBUG, `[AGRP.Utilities] Resetting client data for ${getPlayerDisplayForConsole(client)}`);
if (!getPlayerData(client)) {
return false;
@@ -172,24 +172,128 @@ function resetClientStuff(client) {
stopJobRoute(client, false, false);
}
+ if (isPlayerWorking(client)) {
+ stopWorking(client);
+ }
+
if (getPlayerData(client).rentingVehicle) {
stopRentingVehicle(client);
}
+ if (isPlayerInPaintBall(client)) {
+ stopPaintBall(client);
+ }
+
+ //if (isPlayerFishing(client)) {
+ // stopFishing(client);
+ //}
+
deleteJobItems(client);
deletePaintBallItems(client);
//deletePlayerTemporaryLockerItems(client);
- getPlayerData(client).lastVehicle = null;
+ //getPlayerData(client).lastVehicle = null;
}
// ===========================================================================
function kickAllClients() {
getClients().forEach((client) => {
- getPlayerData(client).customDisconnectReason = `Kicked - All clients are being disconnected`;
+ getPlayerData(client).customDisconnectReason = "ServerRestarting";
disconnectPlayer(client);
})
}
+// ===========================================================================
+
+function initClient(client) {
+ logToConsole(LOG_DEBUG, `[AGRP.Account] Initializing client ${getPlayerDisplayForConsole(client)} ...`);
+
+ if (isConsole(client)) {
+ logToConsole(LOG_DEBUG | LOG_ERROR, `[AGRP.Account] Client initialization failed for ${getPlayerDisplayForConsole(client)}! (is console client)`);
+ return false;
+ }
+
+ if (playerInitialized[client.index] == true) {
+ logToConsole(LOG_DEBUG | LOG_ERROR, `[AGRP.Account] Client initialization failed for ${getPlayerDisplayForConsole(client)}! (already initialized)`);
+ return false;
+ }
+
+ playerInitialized[client.index] = true;
+
+ //setEntityData(client, "v.rp.isInitialized", true, false);
+
+ logToConsole(LOG_DEBUG, `[AGRP.Account] Initializing GUI for ${getPlayerDisplayForConsole(client)} ...`);
+ sendPlayerCurrencyString(client);
+ sendPlayerGUIColours(client);
+ sendPlayerGUIInit(client);
+ updatePlayerSnowState(client, getServerConfig().groundSnow);
+
+ //logToConsole(LOG_DEBUG, `[AGRP.Account] Showing connect camera to ${getPlayerDisplayForConsole(client)} ...`);
+ //showConnectCameraToPlayer(client);
+
+ messageClient(`Please wait ...`, client, getColourByName("softGreen"));
+
+ logToConsole(LOG_DEBUG, `[AGRP.Account] Waiting for 2.5 seconds to prevent race attack ...`);
+ setTimeout(function () {
+ if (client != null) {
+ clearChatBox(client);
+ logToConsole(LOG_DEBUG, `[AGRP.Account] Loading account for ${getPlayerDisplayForConsole(client)}`);
+ let tempAccountData = loadAccountFromName(getPlayerName(client), true);
+
+ logToConsole(LOG_DEBUG, `[AGRP.Account] Loading subaccounts for ${getPlayerDisplayForConsole(client)}`);
+ let tempSubAccounts = loadSubAccountsFromAccount(tempAccountData.databaseId);
+
+ getServerData().clients[getPlayerId(client)] = new ClientData(client, tempAccountData, tempSubAccounts);
+
+ getServerData().clients[getPlayerId(client)].sessionId = saveConnectionToDatabase(client);
+ getServerData().clients[getPlayerId(client)].connectTime = getCurrentUnixTimestamp();
+ requestClientInfo(client);
+
+ if (tempAccountData != false) {
+ sendPlayerLocaleId(client, getPlayerData(client).accountData.locale);
+ if (isAccountAutoIPLoginEnabled(tempAccountData) && getPlayerData(client).accountData.ipAddress == getPlayerIP(client)) {
+ messagePlayerAlert(client, getLocaleString(client, "AutoLoggedInIP"));
+ loginSuccess(client);
+ playRadioStreamForPlayer(client, getServerIntroMusicURL(), true, getPlayerStreamingRadioVolume(client));
+ } else {
+ if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the login GUI.`);
+ showPlayerLoginGUI(client);
+ } else {
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the login message (GUI disabled).`);
+ messagePlayerNormal(client, getLocaleString(client, "WelcomeBack", getServerName(), getPlayerName(client), "/login"), getColourByName("softGreen"));
+
+ if (checkForGeoIPModule()) {
+ let iso = module.geoip.getCountryISO(getGlobalConfig().geoIPCountryDatabaseFilePath, getPlayerIP(client));
+ let localeId = getLocaleFromCountryISO(iso);
+
+ if (localeId != 0) {
+ if (getLocaleData(localeId).enabled) {
+ messagePlayerTip(client, getLanguageLocaleString(localeId, "LocaleOffer", `/lang ${getLocaleData(localeId).isoCode}`), getColourByName("white"), 10000, "Roboto");
+ }
+ }
+ }
+ }
+ startLoginTimeoutForPlayer(client);
+ playRadioStreamForPlayer(client, getServerIntroMusicURL(), true, getPlayerStreamingRadioVolume(client));
+ }
+ } else {
+ sendPlayerLocaleId(client, 0);
+ if (doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the register GUI.`);
+ showPlayerRegistrationGUI(client);
+ } else {
+ logToConsole(LOG_DEBUG, `[AGRP.Account] ${getPlayerDisplayForConsole(client)} is being shown the register message (GUI disabled).`);
+ messagePlayerNormal(client, getLocaleString(client, "WelcomeNewPlayer", getServerName(), getPlayerName(client), "/register"), getColourByName("softGreen"));
+ }
+ playRadioStreamForPlayer(client, getServerIntroMusicURL(), true, getPlayerStreamingRadioVolume(client));
+ }
+
+ getServerData().clients[getPlayerId(client)].keyBinds = loadAccountKeybindsFromDatabase(getServerData().clients[getPlayerId(client)].accountData.databaseId);
+ sendAccountKeyBindsToClient(client);
+ }
+ }, 2500);
+}
+
// ===========================================================================
\ No newline at end of file
diff --git a/scripts/server/command.js b/scripts/server/command.js
index a9d9a784..f9c64c45 100644
--- a/scripts/server/command.js
+++ b/scripts/server/command.js
@@ -1,7 +1,6 @@
// ===========================================================================
-// Asshat Gaming Roleplay
-// https://github.com/VortrexFTW/agrp_main
-// (c) 2022 Asshat Gaming
+// Vortrex's Roleplay Resource
+// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: command.js
// DESC: Provides command data, functions and usage
@@ -44,8 +43,8 @@ let serverCommands = [];
// ===========================================================================
function initCommandScript() {
- logToConsole(LOG_INFO, "[VRR.Command]: Initializing commands script ...");
- logToConsole(LOG_INFO, "[VRR.Command]: Initialized commands script!");
+ logToConsole(LOG_INFO, "[AGRP.Command]: Initializing commands script ...");
+ logToConsole(LOG_INFO, "[AGRP.Command]: Initialized commands script!");
}
// ===========================================================================
@@ -81,6 +80,8 @@ function loadCommands() {
new CommandData("chatfilter", toggleAccountProfanityFilterCommand, "", getStaffFlagValue("None"), true, false, "Turns on/off profanity filter"),
new CommandData("chatemoji", toggleAccountReplaceEmojiCommand, "", getStaffFlagValue("None"), true, false, "Turns on/off automatic emoji"),
new CommandData("emoji", toggleAccountReplaceEmojiCommand, "", getStaffFlagValue("None"), true, false, "Turns on/off automatic emoji"),
+ //new CommandData("resetkeybinds", resetKeyBindsCommand, "", getStaffFlagValue("None"), true, false, "Resets all your keybinds to default"),
+ //new CommandData("copykeybinds", copyKeyBindsToServerCommand, "", getStaffFlagValue("None"), true, false, "Copies all your current keybinds to another server"),
//new CommandData("noblood", toggleAccountHideBloodCommand, "", getStaffFlagValue("None"), true, false, "Turns on/off blood in-game"),
],
ammunation: [],
@@ -353,6 +354,7 @@ function loadCommands() {
new CommandData("itemtypeorderprice", setItemTypeOrderPriceCommand, "- ", getStaffFlagValue("ManageItems"), true, false, "Sets an item type's order price (base price when ordering for a business"),
new CommandData("itemtyperiskmult", setItemTypeRiskMultiplierCommand, "
- ", getStaffFlagValue("ManageItems"), true, false, "Sets an item type's risk multiplayer (higher value for more dangerous or rare illegal items)"),
new CommandData("itemtypeenabled", toggleItemTypeEnabledCommand, "
- ", getStaffFlagValue("ManageItems"), true, false, "Toggles an item type on or off (if off, any items with that type can't be interacted with)"),
+ new CommandData("itemtypedropmodel", setItemTypeDropModelCommand, "
-