24 Commits

Author SHA1 Message Date
Vortrex
d1b8b9524f Rename all net event prefixes to agrp 2022-06-14 08:53:33 -05:00
Vortrex
48c9af3f52 Check dev server cvar before loading data 2022-06-14 08:20:14 -05:00
Vortrex
e5375d09d7 Init network event script 2022-06-14 08:19:58 -05:00
Vortrex
3e4108f1ea Move locale chooser net event to GUI resource 2022-06-14 08:19:48 -05:00
Vortrex
04bd7609e1 Remove scripts that've been moved to new resources 2022-06-14 08:19:34 -05:00
Vortrex
a4fdbd1398 Merge branch 'organizing' into separate-resources 2022-06-14 07:37:15 -05:00
Vortrex
736b7b1e69 Move mexui to new GUI resource 2022-06-14 07:34:14 -05:00
Vortrex
cb48f199c4 Remove old client net events file 2022-06-14 07:34:01 -05:00
Vortrex
cd55f8dcb7 Cleanup 2022-06-14 07:33:43 -05:00
Vortrex
b95ca71a90 Remove old net events script file 2022-06-14 07:33:38 -05:00
Vortrex
dbd8babf82 Remove moved files from meta.xml 2022-06-14 07:33:25 -05:00
Vortrex
4082357026 Add netevents from organizing 2022-06-14 07:33:15 -05:00
Vortrex
d583d17ef8 Cleanup 2022-06-14 07:32:53 -05:00
Vortrex
5af8770b9c Use external locale resource funcs 2022-06-14 07:32:40 -05:00
Vortrex
7a8bdcf0bd Add netevents from organizing 2022-06-14 07:32:26 -05:00
Vortrex
c9ea8fe444 Don't use locale or translation cache array in main 2022-06-14 07:32:18 -05:00
Vortrex
93ead8d123 Move GUI stuff to GUI resource 2022-06-14 07:31:41 -05:00
Vortrex
f14c51dba4 Move locale stuff to locale resource 2022-06-14 07:31:18 -05:00
Vortrex
31dbde51bd Format 2022-06-09 08:19:27 -05:00
Vortrex
fe17137940 Store player blip 2022-06-09 08:19:22 -05:00
Vortrex
cd322adeaa Fix email login alert date issue 2022-06-09 08:19:14 -05:00
Vortrex
5f208c424b Offload labels, nametags, mousecam, and scoreboard 2022-06-09 08:08:27 -05:00
Vortrex
4f47b8f483 Start using separate resources 2022-06-09 07:36:28 -05:00
Vortrex
859ae28656 Remove old logo images 2022-06-09 07:36:16 -05:00
135 changed files with 1351 additions and 11279 deletions

View File

@@ -1,112 +0,0 @@
[
{
"id": 0,
"englishName": "English",
"stringsFile": "english.json",
"isoCode": "en",
"flagImageFile": "uk.png",
"countries": ["gb", "us", "au", "bz", "ca", "ie", "jm", "nz", "za", "tt"],
"requiresUnicode": false,
"contributor": "Vortrex"
},
{
"id": 1,
"englishName": "Russian",
"stringsFile": "russian.json",
"isoCode": "ru",
"flagImageFile": "ru.png",
"countries": ["ru", "ua"],
"requiresUnicode": false,
"contributor": "VNDTTS"
},
{
"id": 2,
"englishName": "Polish",
"stringsFile": "polish.json",
"isoCode": "pl",
"flagImageFile": "pl.png",
"countries": ["pl"],
"requiresUnicode": false,
"contributor": "Suprise444"
},
{
"id": 3,
"englishName": "Spanish",
"stringsFile": "spanish.json",
"isoCode": "es",
"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"
},
{
"id": 4,
"englishName": "Chinese",
"stringsFile": "chinese.json",
"isoCode": "zh",
"flagImageFile": "cn.png",
"countries": ["cn", "hk", "sg", "tw"],
"requiresUnicode": true,
"contributor": "Renzuko_Ctone"
},
{
"id": 5,
"englishName": "Arabic",
"stringsFile": "arabic.json",
"isoCode": "ar",
"flagImageFile": "sa.png",
"countries": ["dz", "bh", "eg", "iq", "jo", "kw", "lb", "ly", "ma", "om", "qa", "sa", "sy", "tn", "ae", "ye"],
"requiresUnicode": true,
"contributor": "! KASIR"
},
{
"id": 6,
"englishName": "Slovak",
"stringsFile": "slovak.json",
"isoCode": "sk",
"flagImageFile": "sk.png",
"countries": ["sk"],
"requiresUnicode": false,
"contributor": "UAKLAUS"
},
{
"id": 7,
"englishName": "German",
"stringsFile": "german.json",
"isoCode": "de",
"flagImageFile": "de.png",
"countries": ["de", "at", "be", "ch", "li", "lu"],
"requiresUnicode": false,
"contributor": "Sladernimo"
},
{
"id": 8,
"englishName": "French",
"stringsFile": "french.json",
"isoCode": "fr",
"flagImageFile": "fr.png",
"countries": ["fr", "cd", "bj", "bf", "cd", "cg", "ga", "gn", "ml", "mc", "ne", "sn"],
"requiresUnicode": false,
"contributor": "Cocam"
},
{
"id": 9,
"englishName": "Japanese",
"stringsFile": "japanese.json",
"isoCode": "jp",
"flagImageFile": "jp.png",
"countries": ["jp"],
"requiresUnicode": true,
"contributor": "Cocam"
},
{
"id": 10,
"englishName": "Finnish",
"stringsFile": "finnish.json",
"isoCode": "fi",
"flagImageFile": "fi.png",
"countries": ["fi"],
"requiresUnicode": false,
"contributor": "SIMBA_MEOW"
}
]

View File

@@ -1,117 +0,0 @@
{
"apiEmail": "example@example.com",
"defaultLanguageId": 0,
"translateURL": "http://api.mymemory.translated.net/get?de={3}&q={0}&langpair={1}|{2}",
"locales": [
{
"id": 0,
"englishName": "English",
"stringsFile": "english.json",
"isoCode": "en",
"flagImageFile": "uk.png",
"countries": ["gb", "us", "au", "bz", "ca", "ie", "jm", "nz", "za", "tt"],
"requiresUnicode": false,
"contributor": "Vortrex"
},
{
"id": 1,
"englishName": "Russian",
"stringsFile": "russian.json",
"isoCode": "ru",
"flagImageFile": "ru.png",
"countries": ["ru", "ua"],
"requiresUnicode": false,
"contributor": "VNDTTS"
},
{
"id": 2,
"englishName": "Polish",
"stringsFile": "polish.json",
"isoCode": "pl",
"flagImageFile": "pl.png",
"countries": ["pl"],
"requiresUnicode": false,
"contributor": "Suprise444"
},
{
"id": 3,
"englishName": "Spanish",
"stringsFile": "spanish.json",
"isoCode": "es",
"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"
},
{
"id": 4,
"englishName": "Chinese",
"stringsFile": "chinese.json",
"isoCode": "zh",
"flagImageFile": "cn.png",
"countries": ["cn", "hk", "sg", "tw"],
"requiresUnicode": true,
"contributor": "Renzuko_Ctone"
},
{
"id": 5,
"englishName": "Arabic",
"stringsFile": "arabic.json",
"isoCode": "ar",
"flagImageFile": "sa.png",
"countries": ["dz", "bh", "eg", "iq", "jo", "kw", "lb", "ly", "ma", "om", "qa", "sa", "sy", "tn", "ae", "ye"],
"requiresUnicode": true,
"contributor": "! KASIR"
},
{
"id": 6,
"englishName": "Slovak",
"stringsFile": "slovak.json",
"isoCode": "sk",
"flagImageFile": "sk.png",
"countries": ["sk"],
"requiresUnicode": false,
"contributor": "UAKLAUS"
},
{
"id": 7,
"englishName": "German",
"stringsFile": "german.json",
"isoCode": "de",
"flagImageFile": "de.png",
"countries": ["de", "at", "be", "ch", "li", "lu"],
"requiresUnicode": false,
"contributor": "Sladernimo"
},
{
"id": 8,
"englishName": "French",
"stringsFile": "french.json",
"isoCode": "fr",
"flagImageFile": "fr.png",
"countries": ["fr", "cd", "bj", "bf", "cd", "cg", "ga", "gn", "ml", "mc", "ne", "sn"],
"requiresUnicode": false,
"contributor": "Cocam"
},
{
"id": 9,
"englishName": "Japanese",
"stringsFile": "japanese.json",
"isoCode": "jp",
"flagImageFile": "jp.png",
"countries": ["jp"],
"requiresUnicode": true,
"contributor": "Cocam"
},
{
"id": 10,
"englishName": "Finnish",
"stringsFile": "finnish.json",
"isoCode": "fi",
"flagImageFile": "fi.png",
"countries": ["fi"],
"requiresUnicode": false,
"contributor": "SIMBA_MEOW"
}
]
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -24,7 +24,6 @@
<script src="scripts/server/business.js" type="server" language="javascript" /> <script src="scripts/server/business.js" type="server" language="javascript" />
<script src="scripts/server/chat.js" type="server" language="javascript" /> <script src="scripts/server/chat.js" type="server" language="javascript" />
<script src="scripts/server/clan.js" type="server" language="javascript" /> <script src="scripts/server/clan.js" type="server" language="javascript" />
<script src="scripts/server/client.js" type="server" language="javascript" />
<script src="scripts/server/crime.js" type="server" language="javascript" /> <script src="scripts/server/crime.js" type="server" language="javascript" />
<script src="scripts/server/database.js" type="server" language="javascript" /> <script src="scripts/server/database.js" type="server" language="javascript" />
<script src="scripts/server/developer.js" type="server" language="javascript" /> <script src="scripts/server/developer.js" type="server" language="javascript" />
@@ -47,6 +46,7 @@
<script src="scripts/server/messaging.js" type="server" language="javascript" /> <script src="scripts/server/messaging.js" type="server" language="javascript" />
<script src="scripts/server/misc.js" type="server" language="javascript" /> <script src="scripts/server/misc.js" type="server" language="javascript" />
<script src="scripts/server/npc.js" type="server" language="javascript" /> <script src="scripts/server/npc.js" type="server" language="javascript" />
<script src="scripts/server/netevents.js" type="server" language="javascript" />
<script src="scripts/server/race.js" type="server" language="javascript" /> <script src="scripts/server/race.js" type="server" language="javascript" />
<script src="scripts/server/radio.js" type="server" language="javascript" /> <script src="scripts/server/radio.js" type="server" language="javascript" />
<script src="scripts/server/security.js" type="server" language="javascript" /> <script src="scripts/server/security.js" type="server" language="javascript" />
@@ -79,121 +79,28 @@
<script src="scripts/server/item/rope.js" type="server" language="javascript" /> <script src="scripts/server/item/rope.js" type="server" language="javascript" />
<script src="scripts/server/item/tazer.js" type="server" language="javascript" /> <script src="scripts/server/item/tazer.js" type="server" language="javascript" />
<!-- Extra Client Files -->
<file type="client" src="files/fonts/roboto-regular.ttf" />
<file type="client" src="files/fonts/pricedown.ttf" />
<file type="client" src="files/images/skins/none.png" />
<file type="client" src="files/images/server-logo.png" />
<!-- GUI -->
<script src="scripts/client/gui/2fa.js" type="client" language="javascript" />
<script src="scripts/client/gui/bizmgr.js" type="client" language="javascript" />
<script src="scripts/client/gui/changepass.js" type="client" language="javascript" />
<script src="scripts/client/gui/charselect.js" type="client" language="javascript" />
<script src="scripts/client/gui/clanmgr.js" type="client" language="javascript" />
<script src="scripts/client/gui/error.js" type="client" language="javascript" />
<script src="scripts/client/gui/housemgr.js" type="client" language="javascript" />
<script src="scripts/client/gui/info.js" type="client" language="javascript" />
<script src="scripts/client/gui/login.js" type="client" language="javascript" />
<script src="scripts/client/gui/list.js" type="client" language="javascript" />
<script src="scripts/client/gui/newchar.js" type="client" language="javascript" />
<script src="scripts/client/gui/register.js" type="client" language="javascript" />
<script src="scripts/client/gui/resetpass.js" type="client" language="javascript" />
<script src="scripts/client/gui/yesno.js" type="client" language="javascript" />
<script src="scripts/client/gui/localechooser.js" type="client" language="javascript" />
<!-- Client Scripts --> <!-- Client Scripts -->
<script src="scripts/client/afk.js" type="client" language="javascript" /> <script src="scripts/client/afk.js" type="client" language="javascript" />
<script src="scripts/client/animation.js" type="client" language="javascript" /> <script src="scripts/client/animation.js" type="client" language="javascript" />
<script src="scripts/client/business.js" type="client" language="javascript" /> <script src="scripts/client/business.js" type="client" language="javascript" />
<script src="scripts/client/chatbox.js" type="client" language="javascript" /> <script src="scripts/client/chatbox.js" type="client" language="javascript" />
<script src="scripts/client/event.js" type="client" language="javascript" /> <script src="scripts/client/event.js" type="client" language="javascript" />
<script src="scripts/client/gui.js" type="client" language="javascript" />
<script src="scripts/client/gps.js" type="client" language="javascript" /> <script src="scripts/client/gps.js" type="client" language="javascript" />
<script src="scripts/client/house.js" type="client" language="javascript" /> <script src="scripts/client/house.js" type="client" language="javascript" />
<script src="scripts/client/item.js" type="client" language="javascript" /> <script src="scripts/client/item.js" type="client" language="javascript" />
<script src="scripts/client/job.js" type="client" language="javascript" /> <script src="scripts/client/job.js" type="client" language="javascript" />
<script src="scripts/client/keybind.js" type="client" language="javascript" /> <script src="scripts/client/keybind.js" type="client" language="javascript" />
<script src="scripts/client/label.js" type="client" language="javascript" />
<script src="scripts/client/locale.js" type="client" language="javascript" /> <script src="scripts/client/locale.js" type="client" language="javascript" />
<script src="scripts/client/logo.js" type="client" language="javascript" />
<script src="scripts/client/main.js" type="client" language="javascript" /> <script src="scripts/client/main.js" type="client" language="javascript" />
<script src="scripts/client/messaging.js" type="client" language="javascript" /> <script src="scripts/client/messaging.js" type="client" language="javascript" />
<script src="scripts/client/mousecam.js" type="client" language="javascript" />
<script src="scripts/client/nametag.js" type="client" language="javascript" />
<script src="scripts/client/npc.js" type="client" language="javascript" /> <script src="scripts/client/npc.js" type="client" language="javascript" />
<script src="scripts/client/radio.js" type="client" language="javascript" /> <script src="scripts/client/radio.js" type="client" language="javascript" />
<script src="scripts/client/scoreboard.js" type="client" language="javascript" /> <script src="scripts/client/netevents.js" type="client" language="javascript" />
<script src="scripts/client/server.js" type="client" language="javascript" />
<script src="scripts/client/skin-select.js" type="client" language="javascript" /> <script src="scripts/client/skin-select.js" type="client" language="javascript" />
<script src="scripts/client/sync.js" type="client" language="javascript" /> <script src="scripts/client/sync.js" type="client" language="javascript" />
<script src="scripts/client/utilities.js" type="client" language="javascript" /> <script src="scripts/client/utilities.js" type="client" language="javascript" />
<script src="scripts/client/vehicle.js" type="client" language="javascript" /> <script src="scripts/client/vehicle.js" type="client" language="javascript" />
<!-- MexUI -->
<file type="client" src="third-party/mexui/Images/down-arrow.png" />
<script language="javascript" type="client" src="third-party/mexui/mexui.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Native.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Utility.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Entity/Transition.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Entity/StyleableEntity.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Entity/Component.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Component/Control.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Component/Entry.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Component/Event.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Component/Window.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Entity/ControlAxis.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Entity/ControlWithEntries.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Entry/DropDownItem.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Entry/GridColumn.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Entry/GridRow.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Entry/ListRow.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Entry/Tab.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Entry/TreeRow.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Button.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/CheckBox.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/DropDown.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Grid.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Image.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Line.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/List.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/ProgressBar.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/RadioButton.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Rectangle.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/ScrollBar.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Slider.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/TabPanel.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Text.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/TextInput.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Tree.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Character.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Characters.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Day.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Date.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Digit.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Digits.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Hour.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Integer.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Letter.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/LetterDigit.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Letters.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/LettersDigits.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Minute.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Month.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Number.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Password.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/PositiveInteger.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/PositiveNumber.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/RangedInteger.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/RangedNumber.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Second.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/TextArea.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Time.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Week.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/WeekDay.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Control/Year.js" />
<script language="javascript" type="client" src="third-party/mexui/Core/Init.js" />
<!-- Startup --> <!-- Startup -->
<script src="scripts/server/startup.js" type="server" language="javascript" /> <script src="scripts/server/startup.js" type="server" language="javascript" />
<script src="scripts/client/startup.js" type="client" language="javascript" /> <script src="scripts/client/startup.js" type="client" language="javascript" />

View File

@@ -109,8 +109,6 @@ function onProcess(event, deltaTime) {
function onKeyUp(event, keyCode, scanCode, keyModifiers) { function onKeyUp(event, keyCode, scanCode, keyModifiers) {
processSkinSelectKeyPress(keyCode); processSkinSelectKeyPress(keyCode);
//processKeyDuringAnimation(); //processKeyDuringAnimation();
processGUIKeyPress(keyCode);
processToggleGUIKeyPress(keyCode);
} }
// =========================================================================== // ===========================================================================
@@ -125,12 +123,8 @@ function onDrawnHUD(event) {
} }
processSmallGameMessageRendering(); processSmallGameMessageRendering();
processScoreBoardRendering();
processLabelRendering();
processLogoRendering();
processItemActionRendering(); processItemActionRendering();
processSkinSelectRendering(); processSkinSelectRendering();
processNameTagRendering();
processInteriorLightsRendering(); processInteriorLightsRendering();
} }
@@ -151,7 +145,7 @@ function onElementStreamIn(event, element) {
function onLocalPlayerExitedVehicle(event, vehicle, seat) { function onLocalPlayerExitedVehicle(event, vehicle, seat) {
logToConsole(LOG_DEBUG, `[VRR.Event] Local player exited vehicle`); logToConsole(LOG_DEBUG, `[VRR.Event] Local player exited vehicle`);
sendNetworkEventToServer("vrr.onPlayerExitVehicle", getVehicleForNetworkEvent(vehicle), seat); sendNetworkEventToServer("agrp.onPlayerExitVehicle", getVehicleForNetworkEvent(vehicle), seat);
if (inVehicleSeat) { if (inVehicleSeat) {
parkedVehiclePosition = false; parkedVehiclePosition = false;
@@ -164,9 +158,9 @@ function onLocalPlayerExitedVehicle(event, vehicle, seat) {
function onLocalPlayerEnteredVehicle(event, vehicle, seat) { function onLocalPlayerEnteredVehicle(event, vehicle, seat) {
logToConsole(LOG_DEBUG, `[VRR.Event] Local player entered vehicle`); logToConsole(LOG_DEBUG, `[VRR.Event] Local player entered vehicle`);
sendNetworkEventToServer("vrr.onPlayerEnterVehicle", getVehicleForNetworkEvent(vehicle), seat); sendNetworkEventToServer("agrp.onPlayerEnterVehicle", getVehicleForNetworkEvent(vehicle), seat);
if (areServerElementsSupported()) { //if (areServerElementsSupported()) {
//if(inVehicleSeat == 0) { //if(inVehicleSeat == 0) {
//setVehicleEngine(vehicle, false); //setVehicleEngine(vehicle, false);
//if(!inVehicle.engine) { //if(!inVehicle.engine) {
@@ -174,7 +168,7 @@ function onLocalPlayerEnteredVehicle(event, vehicle, seat) {
// parkedVehicleHeading = inVehicle.heading; // parkedVehicleHeading = inVehicle.heading;
//} //}
//} //}
} //}
} }
// =========================================================================== // ===========================================================================
@@ -188,7 +182,7 @@ function onPedInflictDamage(event, damagedEntity, damagerEntity, weaponId, healt
if (damagedEntity == localPlayer) { if (damagedEntity == localPlayer) {
//if(!weaponDamageEnabled[damagerEntity.name]) { //if(!weaponDamageEnabled[damagerEntity.name]) {
preventDefaultEventAction(event); preventDefaultEventAction(event);
sendNetworkEventToServer("vrr.weaponDamage", damagerEntity.name, weaponId, pedPiece, healthLoss); sendNetworkEventToServer("agrp.weaponDamage", damagerEntity.name, weaponId, pedPiece, healthLoss);
//} //}
} }
} }

View File

@@ -1,283 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: gui.js
// DESC: Provides GUI functionality and styles (using MexUI)
// TYPE: Client (JavaScript)
// ===========================================================================
var app = {};
let mainFont = "Roboto"; // "Arial"
//let mainLogoPath = (typeof gta == "undefined") ? "files/images/mafiac-logo.png" : "files/images/gtac-logo.png";
let mainLogoPath = "files/images/asshat-logo.png";
let primaryColour = [200, 200, 200];
let secondaryColour = [16, 16, 16];
let primaryTextColour = [0, 0, 0];
let focusedColour = [200, 200, 200];
let invalidValueColour = [200, 200, 200];
let focusedColourOffset = 50;
let windowAlpha = 200;
let windowTitleAlpha = 180;
let buttonAlpha = 180;
let textInputAlpha = 180;
let guiReady = false;
// ===========================================================================
let characterData = [];
let currentCharacter = 0;
let inCharacterSelectScreen = false;
let creatingCharacter = false;
// ===========================================================================
function initGUIScript() {
logToConsole(LOG_DEBUG, "[VRR.GUI]: Initializing GUI script ...");
logToConsole(LOG_DEBUG, "[VRR.GUI]: GUI script initialized!");
}
// ===========================================================================
function initGUI() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Initializing GUI ...`);
initLoginGUI();
initRegisterGUI();
initNewCharacterGUI();
initCharacterSelectGUI();
initInfoDialogGUI();
initErrorDialogGUI();
initYesNoDialogGUI();
initTwoFactorAuthenticationGUI();
initListGUI();
initResetPasswordGUI();
initChangePasswordGUI();
initLocaleChooserGUI();
closeAllWindows();
guiReady = true;
logToConsole(LOG_DEBUG, `[VRR.GUI] All GUI created successfully!`);
loadLocaleConfig();
loadAllLocaleStrings();
resetGUIStrings();
resetLocaleChooserOptions();
sendNetworkEventToServer("vrr.guiReady", true);
};
// ===========================================================================
function closeAllWindows() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Closing all GUI windows`);
infoDialog.window.shown = false;
yesNoDialog.window.shown = false;
errorDialog.window.shown = false;
register.window.shown = false;
login.window.shown = false;
newCharacter.window.shown = false;
characterSelect.window.shown = false;
twoFactorAuth.window.shown = false;
listDialog.window.shown = false;
passwordReset.window.shown = false;
passwordChange.window.shown = false;
localeChooser.window.shown = false;
mexui.setInput(false);
mexui.focusedControl = false;
guiSubmitKey = false;
guiLeftKey = false;
guiRightKey = false;
guiUpKey = false;
guiDownKey = false;
setChatWindowEnabled(true);
}
// ===========================================================================
function isAnyGUIActive() {
if (!guiReady) {
return false;
}
if (infoDialog.window.shown == true) {
return true;
}
if (yesNoDialog.window.shown == true) {
return true;
}
if (errorDialog.window.shown == true) {
return true;
}
if (register.window.shown == true) {
return true;
}
if (login.window.shown == true) {
return true;
}
if (newCharacter.window.shown == true) {
return true;
}
if (characterSelect.window.shown == true) {
return true;
}
if (twoFactorAuth.window.shown == true) {
return true;
}
if (listDialog.window.shown == true) {
return true;
}
if (passwordReset.window.shown == true) {
return true;
}
if (passwordChange.window.shown == true) {
return true;
}
if (localeChooser.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}`);
primaryColour = [red1, green1, blue1];
secondaryColour = [red2, green2, blue2];
primaryTextColour = [red3, green3, blue3];
focusedColour = [red1 + focusedColourOffset, green1 + focusedColourOffset, blue1 + focusedColourOffset];
initGUI();
}
// ===========================================================================
function hideAllGUI() {
closeAllWindows();
setChatWindowEnabled(true);
guiSubmitKey = false;
}
// ===========================================================================
function processGUIKeyPress(keyCode) {
logToConsole(LOG_DEBUG, `[VRR.GUI] Processing key press: ${keyCode}`);
if (!isAnyGUIActive()) {
logToConsole(LOG_DEBUG, `[VRR.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})`);
if (guiSubmitKey != false) {
logToConsole(LOG_DEBUG, `[VRR.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})`);
if (guiLeftKey != false) {
logToConsole(LOG_DEBUG, `[VRR.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})`);
if (guiRightKey != false) {
logToConsole(LOG_DEBUG, `[VRR.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})`);
if (guiDownKey != false) {
logToConsole(LOG_DEBUG, `[VRR.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})`);
if (guiUpKey != false) {
logToConsole(LOG_DEBUG, `[VRR.GUI] Calling up key function`);
guiUpKey.call();
}
}
}
// ===========================================================================
function processToggleGUIKeyPress(keyCode) {
if (keyCode == disableGUIKey) {
sendNetworkEventToServer("vrr.toggleGUI");
}
}
// ===========================================================================
function resetGUIStrings() {
// Login GUI
login.messageLabel.text = getLocaleString("GUILoginWindowLabelEnterPassword");
login.passwordInput.placeholder = getLocaleString("GUILoginWindowPasswordPlaceholder");
login.loginButton.text = toUpperCase(getLocaleString("GUILoginWindowSubmitButton"));
login.forgotPasswordButton.text = toUpperCase(getLocaleString("GUILoginWindowResetPasswordButton"));
login.resetPasswordLabel.text = getLocaleString("GUILoginWindowForgotPasswordLabel");
// Register GUI
register.messageLabel.text = getLocaleString("GUIRegisterWindowLabelCreateAccount");
register.passwordInput.placeholder = getLocaleString("GUIRegisterWindowPasswordPlaceholder");
register.confirmPasswordInput.placeholder = getLocaleString("GUIRegisterWindowConfirmPasswordPlaceholder");
register.emailInput.placeholder = getLocaleString("GUIRegisterWindowEmailPlaceholder");
register.registerButton.text = toUpperCase(getLocaleString("GUIRegisterWindowSubmitButton"));
// Change Password GUI
passwordChange.window.title = toUpperCase(getLocaleString("GUIChangePasswordWindowTitle"));
passwordChange.messageLabel.text = getLocaleString("GUIChangePasswordPasswordLabel");
passwordChange.passwordInput.placeholder = getLocaleString("GUIChangePasswordPasswordPlaceholder");
passwordChange.confirmPasswordInput.placeholder = getLocaleString("GUIChangePasswordConfirmPasswordPlaceholder");
passwordChange.submitButton.text = toUpperCase(getLocaleString("GUIChangePasswordSubmitButton"));
// Reset Password GUI
passwordReset.messageLabel.text = toUpperCase(getLocaleString("GUIResetPasswordConfirmEmailLabel"));
passwordReset.emailInput.placeholder = getLocaleString("GUIResetPasswordEmailPlaceholder");
passwordReset.resetPasswordButton.text = toUpperCase(getLocaleString("GUIResetPasswordSubmitButton"));
passwordReset.backToLoginButton.text = toUpperCase(getLocaleString("GUIResetPasswordLoginButton"));
passwordReset.backToLoginLabel.text = getLocaleString("GUIResetPasswordRememberMessage");
// Character Selection GUI
characterSelect.window.title = toUpperCase(getLocaleString("GUICharacterSelectWindowTitle"));
characterSelect.cashText.text = getLocaleString("GUICharacterSelectMoneyLabel", "0");
characterSelect.clanText.text = getLocaleString("GUICharacterSelectClanLabel", "None");
characterSelect.lastPlayedText.text = getLocaleString("GUICharacterSelectLastPlayedLabel", "Never");
characterSelect.previousCharacterButton.text = toUpperCase(getLocaleString("GUIPreviousCharacterButton"));
characterSelect.nextCharacterButton.text = toUpperCase(getLocaleString("GUINextCharacterButton"));
characterSelect.selectCharacterButton.text = toUpperCase(getLocaleString("GUIPlayAsCharacterButton"));
characterSelect.newCharacterButton.text = toUpperCase(getLocaleString("GUINewCharacterButton"));
// Character Creation GUI
newCharacter.messageLabel.text = getLocaleString("GUINewCharacterMessageLabel");
newCharacter.firstNameInput.placeholder = getLocaleString("GUINewCharacterFirstNamePlaceholder");
newCharacter.lastNameInput.placeholder = getLocaleString("GUINewCharacterLastNamePlaceholder");
newCharacter.createCharacterButton.text = toUpperCase(getLocaleString("GUINewCharacterSubmitButton"));
}

View File

@@ -1,135 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: 2fa.js
// DESC: Provides two factor authentication GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let twoFactorAuth = {
window: null,
logoImage: null,
qrCode: null,
messageLabel: null,
codeLabel: null,
codeInput: null,
submitButton: null,
};
// ===========================================================================
function initTwoFactorAuthenticationGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
transitionTime: 500,
},
title: {
textSize: 0.0,
textColour: toColour(0, 0, 0, 0),
},
icon: {
textSize: 0.0,
textColour: toColour(0, 0, 0, 0),
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
twoFactorAuth.window.titleBarIconSize = toVector2(0,0);
twoFactorAuth.window.titleBarHeight = 0;
twoFactorAuth.qrCode = twoFactorAuth.window.image(100, 20, 100, 100, mainLogoPath, {
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
twoFactorAuth.codeLabel = twoFactorAuth.window.text(20, 135, 260, 20, 'Please enter the code sent to your email!', {
main: {
textSize: 10.0,
textAlign: 0.5,
textColour: toColour(200, 200, 200, 255),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
twoFactorAuth.codeInput = twoFactorAuth.window.textInput(20, 170, 260, 25, '', {
main: {
backgroundColour: toColour(0, 0, 0, 120),
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], textInputAlpha),
textColour: toColour(200, 200, 200, 255),
textSize: 10.0,
textFont: mainFont,
},
caret: {
lineColour: toColour(255, 255, 255, 255),
},
placeholder: {
textColour: toColour(200, 200, 200, 150),
textSize: 10.0,
textFont: mainFont,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
});
twoFactorAuth.codeInput.placeholder = "Code";
twoFactorAuth.submitButton = twoFactorAuth.window.button(20, 205, 260, 30, 'SUBMIT', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(0, 0, 0, 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkTwoFactorAuth);
logToConsole(LOG_DEBUG, `[VRR.GUI] Created two factor auth GUI`);
}
// ===========================================================================
function showTwoFactorAuthGUI() {
closeAllWindows();
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing two-factor authentication window`);
setChatWindowEnabled(false);
mexui.setInput(true);
twoFactorAuth.window.shown = true;
mexui.focusedControl = twoFactorAuth.codeInput;
guiSubmitKey = checkTwoFactorAuth;
}
// ===========================================================================
function twoFactorAuthFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[VRR.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 = "";
}
// ===========================================================================
function twoFactorAuthSuccess() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports two-factor authentication was successful`);
closeAllWindows();
}
// ===========================================================================
function checkTwoFactorAuth() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Checking two-factor authentication with server ...`);
sendNetworkEventToServer("vrr.2fa", twoFactorAuth.codeInput.lines[0]);
}
// ===========================================================================

View File

@@ -1,8 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: bizmgr.js
// DESC: Provides business manager GUI
// TYPE: Client (JavaScript)
// ===========================================================================

View File

@@ -1,157 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: changepass.js
// DESC: Provides change password GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let passwordChange = {
window: null,
logoImage: null,
messageLabel: null,
passwordInput: null,
confirmPasswordInput: null,
submitButton: null,
};
// ===========================================================================
function initChangePasswordGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
transitionTime: 500,
},
title: {
textSize: 0.0,
textColour: toColour(0, 0, 0, 0),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
},
icon: {
textSize: 0.0,
textColour: toColour(0, 0, 0, 0),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
}
});
passwordChange.window.titleBarIconSize = toVector2(0, 0);
passwordChange.window.titleBarHeight = 0;
passwordChange.window.titleBarShown = false;
passwordChange.window.image(100, 20, 75, 75, mainLogoPath, {
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
passwordChange.messageLabel = passwordChange.window.text(20, 95, 260, 20, 'Enter a new password', {
main: {
textSize: 10.0,
textAlign: 0.5,
textColour: toColour(200, 200, 200, 255),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
passwordChange.passwordInput = passwordChange.window.textInput(20, 130, 260, 25, '', {
main: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 255),
textSize: 10.0,
textFont: mainFont,
},
caret: {
lineColour: toColour(255, 255, 255, 255),
},
placeholder: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 200),
textSize: 10.0,
textFont: mainFont,
}
});
passwordChange.passwordInput.masked = true;
passwordChange.passwordInput.placeholder = "Password";
passwordChange.confirmPasswordInput = passwordChange.window.textInput(20, 160, 260, 25, '', {
main: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 255),
textSize: 10.0,
textFont: mainFont,
},
caret: {
lineColour: toColour(255, 255, 255, 255),
},
placeholder: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 200),
textSize: 10.0,
textFont: mainFont,
}
});
passwordChange.confirmPasswordInput.masked = true;
passwordChange.confirmPasswordInput.placeholder = "Confirm password";
passwordChange.submitButton = passwordChange.window.button(20, 195, 260, 30, 'CHANGE PASSWORD', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(255, 255, 255, 255),
textSize: 12.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkChangePassword);
logToConsole(LOG_DEBUG, `[VRR.GUI] Created change password GUI`);
}
// ===========================================================================
function passwordChangeFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[VRR.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 = "";
passwordChange.confirmPasswordInput.text = "";
passwordChange.verificationCodeInput.text = "";
}
// ===========================================================================
function checkChangePassword() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Checking password change with server ...`);
sendNetworkEventToServer("vrr.checkChangePassword", passwordChange.passwordInput.lines[0], passwordChange.confirmPasswordInput.lines[0]);
}
// ===========================================================================
function showChangePasswordGUI(errorMessage) {
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing change password window`);
closeAllWindows();
setChatWindowEnabled(false);
mexui.setInput(true);
passwordChange.window.shown = true;
passwordChange.messageLabel = errorMessage;
mexui.focusedControl = passwordChange.passwordInput;
guiSubmitKey = checkChangePassword;
showLocaleChooserGUI(new Vec2(getScreenWidth() / 2 - (localeChooser.window.size.x / 2), passwordChange.window.position.y + passwordChange.window.size.y + 20));
}
// ===========================================================================
function passwordChangeSuccess() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports password change was successful`);
guiSubmitKey = false;
closeAllWindows();
}
// ===========================================================================

View File

@@ -1,248 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: charselect.js
// DESC: Provides character select GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let characterSelect = {
window: null,
skinImage: null,
nameText: null,
cashText: null,
clanText: null,
lastPlayedText: null,
previousCharacterButton: null,
nextCharacterButton: null,
selectCharacterButton: null,
newCharacterButton: null,
};
// ===========================================================================
function initCharacterSelectGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
},
title: {
textSize: 12.0,
textFont: mainFont,
textColour: toColour(0, 0, 0, 255),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
},
icon: {
textSize: 10.0,
textFont: mainFont,
textColour: toColour(0, 0, 0, 255),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
}
});
characterSelect.window.titleBarIconSize = toVector2(0, 0);
characterSelect.window.titleBarIconShown = false;
characterSelect.window.titleBarHeight = 30;
characterSelect.nameText = characterSelect.window.text(5, 40, 200, 25, 'Lastname, Firstname', {
main: {
textSize: 14.0,
textAlign: 0.0,
textColour: toColour(255, 255, 255, 220),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
}
});
characterSelect.cashText = characterSelect.window.text(5, 65, 200, 25, 'Cash: $0', {
main: {
textSize: 9.0,
textAlign: 0.0,
textColour: toColour(255, 255, 255, 220),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
}
});
characterSelect.clanText = characterSelect.window.text(5, 80, 200, 25, 'Clan: None', {
main: {
textSize: 9.0,
textAlign: 0.0,
textColour: toColour(255, 255, 255, 220),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
}
});
characterSelect.lastPlayedText = characterSelect.window.text(5, 95, 200, 25, 'Last Played: Never', {
main: {
textSize: 9.0,
textAlign: 0.0,
textColour: toColour(255, 255, 255, 220),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
}
});
characterSelect.selectCharacterButton = characterSelect.window.button(85, 130, 260, 25, 'PLAY', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
}
}, selectThisCharacter);
characterSelect.newCharacterButton = characterSelect.window.button(5, 160, 420, 25, 'NEW CHARACTER', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
}
}, showNewCharacter);
characterSelect.previousCharacterButton = characterSelect.window.button(5, 130, 75, 25, 'PREV', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
}
}, selectPreviousCharacter);
characterSelect.nextCharacterButton = characterSelect.window.button(350, 130, 75, 25, 'NEXT', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
}
}, selectNextCharacter);
characterSelect.skinImage = characterSelect.window.image(310, 32, 100, 90, "files/images/skins/none.png", {
focused: {
borderColour: toColour(0, 0, 0, 0),
}
});
logToConsole(LOG_DEBUG, `[VRR.GUI] Created character select GUI`);
}
// ===========================================================================
function showCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, skinId) {
closeAllWindows();
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing character selection window`);
setChatWindowEnabled(false);
mexui.setInput(true);
characterSelect.nameText.text = `${firstName} ${lastName}`;
characterSelect.cashText.text = `Money: $${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");
characterSelect.window.shown = true;
guiSubmitKey = selectThisCharacter;
guiLeftKey = selectPreviousCharacter;
guiRightKey = selectNextCharacter;
showLocaleChooserGUI(new Vec2(getScreenWidth()/2-(localeChooser.window.size.x/2), characterSelect.window.position.y+characterSelect.window.size.y+20));
}
// ===========================================================================
function showNewCharacter() {
closeAllWindows();
logToConsole(LOG_DEBUG, `[VRR.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("vrr.nextCharacter");
}
// ===========================================================================
function selectPreviousCharacter() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Requesting previous character info from server for character select window`);
sendNetworkEventToServer("vrr.previousCharacter");
}
// ===========================================================================
function selectThisCharacter() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Tell server the current shown character was selected in character select window`);
sendNetworkEventToServer("vrr.selectCharacter");
}
// ===========================================================================
function switchCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, skinId) {
logToConsole(LOG_DEBUG, `[VRR.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.clanText.text = `Clan: ${clan}`;
characterSelect.lastPlayedText.text = `Last Played: ${lastPlayed}`;
if(characterSelect.skinImage != null) {
characterSelect.skinImage.remove();
}
characterSelect.skinImage = (getGame() == VRR_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;
guiSubmitKey = selectThisCharacter;
guiLeftKey = selectPreviousCharacter;
guiRightKey = selectNextCharacter;
}
// ===========================================================================
function characterSelectSuccess() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports character selection was successful`);
closeAllWindows();
}
// ===========================================================================
function getSkinImage(skinId, gameId = getGame()) {
if(skinId < 10) {
return `Skin_00${skinId}.png`;
} else if(skinId > 10 && skinId < 100) {
return `Skin_0${skinId}.png`;
} else if(skinId > 100) {
return `Skin_${skinId}.png`;
}
}
// ===========================================================================

View File

@@ -1,20 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: clanmgr.js
// DESC: Provides clan manager GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let clanManager = {
window: null,
generalTab: null,
ranksTab: null,
membersTab: null,
vehiclesTab: null,
businessesTab: null,
housesTab: null,
};
// ===========================================================================

View File

@@ -1,85 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: error.js
// DESC: Provides error box GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let errorDialog = {
window: null,
messageLabel: null,
okayButton: null,
};
// ===========================================================================
function initErrorDialogGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
transitionTime: 500,
},
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),
},
});
errorDialog.messageLabel = errorDialog.window.text(15, 50, 370, 20, 'Error Message', {
main: {
textSize: 10.0,
textAlign: 0.5,
textColour: toColour(255, 255, 255, 255),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
errorDialog.okayButton = errorDialog.window.button(5, 105, 390, 30, 'OK', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
}, closeErrorDialog);
logToConsole(LOG_DEBUG, `[VRR.GUI] Created error GUI ...`);
}
// ===========================================================================
function showErrorGUI(errorMessage, errorTitle, buttonText) {
closeAllWindows();
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing error window. Error: ${errorTitle} - ${errorMessage}`);
setChatWindowEnabled(false);
mexui.setInput(true);
errorDialog.messageLabel.text = errorMessage;
errorDialog.okayButton.text = buttonText;
errorDialog.window.title = errorTitle;
errorDialog.window.shown = true;
}
// ===========================================================================
function closeErrorDialog() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Closing error dialog`);
errorDialog.window.shown = false;
mexui.setInput(false);
}
// ===========================================================================

View File

@@ -1,8 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: housemgr.js
// DESC: Provides house manager GUI
// TYPE: Client (JavaScript)
// ===========================================================================

View File

@@ -1,31 +0,0 @@
<html>
<head>
<title>Connected RP: Login</title>
<style type="text/css" rel="stylesheet">
.input-box
{
font-family: 'Roboto';
font-size: 14px;
border-style: solid;
border-colour: #0066AA;
border-radius: 2px;
color: #0066AA;
}
.button
{
font-family: "Roboto";
font-size: 14px;
border-style: solid;
border-colour: #0066AA;
border-radius: 2px;
color: #0066AA;
};
</style>
</head>
<body>
<img src="server-logo.png" />
<input type="password" placeholder="Password" id="login_input_password" />
<button class="button" id="login_input_submit">LOGIN</button>
</body>
</html>

View File

@@ -1,83 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: info.js
// DESC: Provides info dialog box GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let infoDialog = {
window: null,
messageLabel: null,
okayButton: null,
};
// ===========================================================================
function initInfoDialogGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
},
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),
},
});
infoDialog.messageLabel = infoDialog.window.text(15, 50, 370, 20, 'Information Message', {
main: {
textSize: 10.0,
textAlign: 0.5,
textColour: toColour(255, 255, 255, 220),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
infoDialog.okayButton = infoDialog.window.button(5, 105, 390, 30, 'OK', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
}, closeInfoDialog);
logToConsole(LOG_DEBUG, `[VRR.GUI] Created info dialog GUI`);
}
// ===========================================================================
function closeInfoDialog() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Closing info dialog`);
infoDialog.window.shown = false;
mexui.setInput(false);
}
// ===========================================================================
function showInfoGUI(infoMessage, infoTitle, buttonText) {
closeAllWindows();
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing info dialog window. Info: ${infoTitle} - ${infoMessage}`);
mexui.setInput(true);
infoDialog.messageLabel.text = infoMessage;
infoDialog.okayButton.text = buttonText;
infoDialog.window.title = infoTitle;
infoDialog.window.shown = true;
}
// ===========================================================================

View File

@@ -1,107 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: list.js
// DESC: Provides simple list GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let listDialog = {
window: null,
messageLabel: null,
listGrid: null,
};
// ===========================================================================
function initListGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
},
title: {
textSize: 11.0,
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
},
icon: {
textSize: 11.0,
textColour: toColour(255, 255, 255, 255),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
hover: {
backgroundColour: toColour(205, 60, 60, windowTitleAlpha),
},
},
});
listDialog.messageLabel = infoDialog.window.text(5, 5, 390, 20, 'Select one', {
main: {
textSize: 10.0,
textAlign: 0.5,
textColour: toColour(255, 255, 255, 220),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
listDialog.listGrid = listDialog.window.grid(5, 25, 390, 450, {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
},
column: {
lineColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
},
header: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha-50),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], windowTitleAlpha),
},
cell: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], windowTitleAlpha),
},
row: {
lineColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
hover: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 120),
}
}
});
logToConsole(LOG_DEBUG, `[VRR.GUI] Created list dialog GUI`);
}
// ===========================================================================
function showListGUI() {
closeAllWindows();
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing login window`);
setChatWindowEnabled(false);
mexui.setInput(true);
listDialog.window.shown = true;
guiSubmitKey = checkListDialogSelection;
guiUpKey = selectPreviousListItem;
guiDownKey = selectNextListItem;
}
// ===========================================================================
function checkListDialogSelection() {
}
// ===========================================================================
function selectPreviousListItem() {
}
// ===========================================================================
function selectNextListItem() {
}
// ===========================================================================

View File

@@ -1,116 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: localechooser.js
// DESC: Provides locale chooser GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let localeChooser = {
window: null,
flagImages: [],
activeRingImages: [],
};
let flagImageSize = toVector2(30, 30);
let flagImageGap = toVector2(5, 5);
// ===========================================================================
function initLocaleChooserGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
},
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),
},
});
localeChooser.window.titleBarShown = false;
loadLocaleConfig();
logToConsole(LOG_DEBUG, `[VRR.GUI] Created locale chooser GUI`);
}
// ===========================================================================
function closeLocaleChooserGUI() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Closing locale chooser window`);
localeChooser.window.shown = false;
mexui.setInput(false);
}
// ===========================================================================
function showLocaleChooserGUI(position = toVector2(0.0, 0.0)) {
if(position.x != 0.0 && position.y != 0.0) {
localeChooser.window.position = position;
} else {
localeChooser.window.position = toVector2((getScreenWidth()/2)-(localeChooser.window.size.x/2), getScreenHeight()-100);
}
//closeAllWindows();
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing locale chooser window`);
mexui.setInput(true);
localeChooser.window.shown = true;
}
// ===========================================================================
function toggleLocaleChooserGUI() {
if(localeChooser.window.shown) {
closeLocaleChooserGUI();
} else {
showLocaleChooserGUI();
}
}
// ===========================================================================
function localeChooserSetLocale(localeId) {
logToConsole(LOG_DEBUG|LOG_WARN, `[VRR.GUI] Asking server to change locale to ${localeId}`);
sendLocaleSelectToServer(localeId);
}
// ===========================================================================
function resetLocaleChooserOptions() {
logToConsole(LOG_DEBUG|LOG_WARN, `[VRR.GUI] Resetting locale chooser options`);
// let tempLocaleOptions = getServerData().localeOptions; // getAvailableLocaleOptions();
let tempLocaleOptions = getAvailableLocaleOptions();
localeChooser.window.size = toVector2((tempLocaleOptions.length*(flagImageSize.x+flagImageGap.x))+flagImageGap.x, flagImageSize.y+flagImageGap.y*2);
localeChooser.window.position = toVector2((getScreenWidth()/2)-(localeChooser.window.size.x/2), getScreenHeight()-100);
for(let i in localeChooser.flagImages) {
localeChooser.flagImages[i].remove();
}
for(let i in tempLocaleOptions) {
let imagePath = `files/images/flags/${tempLocaleOptions[i].flagImageFile}`;
localeChooser.flagImages[i] = localeChooser.window.image((i*(flagImageSize.x+flagImageGap.x))+flagImageGap.x, flagImageGap.y, flagImageSize.x, flagImageSize.y, imagePath, {
focused: {
borderColour: toColour(0, 0, 0, 0),
},
}, function() {
localeChooserSetLocale(tempLocaleOptions[i].id);
});
logToConsole(LOG_DEBUG|LOG_WARN, `[VRR.GUI] Created locale chooser option ${tempLocaleOptions[i].englishName} with image ${imagePath}`);
//localeChooser.activeRingImages.push(activeRingImage);
}
}
// ===========================================================================

View File

@@ -1,198 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: login.js
// DESC: Provides login GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let login = {
window: null,
logoImage: null,
messageLabel: null,
passwordInput: null,
loginButton: null,
forgotPasswordButton: null,
resetPasswordLabel: null,
};
// ===========================================================================
let loginHTML =
`<html>
<head>
<title>Asshat Gaming Roleplay: Login</title>
<style type="text/css" rel="stylesheet">
.input-box
{
font-family: "Roboto";
font-size: 14px;
border-style: solid;
border-colour: #0066AA;
border-radius: 2px;
color: #0066AA;
};
</style>
</head>
<body>
</body>
</html>`;
// ===========================================================================
function initLoginGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
transitionTime: 500,
},
title: {
textSize: 0.0,
textColour: toColour(0, 0, 0, 0),
},
icon: {
textSize: 0.0,
textColour: toColour(0, 0, 0, 0),
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
login.window.titleBarIconSize = toVector2(0,0);
login.window.titleBarHeight = 0;
login.window.titleBarShown = false;
login.logoImage = login.window.image(100, 20, 100, 100, mainLogoPath, {
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
login.messageLabel = login.window.text(20, 135, 260, 20, 'Please enter your password!', {
main: {
textSize: 10.0,
textAlign: 0.5,
textColour: toColour(200, 200, 200, 255),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
login.passwordInput = login.window.textInput(20, 170, 260, 25, '', {
main: {
backgroundColour: toColour(0, 0, 0, 120),
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], textInputAlpha),
textColour: toColour(200, 200, 200, 255),
textSize: 10.0,
textFont: mainFont,
},
caret: {
lineColour: toColour(255, 255, 255, 255),
},
placeholder: {
textColour: toColour(200, 200, 200, 150),
textSize: 10.0,
textFont: mainFont,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
});
login.passwordInput.masked = true;
login.passwordInput.placeholder = "Password";
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),
textSize: 12.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkLogin);
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),
textSize: 8.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, switchToPasswordResetGUI);
login.resetPasswordLabel = login.window.text(110, 240, 60, 15, 'Forgot your password?', {
main: {
textSize: 8.0,
textAlign: 1.0,
textColour: toColour(180, 180, 180, 255),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
logToConsole(LOG_DEBUG, `[VRR.GUI] Created login GUI`);
}
// ===========================================================================
function showLoginGUI() {
closeAllWindows();
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing login window`);
setChatWindowEnabled(false);
mexui.setInput(true);
login.window.shown = true;
mexui.focusedControl = login.passwordInput;
guiSubmitKey = checkLogin;
showLocaleChooserGUI(new Vec2(getScreenWidth()/2-(localeChooser.window.size.x/2), login.window.position.y+login.window.size.y+20));
//showSmallGameMessage(`If you don't have a mouse cursor, press ${toUpperCase(getKeyNameFromId(disableGUIKey))} to disable GUI`, COLOUR_WHITE, 7500);
}
// ===========================================================================
function checkLogin() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Checking login with server ...`);
sendNetworkEventToServer("vrr.checkLogin", login.passwordInput.lines[0]);
}
// ===========================================================================
function loginFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports login failed`);
login.messageLabel.text = errorMessage;
login.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
login.passwordInput.text = "";
}
// ===========================================================================
function loginSuccess() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports login was successful`);
guiSubmitKey = false;
closeAllWindows();
}
// ===========================================================================
function switchToPasswordResetGUI() {
//closeAllWindows();
//logToConsole(LOG_DEBUG, `[VRR.GUI] Showing password reset dialog window`);
//showResetPasswordGUI();
sendNetworkEventToServer("vrr.checkResetPassword", "");
return false;
}
// ===========================================================================

View File

@@ -1,166 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: newchar.js
// DESC: Provides new character creation GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let newCharacter = {
window: null,
messageLabel: null,
firstNameInput: null,
lastNameInput: null,
createCharacterButton: null,
mainLogoImage: null,
};
// ===========================================================================
function initNewCharacterGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
transitionTime: 500,
},
title: {
textSize: 12.0,
textFont: mainFont,
textColour: toColour(0, 0, 0, 0),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
},
icon: {
textSize: 0.0,
textColour: toColour(0, 0, 0, 0),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
}
});
newCharacter.window.titleBarIconSize = toVector2(0, 0);
newCharacter.window.titleBarIconShown = false;
newCharacter.window.titleBarShown = false;
newCharacter.window.titleBarHeight = 30;
newCharacter.mainLogoImage = newCharacter.window.image(80, 20, 80, 80, mainLogoPath, {
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
newCharacter.messageLabel = newCharacter.window.text(20, 100, 260, 20, 'Name your character', {
main: {
textSize: 10.0,
textAlign: 0.5,
textColour: toColour(200, 200, 200, 255),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
newCharacter.firstNameInput = newCharacter.window.textInput(20, 125, 260, 25, '', {
main: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 255),
textSize: 10.0,
textFont: mainFont,
},
caret: {
lineColour: toColour(255, 255, 255, 255),
},
placeholder: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 200),
textSize: 10.0,
textFont: mainFont,
}
});
newCharacter.firstNameInput.placeholder = "First Name";
newCharacter.lastNameInput = newCharacter.window.textInput(20, 155, 260, 25, '', {
main: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 255),
textSize: 10.0,
textFont: mainFont,
},
caret: {
lineColour: toColour(255, 255, 255, 255),
},
placeholder: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(150, 150, 150, 200),
textSize: 10.0,
textFont: mainFont,
}
});
newCharacter.lastNameInput.placeholder = "Last Name";
newCharacter.createCharacterButton = newCharacter.window.button(20, 185, 260, 25, 'CREATE CHARACTER', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(255, 255, 255, 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkNewCharacter);
logToConsole(LOG_DEBUG, `[VRR.GUI] Created new character GUI`);
}
// ===========================================================================
function newCharacterFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[VRR.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 = "";
newCharacter.lastNameInput.text = "";
if(!newCharacter.window.shown) {
closeAllWindows();
setChatWindowEnabled(false);
mexui.setInput(true);
setHUDEnabled(false);
newCharacter.window.shown = true;
}
}
// ===========================================================================
function checkNewCharacter() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Checking new character with server ...`);
if(newCharacter.firstNameInput.lines[0].length < 2) {
return false;
}
if(newCharacter.lastNameInput.lines[0].length < 2) {
return false;
}
sendNetworkEventToServer("vrr.checkNewCharacter",
newCharacter.firstNameInput.lines[0],
newCharacter.lastNameInput.lines[0],
);
}
// ===========================================================================
function showNewCharacterGUI() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing new character window`);
closeAllWindows();
setChatWindowEnabled(false);
mexui.setInput(true);
newCharacter.window.shown = true;
mexui.focusedInput = newCharacter.firstNameInput;
guiSubmitKey = checkNewCharacter;
showLocaleChooserGUI(new Vec2(getScreenWidth()/2-(localeChooser.window.size.x/2), newCharacter.window.position.y+newCharacter.window.size.y+20));
}
// ===========================================================================

View File

@@ -1,178 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: register.js
// DESC: Provides account registration GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let register = {
window: null,
logoImage: null,
messageLabel: null,
passwordInput: null,
confirmPasswordInput: null,
emailInput: null,
registerButton: null,
};
// ===========================================================================
function initRegisterGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
transitionTime: 500,
},
title: {
textSize: 0.0,
textColour: toColour(0, 0, 0, 0),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
},
icon: {
textSize: 0.0,
textColour: toColour(0, 0, 0, 0),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
}
});
register.window.titleBarIconSize = toVector2(0,0);
register.window.titleBarHeight = 0;
register.window.titleBarShown = false;
register.window.image(100, 20, 100, 100, mainLogoPath, {
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
register.messageLabel = register.window.text(20, 125, 260, 20, 'Create an account', {
main: {
textSize: 10.0,
textAlign: 0.5,
textColour: toColour(200, 200, 200, 255),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
register.passwordInput = register.window.textInput(20, 150, 260, 25, '', {
main: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 255),
textSize: 10.0,
textFont: mainFont,
},
caret: {
lineColour: toColour(255, 255, 255, 255),
},
placeholder: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 200),
textSize: 10.0,
textFont: mainFont,
}
});
register.passwordInput.masked = true;
register.passwordInput.placeholder = "Password";
register.confirmPasswordInput = register.window.textInput(20, 180, 260, 25, '', {
main: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 255),
textSize: 10.0,
textFont: mainFont,
},
caret: {
lineColour: toColour(255, 255, 255, 255),
},
placeholder: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 200),
textSize: 10.0,
textFont: mainFont,
}
});
register.confirmPasswordInput.masked = true;
register.confirmPasswordInput.placeholder = "Confirm password";
register.emailInput = register.window.textInput(20, 210, 260, 25, '', {
main: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 255),
textSize: 10.0,
textFont: mainFont,
},
caret: {
lineColour: toColour(255, 255, 255, 255),
},
placeholder: {
backgroundColour: toColour(0, 0, 0, 120),
textColour: toColour(200, 200, 200, 200),
textSize: 10.0,
textFont: mainFont,
}
});
register.emailInput.placeholder = "Email";
register.registerButton = register.window.button(20, 245, 260, 30, 'CREATE ACCOUNT', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(255, 255, 255, 255),
textSize: 12.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkRegistration);
logToConsole(LOG_DEBUG, `[VRR.GUI] Created register GUI`);
}
// ===========================================================================
function registrationFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports registration failed. Reason: ${errorMessage}`);
register.messageLabel.text = errorMessage;
register.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
register.passwordInput.text = "";
register.confirmPasswordInput.text = "";
register.emailInput.text = "";
}
// ===========================================================================
function checkRegistration() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Checking registration with server ...`);
sendNetworkEventToServer("vrr.checkRegistration", register.passwordInput.lines[0], register.confirmPasswordInput.lines[0], register.emailInput.lines[0]);
}
// ===========================================================================
function showRegistrationGUI() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing registration window`);
closeAllWindows();
setChatWindowEnabled(false);
mexui.setInput(true);
register.window.shown = true;
mexui.focusedControl = register.passwordInput;
guiSubmitKey = checkRegistration;
showLocaleChooserGUI(new Vec2(getScreenWidth()/2-(localeChooser.window.size.x/2), register.window.position.y+register.window.size.y+20));
//showSmallGameMessage(`If you don't have a mouse cursor, press ${toUpperCase(getKeyNameFromId(disableGUIKey))} to disable GUI`, COLOUR_WHITE, 7500);
}
// ===========================================================================
function registrationSuccess() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports registration was successful`);
guiSubmitKey = false;
closeAllWindows();
}
// ===========================================================================

View File

@@ -1,195 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: resetpass.js
// DESC: Provides password reset GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let passwordReset = {
window: null,
logoImage: null,
messageLabel: null,
emailInput: null,
resetPasswordButton: null,
backToLoginButton: null,
backToLoginLabel: null,
};
// ===========================================================================
function initResetPasswordGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
transitionTime: 500,
},
title: {
textSize: 0.0,
textColour: toColour(0, 0, 0, 0),
},
icon: {
textSize: 0.0,
textColour: toColour(0, 0, 0, 0),
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
passwordReset.window.titleBarIconSize = toVector2(0, 0);
passwordReset.window.titleBarHeight = 0;
passwordReset.window.titleBarShown = false;
passwordReset.logoImage = passwordReset.window.image(100, 20, 100, 100, mainLogoPath, {
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
passwordReset.messageLabel = passwordReset.window.text(20, 135, 260, 20, 'Please confirm your email', {
main: {
textSize: 10.0,
textAlign: 0.5,
textColour: toColour(200, 200, 200, 255),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
passwordReset.emailInput = passwordReset.window.textInput(20, 170, 260, 25, '', {
main: {
backgroundColour: toColour(0, 0, 0, 120),
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], textInputAlpha),
textColour: toColour(200, 200, 200, 255),
textSize: 10.0,
textFont: mainFont,
},
caret: {
lineColour: toColour(255, 255, 255, 255),
},
placeholder: {
textColour: toColour(200, 200, 200, 150),
textSize: 10.0,
textFont: mainFont,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
});
passwordReset.emailInput.placeholder = "Email";
passwordReset.resetPasswordButton = passwordReset.window.button(20, 205, 260, 30, 'RESET PASSWORD', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 12.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkResetPassword);
passwordReset.backToLoginButton = passwordReset.window.button(200, 240, 80, 15, 'LOGIN', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 8.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, switchToLoginGUI);
passwordReset.backToLoginLabel = passwordReset.window.text(110, 240, 60, 15, 'Remember your password?', {
main: {
textSize: 8.0,
textAlign: 1.0,
textColour: toColour(200, 200, 200, 255),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
logToConsole(LOG_DEBUG, `[VRR.GUI] Created password reset GUI`);
}
// ===========================================================================
function showResetPasswordGUI() {
closeAllWindows();
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing password reset window`);
setChatWindowEnabled(false);
mexui.setInput(true);
passwordReset.window.shown = true;
mexui.focusedControl = passwordReset.emailInput;
guiSubmitKey = checkResetPassword;
showLocaleChooserGUI(new Vec2(getScreenWidth() / 2 - (localeChooser.window.size.x / 2), passwordReset.window.position.y + passwordReset.window.size.y + 20));
//showSmallGameMessage(`If you don't have a mouse cursor, press ${toUpperCase(getKeyNameFromId(disableGUIKey))} to disable GUI`, COLOUR_WHITE, 7500);
}
// ===========================================================================
function checkResetPassword() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Checking password reset with server (${passwordReset.emailInput.lines[0]}) ...`);
sendNetworkEventToServer("vrr.checkResetPassword", passwordReset.emailInput.lines[0]);
}
// ===========================================================================
function resetPasswordFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[VRR.GUI] Server reports password reset failed`);
passwordReset.messageLabel.text = errorMessage;
passwordReset.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
passwordReset.emailInput.text = "";
}
// ===========================================================================
function resetPasswordCodeInputGUI() {
logToConsole(LOG_DEBUG | LOG_WARN, `[VRR.GUI] Server reports password reset email confirmation was successful. Asking for code ...`);
closeAllWindows();
passwordReset.messageLabel.text = getLocaleString("GUIResetPasswordCodeInputLabel");
//passwordReset.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
passwordReset.emailInput.lines[0] = "";
passwordReset.emailInput.placeholder = getLocaleString("GUIResetPasswordCodePlaceholder");
guiSubmitKey = checkResetPassword;
showResetPasswordGUI();
}
// ===========================================================================
function resetPasswordEmailInputGUI() {
logToConsole(LOG_DEBUG | LOG_WARN, `[VRR.GUI] Server reports password reset request was approved. Asking for email ...`);
closeAllWindows();
passwordReset.messageLabel.text = getLocaleString("GUIResetPasswordConfirmEmailLabel");
//passwordReset.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
passwordReset.emailInput.text = "";
passwordReset.emailInput.placeholder = getLocaleString("GUIResetPasswordEmailPlaceholder");
guiSubmitKey = checkResetPassword;
showResetPasswordGUI();
}
// ===========================================================================
function switchToLoginGUI() {
guiSubmitKey = false;
closeAllWindows();
showLoginGUI();
}
// ===========================================================================

View File

@@ -1,115 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: yesno.js
// DESC: Provides yes/no prompt dialog GUI
// TYPE: Client (JavaScript)
// ===========================================================================
let yesNoDialog = {
window: null,
messageLabel: null,
yesButton: null,
noButton: null,
};
// ===========================================================================
function initYesNoDialogGUI() {
logToConsole(LOG_DEBUG, `[VRR.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),
transitionTime: 500,
},
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),
},
});
yesNoDialog.messageLabel = yesNoDialog.window.text(15, 50, 370, 20, 'Would you like to answer this question?', {
main: {
textSize: 10.0,
textAlign: 0.5,
textColour: toColour(255, 255, 255, 255),
textFont: mainFont,
},
focused: {
borderColour: toColour(0, 0, 0, 0),
},
});
yesNoDialog.yesButton = yesNoDialog.window.button(5, 105, 193, 30, 'YES', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
}, yesNoDialogAnswerYes);
yesNoDialog.noButton = yesNoDialog.window.button(203, 105, 192, 30, 'NO', {
main: {
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
textSize: 10.0,
textFont: mainFont,
textAlign: 0.5,
},
focused: {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
}, yesNoDialogAnswerNo);
logToConsole(LOG_DEBUG, `[VRR.GUI] Created prompt GUI`);
}
// ===========================================================================
function showYesNoPromptGUI(promptMessage, promptTitle, yesButtonText, noButtonText) {
closeAllWindows();
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing prompt window. Prompt: ${promptTitle} - ${promptMessage}`);
mexui.setInput(true);
yesNoDialog.messageLabel.text = "";
yesNoDialog.yesButton.text = "";
yesNoDialog.noButton.text = "";
yesNoDialog.window.title = "";
yesNoDialog.messageLabel.text = promptMessage;
yesNoDialog.yesButton.text = yesButtonText;
yesNoDialog.noButton.text = noButtonText;
yesNoDialog.window.title = promptTitle;
yesNoDialog.window.shown = true;
}
// ===========================================================================
function yesNoDialogAnswerNo() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Responding with answer NO to server prompt`);
sendNetworkEventToServer("vrr.promptAnswerNo");
closeAllWindows();
}
// ===========================================================================
function yesNoDialogAnswerYes() {
logToConsole(LOG_DEBUG, `[VRR.GUI] Responding with answer YES to server prompt`);
sendNetworkEventToServer("vrr.promptAnswerYes");
closeAllWindows();
}
// ===========================================================================

View File

@@ -1,384 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: labels.js
// DESC: Provides functionality for world labels (3D labels)
// TYPE: Client (JavaScript)
// ===========================================================================
let businessLabels = [];
let houseLabels = [];
let jobLabels = [];
let propertyLabelNameFont = null;
let propertyLabelLockedFont = null;
let propertyLabelHeight = 1.0;
let jobNameLabelFont = null;
let jobHelpLabelFont = null;
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 ...");
propertyLabelNameFont = initLabelPropertyNameFont();
propertyLabelLockedFont = initLabelPropertyLockedFont();
jobNameLabelFont = initLabelJobNameFont();
jobHelpLabelFont = initLabelJobHelpFont();
logToConsole(LOG_DEBUG, "[VRR.Label]: Label script initialized!");
}
// ===========================================================================
function initLabelPropertyNameFont() {
return lucasFont.createDefaultFont(16.0, "Roboto", "Regular");
}
// ===========================================================================
function initLabelPropertyLockedFont() {
return lucasFont.createDefaultFont(12.0, "Roboto", "Light");
}
// ===========================================================================
function initLabelJobNameFont() {
return lucasFont.createDefaultFont(16.0, "Roboto", "Regular");
}
// ===========================================================================
function initLabelJobHelpFont() {
return lucasFont.createDefaultFont(10.0, "Roboto", "Light");
}
// ===========================================================================
function renderPropertyEntranceLabel(name, position, locked, isBusiness, price, rentPrice, labelInfoType) {
if(localPlayer == null) {
return false;
}
if(propertyLabelNameFont == null) {
return false;
}
if(propertyLabelLockedFont == null) {
return false;
}
if(getGame() == VRR_GAME_GTA_IV) {
if(!natives.doesViewportExist(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[VRR.Label]: Game viewport does not exist!");
return false;
}
if(!natives.isViewportActive(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[VRR.Label]: Game viewport is not active!");
return false;
}
}
let tempPosition = position;
tempPosition.z = tempPosition.z + propertyLabelHeight;
let screenPosition = new Vec3(0.0, 0.0, 0.0);
if(getGame() == VRR_GAME_GTA_IV) {
screenPosition = natives.getViewportPositionOfCoord(tempPosition, natives.getGameViewportId());
} else {
screenPosition = getScreenFromWorldPosition(tempPosition);
}
if(screenPosition.x < 0 || screenPosition.x > game.width) {
return false;
}
let text = "";
if(price > "0") {
text = getLocaleString("PropertyForSaleLabel", 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);
screenPosition.y -= propertyLabelPriceOffset;
}
text = "";
if(rentPrice != "0") {
text = getLocaleString("PropertyForRentLabel", 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;
}
if(isBusiness) {
text = (locked) ? toUpperCase(getLocaleString("Closed")) : toUpperCase(getLocaleString("Open"));
} else {
text = (locked) ? toUpperCase(getLocaleString("Locked")) : toUpperCase(getLocaleString("Unlocked"));
}
if(!locked && labelInfoType != VRR_PROPLABEL_INFO_NONE) {
let infoText = "";
switch(labelInfoType) {
case VRR_PROPLABEL_INFO_ENTER: {
if(enterPropertyKey) {
infoText = getLocaleString("PropertyEnterKeyPressLabel", toUpperCase(getKeyNameFromId(enterPropertyKey)));
} else {
infoText = getLocaleString("PropertyEnterCommandLabel", "/enter");
}
break;
}
case VRR_PROPLABEL_INFO_BUY: {
infoText = getLocaleString("BusinessBuyItemsLabel", "/buy");
break;
}
case VRR_PROPLABEL_INFO_BUYBIZ: {
infoText = getLocaleString("BuyBusinessLabel", "/bizbuy");
break;
}
case VRR_PROPLABEL_INFO_BUYHOUSE: {
infoText = getLocaleString("BuyHouseLabel", "/housebuy");
break;
}
case VRR_PROPLABEL_INFO_RENTHOUSE: {
infoText = getLocaleString("RentHouseLabel", "/houserent");
break;
}
case VRR_PROPLABEL_INFO_ENTERVEHICLE: {
infoText = getLocaleString("VehicleDealershipLabel");
break;
}
default: {
if(enterPropertyKey) {
infoText = getLocaleString("PropertyEnterKeyPressLabel", toUpperCase(getKeyNameFromId(enterPropertyKey)));
} else {
infoText = getLocaleString("PropertyEnterCommandLabel", "/enter");
}
break;
}
}
if(getDistance(localPlayer.position, position) <= renderLabelDistance-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;
}
}
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, (locked) ? lockedColour : unlockedColour, false, true, false, true);
screenPosition.y -= propertyLabelNameOffset;
text = name || " ";
size = propertyLabelNameFont.measure(text, game.width, 0.0, 0.0, propertyLabelNameFont.size, true, true);
propertyLabelNameFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, propertyLabelNameFont.size, (isBusiness) ? toColour(0, 153, 255, 255) : toColour(17, 204, 17, 255), false, true, false, true);
}
// -------------------------------------------------------------------------
function renderPropertyExitLabel(position) {
if(localPlayer == null) {
return false;
}
if(propertyLabelNameFont == null) {
return false;
}
if(propertyLabelLockedFont == null) {
return false;
}
if(getGame() == VRR_GAME_GTA_IV) {
if(!natives.doesViewportExist(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[VRR.Label]: Game viewport does not exist!");
return false;
}
if(!natives.isViewportActive(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[VRR.Label]: Game viewport is not active!");
return false;
}
}
let tempPosition = position;
tempPosition.z = tempPosition.z + propertyLabelHeight;
let screenPosition = new Vec3(0.0, 0.0, 0.0);
if(getGame() == VRR_GAME_GTA_IV) {
screenPosition = natives.getViewportPositionOfCoord(tempPosition, natives.getGameViewportId());
} else {
screenPosition = getScreenFromWorldPosition(tempPosition);
}
if(screenPosition.x < 0 || screenPosition.x > game.width) {
return false;
}
let text = "EXIT";
let size = propertyLabelNameFont.measure(text, game.width, 0.0, 0.0, propertyLabelNameFont.size, true, true);
propertyLabelNameFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, propertyLabelNameFont.size, COLOUR_WHITE, false, true, false, true);
}
// -------------------------------------------------------------------------
function renderJobLabel(name, position, jobType) {
if(localPlayer == null) {
return false;
}
if(jobNameLabelFont == null) {
return false;
}
if(jobHelpLabelFont == null) {
return false;
}
if(getGame() == VRR_GAME_GTA_IV) {
if(!natives.doesViewportExist(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[VRR.Label]: Game viewport does not exist!");
return false;
}
if(!natives.isViewportActive(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[VRR.Label]: Game viewport is not active!");
return false;
}
}
let tempPosition = position;
tempPosition.z = tempPosition.z + propertyLabelHeight;
let screenPosition = new Vec3(0.0, 0.0, 0.0);
if(getGame() == VRR_GAME_GTA_IV) {
screenPosition = natives.getViewportPositionOfCoord(tempPosition, natives.getGameViewportId());
} else {
screenPosition = getScreenFromWorldPosition(tempPosition);
}
if(screenPosition.x < 0 || screenPosition.x > game.width) {
return false;
}
let text = "";
if(jobType == localPlayerJobType) {
if(localPlayerWorking) {
text = getLocaleString("JobEquipAndUniformLabel", "/equip", "/uniform", "/stopwork");
} else {
text = getLocaleString("StartWorkLabel", "/startwork");
}
} else {
if(localPlayerJobType == 0) {
text = getLocaleString("TakeJobLabel", "/takejob");
} else {
text = getLocaleString("NotYourJobLabel", "/quitjob");
}
}
let size = jobHelpLabelFont.measure(text, game.width, 0.0, 0.0, jobHelpLabelFont.size, true, true);
jobHelpLabelFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, jobHelpLabelFont.size, COLOUR_YELLOW, false, true, false, true);
screenPosition.y -= 18;
text = getLocaleString("JobLabel", name);
size = jobNameLabelFont.measure(text, game.width, 0.0, 0.0, jobNameLabelFont.size, true, true);
jobNameLabelFont.render(text, [screenPosition.x-size[0]/2, screenPosition.y-size[1]/2], game.width, 0.0, 0.0, jobNameLabelFont.size, COLOUR_WHITE, false, true, false, true);
}
// -------------------------------------------------------------------------
function processLabelRendering() {
if(renderLabels) {
if(!areServerElementsSupported()) {
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);
}
});
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);
}
});
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(areWorldLabelsSupported()) {
if(localPlayer != null) {
let pickups = getElementsByType(ELEMENT_PICKUP);
for(let i in pickups) {
if(pickups[i].getData("vrr.label.type") != null) {
if(getDistance(localPlayer.position, pickups[i].position) <= renderLabelDistance) {
if(!pickups[i].isOnScreen) {
let price = "0";
let rentPrice = "0";
let labelInfoType = VRR_PROPLABEL_INFO_NONE;
if(pickups[i].getData("vrr.label.price") != null) {
price = makeLargeNumberReadable(pickups[i].getData("vrr.label.price"));
}
if(pickups[i].getData("vrr.label.rentprice") != null) {
rentPrice = makeLargeNumberReadable(pickups[i].getData("vrr.label.rentprice"));
}
if(pickups[i].getData("vrr.label.help") != null) {
labelInfoType = pickups[i].getData("vrr.label.help");
}
switch(pickups[i].getData("vrr.label.type")) {
case VRR_LABEL_BUSINESS: {
renderPropertyEntranceLabel(pickups[i].getData("vrr.label.name"), pickups[i].position, pickups[i].getData("vrr.label.locked"), true, price, rentPrice, labelInfoType);
break;
}
case VRR_LABEL_HOUSE: {
renderPropertyEntranceLabel(pickups[i].getData("vrr.label.name"), pickups[i].position, pickups[i].getData("vrr.label.locked"), false, price, rentPrice, labelInfoType);
break;
}
case VRR_LABEL_JOB: {
renderJobLabel(pickups[i].getData("vrr.label.name"), pickups[i].position, pickups[i].getData("vrr.label.jobType"));
break;
}
case VRR_LABEL_EXIT: {
renderPropertyExitLabel(pickups[i].position);
break;
}
}
}
}
}
}
}
}
}
}
// -------------------------------------------------------------------------

View File

@@ -8,53 +8,32 @@
// =========================================================================== // ===========================================================================
function getLocaleString(stringName, ...args) { function getLocaleString(stringName, ...args) {
if(typeof getServerData().localeStrings[localLocaleId][stringName] == undefined) { return findResourceByName("agrp_locale").exports.getLocaleString(localLocaleId, stringName, args);
return ""; }
}
let tempString = getServerData().localeStrings[localLocaleId][stringName]; // ===========================================================================
if(tempString == "" || tempString == null || tempString == undefined) { function getGroupedLocaleString(stringName, index, ...args) {
return ""; return findResourceByName("agrp_locale").exports.getGroupedLocaleString(localLocaleId, stringName, index, args);
}
for(let i = 1; i <= args.length; i++) {
tempString = tempString.replace(`{${i}}`, args[i-1]);
}
return tempString;
} }
// =========================================================================== // ===========================================================================
function getAvailableLocaleOptions() { function getAvailableLocaleOptions() {
return getServerData().localeOptions.filter(localeOption => localeOption.requiresUnicode == false); return findResourceByName("agrp_locale").exports.getAvailableLocaleOptions();
} }
// =========================================================================== // ===========================================================================
function loadLocaleConfig() { function getLocales() {
let configFile = loadTextFile("config/client/locale.json"); return findResourceByName("agrp_locale").exports.getLocales();
getServerData().localeOptions = JSON.parse(configFile);
}
// ===========================================================================
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);
getServerData().localeStrings[i] = localeData;
}
} }
// =========================================================================== // ===========================================================================
function setLocale(tempLocaleId) { function setLocale(tempLocaleId) {
logToConsole(LOG_DEBUG, `[VRR.Locale] Setting locale to ${tempLocaleId} (${getServerData().localeOptions[tempLocaleId].englishName})`); let locales = getLocales();
logToConsole(LOG_DEBUG, `[VRR.Locale] Setting locale to ${tempLocaleId} (${locales[tempLocaleId].englishName})`);
localLocaleId = tempLocaleId; localLocaleId = tempLocaleId;
resetGUIStrings(); resetGUIStrings();
} }

View File

@@ -1,52 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: logo.js
// DESC: Provides logo rendering functions
// TYPE: Client (JavaScript)
// ===========================================================================
let logoImage = null;
let logoPos = toVector2(game.width-132, game.height-132);
let logoSize = toVector2(128, 128);
// ===========================================================================
function initLogoScript() {
logToConsole(LOG_DEBUG, "[VRR.Logo]: Initializing logo script ...");
//logoImage = loadLogoImage();
logToConsole(LOG_DEBUG, "[VRR.Logo]: Logo script initialized!");
}
// ===========================================================================
function loadLogoImage() {
let logoStream = openFile(mainLogoPath);
let tempLogoImage = null;
if(logoStream != null) {
tempLogoImage = graphics.loadPNG(logoStream);
logoStream.close();
}
return tempLogoImage;
}
// ===========================================================================
function processLogoRendering() {
if(renderLogo) {
if(logoImage != null) {
graphics.drawRectangle(logoImage, logoPos, logoSize);
}
}
}
// ===========================================================================
function setServerLogoRenderState(state) {
logToConsole(LOG_DEBUG, `[VRR.Main] Server logo ${(state) ? "enabled" : "disabled"}`);
renderLogo = state;
}
// ===========================================================================

View File

@@ -30,7 +30,7 @@ let renderHotBar = true;
let renderItemActionDelay = true; let renderItemActionDelay = true;
let renderInteriorLights = true; let renderInteriorLights = true;
let logLevel = LOG_INFO|LOG_DEBUG|LOG_VERBOSE; let logLevel = LOG_INFO | LOG_DEBUG | LOG_VERBOSE;
let weaponDamageEnabled = {}; let weaponDamageEnabled = {};
let weaponDamageEvent = {}; let weaponDamageEvent = {};
@@ -48,9 +48,6 @@ let streamingRadio = null;
let streamingRadioVolume = 50; let streamingRadioVolume = 50;
let streamingRadioElement = false; let streamingRadioElement = false;
let enterPropertyKey = null;
let disableGUIKey = getKeyIdFromParams("insert");
let inAnimation = false; let inAnimation = false;
let forcedAnimation = null; let forcedAnimation = null;
@@ -59,8 +56,6 @@ let calledDeathEvent = false;
let interiorLightsEnabled = true; let interiorLightsEnabled = true;
let interiorLightsColour = toColour(0, 0, 0, 150); let interiorLightsColour = toColour(0, 0, 0, 150);
let mouseCameraEnabled = false;
let currentPickup = false; let currentPickup = false;
let vehiclePurchaseState = VRR_VEHBUYSTATE_NONE; let vehiclePurchaseState = VRR_VEHBUYSTATE_NONE;
@@ -69,12 +64,6 @@ let vehiclePurchasePosition = null;
let forceWantedLevel = 0; let forceWantedLevel = 0;
let guiSubmitKey = false;
let guiLeftKey = false;
let guiRightKey = false;
let guiUpKey = false;
let guiDownKey = false;
// Pre-cache all allowed skins // Pre-cache all allowed skins
let allowedSkins = getAllowedSkins(getGame()); let allowedSkins = getAllowedSkins(getGame());

View File

@@ -1,643 +0,0 @@
// ===========================================================================
// Asshat-Gaming Roleplay
// https://github.com/VortrexFTW/gtac_asshat_rp
// Copyright (c) 2020 Asshat-Gaming (https://asshatgaming.com)
// ---------------------------------------------------------------------------
// FILE: mouse-camera.js
// DESC: Provides a freelook camera similar to SA for III and VC
// TYPE: Client (JavaScript)
// ===========================================================================
// CREDITS TO LUCASC190 FOR MAKING THE MOUSE CAMERA
// WALKING CODE ADDED BY VORTREX
function SetStandardControlsEnabled(bEnabled)
{
if(typeof gta == "undefined") {
return false;
}
if (game.standardControls === undefined)
{
logToConsole(LOG_WARN, "game.standardControls not implemented");
return;
}
game.standardControls = bEnabled;
}
function GetCurrentPlayerIndex()
{
return 0;
}
function GetPlayerPed(uiIndex)
{
if (uiIndex >= 1)
throw new Error("player index out of range");
return localPlayer;
}
function GetPedVehicle(pPed)
{
return pPed.vehicle;
}
let ENTITYTYPE_BUILDING = 1;
let ENTITYTYPE_VEHICLE = 2;
let ENTITYTYPE_PED = 3;
let ENTITYTYPE_OBJECT = 4;
let ENTITYTYPE_DUMMY = 5;
function GetEntityType(Entity)
{
if (Entity.isType(ELEMENT_BUILDING))
return ENTITYTYPE_BUILDING;
if (Entity.isType(ELEMENT_VEHICLE))
return ENTITYTYPE_VEHICLE;
if (Entity.isType(ELEMENT_PED))
return ENTITYTYPE_PED;
if (Entity.isType(ELEMENT_OBJECT))
return ENTITYTYPE_OBJECT;
//if (Entity.isType(ELEMENT_DUMMY))
// return ENTITYTYPE_DUMMY;
return undefined;
}
function GetPlaceableMatrix(pPlaceable)
{
if (pPlaceable == GetCamera())
return game.cameraMatrix;
return pPlaceable.matrix;
}
function GetEntityModel(pEntity)
{
return pEntity;
}
function GetModelBoundingSphere(usModel)
{
return [usModel.boundingRadius, usModel.boundingCentre.x, usModel.boundingCentre.y, usModel.boundingCentre.z];
}
function GetMouseSpeed()
{
if (gui.cursorEnabled)
return [0,0];
let MouseSpeed = game.getMouseSpeed();
return [MouseSpeed.x,-MouseSpeed.y];
}
function GetMouseSensitivity()
{
if (game.getMouseSensitivity === undefined)
{
//logToConsole(LOG_ERROR, "game.getMouseSensitivity not implemented");
return [0.0025,0.003];
}
let MouseSensitivity = game.getMouseSensitivity();
return [MouseSensitivity.x,MouseSensitivity.y];
}
let GetCamera;
{
const Camera = Symbol();
GetCamera = function()
{
return Camera;
}
}
function AreEntityCollisionsEnabled(pEntity)
{
return pEntity.collisionsEnabled;
}
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)
{
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];
}
function SetPlaceableMatrix(pPlaceable, mat)
{
if (pPlaceable == GetCamera())
{
game.setCameraMatrix(mat);
return;
}
pPlaceable.matrix = mat;
}
const UpdateCamera = game.updateCamera;
let GetTickCount;
{
let FrameCount = 0;
setInterval(() =>
{
++FrameCount;
}, 0);
let GTAFrameCount = 0;
addEventHandler("OnProcess", (event, deltaTime) =>
{
++GTAFrameCount;
});
GetTickCount = function(bGTA, bFrames)
{
if (bFrames)
return bGTA ? GTAFrameCount : FrameCount;
else
return bGTA ? game.tickCount : sdl.ticks;
}
}
function easingSinusoidalInOut(t,b,c,d)//TODO: Move this to MathUtil.js
{
return -c/2 * (Math.cos((Math.PI)*t/d) - 1) + b;
}
//TODO: extract
function applyMultiplierTimeStep(m,t)//TODO: Move this to MathUtil.js
{
return Math.max(Math.min(1.0-(1.0-m)*(t),1),0);
}
//TODO: getOffset
//TODO: round
//TODO: getNumberBetween
//TODO: split
//TODO: isWhiteSpaceCharacter
//TODO: isControlCharacter
//TODO: alert
//TODO: confirm
const identityMatrix = new Matrix4x4();
if (identityMatrix.setIdentity === undefined)
{
identityMatrix.m11 = 1;
identityMatrix.m12 = 0;
identityMatrix.m13 = 0;
identityMatrix.m14 = 0;
identityMatrix.m21 = 0;
identityMatrix.m22 = 1;
identityMatrix.m23 = 0;
identityMatrix.m24 = 0;
identityMatrix.m31 = 0;
identityMatrix.m32 = 0;
identityMatrix.m33 = 1;
identityMatrix.m34 = 0;
identityMatrix.m41 = 0;
identityMatrix.m42 = 0;
identityMatrix.m43 = 0;
identityMatrix.m44 = 1;
}
const cameraIdentityMatrix = new Matrix4x4();
cameraIdentityMatrix.m11 = -1;
cameraIdentityMatrix.m12 = 0;
cameraIdentityMatrix.m13 = 0;
cameraIdentityMatrix.m14 = 0;
cameraIdentityMatrix.m21 = 0;
cameraIdentityMatrix.m22 = 1;
cameraIdentityMatrix.m23 = 0;
cameraIdentityMatrix.m24 = 0;
cameraIdentityMatrix.m31 = 0;
cameraIdentityMatrix.m32 = 0;
cameraIdentityMatrix.m33 = 1;
cameraIdentityMatrix.m34 = 0;
cameraIdentityMatrix.m41 = 0;
cameraIdentityMatrix.m42 = 0;
cameraIdentityMatrix.m43 = 0;
cameraIdentityMatrix.m44 = 1;
function createMultipliedMatrix()
{
let matrix = new Matrix4x4();
matrix.setMultiply.apply(matrix, arguments);
return matrix;
}
function createXRotationMatrix(x)
{
let matrix = new Matrix4x4();
matrix.setRotateX(x);
return matrix;
}
function createYRotationMatrix(x)
{
let matrix = new Matrix4x4();
matrix.setRotateY(x);
return matrix;
}
function createZRotationMatrix(z)
{
let matrix = new Matrix4x4();
matrix.setRotateZ(z);
return matrix;
}
function createTranslationMatrix(x,y,z)
{
let matrix = new Matrix4x4();
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 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 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];
}
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);
matrix.m11 = rightX;
matrix.m12 = rightY;
matrix.m13 = rightZ;
matrix.m14 = 0;
matrix.m21 = lookX;
matrix.m22 = lookY;
matrix.m23 = lookZ;
matrix.m24 = 0;
matrix.m31 = upX;
matrix.m32 = upY;
matrix.m33 = upZ;
matrix.m34 = 0;
matrix.m41 = eyeX;
matrix.m42 = eyeY;
matrix.m43 = eyeZ;
matrix.m44 = 1;
matrix.m41 = eyeX;
matrix.m42 = eyeY;
matrix.m43 = eyeZ;
matrix.m44 = 1;
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;
}
let easeCamera = false;
let easeStartTicks;
let easeDuration;
let easeStartPosX, easeStartPosY, easeStartPosZ;
let easeStartLookX, easeStartLookY, easeStartLookZ;
let easeStartUpX, easeStartUpY, easeStartUpZ;
function getCameraPositionInfo(matrix)
{
return [matrix.m41, matrix.m42, matrix.m43, matrix.m21, matrix.m22, matrix.m23, matrix.m31, matrix.m32, matrix.m33];
}
function startCameraEase()
{
easeCamera = true;
easeStartTicks = GetTickCount(true,false);
easeDuration = 1000;
let matrix = GetPlaceableMatrix(GetCamera());
[easeStartPosX, easeStartPosY, easeStartPosZ, easeStartLookX, easeStartLookY, easeStartLookZ, easeStartUpX, easeStartUpY, easeStartUpZ] = getCameraPositionInfo(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 [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);
}
return matrix;
}
function isCameraEasing()
{
return easeCamera && GetTickCount(true,false) < (easeStartTicks+easeDuration);
}
let oldCameraTarget = null;
let OldPosition = null;//2019 Lucas was here!
let cameraRotZ;
let cameraRotY;
function getCameraTarget()
{
let playerPed = GetPlayerPed(GetCurrentPlayerIndex());
let vehicle = GetPedVehicle(playerPed);
if (vehicle != null)
return vehicle;
if (playerPed != null)
{
//if (playerPed.health <= 1)//Breaks because of fade//2019 Lucas was here!
// return null;
return playerPed;
}
return null;
}
function isRelativeToTarget(target)
{
if (GetEntityType(target) == ENTITYTYPE_PED)
return false;
return false
}
function isClipped(target)
{
if (GetEntityType(target) == ENTITYTYPE_PED)
return true;
return true;
}
//2019 Lucas was here!
function ShouldReturnToRestRotation(Target)
{
if (GetEntityType(Target) == ENTITYTYPE_PED)
return false;
return true;
}
function getCameraRestRotation(target)
{
let targetMatrix = GetPlaceableMatrix(target);
let rotZ;
if (isRelativeToTarget(target))
rotZ = 0;
else
rotZ = -Math.atan2(targetMatrix.m21,targetMatrix.m22);
let rotY = -0.2;
return [rotZ, rotY];
}
function resetCameraRotation()
{
[cameraRotZ, cameraRotY] = getCameraRestRotation(getCameraTarget());
}
//2019 Lucas was here!
let DeltaTime = 0;
addEventHandler("OnProcess", (event, deltaTime) =>
{
DeltaTime = deltaTime;
if(!localPlayer) {
return false;
}
});
let IdleTime = 0;//2019 Lucas was here!
function processReturnToRestRotation()
{
//resetCameraRotation();//2019 Lucas was here!
//2019 Lucas was here!
let Target = getCameraTarget();
if (!ShouldReturnToRestRotation(Target))
return;
IdleTime += DeltaTime;
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 AbsSpeed = Math.abs(Speed);
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;
}
}
}
function cancelReturnToRestRotation()
{
IdleTime = 0;//2019 Lucas was here!
}
let distance;
let zIncrease;
function getCameraOffsetInfo(target)
{
if (GetEntityType(target) == ENTITYTYPE_PED)
{
let distance = 4;
let zIncrease = 0.8;
let offsetX = 0;
let offsetY = 0;
let offsetZ = 0;
return [distance, zIncrease, offsetX, offsetY, offsetZ];
}
let model = GetEntityModel(target);
let [radius] = GetModelBoundingSphere(model);
let minDistance;
let maxDistance;
let minZIncrease;
let maxZIncrease;
let minRadius;
let maxRadius;
let offsetX;
let offsetY;
let offsetZ;
if (radius <= 3.0535011291504)
{
minDistance = 4;
maxDistance = 8;
minZIncrease = 0.5;
maxZIncrease = 1;
minRadius = 2;
maxRadius = 3.0535011291504;
}
else
{
minDistance = 8;
maxDistance = 16;
minZIncrease = 1;
maxZIncrease = 2;
minRadius = 3.05350112915042;
maxRadius = 6.3955960273743;
}
offsetX = 0;
offsetY = 0;
offsetZ = 0;
distance = minDistance+(radius-minRadius)/(maxRadius-minRadius)*(maxDistance-minDistance);
zIncrease = minZIncrease+(radius-minRadius)/(maxRadius-minRadius)*(maxZIncrease-minZIncrease);
return [distance, zIncrease, offsetX, offsetY, offsetZ];
}
function update()
{
let target = getCameraTarget();
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)
startCameraEase()
resetCameraRotation()
}
let [mouseSpeedX, mouseSpeedY] = GetMouseSpeed();
let [mouseSensitivityX, mouseSensitivityY] = GetMouseSensitivity();
mouseSpeedX = mouseSpeedX*mouseSensitivityX*2;
mouseSpeedY = mouseSpeedY*mouseSensitivityY*2;
if (mouseSpeedX == 0 && mouseSpeedY == 0)
{
processReturnToRestRotation();
}
else
{
cameraRotZ = cameraRotZ-mouseSpeedX;
cameraRotY = cameraRotY-mouseSpeedY;
cancelReturnToRestRotation();
}
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!
else
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);
let targetPosX, targetPosY, targetPosZ;
if (isRelativeToTarget(target))
[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;
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);
}
if (isClipped(target))
{
let startX = targetTranslationMatrix.m41;
let startY = targetTranslationMatrix.m42;
let startZ = targetTranslationMatrix.m43;
let endX = cameraMatrix.m41;
let endY = cameraMatrix.m42;
let endZ = cameraMatrix.m43;
let checkBuildings = true;
let checkVehicles = true;
let checkPeds = true;
let checkObjects = true;
let checkDummies = false;
let checkSeeThroughStuff = false;
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);
if (collisionsEnabled)
SetEntityCollisionsEnabled(target,true);
if (positionX != null)
{
//2019 Lucas was here!
let Distance = 0.3;
positionX += normalX*Distance;
positionY += normalY*Distance;
positionZ += normalZ*Distance;
cameraMatrix.m41 = positionX;
cameraMatrix.m42 = positionY;
cameraMatrix.m43 = positionZ;
}
}
if (isCameraEasing())
cameraMatrix = applyCameraEase(cameraMatrix);
SetPlaceableMatrix(camera,cameraMatrix);
UpdateCamera(camera);
}
oldCameraTarget = target;
OldPosition = (target != null) ? target.position : null;//2019 Lucas was here!
return target != null;
}
addEventHandler("OnCameraProcess", (event) =>
{
if(mouseCameraEnabled) {
update();
event.preventDefault();
}
});
function toggleMouseCamera() {
mouseCameraEnabled = !mouseCameraEnabled;
}

View File

@@ -1,243 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: nametags.js
// DESC: Provides nametag rendering
// TYPE: Client (JavaScript)
// ===========================================================================
// Configuration
let nametagFont = null;
let afkStatusFont = null;
let pingFont = null;
let nametagDistance = 50.0;
let nametagWidth = 70;
let playerNames = {};
let playerColours = {};
let playerPaused = {};
let playerPing = {};
// ===========================================================================
function initNameTagScript() {
logToConsole(LOG_DEBUG, "[VRR.NameTag]: Initializing nametag script ...");
nametagFont = loadNameTagFont();
afkStatusFont = loadPausedStatusFont();
logToConsole(LOG_DEBUG, "[VRR.NameTag]: Nametag script initialized!");
}
// ===========================================================================
function loadNameTagFont() {
return lucasFont.createDefaultFont(12.0, "Roboto", "Light");
}
// ===========================================================================
function loadPausedStatusFont() {
return lucasFont.createDefaultFont(18.0, "Roboto", "Light");
}
// ===========================================================================
function updatePlayerNameTag(clientName, characterName, colour, paused, ping) {
playerNames[clientName] = characterName;
playerColours[clientName] = colour;
playerPaused[clientName] = paused;
playerPing[clientName] = ping;
if(getGame() == VRR_GAME_GTA_IV) {
let client = getPlayerFromParams(clientName);
if(client != false) {
if(getPlayerPed(client) != null) {
getPlayerPed(client).setNametag(characterName, colour);
}
}
}
}
// ===========================================================================
function updatePlayerPing(clientName, ping) {
playerPing[clientName] = ping;
}
// ===========================================================================
function drawNametag(x, y, health, armour, text, ping, alpha, distance, colour, afk, skin) {
if(nametagFont == null) {
return false;
}
alpha *= 0.75;
let width = nametagWidth;
health = Math.max(0.0, Math.min(1.0, health));
armour = Math.max(0.0, Math.min(1.0, armour));
// Starts at bottom and works it's way up
// -------------------------------------------
// Health Bar
if(getMultiplayerMod() == VRR_MPMOD_GTAC) {
if(getGame() == VRR_GAME_GTA_III) {
// Mickey Hamfists is ridiculously tall. Raise the nametag for him a bit
if(skin == 109) {
y -= 20;
} else {
y -= 5;
}
} else {
y -= 5;
}
} else {
y -= 5;
}
if(health > 0.0) {
let hx = x-width/2;
let hy = y-10/2;
let colourB = toColour(0, 0, 0, Math.floor(255.0*alpha)); // Background colour (black)
graphics.drawRectangle(null, [hx, hy], [width, 8], colourB, colourB, colourB, colourB);
let colour = toColour(Math.floor(255.0-(health*255.0)), Math.floor(health*255.0), 0, Math.floor(255.0*alpha)); // Health bar colour (varies, depending on health)
graphics.drawRectangle(null, [hx+2, hy+2], [(width-4)*health, 10-6], colour, colour, colour, colour);
}
// Armour Bar
if (armour > 0.0)
{
// Go up 10 pixels to draw the next part
y -= 10;
let hx = x-width/2;
let hy = y-10/2;
let colourB = toColour(255, 0, 0, 0); // Background colour (black)
graphics.drawRectangle(null, [hx, hy], [width, 8], colourB, colourB, colourB, colourB);
let colour = toColour(255, 255, 255, 255); // Armour bar colour (white)
graphics.drawRectangle(null, [hx+2, hy+2], [(width-4)*armour, 10-6], colour, colour, colour, colour);
}
y -= 20;
// Nametag
if(nametagFont != null) {
let size = nametagFont.measure(text, game.width, 0.0, 0.0, nametagFont.size, false, false);
nametagFont.render(text, [x-size[0]/2, y-size[1]/2], game.width, 0.0, 0.0, nametagFont.size, colour, false, false, false, true);
}
// Go up another 10 pixels for the next part
y -= 20;
// AFK Status
if(afkStatusFont != null) {
if(afk) {
let size = afkStatusFont.measure("PAUSED", game.width, 0.0, 0.0, afkStatusFont.size, false, false);
afkStatusFont.render("PAUSED", [x-size[0]/2, y-size[1]/2], game.width, 0.0, 0.0, afkStatusFont.size, toColour(255, 0, 0, 255), false, false, false, true);
}
}
}
// ===========================================================================
function updateNametag(element) {
if(!areWorldLabelsSupported()) {
return false;
}
if(localPlayer != null) {
let playerPos = localPlayer.position;
let elementPos = element.position;
elementPos[2] += 0.9;
//if(typeof element.getComponentPosition()) {
let screenPos = getScreenFromWorldPosition(elementPos);
if (screenPos[2] >= 0.0) {
let health = element.health/100.0;
if(health > 1.0) {
health = 1.0;
}
let armour = element.armour/100.0;
if(armour > 1.0) {
armour = 1.0;
}
let distance = playerPos.distance(elementPos);
if(distance <= nametagDistance) {
if(typeof game.processLineOfSight != "undefined") {
let losCheck = game.processLineOfSight(playerPos, elementPos, true, false, false, true, true, false, true, true);
if(losCheck != null) {
return false;
}
}
if(element.type == ELEMENT_PLAYER) {
let name = element.name;
let colour = COLOUR_WHITE;
let paused = false;
let ping = -1;
if(element.isType(ELEMENT_PLAYER)) {
if(typeof playerNames[element.name] != "undefined") {
name = playerNames[element.name];
}
if(typeof playerPaused[element.name] != "undefined") {
paused = playerPaused[element.name];
}
if(typeof playerColours[element.name] != "undefined") {
colour = playerColours[element.name];
}
if(typeof playerPing[element.name] != "undefined") {
ping = playerPing[element.name];
}
}
drawNametag(screenPos[0], screenPos[1], health, armour, name, ping, 1.0-distance/nametagDistance, distance, colour, paused, element.skin);
}
}
}
}
}
// ===========================================================================
function getClientFromPlayer(player) {
getClients().forEach(function(client) {
if(getPlayerPed(client) == player) {
return client;
}
});
}
// ===========================================================================
function processNameTagRendering(event) {
//if(getGame() >= GAME_GTA_IV) {
// return false;
//}
getElementsByType(ELEMENT_PED).forEach(function(ped) {
if(ped != localPlayer) {
updateNametag(ped);
}
});
}
// ===========================================================================
function createColour(alpha, red, green, blue) {
return alpha << 24 | red << 16 | green << 8 | blue;
}
// ===========================================================================
function setNameTagDistance(distance) {
nametagDistance = distance;
}
// ===========================================================================

View File

@@ -37,7 +37,7 @@ function getPlayerPosition() {
// =========================================================================== // ===========================================================================
function setPlayerPosition(position) { function setPlayerPosition(position) {
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
natives.setCharCoordinates(localPlayer, position); natives.setCharCoordinates(localPlayer, position);
} else { } else {
localPlayer.position = position; localPlayer.position = position;
@@ -59,11 +59,11 @@ function getElementHeading(elementId) {
// =========================================================================== // ===========================================================================
function setElementPosition(elementId, position) { function setElementPosition(elementId, position) {
if(getElementFromId(elementId) == null) { if (getElementFromId(elementId) == null) {
return false; return false;
} }
if(!getElementFromId(elementId).isSyncer) { if (!getElementFromId(elementId).isSyncer) {
return false; return false;
} }
@@ -73,7 +73,7 @@ function setElementPosition(elementId, position) {
// =========================================================================== // ===========================================================================
function deleteGameElement(elementId, position) { function deleteGameElement(elementId, position) {
if(!getElementFromId(elementId).isOwner) { if (!getElementFromId(elementId).isOwner) {
return false; return false;
} }
@@ -110,8 +110,8 @@ function getElementId(element) {
function getClientFromIndex(index) { function getClientFromIndex(index) {
let clients = getClients(); let clients = getClients();
for(let i in clients) { for (let i in clients) {
if(clients[i].index == index) { if (clients[i].index == index) {
return clients[i]; return clients[i];
} }
} }
@@ -170,8 +170,8 @@ function is2dPositionOnScreen(pos2d) {
function getVehiclesInRange(position, range) { function getVehiclesInRange(position, range) {
let vehicles = getElementsByType(ELEMENT_VEHICLE); let vehicles = getElementsByType(ELEMENT_VEHICLE);
let inRangeVehicles = []; let inRangeVehicles = [];
for(let i in vehicles) { for (let i in vehicles) {
if(getDistance(position, vehicles[i].position) <= range) { if (getDistance(position, vehicles[i].position) <= range) {
inRangeVehicles.push(vehicles[i]); inRangeVehicles.push(vehicles[i]);
} }
} }
@@ -181,13 +181,13 @@ function getVehiclesInRange(position, range) {
// =========================================================================== // ===========================================================================
function createGameBlip(blipModel, position, name = "") { function createGameBlip(blipModel, position, name = "") {
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
let blipId = natives.addBlipForCoord(position); let blipId = natives.addBlipForCoord(position);
if(blipId) { if (blipId) {
natives.changeBlipSprite(blipId, blipModel); natives.changeBlipSprite(blipId, blipModel);
natives.setBlipMarkerLongDistance(blipId, false); natives.setBlipMarkerLongDistance(blipId, false);
natives.setBlipAsShortRange(blipId, true); natives.setBlipAsShortRange(blipId, true);
natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`); natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ..." : ""}`);
return blipId; return blipId;
} }
} }
@@ -198,7 +198,7 @@ function createGameBlip(blipModel, position, name = "") {
// =========================================================================== // ===========================================================================
function setEntityData(entity, dataName, dataValue, syncToClients = true) { function setEntityData(entity, dataName, dataValue, syncToClients = true) {
if(entity != null) { if (entity != null) {
return entity.setData(dataName, dataValue); return entity.setData(dataName, dataValue);
} }
} }
@@ -224,64 +224,64 @@ function repairVehicle(syncId) {
// =========================================================================== // ===========================================================================
function syncVehicleProperties(vehicle) { function syncVehicleProperties(vehicle) {
if(doesEntityDataExist(vehicle, "vrr.lights")) { if (doesEntityDataExist(vehicle, "agrp.lights")) {
let lightStatus = getEntityData(vehicle, "vrr.lights"); let lightStatus = getEntityData(vehicle, "agrp.lights");
vehicle.lights = lightStatus; vehicle.lights = lightStatus;
} }
if(doesEntityDataExist(vehicle, "vrr.invincible")) { if (doesEntityDataExist(vehicle, "agrp.invincible")) {
let invincible = getEntityData(vehicle, "vrr.invincible"); let invincible = getEntityData(vehicle, "agrp.invincible");
element.setProofs(invincible, invincible, invincible, invincible, invincible); element.setProofs(invincible, invincible, invincible, invincible, invincible);
} }
if(doesEntityDataExist(vehicle, "vrr.panelStatus")) { if (doesEntityDataExist(vehicle, "agrp.panelStatus")) {
let panelsStatus = getEntityData(vehicle, "vrr.panelStatus"); let panelsStatus = getEntityData(vehicle, "agrp.panelStatus");
for(let i in panelsStatus) { for (let i in panelsStatus) {
vehicle.setPanelStatus(i, panelsStatus[i]); vehicle.setPanelStatus(i, panelsStatus[i]);
} }
} }
if(doesEntityDataExist(vehicle, "vrr.wheelStatus")) { if (doesEntityDataExist(vehicle, "agrp.wheelStatus")) {
let wheelsStatus = getEntityData(vehicle, "vrr.wheelStatus"); let wheelsStatus = getEntityData(vehicle, "agrp.wheelStatus");
for(let i in wheelsStatus) { for (let i in wheelsStatus) {
vehicle.setWheelStatus(i, wheelsStatus[i]); vehicle.setWheelStatus(i, wheelsStatus[i]);
} }
} }
if(doesEntityDataExist(vehicle, "vrr.lightStatus")) { if (doesEntityDataExist(vehicle, "agrp.lightStatus")) {
let lightStatus = getEntityData(vehicle, "vrr.lightStatus"); let lightStatus = getEntityData(vehicle, "agrp.lightStatus");
for(let i in lightStatus) { for (let i in lightStatus) {
vehicle.setLightStatus(i, lightStatus[i]); vehicle.setLightStatus(i, lightStatus[i]);
} }
} }
if(doesEntityDataExist(vehicle, "vrr.suspensionHeight")) { if (doesEntityDataExist(vehicle, "agrp.suspensionHeight")) {
let suspensionHeight = getEntityData(vehicle, "vrr.suspensionHeight"); let suspensionHeight = getEntityData(vehicle, "agrp.suspensionHeight");
vehicle.setSuspensionHeight(suspensionHeight); vehicle.setSuspensionHeight(suspensionHeight);
} }
if(getGame() == VRR_GAME_GTA_SA) { if (getGame() == VRR_GAME_GTA_SA) {
let allUpgrades = getGameConfig().vehicleUpgrades[getGame()]; let allUpgrades = getGameConfig().vehicleUpgrades[getGame()];
for(let i in allUpgrades) { for (let i in allUpgrades) {
vehicle.removeUpgrade(i); vehicle.removeUpgrade(i);
} }
if(doesEntityDataExist(vehicle, "vrr.upgrades")) { if (doesEntityDataExist(vehicle, "agrp.upgrades")) {
let upgrades = getEntityData(vehicle, "vrr.upgrades"); let upgrades = getEntityData(vehicle, "agrp.upgrades");
for(let i in upgrades) { for (let i in upgrades) {
if(upgrades[i] != 0) { if (upgrades[i] != 0) {
vehicle.addUpgrade(upgrades[i]); vehicle.addUpgrade(upgrades[i]);
} }
} }
} }
} }
if(getGame() == VRR_GAME_GTA_SA || getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_SA || getGame() == VRR_GAME_GTA_IV) {
if(doesEntityDataExist(vehicle, "vrr.livery")) { if (doesEntityDataExist(vehicle, "agrp.livery")) {
let livery = getEntityData(vehicle, "vrr.livery"); let livery = getEntityData(vehicle, "agrp.livery");
if(getGame() == VRR_GAME_GTA_SA) { if (getGame() == VRR_GAME_GTA_SA) {
vehicle.setPaintJob(livery); vehicle.setPaintJob(livery);
} else if(getGame() == VRR_GAME_GTA_IV) { } else if (getGame() == VRR_GAME_GTA_IV) {
vehicle.livery = livery; vehicle.livery = livery;
} }
} }
@@ -291,7 +291,7 @@ function syncVehicleProperties(vehicle) {
// =========================================================================== // ===========================================================================
function removeEntityData(entity, dataName) { function removeEntityData(entity, dataName) {
if(entity != null) { if (entity != null) {
return entity.removeData(dataName); return entity.removeData(dataName);
} }
return null; return null;
@@ -300,7 +300,7 @@ function removeEntityData(entity, dataName) {
// =========================================================================== // ===========================================================================
function doesEntityDataExist(entity, dataName) { function doesEntityDataExist(entity, dataName) {
if(entity != null) { if (entity != null) {
return (entity.getData(dataName) != null); return (entity.getData(dataName) != null);
} }
return null; return null;
@@ -309,9 +309,9 @@ function doesEntityDataExist(entity, dataName) {
// =========================================================================== // ===========================================================================
function syncCivilianProperties(civilian) { function syncCivilianProperties(civilian) {
if(getGame() == VRR_GAME_GTA_III) { if (getGame() == VRR_GAME_GTA_III) {
if(doesEntityDataExist(civilian, "vrr.scale")) { if (doesEntityDataExist(civilian, "agrp.scale")) {
let scaleFactor = getEntityData(civilian, "vrr.scale"); let scaleFactor = getEntityData(civilian, "agrp.scale");
let tempMatrix = civilian.matrix; let tempMatrix = civilian.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z)); tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = civilian.position; let tempPosition = civilian.position;
@@ -321,79 +321,79 @@ function syncCivilianProperties(civilian) {
} }
} }
if(getGame() == VRR_GAME_GTA_SA) { if (getGame() == VRR_GAME_GTA_SA) {
if(doesEntityDataExist(civilian, "vrr.fightStyle")) { if (doesEntityDataExist(civilian, "agrp.fightStyle")) {
let fightStyle = getEntityData(civilian, "vrr.fightStyle"); let fightStyle = getEntityData(civilian, "agrp.fightStyle");
civilian.setFightStyle(fightStyle[0], fightStyle[1]); civilian.setFightStyle(fightStyle[0], fightStyle[1]);
} }
} }
if(getGame() == VRR_GAME_GTA_III) { if (getGame() == VRR_GAME_GTA_III) {
if(doesEntityDataExist(civilian, "vrr.walkStyle")) { if (doesEntityDataExist(civilian, "agrp.walkStyle")) {
let walkStyle = getEntityData(civilian, "vrr.walkStyle"); let walkStyle = getEntityData(civilian, "agrp.walkStyle");
civilian.walkStyle = walkStyle; civilian.walkStyle = walkStyle;
} }
} }
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
if(doesEntityDataExist(civilian, "vrr.bodyPropHair")) { if (doesEntityDataExist(civilian, "agrp.bodyPropHair")) {
let bodyPropHair = getEntityData(civilian, "vrr.bodyPropHair"); let bodyPropHair = getEntityData(civilian, "agrp.bodyPropHair");
civilian.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]); civilian.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropHead")) { if (doesEntityDataExist(civilian, "agrp.bodyPropHead")) {
let bodyPropHead = getEntityData(civilian, "vrr.bodyPropHead"); let bodyPropHead = getEntityData(civilian, "agrp.bodyPropHead");
civilian.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]); civilian.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropEyes")) { if (doesEntityDataExist(civilian, "agrp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(civilian, "vrr.bodyPropEyes"); let bodyPropEyes = getEntityData(civilian, "agrp.bodyPropEyes");
civilian.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]); civilian.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropLeftHand")) { if (doesEntityDataExist(civilian, "agrp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(civilian, "vrr.bodyPropLeftHand"); let bodyPropLeftHand = getEntityData(civilian, "agrp.bodyPropLeftHand");
civilian.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]); civilian.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropRightHand")) { if (doesEntityDataExist(civilian, "agrp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(civilian, "vrr.bodyPropRightHand"); let bodyPropRightHand = getEntityData(civilian, "agrp.bodyPropRightHand");
civilian.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]); civilian.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropLeftWrist")) { if (doesEntityDataExist(civilian, "agrp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(civilian, "vrr.bodyPropLeftWrist"); let bodyPropLeftWrist = getEntityData(civilian, "agrp.bodyPropLeftWrist");
civilian.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]); civilian.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropRightWrist")) { if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "vrr.bodyPropRightWrist"); let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropRightWrist")) { if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "vrr.bodyPropRightWrist"); let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropHip")) { if (doesEntityDataExist(civilian, "agrp.bodyPropHip")) {
let bodyPropHip = getEntityData(civilian, "vrr.bodyPropHip"); let bodyPropHip = getEntityData(civilian, "agrp.bodyPropHip");
civilian.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]); civilian.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropLeftFoot")) { if (doesEntityDataExist(civilian, "agrp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(civilian, "vrr.bodyPropLeftFoot"); let bodyPropLeftFoot = getEntityData(civilian, "agrp.bodyPropLeftFoot");
civilian.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]); civilian.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropRightFoot")) { if (doesEntityDataExist(civilian, "agrp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(civilian, "vrr.bodyPropRightFoot"); let bodyPropRightFoot = getEntityData(civilian, "agrp.bodyPropRightFoot");
civilian.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]); civilian.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
} }
} }
if(doesEntityDataExist(civilian, "vrr.anim")) { if (doesEntityDataExist(civilian, "agrp.anim")) {
let animData = getEntityData(vehicle, "vrr.anim"); let animData = getEntityData(vehicle, "agrp.anim");
civilian.addAnimation(animData[0], animData[1]); civilian.addAnimation(animData[0], animData[1]);
} }
} }
@@ -407,9 +407,9 @@ function preventDefaultEventAction(event) {
// =========================================================================== // ===========================================================================
function syncPlayerProperties(player) { function syncPlayerProperties(player) {
if(getGame() == VRR_GAME_GTA_III) { if (getGame() == VRR_GAME_GTA_III) {
if(doesEntityDataExist(player, "vrr.scale")) { if (doesEntityDataExist(player, "agrp.scale")) {
let scaleFactor = getEntityData(player, "vrr.scale"); let scaleFactor = getEntityData(player, "agrp.scale");
let tempMatrix = player.matrix; let tempMatrix = player.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z)); tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = player.position; let tempPosition = player.position;
@@ -419,95 +419,95 @@ function syncPlayerProperties(player) {
} }
} }
if(getGame() == VRR_GAME_GTA_SA) { if (getGame() == VRR_GAME_GTA_SA) {
if(doesEntityDataExist(player, "vrr.fightStyle")) { if (doesEntityDataExist(player, "agrp.fightStyle")) {
let fightStyle = getEntityData(player, "vrr.fightStyle"); let fightStyle = getEntityData(player, "agrp.fightStyle");
player.setFightStyle(fightStyle[0], fightStyle[1]); player.setFightStyle(fightStyle[0], fightStyle[1]);
} }
} }
//if(getGame() == VRR_GAME_GTA_SA) { //if(getGame() == VRR_GAME_GTA_SA) {
// if(doesEntityDataExist(player, "vrr.walkStyle")) { // if(doesEntityDataExist(player, "agrp.walkStyle")) {
// let walkStyle = getEntityData(player, "vrr.walkStyle"); // let walkStyle = getEntityData(player, "agrp.walkStyle");
// player.walkStyle = walkStyle; // player.walkStyle = walkStyle;
// } // }
//} //}
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
if(doesEntityDataExist(player, "vrr.bodyPartHair")) { if (doesEntityDataExist(player, "agrp.bodyPartHair")) {
let bodyPartHead = getEntityData(player, "vrr.bodyPartHair"); let bodyPartHead = getEntityData(player, "agrp.bodyPartHair");
player.changeBodyPart(0, bodyPartHead[0], bodyPartHair[1]); player.changeBodyPart(0, bodyPartHead[0], bodyPartHair[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPartHead")) { if (doesEntityDataExist(player, "agrp.bodyPartHead")) {
let bodyPartHead = getEntityData(player, "vrr.bodyPartHead"); let bodyPartHead = getEntityData(player, "agrp.bodyPartHead");
player.changeBodyPart(1, bodyPartHead[0], bodyPartHead[1]); player.changeBodyPart(1, bodyPartHead[0], bodyPartHead[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPartUpper")) { if (doesEntityDataExist(player, "agrp.bodyPartUpper")) {
let bodyPartUpper = getEntityData(player, "vrr.bodyPartUpper"); let bodyPartUpper = getEntityData(player, "agrp.bodyPartUpper");
player.changeBodyPart(1, bodyPartUpper[0], bodyPartUpper[1]); player.changeBodyPart(1, bodyPartUpper[0], bodyPartUpper[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPartLower")) { if (doesEntityDataExist(player, "agrp.bodyPartLower")) {
let bodyPartLower = getEntityData(player, "vrr.bodyPartLower"); let bodyPartLower = getEntityData(player, "agrp.bodyPartLower");
player.changeBodyPart(1, bodyPartLower[0], bodyPartLower[1]); player.changeBodyPart(1, bodyPartLower[0], bodyPartLower[1]);
} }
} }
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
if(doesEntityDataExist(player, "vrr.bodyPropHair")) { if (doesEntityDataExist(player, "agrp.bodyPropHair")) {
let bodyPropHair = getEntityData(player, "vrr.bodyPropHair"); let bodyPropHair = getEntityData(player, "agrp.bodyPropHair");
player.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]); player.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropHead")) { if (doesEntityDataExist(player, "agrp.bodyPropHead")) {
let bodyPropHead = getEntityData(player, "vrr.bodyPropHead"); let bodyPropHead = getEntityData(player, "agrp.bodyPropHead");
player.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]); player.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropEyes")) { if (doesEntityDataExist(player, "agrp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(player, "vrr.bodyPropEyes"); let bodyPropEyes = getEntityData(player, "agrp.bodyPropEyes");
player.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]); player.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropLeftHand")) { if (doesEntityDataExist(player, "agrp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(player, "vrr.bodyPropLeftHand"); let bodyPropLeftHand = getEntityData(player, "agrp.bodyPropLeftHand");
player.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]); player.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropRightHand")) { if (doesEntityDataExist(player, "agrp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(player, "vrr.bodyPropRightHand"); let bodyPropRightHand = getEntityData(player, "agrp.bodyPropRightHand");
player.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]); player.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropLeftWrist")) { if (doesEntityDataExist(player, "agrp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(player, "vrr.bodyPropLeftWrist"); let bodyPropLeftWrist = getEntityData(player, "agrp.bodyPropLeftWrist");
player.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]); player.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropRightWrist")) { if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "vrr.bodyPropRightWrist"); let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropRightWrist")) { if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "vrr.bodyPropRightWrist"); let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropHip")) { if (doesEntityDataExist(player, "agrp.bodyPropHip")) {
let bodyPropHip = getEntityData(player, "vrr.bodyPropHip"); let bodyPropHip = getEntityData(player, "agrp.bodyPropHip");
player.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]); player.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropLeftFoot")) { if (doesEntityDataExist(player, "agrp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(player, "vrr.bodyPropLeftFoot"); let bodyPropLeftFoot = getEntityData(player, "agrp.bodyPropLeftFoot");
player.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]); player.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropRightFoot")) { if (doesEntityDataExist(player, "agrp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(player, "vrr.bodyPropRightFoot"); let bodyPropRightFoot = getEntityData(player, "agrp.bodyPropRightFoot");
player.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]); player.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
} }
} }
@@ -516,9 +516,9 @@ function syncPlayerProperties(player) {
// =========================================================================== // ===========================================================================
function syncObjectProperties(object) { function syncObjectProperties(object) {
if(getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) { if (getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) {
if(doesEntityDataExist(object, "vrr.scale")) { if (doesEntityDataExist(object, "agrp.scale")) {
let scaleFactor = getEntityData(object, "vrr.scale"); let scaleFactor = getEntityData(object, "agrp.scale");
let tempMatrix = object.matrix; let tempMatrix = object.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z)); tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = object.position; let tempPosition = object.position;
@@ -568,13 +568,13 @@ function getPlayerId(client) {
// =========================================================================== // ===========================================================================
function syncElementProperties(element) { function syncElementProperties(element) {
if(doesEntityDataExist(element, "vrr.interior")) { if (doesEntityDataExist(element, "agrp.interior")) {
if(typeof element.interior != "undefined") { if (typeof element.interior != "undefined") {
element.interior = getEntityData(element, "vrr.interior"); element.interior = getEntityData(element, "agrp.interior");
} }
} }
switch(element.type) { switch (element.type) {
case ELEMENT_VEHICLE: case ELEMENT_VEHICLE:
syncVehicleProperties(element); syncVehicleProperties(element);
break; break;
@@ -619,23 +619,23 @@ function getScreenHeight() {
// =========================================================================== // ===========================================================================
function openAllGarages() { function openAllGarages() {
switch(getGame()) { switch (getGame()) {
case VRR_GAME_GTA_III: case VRR_GAME_GTA_III:
for(let i=0;i<=26;i++) { for (let i = 0; i <= 26; i++) {
openGarage(i); openGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i); game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
} }
break; break;
case VRR_GAME_GTA_VC: case VRR_GAME_GTA_VC:
for(let i=0;i<=32;i++) { for (let i = 0; i <= 32; i++) {
openGarage(i); openGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i); game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
} }
break; break;
case VRR_GAME_GTA_SA: case VRR_GAME_GTA_SA:
for(let i=0;i<=44;i++) { for (let i = 0; i <= 44; i++) {
openGarage(i); openGarage(i);
} }
break; break;
@@ -648,23 +648,23 @@ function openAllGarages() {
// =========================================================================== // ===========================================================================
function closeAllGarages() { function closeAllGarages() {
switch(getGame()) { switch (getGame()) {
case VRR_GAME_GTA_III: case VRR_GAME_GTA_III:
for(let i=0;i<=26;i++) { for (let i = 0; i <= 26; i++) {
closeGarage(i); closeGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i); game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
} }
break; break;
case VRR_GAME_GTA_VC: case VRR_GAME_GTA_VC:
for(let i=0;i<=32;i++) { for (let i = 0; i <= 32; i++) {
closeGarage(i); closeGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i); game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
} }
break; break;
case VRR_GAME_GTA_SA: case VRR_GAME_GTA_SA:
for(let i=0;i<=44;i++) { for (let i = 0; i <= 44; i++) {
closeGarage(i); closeGarage(i);
} }
break; break;
@@ -683,7 +683,7 @@ function setPedInvincible(ped, state) {
// =========================================================================== // ===========================================================================
function setPedLookAt(ped, position) { function setPedLookAt(ped, position) {
if(getGame() == VRR_GAME_GTA_SA) { if (getGame() == VRR_GAME_GTA_SA) {
ped.lookAt(position, 10000); ped.lookAt(position, 10000);
return true; return true;
} else { } else {

385
scripts/client/netevents.js Normal file
View File

@@ -0,0 +1,385 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: netevents.js
// DESC: Provides server communication and cross-endpoint network events
// TYPE: Client (JavaScript)
// ===========================================================================
function initNetworkEventsScript() {
logToConsole(LOG_DEBUG, "[VRR.Server]: Initializing server script ...");
addAllNetworkEventHandlers();
logToConsole(LOG_DEBUG, "[VRR.Server]: Server script initialized!");
}
// ===========================================================================
function addAllNetworkEventHandlers() {
logToConsole(LOG_DEBUG, "[VRR.Server]: Adding network handlers ...");
// Chat history
addNetworkEventHandler("m", receiveChatBoxMessageFromServer); // Not prefixed with VRR to make it as small as possible
addNetworkEventHandler("agrp.chatScrollLines", setChatScrollLines);
addNetworkEventHandler("agrp.chatAutoHideDelay", setChatAutoHideDelay);
// Messaging (like textdraws and stuff)
addNetworkEventHandler("agrp.smallGameMessage", showSmallGameMessage);
// Job
addNetworkEventHandler("agrp.job", receiveJobFromServer);
addNetworkEventHandler("agrp.working", setLocalPlayerWorkingState);
addNetworkEventHandler("agrp.jobType", setLocalPlayerJobType);
addNetworkEventHandler("agrp.showJobRouteLocation", showJobRouteLocation);
addNetworkEventHandler("agrp.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);
// Vehicle
addNetworkEventHandler("agrp.vehicle", receiveVehicleFromServer);
addNetworkEventHandler("agrp.veh.lights", setVehicleLights);
addNetworkEventHandler("agrp.veh.engine", setVehicleEngine);
addNetworkEventHandler("agrp.veh.repair", repairVehicle);
// Radio
addNetworkEventHandler("agrp.radioStream", playStreamingRadio);
addNetworkEventHandler("agrp.audioFileStream", playAudioFile);
addNetworkEventHandler("agrp.stopRadioStream", stopStreamingRadio);
addNetworkEventHandler("agrp.radioVolume", setStreamingRadioVolume);
// Key Bindings
addNetworkEventHandler("agrp.delKeyBind", unBindAccountKey);
addNetworkEventHandler("agrp.addKeyBind", bindAccountKey);
addNetworkEventHandler("agrp.clearKeyBinds", clearKeyBinds);
// Weapon Damage
addNetworkEventHandler("agrp.weaponDamageEnabled", setPlayerWeaponDamageEnabled);
addNetworkEventHandler("agrp.weaponDamageEvent", setPlayerWeaponDamageEvent);
// Business
addNetworkEventHandler("agrp.business", receiveBusinessFromServer);
// House
addNetworkEventHandler("agrp.house", receiveHouseFromServer);
// GPS
addNetworkEventHandler("agrp.showGPSBlip", showGPSLocation);
// Locale
addNetworkEventHandler("agrp.locale", setLocale);
// Misc
addNetworkEventHandler("agrp.mouseCursor", toggleMouseCursor);
addNetworkEventHandler("agrp.clearPeds", clearLocalPlayerOwnedPeds);
addNetworkEventHandler("agrp.passenger", enterVehicleAsPassenger);
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.logLevel", setLogLevel);
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);
}
// ===========================================================================
function sendResourceReadySignalToServer() {
sendNetworkEventToServer("agrp.clientReady");
}
// ===========================================================================
function sendResourceStartedSignalToServer() {
sendNetworkEventToServer("agrp.clientStarted");
}
// ===========================================================================
function sendResourceStoppedSignalToServer() {
if (isConnected) {
sendNetworkEventToServer("agrp.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})`);
renderHUD = hudState;
if (getGame() == VRR_GAME_GTA_IV) {
natives.displayCash(hudState);
natives.displayAmmo(hudState);
natives.displayHud(hudState);
natives.displayRadar(hudState);
natives.displayAreaName(hudState);
} else {
if (typeof setHUDEnabled != "undefined") {
setHUDEnabled(hudState);
}
}
renderLabels = labelState;
renderSmallGameMessage = smallGameMessageState;
renderScoreBoard = scoreboardState;
renderHotBar = hotBarState;
renderItemActionDelay = itemActionDelayState;
}
// ===========================================================================
function onServerSpawnedLocalPlayer(state) {
logToConsole(LOG_DEBUG, `[VRR.Main] Setting spawned state to ${state}`);
isSpawned = state;
setUpInitialGame();
if (state) {
setTimeout(function () {
calledDeathEvent = false;
}, 1000);
getElementsByType(ELEMENT_PED).filter(ped => !ped.isType(ELEMENT_PLAYER)).forEach(ped => {
syncCivilianProperties(ped);
});
getElementsByType(ELEMENT_PLAYER).forEach(player => {
syncPlayerProperties(player);
});
getElementsByType(ELEMENT_VEHICLE).forEach(vehicle => {
syncVehicleProperties(vehicle);
});
}
}
// ===========================================================================
function tellServerPlayerUsedKeyBind(key) {
sendNetworkEventToServer("agrp.useKeyBind", key);
}
// ===========================================================================
function tellServerPlayerArrivedAtJobRouteLocation() {
sendNetworkEventToServer("agrp.arrivedAtJobRouteLocation");
}
// ===========================================================================
function tellServerItemActionDelayComplete() {
sendNetworkEventToServer("agrp.itemActionDelayComplete");
}
// ===========================================================================
function sendServerClientInfo() {
let clientVersion = "0.0.0.0";
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);
}
// ===========================================================================
function sendServerNewAFKStatus(state) {
sendNetworkEventToServer("agrp.afk", state);
}
// ===========================================================================
function anchorBoat(vehicleId) {
}
// ===========================================================================
function setEnterPropertyKey(key) {
enterPropertyKey = key;
}
// ===========================================================================
function serverRequestedClientInfo() {
sendServerClientInfo();
}
// ===========================================================================
function updateInteriorLightsState(state) {
interiorLightsEnabled = state;
}
// ===========================================================================
function forceSyncElementProperties(elementId) {
if (getElementFromId(elementId) == null) {
return false;
}
syncElementProperties(getElementFromId(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;
}
}
// ===========================================================================
function setLocalPlayerWantedLevel(wantedLevel) {
forceWantedLevel = toInteger(wantedLevel);
}
// ===========================================================================
function setLogLevel(level) {
logLevel = level;
}
// ===========================================================================
function setLocalPlayerInfiniteRun(state) {
if (localPlayer != null) {
if (getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) {
game.SET_PLAYER_NEVER_GETS_TIRED(game.GET_PLAYER_ID(), boolToInt(state));
}
}
}
// ===========================================================================
function setLocalPlayerSkin(skinId) {
logToConsole(LOG_INFO, `[VRR.Server] Setting locale player skin to ${skinId}`);
if (getGame() == VRR_GAME_GTA_IV) {
natives.changePlayerModel(natives.getPlayerId(), skinId);
} else {
localPlayer.skin = skinId;
}
}
// ===========================================================================
function makePedHoldObject(pedId, modelIndex) {
if (getGame() == VRR_GAME_GTA_IV) {
natives.givePedAmbientObject(natives.getPedFromNetworkId(pedId), getGameConfig().objects[getGame()][modelIndex][1])
}
}
// ===========================================================================
function sendLocalPlayerNetworkIdToServer() {
sendNetworkEventToServer("agrp.playerPedId", natives.getNetworkIdFromPed(localPlayer));
}
// ===========================================================================
function setCutsceneInterior(cutsceneName) {
if (getGame() == VRR_GAME_GTA_IV) {
if (cutsceneName == "") {
natives.clearCutscene();
} else {
if (natives.isInteriorScene()) {
natives.clearCutscene();
}
natives.initCutscene(cutsceneName);
}
}
}
// ===========================================================================
function makeLocalPlayerPedSpeak(speechName) {
if (getGame() == VRR_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
if (localPlayer.vehicle != null) {
natives.sayAmbientSpeech(localPlayer, speechName, true, false, 0);
} else {
natives.sayAmbientSpeech(localPlayer, speechName, true, false, 1);
}
} else if (getGame() == VRR_GAME_GTA_III || getGame() == VRR_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);
}
}
// ===========================================================================
function setLocalPlayerAsCopState(state) {
if (getGame() == VRR_GAME_GTA_IV) {
natives.setPlayerAsCop(natives.getPlayerId(), state);
natives.setPoliceIgnorePlayer(natives.getPlayerId(), state);
}
}
// ===========================================================================
function serverRequestedLocalPlayerSpawn(skinId, position) {
if (getGame() == VRR_GAME_GTA_IV) {
natives.createPlayer(skinId, position);
//if(isCustomCameraSupported()) {
// game.restoreCamera(true);
//}
}
}
// ===========================================================================
function sendLocaleSelectToServer(localeId) {
sendNetworkEventToServer("agrp.localeSelect", localeId);
}
// ===========================================================================

View File

@@ -9,7 +9,7 @@
function processNPCMovement(npc) { function processNPCMovement(npc) {
//if(npc.isSyncer == true) { //if(npc.isSyncer == true) {
if(getEntityData(npc, "vrr.lookAtClosestPlayer") == true) { if (getEntityData(npc, "agrp.lookAtClosestPlayer") == true) {
let closestPlayer = getClosestPlayer(getElementPosition(npc.id)); let closestPlayer = getClosestPlayer(getElementPosition(npc.id));
setPedLookAt(npc, getElementPosition(closestPlayer.id)); setPedLookAt(npc, getElementPosition(closestPlayer.id));
} }

View File

@@ -1,104 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: scoreboard.js
// DESC: Provides scoreboard features and rendering
// TYPE: Client (JavaScript)
// ===========================================================================
let scoreBoardTitleFont = null;
let scoreBoardListFont = null;
let pausedColour = COLOUR_RED;
let scoreboardKey = SDLK_TAB;
// ===========================================================================
function initScoreBoardScript() {
logToConsole(LOG_DEBUG, "[VRR.ScoreBoard]: Initializing scoreboard script ...");
scoreBoardTitleFont = initScoreBoardTitleFont();
scoreBoardListFont = initScoreBoardListFont();
logToConsole(LOG_DEBUG, "[VRR.ScoreBoard]: Scoreboard script initialized!");
}
// ===========================================================================
function initScoreBoardTitleFont() {
return lucasFont.createDefaultFont(22.0, "Roboto", "Regular");
}
// ===========================================================================
function initScoreBoardListFont() {
return lucasFont.createDefaultFont(12.0, "Roboto", "Light");
}
// ===========================================================================
function processScoreBoardRendering() {
if(isAnyGUIActive()) {
return false;
}
if(renderScoreBoard) {
if(isKeyDown(SDLK_TAB)) {
if(scoreBoardListFont != null && scoreBoardTitleFont != null) {
let scoreboardStart = (game.height/2)-(Math.floor(getClients().length/2)*20);
let titleSize = scoreBoardTitleFont.measure("PLAYERS", game.width, 0.0, 1.0, 10, false, false);
scoreBoardTitleFont.render("PLAYERS", [game.width/2, scoreboardStart-50], 0, 0.5, 0.0, scoreBoardTitleFont.size, COLOUR_WHITE, false, false, false, true);
titleSize = scoreBoardTitleFont.measure("____________________________", game.width, 0.0, 1.0, 10, false, false);
scoreBoardTitleFont.render("____________________________", [game.width/2, scoreboardStart-35], 0, 0.5, 0.0, scoreBoardTitleFont.size, COLOUR_WHITE, false, false, false, true);
let clients = getClients();
for(let i in clients) {
if(!clients[i].console) {
let name = clients[i].name;
let colour = COLOUR_WHITE;
let paused = false;
let ping = "-1";
if(typeof playerNames[clients[i].name] != "undefined") {
name = playerNames[clients[i].name];
}
if(typeof playerPaused[clients[i].name] != "undefined") {
paused = playerPaused[clients[i].name];
}
if(typeof playerColours[clients[i].name] != "undefined") {
colour = playerColours[clients[i].name];
}
if(typeof playerPing[clients[i].name] != "undefined") {
ping = toString(playerPing[clients[i].name]);
}
// Player ID
let text = String(clients[i].index);
let size = scoreBoardListFont.measure(text, 75, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render(text, [game.width/2-100, scoreboardStart + (i*20)], 0, 0.5, 0.0, scoreBoardListFont.size, COLOUR_WHITE, false, false, false, true);
// Player Name
text = name;
size = scoreBoardListFont.measure(text, 100, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render(text, [game.width/2, scoreboardStart + (i*20)], 0, 0.5, 0.0, scoreBoardListFont.size, colour, false, false, false, true);
// Ping
text = ping;
size = scoreBoardListFont.measure(ping, 75, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render(ping, [game.width/2+100, scoreboardStart + (i*20)], 0, 0.5, 0.0, scoreBoardListFont.size, COLOUR_WHITE, false, false, false, true);
// PAUSED Status (depends on resource "afk")
if(paused == true) {
size = scoreBoardListFont.measure("PAUSED", 100, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render("PAUSED", [game.width/2+200, scoreboardStart + (i*20)], 0, 0.5, 0.0, scoreBoardListFont.size, pausedColour, false, false, false, true);
}
}
}
}
}
}
}

View File

@@ -1,416 +0,0 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/gtac_roleplay
// ===========================================================================
// FILE: server.js
// DESC: Provides server communication and cross-endpoint operations
// TYPE: Client (JavaScript)
// ===========================================================================
function initServerScript() {
logToConsole(LOG_DEBUG, "[VRR.Server]: Initializing server script ...");
addAllNetworkHandlers();
logToConsole(LOG_DEBUG, "[VRR.Server]: Server script initialized!");
}
// ===========================================================================
function addAllNetworkHandlers() {
logToConsole(LOG_DEBUG, "[VRR.Server]: Adding network handlers ...");
// Chat history
addNetworkEventHandler("m", receiveChatBoxMessageFromServer); // Not prefixed with VRR to make it as small as possible
addNetworkEventHandler("vrr.chatScrollLines", setChatScrollLines);
addNetworkEventHandler("vrr.chatAutoHideDelay", setChatAutoHideDelay);
// Messaging (like textdraws and stuff)
addNetworkEventHandler("vrr.smallGameMessage", showSmallGameMessage);
// Job
addNetworkEventHandler("vrr.job", receiveJobFromServer);
addNetworkEventHandler("vrr.working", setLocalPlayerWorkingState);
addNetworkEventHandler("vrr.jobType", setLocalPlayerJobType);
addNetworkEventHandler("vrr.showJobRouteLocation", showJobRouteLocation);
addNetworkEventHandler("vrr.hideJobRouteLocation", hideJobRouteLocation);
// Local player states and values
addNetworkEventHandler("vrr.restoreCamera", restoreLocalCamera);
addNetworkEventHandler("vrr.cameraLookAt", setLocalCameraLookAt);
addNetworkEventHandler("vrr.freeze", setLocalPlayerFrozenState);
addNetworkEventHandler("vrr.control", setLocalPlayerControlState);
addNetworkEventHandler("vrr.fadeCamera", fadeLocalCamera);
addNetworkEventHandler("vrr.removeFromVehicle", removeLocalPlayerFromVehicle);
addNetworkEventHandler("vrr.clearWeapons", clearLocalPlayerWeapons);
addNetworkEventHandler("vrr.giveWeapon", giveLocalPlayerWeapon);
addNetworkEventHandler("vrr.position", setLocalPlayerPosition);
addNetworkEventHandler("vrr.heading", setLocalPlayerHeading);
addNetworkEventHandler("vrr.interior", setLocalPlayerInterior);
addNetworkEventHandler("vrr.spawned", onServerSpawnedLocalPlayer);
addNetworkEventHandler("vrr.money", setLocalPlayerCash);
addNetworkEventHandler("vrr.armour", setLocalPlayerArmour);
addNetworkEventHandler("vrr.localPlayerSkin", setLocalPlayerSkin);
addNetworkEventHandler("vrr.pedSpeak", makeLocalPlayerPedSpeak);
addNetworkEventHandler("vrr.infiniteRun", setLocalPlayerInfiniteRun);
addNetworkEventHandler("vrr.playerCop", setLocalPlayerAsCopState);
addNetworkEventHandler("vrr.health", setLocalPlayerHealth);
addNetworkEventHandler("vrr.wantedLevel", setLocalPlayerWantedLevel);
addNetworkEventHandler("vrr.playerPedId", sendLocalPlayerNetworkIdToServer);
addNetworkEventHandler("vrr.ped", setLocalPlayerPedPartsAndProps);
addNetworkEventHandler("vrr.spawn", serverRequestedLocalPlayerSpawn);
addNetworkEventHandler("vrr.clearPedState", clearLocalPedState);
addNetworkEventHandler("vrr.drunkEffect", setLocalPlayerDrunkEffect);
// Vehicle
addNetworkEventHandler("vrr.vehicle", receiveVehicleFromServer);
addNetworkEventHandler("vrr.veh.lights", setVehicleLights);
addNetworkEventHandler("vrr.veh.engine", setVehicleEngine);
addNetworkEventHandler("vrr.veh.repair", repairVehicle);
// Radio
addNetworkEventHandler("vrr.radioStream", playStreamingRadio);
addNetworkEventHandler("vrr.audioFileStream", playAudioFile);
addNetworkEventHandler("vrr.stopRadioStream", stopStreamingRadio);
addNetworkEventHandler("vrr.radioVolume", setStreamingRadioVolume);
// Key Bindings
addNetworkEventHandler("vrr.delKeyBind", unBindAccountKey);
addNetworkEventHandler("vrr.addKeyBind", bindAccountKey);
addNetworkEventHandler("vrr.clearKeyBinds", clearKeyBinds);
// Weapon Damage
addNetworkEventHandler("vrr.weaponDamageEnabled", setPlayerWeaponDamageEnabled);
addNetworkEventHandler("vrr.weaponDamageEvent", setPlayerWeaponDamageEvent);
// GUI
addNetworkEventHandler("vrr.showRegistration", showRegistrationGUI);
addNetworkEventHandler("vrr.showNewCharacter", showNewCharacterGUI);
addNetworkEventHandler("vrr.showLogin", showLoginGUI);
addNetworkEventHandler("vrr.2fa", showTwoFactorAuthGUI);
addNetworkEventHandler("vrr.showResetPasswordCodeInput", resetPasswordCodeInputGUI);
addNetworkEventHandler("vrr.showResetPasswordEmailInput", resetPasswordEmailInputGUI);
addNetworkEventHandler("vrr.showChangePassword", showChangePasswordGUI);
addNetworkEventHandler("vrr.showCharacterSelect", showCharacterSelectGUI);
addNetworkEventHandler("vrr.switchCharacterSelect", switchCharacterSelectGUI);
addNetworkEventHandler("vrr.showError", showErrorGUI);
addNetworkEventHandler("vrr.showInfo", showInfoGUI);
addNetworkEventHandler("vrr.showPrompt", showYesNoPromptGUI);
addNetworkEventHandler("vrr.loginSuccess", loginSuccess);
addNetworkEventHandler("vrr.characterSelectSuccess", characterSelectSuccess);
addNetworkEventHandler("vrr.loginFailed", loginFailed);
addNetworkEventHandler("vrr.registrationSuccess", registrationSuccess);
addNetworkEventHandler("vrr.registrationFailed", registrationFailed);
addNetworkEventHandler("vrr.newCharacterFailed", newCharacterFailed);
addNetworkEventHandler("vrr.changePassword", showChangePasswordGUI);
addNetworkEventHandler("vrr.showLocaleChooser", showLocaleChooserGUI);
addNetworkEventHandler("vrr.guiColour", setGUIColours);
// Business
addNetworkEventHandler("vrr.business", receiveBusinessFromServer);
// House
addNetworkEventHandler("vrr.house", receiveHouseFromServer);
// GPS
addNetworkEventHandler("vrr.showGPSBlip", showGPSLocation);
// Locale
addNetworkEventHandler("vrr.locale", setLocale);
addNetworkEventHandler("vrr.localeChooser", toggleLocaleChooserGUI);
// Misc
addNetworkEventHandler("vrr.mouseCursor", toggleMouseCursor);
addNetworkEventHandler("vrr.mouseCamera", toggleMouseCamera);
addNetworkEventHandler("vrr.clearPeds", clearLocalPlayerOwnedPeds);
addNetworkEventHandler("vrr.passenger", enterVehicleAsPassenger);
addNetworkEventHandler("vrr.logo", setServerLogoRenderState);
addNetworkEventHandler("vrr.ambience", setCityAmbienceState);
addNetworkEventHandler("vrr.runCode", runClientCode);
addNetworkEventHandler("vrr.minuteDuration", setMinuteDuration);
addNetworkEventHandler("vrr.snow", setSnowState);
addNetworkEventHandler("vrr.enterPropertyKey", setEnterPropertyKey);
addNetworkEventHandler("vrr.skinSelect", toggleSkinSelect);
addNetworkEventHandler("vrr.hotbar", updatePlayerHotBar);
addNetworkEventHandler("vrr.showItemActionDelay", showItemActionDelay);
addNetworkEventHandler("vrr.set2DRendering", set2DRendering);
addNetworkEventHandler("vrr.mouseCameraForce", setMouseCameraState);
addNetworkEventHandler("vrr.logLevel", setLogLevel);
addNetworkEventHandler("vrr.hideAllGUI", hideAllGUI);
addNetworkEventHandler("vrr.nametag", updatePlayerNameTag);
addNetworkEventHandler("vrr.nametagDistance", setNameTagDistance);
addNetworkEventHandler("vrr.ping", updatePlayerPing);
addNetworkEventHandler("vrr.anim", makePedPlayAnimation);
addNetworkEventHandler("vrr.stopAnim", makePedStopAnimation);
addNetworkEventHandler("vrr.forceAnim", forcePedAnimation);
addNetworkEventHandler("vrr.clientInfo", serverRequestedClientInfo);
addNetworkEventHandler("vrr.interiorLights", updateInteriorLightsState);
addNetworkEventHandler("vrr.cutsceneInterior", setCutsceneInterior);
addNetworkEventHandler("vrr.syncElement", forceSyncElementProperties);
addNetworkEventHandler("vrr.elementPosition", setElementPosition);
addNetworkEventHandler("vrr.elementCollisions", setElementCollisionsEnabled);
addNetworkEventHandler("vrr.vehBuyState", setVehiclePurchaseState);
addNetworkEventHandler("vrr.holdObject", makePedHoldObject);
}
// ===========================================================================
function sendResourceReadySignalToServer() {
sendNetworkEventToServer("vrr.clientReady");
}
// ===========================================================================
function sendResourceStartedSignalToServer() {
sendNetworkEventToServer("vrr.clientStarted");
}
// ===========================================================================
function sendResourceStoppedSignalToServer() {
if(isConnected) {
sendNetworkEventToServer("vrr.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})`);
renderHUD = hudState;
if(getGame() == VRR_GAME_GTA_IV) {
natives.displayCash(hudState);
natives.displayAmmo(hudState);
natives.displayHud(hudState);
natives.displayRadar(hudState);
natives.displayAreaName(hudState);
} else {
if(typeof setHUDEnabled != "undefined") {
setHUDEnabled(hudState);
}
}
renderLabels = labelState;
renderSmallGameMessage = smallGameMessageState;
renderScoreBoard = scoreboardState;
renderHotBar = hotBarState;
renderItemActionDelay = itemActionDelayState;
}
// ===========================================================================
function onServerSpawnedLocalPlayer(state) {
logToConsole(LOG_DEBUG, `[VRR.Main] Setting spawned state to ${state}`);
isSpawned = state;
setUpInitialGame();
if(state) {
setTimeout(function() {
calledDeathEvent = false;
}, 1000);
getElementsByType(ELEMENT_PED).filter(ped => !ped.isType(ELEMENT_PLAYER)).forEach(ped => {
syncCivilianProperties(ped);
});
getElementsByType(ELEMENT_PLAYER).forEach(player => {
syncPlayerProperties(player);
});
getElementsByType(ELEMENT_VEHICLE).forEach(vehicle => {
syncVehicleProperties(vehicle);
});
}
}
// ===========================================================================
function tellServerPlayerUsedKeyBind(key) {
sendNetworkEventToServer("vrr.useKeyBind", key);
}
// ===========================================================================
function tellServerPlayerArrivedAtJobRouteLocation() {
sendNetworkEventToServer("vrr.arrivedAtJobRouteLocation");
}
// ===========================================================================
function tellServerItemActionDelayComplete() {
sendNetworkEventToServer("vrr.itemActionDelayComplete");
}
// ===========================================================================
function sendServerClientInfo() {
let clientVersion = "0.0.0.0";
if(typeof CLIENT_VERSION_MAJOR != "undefined") {
clientVersion = `${CLIENT_VERSION_MAJOR}.${CLIENT_VERSION_MINOR}.${CLIENT_VERSION_PATCH}.${CLIENT_VERSION_BUILD}`;
}
sendNetworkEventToServer("vrr.clientInfo", clientVersion, game.width, game.height);
}
// ===========================================================================
function sendServerNewAFKStatus(state) {
sendNetworkEventToServer("vrr.afk", state);
}
// ===========================================================================
function anchorBoat(vehicleId) {
}
// ===========================================================================
function setEnterPropertyKey(key) {
enterPropertyKey = key;
}
// ===========================================================================
function serverRequestedClientInfo() {
sendServerClientInfo();
}
// ===========================================================================
function updateInteriorLightsState(state) {
interiorLightsEnabled = state;
}
// ===========================================================================
function forceSyncElementProperties(elementId) {
if(getElementFromId(elementId) == null) {
return false;
}
syncElementProperties(getElementFromId(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;
}
}
// ===========================================================================
function setLocalPlayerWantedLevel(wantedLevel) {
forceWantedLevel = toInteger(wantedLevel);
}
// ===========================================================================
function setLogLevel(level) {
logLevel = level;
}
// ===========================================================================
function setLocalPlayerInfiniteRun(state) {
if(localPlayer != null) {
if(getGame() == VRR_GAME_GTA_III || getGame() == VRR_GAME_GTA_VC) {
game.SET_PLAYER_NEVER_GETS_TIRED(game.GET_PLAYER_ID(), boolToInt(state));
}
}
}
// ===========================================================================
function setLocalPlayerSkin(skinId) {
logToConsole(LOG_INFO, `[VRR.Server] Setting locale player skin to ${skinId}`);
if(getGame() == VRR_GAME_GTA_IV) {
natives.changePlayerModel(natives.getPlayerId(), skinId);
} else {
localPlayer.skin = skinId;
}
}
// ===========================================================================
function makePedHoldObject(pedId, modelIndex) {
if(getGame() == VRR_GAME_GTA_IV) {
natives.givePedAmbientObject(natives.getPedFromNetworkId(pedId), getGameConfig().objects[getGame()][modelIndex][1])
}
}
// ===========================================================================
function sendLocalPlayerNetworkIdToServer() {
sendNetworkEventToServer("vrr.playerPedId", natives.getNetworkIdFromPed(localPlayer));
}
// ===========================================================================
function setCutsceneInterior(cutsceneName) {
if(getGame() == VRR_GAME_GTA_IV) {
if(cutsceneName == "") {
natives.clearCutscene();
} else {
if(natives.isInteriorScene()) {
natives.clearCutscene();
}
natives.initCutscene(cutsceneName);
}
}
}
// ===========================================================================
function makeLocalPlayerPedSpeak(speechName) {
if(getGame() == VRR_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
if(localPlayer.vehicle != null) {
natives.sayAmbientSpeech(localPlayer, speechName, true, false, 0);
} else {
natives.sayAmbientSpeech(localPlayer, speechName, true, false, 1);
}
} else if(getGame() == VRR_GAME_GTA_III || getGame() == VRR_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);
}
}
// ===========================================================================
function setLocalPlayerAsCopState(state) {
if(getGame() == VRR_GAME_GTA_IV) {
natives.setPlayerAsCop(natives.getPlayerId(), state);
natives.setPoliceIgnorePlayer(natives.getPlayerId(), state);
}
}
// ===========================================================================
function serverRequestedLocalPlayerSpawn(skinId, position) {
if(getGame() == VRR_GAME_GTA_IV) {
natives.createPlayer(skinId, position);
//if(isCustomCameraSupported()) {
// game.restoreCamera(true);
//}
}
}
// ===========================================================================
function sendLocaleSelectToServer(localeId) {
sendNetworkEventToServer("vrr.localeSelect", localeId);
}
// ===========================================================================

View File

@@ -44,53 +44,53 @@ function loadSkinSelectMessageFontBottom() {
// =========================================================================== // ===========================================================================
function processSkinSelectKeyPress(keyCode) { function processSkinSelectKeyPress(keyCode) {
if(usingSkinSelector) { if (usingSkinSelector) {
if(keyCode == SDLK_PAGEUP) { if (keyCode == SDLK_PAGEUP) {
if(skinSelectorIndex >= allowedSkins.length-1) { if (skinSelectorIndex >= allowedSkins.length - 1) {
skinSelectorIndex = 1; skinSelectorIndex = 1;
} else { } else {
skinSelectorIndex = skinSelectorIndex + 1; skinSelectorIndex = skinSelectorIndex + 1;
} }
logToConsole(LOG_DEBUG, `Switching to skin ${allowedSkins[skinSelectorIndex][1]} (Index: ${skinSelectorIndex}, Skin: ${allowedSkins[skinSelectorIndex][0]})`); logToConsole(LOG_DEBUG, `Switching to skin ${allowedSkins[skinSelectorIndex][1]} (Index: ${skinSelectorIndex}, Skin: ${allowedSkins[skinSelectorIndex][0]})`);
skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1]; skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1];
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
let skinId = allowedSkins[skinSelectorIndex][0]; let skinId = allowedSkins[skinSelectorIndex][0];
if(natives.isModelInCdimage(skinId)) { if (natives.isModelInCdimage(skinId)) {
natives.requestModel(skinId); natives.requestModel(skinId);
natives.loadAllObjectsNow(); natives.loadAllObjectsNow();
if(natives.hasModelLoaded(skinId)) { if (natives.hasModelLoaded(skinId)) {
natives.changePlayerModel(natives.getPlayerId(), skinId); natives.changePlayerModel(natives.getPlayerId(), skinId);
} }
} }
} else { } else {
localPlayer.skin = allowedSkins[skinSelectorIndex][0]; localPlayer.skin = allowedSkins[skinSelectorIndex][0];
} }
} else if(keyCode == SDLK_PAGEDOWN) { } else if (keyCode == SDLK_PAGEDOWN) {
if(skinSelectorIndex <= 0) { if (skinSelectorIndex <= 0) {
skinSelectorIndex = allowedSkins.length-1; skinSelectorIndex = allowedSkins.length - 1;
} else { } else {
skinSelectorIndex = skinSelectorIndex - 1; skinSelectorIndex = skinSelectorIndex - 1;
} }
logToConsole(LOG_DEBUG, `Switching to skin ${allowedSkins[skinSelectorIndex][1]} (Index: ${skinSelectorIndex}, Skin: ${allowedSkins[skinSelectorIndex][0]})`); logToConsole(LOG_DEBUG, `Switching to skin ${allowedSkins[skinSelectorIndex][1]} (Index: ${skinSelectorIndex}, Skin: ${allowedSkins[skinSelectorIndex][0]})`);
skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1]; skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1];
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
let skinId = allowedSkins[skinSelectorIndex][0]; let skinId = allowedSkins[skinSelectorIndex][0];
if(natives.isModelInCdimage(skinId)) { if (natives.isModelInCdimage(skinId)) {
natives.requestModel(skinId); natives.requestModel(skinId);
natives.loadAllObjectsNow(); natives.loadAllObjectsNow();
if(natives.hasModelLoaded(skinId)) { if (natives.hasModelLoaded(skinId)) {
natives.changePlayerModel(natives.getPlayerId(), skinId); natives.changePlayerModel(natives.getPlayerId(), skinId);
} }
} }
} else { } else {
localPlayer.skin = allowedSkins[skinSelectorIndex][0]; localPlayer.skin = allowedSkins[skinSelectorIndex][0];
} }
} else if(keyCode == SDLK_RETURN) { } else if (keyCode == SDLK_RETURN) {
sendNetworkEventToServer("vrr.skinSelected", skinSelectorIndex); sendNetworkEventToServer("agrp.skinSelected", skinSelectorIndex);
toggleSkinSelect(false); toggleSkinSelect(false);
return true; return true;
} else if(keyCode == SDLK_BACKSPACE) { } else if (keyCode == SDLK_BACKSPACE) {
sendNetworkEventToServer("vrr.skinSelected", -1); sendNetworkEventToServer("agrp.skinSelected", -1);
toggleSkinSelect(false); toggleSkinSelect(false);
return true; return true;
} }
@@ -101,11 +101,11 @@ function processSkinSelectKeyPress(keyCode) {
// =========================================================================== // ===========================================================================
function processSkinSelectRendering() { function processSkinSelectRendering() {
if(usingSkinSelector) { if (usingSkinSelector) {
if(skinSelectMessageFontTop != null && skinSelectMessageFontBottom != null) { if (skinSelectMessageFontTop != null && skinSelectMessageFontBottom != null) {
if(skinSelectMessageTextTop != "" && skinSelectMessageTextBottom != "") { if (skinSelectMessageTextTop != "" && skinSelectMessageTextBottom != "") {
skinSelectMessageFontTop.render(skinSelectMessageTextTop, [0, game.height-100], game.width, 0.5, 0.0, skinSelectMessageFontTop.size, skinSelectMessageColourTop, true, true, false, true); skinSelectMessageFontTop.render(skinSelectMessageTextTop, [0, game.height - 100], game.width, 0.5, 0.0, skinSelectMessageFontTop.size, skinSelectMessageColourTop, true, true, false, true);
skinSelectMessageFontBottom.render(skinSelectMessageTextBottom, [0, game.height-65], game.width, 0.5, 0.0, skinSelectMessageFontBottom.size, skinSelectMessageColourBottom, true, true, false, true); skinSelectMessageFontBottom.render(skinSelectMessageTextBottom, [0, game.height - 65], game.width, 0.5, 0.0, skinSelectMessageFontBottom.size, skinSelectMessageColourBottom, true, true, false, true);
} }
} }
} }
@@ -114,9 +114,9 @@ function processSkinSelectRendering() {
// =========================================================================== // ===========================================================================
function toggleSkinSelect(state) { function toggleSkinSelect(state) {
if(state) { if (state) {
skinSelectorIndex = getAllowedSkinIndexFromSkin(localPlayer.skin); skinSelectorIndex = getAllowedSkinIndexFromSkin(localPlayer.skin);
if(!skinSelectorIndex) { if (!skinSelectorIndex) {
skinSelectorIndex = 0; skinSelectorIndex = 0;
} }
@@ -124,19 +124,19 @@ function toggleSkinSelect(state) {
skinSelectPosition = localPlayer.position; skinSelectPosition = localPlayer.position;
skinSelectHeading = localPlayer.heading; skinSelectHeading = localPlayer.heading;
if(isCustomCameraSupported()) { if (isCustomCameraSupported()) {
let tempPosition = localPlayer.position; let tempPosition = localPlayer.position;
tempPosition.z += 0.5; tempPosition.z += 0.5;
let frontCameraPosition = getPosInFrontOfPos(tempPosition, localPlayer.heading, 3); let frontCameraPosition = getPosInFrontOfPos(tempPosition, localPlayer.heading, 3);
game.setCameraLookAt(frontCameraPosition, localPlayer.position, true); game.setCameraLookAt(frontCameraPosition, localPlayer.position, true);
} }
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
let skinId = allowedSkins[skinSelectorIndex][0]; let skinId = allowedSkins[skinSelectorIndex][0];
if(natives.isModelInCdimage(skinId)) { if (natives.isModelInCdimage(skinId)) {
natives.requestModel(skinId); natives.requestModel(skinId);
natives.loadAllObjectsNow(); natives.loadAllObjectsNow();
if(natives.hasModelLoaded(skinId)) { if (natives.hasModelLoaded(skinId)) {
natives.changePlayerModel(natives.getPlayerId(), skinId); natives.changePlayerModel(natives.getPlayerId(), skinId);
} }
} }

View File

@@ -8,13 +8,8 @@
// =========================================================================== // ===========================================================================
function initClientScripts() { function initClientScripts() {
initGUIScript();
initNameTagScript();
initScoreBoardScript();
initMessagingScript(); initMessagingScript();
initServerScript(); initNetworkEventsScript();
initLogoScript();
initLabelScript();
initChatBoxScript(); initChatBoxScript();
initAFKScript(); initAFKScript();
initKeyBindScript(); initKeyBindScript();
@@ -25,8 +20,8 @@ function initClientScripts() {
// =========================================================================== // ===========================================================================
function setUpInitialGame() { function setUpInitialGame() {
if(getGame() == VRR_GAME_GTA_III) { if (getGame() == VRR_GAME_GTA_III) {
logToConsole(LOG_DEBUG|LOG_WARN, "Setting up initial game stuff for GTA III ..."); logToConsole(LOG_DEBUG | LOG_WARN, "Setting up initial game stuff for GTA III ...");
// Turn off unlimited sprint // Turn off unlimited sprint
game.SET_PLAYER_NEVER_GETS_TIRED(game.GET_PLAYER_ID(), 0); game.SET_PLAYER_NEVER_GETS_TIRED(game.GET_PLAYER_ID(), 0);
@@ -44,8 +39,8 @@ function setUpInitialGame() {
// Provided by mouse camera script (mousecam.js) // Provided by mouse camera script (mousecam.js)
SetStandardControlsEnabled(true); SetStandardControlsEnabled(true);
} else if(getGame() == VRR_GAME_GTA_VC) { } else if (getGame() == VRR_GAME_GTA_VC) {
logToConsole(LOG_DEBUG|LOG_WARN, "Setting up initial game stuff for GTA Vice City ..."); logToConsole(LOG_DEBUG | LOG_WARN, "Setting up initial game stuff for GTA Vice City ...");
// Turn off unlimited sprint // Turn off unlimited sprint
game.SET_PLAYER_NEVER_GETS_TIRED(game.GET_PLAYER_ID(), 0); game.SET_PLAYER_NEVER_GETS_TIRED(game.GET_PLAYER_ID(), 0);
@@ -87,8 +82,8 @@ function setUpInitialGame() {
// Provided by mouse camera script (mousecam.js) // Provided by mouse camera script (mousecam.js)
SetStandardControlsEnabled(true); SetStandardControlsEnabled(true);
} else if(getGame() == VRR_GAME_GTA_SA) { } else if (getGame() == VRR_GAME_GTA_SA) {
logToConsole(LOG_DEBUG|LOG_WARN, "Setting up initial game stuff for GTA San Andreas ..."); logToConsole(LOG_DEBUG | LOG_WARN, "Setting up initial game stuff for GTA San Andreas ...");
// Turn weapon skills down a bit // Turn weapon skills down a bit
game.setGameStat(STAT_WEAPONTYPE_PISTOL_SKILL, 400); game.setGameStat(STAT_WEAPONTYPE_PISTOL_SKILL, 400);
game.setGameStat(STAT_WEAPONTYPE_PISTOL_SILENCED_SKILL, 400); game.setGameStat(STAT_WEAPONTYPE_PISTOL_SILENCED_SKILL, 400);
@@ -124,7 +119,7 @@ function setUpInitialGame() {
// Disables taxi/vigilante/etc and other start mission triggers // Disables taxi/vigilante/etc and other start mission triggers
game.onMission = true; game.onMission = true;
} else if(getGame() == VRR_GAME_GTA_IV) { } else if (getGame() == VRR_GAME_GTA_IV) {
natives.allowEmergencyServices(false); natives.allowEmergencyServices(false);
natives.setCreateRandomCops(true); natives.setCreateRandomCops(true);
natives.setMaxWantedLevel(0); natives.setMaxWantedLevel(0);
@@ -186,7 +181,7 @@ function setUpInitialGame() {
// Some last steps // Some last steps
//natives.loadAllObjectsNow(); //natives.loadAllObjectsNow();
} else if(getGame() == VRR_GAME_MAFIA_ONE) { } else if (getGame() == VRR_GAME_MAFIA_ONE) {
game.mapEnabled = false; game.mapEnabled = false;
game.setTrafficEnabled(false); game.setTrafficEnabled(false);
} }

View File

@@ -8,37 +8,37 @@
// =========================================================================== // ===========================================================================
function processSync(event, deltaTime) { function processSync(event, deltaTime) {
if(localPlayer != null) { if (localPlayer != null) {
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
sendNetworkEventToServer("vrr.plr.pos", (localPlayer.vehicle != null) ? localPlayer.vehicle.position : localPlayer.position); sendNetworkEventToServer("agrp.plr.pos", (localPlayer.vehicle != null) ? localPlayer.vehicle.position : localPlayer.position);
sendNetworkEventToServer("vrr.plr.rot", (localPlayer.vehicle != null) ? localPlayer.vehicle.heading : localPlayer.heading); sendNetworkEventToServer("agrp.plr.rot", (localPlayer.vehicle != null) ? localPlayer.vehicle.heading : localPlayer.heading);
//if(localPlayer.vehicle != null) { //if(localPlayer.vehicle != null) {
// sendNetworkEventToServer("vrr.veh.pos", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.position); // sendNetworkEventToServer("agrp.veh.pos", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.position);
// sendNetworkEventToServer("vrr.veh.rot", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.heading); // sendNetworkEventToServer("agrp.veh.rot", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.heading);
//} //}
} }
if(localPlayer.health <= 0) { if (localPlayer.health <= 0) {
if(!calledDeathEvent) { if (!calledDeathEvent) {
logToConsole(LOG_DEBUG, `Local player died`); logToConsole(LOG_DEBUG, `Local player died`);
localPlayer.clearWeapons(); localPlayer.clearWeapons();
calledDeathEvent = true; calledDeathEvent = true;
sendNetworkEventToServer("vrr.playerDeath"); sendNetworkEventToServer("agrp.playerDeath");
} }
} }
} }
if(localPlayer.health <= 0) { if (localPlayer.health <= 0) {
if(!calledDeathEvent) { if (!calledDeathEvent) {
logToConsole(LOG_DEBUG, `Local player died`); logToConsole(LOG_DEBUG, `Local player died`);
localPlayer.clearWeapons(); localPlayer.clearWeapons();
calledDeathEvent = true; calledDeathEvent = true;
sendNetworkEventToServer("vrr.playerDeath"); sendNetworkEventToServer("agrp.playerDeath");
} }
} }
if(streamingRadioElement) { if (streamingRadioElement) {
streamingRadio.position = getElementPosition(streamingRadioElement.id); streamingRadio.position = getElementPosition(streamingRadioElement.id);
//streamingRadio.volume = getStreamingRadioVolumeForPosition(streamingRadio.position); //streamingRadio.volume = getStreamingRadioVolumeForPosition(streamingRadio.position);
} }
@@ -53,20 +53,20 @@ function setVehicleEngine(vehicleId, state) {
// =========================================================================== // ===========================================================================
function setVehicleLights(vehicleId, state) { function setVehicleLights(vehicleId, state) {
if(getGame() != VRR_GAME_MAFIA_ONE) { if (getGame() != VRR_GAME_MAFIA_ONE) {
if(!state) { if (!state) {
getElementFromId(vehicleId).lightStatus = 2; getElementFromId(vehicleId).lightStatus = 2;
} else { } else {
getElementFromId(vehicleId).lightStatus = 1; getElementFromId(vehicleId).lightStatus = 1;
} }
} else if(getGame() == VRR_GAME_GTA_IV) { } else if (getGame() == VRR_GAME_GTA_IV) {
if(!state) { if (!state) {
natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 0)); natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 0));
} else { } else {
natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 1)); natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 1));
} }
} else { } else {
if(!state) { if (!state) {
getElementFromId(vehicleId).lights = false; getElementFromId(vehicleId).lights = false;
} else { } else {
getElementFromId(vehicleId).lights = true; getElementFromId(vehicleId).lights = true;
@@ -83,72 +83,72 @@ function repairVehicle(syncId) {
// =========================================================================== // ===========================================================================
function syncVehicleProperties(vehicle) { function syncVehicleProperties(vehicle) {
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
return false; return false;
} }
if(doesEntityDataExist(vehicle, "vrr.lights")) { if (doesEntityDataExist(vehicle, "agrp.lights")) {
let lightStatus = getEntityData(vehicle, "vrr.lights"); let lightStatus = getEntityData(vehicle, "agrp.lights");
if(!lightStatus) { if (!lightStatus) {
vehicle.lightStatus = 2; vehicle.lightStatus = 2;
} else { } else {
vehicle.lightStatus = 1; vehicle.lightStatus = 1;
} }
} }
if(doesEntityDataExist(vehicle, "vrr.invincible")) { if (doesEntityDataExist(vehicle, "agrp.invincible")) {
let invincible = getEntityData(vehicle, "vrr.invincible"); let invincible = getEntityData(vehicle, "agrp.invincible");
element.setProofs(invincible, invincible, invincible, invincible, invincible); element.setProofs(invincible, invincible, invincible, invincible, invincible);
} }
if(doesEntityDataExist(vehicle, "vrr.panelStatus")) { if (doesEntityDataExist(vehicle, "agrp.panelStatus")) {
let panelsStatus = getEntityData(vehicle, "vrr.panelStatus"); let panelsStatus = getEntityData(vehicle, "agrp.panelStatus");
for(let i in panelsStatus) { for (let i in panelsStatus) {
vehicle.setPanelStatus(i, panelsStatus[i]); vehicle.setPanelStatus(i, panelsStatus[i]);
} }
} }
if(doesEntityDataExist(vehicle, "vrr.wheelStatus")) { if (doesEntityDataExist(vehicle, "agrp.wheelStatus")) {
let wheelsStatus = getEntityData(vehicle, "vrr.wheelStatus"); let wheelsStatus = getEntityData(vehicle, "agrp.wheelStatus");
for(let i in wheelsStatus) { for (let i in wheelsStatus) {
vehicle.setWheelStatus(i, wheelsStatus[i]); vehicle.setWheelStatus(i, wheelsStatus[i]);
} }
} }
if(doesEntityDataExist(vehicle, "vrr.lightStatus")) { if (doesEntityDataExist(vehicle, "agrp.lightStatus")) {
let lightStatus = getEntityData(vehicle, "vrr.lightStatus"); let lightStatus = getEntityData(vehicle, "agrp.lightStatus");
for(let i in lightStatus) { for (let i in lightStatus) {
vehicle.setLightStatus(i, lightStatus[i]); vehicle.setLightStatus(i, lightStatus[i]);
} }
} }
if(doesEntityDataExist(vehicle, "vrr.suspensionHeight")) { if (doesEntityDataExist(vehicle, "agrp.suspensionHeight")) {
let suspensionHeight = getEntityData(vehicle, "vrr.suspensionHeight"); let suspensionHeight = getEntityData(vehicle, "agrp.suspensionHeight");
vehicle.setSuspensionHeight(suspensionHeight); vehicle.setSuspensionHeight(suspensionHeight);
} }
if(getGame() == VRR_GAME_GTA_SA) { if (getGame() == VRR_GAME_GTA_SA) {
//let allUpgrades = getGameConfig().vehicleUpgrades[getGame()]; //let allUpgrades = getGameConfig().vehicleUpgrades[getGame()];
//for(let i in allUpgrades) { //for(let i in allUpgrades) {
// vehicle.removeUpgrade(i); // vehicle.removeUpgrade(i);
//} //}
if(doesEntityDataExist(vehicle, "vrr.upgrades")) { if (doesEntityDataExist(vehicle, "agrp.upgrades")) {
let upgrades = getEntityData(vehicle, "vrr.upgrades"); let upgrades = getEntityData(vehicle, "agrp.upgrades");
for(let i in upgrades) { for (let i in upgrades) {
if(upgrades[i] != 0) { if (upgrades[i] != 0) {
vehicle.addUpgrade(upgrades[i]); vehicle.addUpgrade(upgrades[i]);
} }
} }
} }
} }
if(getGame() == VRR_GAME_GTA_SA || getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_SA || getGame() == VRR_GAME_GTA_IV) {
if(doesEntityDataExist(vehicle, "vrr.livery")) { if (doesEntityDataExist(vehicle, "agrp.livery")) {
let livery = getEntityData(vehicle, "vrr.livery"); let livery = getEntityData(vehicle, "agrp.livery");
if(getGame() == VRR_GAME_GTA_SA) { if (getGame() == VRR_GAME_GTA_SA) {
vehicle.setPaintJob(livery); vehicle.setPaintJob(livery);
} else if(getGame() == VRR_GAME_GTA_IV) { } else if (getGame() == VRR_GAME_GTA_IV) {
vehicle.livery = livery; vehicle.livery = livery;
} }
} }
@@ -158,13 +158,13 @@ function syncVehicleProperties(vehicle) {
// =========================================================================== // ===========================================================================
function syncCivilianProperties(civilian) { function syncCivilianProperties(civilian) {
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
return false; return false;
} }
if(getGame() == VRR_GAME_GTA_III) { if (getGame() == VRR_GAME_GTA_III) {
if(doesEntityDataExist(civilian, "vrr.scale")) { if (doesEntityDataExist(civilian, "agrp.scale")) {
let scaleFactor = getEntityData(civilian, "vrr.scale"); let scaleFactor = getEntityData(civilian, "agrp.scale");
let tempMatrix = civilian.matrix; let tempMatrix = civilian.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z)); tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = civilian.position; let tempPosition = civilian.position;
@@ -174,79 +174,79 @@ function syncCivilianProperties(civilian) {
} }
} }
if(getGame() == VRR_GAME_GTA_SA) { if (getGame() == VRR_GAME_GTA_SA) {
if(doesEntityDataExist(civilian, "vrr.fightStyle")) { if (doesEntityDataExist(civilian, "agrp.fightStyle")) {
let fightStyle = getEntityData(civilian, "vrr.fightStyle"); let fightStyle = getEntityData(civilian, "agrp.fightStyle");
civilian.setFightStyle(fightStyle[0], fightStyle[1]); civilian.setFightStyle(fightStyle[0], fightStyle[1]);
} }
} }
if(getGame() == VRR_GAME_GTA_III) { if (getGame() == VRR_GAME_GTA_III) {
if(doesEntityDataExist(civilian, "vrr.walkStyle")) { if (doesEntityDataExist(civilian, "agrp.walkStyle")) {
let walkStyle = getEntityData(civilian, "vrr.walkStyle"); let walkStyle = getEntityData(civilian, "agrp.walkStyle");
civilian.walkStyle = walkStyle; civilian.walkStyle = walkStyle;
} }
} }
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
if(doesEntityDataExist(civilian, "vrr.bodyPropHair")) { if (doesEntityDataExist(civilian, "agrp.bodyPropHair")) {
let bodyPropHair = getEntityData(civilian, "vrr.bodyPropHair"); let bodyPropHair = getEntityData(civilian, "agrp.bodyPropHair");
civilian.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]); civilian.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropHead")) { if (doesEntityDataExist(civilian, "agrp.bodyPropHead")) {
let bodyPropHead = getEntityData(civilian, "vrr.bodyPropHead"); let bodyPropHead = getEntityData(civilian, "agrp.bodyPropHead");
civilian.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]); civilian.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropEyes")) { if (doesEntityDataExist(civilian, "agrp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(civilian, "vrr.bodyPropEyes"); let bodyPropEyes = getEntityData(civilian, "agrp.bodyPropEyes");
civilian.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]); civilian.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropLeftHand")) { if (doesEntityDataExist(civilian, "agrp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(civilian, "vrr.bodyPropLeftHand"); let bodyPropLeftHand = getEntityData(civilian, "agrp.bodyPropLeftHand");
civilian.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]); civilian.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropRightHand")) { if (doesEntityDataExist(civilian, "agrp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(civilian, "vrr.bodyPropRightHand"); let bodyPropRightHand = getEntityData(civilian, "agrp.bodyPropRightHand");
civilian.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]); civilian.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropLeftWrist")) { if (doesEntityDataExist(civilian, "agrp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(civilian, "vrr.bodyPropLeftWrist"); let bodyPropLeftWrist = getEntityData(civilian, "agrp.bodyPropLeftWrist");
civilian.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]); civilian.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropRightWrist")) { if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "vrr.bodyPropRightWrist"); let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropRightWrist")) { if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "vrr.bodyPropRightWrist"); let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropHip")) { if (doesEntityDataExist(civilian, "agrp.bodyPropHip")) {
let bodyPropHip = getEntityData(civilian, "vrr.bodyPropHip"); let bodyPropHip = getEntityData(civilian, "agrp.bodyPropHip");
civilian.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]); civilian.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropLeftFoot")) { if (doesEntityDataExist(civilian, "agrp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(civilian, "vrr.bodyPropLeftFoot"); let bodyPropLeftFoot = getEntityData(civilian, "agrp.bodyPropLeftFoot");
civilian.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]); civilian.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
} }
if(doesEntityDataExist(civilian, "vrr.bodyPropRightFoot")) { if (doesEntityDataExist(civilian, "agrp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(civilian, "vrr.bodyPropRightFoot"); let bodyPropRightFoot = getEntityData(civilian, "agrp.bodyPropRightFoot");
civilian.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]); civilian.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
} }
} }
if(doesEntityDataExist(civilian, "vrr.anim")) { if (doesEntityDataExist(civilian, "agrp.anim")) {
let animationSlot = getEntityData(civilian, "vrr.anim"); let animationSlot = getEntityData(civilian, "agrp.anim");
let animationData = getAnimationData(animationSlot); let animationData = getAnimationData(animationSlot);
civilian.addAnimation(animationData.groupId, animationData.animId); civilian.addAnimation(animationData.groupId, animationData.animId);
} }
@@ -255,13 +255,13 @@ function syncCivilianProperties(civilian) {
// =========================================================================== // ===========================================================================
function syncPlayerProperties(player) { function syncPlayerProperties(player) {
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
return false; return false;
} }
if(getGame() == VRR_GAME_GTA_III) { if (getGame() == VRR_GAME_GTA_III) {
if(doesEntityDataExist(player, "vrr.scale")) { if (doesEntityDataExist(player, "agrp.scale")) {
let scaleFactor = getEntityData(player, "vrr.scale"); let scaleFactor = getEntityData(player, "agrp.scale");
let tempMatrix = player.matrix; let tempMatrix = player.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z)); tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = player.position; let tempPosition = player.position;
@@ -271,95 +271,95 @@ function syncPlayerProperties(player) {
} }
} }
if(getGame() == VRR_GAME_GTA_SA) { if (getGame() == VRR_GAME_GTA_SA) {
if(doesEntityDataExist(player, "vrr.fightStyle")) { if (doesEntityDataExist(player, "agrp.fightStyle")) {
let fightStyle = getEntityData(player, "vrr.fightStyle"); let fightStyle = getEntityData(player, "agrp.fightStyle");
player.setFightStyle(fightStyle[0], fightStyle[1]); player.setFightStyle(fightStyle[0], fightStyle[1]);
} }
} }
//if(getGame() == VRR_GAME_GTA_SA) { //if(getGame() == VRR_GAME_GTA_SA) {
// if(doesEntityDataExist(player, "vrr.walkStyle")) { // if(doesEntityDataExist(player, "agrp.walkStyle")) {
// let walkStyle = getEntityData(player, "vrr.walkStyle"); // let walkStyle = getEntityData(player, "agrp.walkStyle");
// player.walkStyle = walkStyle; // player.walkStyle = walkStyle;
// } // }
//} //}
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
if(doesEntityDataExist(player, "vrr.bodyPartHair")) { if (doesEntityDataExist(player, "agrp.bodyPartHair")) {
let bodyPartHead = getEntityData(player, "vrr.bodyPartHair"); let bodyPartHead = getEntityData(player, "agrp.bodyPartHair");
player.changeBodyPart(0, bodyPartHead[0], bodyPartHair[1]); player.changeBodyPart(0, bodyPartHead[0], bodyPartHair[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPartHead")) { if (doesEntityDataExist(player, "agrp.bodyPartHead")) {
let bodyPartHead = getEntityData(player, "vrr.bodyPartHead"); let bodyPartHead = getEntityData(player, "agrp.bodyPartHead");
player.changeBodyPart(1, bodyPartHead[0], bodyPartHead[1]); player.changeBodyPart(1, bodyPartHead[0], bodyPartHead[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPartUpper")) { if (doesEntityDataExist(player, "agrp.bodyPartUpper")) {
let bodyPartUpper = getEntityData(player, "vrr.bodyPartUpper"); let bodyPartUpper = getEntityData(player, "agrp.bodyPartUpper");
player.changeBodyPart(1, bodyPartUpper[0], bodyPartUpper[1]); player.changeBodyPart(1, bodyPartUpper[0], bodyPartUpper[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPartLower")) { if (doesEntityDataExist(player, "agrp.bodyPartLower")) {
let bodyPartLower = getEntityData(player, "vrr.bodyPartLower"); let bodyPartLower = getEntityData(player, "agrp.bodyPartLower");
player.changeBodyPart(1, bodyPartLower[0], bodyPartLower[1]); player.changeBodyPart(1, bodyPartLower[0], bodyPartLower[1]);
} }
} }
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
if(doesEntityDataExist(player, "vrr.bodyPropHair")) { if (doesEntityDataExist(player, "agrp.bodyPropHair")) {
let bodyPropHair = getEntityData(player, "vrr.bodyPropHair"); let bodyPropHair = getEntityData(player, "agrp.bodyPropHair");
player.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]); player.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropHead")) { if (doesEntityDataExist(player, "agrp.bodyPropHead")) {
let bodyPropHead = getEntityData(player, "vrr.bodyPropHead"); let bodyPropHead = getEntityData(player, "agrp.bodyPropHead");
player.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]); player.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropEyes")) { if (doesEntityDataExist(player, "agrp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(player, "vrr.bodyPropEyes"); let bodyPropEyes = getEntityData(player, "agrp.bodyPropEyes");
player.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]); player.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropLeftHand")) { if (doesEntityDataExist(player, "agrp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(player, "vrr.bodyPropLeftHand"); let bodyPropLeftHand = getEntityData(player, "agrp.bodyPropLeftHand");
player.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]); player.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropRightHand")) { if (doesEntityDataExist(player, "agrp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(player, "vrr.bodyPropRightHand"); let bodyPropRightHand = getEntityData(player, "agrp.bodyPropRightHand");
player.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]); player.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropLeftWrist")) { if (doesEntityDataExist(player, "agrp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(player, "vrr.bodyPropLeftWrist"); let bodyPropLeftWrist = getEntityData(player, "agrp.bodyPropLeftWrist");
player.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]); player.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropRightWrist")) { if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "vrr.bodyPropRightWrist"); let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropRightWrist")) { if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "vrr.bodyPropRightWrist"); let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]); player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropHip")) { if (doesEntityDataExist(player, "agrp.bodyPropHip")) {
let bodyPropHip = getEntityData(player, "vrr.bodyPropHip"); let bodyPropHip = getEntityData(player, "agrp.bodyPropHip");
player.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]); player.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropLeftFoot")) { if (doesEntityDataExist(player, "agrp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(player, "vrr.bodyPropLeftFoot"); let bodyPropLeftFoot = getEntityData(player, "agrp.bodyPropLeftFoot");
player.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]); player.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
} }
if(doesEntityDataExist(player, "vrr.bodyPropRightFoot")) { if (doesEntityDataExist(player, "agrp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(player, "vrr.bodyPropRightFoot"); let bodyPropRightFoot = getEntityData(player, "agrp.bodyPropRightFoot");
player.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]); player.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
} }
} }
@@ -368,18 +368,18 @@ function syncPlayerProperties(player) {
// =========================================================================== // ===========================================================================
function syncElementProperties(element) { function syncElementProperties(element) {
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
return false; return false;
} }
if(doesEntityDataExist(element, "vrr.interior")) { if (doesEntityDataExist(element, "agrp.interior")) {
if(typeof element.interior != "undefined") { if (typeof element.interior != "undefined") {
element.interior = getEntityData(element, "vrr.interior"); element.interior = getEntityData(element, "agrp.interior");
} }
} }
if(getGame() == VRR_GAME_MAFIA_ONE) { if (getGame() == VRR_GAME_MAFIA_ONE) {
switch(element.type) { switch (element.type) {
case ELEMENT_VEHICLE: case ELEMENT_VEHICLE:
syncVehicleProperties(element); syncVehicleProperties(element);
break; break;
@@ -396,7 +396,7 @@ function syncElementProperties(element) {
break; break;
} }
} else { } else {
switch(element.type) { switch (element.type) {
case ELEMENT_VEHICLE: case ELEMENT_VEHICLE:
syncVehicleProperties(element); syncVehicleProperties(element);
break; break;
@@ -419,7 +419,7 @@ function syncElementProperties(element) {
// =========================================================================== // ===========================================================================
function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupModel, hasInterior) { function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupModel, hasInterior) {
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
} }
} }
@@ -427,11 +427,11 @@ function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupMode
// =========================================================================== // ===========================================================================
function setLocalPlayerPedPartsAndProps(parts, props) { function setLocalPlayerPedPartsAndProps(parts, props) {
for(let i in parts) { for (let i in parts) {
localPlayer.changeBodyPart(parts[i][0], parts[i][1], parts[i][2]); localPlayer.changeBodyPart(parts[i][0], parts[i][1], parts[i][2]);
} }
for(let j in props) { for (let j in props) {
localPlayer.changeBodyProp(props[j][0], props[j][1]); localPlayer.changeBodyProp(props[j][0], props[j][1]);
} }
} }

View File

@@ -95,7 +95,7 @@ function runClientCode(code, returnTo) {
try { try {
returnValue = eval("(" + code + ")"); returnValue = eval("(" + code + ")");
} catch (error) { } catch (error) {
sendNetworkEventToServer("vrr.runCodeFail", returnTo, error.toString()); sendNetworkEventToServer("agrp.runCodeFail", returnTo, error.toString());
return false; return false;
} }
let returnValueString = returnValue; let returnValueString = returnValue;
@@ -104,7 +104,7 @@ function runClientCode(code, returnTo) {
} else { } else {
returnValueString = "null/undefined"; returnValueString = "null/undefined";
} }
sendNetworkEventToServer("vrr.runCodeSuccess", returnTo, returnValueString); sendNetworkEventToServer("agrp.runCodeSuccess", returnTo, returnValueString);
} }
// =========================================================================== // ===========================================================================
@@ -211,8 +211,8 @@ function setLocalPlayerInterior(interior) {
if (areServerElementsSupported() && isGameFeatureSupported("interior")) { if (areServerElementsSupported() && isGameFeatureSupported("interior")) {
let vehicles = getElementsByType(ELEMENT_VEHICLE); let vehicles = getElementsByType(ELEMENT_VEHICLE);
for (let i in vehicles) { for (let i in vehicles) {
if (getEntityData(vehicles[i], "vrr.interior")) { if (getEntityData(vehicles[i], "agrp.interior")) {
vehicles[i].interior = getEntityData(vehicles[i], "vrr.interior"); vehicles[i].interior = getEntityData(vehicles[i], "agrp.interior");
} }
} }
} }
@@ -310,14 +310,6 @@ function clearSelfOwnedVehicles() {
// =========================================================================== // ===========================================================================
function setMouseCameraState(state) {
logToConsole(LOG_DEBUG, `[VRR.Utilities] ${(state) ? "Enabled" : "Disabled"} mouse camera`);
mouseCameraEnabled = state;
SetStandardControlsEnabled(!mouseCameraEnabled);
}
// ===========================================================================
function toggleMouseCursor() { function toggleMouseCursor() {
logToConsole(LOG_DEBUG, `[VRR.Utilities] ${(!gui.cursorEnabled) ? "Enabled" : "Disabled"} mouse cursor`); logToConsole(LOG_DEBUG, `[VRR.Utilities] ${(!gui.cursorEnabled) ? "Enabled" : "Disabled"} mouse cursor`);
gui.showCursor(!gui.cursorEnabled, gui.cursorEnabled); gui.showCursor(!gui.cursorEnabled, gui.cursorEnabled);
@@ -406,8 +398,8 @@ function processWantedLevelReset() {
function processLocalPlayerVehicleControlState() { function processLocalPlayerVehicleControlState() {
if (areServerElementsSupported()) { if (areServerElementsSupported()) {
if (inVehicle && localPlayer.vehicle != null) { if (inVehicle && localPlayer.vehicle != null) {
if (doesEntityDataExist(localPlayer.vehicle, "vrr.engine")) { if (doesEntityDataExist(localPlayer.vehicle, "agrp.engine")) {
if (getEntityData(localPlayer.vehicle, "vrr.engine") == false) { if (getEntityData(localPlayer.vehicle, "agrp.engine") == false) {
localPlayer.vehicle.engine = false; localPlayer.vehicle.engine = false;
if (!localPlayer.vehicle.engine) { if (!localPlayer.vehicle.engine) {
if (typeof localPlayer.vehicle.velocity != "undefined") { if (typeof localPlayer.vehicle.velocity != "undefined") {
@@ -590,7 +582,7 @@ function processNearbyPickups() {
//if(pickups[i].interior == localPlayer.interior && pickups[i].dimension == localPlayer.dimension) { //if(pickups[i].interior == localPlayer.interior && pickups[i].dimension == localPlayer.dimension) {
if (currentPickup != pickups[i]) { if (currentPickup != pickups[i]) {
currentPickup = pickups[i]; currentPickup = pickups[i];
sendNetworkEventToServer("vrr.pickup", pickups[i].id); sendNetworkEventToServer("agrp.pickup", pickups[i].id);
} }
//} //}
} }

View File

@@ -32,11 +32,11 @@ class VehicleData {
function receiveVehicleFromServer(vehicleId, position, model, colour1, colour2, colour3 = 0, colour4 = 0, locked = false, lights = false, engine = false, licensePlate = "") { 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, `[VRR.Vehicle] Received vehicle ${vehicleId} (${getVehicleNameFromModel(model, getGame())}) from server`);
if(getGame() != VRR_GAME_GTA_IV) { if (getGame() != VRR_GAME_GTA_IV) {
return false; return false;
} }
if(getVehicleData(vehicleId) != false) { if (getVehicleData(vehicleId) != false) {
let vehicleData = getVehicleData(vehicleId); let vehicleData = getVehicleData(vehicleId);
//vehicleData.position = position; //vehicleData.position = position;
//vehicleData.heading = heading; //vehicleData.heading = heading;
@@ -63,20 +63,20 @@ function receiveVehicleFromServer(vehicleId, position, model, colour1, colour2,
// =========================================================================== // ===========================================================================
function processVehiclePurchasing() { function processVehiclePurchasing() {
if(vehiclePurchaseState == VRR_VEHBUYSTATE_TESTDRIVE) { if (vehiclePurchaseState == VRR_VEHBUYSTATE_TESTDRIVE) {
if(getLocalPlayerVehicle() == false) { if (getLocalPlayerVehicle() == false) {
vehiclePurchaseState = VRR_VEHBUYSTATE_EXITVEH; vehiclePurchaseState = VRR_VEHBUYSTATE_EXITVEH;
sendNetworkEventToServer("vrr.vehBuyState", VRR_VEHBUYSTATE_EXITVEH); sendNetworkEventToServer("agrp.vehBuyState", VRR_VEHBUYSTATE_EXITVEH);
return false; return false;
} else { } else {
if(vehiclePurchasing == getLocalPlayerVehicle()) { if (vehiclePurchasing == getLocalPlayerVehicle()) {
if(getDistance(getLocalPlayerVehicle().position, vehiclePurchasePosition) >= 25) { if (getDistance(getLocalPlayerVehicle().position, vehiclePurchasePosition) >= 25) {
vehiclePurchaseState = VRR_VEHBUYSTATE_FARENOUGH; vehiclePurchaseState = VRR_VEHBUYSTATE_FARENOUGH;
sendNetworkEventToServer("vrr.vehBuyState", VRR_VEHBUYSTATE_FARENOUGH); sendNetworkEventToServer("agrp.vehBuyState", VRR_VEHBUYSTATE_FARENOUGH);
} }
} else { } else {
vehiclePurchaseState = VRR_VEHBUYSTATE_WRONGVEH; vehiclePurchaseState = VRR_VEHBUYSTATE_WRONGVEH;
sendNetworkEventToServer("vrr.vehBuyState", VRR_VEHBUYSTATE_WRONGVEH); sendNetworkEventToServer("agrp.vehBuyState", VRR_VEHBUYSTATE_WRONGVEH);
} }
} }
} }
@@ -95,7 +95,7 @@ function processVehicleBurning() {
function setVehiclePurchaseState(state, vehicleId, position) { function setVehiclePurchaseState(state, vehicleId, position) {
vehiclePurchaseState = state; vehiclePurchaseState = state;
if(vehicleId != null) { if (vehicleId != null) {
vehiclePurchasing = getElementFromId(vehicleId); vehiclePurchasing = getElementFromId(vehicleId);
} else { } else {
vehiclePurchasing = null; vehiclePurchasing = null;
@@ -110,9 +110,9 @@ function setVehiclePurchaseState(state, vehicleId, position) {
* @param {number} vehicleId - The ID of the job (initially provided by server) * @param {number} vehicleId - The ID of the job (initially provided by server)
* @return {VehicleData} The vehicle's data (class instance) * @return {VehicleData} The vehicle's data (class instance)
*/ */
function getVehicleData(vehicleId) { function getVehicleData(vehicleId) {
for(let i in getServerData().vehicles) { for (let i in getServerData().vehicles) {
if(getServerData().vehicles[i].vehicleId == vehicleId) { if (getServerData().vehicles[i].vehicleId == vehicleId) {
return getServerData().vehicles[i]; return getServerData().vehicles[i];
} }
} }
@@ -123,7 +123,7 @@ function setVehiclePurchaseState(state, vehicleId, position) {
// =========================================================================== // ===========================================================================
function setAllVehicleDataIndexes() { function setAllVehicleDataIndexes() {
for(let i in getServerData().vehicles) { for (let i in getServerData().vehicles) {
getServerData().vehicles[i].index = i; getServerData().vehicles[i].index = i;
} }
} }

View File

@@ -1374,7 +1374,7 @@ function initClient(client) {
return false; return false;
} }
setEntityData(client, "vrr.isInitialized", true, false); setEntityData(client, "agrp.isInitialized", true, false);
sendPlayerGUIColours(client); sendPlayerGUIColours(client);

View File

@@ -15,7 +15,7 @@ function initAnimationScript() {
// =========================================================================== // ===========================================================================
function playPlayerAnimationCommand(command, params, client) { function playPlayerAnimationCommand(command, params, client) {
if(areParamsEmpty(params)) { if (areParamsEmpty(params)) {
messagePlayerSyntax(client, getCommandSyntaxText(command)); messagePlayerSyntax(client, getCommandSyntaxText(command));
return false; return false;
} }
@@ -23,22 +23,22 @@ function playPlayerAnimationCommand(command, params, client) {
let animationSlot = getAnimationFromParams(getParam(params, " ", 1)); let animationSlot = getAnimationFromParams(getParam(params, " ", 1));
let animationPositionOffset = 1; let animationPositionOffset = 1;
if(!animationSlot) { if (!animationSlot) {
messagePlayerError(client, getLocaleString(client, "InvalidAnimation")); messagePlayerError(client, getLocaleString(client, "InvalidAnimation"));
messagePlayerInfo(client, getLocaleString(client, "AnimationCommandTip", `{ALTCOLOUR}/animlist{MAINCOLOUR}`)); messagePlayerInfo(client, getLocaleString(client, "AnimationCommandTip", `{ALTCOLOUR}/animlist{MAINCOLOUR}`));
return false; return false;
} }
if(toInteger(animationPositionOffset) < 0 || toInteger(animationPositionOffset) > 3) { if (toInteger(animationPositionOffset) < 0 || toInteger(animationPositionOffset) > 3) {
messagePlayerError(client, getLocaleString(client, "InvalidAnimationDistance")); messagePlayerError(client, getLocaleString(client, "InvalidAnimationDistance"));
return false; return false;
} }
if(getAnimationData(animationSlot)[3] == VRR_ANIMTYPE_SURRENDER) { if (getAnimationData(animationSlot)[3] == VRR_ANIMTYPE_SURRENDER) {
getPlayerData(client).pedState = VRR_PEDSTATE_HANDSUP; getPlayerData(client).pedState = VRR_PEDSTATE_HANDSUP;
} }
if(isPlayerHandCuffed(client) || isPlayerTazed(client) || isPlayerInForcedAnimation(client)) { if (isPlayerHandCuffed(client) || isPlayerTazed(client) || isPlayerInForcedAnimation(client)) {
messagePlayerError(client, getLocaleString(client, "UnableToDoThat")); messagePlayerError(client, getLocaleString(client, "UnableToDoThat"));
return false; return false;
} }
@@ -50,7 +50,7 @@ function playPlayerAnimationCommand(command, params, client) {
// =========================================================================== // ===========================================================================
function stopPlayerAnimationCommand(command, params, client) { function stopPlayerAnimationCommand(command, params, client) {
if(isPlayerHandCuffed(client) || isPlayerTazed(client) || isPlayerInForcedAnimation(client)) { if (isPlayerHandCuffed(client) || isPlayerTazed(client) || isPlayerInForcedAnimation(client)) {
messagePlayerError(client, getLocaleString(client, "UnableToDoThat")); messagePlayerError(client, getLocaleString(client, "UnableToDoThat"));
return false; return false;
} }
@@ -70,13 +70,13 @@ function stopPlayerAnimationCommand(command, params, client) {
// =========================================================================== // ===========================================================================
function showAnimationListCommand(command, params, client) { function showAnimationListCommand(command, params, client) {
let animList = getGameConfig().animations[getGame()].map(function(x) { return x.name; }); let animList = getGameConfig().animations[getGame()].map(function (x) { return x.name; });
let chunkedList = splitArrayIntoChunks(animList, 10); let chunkedList = splitArrayIntoChunks(animList, 10);
messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderAnimationsList"))); messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderAnimationsList")));
for(let i in chunkedList) { for (let i in chunkedList) {
messagePlayerNormal(client, chunkedList[i].join(", ")); messagePlayerNormal(client, chunkedList[i].join(", "));
} }
} }
@@ -107,7 +107,7 @@ function makePlayerPlayAnimation(client, animationSlot, offsetPosition = 1) {
getPlayerData(client).animationForced = false; getPlayerData(client).animationForced = false;
makePedPlayAnimation(getPlayerPed(client), animationSlot, offsetPosition); makePedPlayAnimation(getPlayerPed(client), animationSlot, offsetPosition);
setEntityData(getPlayerPed(client), "vrr.anim", animationSlot, true); setEntityData(getPlayerPed(client), "agrp.anim", animationSlot, true);
//if(getAnimationData(animationSlot)[9] != VRR_ANIMMOVE_NONE) { //if(getAnimationData(animationSlot)[9] != VRR_ANIMMOVE_NONE) {
// if(getGame() < VRR_GAME_GTA_SA) { // if(getGame() < VRR_GAME_GTA_SA) {
// setPlayerMouseCameraState(client, true); // setPlayerMouseCameraState(client, true);
@@ -145,14 +145,14 @@ function makePlayerStopAnimation(client) {
function getAnimationFromParams(params) { function getAnimationFromParams(params) {
let animations = getGameConfig().animations[getGame()]; let animations = getGameConfig().animations[getGame()];
if(isNaN(params)) { if (isNaN(params)) {
for(let i in animations) { for (let i in animations) {
if(toLowerCase(animations[i].name).indexOf(toLowerCase(params)) != -1) { if (toLowerCase(animations[i].name).indexOf(toLowerCase(params)) != -1) {
return i; return i;
} }
} }
} else { } else {
if(typeof getGameConfig().animations[getGame()][params] != "undefined") { if (typeof getGameConfig().animations[getGame()][params] != "undefined") {
return toInteger(params); return toInteger(params);
} }
} }

View File

@@ -446,7 +446,7 @@ function setBusinessNameCommand(command, params, client) {
let oldBusinessName = getBusinessData(businessId).name; let oldBusinessName = getBusinessData(businessId).name;
getBusinessData(businessId).name = newBusinessName; getBusinessData(businessId).name = newBusinessName;
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.name", getBusinessData(businessId).name, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.name", getBusinessData(businessId).name, true);
getBusinessData(businessId).needsSaved = 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}`);
} }
@@ -1407,7 +1407,7 @@ function setBusinessBuyPriceCommand(command, params, client) {
} }
getBusinessData(businessId).buyPrice = amount; getBusinessData(businessId).buyPrice = amount;
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.price", getBusinessData(businessId).buyPrice, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.price", getBusinessData(businessId).buyPrice, true);
getBusinessData(businessId).needsSaved = 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}$${makeLargeNumberReadable(amount)}`);
@@ -2810,50 +2810,50 @@ function updateBusinessPickupLabelData(businessId) {
} }
if (getBusinessData(businessId).exitPickup != null) { if (getBusinessData(businessId).exitPickup != null) {
setEntityData(getBusinessData(businessId).exitPickup, "vrr.owner.type", VRR_PICKUP_BUSINESS_EXIT, false); setEntityData(getBusinessData(businessId).exitPickup, "agrp.owner.type", VRR_PICKUP_BUSINESS_EXIT, false);
setEntityData(getBusinessData(businessId).exitPickup, "vrr.owner.id", businessId, false); setEntityData(getBusinessData(businessId).exitPickup, "agrp.owner.id", businessId, false);
setEntityData(getBusinessData(businessId).exitPickup, "vrr.label.type", VRR_LABEL_EXIT, true); setEntityData(getBusinessData(businessId).exitPickup, "agrp.label.type", VRR_LABEL_EXIT, true);
} }
if (getBusinessData(businessId).entrancePickup != null) { if (getBusinessData(businessId).entrancePickup != null) {
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.owner.type", VRR_PICKUP_BUSINESS_ENTRANCE, false); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.owner.type", VRR_PICKUP_BUSINESS_ENTRANCE, false);
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.owner.id", businessId, false); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.owner.id", businessId, false);
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.type", VRR_LABEL_BUSINESS, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.type", VRR_LABEL_BUSINESS, true);
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.name", getBusinessData(businessId).name, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.name", getBusinessData(businessId).name, true);
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.locked", getBusinessData(businessId).locked, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.locked", getBusinessData(businessId).locked, true);
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.help", VRR_PROPLABEL_INFO_NONE, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", VRR_PROPLABEL_INFO_NONE, true);
switch (getBusinessData(businessId).labelHelpType) { switch (getBusinessData(businessId).labelHelpType) {
case VRR_PROPLABEL_INFO_ENTERVEHICLE: { case VRR_PROPLABEL_INFO_ENTERVEHICLE: {
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.help", VRR_PROPLABEL_INFO_ENTERVEHICLE, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", VRR_PROPLABEL_INFO_ENTERVEHICLE, true);
break; break;
} }
case VRR_PROPLABEL_INFO_ENTER: { case VRR_PROPLABEL_INFO_ENTER: {
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.help", VRR_PROPLABEL_INFO_ENTER, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", VRR_PROPLABEL_INFO_ENTER, true);
break; break;
} }
case VRR_PROPLABEL_INFO_REPAIR: { case VRR_PROPLABEL_INFO_REPAIR: {
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.help", VRR_PROPLABEL_INFO_REPAIR, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", VRR_PROPLABEL_INFO_REPAIR, true);
break; break;
} }
default: { default: {
if (getBusinessData(businessId).hasInterior) { if (getBusinessData(businessId).hasInterior) {
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.help", VRR_PROPLABEL_INFO_ENTER, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", VRR_PROPLABEL_INFO_ENTER, true);
} else { } else {
if (doesBusinessHaveAnyItemsToBuy(businessId)) { if (doesBusinessHaveAnyItemsToBuy(businessId)) {
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.help", VRR_PROPLABEL_INFO_BUY, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help", VRR_PROPLABEL_INFO_BUY, true);
} else { } else {
removeEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.help"); removeEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.help");
} }
} }
break; break;
} }
} }
setEntityData(getBusinessData(businessId).entrancePickup, "vrr.label.price", getBusinessData(businessId).buyPrice, true); setEntityData(getBusinessData(businessId).entrancePickup, "agrp.label.price", getBusinessData(businessId).buyPrice, true);
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -271,7 +271,7 @@ async function onPlayerEnteredVehicle(client, clientVehicle, seat) {
return false; return false;
} }
logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} entered a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("vrr.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`); logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} entered a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("agrp.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`);
getPlayerData(client).lastVehicle = vehicle; getPlayerData(client).lastVehicle = vehicle;
getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp(); getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp();
@@ -385,7 +385,7 @@ function onPlayerExitedVehicle(client, vehicle) {
getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp(); getVehicleData(vehicle).lastActiveTime = getCurrentUnixTimestamp();
logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} exited a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("vrr.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`); logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} exited a ${getVehicleName(vehicle)} (ID: ${vehicle.getData("agrp.dataSlot")}, Database ID: ${getVehicleData(vehicle).databaseId})`);
} }
// =========================================================================== // ===========================================================================
@@ -395,6 +395,7 @@ function onPlayerDeath(client, position) {
getPlayerData(client).pedState = VRR_PEDSTATE_DEAD; getPlayerData(client).pedState = VRR_PEDSTATE_DEAD;
updatePlayerSpawnedState(client, false); updatePlayerSpawnedState(client, false);
setPlayerControlState(client, false); setPlayerControlState(client, false);
setPlayerRenderLabelsState(client, false);
setTimeout(function () { setTimeout(function () {
if (isFadeCameraSupported()) { if (isFadeCameraSupported()) {
fadeCamera(client, false, 1.0); fadeCamera(client, false, 1.0);
@@ -423,6 +424,7 @@ function onPlayerDeath(client, position) {
makePlayerStopAnimation(client); makePlayerStopAnimation(client);
setPlayerControlState(client, true); setPlayerControlState(client, true);
resetPlayerBlip(client); resetPlayerBlip(client);
setPlayerRenderLabelsState(client, true);
} else { } else {
let closestHospital = getClosestHospital(getPlayerPosition(client)); let closestHospital = getClosestHospital(getPlayerPosition(client));
despawnPlayer(client); despawnPlayer(client);
@@ -447,6 +449,7 @@ function onPlayerDeath(client, position) {
makePlayerStopAnimation(client); makePlayerStopAnimation(client);
setPlayerControlState(client, true); setPlayerControlState(client, true);
resetPlayerBlip(client); resetPlayerBlip(client);
setPlayerRenderLabelsState(client, true);
} }
}, 2000); }, 2000);
}, 1000); }, 1000);
@@ -515,12 +518,12 @@ async function onPlayerSpawn(client) {
if (getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped body parts and props`); logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped body parts and props`);
setEntityData(getPlayerPed(client), "vrr.bodyParts", getPlayerCurrentSubAccount(client).bodyParts, true); setEntityData(getPlayerPed(client), "agrp.bodyParts", getPlayerCurrentSubAccount(client).bodyParts, true);
setEntityData(getPlayerPed(client), "vrr.bodyProps", getPlayerCurrentSubAccount(client).bodyProps, true); setEntityData(getPlayerPed(client), "agrp.bodyProps", getPlayerCurrentSubAccount(client).bodyProps, true);
} }
logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped scale (${getPlayerCurrentSubAccount(client).pedScale})`); logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped scale (${getPlayerCurrentSubAccount(client).pedScale})`);
setEntityData(getPlayerPed(client), "vrr.scale", getPlayerCurrentSubAccount(client).pedScale, true); setEntityData(getPlayerPed(client), "agrp.scale", getPlayerCurrentSubAccount(client).pedScale, true);
if (isPlayerSwitchingCharacter(client) || isPlayerCreatingCharacter(client)) { if (isPlayerSwitchingCharacter(client) || isPlayerCreatingCharacter(client)) {
logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)}'s ped is being used for character selection/creation. No further spawn processing needed'`); logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)}'s ped is being used for character selection/creation. No further spawn processing needed'`);
@@ -576,7 +579,7 @@ async function onPlayerSpawn(client) {
if (areServerElementsSupported() && getGame() == VRR_GAME_GTA_SA) { if (areServerElementsSupported() && getGame() == VRR_GAME_GTA_SA) {
logToConsole(LOG_DEBUG, `[VRR.Event] Setting player walk and fightstyle for ${getPlayerDisplayForConsole(client)}`); logToConsole(LOG_DEBUG, `[VRR.Event] Setting player walk and fightstyle for ${getPlayerDisplayForConsole(client)}`);
setEntityData(getPlayerPed(client), "vrr.walkStyle", getPlayerCurrentSubAccount(client).walkStyle, true); setEntityData(getPlayerPed(client), "agrp.walkStyle", getPlayerCurrentSubAccount(client).walkStyle, true);
setPlayerFightStyle(client, getPlayerCurrentSubAccount(client).fightStyle); setPlayerFightStyle(client, getPlayerCurrentSubAccount(client).fightStyle);
} }
@@ -602,20 +605,20 @@ async function onPlayerSpawn(client) {
} }
//if(isGTAIV()) { //if(isGTAIV()) {
// setEntityData(getPlayerPed(client), "vrr.bodyPartHair", getPlayerCurrentSubAccount(client).bodyParts.hair, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartHair", getPlayerCurrentSubAccount(client).bodyParts.hair, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPartHead", getPlayerCurrentSubAccount(client).bodyParts.head, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartHead", getPlayerCurrentSubAccount(client).bodyParts.head, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPartUpper", getPlayerCurrentSubAccount(client).bodyParts.upper, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartUpper", getPlayerCurrentSubAccount(client).bodyParts.upper, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPartLower", getPlayerCurrentSubAccount(client).bodyParts.lower, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartLower", getPlayerCurrentSubAccount(client).bodyParts.lower, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPropHair", getPlayerCurrentSubAccount(client).bodyProps.hair, true); // setEntityData(getPlayerPed(client), "agrp.bodyPropHair", getPlayerCurrentSubAccount(client).bodyProps.hair, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPropEyes", getPlayerCurrentSubAccount(client).bodyProps.eyes, true); // setEntityData(getPlayerPed(client), "agrp.bodyPropEyes", getPlayerCurrentSubAccount(client).bodyProps.eyes, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPartHead", getPlayerCurrentSubAccount(client).bodyProps.head, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartHead", getPlayerCurrentSubAccount(client).bodyProps.head, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPartLeftHand", getPlayerCurrentSubAccount(client).bodyProps.leftHand, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartLeftHand", getPlayerCurrentSubAccount(client).bodyProps.leftHand, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPartRightHand", getPlayerCurrentSubAccount(client).bodyProps.rightHand, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartRightHand", getPlayerCurrentSubAccount(client).bodyProps.rightHand, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPartLeftWrist", getPlayerCurrentSubAccount(client).bodyProps.leftWrist, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartLeftWrist", getPlayerCurrentSubAccount(client).bodyProps.leftWrist, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPartRightWrist", getPlayerCurrentSubAccount(client).bodyProps.rightWrist, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartRightWrist", getPlayerCurrentSubAccount(client).bodyProps.rightWrist, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPartHip", getPlayerCurrentSubAccount(client).bodyProps.hip, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartHip", getPlayerCurrentSubAccount(client).bodyProps.hip, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPartLeftFoot", getPlayerCurrentSubAccount(client).bodyProps.leftFoot, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartLeftFoot", getPlayerCurrentSubAccount(client).bodyProps.leftFoot, true);
// setEntityData(getPlayerPed(client), "vrr.bodyPartRightFoot", getPlayerCurrentSubAccount(client).bodyProps.rightFoot, true); // setEntityData(getPlayerPed(client), "agrp.bodyPartRightFoot", getPlayerCurrentSubAccount(client).bodyProps.rightFoot, true);
//} //}
if (isGTAIV()) { if (isGTAIV()) {
@@ -659,6 +662,8 @@ async function onPlayerSpawn(client) {
// Stop playing intro music and any other radio // Stop playing intro music and any other radio
stopRadioStreamForPlayer(client); stopRadioStreamForPlayer(client);
setPlayerRenderLabelsState(client, true);
// Start playing business/house radio if in one // Start playing business/house radio if in one
let businessId = getPlayerBusiness(client); let businessId = getPlayerBusiness(client);
let houseId = getPlayerHouse(client); let houseId = getPlayerHouse(client);

View File

@@ -266,7 +266,7 @@ function playerToggledGUI(client) {
// =========================================================================== // ===========================================================================
function showPlayerTwoFactorAuthenticationGUI(client) { function showPlayerTwoFactorAuthenticationGUI(client) {
sendNetworkEventToPlayer("vrr.2fa", client); sendNetworkEventToPlayer("agrp.2fa", client);
} }
// =========================================================================== // ===========================================================================

View File

@@ -27,7 +27,7 @@ const VRR_HOUSEOWNER_PUBLIC = 5; // Is a public house. Technical
/** /**
* @class Representing a house's data. Loaded and saved in the database * @class Representing a house's data. Loaded and saved in the database
*/ */
class HouseData { class HouseData {
constructor(dbAssoc = false) { constructor(dbAssoc = false) {
this.databaseId = 0 this.databaseId = 0
this.description = ""; this.description = "";
@@ -66,7 +66,7 @@ const VRR_HOUSEOWNER_PUBLIC = 5; // Is a public house. Technical
this.streamingRadioStation = -1; this.streamingRadioStation = -1;
if(dbAssoc) { if (dbAssoc) {
this.databaseId = toInteger(dbAssoc["house_id"]); this.databaseId = toInteger(dbAssoc["house_id"]);
this.description = toString(dbAssoc["house_description"]); this.description = toString(dbAssoc["house_description"]);
this.ownerType = toInteger(dbAssoc["house_owner_type"]); this.ownerType = toInteger(dbAssoc["house_owner_type"]);
@@ -115,7 +115,7 @@ class HouseLocationData {
this.interior = 0; this.interior = 0;
this.dimension = 0; this.dimension = 0;
if(dbAssoc) { if (dbAssoc) {
this.databaseId = toInteger(dbAssoc["house_loc_id"]); this.databaseId = toInteger(dbAssoc["house_loc_id"]);
this.name = toString(dbAssoc["house_loc_name"]); this.name = toString(dbAssoc["house_loc_name"]);
this.type = toInteger(dbAssoc["house_loc_type"]); this.type = toInteger(dbAssoc["house_loc_type"]);
@@ -149,7 +149,7 @@ class HouseGameScriptData {
this.houseIndex = -1; this.houseIndex = -1;
this.needsSaved = false; this.needsSaved = false;
if(dbAssoc) { if (dbAssoc) {
this.databaseId = toInteger(dbAssoc["house_script_id"]); this.databaseId = toInteger(dbAssoc["house_script_id"]);
this.name = toString(dbAssoc["house_script_name"]); this.name = toString(dbAssoc["house_script_name"]);
this.state = toInteger(dbAssoc["house_script_state"]); this.state = toInteger(dbAssoc["house_script_state"]);
@@ -264,7 +264,7 @@ function setHouseDescriptionCommand(command, params, client) {
let oldDescription = getHouseData(houseId).description; let oldDescription = getHouseData(houseId).description;
getHouseData(houseId).description = newHouseDescription; getHouseData(houseId).description = newHouseDescription;
setEntityData(getHouseData(houseId).entrancePickup, "vrr.label.name", getHouseData(houseId).description, true); setEntityData(getHouseData(houseId).entrancePickup, "agrp.label.name", getHouseData(houseId).description, true);
getHouseData(houseId).needsSaved = true; getHouseData(houseId).needsSaved = true;
@@ -1098,8 +1098,8 @@ function createHouseEntranceBlip(houseId) {
setElementStreamOutDistance(entranceBlip, getGlobalConfig().houseBlipStreamOutDistance); setElementStreamOutDistance(entranceBlip, getGlobalConfig().houseBlipStreamOutDistance);
} }
setEntityData(entranceBlip, "vrr.owner.type", VRR_BLIP_HOUSE_ENTRANCE, false); setEntityData(entranceBlip, "agrp.owner.type", VRR_BLIP_HOUSE_ENTRANCE, false);
setEntityData(entranceBlip, "vrr.owner.id", houseId, false); setEntityData(entranceBlip, "agrp.owner.id", houseId, false);
houseData.entranceBlip = entranceBlip; houseData.entranceBlip = entranceBlip;
} }
@@ -1204,8 +1204,8 @@ function createHouseExitBlip(houseId) {
setElementStreamOutDistance(exitBlip, getGlobalConfig().houseBlipStreamOutDistance); setElementStreamOutDistance(exitBlip, getGlobalConfig().houseBlipStreamOutDistance);
} }
setElementTransient(exitBlip, false); setElementTransient(exitBlip, false);
setEntityData(exitBlip, "vrr.owner.type", VRR_BLIP_HOUSE_EXIT, false); setEntityData(exitBlip, "agrp.owner.type", VRR_BLIP_HOUSE_EXIT, false);
setEntityData(exitBlip, "vrr.owner.id", houseId, false); setEntityData(exitBlip, "agrp.owner.id", houseId, false);
getHouseData(houseId).exitBlip = exitBlip; getHouseData(houseId).exitBlip = exitBlip;
} }
} }
@@ -1747,26 +1747,26 @@ function updateHousePickupLabelData(houseId) {
let houseData = getHouseData(houseId); let houseData = getHouseData(houseId);
if (houseData.entrancePickup != null) { if (houseData.entrancePickup != null) {
setEntityData(houseData.entrancePickup, "vrr.owner.type", VRR_PICKUP_HOUSE_ENTRANCE, false); setEntityData(houseData.entrancePickup, "agrp.owner.type", VRR_PICKUP_HOUSE_ENTRANCE, false);
setEntityData(houseData.entrancePickup, "vrr.owner.id", houseId, false); setEntityData(houseData.entrancePickup, "agrp.owner.id", houseId, false);
setEntityData(houseData.entrancePickup, "vrr.label.type", VRR_LABEL_HOUSE, true); setEntityData(houseData.entrancePickup, "agrp.label.type", VRR_LABEL_HOUSE, true);
setEntityData(houseData.entrancePickup, "vrr.label.name", houseData.description, true); setEntityData(houseData.entrancePickup, "agrp.label.name", houseData.description, true);
setEntityData(houseData.entrancePickup, "vrr.label.locked", houseData.locked, true); setEntityData(houseData.entrancePickup, "agrp.label.locked", houseData.locked, true);
if (houseData.buyPrice > 0) { if (houseData.buyPrice > 0) {
setEntityData(houseData.entrancePickup, "vrr.label.price", houseData.buyPrice, true); setEntityData(houseData.entrancePickup, "agrp.label.price", houseData.buyPrice, true);
setEntityData(houseData.entrancePickup, "vrr.label.help", VRR_PROPLABEL_INFO_BUYHOUSE, true); setEntityData(houseData.entrancePickup, "agrp.label.help", VRR_PROPLABEL_INFO_BUYHOUSE, true);
} else { } else {
if (houseData.rentPrice > 0) { if (houseData.rentPrice > 0) {
setEntityData(houseData.entrancePickup, "vrr.label.rentprice", houseData.rentPrice, true); setEntityData(houseData.entrancePickup, "agrp.label.rentprice", houseData.rentPrice, true);
setEntityData(houseData.entrancePickup, "vrr.label.help", VRR_PROPLABEL_INFO_RENTHOUSE, true); setEntityData(houseData.entrancePickup, "agrp.label.help", VRR_PROPLABEL_INFO_RENTHOUSE, true);
} }
} }
} }
if (houseData.exitPickup != null) { if (houseData.exitPickup != null) {
setEntityData(houseData.exitPickup, "vrr.owner.type", VRR_PICKUP_HOUSE_EXIT, false); setEntityData(houseData.exitPickup, "agrp.owner.type", VRR_PICKUP_HOUSE_EXIT, false);
setEntityData(houseData.exitPickup, "vrr.owner.id", houseId, false); setEntityData(houseData.exitPickup, "agrp.owner.id", houseId, false);
setEntityData(houseData.exitPickup, "vrr.label.type", VRR_LABEL_EXIT, true); setEntityData(houseData.exitPickup, "agrp.label.type", VRR_LABEL_EXIT, true);
} }
} }

View File

@@ -123,7 +123,7 @@ class ItemData {
this.enabled = false; this.enabled = false;
this.extra = false; this.extra = false;
if(dbAssoc) { if (dbAssoc) {
this.databaseId = toInteger(dbAssoc["item_id"]); this.databaseId = toInteger(dbAssoc["item_id"]);
this.index = 0; this.index = 0;
this.itemTypeIndex = 0; this.itemTypeIndex = 0;
@@ -188,7 +188,7 @@ class ItemTypeData {
this.takeAnimationIndex = false; this.takeAnimationIndex = false;
this.switchAnimationIndex = false; this.switchAnimationIndex = false;
if(dbAssoc) { if (dbAssoc) {
this.databaseId = toInteger(dbAssoc["item_type_id"]); this.databaseId = toInteger(dbAssoc["item_type_id"]);
this.serverId = toInteger(dbAssoc["item_type_server"]); this.serverId = toInteger(dbAssoc["item_type_server"]);
this.name = dbAssoc["item_type_name"]; this.name = dbAssoc["item_type_name"];
@@ -325,7 +325,7 @@ function createGroundItemObject(itemId) {
setElementRotation(getItemData(itemId).object, getItemTypeData(getItemData(itemId).itemTypeIndex).dropRotation); setElementRotation(getItemData(itemId).object, getItemTypeData(getItemData(itemId).itemTypeIndex).dropRotation);
setElementOnAllDimensions(getItemData(itemId).object, false); setElementOnAllDimensions(getItemData(itemId).object, false);
setElementDimension(getItemData(itemId).object, getItemData(itemId).dimension); setElementDimension(getItemData(itemId).object, getItemData(itemId).dimension);
//setEntityData(getItemData(itemId).object, "vrr.scale", getItemTypeData(getItemData(itemId).itemTypeIndex).dropScale, true); //setEntityData(getItemData(itemId).object, "agrp.scale", getItemTypeData(getItemData(itemId).itemTypeIndex).dropScale, true);
addToWorld(getItemData(itemId).object); addToWorld(getItemData(itemId).object);
} }

View File

@@ -34,7 +34,7 @@ const VRR_JOBROUTESTATE_ATSTOP = 4; // For bus/trash stops that fre
/** /**
* @class Representing a job's data. Loaded and saved in the database * @class Representing a job's data. Loaded and saved in the database
*/ */
class JobData { class JobData {
constructor(dbAssoc = false) { constructor(dbAssoc = false) {
this.databaseId = 0; this.databaseId = 0;
this.serverId = 0; this.serverId = 0;
@@ -57,7 +57,7 @@ const VRR_JOBROUTESTATE_ATSTOP = 4; // For bus/trash stops that fre
this.blackList = []; this.blackList = [];
this.routes = []; this.routes = [];
if(dbAssoc) { if (dbAssoc) {
this.databaseId = dbAssoc["job_id"]; this.databaseId = dbAssoc["job_id"];
this.serverId = dbAssoc["job_server"]; this.serverId = dbAssoc["job_server"];
this.type = dbAssoc["job_type"]; this.type = dbAssoc["job_type"];
@@ -103,7 +103,7 @@ class JobRouteData {
this.locationNextMessage = ""; this.locationNextMessage = "";
this.locations = []; this.locations = [];
if(dbAssoc) { if (dbAssoc) {
this.databaseId = toInteger(dbAssoc["job_route_id"]); this.databaseId = toInteger(dbAssoc["job_route_id"]);
this.name = toString(dbAssoc["job_route_name"]); this.name = toString(dbAssoc["job_route_name"]);
this.jobId = toInteger(dbAssoc["job_route_job"]); this.jobId = toInteger(dbAssoc["job_route_job"]);
@@ -137,7 +137,7 @@ class JobRouteLocationData {
this.stopDelay = 0; this.stopDelay = 0;
this.pay = 0; this.pay = 0;
if(dbAssoc) { if (dbAssoc) {
this.databaseId = toInteger(dbAssoc["job_route_loc_id"]); this.databaseId = toInteger(dbAssoc["job_route_loc_id"]);
this.name = toString(dbAssoc["job_route_loc_name"]); this.name = toString(dbAssoc["job_route_loc_name"]);
this.routeId = toInteger(dbAssoc["job_route_loc_route"]); this.routeId = toInteger(dbAssoc["job_route_loc_route"]);
@@ -166,7 +166,7 @@ class JobEquipmentData {
this.needsSaved = false; this.needsSaved = false;
this.items = []; this.items = [];
if(dbAssoc) { if (dbAssoc) {
this.databaseId = dbAssoc["job_equip_id"]; this.databaseId = dbAssoc["job_equip_id"];
this.job = dbAssoc["job_equip_job"]; this.job = dbAssoc["job_equip_job"];
this.name = dbAssoc["job_equip_name"]; this.name = dbAssoc["job_equip_name"];
@@ -192,7 +192,7 @@ class JobEquipmentItemData {
this.jobIndex = -1; this.jobIndex = -1;
this.needsSaved = false; this.needsSaved = false;
if(dbAssoc) { if (dbAssoc) {
this.databaseId = dbAssoc["job_equip_item_id"]; this.databaseId = dbAssoc["job_equip_item_id"];
this.equipmentId = dbAssoc["job_equip_item_equip"]; this.equipmentId = dbAssoc["job_equip_item_equip"];
this.itemType = dbAssoc["job_equip_item_type"]; this.itemType = dbAssoc["job_equip_item_type"];
@@ -220,26 +220,26 @@ class JobUniformData {
this.needsSaved = false; this.needsSaved = false;
this.bodyParts = { this.bodyParts = {
hair: [0,0], hair: [0, 0],
head: [0,0], head: [0, 0],
upper: [0,0], upper: [0, 0],
lower: [0,0], lower: [0, 0],
}; };
this.bodyProps = { this.bodyProps = {
hair: [0,0], hair: [0, 0],
eyes: [0,0], eyes: [0, 0],
head: [0,0], head: [0, 0],
leftHand: [0,0], leftHand: [0, 0],
rightHand: [0,0], rightHand: [0, 0],
leftWrist: [0,0], leftWrist: [0, 0],
rightWrist: [0,0], rightWrist: [0, 0],
hip: [0,0], hip: [0, 0],
leftFoot: [0,0], leftFoot: [0, 0],
rightFoot: [0,0], rightFoot: [0, 0],
}; };
if(dbAssoc) { if (dbAssoc) {
this.databaseId = dbAssoc["job_uniform_id"]; this.databaseId = dbAssoc["job_uniform_id"];
this.job = dbAssoc["job_uniform_job"]; this.job = dbAssoc["job_uniform_job"];
this.name = dbAssoc["job_uniform_name"]; this.name = dbAssoc["job_uniform_name"];
@@ -290,7 +290,7 @@ class JobLocationData {
this.needsSaved = false; this.needsSaved = false;
this.routeCache = []; this.routeCache = [];
if(dbAssoc) { if (dbAssoc) {
this.databaseId = dbAssoc["job_loc_id"]; this.databaseId = dbAssoc["job_loc_id"];
this.jobId = dbAssoc["job_loc_job"]; this.jobId = dbAssoc["job_loc_job"];
this.position = toVector3(dbAssoc["job_loc_pos_x"], dbAssoc["job_loc_pos_y"], dbAssoc["job_loc_pos_z"]); this.position = toVector3(dbAssoc["job_loc_pos_x"], dbAssoc["job_loc_pos_y"], dbAssoc["job_loc_pos_z"]);
@@ -315,7 +315,7 @@ class JobWhiteListData {
this.jobIndex = -1; this.jobIndex = -1;
this.needsSaved = false; this.needsSaved = false;
if(dbAssoc) { if (dbAssoc) {
this.databaseId = dbAssoc["job_wl_id"]; this.databaseId = dbAssoc["job_wl_id"];
this.job = dbAssoc["job_wl_job"]; this.job = dbAssoc["job_wl_job"];
this.subAccount = dbAssoc["job_wl_sacct"] this.subAccount = dbAssoc["job_wl_sacct"]
@@ -336,7 +336,7 @@ class JobBlackListData {
this.jobIndex = -1; this.jobIndex = -1;
this.needsSaved = false; this.needsSaved = false;
if(dbAssoc) { if (dbAssoc) {
this.databaseId = dbAssoc["job_bl_id"]; this.databaseId = dbAssoc["job_bl_id"];
this.job = dbAssoc["job_bl_job"]; this.job = dbAssoc["job_bl_job"];
this.subAccount = dbAssoc["job_bl_sacct"] this.subAccount = dbAssoc["job_bl_sacct"]
@@ -624,11 +624,11 @@ function createAllJobPickups() {
for (let j in getServerData().jobs[i].locations) { for (let j in getServerData().jobs[i].locations) {
pickupCount++; pickupCount++;
getServerData().jobs[i].locations[j].pickup = game.createPickup(getServerData().jobs[i].pickupModel, getServerData().jobs[i].locations[j].position); getServerData().jobs[i].locations[j].pickup = game.createPickup(getServerData().jobs[i].pickupModel, getServerData().jobs[i].locations[j].position);
setEntityData(getServerData().jobs[i].locations[j].pickup, "vrr.owner.type", VRR_PICKUP_JOB, false); setEntityData(getServerData().jobs[i].locations[j].pickup, "agrp.owner.type", VRR_PICKUP_JOB, false);
setEntityData(getServerData().jobs[i].locations[j].pickup, "vrr.owner.id", j, false); setEntityData(getServerData().jobs[i].locations[j].pickup, "agrp.owner.id", j, false);
setEntityData(getServerData().jobs[i].locations[j].pickup, "vrr.label.type", VRR_LABEL_JOB, true); setEntityData(getServerData().jobs[i].locations[j].pickup, "agrp.label.type", VRR_LABEL_JOB, true);
setEntityData(getServerData().jobs[i].locations[j].pickup, "vrr.label.name", getServerData().jobs[i].name, true); setEntityData(getServerData().jobs[i].locations[j].pickup, "agrp.label.name", getServerData().jobs[i].name, true);
setEntityData(getServerData().jobs[i].locations[j].pickup, "vrr.label.jobType", getServerData().jobs[i].databaseId, true); setEntityData(getServerData().jobs[i].locations[j].pickup, "agrp.label.jobType", getServerData().jobs[i].databaseId, true);
setElementOnAllDimensions(getServerData().jobs[i].locations[j].pickup, false); setElementOnAllDimensions(getServerData().jobs[i].locations[j].pickup, false);
setElementDimension(getServerData().jobs[i].locations[j].pickup, getServerData().jobs[i].locations[j].dimension); setElementDimension(getServerData().jobs[i].locations[j].pickup, getServerData().jobs[i].locations[j].dimension);
addToWorld(getServerData().jobs[i].locations[j].pickup); addToWorld(getServerData().jobs[i].locations[j].pickup);
@@ -2742,11 +2742,11 @@ function createJobLocationPickup(jobId, locationId) {
tempJobData.locations[locationId].pickup = pickup; tempJobData.locations[locationId].pickup = pickup;
setElementDimension(pickup, tempJobData.locations[locationId].dimension); setElementDimension(pickup, tempJobData.locations[locationId].dimension);
setElementOnAllDimensions(pickup, false); setElementOnAllDimensions(pickup, false);
setEntityData(pickup, "vrr.owner.type", VRR_PICKUP_JOB, false); setEntityData(pickup, "agrp.owner.type", VRR_PICKUP_JOB, false);
setEntityData(pickup, "vrr.owner.id", locationId, false); setEntityData(pickup, "agrp.owner.id", locationId, false);
setEntityData(pickup, "vrr.label.type", VRR_LABEL_JOB, true); setEntityData(pickup, "agrp.label.type", VRR_LABEL_JOB, true);
setEntityData(pickup, "vrr.label.name", tempJobData.name, true); setEntityData(pickup, "agrp.label.name", tempJobData.name, true);
setEntityData(pickup, "vrr.label.jobType", tempJobData.databaseId, true); setEntityData(pickup, "agrp.label.jobType", tempJobData.databaseId, true);
addToWorld(pickup); addToWorld(pickup);
} }
} else { } else {

View File

@@ -15,76 +15,42 @@ function initLocaleScript() {
// =========================================================================== // ===========================================================================
function getLocaleString(client, stringName, ...args) { function getLocaleString(client, stringName, ...args) {
let tempString = getRawLocaleString(stringName, getPlayerData(client).locale); let localeId = getPlayerData(client).locale;
if(tempString == "" || tempString == null || typeof tempString == "undefined") { if (!findResourceByName("agrp_locale").exports.doesLocaleStringExist(localeId, stringName)) {
logToConsole(LOG_WARN, `[VRR.Locale] Locale string missing for ${stringName} on language ${getLocaleData(getPlayerData(client).locale).englishName}`);
submitBugReport(client, `(AUTOMATED REPORT) Locale string "${stringName}" is missing for "${getPlayerLocaleName(client)}"`); submitBugReport(client, `(AUTOMATED REPORT) Locale string "${stringName}" is missing for "${getPlayerLocaleName(client)}"`);
return ""; return "";
} }
for(let i = 1; i <= args.length; i++) { return findResourceByName("agrp_locale").exports.getLocaleString(localeId, stringName, args);
tempString = tempString.replace(`{${i}}`, args[i-1]);
}
return tempString;
} }
// =========================================================================== // ===========================================================================
function getLanguageLocaleString(localeId, stringName, ...args) { function getLanguageLocaleString(localeId, stringName, ...args) {
let tempString = getRawLocaleString(stringName, localeId); if (!findResourceByName("agrp_locale").exports.doesLocaleStringExist(localeId, stringName)) {
if(tempString == "" || tempString == null || typeof tempString == "undefined") {
logToConsole(LOG_WARN, `[VRR.Locale] Locale string missing for ${stringName} on language ${getLocaleData(getPlayerData(client).locale).englishName}`);
submitBugReport(client, `(AUTOMATED REPORT) Locale string "${stringName}" is missing for "${getPlayerLocaleName(client)}"`); submitBugReport(client, `(AUTOMATED REPORT) Locale string "${stringName}" is missing for "${getPlayerLocaleName(client)}"`);
return "";
} }
for(let i = 1; i <= args.length; i++) { return findResourceByName("agrp_locale").exports.getLocaleString(getPlayerData(client).locale, stringName, args);
tempString = tempString.replace(`{${i}}`, args[i-1]);
}
return tempString;
} }
// =========================================================================== // ===========================================================================
function getGroupedLocaleString(client, stringName, index, ...args) { function getGroupedLocaleString(client, stringName, index, ...args) {
let tempString = getRawGroupedLocaleString(stringName, getPlayerData(client).locale, index); return findResourceByName("agrp_locale").exports.getGroupedLocaleString(getPlayerData(client).locale, stringName, index, args);
for(let i = 1; i <= args.length; i++) {
tempString = tempString.replace(`{${i}}`, args[i-1]);
}
return tempString;
} }
// =========================================================================== // ===========================================================================
function getRawLocaleString(stringName, localeId) { function getRawLocaleString(stringName, localeId) {
return getLocaleStrings()[localeId][stringName]; return findResourceByName("agrp_locale").exports.getRawLocaleString(localeId, stringName);
//if(findResourceByName("agrp_locale").exports.doesLocaleStringExist(localeId, stringName) == false) {
// return "";
//}
//let tempString = findResourceByName("agrp_locale").exports.getRawLocaleString(localeId, stringName);
//if(tempString == "" || tempString == null || tempString == undefined) {
// return "";
//}
} }
// =========================================================================== // ===========================================================================
function getRawGroupedLocaleString(stringName, localeId, index) { function getRawGroupedLocaleString(stringName, localeId, index) {
return getLocaleStrings()[localeId][stringName][index]; return findResourceByName("agrp_locale").exports.getRawGroupedLocaleString(localeId, stringName, index);
//if(findResourceByName("agrp_locale").exports.doesLocaleStringExist(localeId, stringName) == false) {
// return "";
//}
//let tempString = findResourceByName("agrp_locale").exports.getRawLocaleString(localeId, stringName);
//if(tempString == "" || tempString == null || tempString == undefined) {
// return "";
//}
} }
// =========================================================================== // ===========================================================================
@@ -96,58 +62,24 @@ function getPlayerLocaleName(client) {
// =========================================================================== // ===========================================================================
function loadAllLocaleStrings() {
let tempLocaleStrings = {};
let locales = getGlobalConfig().locale.locales;
for(let i in locales) {
let localeData = locales[i];
let localeFile = JSON.parse(loadTextFile(`locale/${localeData.stringsFile}`));
tempLocaleStrings[i] = localeFile;
}
return tempLocaleStrings;
}
// ===========================================================================
function getLocaleStrings() {
return getServerData().localeStrings;
}
// ===========================================================================
function getLocaleFromParams(params) { function getLocaleFromParams(params) {
let locales = getLocales(); return findResourceByName("agrp_locale").exports.getLocaleFromParams(params);
if(isNaN(params)) {
for(let i in locales) {
if(toLowerCase(locales[i].isoCode).indexOf(toLowerCase(params)) != -1) {
return i;
}
if(toLowerCase(locales[i].englishName).indexOf(toLowerCase(params)) != -1) {
return i;
}
}
}
return -1;
} }
// =========================================================================== // ===========================================================================
function getLocales() { function getLocales() {
return getGlobalConfig().locale.locales; return findResourceByName("agrp_locale").exports.getLocales();
} }
// =========================================================================== // ===========================================================================
function showLocaleListCommand(command, params, client) { function showLocaleListCommand(command, params, client) {
let localeList = getLocales().map(function(x) { return x[0]; }); let localeList = getLocales().map(function (x) { return x[0]; });
let chunkedList = splitArrayIntoChunks(localeList, 10); let chunkedList = splitArrayIntoChunks(localeList, 10);
messagePlayerInfo(client, getLocaleString(client, "HeaderLocaleList")); messagePlayerInfo(client, getLocaleString(client, "HeaderLocaleList"));
for(let i in chunkedList) { for (let i in chunkedList) {
messagePlayerInfo(client, chunkedList[i].join(", ")); messagePlayerInfo(client, chunkedList[i].join(", "));
} }
} }
@@ -155,14 +87,14 @@ function showLocaleListCommand(command, params, client) {
// =========================================================================== // ===========================================================================
function setLocaleCommand(command, params, client) { function setLocaleCommand(command, params, client) {
if(areParamsEmpty(params)) { if (areParamsEmpty(params)) {
messagePlayerSyntax(client, getCommandSyntaxText(command)); messagePlayerSyntax(client, getCommandSyntaxText(command));
return false; return false;
} }
let localeId = getLocaleFromParams(params); let localeId = getLocaleFromParams(params);
if(!getLocaleData(localeId)) { if (!getLocaleData(localeId)) {
messagePlayerInfo(client, getLocaleString(client, "InvalidLocale")); messagePlayerInfo(client, getLocaleString(client, "InvalidLocale"));
return false; return false;
} }
@@ -176,7 +108,7 @@ function setLocaleCommand(command, params, client) {
// =========================================================================== // ===========================================================================
function getLocaleData(localeId) { function getLocaleData(localeId) {
if(typeof getLocales()[localeId] != "undefined") { if (typeof getLocales()[localeId] != "undefined") {
return getLocales()[localeId]; return getLocales()[localeId];
} }
@@ -204,12 +136,12 @@ function reloadLocaleConfigurationCommand(command, params, client) {
async function translateMessage(messageText, translateFrom = getGlobalConfig().locale.defaultLanguageId, translateTo = getGlobalConfig().locale.defaultLanguageId) { async function translateMessage(messageText, translateFrom = getGlobalConfig().locale.defaultLanguageId, translateTo = getGlobalConfig().locale.defaultLanguageId) {
return new Promise(resolve => { return new Promise(resolve => {
if(translateFrom == translateTo) { if (translateFrom == translateTo) {
resolve(messageText); resolve(messageText);
} }
for(let i in cachedTranslations[translateFrom][translateTo]) { for (let i in cachedTranslations[translateFrom][translateTo]) {
if(cachedTranslations[translateFrom][translateTo][i][0] == messageText) { if (cachedTranslations[translateFrom][translateTo][i][0] == messageText) {
logToConsole(LOG_DEBUG, `[Translate]: Using existing translation for ${getGlobalConfig().locale.locales[translateFrom].englishName} to ${getGlobalConfig().locale.locales[translateTo].englishName} - (${messageText}), (${cachedTranslations[translateFrom][translateTo][i][1]})`); logToConsole(LOG_DEBUG, `[Translate]: Using existing translation for ${getGlobalConfig().locale.locales[translateFrom].englishName} to ${getGlobalConfig().locale.locales[translateTo].englishName} - (${messageText}), (${cachedTranslations[translateFrom][translateTo][i][1]})`);
resolve(cachedTranslations[translateFrom][translateTo][i][1]); resolve(cachedTranslations[translateFrom][translateTo][i][1]);
return true; return true;
@@ -220,13 +152,13 @@ async function translateMessage(messageText, translateFrom = getGlobalConfig().l
httpGet( httpGet(
thisTranslationURL, thisTranslationURL,
"", "",
function(data) { function (data) {
data = ArrayBufferToString(data); data = ArrayBufferToString(data);
let translationData = JSON.parse(data); let translationData = JSON.parse(data);
cachedTranslations[translateFrom][translateTo].push([messageText, translationData.responseData.translatedText]); cachedTranslations[translateFrom][translateTo].push([messageText, translationData.responseData.translatedText]);
resolve(translationData.responseData.translatedText); resolve(translationData.responseData.translatedText);
}, },
function(data) { function (data) {
} }
); );
}); });

View File

@@ -168,8 +168,8 @@ function enterExitPropertyCommand(command, params, client) {
return false; return false;
} }
let ownerType = getEntityData(getPlayerData(client).currentPickup, "vrr.owner.type"); let ownerType = getEntityData(getPlayerData(client).currentPickup, "agrp.owner.type");
let ownerId = getEntityData(getPlayerData(client).currentPickup, "vrr.owner.id"); let ownerId = getEntityData(getPlayerData(client).currentPickup, "agrp.owner.id");
switch (ownerType) { switch (ownerType) {
case VRR_PICKUP_BUSINESS_ENTRANCE: case VRR_PICKUP_BUSINESS_ENTRANCE:

View File

@@ -181,7 +181,7 @@ function getVehicleHeading(vehicle) {
function setVehicleHeading(vehicle, heading) { function setVehicleHeading(vehicle, heading) {
if (getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
return sendNetworkEventToPlayer("vrr.vehPosition", null, getVehicleForNetworkEvent(vehicle), heading); return sendNetworkEventToPlayer("agrp.vehPosition", null, getVehicleForNetworkEvent(vehicle), heading);
} }
return vehicle.heading = heading; return vehicle.heading = heading;
} }
@@ -255,7 +255,7 @@ function removePlayerFromVehicle(client) {
function setPlayerSkin(client, skinIndex) { function setPlayerSkin(client, skinIndex) {
logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s skin to ${getGameConfig().skins[getGame()][skinIndex][0]} (Index: ${skinIndex}, Name: ${getGameConfig().skins[getGame()][skinIndex][1]})`); logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s skin to ${getGameConfig().skins[getGame()][skinIndex][0]} (Index: ${skinIndex}, Name: ${getGameConfig().skins[getGame()][skinIndex][1]})`);
if (getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
triggerNetworkEvent("vrr.localPlayerSkin", client, getGameConfig().skins[getGame()][skinIndex][0]); triggerNetworkEvent("agrp.localPlayerSkin", client, getGameConfig().skins[getGame()][skinIndex][0]);
} else { } else {
getPlayerPed(client).modelIndex = getGameConfig().skins[getGame()][skinIndex][0]; getPlayerPed(client).modelIndex = getGameConfig().skins[getGame()][skinIndex][0];
} }
@@ -547,15 +547,15 @@ function repairVehicle(vehicle) {
// =========================================================================== // ===========================================================================
function setVehicleLights(vehicle, lights) { function setVehicleLights(vehicle, lights) {
setEntityData(vehicle, "vrr.lights", lights, true); setEntityData(vehicle, "agrp.lights", lights, true);
sendNetworkEventToPlayer("vrr.veh.lights", null, vehicle.id, lights); sendNetworkEventToPlayer("agrp.veh.lights", null, vehicle.id, lights);
} }
// =========================================================================== // ===========================================================================
function setVehicleEngine(vehicle, engine) { function setVehicleEngine(vehicle, engine) {
vehicle.engine = engine; vehicle.engine = engine;
setEntityData(vehicle, "vrr.engine", engine, true); setEntityData(vehicle, "agrp.engine", engine, true);
} }
// =========================================================================== // ===========================================================================
@@ -688,7 +688,7 @@ function setPlayerFightStyle(client, fightStyleId) {
return false; return false;
} }
setEntityData(getPlayerElement(client), "vrr.fightStyle", [getGameConfig().fightStyles[getGame()][fightStyleId][1][0], getGameConfig().fightStyles[getGame()][fightStyleId][1][1]]); setEntityData(getPlayerElement(client), "agrp.fightStyle", [getGameConfig().fightStyles[getGame()][fightStyleId][1][0], getGameConfig().fightStyles[getGame()][fightStyleId][1][1]]);
forcePlayerToSyncElementProperties(null, getPlayerElement(client)); forcePlayerToSyncElementProperties(null, getPlayerElement(client));
} }
@@ -707,7 +707,7 @@ function getPlayerElement(client) {
// =========================================================================== // ===========================================================================
function setElementPosition(element, position) { function setElementPosition(element, position) {
sendNetworkEventToPlayer("vrr.elementPosition", null, element.id, position); sendNetworkEventToPlayer("agrp.elementPosition", null, element.id, position);
} }
// =========================================================================== // ===========================================================================
@@ -725,14 +725,14 @@ function getElementHeading(element) {
// =========================================================================== // ===========================================================================
function setElementInterior(element, interior) { function setElementInterior(element, interior) {
setEntityData(element, "vrr.interior", interior, true); setEntityData(element, "agrp.interior", interior, true);
forcePlayerToSyncElementProperties(null, element); forcePlayerToSyncElementProperties(null, element);
} }
// =========================================================================== // ===========================================================================
function setElementCollisionsEnabled(element, state) { function setElementCollisionsEnabled(element, state) {
sendNetworkEventToPlayer("vrr.elementCollisions", null, element.id, state); sendNetworkEventToPlayer("agrp.elementCollisions", null, element.id, state);
} }
// =========================================================================== // ===========================================================================
@@ -1142,13 +1142,13 @@ function setVehicleHealth(vehicle, health) {
function givePlayerWeapon(client, weaponId, ammo, active = true) { function givePlayerWeapon(client, weaponId, ammo, active = true) {
logToConsole(LOG_DEBUG, `[VRR.Client] Sending signal to ${getPlayerDisplayForConsole(client)} to give weapon (Weapon: ${weaponId}, Ammo: ${ammo})`); logToConsole(LOG_DEBUG, `[VRR.Client] Sending signal to ${getPlayerDisplayForConsole(client)} to give weapon (Weapon: ${weaponId}, Ammo: ${ammo})`);
sendNetworkEventToPlayer("vrr.giveWeapon", client, weaponId, ammo, active); sendNetworkEventToPlayer("agrp.giveWeapon", client, weaponId, ammo, active);
} }
// =========================================================================== // ===========================================================================
function setPlayerWantedLevel(client, wantedLevel) { function setPlayerWantedLevel(client, wantedLevel) {
sendNetworkEventToPlayer("vrr.wantedLevel", client, wantedLevel); sendNetworkEventToPlayer("agrp.wantedLevel", client, wantedLevel);
return true; return true;
} }
@@ -1287,7 +1287,7 @@ function serverBanIP(ip) {
// =========================================================================== // ===========================================================================
function setVehicleTrunkState(vehicle, trunkState) { function setVehicleTrunkState(vehicle, trunkState) {
sendNetworkEventToPlayer("vrr.veh.trunk", null, getVehicleForNetworkEvent(vehicle), trunkState); sendNetworkEventToPlayer("agrp.veh.trunk", null, getVehicleForNetworkEvent(vehicle), trunkState);
} }
// =========================================================================== // ===========================================================================

View File

@@ -40,10 +40,10 @@ let disconnectReasons = [
// =========================================================================== // ===========================================================================
function getPlayerPosition(client) { function getPlayerPosition(client) {
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
return getPlayerData(client).syncPosition; return getPlayerData(client).syncPosition;
} else { } else {
if(getPlayerPed(client) != null) { if (getPlayerPed(client) != null) {
return getPlayerPed(client).position; return getPlayerPed(client).position;
} }
} }
@@ -59,10 +59,10 @@ function setPlayerPosition(client, position) {
// =========================================================================== // ===========================================================================
function getPlayerHeading(client) { function getPlayerHeading(client) {
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
return getPlayerData(client).syncHeading; return getPlayerData(client).syncHeading;
} else { } else {
if(getPlayerPed(client) != null) { if (getPlayerPed(client) != null) {
return getPlayerPed(client).heading; return getPlayerPed(client).heading;
} }
} }
@@ -78,10 +78,10 @@ function setPlayerHeading(client, heading) {
// =========================================================================== // ===========================================================================
function getPlayerVehicle(client) { function getPlayerVehicle(client) {
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
return getPlayerData().syncVehicle; return getPlayerData().syncVehicle;
} else { } else {
if(getPlayerPed(client).vehicle) { if (getPlayerPed(client).vehicle) {
return getPlayerPed(client).vehicle; return getPlayerPed(client).vehicle;
} }
} }
@@ -91,10 +91,10 @@ function getPlayerVehicle(client) {
// =========================================================================== // ===========================================================================
function getPlayerDimension(client) { function getPlayerDimension(client) {
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
return getPlayerData(client).syncDimension; return getPlayerData(client).syncDimension;
} else { } else {
if(getPlayerPed(client) != null) { if (getPlayerPed(client) != null) {
return getPlayerPed(client).dimension; return getPlayerPed(client).dimension;
} }
} }
@@ -110,10 +110,10 @@ function getPlayerInterior(client) {
function setPlayerDimension(client, dimension) { function setPlayerDimension(client, dimension) {
logToConsole(LOG_VERBOSE, `Setting ${getPlayerDisplayForConsole(client)}'s dimension to ${dimension}`); logToConsole(LOG_VERBOSE, `Setting ${getPlayerDisplayForConsole(client)}'s dimension to ${dimension}`);
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
getPlayerData(client).syncDimension = dimension; getPlayerData(client).syncDimension = dimension;
} else { } else {
if(getPlayerPed(client) != null) { if (getPlayerPed(client) != null) {
getPlayerPed(client).dimension = dimension; getPlayerPed(client).dimension = dimension;
} }
} }
@@ -124,7 +124,7 @@ function setPlayerDimension(client, dimension) {
function setPlayerInterior(client, interior) { function setPlayerInterior(client, interior) {
logToConsole(LOG_VERBOSE, `Setting ${getPlayerDisplayForConsole(client)}'s interior to ${interior}`); logToConsole(LOG_VERBOSE, `Setting ${getPlayerDisplayForConsole(client)}'s interior to ${interior}`);
sendPlayerSetInterior(client, interior); sendPlayerSetInterior(client, interior);
if(isPlayerLoggedIn(client) && isPlayerSpawned(client)) { if (isPlayerLoggedIn(client) && isPlayerSpawned(client)) {
getPlayerCurrentSubAccount(client).interior = interior; getPlayerCurrentSubAccount(client).interior = interior;
} }
} }
@@ -132,7 +132,7 @@ function setPlayerInterior(client, interior) {
// =========================================================================== // ===========================================================================
function isPlayerInAnyVehicle(client) { function isPlayerInAnyVehicle(client) {
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
return (getPlayerData().syncVehicle != null); return (getPlayerData().syncVehicle != null);
} else { } else {
return (getPlayerPed(client).vehicle != null); return (getPlayerPed(client).vehicle != null);
@@ -142,15 +142,15 @@ function isPlayerInAnyVehicle(client) {
// =========================================================================== // ===========================================================================
function getPlayerVehicleSeat(client) { function getPlayerVehicleSeat(client) {
if(!isPlayerInAnyVehicle(client)) { if (!isPlayerInAnyVehicle(client)) {
return false; return false;
} }
if(!areServerElementsSupported()) { if (!areServerElementsSupported()) {
return getPlayerData().syncVehicleSeat; return getPlayerData().syncVehicleSeat;
} else { } else {
for(let i = 0 ; i <= 8 ; i++) { for (let i = 0; i <= 8; i++) {
if(getPlayerVehicle(client).getOccupant(i) == getPlayerPed(client)) { if (getPlayerVehicle(client).getOccupant(i) == getPlayerPed(client)) {
return i; return i;
} }
} }
@@ -180,8 +180,8 @@ function getVehicleHeading(vehicle) {
// =========================================================================== // ===========================================================================
function setVehicleHeading(vehicle, heading) { function setVehicleHeading(vehicle, heading) {
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
return sendNetworkEventToPlayer("vrr.vehPosition", null, getVehicleForNetworkEvent(vehicle), heading); return sendNetworkEventToPlayer("agrp.vehPosition", null, getVehicleForNetworkEvent(vehicle), heading);
} }
return vehicle.heading = heading; return vehicle.heading = heading;
} }
@@ -189,7 +189,7 @@ function setVehicleHeading(vehicle, heading) {
// =========================================================================== // ===========================================================================
function getElementTransient(element) { function getElementTransient(element) {
if(typeof element.transient != "undefined") { if (typeof element.transient != "undefined") {
return element.transient; return element.transient;
} }
return false; return false;
@@ -198,7 +198,7 @@ function getElementTransient(element) {
// =========================================================================== // ===========================================================================
function setElementTransient(element, state) { function setElementTransient(element, state) {
if(typeof element.transient != "undefined") { if (typeof element.transient != "undefined") {
element.transient = state; element.transient = state;
return true; return true;
} }
@@ -214,8 +214,8 @@ function getVehicleSyncer(vehicle) {
// =========================================================================== // ===========================================================================
function getVehicleForNetworkEvent(vehicle) { function getVehicleForNetworkEvent(vehicle) {
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
if(getVehicleData(vehicle).ivNetworkId != -1) { if (getVehicleData(vehicle).ivNetworkId != -1) {
return getVehicleData(vehicle).ivNetworkId; return getVehicleData(vehicle).ivNetworkId;
} }
return -1; return -1;
@@ -227,11 +227,11 @@ function getVehicleForNetworkEvent(vehicle) {
function deleteGameElement(element) { function deleteGameElement(element) {
try { try {
if(element != null) { if (element != null) {
destroyElement(element); destroyElement(element);
return true; return true;
} }
} catch(error) { } catch (error) {
return false; return false;
} }
} }
@@ -254,8 +254,8 @@ function removePlayerFromVehicle(client) {
function setPlayerSkin(client, skinIndex) { function setPlayerSkin(client, skinIndex) {
logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s skin to ${getGameConfig().skins[getGame()][skinIndex][0]} (Index: ${skinIndex}, Name: ${getGameConfig().skins[getGame()][skinIndex][1]})`); logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s skin to ${getGameConfig().skins[getGame()][skinIndex][0]} (Index: ${skinIndex}, Name: ${getGameConfig().skins[getGame()][skinIndex][1]})`);
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
triggerNetworkEvent("vrr.localPlayerSkin", client, getGameConfig().skins[getGame()][skinIndex][0]); triggerNetworkEvent("agrp.localPlayerSkin", client, getGameConfig().skins[getGame()][skinIndex][0]);
} else { } else {
getPlayerPed(client).modelIndex = getGameConfig().skins[getGame()][skinIndex][0]; getPlayerPed(client).modelIndex = getGameConfig().skins[getGame()][skinIndex][0];
} }
@@ -292,7 +292,7 @@ function setPlayerArmour(client, armour) {
// =========================================================================== // ===========================================================================
function getPlayerArmour(client) { function getPlayerArmour(client) {
if(areServerElementsSupported(client)) { if (areServerElementsSupported(client)) {
return getPlayerPed(client).armour; return getPlayerPed(client).armour;
} else { } else {
return getPlayerData(client).syncArmour; return getPlayerData(client).syncArmour;
@@ -302,11 +302,11 @@ function getPlayerArmour(client) {
// =========================================================================== // ===========================================================================
function setPlayerCash(client, amount) { function setPlayerCash(client, amount) {
if(client == null) { if (client == null) {
return false; return false;
} }
if(isNaN(amount)) { if (isNaN(amount)) {
return false; return false;
} }
@@ -317,11 +317,11 @@ function setPlayerCash(client, amount) {
// =========================================================================== // ===========================================================================
function givePlayerCash(client, amount) { function givePlayerCash(client, amount) {
if(client == null) { if (client == null) {
return false; return false;
} }
if(isNaN(amount)) { if (isNaN(amount)) {
return false; return false;
} }
@@ -332,11 +332,11 @@ function givePlayerCash(client, amount) {
// =========================================================================== // ===========================================================================
function takePlayerCash(client, amount) { function takePlayerCash(client, amount) {
if(client == null) { if (client == null) {
return false; return false;
} }
if(isNaN(amount)) { if (isNaN(amount)) {
return false; return false;
} }
@@ -368,7 +368,7 @@ function getPlayerWeaponAmmo(client) {
function setPlayerVelocity(client, velocity) { function setPlayerVelocity(client, velocity) {
logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s velocity to ${velocity.x}, ${velocity.y}, ${velocity.z}`); logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s velocity to ${velocity.x}, ${velocity.y}, ${velocity.z}`);
if(typeof getPlayerPed(client).velocity != "undefined") { if (typeof getPlayerPed(client).velocity != "undefined") {
getPlayerPed(client).velocity = velocity; getPlayerPed(client).velocity = velocity;
} }
} }
@@ -376,7 +376,7 @@ function setPlayerVelocity(client, velocity) {
// =========================================================================== // ===========================================================================
function getPlayerVelocity(client) { function getPlayerVelocity(client) {
if(typeof getPlayerPed(client).velocity != "undefined") { if (typeof getPlayerPed(client).velocity != "undefined") {
return getPlayerPed(client).velocity; return getPlayerPed(client).velocity;
} }
return toVector3(0.0, 0.0, 0.0); return toVector3(0.0, 0.0, 0.0);
@@ -385,7 +385,7 @@ function getPlayerVelocity(client) {
// =========================================================================== // ===========================================================================
function getElementDimension(element) { function getElementDimension(element) {
if(typeof element.dimension != "undefined") { if (typeof element.dimension != "undefined") {
return element.dimension; return element.dimension;
} }
return 0; return 0;
@@ -394,7 +394,7 @@ function getElementDimension(element) {
// =========================================================================== // ===========================================================================
function setElementDimension(element, dimension) { function setElementDimension(element, dimension) {
if(typeof element.dimension != "undefined") { if (typeof element.dimension != "undefined") {
logToConsole(LOG_VERBOSE, `Setting element ${element} (${element.id}) dimension to ${dimension}`); logToConsole(LOG_VERBOSE, `Setting element ${element} (${element.id}) dimension to ${dimension}`);
element.dimension = dimension; element.dimension = dimension;
return true; return true;
@@ -405,7 +405,7 @@ function setElementDimension(element, dimension) {
// =========================================================================== // ===========================================================================
function setElementRotation(element, rotation) { function setElementRotation(element, rotation) {
if(typeof element.setRotation != "undefined") { if (typeof element.setRotation != "undefined") {
element.setRotation(rotation); element.setRotation(rotation);
} else { } else {
return element.rotation = rotation; return element.rotation = rotation;
@@ -415,24 +415,24 @@ function setElementRotation(element, rotation) {
// =========================================================================== // ===========================================================================
function givePlayerHealth(client, amount) { function givePlayerHealth(client, amount) {
if(getPlayerHealth(client)+amount > 100) { if (getPlayerHealth(client) + amount > 100) {
logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s health to 100`); logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s health to 100`);
setPlayerHealth(client, 100); setPlayerHealth(client, 100);
} else { } else {
logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s health to ${getPlayerHealth(client)+amount}`); logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s health to ${getPlayerHealth(client) + amount}`);
setPlayerHealth(client, getPlayerHealth(client)+amount); setPlayerHealth(client, getPlayerHealth(client) + amount);
} }
} }
// =========================================================================== // ===========================================================================
function givePlayerArmour(client, amount) { function givePlayerArmour(client, amount) {
if(getPlayerArmour(client)+amount > 100) { if (getPlayerArmour(client) + amount > 100) {
logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s armour to 100`); logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s armour to 100`);
setPlayerArmour(client, 100); setPlayerArmour(client, 100);
} else { } else {
logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s armour to ${getPlayerArmour(client)+amount}`); logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s armour to ${getPlayerArmour(client) + amount}`);
setPlayerArmour(client, getPlayerArmour(client)+amount); setPlayerArmour(client, getPlayerArmour(client) + amount);
} }
} }
@@ -469,7 +469,7 @@ function getServerName() {
// =========================================================================== // ===========================================================================
function createGamePickup(modelIndex, position, type) { function createGamePickup(modelIndex, position, type) {
if(!isGameFeatureSupported("pickups")) { if (!isGameFeatureSupported("pickups")) {
return false; return false;
} }
return game.createPickup(modelIndex, position, type); return game.createPickup(modelIndex, position, type);
@@ -478,7 +478,7 @@ function createGamePickup(modelIndex, position, type) {
// =========================================================================== // ===========================================================================
function createGameBlip(position, type = 0, colour = toColour(255, 255, 255, 255)) { function createGameBlip(position, type = 0, colour = toColour(255, 255, 255, 255)) {
if(!isGameFeatureSupported("blips")) { if (!isGameFeatureSupported("blips")) {
return false; return false;
} }
return game.createBlip(type, position, 1, colour); return game.createBlip(type, position, 1, colour);
@@ -487,7 +487,7 @@ function createGameBlip(position, type = 0, colour = toColour(255, 255, 255, 255
// =========================================================================== // ===========================================================================
function createGameObject(modelIndex, position) { function createGameObject(modelIndex, position) {
if(!isGameFeatureSupported("objects")) { if (!isGameFeatureSupported("objects")) {
return false; return false;
} }
return game.createObject(getGameConfig().objects[getGame()][modelIndex][0], position); return game.createObject(getGameConfig().objects[getGame()][modelIndex][0], position);
@@ -496,13 +496,13 @@ function createGameObject(modelIndex, position) {
// =========================================================================== // ===========================================================================
function setElementOnAllDimensions(element, state) { function setElementOnAllDimensions(element, state) {
if(!isNull(element) && element != false) { if (!isNull(element) && element != false) {
if(typeof element.netFlags != "undefined") { if (typeof element.netFlags != "undefined") {
if(typeof element.netFlags.onAllDimensions != "undefined") { if (typeof element.netFlags.onAllDimensions != "undefined") {
element.netFlags.onAllDimensions = state; element.netFlags.onAllDimensions = state;
} }
} else { } else {
if(typeof element.onAllDimensions != "undefined") { if (typeof element.onAllDimensions != "undefined") {
element.onAllDimensions = state; element.onAllDimensions = state;
} }
} }
@@ -512,7 +512,7 @@ function setElementOnAllDimensions(element, state) {
// =========================================================================== // ===========================================================================
function destroyGameElement(element) { function destroyGameElement(element) {
if(!isNull(element) && element != false) { if (!isNull(element) && element != false) {
destroyElement(element); destroyElement(element);
} }
} }
@@ -532,7 +532,7 @@ function getPlayerLastVehicle(client) {
// =========================================================================== // ===========================================================================
function isVehicleObject(vehicle) { function isVehicleObject(vehicle) {
if(vehicle == null || vehicle == undefined) { if (vehicle == null || vehicle == undefined) {
return false; return false;
} }
return (vehicle.type == ELEMENT_VEHICLE); return (vehicle.type == ELEMENT_VEHICLE);
@@ -547,15 +547,15 @@ function repairVehicle(vehicle) {
// =========================================================================== // ===========================================================================
function setVehicleLights(vehicle, lights) { function setVehicleLights(vehicle, lights) {
setEntityData(vehicle, "vrr.lights", lights, true); setEntityData(vehicle, "agrp.lights", lights, true);
sendNetworkEventToPlayer("vrr.veh.lights", null, vehicle.id, lights); sendNetworkEventToPlayer("agrp.veh.lights", null, vehicle.id, lights);
} }
// =========================================================================== // ===========================================================================
function setVehicleEngine(vehicle, engine) { function setVehicleEngine(vehicle, engine) {
vehicle.engine = engine; vehicle.engine = engine;
setEntityData(vehicle, "vrr.engine", engine, true); setEntityData(vehicle, "agrp.engine", engine, true);
} }
// =========================================================================== // ===========================================================================
@@ -600,11 +600,11 @@ function setVehicleColours(vehicle, colour1, colour2, colour3 = -1, colour4 = -1
vehicle.colour1 = colour1; vehicle.colour1 = colour1;
vehicle.colour2 = colour2; vehicle.colour2 = colour2;
if(colour3 != -1) { if (colour3 != -1) {
vehicle.colour3 = colour3; vehicle.colour3 = colour3;
} }
if(colour4 != -1) { if (colour4 != -1) {
vehicle.colour4 = colour4; vehicle.colour4 = colour4;
} }
} }
@@ -612,7 +612,7 @@ function setVehicleColours(vehicle, colour1, colour2, colour3 = -1, colour4 = -1
// =========================================================================== // ===========================================================================
function createGameVehicle(modelIndex, position, heading) { function createGameVehicle(modelIndex, position, heading) {
if(areServerElementsSupported()) { if (areServerElementsSupported()) {
return mp.vehicles.new(getGameConfig().vehicles[getGame()][modelIndex][0], position, { return mp.vehicles.new(getGameConfig().vehicles[getGame()][modelIndex][0], position, {
heading: heading, heading: heading,
numberPlate: "", numberPlate: "",
@@ -628,7 +628,7 @@ function createGameVehicle(modelIndex, position, heading) {
// =========================================================================== // ===========================================================================
function createGameCivilian(modelIndex, position, heading) { function createGameCivilian(modelIndex, position, heading) {
if(areServerElementsSupported()) { if (areServerElementsSupported()) {
return mp.peds.new(getGameConfig().skins[getGame()][modelIndex][1], position, heading, 0); return mp.peds.new(getGameConfig().skins[getGame()][modelIndex][1], position, heading, 0);
} }
@@ -644,7 +644,7 @@ function getIsland(position) {
// =========================================================================== // ===========================================================================
function isValidVehicleModel(model) { function isValidVehicleModel(model) {
if(getVehicleModelIndexFromModel(model) != false) { if (getVehicleModelIndexFromModel(model) != false) {
return true; return true;
} }
@@ -654,7 +654,7 @@ function isValidVehicleModel(model) {
// =========================================================================== // ===========================================================================
function setGameTime(hour, minute, minuteDuration = 1000) { function setGameTime(hour, minute, minuteDuration = 1000) {
if(isTimeSupported()) { if (isTimeSupported()) {
game.time.hour = hour; game.time.hour = hour;
game.time.minute = minute; game.time.minute = minute;
game.time.minuteDuration = minuteDuration; game.time.minuteDuration = minuteDuration;
@@ -664,7 +664,7 @@ function setGameTime(hour, minute, minuteDuration = 1000) {
// =========================================================================== // ===========================================================================
function setGameWeather(weather) { function setGameWeather(weather) {
if(isWeatherSupported()) { if (isWeatherSupported()) {
mp.world.weather = weather; mp.world.weather = weather;
} }
} }
@@ -690,7 +690,7 @@ function getPlayerElement(client) {
// =========================================================================== // ===========================================================================
function setElementPosition(element, position) { function setElementPosition(element, position) {
sendNetworkEventToPlayer("vrr.elementPosition", null, element.id, position); sendNetworkEventToPlayer("agrp.elementPosition", null, element.id, position);
} }
// =========================================================================== // ===========================================================================
@@ -714,13 +714,13 @@ function setElementInterior(element, interior) {
// =========================================================================== // ===========================================================================
function setElementCollisionsEnabled(element, state) { function setElementCollisionsEnabled(element, state) {
//sendNetworkEventToPlayer("vrr.elementCollisions", null, element.id, state); //sendNetworkEventToPlayer("agrp.elementCollisions", null, element.id, state);
} }
// =========================================================================== // ===========================================================================
function isTaxiVehicle(vehicle) { function isTaxiVehicle(vehicle) {
if(getGameConfig().taxiModels[getGame()].indexOf(vehicle.modelIndex) != -1) { if (getGameConfig().taxiModels[getGame()].indexOf(vehicle.modelIndex) != -1) {
return true; return true;
} }
@@ -737,7 +737,7 @@ function getVehicleName(vehicle) {
// =========================================================================== // ===========================================================================
function getElementModel(element) { function getElementModel(element) {
if(typeof element.model != "undefined") { if (typeof element.model != "undefined") {
return element.model; return element.model;
} }
} }
@@ -757,11 +757,11 @@ function getPlayerWeapon(client) {
// =========================================================================== // ===========================================================================
function connectToDatabase() { function connectToDatabase() {
if(getDatabaseConfig().usePersistentConnection) { if (getDatabaseConfig().usePersistentConnection) {
if(persistentDatabaseConnection == null) { if (persistentDatabaseConnection == null) {
logToConsole(LOG_DEBUG, `[VRR.Database] Initializing database connection ...`); logToConsole(LOG_DEBUG, `[VRR.Database] Initializing database connection ...`);
persistentDatabaseConnection = module.mysql.connect(getDatabaseConfig().host, getDatabaseConfig().user, getDatabaseConfig().pass, getDatabaseConfig().name, getDatabaseConfig().port); persistentDatabaseConnection = module.mysql.connect(getDatabaseConfig().host, getDatabaseConfig().user, getDatabaseConfig().pass, getDatabaseConfig().name, getDatabaseConfig().port);
if(persistentDatabaseConnection.error) { if (persistentDatabaseConnection.error) {
logToConsole(LOG_ERROR, `[VRR.Database] Database connection error: ${persistentDatabaseConnection.error}`); logToConsole(LOG_ERROR, `[VRR.Database] Database connection error: ${persistentDatabaseConnection.error}`);
persistentDatabaseConnection = null; persistentDatabaseConnection = null;
return false; return false;
@@ -775,7 +775,7 @@ function connectToDatabase() {
} }
} else { } else {
let databaseConnection = module.mysql.connect(getDatabaseConfig().host, getDatabaseConfig().user, getDatabaseConfig().pass, getDatabaseConfig().name, getDatabaseConfig().port); let databaseConnection = module.mysql.connect(getDatabaseConfig().host, getDatabaseConfig().user, getDatabaseConfig().pass, getDatabaseConfig().name, getDatabaseConfig().port);
if(databaseConnection.error) { if (databaseConnection.error) {
logToConsole(LOG_ERROR, `[VRR.Database] Database connection error: ${persistentDatabaseConnection.error}`); logToConsole(LOG_ERROR, `[VRR.Database] Database connection error: ${persistentDatabaseConnection.error}`);
return false; return false;
} else { } else {
@@ -787,11 +787,11 @@ function connectToDatabase() {
// =========================================================================== // ===========================================================================
function disconnectFromDatabase(dbConnection) { function disconnectFromDatabase(dbConnection) {
if(!getDatabaseConfig().usePersistentConnection) { if (!getDatabaseConfig().usePersistentConnection) {
try { try {
dbConnection.close(); dbConnection.close();
logToConsole(LOG_DEBUG, `[VRR.Database] Database connection closed successfully`); logToConsole(LOG_DEBUG, `[VRR.Database] Database connection closed successfully`);
} catch(error) { } catch (error) {
logToConsole(LOG_ERROR, `[VRR.Database] Database connection could not be closed! (Error: ${error})`); logToConsole(LOG_ERROR, `[VRR.Database] Database connection could not be closed! (Error: ${error})`);
} }
} }
@@ -802,7 +802,7 @@ function disconnectFromDatabase(dbConnection) {
function queryDatabase(dbConnection, queryString, useThread = false) { function queryDatabase(dbConnection, queryString, useThread = false) {
logToConsole(LOG_DEBUG, `[VRR.Database] Query string: ${queryString}`); logToConsole(LOG_DEBUG, `[VRR.Database] Query string: ${queryString}`);
if(useThread == true) { if (useThread == true) {
Promise.resolve().then(() => { Promise.resolve().then(() => {
let queryResult = dbConnection.query(queryString); let queryResult = dbConnection.query(queryString);
return queryResult; return queryResult;
@@ -815,11 +815,11 @@ function queryDatabase(dbConnection, queryString, useThread = false) {
// =========================================================================== // ===========================================================================
function escapeDatabaseString(dbConnection, unsafeString = "") { function escapeDatabaseString(dbConnection, unsafeString = "") {
if(!dbConnection) { if (!dbConnection) {
dbConnection = connectToDatabase(); dbConnection = connectToDatabase();
} }
if(typeof unsafeString == "string") { if (typeof unsafeString == "string") {
return dbConnection.escapeString(unsafeString); return dbConnection.escapeString(unsafeString);
} }
return unsafeString; return unsafeString;
@@ -846,7 +846,7 @@ function getDatabaseError(dbConnection) {
// =========================================================================== // ===========================================================================
function freeDatabaseQuery(dbQuery) { function freeDatabaseQuery(dbQuery) {
if(dbQuery != null) { if (dbQuery != null) {
dbQuery.free(); dbQuery.free();
} }
return; return;
@@ -863,26 +863,26 @@ function fetchQueryAssoc(dbQuery) {
function quickDatabaseQuery(queryString) { function quickDatabaseQuery(queryString) {
let dbConnection = connectToDatabase(); let dbConnection = connectToDatabase();
let insertId = 0; let insertId = 0;
if(dbConnection) { if (dbConnection) {
//logToConsole(LOG_DEBUG, `[VRR.Database] Query string: ${queryString}`); //logToConsole(LOG_DEBUG, `[VRR.Database] Query string: ${queryString}`);
let dbQuery = queryDatabase(dbConnection, queryString); let dbQuery = queryDatabase(dbConnection, queryString);
if(getDatabaseInsertId(dbConnection)) { if (getDatabaseInsertId(dbConnection)) {
insertId = getDatabaseInsertId(dbConnection); insertId = getDatabaseInsertId(dbConnection);
logToConsole(LOG_DEBUG, `[VRR.Database] Query returned insert id ${insertId}`); logToConsole(LOG_DEBUG, `[VRR.Database] Query returned insert id ${insertId}`);
} }
if(dbQuery) { if (dbQuery) {
try { try {
freeDatabaseQuery(dbQuery); freeDatabaseQuery(dbQuery);
logToConsole(LOG_DEBUG, `[VRR.Database] Query result free'd successfully`); logToConsole(LOG_DEBUG, `[VRR.Database] Query result free'd successfully`);
} catch(error) { } catch (error) {
logToConsole(LOG_ERROR, `[VRR.Database] Query result could not be free'd! (Error: ${error})`); logToConsole(LOG_ERROR, `[VRR.Database] Query result could not be free'd! (Error: ${error})`);
} }
} }
disconnectFromDatabase(dbConnection); disconnectFromDatabase(dbConnection);
if(insertId != 0) { if (insertId != 0) {
return insertId; return insertId;
} }
@@ -915,8 +915,8 @@ function getElementId(element) {
function getClientFromIndex(index) { function getClientFromIndex(index) {
let clients = getClients(); let clients = getClients();
for(let i in clients) { for (let i in clients) {
if(clients[i].index == index) { if (clients[i].index == index) {
return clients[i]; return clients[i];
} }
} }
@@ -955,7 +955,7 @@ function getClosestCivilian(position) {
// =========================================================================== // ===========================================================================
function getVehiclesInRange(position, range) { function getVehiclesInRange(position, range) {
if(getGame() == VRR_GAME_GTA_IV) { if (getGame() == VRR_GAME_GTA_IV) {
return getServerData().vehicles.reduce((i, j) => (getDistance(position, i.syncPosition) <= getDistance(position, j.syncPosition)) ? i : j); return getServerData().vehicles.reduce((i, j) => (getDistance(position, i.syncPosition) <= getDistance(position, j.syncPosition)) ? i : j);
} }
return getElementsByTypeInRange(ELEMENT_VEHICLE, position, range); return getElementsByTypeInRange(ELEMENT_VEHICLE, position, range);
@@ -976,8 +976,8 @@ function getClosestElementByType(elementType, position) {
// =========================================================================== // ===========================================================================
function getVehicleFirstEmptySeat(vehicle) { function getVehicleFirstEmptySeat(vehicle) {
for(let i = 0; i <= 4; i++) { for (let i = 0; i <= 4; i++) {
if(vehicle.getOccupant(i) == null) { if (vehicle.getOccupant(i) == null) {
return i; return i;
} }
} }
@@ -1014,14 +1014,14 @@ function setVehicleHealth(vehicle, health) {
function givePlayerWeapon(client, weaponId, ammo, active = true) { function givePlayerWeapon(client, weaponId, ammo, active = true) {
//logToConsole(LOG_DEBUG, `[VRR.Client] Sending signal to ${getPlayerDisplayForConsole(client)} to give weapon (Weapon: ${weaponId}, Ammo: ${ammo})`); //logToConsole(LOG_DEBUG, `[VRR.Client] Sending signal to ${getPlayerDisplayForConsole(client)} to give weapon (Weapon: ${weaponId}, Ammo: ${ammo})`);
//sendNetworkEventToPlayer("vrr.giveWeapon", client, weaponId, ammo, active); //sendNetworkEventToPlayer("agrp.giveWeapon", client, weaponId, ammo, active);
client.giveWeapon(weaponId, ammo); client.giveWeapon(weaponId, ammo);
} }
// =========================================================================== // ===========================================================================
function setPlayerWantedLevel(client, wantedLevel) { function setPlayerWantedLevel(client, wantedLevel) {
//sendNetworkEventToPlayer("vrr.wantedLevel", client, wantedLevel); //sendNetworkEventToPlayer("agrp.wantedLevel", client, wantedLevel);
return true; return true;
} }
@@ -1046,9 +1046,9 @@ function getPlayerPed(client) {
// =========================================================================== // ===========================================================================
function setEntityData(entity, dataName, dataValue, syncToClients = true) { function setEntityData(entity, dataName, dataValue, syncToClients = true) {
if(entity != null) { if (entity != null) {
if(areServerElementsSupported()) { if (areServerElementsSupported()) {
if(syncToClients) { if (syncToClients) {
return entity.setVariable(dataName, dataValue); return entity.setVariable(dataName, dataValue);
} else { } else {
return entity.setOwnVariable(dataName, dataValue); return entity.setOwnVariable(dataName, dataValue);
@@ -1061,8 +1061,8 @@ function setEntityData(entity, dataName, dataValue, syncToClients = true) {
// =========================================================================== // ===========================================================================
function removeEntityData(entity, dataName) { function removeEntityData(entity, dataName) {
if(entity != null) { if (entity != null) {
if(areServerElementsSupported()) { if (areServerElementsSupported()) {
return entity.setVariable(dataName, null); return entity.setVariable(dataName, null);
} }
} }
@@ -1072,8 +1072,8 @@ function removeEntityData(entity, dataName) {
// =========================================================================== // ===========================================================================
function doesEntityDataExist(entity, dataName) { function doesEntityDataExist(entity, dataName) {
if(entity != null) { if (entity != null) {
if(areServerElementsSupported()) { if (areServerElementsSupported()) {
return (entity.getVariable(dataName) != null); return (entity.getVariable(dataName) != null);
} else { } else {
return false; return false;
@@ -1169,7 +1169,7 @@ function serverBanIP(ip) {
// =========================================================================== // ===========================================================================
function setVehicleTrunkState(vehicle, trunkState) { function setVehicleTrunkState(vehicle, trunkState) {
//sendNetworkEventToPlayer("vrr.veh.trunk", null, getVehicleForNetworkEvent(vehicle), trunkState); //sendNetworkEventToPlayer("agrp.veh.trunk", null, getVehicleForNetworkEvent(vehicle), trunkState);
} }
// =========================================================================== // ===========================================================================
@@ -1201,7 +1201,7 @@ function addAllEventHandlers() {
// =========================================================================== // ===========================================================================
function addServerCommandHandler(command, handlerFunction) { function addServerCommandHandler(command, handlerFunction) {
mp.events.addCommand(command, function(client, ...args) { mp.events.addCommand(command, function (client, ...args) {
handlerFunction.call(command, args.join(" "), client); handlerFunction.call(command, args.join(" "), client);
}); });
} }
@@ -1209,7 +1209,7 @@ function addServerCommandHandler(command, handlerFunction) {
// =========================================================================== // ===========================================================================
function addServerEventHandler(eventName, handlerFunction) { function addServerEventHandler(eventName, handlerFunction) {
mp.events.add(eventName, function(event, ...args) { mp.events.add(eventName, function (event, ...args) {
let result = handlerFunction.apply(this, args); let result = handlerFunction.apply(this, args);
}); });
} }
@@ -1217,7 +1217,7 @@ function addServerEventHandler(eventName, handlerFunction) {
// =========================================================================== // ===========================================================================
function bindServerEventHandler(eventName, bindTo, handlerFunction) { function bindServerEventHandler(eventName, bindTo, handlerFunction) {
mp.events.add(eventName, function(event, ...args) { mp.events.add(eventName, function (event, ...args) {
let result = handlerFunction.apply(this, args); let result = handlerFunction.apply(this, args);
}); });
} }

File diff suppressed because it is too large Load Diff

View File

@@ -466,11 +466,11 @@ function spawnNPC(npcIndex) {
let ped = createGamePed(npcData.skin, npcData.position, npcData.rotation.z); let ped = createGamePed(npcData.skin, npcData.position, npcData.rotation.z);
if (ped) { if (ped) {
getNPCData(npcIndex).ped = ped; getNPCData(npcIndex).ped = ped;
setEntityData(ped, "vrr.dataIndex", npcIndex, false); setEntityData(ped, "agrp.dataIndex", npcIndex, false);
if (npcData.animationName != "") { if (npcData.animationName != "") {
let animationId = getAnimationFromParams(npcData.animationName); let animationId = getAnimationFromParams(npcData.animationName);
if (animationId != false) { if (animationId != false) {
setEntityData(ped, "vrr.anim", animationId, true); setEntityData(ped, "agrp.anim", animationId, true);
} }
} }
setElementDimension(ped, npcData.dimension); setElementDimension(ped, npcData.dimension);
@@ -590,7 +590,7 @@ function toggleNPCLookAtClosestPlayerCommand(command, params, client) {
getNPCData(closestNPC).lookAtClosestPlayer = !getNPCData(closestNPC).lookAtClosestPlayer; getNPCData(closestNPC).lookAtClosestPlayer = !getNPCData(closestNPC).lookAtClosestPlayer;
getNPCData(closestNPC).needsSaved = true; getNPCData(closestNPC).needsSaved = true;
setEntityData(getNPCData(closestNPC).ped, "vrr.lookAtClosestPlayer", getNPCData(closestNPC).lookAtClosestPlayer, true); setEntityData(getNPCData(closestNPC).ped, "agrp.lookAtClosestPlayer", getNPCData(closestNPC).lookAtClosestPlayer, true);
forcePlayerToSyncElementProperties(null, getNPCData(closestNPC).ped); forcePlayerToSyncElementProperties(null, getNPCData(closestNPC).ped);
//messagePlayerSuccess(client, getLocaleString(client, "NPCLookAtClosestPlayerSet", `{ALTCOLOUR}${getNPCData(closestNPC).name}{MAINCOLOUR})); //messagePlayerSuccess(client, getLocaleString(client, "NPCLookAtClosestPlayerSet", `{ALTCOLOUR}${getNPCData(closestNPC).name}{MAINCOLOUR}));
} }

View File

@@ -16,7 +16,7 @@ class RadioStationData {
this.codec = ""; this.codec = "";
this.index = -1; this.index = -1;
if(dbAssoc) { if (dbAssoc) {
this.databaseId = dbAssoc["radio_id"]; this.databaseId = dbAssoc["radio_id"];
this.name = dbAssoc["radio_name"]; this.name = dbAssoc["radio_name"];
this.url = dbAssoc["radio_url"]; this.url = dbAssoc["radio_url"];
@@ -41,11 +41,11 @@ function loadRadioStationsFromDatabase() {
let dbConnection = connectToDatabase(); let dbConnection = connectToDatabase();
let tempRadioStations = []; let tempRadioStations = [];
let dbAssoc; let dbAssoc;
if(dbConnection) { if (dbConnection) {
let dbQueryString = `SELECT * FROM radio_main`; let dbQueryString = `SELECT * FROM radio_main`;
let dbQuery = queryDatabase(dbConnection, dbQueryString); let dbQuery = queryDatabase(dbConnection, dbQueryString);
if(dbQuery) { if (dbQuery) {
while(dbAssoc = fetchQueryAssoc(dbQuery)) { while (dbAssoc = fetchQueryAssoc(dbQuery)) {
let tempRadioStationData = new RadioStationData(dbAssoc); let tempRadioStationData = new RadioStationData(dbAssoc);
tempRadioStations.push(tempRadioStationData); tempRadioStations.push(tempRadioStationData);
} }
@@ -70,7 +70,7 @@ function loadRadioStationsFromDatabase() {
* *
*/ */
function playStreamingRadioCommand(command, params, client) { function playStreamingRadioCommand(command, params, client) {
if(areParamsEmpty(params)) { if (areParamsEmpty(params)) {
messagePlayerSyntax(client, getCommandSyntaxText(command)); messagePlayerSyntax(client, getCommandSyntaxText(command));
messagePlayerInfo(client, "Use /radiostations for a list of available radio stations."); messagePlayerInfo(client, "Use /radiostations for a list of available radio stations.");
return false; return false;
@@ -78,96 +78,96 @@ function playStreamingRadioCommand(command, params, client) {
let radioStationId = getRadioStationFromParams(params); let radioStationId = getRadioStationFromParams(params);
if(radioStationId != 0 && typeof getServerData().radioStations[radioStationId-1] == "undefined") { if (radioStationId != 0 && typeof getServerData().radioStations[radioStationId - 1] == "undefined") {
messagePlayerError(client, getLocaleString(client, "InvalidRadioStation")); messagePlayerError(client, getLocaleString(client, "InvalidRadioStation"));
return false; return false;
} }
if(isPlayerInAnyVehicle(client)) { if (isPlayerInAnyVehicle(client)) {
let vehicle = getPlayerVehicle(client); let vehicle = getPlayerVehicle(client);
if(!getVehicleData(vehicle)) { if (!getVehicleData(vehicle)) {
messagePlayerError(client, getLocaleString(client, "RandomVehicleCommandsDisabled")); messagePlayerError(client, getLocaleString(client, "RandomVehicleCommandsDisabled"));
return false; return false;
} }
if(radioStationId == 0) { if (radioStationId == 0) {
getVehicleData(vehicle).streamingRadioStation = -1; getVehicleData(vehicle).streamingRadioStation = -1;
getVehicleData(vehicle).needsSaved = true; getVehicleData(vehicle).needsSaved = true;
getPlayerData(client).streamingRadioStation = -1; getPlayerData(client).streamingRadioStation = -1;
meActionToNearbyPlayers(client, `turns off their vehicle's radio`); meActionToNearbyPlayers(client, `turns off their vehicle's radio`);
let clients = getClients(); let clients = getClients();
for(let i in clients) { for (let i in clients) {
if(getPlayerVehicle(client) == getPlayerVehicle(clients[i])) { if (getPlayerVehicle(client) == getPlayerVehicle(clients[i])) {
playRadioStreamForPlayer(clients[i], ""); playRadioStreamForPlayer(clients[i], "");
} }
} }
return false; return false;
} }
getVehicleData(vehicle).streamingRadioStation = radioStationId-1; getVehicleData(vehicle).streamingRadioStation = radioStationId - 1;
getPlayerData(client).streamingRadioStation = radioStationId-1; getPlayerData(client).streamingRadioStation = radioStationId - 1;
meActionToNearbyPlayers(client, getLocaleString(client, "ActionVehicleRadioStationChange", getRadioStationData(radioStationId-1).name, getRadioStationData(radioStationId-1).genre)); meActionToNearbyPlayers(client, getLocaleString(client, "ActionVehicleRadioStationChange", getRadioStationData(radioStationId - 1).name, getRadioStationData(radioStationId - 1).genre));
let clients = getClients(); let clients = getClients();
for(let i in clients) { for (let i in clients) {
if(vehicle == getPlayerVehicle(clients[i])) { if (vehicle == getPlayerVehicle(clients[i])) {
playRadioStreamForPlayer(clients[i], getRadioStationData(radioStationId-1).url, true, getPlayerStreamingRadioVolume(client)); playRadioStreamForPlayer(clients[i], getRadioStationData(radioStationId - 1).url, true, getPlayerStreamingRadioVolume(client));
} }
} }
} else { } else {
if(doesEntityDataExist(client, "vrr.inHouse")) { if (doesEntityDataExist(client, "agrp.inHouse")) {
let houseId = getEntityData(client, "vrr.inHouse"); let houseId = getEntityData(client, "agrp.inHouse");
if(radioStationId == 0) { if (radioStationId == 0) {
getHouseData(houseId).streamingRadioStation = -1; getHouseData(houseId).streamingRadioStation = -1;
getHouseData(houseId).needsSaved = true; getHouseData(houseId).needsSaved = true;
getPlayerData(client).streamingRadioStation = -1; getPlayerData(client).streamingRadioStation = -1;
meActionToNearbyPlayers(client, `turns off the house radio`); meActionToNearbyPlayers(client, `turns off the house radio`);
let clients = getClients(); let clients = getClients();
for(let i in clients) { for (let i in clients) {
if(getEntityData(clients[i], "vrr.inHouse") == houseId) { if (getEntityData(clients[i], "agrp.inHouse") == houseId) {
playRadioStreamForPlayer(clients[i], ""); playRadioStreamForPlayer(clients[i], "");
} }
} }
} else { } else {
getHouseData(houseId).streamingRadioStation = radioStationId-1; getHouseData(houseId).streamingRadioStation = radioStationId - 1;
getHouseData(houseId).needsSaved = true; getHouseData(houseId).needsSaved = true;
getPlayerData(client).streamingRadioStation = radioStationId-1; getPlayerData(client).streamingRadioStation = radioStationId - 1;
meActionToNearbyPlayers(client, getLocaleString(client, "ActionHouseRadioStationChange", getRadioStationData(radioStationId-1).name, getRadioStationData(radioStationId-1).genre)); meActionToNearbyPlayers(client, getLocaleString(client, "ActionHouseRadioStationChange", getRadioStationData(radioStationId - 1).name, getRadioStationData(radioStationId - 1).genre));
let clients = getClients(); let clients = getClients();
for(let i in clients) { for (let i in clients) {
if(getEntityData(clients[i], "vrr.inHouse") == houseId) { if (getEntityData(clients[i], "agrp.inHouse") == houseId) {
playRadioStreamForPlayer(clients[i], getRadioStationData(radioStationId-1).url, true, getPlayerStreamingRadioVolume(clients[i])); playRadioStreamForPlayer(clients[i], getRadioStationData(radioStationId - 1).url, true, getPlayerStreamingRadioVolume(clients[i]));
} }
} }
} }
} else if(isPlayerInAnyBusiness(client)) { } else if (isPlayerInAnyBusiness(client)) {
let businessId = getPlayerBusiness(client); let businessId = getPlayerBusiness(client);
if(radioStationId == 0) { if (radioStationId == 0) {
getBusinessData(businessId).streamingRadioStation = -1; getBusinessData(businessId).streamingRadioStation = -1;
getBusinessData(businessId).needsSaved = true; getBusinessData(businessId).needsSaved = true;
getPlayerData(client).streamingRadioStation = -1; getPlayerData(client).streamingRadioStation = -1;
meActionToNearbyPlayers(client, `turns off the business radio`); meActionToNearbyPlayers(client, `turns off the business radio`);
let clients = getClients(); let clients = getClients();
for(let i in clients) { for (let i in clients) {
if(getPlayerBusiness(clients[i]) == businessId) { if (getPlayerBusiness(clients[i]) == businessId) {
stopRadioStreamForPlayer(clients[i]); stopRadioStreamForPlayer(clients[i]);
} }
} }
} else { } else {
getBusinessData(businessId).streamingRadioStation = radioStationId-1; getBusinessData(businessId).streamingRadioStation = radioStationId - 1;
getBusinessData(businessId).needsSaved = true; getBusinessData(businessId).needsSaved = true;
getPlayerData(client).streamingRadioStation = radioStationId-1; getPlayerData(client).streamingRadioStation = radioStationId - 1;
meActionToNearbyPlayers(client, getLocaleString(client, "ActionBusinessRadioStationChange", getRadioStationData(radioStationId-1).name, getRadioStationData(radioStationId-1).genre)); meActionToNearbyPlayers(client, getLocaleString(client, "ActionBusinessRadioStationChange", getRadioStationData(radioStationId - 1).name, getRadioStationData(radioStationId - 1).genre));
let clients = getClients(); let clients = getClients();
for(let i in clients) { for (let i in clients) {
if(getPlayerBusiness(clients[i]) == businessId) { if (getPlayerBusiness(clients[i]) == businessId) {
playRadioStreamForPlayer(clients[i], getRadioStationData(radioStationId-1).url, true, getPlayerStreamingRadioVolume(clients[i])); playRadioStreamForPlayer(clients[i], getRadioStationData(radioStationId - 1).url, true, getPlayerStreamingRadioVolume(clients[i]));
} }
} }
} }
@@ -190,14 +190,14 @@ function playStreamingRadioCommand(command, params, client) {
* *
*/ */
function setStreamingRadioVolumeCommand(command, params, client) { function setStreamingRadioVolumeCommand(command, params, client) {
if(areParamsEmpty(params)) { if (areParamsEmpty(params)) {
messagePlayerSyntax(client, getCommandSyntaxText(command)); messagePlayerSyntax(client, getCommandSyntaxText(command));
return false; return false;
} }
let volumeLevel = params; let volumeLevel = params;
if(isNaN(volumeLevel)) { if (isNaN(volumeLevel)) {
messagePlayerError(client, getLocaleString(client, "RadioVolumeNotNumber")); messagePlayerError(client, getLocaleString(client, "RadioVolumeNotNumber"));
return false; return false;
} }
@@ -205,13 +205,13 @@ function setStreamingRadioVolumeCommand(command, params, client) {
setPlayerStreamingRadioVolume(client, toInteger(volumeLevel)); setPlayerStreamingRadioVolume(client, toInteger(volumeLevel));
getPlayerData(client).accountData.streamingRadioVolume = toInteger(volumeLevel); getPlayerData(client).accountData.streamingRadioVolume = toInteger(volumeLevel);
let volumeEmoji = ''; let volumeEmoji = '';
if(volumeLevel >= 60) { if (volumeLevel >= 60) {
volumeEmoji = '🔊'; volumeEmoji = '🔊';
} else if(volumeLevel >= 30 && volumeLevel < 60) { } else if (volumeLevel >= 30 && volumeLevel < 60) {
volumeEmoji = '🔉'; volumeEmoji = '🔉';
} else if(volumeLevel > 0 && volumeLevel < 30) { } else if (volumeLevel > 0 && volumeLevel < 30) {
volumeEmoji = '🔈'; volumeEmoji = '🔈';
} else if(volumeLevel <= 0) { } else if (volumeLevel <= 0) {
volumeEmoji = '🔇'; volumeEmoji = '🔇';
} }
@@ -221,7 +221,7 @@ function setStreamingRadioVolumeCommand(command, params, client) {
// =========================================================================== // ===========================================================================
function getPlayerStreamingRadioVolume(client) { function getPlayerStreamingRadioVolume(client) {
if(!getPlayerData(client) || !isPlayerLoggedIn(client) || !isPlayerSpawned(client)) { if (!getPlayerData(client) || !isPlayerLoggedIn(client) || !isPlayerSpawned(client)) {
return 20; return 20;
} }
return getPlayerData(client).accountData.streamingRadioVolume; return getPlayerData(client).accountData.streamingRadioVolume;
@@ -239,13 +239,13 @@ function getPlayerStreamingRadioVolume(client) {
* *
*/ */
function showRadioStationListCommand(command, params, client) { function showRadioStationListCommand(command, params, client) {
let stationList = getServerData().radioStations.map(function(x) { return `{ALTCOLOUR}${toInteger(x.index)+1}: {MAINCOLOUR}${x.name}`; }); let stationList = getServerData().radioStations.map(function (x) { return `{ALTCOLOUR}${toInteger(x.index) + 1}: {MAINCOLOUR}${x.name}`; });
let chunkedList = splitArrayIntoChunks(stationList, 4); let chunkedList = splitArrayIntoChunks(stationList, 4);
messagePlayerNormal(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderRadioStationsList"))); messagePlayerNormal(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderRadioStationsList")));
for(let i in chunkedList) { for (let i in chunkedList) {
messagePlayerInfo(client, chunkedList[i].join(", ")); messagePlayerInfo(client, chunkedList[i].join(", "));
} }
} }
@@ -253,7 +253,7 @@ function showRadioStationListCommand(command, params, client) {
// =========================================================================== // ===========================================================================
function setAllRadioStationIndexes() { function setAllRadioStationIndexes() {
for(let i in getServerData().radioStations) { for (let i in getServerData().radioStations) {
getServerData().radioStations[i].index = i; getServerData().radioStations[i].index = i;
} }
} }
@@ -291,14 +291,14 @@ function reloadAllRadioStationsCommand(command, params, client) {
// =========================================================================== // ===========================================================================
function getRadioStationFromParams(params) { function getRadioStationFromParams(params) {
if(isNaN(params)) { if (isNaN(params)) {
for(let i in getServerData().radioStations) { for (let i in getServerData().radioStations) {
if(toLowerCase(getServerData().radioStations[i].name).indexOf(toLowerCase(params)) != -1) { if (toLowerCase(getServerData().radioStations[i].name).indexOf(toLowerCase(params)) != -1) {
return i; return i;
} }
} }
} else { } else {
if(typeof getServerData().radioStations[params] != "undefined") { if (typeof getServerData().radioStations[params] != "undefined") {
return toInteger(params); return toInteger(params);
} }
} }

View File

@@ -29,7 +29,7 @@ function initServerScripts() {
initKeyBindScript(); initKeyBindScript();
initEventScript(); initEventScript();
initAntiCheatScript(); initAntiCheatScript();
initClientScript(); initNetworkEventsScript();
initMessagingScript(); initMessagingScript();
initHelpScript(); initHelpScript();
initFishingScript(); initFishingScript();
@@ -116,18 +116,17 @@ function loadServerDataFromDatabase() {
logToConsole(LOG_INFO, "[VRR.Config]: Loading server data ..."); logToConsole(LOG_INFO, "[VRR.Config]: Loading server data ...");
// Always load these regardless of "test server" status // Always load these regardless of "test server" status
getServerData().localeStrings = loadAllLocaleStrings();
getServerData().allowedSkins = getAllowedSkins(getGame()); getServerData().allowedSkins = getAllowedSkins(getGame());
getServerData().itemTypes = loadItemTypesFromDatabase(); getServerData().itemTypes = loadItemTypesFromDatabase();
// Translation Cache // Translation Cache
getServerData().cachedTranslations = new Array(getGlobalConfig().locale.locales.length); //getServerData().cachedTranslations = new Array(getGlobalConfig().locale.locales.length);
getServerData().cachedTranslationFrom = new Array(getGlobalConfig().locale.locales.length); //getServerData().cachedTranslationFrom = new Array(getGlobalConfig().locale.locales.length);
getServerData().cachedTranslationFrom.fill([]); //getServerData().cachedTranslationFrom.fill([]);
getServerData().cachedTranslations.fill(getServerData().cachedTranslationFrom); //getServerData().cachedTranslations.fill(getServerData().cachedTranslationFrom);
// Only load these if the server isn't a testing/dev server // Only load these if the server isn't a testing/dev server
if (!getServerConfig().devServer) { if (!getServerConfig().devServer && server.getCVar("agrp_devserver") == 0) {
getServerData().items = loadItemsFromDatabase(); getServerData().items = loadItemsFromDatabase();
getServerData().businesses = loadBusinessesFromDatabase(); getServerData().businesses = loadBusinessesFromDatabase();
getServerData().houses = loadHousesFromDatabase(); getServerData().houses = loadHousesFromDatabase();

View File

@@ -321,7 +321,7 @@ function spawnAllVehicles() {
for (let i in getServerData().vehicles) { for (let i in getServerData().vehicles) {
let vehicle = spawnVehicle(getServerData().vehicles[i]); let vehicle = spawnVehicle(getServerData().vehicles[i]);
getServerData().vehicles[i].vehicle = vehicle; getServerData().vehicles[i].vehicle = vehicle;
setEntityData(vehicle, "vrr.dataSlot", i, false); setEntityData(vehicle, "agrp.dataSlot", i, false);
setAllVehicleIndexes(); setAllVehicleIndexes();
} }
} }
@@ -335,7 +335,7 @@ function spawnAllVehicles() {
function getVehicleData(vehicle) { function getVehicleData(vehicle) {
if (getGame() != VRR_GAME_GTA_IV) { if (getGame() != VRR_GAME_GTA_IV) {
if (isVehicleObject(vehicle)) { if (isVehicleObject(vehicle)) {
let dataIndex = getEntityData(vehicle, "vrr.dataSlot"); let dataIndex = getEntityData(vehicle, "agrp.dataSlot");
if (typeof getServerData().vehicles[dataIndex] != "undefined") { if (typeof getServerData().vehicles[dataIndex] != "undefined") {
return getServerData().vehicles[dataIndex]; return getServerData().vehicles[dataIndex];
} }
@@ -501,7 +501,7 @@ function deleteVehicleCommand(command, params, client) {
return false; return false;
} }
let dataIndex = getEntityData(vehicle, "vrr.dataSlot"); let dataIndex = getEntityData(vehicle, "agrp.dataSlot");
let vehicleName = getVehicleName(vehicle); let vehicleName = getVehicleName(vehicle);
quickDatabaseQuery(`UPDATE veh_main SET veh_deleted = 1 WHERE veh_id = ${getVehicleData(vehicle).databaseId}`); quickDatabaseQuery(`UPDATE veh_main SET veh_deleted = 1 WHERE veh_id = ${getVehicleData(vehicle).databaseId}`);
@@ -539,7 +539,7 @@ function vehicleEngineCommand(command, params, client) {
getVehicleData(vehicle).engine = !getVehicleData(vehicle).engine; getVehicleData(vehicle).engine = !getVehicleData(vehicle).engine;
vehicle.engine = getVehicleData(vehicle).engine; vehicle.engine = getVehicleData(vehicle).engine;
setEntityData(vehicle, "vrr.engine", getVehicleData(vehicle).engine, true); setEntityData(vehicle, "agrp.engine", getVehicleData(vehicle).engine, true);
getVehicleData(vehicle).needsSaved = true; getVehicleData(vehicle).needsSaved = true;
@@ -665,7 +665,7 @@ function vehicleAdminLiveryCommand(command, params, client) {
getVehicleData(vehicle).livery = livery; getVehicleData(vehicle).livery = livery;
getVehicleData(vehicle).needsSaved = true; getVehicleData(vehicle).needsSaved = true;
setEntityData(vehicle, "vrr.livery", livery, true); setEntityData(vehicle, "agrp.livery", livery, true);
forcePlayerToSyncElementProperties(null, vehicle); forcePlayerToSyncElementProperties(null, vehicle);
meActionToNearbyPlayers(client, `sets the ${getVehicleName(vehicle)}'s livery/paintjob'`); meActionToNearbyPlayers(client, `sets the ${getVehicleName(vehicle)}'s livery/paintjob'`);
@@ -699,7 +699,7 @@ function buyVehicleCommand(command, params, client) {
getPlayerData(client).buyingVehicle = vehicle; getPlayerData(client).buyingVehicle = vehicle;
getVehicleData(vehicle).engine = true; getVehicleData(vehicle).engine = true;
vehicle.engine = true; vehicle.engine = true;
setEntityData(vehicle, "vrr.engine", getVehicleData(vehicle).engine, true); setEntityData(vehicle, "agrp.engine", getVehicleData(vehicle).engine, true);
getVehicleData(vehicle).needsSaved = true; getVehicleData(vehicle).needsSaved = true;
setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_TESTDRIVE, vehicle.id, getVehiclePosition(vehicle)); setPlayerBuyingVehicleState(client, VRR_VEHBUYSTATE_TESTDRIVE, vehicle.id, getVehiclePosition(vehicle));
@@ -770,7 +770,7 @@ function rentVehicleCommand(command, params, client) {
// =========================================================================== // ===========================================================================
function enterVehicleAsPassengerCommand(command, params, client) { function enterVehicleAsPassengerCommand(command, params, client) {
sendNetworkEventToPlayer("vrr.passenger", client); sendNetworkEventToPlayer("agrp.passenger", client);
} }
// =========================================================================== // ===========================================================================
@@ -1451,7 +1451,7 @@ function respawnVehicle(vehicle) {
let newVehicle = spawnVehicle(vehicles[i]); let newVehicle = spawnVehicle(vehicles[i]);
vehicles[i].vehicle = newVehicle; vehicles[i].vehicle = newVehicle;
setEntityData(newVehicle, "vrr.dataSlot", i, false); setEntityData(newVehicle, "agrp.dataSlot", i, false);
} }
} }
@@ -1503,10 +1503,10 @@ function spawnVehicle(vehicleData) {
//setVehicleHealth(vehicle, 1000); //setVehicleHealth(vehicle, 1000);
repairVehicle(vehicle); repairVehicle(vehicle);
setEntityData(vehicle, "vrr.livery", vehicleData.livery, true); setEntityData(vehicle, "agrp.livery", vehicleData.livery, true);
setEntityData(vehicle, "vrr.upgrades", vehicleData.extras, true); setEntityData(vehicle, "agrp.upgrades", vehicleData.extras, true);
setEntityData(vehicle, "vrr.interior", vehicleData.interior, true); setEntityData(vehicle, "agrp.interior", vehicleData.interior, true);
setEntityData(vehicle, "vrr.engine", vehicleData.engine, true); setEntityData(vehicle, "agrp.engine", vehicleData.engine, true);
forcePlayerToSyncElementProperties(null, vehicle); forcePlayerToSyncElementProperties(null, vehicle);
@@ -1592,7 +1592,7 @@ function createNewDealershipVehicle(modelIndex, spawnPosition, spawnRotation, pr
tempVehicleData.dimension = dimension; tempVehicleData.dimension = dimension;
let slot = getServerData().vehicles.push(tempVehicleData); let slot = getServerData().vehicles.push(tempVehicleData);
setEntityData(vehicle, "vrr.dataSlot", slot - 1, false); setEntityData(vehicle, "agrp.dataSlot", slot - 1, false);
} }
// =========================================================================== // ===========================================================================
@@ -1617,7 +1617,7 @@ function createTemporaryVehicle(modelIndex, position, heading, interior = 0, dim
} }
let slot = getServerData().vehicles.push(tempVehicleData); let slot = getServerData().vehicles.push(tempVehicleData);
setEntityData(vehicle, "vrr.dataSlot", slot - 1, false); setEntityData(vehicle, "agrp.dataSlot", slot - 1, false);
return vehicle; return vehicle;
} }
@@ -1645,7 +1645,7 @@ function createPermanentVehicle(modelIndex, position, heading, interior = 0, dim
let slot = getServerData().vehicles.push(tempVehicleData); let slot = getServerData().vehicles.push(tempVehicleData);
if (areServerElementsSupported()) { if (areServerElementsSupported()) {
setEntityData(vehicle, "vrr.dataSlot", slot - 1, false); setEntityData(vehicle, "agrp.dataSlot", slot - 1, false);
} }

View File

@@ -1,134 +0,0 @@
mexui.Component.Control = function(window, x, y, w, h, styles, callback)
{
mexui.Entity.Component.call(this, false);
mexui.Entity.StyleableEntity.call(this, this.linkComponentStyles('Control', styles));
this.window = window;
this.position = new Vec2(x, y);
this.size = new Vec2(w, h);
this.callback = callback;
this.boundTo = null;
};
mexui.util.extend(mexui.Component.Control, mexui.Entity.Component);
// default styles
//mexui.Component.Control.defaultStyles = {};
//mexui.Component.Control.defaultStyles.__proto__ = mexui.Entity.StyleableEntity.defaultStyles;
mexui.Component.Control.defaultStyles = mexui.util.linkStyles(mexui.Entity.StyleableEntity.defaultStyles, {});
// input
mexui.Component.Control.prototype.onMouseDown = function(e)
{
if(e.button == 0)
{
var hit = this.isCursorOverControl();
if(hit)
{
e.used = true;
e.clickedAControl = true;
mexui.focusedControl = this;
}
}
};
mexui.Component.Control.prototype.onMouseUp = function(e)
{
};
mexui.Component.Control.prototype.onMouseMove = function(e, offset)
{
if(this.isCursorOverControl())
{
if(!this.isHovered())
{
mexui.setHoveredComponent(this);
this.onMouseEnter();
}
e.used = true;
}
else if(e.wasHovered)
{
mexui.clearHoveredComponent();
this.onMouseExit();
}
};
mexui.Component.Control.prototype.onMouseWheel = function(e, data)
{
};
mexui.Component.Control.prototype.onKeyDown = function(e, key, mods)
{
};
mexui.Component.Control.prototype.onCharacter = function(e, character)
{
};
// render
mexui.Component.Control.prototype.render = function()
{
};
mexui.Component.Control.prototype.renderAfter = function()
{
};
// model
mexui.Component.Control.prototype.checkToCallCallback = function()
{
if(this.callback)
this.callback.call(this);
};
mexui.Component.Control.prototype.getScreenPosition = function()
{
var pos = mexui.util.addVec2(this.window.position, this.position);
if(this.boundTo)
pos = mexui.util.addVec2(pos, new Vec2(-this.boundTo.axis.x.getScrolledOffsetFixedStart(), -this.boundTo.axis.y.getScrolledOffsetFixedStart()));
return pos;
};
mexui.Component.Control.prototype.isCursorOverControl = function()
{
return mexui.util.isCursorInRectangle(this.getScreenPosition(), this.getSizeForInput ? this.getSizeForInput() : this.size);
};
mexui.Component.Control.prototype.isCursorOverItem = function()
{
return this.isCursorOverControl();
};
mexui.Component.Control.prototype.isInsideBoundControl = function()
{
if(this.boundTo instanceof mexui.Entity.ControlWithEntries)
return this.isInsideBoundControlEntries();
else
return mexui.util.isRectangleInsideRectangle(this.getScreenPosition(), this.size, this.boundTo.getScreenPosition(), this.boundTo.size);
};
mexui.Component.Control.prototype.isInsideBoundControlEntries = function()
{
var boundToControlPosition = mexui.util.addVec2(this.boundTo.getScreenPosition(), this.boundTo.entriesPositionOffset);
var boundToControlSize = new Vec2(this.boundTo.size.x, this.boundTo.axis.y.getDisplayedEntriesLength());
return mexui.util.isRectangleInsideRectangle(this.getScreenPosition(), this.size, boundToControlPosition, boundToControlSize);
};
// api
mexui.Component.Control.prototype.remove = function()
{
this.window.controls.splice(this.window.controls.indexOf(this), 1);
};
mexui.Component.Control.prototype.bindTo = function(control)
{
this.boundTo = control;
};
mexui.Component.Control.prototype.unbind = function()
{
this.boundTo = null;
};

View File

@@ -1,32 +0,0 @@
mexui.Component.Entry = function(control, axisIndex, text, styles)
{
mexui.Entity.Component.call(this, false);
mexui.Entity.StyleableEntity.call(this, this.linkComponentStyles('Entry', styles));
this.control = control;
this.axisIndex = axisIndex;
this.text = text;
};
mexui.util.extend(mexui.Component.Entry, mexui.Entity.Component);
// default styles
mexui.Component.Entry.defaultStyles = mexui.util.linkStyles(mexui.Entity.StyleableEntity.defaultStyles, {});
// model
mexui.Component.Entry.prototype.getEntryIndex = function()
{
return this.control.axis[this.getAxisKey()].entries.indexOf(this);
};
mexui.Component.Entry.prototype.getAxisKey = function()
{
return this.axisIndex == 0 ? 'x' : 'y';
};
// api
mexui.Component.Entry.prototype.remove = function()
{
this.control.axis[this.getAxisKey()].entries.splice(this.getEntryIndex(), 1);
this.control.checkToShowScrollBars();
};

View File

@@ -1,6 +0,0 @@
mexui.Component.Event = function()
{
this.used = false;
this.clickedAControl = false;
};

View File

@@ -1,389 +0,0 @@
mexui.Component.Window = function(x, y, w, h, title, styles)
{
mexui.Entity.Component.call(this, true);
mexui.Entity.StyleableEntity.call(this, this.linkComponentStyles('Window', styles));
this.position = new Vec2(x, y);
this.size = new Vec2(w, h);
this.title = title || '';
this.controls = [];
this.titleBarShown = true;
this.titleBarHeight = 30;
this.titleBarIconShown = true;
this.titleBarIconSize = new Vec2(30, 30);
};
mexui.util.extend(mexui.Component.Window, mexui.Entity.Component);
// default styles
mexui.Component.Window.defaultStyles = mexui.util.linkStyles(mexui.Entity.StyleableEntity.defaultStyles, {
main:
{
backgroundColour: toColour(0, 0, 0, 190),
textColour: toColour(255, 255, 255, 255),
hover:
{
backgroundColour: toColour(0, 0, 0, 170)
}
},
title:
{
backgroundColour: toColour(79, 161, 246, 190),
textColour: toColour(0, 0, 0, 255)
},
icon:
{
backgroundColour: toColour(245, 5, 5, 190),
textColour: toColour(0, 0, 0, 255),
textSize: 21,
textAlign: 0.5,
textIndent: 0
}
});
// input
mexui.Component.Window.prototype.onMouseDown = function(e)
{
if(e.button == 0 && this.titleBarShown && this.titleBarIconShown && this.isCursorOverCloseIcon())
{
this.shown = false;
mexui.setInput(false);
e.used = true;
return;
}
if(this.isCursorOverWindow())
{
this.setTop();
}
this.triggerEvent('onMouseDown', e);
};
mexui.Component.Window.prototype.onMouseUp = function(e)
{
this.triggerEvent('onMouseUp', e);
};
mexui.Component.Window.prototype.onMouseMove = function(e, offset)
{
//var wasHovered = this.isHovered();
//e.wasHovered = wasHovered;
if(mexui.hoveredComponent && !mexui.hoveredComponent.isCursorOverItem())
{
mexui.hoveredComponent.onMouseExit();
mexui.clearHoveredComponent();
}
this.triggerEvent('onMouseMove', e, offset);
if(e.used)
{
/*
if(wasHovered)
{
mexui.clearHoveredComponent();
this.onMouseExit();
}
*/
return;
}
if(this.isCursorOverWindow())
{
if(!this.isHovered())
{
mexui.setHoveredComponent(this);
this.onMouseEnter();
}
e.used = true;
}
/*
else if(wasHovered)
{
mexui.clearHoveredComponent();
this.onMouseExit();
}
*/
};
mexui.Component.Window.prototype.onMouseWheel = function(e, data)
{
this.triggerEvent('onMouseWheel', e, data);
};
mexui.Component.Window.prototype.onKeyDown = function(e, key, mods)
{
this.triggerEvent('onKeyDown', e, key, mods);
};
mexui.Component.Window.prototype.onCharacter = function(e, character)
{
this.triggerEvent('onCharacter', e, character);
};
// render
mexui.Component.Window.prototype.render = function()
{
// window background
mexui.native.drawRectangleBackground(this.position, this.size, this.getStyles('main'));
if(this.titleBarShown)
{
// window title bar
mexui.native.drawRectangle(this.position, new Vec2(this.size.x, this.titleBarHeight), this.getStyles('title'));
mexui.native.drawText(this.position, new Vec2(this.size.x, this.titleBarHeight), this.title, this.getStyles('title'));
if(this.titleBarIconShown)
{
// window title bar icons
var iconPos = this.getCloseIconPosition();
mexui.native.drawRectangle(iconPos, this.titleBarIconSize, this.getStyles('icon'));
mexui.native.drawText(iconPos, this.titleBarIconSize, 'X', this.getStyles('icon'));
}
}
// window border
mexui.native.drawRectangleBorder(this.position, this.size, this.getStyles('main'));
// window controls
var show, control;
for(var i in this.controls)
{
control = this.controls[i];
show = false;
if(control.shown)
{
show = true;
if(control.boundTo)
{
if(!control.isInsideBoundControl())
show = false;
}
}
if(show)
control.render.call(control);
}
};
mexui.Component.Window.prototype.renderAfter = function()
{
for(var i in this.controls)
{
if(this.controls[i].shown)
{
this.controls[i].renderAfter.call(this.controls[i]);
for(var i2 in this.controls[i].scrollBars)
{
if(this.controls[i].scrollBars[i2].shown)
this.controls[i].scrollBars[i2].renderAfter(this.controls[i].scrollBars[i2]);
}
}
}
};
// model
mexui.Component.Window.prototype.center = function()
{
this.position = mexui.util.getCenterPosition(mexui.util.getWindowSize(), this.size);
};
mexui.Component.Window.prototype.setTop = function()
{
mexui.windows.splice(mexui.windows.indexOf(this), 1);
mexui.windows.push(this);
};
mexui.Component.Window.prototype.remove = function()
{
mexui.windows.splice(mexui.windows.indexOf(this), 1);
};
mexui.Component.Window.prototype.isCursorOverCloseIcon = function()
{
return mexui.util.isCursorInRectangle(this.getCloseIconPosition(), this.titleBarIconSize);
};
mexui.Component.Window.prototype.getCloseIconPosition = function()
{
return new Vec2(this.position.x + (this.size.x - this.titleBarIconSize.x), this.position.y);
};
mexui.Component.Window.prototype.triggerEvent = function(eventName, e, data, callBaseMethodFirst)
{
for(var i in this.controls)
{
var control = this.controls[i];
if(!control.shown)
continue;
if(callBaseMethodFirst)
{
if(mexui.Entity.Component.prototype[eventName])
{
mexui.Entity.Component.prototype[eventName].call(control, e, data);
if(e.used)
break;
}
this.controls[i][eventName].call(control, e, data);
if(e.used)
break;
}
else
{
this.controls[i][eventName].call(control, e, data);
if(e.used)
{
if(e.button == 0 && eventName == 'onMouseDown')
{
mexui.focusedControl = this.controls[i];
e.clickedAControl = true;
}
break;
}
if(mexui.Entity.Component.prototype[eventName])
{
mexui.Entity.Component.prototype[eventName].call(control, e, data);
if(e.used)
break;
}
}
}
};
mexui.Component.Window.prototype.addControl = function(control)
{
this.controls.push(control);
return control;
};
mexui.Component.Window.prototype.setShown = function(shown)
{
//var anyWindowShownBefore = mexui.isAnyWindowShown();
this.shown = shown;
if(mexui.focusedControl && this.isControlInWindow(mexui.focusedControl))
{
if(!shown)
{
mexui.focusedControl = null;
}
}
/*
if(shown)
{
if(!anyWindowShownBefore)
mexui.bindEvents();
}
else
{
if(!mexui.isAnyWindowShown())
mexui.unbindEvents();
}
*/
};
mexui.Component.Window.prototype.isShown = function()
{
return this.shown;
};
mexui.Component.Window.prototype.isControlInWindow = function(control)
{
for(var i in this.controls)
{
if(control == this.controls[i])
return true;
}
return false;
};
mexui.Component.Window.prototype.isCursorOverWindow = function()
{
return mexui.util.isCursorInRectangle(this.position, this.size);
};
mexui.Component.Window.prototype.isCursorOverItem = function()
{
return this.isCursorOverWindow();
};
mexui.Component.Window.prototype.getScreenPosition = function()
{
return this.position;
};
mexui.Component.Window.prototype.getFirstShownControl = function()
{
for(var i in this.controls)
{
if(this.controls[i].shown)
return this.controls[i];
}
return null;
};
mexui.Component.Window.prototype.getNextShownControl = function(afterControl)
{
var controlIndex = this.controls.indexOf(afterControl);
if(this.controls[controlIndex + 1])
return this.controls[controlIndex + 1];
else
return null;
};
// api
mexui.Component.Window.prototype.button = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Button(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.character = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Character(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.characters = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Characters(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.checkBox = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.CheckBox(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.day = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Day(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.date = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Date(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.digit = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Digit(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.digits = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Digits(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.dropDown = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.DropDown(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.grid = function(x, y, w, h, styles) { return this.addControl(new mexui.Control.Grid(this, x, y, w, h, styles)); };
mexui.Component.Window.prototype.hour = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Hour(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.image = function(x, y, w, h, filePath, styles, callback) { return this.addControl(new mexui.Control.Image(this, x, y, w, h, filePath, styles, callback)); };
mexui.Component.Window.prototype.integer = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Integer(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.letter = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Letter(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.letters = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Letters(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.letterDigit = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.LetterDigit(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.lettersDigits = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.LettersDigits(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.line = function(x, y, w, h, styles, callback) { return this.addControl(new mexui.Control.Line(this, x, y, w, h, styles, callback)); };
mexui.Component.Window.prototype.list = function(x, y, w, h, styles, callback) { return this.addControl(new mexui.Control.List(this, x, y, w, h, styles, callback)); };
mexui.Component.Window.prototype.minute = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Minute(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.month = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Month(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.number = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Number(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.password = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Password(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.positiveInteger = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.PositiveInteger(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.positiveNumber = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.PositiveNumber(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.progressBar = function(x, y, w, h, text, styles) { return this.addControl(new mexui.Control.ProgressBar(this, x, y, w, h, text, styles)); };
mexui.Component.Window.prototype.radioButton = function(x, y, w, h, text, groupId, styles, callback) { return this.addControl(new mexui.Control.RadioButton(this, x, y, w, h, text, groupId, styles, callback)); };
mexui.Component.Window.prototype.rangedInteger = function(x, y, w, h, text, min, max, styles, callback) { return this.addControl(new mexui.Control.RangedInteger(this, x, y, w, h, text, min, max, styles, callback)); };
mexui.Component.Window.prototype.rangedNumber = function(x, y, w, h, text, min, max, styles, callback) { return this.addControl(new mexui.Control.RangedNumber(this, x, y, w, h, text, min, max, styles, callback)); };
mexui.Component.Window.prototype.rectangle = function(x, y, w, h, styles, callback) { return this.addControl(new mexui.Control.Rectangle(this, x, y, w, h, styles, callback)); };
mexui.Component.Window.prototype.scrollBar = function(x, y, w, h, isVertical, styles, callback) { return this.addControl(new mexui.Control.ScrollBar(this, x, y, w, h, isVertical, styles, callback)); };
mexui.Component.Window.prototype.second = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Second(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.slider = function(x, y, w, h, isVertical, text, minText, maxText, styles, callback) { return this.addControl(new mexui.Control.Slider(this, x, y, w, h, isVertical, text, minText, maxText, styles, callback)); };
mexui.Component.Window.prototype.tabPanel = function(x, y, w, h, styles, callback) { return this.addControl(new mexui.Control.TabPanel(this, x, y, w, h, styles, callback)); };
mexui.Component.Window.prototype.text = function(x, y, w, h, text, styles) { return this.addControl(new mexui.Control.Text(this, x, y, w, h, text, styles)); };
mexui.Component.Window.prototype.textArea = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.TextArea(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.textInput = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.TextInput(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.time = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Time(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.tree = function(x, y, w, h, styles, callback) { return this.addControl(new mexui.Control.Tree(this, x, y, w, h, styles, callback)); };
mexui.Component.Window.prototype.week = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Week(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.weekDay = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.WeekDay(this, x, y, w, h, text, styles, callback)); };
mexui.Component.Window.prototype.year = function(x, y, w, h, text, styles, callback) { return this.addControl(new mexui.Control.Year(this, x, y, w, h, text, styles, callback)); };

View File

@@ -1,40 +0,0 @@
mexui.util.createControlConstructor('Button', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Component.Control.call(this, window, x, y, w, h, this.linkControlStyles('Button', styles), callback);
this.text = text;
});
// default styles
mexui.util.linkBaseControlStyles('Button', {});
// input
mexui.Control.Button.prototype.onMouseDown = function(e)
{
if(e.button == 0 && this.isCursorOverControl())
{
e.used = true;
this.checkToCallCallback();
}
};
mexui.Control.Button.prototype.onKeyDown = function(e, key, mods)
{
if(this.isFocused() && (key == SDLK_RETURN || key == SDLK_RETURN2 || key == SDLK_KP_ENTER || key == SDLK_SPACE))
{
e.used = true;
this.checkToCallCallback();
}
};
// render
mexui.Control.Button.prototype.render = function()
{
var pos = this.getScreenPosition();
mexui.native.drawRectangle(pos, this.size, this.getStyles('main'));
mexui.native.drawText(pos, this.size, this.text, this.getStyles('main'));
if(this.isFocused())
mexui.native.drawRectangleBorder(mexui.util.subtractVec2(pos,new Vec2(2,2)), mexui.util.addVec2(this.size,new Vec2(3,3)), this.getStyles('focused'));
};

View File

@@ -1,11 +0,0 @@
mexui.util.createControlConstructor('Character', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Character', styles), callback, true, false);
});
mexui.util.extend(mexui.Control.Character, mexui.Control.TextInput);
// model
mexui.Control.Character.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isCharacterInOctetRange(character, 32, 126);
};

View File

@@ -1,11 +0,0 @@
mexui.util.createControlConstructor('Characters', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Characters', styles), callback, false, true);
});
mexui.util.extend(mexui.Control.Characters, mexui.Control.TextInput);
// model
mexui.Control.Characters.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isCharacterInOctetRange(character, 32, 126);
};

View File

@@ -1,68 +0,0 @@
mexui.util.createControlConstructor('CheckBox', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Component.Control.call(this, window, x, y, w, h, this.linkControlStyles('CheckBox', styles), callback);
this.text = text;
this.checked = false;
this.textMarginLeft = 5;
});
// default styles
mexui.util.linkBaseControlStyles('CheckBox', {
innerBox:
{
backgroundColour: toColour(0, 255, 0, 255)
}
});
// input
mexui.Control.CheckBox.prototype.onMouseDown = function(e)
{
if(e.button == 0 && this.isCursorOverControl())
{
e.used = true;
this.toggleChecked();
}
};
mexui.Control.CheckBox.prototype.onKeyDown = function(e, key, mods)
{
if(this.isFocused())
{
if(key == SDLK_RETURN || key == SDLK_RETURN2 || key == SDLK_KP_ENTER || key == SDLK_SPACE)
{
e.used = true;
this.toggleChecked();
}
}
};
// render
mexui.Control.CheckBox.prototype.render = function()
{
var pos = this.getScreenPosition();
mexui.native.drawRectangle(pos, this.size, this.getStyles('main'));
if(this.checked)
mexui.native.drawRectangle(mexui.util.addVec2(pos, new Vec2(1, 1)), new Vec2(this.size.x - 2, this.size.y - 2), this.getStyles('innerBox'));
mexui.native.drawText(mexui.util.addVec2(pos, new Vec2(this.size.x + this.textMarginLeft, 2)), this.size, this.text, this.getStyles('main'));
if(this.isFocused())
mexui.native.drawRectangleBorder(mexui.util.subtractVec2(pos,new Vec2(2,2)), mexui.util.addVec2(this.size,new Vec2(3,3)), this.getStyles('focused'));
};
// model
mexui.Control.CheckBox.prototype.getSizeForInput = function()
{
var textWidth = mexui.native.getTextWidth(this.text, this.getStyles('main'));
return new Vec2(this.size.x + this.textMarginLeft + textWidth, this.size.y);
};
mexui.Control.CheckBox.prototype.toggleChecked = function()
{
this.checked = !this.checked;
this.checkToCallCallback();
};

View File

@@ -1,182 +0,0 @@
mexui.util.createControlConstructor('Date', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Date', styles), callback, false, false);
this.day = 1;
this.month = 1;
this.year = 2019;
this.inputShown = false;
this.valueBoxSize = new Vec2(50, 30);
this.arrowBoxSize = new Vec2(25, 22);
this.maxYearOffset = 10;
this.minYearCallback = ()=>{ return 1900; };
this.maxYearCallback = ()=>{ return new Date().getFullYear() + this.maxYearOffset; }
this.twoDigitYearCapOffset = 10;
});
mexui.util.extend(mexui.Control.Date, mexui.Control.TextInput);
// static
mexui.Control.Date.units = ['day', 'month', 'year'];
// default styles
mexui.util.linkBaseControlStyles('Date', {
arrow:
{
backgroundColour: toColour(90, 90, 80, 230),
textColour: toColour(0, 0, 0, 255)
}
});
// input
mexui.Control.Date.prototype.onMouseDown = function(e)
{
if(this.inputShown)
{
var arrowIndex = this.getArrowIndexByCursor();
if(arrowIndex !== false)
{
var propIndex = (Math.ceil((arrowIndex + 1) / 2)) - 1;
var propName = mexui.Control.Date.units[propIndex];
var isIncrease = (arrowIndex % 2) == 1;
if(isIncrease)
this[propName]++;
else
this[propName]--;
if(this.day == 0)
this.day = 31;
else if(this.day == 32)
this.day = 1;
if(this.month == 0)
this.month = 12;
else if(this.month == 13)
this.month = 1;
var minYear = this.minYearCallback();
var maxYear = this.maxYearCallback();
if(this.year < minYear)
this.year = minYear;
else if(this.year > maxYear)
this.year = maxYear;
this.generateText();
return;
}
}
if(this.isCursorOverControl())
{
this.inputShown = !this.inputShown;
e.used = true;
return;
}
if(this.inputShown)
{
this.inputShown = false;
e.used = true;
return;
}
};
// render
mexui.Control.Date.prototype.renderAfter = function()
{
if(!this.inputShown)
return;
var screenPos = this.getScreenPosition();
var pos = new Vec2(screenPos.x, screenPos.y);
for(var i=0; i<3; i++)
{
mexui.native.drawRectangle(pos, this.valueBoxSize, this.getStyles('main'));
mexui.native.drawText(pos, this.valueBoxSize, this[mexui.Control.Date.units[i]], this.getStyles('main'));
pos.x += this.valueBoxSize.x;
}
pos = new Vec2(screenPos.x, screenPos.y);
pos.y += this.valueBoxSize.y;
for(var i=0; i<3; i++)
{
for(var i2=0; i2<2; i2++)
{
var text = (i2 % 2) == 0 ? '<' : '>';
mexui.native.drawRectangle(pos, this.arrowBoxSize, this.getStyles('main'));
mexui.native.drawText(pos, this.arrowBoxSize, text, this.getStyles('main'));
pos.x += this.arrowBoxSize.x;
}
}
};
// model
mexui.Control.Date.prototype.generateText = function()
{
this.setText((this.day < 10 ? '0'+this.day : this.day)
+'/'+(this.month < 10 ? '0'+this.month : this.month)
+'/'+(this.year < 10 ? '0'+this.year : this.year));
};
mexui.Control.Date.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isPositiveIntChar(character) || mexui.util.isLetter(character) || character == '/';
};
mexui.Control.Date.prototype.validateValueCallback = function(e)
{
var parts = this.getText().split('/');
if(parts.length != 3)
return false;
for(var i in parts)
{
var partAsStr = parts[i];
if(partAsStr === '')
return false;
if(i == 0)
{
if(!mexui.util.isDayIdWithOptionalSuffix(partAsStr))
return false;
}
else if(i == 1)
{
if(!mexui.util.isMonthIdOrName(partAsStr))
return false;
}
else if(i == 2)
{
if(!mexui.util.isYear(partAsStr, this.minYearCallback(), this.maxYearCallback(), this.twoDigitYearCapOffset))
return false;
}
}
return true;
};
mexui.Control.Date.prototype.getArrowIndexByCursor = function()
{
var cursorPos = gui.cursorPosition;
var screenPos = this.getScreenPosition();
var firstArrowStartPos = new Vec2(screenPos.x, screenPos.y + this.valueBoxSize.y);
var lastArrowEndPos = new Vec2(screenPos.x + (this.arrowBoxSize.x * 6), screenPos.y + this.valueBoxSize.y + this.arrowBoxSize.y);
if(cursorPos.x >= firstArrowStartPos.x && cursorPos.y >= firstArrowStartPos.y && cursorPos.x <= lastArrowEndPos.x && cursorPos.y <= lastArrowEndPos.y)
{
return Math.floor((cursorPos.x - firstArrowStartPos.x) / this.arrowBoxSize.x);
}
else
{
return false;
}
};

View File

@@ -1,16 +0,0 @@
mexui.util.createControlConstructor('Day', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Day', styles), callback, false, false);
});
mexui.util.extend(mexui.Control.Day, mexui.Control.TextInput);
// model
mexui.Control.Day.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isPositiveIntChar(character) || mexui.util.isLetter(character);
};
mexui.Control.Day.prototype.validateValueCallback = function(e)
{
return mexui.util.isDayIdWithOptionalSuffix(this.getText());
};

View File

@@ -1,11 +0,0 @@
mexui.util.createControlConstructor('Digit', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Digit', styles), callback, true, false);
});
mexui.util.extend(mexui.Control.Digit, mexui.Control.TextInput);
// model
mexui.Control.Digit.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isDigit(character);
};

View File

@@ -1,11 +0,0 @@
mexui.util.createControlConstructor('Digits', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Digits', styles), callback, false, true);
});
mexui.util.extend(mexui.Control.Digits, mexui.Control.TextInput);
// model
mexui.Control.Digits.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isDigit(character);
};

View File

@@ -1,160 +0,0 @@
mexui.util.createControlConstructor('DropDown', true, function(window, x, y, w, h, text, styles, callback)
{
mexui.Component.Control.call(this, window, x, y, w, h, this.linkControlStyles('DropDown', styles), callback);
mexui.Entity.ControlWithEntries.call(this, true, true, new Vec2(0, h), new Vec2(w + 120, 25));
this.axis.y.entriesShown = false;
this.text = text;
this.arrowShown = true;
this.selectedEntryIndex = -1;
this.hoveredEntryIndex = -1;
});
// default styles
mexui.util.linkBaseControlStyles('DropDown', {
item:
{
backgroundColour: toColour(255, 255, 255, 255),
textColour: toColour(0, 0, 0, 255),
hover:
{
backgroundColour: toColour(80, 80, 80, 255),
textColour: toColour(0, 0, 0, 255)
}
}
});
// input
mexui.Control.DropDown.prototype.onMouseDown = function(e)
{
if(e.button == 0)
{
if(this.axis.y.entries.length == 0)
return;
var hitButton = this.isCursorOverControl();
if(hitButton)
{
e.used = true;
this.setListShown(!this.axis.y.entriesShown);
}
else if(this.isListShown())
{
var selectedEntryIndex = this.axis.y.getEntryIndexByCursor();
if(selectedEntryIndex != null)
{
this.selectEntryByIndex(selectedEntryIndex);
e.used = true;
}
}
}
if(!e.used)
mexui.Entity.ControlWithEntries.prototype.onMouseDown.call(this, e);
};
mexui.Control.DropDown.prototype.onKeyDown = function(e, key, mods)
{
if(this.isFocused())
{
if(key == SDLK_RETURN || key == SDLK_RETURN2 || key == SDLK_KP_ENTER || key == SDLK_SPACE)
{
var selectedEntryIndex = this.axis.y.getEntryIndexByCursor();
if(selectedEntryIndex == null)
{
this.setListShown(!this.isListShown());
e.used = true;
}
else
{
this.selectEntryByIndex(selectedEntryIndex);
e.used = true;
}
}
}
};
// render
mexui.Control.DropDown.prototype.render = function()
{
var pos = this.getScreenPosition();
mexui.native.drawRectangle(pos, this.size, this.getStyles('main'));
var text = this.selectedEntryIndex == -1 ? this.text : this.axis.y.entries[this.selectedEntryIndex].text;
mexui.native.drawText(pos, this.size, text, this.getStyles('main'));
if(this.arrowShown)
{
var pos2 = new Vec2(pos.x + this.size.x - (25 + 3), pos.y + 0);
mexui.native.drawImage(pos2, new Vec2(25, 25), mexui.images.downArrow, this.getStyles('main'));
}
mexui.Entity.ControlWithEntries.prototype.render.call(this);
if(this.isFocused())
mexui.native.drawRectangleBorder(mexui.util.subtractVec2(pos,new Vec2(2,2)), mexui.util.addVec2(this.size,new Vec2(3,3)), this.getStyles('focused'));
};
mexui.Control.DropDown.prototype.renderAfter = function()
{
if(this.axis.y.entriesShown)
{
var pos = this.getScreenPosition();
var pos2 = new Vec2(pos.x, pos.y);
pos.x += this.entriesPositionOffset.x;
pos.y += this.entriesPositionOffset.y;
pos2.x += this.entriesPositionOffset.x;
pos2.y += this.entriesPositionOffset.y;
for(var i=this.axis.y.getEntryStartIndex(),j=this.axis.y.getEntryEndIndex(); i<j; i++)
{
var item = this.axis.y.entries[i];
if(!item)
break;
//this.hovered = i == this.axis.y.hoveredEntryIndex;
mexui.native.drawRectangle(pos, this.entrySize, this.getStyles('item'));
mexui.native.drawText(pos, this.entrySize, item.text, this.getStyles('item'));
pos.y += this.entrySize.y;
}
if(this.isFocused())
mexui.native.drawRectangleBorder(mexui.util.subtractVec2(pos2,new Vec2(2,2)), mexui.util.addVec2(new Vec2(this.entrySize.x,this.axis.y.getDisplayedEntriesLength()),new Vec2(3,3)), this.getStyles('focused'));
}
mexui.Entity.ControlWithEntries.prototype.renderAfter.call(this);
};
// model
mexui.Control.DropDown.prototype.item = function(text)
{
var entry = new mexui.Entry.DropDownItem(this, text);
this.axis.y.addEntry(entry);
return entry;
};
mexui.Control.DropDown.prototype.setListShown = function(shown)
{
this.axis.y.entriesShown = shown;
this.axis.y.setScrollBarShown(shown);
};
mexui.Control.DropDown.prototype.isListShown = function()
{
return this.axis.y.entriesShown;
};
mexui.Control.DropDown.prototype.selectEntryByIndex = function(entryIndex)
{
this.selectedEntryIndex = entryIndex;
this.checkToCallCallback();
this.setListShown(false);
};

View File

@@ -1,130 +0,0 @@
mexui.util.createControlConstructor('Grid', true, function(window, x, y, w, h, styles)
{
mexui.Component.Control.call(this, window, x, y, w, h, this.linkControlStyles('Grid', styles));
mexui.Entity.ControlWithEntries.call(this, false, false, new Vec2(0, 25), new Vec2(this.size.x, 25), new Vec2(0, -25));
});
// default styles
mexui.util.linkBaseControlStyles('Grid', {
column:
{
lineColour: toColour(0, 0, 0, 255)
},
header:
{
backgroundColour: toColour(255, 255, 255, 255),
textColour: toColour(0, 0, 0, 255)
},
cell:
{
backgroundColour: toColour(255, 255, 255, 255),
textColour: toColour(0, 0, 0, 255)
},
row:
{
lineColour: toColour(0, 0, 0, 255)
}
});
// render
mexui.Control.Grid.prototype.render = function()
{
var pos = this.getScreenPosition();
mexui.native.drawRectangle(pos, this.size, this.getStyles('main'));
var startX = pos.x;
var maxColumnHeight = 0;
for(var i in this.axis.x.entries)
{
var column = this.axis.x.entries[i];
mexui.native.drawText(new Vec2(startX, pos.y), new Vec2(column.width, column.height), column.text, this.getStyles('header'));
startX += column.width;
mexui.native.drawAALine(new Vec2(startX, pos.y), new Vec2(startX, pos.y + this.size.y), this.getStyles('column'));
if(column.height > maxColumnHeight)
{
maxColumnHeight = column.height;
}
}
var startY = pos.y + maxColumnHeight;
mexui.native.drawAALine(new Vec2(pos.x, startY), new Vec2(pos.x + this.size.x, startY), this.getStyles('row'));
for(var i=this.axis.y.getEntryStartIndex(),j=this.axis.y.getEntryEndIndex(); i<j; i++)
{
var row = this.axis.y.entries[i];
if(!row)
break;
startX = pos.x;
for(var i2 in row.cells)
{
var column = this.axis.x.entries[i2];
var cell = row.cells[i2];
var cellText = cell.text;
var styles = this.getEntryStyles([[cell,'main'], [row,'main'], [this,'row'], [this,'cell']]);
mexui.native.drawRectangle(new Vec2(startX, startY), new Vec2(column.width, column.height), styles);
mexui.native.drawText(new Vec2(startX, startY), new Vec2(column.width, column.height), cellText, styles);
startX += column.width;
}
startY += row.rowHeight;
mexui.native.drawAALine(new Vec2(pos.x, startY), new Vec2(pos.x + this.size.x, startY), this.getStyles('row'));
}
if(this.isFocused())
mexui.native.drawRectangleBorder(mexui.util.subtractVec2(pos,new Vec2(2,2)), mexui.util.addVec2(this.size,new Vec2(3,3)), this.getStyles('focused'));
};
// model
mexui.Control.Grid.prototype.column = function(text, width, height)
{
var entry = new mexui.Entry.GridColumn(this, text, width, height);
this.axis.x.addEntry(entry);
return entry;
};
mexui.Control.Grid.prototype.row = function(cellsData, styles)
{
var cells = [];
for(var i in cellsData)
{
if(cellsData[i] instanceof mexui.Component.Entry)
{
cells[i] = cellsData[i];
}
else
{
cells[i] = new mexui.Component.Entry(this, 1, cellsData[i] + '');
}
}
var entry = new mexui.Entry.GridRow(this, cells, styles);
this.axis.y.addEntry(entry);
return entry;
};
mexui.Control.Grid.prototype.cell = function(text, styles)
{
var entry = new mexui.Component.Entry(this, 0, text, styles);
return entry;
};
mexui.Control.Grid.prototype.getAllEntriesLength = function(axisIndex)
{
if(axisIndex == 0)
{
return 0;
}
else
{
return this.axis.y.getAllEntriesLength2();
}
};

View File

@@ -1,21 +0,0 @@
mexui.util.createControlConstructor('Hour', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Hour', styles), callback, false, false);
});
mexui.util.extend(mexui.Control.Hour, mexui.Control.TextInput);
// model
mexui.Control.Hour.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isPositiveIntChar(character);
};
mexui.Control.Hour.prototype.validateValueCallback = function(e)
{
var _int = parseInt(this.getText());
if(_int < 1 || _int > 23)
return false;
return true;
};

View File

@@ -1,39 +0,0 @@
mexui.util.createControlConstructor('Image', false, function(window, x, y, w, h, filePath, styles, callback)
{
mexui.Component.Control.call(this, window, x, y, w, h, this.linkControlStyles('Image', styles), callback);
this.image = mexui.native.loadImage(filePath);
});
// default styles
mexui.util.linkBaseControlStyles('Image', {});
// input
mexui.Control.Image.prototype.onMouseDown = function(e)
{
if(e.button == 0 && this.isCursorOverControl())
{
e.used = true;
this.checkToCallCallback();
}
};
mexui.Control.Image.prototype.onKeyDown = function(e, key, mods)
{
if(this.isFocused() && (key == SDLK_RETURN || key == SDLK_RETURN2 || key == SDLK_KP_ENTER || key == SDLK_SPACE))
{
e.used = true;
this.checkToCallCallback();
}
};
// render
mexui.Control.Image.prototype.render = function()
{
var pos = this.getScreenPosition();
mexui.native.drawImage(pos, this.size, this.image, this.getStyles('main'));
if(this.isFocused())
mexui.native.drawRectangleBorder(mexui.util.subtractVec2(pos,new Vec2(2,2)), mexui.util.addVec2(this.size,new Vec2(3,3)), this.getStyles('focused'));
};

View File

@@ -1,16 +0,0 @@
mexui.util.createControlConstructor('Integer', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Integer', styles), callback, false, false);
});
mexui.util.extend(mexui.Control.Integer, mexui.Control.TextInput);
// model
mexui.Control.Integer.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isIntChar(character);
};
mexui.Control.Integer.prototype.validateValueCallback = function(e)
{
return mexui.util.isInt(this.getText());
};

View File

@@ -1,11 +0,0 @@
mexui.util.createControlConstructor('Letter', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Letter', styles), callback, true, false);
});
mexui.util.extend(mexui.Control.Letter, mexui.Control.TextInput);
// model
mexui.Control.Letter.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isLetter(character);
};

View File

@@ -1,11 +0,0 @@
mexui.util.createControlConstructor('LetterDigit', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('LetterDigit', styles), callback, true, false);
});
mexui.util.extend(mexui.Control.LetterDigit, mexui.Control.TextInput);
// model
mexui.Control.LetterDigit.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isLetterOrDigit(character);
};

View File

@@ -1,11 +0,0 @@
mexui.util.createControlConstructor('Letters', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Letters', styles), callback, false, true);
});
mexui.util.extend(mexui.Control.Letters, mexui.Control.TextInput);
// model
mexui.Control.Letters.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isLetter(character);
};

View File

@@ -1,11 +0,0 @@
mexui.util.createControlConstructor('LettersDigits', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('LettersDigits', styles), callback, false, true);
});
mexui.util.extend(mexui.Control.LettersDigits, mexui.Control.TextInput);
// model
mexui.Control.LettersDigits.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isLetterOrDigit(character);
};

View File

@@ -1,23 +0,0 @@
mexui.util.createControlConstructor('Line', false, function(window, x, y, w, h, styles, callback)
{
mexui.Component.Control.call(this, window, x, y, w, h, this.linkControlStyles('Line', styles), callback);
});
// default styles
mexui.util.linkBaseControlStyles('Line', {});
// input
mexui.Control.Line.prototype.onMouseDown = function(e)
{
if(this.isCursorOverControl())
{
this.checkToCallCallback();
}
};
// render
mexui.Control.Line.prototype.render = function()
{
var pos = this.getScreenPosition();
mexui.native.drawAALine(pos, this.size, this.getStyles('main'));
};

View File

@@ -1,62 +0,0 @@
mexui.util.createControlConstructor('List', true, function(window, x, y, w, h, styles, callback)
{
mexui.Component.Control.call(this, window, x, y, w, h, this.linkControlStyles('List', styles), callback);
mexui.Entity.ControlWithEntries.call(this, false, false);
this.activeRow = null;
this.rowHeight = 25;
});
// default styles
mexui.util.linkBaseControlStyles('List', {
row:
{
backgroundColour: toColour(255, 255, 255, 255),
textColour: toColour(0, 0, 0, 255)
},
rowLine:
{
lineColour: toColour(0, 0, 0, 150)
}
});
// input
mexui.Control.List.prototype.onMouseDown = function(e)
{
if(e.button == 0 && this.isCursorOverControl())
{
this.activeRow = this.axis.y.getEntryByCursor();
this.checkToCallCallback();
}
};
// render
mexui.Control.List.prototype.render = function()
{
var pos = this.getScreenPosition();
var pos2 = new Vec2(pos.x, pos.y);
for(var i in this.axis.y.entries)
{
var row = this.axis.y.entries[i];
var rowText = row.text;
mexui.native.drawRectangle(pos, new Vec2(this.size.x, this.rowHeight), this.getStyles('row'));
mexui.native.drawText(pos, new Vec2(this.size.x, this.rowHeight), rowText, this.getStyles('row'));
pos.y += this.rowHeight;
mexui.native.drawAALine(pos, new Vec2(pos.x + this.size.x, pos.y), this.getStyles('rowLine'));
}
if(this.isFocused())
mexui.native.drawRectangleBorder(mexui.util.subtractVec2(pos2,new Vec2(2,2)), mexui.util.addVec2(this.size,new Vec2(3,3)), this.getStyles('focused'));
};
// model
mexui.Control.List.prototype.row = function(text)
{
var entry = new mexui.Entry.ListRow(this, text);
this.axis.y.addEntry(entry);
return entry;
};

View File

@@ -1,21 +0,0 @@
mexui.util.createControlConstructor('Minute', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Minute', styles), callback, false, false);
});
mexui.util.extend(mexui.Control.Minute, mexui.Control.TextInput);
// model
mexui.Control.Minute.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isPositiveIntChar(character);
};
mexui.Control.Minute.prototype.validateValueCallback = function(e)
{
var _int = parseInt(this.getText());
if(_int < 1 || _int > 59)
return false;
return true;
};

View File

@@ -1,16 +0,0 @@
mexui.util.createControlConstructor('Month', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Month', styles), callback, false, false);
});
mexui.util.extend(mexui.Control.Month, mexui.Control.TextInput);
// model
mexui.Control.Month.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isPositiveIntChar(character) || mexui.util.isLetter(character);
};
mexui.Control.Month.prototype.validateValueCallback = function(e)
{
return mexui.util.isMonthIdOrName(this.getText());
};

View File

@@ -1,16 +0,0 @@
mexui.util.createControlConstructor('Number', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Number', styles), callback, false, false);
});
mexui.util.extend(mexui.Control.Number, mexui.Control.TextInput);
// model
mexui.Control.Number.prototype.validateInputCallback = function(e, character)
{
return mexui.util.isFloatChar(character);
};
mexui.Control.Number.prototype.validateValueCallback = function(e)
{
return mexui.util.isFloat(this.getText());
};

View File

@@ -1,7 +0,0 @@
mexui.util.createControlConstructor('Password', false, function(window, x, y, w, h, text, styles, callback)
{
mexui.Control.TextInput.call(this, window, x, y, w, h, text, this.linkControlStyles('Password', styles), callback, false, true);
this.masked = true;
});
mexui.util.extend(mexui.Control.Password, mexui.Control.TextInput);

Some files were not shown because too many files have changed in this diff Show More