Merge branch 'nightly' into ragemp
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@
|
||||
*.code-workspace
|
||||
config/database.json
|
||||
config/email.json
|
||||
config/discord.json
|
||||
|
||||
11
TODO.md
11
TODO.md
@@ -1,5 +1,10 @@
|
||||
* Finish auto-translate
|
||||
* Add /autotranslate to enable/disable automatic chat translations for all languages, or specific ones by short code (RU, ES, etc)
|
||||
* Finish working on the new job route system
|
||||
* Finish auto-translator
|
||||
* Add ways to acquire drugs. Pot/coke plants, meth labs, etc
|
||||
* Finish setting up the persistent NPC system
|
||||
* Add yes/no prompts for some important things like
|
||||
* (Business owner) Setting item sell price below order price. Will result in losing money.
|
||||
* Giving house, biz, or vehicle to clan. Clan leaders can revoke permissions and you may be screwed and not able to change it!
|
||||
* Deleting character
|
||||
* Make game messages (big message, small message) into array of types
|
||||
* Array of message types in shared
|
||||
* Font, text, duration, etc arrays in client, indexed by type
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"host": "localhost",
|
||||
"user": "",
|
||||
"pass": "",
|
||||
"name": "",
|
||||
"port": 3306,
|
||||
"usePersistentConnection": true
|
||||
}
|
||||
10
config/discord.json
Normal file
10
config/discord.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sendChat": "true",
|
||||
"sendConnectEvents": "true",
|
||||
"sendVehicleEvents": "true",
|
||||
"sendDeathEvents": "true",
|
||||
"webhook": {
|
||||
"enabled": "true",
|
||||
"webhookBaseURL": "https://example.com/something.php?message={0}&url={1}"
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{
|
||||
"enabled": "false",
|
||||
"smtp": {
|
||||
"host":"",
|
||||
"port":"",
|
||||
"username":"",
|
||||
"password":"",
|
||||
"from":"",
|
||||
"fromName":"",
|
||||
"useTLS":"true"
|
||||
},
|
||||
"bodyContent": {
|
||||
"confirmEmail": "Welcome to {SERVERNAME}!\nPlease confirm your email by using the command /verifyemail in-game.\n\nYour verification code is: {VERIFICATIONCODE}",
|
||||
"emailConfirmed": "Your email has been confirmed on {SERVERNAME}!\nYou may now use this email to reset your password, require two-factor authentication on login, receive offline notifications, and more!",
|
||||
"twoFactorAuthentication": "Please enter the following code to continue on {SERVERNAME} for {GAMENAME}: {2FACODE}",
|
||||
"accountAuthSuccessAlert": "You or someone else has successfully logged in to your account on {SERVERNAME} for {GAMENAME}.\n\nIP Address: {IPADDRESS}\nLocation: {LOCATION}\nTimestamp: {TIMESTAMP}\n\nIf you have two-factor authentication enabled (Using /2fa in-game), your account can't be accessed unless a correct 2FA code is entered.",
|
||||
"accountAuthFailAlert": "You or someone else has failed to login to your account on {SERVERNAME} for {GAMENAME}.\nIP Address: {IPADDRESS}\nLocation: {LOCATION}\nTimestamp: {TIMESTAMP}",
|
||||
"offlineMessageAlert": "You have received a private message on {SERVERNAME} for {GAMENAME}. \nYou are receiving this notification because you enabled email message notifications when you're not connected to the server.\nFrom: {FROMNAME}\nTimestamp: {TIMESTAMP}\nMessage: {MESSAGE}",
|
||||
"confirmPasswordReset": "You (or someone else) requested to reset your password on {SERVERNAME}!\nPlease confirm this request by entering the code below into the password reset window in-game.\n\nYour verification code is: {VERIFICATIONCODE}\n\n\nIf you did not request a password reset, then there's nothing to worry about since your password can only be reset with the code above.",
|
||||
"passwordChanged": "Your password on {SERVERNAME} has been changed successfully!"
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,70 @@
|
||||
"apiEmail": "example@example.com",
|
||||
"defaultLanguage": "en",
|
||||
"locales": [
|
||||
["English", "english", "en"],
|
||||
["Russian", "russian", "ru"],
|
||||
["Polish", "polish", "pl"],
|
||||
["Spanish", "spanish", "es"]
|
||||
{
|
||||
"englishName": "English",
|
||||
"stringsFile": "english.json",
|
||||
"isoCode": "en",
|
||||
"flagImageFile": "gb.png",
|
||||
"countries": ["gb", "us", "au", "bz", "ca", "ie", "jm", "nz", "za", "tt"],
|
||||
"requiresUnicode": false
|
||||
},
|
||||
{
|
||||
"englishName": "Russian",
|
||||
"stringsFile": "russian.json",
|
||||
"isoCode": "ru",
|
||||
"flagImageFile": "ru",
|
||||
"countries": ["ru", "ua"],
|
||||
"requiresUnicode": false
|
||||
},
|
||||
{
|
||||
"englishName": "Polish",
|
||||
"stringsFile": "polish.json",
|
||||
"isoCode": "pl",
|
||||
"flagImageFile": "pl",
|
||||
"countries": ["pl"],
|
||||
"requiresUnicode": false
|
||||
},
|
||||
{
|
||||
"englishName": "Spanish",
|
||||
"stringsFile": "spanish.json",
|
||||
"isoCode": "es",
|
||||
"flagImageFile": "es",
|
||||
"countries": ["es", "ar", "bo", "cl", "co", "cr", "do", "ec", "sv", "gt", "hn", "mx", "ni", "pa", "py", "pe", "pr", "uy", "ve"],
|
||||
"requiresUnicode": false
|
||||
},
|
||||
{
|
||||
"englishName": "Chinese",
|
||||
"stringsFile": "chinese.json",
|
||||
"isoCode": "zh",
|
||||
"flagImageFile": "cn",
|
||||
"countries": ["cn", "hk", "sg", "tw"],
|
||||
"requiresUnicode": true
|
||||
},
|
||||
{
|
||||
"englishName": "Arabic",
|
||||
"stringsFile": "arabic.json",
|
||||
"isoCode": "ar",
|
||||
"flagImageFile": "sa",
|
||||
"countries": ["dz", "bh", "eg", "iq", "jo", "kw", "lb", "ly", "ma", "om", "qa", "sa", "sy", "tn", "ae", "ye"],
|
||||
"requiresUnicode": true
|
||||
}
|
||||
],
|
||||
"sendStringsToClient": [
|
||||
"PropertyEnterCommandLabel",
|
||||
"PropertyEnterKeyPressLabel",
|
||||
"BusinessBuyItemsLabel",
|
||||
"PropertyForSaleLabel",
|
||||
"PropertyForRentLabel",
|
||||
"VehicleDealershipLabel",
|
||||
"TakeJobLabel",
|
||||
"StartWorkLabel",
|
||||
"JobEquipAndUniformLabel",
|
||||
"NotYourJobLabel",
|
||||
"Locked",
|
||||
"Unlocked",
|
||||
"Closed",
|
||||
"Open",
|
||||
"JobLabel"
|
||||
]
|
||||
}
|
||||
18
documentation/gtac/client/gtaiv/Commands.xml
Normal file
18
documentation/gtac/client/gtaiv/Commands.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Commands>
|
||||
<Command Name="gamestats" Hash="3782704029" />
|
||||
<Command Name="say" Hash="4241071205" />
|
||||
<Command Name="exit" Hash="2483651598" />
|
||||
<Command Name="quit" Hash="1135269781" />
|
||||
<Command Name="clear" Hash="3853644038" />
|
||||
<Command Name="connect" Hash="1959786783" />
|
||||
<Command Name="reconnect" Hash="1240758083" />
|
||||
<Command Name="console" Hash="906219446" />
|
||||
<Command Name="cvar" Hash="2588334565" />
|
||||
<Command Name="netstats" Hash="2015089090" />
|
||||
<Command Name="q" Hash="4110462503" />
|
||||
<Command Name="disconnect" Hash="3820433" />
|
||||
<Command Name="fpscounter" Hash="2973827809" />
|
||||
<Command Name="dumpdoc" Hash="3404143852" />
|
||||
<Command Name="chatscale" Hash="402639070" />
|
||||
</Commands>
|
||||
3542
documentation/gtac/client/gtaiv/Defines.xml
Normal file
3542
documentation/gtac/client/gtaiv/Defines.xml
Normal file
File diff suppressed because it is too large
Load Diff
3159
documentation/gtac/client/gtaiv/Documentation.xml
Normal file
3159
documentation/gtac/client/gtaiv/Documentation.xml
Normal file
File diff suppressed because it is too large
Load Diff
95
documentation/gtac/client/gtaiv/EventTypes.xml
Normal file
95
documentation/gtac/client/gtaiv/EventTypes.xml
Normal file
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" ?>
|
||||
<EventTypes>
|
||||
<!---->
|
||||
<EventType Name="OnLocalPlayerEnterSphere" Hash="3890156725" Arguments="1" CanPreventDefault="false" />
|
||||
<!--**UNUSED**-->
|
||||
<EventType Name="OnBeforeProcessCamera" Hash="1763657124" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called right before the hud is drawn, you should draw your HUD here if you want it under the hud-->
|
||||
<EventType Name="OnDrawHUD" Hash="2504546524" Arguments="0" CanPreventDefault="true" />
|
||||
<!--Called when a mouse moves-->
|
||||
<EventType Name="OnMouseMove" Hash="1865196431" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called before the hud is drawn-->
|
||||
<EventType Name="OnBeforeDrawHUD" Hash="3008683449" Arguments="0" CanPreventDefault="true" />
|
||||
<!--Called when a keyboard key is down-->
|
||||
<EventType Name="OnKeyDown" Hash="3091440445" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called when a resource starts-->
|
||||
<EventType Name="OnResourceStart" Hash="1143708828" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when an element is about to stream in-->
|
||||
<EventType Name="OnElementStreamIn" Hash="2759455221" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when a resource stops-->
|
||||
<EventType Name="OnResourceStop" Hash="1347867548" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called after all the hud is drawn, you should draw your HUD here if you want it over the hud-->
|
||||
<EventType Name="OnDrawnHUD" Hash="1969344644" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called after OnRender2D, usually post processing would be done here-->
|
||||
<EventType Name="OnPostRender2D" Hash="1025891209" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when all the files are downloaded-->
|
||||
<EventType Name="OnResourceReady" Hash="4089924796" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called whenever an entity is processed-->
|
||||
<EventType Name="OnEntityProcess" Hash="850679850" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when a ped is created/spawned-->
|
||||
<EventType Name="OnPedSpawn" Hash="3880839897" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a ped finished dying or is instantly killed-->
|
||||
<EventType Name="OnPedDead" Hash="3023102245" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when the camera is about to be processed-->
|
||||
<EventType Name="OnCameraProcess" Hash="4077277522" Arguments="0" CanPreventDefault="true" />
|
||||
<!--Called when a ped is damaged-->
|
||||
<EventType Name="OnPedInflictDamage" Hash="1391854299" Arguments="5" CanPreventDefault="true" />
|
||||
<!--Called when a ped dies-->
|
||||
<EventType Name="OnPedWasted" Hash="3129373940" Arguments="4" CanPreventDefault="false" />
|
||||
<!---->
|
||||
<EventType Name="OnLocalPlayerExitSphere" Hash="105319985" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a GUIElement is clicked on-->
|
||||
<EventType Name="OnGUIClick" Hash="1620463676" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when dodo flight time ends-->
|
||||
<EventType Name="OnRegisterDodoFlightTime" Hash="3998584707" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when an element is about to be destroyed-->
|
||||
<EventType Name="OnElementDestroy" Hash="696839637" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when anchor tags are clicked in a GUIHtmlView-->
|
||||
<EventType Name="OnGUIAnchorClick" Hash="1882824246" Arguments="3" CanPreventDefault="true" />
|
||||
<!--Called when the mouse leaves the window-->
|
||||
<EventType Name="OnMouseLeave" Hash="3102340603" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when a cursor button is up-->
|
||||
<EventType Name="OnCursorUp" Hash="2031527000" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called every process-->
|
||||
<EventType Name="OnProcess" Hash="3150131130" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called every prerender-->
|
||||
<EventType Name="OnPreRender" Hash="2235820386" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called every render-->
|
||||
<EventType Name="OnRender" Hash="2466144783" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when 2D shit should be rendered-->
|
||||
<EventType Name="OnRender2D" Hash="3260181898" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when a line will be output to the chatbox-->
|
||||
<EventType Name="OnChatOutput" Hash="2275472839" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when a mouse button is down-->
|
||||
<EventType Name="OnMouseDown" Hash="2632778956" Arguments="2" CanPreventDefault="false" />
|
||||
<!--Called when a mouse button is up-->
|
||||
<EventType Name="OnMouseUp" Hash="3080252785" Arguments="2" CanPreventDefault="false" />
|
||||
<!--Called when a cursor button is down-->
|
||||
<EventType Name="OnCursorDown" Hash="3618352285" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when the cursor moves-->
|
||||
<EventType Name="OnCursorMove" Hash="610929630" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when the mouse scrolls-->
|
||||
<EventType Name="OnMouseWheel" Hash="1116330591" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called when a mouse is connected-->
|
||||
<EventType Name="OnMouseConnected" Hash="4137684318" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a mouse is disconnected-->
|
||||
<EventType Name="OnMouseDisconnected" Hash="2332645211" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when the window is focused-->
|
||||
<EventType Name="OnFocus" Hash="1989030060" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when the window is defocused-->
|
||||
<EventType Name="OnLostFocus" Hash="1036525539" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when a keyboard key is up-->
|
||||
<EventType Name="OnKeyUp" Hash="1763402597" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called when a key is typed-->
|
||||
<EventType Name="OnCharacter" Hash="318128971" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when an element is about to stream out-->
|
||||
<EventType Name="OnElementStreamOut" Hash="3852636898" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when disconnected from the server-->
|
||||
<EventType Name="OnDisconnect" Hash="3221334991" Arguments="1" CanPreventDefault="false" />
|
||||
<!---->
|
||||
<EventType Name="OnLocalPlayerEnteredVehicle" Hash="3395021369" Arguments="1" CanPreventDefault="false" />
|
||||
<!---->
|
||||
<EventType Name="OnLocalPlayerExitedVehicle" Hash="1654569001" Arguments="1" CanPreventDefault="false" />
|
||||
<!---->
|
||||
<EventType Name="OnLocalPlayerSwitchWeapon" Hash="3670373318" Arguments="2" CanPreventDefault="false" />
|
||||
</EventTypes>
|
||||
14
documentation/gtac/server/Commands.xml
Normal file
14
documentation/gtac/server/Commands.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Commands>
|
||||
<Command Name="dumpdoc" Hash="3404143852" />
|
||||
<Command Name="refresh" Hash="1619108091" />
|
||||
<Command Name="restart" Hash="3891864071" />
|
||||
<Command Name="stop" Hash="3109426870" />
|
||||
<Command Name="cmd" Hash="794565824" />
|
||||
<Command Name="start" Hash="2675529103" />
|
||||
<Command Name="stopall" Hash="1683731152" />
|
||||
<Command Name="exit" Hash="2483651598" />
|
||||
<Command Name="quit" Hash="1135269781" />
|
||||
<Command Name="help" Hash="143088812" />
|
||||
<Command Name="say" Hash="4241071205" />
|
||||
</Commands>
|
||||
1671
documentation/gtac/server/Defines.xml
Normal file
1671
documentation/gtac/server/Defines.xml
Normal file
File diff suppressed because it is too large
Load Diff
439
documentation/gtac/server/Documentation.xml
Normal file
439
documentation/gtac/server/Documentation.xml
Normal file
@@ -0,0 +1,439 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Documentation>
|
||||
<!--
|
||||
Mask Values
|
||||
|
||||
b - bool
|
||||
i - int32
|
||||
f - float
|
||||
s - string
|
||||
c - function/callback
|
||||
x - class/instance
|
||||
z - vector2D
|
||||
v - vector3D
|
||||
t - thiscall
|
||||
| - optional arguments
|
||||
* - infinite arguments
|
||||
. - any type
|
||||
-->
|
||||
<Namespace Name="global">
|
||||
<Property Name="platform" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="thisResource" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="localClient" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="localPlayer" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Function Name="toColour" Mask="iii|i" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="collectAllGarbage" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="inPoly" Mask="z*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addEvent" Mask="s|i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addEventHandler" Mask="sf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeEventHandler" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="bindEventHandler" Mask="sxf" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="unbindEventHandler" Mask="sx" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="triggerEvent" Mask="s|x*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addCommandHandler" Mask="sc|b" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeCommandHandler" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="consoleCommand" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setTimeout" Mask="ci*" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="setInterval" Mask="ci*" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="setImmediate" Mask="c*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clearTimeout" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clearInterval" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clearImmediate" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="bindKey" Mask="iic" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="unbindKey" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="unbindAllKeys" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="findResourceByName" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getResources" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="exportFunction" Mask="c" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="openFile" Mask="s|b" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createFile" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="loadTextFile" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="saveTextFile" Mask="ss" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="addNetworkHandler" Mask="sc" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeNetworkHandler" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="httpGet" Mask="sscc" RequiredArguments="4" Obsolete="false" />
|
||||
<Function Name="message" Mask="s|i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="messageClient" Mask="sx|i" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="messageAllExcept" Mask="sx|i" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="getConsole" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getClients" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getClient" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="destroyElement" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getClientFromPlayerElement" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElementsByType" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElementFromId" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElementFromName" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addToWorld" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="triggerNetworkEvent" Mask="sx*" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="fadeCamera" Mask="xb|fi" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="spawnPlayer" Mask="xv|fiii" RequiredArguments="2" Obsolete="false" />
|
||||
<Class Name="Stream">
|
||||
<Property Name="length" ReadOnly="true" Obsolete="false" Type="int64" />
|
||||
<Property Name="position" ReadOnly="true" Obsolete="false" Type="int64" />
|
||||
<Function Name="close" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readBytes" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="readString" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readLine" Mask="t" RequiredArguments="0" Obsolete="true" />
|
||||
<Function Name="writeBytes" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeString" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="readInt8" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt8" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readInt16" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt16" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readInt32" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt32" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readInt64" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt64" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readFloat" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readDouble" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="writeInt8" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt8" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeInt16" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt16" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeInt32" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt32" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeInt64" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt64" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeFloat" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeDouble" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="TextReader">
|
||||
<Function Name="close" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="loadText" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readLine" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readCharacter" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Matrix4x4">
|
||||
<Property Name="m11" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m12" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m13" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m14" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m21" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m22" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m23" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m24" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m31" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m32" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m33" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m34" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m41" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m42" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m43" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m44" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Function Name="setIdentity" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="setTranslate" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setScale" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotateX" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotateY" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotateZ" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotate" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setMultiply" Mask="txx*" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="multiply" Mask="tx*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setInverse" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="transformCoordinate" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElement" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setElement" Mask="tif" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="getVector3" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Vec2">
|
||||
<Property Name="x" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="y" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Function Name="addPolar" Mask="tff" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="interpolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="extrapolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalInterpolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalExtrapolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="cartesianToPolar" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Vec3">
|
||||
<Property Name="x" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="y" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="z" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="length" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="squaredLength" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Function Name="distance" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="squaredDistance" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="dotProduct" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="absDotProduct" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="normalise" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="crossProduct" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="midPoint" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addPolar" Mask="tff" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="addSpherical" Mask="tfff" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="interpolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="extrapolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalInterpolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalExtrapolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="cartesianToPolar" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="cartesianToSpherical" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Event">
|
||||
<Class Name="CancellableEvent">
|
||||
<Function Name="preventDefault" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="isDefaultPrevented" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
</Class>
|
||||
<Class Name="Timer" />
|
||||
<Class Name="KeyEvent">
|
||||
<Property Name="keyCode" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="scanCode" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="mod" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="repeat" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="down" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Function Name="preventDefault" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="isDefaultPrevented" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="XmlElement">
|
||||
<Property Name="childrenCount" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="children" ReadOnly="true" Obsolete="false" />
|
||||
<Property Name="parent" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="text" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="attributes" ReadOnly="true" Obsolete="false" />
|
||||
<Function Name="clear" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getStringAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getBoolAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getIntegerAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getFloatAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="XmlDocument">
|
||||
<Property Name="rootElement" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Function Name="load" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Resource">
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="isStarted" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isStarting" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="exports" ReadOnly="true" Obsolete="false" />
|
||||
<Function Name="start" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="stop" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="restart" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getExport" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Client">
|
||||
<Property Name="index" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="game" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="gameVersion" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="player" ReadOnly="false" Obsolete="false" Type="Object" />
|
||||
<Property Name="administrator" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="console" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="ip" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="ping" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Function Name="despawnPlayer" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="disconnect" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setData" Mask="ts.|b" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="removeAllData" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Element">
|
||||
<Property Name="id" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="type" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="isLocal" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isSyncer" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isOwner" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="syncer" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="owner" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="dimension" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="onAllDimensions" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="parent" ReadOnly="false" Obsolete="false" Type="Object" />
|
||||
<Property Name="children" ReadOnly="true" Obsolete="false" />
|
||||
<Property Name="name" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="resource" ReadOnly="false" Obsolete="false" Type="Object" />
|
||||
<Function Name="isType" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setData" Mask="ts.|b" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="removeAllData" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="setSyncer" Mask="ti|b" RequiredArguments="1" Obsolete="false" />
|
||||
<Class Name="Transformable">
|
||||
<Property Name="position" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Property Name="streamInDistance" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="streamOutDistance" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Function Name="getRotation" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="setRotation" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Class Name="Entity">
|
||||
<Property Name="modelIndex" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="interior" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="matrix" ReadOnly="false" Obsolete="false" Type="Matrix4x4" />
|
||||
<Property Name="heading" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Class Name="Physical">
|
||||
<Property Name="velocity" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Property Name="turnVelocity" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Class Name="Ped">
|
||||
<Property Name="vehicle" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="seat" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="health" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="armour" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="weapon" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="weaponAmmunition" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="weaponClipAmmunition" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="weaponState" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="isEnteringVehicle" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isExitingVehicle" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Function Name="warpIntoVehicle" Mask="txi" RequiredArguments="2" Obsolete="false" />
|
||||
<Class Name="Player" />
|
||||
</Class>
|
||||
<Class Name="Vehicle">
|
||||
<Property Name="locked" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="carLock" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="engine" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="colour1" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="colour2" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="colour3" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="colour4" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="strongGrip" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Function Name="setColours" Mask="tii" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="setRGBColours" Mask="tii" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="randomiseColours" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="fix" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getOccupant" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getOccupants" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Class Name="Train">
|
||||
<Property Name="track" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="trackPosition" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="speed" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="derailed" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="headlights" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="taillights" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
</Class>
|
||||
</Class>
|
||||
<Class Name="Object" />
|
||||
</Class>
|
||||
<Class Name="Building" />
|
||||
</Class>
|
||||
<Class Name="Blip" />
|
||||
<Class Name="Pickup" />
|
||||
<Class Name="Marker" />
|
||||
<Class Name="CarGenerator" />
|
||||
</Class>
|
||||
</Class>
|
||||
<Namespace Name="reflection">
|
||||
<Function Name="clone" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="move" Mask="xx" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="tostring" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createFunction" Mask="c" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="call" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Class Name="Function" />
|
||||
</Namespace>
|
||||
<Namespace Name="module">
|
||||
<Namespace Name="hashing">
|
||||
<Function Name="encodeBase64" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="decodeBase64" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="md5" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="sha1" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="sha224" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="sha256" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="sha384" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="sha512" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="ripemd128" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="ripemd160" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="ripemd256" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="ripemd320" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="whirlpool" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Namespace>
|
||||
<Namespace Name="geoip">
|
||||
<Function Name="getCountryName" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getCountryISO" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getContinentName" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getContinentCode" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getCityName" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getPostalCode" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getSubdivisionName" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getSubdivisionISO" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getTimeZoneName" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Namespace>
|
||||
<Namespace Name="mysql">
|
||||
<Function Name="connect" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Class Name="Connection">
|
||||
<Property Name="ping" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Property Name="insertId" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Property Name="affectedRows" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Property Name="warningCount" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Property Name="errorNum" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Property Name="error" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Function Name="query" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="close" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="escapeString" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="selectDatabase" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="changeUser" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="info" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Result">
|
||||
<Property Name="numRows" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Function Name="free" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="fetchAssoc" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="fetchAssoc" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="fetchRow" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
</Namespace>
|
||||
<Namespace Name="smtp">
|
||||
<Function Name="send" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Namespace>
|
||||
</Namespace>
|
||||
<Namespace Name="sdl">
|
||||
<Property Name="platform" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="ticks" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Function Name="getModState" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Namespace>
|
||||
<Namespace Name="platform">
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="modState" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="ticks" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
</Namespace>
|
||||
<Namespace Name="server">
|
||||
<Property Name="game" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="name" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="gameMode" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="port" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="maxClients" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="rcon" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="rconPort" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="listed" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="httpServer" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="httpPort" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="minClientVersion" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="syncInterval" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="syncMethod" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="duplicateNames" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="streamInDistance" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="streamOutDistance" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="pickupStreamInDistance" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="pickupStreamOutDistance" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="logPath" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Function Name="setRule" Mask="ss" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="getRule" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="banIP" Mask="s|i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="unbanIP" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="unbanAllIPs" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="isIPBanned" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="shutdown" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getCVar" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
</Namespace>
|
||||
<Namespace Name="gta">
|
||||
<Property Name="weather" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="ssvBridgeEnabled" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Function Name="forceWeather" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createVehicle" Mask="i|v" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createBlipAttachedTo" Mask="xi|iibb" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="createBuilding" Mask="i|v" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createObject" Mask="i|v" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createBlip" Mask="iv|ii" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="createPickup" Mask="i|vi" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createSphere" Mask="v|f" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createPlayer" Mask="i|v" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createCivilian" Mask="i|v" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="hostSession" Mask="xii" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="joinSession" Mask="xx" RequiredArguments="2" Obsolete="false" />
|
||||
<Class Name="World" />
|
||||
<Namespace Name="time">
|
||||
<Property Name="minuteDuration" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="hour" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="minute" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="second" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="day" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
</Namespace>
|
||||
</Namespace>
|
||||
</Namespace>
|
||||
</Documentation>
|
||||
47
documentation/gtac/server/EventTypes.xml
Normal file
47
documentation/gtac/server/EventTypes.xml
Normal file
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" ?>
|
||||
<EventTypes>
|
||||
<!--Called when a pickup is collected-->
|
||||
<EventType Name="OnPickupCollected" Hash="4105239817" Arguments="2" CanPreventDefault="false" />
|
||||
<!--Called when a ped starts uncrouching-->
|
||||
<EventType Name="OnPedUncrouch" Hash="561660263" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a ped starts jumping-->
|
||||
<EventType Name="OnPedJump" Hash="4272336407" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a ped starts falling to floor-->
|
||||
<EventType Name="OnPedFall" Hash="2722461453" Arguments="4" CanPreventDefault="false" />
|
||||
<!--Called when a ped starts crouching-->
|
||||
<EventType Name="OnPedCrouch" Hash="1096855702" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a ped is spawned.-->
|
||||
<EventType Name="OnPedSpawn" Hash="3880839897" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a ped is wasted (from attacker client).-->
|
||||
<EventType Name="OnWastePed" Hash="1462492871" Arguments="4" CanPreventDefault="false" />
|
||||
<!--Called when a ped is exiting a vehicle.-->
|
||||
<EventType Name="OnPedExitVehicle" Hash="3163626874" Arguments="2" CanPreventDefault="false" />
|
||||
<!--Called when a resource starts-->
|
||||
<EventType Name="OnResourceStart" Hash="1143708828" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when a player types a command-->
|
||||
<EventType Name="OnPlayerCommand" Hash="1638826555" Arguments="3" CanPreventDefault="true" />
|
||||
<!--Called every process-->
|
||||
<EventType Name="OnProcess" Hash="3150131130" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a resource stops-->
|
||||
<EventType Name="OnResourceStop" Hash="1347867548" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when an element is about to stream in-->
|
||||
<EventType Name="OnElementStreamIn" Hash="2759455221" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when a player has connected and is joining-->
|
||||
<EventType Name="OnPlayerJoin" Hash="3624951888" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when the player has joined the game-->
|
||||
<EventType Name="OnPlayerJoined" Hash="3833973824" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a player disconnects-->
|
||||
<EventType Name="OnPlayerQuit" Hash="3017502482" Arguments="2" CanPreventDefault="false" />
|
||||
<!--Called when a player is attempting to connect-->
|
||||
<EventType Name="OnPlayerConnect" Hash="2611712496" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when the server finished the start sequence-->
|
||||
<EventType Name="OnServerStart" Hash="3318682471" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when a player chats-->
|
||||
<EventType Name="OnPlayerChat" Hash="2515290669" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when an element is about to be destroyed-->
|
||||
<EventType Name="OnElementDestroy" Hash="696839637" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when a ped is wasted.-->
|
||||
<EventType Name="OnPedWasted" Hash="3129373940" Arguments="4" CanPreventDefault="false" />
|
||||
<!--Called when a ped is entering a vehicle.-->
|
||||
<EventType Name="OnPedEnterVehicle" Hash="2529136464" Arguments="3" CanPreventDefault="false" />
|
||||
</EventTypes>
|
||||
18
documentation/mafiac/client/mafia1/Commands.xml
Normal file
18
documentation/mafiac/client/mafia1/Commands.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Commands>
|
||||
<Command Name="gamestats" Hash="3782704029" />
|
||||
<Command Name="say" Hash="4241071205" />
|
||||
<Command Name="exit" Hash="2483651598" />
|
||||
<Command Name="quit" Hash="1135269781" />
|
||||
<Command Name="clear" Hash="3853644038" />
|
||||
<Command Name="connect" Hash="1959786783" />
|
||||
<Command Name="reconnect" Hash="1240758083" />
|
||||
<Command Name="console" Hash="906219446" />
|
||||
<Command Name="cvar" Hash="2588334565" />
|
||||
<Command Name="q" Hash="4110462503" />
|
||||
<Command Name="disconnect" Hash="3820433" />
|
||||
<Command Name="fpscounter" Hash="2973827809" />
|
||||
<Command Name="dumpdoc" Hash="3404143852" />
|
||||
<Command Name="chatscale" Hash="402639070" />
|
||||
<Command Name="help" Hash="143088812" />
|
||||
</Commands>
|
||||
577
documentation/mafiac/client/mafia1/Defines.xml
Normal file
577
documentation/mafiac/client/mafia1/Defines.xml
Normal file
@@ -0,0 +1,577 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Defines>
|
||||
<Define Name="KEYSTATE_UP" Value="0" />
|
||||
<Define Name="KEYSTATE_DOWN" Value="1" />
|
||||
<Define Name="KEYSTATE_BOTH" Value="2" />
|
||||
<Define Name="SDL_SCANCODE_UNKNOWN" Value="0" />
|
||||
<Define Name="SDL_SCANCODE_A" Value="4" />
|
||||
<Define Name="SDL_SCANCODE_B" Value="5" />
|
||||
<Define Name="SDL_SCANCODE_C" Value="6" />
|
||||
<Define Name="SDL_SCANCODE_D" Value="7" />
|
||||
<Define Name="SDL_SCANCODE_E" Value="8" />
|
||||
<Define Name="SDL_SCANCODE_F" Value="9" />
|
||||
<Define Name="SDL_SCANCODE_G" Value="10" />
|
||||
<Define Name="SDL_SCANCODE_H" Value="11" />
|
||||
<Define Name="SDL_SCANCODE_I" Value="12" />
|
||||
<Define Name="SDL_SCANCODE_J" Value="13" />
|
||||
<Define Name="SDL_SCANCODE_K" Value="14" />
|
||||
<Define Name="SDL_SCANCODE_L" Value="15" />
|
||||
<Define Name="SDL_SCANCODE_M" Value="16" />
|
||||
<Define Name="SDL_SCANCODE_N" Value="17" />
|
||||
<Define Name="SDL_SCANCODE_O" Value="18" />
|
||||
<Define Name="SDL_SCANCODE_P" Value="19" />
|
||||
<Define Name="SDL_SCANCODE_Q" Value="20" />
|
||||
<Define Name="SDL_SCANCODE_R" Value="21" />
|
||||
<Define Name="SDL_SCANCODE_S" Value="22" />
|
||||
<Define Name="SDL_SCANCODE_T" Value="23" />
|
||||
<Define Name="SDL_SCANCODE_U" Value="24" />
|
||||
<Define Name="SDL_SCANCODE_V" Value="25" />
|
||||
<Define Name="SDL_SCANCODE_W" Value="26" />
|
||||
<Define Name="SDL_SCANCODE_X" Value="27" />
|
||||
<Define Name="SDL_SCANCODE_Y" Value="28" />
|
||||
<Define Name="SDL_SCANCODE_Z" Value="29" />
|
||||
<Define Name="SDL_SCANCODE_1" Value="30" />
|
||||
<Define Name="SDL_SCANCODE_2" Value="31" />
|
||||
<Define Name="SDL_SCANCODE_3" Value="32" />
|
||||
<Define Name="SDL_SCANCODE_4" Value="33" />
|
||||
<Define Name="SDL_SCANCODE_5" Value="34" />
|
||||
<Define Name="SDL_SCANCODE_6" Value="35" />
|
||||
<Define Name="SDL_SCANCODE_7" Value="36" />
|
||||
<Define Name="SDL_SCANCODE_8" Value="37" />
|
||||
<Define Name="SDL_SCANCODE_9" Value="38" />
|
||||
<Define Name="SDL_SCANCODE_0" Value="39" />
|
||||
<Define Name="SDL_SCANCODE_RETURN" Value="40" />
|
||||
<Define Name="SDL_SCANCODE_ESCAPE" Value="41" />
|
||||
<Define Name="SDL_SCANCODE_BACKSPACE" Value="42" />
|
||||
<Define Name="SDL_SCANCODE_TAB" Value="43" />
|
||||
<Define Name="SDL_SCANCODE_SPACE" Value="44" />
|
||||
<Define Name="SDL_SCANCODE_MINUS" Value="45" />
|
||||
<Define Name="SDL_SCANCODE_EQUALS" Value="46" />
|
||||
<Define Name="SDL_SCANCODE_LEFTBRACKET" Value="47" />
|
||||
<Define Name="SDL_SCANCODE_RIGHTBRACKET" Value="48" />
|
||||
<Define Name="SDL_SCANCODE_BACKSLASH" Value="49" />
|
||||
<Define Name="SDL_SCANCODE_NONUSHASH" Value="50" />
|
||||
<Define Name="SDL_SCANCODE_SEMICOLON" Value="51" />
|
||||
<Define Name="SDL_SCANCODE_APOSTROPHE" Value="52" />
|
||||
<Define Name="SDL_SCANCODE_GRAVE" Value="53" />
|
||||
<Define Name="SDL_SCANCODE_COMMA" Value="54" />
|
||||
<Define Name="SDL_SCANCODE_PERIOD" Value="55" />
|
||||
<Define Name="SDL_SCANCODE_SLASH" Value="56" />
|
||||
<Define Name="SDL_SCANCODE_CAPSLOCK" Value="57" />
|
||||
<Define Name="SDL_SCANCODE_F1" Value="58" />
|
||||
<Define Name="SDL_SCANCODE_F2" Value="59" />
|
||||
<Define Name="SDL_SCANCODE_F3" Value="60" />
|
||||
<Define Name="SDL_SCANCODE_F4" Value="61" />
|
||||
<Define Name="SDL_SCANCODE_F5" Value="62" />
|
||||
<Define Name="SDL_SCANCODE_F6" Value="63" />
|
||||
<Define Name="SDL_SCANCODE_F7" Value="64" />
|
||||
<Define Name="SDL_SCANCODE_F8" Value="65" />
|
||||
<Define Name="SDL_SCANCODE_F9" Value="66" />
|
||||
<Define Name="SDL_SCANCODE_F10" Value="67" />
|
||||
<Define Name="SDL_SCANCODE_F11" Value="68" />
|
||||
<Define Name="SDL_SCANCODE_F12" Value="69" />
|
||||
<Define Name="SDL_SCANCODE_PRINTSCREEN" Value="70" />
|
||||
<Define Name="SDL_SCANCODE_SCROLLLOCK" Value="71" />
|
||||
<Define Name="SDL_SCANCODE_PAUSE" Value="72" />
|
||||
<Define Name="SDL_SCANCODE_INSERT" Value="73" />
|
||||
<Define Name="SDL_SCANCODE_HOME" Value="74" />
|
||||
<Define Name="SDL_SCANCODE_PAGEUP" Value="75" />
|
||||
<Define Name="SDL_SCANCODE_DELETE" Value="76" />
|
||||
<Define Name="SDL_SCANCODE_END" Value="77" />
|
||||
<Define Name="SDL_SCANCODE_PAGEDOWN" Value="78" />
|
||||
<Define Name="SDL_SCANCODE_RIGHT" Value="79" />
|
||||
<Define Name="SDL_SCANCODE_LEFT" Value="80" />
|
||||
<Define Name="SDL_SCANCODE_DOWN" Value="81" />
|
||||
<Define Name="SDL_SCANCODE_UP" Value="82" />
|
||||
<Define Name="SDL_SCANCODE_NUMLOCKCLEAR" Value="83" />
|
||||
<Define Name="SDL_SCANCODE_KP_DIVIDE" Value="84" />
|
||||
<Define Name="SDL_SCANCODE_KP_MULTIPLY" Value="85" />
|
||||
<Define Name="SDL_SCANCODE_KP_MINUS" Value="86" />
|
||||
<Define Name="SDL_SCANCODE_KP_PLUS" Value="87" />
|
||||
<Define Name="SDL_SCANCODE_KP_ENTER" Value="88" />
|
||||
<Define Name="SDL_SCANCODE_KP_1" Value="89" />
|
||||
<Define Name="SDL_SCANCODE_KP_2" Value="90" />
|
||||
<Define Name="SDL_SCANCODE_KP_3" Value="91" />
|
||||
<Define Name="SDL_SCANCODE_KP_4" Value="92" />
|
||||
<Define Name="SDL_SCANCODE_KP_5" Value="93" />
|
||||
<Define Name="SDL_SCANCODE_KP_6" Value="94" />
|
||||
<Define Name="SDL_SCANCODE_KP_7" Value="95" />
|
||||
<Define Name="SDL_SCANCODE_KP_8" Value="96" />
|
||||
<Define Name="SDL_SCANCODE_KP_9" Value="97" />
|
||||
<Define Name="SDL_SCANCODE_KP_0" Value="98" />
|
||||
<Define Name="SDL_SCANCODE_KP_PERIOD" Value="99" />
|
||||
<Define Name="SDL_SCANCODE_NONUSBACKSLASH" Value="100" />
|
||||
<Define Name="SDL_SCANCODE_APPLICATION" Value="101" />
|
||||
<Define Name="SDL_SCANCODE_POWER" Value="102" />
|
||||
<Define Name="SDL_SCANCODE_KP_EQUALS" Value="103" />
|
||||
<Define Name="SDL_SCANCODE_F13" Value="104" />
|
||||
<Define Name="SDL_SCANCODE_F14" Value="105" />
|
||||
<Define Name="SDL_SCANCODE_F15" Value="106" />
|
||||
<Define Name="SDL_SCANCODE_F16" Value="107" />
|
||||
<Define Name="SDL_SCANCODE_F17" Value="108" />
|
||||
<Define Name="SDL_SCANCODE_F18" Value="109" />
|
||||
<Define Name="SDL_SCANCODE_F19" Value="110" />
|
||||
<Define Name="SDL_SCANCODE_F20" Value="111" />
|
||||
<Define Name="SDL_SCANCODE_F21" Value="112" />
|
||||
<Define Name="SDL_SCANCODE_F22" Value="113" />
|
||||
<Define Name="SDL_SCANCODE_F23" Value="114" />
|
||||
<Define Name="SDL_SCANCODE_F24" Value="115" />
|
||||
<Define Name="SDL_SCANCODE_EXECUTE" Value="116" />
|
||||
<Define Name="SDL_SCANCODE_HELP" Value="117" />
|
||||
<Define Name="SDL_SCANCODE_MENU" Value="118" />
|
||||
<Define Name="SDL_SCANCODE_SELECT" Value="119" />
|
||||
<Define Name="SDL_SCANCODE_STOP" Value="120" />
|
||||
<Define Name="SDL_SCANCODE_AGAIN" Value="121" />
|
||||
<Define Name="SDL_SCANCODE_UNDO" Value="122" />
|
||||
<Define Name="SDL_SCANCODE_CUT" Value="123" />
|
||||
<Define Name="SDL_SCANCODE_COPY" Value="124" />
|
||||
<Define Name="SDL_SCANCODE_PASTE" Value="125" />
|
||||
<Define Name="SDL_SCANCODE_FIND" Value="126" />
|
||||
<Define Name="SDL_SCANCODE_MUTE" Value="127" />
|
||||
<Define Name="SDL_SCANCODE_VOLUMEUP" Value="128" />
|
||||
<Define Name="SDL_SCANCODE_VOLUMEDOWN" Value="129" />
|
||||
<Define Name="SDL_SCANCODE_KP_COMMA" Value="133" />
|
||||
<Define Name="SDL_SCANCODE_KP_EQUALSAS400" Value="134" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL1" Value="135" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL2" Value="136" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL3" Value="137" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL4" Value="138" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL5" Value="139" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL6" Value="140" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL7" Value="141" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL8" Value="142" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL9" Value="143" />
|
||||
<Define Name="SDL_SCANCODE_LANG1" Value="144" />
|
||||
<Define Name="SDL_SCANCODE_LANG2" Value="145" />
|
||||
<Define Name="SDL_SCANCODE_LANG3" Value="146" />
|
||||
<Define Name="SDL_SCANCODE_LANG4" Value="147" />
|
||||
<Define Name="SDL_SCANCODE_LANG5" Value="148" />
|
||||
<Define Name="SDL_SCANCODE_LANG6" Value="149" />
|
||||
<Define Name="SDL_SCANCODE_LANG7" Value="150" />
|
||||
<Define Name="SDL_SCANCODE_LANG8" Value="151" />
|
||||
<Define Name="SDL_SCANCODE_LANG9" Value="152" />
|
||||
<Define Name="SDL_SCANCODE_ALTERASE" Value="153" />
|
||||
<Define Name="SDL_SCANCODE_SYSREQ" Value="154" />
|
||||
<Define Name="SDL_SCANCODE_CANCEL" Value="155" />
|
||||
<Define Name="SDL_SCANCODE_CLEAR" Value="156" />
|
||||
<Define Name="SDL_SCANCODE_PRIOR" Value="157" />
|
||||
<Define Name="SDL_SCANCODE_RETURN2" Value="158" />
|
||||
<Define Name="SDL_SCANCODE_SEPARATOR" Value="159" />
|
||||
<Define Name="SDL_SCANCODE_OUT" Value="160" />
|
||||
<Define Name="SDL_SCANCODE_OPER" Value="161" />
|
||||
<Define Name="SDL_SCANCODE_CLEARAGAIN" Value="162" />
|
||||
<Define Name="SDL_SCANCODE_CRSEL" Value="163" />
|
||||
<Define Name="SDL_SCANCODE_EXSEL" Value="164" />
|
||||
<Define Name="SDL_SCANCODE_KP_00" Value="176" />
|
||||
<Define Name="SDL_SCANCODE_KP_000" Value="177" />
|
||||
<Define Name="SDL_SCANCODE_THOUSANDSSEPARATOR" Value="178" />
|
||||
<Define Name="SDL_SCANCODE_DECIMALSEPARATOR" Value="179" />
|
||||
<Define Name="SDL_SCANCODE_CURRENCYUNIT" Value="180" />
|
||||
<Define Name="SDL_SCANCODE_CURRENCYSUBUNIT" Value="181" />
|
||||
<Define Name="SDL_SCANCODE_KP_LEFTPAREN" Value="182" />
|
||||
<Define Name="SDL_SCANCODE_KP_RIGHTPAREN" Value="183" />
|
||||
<Define Name="SDL_SCANCODE_KP_LEFTBRACE" Value="184" />
|
||||
<Define Name="SDL_SCANCODE_KP_RIGHTBRACE" Value="185" />
|
||||
<Define Name="SDL_SCANCODE_KP_TAB" Value="186" />
|
||||
<Define Name="SDL_SCANCODE_KP_BACKSPACE" Value="187" />
|
||||
<Define Name="SDL_SCANCODE_KP_A" Value="188" />
|
||||
<Define Name="SDL_SCANCODE_KP_B" Value="189" />
|
||||
<Define Name="SDL_SCANCODE_KP_C" Value="190" />
|
||||
<Define Name="SDL_SCANCODE_KP_D" Value="191" />
|
||||
<Define Name="SDL_SCANCODE_KP_E" Value="192" />
|
||||
<Define Name="SDL_SCANCODE_KP_F" Value="193" />
|
||||
<Define Name="SDL_SCANCODE_KP_XOR" Value="194" />
|
||||
<Define Name="SDL_SCANCODE_KP_POWER" Value="195" />
|
||||
<Define Name="SDL_SCANCODE_KP_PERCENT" Value="196" />
|
||||
<Define Name="SDL_SCANCODE_KP_LESS" Value="197" />
|
||||
<Define Name="SDL_SCANCODE_KP_GREATER" Value="198" />
|
||||
<Define Name="SDL_SCANCODE_KP_AMPERSAND" Value="199" />
|
||||
<Define Name="SDL_SCANCODE_KP_DBLAMPERSAND" Value="200" />
|
||||
<Define Name="SDL_SCANCODE_KP_VERTICALBAR" Value="201" />
|
||||
<Define Name="SDL_SCANCODE_KP_DBLVERTICALBAR" Value="202" />
|
||||
<Define Name="SDL_SCANCODE_KP_COLON" Value="203" />
|
||||
<Define Name="SDL_SCANCODE_KP_HASH" Value="204" />
|
||||
<Define Name="SDL_SCANCODE_KP_SPACE" Value="205" />
|
||||
<Define Name="SDL_SCANCODE_KP_AT" Value="206" />
|
||||
<Define Name="SDL_SCANCODE_KP_EXCLAM" Value="207" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMSTORE" Value="208" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMRECALL" Value="209" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMCLEAR" Value="210" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMADD" Value="211" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMSUBTRACT" Value="212" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMMULTIPLY" Value="213" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMDIVIDE" Value="214" />
|
||||
<Define Name="SDL_SCANCODE_KP_PLUSMINUS" Value="215" />
|
||||
<Define Name="SDL_SCANCODE_KP_CLEAR" Value="216" />
|
||||
<Define Name="SDL_SCANCODE_KP_CLEARENTRY" Value="217" />
|
||||
<Define Name="SDL_SCANCODE_KP_BINARY" Value="218" />
|
||||
<Define Name="SDL_SCANCODE_KP_OCTAL" Value="219" />
|
||||
<Define Name="SDL_SCANCODE_KP_DECIMAL" Value="220" />
|
||||
<Define Name="SDL_SCANCODE_KP_HEXADECIMAL" Value="221" />
|
||||
<Define Name="SDL_SCANCODE_LCTRL" Value="224" />
|
||||
<Define Name="SDL_SCANCODE_LSHIFT" Value="225" />
|
||||
<Define Name="SDL_SCANCODE_LALT" Value="226" />
|
||||
<Define Name="SDL_SCANCODE_LGUI" Value="227" />
|
||||
<Define Name="SDL_SCANCODE_RCTRL" Value="228" />
|
||||
<Define Name="SDL_SCANCODE_RSHIFT" Value="229" />
|
||||
<Define Name="SDL_SCANCODE_RALT" Value="230" />
|
||||
<Define Name="SDL_SCANCODE_RGUI" Value="231" />
|
||||
<Define Name="SDL_SCANCODE_MODE" Value="257" />
|
||||
<Define Name="SDL_SCANCODE_AUDIONEXT" Value="258" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOPREV" Value="259" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOSTOP" Value="260" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOPLAY" Value="261" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOMUTE" Value="262" />
|
||||
<Define Name="SDL_SCANCODE_MEDIASELECT" Value="263" />
|
||||
<Define Name="SDL_SCANCODE_WWW" Value="264" />
|
||||
<Define Name="SDL_SCANCODE_MAIL" Value="265" />
|
||||
<Define Name="SDL_SCANCODE_CALCULATOR" Value="266" />
|
||||
<Define Name="SDL_SCANCODE_COMPUTER" Value="267" />
|
||||
<Define Name="SDL_SCANCODE_AC_SEARCH" Value="268" />
|
||||
<Define Name="SDL_SCANCODE_AC_HOME" Value="269" />
|
||||
<Define Name="SDL_SCANCODE_AC_BACK" Value="270" />
|
||||
<Define Name="SDL_SCANCODE_AC_FORWARD" Value="271" />
|
||||
<Define Name="SDL_SCANCODE_AC_STOP" Value="272" />
|
||||
<Define Name="SDL_SCANCODE_AC_REFRESH" Value="273" />
|
||||
<Define Name="SDL_SCANCODE_AC_BOOKMARKS" Value="274" />
|
||||
<Define Name="SDL_SCANCODE_BRIGHTNESSDOWN" Value="275" />
|
||||
<Define Name="SDL_SCANCODE_BRIGHTNESSUP" Value="276" />
|
||||
<Define Name="SDL_SCANCODE_DISPLAYSWITCH" Value="277" />
|
||||
<Define Name="SDL_SCANCODE_KBDILLUMTOGGLE" Value="278" />
|
||||
<Define Name="SDL_SCANCODE_KBDILLUMDOWN" Value="279" />
|
||||
<Define Name="SDL_SCANCODE_KBDILLUMUP" Value="280" />
|
||||
<Define Name="SDL_SCANCODE_EJECT" Value="281" />
|
||||
<Define Name="SDL_SCANCODE_SLEEP" Value="282" />
|
||||
<Define Name="SDL_SCANCODE_APP1" Value="283" />
|
||||
<Define Name="SDL_SCANCODE_APP2" Value="284" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOREWIND" Value="285" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOFASTFORWARD" Value="286" />
|
||||
<Define Name="SDL_NUM_SCANCODES" Value="512" />
|
||||
<Define Name="SDLK_UNKNOWN" Value="0" />
|
||||
<Define Name="SDLK_RETURN" Value="13" />
|
||||
<Define Name="SDLK_ESCAPE" Value="27" />
|
||||
<Define Name="SDLK_BACKSPACE" Value="8" />
|
||||
<Define Name="SDLK_TAB" Value="9" />
|
||||
<Define Name="SDLK_SPACE" Value="32" />
|
||||
<Define Name="SDLK_EXCLAIM" Value="33" />
|
||||
<Define Name="SDLK_QUOTEDBL" Value="34" />
|
||||
<Define Name="SDLK_HASH" Value="35" />
|
||||
<Define Name="SDLK_PERCENT" Value="37" />
|
||||
<Define Name="SDLK_DOLLAR" Value="36" />
|
||||
<Define Name="SDLK_AMPERSAND" Value="38" />
|
||||
<Define Name="SDLK_QUOTE" Value="39" />
|
||||
<Define Name="SDLK_LEFTPAREN" Value="40" />
|
||||
<Define Name="SDLK_RIGHTPAREN" Value="41" />
|
||||
<Define Name="SDLK_ASTERISK" Value="42" />
|
||||
<Define Name="SDLK_PLUS" Value="43" />
|
||||
<Define Name="SDLK_COMMA" Value="44" />
|
||||
<Define Name="SDLK_MINUS" Value="45" />
|
||||
<Define Name="SDLK_PERIOD" Value="46" />
|
||||
<Define Name="SDLK_SLASH" Value="47" />
|
||||
<Define Name="SDLK_0" Value="48" />
|
||||
<Define Name="SDLK_1" Value="49" />
|
||||
<Define Name="SDLK_2" Value="50" />
|
||||
<Define Name="SDLK_3" Value="51" />
|
||||
<Define Name="SDLK_4" Value="52" />
|
||||
<Define Name="SDLK_5" Value="53" />
|
||||
<Define Name="SDLK_6" Value="54" />
|
||||
<Define Name="SDLK_7" Value="55" />
|
||||
<Define Name="SDLK_8" Value="56" />
|
||||
<Define Name="SDLK_9" Value="57" />
|
||||
<Define Name="SDLK_COLON" Value="58" />
|
||||
<Define Name="SDLK_SEMICOLON" Value="59" />
|
||||
<Define Name="SDLK_LESS" Value="60" />
|
||||
<Define Name="SDLK_EQUALS" Value="61" />
|
||||
<Define Name="SDLK_GREATER" Value="62" />
|
||||
<Define Name="SDLK_QUESTION" Value="63" />
|
||||
<Define Name="SDLK_AT" Value="64" />
|
||||
<Define Name="SDLK_LEFTBRACKET" Value="91" />
|
||||
<Define Name="SDLK_BACKSLASH" Value="92" />
|
||||
<Define Name="SDLK_RIGHTBRACKET" Value="93" />
|
||||
<Define Name="SDLK_CARET" Value="94" />
|
||||
<Define Name="SDLK_UNDERSCORE" Value="95" />
|
||||
<Define Name="SDLK_BACKQUOTE" Value="96" />
|
||||
<Define Name="SDLK_a" Value="97" />
|
||||
<Define Name="SDLK_b" Value="98" />
|
||||
<Define Name="SDLK_c" Value="99" />
|
||||
<Define Name="SDLK_d" Value="100" />
|
||||
<Define Name="SDLK_e" Value="101" />
|
||||
<Define Name="SDLK_f" Value="102" />
|
||||
<Define Name="SDLK_g" Value="103" />
|
||||
<Define Name="SDLK_h" Value="104" />
|
||||
<Define Name="SDLK_i" Value="105" />
|
||||
<Define Name="SDLK_j" Value="106" />
|
||||
<Define Name="SDLK_k" Value="107" />
|
||||
<Define Name="SDLK_l" Value="108" />
|
||||
<Define Name="SDLK_m" Value="109" />
|
||||
<Define Name="SDLK_n" Value="110" />
|
||||
<Define Name="SDLK_o" Value="111" />
|
||||
<Define Name="SDLK_p" Value="112" />
|
||||
<Define Name="SDLK_q" Value="113" />
|
||||
<Define Name="SDLK_r" Value="114" />
|
||||
<Define Name="SDLK_s" Value="115" />
|
||||
<Define Name="SDLK_t" Value="116" />
|
||||
<Define Name="SDLK_u" Value="117" />
|
||||
<Define Name="SDLK_v" Value="118" />
|
||||
<Define Name="SDLK_w" Value="119" />
|
||||
<Define Name="SDLK_x" Value="120" />
|
||||
<Define Name="SDLK_y" Value="121" />
|
||||
<Define Name="SDLK_z" Value="122" />
|
||||
<Define Name="SDLK_CAPSLOCK" Value="1073741881" />
|
||||
<Define Name="SDLK_F1" Value="1073741882" />
|
||||
<Define Name="SDLK_F2" Value="1073741883" />
|
||||
<Define Name="SDLK_F3" Value="1073741884" />
|
||||
<Define Name="SDLK_F4" Value="1073741885" />
|
||||
<Define Name="SDLK_F5" Value="1073741886" />
|
||||
<Define Name="SDLK_F6" Value="1073741887" />
|
||||
<Define Name="SDLK_F7" Value="1073741888" />
|
||||
<Define Name="SDLK_F8" Value="1073741889" />
|
||||
<Define Name="SDLK_F9" Value="1073741890" />
|
||||
<Define Name="SDLK_F10" Value="1073741891" />
|
||||
<Define Name="SDLK_F11" Value="1073741892" />
|
||||
<Define Name="SDLK_F12" Value="1073741893" />
|
||||
<Define Name="SDLK_PRINTSCREEN" Value="1073741894" />
|
||||
<Define Name="SDLK_SCROLLLOCK" Value="1073741895" />
|
||||
<Define Name="SDLK_PAUSE" Value="1073741896" />
|
||||
<Define Name="SDLK_INSERT" Value="1073741897" />
|
||||
<Define Name="SDLK_HOME" Value="1073741898" />
|
||||
<Define Name="SDLK_PAGEUP" Value="1073741899" />
|
||||
<Define Name="SDLK_DELETE" Value="127" />
|
||||
<Define Name="SDLK_END" Value="1073741901" />
|
||||
<Define Name="SDLK_PAGEDOWN" Value="1073741902" />
|
||||
<Define Name="SDLK_RIGHT" Value="1073741903" />
|
||||
<Define Name="SDLK_LEFT" Value="1073741904" />
|
||||
<Define Name="SDLK_DOWN" Value="1073741905" />
|
||||
<Define Name="SDLK_UP" Value="1073741906" />
|
||||
<Define Name="SDLK_NUMLOCKCLEAR" Value="1073741907" />
|
||||
<Define Name="SDLK_KP_DIVIDE" Value="1073741908" />
|
||||
<Define Name="SDLK_KP_MULTIPLY" Value="1073741909" />
|
||||
<Define Name="SDLK_KP_MINUS" Value="1073741910" />
|
||||
<Define Name="SDLK_KP_PLUS" Value="1073741911" />
|
||||
<Define Name="SDLK_KP_ENTER" Value="1073741912" />
|
||||
<Define Name="SDLK_KP_1" Value="1073741913" />
|
||||
<Define Name="SDLK_KP_2" Value="1073741914" />
|
||||
<Define Name="SDLK_KP_3" Value="1073741915" />
|
||||
<Define Name="SDLK_KP_4" Value="1073741916" />
|
||||
<Define Name="SDLK_KP_5" Value="1073741917" />
|
||||
<Define Name="SDLK_KP_6" Value="1073741918" />
|
||||
<Define Name="SDLK_KP_7" Value="1073741919" />
|
||||
<Define Name="SDLK_KP_8" Value="1073741920" />
|
||||
<Define Name="SDLK_KP_9" Value="1073741921" />
|
||||
<Define Name="SDLK_KP_0" Value="1073741922" />
|
||||
<Define Name="SDLK_KP_PERIOD" Value="1073741923" />
|
||||
<Define Name="SDLK_APPLICATION" Value="1073741925" />
|
||||
<Define Name="SDLK_POWER" Value="1073741926" />
|
||||
<Define Name="SDLK_KP_EQUALS" Value="1073741927" />
|
||||
<Define Name="SDLK_F13" Value="1073741928" />
|
||||
<Define Name="SDLK_F14" Value="1073741929" />
|
||||
<Define Name="SDLK_F15" Value="1073741930" />
|
||||
<Define Name="SDLK_F16" Value="1073741931" />
|
||||
<Define Name="SDLK_F17" Value="1073741932" />
|
||||
<Define Name="SDLK_F18" Value="1073741933" />
|
||||
<Define Name="SDLK_F19" Value="1073741934" />
|
||||
<Define Name="SDLK_F20" Value="1073741935" />
|
||||
<Define Name="SDLK_F21" Value="1073741936" />
|
||||
<Define Name="SDLK_F22" Value="1073741937" />
|
||||
<Define Name="SDLK_F23" Value="1073741938" />
|
||||
<Define Name="SDLK_F24" Value="1073741939" />
|
||||
<Define Name="SDLK_EXECUTE" Value="1073741940" />
|
||||
<Define Name="SDLK_HELP" Value="1073741941" />
|
||||
<Define Name="SDLK_MENU" Value="1073741942" />
|
||||
<Define Name="SDLK_SELECT" Value="1073741943" />
|
||||
<Define Name="SDLK_STOP" Value="1073741944" />
|
||||
<Define Name="SDLK_AGAIN" Value="1073741945" />
|
||||
<Define Name="SDLK_UNDO" Value="1073741946" />
|
||||
<Define Name="SDLK_CUT" Value="1073741947" />
|
||||
<Define Name="SDLK_COPY" Value="1073741948" />
|
||||
<Define Name="SDLK_PASTE" Value="1073741949" />
|
||||
<Define Name="SDLK_FIND" Value="1073741950" />
|
||||
<Define Name="SDLK_MUTE" Value="1073741951" />
|
||||
<Define Name="SDLK_VOLUMEUP" Value="1073741952" />
|
||||
<Define Name="SDLK_VOLUMEDOWN" Value="1073741953" />
|
||||
<Define Name="SDLK_KP_COMMA" Value="1073741957" />
|
||||
<Define Name="SDLK_KP_EQUALSAS400" Value="1073741958" />
|
||||
<Define Name="SDLK_ALTERASE" Value="1073741977" />
|
||||
<Define Name="SDLK_SYSREQ" Value="1073741978" />
|
||||
<Define Name="SDLK_CANCEL" Value="1073741979" />
|
||||
<Define Name="SDLK_CLEAR" Value="1073741980" />
|
||||
<Define Name="SDLK_PRIOR" Value="1073741981" />
|
||||
<Define Name="SDLK_RETURN2" Value="1073741982" />
|
||||
<Define Name="SDLK_SEPARATOR" Value="1073741983" />
|
||||
<Define Name="SDLK_OUT" Value="1073741984" />
|
||||
<Define Name="SDLK_OPER" Value="1073741985" />
|
||||
<Define Name="SDLK_CLEARAGAIN" Value="1073741986" />
|
||||
<Define Name="SDLK_CRSEL" Value="1073741987" />
|
||||
<Define Name="SDLK_EXSEL" Value="1073741988" />
|
||||
<Define Name="SDLK_KP_00" Value="1073742000" />
|
||||
<Define Name="SDLK_KP_000" Value="1073742001" />
|
||||
<Define Name="SDLK_THOUSANDSSEPARATOR" Value="1073742002" />
|
||||
<Define Name="SDLK_DECIMALSEPARATOR" Value="1073742003" />
|
||||
<Define Name="SDLK_CURRENCYUNIT" Value="1073742004" />
|
||||
<Define Name="SDLK_CURRENCYSUBUNIT" Value="1073742005" />
|
||||
<Define Name="SDLK_KP_LEFTPAREN" Value="1073742006" />
|
||||
<Define Name="SDLK_KP_RIGHTPAREN" Value="1073742007" />
|
||||
<Define Name="SDLK_KP_LEFTBRACE" Value="1073742008" />
|
||||
<Define Name="SDLK_KP_RIGHTBRACE" Value="1073742009" />
|
||||
<Define Name="SDLK_KP_TAB" Value="1073742010" />
|
||||
<Define Name="SDLK_KP_BACKSPACE" Value="1073742011" />
|
||||
<Define Name="SDLK_KP_A" Value="1073742012" />
|
||||
<Define Name="SDLK_KP_B" Value="1073742013" />
|
||||
<Define Name="SDLK_KP_C" Value="1073742014" />
|
||||
<Define Name="SDLK_KP_D" Value="1073742015" />
|
||||
<Define Name="SDLK_KP_E" Value="1073742016" />
|
||||
<Define Name="SDLK_KP_F" Value="1073742017" />
|
||||
<Define Name="SDLK_KP_XOR" Value="1073742018" />
|
||||
<Define Name="SDLK_KP_POWER" Value="1073742019" />
|
||||
<Define Name="SDLK_KP_PERCENT" Value="1073742020" />
|
||||
<Define Name="SDLK_KP_LESS" Value="1073742021" />
|
||||
<Define Name="SDLK_KP_GREATER" Value="1073742022" />
|
||||
<Define Name="SDLK_KP_AMPERSAND" Value="1073742023" />
|
||||
<Define Name="SDLK_KP_DBLAMPERSAND" Value="1073742024" />
|
||||
<Define Name="SDLK_KP_VERTICALBAR" Value="1073742025" />
|
||||
<Define Name="SDLK_KP_DBLVERTICALBAR" Value="1073742026" />
|
||||
<Define Name="SDLK_KP_COLON" Value="1073742027" />
|
||||
<Define Name="SDLK_KP_HASH" Value="1073742028" />
|
||||
<Define Name="SDLK_KP_SPACE" Value="1073742029" />
|
||||
<Define Name="SDLK_KP_AT" Value="1073742030" />
|
||||
<Define Name="SDLK_KP_EXCLAM" Value="1073742031" />
|
||||
<Define Name="SDLK_KP_MEMSTORE" Value="1073742032" />
|
||||
<Define Name="SDLK_KP_MEMRECALL" Value="1073742033" />
|
||||
<Define Name="SDLK_KP_MEMCLEAR" Value="1073742034" />
|
||||
<Define Name="SDLK_KP_MEMADD" Value="1073742035" />
|
||||
<Define Name="SDLK_KP_MEMSUBTRACT" Value="1073742036" />
|
||||
<Define Name="SDLK_KP_MEMMULTIPLY" Value="1073742037" />
|
||||
<Define Name="SDLK_KP_MEMDIVIDE" Value="1073742038" />
|
||||
<Define Name="SDLK_KP_PLUSMINUS" Value="1073742039" />
|
||||
<Define Name="SDLK_KP_CLEAR" Value="1073742040" />
|
||||
<Define Name="SDLK_KP_CLEARENTRY" Value="1073742041" />
|
||||
<Define Name="SDLK_KP_BINARY" Value="1073742042" />
|
||||
<Define Name="SDLK_KP_OCTAL" Value="1073742043" />
|
||||
<Define Name="SDLK_KP_DECIMAL" Value="1073742044" />
|
||||
<Define Name="SDLK_KP_HEXADECIMAL" Value="1073742045" />
|
||||
<Define Name="SDLK_LCTRL" Value="1073742048" />
|
||||
<Define Name="SDLK_LSHIFT" Value="1073742049" />
|
||||
<Define Name="SDLK_LALT" Value="1073742050" />
|
||||
<Define Name="SDLK_LGUI" Value="1073742051" />
|
||||
<Define Name="SDLK_RCTRL" Value="1073742052" />
|
||||
<Define Name="SDLK_RSHIFT" Value="1073742053" />
|
||||
<Define Name="SDLK_RALT" Value="1073742054" />
|
||||
<Define Name="SDLK_RGUI" Value="1073742055" />
|
||||
<Define Name="SDLK_MODE" Value="1073742081" />
|
||||
<Define Name="SDLK_AUDIONEXT" Value="1073742082" />
|
||||
<Define Name="SDLK_AUDIOPREV" Value="1073742083" />
|
||||
<Define Name="SDLK_AUDIOSTOP" Value="1073742084" />
|
||||
<Define Name="SDLK_AUDIOPLAY" Value="1073742085" />
|
||||
<Define Name="SDLK_AUDIOMUTE" Value="1073742086" />
|
||||
<Define Name="SDLK_MEDIASELECT" Value="1073742087" />
|
||||
<Define Name="SDLK_WWW" Value="1073742088" />
|
||||
<Define Name="SDLK_MAIL" Value="1073742089" />
|
||||
<Define Name="SDLK_CALCULATOR" Value="1073742090" />
|
||||
<Define Name="SDLK_COMPUTER" Value="1073742091" />
|
||||
<Define Name="SDLK_AC_SEARCH" Value="1073742092" />
|
||||
<Define Name="SDLK_AC_HOME" Value="1073742093" />
|
||||
<Define Name="SDLK_AC_BACK" Value="1073742094" />
|
||||
<Define Name="SDLK_AC_FORWARD" Value="1073742095" />
|
||||
<Define Name="SDLK_AC_STOP" Value="1073742096" />
|
||||
<Define Name="SDLK_AC_REFRESH" Value="1073742097" />
|
||||
<Define Name="SDLK_AC_BOOKMARKS" Value="1073742098" />
|
||||
<Define Name="SDLK_BRIGHTNESSDOWN" Value="1073742099" />
|
||||
<Define Name="SDLK_BRIGHTNESSUP" Value="1073742100" />
|
||||
<Define Name="SDLK_DISPLAYSWITCH" Value="1073742101" />
|
||||
<Define Name="SDLK_KBDILLUMTOGGLE" Value="1073742102" />
|
||||
<Define Name="SDLK_KBDILLUMDOWN" Value="1073742103" />
|
||||
<Define Name="SDLK_KBDILLUMUP" Value="1073742104" />
|
||||
<Define Name="SDLK_EJECT" Value="1073742105" />
|
||||
<Define Name="SDLK_SLEEP" Value="1073742106" />
|
||||
<Define Name="KMOD_NONE" Value="0" />
|
||||
<Define Name="KMOD_LSHIFT" Value="1" />
|
||||
<Define Name="KMOD_RSHIFT" Value="2" />
|
||||
<Define Name="KMOD_LCTRL" Value="64" />
|
||||
<Define Name="KMOD_RCTRL" Value="128" />
|
||||
<Define Name="KMOD_LALT" Value="256" />
|
||||
<Define Name="KMOD_RALT" Value="512" />
|
||||
<Define Name="KMOD_LGUI" Value="1024" />
|
||||
<Define Name="KMOD_RGUI" Value="2048" />
|
||||
<Define Name="KMOD_NUM" Value="4096" />
|
||||
<Define Name="KMOD_CAPS" Value="8192" />
|
||||
<Define Name="KMOD_MODE" Value="16384" />
|
||||
<Define Name="KMOD_RESERVED" Value="32768" />
|
||||
<Define Name="KMOD_CTRL" Value="192" />
|
||||
<Define Name="KMOD_SHIFT" Value="3" />
|
||||
<Define Name="KMOD_ALT" Value="768" />
|
||||
<Define Name="KMOD_GUI" Value="3072" />
|
||||
<Define Name="SEEK_SET" Value="0" />
|
||||
<Define Name="SEEK_CUR" Value="1" />
|
||||
<Define Name="SEEK_END" Value="2" />
|
||||
<Define Name="LOGTYPE_NONE" Value="0" />
|
||||
<Define Name="LOGTYPE_VERBOSE" Value="1" />
|
||||
<Define Name="LOGTYPE_DEBUG" Value="2" />
|
||||
<Define Name="LOGTYPE_INFO" Value="3" />
|
||||
<Define Name="LOGTYPE_WARN" Value="4" />
|
||||
<Define Name="LOGTYPE_ERROR" Value="5" />
|
||||
<Define Name="LOGTYPE_CRITICAL" Value="6" />
|
||||
<Define Name="COLOUR_TRANSPARENT" Value="0" />
|
||||
<Define Name="COLOUR_WHITE" Value="4294967295" />
|
||||
<Define Name="COLOUR_BLACK" Value="4278190080" />
|
||||
<Define Name="COLOUR_RED" Value="4294901760" />
|
||||
<Define Name="COLOUR_LIME" Value="4278255360" />
|
||||
<Define Name="COLOUR_BLUE" Value="4278190335" />
|
||||
<Define Name="COLOUR_YELLOW" Value="4294967040" />
|
||||
<Define Name="COLOUR_AQUA" Value="4278255615" />
|
||||
<Define Name="COLOUR_FUCHSIA" Value="4294902015" />
|
||||
<Define Name="COLOUR_SKYBLUE" Value="4284927231" />
|
||||
<Define Name="COLOUR_SILVER" Value="4291019715" />
|
||||
<Define Name="COLOUR_GREEN" Value="4278222592" />
|
||||
<Define Name="COLOUR_ORANGE" Value="4294934272" />
|
||||
<Define Name="INVALID_NETWORK_ID" Value="-1" />
|
||||
<Define Name="INVALID_CLIENT_ID" Value="-1" />
|
||||
<Define Name="CHAT_TYPE_NONE" Value="0" />
|
||||
<Define Name="CHAT_TYPE_CHAT" Value="1" />
|
||||
<Define Name="CHAT_TYPE_INFO" Value="2" />
|
||||
<Define Name="CHAT_TYPE_DEBUG" Value="3" />
|
||||
<Define Name="NONE" Value="0" />
|
||||
<Define Name="MAX_PEDS" Value="128" />
|
||||
<Define Name="MAX_VEHICLES" Value="128" />
|
||||
<Define Name="ELEMENT_ELEMENT" Value="0" />
|
||||
<Define Name="ELEMENT_ENTITY" Value="6" />
|
||||
<Define Name="ELEMENT_PED" Value="14" />
|
||||
<Define Name="ELEMENT_PLAYER" Value="30" />
|
||||
<Define Name="ELEMENT_VEHICLE" Value="38" />
|
||||
<Define Name="GAME_UNKNOWN" Value="0" />
|
||||
<Define Name="GAME_MAFIA_ONE" Value="10" />
|
||||
<Define Name="GAME_MAFIA_TWO" Value="11" />
|
||||
<Define Name="GAME_MAFIA_THREE" Value="12" />
|
||||
<Define Name="GAME_MAFIA_ONE_DE" Value="13" />
|
||||
<Define Name="WEAPON_KNUCKLEDUSTER" Value="2" />
|
||||
<Define Name="WEAPON_KNIFE" Value="3" />
|
||||
<Define Name="WEAPON_BASEBALLBAT" Value="4" />
|
||||
<Define Name="WEAPON_MOLOTOV" Value="5" />
|
||||
<Define Name="WEAPON_COLTDETECTIVESPECIAL" Value="6" />
|
||||
<Define Name="WEAPON_SW_MAGNUM" Value="7" />
|
||||
<Define Name="WEAPON_SW_MP" Value="8" />
|
||||
<Define Name="WEAPON_COLT1911" Value="9" />
|
||||
<Define Name="WEAPON_TOMMYGUN" Value="10" />
|
||||
<Define Name="WEAPON_PUMPSHOTGUN" Value="11" />
|
||||
<Define Name="WEAPON_SAWEDOFF" Value="12" />
|
||||
<Define Name="WEAPON_SPRINGFIELD" Value="13" />
|
||||
<Define Name="WEAPON_MOSINNAGANT" Value="13" />
|
||||
<Define Name="WEAPON_GRENADE" Value="15" />
|
||||
<Define Name="WEAPON_BUCKET" Value="17" />
|
||||
<Define Name="WEAPON_STEELBAR" Value="20" />
|
||||
<Define Name="WEAPON_CROWBAR" Value="25" />
|
||||
<Define Name="WEAPON_WOODENPLANK" Value="28" />
|
||||
<Define Name="WEAPON_BOTTLE" Value="29" />
|
||||
<Define Name="WEAPON_SWORD" Value="31" />
|
||||
<Define Name="WEAPON_DOGSHEAD" Value="32" />
|
||||
<Define Name="PEDBEHAVIOR_NOREACT" Value="4" />
|
||||
<Define Name="PEDBEHAVIOR_NOREACT_GUARDPLAYER" Value="2" />
|
||||
<Define Name="PEDBEHAVIOR_REACTALL" Value="0" />
|
||||
<Define Name="PEDBEHAVIOR_REACTTOATTACKS_ATTACK" Value="64" />
|
||||
<Define Name="PEDBEHAVIOR_REACTTOATTACKS_AWAYORATTACK" Value="32" />
|
||||
<Define Name="PEDBEHAVIOR_REACTTOPLAYER_AWAY" Value="16" />
|
||||
<Define Name="PEDBEHAVIOR_REACTTOPLAYERHIT_ATTACK" Value="8" />
|
||||
<Define Name="CLIENT_VERSION_MAJOR" Value="1" />
|
||||
<Define Name="CLIENT_VERSION_MINOR" Value="0" />
|
||||
<Define Name="CLIENT_VERSION_PATCH" Value="0" />
|
||||
<Define Name="CLIENT_VERSION_BUILD" Value="0" />
|
||||
</Defines>
|
||||
459
documentation/mafiac/client/mafia1/Documentation.xml
Normal file
459
documentation/mafiac/client/mafia1/Documentation.xml
Normal file
@@ -0,0 +1,459 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Documentation>
|
||||
<!--
|
||||
Mask Values
|
||||
|
||||
b - bool
|
||||
i - int32
|
||||
f - float
|
||||
s - string
|
||||
c - function/callback
|
||||
x - class/instance
|
||||
z - vector2D
|
||||
v - vector3D
|
||||
t - thiscall
|
||||
| - optional arguments
|
||||
* - infinite arguments
|
||||
. - any type
|
||||
-->
|
||||
<Namespace Name="global">
|
||||
<Property Name="platform" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="thisResource" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="localClient" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="localPlayer" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="isConnected" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isConnecting" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Function Name="toColour" Mask="iii|i" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="collectAllGarbage" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="inPoly" Mask="z*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addEvent" Mask="s|i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addEventHandler" Mask="sf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeEventHandler" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="bindEventHandler" Mask="sxf" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="unbindEventHandler" Mask="sx" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="triggerEvent" Mask="s|x*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addCommandHandler" Mask="sc|b" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeCommandHandler" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="hasCommandHandler" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="consoleCommand" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setTimeout" Mask="ci*" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="setInterval" Mask="ci*" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="setImmediate" Mask="c*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clearTimeout" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clearInterval" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clearImmediate" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="bindKey" Mask="iic" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="unbindKey" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="unbindAllKeys" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="findResourceByName" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getResources" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="exportFunction" Mask="c" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="openFile" Mask="s|b" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createFile" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="loadTextFile" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="saveTextFile" Mask="ss" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="addNetworkHandler" Mask="sc" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeNetworkHandler" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getConsole" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getClients" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getClient" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="destroyElement" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getClientFromPlayerElement" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElementsByType" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElementFromId" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElementFromName" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addToWorld" Mask="x" RequiredArguments="1" Obsolete="true" />
|
||||
<Function Name="registerNetObject" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="connect" Mask="si|s" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="disconnect" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="message" Mask="s|i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="triggerNetworkEvent" Mask="s*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setChatWindowEnabled" Mask="b" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="isScancodePressed" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="isKeyDown" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getPeds" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getPlayers" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getVehicles" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getScreenFromWorldPosition" Mask="v" RequiredArguments="1" Obsolete="false" />
|
||||
<Class Name="Stream">
|
||||
<Property Name="length" ReadOnly="true" Obsolete="false" Type="int64" />
|
||||
<Property Name="position" ReadOnly="true" Obsolete="false" Type="int64" />
|
||||
<Function Name="close" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readBytes" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="readString" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readLine" Mask="t" RequiredArguments="0" Obsolete="true" />
|
||||
<Function Name="writeBytes" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeString" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="readInt8" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt8" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readInt16" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt16" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readInt32" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt32" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readInt64" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt64" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readFloat" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readDouble" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="writeInt8" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt8" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeInt16" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt16" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeInt32" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt32" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeInt64" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt64" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeFloat" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeDouble" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="TextReader">
|
||||
<Function Name="close" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="loadText" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readLine" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readCharacter" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Matrix4x4">
|
||||
<Property Name="m11" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m12" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m13" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m14" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m21" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m22" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m23" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m24" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m31" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m32" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m33" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m34" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m41" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m42" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m43" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m44" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Function Name="setIdentity" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="setTranslate" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setScale" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotateX" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotateY" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotateZ" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotate" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setMultiply" Mask="txx*" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="multiply" Mask="tx*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setInverse" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="transformCoordinate" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElement" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setElement" Mask="tif" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="getVector3" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Vec2">
|
||||
<Property Name="x" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="y" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Function Name="addPolar" Mask="tff" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="interpolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="extrapolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalInterpolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalExtrapolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="cartesianToPolar" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Vec3">
|
||||
<Property Name="x" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="y" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="z" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="length" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="squaredLength" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Function Name="distance" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="squaredDistance" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="dotProduct" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="absDotProduct" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="normalise" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="crossProduct" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="midPoint" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addPolar" Mask="tff" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="addSpherical" Mask="tfff" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="interpolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="extrapolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalInterpolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalExtrapolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="cartesianToPolar" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="cartesianToSpherical" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Event">
|
||||
<Class Name="CancellableEvent">
|
||||
<Function Name="preventDefault" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="isDefaultPrevented" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
</Class>
|
||||
<Class Name="Timer" />
|
||||
<Class Name="KeyEvent">
|
||||
<Property Name="keyCode" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="scanCode" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="mod" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="repeat" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="down" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Function Name="preventDefault" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="isDefaultPrevented" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="XmlElement">
|
||||
<Property Name="childrenCount" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="children" ReadOnly="true" Obsolete="false" />
|
||||
<Property Name="parent" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="text" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="attributes" ReadOnly="true" Obsolete="false" />
|
||||
<Function Name="clear" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getStringAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getBoolAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getIntegerAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getFloatAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="XmlDocument">
|
||||
<Property Name="rootElement" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Function Name="load" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Resource">
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="isStarted" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isStarting" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="exports" ReadOnly="true" Obsolete="false" />
|
||||
<Property Name="isReady" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Function Name="start" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="stop" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="restart" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getExport" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="GUIElement">
|
||||
<Property Name="name" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="left" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="top" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="right" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="bottom" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="width" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="height" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="x" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="y" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="focusBringsToTop" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="visible" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="useClip" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Function Name="bringToTop" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="invalidate" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="setDocked" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Class Name="GUIPage">
|
||||
<Function Name="addElement" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElementFromName" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Class Name="GUIWindow">
|
||||
<Property Name="title" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="text" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Function Name="addClientElement" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
</Class>
|
||||
<Class Name="GUIButton" />
|
||||
<Class Name="GUIRectangle" />
|
||||
<Class Name="GUIText" />
|
||||
<Class Name="GUIHtmlView">
|
||||
<Property Name="offset" ReadOnly="true" Obsolete="false" Type="Vector2D" />
|
||||
<Property Name="maxOffset" ReadOnly="true" Obsolete="false" Type="Vector2D" />
|
||||
<Property Name="document" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Function Name="open" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addOffset" Mask="tz" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="updateLayout" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
</Class>
|
||||
<Class Name="GUIHtmlElement">
|
||||
<Property Name="text" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="parent" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Function Name="getChild" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="select" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="selectAll" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clear" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="orphan" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="setInnerHtml" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Client">
|
||||
<Property Name="index" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="game" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="gameVersion" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="player" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="administrator" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="console" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="ip" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="ping" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Function Name="despawnPlayer" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="disconnect" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setData" Mask="ts.|b" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="removeAllData" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Element">
|
||||
<Property Name="id" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="type" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="netFlags" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="isLocal" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isSyncer" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isOwner" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="syncer" ReadOnly="false" Obsolete="false" Type="Object" />
|
||||
<Property Name="syncerId" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="dimension" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="parent" ReadOnly="false" Obsolete="false" Type="Object" />
|
||||
<Property Name="children" ReadOnly="true" Obsolete="false" />
|
||||
<Property Name="name" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="resource" ReadOnly="false" Obsolete="false" Type="Object" />
|
||||
<Property Name="streamInDistance" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="streamOutDistance" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="position" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Property Name="rotation" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Function Name="isType" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setData" Mask="ts.|b" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="removeAllData" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="setSyncer" Mask="tx|b" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="isCreatedFor" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clearExistsFor" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="setExistsFor" Mask="txb" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="existsFor" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getRotation" Mask="t" RequiredArguments="0" Obsolete="true" />
|
||||
<Function Name="setRotation" Mask="tv" RequiredArguments="1" Obsolete="true" />
|
||||
<Class Name="Entity">
|
||||
<Property Name="position" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Property Name="rotation" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Property Name="heading" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="model" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="modelIndex" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Class Name="Ped">
|
||||
<Property Name="vehicle" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="skin" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="health" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="animationState" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="animationStateLocal" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Function Name="kill" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="respawn" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="clearWeapons" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="giveWeapon" Mask="tiii" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="hasWeapon" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="takeWeapon" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="dropWeapon" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="warpIntoVehicle" Mask="tvi" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeFromVehicle" Mask="tvi" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="addAnimation" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setBehavior" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Class Name="Player" />
|
||||
</Class>
|
||||
<Class Name="Vehicle">
|
||||
<Property Name="siren" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="lights" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="engine" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="speedLimit" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="gear" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="wheelAngle" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="fuel" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="speed" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="turnVelocity" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Property Name="velocity" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Property Name="engineHealth" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="health" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="engineRPM" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Function Name="explode" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="repair" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getOccupant" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getOccupants" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class Name="NetObjectFlags">
|
||||
<Property Name="registered" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="deleting" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="onAllDimensions" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="forcedSyncer" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="findSyncer" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="sendSync" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="distanceStreaming" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="alwaysExistForSyncer" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="defaultExistance" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="transient" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="onlySyncIfDetached" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
</Class>
|
||||
<Class Name="Surface">
|
||||
<Class Name="Texture" />
|
||||
</Class>
|
||||
<Namespace Name="reflection">
|
||||
<Function Name="clone" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="move" Mask="xx" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="tostring" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createFunction" Mask="c" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="call" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Class Name="Function" />
|
||||
</Namespace>
|
||||
<Namespace Name="module" />
|
||||
<Namespace Name="sdl">
|
||||
<Property Name="platform" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="ticks" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Function Name="getModState" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Namespace>
|
||||
<Namespace Name="platform">
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="modState" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="ticks" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
</Namespace>
|
||||
<Namespace Name="audio">
|
||||
<Function Name="createSound" Mask="xb" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="createSoundFromURL" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Class Name="Sound">
|
||||
<Property Name="position" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="volume" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Function Name="play" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="stop" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
</Namespace>
|
||||
<Namespace Name="lucasFont">
|
||||
<Function Name="createFont" Mask="xf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="createDefaultFont" Mask="fs|s" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="enumFontFamilies" Mask="c" RequiredArguments="1" Obsolete="false" />
|
||||
<Class Name="Font">
|
||||
<Property Name="size" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Function Name="render" Mask="tszffffi|bbbb" RequiredArguments="7" Obsolete="false" />
|
||||
<Function Name="measure" Mask="tsffff|bb" RequiredArguments="5" Obsolete="false" />
|
||||
</Class>
|
||||
</Namespace>
|
||||
<Namespace Name="gui">
|
||||
<Property Name="cursorPosition" ReadOnly="true" Obsolete="false" Type="Vector2D" />
|
||||
<Property Name="cursorEnabled" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Function Name="addElement" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="destroyElement" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="destroyElements" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getElementFromName" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="showCursor" Mask="b|b" RequiredArguments="1" Obsolete="false" />
|
||||
</Namespace>
|
||||
<Namespace Name="elements" />
|
||||
<Namespace Name="mafia">
|
||||
<Property Name="mapName" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="game" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="width" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="height" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="aspectRatio" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Function Name="createPed" Mask="svf" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="createVehicle" Mask="svf" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="createExplosion" Mask="vff" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="fadeCamera" Mask="bf|i" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="setPlayerControl" Mask="b" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setTrafficEnabled" Mask="b" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="changeMap" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createPlayer" Mask="svf" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="setLocalPlayer" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Namespace Name="hud">
|
||||
<Function Name="message" Mask="si" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="enableMap" Mask="b" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="announce" Mask="sf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="showCountdown" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
</Namespace>
|
||||
</Namespace>
|
||||
<Namespace Name="camera">
|
||||
<Property Name="position" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Property Name="lookAtPosition" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
</Namespace>
|
||||
<Namespace Name="graphics">
|
||||
<Function Name="loadBMP" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="loadPNG" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="drawRectangle" Mask="xzz|iiiifzzzz" RequiredArguments="3" Obsolete="false" />
|
||||
</Namespace>
|
||||
</Namespace>
|
||||
</Documentation>
|
||||
103
documentation/mafiac/client/mafia1/EventTypes.xml
Normal file
103
documentation/mafiac/client/mafia1/EventTypes.xml
Normal file
@@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" ?>
|
||||
<EventTypes>
|
||||
<!--Called right before the hud is drawn, you should draw your HUD here if you want it under the hud-->
|
||||
<EventType Name="OnDrawHUD" Hash="2504546524" Arguments="0" CanPreventDefault="true" />
|
||||
<!--Called when a keyboard key is down-->
|
||||
<EventType Name="OnKeyDown" Hash="3091440445" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called when a resource starts-->
|
||||
<EventType Name="OnResourceStart" Hash="1143708828" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when an element is about to stream in-->
|
||||
<EventType Name="OnElementStreamIn" Hash="2759455221" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when a resource stops-->
|
||||
<EventType Name="OnResourceStop" Hash="1347867548" Arguments="2" CanPreventDefault="true" />
|
||||
<!---->
|
||||
<EventType Name="OnLocalPlayerExitSphere" Hash="105319985" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a GUIElement is clicked on-->
|
||||
<EventType Name="OnGUIClick" Hash="1620463676" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when the camera is about to be processed-->
|
||||
<EventType Name="OnCameraProcess" Hash="4077277522" Arguments="0" CanPreventDefault="true" />
|
||||
<!--Called whenever a ped jacks a vehicle-->
|
||||
<EventType Name="OnPedJackVehicle" Hash="3295144583" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called after all the hud is drawn, you should draw your HUD here if you want it over the hud-->
|
||||
<EventType Name="OnDrawnHUD" Hash="1969344644" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called after OnRender2D, usually post processing would be done here-->
|
||||
<EventType Name="OnPostRender2D" Hash="1025891209" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when all the files are downloaded-->
|
||||
<EventType Name="OnResourceReady" Hash="4089924796" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called whenever an entity is processed-->
|
||||
<EventType Name="OnEntityProcess" Hash="850679850" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when an element is about to be destroyed-->
|
||||
<EventType Name="OnElementDestroy" Hash="696839637" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when anchor tags are clicked in a GUIHtmlView-->
|
||||
<EventType Name="OnGUIAnchorClick" Hash="1882824246" Arguments="3" CanPreventDefault="true" />
|
||||
<!--Called when a key is typed-->
|
||||
<EventType Name="OnCharacter" Hash="318128971" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called whenever something happens-->
|
||||
<EventType Name="OnExampleEvent" Hash="3708674487" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called whenever the map/mission is fully loaded and ready to play-->
|
||||
<EventType Name="OnMapLoaded" Hash="3234142120" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called whenever the key is pressed-->
|
||||
<EventType Name="OnKeyPressed" Hash="694509307" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called whenever a ped has been hit-->
|
||||
<EventType Name="OnPedInflictDamage" Hash="1391854299" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called every render-->
|
||||
<EventType Name="OnRender" Hash="2466144783" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called whenever a ped dies-->
|
||||
<EventType Name="OnPedDeath" Hash="2417618960" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called whenever a ped spawns-->
|
||||
<EventType Name="OnPedSpawn" Hash="3880839897" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called whenever a ped starts entering a vehicle-->
|
||||
<EventType Name="OnPedEnteringVehicle" Hash="3211811326" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when a cursor button is down-->
|
||||
<EventType Name="OnCursorDown" Hash="3618352285" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called whenever a ped finishes entering a vehicle-->
|
||||
<EventType Name="OnPedEnteredVehicle" Hash="800199306" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called whenever a ped starts exiting a vehicle-->
|
||||
<EventType Name="OnPedExitingVehicle" Hash="353075125" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when the window is focused-->
|
||||
<EventType Name="OnFocus" Hash="1989030060" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called whenever a ped finishes exited a vehicle-->
|
||||
<EventType Name="OnPedExitedVehicle" Hash="1591215844" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when the mouse leaves the window-->
|
||||
<EventType Name="OnMouseLeave" Hash="3102340603" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when a cursor button is up-->
|
||||
<EventType Name="OnCursorUp" Hash="2031527000" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called every process-->
|
||||
<EventType Name="OnProcess" Hash="3150131130" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called every prerender-->
|
||||
<EventType Name="OnPreRender" Hash="2235820386" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when 2D shit should be rendered-->
|
||||
<EventType Name="OnRender2D" Hash="3260181898" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when a line will be output to the chatbox-->
|
||||
<EventType Name="OnChatOutput" Hash="2275472839" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when a mouse button is down-->
|
||||
<EventType Name="OnMouseDown" Hash="2632778956" Arguments="2" CanPreventDefault="false" />
|
||||
<!--Called when a mouse button is up-->
|
||||
<EventType Name="OnMouseUp" Hash="3080252785" Arguments="2" CanPreventDefault="false" />
|
||||
<!--Called when the cursor moves-->
|
||||
<EventType Name="OnCursorMove" Hash="610929630" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when the mouse scrolls-->
|
||||
<EventType Name="OnMouseWheel" Hash="1116330591" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called when a mouse moves-->
|
||||
<EventType Name="OnMouseMove" Hash="1865196431" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called when a mouse is connected-->
|
||||
<EventType Name="OnMouseConnected" Hash="4137684318" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a mouse is disconnected-->
|
||||
<EventType Name="OnMouseDisconnected" Hash="2332645211" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when the window is defocused-->
|
||||
<EventType Name="OnLostFocus" Hash="1036525539" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when a keyboard key is up-->
|
||||
<EventType Name="OnKeyUp" Hash="1763402597" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called when an element is about to stream out-->
|
||||
<EventType Name="OnElementStreamOut" Hash="3852636898" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when disconnected from the server-->
|
||||
<EventType Name="OnDisconnect" Hash="3221334991" Arguments="1" CanPreventDefault="false" />
|
||||
<!---->
|
||||
<EventType Name="OnLocalPlayerEnterSphere" Hash="3890156725" Arguments="1" CanPreventDefault="false" />
|
||||
<!---->
|
||||
<EventType Name="OnLocalPlayerEnteredVehicle" Hash="3395021369" Arguments="1" CanPreventDefault="false" />
|
||||
<!---->
|
||||
<EventType Name="OnLocalPlayerExitedVehicle" Hash="1654569001" Arguments="1" CanPreventDefault="false" />
|
||||
<!---->
|
||||
<EventType Name="OnLocalPlayerSwitchWeapon" Hash="3670373318" Arguments="2" CanPreventDefault="false" />
|
||||
</EventTypes>
|
||||
399
documentation/mafiac/server/Commands.xml
Normal file
399
documentation/mafiac/server/Commands.xml
Normal file
@@ -0,0 +1,399 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Commands>
|
||||
<Command Name="jobwhitelist" Hash="2189523071" />
|
||||
<Command Name="bizdelflooritems" Hash="158748106" />
|
||||
<Command Name="bizpublic" Hash="2572551879" />
|
||||
<Command Name="returnplr" Hash="2563135004" />
|
||||
<Command Name="additemtype" Hash="1625056830" />
|
||||
<Command Name="say" Hash="4241071205" />
|
||||
<Command Name="freq" Hash="1475614133" />
|
||||
<Command Name="items" Hash="3776899405" />
|
||||
<Command Name="iplogin" Hash="3830114180" />
|
||||
<Command Name="exit" Hash="2483651598" />
|
||||
<Command Name="addjobrouteloc" Hash="2057882151" />
|
||||
<Command Name="houseentrance" Hash="1732577001" />
|
||||
<Command Name="houseclan" Hash="3573514699" />
|
||||
<Command Name="aban" Hash="1063339661" />
|
||||
<Command Name="vw" Hash="4141688848" />
|
||||
<Command Name="autolastchar" Hash="3186897000" />
|
||||
<Command Name="quit" Hash="1135269781" />
|
||||
<Command Name="notips" Hash="3711348993" />
|
||||
<Command Name="help" Hash="143088812" />
|
||||
<Command Name="equip" Hash="4067673008" />
|
||||
<Command Name="ccode" Hash="1323373828" />
|
||||
<Command Name="start" Hash="2675529103" />
|
||||
<Command Name="locale" Hash="1098958488" />
|
||||
<Command Name="restart" Hash="3891864071" />
|
||||
<Command Name="carrespawnclan" Hash="1840990743" />
|
||||
<Command Name="deljobroute" Hash="3139178648" />
|
||||
<Command Name="setemail" Hash="795930342" />
|
||||
<Command Name="reloadcfg" Hash="2937436470" />
|
||||
<Command Name="cmd" Hash="794565824" />
|
||||
<Command Name="vehreloadall" Hash="1958007921" />
|
||||
<Command Name="stopall" Hash="1683731152" />
|
||||
<Command Name="stop" Hash="3109426870" />
|
||||
<Command Name="refresh" Hash="1619108091" />
|
||||
<Command Name="bizjob" Hash="1623679964" />
|
||||
<Command Name="jobcolour" Hash="1906062370" />
|
||||
<Command Name="subnetban" Hash="3446702509" />
|
||||
<Command Name="bizdefaultitems" Hash="492108129" />
|
||||
<Command Name="dumpdoc" Hash="3404143852" />
|
||||
<Command Name="bizclan" Hash="2741917790" />
|
||||
<Command Name="bizdeposit" Hash="4085204187" />
|
||||
<Command Name="accent" Hash="1734464235" />
|
||||
<Command Name="streamnameall" Hash="257040269" />
|
||||
<Command Name="accents" Hash="749835561" />
|
||||
<Command Name="bizfloor" Hash="991723021" />
|
||||
<Command Name="bizowner" Hash="1245269599" />
|
||||
<Command Name="jobrouteenabled" Hash="2783446125" />
|
||||
<Command Name="bizreloadall" Hash="1391182304" />
|
||||
<Command Name="accentlist" Hash="1686860130" />
|
||||
<Command Name="login" Hash="2852702992" />
|
||||
<Command Name="mute" Hash="3434705756" />
|
||||
<Command Name="drop" Hash="1880425762" />
|
||||
<Command Name="register" Hash="1610170388" />
|
||||
<Command Name="bizstore" Hash="2047799380" />
|
||||
<Command Name="gotoveh" Hash="1314378666" />
|
||||
<Command Name="bizname" Hash="1656456532" />
|
||||
<Command Name="changepass" Hash="1379839939" />
|
||||
<Command Name="bizorder" Hash="1886403515" />
|
||||
<Command Name="anims" Hash="3889228819" />
|
||||
<Command Name="scrolllines" Hash="1527443730" />
|
||||
<Command Name="gui" Hash="3573502200" />
|
||||
<Command Name="2fa" Hash="3518788867" />
|
||||
<Command Name="verifyemail" Hash="3201570836" />
|
||||
<Command Name="loginalert" Hash="2359999903" />
|
||||
<Command Name="siren" Hash="3683367432" />
|
||||
<Command Name="mousecam" Hash="3206767913" />
|
||||
<Command Name="bizbuyprice" Hash="655960419" />
|
||||
<Command Name="delstaffflag" Hash="1313026715" />
|
||||
<Command Name="bizexit" Hash="2828107612" />
|
||||
<Command Name="chatautohide" Hash="4051244712" />
|
||||
<Command Name="newchar" Hash="4170498675" />
|
||||
<Command Name="anim" Hash="1739285595" />
|
||||
<Command Name="lights" Hash="951890664" />
|
||||
<Command Name="charban" Hash="994982700" />
|
||||
<Command Name="biztill" Hash="869001970" />
|
||||
<Command Name="an" Hash="2536834118" />
|
||||
<Command Name="e" Hash="4024072794" />
|
||||
<Command Name="addstaffflag" Hash="79289023" />
|
||||
<Command Name="animlist" Hash="2302640798" />
|
||||
<Command Name="vehjob" Hash="3344978244" />
|
||||
<Command Name="clanchat" Hash="3592644293" />
|
||||
<Command Name="stopanim" Hash="423975717" />
|
||||
<Command Name="houseexit" Hash="3741361865" />
|
||||
<Command Name="spawnveh" Hash="4087978827" />
|
||||
<Command Name="acctban" Hash="2579355258" />
|
||||
<Command Name="cban" Hash="2506657286" />
|
||||
<Command Name="delplritem" Hash="2217077700" />
|
||||
<Command Name="saban" Hash="1719006355" />
|
||||
<Command Name="ipban" Hash="2759871306" />
|
||||
<Command Name="delloglevel" Hash="3046139078" />
|
||||
<Command Name="addbiz" Hash="3844119303" />
|
||||
<Command Name="delbiz" Hash="1295584235" />
|
||||
<Command Name="bizlock" Hash="3138871388" />
|
||||
<Command Name="bizlights" Hash="2589891122" />
|
||||
<Command Name="bizbuy" Hash="1419510099" />
|
||||
<Command Name="addtrigresp" Hash="2942770628" />
|
||||
<Command Name="bizfee" Hash="223799185" />
|
||||
<Command Name="bizitemprice" Hash="3432680323" />
|
||||
<Command Name="bizbalance" Hash="3394291228" />
|
||||
<Command Name="bizstock" Hash="3463446083" />
|
||||
<Command Name="bizwithdraw" Hash="4223432723" />
|
||||
<Command Name="buy" Hash="3481502327" />
|
||||
<Command Name="bizdelowner" Hash="3491490727" />
|
||||
<Command Name="bizrank" Hash="3034649527" />
|
||||
<Command Name="bizblip" Hash="688162896" />
|
||||
<Command Name="bizpickup" Hash="3816558887" />
|
||||
<Command Name="bizinfo" Hash="4145138181" />
|
||||
<Command Name="cmdenabletype" Hash="3401887628" />
|
||||
<Command Name="bizflooritems" Hash="3152039807" />
|
||||
<Command Name="bizentrance" Hash="3384296964" />
|
||||
<Command Name="nosave" Hash="3967601367" />
|
||||
<Command Name="bizinttype" Hash="1993387962" />
|
||||
<Command Name="vehrespawnclan" Hash="2839312157" />
|
||||
<Command Name="bizdelstorageitems" Hash="640974901" />
|
||||
<Command Name="bizdealership" Hash="1448970834" />
|
||||
<Command Name="deljobrouteloc" Hash="630262577" />
|
||||
<Command Name="me" Hash="2891092674" />
|
||||
<Command Name="setgui" Hash="2722470096" />
|
||||
<Command Name="do" Hash="2638594197" />
|
||||
<Command Name="radioreloadall" Hash="240903479" />
|
||||
<Command Name="s" Hash="453955339" />
|
||||
<Command Name="shout" Hash="3228108389" />
|
||||
<Command Name="lock" Hash="2274335502" />
|
||||
<Command Name="setjobblips" Hash="3692573588" />
|
||||
<Command Name="talk" Hash="2669991355" />
|
||||
<Command Name="local" Hash="2346092776" />
|
||||
<Command Name="l" Hash="2517025534" />
|
||||
<Command Name="setlang" Hash="80385616" />
|
||||
<Command Name="testguiprompt" Hash="1276898732" />
|
||||
<Command Name="reloademailcfg" Hash="3863532754" />
|
||||
<Command Name="w" Hash="476252946" />
|
||||
<Command Name="gotobiz" Hash="175433282" />
|
||||
<Command Name="whisper" Hash="1339834624" />
|
||||
<Command Name="clan" Hash="2683740940" />
|
||||
<Command Name="jobroutestartmsg" Hash="3050645607" />
|
||||
<Command Name="addclan" Hash="4056447230" />
|
||||
<Command Name="c" Hash="112844655" />
|
||||
<Command Name="adminchat" Hash="1592899621" />
|
||||
<Command Name="admins" Hash="2732594447" />
|
||||
<Command Name="a" Hash="3904355907" />
|
||||
<Command Name="gotospawn" Hash="1617509273" />
|
||||
<Command Name="achat" Hash="648643670" />
|
||||
<Command Name="houseowner" Hash="3391862861" />
|
||||
<Command Name="m" Hash="3775001192" />
|
||||
<Command Name="clans" Hash="304575875" />
|
||||
<Command Name="testguierror" Hash="491890956" />
|
||||
<Command Name="clanranks" Hash="374891081" />
|
||||
<Command Name="clanflags" Hash="3602613223" />
|
||||
<Command Name="clearstaffflags" Hash="1933688633" />
|
||||
<Command Name="delclan" Hash="1490865981" />
|
||||
<Command Name="oldveh" Hash="2876867678" />
|
||||
<Command Name="nearveh" Hash="1881612975" />
|
||||
<Command Name="clanaddrank" Hash="2620943916" />
|
||||
<Command Name="stoproute" Hash="3037172349" />
|
||||
<Command Name="clandelrank" Hash="892131823" />
|
||||
<Command Name="clansetrank" Hash="3351619564" />
|
||||
<Command Name="clanowner" Hash="316548129" />
|
||||
<Command Name="clantag" Hash="3681023611" />
|
||||
<Command Name="clanranktag" Hash="1772177415" />
|
||||
<Command Name="clanmembertag" Hash="959912259" />
|
||||
<Command Name="clanrankname" Hash="3030127040" />
|
||||
<Command Name="clanranklevel" Hash="3892778233" />
|
||||
<Command Name="clanmembertitle" Hash="3517062004" />
|
||||
<Command Name="getplrveh" Hash="3278782420" />
|
||||
<Command Name="clanaddrankflag" Hash="2541715106" />
|
||||
<Command Name="clanrankflags" Hash="2045286736" />
|
||||
<Command Name="clandelrankflag" Hash="2989628358" />
|
||||
<Command Name="clanaddmemberflag" Hash="2650664065" />
|
||||
<Command Name="clandelmemberflag" Hash="2712990392" />
|
||||
<Command Name="armour" Hash="2549936275" />
|
||||
<Command Name="cmddisabletype" Hash="3293268402" />
|
||||
<Command Name="bindkey" Hash="1227425763" />
|
||||
<Command Name="cmdenable" Hash="4119993794" />
|
||||
<Command Name="cmddisable" Hash="4076768664" />
|
||||
<Command Name="jobblip" Hash="2619537769" />
|
||||
<Command Name="settime" Hash="1515686519" />
|
||||
<Command Name="setminuteduration" Hash="3347405783" />
|
||||
<Command Name="jobroutelocarrivemsg" Hash="2806715855" />
|
||||
<Command Name="setweather" Hash="296092028" />
|
||||
<Command Name="setsnow" Hash="54572929" />
|
||||
<Command Name="setlogo" Hash="3511519265" />
|
||||
<Command Name="setguicolours" Hash="1253001477" />
|
||||
<Command Name="newcharspawn" Hash="3561425132" />
|
||||
<Command Name="newcharcash" Hash="1263771093" />
|
||||
<Command Name="addgrounditem" Hash="766381040" />
|
||||
<Command Name="newcharskin" Hash="1335038066" />
|
||||
<Command Name="vehrespawnempty" Hash="37869538" />
|
||||
<Command Name="reloaddbcfg" Hash="2688744694" />
|
||||
<Command Name="reloadlocalecfg" Hash="3323883086" />
|
||||
<Command Name="reloadaccentcfg" Hash="1762311642" />
|
||||
<Command Name="setbizblips" Hash="2208865773" />
|
||||
<Command Name="docmdall" Hash="3550628791" />
|
||||
<Command Name="sethouseblips" Hash="3851708594" />
|
||||
<Command Name="bizstorage" Hash="853459670" />
|
||||
<Command Name="setbizpickups" Hash="2871853734" />
|
||||
<Command Name="sethousepickups" Hash="1540957074" />
|
||||
<Command Name="kick" Hash="517332741" />
|
||||
<Command Name="setjobpickups" Hash="1690177862" />
|
||||
<Command Name="dbquery" Hash="1161190191" />
|
||||
<Command Name="scode" Hash="771850886" />
|
||||
<Command Name="gmx" Hash="1012197459" />
|
||||
<Command Name="rt" Hash="196656302" />
|
||||
<Command Name="saveall" Hash="1031238566" />
|
||||
<Command Name="docmd" Hash="432538647" />
|
||||
<Command Name="addloglevel" Hash="2430402978" />
|
||||
<Command Name="loglevel" Hash="3600896637" />
|
||||
<Command Name="streamurlall" Hash="432433149" />
|
||||
<Command Name="forceresetpass" Hash="2586824369" />
|
||||
<Command Name="fixblips" Hash="3117299078" />
|
||||
<Command Name="fixpickups" Hash="4113146230" />
|
||||
<Command Name="carrespawnbiz" Hash="2668944323" />
|
||||
<Command Name="cars" Hash="2512854292" />
|
||||
<Command Name="resetambience" Hash="2196473743" />
|
||||
<Command Name="testguiinfo" Hash="2560043709" />
|
||||
<Command Name="jobroutefinishmsg" Hash="4059033309" />
|
||||
<Command Name="tax" Hash="2390866550" />
|
||||
<Command Name="wealth" Hash="1012568925" />
|
||||
<Command Name="givemoney" Hash="3084115026" />
|
||||
<Command Name="forcepayday" Hash="152293771" />
|
||||
<Command Name="speak" Hash="4227147363" />
|
||||
<Command Name="testemail" Hash="3217958560" />
|
||||
<Command Name="commands" Hash="2587759404" />
|
||||
<Command Name="enter" Hash="3111174254" />
|
||||
<Command Name="cmds" Hash="2152026535" />
|
||||
<Command Name="info" Hash="3414765911" />
|
||||
<Command Name="pos" Hash="2161764012" />
|
||||
<Command Name="veh" Hash="4108237688" />
|
||||
<Command Name="warpinveh" Hash="1511727410" />
|
||||
<Command Name="v" Hash="1801730948" />
|
||||
<Command Name="car" Hash="2000545437" />
|
||||
<Command Name="spawncar" Hash="1883948718" />
|
||||
<Command Name="skin" Hash="41510942" />
|
||||
<Command Name="vehdelowner" Hash="1446958743" />
|
||||
<Command Name="trigresp" Hash="3910880795" />
|
||||
<Command Name="skins" Hash="3775105792" />
|
||||
<Command Name="addjobloc" Hash="3531129112" />
|
||||
<Command Name="clothes" Hash="813282444" />
|
||||
<Command Name="changeskin" Hash="2654409721" />
|
||||
<Command Name="addhouse" Hash="872977526" />
|
||||
<Command Name="delhouse" Hash="919344075" />
|
||||
<Command Name="take" Hash="937258619" />
|
||||
<Command Name="housereloadall" Hash="2365497957" />
|
||||
<Command Name="getveh" Hash="438514653" />
|
||||
<Command Name="quitjob" Hash="4168778638" />
|
||||
<Command Name="houseinfo" Hash="2155877264" />
|
||||
<Command Name="engine" Hash="3903330957" />
|
||||
<Command Name="addtrigcond" Hash="2950893705" />
|
||||
<Command Name="geoip" Hash="1182365374" />
|
||||
<Command Name="housebuy" Hash="3262448210" />
|
||||
<Command Name="addveh" Hash="2701373167" />
|
||||
<Command Name="housedesc" Hash="1086099091" />
|
||||
<Command Name="cursor" Hash="3313461902" />
|
||||
<Command Name="houselock" Hash="3431381449" />
|
||||
<Command Name="houselights" Hash="1768421772" />
|
||||
<Command Name="drag" Hash="1833282923" />
|
||||
<Command Name="housebuyprice" Hash="2313447822" />
|
||||
<Command Name="up" Hash="1133833840" />
|
||||
<Command Name="houserentprice" Hash="2866086582" />
|
||||
<Command Name="houseblip" Hash="1586844101" />
|
||||
<Command Name="gps" Hash="1424645575" />
|
||||
<Command Name="housepickup" Hash="272986777" />
|
||||
<Command Name="houseinttype" Hash="1526335570" />
|
||||
<Command Name="i" Hash="3865851505" />
|
||||
<Command Name="item" Hash="521872670" />
|
||||
<Command Name="additem" Hash="1898315500" />
|
||||
<Command Name="delgrounditem" Hash="300357065" />
|
||||
<Command Name="delplritems" Hash="2273569865" />
|
||||
<Command Name="itemtypeuseval" Hash="4115341070" />
|
||||
<Command Name="pickup" Hash="1100888573" />
|
||||
<Command Name="put" Hash="2928708052" />
|
||||
<Command Name="inventory" Hash="2972535350" />
|
||||
<Command Name="use" Hash="2494680139" />
|
||||
<Command Name="inv" Hash="4200577949" />
|
||||
<Command Name="houseitems" Hash="3830822780" />
|
||||
<Command Name="buylist" Hash="1273281402" />
|
||||
<Command Name="vehbuyprice" Hash="2705069139" />
|
||||
<Command Name="power" Hash="2877948320" />
|
||||
<Command Name="radio" Hash="3762690831" />
|
||||
<Command Name="r" Hash="1812594589" />
|
||||
<Command Name="itemtypeusetype" Hash="1457290076" />
|
||||
<Command Name="itemtypeorderprice" Hash="1622827053" />
|
||||
<Command Name="itemtyperiskmult" Hash="298256682" />
|
||||
<Command Name="itemtypeenabled" Hash="1424486221" />
|
||||
<Command Name="jobaddplayerbl" Hash="3037502154" />
|
||||
<Command Name="takejob" Hash="2690682686" />
|
||||
<Command Name="startwork" Hash="307130076" />
|
||||
<Command Name="setstars" Hash="3388953278" />
|
||||
<Command Name="stopwork" Hash="765483006" />
|
||||
<Command Name="health" Hash="3470402323" />
|
||||
<Command Name="startjob" Hash="4288994387" />
|
||||
<Command Name="stopjob" Hash="2761630709" />
|
||||
<Command Name="uniform" Hash="4130109879" />
|
||||
<Command Name="passenger" Hash="1005578461" />
|
||||
<Command Name="department" Hash="3441287562" />
|
||||
<Command Name="d" Hash="2564639436" />
|
||||
<Command Name="delveh" Hash="152714755" />
|
||||
<Command Name="fare" Hash="1456298103" />
|
||||
<Command Name="detain" Hash="3221757631" />
|
||||
<Command Name="search" Hash="3035683751" />
|
||||
<Command Name="startroute" Hash="1616395680" />
|
||||
<Command Name="jobbl" Hash="779699388" />
|
||||
<Command Name="addjob" Hash="2919626095" />
|
||||
<Command Name="deljobloc" Hash="1739246254" />
|
||||
<Command Name="addjobroute" Hash="2656138748" />
|
||||
<Command Name="jobtoggle" Hash="2928606311" />
|
||||
<Command Name="jobroutename" Hash="2017870989" />
|
||||
<Command Name="jobroutepay" Hash="1116013836" />
|
||||
<Command Name="jobroutelocnextmsg" Hash="1672851411" />
|
||||
<Command Name="jobroutevehcolours" Hash="1488821428" />
|
||||
<Command Name="jobroutedelays" Hash="1645912336" />
|
||||
<Command Name="jobpickup" Hash="3405408273" />
|
||||
<Command Name="jobwl" Hash="432841384" />
|
||||
<Command Name="jobblacklist" Hash="1922085790" />
|
||||
<Command Name="freeze" Hash="1183970330" />
|
||||
<Command Name="radiostations" Hash="3940254175" />
|
||||
<Command Name="jobaddplayerwl" Hash="2193194206" />
|
||||
<Command Name="jobdelplayerbl" Hash="2420244398" />
|
||||
<Command Name="jobreloadall" Hash="2284567617" />
|
||||
<Command Name="jobinfo" Hash="1110948668" />
|
||||
<Command Name="vehpublic" Hash="3482619154" />
|
||||
<Command Name="joblocinfo" Hash="3048238516" />
|
||||
<Command Name="unbindkey" Hash="1293547552" />
|
||||
<Command Name="keybinds" Hash="839428196" />
|
||||
<Command Name="lang" Hash="822707298" />
|
||||
<Command Name="language" Hash="3571151285" />
|
||||
<Command Name="idea" Hash="176933445" />
|
||||
<Command Name="bug" Hash="898416404" />
|
||||
<Command Name="yes" Hash="1978086825" />
|
||||
<Command Name="no" Hash="1739204639" />
|
||||
<Command Name="stuck" Hash="1518825670" />
|
||||
<Command Name="radiostation" Hash="28088017" />
|
||||
<Command Name="radiovolume" Hash="1214320345" />
|
||||
<Command Name="unmute" Hash="567433405" />
|
||||
<Command Name="infiniterun" Hash="872561642" />
|
||||
<Command Name="unfreeze" Hash="2907185820" />
|
||||
<Command Name="goto" Hash="1382046848" />
|
||||
<Command Name="gethere" Hash="390671735" />
|
||||
<Command Name="vehinfo" Hash="157447745" />
|
||||
<Command Name="gotopos" Hash="978357886" />
|
||||
<Command Name="lastveh" Hash="1130556078" />
|
||||
<Command Name="gotohouse" Hash="2545077731" />
|
||||
<Command Name="gotojob" Hash="1095862314" />
|
||||
<Command Name="gotoloc" Hash="853263374" />
|
||||
<Command Name="fr" Hash="3430272718" />
|
||||
<Command Name="ba" Hash="749160980" />
|
||||
<Command Name="lt" Hash="3757671281" />
|
||||
<Command Name="vehrentprice" Hash="1386181794" />
|
||||
<Command Name="dn" Hash="3930255363" />
|
||||
<Command Name="int" Hash="340908721" />
|
||||
<Command Name="staffflags" Hash="3021358894" />
|
||||
<Command Name="getstaffflags" Hash="3580006325" />
|
||||
<Command Name="nonrpname" Hash="1622484520" />
|
||||
<Command Name="setskin" Hash="934967852" />
|
||||
<Command Name="setname" Hash="1809869876" />
|
||||
<Command Name="setaccent" Hash="2041102865" />
|
||||
<Command Name="plrinfo" Hash="1743625616" />
|
||||
<Command Name="getplrhouse" Hash="2410855153" />
|
||||
<Command Name="getplrbiz" Hash="2269973052" />
|
||||
<Command Name="ip" Hash="2783163181" />
|
||||
<Command Name="plrsync" Hash="2152683965" />
|
||||
<Command Name="switchchar" Hash="925728418" />
|
||||
<Command Name="usechar" Hash="1390554915" />
|
||||
<Command Name="addtrig" Hash="2612767502" />
|
||||
<Command Name="deltrig" Hash="850336973" />
|
||||
<Command Name="deltrigcond" Hash="2326689261" />
|
||||
<Command Name="deltrigresp" Hash="2318039200" />
|
||||
<Command Name="triggers" Hash="248416589" />
|
||||
<Command Name="trigcond" Hash="3919528790" />
|
||||
<Command Name="trigtoggle" Hash="3621806868" />
|
||||
<Command Name="tempveh" Hash="3698377893" />
|
||||
<Command Name="oldcar" Hash="681236923" />
|
||||
<Command Name="lastcar" Hash="3229726539" />
|
||||
<Command Name="unlock" Hash="1793372399" />
|
||||
<Command Name="vehrespawnpublic" Hash="3922930954" />
|
||||
<Command Name="vehowner" Hash="997636202" />
|
||||
<Command Name="vehclan" Hash="1562240026" />
|
||||
<Command Name="vehbiz" Hash="2353348396" />
|
||||
<Command Name="vehrank" Hash="1251127283" />
|
||||
<Command Name="vehpark" Hash="116144677" />
|
||||
<Command Name="vehrespawnall" Hash="4068906615" />
|
||||
<Command Name="vehrespawnjob" Hash="843450194" />
|
||||
<Command Name="vehrespawnplr" Hash="359490131" />
|
||||
<Command Name="vehrespawnbiz" Hash="2036558138" />
|
||||
<Command Name="vehrespawn" Hash="2026210653" />
|
||||
<Command Name="carrespawnall" Hash="351347854" />
|
||||
<Command Name="carrespawnempty" Hash="3796941249" />
|
||||
<Command Name="carrespawnjob" Hash="3560027563" />
|
||||
<Command Name="carrespawnplr" Hash="4078620842" />
|
||||
<Command Name="carrespawnpublic" Hash="1263815958" />
|
||||
<Command Name="carrespawn" Hash="164999966" />
|
||||
<Command Name="carreloadall" Hash="1616522302" />
|
||||
<Command Name="vehrent" Hash="3230862042" />
|
||||
<Command Name="vehstoprent" Hash="3033622543" />
|
||||
<Command Name="vehbuy" Hash="4080743371" />
|
||||
<Command Name="vehcolour" Hash="249087681" />
|
||||
<Command Name="vehlivery" Hash="2590964950" />
|
||||
<Command Name="vehrepair" Hash="2059704110" />
|
||||
</Commands>
|
||||
545
documentation/mafiac/server/Defines.xml
Normal file
545
documentation/mafiac/server/Defines.xml
Normal file
@@ -0,0 +1,545 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Defines>
|
||||
<Define Name="KEYSTATE_UP" Value="0" />
|
||||
<Define Name="KEYSTATE_DOWN" Value="1" />
|
||||
<Define Name="KEYSTATE_BOTH" Value="2" />
|
||||
<Define Name="SDL_SCANCODE_UNKNOWN" Value="0" />
|
||||
<Define Name="SDL_SCANCODE_A" Value="4" />
|
||||
<Define Name="SDL_SCANCODE_B" Value="5" />
|
||||
<Define Name="SDL_SCANCODE_C" Value="6" />
|
||||
<Define Name="SDL_SCANCODE_D" Value="7" />
|
||||
<Define Name="SDL_SCANCODE_E" Value="8" />
|
||||
<Define Name="SDL_SCANCODE_F" Value="9" />
|
||||
<Define Name="SDL_SCANCODE_G" Value="10" />
|
||||
<Define Name="SDL_SCANCODE_H" Value="11" />
|
||||
<Define Name="SDL_SCANCODE_I" Value="12" />
|
||||
<Define Name="SDL_SCANCODE_J" Value="13" />
|
||||
<Define Name="SDL_SCANCODE_K" Value="14" />
|
||||
<Define Name="SDL_SCANCODE_L" Value="15" />
|
||||
<Define Name="SDL_SCANCODE_M" Value="16" />
|
||||
<Define Name="SDL_SCANCODE_N" Value="17" />
|
||||
<Define Name="SDL_SCANCODE_O" Value="18" />
|
||||
<Define Name="SDL_SCANCODE_P" Value="19" />
|
||||
<Define Name="SDL_SCANCODE_Q" Value="20" />
|
||||
<Define Name="SDL_SCANCODE_R" Value="21" />
|
||||
<Define Name="SDL_SCANCODE_S" Value="22" />
|
||||
<Define Name="SDL_SCANCODE_T" Value="23" />
|
||||
<Define Name="SDL_SCANCODE_U" Value="24" />
|
||||
<Define Name="SDL_SCANCODE_V" Value="25" />
|
||||
<Define Name="SDL_SCANCODE_W" Value="26" />
|
||||
<Define Name="SDL_SCANCODE_X" Value="27" />
|
||||
<Define Name="SDL_SCANCODE_Y" Value="28" />
|
||||
<Define Name="SDL_SCANCODE_Z" Value="29" />
|
||||
<Define Name="SDL_SCANCODE_1" Value="30" />
|
||||
<Define Name="SDL_SCANCODE_2" Value="31" />
|
||||
<Define Name="SDL_SCANCODE_3" Value="32" />
|
||||
<Define Name="SDL_SCANCODE_4" Value="33" />
|
||||
<Define Name="SDL_SCANCODE_5" Value="34" />
|
||||
<Define Name="SDL_SCANCODE_6" Value="35" />
|
||||
<Define Name="SDL_SCANCODE_7" Value="36" />
|
||||
<Define Name="SDL_SCANCODE_8" Value="37" />
|
||||
<Define Name="SDL_SCANCODE_9" Value="38" />
|
||||
<Define Name="SDL_SCANCODE_0" Value="39" />
|
||||
<Define Name="SDL_SCANCODE_RETURN" Value="40" />
|
||||
<Define Name="SDL_SCANCODE_ESCAPE" Value="41" />
|
||||
<Define Name="SDL_SCANCODE_BACKSPACE" Value="42" />
|
||||
<Define Name="SDL_SCANCODE_TAB" Value="43" />
|
||||
<Define Name="SDL_SCANCODE_SPACE" Value="44" />
|
||||
<Define Name="SDL_SCANCODE_MINUS" Value="45" />
|
||||
<Define Name="SDL_SCANCODE_EQUALS" Value="46" />
|
||||
<Define Name="SDL_SCANCODE_LEFTBRACKET" Value="47" />
|
||||
<Define Name="SDL_SCANCODE_RIGHTBRACKET" Value="48" />
|
||||
<Define Name="SDL_SCANCODE_BACKSLASH" Value="49" />
|
||||
<Define Name="SDL_SCANCODE_NONUSHASH" Value="50" />
|
||||
<Define Name="SDL_SCANCODE_SEMICOLON" Value="51" />
|
||||
<Define Name="SDL_SCANCODE_APOSTROPHE" Value="52" />
|
||||
<Define Name="SDL_SCANCODE_GRAVE" Value="53" />
|
||||
<Define Name="SDL_SCANCODE_COMMA" Value="54" />
|
||||
<Define Name="SDL_SCANCODE_PERIOD" Value="55" />
|
||||
<Define Name="SDL_SCANCODE_SLASH" Value="56" />
|
||||
<Define Name="SDL_SCANCODE_CAPSLOCK" Value="57" />
|
||||
<Define Name="SDL_SCANCODE_F1" Value="58" />
|
||||
<Define Name="SDL_SCANCODE_F2" Value="59" />
|
||||
<Define Name="SDL_SCANCODE_F3" Value="60" />
|
||||
<Define Name="SDL_SCANCODE_F4" Value="61" />
|
||||
<Define Name="SDL_SCANCODE_F5" Value="62" />
|
||||
<Define Name="SDL_SCANCODE_F6" Value="63" />
|
||||
<Define Name="SDL_SCANCODE_F7" Value="64" />
|
||||
<Define Name="SDL_SCANCODE_F8" Value="65" />
|
||||
<Define Name="SDL_SCANCODE_F9" Value="66" />
|
||||
<Define Name="SDL_SCANCODE_F10" Value="67" />
|
||||
<Define Name="SDL_SCANCODE_F11" Value="68" />
|
||||
<Define Name="SDL_SCANCODE_F12" Value="69" />
|
||||
<Define Name="SDL_SCANCODE_PRINTSCREEN" Value="70" />
|
||||
<Define Name="SDL_SCANCODE_SCROLLLOCK" Value="71" />
|
||||
<Define Name="SDL_SCANCODE_PAUSE" Value="72" />
|
||||
<Define Name="SDL_SCANCODE_INSERT" Value="73" />
|
||||
<Define Name="SDL_SCANCODE_HOME" Value="74" />
|
||||
<Define Name="SDL_SCANCODE_PAGEUP" Value="75" />
|
||||
<Define Name="SDL_SCANCODE_DELETE" Value="76" />
|
||||
<Define Name="SDL_SCANCODE_END" Value="77" />
|
||||
<Define Name="SDL_SCANCODE_PAGEDOWN" Value="78" />
|
||||
<Define Name="SDL_SCANCODE_RIGHT" Value="79" />
|
||||
<Define Name="SDL_SCANCODE_LEFT" Value="80" />
|
||||
<Define Name="SDL_SCANCODE_DOWN" Value="81" />
|
||||
<Define Name="SDL_SCANCODE_UP" Value="82" />
|
||||
<Define Name="SDL_SCANCODE_NUMLOCKCLEAR" Value="83" />
|
||||
<Define Name="SDL_SCANCODE_KP_DIVIDE" Value="84" />
|
||||
<Define Name="SDL_SCANCODE_KP_MULTIPLY" Value="85" />
|
||||
<Define Name="SDL_SCANCODE_KP_MINUS" Value="86" />
|
||||
<Define Name="SDL_SCANCODE_KP_PLUS" Value="87" />
|
||||
<Define Name="SDL_SCANCODE_KP_ENTER" Value="88" />
|
||||
<Define Name="SDL_SCANCODE_KP_1" Value="89" />
|
||||
<Define Name="SDL_SCANCODE_KP_2" Value="90" />
|
||||
<Define Name="SDL_SCANCODE_KP_3" Value="91" />
|
||||
<Define Name="SDL_SCANCODE_KP_4" Value="92" />
|
||||
<Define Name="SDL_SCANCODE_KP_5" Value="93" />
|
||||
<Define Name="SDL_SCANCODE_KP_6" Value="94" />
|
||||
<Define Name="SDL_SCANCODE_KP_7" Value="95" />
|
||||
<Define Name="SDL_SCANCODE_KP_8" Value="96" />
|
||||
<Define Name="SDL_SCANCODE_KP_9" Value="97" />
|
||||
<Define Name="SDL_SCANCODE_KP_0" Value="98" />
|
||||
<Define Name="SDL_SCANCODE_KP_PERIOD" Value="99" />
|
||||
<Define Name="SDL_SCANCODE_NONUSBACKSLASH" Value="100" />
|
||||
<Define Name="SDL_SCANCODE_APPLICATION" Value="101" />
|
||||
<Define Name="SDL_SCANCODE_POWER" Value="102" />
|
||||
<Define Name="SDL_SCANCODE_KP_EQUALS" Value="103" />
|
||||
<Define Name="SDL_SCANCODE_F13" Value="104" />
|
||||
<Define Name="SDL_SCANCODE_F14" Value="105" />
|
||||
<Define Name="SDL_SCANCODE_F15" Value="106" />
|
||||
<Define Name="SDL_SCANCODE_F16" Value="107" />
|
||||
<Define Name="SDL_SCANCODE_F17" Value="108" />
|
||||
<Define Name="SDL_SCANCODE_F18" Value="109" />
|
||||
<Define Name="SDL_SCANCODE_F19" Value="110" />
|
||||
<Define Name="SDL_SCANCODE_F20" Value="111" />
|
||||
<Define Name="SDL_SCANCODE_F21" Value="112" />
|
||||
<Define Name="SDL_SCANCODE_F22" Value="113" />
|
||||
<Define Name="SDL_SCANCODE_F23" Value="114" />
|
||||
<Define Name="SDL_SCANCODE_F24" Value="115" />
|
||||
<Define Name="SDL_SCANCODE_EXECUTE" Value="116" />
|
||||
<Define Name="SDL_SCANCODE_HELP" Value="117" />
|
||||
<Define Name="SDL_SCANCODE_MENU" Value="118" />
|
||||
<Define Name="SDL_SCANCODE_SELECT" Value="119" />
|
||||
<Define Name="SDL_SCANCODE_STOP" Value="120" />
|
||||
<Define Name="SDL_SCANCODE_AGAIN" Value="121" />
|
||||
<Define Name="SDL_SCANCODE_UNDO" Value="122" />
|
||||
<Define Name="SDL_SCANCODE_CUT" Value="123" />
|
||||
<Define Name="SDL_SCANCODE_COPY" Value="124" />
|
||||
<Define Name="SDL_SCANCODE_PASTE" Value="125" />
|
||||
<Define Name="SDL_SCANCODE_FIND" Value="126" />
|
||||
<Define Name="SDL_SCANCODE_MUTE" Value="127" />
|
||||
<Define Name="SDL_SCANCODE_VOLUMEUP" Value="128" />
|
||||
<Define Name="SDL_SCANCODE_VOLUMEDOWN" Value="129" />
|
||||
<Define Name="SDL_SCANCODE_KP_COMMA" Value="133" />
|
||||
<Define Name="SDL_SCANCODE_KP_EQUALSAS400" Value="134" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL1" Value="135" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL2" Value="136" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL3" Value="137" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL4" Value="138" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL5" Value="139" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL6" Value="140" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL7" Value="141" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL8" Value="142" />
|
||||
<Define Name="SDL_SCANCODE_INTERNATIONAL9" Value="143" />
|
||||
<Define Name="SDL_SCANCODE_LANG1" Value="144" />
|
||||
<Define Name="SDL_SCANCODE_LANG2" Value="145" />
|
||||
<Define Name="SDL_SCANCODE_LANG3" Value="146" />
|
||||
<Define Name="SDL_SCANCODE_LANG4" Value="147" />
|
||||
<Define Name="SDL_SCANCODE_LANG5" Value="148" />
|
||||
<Define Name="SDL_SCANCODE_LANG6" Value="149" />
|
||||
<Define Name="SDL_SCANCODE_LANG7" Value="150" />
|
||||
<Define Name="SDL_SCANCODE_LANG8" Value="151" />
|
||||
<Define Name="SDL_SCANCODE_LANG9" Value="152" />
|
||||
<Define Name="SDL_SCANCODE_ALTERASE" Value="153" />
|
||||
<Define Name="SDL_SCANCODE_SYSREQ" Value="154" />
|
||||
<Define Name="SDL_SCANCODE_CANCEL" Value="155" />
|
||||
<Define Name="SDL_SCANCODE_CLEAR" Value="156" />
|
||||
<Define Name="SDL_SCANCODE_PRIOR" Value="157" />
|
||||
<Define Name="SDL_SCANCODE_RETURN2" Value="158" />
|
||||
<Define Name="SDL_SCANCODE_SEPARATOR" Value="159" />
|
||||
<Define Name="SDL_SCANCODE_OUT" Value="160" />
|
||||
<Define Name="SDL_SCANCODE_OPER" Value="161" />
|
||||
<Define Name="SDL_SCANCODE_CLEARAGAIN" Value="162" />
|
||||
<Define Name="SDL_SCANCODE_CRSEL" Value="163" />
|
||||
<Define Name="SDL_SCANCODE_EXSEL" Value="164" />
|
||||
<Define Name="SDL_SCANCODE_KP_00" Value="176" />
|
||||
<Define Name="SDL_SCANCODE_KP_000" Value="177" />
|
||||
<Define Name="SDL_SCANCODE_THOUSANDSSEPARATOR" Value="178" />
|
||||
<Define Name="SDL_SCANCODE_DECIMALSEPARATOR" Value="179" />
|
||||
<Define Name="SDL_SCANCODE_CURRENCYUNIT" Value="180" />
|
||||
<Define Name="SDL_SCANCODE_CURRENCYSUBUNIT" Value="181" />
|
||||
<Define Name="SDL_SCANCODE_KP_LEFTPAREN" Value="182" />
|
||||
<Define Name="SDL_SCANCODE_KP_RIGHTPAREN" Value="183" />
|
||||
<Define Name="SDL_SCANCODE_KP_LEFTBRACE" Value="184" />
|
||||
<Define Name="SDL_SCANCODE_KP_RIGHTBRACE" Value="185" />
|
||||
<Define Name="SDL_SCANCODE_KP_TAB" Value="186" />
|
||||
<Define Name="SDL_SCANCODE_KP_BACKSPACE" Value="187" />
|
||||
<Define Name="SDL_SCANCODE_KP_A" Value="188" />
|
||||
<Define Name="SDL_SCANCODE_KP_B" Value="189" />
|
||||
<Define Name="SDL_SCANCODE_KP_C" Value="190" />
|
||||
<Define Name="SDL_SCANCODE_KP_D" Value="191" />
|
||||
<Define Name="SDL_SCANCODE_KP_E" Value="192" />
|
||||
<Define Name="SDL_SCANCODE_KP_F" Value="193" />
|
||||
<Define Name="SDL_SCANCODE_KP_XOR" Value="194" />
|
||||
<Define Name="SDL_SCANCODE_KP_POWER" Value="195" />
|
||||
<Define Name="SDL_SCANCODE_KP_PERCENT" Value="196" />
|
||||
<Define Name="SDL_SCANCODE_KP_LESS" Value="197" />
|
||||
<Define Name="SDL_SCANCODE_KP_GREATER" Value="198" />
|
||||
<Define Name="SDL_SCANCODE_KP_AMPERSAND" Value="199" />
|
||||
<Define Name="SDL_SCANCODE_KP_DBLAMPERSAND" Value="200" />
|
||||
<Define Name="SDL_SCANCODE_KP_VERTICALBAR" Value="201" />
|
||||
<Define Name="SDL_SCANCODE_KP_DBLVERTICALBAR" Value="202" />
|
||||
<Define Name="SDL_SCANCODE_KP_COLON" Value="203" />
|
||||
<Define Name="SDL_SCANCODE_KP_HASH" Value="204" />
|
||||
<Define Name="SDL_SCANCODE_KP_SPACE" Value="205" />
|
||||
<Define Name="SDL_SCANCODE_KP_AT" Value="206" />
|
||||
<Define Name="SDL_SCANCODE_KP_EXCLAM" Value="207" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMSTORE" Value="208" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMRECALL" Value="209" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMCLEAR" Value="210" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMADD" Value="211" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMSUBTRACT" Value="212" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMMULTIPLY" Value="213" />
|
||||
<Define Name="SDL_SCANCODE_KP_MEMDIVIDE" Value="214" />
|
||||
<Define Name="SDL_SCANCODE_KP_PLUSMINUS" Value="215" />
|
||||
<Define Name="SDL_SCANCODE_KP_CLEAR" Value="216" />
|
||||
<Define Name="SDL_SCANCODE_KP_CLEARENTRY" Value="217" />
|
||||
<Define Name="SDL_SCANCODE_KP_BINARY" Value="218" />
|
||||
<Define Name="SDL_SCANCODE_KP_OCTAL" Value="219" />
|
||||
<Define Name="SDL_SCANCODE_KP_DECIMAL" Value="220" />
|
||||
<Define Name="SDL_SCANCODE_KP_HEXADECIMAL" Value="221" />
|
||||
<Define Name="SDL_SCANCODE_LCTRL" Value="224" />
|
||||
<Define Name="SDL_SCANCODE_LSHIFT" Value="225" />
|
||||
<Define Name="SDL_SCANCODE_LALT" Value="226" />
|
||||
<Define Name="SDL_SCANCODE_LGUI" Value="227" />
|
||||
<Define Name="SDL_SCANCODE_RCTRL" Value="228" />
|
||||
<Define Name="SDL_SCANCODE_RSHIFT" Value="229" />
|
||||
<Define Name="SDL_SCANCODE_RALT" Value="230" />
|
||||
<Define Name="SDL_SCANCODE_RGUI" Value="231" />
|
||||
<Define Name="SDL_SCANCODE_MODE" Value="257" />
|
||||
<Define Name="SDL_SCANCODE_AUDIONEXT" Value="258" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOPREV" Value="259" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOSTOP" Value="260" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOPLAY" Value="261" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOMUTE" Value="262" />
|
||||
<Define Name="SDL_SCANCODE_MEDIASELECT" Value="263" />
|
||||
<Define Name="SDL_SCANCODE_WWW" Value="264" />
|
||||
<Define Name="SDL_SCANCODE_MAIL" Value="265" />
|
||||
<Define Name="SDL_SCANCODE_CALCULATOR" Value="266" />
|
||||
<Define Name="SDL_SCANCODE_COMPUTER" Value="267" />
|
||||
<Define Name="SDL_SCANCODE_AC_SEARCH" Value="268" />
|
||||
<Define Name="SDL_SCANCODE_AC_HOME" Value="269" />
|
||||
<Define Name="SDL_SCANCODE_AC_BACK" Value="270" />
|
||||
<Define Name="SDL_SCANCODE_AC_FORWARD" Value="271" />
|
||||
<Define Name="SDL_SCANCODE_AC_STOP" Value="272" />
|
||||
<Define Name="SDL_SCANCODE_AC_REFRESH" Value="273" />
|
||||
<Define Name="SDL_SCANCODE_AC_BOOKMARKS" Value="274" />
|
||||
<Define Name="SDL_SCANCODE_BRIGHTNESSDOWN" Value="275" />
|
||||
<Define Name="SDL_SCANCODE_BRIGHTNESSUP" Value="276" />
|
||||
<Define Name="SDL_SCANCODE_DISPLAYSWITCH" Value="277" />
|
||||
<Define Name="SDL_SCANCODE_KBDILLUMTOGGLE" Value="278" />
|
||||
<Define Name="SDL_SCANCODE_KBDILLUMDOWN" Value="279" />
|
||||
<Define Name="SDL_SCANCODE_KBDILLUMUP" Value="280" />
|
||||
<Define Name="SDL_SCANCODE_EJECT" Value="281" />
|
||||
<Define Name="SDL_SCANCODE_SLEEP" Value="282" />
|
||||
<Define Name="SDL_SCANCODE_APP1" Value="283" />
|
||||
<Define Name="SDL_SCANCODE_APP2" Value="284" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOREWIND" Value="285" />
|
||||
<Define Name="SDL_SCANCODE_AUDIOFASTFORWARD" Value="286" />
|
||||
<Define Name="SDL_NUM_SCANCODES" Value="512" />
|
||||
<Define Name="SDLK_UNKNOWN" Value="0" />
|
||||
<Define Name="SDLK_RETURN" Value="13" />
|
||||
<Define Name="SDLK_ESCAPE" Value="27" />
|
||||
<Define Name="SDLK_BACKSPACE" Value="8" />
|
||||
<Define Name="SDLK_TAB" Value="9" />
|
||||
<Define Name="SDLK_SPACE" Value="32" />
|
||||
<Define Name="SDLK_EXCLAIM" Value="33" />
|
||||
<Define Name="SDLK_QUOTEDBL" Value="34" />
|
||||
<Define Name="SDLK_HASH" Value="35" />
|
||||
<Define Name="SDLK_PERCENT" Value="37" />
|
||||
<Define Name="SDLK_DOLLAR" Value="36" />
|
||||
<Define Name="SDLK_AMPERSAND" Value="38" />
|
||||
<Define Name="SDLK_QUOTE" Value="39" />
|
||||
<Define Name="SDLK_LEFTPAREN" Value="40" />
|
||||
<Define Name="SDLK_RIGHTPAREN" Value="41" />
|
||||
<Define Name="SDLK_ASTERISK" Value="42" />
|
||||
<Define Name="SDLK_PLUS" Value="43" />
|
||||
<Define Name="SDLK_COMMA" Value="44" />
|
||||
<Define Name="SDLK_MINUS" Value="45" />
|
||||
<Define Name="SDLK_PERIOD" Value="46" />
|
||||
<Define Name="SDLK_SLASH" Value="47" />
|
||||
<Define Name="SDLK_0" Value="48" />
|
||||
<Define Name="SDLK_1" Value="49" />
|
||||
<Define Name="SDLK_2" Value="50" />
|
||||
<Define Name="SDLK_3" Value="51" />
|
||||
<Define Name="SDLK_4" Value="52" />
|
||||
<Define Name="SDLK_5" Value="53" />
|
||||
<Define Name="SDLK_6" Value="54" />
|
||||
<Define Name="SDLK_7" Value="55" />
|
||||
<Define Name="SDLK_8" Value="56" />
|
||||
<Define Name="SDLK_9" Value="57" />
|
||||
<Define Name="SDLK_COLON" Value="58" />
|
||||
<Define Name="SDLK_SEMICOLON" Value="59" />
|
||||
<Define Name="SDLK_LESS" Value="60" />
|
||||
<Define Name="SDLK_EQUALS" Value="61" />
|
||||
<Define Name="SDLK_GREATER" Value="62" />
|
||||
<Define Name="SDLK_QUESTION" Value="63" />
|
||||
<Define Name="SDLK_AT" Value="64" />
|
||||
<Define Name="SDLK_LEFTBRACKET" Value="91" />
|
||||
<Define Name="SDLK_BACKSLASH" Value="92" />
|
||||
<Define Name="SDLK_RIGHTBRACKET" Value="93" />
|
||||
<Define Name="SDLK_CARET" Value="94" />
|
||||
<Define Name="SDLK_UNDERSCORE" Value="95" />
|
||||
<Define Name="SDLK_BACKQUOTE" Value="96" />
|
||||
<Define Name="SDLK_a" Value="97" />
|
||||
<Define Name="SDLK_b" Value="98" />
|
||||
<Define Name="SDLK_c" Value="99" />
|
||||
<Define Name="SDLK_d" Value="100" />
|
||||
<Define Name="SDLK_e" Value="101" />
|
||||
<Define Name="SDLK_f" Value="102" />
|
||||
<Define Name="SDLK_g" Value="103" />
|
||||
<Define Name="SDLK_h" Value="104" />
|
||||
<Define Name="SDLK_i" Value="105" />
|
||||
<Define Name="SDLK_j" Value="106" />
|
||||
<Define Name="SDLK_k" Value="107" />
|
||||
<Define Name="SDLK_l" Value="108" />
|
||||
<Define Name="SDLK_m" Value="109" />
|
||||
<Define Name="SDLK_n" Value="110" />
|
||||
<Define Name="SDLK_o" Value="111" />
|
||||
<Define Name="SDLK_p" Value="112" />
|
||||
<Define Name="SDLK_q" Value="113" />
|
||||
<Define Name="SDLK_r" Value="114" />
|
||||
<Define Name="SDLK_s" Value="115" />
|
||||
<Define Name="SDLK_t" Value="116" />
|
||||
<Define Name="SDLK_u" Value="117" />
|
||||
<Define Name="SDLK_v" Value="118" />
|
||||
<Define Name="SDLK_w" Value="119" />
|
||||
<Define Name="SDLK_x" Value="120" />
|
||||
<Define Name="SDLK_y" Value="121" />
|
||||
<Define Name="SDLK_z" Value="122" />
|
||||
<Define Name="SDLK_CAPSLOCK" Value="1073741881" />
|
||||
<Define Name="SDLK_F1" Value="1073741882" />
|
||||
<Define Name="SDLK_F2" Value="1073741883" />
|
||||
<Define Name="SDLK_F3" Value="1073741884" />
|
||||
<Define Name="SDLK_F4" Value="1073741885" />
|
||||
<Define Name="SDLK_F5" Value="1073741886" />
|
||||
<Define Name="SDLK_F6" Value="1073741887" />
|
||||
<Define Name="SDLK_F7" Value="1073741888" />
|
||||
<Define Name="SDLK_F8" Value="1073741889" />
|
||||
<Define Name="SDLK_F9" Value="1073741890" />
|
||||
<Define Name="SDLK_F10" Value="1073741891" />
|
||||
<Define Name="SDLK_F11" Value="1073741892" />
|
||||
<Define Name="SDLK_F12" Value="1073741893" />
|
||||
<Define Name="SDLK_PRINTSCREEN" Value="1073741894" />
|
||||
<Define Name="SDLK_SCROLLLOCK" Value="1073741895" />
|
||||
<Define Name="SDLK_PAUSE" Value="1073741896" />
|
||||
<Define Name="SDLK_INSERT" Value="1073741897" />
|
||||
<Define Name="SDLK_HOME" Value="1073741898" />
|
||||
<Define Name="SDLK_PAGEUP" Value="1073741899" />
|
||||
<Define Name="SDLK_DELETE" Value="127" />
|
||||
<Define Name="SDLK_END" Value="1073741901" />
|
||||
<Define Name="SDLK_PAGEDOWN" Value="1073741902" />
|
||||
<Define Name="SDLK_RIGHT" Value="1073741903" />
|
||||
<Define Name="SDLK_LEFT" Value="1073741904" />
|
||||
<Define Name="SDLK_DOWN" Value="1073741905" />
|
||||
<Define Name="SDLK_UP" Value="1073741906" />
|
||||
<Define Name="SDLK_NUMLOCKCLEAR" Value="1073741907" />
|
||||
<Define Name="SDLK_KP_DIVIDE" Value="1073741908" />
|
||||
<Define Name="SDLK_KP_MULTIPLY" Value="1073741909" />
|
||||
<Define Name="SDLK_KP_MINUS" Value="1073741910" />
|
||||
<Define Name="SDLK_KP_PLUS" Value="1073741911" />
|
||||
<Define Name="SDLK_KP_ENTER" Value="1073741912" />
|
||||
<Define Name="SDLK_KP_1" Value="1073741913" />
|
||||
<Define Name="SDLK_KP_2" Value="1073741914" />
|
||||
<Define Name="SDLK_KP_3" Value="1073741915" />
|
||||
<Define Name="SDLK_KP_4" Value="1073741916" />
|
||||
<Define Name="SDLK_KP_5" Value="1073741917" />
|
||||
<Define Name="SDLK_KP_6" Value="1073741918" />
|
||||
<Define Name="SDLK_KP_7" Value="1073741919" />
|
||||
<Define Name="SDLK_KP_8" Value="1073741920" />
|
||||
<Define Name="SDLK_KP_9" Value="1073741921" />
|
||||
<Define Name="SDLK_KP_0" Value="1073741922" />
|
||||
<Define Name="SDLK_KP_PERIOD" Value="1073741923" />
|
||||
<Define Name="SDLK_APPLICATION" Value="1073741925" />
|
||||
<Define Name="SDLK_POWER" Value="1073741926" />
|
||||
<Define Name="SDLK_KP_EQUALS" Value="1073741927" />
|
||||
<Define Name="SDLK_F13" Value="1073741928" />
|
||||
<Define Name="SDLK_F14" Value="1073741929" />
|
||||
<Define Name="SDLK_F15" Value="1073741930" />
|
||||
<Define Name="SDLK_F16" Value="1073741931" />
|
||||
<Define Name="SDLK_F17" Value="1073741932" />
|
||||
<Define Name="SDLK_F18" Value="1073741933" />
|
||||
<Define Name="SDLK_F19" Value="1073741934" />
|
||||
<Define Name="SDLK_F20" Value="1073741935" />
|
||||
<Define Name="SDLK_F21" Value="1073741936" />
|
||||
<Define Name="SDLK_F22" Value="1073741937" />
|
||||
<Define Name="SDLK_F23" Value="1073741938" />
|
||||
<Define Name="SDLK_F24" Value="1073741939" />
|
||||
<Define Name="SDLK_EXECUTE" Value="1073741940" />
|
||||
<Define Name="SDLK_HELP" Value="1073741941" />
|
||||
<Define Name="SDLK_MENU" Value="1073741942" />
|
||||
<Define Name="SDLK_SELECT" Value="1073741943" />
|
||||
<Define Name="SDLK_STOP" Value="1073741944" />
|
||||
<Define Name="SDLK_AGAIN" Value="1073741945" />
|
||||
<Define Name="SDLK_UNDO" Value="1073741946" />
|
||||
<Define Name="SDLK_CUT" Value="1073741947" />
|
||||
<Define Name="SDLK_COPY" Value="1073741948" />
|
||||
<Define Name="SDLK_PASTE" Value="1073741949" />
|
||||
<Define Name="SDLK_FIND" Value="1073741950" />
|
||||
<Define Name="SDLK_MUTE" Value="1073741951" />
|
||||
<Define Name="SDLK_VOLUMEUP" Value="1073741952" />
|
||||
<Define Name="SDLK_VOLUMEDOWN" Value="1073741953" />
|
||||
<Define Name="SDLK_KP_COMMA" Value="1073741957" />
|
||||
<Define Name="SDLK_KP_EQUALSAS400" Value="1073741958" />
|
||||
<Define Name="SDLK_ALTERASE" Value="1073741977" />
|
||||
<Define Name="SDLK_SYSREQ" Value="1073741978" />
|
||||
<Define Name="SDLK_CANCEL" Value="1073741979" />
|
||||
<Define Name="SDLK_CLEAR" Value="1073741980" />
|
||||
<Define Name="SDLK_PRIOR" Value="1073741981" />
|
||||
<Define Name="SDLK_RETURN2" Value="1073741982" />
|
||||
<Define Name="SDLK_SEPARATOR" Value="1073741983" />
|
||||
<Define Name="SDLK_OUT" Value="1073741984" />
|
||||
<Define Name="SDLK_OPER" Value="1073741985" />
|
||||
<Define Name="SDLK_CLEARAGAIN" Value="1073741986" />
|
||||
<Define Name="SDLK_CRSEL" Value="1073741987" />
|
||||
<Define Name="SDLK_EXSEL" Value="1073741988" />
|
||||
<Define Name="SDLK_KP_00" Value="1073742000" />
|
||||
<Define Name="SDLK_KP_000" Value="1073742001" />
|
||||
<Define Name="SDLK_THOUSANDSSEPARATOR" Value="1073742002" />
|
||||
<Define Name="SDLK_DECIMALSEPARATOR" Value="1073742003" />
|
||||
<Define Name="SDLK_CURRENCYUNIT" Value="1073742004" />
|
||||
<Define Name="SDLK_CURRENCYSUBUNIT" Value="1073742005" />
|
||||
<Define Name="SDLK_KP_LEFTPAREN" Value="1073742006" />
|
||||
<Define Name="SDLK_KP_RIGHTPAREN" Value="1073742007" />
|
||||
<Define Name="SDLK_KP_LEFTBRACE" Value="1073742008" />
|
||||
<Define Name="SDLK_KP_RIGHTBRACE" Value="1073742009" />
|
||||
<Define Name="SDLK_KP_TAB" Value="1073742010" />
|
||||
<Define Name="SDLK_KP_BACKSPACE" Value="1073742011" />
|
||||
<Define Name="SDLK_KP_A" Value="1073742012" />
|
||||
<Define Name="SDLK_KP_B" Value="1073742013" />
|
||||
<Define Name="SDLK_KP_C" Value="1073742014" />
|
||||
<Define Name="SDLK_KP_D" Value="1073742015" />
|
||||
<Define Name="SDLK_KP_E" Value="1073742016" />
|
||||
<Define Name="SDLK_KP_F" Value="1073742017" />
|
||||
<Define Name="SDLK_KP_XOR" Value="1073742018" />
|
||||
<Define Name="SDLK_KP_POWER" Value="1073742019" />
|
||||
<Define Name="SDLK_KP_PERCENT" Value="1073742020" />
|
||||
<Define Name="SDLK_KP_LESS" Value="1073742021" />
|
||||
<Define Name="SDLK_KP_GREATER" Value="1073742022" />
|
||||
<Define Name="SDLK_KP_AMPERSAND" Value="1073742023" />
|
||||
<Define Name="SDLK_KP_DBLAMPERSAND" Value="1073742024" />
|
||||
<Define Name="SDLK_KP_VERTICALBAR" Value="1073742025" />
|
||||
<Define Name="SDLK_KP_DBLVERTICALBAR" Value="1073742026" />
|
||||
<Define Name="SDLK_KP_COLON" Value="1073742027" />
|
||||
<Define Name="SDLK_KP_HASH" Value="1073742028" />
|
||||
<Define Name="SDLK_KP_SPACE" Value="1073742029" />
|
||||
<Define Name="SDLK_KP_AT" Value="1073742030" />
|
||||
<Define Name="SDLK_KP_EXCLAM" Value="1073742031" />
|
||||
<Define Name="SDLK_KP_MEMSTORE" Value="1073742032" />
|
||||
<Define Name="SDLK_KP_MEMRECALL" Value="1073742033" />
|
||||
<Define Name="SDLK_KP_MEMCLEAR" Value="1073742034" />
|
||||
<Define Name="SDLK_KP_MEMADD" Value="1073742035" />
|
||||
<Define Name="SDLK_KP_MEMSUBTRACT" Value="1073742036" />
|
||||
<Define Name="SDLK_KP_MEMMULTIPLY" Value="1073742037" />
|
||||
<Define Name="SDLK_KP_MEMDIVIDE" Value="1073742038" />
|
||||
<Define Name="SDLK_KP_PLUSMINUS" Value="1073742039" />
|
||||
<Define Name="SDLK_KP_CLEAR" Value="1073742040" />
|
||||
<Define Name="SDLK_KP_CLEARENTRY" Value="1073742041" />
|
||||
<Define Name="SDLK_KP_BINARY" Value="1073742042" />
|
||||
<Define Name="SDLK_KP_OCTAL" Value="1073742043" />
|
||||
<Define Name="SDLK_KP_DECIMAL" Value="1073742044" />
|
||||
<Define Name="SDLK_KP_HEXADECIMAL" Value="1073742045" />
|
||||
<Define Name="SDLK_LCTRL" Value="1073742048" />
|
||||
<Define Name="SDLK_LSHIFT" Value="1073742049" />
|
||||
<Define Name="SDLK_LALT" Value="1073742050" />
|
||||
<Define Name="SDLK_LGUI" Value="1073742051" />
|
||||
<Define Name="SDLK_RCTRL" Value="1073742052" />
|
||||
<Define Name="SDLK_RSHIFT" Value="1073742053" />
|
||||
<Define Name="SDLK_RALT" Value="1073742054" />
|
||||
<Define Name="SDLK_RGUI" Value="1073742055" />
|
||||
<Define Name="SDLK_MODE" Value="1073742081" />
|
||||
<Define Name="SDLK_AUDIONEXT" Value="1073742082" />
|
||||
<Define Name="SDLK_AUDIOPREV" Value="1073742083" />
|
||||
<Define Name="SDLK_AUDIOSTOP" Value="1073742084" />
|
||||
<Define Name="SDLK_AUDIOPLAY" Value="1073742085" />
|
||||
<Define Name="SDLK_AUDIOMUTE" Value="1073742086" />
|
||||
<Define Name="SDLK_MEDIASELECT" Value="1073742087" />
|
||||
<Define Name="SDLK_WWW" Value="1073742088" />
|
||||
<Define Name="SDLK_MAIL" Value="1073742089" />
|
||||
<Define Name="SDLK_CALCULATOR" Value="1073742090" />
|
||||
<Define Name="SDLK_COMPUTER" Value="1073742091" />
|
||||
<Define Name="SDLK_AC_SEARCH" Value="1073742092" />
|
||||
<Define Name="SDLK_AC_HOME" Value="1073742093" />
|
||||
<Define Name="SDLK_AC_BACK" Value="1073742094" />
|
||||
<Define Name="SDLK_AC_FORWARD" Value="1073742095" />
|
||||
<Define Name="SDLK_AC_STOP" Value="1073742096" />
|
||||
<Define Name="SDLK_AC_REFRESH" Value="1073742097" />
|
||||
<Define Name="SDLK_AC_BOOKMARKS" Value="1073742098" />
|
||||
<Define Name="SDLK_BRIGHTNESSDOWN" Value="1073742099" />
|
||||
<Define Name="SDLK_BRIGHTNESSUP" Value="1073742100" />
|
||||
<Define Name="SDLK_DISPLAYSWITCH" Value="1073742101" />
|
||||
<Define Name="SDLK_KBDILLUMTOGGLE" Value="1073742102" />
|
||||
<Define Name="SDLK_KBDILLUMDOWN" Value="1073742103" />
|
||||
<Define Name="SDLK_KBDILLUMUP" Value="1073742104" />
|
||||
<Define Name="SDLK_EJECT" Value="1073742105" />
|
||||
<Define Name="SDLK_SLEEP" Value="1073742106" />
|
||||
<Define Name="KMOD_NONE" Value="0" />
|
||||
<Define Name="KMOD_LSHIFT" Value="1" />
|
||||
<Define Name="KMOD_RSHIFT" Value="2" />
|
||||
<Define Name="KMOD_LCTRL" Value="64" />
|
||||
<Define Name="KMOD_RCTRL" Value="128" />
|
||||
<Define Name="KMOD_LALT" Value="256" />
|
||||
<Define Name="KMOD_RALT" Value="512" />
|
||||
<Define Name="KMOD_LGUI" Value="1024" />
|
||||
<Define Name="KMOD_RGUI" Value="2048" />
|
||||
<Define Name="KMOD_NUM" Value="4096" />
|
||||
<Define Name="KMOD_CAPS" Value="8192" />
|
||||
<Define Name="KMOD_MODE" Value="16384" />
|
||||
<Define Name="KMOD_RESERVED" Value="32768" />
|
||||
<Define Name="KMOD_CTRL" Value="192" />
|
||||
<Define Name="KMOD_SHIFT" Value="3" />
|
||||
<Define Name="KMOD_ALT" Value="768" />
|
||||
<Define Name="KMOD_GUI" Value="3072" />
|
||||
<Define Name="SEEK_SET" Value="0" />
|
||||
<Define Name="SEEK_CUR" Value="1" />
|
||||
<Define Name="SEEK_END" Value="2" />
|
||||
<Define Name="LOGTYPE_NONE" Value="0" />
|
||||
<Define Name="LOGTYPE_VERBOSE" Value="1" />
|
||||
<Define Name="LOGTYPE_DEBUG" Value="2" />
|
||||
<Define Name="LOGTYPE_INFO" Value="3" />
|
||||
<Define Name="LOGTYPE_WARN" Value="4" />
|
||||
<Define Name="LOGTYPE_ERROR" Value="5" />
|
||||
<Define Name="LOGTYPE_CRITICAL" Value="6" />
|
||||
<Define Name="COLOUR_TRANSPARENT" Value="0" />
|
||||
<Define Name="COLOUR_WHITE" Value="4294967295" />
|
||||
<Define Name="COLOUR_BLACK" Value="4278190080" />
|
||||
<Define Name="COLOUR_RED" Value="4294901760" />
|
||||
<Define Name="COLOUR_LIME" Value="4278255360" />
|
||||
<Define Name="COLOUR_BLUE" Value="4278190335" />
|
||||
<Define Name="COLOUR_YELLOW" Value="4294967040" />
|
||||
<Define Name="COLOUR_AQUA" Value="4278255615" />
|
||||
<Define Name="COLOUR_FUCHSIA" Value="4294902015" />
|
||||
<Define Name="COLOUR_SKYBLUE" Value="4284927231" />
|
||||
<Define Name="COLOUR_SILVER" Value="4291019715" />
|
||||
<Define Name="COLOUR_GREEN" Value="4278222592" />
|
||||
<Define Name="COLOUR_ORANGE" Value="4294934272" />
|
||||
<Define Name="INVALID_NETWORK_ID" Value="-1" />
|
||||
<Define Name="INVALID_CLIENT_ID" Value="-1" />
|
||||
<Define Name="CHAT_TYPE_NONE" Value="0" />
|
||||
<Define Name="CHAT_TYPE_CHAT" Value="1" />
|
||||
<Define Name="CHAT_TYPE_INFO" Value="2" />
|
||||
<Define Name="CHAT_TYPE_DEBUG" Value="3" />
|
||||
<Define Name="SERVER_VERSION_MAJOR" Value="0" />
|
||||
<Define Name="SERVER_VERSION_MINOR" Value="0" />
|
||||
<Define Name="SERVER_VERSION_PATCH" Value="1" />
|
||||
<Define Name="GAME_UNKNOWN" Value="0" />
|
||||
<Define Name="GAME_MAFIA_ONE" Value="10" />
|
||||
<Define Name="GAME_MAFIA_TWO" Value="11" />
|
||||
<Define Name="GAME_MAFIA_THREE" Value="12" />
|
||||
<Define Name="GAME_MAFIA_ONE_DE" Value="13" />
|
||||
<Define Name="ELEMENT_ELEMENT" Value="0" />
|
||||
<Define Name="ELEMENT_ENTITY" Value="6" />
|
||||
<Define Name="ELEMENT_PED" Value="14" />
|
||||
<Define Name="ELEMENT_PLAYER" Value="30" />
|
||||
<Define Name="ELEMENT_VEHICLE" Value="38" />
|
||||
</Defines>
|
||||
424
documentation/mafiac/server/Documentation.xml
Normal file
424
documentation/mafiac/server/Documentation.xml
Normal file
@@ -0,0 +1,424 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Documentation>
|
||||
<!--
|
||||
Mask Values
|
||||
|
||||
b - bool
|
||||
i - int32
|
||||
f - float
|
||||
s - string
|
||||
c - function/callback
|
||||
x - class/instance
|
||||
z - vector2D
|
||||
v - vector3D
|
||||
t - thiscall
|
||||
| - optional arguments
|
||||
* - infinite arguments
|
||||
. - any type
|
||||
-->
|
||||
<Namespace Name="global">
|
||||
<Property Name="platform" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="thisResource" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="localClient" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="localPlayer" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Function Name="toColour" Mask="iii|i" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="collectAllGarbage" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="inPoly" Mask="z*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addEvent" Mask="s|i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addEventHandler" Mask="sf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeEventHandler" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="bindEventHandler" Mask="sxf" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="unbindEventHandler" Mask="sx" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="triggerEvent" Mask="s|x*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addCommandHandler" Mask="sc|b" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeCommandHandler" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="hasCommandHandler" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="consoleCommand" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setTimeout" Mask="ci*" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="setInterval" Mask="ci*" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="setImmediate" Mask="c*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clearTimeout" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clearInterval" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clearImmediate" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="bindKey" Mask="iic" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="unbindKey" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="unbindAllKeys" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="findResourceByName" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getResources" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="exportFunction" Mask="c" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="openFile" Mask="s|b" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createFile" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="loadTextFile" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="saveTextFile" Mask="ss" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="addNetworkHandler" Mask="sc" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeNetworkHandler" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="httpGet" Mask="sscc" RequiredArguments="4" Obsolete="false" />
|
||||
<Function Name="message" Mask="s|i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="messageClient" Mask="sx|i" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="messageAllExcept" Mask="sx|i" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="getConsole" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getClients" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getClient" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="destroyElement" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getClientFromPlayerElement" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElementsByType" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElementFromId" Mask="i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElementFromName" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addToWorld" Mask="x" RequiredArguments="1" Obsolete="true" />
|
||||
<Function Name="registerNetObject" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="triggerNetworkEvent" Mask="sx*" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="spawnPlayer" Mask="xsv|f" RequiredArguments="3" Obsolete="false" />
|
||||
<Class Name="Stream">
|
||||
<Property Name="length" ReadOnly="true" Obsolete="false" Type="int64" />
|
||||
<Property Name="position" ReadOnly="true" Obsolete="false" Type="int64" />
|
||||
<Function Name="close" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readBytes" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="readString" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readLine" Mask="t" RequiredArguments="0" Obsolete="true" />
|
||||
<Function Name="writeBytes" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeString" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="readInt8" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt8" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readInt16" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt16" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readInt32" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt32" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readInt64" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readUInt64" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readFloat" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readDouble" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="writeInt8" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt8" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeInt16" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt16" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeInt32" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt32" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeInt64" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeUInt64" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeFloat" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="writeDouble" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="TextReader">
|
||||
<Function Name="close" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="loadText" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readLine" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="readCharacter" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Matrix4x4">
|
||||
<Property Name="m11" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m12" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m13" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m14" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m21" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m22" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m23" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m24" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m31" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m32" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m33" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m34" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m41" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m42" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m43" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="m44" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Function Name="setIdentity" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="setTranslate" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setScale" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotateX" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotateY" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotateZ" Mask="tf" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setRotate" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setMultiply" Mask="txx*" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="multiply" Mask="tx*" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setInverse" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="transformCoordinate" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getElement" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setElement" Mask="tif" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="getVector3" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Vec2">
|
||||
<Property Name="x" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="y" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Function Name="addPolar" Mask="tff" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="interpolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="extrapolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalInterpolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalExtrapolate" Mask="tzf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="cartesianToPolar" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Vec3">
|
||||
<Property Name="x" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="y" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="z" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="length" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="squaredLength" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Function Name="distance" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="squaredDistance" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="dotProduct" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="absDotProduct" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="normalise" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="crossProduct" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="midPoint" Mask="tv" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="addPolar" Mask="tff" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="addSpherical" Mask="tfff" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="interpolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="extrapolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalInterpolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="sphericalExtrapolate" Mask="tvf" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="cartesianToPolar" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="cartesianToSpherical" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Event">
|
||||
<Class Name="CancellableEvent">
|
||||
<Function Name="preventDefault" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="isDefaultPrevented" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
</Class>
|
||||
<Class Name="Timer" />
|
||||
<Class Name="KeyEvent">
|
||||
<Property Name="keyCode" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="scanCode" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="mod" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="repeat" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="down" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Function Name="preventDefault" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="isDefaultPrevented" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="XmlElement">
|
||||
<Property Name="childrenCount" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="children" ReadOnly="true" Obsolete="false" />
|
||||
<Property Name="parent" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="text" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="attributes" ReadOnly="true" Obsolete="false" />
|
||||
<Function Name="clear" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getStringAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getBoolAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getIntegerAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getFloatAttribute" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="XmlDocument">
|
||||
<Property Name="rootElement" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Function Name="load" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Resource">
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="isStarted" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isStarting" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="exports" ReadOnly="true" Obsolete="false" />
|
||||
<Function Name="start" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="stop" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="restart" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getExport" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Client">
|
||||
<Property Name="index" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="game" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="gameVersion" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="player" ReadOnly="false" Obsolete="false" Type="Object" />
|
||||
<Property Name="administrator" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="console" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="ip" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="ping" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Function Name="despawnPlayer" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="disconnect" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setData" Mask="ts.|b" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="removeAllData" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Element">
|
||||
<Property Name="id" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="type" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="netFlags" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="isLocal" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isSyncer" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isOwner" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="syncer" ReadOnly="false" Obsolete="false" Type="Object" />
|
||||
<Property Name="syncerId" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="dimension" ReadOnly="false" Obsolete="false" Type="int" />
|
||||
<Property Name="parent" ReadOnly="false" Obsolete="false" Type="Object" />
|
||||
<Property Name="children" ReadOnly="true" Obsolete="false" />
|
||||
<Property Name="name" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="resource" ReadOnly="false" Obsolete="false" Type="Object" />
|
||||
<Property Name="streamInDistance" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="streamOutDistance" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="position" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Property Name="rotation" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Function Name="isType" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setData" Mask="ts.|b" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="removeData" Mask="ts" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="removeAllData" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="setSyncer" Mask="tx|b" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="isCreatedFor" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="clearExistsFor" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="setExistsFor" Mask="txb" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="existsFor" Mask="tx" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getRotation" Mask="t" RequiredArguments="0" Obsolete="true" />
|
||||
<Function Name="setRotation" Mask="tv" RequiredArguments="1" Obsolete="true" />
|
||||
<Class Name="Entity">
|
||||
<Property Name="model" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="heading" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="modelIndex" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="velocity" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Property Name="turnVelocity" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Property Name="rotationVelocity" ReadOnly="false" Obsolete="false" Type="Vector3D" />
|
||||
<Class Name="Ped">
|
||||
<Property Name="skin" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="vehicle" ReadOnly="true" Obsolete="false" Type="Object" />
|
||||
<Property Name="seat" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="health" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="animationState" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="isEnteringVehicle" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="isExitingVehicle" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Function Name="giveWeapon" Mask="ti|ii" RequiredArguments="1" Obsolete="false" />
|
||||
<Class Name="Player" />
|
||||
</Class>
|
||||
<Class Name="Vehicle">
|
||||
<Property Name="siren" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="engine" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="lights" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="fuel" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="wheelAngle" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="speedLimit" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="engineRPM" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Property Name="engineHealth" ReadOnly="false" Obsolete="false" Type="number" />
|
||||
<Function Name="fix" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getOccupant" Mask="ti" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="getOccupants" Mask="t" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
</Class>
|
||||
</Class>
|
||||
<Class Name="NetObjectFlags">
|
||||
<Property Name="registered" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="deleting" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="onAllDimensions" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="forcedSyncer" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="findSyncer" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="sendSync" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="distanceStreaming" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="alwaysExistForSyncer" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="defaultExistance" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="transient" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
<Property Name="onlySyncIfDetached" ReadOnly="false" Obsolete="false" Type="bool" />
|
||||
</Class>
|
||||
<Namespace Name="reflection">
|
||||
<Function Name="clone" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="move" Mask="xx" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="tostring" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createFunction" Mask="c" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="call" Mask="x" RequiredArguments="1" Obsolete="false" />
|
||||
<Class Name="Function" />
|
||||
</Namespace>
|
||||
<Namespace Name="module">
|
||||
<Namespace Name="hashing">
|
||||
<Function Name="encodeBase64" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="decodeBase64" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="md5" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="sha1" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="sha224" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="sha256" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="sha384" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="sha512" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="ripemd128" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="ripemd160" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="ripemd256" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="ripemd320" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="whirlpool" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Namespace>
|
||||
<Namespace Name="geoip">
|
||||
<Function Name="getCountryName" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getCountryISO" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getContinentName" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getContinentCode" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getCityName" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getPostalCode" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getSubdivisionName" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getSubdivisionISO" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getTimeZoneName" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Namespace>
|
||||
<Namespace Name="mysql">
|
||||
<Function Name="connect" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Class Name="Connection">
|
||||
<Property Name="ping" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Property Name="insertId" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Property Name="affectedRows" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Property Name="warningCount" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Property Name="errorNum" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Property Name="error" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Function Name="query" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="close" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="escapeString" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="selectDatabase" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="changeUser" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="info" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
<Class Name="Result">
|
||||
<Property Name="numRows" ReadOnly="true" Obsolete="false" Type="void" />
|
||||
<Function Name="free" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="fetchAssoc" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="fetchAssoc" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="fetchRow" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Class>
|
||||
</Namespace>
|
||||
</Namespace>
|
||||
<Namespace Name="sdl">
|
||||
<Property Name="platform" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="ticks" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Function Name="getModState" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
</Namespace>
|
||||
<Namespace Name="platform">
|
||||
<Property Name="name" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="modState" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="ticks" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
</Namespace>
|
||||
<Namespace Name="server">
|
||||
<Property Name="game" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="name" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="gameMode" ReadOnly="false" Obsolete="false" Type="string" />
|
||||
<Property Name="port" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="maxClients" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="rcon" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="rconPort" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="listed" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="httpServer" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="httpPort" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="minClientVersion" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="syncInterval" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="syncMethod" ReadOnly="true" Obsolete="false" Type="int" />
|
||||
<Property Name="duplicateNames" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Property Name="streamInDistance" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="streamOutDistance" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="pickupStreamInDistance" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="pickupStreamOutDistance" ReadOnly="true" Obsolete="false" Type="number" />
|
||||
<Property Name="logPath" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Property Name="syncLocalEntities" ReadOnly="true" Obsolete="false" Type="bool" />
|
||||
<Function Name="setRule" Mask="ss" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="getRule" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="banIP" Mask="s|i" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="unbanIP" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="unbanAllIPs" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="isIPBanned" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="shutdown" Mask="" RequiredArguments="0" Obsolete="false" />
|
||||
<Function Name="getCVar" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="setPassword" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
</Namespace>
|
||||
<Namespace Name="mafia">
|
||||
<Property Name="mapName" ReadOnly="true" Obsolete="false" Type="string" />
|
||||
<Function Name="changeMap" Mask="s" RequiredArguments="1" Obsolete="false" />
|
||||
<Function Name="createExplosion" Mask="vff" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="createVehicle" Mask="sv|f" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="createPlayer" Mask="sv|f" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="createPed" Mask="sv|f" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="fadeScreen" Mask="xbf|i" RequiredArguments="3" Obsolete="false" />
|
||||
<Namespace Name="hud">
|
||||
<Function Name="message" Mask="xsi" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="enableMap" Mask="xb" RequiredArguments="2" Obsolete="false" />
|
||||
<Function Name="announce" Mask="xsf" RequiredArguments="3" Obsolete="false" />
|
||||
<Function Name="showCountdown" Mask="xi" RequiredArguments="2" Obsolete="false" />
|
||||
</Namespace>
|
||||
</Namespace>
|
||||
</Namespace>
|
||||
</Documentation>
|
||||
43
documentation/mafiac/server/EventTypes.xml
Normal file
43
documentation/mafiac/server/EventTypes.xml
Normal file
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" ?>
|
||||
<EventTypes>
|
||||
<!--Called when a resource starts-->
|
||||
<EventType Name="OnResourceStart" Hash="1143708828" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when an element is about to stream in-->
|
||||
<EventType Name="OnElementStreamIn" Hash="2759455221" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when a resource stops-->
|
||||
<EventType Name="OnResourceStop" Hash="1347867548" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when the player has joined the game-->
|
||||
<EventType Name="OnPlayerJoined" Hash="3833973824" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a player is attempting to connect-->
|
||||
<EventType Name="OnPlayerConnect" Hash="2611712496" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when a player has connected and is joining-->
|
||||
<EventType Name="OnPlayerJoin" Hash="3624951888" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called every process-->
|
||||
<EventType Name="OnProcess" Hash="3150131130" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a player disconnects-->
|
||||
<EventType Name="OnPlayerQuit" Hash="3017502482" Arguments="2" CanPreventDefault="false" />
|
||||
<!--Called when a player types a command-->
|
||||
<EventType Name="OnPlayerCommand" Hash="1638826555" Arguments="3" CanPreventDefault="true" />
|
||||
<!--Called when a player chats-->
|
||||
<EventType Name="OnPlayerChat" Hash="2515290669" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when the server finished the start sequence-->
|
||||
<EventType Name="OnServerStart" Hash="3318682471" Arguments="0" CanPreventDefault="false" />
|
||||
<!--Called when an element is about to stream out-->
|
||||
<EventType Name="OnElementStreamOut" Hash="3852636898" Arguments="2" CanPreventDefault="true" />
|
||||
<!--Called when an element is about to be destroyed-->
|
||||
<EventType Name="OnElementDestroy" Hash="696839637" Arguments="1" CanPreventDefault="true" />
|
||||
<!--Called when a ped is finished entering a vehicle.-->
|
||||
<EventType Name="OnPedEnteredVehicle" Hash="800199306" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called when a ped has finished exiting a vehicle.-->
|
||||
<EventType Name="OnPedExitedVehicle" Hash="1591215844" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called when a ped is started entering a vehicle.-->
|
||||
<EventType Name="OnPedEnteringVehicle" Hash="3211811326" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called when a ped has started exiting a vehicle.-->
|
||||
<EventType Name="OnPedExitingVehicle" Hash="353075125" Arguments="3" CanPreventDefault="false" />
|
||||
<!--Called when a ped dies.-->
|
||||
<EventType Name="OnPedDeath" Hash="2417618960" Arguments="4" CanPreventDefault="false" />
|
||||
<!--Called when a ped is spawned.-->
|
||||
<EventType Name="OnPedSpawn" Hash="3880839897" Arguments="1" CanPreventDefault="false" />
|
||||
<!--Called when a ped falls.-->
|
||||
<EventType Name="OnPedFall" Hash="2722461453" Arguments="1" CanPreventDefault="false" />
|
||||
</EventTypes>
|
||||
458
locale/arabic.json
Normal file
458
locale/arabic.json
Normal file
@@ -0,0 +1,458 @@
|
||||
{
|
||||
"TranslationProvidedBy": "Kasir",
|
||||
"LocaleEnglishName": "Arabic",
|
||||
|
||||
"LocaleNativeName": "عربى",
|
||||
"LocaleOffer": ".الخادم متاح باللغة الإنجليزية.استخدم {1} لاستخدامه",
|
||||
"LocaleChanged1": "لغتك الآن على {1}",
|
||||
"LocaleChanged2": "سيعرض الخادم الآن الرسائل في {1}",
|
||||
"LocaleChangedNote": "هذا لا يغير الرسائل من اللاعبين الآخرين",
|
||||
"AccentsListHeader": "لهجآت",
|
||||
"HeaderHelpMainList": "فئة الدعم",
|
||||
"AccentNotFound": "اللكنة الحالية غير متوفرة",
|
||||
"AccentSet": "قمت بتعيين لهجتك على {1}",
|
||||
"InvalidAnimation": "هذه الرسوم المتحركة غير متوفرة",
|
||||
"AnimationCommandTip": "استخدم {1} لمشاهدة قائمة الرسوم المتحركة المتاحة",
|
||||
"InvalidAnimationDistance": "يجب المسافة تكون بين 0 و 3",
|
||||
"AnimationStopCommandTip": "استخدم {1} لإيقاف الرسوم المتحركة",
|
||||
"CantBanClient": "لا يمكنك حظر هذا الإعب",
|
||||
"PlayerAccountBanned": "تم حظر حساب {1}",
|
||||
"ClanNotFound": "لم يتم العثور على المجموعة",
|
||||
"ClanNameTaken": "توجد مجموعة بهذا الاسم بالفعل",
|
||||
"PlayerNotFound": "الاعب غير موجود",
|
||||
"ClanCantRemoveRanks": "لا يمكنك إزالة رتب المجموعة",
|
||||
"ClanCantAddRanks": "لأ يمكنك إضافة رتب",
|
||||
"ClanRankNotFound": "رتبة غير موجودهـ",
|
||||
"ClanCantChangeMemberTag": "ليس لديك الصلاحيات لتعديل على علامات رتب الاعضاء",
|
||||
"ClanPlayerNotInSameClan": "الاعب غير موجود بمجموعتك",
|
||||
"ClanCantChangeRankLevel": "ليس لديك صلاحيات لتغيير مستوى رتبة المجموعة",
|
||||
"ClanCantChangeRankTag": "لا يمكنك تغيير علامات رتب المجموعة",
|
||||
"NameNotRegistered": "اسمك غير مسجل! استخدم {1} لإنشاء حساب.",
|
||||
"AutomaticLoginIPToggle": "IP تم تفعيل {1} تسجيل الدخول التلقائي عن طربق",
|
||||
"CouldNotRegisterAccount": "حدثت مشكلة في إنشاء حسابك, يرجى التواصل بـ إلاداره.",
|
||||
"RandomTipsToggle": "النصائح العشوائية{1}",
|
||||
"ActionTipsToggle": "نصائح العمل{1}",
|
||||
"AutoSpawnLastCharToggle": "النشر التلقائي كأخر حرف تم استخدامه هو {1}",
|
||||
"AccountGUISettingToggle": "واجهة المستخدم الرسومية هي الآن {1}",
|
||||
"On": "تشغيل",
|
||||
"Off": "إيقاف",
|
||||
"Yes": "موافق",
|
||||
"No": "لا",
|
||||
"True": "صحيح",
|
||||
"False": "خطأ",
|
||||
"Locked": "مغلق",
|
||||
"Unlocked": "مفتوح",
|
||||
"PasswordNotGoodEnough": "كلمة المرور الجديدة يجب أن تفي بالمتطلبات!",
|
||||
"PasswordNeedsBase": " {1} يجب أن تحتوي كلمات المرور على الأقل",
|
||||
"PasswordNeedsCapitals": "{1}من الأحرف الكبيرة",
|
||||
"PasswordNeedsNumbers": "{1} أرقام",
|
||||
"PasswordNeedsSymbols": "{1} حروف او رموز",
|
||||
"PasswordsDontMatch": "كلمة المرور الجديدة وتأكيد كلمة المرور الجديدة ليسا متطابقين!!",
|
||||
"PasswordChanged": "تم بنجاح تغيير كلمة المرور!",
|
||||
"AutoLoggedInIP": "IP تم تسجيل دخولك تلقائيًا بواسطة!",
|
||||
"WelcomeBack": "مرحبًا بك مرة أخرى في {1} ، {2}! من فضلك {3} للمتابعة.",
|
||||
"WelcomeNewPlayer": "مرحبًا بك في {1} ، {2}! من فضلك {3} للعب.",
|
||||
"InvalidPlayer": "اللاعب غير موجود!",
|
||||
"InvalidBusiness": "لم يتم العثور على الأعمال!",
|
||||
"InvalidHouse": "البيت غير موجود!",
|
||||
"InvalidVehicle": "لم يتم ايجاد السيارة!",
|
||||
"InvalidClan": "لم يتم العثور على المجموعة!",
|
||||
"InvalidClanRank": "رتبة غير موجوده!",
|
||||
"InvalidJob": "لم يتم العثور على الوظيفة!",
|
||||
"InvalidItem": "العنصر غير موجود!",
|
||||
"InvalidItemType": "نوع العنصر غير موجود!",
|
||||
"InvalidRadioStation": "لم يتم العثور على محطة راديو!",
|
||||
"InvalidGate": "البوابة غير موجودة!",
|
||||
"EntersProperty": "يفتح الباب ويدخل {1}",
|
||||
"ExitsProperty": "يفتح الباب ويخرج من {1}",
|
||||
"EnterExitPropertyDoorLocked": "يحاول فتح الباب {1} ولكنه يفشل لأنه مغلق",
|
||||
"PropertyNoInterior": "هذا ليس له جزء داخلي {1}، ولكن لا يزال بإمكانك استخدام الأوامر على أيقونة الباب.",
|
||||
"NoBusinessWithItemType": "لا يوجد عمل مع هذا الخيار متاح",
|
||||
"HeaderKeyBinds": "مفتاح الروابط",
|
||||
"HeaderAccountHelp": "مساعدة الحساب",
|
||||
"HeaderVehicleHelp": "تعليمات السيارة",
|
||||
"HeaderVehicleDealershipHelp": "مساعدة بيع سيارات",
|
||||
"HeaderJobHelp": "تعليمات الوظيفة",
|
||||
"HeaderChatHelp": "تعليمات الدردشة",
|
||||
"HeaderServerRules": "قوانين سيرفر",
|
||||
"HeaderWebsiteInfo": "الموقع الرسمي",
|
||||
"HeaderDiscordInfo": "ديسكورد",
|
||||
"HeaderAnimationsList": "قائمة الرسوم المتحركة",
|
||||
"HeaderPayAndSprayHelp": "الدفع ,ورشٌ المساعده",
|
||||
"HeaderAmmunationHelp": "مساعدة الذخيرة",
|
||||
"HeaderVehicleTuneupHelp": "مساعدة تعديل السيارة",
|
||||
"HeaderBindableKeysHelp": "مفاتيح قابلة للربط",
|
||||
"HeaderSkinHelp": "مساعدة الملابس / الجلد",
|
||||
"HeaderBusinessHelp": "تعليمات الأعمال",
|
||||
"HeaderClanHelp": "تعليمات المجموعة",
|
||||
"HeaderPlayerVehiclesList": "مركبات المشغل ({1})",
|
||||
"HeaderPlayerBusinessesList": "أعمال اللاعب ({1})",
|
||||
"HeaderClansList": "قائمة المجموعة",
|
||||
"HeaderAdminsList": "قائمة الادمن",
|
||||
"HeaderBadgeInfo": "معلومات الشاره",
|
||||
"HeaderAccentsList": "قائمة اللغة",
|
||||
"HeaderPlayerInfo": "معلومات الاعب",
|
||||
"HeaderWealthandTaxHelp": "معلومات المال",
|
||||
"HeaderCommandInfo": "معلومات الإوامر ({1})",
|
||||
"HeaderRadioHelp": "تعليمات راديو",
|
||||
"HeaderRadioStationsList": "محطات الردايو",
|
||||
"HeaderKeyBindsList": "قائمة روابط المفاتيح",
|
||||
"RadioVolumeChanged": "{1} لقد {2} غيرت مستوى صوت البث اللاسلكى إلى٪",
|
||||
"VolumeLevelNotNumber": "يجب أن يكون مستوى الصوت رقمًا",
|
||||
"RadioStationLocationInvalid": "يجب أن تكون في سيارة أو منزل أو عمل أو لديك جهاز شخصي لتغيير المحطة!",
|
||||
"ActionBusinessRadioStationChange": "تغيير محطة راديو الأعمال إلى {1} ({2})",
|
||||
"ActionHouseRadioStationChange": "تغيير محطة راديو المنزل إلى {1} ({2})",
|
||||
"ActionVehicleRadioStationChange": "يغير محطة راديو السيارة إلى {1} ({2})",
|
||||
"ActionItemRadioStationChange": "يغير محطة {1} إلى {2} ({3})",
|
||||
"RandomVehicleCommandsDisabled": "هذه مركبة مرور عشوائية ولا يمكن استخدام الأوامر لها.",
|
||||
"HouseDoorLock": "البيت {1} {2}!",
|
||||
"BusinessDoorLock": "الأعمال {1} {2}!",
|
||||
"ServerGameModeRestarting": "يتم إعادة تشغيل وضع لعبة الخادم!",
|
||||
"HeaderSelfItemList": "المخزون الخاص بك",
|
||||
"HeaderPlayerItemList": "مخزون الاعب ({1})",
|
||||
"HeaderHouseItemList": "بيت الاعب",
|
||||
"HeaderBusinessFloorItemList": "جرد الأعمال (للبيع)",
|
||||
"HeaderBusinessStorageItemList": "جرد الأعمال (التخزين)",
|
||||
"HeaderItemItemList": "مخزون {1}",
|
||||
"ItemSlotNotNumber": "يجب أن تكون خانة العنصر رقمًا",
|
||||
"ItemSlotMustBeBetween": "The item slot must be between {1} and {2}!",
|
||||
"UseItemBugged": "العنصر الذي تحاول استخدامه به التنصت. تم إرسال تقرير خطأ إلى مطوري الخادم.",
|
||||
"PickupItemBugged": "العنصر الذي تحاول استلامه به التنصت. تم إرسال تقرير خطأ إلى مطوري الخادم.",
|
||||
"DropItemBugged": "تم التنصت على العنصر الذي تحاول إسقاطه. تم إرسال تقرير خطأ إلى مطوري الخادم.",
|
||||
"HandsBusy": "يديك مشغولتان",
|
||||
"CantUseItemInSkinChange": "لا يمكنك استخدام عنصر أثناء تخصيص مظهرك",
|
||||
"CantDropItemInSkinChange": "لا يمكنك إسقاط عنصر أثناء تخصيص مظهرك",
|
||||
"CantPickupItemInSkinChange": "لا يمكنك التقاط عنصر أثناء تخصيص مظهرك",
|
||||
"CantSwitchItemInSkinChange": "لا يمكنك تبديل عنصر أثناء تخصيص مظهرك",
|
||||
"CantGiveItemInSkinChange": "لا يمكنك إعطاء عنصر أثناء تخصيص مظهرك",
|
||||
"CantTakeItemInSkinChange": "لا يمكنك أن تأخذ عنصرًا أثناء تخصيص مظهرك",
|
||||
"ItemUnequippableNoAmmo": "لا تحتوي الفتحة {1} الموجودة في الفتحة {2} على ذخيرة ، ولا يمكن تجهيزها!",
|
||||
"NoSpaceSelfInventory": "ليس لديك أي مساحة إضافية في مخزونك",
|
||||
"Business": "الاعمال",
|
||||
"House": "البيت",
|
||||
"Clan": "المجموعة",
|
||||
"Vehicle": "السيارة",
|
||||
"Item": "الاغراض",
|
||||
"ItemType": "نوع العنصر",
|
||||
"Gate": "بوابة",
|
||||
"Door": "باب",
|
||||
"ClanRank": "رتبة المجموعة",
|
||||
"JobRank": "رتبة الوظيفة",
|
||||
"RadioStation": "المحطة الإذاعية",
|
||||
"Months": [
|
||||
"يناير",
|
||||
"فبراير",
|
||||
"مارس",
|
||||
"أبريل",
|
||||
"مايو",
|
||||
"يونيو",
|
||||
"يوليو",
|
||||
"أغسطس",
|
||||
"سبتمبر",
|
||||
"أكتوبر",
|
||||
"نوفمبر",
|
||||
"ديسمبر"
|
||||
],
|
||||
"WeekDays": [
|
||||
"الأحد",
|
||||
"الإثنين",
|
||||
"الثلاثاء",
|
||||
"الاربعاء",
|
||||
"الخميس",
|
||||
"الجمعه",
|
||||
"السبت"
|
||||
],
|
||||
"CardinalDirections": [
|
||||
"شمال",
|
||||
"الشمال الشرقي",
|
||||
"شرق",
|
||||
"الجنوب الشرقي",
|
||||
"جنوب",
|
||||
"جنوب غرب",
|
||||
"غرب",
|
||||
"الشمال الغربي"
|
||||
],
|
||||
"NewPlayerReadyToPlay": [
|
||||
"لقد حصلت على بعض من المال. استخدم {1} للبحث عن أماكن لشراء العناصر.",
|
||||
"إذا كنت بحاجة إلى المال،الوظائف هي النقاط الصفراء على الخريطة.",
|
||||
"للحصول على سيارة ، قم بزيارة وكالة السيارات. يمكنك أيضًا استخدام سيارة مستأجرة بالقرب من السباون أو ركوب القطار",
|
||||
"تأكد من قراءة {1} واستخدم {2} للحصول على معلومات."
|
||||
],
|
||||
"YourCurrentVehicleDeleted": "تم حذف السيارة التي كنت بداخلها.",
|
||||
"Distance": "مسافة",
|
||||
"Meters": "أمتار",
|
||||
"Feet": "قدم",
|
||||
"Kilometers": "كيلومترات",
|
||||
"Miles": "اميال",
|
||||
"MustBeVehicleDriver": "يجب أن تكون سائق السيارة!",
|
||||
"PlayerJoinedServer": "انضم إلى اللعبة من {1}!",
|
||||
"PlayerLeftServer": "غادر {1} اللعبة! ({1})",
|
||||
"DisconnectReasons": [
|
||||
"انقطع الإتصال",
|
||||
"انقطع الاتصال",
|
||||
"عميل غير مدعوم",
|
||||
"تحذير للعبة",
|
||||
"كلمة سر غير صحيحه",
|
||||
"قابل للتنفيذ غير معتمد",
|
||||
"انقطع الاتصال",
|
||||
"حظر",
|
||||
"فشل",
|
||||
"اسم غير صالح",
|
||||
"خطأ"
|
||||
],
|
||||
"TakeItemFromHouse": "يأخذ {1} من المنزل",
|
||||
"TakeItemFromBusinessStorage": "يأخذ {1} من تخزين الشركة",
|
||||
"TakeItemFromBusiness": "يأخذ {1} من الأعمال",
|
||||
"TakeItemFromItem": "يأخذ {1} من {2}",
|
||||
"TakeItemFromVehicleTrunk": "يأخذ {1} من صندوق السيارة",
|
||||
"TakeItemFromVehicleDash": "يأخذ {1} من صندوق القفازات",
|
||||
"JobEquipmentInventoryKeyBindTip": "معدات العمل في مخزونك. اضغط على {1} لمشاهدتها.",
|
||||
"JobEquipmentInventoryCommandTip": "معدات العمل في مخزونك. استخدم {1} لمشاهدتها.",
|
||||
"AccountHelp": [
|
||||
"لا تشارك كلمة مرورك مع أي شخص آخر. لن يطالبك فريق عمل {1} بكلمة المرور مطلقًا",
|
||||
"استخدم {1} لتغيير كلمة المرور الخاصة بك ، و {2} إذا نسيتها",
|
||||
"بعض الإعدادات التي يمكنك استخدامها: {1}"
|
||||
],
|
||||
"VehicleHelp": [
|
||||
"ستوفر مركباتك الشخصية أينما تتركها أنت أو أي شخص آخر!",
|
||||
"قم بزيارة المعرض لشراء مركبات جديدة (استخدم {1} لمزيد من المعلومات)",
|
||||
"Some commands: {1}",
|
||||
"قم بزيارة مرآب ميكانيكي لإصلاح وتلوين وضبط سيارتك! {1} للحصول على معلومات"
|
||||
],
|
||||
"VehicleDealershipHelp": [
|
||||
"قم بزيارة تاجر سيارات لشراء مركبات جديدة. استخدم {1} للعثور على واحد.",
|
||||
"عند التاجر ، أدخل السيارة التي تريد شراءها ، وسيظهر لك السعر",
|
||||
"إذا كنت ترغب في شراء السيارة ، فاستخدم {1} وستحصل على مفاتيح لاختبار قيادتها حول ساحة الانتظار.",
|
||||
"ابتعد عن الوكالة مع السيارة الجديدة لتأكيد الشراء."
|
||||
],
|
||||
"JobHelp": [
|
||||
"قم بزيارة مواقع العمل للحصول على وظيفة وكسب المال. ابحث عن علامات الصفراء على الخريطة",
|
||||
"في موقع العمل ، استخدم {1} للحصول على الوظيفة. استخدم {2} لإنهاء عملك",
|
||||
"استخدم {1} لبدء العمل. يمكنك أيضًا الحصول على وظيفة {2} و {3}",
|
||||
"يتم تأمين معظم مركبات العمل. استخدم {1} بالقرب من واحد للدخول إليه.",
|
||||
"عند دخول مركبة عمل ، ستظهر لك معلومات حول كيفية القيام بالمهمة."
|
||||
],
|
||||
"ChatHelp": [
|
||||
"(IC)والشخصية(OOC)هناك نوعان رئيسيان من الدردشة: خارج الطابع الشخصي",
|
||||
"الخلط بين هذين النوعين ليس لعب الأدوار المناسب. راجع {1} للحصول على معلومات.",
|
||||
"بعض أوامر الدردشة: {1}",
|
||||
"يتوفر لبعضها أسماء أقصر ({1} للتحدث ، {2} للصراخ ، إلخ)"
|
||||
],
|
||||
"ServerRulesHelp": [
|
||||
".غير مسموح بها.انت لست سوبر مان(powergaming)الإجراءات غير الواقعية",
|
||||
"لا يسمح بأدوار إرهابية",
|
||||
"اتبع دائمًا التعليمات التي قدمها المشرفون والاداره",
|
||||
"لا تخلط الدردشات (metagaming). لا يمكنك استخدام المعلومات في IC التي تم استلامها OOC",
|
||||
"حافظ على اللغة الإنجليزية في الدردشات الرئيسية. إذا لم تكن جيدًا في اللغة الإنجليزية ، فاستخدم {1}"
|
||||
],
|
||||
"AnimationHelp": [
|
||||
"تتيح لك الرسوم المتحركة تحسين لعب الأدوار من خلال الإجراءات المرئية",
|
||||
"استخدم {1} أو {2} مع اسم لاستخدام الرسم المتحرك.",
|
||||
"لمشاهدة قائمة الرسوم المتحركة ، استخدم {1}"
|
||||
],
|
||||
"WeaponHelp": [
|
||||
"قم بزيارة متجر أسلحة لشراء أسلحة. استخدم {1} للعثور على واحد.",
|
||||
"شراء سلاح يتطلب رخصة سلاح.",
|
||||
"يتم إدارة تراخيص الأسلحة من قبل قسم الشرطة. قدم طلبًا للحصول على واحدة ",
|
||||
"يمكن أيضًا شراء الأسلحة بشكل غير قانوني من بعض الشركات وتجار الأسلحة والعصابات."
|
||||
],
|
||||
"SkinHelp": [
|
||||
"في متجر الملابس ، استخدم {1} لشراء الملابس",
|
||||
"عندما يكون لديك عنصر من الملابس ، قم بتجهيزه واستخدامه مثل أي عنصر آخر لإظهار اختيار الجلد (حدد {1} لمعرفة كيفية استخدام العناصر)",
|
||||
"Some skins are restricted to jobs, clans, or for other reasons."
|
||||
],
|
||||
"KeyBindHelp": [
|
||||
"يمكنك تعيين روابط المفاتيح الخاصة بك. استخدم {1} لرؤية المفاتيح التي تم ربطها.",
|
||||
"استخدم {1} لإضافة رابط مفتاح جديد و {2} لإزالة واحد.",
|
||||
"المفاتيح الافتراضية هي: {1} لمحرك السيارة و {2} للأضواء و {3} للقفل / فتح القفل",
|
||||
"اضغط على {1} لمشاهدة عناصرك و {2} لتجهيز عنصر أو {3} لإلغاء تجهيز الكل.",
|
||||
"اضغط على {1} لاستخدام العنصر الذي تمسكه ، أو اضغط على {2} لإسقاطه ، أو اضغط على {3} لالتقاط عنصر من الأرض."
|
||||
],
|
||||
"BusinessHelp": [
|
||||
"استخدم {1} لشراء العناصر أو {2} لمشاهدة قائمة بما هو معروض للبيع في أي شركة",
|
||||
"تظهر الشركات بأسماء زرقاء فوق الرمز عند مدخلها.",
|
||||
"أوامر صاحب العمل: {1}",
|
||||
"ستظهر سيارة جديدة معروضة للبيع عندما تبتعد عن الوكيل."
|
||||
],
|
||||
"ClanHelp": [
|
||||
"اطلب من الإدارة إنشاء تيم(القبيلة) (على غرار الفصائل / المجموعات / العائلات)",
|
||||
"يتمتع مالكو التيم(القبيلة) بالسيطرة الكاملة على افراد المجموعة بمجرد إنشائها",
|
||||
"أوامر القبيلة: {1}",
|
||||
"أوامر القبيلة: {1}"
|
||||
],
|
||||
"RadioStationHelp": [
|
||||
"استخدم {1} لتعيين المحطة لمركبتك أو منزلك أو عملك",
|
||||
"استخدم {2} لمشاهدة قائمة المحطات",
|
||||
"يمكنك تغيير حجم تدفق الراديو باستخدام {1} مع 0-100 كنسبة مئوية"
|
||||
],
|
||||
"WealthAndTaxHelp": [
|
||||
"ضرائبك في يوم الدفع هي {1} بالمائة من ثروتك المحسوبة.",
|
||||
"ثروتك المحسوبة هي مجموع إجمالي يعتمد على عدد المركبات والمنازل والشركات التي لديك.",
|
||||
"كل سيارة {1} ، كل منزل {2} ، وكل عمل {3}",
|
||||
"استخدم {1} لمعرفة ثروتك الحالية ، و {2} لمعرفة المبلغ الذي ستدفعه كضريبة في كل يوم دفع"
|
||||
],
|
||||
"MustBeInAVehicle": "يجب أن تكون في مركبة!",
|
||||
"MustBeInOrNearVehicle": "أنت بحاجة إلى أن تكون في السيارة أو بالقرب منها!",
|
||||
"MustBeInVehicleFrontSeat": "يجب أن تكون في المقاعد الأمامية للسيارة!",
|
||||
"MustBeInVehicleDriverSeat": "يجب أن تكون السائق!",
|
||||
"DontHaveVehicleKey": "ليس لديك مفتاح لهذه السيارة!",
|
||||
"NoGateAccess": "لا يمكنك الوصول إلى هذه البوابة!",
|
||||
"GateBroken": "هذه البوابة مكسورة!",
|
||||
"GateHacked": "البوابة لا تستجيب!",
|
||||
"RadioJammed": "تسمع صوتًا ثابتًا فقط من الراديو.",
|
||||
"VehicleNotForSale": "هذه السيارة ليست للبيع!",
|
||||
"VehicleNotForRent": "هذه السيارة ليست للإيجار!",
|
||||
"BusinessNotForSale": "هذا العمل ليس للبيع!",
|
||||
"BusinessNotForRent": "هذا العمل ليس للإيجار!",
|
||||
"HouseNotForSale": "هذا المنزل ليس للبيع!",
|
||||
"HouseNotForRent": "هذا المنزل ليس للإيجار!",
|
||||
"DealershipPurchaseTestDrive": "قم بقيادة السيارة بعيدًا عن الوكالة لشرائها ، أو اخرج للإلغاء.",
|
||||
"DealershipPurchaseExitedVehicle": "لقد ألغيت شراء السيارة بالخروج من السيارة!",
|
||||
"VehiclePurchaseComplete": "هذه السيارة الآن لك!",
|
||||
"VehiclePurchaseNotEnoughMoney": "ليس لديك ما يكفي من المال لشراء هذه السيارة!",
|
||||
"HousePurchaseNotEnoughMoney": "ليس لديك ما يكفي من المال لشراء هذا المنزل!",
|
||||
"BusinessPurchaseNotEnoughMoney": "ليس لديك ما يكفي من المال لشراء هذا العمل!",
|
||||
"Locales": {
|
||||
"English": "انجلزي",
|
||||
"Russian": "روسي",
|
||||
"Spanish": "الإسبانية",
|
||||
"German": "الإلمانية",
|
||||
"Dutch": "الهولندية",
|
||||
"Polish": "البولندية"
|
||||
},
|
||||
|
||||
"ADDED-21JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
|
||||
"HeaderPlayerHousesList": "بيوت اللاعبين ({1})",
|
||||
"HeaderPlayerStaffFlagsList": "أعلام طاقم العمل ({1})",
|
||||
"HeaderStaffFlagsList": "أعلام الموظفين",
|
||||
"NonRPName": "اسم غير RP! اختر واحدة جديدة:",
|
||||
"InvalidStaffFlag": "لم يتم العثور على علم الموظفين!",
|
||||
"InvalidClanFlag": "علم القبيلة غير موجود!",
|
||||
"InvalidLocale": "اللغة غير موجودة!",
|
||||
"HeaderJobUniformList": "زي العمل ({1})",
|
||||
"HeaderJobEquipmentList": "معدات العمل ({1})",
|
||||
"InvalidJobUniform": "زي العمل غير موجود!",
|
||||
"InvalidJobEquipment": "لم يتم العثور على معدات العمل!",
|
||||
"HeaderVehiclesInRangeList": "مركبات داخل {1}",
|
||||
"NoVehiclesWithInRange": "لا توجد مركبات داخل {1}",
|
||||
"AmountNotNumber": "المبلغ يجب أن يكون رقما!",
|
||||
"NeedToBeWorking": "يجب أن تعمل! استخدم {1} في موقع العمل أو بالقرب من سيارات العمل.",
|
||||
"NeedToBeOnJobRoute": "عليك أن تفعل طريق عمل! استخدم {1} في مركبة عمل",
|
||||
"CurrentJobRouteDeleted": "تم حذف مسار العمل الذي كنت تعمل فيه بواسطة الإدمن",
|
||||
"CurrentJobRouteVehicleColoursChanged": "تم تغيير ألوان السيارة لمسار وظيفتك بواسطة الإدمن",
|
||||
"NotYourJob": "هذه ليست وظيفتك!",
|
||||
"JobPoints": "يمكنك الحصول على وظيفة من خلال الذهاب إلى النقاط الصفراء على الخريطة.",
|
||||
"QuitJobToTakeAnother": "إذا كنت تريد هذه الوظيفة ، فاستخدم {1} لإنهاء وظيفتك الحالية.",
|
||||
"NotAJobVehicle": "هذه ليست وسيلة عمل!",
|
||||
"NotYourJobVehicle": "هذه ليست مركبة عملك!",
|
||||
"JobRouteDisabled": "تم تعطيل مسار العمل الذي كنت تسلكه بواسطة أحد الإداريين",
|
||||
"HeaderPickupTypes": "أنواع الالتقاط",
|
||||
"HeaderBlipTypes": "أنواع أيقونات الخريطة",
|
||||
"InvalidGPSLocation": "لا توجد مواقع بهذا الاسم أو النوع",
|
||||
"HeaderBusinessList": "الأعمال",
|
||||
"VehicleForSale": "يمكن شراء {1} مقابل {2}! استخدم {3} إذا كنت ترغب في شرائه",
|
||||
"VehicleForRent": "هذا {1} قابل للتأجير لـ {2}! استخدم {3} إذا كنت تريد استئجاره",
|
||||
|
||||
"ADDED-31JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
|
||||
"LoginFailedInvalidPassword": "رمز مرور خاطئ! عدد المحاولات المتبقية: {1}",
|
||||
"LoginFailedNoPassword": "يجب عليك إدخال كلمة المرور! ! عدد المحاولات المتبقية: {1}",
|
||||
"RegistrationFailedNoPassword": "يجب عليك إدخال كلمة المرور!",
|
||||
"RegistrationFailedNoPasswordConfirm": "يجب عليك تأكيد كلمة المرور!",
|
||||
"RegistrationFailedNoEmail": "يجب إدخال البريد الإلكتروني!",
|
||||
"AccountNameAlreadyRegistered": "تم تسجيل اسمك بالفعل!",
|
||||
"AlreadyLoggedIn": "انت بالفعل بداخل!",
|
||||
"RegistrationFailedInvalidEmail": "هذا البريد الإلكتروني غير صالح!",
|
||||
"RegistrationFailedPasswordMismatch": "كلمات المرور غير متطابقة!",
|
||||
"RegistrationFailedCreateError": "تعذر إنشاء حسابك!",
|
||||
"RegistrationSuccess": "لقد تم إنشاء حسابك!",
|
||||
"RegistrationEmailVerifyReminder": "لا تنس التحقق من بريدك الإلكتروني! تم إرسال رمز التحقق لك.",
|
||||
"RegistrationCreateCharReminder": "للعب على الخادم ، ستحتاج إلى تكوين شخصية.",
|
||||
"NoCharactersGUIMessage": "ليس لديك أحرف. هل ترغب في صنع واحدة؟",
|
||||
"NoCharactersGUIWindowTitle": "لا أحرف",
|
||||
"NoCharactersChatMessage": "ليس لديك أحرف. استخدم {1} لإنشاء واحدة.",
|
||||
"NeedEmailFor2FA": "تحتاج إلى إضافة بريدك الإلكتروني إلى حسابك لاستخدام المصادقة ذات العاملين.",
|
||||
"NeedEmailVerifiedFor2FA": "تحتاج إلى التحقق من بريدك الإلكتروني لاستخدام المصادقة ذات العاملين.",
|
||||
"SetEmailHelpTip": "استخدم {1} لتعيين بريدك الإلكتروني.",
|
||||
"VerifyEmailHelpTip": "استخدم {1} للتحقق من بريدك الإلكتروني.",
|
||||
|
||||
"ADDED-13FEB2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
|
||||
"NearbyRadio": "راديو قريب",
|
||||
"FromRadio": "من الراديو",
|
||||
"ToRadio": "في الراديو",
|
||||
"NeedToEnterPropertyCommand": "تحتاج إلى إدخال {1} أولاً! استخدم {2} للدخول والخروج",
|
||||
"NeedToEnterPropertyKeyPress": "تحتاج إلى إدخال {1} أولاً! اضغط على {2} للدخول والخروج",
|
||||
"InventoryFullCantCarry": "ليس لديك أي مساحة لحمل هذا (جرد كامل)!",
|
||||
"NotEnoughCashNeedAmountMore": "ليس لديك ما يكفي من المال! أنت بحاجة إلى {1} أكثر!",
|
||||
"AmountMustBeMoreThan": "يجب أن يكون المبلغ أكثر من {1}!",
|
||||
"WeaponBanned": "لا يسمح لك بشراء أو استخدام الأسلحة!",
|
||||
"TimeNotNumber": "يجب أن يكون الوقت رقمًا",
|
||||
"HeaderDefaultBusinessItemTypes": "قوالب عناصر الأعمال",
|
||||
"FixingStuck": "إصلاح موقعك والعالم الافتراضي ...",
|
||||
"CantUseCommandYet": "يجب أن تنتظر قبل أن تتمكن من استخدام هذا الأمر مرة أخرى!",
|
||||
"NotATester": "أنت لست مختبرا!",
|
||||
"AccessDenied": "تم الرفض",
|
||||
"InvalidSkin": "هذا الجلد غير صالح!",
|
||||
"HeaderInteriorTypes": "قائمة التصميمات الداخلية",
|
||||
"ViewInventoryKeyPressTip": "اضغط على {1} لرؤية العناصر الخاصة بك",
|
||||
"ViewInventoryCommandTip": "استخدم {1} لمشاهدة عناصرك",
|
||||
"GUIAccountSettingToggle": "لقد قمت بتحويل {1} GUI",
|
||||
|
||||
"ADDED-23MAR2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations",
|
||||
"CarCommandHelp": "You can buy a car by visiting a vehicle dealership. Use {1} for more information.",
|
||||
"SkinCommandHelp": "You can change your skin by visiting a clothes store. Use {1} for more info.",
|
||||
"BusinessVehiclesRespawned": "All business vehicles have been respawned by an admin!",
|
||||
"JobVehiclesRespawned": "All job vehicles have been respawned by an admin!",
|
||||
"PlayerVehiclesRespawned": "All player vehicles have been respawned by an admin!",
|
||||
"ClanVehiclesRespawned": "All clan vehicles have been respawned by an admin!",
|
||||
"PublicVehiclesRespawned": "All public have been respawned by an admin!",
|
||||
"EmptyVehiclesRespawned": "All empty vehicles have been respawned by an admin!",
|
||||
"AllVehiclesRespawned": "All vehicles have been respawned by an admin!",
|
||||
"AllVehiclesReloaded": "All vehicles have been reloaded by an admin!",
|
||||
"YourVehicleRespawned": "Your vehicle has been respawned",
|
||||
"PlayerIPBanned": "{1} has been IP banned!",
|
||||
"PlayerCharacterBanned": "{1} has been character banned!",
|
||||
"PlayerSubNetBanned": "{1} has been subnet banned!",
|
||||
"CantModifyBusiness": "You can't manage or modify this business",
|
||||
"CantModifyHouse": "You can't manage or modify this house",
|
||||
"ServerTimeSet": "{1} set the time to {2}",
|
||||
"ServerWeatherSet": "{1} set the weather to {2}",
|
||||
"ServerSnowSet": "{1} turned falling snow {2} and ground snow {3}",
|
||||
"AllJobsReloaded": "All server jobs have been reloaded by an admin",
|
||||
"ServerLogoSet": "{1} turned the server logo image {2}",
|
||||
"ServerGUISet": "{1} turned GUI for this server {2}",
|
||||
"ServerBusinessBlipsSet": "{1} turned all business blips {2}",
|
||||
"ServerHouseBlipsSet": "{1} turned all house blips {2}",
|
||||
"ServerJobBlipsSet": "{1} turned all job blips {2}",
|
||||
"ServerBusinessPickupsSet": "{1} turned all business pickups {2}",
|
||||
"ServerHousePickupsSet": "{1} turned all house pickups {2}",
|
||||
"ServerJobPickupsSet": "{1} turned on all job pickups {2}",
|
||||
"BusinessBuyItemsLabel": "Use {1} to purchase items",
|
||||
"PropertyEnterCommandLabel": "Use {1} to enter",
|
||||
"PropertyEnterKeyPressLabel": "Press {1} to enter",
|
||||
"PropertyForSaleLabel": "For sale: ${1}",
|
||||
"PropertyForRentLabel": "For rent: ${1} every payday",
|
||||
"RemainingTaxPaidInMoney": "You covered the remaining taxes with ${1} in cash.",
|
||||
"LostMoneyFromTaxes": "You lost money since your taxes are more than your paycheck!",
|
||||
"NextPaycheckRepossessionWarning": "If you don't have enough cash to cover taxes on next paycheck, you will lose stuff!",
|
||||
"NotEnoughMoneyForTax": "You don't have enough money to cover your taxes!",
|
||||
"AssetsRepossessedForTax": "You lost {1} vehicles, {2} houses, and {3} businesses because you couldn't pay taxes!",
|
||||
"Closed": "Closed",
|
||||
"Open": "Open",
|
||||
"VehicleDealershipLabel": "Enter a vehicle as driver to buy it",
|
||||
"TakeJobLabel": "Use {1} to work here",
|
||||
"StartWorkLabel": "Use {1} to start working",
|
||||
"JobEquipAndUniformLabel": "Use {1} and {2} for job stuff, or {3} to stop working",
|
||||
"NotYourJobLabel": "You already have a different job. Use {1} if you want this one",
|
||||
"JobLabel": "{1} Job",
|
||||
"PaydayBonusSet": "{1} set the payday bonus to ${2}",
|
||||
"AllHousesReloaded": "All houses have been reloaded by an admin",
|
||||
"AllRadioStationsReloaded": "All radio stations have been reloaded by an admin!",
|
||||
"PlayerKicked": "{1} has been kicked from the server",
|
||||
"AllBusinessesReloaded": "All businesses have been reloaded by an admin!",
|
||||
"UnableToDoThat": "You aren't able to do that",
|
||||
"SetVehicleClanConfirmMessage": "Are you sure you want to give this vehicle to your clan?",
|
||||
"SetVehicleClanConfirmTitle": "Warning!",
|
||||
"SetItemPriceBelowOrderPriceMessage": "Are you sure you want to set the item price below it's order price? You will lose ${1} every purchase!",
|
||||
"SetItemPriceBelowOrderPriceTitle": "Warning!",
|
||||
"MustOwnVehicle": "You don't own this vehicle!"
|
||||
}
|
||||
@@ -1,397 +1,458 @@
|
||||
{
|
||||
"TranslationProvidedBy": "Renzuka Ctone",
|
||||
"LocaleEnglishName": "Chinese",
|
||||
"LocaleNativeName": "Chinese",
|
||||
"LocaleOffer": "This server is available in English. Use {1} to use it.",
|
||||
"LocaleChanged1": "Your language is now set to {1}",
|
||||
"LocaleChanged2": "The server will now display messages in {1}",
|
||||
"LocaleChangedNote": "This does not change messages from other players",
|
||||
"AccentsListHeader": "Accents",
|
||||
"HeaderHelpMainList": "Help Categories",
|
||||
"AccentNotFound": "Accent not found",
|
||||
"AccentSet": "You set your accent to {1}",
|
||||
"AnimationNotFound": "That animation doesn't exist",
|
||||
"AnimationCommandTip": "Use {1} to see a list of valid animations",
|
||||
"AnimationInvalidDistance": "The distance must be between 0 and 3",
|
||||
"AnimationStopCommandTip": "Use {1} to stop your animation",
|
||||
"CantBanClient": "You cannot ban this person",
|
||||
"PlayerAccountBanned": "{1} has been account banned",
|
||||
"ClanNotFound": "Clan not found",
|
||||
"ClanNameTaken": "A clan with that name already exists",
|
||||
"PlayerNotFound": "Player not found",
|
||||
"ClanCantRemoveRanks": "You can't remove clan ranks",
|
||||
"ClanCantAddRanks": "You can't add clan ranks",
|
||||
"ClanRankNotFound": "Clan rank not found",
|
||||
"ClanCantChangeMemberTag": "You can not change clan member's tags",
|
||||
"ClanPlayerNotInSameClan": "That player is not in your clan",
|
||||
"ClanCantChangeRankLevel": "You can not change clan rank's level",
|
||||
"ClanCantChangeRankTag": "You can not change clan rank's tags",
|
||||
"NameNotRegistered": "Your name is not registered! Use {1} to make an account.",
|
||||
"AutomaticLoginIPToggle": "Automatic login by IP is now {1}",
|
||||
"CouldNotRegisterAccount": "There was a problem creating your account. Please contact an admin.",
|
||||
"RandomTipsToggle": "Random tips are now {1}",
|
||||
"ActionTipsToggle": "Action tips are now {1}",
|
||||
"AutoSpawnLastCharToggle": "Automatic spawn as last used character is {1}",
|
||||
"AccountGUISettingToggle": "GUI is now {1}",
|
||||
"On": "On",
|
||||
"Off": "Off",
|
||||
"Yes": "Yes",
|
||||
"No": "No",
|
||||
"True": "True",
|
||||
"False": "False",
|
||||
"Locked": "Locked",
|
||||
"Unlocked": "Unlocked",
|
||||
"PasswordNotGoodEnough": "The new password must meet the requirements!",
|
||||
"PasswordNeedsBase": "Passwords must have at least {1}",
|
||||
"PasswordNeedsCapitals": "{1} capital letters",
|
||||
"PasswordNeedsNumbers": "{1} numbers",
|
||||
"PasswordNeedsSymbols": "{1} symbols",
|
||||
"PasswordsDontMatch": "The new password and confirm new password aren't the same!",
|
||||
"PasswordChanged": "Your password has been changed!",
|
||||
"AutoLoggedInIP": "You have been automatically logged in by IP!",
|
||||
"WelcomeBack": "Welcome back to {1}, {2}! Please {3} to continue.",
|
||||
"WelcomeNewPlayer": "Welcome to {1}, {2}! Please {3} to play.",
|
||||
"InvalidPlayer": "Player not found!",
|
||||
"InvalidBusiness": "Business not found!",
|
||||
"InvalidHouse": "House not found!",
|
||||
"InvalidVehicle": "Vehicle not found!",
|
||||
"InvalidClan": "Clan not found!",
|
||||
"InvalidClanRank": "Clan rank not found!",
|
||||
"InvalidJob": "Job not found!",
|
||||
"InvalidItem": "Item not found!",
|
||||
"InvalidItemType": "Item type not found!",
|
||||
"InvalidRadioStation": "Radio station not found!",
|
||||
"InvalidGate": "Gate not found!",
|
||||
"EntersProperty": "opens the door and enters the {1}",
|
||||
"ExitsProperty": "opens the door and exits the {1}",
|
||||
"EnterExitPropertyDoorLocked": "tries to open the {1} door but fails because it's locked",
|
||||
"PropertyNoInterior": "This {1} does not have an interior, but you can still use commands at the door icon.",
|
||||
"NoBusinessWithItemType": "There is no business with that item available",
|
||||
"HeaderKeyBinds": "Key Binds",
|
||||
"HeaderAccountHelp": "Account Help",
|
||||
"HeaderVehicleHelp": "Vehicle Help",
|
||||
"HeaderVehicleDealershipHelp": "Vehicle Dealership Help",
|
||||
"HeaderJobHelp": "Job Help",
|
||||
"HeaderChatHelp": "Chat Help",
|
||||
"HeaderServerRules": "Server Rules",
|
||||
"HeaderWebsiteInfo": "Website",
|
||||
"TranslationProvidedBy": "Renzuka_Ctone",
|
||||
"LocaleEnglishName": "Simplified Chinese",
|
||||
"LocaleNativeName": "简体中文",
|
||||
"LocaleOffer": "本服务器有可用的中文翻译版本,使用 {1} 以启用。",
|
||||
"LocaleChanged1": "语言已设定为 {1}",
|
||||
"LocaleChanged2": "服务器现在将以 {1} 显示消息。",
|
||||
"LocaleChangedNote": "这将不会影响到来自其他玩家的消息",
|
||||
"AccentsListHeader": "口音",
|
||||
"HeaderHelpMainList": "帮助类别",
|
||||
"AccentNotFound": "口音不存在",
|
||||
"AccentSet": " 口音已设置为 {1}",
|
||||
"InvalidAnimation": "该动作不存在",
|
||||
"AnimationCommandTip": "使用 {1} 以查看可用动作列表",
|
||||
"InvalidAnimationDistance": "范围必须在 0 到 3 之间",
|
||||
"AnimationStopCommandTip": "使用 {1} 以停止当前动作",
|
||||
"CantBanClient": "你无法封禁该玩家",
|
||||
"PlayerAccountBanned": "{1} 的账号已被封禁",
|
||||
"ClanNotFound": "帮派不存在",
|
||||
"ClanNameTaken": "该帮派名称已被占用",
|
||||
"PlayerNotFound": "玩家不存在",
|
||||
"ClanCantRemoveRanks": "无法清除帮派等级",
|
||||
"ClanCantAddRanks": "无法增加帮派等级",
|
||||
"ClanRankNotFound": "帮派等级不存在",
|
||||
"ClanCantChangeMemberTag": "你无法更改帮派成员的标签",
|
||||
"ClanPlayerNotInSameClan": "该玩家并不属于你的帮派",
|
||||
"ClanCantChangeRankLevel": "你无法改变帮派等级",
|
||||
"ClanCantChangeRankTag": "你无法改变帮派标签",
|
||||
"NameNotRegistered": "你的游戏名尚未注册!使用 {1} 以创建一个新账户。",
|
||||
"AutomaticLoginIPToggle": "通过 IP 自动登录功能 现已 {1}",
|
||||
"CouldNotRegisterAccount": "在创建你的账户时遇到一些问题,请与管理员联系。",
|
||||
"RandomTipsToggle": "随机提示信息现已 {1}",
|
||||
"ActionTipsToggle": "操作帮助现已 {1}",
|
||||
"AutoSpawnLastCharToggle": "上次使用的角色 {1} 已自动复活。",
|
||||
"AccountGUISettingToggle": "GUI 现已 {1}",
|
||||
"On": "开启",
|
||||
"Off": "关闭",
|
||||
"Yes": "是",
|
||||
"No": "否",
|
||||
"True": "真",
|
||||
"False": "假",
|
||||
"Locked": "锁定",
|
||||
"Unlocked": "未锁定",
|
||||
"PasswordNotGoodEnough": "新密码必须符合要求!",
|
||||
"PasswordNeedsBase": "密码至少需要 {1}",
|
||||
"PasswordNeedsCapitals": "{1} 大写字母",
|
||||
"PasswordNeedsNumbers": "{1} 数字",
|
||||
"PasswordNeedsSymbols": "{1} 符号",
|
||||
"PasswordsDontMatch": "新密码和确认密码不一致!",
|
||||
"PasswordChanged": "已成功更改你的密码!",
|
||||
"AutoLoggedInIP": "已通过 IP 自动登录!",
|
||||
"WelcomeBack": "欢迎回到 {1}, {2}! 请 {3} 以继续。",
|
||||
"WelcomeNewPlayer": "欢迎来到 {1}, {2}! 请 {3} 以开始游戏。",
|
||||
"InvalidPlayer": "玩家不存在!",
|
||||
"InvalidBusiness": "企业不存在!",
|
||||
"InvalidHouse": "住宅不存在!",
|
||||
"InvalidVehicle": "载具不存在!",
|
||||
"InvalidClan": "帮派不存在!",
|
||||
"InvalidClanRank": "帮派等级不存在!",
|
||||
"InvalidJob": "职业不存在",
|
||||
"InvalidItem": "物品不存在!",
|
||||
"InvalidItemType": "物品种类不存在!",
|
||||
"InvalidRadioStation": "电台不存在!",
|
||||
"InvalidGate": "大门不存在!",
|
||||
"EntersProperty": "开门并进入 {1}",
|
||||
"ExitsProperty": "开门并退出 {1}",
|
||||
"EnterExitPropertyDoorLocked": "试图打开 {1} 之门,却发现已上锁。",
|
||||
"PropertyNoInterior": "{1} 暂无内部场景,但你仍可以在大门图标上使用相关指令。",
|
||||
"NoBusinessWithItemType": "暂无可用项目的企业",
|
||||
"HeaderKeyBinds": "快捷键设置",
|
||||
"HeaderAccountHelp": "账户帮助",
|
||||
"HeaderVehicleHelp": "载具帮助",
|
||||
"HeaderVehicleDealershipHelp": "汽车经销商帮助 ",
|
||||
"HeaderJobHelp": "职业帮助",
|
||||
"HeaderChatHelp": "聊天帮助",
|
||||
"HeaderServerRules": "服务器规则",
|
||||
"HeaderWebsiteInfo": "官网",
|
||||
"HeaderDiscordInfo": "Discord",
|
||||
"HeaderAnimationsList": "Animation List",
|
||||
"HeaderPayAndSprayHelp": "Pay and Spray Help",
|
||||
"HeaderAmmunationHelp": "Ammunation Help",
|
||||
"HeaderVehicleTuneupHelp": "Vehicle Tune Help",
|
||||
"HeaderBindableKeysHelp": "Bindable Keys",
|
||||
"HeaderSkinHelp": "Clothes/Skin Help",
|
||||
"HeaderBusinessHelp": "Business Help",
|
||||
"HeaderClanHelp": "Clan Help",
|
||||
"HeaderPlayerVehiclesList": "Player Vehicles ({1})",
|
||||
"HeaderPlayerBusinessesList": "Player Businesses ({1})",
|
||||
"HeaderClansList": "Clan List",
|
||||
"HeaderAdminsList": "Admin List",
|
||||
"HeaderBadgeInfo": "Badge Information",
|
||||
"HeaderAccentsList": "Accent List",
|
||||
"HeaderPlayerInfo": "Player Information ({1})",
|
||||
"HeaderWealthandTaxHelp": "Wealth and Tax Information",
|
||||
"HeaderCommandInfo": "Command Information ({1})",
|
||||
"HeaderRadioHelp": "Radio Help",
|
||||
"HeaderRadioStationsList": "Radio Stations",
|
||||
"HeaderKeyBindsList": "Key Binds List",
|
||||
"RadioVolumeChanged": "{1} You changed your streaming radio volume to {2}%",
|
||||
"VolumeLevelNotNumber": "The volume level must be a number",
|
||||
"RadioStationLocationInvalid": "You must be in a vehicle, house, or business or have a personal device to change the station!",
|
||||
"ActionBusinessRadioStationChange": "changes the business radio station to {1} ({2})",
|
||||
"ActionHouseRadioStationChange": "changes the house radio station to {1} ({2})",
|
||||
"ActionVehicleRadioStationChange": "changes the vehicle radio station to {1} ({2})",
|
||||
"ActionItemRadioStationChange": "changes the {1}'s station to {2} ({3})",
|
||||
"RandomVehicleCommandsDisabled": "This is a random traffic vehicle and commands can't be used for it.",
|
||||
"HouseDoorLock": "House {1} {2}!",
|
||||
"BusinessDoorLock": "Business {1} {2}!",
|
||||
"ServerGameModeRestarting": "The server game mode is restarting!",
|
||||
"HeaderSelfItemList": "Your Inventory",
|
||||
"HeaderPlayerItemList": "Player Inventory ({1})",
|
||||
"HeaderHouseItemList": "House Inventory",
|
||||
"HeaderBusinessFloorItemList": "Business Inventory (For Sale)",
|
||||
"HeaderBusinessStorageItemList": "Business Inventory (Storage)",
|
||||
"HeaderItemItemList": "{1}'s Inventory",
|
||||
"ItemSlotNotNumber": "The item slot must be a number",
|
||||
"ItemSlotMustBeBetween": "The item slot must be between {1} and {2}!",
|
||||
"UseItemBugged": "The item you're trying to use is bugged. A bug report has been sent to the server developers.",
|
||||
"PickupItemBugged": "The item you're trying to pickup is bugged. A bug report has been sent to the server developers.",
|
||||
"DropItemBugged": "The item you're trying to drop is bugged. A bug report has been sent to the server developers.",
|
||||
"HandsBusy": "Your hands are busy",
|
||||
"CantUseItemInSkinChange": "You can't use an item while customizing your appearance",
|
||||
"CantDropItemInSkinChange": "You can't drop an item while customizing your appearance",
|
||||
"CantPickupItemInSkinChange": "You can't pickup an item while customizing your appearance",
|
||||
"CantSwitchItemInSkinChange": "You can't switch an item while customizing your appearance",
|
||||
"CantGiveItemInSkinChange": "You can't give an item while customizing your appearance",
|
||||
"CantTakeItemInSkinChange": "You can't take an item while customizing your appearance",
|
||||
"ItemUnequippableNoAmmo": "The {1} in slot {2} has no ammo, and can't be equipped!",
|
||||
"NoSpaceSelfInventory": "You don't have any more space in your inventory",
|
||||
"Business": "business",
|
||||
"House": "house",
|
||||
"Clan": "clan",
|
||||
"Vehicle": "vehicle",
|
||||
"Item": "item",
|
||||
"ItemType": "item type",
|
||||
"Gate": "gate",
|
||||
"Door": "door",
|
||||
"ClanRank": "clan rank",
|
||||
"JobRank": "job rank",
|
||||
"RadioStation": "radio station",
|
||||
"HeaderAnimationsList": "动作列表",
|
||||
"HeaderPayAndSprayHelp": "有偿喷漆帮助",
|
||||
"HeaderAmmunationHelp": "弹药帮助",
|
||||
"HeaderVehicleTuneupHelp": "载具改装帮助",
|
||||
"HeaderBindableKeysHelp": "可绑定的按键",
|
||||
"HeaderSkinHelp": "服装/皮肤帮助",
|
||||
"HeaderBusinessHelp": "企业帮助",
|
||||
"HeaderClanHelp": "帮派帮助",
|
||||
"HeaderPlayerVehiclesList": "玩家载具 ({1})",
|
||||
"HeaderPlayerBusinessesList": "玩家企业 ({1})",
|
||||
"HeaderClansList": "帮派列表",
|
||||
"HeaderAdminsList": "管理员列表",
|
||||
"HeaderBadgeInfo": "荣誉信息",
|
||||
"HeaderAccentsList": "口音列表",
|
||||
"HeaderPlayerInfo": "玩家信息 ({1})",
|
||||
"HeaderWealthandTaxHelp": "资产与税收帮助",
|
||||
"HeaderCommandInfo": "指令帮助 ({1})",
|
||||
"HeaderRadioHelp": "电台帮助",
|
||||
"HeaderRadioStationsList": "电台",
|
||||
"HeaderKeyBindsList": "按键绑定列表",
|
||||
"RadioVolumeChanged": "{1} 已将电台音量调整为 {2}%",
|
||||
"VolumeLevelNotNumber": "确保输入的音量大小为有效数值",
|
||||
"RadioStationLocationInvalid": "你必须在车辆、住宅或企业中,或拥有个人设备才能更改电台!",
|
||||
"ActionBusinessRadioStationChange": "企业电台已设置为 {1} ({2})",
|
||||
"ActionHouseRadioStationChange": "住宅电台已设置为 {1} ({2})",
|
||||
"ActionVehicleRadioStationChange": "载具电台已设置为 {1} ({2})",
|
||||
"ActionItemRadioStationChange": "{1} 的电台已设置为 {2} ({3})",
|
||||
"RandomVehicleCommandsDisabled": "这是一辆随机刷出的街车,无法对其使用指令。",
|
||||
"HouseDoorLock": "住宅 {1} {2}!",
|
||||
"BusinessDoorLock": "企业 {1} {2}!",
|
||||
"ServerGameModeRestarting": "游戏模式正在重启!",
|
||||
"HeaderSelfItemList": "你的库存",
|
||||
"HeaderPlayerItemList": "玩家库存 ({1})",
|
||||
"HeaderHouseItemList": "住宅库存",
|
||||
"HeaderBusinessFloorItemList": "企业库存 (供售)",
|
||||
"HeaderBusinessStorageItemList": "企业库存 (暂存)",
|
||||
"HeaderItemItemList": "{1} 的库存",
|
||||
"ItemSlotNotNumber": "物体槽位必须为整数",
|
||||
"ItemSlotMustBeBetween": "物体槽位应在 {1} 与 {2} 之间!",
|
||||
"UseItemBugged": "尝试操作的物品出现错误!错误报告已发送给服务器开发人员。",
|
||||
"PickupItemBugged": "尝试拾取的物品出现错误!错误报告已发送给服务器开发人员。",
|
||||
"DropItemBugged": "尝试丢弃的物品出现错误!错误报告已发送给服务器开发人员。",
|
||||
"HandsBusy": "操作繁忙",
|
||||
"CantUseItemInSkinChange": "自定义外观时无法使用该物品",
|
||||
"CantDropItemInSkinChange": "自定义外观时无法丢弃该物品",
|
||||
"CantPickupItemInSkinChange": "自定义外观时无法拾取物品",
|
||||
"CantSwitchItemInSkinChange": "自定义外观时无法切换物品",
|
||||
"CantGiveItemInSkinChange": "自定义外观时无法赠送物品",
|
||||
"CantTakeItemInSkinChange": "自定义外观时无法取出物品",
|
||||
"ItemUnequippableNoAmmo": "槽位 {2} 中 {1} 弹药耗尽,无法装备!",
|
||||
"NoSpaceSelfInventory": "库存已无更多空间",
|
||||
"Business": "企业",
|
||||
"House": "住宅",
|
||||
"Clan": "帮派",
|
||||
"Vehicle": "载具",
|
||||
"Item": "物品",
|
||||
"ItemType": "物品种类",
|
||||
"Gate": "大门",
|
||||
"Door": "门",
|
||||
"ClanRank": "帮派等级",
|
||||
"JobRank": "职业等级",
|
||||
"RadioStation": "电台",
|
||||
"Months": [
|
||||
"January",
|
||||
"February",
|
||||
"March",
|
||||
"April",
|
||||
"May",
|
||||
"June",
|
||||
"July",
|
||||
"August",
|
||||
"September",
|
||||
"October",
|
||||
"November",
|
||||
"December"
|
||||
"一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月"
|
||||
],
|
||||
"WeekDays": [
|
||||
"Sunday",
|
||||
"Monday",
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday"
|
||||
"周日",
|
||||
"周一",
|
||||
"周二",
|
||||
"周三",
|
||||
"周四",
|
||||
"周五",
|
||||
"周六"
|
||||
],
|
||||
"CardinalDirections": [
|
||||
"North",
|
||||
"Northeast",
|
||||
"East",
|
||||
"Southeast",
|
||||
"South",
|
||||
"Southwest",
|
||||
"West",
|
||||
"Northwest"
|
||||
"北",
|
||||
"东北",
|
||||
"东",
|
||||
"东南",
|
||||
"南",
|
||||
"西南",
|
||||
"西",
|
||||
"西北"
|
||||
],
|
||||
"NewPlayerReadyToPlay": [
|
||||
"You have been given some cash. Use {1} to find places to buy items.",
|
||||
"If you need money, jobs are the yellow dots on the radar.",
|
||||
"For a car, visit the car dealership. You can also use a rental vehicle near spawn or take the train",
|
||||
"Be sure to read the {1} and use {2} for info."
|
||||
"你得到了一些现金,使用 {1} 以找到买东西的地方。",
|
||||
"赚钱靠劳动,求职请前往雷达上的小黄点。",
|
||||
"买车可以到汽车经销店,你也可以在出生点附近租车或者直接乘火车。",
|
||||
"确保已阅读 {1},使用 {2} 以获取相关信息。"
|
||||
],
|
||||
"YourCurrentVehicleDeleted": "The vehicle you were in was deleted.",
|
||||
"Distance": "Distance",
|
||||
"Meters": "Meters",
|
||||
"Feet": "Feet",
|
||||
"Kilometers": "Kilometers",
|
||||
"Miles": "Miles",
|
||||
"MustBeVehicleDriver": "You must be the driver of the vehicle!",
|
||||
"PlayerJoinedServer": "{1} has joined the game from {1}!",
|
||||
"PlayerLeftServer": "{1} has left the game! ({1})",
|
||||
"YourCurrentVehicleDeleted": "你当前乘坐的车辆已被删除。",
|
||||
"Distance": "距离",
|
||||
"Meters": "米",
|
||||
"Feet": "英尺",
|
||||
"Kilometers": "公里",
|
||||
"Miles": "英里",
|
||||
"MustBeVehicleDriver": "你并不是主驾驶!",
|
||||
"PlayerJoinedServer": "{1} 加入游戏。来自:{1}",
|
||||
"PlayerLeftServer": "{1} 退出游戏! ({1})",
|
||||
"DisconnectReasons": [
|
||||
"Lost Connection",
|
||||
"Disconnected",
|
||||
"Unsupported Client",
|
||||
"Wrong Game",
|
||||
"Incorrect Password",
|
||||
"Unsupported Executable",
|
||||
"Disconnected",
|
||||
"Banned",
|
||||
"Failed",
|
||||
"Invalid Name",
|
||||
"Crashed"
|
||||
"失去连接",
|
||||
"断开连接",
|
||||
"不支持的客户端",
|
||||
"游戏错误",
|
||||
"密码错误",
|
||||
"不支持的游戏主程序",
|
||||
"断开连接",
|
||||
"已被封禁",
|
||||
"连接失败",
|
||||
"无效的游戏名",
|
||||
"客户端崩溃"
|
||||
],
|
||||
"TakeItemFromHouse": "takes a {1} from the house",
|
||||
"TakeItemFromBusinessStorage": "takes a {1} from the business storage",
|
||||
"TakeItemFromBusiness": "takes a {1} from the business",
|
||||
"TakeItemFromItem": "takes a {1} from the {2}",
|
||||
"TakeItemFromVehicleTrunk": "takes a {1} from the trunk",
|
||||
"TakeItemFromVehicleDash": "takes a {1} from the glove compartment",
|
||||
"JobEquipmentInventoryKeyBindTip": "The job equipment is in your inventory. Press {1} to see them.",
|
||||
"JobEquipmentInventoryCommandTip": "The job equipment is in your inventory. Use {1} to see them.",
|
||||
"TakeItemFromHouse": "从住宅处拿到 {1}",
|
||||
"TakeItemFromBusinessStorage": "从企业仓库拿到 {1}",
|
||||
"TakeItemFromBusiness": "从企业处拿到 {1}",
|
||||
"TakeItemFromItem": "从 {2} 处拿到 {1}",
|
||||
"TakeItemFromVehicleTrunk": "从后备箱中取出 {1}",
|
||||
"TakeItemFromVehicleDash": "从杂物箱中取出 {1}",
|
||||
"JobEquipmentInventoryKeyBindTip": "工作设备在你的仓库里,按下 {1} 以查看。",
|
||||
"JobEquipmentInventoryCommandTip": "工作设备在你的仓库里,使用 {1} 以查看。",
|
||||
"AccountHelp": [
|
||||
"Do NOT share your password with anybody else. {1} staff will never ask you for your password",
|
||||
"Use {1} to change your password, and {2} if you forgot it",
|
||||
"Some settings you can use: {1}"
|
||||
"请不要将密码分享给任何人,且{1} 工作人员不会询问你的密码。",
|
||||
"使用 {1} 以更改密码,若遗忘密码请使用 {2} 。",
|
||||
"可用设定:{1}"
|
||||
],
|
||||
"VehicleHelp": [
|
||||
"Your personal vehicles will save wherever you or somebody else leaves them!",
|
||||
"Visit dealerships to buy new vehicles (Use {1} for more information)",
|
||||
"Some commands: {1}",
|
||||
"Visit a mechanic garage to repair, colour, and tune up your car! {1} for info"
|
||||
"你的私人车辆将会在离开车辆时自动保存!",
|
||||
"前往汽车经销商购买新车 (使用 {1} 获取更多信息)",
|
||||
"相关指令:{1}",
|
||||
"去修理厂修理、喷漆和改装你的汽车! 使用 {1} 获取相关信息。"
|
||||
],
|
||||
"VehicleDealershipHelp": [
|
||||
"Visit a vehicle dealer to buy new vehicles. Use {1} to find one.",
|
||||
"At the dealer, enter a car you want to buy, and the price will be shown to you",
|
||||
"If you want to buy the vehicle, use {1} and you will be given keys to test drive it around the parking lot.",
|
||||
"Drive away from the dealership with the new vehicle to confirm the purchase."
|
||||
"前往汽车经销商购买新车,使用 {1} 可以找一家。",
|
||||
"在经销商处进入你希望购买的车辆,对应价格将会自动显示。",
|
||||
"确定车辆后使用 {1},即可开始试驾。",
|
||||
"驾驶车辆离开经销商以确认购买。"
|
||||
],
|
||||
"JobHelp": [
|
||||
"Visit job locations to get a job and earn money. Look for yellow spots on the map",
|
||||
"At a job location, use {1} to get the job. Use {2} to quit your job",
|
||||
"Use {1} to begin working. You can also get a job {2} and {3}",
|
||||
"Most job vehicles are locked. Use {1} near one to enter it.",
|
||||
"When entering a job vehicle, information on how to do the job will be shown to you."
|
||||
"地图上的黄点为求职处,你可以在那里找工作挣大钱。",
|
||||
"在求职处使用 {1} 以获得工作,不想干了就使用 {2} 跑路。",
|
||||
"使用 {1} 即开始工作,你也可以在 {2} 与 {3} 中获得工作。",
|
||||
"工作专用车一般都是锁着的,在其旁边使用 {1} 即可进入。",
|
||||
"进入专用车时,将向您显示有关如何执行工作的信息。"
|
||||
],
|
||||
"ChatHelp": [
|
||||
"There are two main types of chat: out-of-character (OOC) and in-character (IC)",
|
||||
"Mixing these two types is not proper roleplay. See {1} for info.",
|
||||
"Some chat commands: {1}",
|
||||
"Some have shorter names available ({1} to talk, {2} to shout, etc)"
|
||||
"聊天方式主要有两种:本我意识 (OOC 即 out-of-character) 和 角色意识 (IC 即 in-character)",
|
||||
"在玩角色扮演的时候最好不要混用两种聊天方式,查看 {1} 以获取更多信息。",
|
||||
"聊天指令:{1}",
|
||||
"某些玩家有可用的更简短的名称 ({1} 用以正常交流, {2} 用以喊话等)"
|
||||
],
|
||||
"ServerRulesHelp": [
|
||||
"Unrealistic actions (powergaming) are not allowed. You aren't superman.",
|
||||
"No terrorist or terrorism roleplay is allowed.",
|
||||
"Always follow instructions given by moderators and admins.",
|
||||
"Do not mix the chats (metagaming). You can't use info in IC that was received OOC",
|
||||
"Keep English in main chats. If you aren't good at English, use {1}"
|
||||
"不允许不切实际的行为 (powergaming),你拯救不了世界。",
|
||||
"不允许恐怖分子或恐怖主义式角色扮演。",
|
||||
"请始终遵循版主和管理员的指示。",
|
||||
"不建议混合式聊天 (metagaming), 你不能在IC中使用收到OOC的信息。",
|
||||
"请使用英语与其他玩家进行交流,不大擅长英语的话可以试试 {1}"
|
||||
],
|
||||
"AnimationHelp": [
|
||||
"Animations allow you to enhance roleplay with visual actions",
|
||||
"Use {1} or {2} with a name to use an animation.",
|
||||
"To see a list of animations, use {1}"
|
||||
"做出虚拟动作可以提升你角色扮演的游戏体验。",
|
||||
"使用 {1} 或 {2} + 动作名称 以做出一个动作。",
|
||||
"要查看动作列表,使用 {1}"
|
||||
],
|
||||
"WeaponHelp": [
|
||||
"Visit an gun store to buy weapons. Use {1} to find one.",
|
||||
"Buying a weapon requires a weapon license.",
|
||||
"Weapon licenses are managed by the police department. Apply there to get one.",
|
||||
"Weapons can also be purchased illegally from some businesses, weapon dealers, and clans."
|
||||
"前往枪店购买武器,使用 {1} 可以找一家。",
|
||||
"购买武器是需要武器许可证的。",
|
||||
"而武器许可证由警察局管理,在那里申请就可以办到一张。",
|
||||
"武器也可以从一些企业、武器经销商和帮派那里非法购买。"
|
||||
],
|
||||
"SkinHelp": [
|
||||
"At a clothing store, use {1} to purchase clothes",
|
||||
"When you have a clothing item, equip and use it like any other item to show the skin selection (check {1} to learn how to use items)",
|
||||
"Some skins are restricted to jobs, clans, or for other reasons."
|
||||
"在服装店里使用 {1} 即可买到衣服",
|
||||
"当你拥有可穿戴式物品时,像其它物品一样直接装备即可。(查看 {1} 以了解如何使用物品)",
|
||||
"某些服装将因工作、帮派或其它原因而受到限制。"
|
||||
],
|
||||
"KeyBindHelp": [
|
||||
"You can set your own key binds. Use {1} to see your binded keys.",
|
||||
"Use {1} to add a new keybind and {2} to remove one.",
|
||||
"Default keys are: {1} for vehicle engine, {1} for lights, and {3} for lock/unlock",
|
||||
"Press {1} to see your items and {2} to equip an item or {3} to unequip all.",
|
||||
"Press {1} to use the item you're holding, press {2} to drop it, or press {3} to pickup an item from the ground."
|
||||
"你可以自定义快捷键,使用 {1} 以查看已绑定的按键。",
|
||||
"使用 {1} 以新增快捷键,{2} 以移除。",
|
||||
"默认按键如下: {1} 发动引擎,{2} 车灯开关,{3} 锁车/解锁",
|
||||
"按下 {1} 查看你的物品,{2} 装备选定物品,{3} 卸下所有物品",
|
||||
"按下 {1} 使用当前物品,{2} 丢弃当前物品,{3} 拾取地面物品"
|
||||
],
|
||||
"BusinessHelp": [
|
||||
"Use {1} to purchase items or {2} to see a list of what's for sale at any business",
|
||||
"Businesses are shown with blue names above the icon at their entrance.",
|
||||
"Business owner commands: {1}",
|
||||
"A new car for sale will appear when you drive away from the dealer."
|
||||
"使用 {1} 以购买物品,或者使用 {2} 以查看任意企业的待售物品列表。",
|
||||
"企业名称以蓝色字体显示在图标上方。",
|
||||
"企业主可用的指令:{1}",
|
||||
"一辆待售的新车会在你开车离开经销商(即确认购买)后出现。"
|
||||
],
|
||||
"ClanHelp": [
|
||||
"Ask an administrator to create a clan (Similar to factions/groups/families)",
|
||||
"Clan owners have full control over their clan once it's created",
|
||||
"Clan commands: {1}",
|
||||
"More clan commands: {1}"
|
||||
"请求管理员以创建一个属于你自己的帮派 (类似于派系/团体/家庭)",
|
||||
"帮派创建成功后,帮主将拥有其所有控制权。",
|
||||
"帮派指令:{1}",
|
||||
"更多帮派指令:{1}"
|
||||
],
|
||||
"RadioStationHelp": [
|
||||
"Use {1} to set the station for your vehicle, house, or business",
|
||||
"Use {2} to see a list of stations",
|
||||
"You can change your radio streaming volume using {1} with 0-100 as the percent"
|
||||
"使用 {1} 为你的车辆/住宅/企业设置电台",
|
||||
"使用 {2} 以查看电台列表",
|
||||
"你可以使用 {1} 来改变电台音量大小。(0-100%)"
|
||||
],
|
||||
"WealthAndTaxHelp": [
|
||||
"Your taxes on payday are {1} percent of your calculated wealth.",
|
||||
"Your calculated wealth is a total sum based on how many vehicles, houses, and businesses you have.",
|
||||
"Each vehicle is {1}, each house is {2}, and each business is {3}",
|
||||
"Use {1} to see your current wealth, and {2} to see how much you'll pay in tax each payday"
|
||||
"发薪日那天需要缴税,而税款是你计算财富的 {1}%.",
|
||||
"计算财富是基于你所拥有的车辆、住宅和企业的总和。",
|
||||
"{1} 每辆车,{2} 每栋房,{3} 每个企业。",
|
||||
"使用 {1} 以查看你的当前财富,{2} 以查看发薪日当天你应当缴纳的税款。"
|
||||
],
|
||||
"MustBeInAVehicle": "You need to be in a vehicle!",
|
||||
"MustBeInOrNearVehicle": "You need to be in or near a vehicle!",
|
||||
"MustBeInVehicleFrontSeat": "You need to be in the vehicle front seats!",
|
||||
"MustBeInVehicleDriverSeat": "You need to be the driver!",
|
||||
"DontHaveVehicleKey": "You don't have a key for this vehicle!",
|
||||
"NoGateAccess": "You don't have access to this gate!",
|
||||
"GateBroken": "This gate is broken!",
|
||||
"GateHacked": "The gate does not respond!",
|
||||
"RadioJammed": "You hear only static from the radio.",
|
||||
"VehicleNotForSale": "This vehicle is not for sale!",
|
||||
"VehicleNotForRent": "This vehicle is not for rent!",
|
||||
"BusinessNotForSale": "This business is not for sale!",
|
||||
"BusinessNotForRent": "This business is not for rent!",
|
||||
"HouseNotForSale": "This house is not for sale!",
|
||||
"HouseNotForRent": "This house is not for rent!",
|
||||
"DealershipPurchaseTestDrive": "Drive the vehicle away from the dealership to buy it, or get out to cancel.",
|
||||
"DealershipPurchaseExitedVehicle": "You canceled the vehicle purchase by exiting the vehicle!",
|
||||
"VehiclePurchaseComplete": "This vehicle is now yours! It will save wherever you leave it.",
|
||||
"VehiclePurchaseNotEnoughMoney": "You don't have enough money to buy this vehicle!",
|
||||
"HousePurchaseNotEnoughMoney": "You don't have enough money to buy this house!",
|
||||
"BusinessPurchaseNotEnoughMoney": "You don't have enough money to buy this business!",
|
||||
"MustBeInAVehicle": "你必须先坐在一辆车上!",
|
||||
"MustBeInOrNearVehicle": "必须要有辆车在你旁边,或者你坐上那辆车!",
|
||||
"MustBeInVehicleFrontSeat": "你必须坐在车辆前排座椅上!",
|
||||
"MustBeInVehicleDriverSeat": "你必须是车辆主驾驶!",
|
||||
"DontHaveVehicleKey": "你并没有这车的钥匙!",
|
||||
"NoGateAccess": "你无法进入这个大门。",
|
||||
"GateBroken": "这门已是破烂不堪。",
|
||||
"GateHacked": "大门没什么反应。",
|
||||
"RadioJammed": "电台似是被干扰了。",
|
||||
"VehicleNotForSale": "本车不出售!",
|
||||
"VehicleNotForRent": "本车不出租!",
|
||||
"BusinessNotForSale": "本企业不出售!",
|
||||
"BusinessNotForRent": "本企业不出租!",
|
||||
"HouseNotForSale": "这房子不给卖!",
|
||||
"HouseNotForRent": "这房子不给租!",
|
||||
"DealershipPurchaseTestDrive": "将车辆驶离经销商处以确认购买,下车取消。",
|
||||
"DealershipPurchaseExitedVehicle": "已取消车辆购买。",
|
||||
"VehiclePurchaseComplete": "这辆车现在是你的了!不管它在哪里都会自动保存。",
|
||||
"VehiclePurchaseNotEnoughMoney": "你没有足够的钱买这辆车!",
|
||||
"HousePurchaseNotEnoughMoney": "你没有足够的钱买这所房子!",
|
||||
"BusinessPurchaseNotEnoughMoney": "你没有足够的钱来买这家企业!",
|
||||
"Locales": {
|
||||
"English": "English",
|
||||
"Russian": "Russian",
|
||||
"Spanish": "Spanish",
|
||||
"German": "German",
|
||||
"Dutch": "Dutch",
|
||||
"Polish": "Polish"
|
||||
"English": "英文",
|
||||
"Russian": "俄文",
|
||||
"Spanish": "西班牙文",
|
||||
"German": "德文",
|
||||
"Dutch": "荷兰文",
|
||||
"Polish": "波兰文",
|
||||
"Chinese": "中文"
|
||||
},
|
||||
|
||||
"ADDED-21JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
|
||||
"HeaderPlayerHousesList": "Player Houses ({1})",
|
||||
"HeaderPlayerStaffFlagsList": "Player Staff Flags ({1})",
|
||||
"HeaderStaffFlagsList": "Staff Flags",
|
||||
"NonRPName": "Non-RP name! Choose a new one:",
|
||||
"InvalidStaffFlag": "Staff flag not found!",
|
||||
"InvalidClanFlag": "Clan flag not found!",
|
||||
"InvalidLocale": "Language not found!",
|
||||
"HeaderJobUniformList": "Job Uniforms ({1})",
|
||||
"HeaderJobEquipmentList": "Job Equipment ({1})",
|
||||
"InvalidJobUniform": "Job uniform not found!",
|
||||
"InvalidJobEquipment": "Job equipment not found!",
|
||||
"HeaderVehiclesInRangeList": "Vehicles within {1}",
|
||||
"NoVehiclesWithInRange": "There are no vehicles within {1}",
|
||||
"AmountNotNumber": "The amount must be a number!",
|
||||
"NeedToBeWorking": "You need to be working! Use {1} at a job location or near a job vehicle.",
|
||||
"NeedToBeOnJobRoute": "You need to be doing a job route! Use {1} in a job vehicle",
|
||||
"CurrentJobRouteDeleted": "The job route you were on has been deleted by an admin",
|
||||
"CurrentJobRouteVehicleColoursChanged": "Your job route's vehicle colours were changed by an admin",
|
||||
"NotYourJob": "This is not your job!",
|
||||
"JobPoints": "You can get a job by going the yellow points on the map.",
|
||||
"QuitJobToTakeAnother": "If you want this job, use {1} to quit your current job.",
|
||||
"NotAJobVehicle": "This is not a job vehicle!",
|
||||
"NotYourJobVehicle": "This is not your job's vehicle!",
|
||||
"JobRouteDisabled": "The job route you were on has been disabled by an admin",
|
||||
"HeaderPickupTypes": "Pickup Types",
|
||||
"HeaderBlipTypes": "Map Icon Types",
|
||||
"InvalidGPSLocation": "There are no locations with that name or type",
|
||||
"HeaderBusinessList": "Businesses",
|
||||
"VehicleForSale": "This {1} is buyable for {2}! Use {3} if you want to buy it",
|
||||
"VehicleForRent": "This {1} is rentable for {2}! Use {3} if you want to rent it",
|
||||
"HeaderPlayerHousesList": "玩家住宅 ({1})",
|
||||
"HeaderPlayerStaffFlagsList": "玩家信号旗 ({1})",
|
||||
"HeaderStaffFlagsList": "信号旗",
|
||||
"NonRPName": "非角色扮演名称!请选择新的名称:",
|
||||
"InvalidStaffFlag": "信号旗帜不存在!",
|
||||
"InvalidClanFlag": "帮派旗帜不存在!",
|
||||
"InvalidLocale": "语言不存在!",
|
||||
"HeaderJobUniformList": "工作制服 ({1})",
|
||||
"HeaderJobEquipmentList": "工作设备 ({1})",
|
||||
"InvalidJobUniform": "工作制服不存在!",
|
||||
"InvalidJobEquipment": "工作设备不存在!",
|
||||
"HeaderVehiclesInRangeList": "{1} 内的车辆",
|
||||
"NoVehiclesWithInRange": "{1} 内无任何车辆。",
|
||||
"AmountNotNumber": "请输入有效数字!",
|
||||
"NeedToBeWorking": "你得去工作!在求职处或工作专用车旁使用 {1} 。",
|
||||
"NeedToBeOnJobRoute": "你需要进行一个工作路线!请在工作专用车内使用 {1} 。",
|
||||
"CurrentJobRouteDeleted": "管理员已删除你所在的工作路线",
|
||||
"CurrentJobRouteVehicleColoursChanged": "管理员已更改你的工作路线的车辆颜色",
|
||||
"NotYourJob": "这不是你的工作!",
|
||||
"JobPoints": "前往地图上的黄点找到工作。",
|
||||
"QuitJobToTakeAnother": "要是想干这行,先使用 {1} 离开当前工作。",
|
||||
"NotAJobVehicle": "这并不是辆工作专用车!",
|
||||
"NotYourJobVehicle": "这不是你工作用的车!",
|
||||
"JobRouteDisabled": "管理员已禁用你的工作路线",
|
||||
"HeaderPickupTypes": "拾取物类型",
|
||||
"HeaderBlipTypes": "地图图标类型",
|
||||
"InvalidGPSLocation": "没有具有该名称或类型的位置",
|
||||
"HeaderBusinessList": "企业",
|
||||
"VehicleForSale": "此 {1} 可被 {2} 购买到!购买请使用 {3}",
|
||||
"VehicleForRent": "此 {1} 可被 {2} 租用!租用请使用 {3}",
|
||||
|
||||
"ADDED-31JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
|
||||
"LoginFailedInvalidPassword": "Invalid password! {1} attempts remaining",
|
||||
"LoginFailedNoPassword": "You must enter a password! ! {1} attempts remaining",
|
||||
"RegistrationFailedNoPassword": "You must enter a password!",
|
||||
"RegistrationFailedNoPasswordConfirm": "You must confirm the password!",
|
||||
"RegistrationFailedNoEmail": "You must enter an email!",
|
||||
"AccountNameAlreadyRegistered": "Your name is already registered!",
|
||||
"AlreadyLoggedIn": "You are already logged in!",
|
||||
"RegistrationFailedInvalidEmail": "That email is invalid!",
|
||||
"RegistrationFailedPasswordMismatch": "The passwords don't match!",
|
||||
"RegistrationFailedCreateError": "Your account couldn't be created!",
|
||||
"RegistrationSuccess": "Your account has been created!",
|
||||
"RegistrationEmailVerifyReminder": "Don't forget to verify your email! A verification code has been sent to you.",
|
||||
"RegistrationCreateCharReminder": "To play on the server, you will need to make a character.",
|
||||
"NoCharactersGUIMessage": "You have no characters. Would you like to make one?",
|
||||
"NoCharactersGUIWindowTitle": "No characters",
|
||||
"NoCharactersChatMessage": "You have no characters. Use {1} to make one.",
|
||||
"NeedEmailFor2FA": "You need to add your email to your account to use two-factor authentication.",
|
||||
"NeedEmailVerifiedFor2FA": "You need to verify your email to use two-factor authentication.",
|
||||
"SetEmailHelpTip": "Use {1} to set your email.",
|
||||
"VerifyEmailHelpTip": "Use {1} to verify your email.",
|
||||
"LoginFailedInvalidPassword": "密码错误!还有 {1} 次尝试机会。",
|
||||
"LoginFailedNoPassword": "密码不能为空!还有 {1} 次尝试机会。",
|
||||
"RegistrationFailedNoPassword": "密码不能为空!",
|
||||
"RegistrationFailedNoPasswordConfirm": "确认密码不能为空!",
|
||||
"RegistrationFailedNoEmail": "电子邮件不能为空!",
|
||||
"AccountNameAlreadyRegistered": "该游戏名已被注册。",
|
||||
"AlreadyLoggedIn": "您已登录过账号!",
|
||||
"RegistrationFailedInvalidEmail": "该电子邮件无效!",
|
||||
"RegistrationFailedPasswordMismatch": "密码不匹配!",
|
||||
"RegistrationFailedCreateError": "无法创建您的帐户!",
|
||||
"RegistrationSuccess": "账号创建成功!",
|
||||
"RegistrationEmailVerifyReminder": "验证码已发送至您的电子邮件,请前往进行验证。",
|
||||
"RegistrationCreateCharReminder": "在正式游玩之前,您需要创建一个角色。",
|
||||
"NoCharactersGUIMessage": "暂无角色。要创建一个吗?",
|
||||
"NoCharactersGUIWindowTitle": "无角色",
|
||||
"NoCharactersChatMessage": "暂无角色。使用 {1} 新建一个角色。",
|
||||
"NeedEmailFor2FA": "开启双重验证前,请先添加您的电子邮件。",
|
||||
"NeedEmailVerifiedFor2FA": "开启双重验证前,请先验证您的电子邮件。",
|
||||
"SetEmailHelpTip": "使用 {1} 以设置您的电子邮件。",
|
||||
"VerifyEmailHelpTip": "使用 {1} 以验证您的电子邮件。",
|
||||
|
||||
"ADDED-13FEB2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
|
||||
"NearbyRadio": "Nearby radio",
|
||||
"FromRadio": "From radio",
|
||||
"ToRadio": "To radio",
|
||||
"NeedToEnterPropertyCommand": "You need to enter the {1} first! Use {2} to enter and exit",
|
||||
"NeedToEnterPropertyKeyPress": "You need to enter the {1} first! Press {2} to enter and exit",
|
||||
"InventoryFullCantCarry": "You don't have any space to carry this (full inventory)!",
|
||||
"NotEnoughCashNeedAmountMore": "You don't have enough money! You need {1} more!",
|
||||
"AmountMustBeMoreThan": "The amount must be more than {1}!",
|
||||
"WeaponBanned": "You are not allowed to buy or use weapons!",
|
||||
"TimeNotNumber": "The time must be a number",
|
||||
"HeaderDefaultBusinessItemTypes": "Business Item Templates",
|
||||
"FixingStuck": "Fixing your position and virtual world ...",
|
||||
"CantUseCommandYet": "You must wait before you can use this command again!",
|
||||
"NotATester": "You are not a tester!",
|
||||
"AccessDenied": "AccessDenied",
|
||||
"InvalidSkin": "That skin is invalid!",
|
||||
"HeaderInteriorTypes": "Interiors List",
|
||||
"ViewInventoryKeyPressTip": "Press {1} to see your items",
|
||||
"ViewInventoryCommandTip": "Use {1} to see your items"
|
||||
"NearbyRadio": "附近电台",
|
||||
"FromRadio": "起始电台",
|
||||
"ToRadio": "终止电台",
|
||||
"NeedToEnterPropertyCommand": "你得先进入 {1} !使用 {2} 以进入或退出。",
|
||||
"NeedToEnterPropertyKeyPress": "你得先进入 {1} !使用 {2} 以进入或退出。",
|
||||
"InventoryFullCantCarry": "库存已满!",
|
||||
"NotEnoughCashNeedAmountMore": "没有足够现金!你需要多加 {1} !",
|
||||
"AmountMustBeMoreThan": "数额必须大于 {1}!",
|
||||
"WeaponBanned": "你已被禁止购买及使用武器!",
|
||||
"TimeNotNumber": "设定的时间非有效数值",
|
||||
"HeaderDefaultBusinessItemTypes": "企业项目模板",
|
||||
"FixingStuck": "修复你当前的位置和虚拟世界 ...",
|
||||
"CantUseCommandYet": "稍后才能再次使用该指令!",
|
||||
"NotATester": "非测试者",
|
||||
"AccessDenied": "拒绝访问",
|
||||
"InvalidSkin": "该皮肤无效!",
|
||||
"HeaderInteriorTypes": "内部场景列表",
|
||||
"ViewInventoryKeyPressTip": "按下 {1} 以查看你的全部物品",
|
||||
"ViewInventoryCommandTip": "使用 {1} 以查看你的全部物品",
|
||||
"GUIAccountSettingToggle": "已切换至 {1} GUI",
|
||||
|
||||
"ADDED-23MAR2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations",
|
||||
"CarCommandHelp": "前往汽车经销商购买新车,使用 {1} 以获取更多信息。",
|
||||
"SkinCommandHelp": "前往服装店购买新衣服,使用 {1} 以获取更多信息。",
|
||||
"BusinessVehiclesRespawned": "管理员已重置所有企业车辆!",
|
||||
"JobVehiclesRespawned": "管理员已重置所有工作车辆!",
|
||||
"PlayerVehiclesRespawned": "管理员已重置所有玩家车辆!",
|
||||
"ClanVehiclesRespawned": "管理员已重置所有帮派车辆!",
|
||||
"PublicVehiclesRespawned": "管理员已重置所有公众!",
|
||||
"EmptyVehiclesRespawned": "管理员已重置所有空闲车辆!",
|
||||
"AllVehiclesRespawned": "管理员已重置所有车辆!",
|
||||
"AllVehiclesReloaded": "管理员已重载所有车辆!",
|
||||
"YourVehicleRespawned": "你的车辆已重生!",
|
||||
"PlayerIPBanned": "{1} 被封禁 IP!",
|
||||
"PlayerCharacterBanned": "{1} 被封禁角色!",
|
||||
"PlayerSubNetBanned": "{1} 被封禁网段!",
|
||||
"CantModifyBusiness": "你无法操作或修改这个企业!",
|
||||
"CantModifyHouse": "你无法操作或修改此住宅!",
|
||||
"ServerTimeSet": "{1} 已将时间设定为 {2}",
|
||||
"ServerWeatherSet": "{1} 已将天气设定为 {2}",
|
||||
"ServerSnowSet": "{1} 已调整:落雪-{2},积雪-{3}",
|
||||
"AllJobsReloaded": "管理员已重置所有职业!",
|
||||
"ServerLogoSet": "{1} 已设定:服务器 LOGO 状态-{2}",
|
||||
"ServerGUISet": "{1} 已设定:服务器 GUI 状态-{2}",
|
||||
"ServerBusinessBlipsSet": "{1} 已设定:服务器企业图例显示状态-{2}",
|
||||
"ServerHouseBlipsSet": "{1} 已设定:服务器住宅图例显示状态-{2}",
|
||||
"ServerJobBlipsSet": "{1} 已设定:服务器职业图例显示状态-{2}",
|
||||
"ServerBusinessPickupsSet": "{1} 已设定:服务器企业拾取物状态-{2}",
|
||||
"ServerHousePickupsSet": "{1} 已设定:服务器住宅拾取物状态-{2}",
|
||||
"ServerJobPickupsSet": "{1} 已设定:服务器职业拾取物状态-{2}",
|
||||
"BusinessBuyItemsLabel": "使用 {1} 以购买物品",
|
||||
"PropertyEnterCommandLabel": "使用 {1} 以进入",
|
||||
"PropertyEnterKeyPressLabel": "按下 {1} 以进入",
|
||||
"PropertyForSaleLabel": "售价:${1}",
|
||||
"PropertyForRentLabel": "租价:每个发薪日需 ${1}",
|
||||
"RemainingTaxPaidInMoney": "你以 ${1} 现金支付了剩下的税款",
|
||||
"LostMoneyFromTaxes": "你应缴纳的税款超过了你的薪水!",
|
||||
"NextPaycheckRepossessionWarning": "若无足够的现金来支付下一份薪水的税款,你将失去一些资产!",
|
||||
"NotEnoughMoneyForTax": "没有足够的现金来支付税款",
|
||||
"AssetsRepossessedForTax": "因未缴纳税款,你已失去 {1} 辆车,{2} 处住宅,{3} 处企业!",
|
||||
"Closed": "Closed",
|
||||
"Open": "Open",
|
||||
"VehicleDealershipLabel": "Enter a vehicle as driver to buy it",
|
||||
"TakeJobLabel": "Use {1} to work here",
|
||||
"StartWorkLabel": "Use {1} to start working",
|
||||
"JobEquipAndUniformLabel": "Use {1} and {2} for job stuff, or {3} to stop working",
|
||||
"NotYourJobLabel": "You already have a different job. Use {1} if you want this one",
|
||||
"JobLabel": "{1} Job",
|
||||
"PaydayBonusSet": "{1} set the payday bonus to ${2}",
|
||||
"AllHousesReloaded": "All houses have been reloaded by an admin",
|
||||
"AllRadioStationsReloaded": "All radio stations have been reloaded by an admin!",
|
||||
"PlayerKicked": "{1} has been kicked from the server",
|
||||
"AllBusinessesReloaded": "All businesses have been reloaded by an admin!",
|
||||
"UnableToDoThat": "You aren't able to do that",
|
||||
"SetVehicleClanConfirmMessage": "Are you sure you want to give this vehicle to your clan?",
|
||||
"SetVehicleClanConfirmTitle": "Warning!",
|
||||
"SetItemPriceBelowOrderPriceMessage": "Are you sure you want to set the item price below it's order price? You will lose ${1} every purchase!",
|
||||
"SetItemPriceBelowOrderPriceTitle": "Warning!",
|
||||
"MustOwnVehicle": "You don't own this vehicle!"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"TranslationProvidedBy": "Vortrex",
|
||||
"LocaleEnglishName": "English",
|
||||
|
||||
"LocaleNativeName": "English",
|
||||
"LocaleOffer": "This server is available in English. Use {1} to use it.",
|
||||
"LocaleChanged1": "Your language is now set to {1}",
|
||||
@@ -10,9 +11,9 @@
|
||||
"HeaderHelpMainList": "Help Categories",
|
||||
"AccentNotFound": "Accent not found",
|
||||
"AccentSet": "You set your accent to {1}",
|
||||
"AnimationNotFound": "That animation doesn't exist",
|
||||
"InvalidAnimation": "That animation doesn't exist",
|
||||
"AnimationCommandTip": "Use {1} to see a list of valid animations",
|
||||
"AnimationInvalidDistance": "The distance must be between 0 and 3",
|
||||
"InvalidAnimationDistance": "The distance must be between 0 and 3",
|
||||
"AnimationStopCommandTip": "Use {1} to stop your animation",
|
||||
"CantBanClient": "You cannot ban this person",
|
||||
"PlayerAccountBanned": "{1} has been account banned",
|
||||
@@ -263,7 +264,7 @@
|
||||
"KeyBindHelp": [
|
||||
"You can set your own key binds. Use {1} to see your binded keys.",
|
||||
"Use {1} to add a new keybind and {2} to remove one.",
|
||||
"Default keys are: {1} for vehicle engine, {1} for lights, and {3} for lock/unlock",
|
||||
"Default keys are: {1} for vehicle engine, {2} for lights, and {3} for lock/unlock",
|
||||
"Press {1} to see your items and {2} to equip an item or {3} to unequip all.",
|
||||
"Press {1} to use the item you're holding, press {2} to drop it, or press {3} to pickup an item from the ground."
|
||||
],
|
||||
@@ -393,5 +394,65 @@
|
||||
"InvalidSkin": "That skin is invalid!",
|
||||
"HeaderInteriorTypes": "Interiors List",
|
||||
"ViewInventoryKeyPressTip": "Press {1} to see your items",
|
||||
"ViewInventoryCommandTip": "Use {1} to see your items"
|
||||
"ViewInventoryCommandTip": "Use {1} to see your items",
|
||||
"GUIAccountSettingToggle": "You have turned {1} GUI",
|
||||
|
||||
"ADDED-23MAR2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations",
|
||||
"CarCommandHelp": "You can buy a car by visiting a vehicle dealership. Use {1} for more information.",
|
||||
"SkinCommandHelp": "You can change your skin by visiting a clothes store. Use {1} for more info.",
|
||||
"BusinessVehiclesRespawned": "🚗 All business vehicles have been respawned by an admin!",
|
||||
"JobVehiclesRespawned": "🚗 All job vehicles have been respawned by an admin!",
|
||||
"PlayerVehiclesRespawned": "🚗 All player vehicles have been respawned by an admin!",
|
||||
"ClanVehiclesRespawned": "🚗 All clan vehicles have been respawned by an admin!",
|
||||
"PublicVehiclesRespawned": "🚗 All public have been respawned by an admin!",
|
||||
"EmptyVehiclesRespawned": "🚗 All empty vehicles have been respawned by an admin!",
|
||||
"AllVehiclesRespawned": "🚗 All vehicles have been respawned by an admin!",
|
||||
"AllVehiclesReloaded": "🚗 All vehicles have been reloaded by an admin!",
|
||||
"YourVehicleRespawned": "🚗 Your vehicle has been respawned!",
|
||||
"PlayerIPBanned": "💀 {1} has been IP banned!",
|
||||
"PlayerCharacterBanned": "💀 {1} has been character banned!",
|
||||
"PlayerSubNetBanned": "💀 {1} has been subnet banned!",
|
||||
"CantModifyBusiness": "You can't manage or modify this business!",
|
||||
"CantModifyHouse": "You can't manage or modify this house!",
|
||||
"ServerTimeSet": "⏰ {1} set the time to {2}",
|
||||
"ServerWeatherSet": "☁️ {1} set the weather to {2}",
|
||||
"ServerSnowSet": "❄️ {1} turned falling snow {2} and ground snow {3}",
|
||||
"AllJobsReloaded": "💼 All server jobs have been reloaded by an admin",
|
||||
"ServerLogoSet": "{1} turned the server logo image {2}",
|
||||
"ServerGUISet": "🗔 {1} turned GUI for this server {2}",
|
||||
"ServerBusinessBlipsSet": "🏢 {1} turned all business blips {2}",
|
||||
"ServerHouseBlipsSet": "🏘️ {1} turned all house blips {2}",
|
||||
"ServerJobBlipsSet": "💼 {1} turned all job blips {2}",
|
||||
"ServerBusinessPickupsSet": "🏢 {1} turned all business pickups {2}",
|
||||
"ServerHousePickupsSet": "🏘️ {1} turned all house pickups {2}",
|
||||
"ServerJobPickupsSet": "💼 {1} turned on all job pickups {2}",
|
||||
"BusinessBuyItemsLabel": "Use {1} to purchase items",
|
||||
"PropertyEnterCommandLabel": "Use {1} to enter",
|
||||
"PropertyEnterKeyPressLabel": "Press {1} to enter",
|
||||
"PropertyForSaleLabel": "For sale: ${1}",
|
||||
"PropertyForRentLabel": "For rent: ${1} every payday",
|
||||
"RemainingTaxPaidInMoney": "You covered the remaining taxes with ${1} in cash.",
|
||||
"LostMoneyFromTaxes": "You lost money since your taxes are more than your paycheck!",
|
||||
"NextPaycheckRepossessionWarning": "If you don't have enough cash to cover taxes on next paycheck, you will lose stuff!",
|
||||
"NotEnoughMoneyForTax": "You don't have enough money to cover your taxes!",
|
||||
"AssetsRepossessedForTax": "You lost {1} vehicles, {2} houses, and {3} businesses because you couldn't pay taxes!",
|
||||
"Closed": "Closed",
|
||||
"Open": "Open",
|
||||
"VehicleDealershipLabel": "Enter a vehicle as driver to buy it",
|
||||
"TakeJobLabel": "Use {1} to work here",
|
||||
"StartWorkLabel": "Use {1} to start working",
|
||||
"JobEquipAndUniformLabel": "Use {1} and {2} for job stuff, or {3} to stop working",
|
||||
"NotYourJobLabel": "You already have a different job. Use {1} if you want this one",
|
||||
"JobLabel": "{1} Job",
|
||||
"PaydayBonusSet": "🤑 {1} set the payday bonus to ${2}",
|
||||
"AllHousesReloaded": "🏘️ All houses have been reloaded by an admin",
|
||||
"AllRadioStationsReloaded": "📻 All radio stations have been reloaded by an admin!",
|
||||
"PlayerKicked": "🦶 {1} has been kicked from the server",
|
||||
"AllBusinessesReloaded": "🏢 All businesses have been reloaded by an admin!",
|
||||
"UnableToDoThat": "You aren't able to do that",
|
||||
"SetVehicleClanConfirmMessage": "Are you sure you want to give this vehicle to your clan?",
|
||||
"SetVehicleClanConfirmTitle": "Warning!",
|
||||
"SetItemPriceBelowOrderPriceMessage": "Are you sure you want to set the item price below it's order price? You will lose ${1} every purchase!",
|
||||
"SetItemPriceBelowOrderPriceTitle": "Warning!",
|
||||
"MustOwnVehicle": "You don't own this vehicle!"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"TranslationProvidedBy": "Suprise444",
|
||||
"LocaleEnglishName": "Polish",
|
||||
|
||||
"LocaleNativeName": "Polski",
|
||||
"LocaleOffer": "Ten serwer jest dostępny w języku Polskim. Użyj {1} aby go użyć.",
|
||||
"LocaleChanged1": "Twój język jest ustawiony na {1}",
|
||||
@@ -10,9 +11,9 @@
|
||||
"HeaderHelpMainList": "Pomoc - Kategorie",
|
||||
"AccentNotFound": "Akcent nie znaleziony",
|
||||
"AccentSet": "Ustawiłeś swój akcent na {1}",
|
||||
"AnimationNotFound": "Ta animcja nie istnieje",
|
||||
"InvalidAnimation": "Ta animcja nie istnieje",
|
||||
"AnimationCommandTip": "Użyj {1} aby zobaczyć listę działających animacji",
|
||||
"AnimationInvalidDistance": "Dystans musi być między 0 i 3",
|
||||
"InvalidAnimationDistance": "Dystans musi być między 0 i 3",
|
||||
"AnimationStopCommandTip": "Użyj {1} aby zatrzymać swoją animacje",
|
||||
"CantBanClient": "Nie możesz zbanować tej osoby",
|
||||
"PlayerAccountBanned": "{1} został zbanowany",
|
||||
@@ -263,7 +264,7 @@
|
||||
"KeyBindHelp": [
|
||||
"Możesz zmienić przypisania klawiszy. Użyj {1} aby zobaczyć twoje przypisane klawisze.",
|
||||
"Użyj {1} aby dodać nowe przypisanie i {2} aby je usunąć.",
|
||||
"Domyślnymi przyciskami są: {1} aby uruchomić pojazd, {1} aby użyć świateł, and {3} aby otworzyć/zamknąć pojazd",
|
||||
"Domyślnymi przyciskami są: {1} aby uruchomić pojazd, {2} aby użyć świateł, and {3} aby otworzyć/zamknąć pojazd",
|
||||
"Naciśnij {1} aby zobaczyć swoje itemy i {2} aby wyposażyć się w jakiś przedmiot lub {3} aby go schować.",
|
||||
"Naciśnij {1} aby użyć przedmiot, który trzymasz, naciśnij {2} aby go upuścić lub naciśnij {3} aby podnieść jakiś przedmiot z ziemi."
|
||||
],
|
||||
@@ -393,5 +394,65 @@
|
||||
"InvalidSkin": "That skin is invalid!",
|
||||
"HeaderInteriorTypes": "Interiors List",
|
||||
"ViewInventoryKeyPressTip": "Press {1} to see your items",
|
||||
"ViewInventoryCommandTip": "Use {1} to see your items"
|
||||
"ViewInventoryCommandTip": "Use {1} to see your items",
|
||||
"GUIAccountSettingToggle": "You have turned {1} GUI",
|
||||
|
||||
"ADDED-23MAR2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations",
|
||||
"CarCommandHelp": "You can buy a car by visiting a vehicle dealership. Use {1} for more information.",
|
||||
"SkinCommandHelp": "You can change your skin by visiting a clothes store. Use {1} for more info.",
|
||||
"BusinessVehiclesRespawned": "All business vehicles have been respawned by an admin!",
|
||||
"JobVehiclesRespawned": "All job vehicles have been respawned by an admin!",
|
||||
"PlayerVehiclesRespawned": "All player vehicles have been respawned by an admin!",
|
||||
"ClanVehiclesRespawned": "All clan vehicles have been respawned by an admin!",
|
||||
"PublicVehiclesRespawned": "All public have been respawned by an admin!",
|
||||
"EmptyVehiclesRespawned": "All empty vehicles have been respawned by an admin!",
|
||||
"AllVehiclesRespawned": "All vehicles have been respawned by an admin!",
|
||||
"AllVehiclesReloaded": "All vehicles have been reloaded by an admin!",
|
||||
"YourVehicleRespawned": "Your vehicle has been respawned",
|
||||
"PlayerIPBanned": "{1} has been IP banned!",
|
||||
"PlayerCharacterBanned": "{1} has been character banned!",
|
||||
"PlayerSubNetBanned": "{1} has been subnet banned!",
|
||||
"CantModifyBusiness": "You can't manage or modify this business",
|
||||
"CantModifyHouse": "You can't manage or modify this house",
|
||||
"ServerTimeSet": "{1} set the time to {2}",
|
||||
"ServerWeatherSet": "{1} set the weather to {2}",
|
||||
"ServerSnowSet": "{1} turned falling snow {2} and ground snow {3}",
|
||||
"AllJobsReloaded": "All server jobs have been reloaded by an admin",
|
||||
"ServerLogoSet": "{1} turned the server logo image {2}",
|
||||
"ServerGUISet": "{1} turned GUI for this server {2}",
|
||||
"ServerBusinessBlipsSet": "{1} turned all business blips {2}",
|
||||
"ServerHouseBlipsSet": "{1} turned all house blips {2}",
|
||||
"ServerJobBlipsSet": "{1} turned all job blips {2}",
|
||||
"ServerBusinessPickupsSet": "{1} turned all business pickups {2}",
|
||||
"ServerHousePickupsSet": "{1} turned all house pickups {2}",
|
||||
"ServerJobPickupsSet": "{1} turned on all job pickups {2}",
|
||||
"BusinessBuyItemsLabel": "Use {1} to purchase items",
|
||||
"PropertyEnterCommandLabel": "Use {1} to enter",
|
||||
"PropertyEnterKeyPressLabel": "Press {1} to enter",
|
||||
"PropertyForSaleLabel": "For sale: ${1}",
|
||||
"PropertyForRentLabel": "For rent: ${1} every payday",
|
||||
"RemainingTaxPaidInMoney": "You covered the remaining taxes with ${1} in cash.",
|
||||
"LostMoneyFromTaxes": "You lost money since your taxes are more than your paycheck!",
|
||||
"NextPaycheckRepossessionWarning": "If you don't have enough cash to cover taxes on next paycheck, you will lose stuff!",
|
||||
"NotEnoughMoneyForTax": "You don't have enough money to cover your taxes!",
|
||||
"AssetsRepossessedForTax": "You lost {1} vehicles, {2} houses, and {3} businesses because you couldn't pay taxes!",
|
||||
"Closed": "Closed",
|
||||
"Open": "Open",
|
||||
"VehicleDealershipLabel": "Enter a vehicle as driver to buy it",
|
||||
"TakeJobLabel": "Use /takejob to work here",
|
||||
"StartWorkLabel": "Use /startwork to start working",
|
||||
"JobEquipAndUniformLabel": "Use /uniform and /equip for job stuff, or /stopwork to stop working",
|
||||
"NotYourJobLabel": "You already have a different job. Use /quitjob if you want this one",
|
||||
"JobLabel": "{1} Job",
|
||||
"PaydayBonusSet": "{1} set the payday bonus to ${2}",
|
||||
"AllHousesReloaded": "All houses have been reloaded by an admin",
|
||||
"AllRadioStationsReloaded": "All radio stations have been reloaded by an admin!",
|
||||
"PlayerKicked": "{1} has been kicked from the server",
|
||||
"AllBusinessesReloaded": "All businesses have been reloaded by an admin!",
|
||||
"UnableToDoThat": "You aren't able to do that",
|
||||
"SetVehicleClanConfirmMessage": "Are you sure you want to give this vehicle to your clan?",
|
||||
"SetVehicleClanConfirmTitle": "Warning!",
|
||||
"SetItemPriceBelowOrderPriceMessage": "Are you sure you want to set the item price below it's order price? You will lose ${1} every purchase!",
|
||||
"SetItemPriceBelowOrderPriceTitle": "Warning!",
|
||||
"MustOwnVehicle": "You don't own this vehicle!"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"TranslationProvidedBy": "VNDTTS",
|
||||
"LocaleEnglishName": "Russian",
|
||||
|
||||
"LocaleNativeName": "Русский",
|
||||
"LocaleOffer": "Этот сервер доступен на русском. Используйте {1} чтобы его использовать.",
|
||||
"LocaleChanged1": "Ваш язык был установлен на {1}",
|
||||
@@ -10,9 +11,9 @@
|
||||
"HeaderHelpMainList": "Помощь Категории",
|
||||
"AccentNotFound": "Не удалось найти акцент",
|
||||
"AccentSet": "Вы установили свой акцент на {1}",
|
||||
"AnimationNotFound": "Такой анимации не существует",
|
||||
"InvalidAnimation": "Такой анимации не существует",
|
||||
"AnimationCommandTip": "Используйте {1} чтобы просмотреть список доступных анимаций",
|
||||
"AnimationInvalidDistance": "Дистанция должна быть между 0 и 3",
|
||||
"InvalidAnimationDistance": "Дистанция должна быть между 0 и 3",
|
||||
"AnimationStopCommandTip": "Используйте {1} чтобы остановить анимацию",
|
||||
"CantBanClient": "Вы не можете забанить этого игрока",
|
||||
"PlayerAccountBanned": "Аккаунт {1} был заблокирован ",
|
||||
@@ -263,7 +264,7 @@
|
||||
"KeyBindHelp": [
|
||||
"Вы можете сами создавать ваши привязки на кнопки. Используйте {1} чтобы просмотреть ваши привязки.",
|
||||
"Используйте {1} чтобы добавить новую приязку или {2} чтобы убрать ее.",
|
||||
"Стандартные привязки: {1} для мотора, {1} для фар, и {3} для открытия/закрытия",
|
||||
"Стандартные привязки: {1} для мотора, {2} для фар, и {3} для открытия/закрытия",
|
||||
"Используйте {1} чтобы просмотреть ваши предметы {2} чтобы экипировать предмет или {3} чтобы убрать.",
|
||||
"Используйте {1} чтобы использвать предмет который вы держите в руках, используйте {2} чтобы его выбростить, или используйте {3} чтобы подобрать предмет."
|
||||
],
|
||||
@@ -392,5 +393,65 @@
|
||||
"InvalidSkin": "That skin is invalid!",
|
||||
"HeaderInteriorTypes": "Interiors List",
|
||||
"ViewInventoryKeyPressTip": "Press {1} to see your items",
|
||||
"ViewInventoryCommandTip": "Use {1} to see your items"
|
||||
"ViewInventoryCommandTip": "Use {1} to see your items",
|
||||
"GUIAccountSettingToggle": "You have turned {1} GUI",
|
||||
|
||||
"ADDED-23MAR2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations",
|
||||
"CarCommandHelp": "You can buy a car by visiting a vehicle dealership. Use {1} for more information.",
|
||||
"SkinCommandHelp": "You can change your skin by visiting a clothes store. Use {1} for more info.",
|
||||
"BusinessVehiclesRespawned": "All business vehicles have been respawned by an admin!",
|
||||
"JobVehiclesRespawned": "All job vehicles have been respawned by an admin!",
|
||||
"PlayerVehiclesRespawned": "All player vehicles have been respawned by an admin!",
|
||||
"ClanVehiclesRespawned": "All clan vehicles have been respawned by an admin!",
|
||||
"PublicVehiclesRespawned": "All public have been respawned by an admin!",
|
||||
"EmptyVehiclesRespawned": "All empty vehicles have been respawned by an admin!",
|
||||
"AllVehiclesRespawned": "All vehicles have been respawned by an admin!",
|
||||
"AllVehiclesReloaded": "All vehicles have been reloaded by an admin!",
|
||||
"YourVehicleRespawned": "Your vehicle has been respawned",
|
||||
"PlayerIPBanned": "{1} has been IP banned!",
|
||||
"PlayerCharacterBanned": "{1} has been character banned!",
|
||||
"PlayerSubNetBanned": "{1} has been subnet banned!",
|
||||
"CantModifyBusiness": "You can't manage or modify this business",
|
||||
"CantModifyHouse": "You can't manage or modify this house",
|
||||
"ServerTimeSet": "{1} set the time to {2}",
|
||||
"ServerWeatherSet": "{1} set the weather to {2}",
|
||||
"ServerSnowSet": "{1} turned falling snow {2} and ground snow {3}",
|
||||
"AllJobsReloaded": "All server jobs have been reloaded by an admin",
|
||||
"ServerLogoSet": "{1} turned the server logo image {2}",
|
||||
"ServerGUISet": "{1} turned GUI for this server {2}",
|
||||
"ServerBusinessBlipsSet": "{1} turned all business blips {2}",
|
||||
"ServerHouseBlipsSet": "{1} turned all house blips {2}",
|
||||
"ServerJobBlipsSet": "{1} turned all job blips {2}",
|
||||
"ServerBusinessPickupsSet": "{1} turned all business pickups {2}",
|
||||
"ServerHousePickupsSet": "{1} turned all house pickups {2}",
|
||||
"ServerJobPickupsSet": "{1} turned on all job pickups {2}",
|
||||
"BusinessBuyItemsLabel": "Use {1} to purchase items",
|
||||
"PropertyEnterCommandLabel": "Use {1} to enter",
|
||||
"PropertyEnterKeyPressLabel": "Press {1} to enter",
|
||||
"PropertyForSaleLabel": "For sale: ${1}",
|
||||
"PropertyForRentLabel": "For rent: ${1} every payday",
|
||||
"RemainingTaxPaidInMoney": "You covered the remaining taxes with ${1} in cash.",
|
||||
"LostMoneyFromTaxes": "You lost money since your taxes are more than your paycheck!",
|
||||
"NextPaycheckRepossessionWarning": "If you don't have enough cash to cover taxes on next paycheck, you will lose stuff!",
|
||||
"NotEnoughMoneyForTax": "You don't have enough money to cover your taxes!",
|
||||
"AssetsRepossessedForTax": "You lost {1} vehicles, {2} houses, and {3} businesses because you couldn't pay taxes!",
|
||||
"Closed": "Closed",
|
||||
"Open": "Open",
|
||||
"VehicleDealershipLabel": "Enter a vehicle as driver to buy it",
|
||||
"TakeJobLabel": "Use {1} to work here",
|
||||
"StartWorkLabel": "Use {1} to start working",
|
||||
"JobEquipAndUniformLabel": "Use {1} and {2} for job stuff, or {3} to stop working",
|
||||
"NotYourJobLabel": "You already have a different job. Use {1} if you want this one",
|
||||
"JobLabel": "{1} Job",
|
||||
"PaydayBonusSet": "{1} set the payday bonus to ${2}",
|
||||
"AllHousesReloaded": "All houses have been reloaded by an admin",
|
||||
"AllRadioStationsReloaded": "All radio stations have been reloaded by an admin!",
|
||||
"PlayerKicked": "{1} has been kicked from the server",
|
||||
"AllBusinessesReloaded": "All businesses have been reloaded by an admin!",
|
||||
"UnableToDoThat": "You aren't able to do that",
|
||||
"SetVehicleClanConfirmMessage": "Are you sure you want to give this vehicle to your clan?",
|
||||
"SetVehicleClanConfirmTitle": "Warning!",
|
||||
"SetItemPriceBelowOrderPriceMessage": "Are you sure you want to set the item price below it's order price? You will lose ${1} every purchase!",
|
||||
"SetItemPriceBelowOrderPriceTitle": "Warning!",
|
||||
"MustOwnVehicle": "You don't own this vehicle!"
|
||||
}
|
||||
|
||||
458
locale/slovak.json
Normal file
458
locale/slovak.json
Normal file
@@ -0,0 +1,458 @@
|
||||
{
|
||||
"TranslationProvidedBy": "ZaKlaus",
|
||||
"LocaleEnglishName": "Slovak",
|
||||
|
||||
"LocaleNativeName": "Slovak",
|
||||
"LocaleOffer": "This server is available in Slovak. Use {1} to use it.",
|
||||
"LocaleChanged1": "Your language is now set to {1}",
|
||||
"LocaleChanged2": "The server will now display messages in {1}",
|
||||
"LocaleChangedNote": "This does not change messages from other players",
|
||||
"AccentsListHeader": "Accents",
|
||||
"HeaderHelpMainList": "Help Categories",
|
||||
"AccentNotFound": "Accent not found",
|
||||
"AccentSet": "You set your accent to {1}",
|
||||
"InvalidAnimation": "That animation doesn't exist",
|
||||
"AnimationCommandTip": "Use {1} to see a list of valid animations",
|
||||
"InvalidAnimationDistance": "The distance must be between 0 and 3",
|
||||
"AnimationStopCommandTip": "Use {1} to stop your animation",
|
||||
"CantBanClient": "You cannot ban this person",
|
||||
"PlayerAccountBanned": "{1} has been account banned",
|
||||
"ClanNotFound": "Clan not found",
|
||||
"ClanNameTaken": "A clan with that name already exists",
|
||||
"PlayerNotFound": "Player not found",
|
||||
"ClanCantRemoveRanks": "You can't remove clan ranks",
|
||||
"ClanCantAddRanks": "You can't add clan ranks",
|
||||
"ClanRankNotFound": "Clan rank not found",
|
||||
"ClanCantChangeMemberTag": "You can not change clan member's tags",
|
||||
"ClanPlayerNotInSameClan": "That player is not in your clan",
|
||||
"ClanCantChangeRankLevel": "You can not change clan rank's level",
|
||||
"ClanCantChangeRankTag": "You can not change clan rank's tags",
|
||||
"NameNotRegistered": "Your name is not registered! Use {1} to make an account.",
|
||||
"AutomaticLoginIPToggle": "Automatic login by IP is now {1}",
|
||||
"CouldNotRegisterAccount": "There was a problem creating your account. Please contact an admin.",
|
||||
"RandomTipsToggle": "Random tips are now {1}",
|
||||
"ActionTipsToggle": "Action tips are now {1}",
|
||||
"AutoSpawnLastCharToggle": "Automatic spawn as last used character is {1}",
|
||||
"AccountGUISettingToggle": "GUI is now {1}",
|
||||
"On": "On",
|
||||
"Off": "Off",
|
||||
"Yes": "Yes",
|
||||
"No": "No",
|
||||
"True": "True",
|
||||
"False": "False",
|
||||
"Locked": "Locked",
|
||||
"Unlocked": "Unlocked",
|
||||
"PasswordNotGoodEnough": "The new password must meet the requirements!",
|
||||
"PasswordNeedsBase": "Passwords must have at least {1}",
|
||||
"PasswordNeedsCapitals": "{1} capital letters",
|
||||
"PasswordNeedsNumbers": "{1} numbers",
|
||||
"PasswordNeedsSymbols": "{1} symbols",
|
||||
"PasswordsDontMatch": "The new password and confirm new password aren't the same!",
|
||||
"PasswordChanged": "Your password has been changed!",
|
||||
"AutoLoggedInIP": "You have been automatically logged in by IP!",
|
||||
"WelcomeBack": "Welcome back to {1}, {2}! Please {3} to continue.",
|
||||
"WelcomeNewPlayer": "Welcome to {1}, {2}! Please {3} to play.",
|
||||
"InvalidPlayer": "Player not found!",
|
||||
"InvalidBusiness": "Business not found!",
|
||||
"InvalidHouse": "House not found!",
|
||||
"InvalidVehicle": "Vehicle not found!",
|
||||
"InvalidClan": "Clan not found!",
|
||||
"InvalidClanRank": "Clan rank not found!",
|
||||
"InvalidJob": "Job not found!",
|
||||
"InvalidItem": "Item not found!",
|
||||
"InvalidItemType": "Item type not found!",
|
||||
"InvalidRadioStation": "Radio station not found!",
|
||||
"InvalidGate": "Gate not found!",
|
||||
"EntersProperty": "opens the door and enters the {1}",
|
||||
"ExitsProperty": "opens the door and exits the {1}",
|
||||
"EnterExitPropertyDoorLocked": "tries to open the {1} door but fails because it's locked",
|
||||
"PropertyNoInterior": "This {1} does not have an interior, but you can still use commands at the door icon.",
|
||||
"NoBusinessWithItemType": "There is no business with that item available",
|
||||
"HeaderKeyBinds": "Key Binds",
|
||||
"HeaderAccountHelp": "Account Help",
|
||||
"HeaderVehicleHelp": "Vehicle Help",
|
||||
"HeaderVehicleDealershipHelp": "Vehicle Dealership Help",
|
||||
"HeaderJobHelp": "Job Help",
|
||||
"HeaderChatHelp": "Chat Help",
|
||||
"HeaderServerRules": "Server Rules",
|
||||
"HeaderWebsiteInfo": "Website",
|
||||
"HeaderDiscordInfo": "Discord",
|
||||
"HeaderAnimationsList": "Animation List",
|
||||
"HeaderPayAndSprayHelp": "Pay and Spray Help",
|
||||
"HeaderAmmunationHelp": "Ammunation Help",
|
||||
"HeaderVehicleTuneupHelp": "Vehicle Tune Help",
|
||||
"HeaderBindableKeysHelp": "Bindable Keys",
|
||||
"HeaderSkinHelp": "Clothes/Skin Help",
|
||||
"HeaderBusinessHelp": "Business Help",
|
||||
"HeaderClanHelp": "Clan Help",
|
||||
"HeaderPlayerVehiclesList": "Player Vehicles ({1})",
|
||||
"HeaderPlayerBusinessesList": "Player Businesses ({1})",
|
||||
"HeaderClansList": "Clan List",
|
||||
"HeaderAdminsList": "Admin List",
|
||||
"HeaderBadgeInfo": "Badge Information",
|
||||
"HeaderAccentsList": "Accent List",
|
||||
"HeaderPlayerInfo": "Player Information ({1})",
|
||||
"HeaderWealthandTaxHelp": "Wealth and Tax Information",
|
||||
"HeaderCommandInfo": "Command Information ({1})",
|
||||
"HeaderRadioHelp": "Radio Help",
|
||||
"HeaderRadioStationsList": "Radio Stations",
|
||||
"HeaderKeyBindsList": "Key Binds List",
|
||||
"RadioVolumeChanged": "{1} You changed your streaming radio volume to {2}%",
|
||||
"VolumeLevelNotNumber": "The volume level must be a number",
|
||||
"RadioStationLocationInvalid": "You must be in a vehicle, house, or business or have a personal device to change the station!",
|
||||
"ActionBusinessRadioStationChange": "changes the business radio station to {1} ({2})",
|
||||
"ActionHouseRadioStationChange": "changes the house radio station to {1} ({2})",
|
||||
"ActionVehicleRadioStationChange": "changes the vehicle radio station to {1} ({2})",
|
||||
"ActionItemRadioStationChange": "changes the {1}'s station to {2} ({3})",
|
||||
"RandomVehicleCommandsDisabled": "This is a random traffic vehicle and commands can't be used for it.",
|
||||
"HouseDoorLock": "House {1} {2}!",
|
||||
"BusinessDoorLock": "Business {1} {2}!",
|
||||
"ServerGameModeRestarting": "The server game mode is restarting!",
|
||||
"HeaderSelfItemList": "Your Inventory",
|
||||
"HeaderPlayerItemList": "Player Inventory ({1})",
|
||||
"HeaderHouseItemList": "House Inventory",
|
||||
"HeaderBusinessFloorItemList": "Business Inventory (For Sale)",
|
||||
"HeaderBusinessStorageItemList": "Business Inventory (Storage)",
|
||||
"HeaderItemItemList": "{1}'s Inventory",
|
||||
"ItemSlotNotNumber": "The item slot must be a number",
|
||||
"ItemSlotMustBeBetween": "The item slot must be between {1} and {2}!",
|
||||
"UseItemBugged": "The item you're trying to use is bugged. A bug report has been sent to the server developers.",
|
||||
"PickupItemBugged": "The item you're trying to pickup is bugged. A bug report has been sent to the server developers.",
|
||||
"DropItemBugged": "The item you're trying to drop is bugged. A bug report has been sent to the server developers.",
|
||||
"HandsBusy": "Your hands are busy",
|
||||
"CantUseItemInSkinChange": "You can't use an item while customizing your appearance",
|
||||
"CantDropItemInSkinChange": "You can't drop an item while customizing your appearance",
|
||||
"CantPickupItemInSkinChange": "You can't pickup an item while customizing your appearance",
|
||||
"CantSwitchItemInSkinChange": "You can't switch an item while customizing your appearance",
|
||||
"CantGiveItemInSkinChange": "You can't give an item while customizing your appearance",
|
||||
"CantTakeItemInSkinChange": "You can't take an item while customizing your appearance",
|
||||
"ItemUnequippableNoAmmo": "The {1} in slot {2} has no ammo, and can't be equipped!",
|
||||
"NoSpaceSelfInventory": "You don't have any more space in your inventory",
|
||||
"Business": "business",
|
||||
"House": "house",
|
||||
"Clan": "clan",
|
||||
"Vehicle": "vehicle",
|
||||
"Item": "item",
|
||||
"ItemType": "item type",
|
||||
"Gate": "gate",
|
||||
"Door": "door",
|
||||
"ClanRank": "clan rank",
|
||||
"JobRank": "job rank",
|
||||
"RadioStation": "radio station",
|
||||
"Months": [
|
||||
"January",
|
||||
"February",
|
||||
"March",
|
||||
"April",
|
||||
"May",
|
||||
"June",
|
||||
"July",
|
||||
"August",
|
||||
"September",
|
||||
"October",
|
||||
"November",
|
||||
"December"
|
||||
],
|
||||
"WeekDays": [
|
||||
"Sunday",
|
||||
"Monday",
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday"
|
||||
],
|
||||
"CardinalDirections": [
|
||||
"North",
|
||||
"Northeast",
|
||||
"East",
|
||||
"Southeast",
|
||||
"South",
|
||||
"Southwest",
|
||||
"West",
|
||||
"Northwest"
|
||||
],
|
||||
"NewPlayerReadyToPlay": [
|
||||
"You have been given some cash. Use {1} to find places to buy items.",
|
||||
"If you need money, jobs are the yellow dots on the radar.",
|
||||
"For a car, visit the car dealership. You can also use a rental vehicle near spawn or take the train",
|
||||
"Be sure to read the {1} and use {2} for info."
|
||||
],
|
||||
"YourCurrentVehicleDeleted": "The vehicle you were in was deleted.",
|
||||
"Distance": "Distance",
|
||||
"Meters": "Meters",
|
||||
"Feet": "Feet",
|
||||
"Kilometers": "Kilometers",
|
||||
"Miles": "Miles",
|
||||
"MustBeVehicleDriver": "You must be the driver of the vehicle!",
|
||||
"PlayerJoinedServer": "{1} has joined the game from {1}!",
|
||||
"PlayerLeftServer": "{1} has left the game! ({1})",
|
||||
"DisconnectReasons": [
|
||||
"Lost Connection",
|
||||
"Disconnected",
|
||||
"Unsupported Client",
|
||||
"Wrong Game",
|
||||
"Incorrect Password",
|
||||
"Unsupported Executable",
|
||||
"Disconnected",
|
||||
"Banned",
|
||||
"Failed",
|
||||
"Invalid Name",
|
||||
"Crashed"
|
||||
],
|
||||
"TakeItemFromHouse": "takes a {1} from the house",
|
||||
"TakeItemFromBusinessStorage": "takes a {1} from the business storage",
|
||||
"TakeItemFromBusiness": "takes a {1} from the business",
|
||||
"TakeItemFromItem": "takes a {1} from the {2}",
|
||||
"TakeItemFromVehicleTrunk": "takes a {1} from the trunk",
|
||||
"TakeItemFromVehicleDash": "takes a {1} from the glove compartment",
|
||||
"JobEquipmentInventoryKeyBindTip": "The job equipment is in your inventory. Press {1} to see them.",
|
||||
"JobEquipmentInventoryCommandTip": "The job equipment is in your inventory. Use {1} to see them.",
|
||||
"AccountHelp": [
|
||||
"Do NOT share your password with anybody else. {1} staff will never ask you for your password",
|
||||
"Use {1} to change your password, and {2} if you forgot it",
|
||||
"Some settings you can use: {1}"
|
||||
],
|
||||
"VehicleHelp": [
|
||||
"Your personal vehicles will save wherever you or somebody else leaves them!",
|
||||
"Visit dealerships to buy new vehicles (Use {1} for more information)",
|
||||
"Some commands: {1}",
|
||||
"Visit a mechanic garage to repair, colour, and tune up your car! {1} for info"
|
||||
],
|
||||
"VehicleDealershipHelp": [
|
||||
"Visit a vehicle dealer to buy new vehicles. Use {1} to find one.",
|
||||
"At the dealer, enter a car you want to buy, and the price will be shown to you",
|
||||
"If you want to buy the vehicle, use {1} and you will be given keys to test drive it around the parking lot.",
|
||||
"Drive away from the dealership with the new vehicle to confirm the purchase."
|
||||
],
|
||||
"JobHelp": [
|
||||
"Visit job locations to get a job and earn money. Look for yellow spots on the map",
|
||||
"At a job location, use {1} to get the job. Use {2} to quit your job",
|
||||
"Use {1} to begin working. You can also get a job {2} and {3}",
|
||||
"Most job vehicles are locked. Use {1} near one to enter it.",
|
||||
"When entering a job vehicle, information on how to do the job will be shown to you."
|
||||
],
|
||||
"ChatHelp": [
|
||||
"There are two main types of chat: out-of-character (OOC) and in-character (IC)",
|
||||
"Mixing these two types is not proper roleplay. See {1} for info.",
|
||||
"Some chat commands: {1}",
|
||||
"Some have shorter names available ({1} to talk, {2} to shout, etc)"
|
||||
],
|
||||
"ServerRulesHelp": [
|
||||
"Unrealistic actions (powergaming) are not allowed. You aren't superman.",
|
||||
"No terrorist or terrorism roleplay is allowed.",
|
||||
"Always follow instructions given by moderators and admins.",
|
||||
"Do not mix the chats (metagaming). You can't use info in IC that was received OOC",
|
||||
"Keep English in main chats. If you aren't good at English, use {1}"
|
||||
],
|
||||
"AnimationHelp": [
|
||||
"Animations allow you to enhance roleplay with visual actions",
|
||||
"Use {1} or {2} with a name to use an animation.",
|
||||
"To see a list of animations, use {1}"
|
||||
],
|
||||
"WeaponHelp": [
|
||||
"Visit an gun store to buy weapons. Use {1} to find one.",
|
||||
"Buying a weapon requires a weapon license.",
|
||||
"Weapon licenses are managed by the police department. Apply there to get one.",
|
||||
"Weapons can also be purchased illegally from some businesses, weapon dealers, and clans."
|
||||
],
|
||||
"SkinHelp": [
|
||||
"At a clothing store, use {1} to purchase clothes",
|
||||
"When you have a clothing item, equip and use it like any other item to show the skin selection (check {1} to learn how to use items)",
|
||||
"Some skins are restricted to jobs, clans, or for other reasons."
|
||||
],
|
||||
"KeyBindHelp": [
|
||||
"You can set your own key binds. Use {1} to see your binded keys.",
|
||||
"Use {1} to add a new keybind and {2} to remove one.",
|
||||
"Default keys are: {1} for vehicle engine, {2} for lights, and {3} for lock/unlock",
|
||||
"Press {1} to see your items and {2} to equip an item or {3} to unequip all.",
|
||||
"Press {1} to use the item you're holding, press {2} to drop it, or press {3} to pickup an item from the ground."
|
||||
],
|
||||
"BusinessHelp": [
|
||||
"Use {1} to purchase items or {2} to see a list of what's for sale at any business",
|
||||
"Businesses are shown with blue names above the icon at their entrance.",
|
||||
"Business owner commands: {1}",
|
||||
"A new car for sale will appear when you drive away from the dealer."
|
||||
],
|
||||
"ClanHelp": [
|
||||
"Ask an administrator to create a clan (Similar to factions/groups/families)",
|
||||
"Clan owners have full control over their clan once it's created",
|
||||
"Clan commands: {1}",
|
||||
"More clan commands: {1}"
|
||||
],
|
||||
"RadioStationHelp": [
|
||||
"Use {1} to set the station for your vehicle, house, or business",
|
||||
"Use {2} to see a list of stations",
|
||||
"You can change your radio streaming volume using {1} with 0-100 as the percent"
|
||||
],
|
||||
"WealthAndTaxHelp": [
|
||||
"Your taxes on payday are {1} percent of your calculated wealth.",
|
||||
"Your calculated wealth is a total sum based on how many vehicles, houses, and businesses you have.",
|
||||
"Each vehicle is {1}, each house is {2}, and each business is {3}",
|
||||
"Use {1} to see your current wealth, and {2} to see how much you'll pay in tax each payday"
|
||||
],
|
||||
"MustBeInAVehicle": "You need to be in a vehicle!",
|
||||
"MustBeInOrNearVehicle": "You need to be in or near a vehicle!",
|
||||
"MustBeInVehicleFrontSeat": "You need to be in the vehicle front seats!",
|
||||
"MustBeInVehicleDriverSeat": "You need to be the driver!",
|
||||
"DontHaveVehicleKey": "You don't have a key for this vehicle!",
|
||||
"NoGateAccess": "You don't have access to this gate!",
|
||||
"GateBroken": "This gate is broken!",
|
||||
"GateHacked": "The gate does not respond!",
|
||||
"RadioJammed": "You hear only static from the radio.",
|
||||
"VehicleNotForSale": "This vehicle is not for sale!",
|
||||
"VehicleNotForRent": "This vehicle is not for rent!",
|
||||
"BusinessNotForSale": "This business is not for sale!",
|
||||
"BusinessNotForRent": "This business is not for rent!",
|
||||
"HouseNotForSale": "This house is not for sale!",
|
||||
"HouseNotForRent": "This house is not for rent!",
|
||||
"DealershipPurchaseTestDrive": "Drive the vehicle away from the dealership to buy it, or get out to cancel.",
|
||||
"DealershipPurchaseExitedVehicle": "You canceled the vehicle purchase by exiting the vehicle!",
|
||||
"VehiclePurchaseComplete": "This vehicle is now yours! It will save wherever you leave it.",
|
||||
"VehiclePurchaseNotEnoughMoney": "You don't have enough money to buy this vehicle!",
|
||||
"HousePurchaseNotEnoughMoney": "You don't have enough money to buy this house!",
|
||||
"BusinessPurchaseNotEnoughMoney": "You don't have enough money to buy this business!",
|
||||
"Locales": {
|
||||
"English": "English",
|
||||
"Russian": "Russian",
|
||||
"Spanish": "Spanish",
|
||||
"German": "German",
|
||||
"Dutch": "Dutch",
|
||||
"Polish": "Polish"
|
||||
},
|
||||
|
||||
"ADDED-21JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
|
||||
"HeaderPlayerHousesList": "Player Houses ({1})",
|
||||
"HeaderPlayerStaffFlagsList": "Player Staff Flags ({1})",
|
||||
"HeaderStaffFlagsList": "Staff Flags",
|
||||
"NonRPName": "Non-RP name! Choose a new one:",
|
||||
"InvalidStaffFlag": "Staff flag not found!",
|
||||
"InvalidClanFlag": "Clan flag not found!",
|
||||
"InvalidLocale": "Language not found!",
|
||||
"HeaderJobUniformList": "Job Uniforms ({1})",
|
||||
"HeaderJobEquipmentList": "Job Equipment ({1})",
|
||||
"InvalidJobUniform": "Job uniform not found!",
|
||||
"InvalidJobEquipment": "Job equipment not found!",
|
||||
"HeaderVehiclesInRangeList": "Vehicles within {1}",
|
||||
"NoVehiclesWithInRange": "There are no vehicles within {1}",
|
||||
"AmountNotNumber": "The amount must be a number!",
|
||||
"NeedToBeWorking": "You need to be working! Use {1} at a job location or near a job vehicle.",
|
||||
"NeedToBeOnJobRoute": "You need to be doing a job route! Use {1} in a job vehicle",
|
||||
"CurrentJobRouteDeleted": "The job route you were on has been deleted by an admin",
|
||||
"CurrentJobRouteVehicleColoursChanged": "Your job route's vehicle colours were changed by an admin",
|
||||
"NotYourJob": "This is not your job!",
|
||||
"JobPoints": "You can get a job by going the yellow points on the map.",
|
||||
"QuitJobToTakeAnother": "If you want this job, use {1} to quit your current job.",
|
||||
"NotAJobVehicle": "This is not a job vehicle!",
|
||||
"NotYourJobVehicle": "This is not your job's vehicle!",
|
||||
"JobRouteDisabled": "The job route you were on has been disabled by an admin",
|
||||
"HeaderPickupTypes": "Pickup Types",
|
||||
"HeaderBlipTypes": "Map Icon Types",
|
||||
"InvalidGPSLocation": "There are no locations with that name or type",
|
||||
"HeaderBusinessList": "Businesses",
|
||||
"VehicleForSale": "This {1} is buyable for {2}! Use {3} if you want to buy it",
|
||||
"VehicleForRent": "This {1} is rentable for {2}! Use {3} if you want to rent it",
|
||||
|
||||
"ADDED-31JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
|
||||
"LoginFailedInvalidPassword": "Invalid password! {1} attempts remaining",
|
||||
"LoginFailedNoPassword": "You must enter a password! ! {1} attempts remaining",
|
||||
"RegistrationFailedNoPassword": "You must enter a password!",
|
||||
"RegistrationFailedNoPasswordConfirm": "You must confirm the password!",
|
||||
"RegistrationFailedNoEmail": "You must enter an email!",
|
||||
"AccountNameAlreadyRegistered": "Your name is already registered!",
|
||||
"AlreadyLoggedIn": "You are already logged in!",
|
||||
"RegistrationFailedInvalidEmail": "That email is invalid!",
|
||||
"RegistrationFailedPasswordMismatch": "The passwords don't match!",
|
||||
"RegistrationFailedCreateError": "Your account couldn't be created!",
|
||||
"RegistrationSuccess": "Your account has been created!",
|
||||
"RegistrationEmailVerifyReminder": "Don't forget to verify your email! A verification code has been sent to you.",
|
||||
"RegistrationCreateCharReminder": "To play on the server, you will need to make a character.",
|
||||
"NoCharactersGUIMessage": "You have no characters. Would you like to make one?",
|
||||
"NoCharactersGUIWindowTitle": "No characters",
|
||||
"NoCharactersChatMessage": "You have no characters. Use {1} to make one.",
|
||||
"NeedEmailFor2FA": "You need to add your email to your account to use two-factor authentication.",
|
||||
"NeedEmailVerifiedFor2FA": "You need to verify your email to use two-factor authentication.",
|
||||
"SetEmailHelpTip": "Use {1} to set your email.",
|
||||
"VerifyEmailHelpTip": "Use {1} to verify your email.",
|
||||
|
||||
"ADDED-13FEB2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
|
||||
"NearbyRadio": "Nearby radio",
|
||||
"FromRadio": "From radio",
|
||||
"ToRadio": "To radio",
|
||||
"NeedToEnterPropertyCommand": "You need to enter the {1} first! Use {2} to enter and exit",
|
||||
"NeedToEnterPropertyKeyPress": "You need to enter the {1} first! Press {2} to enter and exit",
|
||||
"InventoryFullCantCarry": "You don't have any space to carry this (full inventory)!",
|
||||
"NotEnoughCashNeedAmountMore": "You don't have enough money! You need {1} more!",
|
||||
"AmountMustBeMoreThan": "The amount must be more than {1}!",
|
||||
"WeaponBanned": "You are not allowed to buy or use weapons!",
|
||||
"TimeNotNumber": "The time must be a number",
|
||||
"HeaderDefaultBusinessItemTypes": "Business Item Templates",
|
||||
"FixingStuck": "Fixing your position and virtual world ...",
|
||||
"CantUseCommandYet": "You must wait before you can use this command again!",
|
||||
"NotATester": "You are not a tester!",
|
||||
"AccessDenied": "AccessDenied",
|
||||
"InvalidSkin": "That skin is invalid!",
|
||||
"HeaderInteriorTypes": "Interiors List",
|
||||
"ViewInventoryKeyPressTip": "Press {1} to see your items",
|
||||
"ViewInventoryCommandTip": "Use {1} to see your items",
|
||||
"GUIAccountSettingToggle": "You have turned {1} GUI",
|
||||
|
||||
"ADDED-23MAR2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations",
|
||||
"CarCommandHelp": "You can buy a car by visiting a vehicle dealership. Use {1} for more information.",
|
||||
"SkinCommandHelp": "You can change your skin by visiting a clothes store. Use {1} for more info.",
|
||||
"BusinessVehiclesRespawned": "All business vehicles have been respawned by an admin!",
|
||||
"JobVehiclesRespawned": "All job vehicles have been respawned by an admin!",
|
||||
"PlayerVehiclesRespawned": "All player vehicles have been respawned by an admin!",
|
||||
"ClanVehiclesRespawned": "All clan vehicles have been respawned by an admin!",
|
||||
"PublicVehiclesRespawned": "All public have been respawned by an admin!",
|
||||
"EmptyVehiclesRespawned": "All empty vehicles have been respawned by an admin!",
|
||||
"AllVehiclesRespawned": "All vehicles have been respawned by an admin!",
|
||||
"AllVehiclesReloaded": "All vehicles have been reloaded by an admin!",
|
||||
"YourVehicleRespawned": "Your vehicle has been respawned!",
|
||||
"PlayerIPBanned": "{1} has been IP banned!",
|
||||
"PlayerCharacterBanned": "{1} has been character banned!",
|
||||
"PlayerSubNetBanned": "{1} has been subnet banned!",
|
||||
"CantModifyBusiness": "You can't manage or modify this business!",
|
||||
"CantModifyHouse": "You can't manage or modify this house!",
|
||||
"ServerTimeSet": "{1} set the time to {2}",
|
||||
"ServerWeatherSet": "{1} set the weather to {2}",
|
||||
"ServerSnowSet": "{1} turned falling snow {2} and ground snow {3}",
|
||||
"AllJobsReloaded": "All server jobs have been reloaded by an admin",
|
||||
"ServerLogoSet": "{1} turned the server logo image {2}",
|
||||
"ServerGUISet": "{1} turned GUI for this server {2}",
|
||||
"ServerBusinessBlipsSet": "{1} turned all business blips {2}",
|
||||
"ServerHouseBlipsSet": "{1} turned all house blips {2}",
|
||||
"ServerJobBlipsSet": "{1} turned all job blips {2}",
|
||||
"ServerBusinessPickupsSet": "{1} turned all business pickups {2}",
|
||||
"ServerHousePickupsSet": "{1} turned all house pickups {2}",
|
||||
"ServerJobPickupsSet": "{1} turned on all job pickups {2}",
|
||||
"BusinessBuyItemsLabel": "Use {1} to purchase items",
|
||||
"PropertyEnterCommandLabel": "Use {1} to enter",
|
||||
"PropertyEnterKeyPressLabel": "Press {1} to enter",
|
||||
"PropertyForSaleLabel": "For sale: ${1}",
|
||||
"PropertyForRentLabel": "For rent: ${1} every payday",
|
||||
"RemainingTaxPaidInMoney": "You covered the remaining taxes with ${1} in cash.",
|
||||
"LostMoneyFromTaxes": "You lost money since your taxes are more than your paycheck!",
|
||||
"NextPaycheckRepossessionWarning": "If you don't have enough cash to cover taxes on next paycheck, you will lose stuff!",
|
||||
"NotEnoughMoneyForTax": "You don't have enough money to cover your taxes!",
|
||||
"AssetsRepossessedForTax": "You lost {1} vehicles, {2} houses, and {3} businesses because you couldn't pay taxes!",
|
||||
"Closed": "Closed",
|
||||
"Open": "Open",
|
||||
"VehicleDealershipLabel": "Enter a vehicle as driver to buy it",
|
||||
"TakeJobLabel": "Use {1} to work here",
|
||||
"StartWorkLabel": "Use {1} to start working",
|
||||
"JobEquipAndUniformLabel": "Use {1} and {2} for job stuff, or {3} to stop working",
|
||||
"NotYourJobLabel": "You already have a different job. Use {1} if you want this one",
|
||||
"JobLabel": "{1} Job",
|
||||
"PaydayBonusSet": "{1} set the payday bonus to ${2}",
|
||||
"AllHousesReloaded": "All houses have been reloaded by an admin",
|
||||
"AllRadioStationsReloaded": "All radio stations have been reloaded by an admin!",
|
||||
"PlayerKicked": "{1} has been kicked from the server",
|
||||
"AllBusinessesReloaded": "All businesses have been reloaded by an admin!",
|
||||
"UnableToDoThat": "You aren't able to do that",
|
||||
"SetVehicleClanConfirmMessage": "Are you sure you want to give this vehicle to your clan?",
|
||||
"SetVehicleClanConfirmTitle": "Warning!",
|
||||
"SetItemPriceBelowOrderPriceMessage": "Are you sure you want to set the item price below it's order price? You will lose ${1} every purchase!",
|
||||
"SetItemPriceBelowOrderPriceTitle": "Warning!",
|
||||
"MustOwnVehicle": "You don't own this vehicle!"
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"TranslationProvidedBy": "PerikiyoXD",
|
||||
"LocaleEnglishName": "Español",
|
||||
"LocaleNativeName": "Inglés",
|
||||
"LocaleEnglishName": "Spanish",
|
||||
|
||||
"LocaleNativeName": "Español",
|
||||
"LocaleOffer": "Este servidor se encuentra disponible en Español. Utilice {1} para usarlo",
|
||||
"LocaleChanged1": "El idioma se ha configurado a {1}",
|
||||
"LocaleChanged2": "El servidor mostrará los mensajes en {1}",
|
||||
@@ -16,9 +17,9 @@
|
||||
"HelpAnimationHeader": "Ayuda de animaciones",
|
||||
"AccentNotFound": "Acento no encontrado",
|
||||
"AccentSet": "Acento establecido como {1}",
|
||||
"AnimationNotFound": "Esa animación no existe",
|
||||
"InvalidAnimation": "Esa animación no existe",
|
||||
"AnimationCommandTip": "Usa {1} para ver la lista de animaciones",
|
||||
"AnimationInvalidDistance": "La distancia debe ser un numero entre el 0 y el 3",
|
||||
"InvalidAnimationDistance": "La distancia debe ser un numero entre el 0 y el 3",
|
||||
"AnimationStopCommandTip": "Usa {1} para detener la animación actual",
|
||||
"CantBanClient": "No se puede vetar a esta persona",
|
||||
"PlayerAccountBanned": "La cuenta de {1} ha sido vetada",
|
||||
@@ -269,7 +270,7 @@
|
||||
"KeyBindHelp": [
|
||||
"Puedes establecer tus propias combinaciones de teclas. Utilice {1} para ver sus teclas vinculadas",
|
||||
"Utilice {1} para añadir una nueva combinación de teclas y {2} para eliminar una",
|
||||
"Las teclas por defecto son: {1} para el motor del vehículo, {1} para las luces y {3} para el bloqueo/desbloqueo",
|
||||
"Las teclas por defecto son: {1} para el motor del vehículo, {2} para las luces y {3} para el bloqueo/desbloqueo",
|
||||
"Pulsa {1} para ver tus objetos y {2} para equipar un objeto o {3} para desequipar todos",
|
||||
"Pulsa {1} para usar el objeto que tienes en la mano, pulsa {2} para dejarlo caer o pulsa {3} para recoger un objeto del suelo"
|
||||
],
|
||||
@@ -397,5 +398,65 @@
|
||||
"InvalidSkin": "That skin is invalid!",
|
||||
"HeaderInteriorTypes": "Interiors List",
|
||||
"ViewInventoryKeyPressTip": "Press {1} to see your items",
|
||||
"ViewInventoryCommandTip": "Use {1} to see your items"
|
||||
"ViewInventoryCommandTip": "Use {1} to see your items",
|
||||
"GUIAccountSettingToggle": "You have turned {1} GUI",
|
||||
|
||||
"ADDED-23MAR2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations",
|
||||
"CarCommandHelp": "You can buy a car by visiting a vehicle dealership. Use {1} for more information.",
|
||||
"SkinCommandHelp": "You can change your skin by visiting a clothes store. Use {1} for more info.",
|
||||
"BusinessVehiclesRespawned": "All business vehicles have been respawned by an admin!",
|
||||
"JobVehiclesRespawned": "All job vehicles have been respawned by an admin!",
|
||||
"PlayerVehiclesRespawned": "All player vehicles have been respawned by an admin!",
|
||||
"ClanVehiclesRespawned": "All clan vehicles have been respawned by an admin!",
|
||||
"PublicVehiclesRespawned": "All public have been respawned by an admin!",
|
||||
"EmptyVehiclesRespawned": "All empty vehicles have been respawned by an admin!",
|
||||
"AllVehiclesRespawned": "All vehicles have been respawned by an admin!",
|
||||
"AllVehiclesReloaded": "All vehicles have been reloaded by an admin!",
|
||||
"YourVehicleRespawned": "Your vehicle has been respawned",
|
||||
"PlayerIPBanned": "{1} has been IP banned!",
|
||||
"PlayerCharacterBanned": "{1} has been character banned!",
|
||||
"PlayerSubNetBanned": "{1} has been subnet banned!",
|
||||
"CantModifyBusiness": "You can't manage or modify this business",
|
||||
"CantModifyHouse": "You can't manage or modify this house",
|
||||
"ServerTimeSet": "{1} set the time to {2}",
|
||||
"ServerWeatherSet": "{1} set the weather to {2}",
|
||||
"ServerSnowSet": "{1} turned falling snow {2} and ground snow {3}",
|
||||
"AllJobsReloaded": "All server jobs have been reloaded by an admin",
|
||||
"ServerLogoSet": "{1} turned the server logo image {2}",
|
||||
"ServerGUISet": "{1} turned GUI for this server {2}",
|
||||
"ServerBusinessBlipsSet": "{1} turned all business blips {2}",
|
||||
"ServerHouseBlipsSet": "{1} turned all house blips {2}",
|
||||
"ServerJobBlipsSet": "{1} turned all job blips {2}",
|
||||
"ServerBusinessPickupsSet": "{1} turned all business pickups {2}",
|
||||
"ServerHousePickupsSet": "{1} turned all house pickups {2}",
|
||||
"ServerJobPickupsSet": "{1} turned on all job pickups {2}",
|
||||
"BusinessBuyItemsLabel": "Use {1} to purchase items",
|
||||
"PropertyEnterCommandLabel": "Use {1} to enter",
|
||||
"PropertyEnterKeyPressLabel": "Press {1} to enter",
|
||||
"PropertyForSaleLabel": "For sale: ${1}",
|
||||
"PropertyForRentLabel": "For rent: ${1} every payday",
|
||||
"RemainingTaxPaidInMoney": "You covered the remaining taxes with ${1} in cash.",
|
||||
"LostMoneyFromTaxes": "You lost money since your taxes are more than your paycheck!",
|
||||
"NextPaycheckRepossessionWarning": "If you don't have enough cash to cover taxes on next paycheck, you will lose stuff!",
|
||||
"NotEnoughMoneyForTax": "You don't have enough money to cover your taxes!",
|
||||
"AssetsRepossessedForTax": "You lost {1} vehicles, {2} houses, and {3} businesses because you couldn't pay taxes!",
|
||||
"Closed": "Closed",
|
||||
"Open": "Open",
|
||||
"VehicleDealershipLabel": "Enter a vehicle as driver to buy it",
|
||||
"TakeJobLabel": "Use {1} to work here",
|
||||
"StartWorkLabel": "Use {1} to start working",
|
||||
"JobEquipAndUniformLabel": "Use {1} and {2} for job stuff, or {3} to stop working",
|
||||
"NotYourJobLabel": "You already have a different job. Use {1} if you want this one",
|
||||
"JobLabel": "{1} Job",
|
||||
"PaydayBonusSet": "{1} set the payday bonus to ${2}",
|
||||
"AllHousesReloaded": "All houses have been reloaded by an admin",
|
||||
"AllRadioStationsReloaded": "All radio stations have been reloaded by an admin!",
|
||||
"PlayerKicked": "{1} has been kicked from the server",
|
||||
"AllBusinessesReloaded": "All businesses have been reloaded by an admin!",
|
||||
"UnableToDoThat": "You aren't able to do that",
|
||||
"SetVehicleClanConfirmMessage": "Are you sure you want to give this vehicle to your clan?",
|
||||
"SetVehicleClanConfirmTitle": "Warning!",
|
||||
"SetItemPriceBelowOrderPriceMessage": "Are you sure you want to set the item price below it's order price? You will lose ${1} every purchase!",
|
||||
"SetItemPriceBelowOrderPriceTitle": "Warning!",
|
||||
"MustOwnVehicle": "You don't own this vehicle!"
|
||||
}
|
||||
|
||||
15
meta.xml
15
meta.xml
@@ -56,19 +56,6 @@
|
||||
<script src="scripts/server/core.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/command.js" type="server" language="javascript" />
|
||||
|
||||
<!-- Server Business Scripts -->
|
||||
<script src="scripts/server/business/bakery.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/business/bar.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/business/burger.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/business/clothing.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/business/club.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/business/fuel.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/business/mechanic.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/business/pizza.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/business/restaurant.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/business/vehicle.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/business/weapon.js" type="server" language="javascript" />
|
||||
|
||||
<!-- Server Job Scripts -->
|
||||
<script src="scripts/server/job/bus.js" type="server" language="javascript" />
|
||||
<script src="scripts/server/job/drug.js" type="server" language="javascript" />
|
||||
@@ -124,6 +111,7 @@
|
||||
<script src="scripts/client/job.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/logo.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" />
|
||||
@@ -135,6 +123,7 @@
|
||||
<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/utilities.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" />
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
// TYPE: Client (JavaScript)
|
||||
// ===========================================================================
|
||||
|
||||
// Init AFK script
|
||||
function initAFKScript() {
|
||||
logToConsole(LOG_DEBUG, "[VRR.AFK]: Initializing AFK script ...");
|
||||
logToConsole(LOG_DEBUG, "[VRR.AFK]: AFK script initialized!");
|
||||
@@ -14,12 +15,14 @@ function initAFKScript() {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
// Process stuff when game loses focus
|
||||
function processLostFocusAFK(event) {
|
||||
sendServerNewAFKStatus(true);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
// Process stuff when game gains focus
|
||||
function processFocusAFK(event) {
|
||||
sendServerNewAFKStatus(false);
|
||||
}
|
||||
|
||||
@@ -7,45 +7,81 @@
|
||||
// TYPE: Client (JavaScript)
|
||||
// ===========================================================================
|
||||
|
||||
function makePedPlayAnimation(pedId, animGroup, animId, animType, animSpeed, loop, loopNoControl, freezeLastFrame, returnToOriginalPosition, freezePlayer) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Animation] Playing animation ${animGroup}/${animId} for ped ${pedId}`);
|
||||
function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
|
||||
let animationData = getAnimationData(animationSlot);
|
||||
logToConsole(LOG_DEBUG, `[VRR.Animation] Playing animation ${animationData[0]} for ped ${pedId}`);
|
||||
|
||||
let freezePlayer = false;
|
||||
switch(animationData.moveType) {
|
||||
case VRR_ANIMMOVE_FORWARD:
|
||||
setElementCollisionsEnabled(ped, false);
|
||||
setElementPosition(ped, getPosInFrontOfPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
|
||||
freezePlayer = true;
|
||||
break;
|
||||
|
||||
case VRR_ANIMMOVE_BACK:
|
||||
setElementCollisionsEnabled(ped, false);
|
||||
setElementPosition(ped, getPosBehindPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
|
||||
freezePlayer = true;
|
||||
break;
|
||||
|
||||
case VRR_ANIMMOVE_LEFT:
|
||||
setElementCollisionsEnabled(ped, false);
|
||||
setElementPosition(ped, getPosToLeftOfPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
|
||||
freezePlayer = true;
|
||||
break;
|
||||
|
||||
case VRR_ANIMMOVE_RIGHT:
|
||||
setElementCollisionsEnabled(ped, false);
|
||||
setElementPosition(ped, getPosToRightOfPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
|
||||
freezePlayer = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if(getGame() < VRR_GAME_GTA_IV) {
|
||||
if(animType == VRR_ANIMTYPE_NORMAL || animType == VRR_ANIMTYPE_SURRENDER) {
|
||||
if(animationData.animType == VRR_ANIMTYPE_NORMAL || animationData.animType == VRR_ANIMTYPE_SURRENDER) {
|
||||
if(getGame() == VRR_GAME_GTA_VC || getGame() == VRR_GAME_GTA_SA) {
|
||||
getElementFromId(pedId).clearAnimations();
|
||||
} else {
|
||||
getElementFromId(pedId).clearObjective();
|
||||
}
|
||||
getElementFromId(pedId).addAnimation(animGroup, animId);
|
||||
getElementFromId(pedId).addAnimation(animationData.groupId, animationData.animId);
|
||||
|
||||
if(getElementFromId(pedId) == localPlayer && freezePlayer == true) {
|
||||
inAnimation = true;
|
||||
setLocalPlayerControlState(false, false);
|
||||
localPlayer.collisionsEnabled = false;
|
||||
}
|
||||
} else if(animType == VRR_ANIMTYPE_BLEND) {
|
||||
} else if(animationData.animType == VRR_ANIMTYPE_BLEND) {
|
||||
getElementFromId(pedId).position = getElementFromId(pedId).position;
|
||||
getElementFromId(pedId).blendAnimation(animGroup, animId, animSpeed);
|
||||
getElementFromId(pedId).blendAnimation(animationData.groupId, animationData.animId, animationData.animSpeed);
|
||||
}
|
||||
} else {
|
||||
natives.requestAnims(animGroup);
|
||||
natives.taskPlayAnimNonInterruptable(getElementFromId(pedId), animId, animGroup, animSpeed, loop, loopNoControl, freezeLastFrame, returnToOriginalPosition, -1);
|
||||
natives.requestAnims(animationData.groupId);
|
||||
natives.taskPlayAnimNonInterruptable(getElementFromId(pedId), animationData.groupId, animationData.animId, animationData.animSpeed, boolToInt(animationData.infiniteLoop), boolToInt(animationData.infiniteLoopNoMovement), boolToInt(animationData.dontReturnToStartCoords), boolToInt(animationData.freezeLastFrame), -1);
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function forcePedAnimation(pedId, animGroup, animId, animType, animSpeed, loop, loopNoControl, freezeLastFrame, returnToOriginalPosition) {
|
||||
function forcePedAnimation(pedId, animSlot) {
|
||||
let animationData = getAnimationData(animSlot);
|
||||
|
||||
if(getGame() < VRR_GAME_GTA_IV) {
|
||||
forcedAnimation = [animGroup, animId];
|
||||
getElementFromId(pedId).position = getElementFromId(pedId).position;
|
||||
getElementFromId(pedId).addAnimation(animGroup, animId);
|
||||
getElementFromId(pedId).addAnimation(animationData.groupId, animationData.animId);
|
||||
|
||||
if(getElementFromId(pedId) == localPlayer) {
|
||||
inAnimation = true;
|
||||
setLocalPlayerControlState(false, false);
|
||||
localPlayer.collisionsEnabled = false;
|
||||
}
|
||||
} else {
|
||||
natives.requestAnims(animationData.groupId);
|
||||
natives.taskPlayAnimNonInterruptable(getElementFromId(pedId), animationData.groupId, animationData.animId, animationData.animSpeed, boolToInt(animationData.infiniteLoop), boolToInt(animationData.infiniteLoopNoMovement), boolToInt(animationData.dontReturnToStartCoords), boolToInt(animationData.freezeLastFrame), -1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,3 +109,13 @@ function makePedStopAnimation(pedId) {
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* @param {number} animationSlot - The slot index of the animation
|
||||
* @return {Array} The animation's data (array)
|
||||
*/
|
||||
function getAnimationData(animationSlot, gameId = getGame()) {
|
||||
return getGameConfig().animations[gameId][animationSlot];
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -18,6 +18,7 @@ class BusinessData {
|
||||
this.hasInterior = hasInterior;
|
||||
this.hasItems = hasItems;
|
||||
this.blipId = -1;
|
||||
this.labelInfoType = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +41,11 @@ function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel
|
||||
if(blipModel == -1) {
|
||||
if(businessData.blipId != -1) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been removed by the server`);
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
natives.removeBlipAndClearIndex(getBusinessData(businessId).blipId);
|
||||
} else {
|
||||
destroyElement(getElementFromId(blipId));
|
||||
}
|
||||
businessData.blipId = -1;
|
||||
//businesses.splice(businessData.index, 1);
|
||||
//setAllBusinessDataIndexes();
|
||||
@@ -50,19 +55,17 @@ function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel
|
||||
} else {
|
||||
if(businessData.blipId != -1) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been changed by the server`);
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
natives.setBlipCoordinates(businessData.blipId, businessData.entrancePosition);
|
||||
natives.changeBlipSprite(businessData.blipId, businessData.blipModel);
|
||||
natives.setBlipMarkerLongDistance(businessData.blipId, false);
|
||||
natives.setBlipAsShortRange(tempBusinessData.blipId, true);
|
||||
natives.changeBlipNameFromAscii(businessData.blipId, `${businessData.name.substr(0, 24)}${(businessData.name.length > 24) ? " ...": ""}`);
|
||||
}
|
||||
} else {
|
||||
let blipId = natives.addBlipForCoord(entrancePosition);
|
||||
if(blipId) {
|
||||
businessData.blipId = blipId;
|
||||
natives.changeBlipSprite(businessData.blipId, businessData.blipModel);
|
||||
natives.setBlipMarkerLongDistance(businessData.blipId, false);
|
||||
natives.setBlipAsShortRange(tempBusinessData.blipId, true);
|
||||
natives.changeBlipNameFromAscii(businessData.blipId, `${businessData.name.substr(0, 24)}${(businessData.name.length > 24) ? " ...": ""}`);
|
||||
let blipId = createGameBlip(tempBusinessData.blipModel, tempBusinessData.entrancePosition, tempBusinessData.name);
|
||||
if(blipId != -1) {
|
||||
tempBusinessData.blipId = blipId;
|
||||
}
|
||||
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
|
||||
}
|
||||
@@ -71,19 +74,15 @@ function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel
|
||||
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} doesn't exist. Adding ...`);
|
||||
let tempBusinessData = new BusinessData(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
|
||||
if(blipModel != -1) {
|
||||
let blipId = natives.addBlipForCoord(entrancePosition);
|
||||
if(blipId) {
|
||||
let blipId = createGameBlip(tempBusinessData.blipModel, tempBusinessData.entrancePosition, tempBusinessData.name);
|
||||
if(blipId != -1) {
|
||||
tempBusinessData.blipId = blipId;
|
||||
natives.changeBlipSprite(tempBusinessData.blipId, blipModel);
|
||||
natives.setBlipMarkerLongDistance(tempBusinessData.blipId, false);
|
||||
natives.setBlipAsShortRange(tempBusinessData.blipId, true);
|
||||
natives.changeBlipNameFromAscii(tempBusinessData.blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
|
||||
}
|
||||
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
|
||||
} else {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Business] Business ${businessId} has no blip.`);
|
||||
}
|
||||
businesses.push(tempBusinessData);
|
||||
getServerData().businesses.push(tempBusinessData);
|
||||
setAllBusinessDataIndexes();
|
||||
}
|
||||
}
|
||||
@@ -98,6 +97,9 @@ function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel
|
||||
function getBusinessData(businessId) {
|
||||
//let tempBusinessData = businesses.find((b) => b.businessId == businessId);
|
||||
//return (typeof tempBusinessData != "undefined") ? tempBusinessData[0] : false;
|
||||
|
||||
let businesses = getServerData().businesses;
|
||||
|
||||
for(let i in businesses) {
|
||||
if(businesses[i].businessId == businessId) {
|
||||
return businesses[i];
|
||||
@@ -110,8 +112,8 @@ function getBusinessData(businessId) {
|
||||
// ===========================================================================
|
||||
|
||||
function setAllBusinessDataIndexes() {
|
||||
for(let i in businesses) {
|
||||
businesses[i].index = i;
|
||||
for(let i in getServerData().businesses) {
|
||||
getServerData().businesses[i].index = i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,9 @@ let maxChatBoxHistory = 500;
|
||||
let scrollAmount = 1;
|
||||
let maxChatBoxLines = 6;
|
||||
|
||||
let chatAutoHideDelay = 0;
|
||||
let chatLastUse = 0;
|
||||
|
||||
let scrollUpKey = false;
|
||||
let scrollDownKey = false;
|
||||
|
||||
@@ -47,13 +50,21 @@ function unBindChatBoxKeys() {
|
||||
|
||||
function receiveChatBoxMessageFromServer(messageString, colour) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.ChatBox]: Received chatbox message from server: ${messageString}`);
|
||||
|
||||
// Just in case it's hidden by auto hide
|
||||
//setChatWindowEnabled(true);
|
||||
|
||||
let colouredString = replaceColoursInMessage(messageString);
|
||||
|
||||
if(bottomMessageIndex >= chatBoxHistory.length-1) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.ChatBox]: Changed colours in string: ${colouredString}`);
|
||||
|
||||
addToChatBoxHistory(colouredString, colour);
|
||||
//if(bottomMessageIndex >= chatBoxHistory.length-1) {
|
||||
message(colouredString, colour);
|
||||
bottomMessageIndex = chatBoxHistory.length-1;
|
||||
}
|
||||
addToChatBoxHistory(colouredString, colour);
|
||||
//}
|
||||
|
||||
chatLastUse = getCurrentUnixTimestamp();
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -64,6 +75,12 @@ function setChatScrollLines(amount) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setChatAutoHideDelay(delay) {
|
||||
chatAutoHideDelay = delay*1000;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function addToChatBoxHistory(messageString, colour) {
|
||||
chatBoxHistory.push([messageString, colour]);
|
||||
}
|
||||
@@ -105,6 +122,50 @@ function updateChatBox() {
|
||||
message("", COLOUR_WHITE);
|
||||
}
|
||||
}
|
||||
chatLastUse = getCurrentUnixTimestamp();
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function processMouseWheelForChatBox(mouseId, deltaCoordinates, flipped) {
|
||||
// There isn't a way to detect whether chat input is active, but mouse cursor is forced shown when typing so ¯\_(ツ)_/¯
|
||||
if(!gui.cursorEnabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!flipped) {
|
||||
if(deltaCoordinates.y > 0) {
|
||||
chatBoxScrollUp();
|
||||
} else {
|
||||
chatBoxScrollDown();
|
||||
}
|
||||
} else {
|
||||
if(deltaCoordinates.y > 0) {
|
||||
chatBoxScrollDown();
|
||||
} else {
|
||||
chatBoxScrollUp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function checkChatAutoHide() {
|
||||
return false;
|
||||
|
||||
// Make sure chat input isn't active
|
||||
if(gui.cursorEnabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Don't process auto-hide if it's disabled
|
||||
if(chatAutoHideDelay == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(getCurrentUnixTimestamp()-chatLastUse >= chatAutoHideDelay) {
|
||||
setChatWindowEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -51,6 +51,8 @@ function addAllEventHandlers() {
|
||||
addEventHandler("OnFocus", onFocus);
|
||||
|
||||
addEventHandler("OnCameraProcess", onCameraProcess);
|
||||
|
||||
addEventHandler("OnMouseWheel", onMouseWheel);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -95,6 +97,7 @@ function onProcess(event, deltaTime) {
|
||||
processGameSpecifics();
|
||||
processNearbyPickups();
|
||||
processVehiclePurchasing();
|
||||
//checkChatBoxAutoHide(); // Will be uncommented on 1.4.0 GTAC update
|
||||
//processVehicleFires();
|
||||
}
|
||||
|
||||
@@ -217,18 +220,19 @@ function onFocus(event) {
|
||||
// ===========================================================================
|
||||
|
||||
function onLocalPlayerSwitchWeapon(oldWeapon, newWeapon) {
|
||||
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function onCameraProcess(event) {
|
||||
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function onChatOutput(event, messageText, colour) {
|
||||
//event.preventDefault();
|
||||
//receiveChatBoxMessageFromServer(messageText, colour);
|
||||
function onMouseWheel(event, mouseId, deltaCoordinates, flipped) {
|
||||
processMouseWheelForChatBox(mouseId, deltaCoordinates, flipped);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -29,27 +29,6 @@ let textInputAlpha = 180;
|
||||
|
||||
let guiReady = false;
|
||||
|
||||
let guiSubmitKey = false;
|
||||
let guiLeftKey = false;
|
||||
let guiRightKey = false;
|
||||
let guiUpKey = false;
|
||||
let guiDownKey = false;
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
let placesOfOrigin = [
|
||||
"Liberty City",
|
||||
"Vice City",
|
||||
"Los Santos",
|
||||
"San Fierro",
|
||||
"Las Venturas",
|
||||
"San Andreas",
|
||||
"Blaine County",
|
||||
"Red County",
|
||||
"Bone County",
|
||||
"Other",
|
||||
];
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
let characterData = [];
|
||||
@@ -185,23 +164,23 @@ addNetworkEventHandler("vrr.switchCharacterSelect", function(firstName, lastName
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
addNetworkEventHandler("vrr.showError", function(errorMessage, errorTitle) {
|
||||
addNetworkEventHandler("vrr.showError", function(errorMessage, errorTitle, buttonText) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.GUI] Received request from server to show error window`);
|
||||
showError(errorMessage, errorTitle);
|
||||
showError(errorMessage, errorTitle, buttonText);
|
||||
});
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
addNetworkEventHandler("vrr.showPrompt", function(promptMessage, promptTitle) {
|
||||
addNetworkEventHandler("vrr.showPrompt", function(promptMessage, promptTitle, yesButtonText, noButtonText) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.GUI] Received request from server to show prompt window`);
|
||||
showYesNoPromptGUI(promptMessage, promptTitle);
|
||||
showYesNoPromptGUI(promptMessage, promptTitle, yesButtonText, noButtonText);
|
||||
});
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
addNetworkEventHandler("vrr.showInfo", function(infoMessage) {
|
||||
addNetworkEventHandler("vrr.showInfo", function(infoMessage, buttonText) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.GUI] Received request from server to show info dialog`);
|
||||
showInfo(infoMessage);
|
||||
showInfo(infoMessage, buttonText);
|
||||
});
|
||||
|
||||
// ===========================================================================
|
||||
@@ -292,29 +271,42 @@ function hideAllGUI() {
|
||||
// ===========================================================================
|
||||
|
||||
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) {
|
||||
guiSubmitKey();
|
||||
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) {
|
||||
guiLeftKey();
|
||||
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) {
|
||||
guiRightKey();
|
||||
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) {
|
||||
guiDownKey();
|
||||
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) {
|
||||
guiUpKey();
|
||||
logToConsole(LOG_DEBUG, `[VRR.GUI] Calling up key function`);
|
||||
guiUpKey.call();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,6 +163,10 @@ function showCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, ski
|
||||
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;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -211,6 +215,7 @@ function switchCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, s
|
||||
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;
|
||||
|
||||
@@ -63,12 +63,14 @@ function initErrorDialogGUI() {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function showErrorGUI(errorMessage, errorTitle) {
|
||||
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;
|
||||
errprDialog.window.title = errorTitle;
|
||||
errorDialog.window.shown = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -70,11 +70,13 @@ function closeInfoDialog() {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function showInfo(infoMessage, infoTitle) {
|
||||
function showInfo(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;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,28 @@ let login = {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
let loginHTML =
|
||||
`<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;
|
||||
};
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>`;
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function initLoginGUI() {
|
||||
logToConsole(LOG_DEBUG, `[VRR.GUI] Creating login GUI ...`);
|
||||
login.window = mexui.window(game.width/2-150, game.height/2-135, 300, 275, 'LOGIN', {
|
||||
@@ -164,9 +186,10 @@ function loginSuccess() {
|
||||
// ===========================================================================
|
||||
|
||||
function switchToPasswordResetGUI() {
|
||||
closeAllWindows();
|
||||
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing password reset dialog window`);
|
||||
showResetPasswordGUI();
|
||||
//closeAllWindows();
|
||||
//logToConsole(LOG_DEBUG, `[VRR.GUI] Showing password reset dialog window`);
|
||||
//showResetPasswordGUI();
|
||||
sendNetworkEventToServer("vrr.checkResetPassword", "");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ function initRegisterGUI() {
|
||||
register.window.titleBarIconSize = toVector2(0,0);
|
||||
register.window.titleBarHeight = 0;
|
||||
|
||||
register.window.image(5, 20, 290, 80, mainLogoPath, {
|
||||
register.window.image(5, 20, 290, 100, mainLogoPath, {
|
||||
focused: {
|
||||
borderColour: toColour(0, 0, 0, 0),
|
||||
},
|
||||
|
||||
@@ -48,7 +48,7 @@ function initYesNoDialogGUI() {
|
||||
},
|
||||
});
|
||||
|
||||
yesNoDialog.yesButton = yesNoDialog.window.button(5, 100, 197, 25, 'YES', {
|
||||
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),
|
||||
@@ -61,7 +61,7 @@ function initYesNoDialogGUI() {
|
||||
},
|
||||
}, yesNoDialogAnswerYes);
|
||||
|
||||
yesNoDialog.noButton = yesNoDialog.window.button(202, 105, 197, 25, 'NO', {
|
||||
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),
|
||||
@@ -78,11 +78,14 @@ function initYesNoDialogGUI() {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function showYesNoPromptGUI(promptMessage, promptTitle) {
|
||||
function showYesNoPromptGUI(promptMessage, promptTitle, yesButtonText, noButtonText) {
|
||||
closeAllWindows();
|
||||
logToConsole(LOG_DEBUG, `[VRR.GUI] Showing prompt window. Prompt: ${promptTitle} - ${promptMessage}`);
|
||||
mexui.setInput(true);
|
||||
yesNoDialog.messageLabel.text = promptMessage;
|
||||
yesNoDialog.yesButton.text = yesButtonText;
|
||||
yesNoDialog.noButton.text = noButtonText;
|
||||
yesNoDialog.window.title = promptTitle;
|
||||
yesNoDialog.window.shown = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,39 +22,60 @@ class HouseData {
|
||||
// ===========================================================================
|
||||
|
||||
function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupModel, hasInterior) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.House] Received house ${houseId} (${name}) from server`);
|
||||
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
if(getHouseData(houseId) != false) {
|
||||
let houseData = getHouseData(houseId);
|
||||
houseData.entrancePosition = entrancePosition;
|
||||
houseData.blipModel = blipModel;
|
||||
houseData.pickupModel = pickupModel;
|
||||
houseData.hasInterior = hasInterior;
|
||||
|
||||
logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId} already exists. Checking blip ...`);
|
||||
if(blipModel == -1) {
|
||||
if(houseData.blipId != -1) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId}'s blip has been removed by the server`);
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
natives.removeBlipAndClearIndex(getHouseData(houseId).blipId);
|
||||
getHouseData(houseId).blipId = -1;
|
||||
//houses.splice(getHouseData(houseId).index, 1);
|
||||
//setAllHouseDataIndexes();
|
||||
} else {
|
||||
if(getHouseData(houseId).blipId != -1) {
|
||||
natives.setBlipCoordinates(getHouseData(houseId).blipId, getHouseData(houseId).entrancePosition);
|
||||
natives.changeBlipSprite(getHouseData(houseId).blipId, getHouseData(houseId).blipModel);
|
||||
//natives.changeBlipNameFromAscii(getHouseData(houseId).blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
|
||||
} else {
|
||||
let blipId = natives.addBlipForCoord(entrancePosition);
|
||||
if(blipId) {
|
||||
getHouseData(houseId).blipId = blipId;
|
||||
natives.changeBlipSprite(blipId, blipModel);
|
||||
natives.setBlipMarkerLongDistance(blipId, false);
|
||||
destroyElement(getElementFromId(blipId));
|
||||
}
|
||||
houseData.blipId = -1;
|
||||
} else {
|
||||
logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId}'s blip is unchanged`);
|
||||
}
|
||||
} else {
|
||||
if(houseData.blipId != -1) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId}'s blip has been changed by the server`);
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
natives.setBlipCoordinates(houseData.blipId, houseData.entrancePosition);
|
||||
natives.changeBlipSprite(houseData.blipId, houseData.blipModel);
|
||||
natives.setBlipMarkerLongDistance(houseData.blipId, false);
|
||||
natives.setBlipAsShortRange(houseData.blipId, true);
|
||||
natives.changeBlipNameFromAscii(houseData.blipId, `${houseData.name.substr(0, 24)}${(houseData.name.length > 24) ? " ...": ""}`);
|
||||
}
|
||||
} else {
|
||||
let blipId = createGameBlip(houseData.blipModel, houseData.entrancePosition, houseData.name);
|
||||
if(blipId != -1) {
|
||||
houseData.blipId = blipId;
|
||||
}
|
||||
logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let tempHouseData = new HouseData(houseId, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
|
||||
logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId} doesn't exist. Adding ...`);
|
||||
let tempHouseData = new HouseData(houseId, entrancePosition, blipModel, pickupModel, hasInterior);
|
||||
if(blipModel != -1) {
|
||||
let blipId = natives.addBlipForCoord(entrancePosition);
|
||||
if(blipId) {
|
||||
let blipId = createGameBlip(tempHouseData.blipModel, tempHouseData.entrancePosition, "House");
|
||||
if(blipId != -1) {
|
||||
tempHouseData.blipId = blipId;
|
||||
natives.changeBlipSprite(blipId, blipModel);
|
||||
natives.setBlipMarkerLongDistance(blipId, false);
|
||||
//natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
|
||||
}
|
||||
logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
|
||||
} else {
|
||||
logToConsole(LOG_DEBUG, `[VRR.House] House ${houseId} has no blip.`);
|
||||
}
|
||||
houses.push(tempHouseData);
|
||||
getServerData().houses.push(tempHouseData);
|
||||
setAllHouseDataIndexes();
|
||||
}
|
||||
}
|
||||
@@ -66,16 +87,22 @@ function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupMode
|
||||
* @param {number} houseId - The ID of the house (initially provided by server)
|
||||
* @return {HouseData} The house's data (class instance)
|
||||
*/
|
||||
function getHouseData(houseId) {
|
||||
let tempHouseData = houses.find((h) => h.houseId == houseId);
|
||||
return (typeof tempHouseData != "undefined") ? tempHouseData : false;
|
||||
function getHouseData(houseId) {
|
||||
let houses = getServerData().houses;
|
||||
for(let i in houses) {
|
||||
if(houses[i].houseId == houseId) {
|
||||
return houses[i];
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setAllHouseDataIndexes() {
|
||||
for(let i in houses) {
|
||||
houses[i].index = i;
|
||||
for(let i in getServerData().houses) {
|
||||
getServerData().houses[i].index = i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,20 @@ let jobRouteLocationSphere = null;
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
class JobData {
|
||||
constructor(jobId, name, position, blipModel, pickupModel) {
|
||||
this.index = -1;
|
||||
this.jobId = jobId;
|
||||
this.name = name;
|
||||
this.position = position;
|
||||
this.blipModel = blipModel;
|
||||
this.pickupModel = pickupModel;
|
||||
this.blipId = -1;
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function initJobScript() {
|
||||
logToConsole(LOG_DEBUG, "[VRR.Job]: Initializing job script ...");
|
||||
logToConsole(LOG_DEBUG, "[VRR.Job]: Job script initialized!");
|
||||
@@ -22,14 +36,14 @@ function initJobScript() {
|
||||
// ===========================================================================
|
||||
|
||||
function setLocalPlayerJobType(tempJobType) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Main] Set local player job type to ${tempJobType}`);
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Set local player job type to ${tempJobType}`);
|
||||
localPlayerJobType = tempJobType;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setLocalPlayerWorkingState(tempWorking) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Main] Setting working state to ${tempWorking}`);
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Setting working state to ${tempWorking}`);
|
||||
localPlayerWorking = tempWorking;
|
||||
}
|
||||
|
||||
@@ -39,6 +53,7 @@ function showJobRouteLocation(position, colour) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Showing job route location`);
|
||||
if(getMultiplayerMod() == VRR_MPMOD_GTAC) {
|
||||
if(game.game == VRR_GAME_GTA_SA) {
|
||||
// Server-side spheres don't show in GTA SA for some reason.
|
||||
jobRouteLocationSphere = game.createPickup(1318, position, 1);
|
||||
} else {
|
||||
jobRouteLocationSphere = game.createSphere(position, 3);
|
||||
@@ -93,3 +108,89 @@ function hideJobRouteLocation() {
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function receiveJobFromServer(jobId, name, position, blipModel, pickupModel) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Received job ${jobId} (${name}) from server`);
|
||||
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
if(getJobData(jobId) != false) {
|
||||
let jobData = getJobData(jobId);
|
||||
jobData.name = name;
|
||||
jobData.position = position;
|
||||
jobData.blipModel = blipModel;
|
||||
jobData.pickupModel = pickupModel;
|
||||
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId} already exists. Checking blip ...`);
|
||||
if(blipModel == -1) {
|
||||
if(jobData.blipId != -1) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId}'s blip has been removed by the server`);
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
natives.removeBlipAndClearIndex(getJobData(jobId).blipId);
|
||||
} else {
|
||||
destroyElement(getElementFromId(blipId));
|
||||
}
|
||||
jobData.blipId = -1;
|
||||
} else {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId}'s blip is unchanged`);
|
||||
}
|
||||
} else {
|
||||
if(jobData.blipId != -1) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId}'s blip has been changed by the server`);
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
natives.setBlipCoordinates(jobData.blipId, jobData.position);
|
||||
natives.changeBlipSprite(jobData.blipId, jobData.blipModel);
|
||||
natives.setBlipMarkerLongDistance(jobData.blipId, false);
|
||||
natives.setBlipAsShortRange(jobData.blipId, true);
|
||||
natives.changeBlipNameFromAscii(jobData.blipId, `${jobData.name.substr(0, 24)}${(jobData.name.length > 24) ? " ...": ""}`);
|
||||
}
|
||||
} else {
|
||||
let blipId = createGameBlip(jobData.blipModel, jobData.position, jobData.name);
|
||||
if(blipId != -1) {
|
||||
jobData.blipId = blipId;
|
||||
}
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId} doesn't exist. Adding ...`);
|
||||
let tempJobData = new JobData(jobId, name, position, blipModel, pickupModel);
|
||||
if(blipModel != -1) {
|
||||
let blipId = createGameBlip(tempJobData.blipModel, tempJobData.position, tempJobData.name);
|
||||
if(blipId != -1) {
|
||||
tempJobData.blipId = blipId;
|
||||
}
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
|
||||
} else {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Job ${jobId} has no blip.`);
|
||||
}
|
||||
jobs.push(tempJobData);
|
||||
setAllJobDataIndexes();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* @param {number} job - The ID of the job (initially provided by server)
|
||||
* @return {JobData} The job's data (class instance)
|
||||
*/
|
||||
function getJobData(jobId) {
|
||||
for(let i in jobs) {
|
||||
if(jobs[i].jobId == jobId) {
|
||||
return jobs[i];
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setAllJobDataIndexes() {
|
||||
for(let i in jobs) {
|
||||
jobs[i].index = i;
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -78,9 +78,26 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
|
||||
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 = getScreenFromWorldPosition(tempPosition);
|
||||
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;
|
||||
@@ -88,7 +105,7 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
|
||||
|
||||
let text = "";
|
||||
if(price > "0") {
|
||||
text = `For sale: $${price}`;
|
||||
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);
|
||||
|
||||
@@ -97,7 +114,7 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
|
||||
|
||||
text = "";
|
||||
if(rentPrice != "0") {
|
||||
text = `For rent: $${rentPrice} every payday`;
|
||||
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);
|
||||
|
||||
@@ -106,9 +123,9 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
|
||||
|
||||
|
||||
if(isBusiness) {
|
||||
text = (locked) ? "CLOSED" : "OPEN";
|
||||
text = (locked) ? toUpperCase(getLocaleString("Closed")) : toUpperCase(getLocaleString("Open"));
|
||||
} else {
|
||||
text = (locked) ? "LOCKED" : "UNLOCKED";
|
||||
text = (locked) ? toUpperCase(getLocaleString("Locked")) : toUpperCase(getLocaleString("Unlocked"));
|
||||
}
|
||||
|
||||
if(!locked && labelInfoType != VRR_PROPLABEL_INFO_NONE) {
|
||||
@@ -116,18 +133,18 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
|
||||
switch(labelInfoType) {
|
||||
case VRR_PROPLABEL_INFO_ENTER:
|
||||
if(enterPropertyKey) {
|
||||
infoText = `Press ${toUpperCase(getKeyNameFromId(enterPropertyKey))} to enter`;
|
||||
infoText = getLocaleString("PropertyEnterCommandLabel", "/enter");
|
||||
} else {
|
||||
infoText = `Use /enter to enter`;
|
||||
infoText = getLocaleString("PropertyEnterKeyPressLabel", getKeyNameFromId(enterPropertyKey));
|
||||
}
|
||||
break;
|
||||
|
||||
case VRR_PROPLABEL_INFO_BUY:
|
||||
infoText = `Use /buy to purchase items`;
|
||||
infoText = getLocaleString("BusinessBuyItemsLabel", "/buy");
|
||||
break;
|
||||
|
||||
case VRR_PROPLABEL_INFO_BUYBIZ:
|
||||
infoText = `Use /buy to purchase items`;
|
||||
infoText = getLocaleString("PropertyForSaleLabel", price);
|
||||
break;
|
||||
|
||||
//case VRR_PROPLABEL_INFO_RENTBIZ:
|
||||
@@ -135,15 +152,15 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
|
||||
// break;
|
||||
|
||||
case VRR_PROPLABEL_INFO_BUYHOUSE:
|
||||
infoText = `Use /housebuy to buy this house`;
|
||||
infoText = getLocaleString("PropertyForSaleLabel", price);
|
||||
break;
|
||||
|
||||
case VRR_PROPLABEL_INFO_RENTHOUSE:
|
||||
infoText = `Use /houserent to rent this house`;
|
||||
infoText = getLocaleString("PropertyForRentLabel", rentPrice);
|
||||
break;
|
||||
|
||||
case VRR_PROPLABEL_INFO_ENTERVEH:
|
||||
infoText = "Enter a vehicle in the parking lot to buy it";
|
||||
infoText = getLocaleString("VehicleDealershipLabel");
|
||||
break;
|
||||
|
||||
case VRR_PROPLABEL_INFO_NONE:
|
||||
@@ -183,9 +200,26 @@ function renderPropertyExitLabel(position) {
|
||||
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 = getScreenFromWorldPosition(tempPosition);
|
||||
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;
|
||||
@@ -211,9 +245,26 @@ function renderJobLabel(name, position, jobType) {
|
||||
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 = getScreenFromWorldPosition(tempPosition);
|
||||
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;
|
||||
@@ -222,15 +273,15 @@ function renderJobLabel(name, position, jobType) {
|
||||
let text = "";
|
||||
if(jobType == localPlayerJobType) {
|
||||
if(localPlayerWorking) {
|
||||
text = "Use /uniform and /equip for job stuff, or /stopwork to go off duty";
|
||||
text = getLocaleString("JobEquipAndUniformLabel", "/equip", "/uniform", "/stopwork");
|
||||
} else {
|
||||
text = "Use /startwork to go on duty";
|
||||
text = getLocaleString("StartWorkLabel", "/startwork");
|
||||
}
|
||||
} else {
|
||||
if(localPlayerJobType == 0) {
|
||||
text = "Use /takejob to work here";
|
||||
text = getLocaleString("TakeJobLabel", "/takejob");
|
||||
} else {
|
||||
text = "You already have a job. Use /quitjob if you want this one";
|
||||
text = getLocaleString("NotYourJobLabel", "/quitjob");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,7 +290,7 @@ function renderJobLabel(name, position, jobType) {
|
||||
|
||||
screenPosition.y -= 18;
|
||||
|
||||
text = name + " Job";
|
||||
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);
|
||||
}
|
||||
@@ -250,11 +301,26 @@ function processLabelRendering() {
|
||||
if(renderLabels) {
|
||||
if(!areServerElementsSupported()) {
|
||||
if(localPlayer != null) {
|
||||
for(let i in businesses) {
|
||||
if(getDistance(localPlayer.position, businesses[i].entrancePosition) <= 75.0) {
|
||||
natives.drawColouredCylinder(getPosBelowPos(businesses[i].entrancePosition, 1.0), 0.0, 0.0, 0, 153, 255, 255);
|
||||
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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
31
scripts/client/locale.js
Normal file
31
scripts/client/locale.js
Normal file
@@ -0,0 +1,31 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: locale.js
|
||||
// DESC: Provides locale functions and usage
|
||||
// TYPE: Client (JavaScript)
|
||||
// ===========================================================================
|
||||
|
||||
function getLocaleString(stringName, ...args) {
|
||||
if(typeof getServerData().localeStrings[stringName] == undefined) {
|
||||
return "";
|
||||
}
|
||||
|
||||
let tempString = getServerData().localeStrings[stringName];
|
||||
|
||||
for(let i = 1; i <= args.length; i++) {
|
||||
tempString = tempString.replace(`{${i}}`, args[i-1]);
|
||||
}
|
||||
|
||||
return tempString;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function receiveLocaleStringFromServer(stringName, stringValue) {
|
||||
logToConsole(LOG_INFO, `[VRR.Locale]: Received locale string "${stringName}" from server (${stringValue})`);
|
||||
getServerData().localeStrings[stringName] = stringValue;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -27,7 +27,7 @@ let renderHotBar = true;
|
||||
let renderItemActionDelay = true;
|
||||
let renderInteriorLights = true;
|
||||
|
||||
let logLevel = LOG_ERROR|LOG_WARN|LOG_INFO;
|
||||
let logLevel = LOG_INFO|LOG_DEBUG|LOG_VERBOSE|LOG_WARN|LOG_ERROR;
|
||||
|
||||
let weaponDamageEnabled = {};
|
||||
let weaponDamageEvent = {};
|
||||
@@ -66,12 +66,21 @@ let vehiclePurchasePosition = null;
|
||||
|
||||
let forceWantedLevel = 0;
|
||||
|
||||
let guiSubmitKey = false;
|
||||
let guiLeftKey = false;
|
||||
let guiRightKey = false;
|
||||
let guiUpKey = false;
|
||||
let guiDownKey = false;
|
||||
|
||||
// Pre-cache all allowed skins
|
||||
let allowedSkins = getAllowedSkins(getGame());
|
||||
|
||||
let businesses = [];
|
||||
let houses = [];
|
||||
let jobs = [];
|
||||
let vehicles = [];
|
||||
let serverData = {
|
||||
houses: [],
|
||||
businesses: [],
|
||||
localeStrings: [],
|
||||
vehicles: [],
|
||||
jobs: [],
|
||||
};
|
||||
|
||||
// ===========================================================================
|
||||
@@ -7,7 +7,14 @@
|
||||
// TYPE: Client (JavaScript)
|
||||
// ===========================================================================
|
||||
|
||||
let smallGameMessageFont = null;
|
||||
let bigGameMessageFonts = {};
|
||||
let bigGameMessageFontName = "";
|
||||
let bigGameMessageText = "";
|
||||
let bigGameMessageColour = COLOUR_WHITE;
|
||||
let bigGameMessageTimer = null;
|
||||
|
||||
let smallGameMessageFonts = {};
|
||||
let smallGameMessageFontName = "";
|
||||
let smallGameMessageText = "";
|
||||
let smallGameMessageColour = COLOUR_WHITE;
|
||||
let smallGameMessageTimer = null;
|
||||
@@ -16,43 +23,50 @@ let smallGameMessageTimer = null;
|
||||
|
||||
function initMessagingScript() {
|
||||
logToConsole(LOG_DEBUG, "[VRR.Messaging]: Initializing messaging script ...");
|
||||
smallGameMessageFont = loadSmallGameMessageFont();
|
||||
smallGameMessageFonts = loadSmallGameMessageFonts();
|
||||
bigGameMessageFonts = loadSmallGameMessageFonts();
|
||||
logToConsole(LOG_DEBUG, "[VRR.Messaging]: Messaging script initialized!");
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function loadSmallGameMessageFont() {
|
||||
let tempSmallGameMessageFont = null;
|
||||
function loadSmallGameMessageFonts() {
|
||||
let tempSmallGameMessageFonts = {};
|
||||
let fontStream = openFile("files/fonts/pricedown.ttf");
|
||||
if(fontStream != null) {
|
||||
tempSmallGameMessageFont = lucasFont.createFont(fontStream, 20.0);
|
||||
tempSmallGameMessageFonts["Pricedown"] = lucasFont.createFont(fontStream, 20.0);
|
||||
fontStream.close();
|
||||
}
|
||||
|
||||
return tempSmallGameMessageFont;
|
||||
tempSmallGameMessageFonts["Roboto"] = lucasFont.createDefaultFont(20.0, "Roboto");
|
||||
tempSmallGameMessageFonts["RobotoLight"] = lucasFont.createDefaultFont(20.0, "Roboto", "Light");
|
||||
|
||||
return tempSmallGameMessageFonts;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function loadBigGameMessageFont() {
|
||||
let tempBigGameMessageFont = null;
|
||||
let tempBigGameMessageFonts = {};
|
||||
let fontStream = openFile("files/fonts/pricedown.ttf");
|
||||
if(fontStream != null) {
|
||||
tempBigGameMessageFont = lucasFont.createFont(fontStream, 28.0);
|
||||
tempBigGameMessageFonts["Pricedown"] = lucasFont.createFont(fontStream, 28.0);
|
||||
fontStream.close();
|
||||
}
|
||||
|
||||
return tempBigGameMessageFont;
|
||||
tempBigGameMessageFonts["Roboto"] = lucasFont.createDefaultFont(28.0, "Roboto");
|
||||
tempBigGameMessageFonts["RobotoLight"] = lucasFont.createDefaultFont(28.0, "Roboto", "Light");
|
||||
|
||||
return tempBigGameMessageFonts;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function processSmallGameMessageRendering() {
|
||||
if(renderSmallGameMessage) {
|
||||
if(smallGameMessageFont != null) {
|
||||
if(smallGameMessageFont != "") {
|
||||
smallGameMessageFont.render(smallGameMessageText, [0, game.height-90], game.width, 0.5, 0.0, smallGameMessageFont.size, smallGameMessageColour, true, true, false, true);
|
||||
if(smallGameMessageText != "") {
|
||||
if(smallGameMessageFonts[smallGameMessageFontName] != null) {
|
||||
smallGameMessageFonts[smallGameMessageFontName].render(smallGameMessageText, [0, game.height-90], game.width, 0.5, 0.0, smallGameMessageFonts[smallGameMessageFontName].size, smallGameMessageColour, true, true, false, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -60,12 +74,13 @@ function processSmallGameMessageRendering() {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function showSmallGameMessage(text, colour, duration) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Messaging] Showing small game message '${text}' for ${duration}ms`);
|
||||
function showSmallGameMessage(text, colour, duration, fontName) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Messaging] Showing small game message '${text}' using font ${fontName} for ${duration}ms`);
|
||||
if(smallGameMessageText != "") {
|
||||
clearTimeout(smallGameMessageTimer);
|
||||
}
|
||||
|
||||
smallGameMessageFontName = fontName;
|
||||
smallGameMessageColour = colour;
|
||||
smallGameMessageText = text;
|
||||
|
||||
@@ -73,6 +88,7 @@ function showSmallGameMessage(text, colour, duration) {
|
||||
smallGameMessageText = "";
|
||||
smallGameMessageColour = COLOUR_WHITE;
|
||||
smallGameMessageTimer = null;
|
||||
smallGameMessageFontName = "";
|
||||
}, duration);
|
||||
}
|
||||
|
||||
|
||||
@@ -51,8 +51,8 @@ function updatePlayerNameTag(clientName, characterName, colour, paused, ping) {
|
||||
if(game.game == VRR_GAME_GTA_IV) {
|
||||
let client = getPlayerFromParams(clientName);
|
||||
if(client != false) {
|
||||
if(client.player != null) {
|
||||
client.player.setNametag(characterName, colour);
|
||||
if(getPlayerPed(client) != null) {
|
||||
getPlayerPed(client).setNametag(characterName, colour);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -205,7 +205,7 @@ function updateNametags(element) {
|
||||
|
||||
function getClientFromPlayer(player) {
|
||||
getClients().forEach(function(client) {
|
||||
if(client.player == player) {
|
||||
if(getPlayerPed(client) == player) {
|
||||
return client;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -20,7 +20,11 @@ function getPlayerPosition() {
|
||||
// ===========================================================================
|
||||
|
||||
function setPlayerPosition(position) {
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
natives.setCharCoordinates(localPlayer, position);
|
||||
} else {
|
||||
localPlayer.position = position;
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -142,3 +146,46 @@ function getVehiclesInRange(position, range) {
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function createGameBlip(blipModel, position, name = "") {
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
let blipId = natives.addBlipForCoord(position);
|
||||
if(blipId) {
|
||||
natives.changeBlipSprite(blipId, blipModel);
|
||||
natives.setBlipMarkerLongDistance(blipId, false);
|
||||
natives.setBlipAsShortRange(blipId, true);
|
||||
natives.changeBlipNameFromAscii(blipId, `${name.substr(0, 24)}${(name.length > 24) ? " ...": ""}`);
|
||||
return blipId;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setEntityData(entity, dataName, dataValue, syncToClients = true) {
|
||||
if(entity != null) {
|
||||
return entity.setData(dataName, dataValue);
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function removeEntityData(entity, dataName) {
|
||||
if(entity != null) {
|
||||
return entity.removeData(dataName);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function doesEntityDataExist(entity, dataName) {
|
||||
if(entity != null) {
|
||||
return (entity.getData(dataName) != null);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -40,7 +40,7 @@ function setStreamingRadioVolume(volume) {
|
||||
// ===========================================================================
|
||||
|
||||
function playAudioFile(audioName, loop, volume) {
|
||||
playCustomAudio(audioName, volume/100, loop);
|
||||
findResourceByName("connectedrp-extra").exports.playCustomAudio(audioName, volume/100, loop);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -18,97 +18,114 @@ function initServerScript() {
|
||||
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.passenger", enterVehicleAsPassenger);
|
||||
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.clearPeds", clearLocalPlayerOwnedPeds);
|
||||
addNetworkEventHandler("vrr.restoreCamera", restoreLocalCamera);
|
||||
addNetworkEventHandler("vrr.cameraLookAt", setLocalCameraLookAt);
|
||||
addNetworkEventHandler("vrr.logo", setServerLogoRenderState);
|
||||
addNetworkEventHandler("vrr.ambience", setCityAmbienceState);
|
||||
addNetworkEventHandler("vrr.runCode", runClientCode);
|
||||
addNetworkEventHandler("vrr.clearWeapons", clearLocalPlayerWeapons);
|
||||
addNetworkEventHandler("vrr.giveWeapon", giveLocalPlayerWeapon);
|
||||
addNetworkEventHandler("vrr.position", setLocalPlayerPosition);
|
||||
addNetworkEventHandler("vrr.heading", setLocalPlayerHeading);
|
||||
addNetworkEventHandler("vrr.interior", setLocalPlayerInterior);
|
||||
addNetworkEventHandler("vrr.minuteDuration", setMinuteDuration);
|
||||
addNetworkEventHandler("vrr.showJobRouteLocation", showJobRouteLocation);
|
||||
addNetworkEventHandler("vrr.hideJobRouteLocation", hideJobRouteLocation);
|
||||
addNetworkEventHandler("vrr.snow", setSnowState);
|
||||
addNetworkEventHandler("vrr.health", setLocalPlayerHealth);
|
||||
addNetworkEventHandler("vrr.enterPropertyKey", setEnterPropertyKey);
|
||||
addNetworkEventHandler("vrr.skinSelect", toggleSkinSelect);
|
||||
addNetworkEventHandler("vrr.hotbar", updatePlayerHotBar);
|
||||
addNetworkEventHandler("vrr.pedSpeech", playPedSpeech);
|
||||
addNetworkEventHandler("vrr.clearPedState", clearLocalPedState);
|
||||
addNetworkEventHandler("vrr.drunkEffect", setLocalPlayerDrunkEffect);
|
||||
addNetworkEventHandler("vrr.showItemActionDelay", showItemActionDelay);
|
||||
addNetworkEventHandler("vrr.set2DRendering", setPlayer2DRendering);
|
||||
addNetworkEventHandler("vrr.mouseCursor", toggleMouseCursor);
|
||||
addNetworkEventHandler("vrr.mouseCamera", toggleMouseCamera);
|
||||
addNetworkEventHandler("vrr.mouseCameraForce", setMouseCameraState);
|
||||
addNetworkEventHandler("vrr.weaponDamageEnabled", setPlayerWeaponDamageEnabled);
|
||||
addNetworkEventHandler("vrr.weaponDamageEvent", setPlayerWeaponDamageEvent);
|
||||
addNetworkEventHandler("vrr.spawned", onServerSpawnedPlayer);
|
||||
addNetworkEventHandler("vrr.spawned", onServerSpawnedLocalPlayer);
|
||||
addNetworkEventHandler("vrr.money", setLocalPlayerCash);
|
||||
addNetworkEventHandler("vrr.armour", setLocalPlayerArmour);
|
||||
addNetworkEventHandler("vrr.wantedLevel", forceLocalPlayerWantedLevel);
|
||||
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);
|
||||
|
||||
addNetworkEventHandler("vrr.delKeyBind", unBindAccountKey);
|
||||
addNetworkEventHandler("vrr.addKeyBind", bindAccountKey);
|
||||
addNetworkEventHandler("vrr.clearKeyBinds", clearKeyBinds);
|
||||
|
||||
addNetworkEventHandler("vrr.nametag", updatePlayerNameTag);
|
||||
addNetworkEventHandler("vrr.ping", updatePlayerPing);
|
||||
|
||||
addNetworkEventHandler("vrr.m", receiveChatBoxMessageFromServer);
|
||||
addNetworkEventHandler("vrr.chatScrollLines", setChatScrollLines);
|
||||
// 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);
|
||||
|
||||
addNetworkEventHandler("vrr.veh.lights", setVehicleLights);
|
||||
addNetworkEventHandler("vrr.veh.engine", setVehicleEngine);
|
||||
addNetworkEventHandler("vrr.veh.repair", repairVehicle);
|
||||
// Key Bindings
|
||||
addNetworkEventHandler("vrr.delKeyBind", unBindAccountKey);
|
||||
addNetworkEventHandler("vrr.addKeyBind", bindAccountKey);
|
||||
addNetworkEventHandler("vrr.clearKeyBinds", clearKeyBinds);
|
||||
|
||||
addNetworkEventHandler("vrr.pedAnim", makePedPlayAnimation);
|
||||
addNetworkEventHandler("vrr.pedStopAnim", makePedStopAnimation);
|
||||
addNetworkEventHandler("vrr.localPlayerSkin", setLocalPlayerSkin);
|
||||
addNetworkEventHandler("vrr.forcePedAnim", forcePedAnimation);
|
||||
addNetworkEventHandler("vrr.hideAllGUI", hideAllGUI);
|
||||
addNetworkEventHandler("vrr.clientInfo", serverRequestedClientInfo);
|
||||
addNetworkEventHandler("vrr.interiorLights", updateInteriorLightsState);
|
||||
|
||||
addNetworkEventHandler("vrr.syncElement", forceSyncElementProperties);
|
||||
addNetworkEventHandler("vrr.elementPosition", setElementPosition);
|
||||
addNetworkEventHandler("vrr.elementCollisions", setElementCollisionsEnabled);
|
||||
|
||||
addNetworkEventHandler("vrr.vehBuyState", setVehiclePurchaseState);
|
||||
// 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.logLevel", setLogLevel);
|
||||
addNetworkEventHandler("vrr.infiniteRun", setLocalPlayerInfiniteRun);
|
||||
|
||||
// Business
|
||||
addNetworkEventHandler("vrr.business", receiveBusinessFromServer);
|
||||
|
||||
// House
|
||||
addNetworkEventHandler("vrr.house", receiveHouseFromServer);
|
||||
|
||||
// Locale
|
||||
addNetworkEventHandler("vrr.localeString", receiveLocaleStringFromServer);
|
||||
|
||||
// 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.ping", updatePlayerPing);
|
||||
addNetworkEventHandler("vrr.pedAnim", makePedPlayAnimation);
|
||||
addNetworkEventHandler("vrr.pedStopAnim", makePedStopAnimation);
|
||||
addNetworkEventHandler("vrr.forcePedAnim", 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);
|
||||
|
||||
addNetworkEventHandler("vrr.playerPedId", sendLocalPlayerNetworkIdToServer);
|
||||
|
||||
addNetworkEventHandler("vrr.ped", setLocalPlayerPedPartsAndProps);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -133,7 +150,7 @@ function sendResourceStoppedSignalToServer() {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setPlayer2DRendering(hudState, labelState, smallGameMessageState, scoreboardState, hotBarState, itemActionDelayState) {
|
||||
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;
|
||||
|
||||
@@ -158,12 +175,14 @@ function setPlayer2DRendering(hudState, labelState, smallGameMessageState, score
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function onServerSpawnedPlayer(state) {
|
||||
function onServerSpawnedLocalPlayer(state) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Main] Setting spawned state to ${state}`);
|
||||
isSpawned = state;
|
||||
if(state) {
|
||||
setUpInitialGame();
|
||||
setTimeout(function() {
|
||||
calledDeathEvent = false;
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -269,7 +288,7 @@ function setLocalPlayerArmour(armour) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function forceLocalPlayerWantedLevel(wantedLevel) {
|
||||
function setLocalPlayerWantedLevel(wantedLevel) {
|
||||
forceWantedLevel = toInteger(wantedLevel);
|
||||
}
|
||||
|
||||
@@ -292,10 +311,15 @@ function setLocalPlayerInfiniteRun(state) {
|
||||
// ===========================================================================
|
||||
|
||||
function setLocalPlayerSkin(skinId) {
|
||||
logToConsole(LOG_INFO, skinId);
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
if(natives.isModelInCdimage(skinId)) {
|
||||
natives.requestModel(skinId);
|
||||
natives.loadAllObjectsNow();
|
||||
if(natives.hasModelLoaded(skinId)) {
|
||||
natives.changePlayerModel(natives.getPlayerId(), skinId);
|
||||
//localPlayer.skin = allowedSkins[skinSelectorIndex][0];
|
||||
//localPlayer.modelIndex = allowedSkins[skinSelectorIndex][0];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
localPlayer.skin = skinId;
|
||||
}
|
||||
@@ -316,3 +340,56 @@ function sendLocalPlayerNetworkIdToServer() {
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
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);
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -54,9 +54,14 @@ function processSkinSelectKeyPress(keyCode) {
|
||||
logToConsole(LOG_DEBUG, `Switching to skin ${allowedSkins[skinSelectorIndex][1]} (Index: ${skinSelectorIndex}, Skin: ${allowedSkins[skinSelectorIndex][0]})`);
|
||||
skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1];
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
//natives.changePlayerModel(natives.getPlayerId(), allowedSkins[skinSelectorIndex][0]);
|
||||
//localPlayer.skin = allowedSkins[skinSelectorIndex][0];
|
||||
//localPlayer.modelIndex = allowedSkins[skinSelectorIndex][0];
|
||||
let skinId = allowedSkins[skinSelectorIndex][0];
|
||||
if(natives.isModelInCdimage(skinId)) {
|
||||
natives.requestModel(skinId);
|
||||
natives.loadAllObjectsNow();
|
||||
if(natives.hasModelLoaded(skinId)) {
|
||||
natives.changePlayerModel(natives.getPlayerId(), skinId);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
localPlayer.skin = allowedSkins[skinSelectorIndex][0];
|
||||
}
|
||||
@@ -69,9 +74,14 @@ function processSkinSelectKeyPress(keyCode) {
|
||||
logToConsole(LOG_DEBUG, `Switching to skin ${allowedSkins[skinSelectorIndex][1]} (Index: ${skinSelectorIndex}, Skin: ${allowedSkins[skinSelectorIndex][0]})`);
|
||||
skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1];
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
//natives.changePlayerModel(natives.getPlayerId(), allowedSkins[skinSelectorIndex][0]);
|
||||
//localPlayer.skin = allowedSkins[skinSelectorIndex][0];
|
||||
//localPlayer.modelIndex = allowedSkins[skinSelectorIndex][0];
|
||||
let skinId = allowedSkins[skinSelectorIndex][0];
|
||||
if(natives.isModelInCdimage(skinId)) {
|
||||
natives.requestModel(skinId);
|
||||
natives.loadAllObjectsNow();
|
||||
if(natives.hasModelLoaded(skinId)) {
|
||||
natives.changePlayerModel(natives.getPlayerId(), skinId);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
localPlayer.skin = allowedSkins[skinSelectorIndex][0];
|
||||
}
|
||||
@@ -122,8 +132,14 @@ function toggleSkinSelect(state) {
|
||||
}
|
||||
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
//natives.changePlayerModel(natives.getPlayerId(), allowedSkins[skinSelectorIndex][0]);
|
||||
localPlayer.skin = allowedSkins[skinSelectorIndex][0];
|
||||
let skinId = allowedSkins[skinSelectorIndex][0];
|
||||
if(natives.isModelInCdimage(skinId)) {
|
||||
natives.requestModel(skinId);
|
||||
natives.loadAllObjectsNow();
|
||||
if(natives.hasModelLoaded(skinId)) {
|
||||
natives.changePlayerModel(natives.getPlayerId(), skinId);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
localPlayer.skin = allowedSkins[skinSelectorIndex][0];
|
||||
}
|
||||
|
||||
@@ -25,23 +25,23 @@ function initClientScripts() {
|
||||
// ===========================================================================
|
||||
|
||||
function setUpInitialGame() {
|
||||
if(getGame() == VRR_GAME_GTA_III) {
|
||||
switch(getGame()) {
|
||||
case VRR_GAME_GTA_III:
|
||||
game.SET_PLAYER_NEVER_GETS_TIRED(game.GET_PLAYER_ID(), 0);
|
||||
game.setGameStat(STAT_PROGRESSMADE, 9999);
|
||||
game.setGameStat(STAT_TOTALPROGRESSINGAME, 9999);
|
||||
game.SET_CAR_DENSITY_MULTIPLIER(3.0);
|
||||
game.SET_PED_DENSITY_MULTIPLIER(3.0);
|
||||
game.onMission = true;
|
||||
SetStandardControlsEnabled(true);
|
||||
return true;
|
||||
}
|
||||
//game.SET_CAR_DENSITY_MULTIPLIER(3.0); // No visual effect. Needs tweaking and testing.
|
||||
//game.SET_PED_DENSITY_MULTIPLIER(3.0); // No visual effect. Needs tweaking and testing.
|
||||
game.onMission = true; // Disables taxi/vigilante/etc and other start mission triggers
|
||||
SetStandardControlsEnabled(true); // Provided by mouse camera script (mousecam.js)
|
||||
break;
|
||||
|
||||
if(getGame() == VRR_GAME_GTA_VC) {
|
||||
case VRR_GAME_GTA_VC:
|
||||
game.SET_PLAYER_NEVER_GETS_TIRED(game.GET_PLAYER_ID(), 0);
|
||||
game.setGameStat(STAT_PROGRESSMADE, 9999);
|
||||
game.setGameStat(STAT_TOTALPROGRESSINGAME, 9999);
|
||||
game.SET_CAR_DENSITY_MULTIPLIER(3.0);
|
||||
game.SET_PED_DENSITY_MULTIPLIER(3.0);
|
||||
//game.SET_CAR_DENSITY_MULTIPLIER(3.0); // No visual effect. Needs tweaking and testing.
|
||||
//game.SET_PED_DENSITY_MULTIPLIER(3.0); // No visual effect. Needs tweaking and testing.
|
||||
|
||||
game.REQUEST_ANIMATION("bikev");
|
||||
game.REQUEST_ANIMATION("bikeh");
|
||||
@@ -66,12 +66,11 @@ function setUpInitialGame() {
|
||||
game.REQUEST_ANIMATION("skate");
|
||||
|
||||
game.LOAD_ALL_MODELS_NOW();
|
||||
game.onMission = true;
|
||||
SetStandardControlsEnabled(true);
|
||||
return true;
|
||||
}
|
||||
game.onMission = true; // Disables taxi/vigilante/etc and other start mission triggers
|
||||
SetStandardControlsEnabled(true); // Provided by mouse camera script (mousecam.js)
|
||||
break;
|
||||
|
||||
if(getGame() == VRR_GAME_GTA_SA) {
|
||||
case VRR_GAME_GTA_SA:
|
||||
game.setGameStat(STAT_WEAPONTYPE_PISTOL_SKILL, 400);
|
||||
game.setGameStat(STAT_WEAPONTYPE_PISTOL_SILENCED_SKILL, 400);
|
||||
game.setGameStat(STAT_WEAPONTYPE_DESERT_EAGLE_SKILL, 400);
|
||||
@@ -97,12 +96,11 @@ function setUpInitialGame() {
|
||||
game.setGameStat(STAT_UNDERWATER_STAMINA, 9999);
|
||||
game.setGameStat(STAT_BODY_MUSCLE, 9999);
|
||||
|
||||
game.setDefaultInteriors(false);
|
||||
game.onMission = true;
|
||||
return true;
|
||||
}
|
||||
game.setDefaultInteriors(false); // Disables default yellow cone at doors for entering places in singleplayer
|
||||
game.onMission = true; // Disables taxi/vigilante/etc and other start mission triggers
|
||||
break;
|
||||
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
case VRR_GAME_GTA_IV:
|
||||
natives.allowEmergencyServices(false);
|
||||
natives.setCreateRandomCops(true);
|
||||
natives.setMaxWantedLevel(0);
|
||||
@@ -115,10 +113,11 @@ function setUpInitialGame() {
|
||||
natives.setSyncWeatherAndGameTime(false);
|
||||
natives.usePlayerColourInsteadOfTeamColour(true);
|
||||
natives.disablePauseMenu(true);
|
||||
natives.allowReactionAnims(localPlayer, true);
|
||||
//natives.allowReactionAnims(localPlayer, false);
|
||||
natives.allowGameToPauseForStreaming(false);
|
||||
natives.allowStuntJumpsToTrigger(false);
|
||||
natives.setPickupsFixCars(false);
|
||||
natives.forceFullVoice(localPlayer);
|
||||
|
||||
// HUD and Display
|
||||
//natives.displayCash(false);
|
||||
@@ -126,11 +125,11 @@ function setUpInitialGame() {
|
||||
//natives.displayHud(false);
|
||||
//natives.displayRadar(false);
|
||||
//natives.displayAreaName(false);
|
||||
//natives.displayPlayerNames(false);
|
||||
natives.displayPlayerNames(true);
|
||||
natives.setPoliceRadarBlips(false);
|
||||
natives.removeTemporaryRadarBlipsForPickups();
|
||||
natives.displayNonMinigameHelpMessages(false);
|
||||
natives.setDisplayPlayerNameAndIcon(natives.getPlayerId(), false);
|
||||
natives.setDisplayPlayerNameAndIcon(natives.getPlayerId(), true);
|
||||
|
||||
// Item/Money Dropping
|
||||
natives.setMoneyCarriedByAllNewPeds(0);
|
||||
@@ -151,14 +150,24 @@ function setUpInitialGame() {
|
||||
natives.switchAmbientPlanes(true);
|
||||
natives.switchMadDrivers(false);
|
||||
|
||||
natives.requestAnims("DANCING");
|
||||
return true;
|
||||
}
|
||||
// Singleplayer Cellphone
|
||||
natives.requestScript("spcellphone");
|
||||
natives.startNewScript("spcellphone", 0);
|
||||
// Script "v-blockedscripts" blocks the mpcellphone scripts
|
||||
natives.setMessagesWaiting(false); // Seems to have no effect
|
||||
natives.setMobilePhoneRadioState(false);
|
||||
|
||||
if(getGame() == VRR_GAME_MAFIA_ONE) {
|
||||
// Animation libraries
|
||||
natives.requestAnims("DANCING");
|
||||
|
||||
// Some last steps
|
||||
natives.loadAllObjectsNow();
|
||||
break;
|
||||
|
||||
case VRR_GAME_MAFIA_ONE:
|
||||
game.mapEnabled = false;
|
||||
game.setTrafficEnabled(false);
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
function processSync(event, deltaTime) {
|
||||
if(localPlayer != null) {
|
||||
if(!areServerElementsSupported()) {
|
||||
sendNetworkEventToServer("vrr.plr.pos", localPlayer.position);
|
||||
sendNetworkEventToServer("vrr.plr.rot", localPlayer.heading);
|
||||
sendNetworkEventToServer("vrr.plr.pos", (localPlayer.vehicle != null) ? localPlayer.vehicle.position : localPlayer.position);
|
||||
sendNetworkEventToServer("vrr.plr.rot", (localPlayer.vehicle != null) ? localPlayer.vehicle.heading : localPlayer.heading);
|
||||
|
||||
//if(localPlayer.vehicle != null) {
|
||||
// sendNetworkEventToServer("vrr.veh.pos", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.position);
|
||||
@@ -239,7 +239,7 @@ function syncCivilianProperties(civilian) {
|
||||
}
|
||||
|
||||
if(doesEntityDataExist(civilian, "vrr.anim")) {
|
||||
let animData = getEntityData(vehicle, "vrr.anim");
|
||||
let animData = getEntityData(civilian, "vrr.anim");
|
||||
civilian.addAnimation(animData[0], animData[1]);
|
||||
}
|
||||
}
|
||||
@@ -390,6 +390,24 @@ function syncElementProperties(element) {
|
||||
}
|
||||
}
|
||||
|
||||
if(getGame() == VRR_GAME_MAFIA_ONE) {
|
||||
switch(element.type) {
|
||||
case ELEMENT_VEHICLE:
|
||||
syncVehicleProperties(element);
|
||||
break;
|
||||
|
||||
case ELEMENT_PED:
|
||||
syncCivilianProperties(element);
|
||||
break;
|
||||
|
||||
case ELEMENT_PLAYER:
|
||||
syncPlayerProperties(element);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch(element.type) {
|
||||
case ELEMENT_VEHICLE:
|
||||
syncVehicleProperties(element);
|
||||
@@ -410,6 +428,8 @@ function syncElementProperties(element) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -280,11 +280,13 @@ function enterVehicleAsPassenger() {
|
||||
localPlayer.enterVehicle(tempVehicle, false);
|
||||
}
|
||||
} else {
|
||||
for(let i = 0 ; i <= natives.getMaximumNumberOfPassengers(tempVehicle); i++) {
|
||||
if(natives.isCarPassengerSeatFree(tempVehicle, i)) {
|
||||
natives.taskEnterCarAsPassenger(localPlayer, tempVehicle, i, 1);
|
||||
}
|
||||
}
|
||||
// Disable for now. GTA IV has built-in passenger entry
|
||||
|
||||
//for(let i = 0 ; i <= natives.getMaximumNumberOfPassengers(tempVehicle); i++) {
|
||||
// if(natives.isCarPassengerSeatFree(tempVehicle, i)) {
|
||||
// natives.taskEnterCarAsPassenger(localPlayer, tempVehicle, i, 10000);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -357,8 +359,11 @@ function setLocalPlayerInterior(interior) {
|
||||
localPlayer.interior = interior;
|
||||
game.cameraInterior = interior;
|
||||
} else {
|
||||
if(getGameConfig().mainWorldInterior != interior) {
|
||||
let interiorId = natives.getInteriorAtCoords(localPlayer.position);
|
||||
natives.activateInterior(interiorId, true);
|
||||
natives.loadAllObjectsNow();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -395,15 +400,6 @@ function isSnowEnabled() {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function playPedSpeech(pedName, speechId) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Utilities] Making ${pedName}'s ped talk (${speechId})`);
|
||||
if(getMultiplayerMod() == VRR_MPMOD_GTAC) {
|
||||
game.SET_CHAR_SAY(int, int);
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function clearLocalPedState() {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Utilities] Clearing local ped state`);
|
||||
localPlayer.clearObjective();
|
||||
@@ -826,3 +822,9 @@ function processVehicleFires() {
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getServerData() {
|
||||
return serverData;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
18
scripts/client/vehicle.js
Normal file
18
scripts/client/vehicle.js
Normal file
@@ -0,0 +1,18 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: vehicle.js
|
||||
// DESC: Provides vehicle functions and arrays with data
|
||||
// TYPE: Client (JavaScript)
|
||||
// ===========================================================================
|
||||
|
||||
function receiveVehicleFromServer(vehicleId, position, model, colour1, colour2, colour3 = 0, colour4 = 0) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Job] Received vehicle ${vehicleId} (${getVehicleNameFromModel(model, getGame())}) from server`);
|
||||
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -94,13 +94,13 @@ function toggleAutoSelectLastCharacterCommand(command, params, client) {
|
||||
function toggleAccountGUICommand(command, params, client) {
|
||||
let flagValue = getAccountSettingsFlagValue("NoGUI");
|
||||
|
||||
if(!doesPlayerHaveGUIEnabled(client)) {
|
||||
if(doesPlayerHaveGUIEnabled(client)) {
|
||||
getPlayerData(client).accountData.settings = removeBitFlag(getPlayerData(client).accountData.settings, flagValue);
|
||||
messagePlayerNormal(client, getLocaleString(client, "GUIAccountSettingToggle", `{softRed}${toUpperCase(getLocaleString(client, "Off"))}`));
|
||||
messagePlayerNormal(client, getLocaleString(client, "GUIAccountSettingToggle", `{softRed}${toUpperCase(getLocaleString(client, "Off"))}{MAINCOLOUR}`));
|
||||
logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} has toggled GUI for their account ON.`);
|
||||
} else {
|
||||
getPlayerData(client).accountData.settings = addBitFlag(getPlayerData(client).accountData.settings, flagValue);
|
||||
messagePlayerNormal(client, getLocaleString(client, "GUIAccountSettingToggle", `{softGreen}${toUpperCase(getLocaleString(client, "On"))}`));
|
||||
messagePlayerNormal(client, getLocaleString(client, "GUIAccountSettingToggle", `{softGreen}${toUpperCase(getLocaleString(client, "On"))}{MAINCOLOUR}`));
|
||||
logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} has toggled GUI for their account ON.`);
|
||||
}
|
||||
|
||||
@@ -271,6 +271,26 @@ function setAccountChatScrollLinesCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setAccountChatAutoHideDelayCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(isNaN(params)) {
|
||||
messagePlayerError(client, `The delay time must be a number!`);
|
||||
return false;
|
||||
}
|
||||
|
||||
let delay = Math.ceil(toInteger(params));
|
||||
|
||||
getPlayerData(client).accountData.chatAutoHideDelay = delay;
|
||||
sendPlayerChatAutoHideDelay(client, delay);
|
||||
messagePlayerSuccess(client, `Your chatbox will now automatically hide after ${toInteger(delay)} seconds!`);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setAccountEmailCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
@@ -569,6 +589,7 @@ function loginSuccess(client) {
|
||||
if(doesServerHaveTesterOnlyEnabled()) {
|
||||
if(!hasBitFlag(getPlayerData(client).accountData.flags.moderation, getModerationFlagValue("IsTester"))) {
|
||||
setTimeout(function() {
|
||||
getPlayerData(client).customDisconnectReason = "Kicked - Not a tester";
|
||||
client.disconnect();
|
||||
}, 3500);
|
||||
|
||||
@@ -586,7 +607,7 @@ function loginSuccess(client) {
|
||||
|
||||
if(getPlayerData(client).subAccounts.length == 0) {
|
||||
if(doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
|
||||
showPlayerPromptGUI(client, getLocaleString(client, "NoCharactersGUIMessage"), getLocaleString(client, "NoCharactersGUIWindowTitle"));
|
||||
showPlayerPromptGUI(client, getLocaleString(client, "NoCharactersGUIMessage"), getLocaleString(client, "NoCharactersGUIWindowTitle"), getLocaleString(client, "Yes"), getLocaleString(client, "No"));
|
||||
getPlayerData(client).promptType = VRR_PROMPT_CREATEFIRSTCHAR;
|
||||
logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the no characters prompt GUI`);
|
||||
} else {
|
||||
@@ -600,8 +621,8 @@ function loginSuccess(client) {
|
||||
getPlayerData(client).accountData.ipAddress = client.ip;
|
||||
|
||||
sendPlayerChatScrollLines(client, getPlayerData(client).accountData.chatScrollLines);
|
||||
|
||||
messagePlayerNormal(null, `👋 ${getPlayerName(client)} has joined the server`, getColourByName("softYellow"));
|
||||
messageDiscordChatChannel(`👋 ${getPlayerName(client)} has joined the server`);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -636,6 +657,7 @@ function saveAccountToDatabase(accountData) {
|
||||
["acct_svr_staff_flags", accountData.flags.admin],
|
||||
["acct_svr_mod_flags", accountData.flags.moderation],
|
||||
["acct_svr_chat_scroll_lines", accountData.chatScrollLines],
|
||||
["acct_svr_chat_auto_hide_delay", accountData.chatAutoHideDelay],
|
||||
];
|
||||
|
||||
let queryString1 = createDatabaseUpdateQuery("acct_main", data, `acct_id=${accountData.databaseId}`);
|
||||
@@ -915,13 +937,13 @@ function checkRegistration(client, password, confirmPassword = "", emailAddress
|
||||
} else {
|
||||
messagePlayerError(client, "Password doesn't meet requirements!");
|
||||
}
|
||||
return false
|
||||
return false;
|
||||
}
|
||||
|
||||
if(doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
|
||||
if(!isValidEmailAddress(emailAddress)) {
|
||||
showPlayerRegistrationFailedGUI(client, getLocaleString(client, "RegistrationFailedInvalidEmail"));
|
||||
return false
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -979,6 +1001,10 @@ function checkRegistration(client, password, confirmPassword = "", emailAddress
|
||||
// ===========================================================================
|
||||
|
||||
function checkAccountResetPasswordRequest(client, inputText) {
|
||||
if(!checkForSMTPModule() || !getEmailConfig().enabled) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(getPlayerData(client).passwordResetState == VRR_RESETPASS_STATE_NONE) {
|
||||
if(toLowerCase(getPlayerData(client).accountData.emailAddress) != toLowerCase(inputText)) {
|
||||
logToConsole(LOG_DEBUG|LOG_WARN, `${getPlayerDisplayForConsole(client)} failed to reset their password (email not correct)`);
|
||||
@@ -1063,7 +1089,7 @@ function isValidEmailAddress(emailAddress) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveAllClientsToDatabase() {
|
||||
function savePlayersToDatabase() {
|
||||
logToConsole(LOG_DEBUG, "[VRR.Account]: Saving all clients to database ...");
|
||||
getClients().forEach(function(client) {
|
||||
savePlayerToDatabase(client);
|
||||
@@ -1078,7 +1104,7 @@ function savePlayerToDatabase(client) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!getPlayerData(client).loggedIn) {
|
||||
if(!isPlayerLoggedIn(client)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1088,7 +1114,7 @@ function savePlayerToDatabase(client) {
|
||||
if(getPlayerData(client).currentSubAccount != -1) {
|
||||
//let subAccountData = getPlayerCurrentSubAccount(client);
|
||||
|
||||
if(client.player != null) {
|
||||
if(getPlayerPed(client) != null) {
|
||||
if(getPlayerData(client).returnToPosition != null) {
|
||||
getPlayerCurrentSubAccount(client).spawnPosition = getPlayerData(client).returnToPosition;
|
||||
getPlayerCurrentSubAccount(client).spawnHeading = getPlayerData(client).returnToHeading.z;
|
||||
@@ -1146,6 +1172,7 @@ function initClient(client) {
|
||||
if(isAccountAutoIPLoginEnabled(tempAccountData) && getPlayerData(client).accountData.ipAddress == client.ip) {
|
||||
messagePlayerAlert(client, getLocaleString(client, "AutoLoggedInIP"));
|
||||
loginSuccess(client);
|
||||
playRadioStreamForPlayer(client, getServerIntroMusicURL(), true, getPlayerStreamingRadioVolume(client));
|
||||
} else {
|
||||
if(doesServerHaveGUIEnabled() && doesPlayerHaveGUIEnabled(client)) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the login GUI.`);
|
||||
@@ -1153,6 +1180,12 @@ function initClient(client) {
|
||||
} else {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Account] ${getPlayerDisplayForConsole(client)} is being shown the login message (GUI disabled).`);
|
||||
messagePlayerNormal(client, getLocaleString(client, "WelcomeBack", getServerName(), getPlayerName(client), "/login"),getColourByName("softGreen"));
|
||||
|
||||
//if(checkForGeoIPModule()) {
|
||||
// let iso = module.geoip.getCountryISO(client.ip);
|
||||
// let localeId = getLocaleFromCountryISO(iso);
|
||||
//}
|
||||
//showGameMessage(client, getLocaleString(client, "LocaleOffer", `/lang ${getLocaleData(localeId)[2]}`), getColourByName("white"), 10000, "Roboto");
|
||||
}
|
||||
playRadioStreamForPlayer(client, getServerIntroMusicURL(), true, getPlayerStreamingRadioVolume(client));
|
||||
}
|
||||
|
||||
@@ -20,17 +20,17 @@ function playPlayerAnimationCommand(command, params, client) {
|
||||
return false;
|
||||
}
|
||||
|
||||
let animationSlot = getAnimationFromParams(getParam(params, " ", 1));
|
||||
let animationSlot = getAnimationFromParams(getParam(params, " ", 1));
|
||||
let animationPositionOffset = 1;
|
||||
|
||||
if(!animationSlot) {
|
||||
messagePlayerError(client, getLocaleString(client, "AnimationNotFound"));
|
||||
messagePlayerError(client, getLocaleString(client, "InvalidAnimation"));
|
||||
messagePlayerInfo(client, getLocaleString(client, "AnimationHelpTip"), `{ALTCOLOUR}/animlist{MAINCOLOUR}`);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(toInteger(animationPositionOffset) < 0 || toInteger(animationPositionOffset) > 3) {
|
||||
messagePlayerError(client, getLocaleString(client, "AnimationInvalidDistance"));
|
||||
messagePlayerError(client, getLocaleString(client, "InvalidAnimationDistance"));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ let animationSlot = getAnimationFromParams(getParam(params, " ", 1));
|
||||
}
|
||||
|
||||
if(isPlayerHandCuffed(client) || isPlayerTazed(client) || isPlayerInForcedAnimation(client)) {
|
||||
messagePlayerError(client, `You aren't able to do that`);
|
||||
messagePlayerError(client, getLocaleString(client, "UnableToDoThat"));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -51,12 +51,12 @@ let animationSlot = getAnimationFromParams(getParam(params, " ", 1));
|
||||
|
||||
function stopPlayerAnimationCommand(command, params, client) {
|
||||
if(isPlayerHandCuffed(client) || isPlayerTazed(client) || isPlayerInForcedAnimation(client)) {
|
||||
messagePlayerError(client, `You aren't able to do that`);
|
||||
messagePlayerError(client, getLocaleString(client, "UnableToDoThat"));
|
||||
return false;
|
||||
}
|
||||
|
||||
setPlayerPosition(client, getPlayerData(client).currentAnimationPositionReturnTo);
|
||||
makePedStopAnimation(getPlayerData(client).ped);
|
||||
makePedStopAnimation(getPlayerPed(client));
|
||||
|
||||
getPlayerData(client).currentAnimation = -1;
|
||||
getPlayerData(client).currentAnimationPositionOffset = false;
|
||||
@@ -70,7 +70,7 @@ function stopPlayerAnimationCommand(command, params, client) {
|
||||
// ===========================================================================
|
||||
|
||||
function showAnimationListCommand(command, params, client) {
|
||||
let animList = getGameConfig().animations[getServerGame()].map(function(x) { return x[0]; });
|
||||
let animList = getGameConfig().animations[getServerGame()].map(function(x) { return x.name; });
|
||||
|
||||
let chunkedList = splitArrayIntoChunks(animList, 10);
|
||||
|
||||
@@ -106,8 +106,8 @@ function makePlayerPlayAnimation(client, animationSlot, offsetPosition = 1) {
|
||||
getPlayerData(client).animationStart = getCurrentUnixTimestamp();
|
||||
getPlayerData(client).animationForced = false;
|
||||
|
||||
makePedPlayAnimation(getPlayerData(client).ped, animationSlot, offsetPosition);
|
||||
|
||||
makePedPlayAnimation(getPlayerPed(client), animationSlot, offsetPosition);
|
||||
setEntityData(getPlayerPed(client), "vrr.anim", animationSlot, true);
|
||||
//if(getAnimationData(animationSlot)[9] != VRR_ANIMMOVE_NONE) {
|
||||
// if(getGame() < VRR_GAME_GTA_SA) {
|
||||
// setPlayerMouseCameraState(client, true);
|
||||
@@ -125,14 +125,14 @@ function forcePlayerPlayAnimation(client, animationSlot, offsetPosition = 1) {
|
||||
getPlayerData(client).animationForced = true;
|
||||
|
||||
setPlayerControlState(client, false);
|
||||
forcePedAnimation(getPlayerData(client).ped, animationSlot, offsetPosition);
|
||||
forcePedAnimation(getPlayerPed(client), animationSlot, offsetPosition);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function makePlayerStopAnimation(client) {
|
||||
//setPlayerPosition(client, getPlayerData(client).currentAnimationPositionReturnTo);
|
||||
makePedStopAnimation(getPlayerData(client).ped);
|
||||
makePedStopAnimation(getPlayerPed(client));
|
||||
|
||||
getPlayerData(client).currentAnimation = -1;
|
||||
getPlayerData(client).currentAnimationPositionOffset = false;
|
||||
@@ -144,9 +144,10 @@ function makePlayerStopAnimation(client) {
|
||||
// ===========================================================================
|
||||
|
||||
function getAnimationFromParams(params) {
|
||||
let animations = getGameConfig().animations[getServerGame()];
|
||||
if(isNaN(params)) {
|
||||
for(let i in getGameConfig().animations[getServerGame()]) {
|
||||
if(toLowerCase(getGameConfig().animations[getServerGame()][i][0]).indexOf(toLowerCase(params)) != -1) {
|
||||
for(let i in animations) {
|
||||
if(toLowerCase(animations[i].name).indexOf(toLowerCase(params)) != -1) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ function accountBanCommand(command, params, client) {
|
||||
|
||||
logToConsole(LOG_WARN, `[VRR.Ban]: ${getPlayerDisplayForConsole(targetClient)} (${getPlayerData(targetClient).accountData.name}) account was banned by ${getPlayerDisplayForConsole(client)}. Reason: ${reason}`);
|
||||
|
||||
messageAdminAction(`{ALTCOLOUR}${getPlayerData(targetClient).currentSubAccountData.name} {MAINCOLOUR}has been account banned.`);
|
||||
announceAdminAction(`PlayerAccountBanned`, `{ALTCOLOUR}${targetClient.name}{MAINCOLOUR}`);
|
||||
banAccount(getPlayerData(targetClient).accountData.databaseId, getPlayerData(client).accountData.databaseId, reason);
|
||||
disconnectPlayer(client);
|
||||
}
|
||||
@@ -69,7 +69,7 @@ function subAccountBanCommand(command, params, client, fromDiscord) {
|
||||
|
||||
logToConsole(LOG_WARN, `[VRR.Ban]: ${getPlayerDisplayForConsole(targetClient)} (${getPlayerData(targetClient).accountData.name})'s subaccount was banned by ${getPlayerDisplayForConsole(client)}. Reason: ${reason}`);
|
||||
|
||||
messageAdminAction(`{ALTCOLOUR}${getPlayerData(targetClient).currentSubAccountData.name} {MAINCOLOUR}has been character banned.`);
|
||||
announceAdminAction(`PlayerCharacterBanned`, `{ALTCOLOUR}${targetClient.name}{MAINCOLOUR}`);
|
||||
banSubAccount(getPlayerData(targetClient).currentSubAccountData.databaseId, getPlayerData(client).accountData.databaseId, reason);
|
||||
|
||||
disconnectPlayer(client);
|
||||
@@ -98,7 +98,7 @@ function ipBanCommand(command, params, client, fromDiscord) {
|
||||
return false;
|
||||
}
|
||||
|
||||
messageAdminAction(`{ALTCOLOUR}${getPlayerData(targetClient).currentSubAccountData.name} {MAINCOLOUR}has been IP banned.`);
|
||||
announceAdminAction(`PlayerIPBanned`, `{ALTCOLOUR}${targetClient.name}{MAINCOLOUR}`);
|
||||
banIPAddress(targetClient.ip, getPlayerData(client).accountData.databaseId, reason);
|
||||
|
||||
server.banIP(targetClient.ip);
|
||||
@@ -129,7 +129,7 @@ function subNetBanCommand(command, params, client, fromDiscord) {
|
||||
return false;
|
||||
}
|
||||
|
||||
messageAdminAction(`{ALTCOLOUR}${getPlayerData(targetClient).currentSubAccountData.name} {MAINCOLOUR}has been subnet banned`);
|
||||
announceAdminAction(`PlayerSubNetBanned`, `{ALTCOLOUR}${targetClient.name}{MAINCOLOUR}`);
|
||||
banSubNet(targetClient.ip, getSubNet(targetClient.ip, octetAmount), getPlayerData(client).accountData.databaseId, reason);
|
||||
|
||||
server.banIP(targetClient.ip);
|
||||
@@ -297,4 +297,3 @@ function isIpAddressBanned(ipAddress) {
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ let serverBitFlags = {
|
||||
npcTriggerTypeFlags: {},
|
||||
npcTriggerConditionTypesFlags: {},
|
||||
npcTriggerResponseTypeFlags: {},
|
||||
serverSettings: {}
|
||||
};
|
||||
|
||||
// ===========================================================================
|
||||
@@ -41,6 +40,8 @@ let serverBitFlagKeys = {
|
||||
"ManageWorld",
|
||||
"ManageAntiCheat",
|
||||
"Developer",
|
||||
"ManageNPCs",
|
||||
"ManageRaces",
|
||||
],
|
||||
moderationFlagKeys: [
|
||||
"None",
|
||||
@@ -119,6 +120,8 @@ let serverBitFlagKeys = {
|
||||
"NoRandomTips",
|
||||
"NoActionTips",
|
||||
],
|
||||
|
||||
// Not going to be used. Use trigger, condition, and response stuff in trigger.js
|
||||
npcTriggerTypeKeys: [
|
||||
"None",
|
||||
"FarProximity", // Comes within a far distance of NPC
|
||||
@@ -219,26 +222,6 @@ let serverBitFlagKeys = {
|
||||
"ShowItemsAfterPurchase",
|
||||
"BuyCommandAfterEnterBusiness",
|
||||
],
|
||||
serverSettingsKeys: [
|
||||
"None",
|
||||
"GUI",
|
||||
"ServerLogo",
|
||||
"FallingSnow",
|
||||
"GroundSnow",
|
||||
"Anticheat",
|
||||
"CheckGameScripts",
|
||||
"GameScriptBlackList",
|
||||
"GameScriptWhiteList",
|
||||
"JobBlips",
|
||||
"JobPickups",
|
||||
"BusinessBlips",
|
||||
"BusinessPickups",
|
||||
"HouseBlips",
|
||||
"HousePickups",
|
||||
"DiscordBot",
|
||||
"RealTime",
|
||||
"Testing",
|
||||
],
|
||||
};
|
||||
|
||||
// ===========================================================================
|
||||
@@ -255,7 +238,6 @@ function initBitFlagScript() {
|
||||
serverBitFlags.npcTriggerTypes = createBitFlagTable(serverBitFlagKeys.npcTriggerTypeKeys);
|
||||
serverBitFlags.npcTriggerConditionTypes = createBitFlagTable(serverBitFlagKeys.npcTriggerConditionTypeKeys);
|
||||
serverBitFlags.npcTriggerResponseTypes = createBitFlagTable(serverBitFlagKeys.npcTriggerResponseTypeKeys);
|
||||
serverBitFlags.serverSettings = createBitFlagTable(serverBitFlagKeys.serverSettingsKeys);
|
||||
logToConsole(LOG_INFO, "[VRR.BitFlag]: Bit flag script initialized successfully!");
|
||||
return true;
|
||||
}
|
||||
@@ -410,20 +392,6 @@ function getModerationFlagValue(flagName) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getServerSettingsFlagValue(flagName) {
|
||||
if(flagName == "All") {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(typeof serverBitFlags.serverSettings[flagName] == "undefined") {
|
||||
return false;
|
||||
}
|
||||
|
||||
return serverBitFlags.serverSettings[flagName];
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function givePlayerStaffFlag(client, flagName) {
|
||||
if(!getStaffFlagValue(flagName)) {
|
||||
return false;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,8 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: bakery.js
|
||||
// DESC: Provides bakery business functions and usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
@@ -1,8 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: bar.js
|
||||
// DESC: Provides bar/pub business functions and usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
@@ -1,8 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: burger.js
|
||||
// DESC: Provides burger joint (McDonalds?) business functions and usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
@@ -1,67 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: casino.js
|
||||
// DESC: Provides casino business functions and usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
|
||||
let deckCards = [
|
||||
DeckCardData("deckCardSpadeAce", VRR_DECKCARD_SUIT_SPADE, 1),
|
||||
DeckCardData("deckCardSpade2", VRR_DECKCARD_SUIT_SPADE, 2),
|
||||
DeckCardData("deckCardSpade3", VRR_DECKCARD_SUIT_SPADE, 3),
|
||||
DeckCardData("deckCardSpade4", VRR_DECKCARD_SUIT_SPADE, 4),
|
||||
DeckCardData("deckCardSpade5", VRR_DECKCARD_SUIT_SPADE, 5),
|
||||
DeckCardData("deckCardSpade6", VRR_DECKCARD_SUIT_SPADE, 6),
|
||||
DeckCardData("deckCardSpade7", VRR_DECKCARD_SUIT_SPADE, 7),
|
||||
DeckCardData("deckCardSpade8", VRR_DECKCARD_SUIT_SPADE, 8),
|
||||
DeckCardData("deckCardSpade9", VRR_DECKCARD_SUIT_SPADE, 9),
|
||||
DeckCardData("deckCardSpade10", VRR_DECKCARD_SUIT_SPADE, 10),
|
||||
DeckCardData("deckCardSpadeJack", VRR_DECKCARD_SUIT_SPADE, 11),
|
||||
DeckCardData("deckCardSpadeQueen", VRR_DECKCARD_SUIT_SPADE, 12),
|
||||
DeckCardData("deckCardSpadeKing", VRR_DECKCARD_SUIT_SPADE, 13),
|
||||
DeckCardData("deckCardClubAce", VRR_DECKCARD_SUIT_CLUB, 1),
|
||||
DeckCardData("deckCardClub2", VRR_DECKCARD_SUIT_CLUB, 2),
|
||||
DeckCardData("deckCardClub3", VRR_DECKCARD_SUIT_CLUB, 3),
|
||||
DeckCardData("deckCardClub4", VRR_DECKCARD_SUIT_CLUB, 4),
|
||||
DeckCardData("deckCardClub5", VRR_DECKCARD_SUIT_CLUB, 5),
|
||||
DeckCardData("deckCardClub6", VRR_DECKCARD_SUIT_CLUB, 6),
|
||||
DeckCardData("deckCardClub7", VRR_DECKCARD_SUIT_CLUB, 7),
|
||||
DeckCardData("deckCardClub8", VRR_DECKCARD_SUIT_CLUB, 8),
|
||||
DeckCardData("deckCardClub9", VRR_DECKCARD_SUIT_CLUB, 9),
|
||||
DeckCardData("deckCardClub10", VRR_DECKCARD_SUIT_CLUB, 10),
|
||||
DeckCardData("deckCardClubJack", VRR_DECKCARD_SUIT_CLUB, 11),
|
||||
DeckCardData("deckCardClubQueen", VRR_DECKCARD_SUIT_CLUB, 12),
|
||||
DeckCardData("deckCardClubKing", VRR_DECKCARD_SUIT_CLUB, 13),
|
||||
DeckCardData("deckCardHeartAce", VRR_DECKCARD_SUIT_HEART, 1),
|
||||
DeckCardData("deckCardHeart2", VRR_DECKCARD_SUIT_HEART, 2),
|
||||
DeckCardData("deckCardHeart3", VRR_DECKCARD_SUIT_HEART, 3),
|
||||
DeckCardData("deckCardHeart4", VRR_DECKCARD_SUIT_HEART, 4),
|
||||
DeckCardData("deckCardHeart5", VRR_DECKCARD_SUIT_HEART, 5),
|
||||
DeckCardData("deckCardHeart6", VRR_DECKCARD_SUIT_HEART, 6),
|
||||
DeckCardData("deckCardHeart7", VRR_DECKCARD_SUIT_HEART, 7),
|
||||
DeckCardData("deckCardHeart8", VRR_DECKCARD_SUIT_HEART, 8),
|
||||
DeckCardData("deckCardHeart9", VRR_DECKCARD_SUIT_HEART, 9),
|
||||
DeckCardData("deckCardHeart10", VRR_DECKCARD_SUIT_HEART, 10),
|
||||
DeckCardData("deckCardHeartJack", VRR_DECKCARD_SUIT_HEART, 11),
|
||||
DeckCardData("deckCardHeartQueen", VRR_DECKCARD_SUIT_HEART, 12),
|
||||
DeckCardData("deckCardHeartKing", VRR_DECKCARD_SUIT_HEART, 13),
|
||||
DeckCardData("deckCardDiamondAce", VRR_DECKCARD_SUIT_DIAMOND, 1),
|
||||
DeckCardData("deckCardDiamond2", VRR_DECKCARD_SUIT_DIAMOND, 2),
|
||||
DeckCardData("deckCardDiamond3", VRR_DECKCARD_SUIT_DIAMOND, 3),
|
||||
DeckCardData("deckCardDiamond4", VRR_DECKCARD_SUIT_DIAMOND, 4),
|
||||
DeckCardData("deckCardDiamond5", VRR_DECKCARD_SUIT_DIAMOND, 5),
|
||||
DeckCardData("deckCardDiamond6", VRR_DECKCARD_SUIT_DIAMOND, 6),
|
||||
DeckCardData("deckCardDiamond7", VRR_DECKCARD_SUIT_DIAMOND, 7),
|
||||
DeckCardData("deckCardDiamond8", VRR_DECKCARD_SUIT_DIAMOND, 8),
|
||||
DeckCardData("deckCardDiamond9", VRR_DECKCARD_SUIT_DIAMOND, 9),
|
||||
DeckCardData( "deckCardDiamond10", VRR_DECKCARD_SUIT_DIAMOND, 10),
|
||||
DeckCardData("deckCardDiamondJack", VRR_DECKCARD_SUIT_DIAMOND, 11),
|
||||
DeckCardData("deckCardDiamondQueen", VRR_DECKCARD_SUIT_DIAMOND, 12),
|
||||
DeckCardData("deckCardDiamondKing", VRR_DECKCARD_SUIT_DIAMOND, 13),
|
||||
];
|
||||
|
||||
let deckCardBacks = [
|
||||
|
||||
]
|
||||
@@ -1,8 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: clothing.js
|
||||
// DESC: Provides clothing (skin) business functions and usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
@@ -1,8 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: club.js
|
||||
// DESC: Provides club/nightclub business functions and usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
@@ -1,8 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: fuel.js
|
||||
// DESC: Provides fuel/petrol business functions and usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
@@ -1,8 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: mechanic.js
|
||||
// DESC: Provides mechanic/vehicle repair business functions and usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
@@ -1,8 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: pizza.js
|
||||
// DESC: Provides pizza restaurant business functions and usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
@@ -1,8 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: restaurant.js
|
||||
// DESC: Provides generic restaurant business functions and usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
@@ -1,8 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: vehicle.js
|
||||
// DESC: Provides vehicle dealership business functions and usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
@@ -1,9 +0,0 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: weapon.js
|
||||
// DESC: Provides weapon (ammunations & illegal gunshops) business usage
|
||||
// TYPE: Business (JavaScript)
|
||||
// ===========================================================================
|
||||
|
||||
@@ -39,6 +39,7 @@ function processPlayerChat(client, messageText) {
|
||||
|
||||
messageText = messageText.substring(0, 128);
|
||||
messagePlayerNormal(null, `💬 ${getCharacterFullName(client)}: ${messageText}`);
|
||||
messageDiscordChatChannel(`💬 ${getCharacterFullName(client)}: ${messageText}`);
|
||||
} else {
|
||||
messagePlayerNormal(null, `🛡️ (ADMIN) - ${messageText}`);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,10 @@
|
||||
|
||||
function initClanScript() {
|
||||
logToConsole(LOG_INFO, "[VRR.Clan]: Initializing clans script ...");
|
||||
if(!getServerConfig().devServer) {
|
||||
getServerData().clans = loadClansFromDatabase();
|
||||
}
|
||||
|
||||
setAllClanDataIndexes();
|
||||
logToConsole(LOG_INFO, "[VRR.Clan]: Clan script initialized successfully!");
|
||||
return true;
|
||||
@@ -114,7 +117,7 @@ function createClanRank(clanId, rankId, rankName) {
|
||||
let rankIndex = getClanData(clanId).ranks.push(tempClanRankData);
|
||||
setAllClanDataIndexes();
|
||||
|
||||
saveAllClanRanksToDatabase(clanId);
|
||||
saveClanRanksToDatabase(clanId);
|
||||
return rankIndex;
|
||||
}
|
||||
|
||||
@@ -927,12 +930,20 @@ function doesClanIdExist(clanId) {
|
||||
// ===========================================================================
|
||||
|
||||
function reloadAllClans() {
|
||||
if(getServerConfig().devServer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
getServerData().clans = loadClansFromDatabase();
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveAllClanRanksToDatabase(clanId) {
|
||||
function saveClanRanksToDatabase(clanId) {
|
||||
if(getServerConfig().devServer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
let ranks = getServerData().clans[clanId].ranks;
|
||||
for(let i in ranks) {
|
||||
saveClanRankToDatabase(clanId, i);
|
||||
@@ -948,6 +959,10 @@ function saveClanToDatabase(clanId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(tempClanData.databaseId == -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!tempClanData.needsSaved) {
|
||||
return false;
|
||||
}
|
||||
@@ -982,7 +997,7 @@ function saveClanToDatabase(clanId) {
|
||||
disconnectFromDatabase(dbConnection);
|
||||
}
|
||||
|
||||
saveAllClanRanksToDatabase(clanId);
|
||||
saveClanRanksToDatabase(clanId);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1071,7 +1086,11 @@ function setClanRankTitle(clanId, rankId, title) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveAllClansToDatabase() {
|
||||
function saveClansToDatabase() {
|
||||
if(getServerConfig().devServer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for(let i in getServerData().clans) {
|
||||
saveClanToDatabase(i);
|
||||
}
|
||||
@@ -1134,6 +1153,11 @@ function getClanRankIdFromDatabaseId(clanId, databaseId) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* @param {number} clanId - The data index of the clan
|
||||
* @param {number} clanRankId - The data index of the clan rank
|
||||
* @return {ClanRankData} The clan rank's data (class instance)
|
||||
*/
|
||||
function getClanRankData(clanId, rankId) {
|
||||
return getServerData().clans[clanId].ranks[rankId];
|
||||
}
|
||||
@@ -1213,6 +1237,10 @@ let rankId = getClanRankFromParams(clanId, getParam(params, " ", 1));
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {String} params - The params to search for
|
||||
* @return {Number} The data index of a matching clan
|
||||
*/
|
||||
function getClanFromParams(params) {
|
||||
if(isNaN(params)) {
|
||||
for(let i in getServerData().clans) {
|
||||
@@ -1231,6 +1259,11 @@ function getClanFromParams(params) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* @param {Number} clanId - The clan ID to search ranks for
|
||||
* @param {String} params - The params to search for
|
||||
* @return {Number} The data index of a matching clan
|
||||
*/
|
||||
function getClanRankFromParams(clanId, params) {
|
||||
if(isNaN(params)) {
|
||||
for(let i in getClanData(clanId).ranks) {
|
||||
|
||||
@@ -19,7 +19,7 @@ function initClassScript() {
|
||||
/**
|
||||
* @class Representing data for server configuration
|
||||
*/
|
||||
class ServerData {
|
||||
class ServerConfigData {
|
||||
constructor(dbAssoc = false) {
|
||||
this.databaseId = 0;
|
||||
this.needsSaved = false;
|
||||
@@ -58,7 +58,7 @@ class ServerData {
|
||||
this.showLogo = true;
|
||||
this.inflationMultiplier = 1;
|
||||
this.testerOnly = false;
|
||||
this.settings = 0;
|
||||
this.devServer = false;
|
||||
|
||||
this.antiCheat = {
|
||||
enabled: false,
|
||||
@@ -87,9 +87,6 @@ class ServerData {
|
||||
this.realTimeZone = 0;
|
||||
|
||||
this.discordConfig = {
|
||||
eventChannelWebHookURL: "",
|
||||
chatChannelWebHookURL: "",
|
||||
adminChannelWebHookURL: "",
|
||||
sendEvents: true,
|
||||
sendChat: true,
|
||||
sendAdminEvents: true,
|
||||
@@ -104,7 +101,6 @@ class ServerData {
|
||||
bank: dbAssoc["svr_newchar_bank"],
|
||||
skin: dbAssoc["svr_newchar_skin"],
|
||||
},
|
||||
this.settings = toInteger(dbAssoc["svr_settings"]);
|
||||
|
||||
this.connectCameraPosition = toVector3(dbAssoc["svr_connectcam_pos_x"], dbAssoc["svr_connectcam_pos_y"], dbAssoc["svr_connectcam_pos_z"]);
|
||||
this.connectCameraLookAt = toVector3(dbAssoc["svr_connectcam_lookat_x"], dbAssoc["svr_connectcam_lookat_y"], dbAssoc["svr_connectcam_lookat_z"]);
|
||||
@@ -113,6 +109,21 @@ class ServerData {
|
||||
this.minute = toInteger(dbAssoc["svr_start_time_min"]);
|
||||
this.minuteDuration = toInteger(dbAssoc["svr_time_min_duration"]);
|
||||
this.weather = toInteger(dbAssoc["svr_start_weather"]);
|
||||
//this.fallingSnow = intToBool(toInteger(dbAssoc["svr_start_snow_falling"]));
|
||||
//this.groundSnow = intToBool(toInteger(dbAssoc["svr_start_snow_ground"]));
|
||||
//this.useGUI = intToBool(toInteger(dbAssoc["svr_gui_enabled"]));
|
||||
//this.showLogo = intToBool(toInteger(dbAssoc["svr_logo_enabled"]));
|
||||
//this.testerOnly = intToBool(toInteger(dbAssoc["svr_tester_only"]));
|
||||
|
||||
/*
|
||||
this.createJobPickups = intToBool(toInteger(dbAssoc["svr_job_pickups_enabled"]));
|
||||
this.createBusinessPickups = intToBool(toInteger(dbAssoc["svr_biz_pickups_enabled"]));
|
||||
this.createHousePickups = intToBool(toInteger(dbAssoc["svr_house_pickups_enabled"]));
|
||||
this.createJobBlips = intToBool(toInteger(dbAssoc["svr_job_blips_enabled"]));
|
||||
this.createBusinessBlips = intToBool(toInteger(dbAssoc["svr_biz_blips_enabled"]));
|
||||
this.createHouseBlips = intToBool(toInteger(dbAssoc["svr_house_blips_enabled"]));
|
||||
*/
|
||||
|
||||
this.guiColourPrimary = [toInteger(dbAssoc["svr_gui_col1_r"]), toInteger(dbAssoc["svr_gui_col1_g"]), toInteger(dbAssoc["svr_gui_col1_b"])];
|
||||
this.guiColourSecondary = [toInteger(dbAssoc["svr_gui_col2_r"]), toInteger(dbAssoc["svr_gui_col2_g"]), toInteger(dbAssoc["svr_gui_col2_b"])];
|
||||
this.guiTextColourPrimary = [toInteger(dbAssoc["svr_gui_textcol1_r"]), toInteger(dbAssoc["svr_gui_textcol1_g"]), toInteger(dbAssoc["svr_gui_textcol1_b"])];
|
||||
@@ -121,15 +132,14 @@ class ServerData {
|
||||
|
||||
this.discordBotToken = intToBool(dbAssoc["svr_discord_bot_token"]);
|
||||
this.introMusicURL = dbAssoc["svr_intro_music"];
|
||||
this.realTimeZone = dbAssoc["svr_time_realtime_timezone"];
|
||||
|
||||
this.discordConfig = {
|
||||
eventChannelWebHookURL: dbAssoc["svr_discord_event_webhook"],
|
||||
chatChannelWebHookURL: dbAssoc["svr_discord_chat_webhook"],
|
||||
adminChannelWebHookURL: dbAssoc["svr_discord_admin_webhook"],
|
||||
//this.useRealTime = intToBool(toInteger(dbAssoc["svr_real_time_enabled"]));
|
||||
//this.realTimeZone = dbAssoc["svr_real_time_timezone"];
|
||||
|
||||
this.discord = {
|
||||
sendEvents: true,
|
||||
sendChat: true,
|
||||
sendAdminEvents: true,
|
||||
sendAdmin: true,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -239,6 +249,10 @@ class ClientData {
|
||||
this.locale = 0;
|
||||
|
||||
this.enteringVehicle = null;
|
||||
|
||||
this.customDisconnectReason = "";
|
||||
|
||||
this.interiorCutscene = "";
|
||||
}
|
||||
};
|
||||
|
||||
@@ -271,6 +285,7 @@ class AccountData {
|
||||
this.twoFactorAuthVerificationCode = "";
|
||||
|
||||
this.chatScrollLines = 1;
|
||||
this.chatAutoHideDelay = 0;
|
||||
|
||||
this.streamingRadioVolume = 20;
|
||||
this.locale = 0;
|
||||
@@ -300,6 +315,7 @@ class AccountData {
|
||||
this.emailVerificationCode = dbAssoc["acct_code_verifyemail"];
|
||||
this.twoFactorAuthVerificationCode = dbAssoc["acct_code_2fa"];
|
||||
this.chatScrollLines = toInteger(dbAssoc["acct_svr_chat_scroll_lines"]);
|
||||
this.chatAutoHideDelay = toInteger(dbAssoc["acct_svr_chat_auto_hide_delay"]);
|
||||
this.streamingRadioVolume = toInteger(dbAssoc["acct_streaming_radio_volume"]);
|
||||
this.locale = toInteger(dbAssoc["acct_locale"]);
|
||||
}
|
||||
@@ -524,6 +540,7 @@ class BusinessData {
|
||||
this.entranceBlipModel = -1;
|
||||
this.entrancePickup = null;
|
||||
this.entranceBlip = null;
|
||||
this.entranceCutscene = "";
|
||||
|
||||
this.exitPosition = false;
|
||||
this.exitRotation = 0.0;
|
||||
@@ -533,6 +550,7 @@ class BusinessData {
|
||||
this.exitBlipModel = -1;
|
||||
this.exitPickup = null;
|
||||
this.exitBlip = null;
|
||||
this.exitCutscene = "";
|
||||
|
||||
this.entranceFee = 0;
|
||||
this.till = 0;
|
||||
@@ -541,6 +559,8 @@ class BusinessData {
|
||||
|
||||
this.labelHelpType = VRR_PROPLABEL_INFO_NONE;
|
||||
|
||||
this.triggers = [];
|
||||
|
||||
if(dbAssoc) {
|
||||
this.databaseId = toInteger(dbAssoc["biz_id"]);
|
||||
this.name = toString(dbAssoc["biz_name"]);
|
||||
@@ -557,6 +577,7 @@ class BusinessData {
|
||||
this.entranceDimension = toInteger(dbAssoc["biz_entrance_vw"]);
|
||||
this.entrancePickupModel = toInteger(dbAssoc["biz_entrance_pickup"]);
|
||||
this.entranceBlipModel = toInteger(dbAssoc["biz_entrance_blip"]);
|
||||
this.entranceCutscene = toString(dbAssoc["biz_entrance_cutscene"]);
|
||||
|
||||
this.exitPosition = toVector3(dbAssoc["biz_exit_pos_x"], dbAssoc["biz_exit_pos_y"], dbAssoc["biz_exit_pos_z"]);
|
||||
this.exitRotation = toInteger(dbAssoc["biz_exit_rot_z"]);
|
||||
@@ -564,12 +585,14 @@ class BusinessData {
|
||||
this.exitDimension = toInteger(dbAssoc["biz_exit_vw"]);
|
||||
this.exitPickupModel = toInteger(dbAssoc["biz_exit_pickup"]);
|
||||
this.exitBlipModel = toInteger(dbAssoc["biz_exit_blip"]);
|
||||
this.exitCutscene = toString(dbAssoc["biz_exit_cutscene"]);
|
||||
|
||||
this.entranceFee = toInteger(dbAssoc["biz_entrance_fee"]);
|
||||
this.till = toInteger(dbAssoc["biz_till"]);
|
||||
|
||||
this.labelHelpType = toInteger(dbAssoc["biz_label_help_type"]);
|
||||
this.streamingRadioStation = toInteger(dbAssoc["biz_radiostation"]);
|
||||
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -658,6 +681,7 @@ class HouseData {
|
||||
this.entranceBlipModel = -1;
|
||||
this.entrancePickup = null;
|
||||
this.entranceBlip = null;
|
||||
this.entranceCutscene = "";
|
||||
|
||||
this.exitPosition = false;
|
||||
this.exitRotation = 0.0;
|
||||
@@ -667,9 +691,12 @@ class HouseData {
|
||||
this.exitBlipModel = -1;
|
||||
this.exitPickup = null;
|
||||
this.exitBlip = null;
|
||||
this.exitCutscene = "";
|
||||
|
||||
this.streamingRadioStation = -1;
|
||||
|
||||
this.triggers = [];
|
||||
|
||||
if(dbAssoc) {
|
||||
this.databaseId = toInteger(dbAssoc["house_id"]);
|
||||
this.description = toString(dbAssoc["house_description"]);
|
||||
@@ -688,6 +715,7 @@ class HouseData {
|
||||
this.entranceDimension = toInteger(dbAssoc["house_entrance_vw"]);
|
||||
this.entrancePickupModel = toInteger(dbAssoc["house_entrance_pickup"]);
|
||||
this.entranceBlipModel = toInteger(dbAssoc["house_entrance_blip"]);
|
||||
this.entranceCutscene = toString(dbAssoc["house_entrance_cutscene"]);
|
||||
|
||||
this.exitPosition = toVector3(toFloat(dbAssoc["house_exit_pos_x"]), toFloat(dbAssoc["house_exit_pos_y"]), toFloat(dbAssoc["house_exit_pos_z"]));
|
||||
this.exitRotation = toFloat(dbAssoc["house_exit_rot_z"]);
|
||||
@@ -695,6 +723,7 @@ class HouseData {
|
||||
this.exitDimension = toInteger(dbAssoc["house_exit_vw"]);
|
||||
this.exitPickupModel = toInteger(dbAssoc["house_exit_pickup"]);
|
||||
this.exitBlipModel = toInteger(dbAssoc["house_exit_blip"]);
|
||||
this.exitCutscene = toString(dbAssoc["house_exit_cutscene"]);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -934,6 +963,8 @@ class VehicleData {
|
||||
|
||||
this.lastActiveTime = false;
|
||||
|
||||
this.triggers = [];
|
||||
|
||||
if(dbAssoc) {
|
||||
// General Info
|
||||
this.databaseId = toInteger(dbAssoc["veh_id"]);
|
||||
@@ -1003,7 +1034,7 @@ class VehicleData {
|
||||
};
|
||||
|
||||
/**
|
||||
* @class Representing a command's data. Loaded and saved in the database
|
||||
* @class Representing a command's data.
|
||||
*/
|
||||
class CommandData {
|
||||
enable() {
|
||||
@@ -1018,7 +1049,7 @@ class CommandData {
|
||||
this.enabled = !this.enabled;
|
||||
}
|
||||
|
||||
constructor(command, handlerFunction, syntaxString, requiredStaffFlags, requireLogin, allowOnDiscord, helpDescription) {
|
||||
constructor(command, handlerFunction, syntaxString = "", requiredStaffFlags = 0, requireLogin = true, allowOnDiscord = false, helpDescription = "") {
|
||||
this.command = command;
|
||||
this.handlerFunction = handlerFunction;
|
||||
this.syntaxString = syntaxString;
|
||||
@@ -1302,49 +1333,6 @@ class KeyBindData {
|
||||
}
|
||||
};
|
||||
|
||||
class BlackListedGameScriptData {
|
||||
constructor(dbAssoc = false) {
|
||||
this.databaseId = 0;
|
||||
this.enabled = false
|
||||
this.serverId = 0;
|
||||
this.scriptName = "";
|
||||
this.index = -1;
|
||||
this.needsSaved = false;
|
||||
|
||||
if(dbAssoc) {
|
||||
this.databaseId = dbAssoc["ac_script_bl_id"];
|
||||
this.enabled = intToBool(dbAssoc["ac_script_bl_enabled"]);
|
||||
this.serverId = dbAssoc["ac_script_bl_server"];
|
||||
this.scriptName = dbAssoc["ac_script_bl_name"];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class WhiteListedGameScriptData {
|
||||
constructor(dbAssoc = false) {
|
||||
this.databaseId = 0;
|
||||
this.enabled = false
|
||||
this.serverId = 0;
|
||||
this.scriptName = "";
|
||||
this.index = -1;
|
||||
this.needsSaved = false;
|
||||
|
||||
if(dbAssoc) {
|
||||
this.databaseId = dbAssoc["ac_script_wl_id"];
|
||||
this.enabled = intToBool(dbAssoc["ac_script_wl_enabled"]);
|
||||
this.serverId = dbAssoc["ac_script_wl_server"];
|
||||
this.scriptName = dbAssoc["ac_script_wl_name"];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class InteriorTemplateData {
|
||||
constructor(exitPosition, exitInterior) {
|
||||
this.exitPosition = exitPosition;
|
||||
this.exitInterior = exitInterior;
|
||||
}
|
||||
};
|
||||
|
||||
class RadioStationData {
|
||||
constructor(dbAssoc = false) {
|
||||
this.databaseId = 0;
|
||||
@@ -1486,6 +1474,7 @@ class ItemTypeData {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class NPCData {
|
||||
constructor(dbAssoc = false) {
|
||||
this.databaseId = 0;
|
||||
@@ -1495,8 +1484,10 @@ class NPCData {
|
||||
this.middleName = "Q";
|
||||
this.skin = 0;
|
||||
this.cash = 0;
|
||||
this.spawnPosition = toVector3(0.0, 0.0, 0.0);
|
||||
this.spawnHeading = 0.0;
|
||||
this.position = toVector3(0.0, 0.0, 0.0);
|
||||
this.rotation = toVector3(0.0, 0.0, 0.0);
|
||||
this.scale = toVector3(1.0, 1.0, 1.0);
|
||||
this.heading = 0.0;
|
||||
this.clan = 0;
|
||||
this.isWorking = false;
|
||||
this.jobUniform = this.skin;
|
||||
@@ -1505,13 +1496,16 @@ class NPCData {
|
||||
this.weapons = [];
|
||||
this.interior = 0;
|
||||
this.dimension = 0;
|
||||
this.pedScale = toVector3(1.0, 1.0, 1.0);
|
||||
this.walkStyle = 0;
|
||||
this.fightStyle = 0;
|
||||
this.health = 100;
|
||||
this.armour = 100;
|
||||
this.currentAction = VRR_NPCACTION_NONE;
|
||||
this.triggers = [];
|
||||
this.typeFlags = 0;
|
||||
this.heedThreats = false;
|
||||
this.threats = 0;
|
||||
this.invincible = false;
|
||||
|
||||
this.bodyParts = {
|
||||
hair: [0,0],
|
||||
@@ -1533,6 +1527,8 @@ class NPCData {
|
||||
rightFoot: [0,0],
|
||||
};
|
||||
|
||||
this.triggers = [];
|
||||
|
||||
if(dbAssoc) {
|
||||
this.databaseId = toInteger(dbAssoc["npc_id"]);
|
||||
this.serverId = toInteger(dbAssoc["npc_server"]);
|
||||
@@ -1541,21 +1537,24 @@ class NPCData {
|
||||
this.middleName = dbAssoc["npc_name_middle"] || "";
|
||||
this.skin = toInteger(dbAssoc["npc_skin"]);
|
||||
this.cash = toInteger(dbAssoc["npc_cash"]);
|
||||
this.spawnPosition = toVector3(toFloat(dbAssoc["npc_pos_x"]), toFloat(dbAssoc["npc_pos_y"]), toFloat(dbAssoc["npc_pos_z"]));
|
||||
this.spawnHeading = toFloat(dbAssoc["npc_angle"]);
|
||||
this.position = toVector3(toFloat(dbAssoc["npc_pos_x"]), toFloat(dbAssoc["npc_pos_y"]), toFloat(dbAssoc["npc_pos_z"]));
|
||||
this.rotation = toVector3(toFloat(dbAssoc["npc_rot_x"]), toFloat(dbAssoc["npc_rot_y"]), toFloat(dbAssoc["npc_rot_z"]));
|
||||
this.scale = toVector3(toFloat(dbAssoc["npc_scale_x"]), toFloat(dbAssoc["npc_scale_y"]), toFloat(dbAssoc["npc_scale_z"]));
|
||||
this.heading = toFloat(dbAssoc["npc_rot_z"]);
|
||||
this.lastLogin = toInteger(dbAssoc["npc_when_lastlogin"]);
|
||||
this.clan = toInteger(dbAssoc["npc_clan"]);
|
||||
this.clanFlags = toInteger(dbAssoc["npc_clan_flags"]);
|
||||
this.clanRank = toInteger(dbAssoc["npc_clan_rank"]);
|
||||
this.clanTitle = toInteger(dbAssoc["npc_clan_title"]);
|
||||
this.rank = toInteger(dbAssoc["npc_rank"]);
|
||||
this.title = toInteger(dbAssoc["npc_title"]);
|
||||
this.job = toInteger(dbAssoc["npc_job"]);
|
||||
this.interior = toInteger(dbAssoc["npc_int"]);
|
||||
this.dimension = toInteger(dbAssoc["npc_vw"]);
|
||||
this.pedScale = toVector3(toFloat(dbAssoc["npc_scale_x"]), toFloat(dbAssoc["npc_scale_y"]), toFloat(dbAssoc["npc_scale_z"]));
|
||||
this.walkStyle = toInteger(dbAssoc["npc_walkstyle"]);
|
||||
this.fightStyle = toInteger(dbAssoc["npc_fightstyle"]);
|
||||
this.health = toInteger(dbAssoc["npc_health"]);
|
||||
this.armour = toInteger(dbAssoc["npc_armour"]);
|
||||
this.typeFlags = toInteger(dbAssoc["npc_type_flags"]);
|
||||
this.heedThreats = intToBool(dbAssoc["npc_headthreats"]);
|
||||
this.threats = toInteger(dbAssoc["npc_threats"]);
|
||||
this.invincible = intToBool(dbAssoc["npc_invincible"]);
|
||||
|
||||
this.bodyParts = {
|
||||
hair: [toInteger(dbAssoc["npc_hd_part_hair_model"]) || 0, toInteger(dbAssoc["npc_hd_part_hair_texture"]) || 0],
|
||||
@@ -1656,28 +1655,6 @@ class BanData {
|
||||
}
|
||||
}
|
||||
|
||||
class DeckCardData {
|
||||
constructor(imageName, value) {
|
||||
this.imageName = imageName,
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
|
||||
class DeckCardGameData {
|
||||
constructor() {
|
||||
this.gameType = VRR_DECKCARD_GAME_NONE;
|
||||
this.playedCards = [];
|
||||
this.remainingCards = [];
|
||||
}
|
||||
}
|
||||
|
||||
class DeckCardHandData {
|
||||
constructor() {
|
||||
this.cards = [];
|
||||
this.total = 0;
|
||||
}
|
||||
}
|
||||
|
||||
class JobRouteData {
|
||||
constructor(dbAssoc = false) {
|
||||
this.databaseId = 0;
|
||||
|
||||
@@ -74,6 +74,7 @@ function addAllNetworkHandlers() {
|
||||
addNetworkEventHandler("vrr.clientInfo", updateConnectionLogOnClientInfoReceive);
|
||||
addNetworkEventHandler("vrr.vehBuyState", receiveVehiclePurchaseStateUpdateFromClient);
|
||||
addNetworkEventHandler("vrr.playerPedId", receivePlayerPedNetworkId);
|
||||
addNetworkEventHandler("vrr.playerCop", setPlayerAsCopState);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -136,7 +137,7 @@ function playerClientStopped(client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function showGameMessage(client, text, colour, duration) {
|
||||
function showGameMessage(client, text, colour, duration, fontName = "Pricedown") {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Client] Showing game message to ${getPlayerDisplayForConsole(client)} (${text}) for ${duration} milliseconds`);
|
||||
sendNetworkEventToPlayer("vrr.smallGameMessage", client, text, colour, duration);
|
||||
}
|
||||
@@ -209,7 +210,7 @@ function setPlayer2DRendering(client, hudState = false, labelState = false, smal
|
||||
|
||||
function syncPlayerProperties(client) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Client] Sending signal to sync ${getPlayerDisplayForConsole(client)}'s player ped properties`);
|
||||
sendNetworkEventToPlayer("vrr.player.sync", null, client.player);
|
||||
sendNetworkEventToPlayer("vrr.syncElement", null, getPlayerPed(client).id);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -521,7 +522,8 @@ function sendPlayerRemoveFromVehicle(client) {
|
||||
// ===========================================================================
|
||||
|
||||
function sendChatBoxMessageToPlayer(client, messageText, colour) {
|
||||
messageClient(messageText, client, colour);
|
||||
//messageClient(messageText, client, colour);
|
||||
sendNetworkEventToPlayer("m", client, messageText, colour);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -936,6 +938,12 @@ function sendPlayerChatScrollLines(client, amount) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function sendPlayerChatAutoHideDelay(client, delay) {
|
||||
sendNetworkEventToPlayer("vrr.chatAutoHideDelay", client, delay);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function playRadioStreamForPlayer(client, streamURL, loop = true, volume = 0, element = false) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Client] Forcing ${getPlayerDisplayForConsole(client)} to stream ${streamURL}`);
|
||||
sendNetworkEventToPlayer("vrr.radioStream", client, streamURL, loop, volume, element);
|
||||
@@ -979,50 +987,22 @@ function sendPlayerEnterPropertyKey(client, key) {
|
||||
// ===========================================================================
|
||||
|
||||
function makePedPlayAnimation(ped, animationSlot, positionOffset) {
|
||||
let animationData = getAnimationData(animationSlot);
|
||||
let freezePlayer = false;
|
||||
//if(animationData[9] != VRR_ANIMMOVE_NONE) {
|
||||
switch(animationData[9]) {
|
||||
case VRR_ANIMMOVE_FORWARD:
|
||||
setElementCollisionsEnabled(ped, false);
|
||||
setElementPosition(ped, getPosInFrontOfPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
|
||||
freezePlayer = true;
|
||||
break;
|
||||
|
||||
case VRR_ANIMMOVE_BACK:
|
||||
setElementCollisionsEnabled(ped, false);
|
||||
setElementPosition(ped, getPosBehindPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
|
||||
freezePlayer = true;
|
||||
break;
|
||||
|
||||
case VRR_ANIMMOVE_LEFT:
|
||||
setElementCollisionsEnabled(ped, false);
|
||||
setElementPosition(ped, getPosToLeftOfPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
|
||||
freezePlayer = true;
|
||||
break;
|
||||
|
||||
case VRR_ANIMMOVE_RIGHT:
|
||||
setElementCollisionsEnabled(ped, false);
|
||||
setElementPosition(ped, getPosToRightOfPos(getElementPosition(ped), fixAngle(getElementHeading(ped)), positionOffset));
|
||||
freezePlayer = true;
|
||||
break;
|
||||
}
|
||||
//}
|
||||
sendNetworkEventToPlayer("vrr.pedAnim", null, ped.id, animationData[1], animationData[2], animationData[3], animationData[4], animationData[5], positionOffset, freezePlayer);
|
||||
setEntityData(ped, "vrr.anim", animationSlot, true);
|
||||
sendNetworkEventToPlayer("vrr.pedAnim", null, getPedForNetworkEvent(ped), animationSlot, positionOffset);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function makePedStopAnimation(pedId) {
|
||||
sendNetworkEventToPlayer("vrr.pedStopAnim", null, pedId);
|
||||
function makePedStopAnimation(ped) {
|
||||
removeEntityData(ped, "vrr.anim");
|
||||
sendNetworkEventToPlayer("vrr.pedStopAnim", null, getPedForNetworkEvent(ped));
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function forcePedAnimation(ped, animationSlot) {
|
||||
let animationData = getAnimationData(animationSlot);
|
||||
|
||||
sendNetworkEventToPlayer("vrr.forcePedAnim", null, ped.id, animationData[1], animationData[2], animationData[3], animationData[4]);
|
||||
function forcePedAnimation(ped, animationSlot, positionOffset = 0) {
|
||||
addEntityData(ped, "vrr.anim", animationSlot, true);
|
||||
sendNetworkEventToPlayer("vrr.forcePedAnim", null, getPedForNetworkEvent(ped), animationSlot, positionOffset);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -1060,13 +1040,6 @@ function sendPlayerPedPartsAndProps(client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function forcePlayerWantedLevel(client, wantedLevel) {
|
||||
sendNetworkEventToPlayer("vrr.wantedLevel", client, wantedLevel);
|
||||
return true;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function onPlayerNearPickup(client, pickupId) {
|
||||
getPlayerData(client).currentPickup = getElementFromId(pickupId);
|
||||
}
|
||||
@@ -1143,6 +1116,17 @@ function sendAllHousesToPlayer(client) {
|
||||
|
||||
// ==========================================================================
|
||||
|
||||
function sendAllJobsToPlayer(client) {
|
||||
//let jobs = getServerData().jobs;
|
||||
//for(let i in jobs) {
|
||||
// for(let j in jobs[i].locations) {
|
||||
// sendJobToPlayer(client, jobs[i].index, jobs[i].name, jobs[i].locations[j].position, jobs[i].blipModel);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
|
||||
function makePlayerHoldObjectModel(client, modelIndex) {
|
||||
sendNetworkEventToPlayer("vrr.holdObject", client, getPlayerData(client).ped, modelIndex);
|
||||
}
|
||||
@@ -1160,3 +1144,37 @@ function requestPlayerPedNetworkId(client) {
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
|
||||
function setPlayerInCutsceneInterior(client, cutsceneName) {
|
||||
getPlayerData(client).interiorCutscene = cutsceneName;
|
||||
sendNetworkEventToPlayer("vrr.cutsceneInterior", client, cutsceneName);
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
|
||||
function makePlayerPedSpeak(client, pedSpeechName) {
|
||||
sendNetworkEventToPlayer("vrr.pedSpeak", client, pedSpeechName);
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
|
||||
function setPlayerAsCopState(client, state) {
|
||||
sendNetworkEventToPlayer("vrr.playerCop", client, state);
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
|
||||
function tellPlayerToSpawn(client, skinId, position) {
|
||||
sendNetworkEventToPlayer("vrr.spawn", client, skinId, position);
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
|
||||
function sendPlayerLocaleStrings(client) {
|
||||
let strings = getGlobalConfig().locale.sendStringsToClient;
|
||||
for(let i in strings) {
|
||||
sendNetworkEventToPlayer("vrr.localeString", client, strings[i], getLocaleString(client, strings[i]));
|
||||
}
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
File diff suppressed because it is too large
Load Diff
@@ -15,6 +15,8 @@ let gameConfig = false;
|
||||
// ===========================================================================
|
||||
|
||||
let globalConfig = {
|
||||
keyBind: [],
|
||||
economy: {},
|
||||
accountPasswordHash: "SHA512",
|
||||
npcFarProximity: 100,
|
||||
npcMediumProximity: 40,
|
||||
@@ -31,7 +33,6 @@ let globalConfig = {
|
||||
stopWorkingDistance: 10,
|
||||
spawnCarDistance: 5,
|
||||
payAndSprayDistance: 5,
|
||||
keyBind: [],
|
||||
exitPropertyDistance: 3.0,
|
||||
enterPropertyDistance: 3.0,
|
||||
businessDimensionStart: 5000,
|
||||
@@ -67,10 +68,19 @@ let globalConfig = {
|
||||
],
|
||||
vehicleInactiveRespawnDelay: 1800000, // 20 minutes
|
||||
chatSectionHeaderLength: 96,
|
||||
economy: {},
|
||||
locales: [],
|
||||
accents: [],
|
||||
useServerSideVehiclePurchaseCheck: false,
|
||||
useServerSideVehiclePurchaseCheck: true,
|
||||
businessPickupStreamInDistance: 100,
|
||||
businessPickupStreamOutDistance: 120,
|
||||
housePickupStreamInDistance: 100,
|
||||
housePickupStreamOutDistance: 120,
|
||||
jobPickupStreamInDistance: 100,
|
||||
jobPickupStreamOutDistance: 120,
|
||||
businessBlipStreamInDistance: 200,
|
||||
businessBlipStreamOutDistance: 220,
|
||||
houseBlipStreamInDistance: 200,
|
||||
houseBlipStreamOutDistance: 220,
|
||||
jobBlipStreamInDistance: 200,
|
||||
jobBlipStreamOutDistance: 220,
|
||||
};
|
||||
|
||||
// ===========================================================================
|
||||
@@ -84,20 +94,20 @@ function initConfigScript() {
|
||||
serverConfig = loadServerConfigFromGameAndPort(server.game, server.port, getMultiplayerMod());
|
||||
|
||||
logToConsole(LOG_INFO, "[VRR.Config]: Applying server config ...");
|
||||
getServerConfig().fallingSnow = intToBool(toInteger(server.getCVar("fallingsnow")));
|
||||
getServerConfig().groundSnow = intToBool(toInteger(server.getCVar("groundsnow")));
|
||||
getServerConfig().useGUI = intToBool(toInteger(server.getCVar("gui")));
|
||||
getServerConfig().fallingSnow = intToBool(toInteger(server.getCVar("vrr_fallingsnow")));
|
||||
getServerConfig().groundSnow = intToBool(toInteger(server.getCVar("vrr_groundsnow")));
|
||||
getServerConfig().useGUI = intToBool(toInteger(server.getCVar("vrr_gui")));
|
||||
getServerConfig().showLogo = false;
|
||||
getServerConfig().testerOnly = intToBool(toInteger(server.getCVar("testeronly")));
|
||||
getServerConfig().testerOnly = intToBool(toInteger(server.getCVar("vrr_testeronly")));
|
||||
getServerConfig().discordEnabled = false;
|
||||
getServerConfig().createJobPickups = intToBool(toInteger(server.getCVar("jobpickups")));
|
||||
getServerConfig().createBusinessPickups = intToBool(toInteger(server.getCVar("businesspickups")));
|
||||
getServerConfig().createHousePickups = intToBool(toInteger(server.getCVar("housepickups")));
|
||||
getServerConfig().createJobBlips = intToBool(toInteger(server.getCVar("jobblips")));
|
||||
getServerConfig().createBusinessBlips = intToBool(toInteger(server.getCVar("businessblips")));
|
||||
getServerConfig().createHouseBlips = intToBool(toInteger(server.getCVar("houseblips")));
|
||||
getServerConfig().useRealTime = intToBool(toInteger(server.getCVar("realtime")));
|
||||
getServerConfig().antiCheat.enabled = intToBool(toInteger(server.getCVar("anticheat")));
|
||||
getServerConfig().createJobPickups = intToBool(toInteger(server.getCVar("vrr_jobpickups")));
|
||||
getServerConfig().createBusinessPickups = intToBool(toInteger(server.getCVar("vrr_businesspickups")));
|
||||
getServerConfig().createHousePickups = intToBool(toInteger(server.getCVar("vrr_housepickups")));
|
||||
getServerConfig().createJobBlips = intToBool(toInteger(server.getCVar("vrr_jobblips")));
|
||||
getServerConfig().createBusinessBlips = intToBool(toInteger(server.getCVar("vrr_businessblips")));
|
||||
getServerConfig().createHouseBlips = intToBool(toInteger(server.getCVar("vrr_houseblips")));
|
||||
getServerConfig().useRealTime = intToBool(toInteger(server.getCVar("vrr_realtime")));
|
||||
getServerConfig().antiCheat.enabled = intToBool(toInteger(server.getCVar("vrr_anticheat")));
|
||||
|
||||
applyConfigToServer(serverConfig);
|
||||
logToConsole(LOG_DEBUG, "[VRR.Config]: Server config applied successfully!");
|
||||
@@ -112,6 +122,7 @@ function loadGlobalConfig() {
|
||||
getGlobalConfig().economy = loadEconomyConfig();
|
||||
getGlobalConfig().locale = loadLocaleConfig();
|
||||
getGlobalConfig().accents = loadAccentConfig();
|
||||
getGlobalConfig().discord = loadDiscordConfig();
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -124,7 +135,7 @@ function loadServerConfigFromGameAndPort(gameId, port, mpMod) {
|
||||
if(dbQuery) {
|
||||
if(dbQuery.numRows > 0) {
|
||||
let dbAssoc = fetchQueryAssoc(dbQuery);
|
||||
let tempServerConfigData = new ServerData(dbAssoc);
|
||||
let tempServerConfigData = new ServerConfigData(dbAssoc);
|
||||
freeDatabaseQuery(dbQuery);
|
||||
return tempServerConfigData;
|
||||
}
|
||||
@@ -144,7 +155,7 @@ function loadServerConfigFromId(tempServerId) {
|
||||
if(dbQuery) {
|
||||
if(dbQuery.numRows > 0) {
|
||||
let dbAssoc = fetchQueryAssoc(dbQuery);
|
||||
let tempServerConfigData = new ServerData(dbAssoc);
|
||||
let tempServerConfigData = new ServerConfigData(dbAssoc);
|
||||
freeDatabaseQuery(dbQuery);
|
||||
return tempServerConfigData;
|
||||
}
|
||||
@@ -178,7 +189,7 @@ function saveServerConfigToDatabase() {
|
||||
let dbConnection = connectToDatabase();
|
||||
if(dbConnection) {
|
||||
let data = [
|
||||
["svr_settings", toInteger(getServerConfig().settings)],
|
||||
//["svr_settings", toInteger(getServerConfig().settings)],
|
||||
["svr_start_time_hour", getServerConfig().hour],
|
||||
["svr_start_time_min", getServerConfig().minute],
|
||||
["svr_start_weather", getServerConfig().weather],
|
||||
@@ -233,7 +244,7 @@ function saveServerConfigToDatabase() {
|
||||
|
||||
/**
|
||||
*
|
||||
* @return {ServerData} - Server configuration data
|
||||
* @return {ServerConfigData} - Server configuration data
|
||||
*
|
||||
*/
|
||||
function getServerConfig() {
|
||||
@@ -300,7 +311,7 @@ function setTimeCommand(command, params, client) {
|
||||
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} set the time to ${makeReadableTime(hour, minute)}`);
|
||||
announceAdminAction("ServerTimeSet", getPlayerName(client), makeReadableTime(hour, minute));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -328,7 +339,7 @@ function setMinuteDurationCommand(command, params, client) {
|
||||
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} set the minute duration to ${minuteDuration}ms`);
|
||||
announceAdminAction("ServerMinuteDurationSet", getPlayerName(client), makeReadableTime(hour, minute));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -361,7 +372,7 @@ function setWeatherCommand(command, params, client) {
|
||||
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} set the weather to {ALTCOLOUR}${getGameConfig().weatherNames[getServerGame()][toInteger(weatherId)]}`);
|
||||
announceAdminAction("ServerWeatherSet", getPlayerName(client), getGameConfig().weatherNames[getServerGame()][toInteger(weatherId)]);
|
||||
updateServerRules();
|
||||
return true;
|
||||
}
|
||||
@@ -394,7 +405,7 @@ function setSnowingCommand(command, params, client) {
|
||||
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} {MAINCOLOUR}turned falling snow ${getBoolRedGreenInlineColour(falling)}${getOnOffFromBool(falling)} {MAINCOLOUR}and ground snow ${getBoolRedGreenInlineColour(ground)}${getOnOffFromBool(ground)}`);
|
||||
announceAdminAction("ServerSnowSet", getPlayerName(client), `${getBoolRedGreenInlineColour(falling)}${getOnOffFromBool(falling)}`, `${getBoolRedGreenInlineColour(ground)}${getOnOffFromBool(ground)}`);
|
||||
updateServerRules();
|
||||
return true;
|
||||
}
|
||||
@@ -430,7 +441,7 @@ function setServerGUIColoursCommand(command, params, client) {
|
||||
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
//messageAdminAction(`${getPlayerName(client)} ${getInlineChatColourByName("orange")}set the server ${getBoolRedGreenInlineColour(fallingSnow)}${getOnOffFromBool(fallingSnow)} ${getInlineChatColourByName("orange")}and ground snow ${getBoolRedGreenInlineColour(groundSnow)}${getOnOffFromBool(groundSnow)}`);
|
||||
//announceAdminAction(`${getPlayerName(client)} ${getInlineChatColourByName("orange")}set the server ${getBoolRedGreenInlineColour(fallingSnow)}${getOnOffFromBool(fallingSnow)} ${getInlineChatColourByName("orange")}and ground snow ${getBoolRedGreenInlineColour(groundSnow)}${getOnOffFromBool(groundSnow)}`);
|
||||
//updateServerRules();
|
||||
return true;
|
||||
}
|
||||
@@ -452,7 +463,7 @@ function toggleServerLogoCommand(command, params, client) {
|
||||
|
||||
updatePlayerShowLogoState(null, getServerConfig().useLogo);
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} {MAINCOLOUR}turned the server logo image ${getBoolRedGreenInlineColour(doesServerHaveServerLogoEnabled())}${toUpperCase(getOnOffFromBool(getServerConfig().useLogo))}`);
|
||||
//announceAdminAction(`${getPlayerName(client)}{MAINCOLOUR}${getBoolRedGreenInlineColour(doesServerHaveServerLogoEnabled())}${toUpperCase(getOnOffFromBool(getServerConfig().useLogo))}`);
|
||||
updateServerRules();
|
||||
return true;
|
||||
}
|
||||
@@ -472,7 +483,7 @@ function toggleServerLogoCommand(command, params, client) {
|
||||
getServerConfig().createJobBlips = !getServerConfig().createJobBlips;
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} {MAINCOLOUR}turned ${getBoolRedGreenInlineColour(doesServerHaveJobBlipsEnabled())}${toUpperCase(getOnOffFromBool(getServerConfig().createJobBlips))} {MAINCOLOUR}all job blips`);
|
||||
announceAdminAction("ServerJobBlipsSet", `{adminRed}${getPlayerName(client)}{MAINCOLOUR}`, `${getBoolRedGreenInlineColour(getServerConfig().createJobBlips)}${toUpperCase(getOnOffFromBool(getServerConfig().createJobBlips))}{MAINCOLOUR}`);
|
||||
resetAllJobBlips();
|
||||
return true;
|
||||
}
|
||||
@@ -492,7 +503,7 @@ function toggleServerLogoCommand(command, params, client) {
|
||||
getServerConfig().createJobPickups = !getServerConfig().createJobPickups;
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} {MAINCOLOUR}turned ${getBoolRedGreenInlineColour(doesServerHaveJobPickupsEnabled())}${toUpperCase(getOnOffFromBool(getServerConfig().createJobPickups))} {MAINCOLOUR}all job pickups`);
|
||||
announceAdminAction("ServerJobPickupsSet", `{adminRed}${getPlayerName(client)}{MAINCOLOUR}`, `${getBoolRedGreenInlineColour(getServerConfig().createJobPickups)}${toUpperCase(getOnOffFromBool(getServerConfig().createJobPickups))}{MAINCOLOUR}`);
|
||||
resetAllJobPickups();
|
||||
return true;
|
||||
}
|
||||
@@ -512,7 +523,7 @@ function toggleServerLogoCommand(command, params, client) {
|
||||
getServerConfig().createBusinessBlips = !getServerConfig().createBusinessBlips;
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} {MAINCOLOUR}turned ${getBoolRedGreenInlineColour(doesServerHaveBusinessBlipsEnabled())}${toUpperCase(getOnOffFromBool(getServerConfig().createBusinessBlips))} {MAINCOLOUR}all business blips`);
|
||||
announceAdminAction("ServerBusinessBlipsSet", `{adminRed}${getPlayerName(client)}{MAINCOLOUR}`, `${getBoolRedGreenInlineColour(getServerConfig().createBusinessBlips)}${toUpperCase(getOnOffFromBool(getServerConfig().createBusinessBlips))}{MAINCOLOUR}`);
|
||||
resetAllBusinessBlips();
|
||||
return true;
|
||||
}
|
||||
@@ -532,7 +543,7 @@ function toggleServerLogoCommand(command, params, client) {
|
||||
getServerConfig().createBusinessPickups = !getServerConfig().createBusinessPickups;
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} {MAINCOLOUR}turned ${getBoolRedGreenInlineColour(doesServerHaveBusinessPickupsEnabled())}${toUpperCase(getOnOffFromBool(getServerConfig().createBusinessPickups))} {MAINCOLOUR}all business pickups`);
|
||||
announceAdminAction("ServerBusinessPickupsSet", `{adminRed}${getPlayerName(client)}{MAINCOLOUR}`, `${getBoolRedGreenInlineColour(getServerConfig().createBusinessPickups)}${toUpperCase(getOnOffFromBool(getServerConfig().createBusinessPickups))}{MAINCOLOUR}`);
|
||||
resetAllBusinessPickups();
|
||||
return true;
|
||||
}
|
||||
@@ -552,7 +563,7 @@ function toggleServerLogoCommand(command, params, client) {
|
||||
getServerConfig().createHouseBlips = !getServerConfig().createHouseBlips;
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} {MAINCOLOUR}turned ${getBoolRedGreenInlineColour(doesServerHaveHouseBlipsEnabled())}${toUpperCase(getOnOffFromBool(getServerConfig().createHouseBlips))} {MAINCOLOUR}all house blips`);
|
||||
announceAdminAction("ServerHouseBlipsSet", `{adminRed}${getPlayerName(client)}{MAINCOLOUR}`, `${getBoolRedGreenInlineColour(getServerConfig().createHouseBlips)}${toUpperCase(getOnOffFromBool(getServerConfig().createHouseBlips))}{MAINCOLOUR}`);
|
||||
resetAllHouseBlips();
|
||||
return true;
|
||||
}
|
||||
@@ -572,7 +583,7 @@ function toggleServerLogoCommand(command, params, client) {
|
||||
getServerConfig().createHousePickups = !getServerConfig().createHousePickups;
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} {MAINCOLOUR}turned ${getBoolRedGreenInlineColour(doesServerHaveHousePickupsEnabled())}${toUpperCase(getOnOffFromBool(getServerConfig().createHousePickups))} {MAINCOLOUR}all house pickups`);
|
||||
announceAdminAction("ServerHousePickupsSet", `{adminRed}${getPlayerName(client)}{MAINCOLOUR}`, `${getBoolRedGreenInlineColour(getServerConfig().createHousePickups)}${toUpperCase(getOnOffFromBool(getServerConfig().createHousePickups))}{MAINCOLOUR}`);
|
||||
resetAllHousePickups();
|
||||
return true;
|
||||
}
|
||||
@@ -593,7 +604,7 @@ function toggleServerGUICommand(command, params, client) {
|
||||
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} {MAINCOLOUR}turned GUI ${toLowerCase(getOnOffFromBool(doesServerHaveGUIEnabled()))} for this server`);
|
||||
announceAdminAction(`${getPlayerName(client)}{MAINCOLOUR} turned GUI ${toLowerCase(getOnOffFromBool(getServerConfig().useGUI))} for this server`);
|
||||
updateServerRules();
|
||||
return true;
|
||||
}
|
||||
@@ -614,7 +625,7 @@ function toggleServerUseRealWorldTimeCommand(command, params, client) {
|
||||
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} {MAINCOLOUR}turned real-world time ${getServerConfig().useRealTime} for this server (GMT ${addPositiveNegativeSymbol(getServerConfig().realTimeZone)})`);
|
||||
//announceAdminAction(`${getPlayerName(client)}{MAINCOLOUR} turned real-world time ${getServerConfig().useRealTime} for this server (GMT ${addPositiveNegativeSymbol(getServerConfig().realTimeZone)})`);
|
||||
updateServerGameTime();
|
||||
updateServerRules();
|
||||
return true;
|
||||
@@ -640,7 +651,7 @@ function setServerRealWorldTimeZoneCommand(command, params, client) {
|
||||
getServerConfig().realTimeZone = toInteger(params);
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messageAdminAction(`${getPlayerName(client)} {MAINCOLOUR}set the time zone for in-game's real-world time to GMT ${addPositiveNegativeSymbol(getServerConfig().realTimeZone)}`);
|
||||
//announceAdminAction(`${getPlayerName(client)} {MAINCOLOUR}set the time zone for in-game's real-world time to GMT ${addPositiveNegativeSymbol(getServerConfig().realTimeZone)}`);
|
||||
updateServerGameTime();
|
||||
updateServerRules();
|
||||
return true;
|
||||
@@ -746,6 +757,15 @@ function loadAccentConfig() {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function loadDiscordConfig() {
|
||||
let discordConfig = JSON.parse(loadTextFile(`config/discord.json`));
|
||||
if(discordConfig != null) {
|
||||
return discordConfig;
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function doesServerHaveGUIEnabled() {
|
||||
return getServerConfig().useGUI;
|
||||
}
|
||||
@@ -782,7 +802,7 @@ function doesServerHaveJobPickupsEnabled() {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function doesServerHaveBusinesBlipsEnabled() {
|
||||
function doesServerHaveBusinessBlipsEnabled() {
|
||||
return getServerConfig().createBusinessBlips;
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
const VRR_PROMPT_NONE = 0;
|
||||
const VRR_PROMPT_CREATEFIRSTCHAR = 1;
|
||||
const VRR_PROMPT_BIZORDER = 2;
|
||||
const VRR_PROMPT_GIVEVEHTOCLAN = 3;
|
||||
|
||||
// Job Types
|
||||
const VRR_JOB_NONE = 0;
|
||||
@@ -347,3 +348,8 @@ const VRR_GPS_TYPE_POLICE = 2; // Police Station
|
||||
const VRR_GPS_TYPE_HOSPITAL = 3; // Hospital
|
||||
const VRR_GPS_TYPE_JOB = 4; // Job
|
||||
const VRR_GPS_TYPE_GAMELOC = 5; // Game Location
|
||||
|
||||
// Discord Webhook Types
|
||||
const VRR_DISCORD_WEBHOOK_NONE = 0;
|
||||
const VRR_DISCORD_WEBHOOK_LOG = 1;
|
||||
const VRR_DISCORD_WEBHOOK_ADMIN = 2;
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
let scriptVersion = "1.0";
|
||||
let serverStartTime = 0;
|
||||
let logLevel = LOG_INFO;
|
||||
let logLevel = LOG_INFO|LOG_DEBUG|LOG_VERBOSE|LOG_WARN|LOG_ERROR;
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
@@ -31,6 +31,10 @@ let serverData = {
|
||||
localeStrings: {},
|
||||
cachedTranslations: [],
|
||||
cachedTranslationFrom: [],
|
||||
triggers: [],
|
||||
npcs: [],
|
||||
locales: [],
|
||||
accents: [],
|
||||
};
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
@@ -20,4 +20,3 @@ function initDatabaseScript() {
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ function addLogLevelCommand(command, params, client) {
|
||||
|
||||
sendPlayerLogLevel(null, logLevel);
|
||||
|
||||
messageAdminAction(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}enabled log level {ALTCOLOUR}${toLowerCase(params)}`);
|
||||
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}enabled log level {ALTCOLOUR}${toLowerCase(params)}`);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -222,7 +222,7 @@ function removeLogLevelCommand(command, params, client) {
|
||||
|
||||
sendPlayerLogLevel(null, logLevel);
|
||||
|
||||
messageAdminAction(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}disabled log level {ALTCOLOUR}${toLowerCase(params)}`);
|
||||
messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}disabled log level {ALTCOLOUR}${toLowerCase(params)}`);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -380,15 +380,72 @@ function setPlayerTesterStatusCommand(command, params, client) {
|
||||
|
||||
let enabled = hasBitFlag(getPlayerData(targetClient).accountData.flags.moderation, getModerationFlagValue("IsTester"));
|
||||
|
||||
messageAdminAction(`{ALTCOLOUR}${client.name} ${getBoolRedGreenInlineColour(enabled)}${toUpperCase(getEnabledDisabledFromBool(enabled))} {ALTCOLOUR}${targetClient.name}'s {MAINCOLOUR}tester status`)
|
||||
messageAdmins(`{ALTCOLOUR}${client.name} ${getBoolRedGreenInlineColour(enabled)}${toUpperCase(getEnabledDisabledFromBool(enabled))} {ALTCOLOUR}${targetClient.name}'s {MAINCOLOUR}tester status`)
|
||||
return true;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveAllServerDataCommand(command, params, client) {
|
||||
function testPromptGUICommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
return false;
|
||||
}
|
||||
|
||||
let targetClient = getPlayerFromParams(params);
|
||||
|
||||
if(!targetClient) {
|
||||
messagePlayerError(client, getLocaleString(client, "InvalidPlayer"));
|
||||
return false;
|
||||
}
|
||||
|
||||
showPlayerPromptGUI(targetClient, "Testing the two button prompt GUI", "Testing", "Yes", "No")
|
||||
return true;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function testInfoGUICommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
return false;
|
||||
}
|
||||
|
||||
let targetClient = getPlayerFromParams(params);
|
||||
|
||||
if(!targetClient) {
|
||||
messagePlayerError(client, getLocaleString(client, "InvalidPlayer"));
|
||||
return false;
|
||||
}
|
||||
|
||||
showPlayerInfoGUI(targetClient, "Testing the info dialog GUI", "Testing", "Ok");
|
||||
return true;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function testErrorGUICommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
return false;
|
||||
}
|
||||
|
||||
let targetClient = getPlayerFromParams(params);
|
||||
|
||||
if(!targetClient) {
|
||||
messagePlayerError(client, getLocaleString(client, "InvalidPlayer"));
|
||||
return false;
|
||||
}
|
||||
|
||||
showPlayerErrorGUI(targetClient, "Testing the error dialog GUI", "Testing", "Ok");
|
||||
return true;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveServerDataCommand(command, params, client) {
|
||||
messageAdmins(`{clanOrange}Vortrex has forced a manual save of all data. Initiating ...`);
|
||||
saveAllServerDataToDatabase();
|
||||
saveServerDataToDatabase();
|
||||
messageAdmins(`{clanOrange}All server data saved to database successfully!`);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -88,53 +88,47 @@ function getDiscordUserData(discordUserId) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function messageDiscordChatChannel(message) {
|
||||
if(!getServerConfig().discordConfig.sendChat) {
|
||||
function messageDiscordChatChannel(messageString) {
|
||||
if(getServerConfig().devServer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
message = removeColoursInMessage(message);
|
||||
console.warn(message);
|
||||
let payloadData = {
|
||||
"username": "Chat",
|
||||
"content": message,
|
||||
};
|
||||
if(!getServerConfig().discord.sendChat) {
|
||||
return false;
|
||||
}
|
||||
|
||||
triggerWebHook(getServerConfig().discordConfig.chatChannelWebHookURL, JSON.stringify(payloadData));
|
||||
messageString = removeColoursInMessage(messageString);
|
||||
triggerWebHook(messageString, getServerId(), VRR_DISCORD_WEBHOOK_LOG);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function messageDiscordAdminChannel(message) {
|
||||
if(!getServerConfig().discordConfig.sendAdminEvents) {
|
||||
function messageDiscordEventChannel(messageString) {
|
||||
if(getServerConfig().devServer == true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
message = removeColoursInMessage(message);
|
||||
console.warn(message);
|
||||
let payloadData = {
|
||||
"username": "Admin Event",
|
||||
"content": message,
|
||||
};
|
||||
if(!getServerConfig().discord.sendEvents) {
|
||||
return false;
|
||||
}
|
||||
|
||||
triggerWebHook(getServerConfig().discordConfig.adminChannelWebHookURL, JSON.stringify(payloadData));
|
||||
messageString = removeColoursInMessage(messageString);
|
||||
triggerWebHook(messageString, getServerId(), VRR_DISCORD_WEBHOOK_LOG);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function messageDiscordEventChannel(message) {
|
||||
if(!getServerConfig().discordConfig.sendEvents) {
|
||||
function messageDiscordAdminChannel(messageString) {
|
||||
if(getServerConfig().devServer == true) {
|
||||
return false;
|
||||
}
|
||||
|
||||
message = removeColoursInMessage(message);
|
||||
console.warn(message);
|
||||
let payloadData = {
|
||||
"username": "Event",
|
||||
"content": message,
|
||||
};
|
||||
if(!getServerConfig().discord.sendAdmin) {
|
||||
return false;
|
||||
}
|
||||
|
||||
triggerWebHook(getServerConfig().discordConfig.eventChannelWebHookURL, JSON.stringify(payloadData));
|
||||
messageString = removeColoursInMessage(messageString);
|
||||
triggerWebHook(messageString, getServerId(), VRR_DISCORD_WEBHOOK_ADMIN);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -36,6 +36,11 @@ function playerPayDay(client) {
|
||||
// Payday bonus
|
||||
grossIncome = grossIncome*getGlobalConfig().economy.grossIncomeMultiplier;
|
||||
|
||||
// Double bonus
|
||||
if(isDoubleBonusActive()) {
|
||||
grossIncome = grossIncome*2;
|
||||
}
|
||||
|
||||
let incomeTaxAmount = calculateIncomeTax(wealth);
|
||||
|
||||
let netIncome = grossIncome-incomeTaxAmount;
|
||||
@@ -49,11 +54,11 @@ function playerPayDay(client) {
|
||||
let canPayNow = totalCash+netIncome;
|
||||
if(incomeTaxAmount <= canPayNow) {
|
||||
takePlayerCash(client, canPayNow);
|
||||
messagePlayerInfo(client, `You covered the remaining taxes with {ALTCOLOUR}$${canPayNow} {MAINCOLOUR}in cash.`);
|
||||
messagePlayerAlert(client, `{orange}You lost money since your taxes are more than your paycheck!`);
|
||||
messagePlayerAlert(client, `{orange}If you don't have enough cash to cover taxes on next paycheck, you will lose stuff!`);
|
||||
messagePlayerInfo(client, `{orange}${getLocaleString(client, "RemainingTaxPaidInCash", `{ALTCOLOUR}${canPayNow}{MAINCOLOUR}`)}`);
|
||||
messagePlayerAlert(client, `{orange}${getLocaleString(client, "LostMoneyFromTaxes")}`);
|
||||
messagePlayerAlert(client, `{orange}${getLocaleString(client, "NextPaycheckRepossessionWarning")}`);
|
||||
} else {
|
||||
messagePlayerInfo(client, `{orange}You don't have enough cash to pay your taxes!`);
|
||||
messagePlayerInfo(client, `{orange}${getLocaleString(client, "NotEnoughCashForTax")}`);
|
||||
takePlayerCash(client, canPayNow);
|
||||
|
||||
let vehicleCount = getAllVehiclesOwnedByPlayer(client).length;
|
||||
@@ -65,7 +70,7 @@ function playerPayDay(client) {
|
||||
let newVehicleCount = getAllVehiclesOwnedByPlayer(client).length;
|
||||
let newHouseCount = getAllHousesOwnedByPlayer(client).length;
|
||||
let newBusinessCount = getAllBusinessesOwnedByPlayer(client).length;
|
||||
messagePlayerInfo(client, `{orange}You lost ${newVehicleCount-vehicleCount} vehicles, ${newHouseCount-houseCount} houses, and ${newBusinessCount-businessCount} businesses to cover the remaining tax.`);
|
||||
messagePlayerInfo(client, `{orange}${getLocaleString(client, "AssetsRepossessedForTaxes", newVehicleCount-vehicleCount, newHouseCount-houseCount, newBusinessCount-businessCount)}`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,7 +132,7 @@ function setPayDayBonusMultiplier(command, params, client) {
|
||||
|
||||
getGlobalConfig().economy.grossIncomeMultiplier = newMultiplier;
|
||||
|
||||
messageAdminAction(`${client.name} set payday bonus to ${newMultiplier*100}%`);
|
||||
announceAdminAction(`PaydayBonusSet`, `{adminRed}${client.name}{MAINCOLOUR}`, `{ALTCOLOUR}${newMultiplier*100}%{MAINCOLOUR}`);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -157,6 +162,8 @@ function attemptRepossession(client, totalToPay) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function repossessFirstAsset(client) {
|
||||
let vehicles = getAllVehiclesOwnedByPlayer(client);
|
||||
if(vehicles.length > 0) {
|
||||
@@ -194,3 +201,15 @@ function getAllBusinessesOwnedByPlayer(client) {
|
||||
function getAllHousesOwnedByPlayer(client) {
|
||||
return getServerData().houses.filter((h) => h.ownerType == VRR_HOUSEOWNER_PLAYER && h.ownerId == getPlayerCurrentSubAccount(client).databaseId);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function isDoubleBonusActive() {
|
||||
if(isWeekend()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -38,7 +38,7 @@ function addAllEventHandlers() {
|
||||
addEventHandler("onPedEnteringVehicle", onPedEnteringVehicle);
|
||||
addEventHandler("onPedExitingVehicle", onPedExitingVehicle);
|
||||
|
||||
addEventHandler("OnPlayerCommand", onPlayerCommand);
|
||||
//addEventHandler("OnPlayerCommand", onPlayerCommand);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -60,7 +60,8 @@ function onPlayerJoin(event, client) {
|
||||
fadeCamera(client, true, 1.0);
|
||||
}
|
||||
|
||||
messageDiscordEventChannel(`👋 ${getPlayerDisplayForConsole(client)} has joined the server.`);
|
||||
messageDiscordEventChannel(`👋 ${client.name} is connecting to the server ...`);
|
||||
//messageDiscordEventChannel(`👋 ${getPlayerDisplayForConsole(client)} has joined the server.`);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -97,14 +98,20 @@ function onPlayerQuit(event, client, quitReasonId) {
|
||||
updateConnectionLogOnQuit(client, quitReasonId);
|
||||
|
||||
if(isPlayerLoggedIn(client)) {
|
||||
messagePlayerNormal(null, `👋 ${getPlayerName(client)} has left the server (${disconnectReasons[quitReasonId]})`, getColourByName("softYellow"));
|
||||
let reasonText = disconnectReasons[quitReasonId];
|
||||
if(getPlayerData(client).customDisconnectReason != "") {
|
||||
reasonText = getPlayerData(client).customDisconnectReason;
|
||||
}
|
||||
messagePlayerNormal(null, `👋 ${getPlayerName(client)} has left the server (${reasonText})`, getColourByName("softYellow"));
|
||||
messageDiscordEventChannel(`👋 ${client.name} has left the server (${reasonText})`);
|
||||
|
||||
savePlayerToDatabase(client);
|
||||
resetClientStuff(client);
|
||||
getServerData().clients[client.index] = null;
|
||||
} else {
|
||||
messageDiscordEventChannel(`👋 ${client.name} has left the server (${disconnectReasons[quitReasonId]}[${quitReasonId}])`);
|
||||
}
|
||||
|
||||
messageDiscordEventChannel(`👋 ${getPlayerDisplayForConsole(client)} has left the server.`);
|
||||
|
||||
clearTemporaryVehicles();
|
||||
clearTemporaryPeds();
|
||||
}
|
||||
@@ -112,9 +119,8 @@ function onPlayerQuit(event, client, quitReasonId) {
|
||||
// ===========================================================================
|
||||
|
||||
async function onPlayerChat(event, client, messageText) {
|
||||
event.preventDefault();
|
||||
|
||||
processPlayerChat(client, messageText);
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -203,7 +209,7 @@ function onResourceStop(event, resource) {
|
||||
}
|
||||
|
||||
if(resource == thisResource) {
|
||||
saveAllServerDataToDatabase();
|
||||
saveServerDataToDatabase();
|
||||
clearArray(getServerData().vehicles);
|
||||
clearArray(getServerData().clients);
|
||||
clearArray(getServerData().businesses);
|
||||
@@ -245,13 +251,13 @@ async function onPlayerEnteredVehicle(client, clientVehicle, seat) {
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
vehicle = getVehicleFromIVNetworkId(clientVehicle);
|
||||
} else {
|
||||
if(client.player == null) {
|
||||
if(getPlayerPed(client) == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
await waitUntil(() => client != null && client.player != null && client.player.vehicle != null);
|
||||
await waitUntil(() => client != null && getPlayerPed(client) != null && getPlayerVehicle(client) != null);
|
||||
|
||||
vehicle = client.player.vehicle;
|
||||
vehicle = getPlayerVehicle(client);
|
||||
}
|
||||
|
||||
if(!getVehicleData(vehicle)) {
|
||||
@@ -346,7 +352,7 @@ async function onPlayerEnteredVehicle(client, clientVehicle, seat) {
|
||||
|
||||
if(getVehicleData(vehicle).streamingRadioStation != -1) {
|
||||
if(getPlayerData(client).streamingRadioStation != getVehicleData(vehicle).streamingRadioStation) {
|
||||
playRadioStreamForPlayer(client, radioStations[getVehicleData(vehicle).streamingRadioStation].url, true, getPlayerStreamingRadioVolume(client));
|
||||
playRadioStreamForPlayer(client, getServerData().radioStations[getVehicleData(vehicle).streamingRadioStation].url, true, getPlayerStreamingRadioVolume(client));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -392,7 +398,16 @@ function onPlayerDeath(client, position) {
|
||||
client.despawnPlayer();
|
||||
getPlayerCurrentSubAccount(client).interior = closestJail.interior;
|
||||
getPlayerCurrentSubAccount(client).dimension = closestJail.dimension;
|
||||
|
||||
if(isPlayerWorking(client)) {
|
||||
stopWorking(client);
|
||||
}
|
||||
|
||||
if(getGame() == VRR_GAME_MAFIA_ONE) {
|
||||
spawnPlayer(client, getGameConfig().skins[getGame()][getPlayerCurrentSubAccount(client).skin][0], closestJail.position, closestJail.heading);
|
||||
} else {
|
||||
spawnPlayer(client, closestJail.position, closestJail.heading, getGameConfig().skins[getGame()][getPlayerCurrentSubAccount(client).skin][0]);
|
||||
}
|
||||
|
||||
if(isFadeCameraSupported()) {
|
||||
fadeCamera(client, true, 1.0);
|
||||
@@ -405,11 +420,21 @@ function onPlayerDeath(client, position) {
|
||||
client.despawnPlayer();
|
||||
getPlayerCurrentSubAccount(client).interior = closestHospital.interior;
|
||||
getPlayerCurrentSubAccount(client).dimension = closestHospital.dimension;
|
||||
|
||||
if(isPlayerWorking(client)) {
|
||||
stopWorking(client);
|
||||
}
|
||||
|
||||
if(getGame() == VRR_GAME_MAFIA_ONE) {
|
||||
spawnPlayer(client, getGameConfig().skins[getGame()][getPlayerCurrentSubAccount(client).skin][0], closestHospital.position, closestHospital.heading);
|
||||
} else {
|
||||
spawnPlayer(client, closestHospital.position, closestHospital.heading, getGameConfig().skins[getGame()][getPlayerCurrentSubAccount(client).skin][0]);
|
||||
}
|
||||
|
||||
if(isFadeCameraSupported()) {
|
||||
fadeCamera(client, true, 1.0);
|
||||
}
|
||||
|
||||
updatePlayerSpawnedState(client, true);
|
||||
makePlayerStopAnimation(client);
|
||||
setPlayerControlState(client, true);
|
||||
@@ -431,7 +456,7 @@ function onPedSpawn(ped) {
|
||||
|
||||
function onPlayerSpawn(client) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Event] Checking for ${getPlayerDisplayForConsole(client)}'s player ped`);
|
||||
//if(client.player == null) {
|
||||
//if(getPlayerPed(client) == null) {
|
||||
// logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)}'s player element not set yet. Rechecking ...`);
|
||||
// setTimeout(onPlayerSpawn, 500, client);
|
||||
// return false;
|
||||
@@ -447,7 +472,7 @@ function onPlayerSpawn(client) {
|
||||
}
|
||||
|
||||
logToConsole(LOG_DEBUG, `[VRR.Event] Checking ${getPlayerDisplayForConsole(client)}'s login status`);
|
||||
if(!getPlayerData(client).loggedIn) {
|
||||
if(!isPlayerLoggedIn(client)) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Event] ${getPlayerDisplayForConsole(client)} is NOT logged in. Despawning their player.`);
|
||||
client.disconnect();
|
||||
return false;
|
||||
@@ -464,12 +489,12 @@ function onPlayerSpawn(client) {
|
||||
|
||||
if(getServerGame() == VRR_GAME_GTA_IV) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped body parts and props`);
|
||||
setEntityData(client.player, "vrr.bodyParts", getPlayerCurrentSubAccount(client).bodyParts, true);
|
||||
setEntityData(client.player, "vrr.bodyProps", getPlayerCurrentSubAccount(client).bodyProps, true);
|
||||
setEntityData(getPlayerPed(client), "vrr.bodyParts", getPlayerCurrentSubAccount(client).bodyParts, true);
|
||||
setEntityData(getPlayerPed(client), "vrr.bodyProps", getPlayerCurrentSubAccount(client).bodyProps, true);
|
||||
}
|
||||
|
||||
logToConsole(LOG_DEBUG, `[VRR.Event] Setting ${getPlayerDisplayForConsole(client)}'s ped scale (${getPlayerCurrentSubAccount(client).pedScale})`);
|
||||
setEntityData(client.player, "vrr.scale", getPlayerCurrentSubAccount(client).pedScale, true);
|
||||
setEntityData(getPlayerPed(client), "vrr.scale", getPlayerCurrentSubAccount(client).pedScale, true);
|
||||
|
||||
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'`);
|
||||
@@ -482,13 +507,13 @@ function onPlayerSpawn(client) {
|
||||
|
||||
logToConsole(LOG_DEBUG, `[VRR.Event] Storing ${getPlayerDisplayForConsole(client)} ped in client data `);
|
||||
if(areServerElementsSupported()) {
|
||||
getPlayerData(client).ped = client.player;
|
||||
getPlayerData(client).ped = getPlayerPed(client);
|
||||
}
|
||||
|
||||
logToConsole(LOG_DEBUG, `[VRR.Event] Sending ${getPlayerDisplayForConsole(client)} the 'now playing as' message`);
|
||||
messagePlayerAlert(client, `You are now playing as: {businessBlue}${getCharacterFullName(client)}`, getColourByName("white"));
|
||||
messagePlayerNormal(client, "This server is in early development and may restart at any time for updates.", getColourByName("orange"));
|
||||
messagePlayerNormal(client, "Please report any bugs using /bug and suggestions using /idea", getColourByName("yellow"));
|
||||
//messagePlayerNormal(client, "This server is in early development and may restart at any time for updates.", getColourByName("orange"));
|
||||
//messagePlayerNormal(client, "Please report any bugs using /bug and suggestions using /idea", getColourByName("yellow"));
|
||||
|
||||
logToConsole(LOG_DEBUG, `[VRR.Event] Updating spawned state for ${getPlayerDisplayForConsole(client)} to true`);
|
||||
updatePlayerSpawnedState(client, true);
|
||||
@@ -522,7 +547,7 @@ function onPlayerSpawn(client) {
|
||||
|
||||
if(areServerElementsSupported() && getServerGame() == VRR_GAME_GTA_SA) {
|
||||
logToConsole(LOG_DEBUG, `[VRR.Event] Setting player walk and fightstyle for ${getPlayerDisplayForConsole(client)}`);
|
||||
setEntityData(client.player, "vrr.walkStyle", getPlayerCurrentSubAccount(client).walkStyle, true);
|
||||
setEntityData(getPlayerPed(client), "vrr.walkStyle", getPlayerCurrentSubAccount(client).walkStyle, true);
|
||||
|
||||
setPlayerFightStyle(client, getPlayerCurrentSubAccount(client).fightStyle);
|
||||
}
|
||||
@@ -547,21 +572,23 @@ function onPlayerSpawn(client) {
|
||||
sendPlayerEnterPropertyKey(client, keyId.key);
|
||||
}
|
||||
|
||||
sendPlayerLocaleStrings(client);
|
||||
|
||||
//if(isGTAIV()) {
|
||||
// setEntityData(client.player, "vrr.bodyPartHair", getPlayerCurrentSubAccount(client).bodyParts.hair, true);
|
||||
// setEntityData(client.player, "vrr.bodyPartHead", getPlayerCurrentSubAccount(client).bodyParts.head, true);
|
||||
// setEntityData(client.player, "vrr.bodyPartUpper", getPlayerCurrentSubAccount(client).bodyParts.upper, true);
|
||||
// setEntityData(client.player, "vrr.bodyPartLower", getPlayerCurrentSubAccount(client).bodyParts.lower, true);
|
||||
// setEntityData(client.player, "vrr.bodyPropHair", getPlayerCurrentSubAccount(client).bodyProps.hair, true);
|
||||
// setEntityData(client.player, "vrr.bodyPropEyes", getPlayerCurrentSubAccount(client).bodyProps.eyes, true);
|
||||
// setEntityData(client.player, "vrr.bodyPartHead", getPlayerCurrentSubAccount(client).bodyProps.head, true);
|
||||
// setEntityData(client.player, "vrr.bodyPartLeftHand", getPlayerCurrentSubAccount(client).bodyProps.leftHand, true);
|
||||
// setEntityData(client.player, "vrr.bodyPartRightHand", getPlayerCurrentSubAccount(client).bodyProps.rightHand, true);
|
||||
// setEntityData(client.player, "vrr.bodyPartLeftWrist", getPlayerCurrentSubAccount(client).bodyProps.leftWrist, true);
|
||||
// setEntityData(client.player, "vrr.bodyPartRightWrist", getPlayerCurrentSubAccount(client).bodyProps.rightWrist, true);
|
||||
// setEntityData(client.player, "vrr.bodyPartHip", getPlayerCurrentSubAccount(client).bodyProps.hip, true);
|
||||
// setEntityData(client.player, "vrr.bodyPartLeftFoot", getPlayerCurrentSubAccount(client).bodyProps.leftFoot, true);
|
||||
// setEntityData(client.player, "vrr.bodyPartRightFoot", getPlayerCurrentSubAccount(client).bodyProps.rightFoot, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartHair", getPlayerCurrentSubAccount(client).bodyParts.hair, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartHead", getPlayerCurrentSubAccount(client).bodyParts.head, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartUpper", getPlayerCurrentSubAccount(client).bodyParts.upper, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartLower", getPlayerCurrentSubAccount(client).bodyParts.lower, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPropHair", getPlayerCurrentSubAccount(client).bodyProps.hair, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPropEyes", getPlayerCurrentSubAccount(client).bodyProps.eyes, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartHead", getPlayerCurrentSubAccount(client).bodyProps.head, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartLeftHand", getPlayerCurrentSubAccount(client).bodyProps.leftHand, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartRightHand", getPlayerCurrentSubAccount(client).bodyProps.rightHand, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartLeftWrist", getPlayerCurrentSubAccount(client).bodyProps.leftWrist, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartRightWrist", getPlayerCurrentSubAccount(client).bodyProps.rightWrist, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartHip", getPlayerCurrentSubAccount(client).bodyProps.hip, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartLeftFoot", getPlayerCurrentSubAccount(client).bodyProps.leftFoot, true);
|
||||
// setEntityData(getPlayerPed(client), "vrr.bodyPartRightFoot", getPlayerCurrentSubAccount(client).bodyProps.rightFoot, true);
|
||||
//}
|
||||
|
||||
if(isGTAIV()) {
|
||||
@@ -586,14 +613,24 @@ function onPlayerSpawn(client) {
|
||||
|
||||
if(!areServerElementsSupported()) {
|
||||
sendAllBusinessesToPlayer(client);
|
||||
//sendAllHousesToPlayer(client);
|
||||
//sendAllJobLocationsToPlayer(client);
|
||||
sendAllHousesToPlayer(client);
|
||||
sendAllJobsToPlayer(client);
|
||||
//sendAllVehiclesToPlayer(client);
|
||||
|
||||
requestPlayerPedNetworkId(client);
|
||||
}
|
||||
|
||||
getPlayerData(client).payDayTickStart = sdl.ticks;
|
||||
|
||||
messageDiscordEventChannel(`🧍 ${client.name} spawned as ${getCharacterFullName(client)}`);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function onPlayerCommand(event, client, command, params) {
|
||||
if(!doesCommandExist(command)) {
|
||||
processPlayerCommand(command, params, client);
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -85,10 +85,37 @@ function playerPromptAnswerYes(client) {
|
||||
|
||||
}
|
||||
} else {
|
||||
showPlayerErrorGUI(client, `You aren't ordering anything for a business!`, `Business Order Canceled`);
|
||||
showPlayerErrorGUI(client, ``, `Business Order Canceled`);
|
||||
}
|
||||
break;
|
||||
|
||||
case VRR_PROMPT_GIVEVEHTOCLAN:
|
||||
if(!isPlayerInAnyVehicle(client)) {
|
||||
messagePlayerError(client, getLocaleString(client, "MustBeInVehicle"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!getVehicleData(getPlayerVehicle(client))) {
|
||||
messagePlayerError(client, getLocaleString(client, "RandomVehicleCommandsDisabled"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(getVehicleData(getPlayerVehicle(client)).ownerType != VRR_VEHOWNER_PLAYER) {
|
||||
messagePlayerError(client, getLocaleString(client, "MustOwnVehicle"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(getVehicleData(getPlayerVehicle(client)).ownerId != getPlayerCurrentSubAccount(client).databaseId) {
|
||||
messagePlayerError(client, getLocaleString(client, "MustOwnVehicle"));
|
||||
return false;
|
||||
}
|
||||
|
||||
getVehicleData(getPlayerVehicle(client)).ownerType = VRR_VEHOWNER_CLAN;
|
||||
getVehicleData(getPlayerVehicle(client)).ownerId = getPlayerCurrentSubAccount(client).clan;
|
||||
messagePlayerSuccess(client, getLocaleString(client, "GaveVehicleToClan"));
|
||||
//messageAdmins(`{ALTCOLOUR}${getPlayerName(client)} {MAINCOLOUR}set their {vehiclePurple}${getVehicleName(vehicle)} {MAINCOLOUR}owner to the {clanOrange}${getClanData(clanId).name} {MAINCOLOUR}clan`);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -194,51 +194,51 @@ function showMainHelpMessage(client) {
|
||||
|
||||
function showAccountHelpMessage(client) {
|
||||
messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderAccountHelp")));
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Do not share your password with anybody else.`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Use {ALTCOLOUR}/changepass{MAINCOLOUR} to change your password.`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Some settings you can use: {ALTCOLOUR}/gui, /logo, /iplogin, /autolastchar, /2fa, /loginalert`);
|
||||
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "AccountHelp", 0));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "AccountHelp", 1, `{ALTCOLOUR}/changepass{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "AccountHelp", 2, `{ALTCOLOUR}/gui, /logo, /iplogin, /autolastchar, /2fa, /loginalert{MAINCOLOUR}`));
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function showVehicleHelpMessage(client) {
|
||||
messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderVehicleHelp")));
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Visit dealerships to buy new vehicles (Use {ALTCOLOUR}/help dealership {MAINCOLOUR}for more info.)`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Some commands: {ALTCOLOUR}/lock, /engine, /lights, /trunk, /rentveh, /buyveh, /rentprice, /buyprice`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Your personal vehicles will save wherever you or somebody else leaves them!`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Visit a mechanic garage to repair, colour, and tune up your car! {ALTCOLOUR}/help mechanic {MAINCOLOUR} for info`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Don't forget to register and insure your vehicle! Use {ALTCOLOUR}/gps {MAINCOLOUR}to find a DMV for this.`);
|
||||
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "VehicleHelp", 0, `{ALTCOLOUR}/help dealership{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "VehicleHelp", 1, `{ALTCOLOUR}/lock, /engine, /lights, /trunk, /rentveh, /buyveh, /rentprice, /buyprice{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "VehicleHelp", 2));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "VehicleHelp", 3, `{ALTCOLOUR}/help mechanic{MAINCOLOUR}`));
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function showVehicleDealershipHelpMessage(client) {
|
||||
messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderVehicleDealershipHelp")));
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Visit a vehicle dealer to buy new vehicles. Use {ALTCOLOUR}/gps {MAINCOLOUR}to find one.`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}At the dealer, simply enter a car you want to buy, and the price will be shown to you`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}If you want to buy the vehicle and have enough money, use {ALTCOLOUR}/buyveh {MAINCOLOUR}and you will be given keys`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}A new car for sale will appear when you drive away from the dealer.`);
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "VehicleDealershipHelp", 0, `{ALTCOLOUR}/gps{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "VehicleDealershipHelp", 1));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "VehicleDealershipHelp", 1, `{ALTCOLOUR}/buyveh{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "VehicleDealershipHelp", 2));
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function showJobHelpMessage(client) {
|
||||
messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderJobHelp")));
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Visit job locations get a job and earn money. Look for yellow spots on the map`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}At a job location, use {ALTCOLOUR}/takejob {MAINCOLOUR}to get the job. Use {ALTCOLOUR}/quitjob {MAINCOLOUR}to quit your job`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Use {ALTCOLOUR}/startwork {MAINCOLOUR}to begin working. You can also get a job {ALTCOLOUR}/uniform and {ALTCOLOUR}/equipment`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Most job vehicles are locked. Use {ALTCOLOUR}/lock {MAINCOLOUR}near one to enter it.`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}When entering a job vehicle, information on how to do the job will be shown to you.`);
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "JobHelp", 0));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "JobHelp", 1, `{ALTCOLOUR}/takejob{MAINCOLOUR}`, `{ALTCOLOUR}/quitjob{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "JobHelp", 2, `{ALTCOLOUR}/lock{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "JobHelp", 3));
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function showChatHelpMessage(client) {
|
||||
messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderChatHelp")));
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}There are two main types of chat: out-of-character (OOC) and in-character (IC)`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Mixing these two types is not proper roleplay. See {ALTCOLOUR}/rules {MAINCOLOUR}for info.`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Some chat commands: {ALTCOLOUR}/dm /whisper /talk /shout /me.`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Some have shorter names available ({ALTCOLOUR}/t {MAINCOLOUR}for talk, {ALTCOLOUR}/s {MAINCOLOUR}for shout, etc)`);
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "ChatHelp", 0, `{ALTCOLOUR}/buy {MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "ChatHelp", 1, `{ALTCOLOUR}/rules{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "ChatHelp", 2, `{ALTCOLOUR}/dm /whisper /talk /shout /me{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "ChatHelp", 3, `{ALTCOLOUR}/t{MAINCOLOUR}`, `{ALTCOLOUR}/s{MAINCOLOUR}`));
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -256,14 +256,14 @@ function showRulesHelpMessage(client) {
|
||||
|
||||
function showWebsiteHelpMessage(client) {
|
||||
messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderWebsiteInfo")));
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}${server.getRule("Website")}`);
|
||||
messagePlayerHelpContent(client, `{MAINCOLOUR}${server.getRule("Website")}`);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function showDiscordHelpMessage(client) {
|
||||
messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderDiscordInfo")));
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}${server.getRule("Website")}`);
|
||||
messagePlayerHelpContent(client, `{MAINCOLOUR}${server.getRule("Discord")}`);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -290,9 +290,9 @@ function showBindKeysHelpMessage(client) {
|
||||
messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderBindableKeysHelp")));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "KeyBindHelp", 0, `{ALTCOLOUR}/keybinds {MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "KeyBindHelp", 1, `{ALTCOLOUR}/bindkey {MAINCOLOUR}`, `{ALTCOLOUR}/unbindkey {MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "KeyBindHelp", 2, `{ALTCOLOUR}K {MAINCOLOUR}`, `{ALTCOLOUR}L {MAINCOLOUR}`, `{ALTCOLOUR}J {MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "KeyBindHelp", 3, `{ALTCOLOUR}I {MAINCOLOUR}`, `{ALTCOLOUR}1-9 {MAINCOLOUR}`, `{ALTCOLOUR}0 {MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "KeyBindHelp", 4, `{ALTCOLOUR}U {MAINCOLOUR}`, `{ALTCOLOUR}O {MAINCOLOUR}`, `{ALTCOLOUR}P {MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "KeyBindHelp", 2, `{ALTCOLOUR}K{MAINCOLOUR}`, `{ALTCOLOUR}L{MAINCOLOUR}`, `{ALTCOLOUR}J{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "KeyBindHelp", 3, `{ALTCOLOUR}I{MAINCOLOUR}`, `{ALTCOLOUR}1-9{MAINCOLOUR}`, `{ALTCOLOUR}0{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "KeyBindHelp", 4, `{ALTCOLOUR}U{MAINCOLOUR}`, `{ALTCOLOUR}O{MAINCOLOUR}`, `{ALTCOLOUR}P{MAINCOLOUR}`));
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -328,10 +328,10 @@ function showRadioHelpMessage(client) {
|
||||
|
||||
function showWealthAndTaxHelpMessage(client) {
|
||||
messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderWealthandTaxHelp")));
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Your taxes on payday are ${100*getGlobalConfig().economy.incomeTaxRate}% of your calculated wealth.`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Your calculated wealth is a total sum based on how many vehicles, houses, and businesses you have.`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Each vehicle is {ALTCOLOUR}${getGlobalConfig().economy.upKeepCosts.upKeepPerVehicle}, {MAINCOLOUR}each house is {ALTCOLOUR}${getGlobalConfig().economy.upKeepCosts.upKeepPerHouse}, {MAINCOLOUR}and each business is {ALTCOLOUR}${getGlobalConfig().economy.upKeepCosts.upKeepPerBusiness}`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Use {ALTCOLOUR}/wealth {MAINCOLOUR}to see your current wealth, and {ALTCOLOUR}/tax {MAINCOLOUR}to see how much you'll pay in tax each payday`);
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "WealthAndTaxHelp", 0, `{ALTCOLOUR}${100*getGlobalConfig().economy.incomeTaxRate}%{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "WealthAndTaxHelp", 1));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "WealthAndTaxHelp", 2, `{ALTCOLOUR}${getGlobalConfig().economy.upKeepCosts.upKeepPerVehicle}{MAINCOLOUR}`, `{ALTCOLOUR}${getGlobalConfig().economy.upKeepCosts.upKeepPerHouse}{MAINCOLOUR}`, `{ALTCOLOUR}${getGlobalConfig().economy.upKeepCosts.upKeepPerBusiness}{MAINCOLOUR}`));
|
||||
messagePlayerHelpContent(client, getGroupedLocaleString(client, "WealthAndTaxHelp", 3, `{ALTCOLOUR}/wealth{MAINCOLOUR}`, `{ALTCOLOUR}/tax{MAINCOLOUR}`));
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -353,7 +353,7 @@ function showCommandHelpMessage(client, commandName) {
|
||||
let aliases = getCommandAliasesNames(command);
|
||||
|
||||
messagePlayerInfo(client, makeChatBoxSectionHeader(getLocaleString(client, "HeaderCommandInfo", commandName)));
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Description: ${command.description}`);
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Description: ${command.helpDescription}`);
|
||||
|
||||
if(aliases.length > 0) {
|
||||
messagePlayerNormal(client, `{clanOrange}• {MAINCOLOUR}Aliases: ${aliases.join(", ")}`);
|
||||
@@ -380,7 +380,7 @@ function showCommandHelpMessage(client, commandName) {
|
||||
*
|
||||
*/
|
||||
function helpGetCarCommand(command, params, client) {
|
||||
messagePlayerAlert(client, `You can buy a car by visiting a vehicle dealership. Use {ALTCOLOUR}/help vehicle {MAINCOLOUR}for more info.`);
|
||||
messagePlayerAlert(client, getLocaleString(client, "CarCommandHelp", `{ALTCOLOUR}/help vehicle{MAINCOLOUR}`));
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -395,7 +395,8 @@ function helpGetCarCommand(command, params, client) {
|
||||
*
|
||||
*/
|
||||
function helpGetSkinCommand(command, params, client) {
|
||||
messagePlayerAlert(client, `You can change your skin by visiting a clothes store. Use {ALTCOLOUR}/help skin {MAINCOLOUR}for more info.`);
|
||||
messagePlayerAlert(client, getLocaleString(client, "SkinCommandHelp", `{ALTCOLOUR}/help skin{MAINCOLOUR}`));
|
||||
messagePlayerAlert(client, ``);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -9,7 +9,9 @@
|
||||
|
||||
function initHouseScript() {
|
||||
logToConsole(LOG_INFO, "[VRR.House]: Initializing house script ...");
|
||||
if(!getServerConfig().devServer) {
|
||||
getServerData().houses = loadHousesFromDatabase();
|
||||
}
|
||||
|
||||
if(getServerConfig().createHousePickups) {
|
||||
createAllHousePickups();
|
||||
@@ -219,7 +221,7 @@ function setHouseOwnerCommand(command, params, client) {
|
||||
|
||||
if(!doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageHouses"))) {
|
||||
if(getHouseData(houseId).ownerType == VRR_HOUSEOWNER_PLAYER && getHouseData(houseId).ownerId == getPlayerCurrentSubAccount(client).databaseId) {
|
||||
messagePlayerError(client, "You don't own this house!");
|
||||
messagePlayerError(client, getLocaleString(client, "CantModifyHouse"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -259,7 +261,7 @@ function setHouseClanCommand(command, params, client) {
|
||||
|
||||
if(!doesPlayerHaveStaffPermission(client, getStaffFlagValue("ManageHouses"))) {
|
||||
if(getHouseData(houseId).ownerType == VRR_HOUSEOWNER_PLAYER && getHouseData(houseId).ownerId == getPlayerCurrentSubAccount(client).databaseId) {
|
||||
messagePlayerError(client, "You don't own this house!");
|
||||
messagePlayerError(client, getLocaleString(client, "CantModifyHouse"));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -305,7 +307,7 @@ function setHouseClanCommand(command, params, client) {
|
||||
}
|
||||
|
||||
if(doesPlayerHaveClanPermission(client, getClanFlagValue("ManageHouses"))) {
|
||||
messagePlayerError(client, "You can't set clan house ranks!");
|
||||
messagePlayerError(client, getLocaleString(client, "CantModifyHouse"));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -496,7 +498,7 @@ function moveHouseEntranceCommand(command, params, client) {
|
||||
let houseId = getPlayerHouse(client);
|
||||
|
||||
if(!getHouseData(houseId)) {
|
||||
messagePlayer(client, "You need to be near or inside a house!");
|
||||
messagePlayer(client, getLocaleString(client, "InvalidHouse"));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -532,7 +534,7 @@ function moveHouseExitCommand(command, params, client) {
|
||||
let houseId = getPlayerHouse(client);
|
||||
|
||||
if(!getHouseData(houseId)) {
|
||||
messagePlayer(client, "You need to be near or inside a house!");
|
||||
messagePlayer(client, getLocaleString(client, "InvalidHouse"));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -718,7 +720,11 @@ function getPlayerHouse(client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveAllHousesToDatabase() {
|
||||
function saveHousesToDatabase() {
|
||||
if(getServerConfig().devServer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
logToConsole(LOG_INFO, `[VRR.House]: Saving all server houses to database ...`);
|
||||
for(let i in getServerData().houses) {
|
||||
if(getServerData().houses[i].needsSaved) {
|
||||
@@ -737,6 +743,8 @@ function saveHouseToDatabase(houseId) {
|
||||
let dbConnection = connectToDatabase();
|
||||
if(dbConnection) {
|
||||
let safeHouseDescription = escapeDatabaseString(dbConnection, tempHouseData.description);
|
||||
let safeExitCutscene = escapeDatabaseString(dbConnection, tempHouseData.exitCutscene);
|
||||
let safeEntranceCutscene = escapeDatabaseString(dbConnection, tempHouseData.entranceCutscene);
|
||||
|
||||
let data = [
|
||||
["house_server", getServerId()],
|
||||
@@ -753,6 +761,7 @@ function saveHouseToDatabase(houseId) {
|
||||
["house_entrance_vw", tempHouseData.entranceDimension],
|
||||
["house_entrance_pickup", tempHouseData.entrancePickupModel],
|
||||
["house_entrance_blip", tempHouseData.entranceBlipModel],
|
||||
["house_entrance_cutscene", safeEntranceCutscene],
|
||||
["house_exit_pos_x", tempHouseData.exitPosition.x],
|
||||
["house_exit_pos_y", tempHouseData.exitPosition.y],
|
||||
["house_exit_pos_z", tempHouseData.exitPosition.z],
|
||||
@@ -761,10 +770,12 @@ function saveHouseToDatabase(houseId) {
|
||||
["house_exit_vw", tempHouseData.exitDimension],
|
||||
["house_exit_pickup", tempHouseData.exitPickupModel],
|
||||
["house_exit_blip", tempHouseData.exitBlipModel],
|
||||
["house_exit_cutscene", safeExitCutscene],
|
||||
["house_buy_price", tempHouseData.buyPrice],
|
||||
["house_rent_price", tempHouseData.rentPrice],
|
||||
["house_has_interior", boolToInt(tempHouseData.hasInterior)],
|
||||
["house_interior_lights", boolToInt(tempHouseData.interiorLights)],
|
||||
|
||||
];
|
||||
|
||||
let dbQuery = null;
|
||||
@@ -874,10 +885,18 @@ function createHouseEntrancePickup(houseId) {
|
||||
}
|
||||
|
||||
if(areServerElementsSupported()) {
|
||||
getHouseData(houseId).entrancePickup = createGamePickup(pickupModelId, getHouseData(houseId).entrancePosition, getGameConfig().pickupTypes[getServerGame()].house);
|
||||
setElementOnAllDimensions(getHouseData(houseId).entrancePickup, false);
|
||||
setElementDimension(getHouseData(houseId).entrancePickup, getHouseData(houseId).entranceDimension);
|
||||
addToWorld(getHouseData(houseId).entrancePickup);
|
||||
let entrancePickup = createGamePickup(pickupModelId, getHouseData(houseId).entrancePosition, getGameConfig().pickupTypes[getServerGame()].house);
|
||||
if(entrancePickup != null) {
|
||||
setElementOnAllDimensions(entrancePickup, false);
|
||||
setElementDimension(entrancePickup, getHouseData(houseId).entranceDimension);
|
||||
setElementStreamInDistance(entrancePickup, getGlobalConfig().housePickupStreamInDistance);
|
||||
setElementStreamOutDistance(entrancePickup, getGlobalConfig().housePickupStreamOutDistance);
|
||||
setElementTransient(entrancePickup, false);
|
||||
addToWorld(entrancePickup);
|
||||
|
||||
getHouseData(houseId).entrancePickup = entrancePickup;
|
||||
updateHousePickupLabelData(houseId);
|
||||
}
|
||||
}
|
||||
updateHousePickupLabelData(houseId);
|
||||
}
|
||||
@@ -898,14 +917,19 @@ function createHouseEntranceBlip(houseId) {
|
||||
}
|
||||
|
||||
if(areServerElementsSupported()) {
|
||||
getHouseData(houseId).entranceBlip = createGameBlip(getHouseData(houseId).entrancePosition, blipModelId, 1, getColourByName("houseGreen"));
|
||||
setElementDimension(getHouseData(houseId).entranceBlip, getHouseData(houseId).entranceDimension);
|
||||
setElementOnAllDimensions(getHouseData(houseId).entranceBlip, false);
|
||||
//getHouseData(houseId).entranceBlip.streamInDistance = 300;
|
||||
//getHouseData(houseId).entranceBlip.streamOutDistance = 350;
|
||||
setEntityData(getHouseData(houseId).entranceBlip, "vrr.owner.type", VRR_BLIP_HOUSE_ENTRANCE, false);
|
||||
setEntityData(getHouseData(houseId).entranceBlip, "vrr.owner.id", houseId, false);
|
||||
addToWorld(getHouseData(houseId).entranceBlip);
|
||||
let entranceBlip = createGameBlip(getHouseData(houseId).entrancePosition, blipModelId, 1, getColourByName("houseGreen"));
|
||||
if(entranceBlip != null) {
|
||||
setElementDimension(entranceBlip, getHouseData(houseId).entranceDimension);
|
||||
setElementOnAllDimensions(entranceBlip, false);
|
||||
setElementStreamInDistance(entranceBlip, getGlobalConfig().houseBlipStreamInDistance);
|
||||
setElementStreamOutDistance(entranceBlip, getGlobalConfig().houseBlipStreamOutDistance);
|
||||
setElementTransient(entranceBlip, false);
|
||||
setEntityData(entranceBlip, "vrr.owner.type", VRR_BLIP_HOUSE_ENTRANCE, false);
|
||||
setEntityData(entranceBlip, "vrr.owner.id", houseId, false);
|
||||
addToWorld(entranceBlip);
|
||||
|
||||
getHouseData(houseId).entranceBlip = entranceBlip;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -926,10 +950,18 @@ function createHouseExitPickup(houseId) {
|
||||
}
|
||||
|
||||
if(areServerElementsSupported()) {
|
||||
getHouseData(houseId).exitPickup = createGamePickup(pickupModelId, getHouseData(houseId).exitPosition, getGameConfig().pickupTypes[getServerGame()].house);
|
||||
setElementDimension(getHouseData(houseId).exitPickup, getHouseData(houseId).exitDimension);
|
||||
setElementOnAllDimensions(getHouseData(houseId).exitPickup, false);
|
||||
addToWorld(getHouseData(houseId).exitPickup);
|
||||
let exitPickup = createGamePickup(pickupModelId, getHouseData(houseId).exitPosition, getGameConfig().pickupTypes[getServerGame()].house);
|
||||
if(exitPickup != null) {
|
||||
setElementDimension(exitPickup, getHouseData(houseId).exitDimension);
|
||||
setElementOnAllDimensions(exitPickup, false);
|
||||
setElementStreamInDistance(exitPickup, getGlobalConfig().housePickupStreamInDistance);
|
||||
setElementStreamOutDistance(exitPickup, getGlobalConfig().housePickupStreamOutDistance);
|
||||
setElementTransient(exitPickup, false);
|
||||
addToWorld(exitPickup);
|
||||
|
||||
getHouseData(houseId).exitPickup = exitPickup;
|
||||
updateHousePickupLabelData(houseId);
|
||||
}
|
||||
}
|
||||
updateHousePickupLabelData(houseId);
|
||||
}
|
||||
@@ -952,12 +984,19 @@ function createHouseExitBlip(houseId) {
|
||||
}
|
||||
|
||||
if(areServerElementsSupported()) {
|
||||
getHouseData(houseId).exitBlip = createGameBlip(blipModelId, getHouseData(houseId).exitPosition, 1, getColourByName("houseGreen"));
|
||||
setElementDimension(getHouseData(houseId).exitBlip, getHouseData(houseId).entranceDimension);
|
||||
setElementOnAllDimensions(getHouseData(houseId).exitBlip, false);
|
||||
setEntityData(getHouseData(houseId).exitBlip, "vrr.owner.type", VRR_BLIP_HOUSE_EXIT, false);
|
||||
setEntityData(getHouseData(houseId).exitBlip, "vrr.owner.id", houseId, false);
|
||||
addToWorld(getHouseData(houseId).exitBlip);
|
||||
let exitBlip = createGameBlip(blipModelId, getHouseData(houseId).exitPosition, 1, getColourByName("houseGreen"));
|
||||
if(exitBlip != null) {
|
||||
setElementDimension(exitBlip, getHouseData(houseId).entranceDimension);
|
||||
setElementOnAllDimensions(exitBlip, false);
|
||||
setElementStreamInDistance(exitBlip, getGlobalConfig().houseBlipStreamInDistance);
|
||||
setElementStreamOutDistance(exitBlip, getGlobalConfig().houseBlipStreamOutDistance);
|
||||
setElementTransient(exitBlip, false);
|
||||
setEntityData(exitBlip, "vrr.owner.type", VRR_BLIP_HOUSE_EXIT, false);
|
||||
setEntityData(exitBlip, "vrr.owner.id", houseId, false);
|
||||
addToWorld(exitBlip);
|
||||
|
||||
getHouseData(houseId).exitBlip = exitBlip;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -989,6 +1028,15 @@ function getHouseOwnerTypeText(ownerType) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function getHouseInfoCommand(command, params, client) {
|
||||
let houseId = getPlayerHouse(client);
|
||||
|
||||
@@ -1030,6 +1078,15 @@ function getHouseInfoCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function setHouseBuyPriceCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
@@ -1058,6 +1115,15 @@ function setHouseBuyPriceCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function setHouseRentPriceCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
@@ -1086,6 +1152,15 @@ function setHouseRentPriceCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function buyHouseCommand(command, params, client) {
|
||||
let houseId = getPlayerHouse(client);
|
||||
|
||||
@@ -1195,6 +1270,15 @@ function deleteHouseExitBlip(houseId) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function reloadAllHousesCommand(command, params, client) {
|
||||
let clients = getClients();
|
||||
for(let i in clients) {
|
||||
@@ -1215,7 +1299,7 @@ function reloadAllHousesCommand(command, params, client) {
|
||||
createAllHousePickups();
|
||||
createAllHouseBlips();
|
||||
|
||||
messageAdminAction(`All houses have been reloaded by an admin!`);
|
||||
announceAdminAction(`HousesReloaded`);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
function initItemScript() {
|
||||
logToConsole(LOG_INFO, "[VRR.Item]: Initializing item script ...");
|
||||
getServerData().itemTypes = loadItemTypesFromDatabase();
|
||||
if(!getServerConfig().devServer) {
|
||||
getServerData().items = loadItemsFromDatabase();
|
||||
}
|
||||
|
||||
setItemTypeDataIndexes();
|
||||
setItemDataIndexes();
|
||||
@@ -132,6 +134,15 @@ function deleteGroundItemObject(itemId) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function createGroundItemCommand(command, params, client) {
|
||||
let splitParams = params.split(" ");
|
||||
let itemType = getItemTypeFromParams(splitParams.slice(0, -1).join(" "));
|
||||
@@ -154,13 +165,22 @@ function createGroundItemCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function createItemCommand(command, params, client) {
|
||||
let splitParams = params.split(" ");
|
||||
let itemType = getItemTypeFromParams(splitParams.slice(0, -1).join(" "));
|
||||
let value = splitParams.slice(-1) || 1;
|
||||
|
||||
if(!getItemTypeData(itemType)) {
|
||||
messagePlayerError(client, getLocaleString("InvalidItemType"));
|
||||
messagePlayerError(client, getLocaleString(client, "InvalidItemType"));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -176,6 +196,15 @@ function createItemCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function useItemCommand(command, params, client) {
|
||||
clearPlayerItemActionState(client);
|
||||
|
||||
@@ -230,6 +259,15 @@ function useItemCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function deleteGroundItemCommand(command, params, client) {
|
||||
let itemId = getClosestItemOnGround(getPlayerPosition(client));
|
||||
|
||||
@@ -252,6 +290,15 @@ function deleteGroundItemCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function pickupItemCommand(command, params, client) {
|
||||
clearPlayerItemActionState(client);
|
||||
|
||||
@@ -303,6 +350,15 @@ function pickupItemCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function dropItemCommand(command, params, client) {
|
||||
clearPlayerItemActionState(client);
|
||||
|
||||
@@ -364,6 +420,15 @@ function dropItemCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function putItemCommand(command, params, client) {
|
||||
clearPlayerItemActionState(client);
|
||||
|
||||
@@ -411,6 +476,15 @@ function putItemCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function takeItemCommand(command, params, client) {
|
||||
clearPlayerItemActionState(client);
|
||||
|
||||
@@ -458,6 +532,15 @@ function takeItemCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function createItemTypeCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
@@ -470,6 +553,15 @@ function createItemTypeCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function setItemTypeDropModelCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
@@ -490,6 +582,15 @@ function setItemTypeDropModelCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function setItemTypeOrderPriceCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
@@ -510,6 +611,15 @@ function setItemTypeOrderPriceCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function setItemTypeRiskMultiplierCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
@@ -530,6 +640,15 @@ function setItemTypeRiskMultiplierCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function toggleItemTypeEnabledCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
@@ -549,6 +668,15 @@ function toggleItemTypeEnabledCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function setItemTypeUseTypeCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
@@ -569,6 +697,15 @@ function setItemTypeUseTypeCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function setItemTypeUseValueCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
@@ -663,7 +800,7 @@ function playerUseItem(client, hotBarSlot) {
|
||||
break;
|
||||
|
||||
case VRR_ITEM_USETYPE_ROPE:
|
||||
closestPlayer = getClosestPlayer(getPlayerPosition(client), client.player);
|
||||
closestPlayer = getClosestPlayer(getPlayerPosition(client), getPlayerPed(client));
|
||||
|
||||
if(!getPlayerData(closestPlayer)) {
|
||||
messagePlayerError(client, "There isn't anyone close enough to tie up!");
|
||||
@@ -1105,6 +1242,15 @@ function playerSwitchItem(client, newHotBarSlot) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function playerSwitchHotBarSlotCommand(command, params, client) {
|
||||
clearPlayerItemActionState(client);
|
||||
|
||||
@@ -1394,12 +1540,30 @@ function getBestItemToTake(client, slot) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function listPlayerInventoryCommand(command, params, client) {
|
||||
showPlayerInventoryToPlayer(client, client);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function listBusinessStorageInventoryCommand(command, params, client) {
|
||||
let businessId = (isPlayerInAnyBusiness(client)) ? getPlayerBusiness(client) : getClosestBusinessEntrance(getPlayerPosition(client));
|
||||
|
||||
@@ -1418,6 +1582,15 @@ function listBusinessStorageInventoryCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function listBusinessFloorInventoryCommand(command, params, client) {
|
||||
let businessId = (isPlayerInAnyBusiness(client)) ? getPlayerBusiness(client) : getClosestBusinessEntrance(getPlayerPosition(client));
|
||||
|
||||
@@ -1436,6 +1609,15 @@ function listBusinessFloorInventoryCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function listHouseInventoryCommand(command, params, client) {
|
||||
let houseId = (isPlayerInAnyHouse(client)) ? getPlayerHouse(client) : getClosestHouseEntrance(getPlayerPosition(client));
|
||||
|
||||
@@ -1454,6 +1636,15 @@ function listHouseInventoryCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function listItemInventoryCommand(command, params, client) {
|
||||
let itemId = getClosestItemOnGround(getPlayerPosition(client));
|
||||
|
||||
@@ -1472,6 +1663,10 @@ function listItemInventoryCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* @param {number} itemId - The data index of the item
|
||||
* @return {ItemData} The item's data (class instance)
|
||||
*/
|
||||
function getItemData(itemId) {
|
||||
if(typeof getServerData().items[itemId] != "undefined") {
|
||||
return getServerData().items[itemId];
|
||||
@@ -1481,37 +1676,54 @@ function getItemData(itemId) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* @param {number} itemTypeId - The data index of the item type
|
||||
* @return {ItemTypeData} The item type's data (class instance)
|
||||
*/
|
||||
function getItemTypeData(itemTypeId) {
|
||||
return getServerData().itemTypes[itemTypeId];
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveAllItemsToDatabase() {
|
||||
function saveItemsToDatabase() {
|
||||
if(getServerConfig().devServer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for(let i in getServerData().items) {
|
||||
if(getServerData().items[i].needsSaved) {
|
||||
if(getServerData().items[i].databaseId != -1) {
|
||||
saveItemToDatabase(getServerData().items[i]);
|
||||
}
|
||||
}
|
||||
saveItemToDatabase(i);
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveAllItemTypesToDatabase() {
|
||||
function saveItemTypesToDatabase() {
|
||||
if(getServerConfig().devServer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for(let i in getServerData().itemTypes) {
|
||||
if(getServerData().itemTypes[i].needsSaved) {
|
||||
if(getServerData().itemTypes[i].databaseId != -1) {
|
||||
saveItemTypeToDatabase(getServerData().itemTypes[i]);
|
||||
}
|
||||
}
|
||||
saveItemTypeToDatabase(i);
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveItemToDatabase(itemData) {
|
||||
function saveItemToDatabase(itemId) {
|
||||
let itemData = getItemData(itemId);
|
||||
if(itemData == false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(itemData.databaseId == -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!itemData.needsSaved) {
|
||||
return false;
|
||||
}
|
||||
|
||||
logToConsole(LOG_VERBOSE, `[VRR.Item]: Saving item '${itemData.index}' to database ...`);
|
||||
|
||||
let dbConnection = connectToDatabase();
|
||||
@@ -1553,15 +1765,36 @@ function saveItemToDatabase(itemData) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveItemTypeToDatabase(itemTypeData) {
|
||||
function saveItemTypeToDatabase(itemTypeId) {
|
||||
let itemTypeData = getItemTypeData(itemTypeId);
|
||||
if(itemTypeData == false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(itemTypeData.databaseId == -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!itemTypeData.needsSaved) {
|
||||
return false;
|
||||
}
|
||||
|
||||
logToConsole(LOG_VERBOSE, `[VRR.Item]: Saving item type '${itemTypeData.name}' to database ...`);
|
||||
|
||||
let dbConnection = connectToDatabase();
|
||||
if(dbConnection) {
|
||||
let safeItemTypeName = escapeDatabaseString(dbConnection, itemTypeData.name);
|
||||
let safeAnimationUse = escapeDatabaseString(dbConnection, itemTypeData.useAnimationName);
|
||||
let safeAnimationDrop = escapeDatabaseString(dbConnection, itemTypeData.dropAnimationName);
|
||||
let safeAnimationPickup = escapeDatabaseString(dbConnection, itemTypeData.pickupAnimationName);
|
||||
let safeAnimationGive = escapeDatabaseString(dbConnection, itemTypeData.giveAnimationName);
|
||||
let safeAnimationTake = escapeDatabaseString(dbConnection, itemTypeData.takeAnimationName);
|
||||
let safeAnimationSwitch = escapeDatabaseString(dbConnection, itemTypeData.switchAnimationName);
|
||||
|
||||
let data = [
|
||||
["item_type_id", itemTypeData.databaseId],
|
||||
["item_type_server", itemTypeData.serverId],
|
||||
["item_type_name", itemTypeData.name],
|
||||
["item_type_name", safeItemTypeName],
|
||||
["item_type_enabled", itemTypeData.enabled],
|
||||
["item_type_use_type", itemTypeData.useType],
|
||||
["item_type_drop_type", itemTypeData.dropType],
|
||||
@@ -1592,6 +1825,12 @@ function saveItemTypeToDatabase(itemTypeData) {
|
||||
["item_type_delay_take", itemTypeData.takeDelay],
|
||||
["item_type_delay_give", itemTypeData.giveDelay],
|
||||
["item_type_delay_drop", itemTypeData.dropDelay],
|
||||
["item_type_anim_use", safeAnimationUse],
|
||||
["item_type_anim_drop", safeAnimationDrop],
|
||||
["item_type_anim_pickup", safeAnimationPickup],
|
||||
["item_type_anim_give", safeAnimationGive],
|
||||
["item_type_anim_take", safeAnimationTake],
|
||||
["item_type_anim_switch", safeAnimationSwitch],
|
||||
];
|
||||
|
||||
let dbQuery = null;
|
||||
@@ -1757,6 +1996,15 @@ function getPlayerFirstItemSlotByUseType(client, useType) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function toggleItemEnabledCommand(command, params, client) {
|
||||
if(!getPlayerActiveItem(client)) {
|
||||
messagePlayerError(client, `You aren't holding anything!`);
|
||||
@@ -1774,6 +2022,15 @@ function toggleItemEnabledCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function deleteItemInPlayerInventoryCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
@@ -1815,6 +2072,15 @@ function deleteItemInPlayerInventoryCommand(command, params, client) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* This is a command handler function.
|
||||
*
|
||||
* @param {string} command - The command name used by the player
|
||||
* @param {string} params - The parameters/args string used with the command by the player
|
||||
* @param {Client} client - The client/player that used the command
|
||||
* @return {bool} Whether or not the command was successful
|
||||
*
|
||||
*/
|
||||
function deleteAllItemsInPlayerInventoryCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
|
||||
@@ -617,9 +617,9 @@ function stopWorking(client) {
|
||||
|
||||
let jobVehicle = getPlayerData(client).lastJobVehicle;
|
||||
if(jobVehicle) {
|
||||
if(client.player.vehicle) {
|
||||
if(getPlayerVehicle(client) == jobVehicle) {
|
||||
removePlayerFromVehicle(client);
|
||||
//client.player.removeFromVehicle();
|
||||
//getPlayerPed(client).removeFromVehicle();
|
||||
}
|
||||
|
||||
respawnVehicle(jobVehicle);
|
||||
@@ -942,7 +942,7 @@ function reloadAllJobsCommand(command, params, client) {
|
||||
}
|
||||
}
|
||||
|
||||
messageAdminAction(`All server jobs have been reloaded by an admin!`);
|
||||
announceAdminAction("AllJobsReloaded");
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -2236,7 +2236,7 @@ function saveJobUniformToDatabase(jobUniformData) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveAllJobsToDatabase() {
|
||||
function saveJobsToDatabase() {
|
||||
for(let i in getServerData().jobs) {
|
||||
saveJobToDatabase(getServerData().jobs[i]);
|
||||
|
||||
@@ -2291,24 +2291,33 @@ function createJobLocationPickup(jobId, locationId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if(getJobData(jobId).pickupModel != -1) {
|
||||
let tempJobData = getJobData(jobId);
|
||||
|
||||
if(tempJobData.pickupModel != -1) {
|
||||
let pickupModelId = getGameConfig().pickupModels[getServerGame()].Job;
|
||||
|
||||
if(getJobData(jobId).pickupModel != 0) {
|
||||
pickupModelId = getJobData(jobId).pickupModel;
|
||||
if(tempJobData.pickupModel != 0) {
|
||||
pickupModelId = tempJobData.pickupModel;
|
||||
}
|
||||
|
||||
logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating pickup for location ${locationId} of the ${getServerData().jobs[jobId].name} job`);
|
||||
logToConsole(LOG_VERBOSE, `[VRR.Job]: Creating pickup for location ${locationId} of the ${tempJobData.name} job`);
|
||||
|
||||
getJobData(jobId).locations[locationId].pickup = createGamePickup(pickupModelId, getJobData(jobId).locations[locationId].position, getGameConfig().pickupTypes[getServerGame()].job);
|
||||
setElementDimension(getJobData(jobId).locations[locationId].pickup, getJobData(jobId).locations[locationId].dimension);
|
||||
setElementOnAllDimensions(getJobData(jobId).locations[locationId].pickup, false);
|
||||
setEntityData(getServerData().jobs[jobId].locations[locationId].pickup, "vrr.owner.type", VRR_PICKUP_JOB, false);
|
||||
setEntityData(getServerData().jobs[jobId].locations[locationId].pickup, "vrr.owner.id", locationId, false);
|
||||
setEntityData(getServerData().jobs[jobId].locations[locationId].pickup, "vrr.label.type", VRR_LABEL_JOB, true);
|
||||
setEntityData(getServerData().jobs[jobId].locations[locationId].pickup, "vrr.label.name", getJobData(jobId).name, true);
|
||||
setEntityData(getServerData().jobs[jobId].locations[locationId].pickup, "vrr.label.jobType", getJobData(jobId).databaseId, true);
|
||||
addToWorld(getJobData(jobId).locations[locationId].pickup);
|
||||
if(areServerElementsSupported()) {
|
||||
let pickup = createGamePickup(pickupModelId, tempJobData.locations[locationId].position, getGameConfig().pickupTypes[getServerGame()].job);
|
||||
if(pickup != false) {
|
||||
tempJobData.locations[locationId].pickup = pickup;
|
||||
setElementDimension(pickup, tempJobData.locations[locationId].dimension);
|
||||
setElementOnAllDimensions(pickup, false);
|
||||
setEntityData(pickup, "vrr.owner.type", VRR_PICKUP_JOB, false);
|
||||
setEntityData(pickup, "vrr.owner.id", locationId, false);
|
||||
setEntityData(pickup, "vrr.label.type", VRR_LABEL_JOB, true);
|
||||
setEntityData(pickup, "vrr.label.name", tempJobData.name, true);
|
||||
setEntityData(pickup, "vrr.label.jobType", tempJobData.databaseId, true);
|
||||
addToWorld(pickup);
|
||||
}
|
||||
} else {
|
||||
// sendJobToPlayer(null, jobId, tempJobData.name, tempJobData.locations[locationId].position, pickupModel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2319,6 +2328,8 @@ function createJobLocationBlip(jobId, locationId) {
|
||||
return false;
|
||||
}
|
||||
|
||||
let tempJobData = getJobData(jobId);
|
||||
|
||||
if(getJobData(jobId).blipModel != -1) {
|
||||
let blipModelId = getGameConfig().blipSprites[getServerGame()].Job;
|
||||
|
||||
@@ -2326,12 +2337,17 @@ function createJobLocationBlip(jobId, locationId) {
|
||||
blipModelId = getJobData(jobId).blipModel;
|
||||
}
|
||||
|
||||
getJobData(jobId).locations[locationId].blip = createGameBlip(getJobData(jobId).locations[locationId].position, blipModelId, getColourByType("job"));
|
||||
//setElementStreamInDistance(getServerData().jobs[i].locations[j].blip, 30);
|
||||
//setElementStreamOutDistance(getServerData().jobs[i].locations[j].blip, 40);
|
||||
setElementOnAllDimensions(getJobData(jobId).locations[locationId].blip, false);
|
||||
setElementDimension(getJobData(jobId).locations[locationId].blip, getJobData(jobId).locations[locationId].dimension);
|
||||
addToWorld(getJobData(jobId).locations[locationId].blip);
|
||||
if(areServerElementsSupported()) {
|
||||
let blip = createGameBlip(tempJobData.locations[locationId].position, blipModelId, getColourByType("job"));
|
||||
if(blip != false) {
|
||||
tempJobData.locations[locationId].blip = blip;
|
||||
}
|
||||
setElementOnAllDimensions(blip, false);
|
||||
setElementDimension(blip, tempJobData.locations[locationId].dimension);
|
||||
addToWorld(blip);
|
||||
} else {
|
||||
sendJobToPlayer(null, jobId, tempJobData.name, tempJobData.locations[locationId].position, blipModelId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,19 +19,16 @@ function initKeyBindScript() {
|
||||
function addKeyBindCommand(command, params, client) {
|
||||
let splitParams = params.split(" ");
|
||||
|
||||
let keyId = getKeyIdFromParams(getParam(params, " ", 1));
|
||||
let keys = getKeysInComboName(getParam(params, " ", 1));
|
||||
let tempCommand = getParam(params, " ", 2);
|
||||
let tempParams = (splitParams.length > 2) ? splitParams.slice(2).join(" ") : "";
|
||||
|
||||
if(!keyId) {
|
||||
messagePlayerError(client, "The key ID or name you input is invalid!");
|
||||
messagePlayerTip(client, "Use simple key names, letters, or numbers. Don't add spaces.");
|
||||
if(keys.indexOf(false) != -1) {
|
||||
messagePlayerError(client, "One of the key names you input is invalid!");
|
||||
messagePlayerTip(client, "Use simple key names, letters, or numbers. Don't add spaces. Must be lowercase.");
|
||||
messagePlayerTip(client, "No actual symbols, use a name for those if needed like ampersand, hashtag, tilde, etc");
|
||||
messagePlayerInfo(client, `Examples: {ALTCOLOUR}1, 2, a, b, numplus, num1, f1, f2, pageup, delete, insert, rightshift, leftctrl`);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!keyId) {
|
||||
messagePlayerError(client, "That key name/id is invalid!");
|
||||
messagePlayerInfo(client, `For combos, use a plus sign between the keys. No spaces! Example: {ALTCOLOUR}rightctrl+num3{MAINCOLOUR}`);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -41,14 +38,12 @@ function addKeyBindCommand(command, params, client) {
|
||||
}
|
||||
|
||||
addPlayerKeyBind(client, keyId, tempCommand, tempParams);
|
||||
messagePlayerSuccess(client, `You binded the {ALTCOLOUR}${toUpperCase(getKeyNameFromId(keyId))} {MAINCOLOUR}key to command: {ALTCOLOUR}/${tempCommand} ${tempParams}`);
|
||||
messagePlayerSuccess(client, `You binded the {ALTCOLOUR}${toUpperCase(keys.join(" + "))} {MAINCOLOUR}keys to command: {ALTCOLOUR}/${tempCommand} ${tempParams}`);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function removeKeyBindCommand(command, params, client) {
|
||||
let splitParams = params.split(" ");
|
||||
|
||||
let keyId = getKeyIdFromParams(getParam(params, " ", 1));
|
||||
|
||||
if(!keyId) {
|
||||
@@ -75,6 +70,8 @@ function addPlayerKeyBind(client, keys, command, params, tempKey = false) {
|
||||
keyBindData.databaseId = -1;
|
||||
}
|
||||
|
||||
keyBindData.needsSaved = true;
|
||||
|
||||
getPlayerData(client).keyBinds.push(keyBindData);
|
||||
sendAddAccountKeyBindToClient(client, keys, (keys.length > 1) ? VRR_KEYSTATE_COMBO : VRR_KEYSTATE_UP);
|
||||
|
||||
@@ -218,3 +215,28 @@ function showKeyBindListCommand(command, params, client) {
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getKeyNamesInComboName(comboName) {
|
||||
if(comboName.indexOf("+") != -1) {
|
||||
return comboName.split("+");
|
||||
} else {
|
||||
return [comboName];
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getKeysInComboName(comboName) {
|
||||
let keyNames = getKeyNamesInComboName(comboName);
|
||||
let keys = [];
|
||||
for(let i in keyNames) {
|
||||
if(getKeyIdFromParams(keyNames[i])) {
|
||||
keys.push(getKeyIdFromParams(keyNames[i]));
|
||||
} else {
|
||||
keys.push(false);
|
||||
}
|
||||
}
|
||||
return keys
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -43,6 +43,21 @@ function getLocaleString(client, stringName, ...args) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getLanguageLocaleString(localeId, stringName, ...args) {
|
||||
let tempString = getRawLocaleString(stringName, localeId);
|
||||
if(tempString == "") {
|
||||
submitBugReport(client, `(AUTOMATED REPORT) Locale string "${stringName}" is missing for "${getPlayerLocaleName(client)}"`);
|
||||
}
|
||||
|
||||
for(let i = 1; i <= args.length; i++) {
|
||||
tempString = tempString.replace(`{${i}}`, args[i-1]);
|
||||
}
|
||||
|
||||
return tempString;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getGroupedLocaleString(client, stringName, index, ...args) {
|
||||
let tempString = getRawGroupedLocaleString(stringName, getPlayerData(client).locale, index);
|
||||
|
||||
@@ -55,21 +70,21 @@ function getGroupedLocaleString(client, stringName, index, ...args) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getRawLocaleString(stringName, localeName) {
|
||||
return getLocaleStrings()[localeName][stringName];
|
||||
function getRawLocaleString(stringName, localeId) {
|
||||
return getLocaleStrings()[localeId][stringName];
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getRawGroupedLocaleString(stringName, localeName, index) {
|
||||
return getLocaleStrings()[localeName][stringName][index];
|
||||
function getRawGroupedLocaleString(stringName, localeId, index) {
|
||||
return getLocaleStrings()[localeId][stringName][index];
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getPlayerLocaleName(client) {
|
||||
let localeId = getPlayerData(client).locale;
|
||||
return getLocales()[localeId][0];
|
||||
return getLocales()[localeId].englishName;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -80,7 +95,7 @@ function loadAllLocaleStrings() {
|
||||
let locales = getGlobalConfig().locale.locales;
|
||||
for(let i in locales) {
|
||||
let localeData = locales[i];
|
||||
let localeFile = JSON.parse(loadTextFile(`locale/${localeData[1]}.json`));
|
||||
let localeFile = JSON.parse(loadTextFile(`locale/${localeData.stringsFile}`));
|
||||
tempLocaleStrings[i] = localeFile;
|
||||
}
|
||||
|
||||
@@ -99,11 +114,11 @@ function getLocaleFromParams(params) {
|
||||
let locales = getLocales();
|
||||
if(isNaN(params)) {
|
||||
for(let i in locales) {
|
||||
if(toLowerCase(locales[i][2]).indexOf(toLowerCase(params)) != -1) {
|
||||
if(toLowerCase(locales[i].isoCode).indexOf(toLowerCase(params)) != -1) {
|
||||
return i;
|
||||
}
|
||||
|
||||
if(toLowerCase(locales[i][0]).indexOf(toLowerCase(params)) != -1) {
|
||||
if(toLowerCase(locales[i].englishName).indexOf(toLowerCase(params)) != -1) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
@@ -147,7 +162,8 @@ function setLocaleCommand(command, params, client) {
|
||||
|
||||
getPlayerData(client).accountData.locale = localeId;
|
||||
getPlayerData(client).locale = localeId;
|
||||
messagePlayerSuccess(client, getLocaleString(client, "LocaleChanged1"), getLocaleString(client, "LocaleNativeName"));
|
||||
messagePlayerSuccess(client, getLocaleString(client, "LocaleChanged1", getLocaleString(client, "LocaleNativeName")));
|
||||
sendPlayerLocaleStrings(client);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -187,12 +203,13 @@ async function translateMessage(messageText, translateFrom = getGlobalConfig().l
|
||||
|
||||
for(let i in cachedTranslations[translateFrom][translateTo]) {
|
||||
if(cachedTranslations[translateFrom][translateTo][i][0] == messageText) {
|
||||
logToConsole(LOG_DEBUG, `[Translate]: Using existing translation for ${getGlobalConfig().locale.locales[translateFrom][0]} to ${getGlobalConfig().locale.locales[translateTo][0]} - (${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]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
let thisTranslationURL = translateURL.format(encodeURI(messageText), toUpperCase(getGlobalConfig().locale.locales[translateFrom][2]), toUpperCase(getGlobalConfig().locale.locales[translateTo][2]), getGlobalConfig().locale.apiEmail);
|
||||
let thisTranslationURL = translateURL.format(encodeURI(messageText), toUpperCase(getGlobalConfig().locale.locales[translateFrom].isoCode), toUpperCase(getGlobalConfig().locale.locales[translateTo].isoCode), getGlobalConfig().locale.apiEmail);
|
||||
httpGet(
|
||||
thisTranslationURL,
|
||||
"",
|
||||
|
||||
@@ -14,11 +14,14 @@ function initMessagingScript() {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function messageAdminAction(messageText) {
|
||||
messagePlayerNormal(null, `⚠️ ${messageText}`, getColourByName("orange"));
|
||||
if(getServerConfig().discordEnabled) {
|
||||
messageDiscord(`:warning: ${messageText}`);
|
||||
function announceAdminAction(localeString, ...args) {
|
||||
let clients = getClients();
|
||||
for(let i in clients) {
|
||||
let messageText = getLocaleString.apply(null, [clients[i], localeString, args]);
|
||||
messagePlayerNormal(clients[i], `⚠️ ${messageText}`, getColourByName("orange"));
|
||||
}
|
||||
|
||||
messageDiscordEventChannel(getLanguageLocaleString.apply(null, [0, localeString, args]));
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -37,22 +40,22 @@ function messagePlayerNormal(client, messageText, colour = COLOUR_WHITE) {
|
||||
// logToConsole(LOG_INFO, `${removeColoursInMessage(messageText)}`);
|
||||
//}
|
||||
|
||||
messageText = replaceColoursInMessage(messageText);
|
||||
//messageText = replaceColoursInMessage(messageText);
|
||||
|
||||
if(client == null) {
|
||||
message(messageText, colour);
|
||||
} else {
|
||||
messageClient(messageText, client, colour);
|
||||
}
|
||||
//if(client == null) {
|
||||
// message(messageText, colour);
|
||||
//} else {
|
||||
// messageClient(messageText, client, colour);
|
||||
//}
|
||||
|
||||
//sendChatBoxMessageToPlayer(client, messageText, colour);
|
||||
sendChatBoxMessageToPlayer(client, messageText, colour);
|
||||
return true;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function messageAdmins(messageText, colour = getColourByName("softRed")) {
|
||||
//let plainMessage = removeColoursInMessage(messageText);
|
||||
//
|
||||
//console.warn(`🛡️ ${plainMessage}`);
|
||||
|
||||
let clients = getClients();
|
||||
@@ -62,9 +65,8 @@ function messageAdmins(messageText, colour = getColourByName("softRed")) {
|
||||
}
|
||||
}
|
||||
|
||||
//if(getServerConfig().discordConfig.sendAdminEvents) {
|
||||
// messageDiscordAdminChannel(plainMessage);
|
||||
//}
|
||||
let plainMessage = removeColoursInMessage(messageText);
|
||||
messageDiscordAdminChannel(plainMessage);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
@@ -35,16 +35,20 @@ function toggleMouseCursorCommand(command, params, client) {
|
||||
// ===========================================================================
|
||||
|
||||
function toggleMouseCameraCommand(command, params, client) {
|
||||
if(getGame() != VRR_GAME_GTA_VC) {
|
||||
sendPlayerMouseCameraToggle(client);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setNewCharacterSpawnPositionCommand(command, params, client) {
|
||||
let position = client.player.position;
|
||||
let position = getPlayerPosition(client);
|
||||
let heading = getPlayerHeading(client);
|
||||
|
||||
getServerConfig().newCharacter.spawnPosition = position;
|
||||
getServerConfig().newCharacter.spawnHeading = client.player.heading;
|
||||
getServerConfig().newCharacter.spawnHeading = heading;
|
||||
getServerConfig().needsSaved = true;
|
||||
|
||||
messagePlayerNormal(client, `The new character spawn position has been set to ${position.x.toFixed(2)}, ${position.y.toFixed(2)}, ${position.z.toFixed(2)}`)
|
||||
@@ -213,6 +217,7 @@ function enterExitPropertyCommand(command, params, client) {
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
setPlayerInCutsceneInterior(client, closestProperty.exitCutscene);
|
||||
setPlayerPosition(client, closestProperty.exitPosition);
|
||||
setPlayerHeading(client, closestProperty.exitRotation);
|
||||
setPlayerDimension(client, closestProperty.exitDimension);
|
||||
@@ -223,6 +228,7 @@ function enterExitPropertyCommand(command, params, client) {
|
||||
}
|
||||
updateInteriorLightsForPlayer(client, closestProperty.interiorLights);
|
||||
}, 1000);
|
||||
//setPlayerInCutsceneInterior(client, closestProperty.exitCutscene);
|
||||
//updateAllInteriorVehiclesForPlayer(client, closestProperty.exitInterior, closestProperty.exitDimension);
|
||||
}, 1100);
|
||||
if(closestProperty.streamingRadioStation != -1) {
|
||||
@@ -249,6 +255,7 @@ function enterExitPropertyCommand(command, params, client) {
|
||||
|
||||
disableCityAmbienceForPlayer(client, true);
|
||||
setTimeout(function() {
|
||||
setPlayerInCutsceneInterior(client, closestProperty.entranceCutscene);
|
||||
setPlayerPosition(client, closestProperty.entrancePosition);
|
||||
setPlayerHeading(client, closestProperty.entranceRotation);
|
||||
setPlayerDimension(client, closestProperty.entranceDimension);
|
||||
@@ -257,11 +264,14 @@ function enterExitPropertyCommand(command, params, client) {
|
||||
if(isFadeCameraSupported()) {
|
||||
fadeCamera(client, true, 1.0);
|
||||
}
|
||||
|
||||
updateInteriorLightsForPlayer(client, true);
|
||||
}, 1000);
|
||||
}, 1100);
|
||||
//setPlayerInCutsceneInterior(client, closestProperty.entranceCutscene);
|
||||
stopRadioStreamForPlayer(client);
|
||||
getPlayerData(client).streamingRadioStation = -1;
|
||||
|
||||
//logToConsole(LOG_DEBUG, `[VRR.Misc] ${getPlayerDisplayForConsole(client)} exited business ${inBusiness.name}[${inBusiness.index}/${inBusiness.databaseId}]`);
|
||||
return true;
|
||||
}
|
||||
@@ -301,7 +311,6 @@ function getPlayerInfoCommand(command, params, client) {
|
||||
`{MAINCOLOUR}Skin: {ALTCOLOUR}${getSkinNameFromModel(getPlayerCurrentSubAccount(targetClient).skin)}[${getPlayerCurrentSubAccount(targetClient).skin}]`,
|
||||
`{MAINCOLOUR}Clan: {ALTCOLOUR}${clan}`,
|
||||
`{MAINCOLOUR}Job: {ALTCOLOUR}${job}`,
|
||||
|
||||
]
|
||||
|
||||
let chunkedList = splitArrayIntoChunks(stats, 6);
|
||||
@@ -324,7 +333,7 @@ function checkPlayerSpawning() {
|
||||
for(let i in clients) {
|
||||
if(!isConsole(clients[i])) {
|
||||
if(getPlayerData(clients[i])) {
|
||||
if(getPlayerData(clients[i]).loggedIn) {
|
||||
if(isPlayerLoggedIn(clients[i])) {
|
||||
if(!getPlayerData(clients[i]).ped) {
|
||||
if(clients[i].player != null) {
|
||||
//getPlayerData(clients[i]).ped = clients[i].player;
|
||||
@@ -588,3 +597,14 @@ function stuckPlayerCommand(command, params, client) {
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function playerPedSpeakCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, getCommandSyntaxText(command));
|
||||
return false;
|
||||
}
|
||||
|
||||
makePlayerPedSpeak(client, params);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -7,14 +7,27 @@
|
||||
// TYPE: Server (JavaScript)
|
||||
// ===========================================================================
|
||||
|
||||
let builtInCommands = [
|
||||
"refresh",
|
||||
"restart",
|
||||
"stop",
|
||||
"start",
|
||||
"reconnect",
|
||||
"setname",
|
||||
"connect",
|
||||
"disconnect",
|
||||
"say",
|
||||
"dumpdoc",
|
||||
];
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getPlayerPosition(client) {
|
||||
if(!areServerElementsSupported()) {
|
||||
return getPlayerData(client).syncPosition;
|
||||
} else {
|
||||
if(client.player != null) {
|
||||
return client.player.position;
|
||||
if(getPlayerPed(client) != null) {
|
||||
return getPlayerPed(client).position;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,8 +45,8 @@ function getPlayerHeading(client) {
|
||||
if(!areServerElementsSupported()) {
|
||||
return getPlayerData(client).syncHeading;
|
||||
} else {
|
||||
if(client.player != null) {
|
||||
return client.player.heading;
|
||||
if(getPlayerPed(client) != null) {
|
||||
return getPlayerPed(client).heading;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -51,8 +64,8 @@ function getPlayerVehicle(client) {
|
||||
if(!areServerElementsSupported()) {
|
||||
return getPlayerData().syncVehicle;
|
||||
} else {
|
||||
if(client.player.vehicle) {
|
||||
return client.player.vehicle;
|
||||
if(getPlayerPed(client).vehicle) {
|
||||
return getPlayerPed(client).vehicle;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@@ -64,8 +77,8 @@ function getPlayerDimension(client) {
|
||||
if(!areServerElementsSupported()) {
|
||||
return getPlayerData(client).syncDimension;
|
||||
} else {
|
||||
if(client.player != null) {
|
||||
return client.player.dimension;
|
||||
if(getPlayerPed(client) != null) {
|
||||
return getPlayerPed(client).dimension;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -83,8 +96,8 @@ function setPlayerDimension(client, dimension) {
|
||||
if(!areServerElementsSupported()) {
|
||||
getPlayerData(client).syncDimension = dimension;
|
||||
} else {
|
||||
if(client.player != null) {
|
||||
client.player.dimension = dimension;
|
||||
if(getPlayerPed(client) != null) {
|
||||
getPlayerPed(client).dimension = dimension;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -105,7 +118,7 @@ function isPlayerInAnyVehicle(client) {
|
||||
if(!areServerElementsSupported()) {
|
||||
return (getPlayerData().syncVehicle != null);
|
||||
} else {
|
||||
return (client.player.vehicle != null);
|
||||
return (getPlayerPed(client).vehicle != null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,7 +133,7 @@ function getPlayerVehicleSeat(client) {
|
||||
return getPlayerData().syncVehicleSeat;
|
||||
} else {
|
||||
for(let i = 0 ; i <= 8 ; i++) {
|
||||
if(getPlayerVehicle(client).getOccupant(i) == client.player) {
|
||||
if(getPlayerVehicle(client).getOccupant(i) == getPlayerPed(client)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
@@ -150,11 +163,33 @@ function getVehicleHeading(vehicle) {
|
||||
// ===========================================================================
|
||||
|
||||
function setVehicleHeading(vehicle, heading) {
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
return sendNetworkEventToPlayer("vrr.vehPosition", null, getVehicleForNetworkEvent(vehicle), heading);
|
||||
}
|
||||
return vehicle.heading = heading;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getElementTransient(element) {
|
||||
if(typeof element.transient != "undefined") {
|
||||
return element.transient;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setElementTransient(element, state) {
|
||||
if(typeof element.transient != "undefined") {
|
||||
element.transient = state;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getVehicleSyncer(vehicle) {
|
||||
return getElementSyncer(vehicle);
|
||||
}
|
||||
@@ -162,7 +197,13 @@ function getVehicleSyncer(vehicle) {
|
||||
// ===========================================================================
|
||||
|
||||
function getVehicleForNetworkEvent(vehicle) {
|
||||
return vehicle;
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
if(getVehicleData(vehicle).ivNetworkId != -1) {
|
||||
return getVehicleData(vehicle).ivNetworkId;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
return vehicle.id;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -199,7 +240,7 @@ function setPlayerSkin(client, skinIndex) {
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
triggerNetworkEvent("vrr.localPlayerSkin", client, getGameConfig().skins[getGame()][skinIndex][0]);
|
||||
} else {
|
||||
client.player.modelIndex = getGameConfig().skins[getGame()][skinIndex][0];
|
||||
getPlayerPed(client).modelIndex = getGameConfig().skins[getGame()][skinIndex][0];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,7 +275,11 @@ function setPlayerArmour(client, armour) {
|
||||
// ===========================================================================
|
||||
|
||||
function getPlayerArmour(client) {
|
||||
return client.player.armour;
|
||||
if(areServerElementsSupported(client)) {
|
||||
return getPlayerPed(client).armour;
|
||||
} else {
|
||||
return getPlayerData(client).syncArmour;
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -299,23 +344,23 @@ function getElementSyncer(element) {
|
||||
// ===========================================================================
|
||||
|
||||
function getPlayerWeaponAmmo(client) {
|
||||
return client.player.weaponAmmunition;
|
||||
return getPlayerPed(client).weaponAmmunition;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setPlayerVelocity(client, velocity) {
|
||||
logToConsole(LOG_DEBUG, `Setting ${getPlayerDisplayForConsole(client)}'s velocity to ${velocity.x}, ${velocity.y}, ${velocity.z}`);
|
||||
if(typeof client.player.velocity != "undefined") {
|
||||
client.player.velocity = velocity;
|
||||
if(typeof getPlayerPed(client).velocity != "undefined") {
|
||||
getPlayerPed(client).velocity = velocity;
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getPlayerVelocity(client, velocity) {
|
||||
if(typeof client.player.velocity != "undefined") {
|
||||
return client.player.velocity;
|
||||
function getPlayerVelocity(client) {
|
||||
if(typeof getPlayerPed(client).velocity != "undefined") {
|
||||
return getPlayerPed(client).velocity;
|
||||
}
|
||||
return toVector3(0.0, 0.0, 0.0);
|
||||
}
|
||||
@@ -342,7 +387,11 @@ function setElementDimension(element, dimension) {
|
||||
// ===========================================================================
|
||||
|
||||
function setElementRotation(element, rotation) {
|
||||
return element.setRotation(rotation);
|
||||
if(typeof element.setRotation != "undefined") {
|
||||
element.setRotation(rotation);
|
||||
} else {
|
||||
return element.rotation = rotation;
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -424,8 +473,16 @@ function createGameObject(modelIndex, position) {
|
||||
|
||||
function setElementOnAllDimensions(element, state) {
|
||||
if(!isNull(element) && element != false) {
|
||||
if(typeof element.netFlags != "undefined") {
|
||||
if(typeof element.netFlags.onAllDimensions != "undefined") {
|
||||
element.netFlags.onAllDimensions = state;
|
||||
}
|
||||
} else {
|
||||
if(typeof element.onAllDimensions != "undefined") {
|
||||
element.onAllDimensions = state;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -500,7 +557,7 @@ function getVehicleEngine(vehicle) {
|
||||
// ===========================================================================
|
||||
|
||||
function getVehicleLocked(vehicle) {
|
||||
return vehicle.locked;
|
||||
return vehicle.lockedStatus;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -534,6 +591,22 @@ function createGameVehicle(modelIndex, position, heading, toClient = null) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function createGameCivilian(modelIndex, position, heading, toClient = null) {
|
||||
if(areServerElementsSupported()) {
|
||||
let civilian = game.createCivilian(getGameConfig().skins[getGame()][modelIndex][0], 0);
|
||||
if(!isNull(civilian)) {
|
||||
civilian.position = position;
|
||||
civilian.heading = heading;
|
||||
addToWorld(civilian);
|
||||
return civilian;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getIsland(position) {
|
||||
if(getServerGame() == VRR_GAME_GTA_III) {
|
||||
if(position.x > 616) {
|
||||
@@ -665,7 +738,11 @@ function givePlayerWeaponAmmo(client, ammo) {
|
||||
// ===========================================================================
|
||||
|
||||
function getPlayerWeapon(client) {
|
||||
return client.player.weapon;
|
||||
if(areServerElementsSupported(client)) {
|
||||
return getPlayerPed(client).weapon;;
|
||||
} else {
|
||||
return getPlayerData(client).syncWeapon;
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -1023,3 +1100,70 @@ function givePlayerWeapon(client, weaponId, ammo, active = true) {
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setPlayerWantedLevel(client, wantedLevel) {
|
||||
sendNetworkEventToPlayer("vrr.wantedLevel", client, wantedLevel);
|
||||
return true;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setElementStreamInDistance(element, distance) {
|
||||
if(!isNull(element) && element != false) {
|
||||
if(typeof element == "Entity") {
|
||||
if(typeof element.streamInDistance != "undefined") {
|
||||
element.streamInDistance = distance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setElementStreamOutDistance(element, distance) {
|
||||
if(!isNull(element) && element != false) {
|
||||
if(typeof element == "Entity") {
|
||||
if(typeof element.streamOutDistance != "undefined") {
|
||||
element.streamOutDistance = distance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getPlayerPed(client) {
|
||||
if(getGame() == VRR_GAME_GTA_IV) {
|
||||
return getPlayerData(client).ped;
|
||||
} else {
|
||||
return client.player;
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setEntityData(entity, dataName, dataValue, syncToClients = true) {
|
||||
if(entity != null) {
|
||||
return entity.setData(dataName, dataValue, syncToClients);
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function removeEntityData(entity, dataName) {
|
||||
if(entity != null) {
|
||||
return entity.removeData(dataName);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function doesEntityDataExist(entity, dataName) {
|
||||
if(entity != null) {
|
||||
return (entity.getData(dataName) != null);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -8,21 +8,23 @@
|
||||
// ===========================================================================
|
||||
|
||||
function initNPCScript() {
|
||||
if(!getServerConfig().devServer) {
|
||||
getServerData().npcs = loadNPCsFromDatabase();
|
||||
setAllNPCDataIndexes();
|
||||
}
|
||||
|
||||
spawnAllNPCs();
|
||||
setNPCDataIndexes();
|
||||
spawnNPCs();
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* @param {Ped} ped - The data index of the NPC
|
||||
* @param {Number} npcId - The data index of the NPC
|
||||
* @return {NPCData} The NPC's data (class instancee)
|
||||
*/
|
||||
function getNPCData(ped) {
|
||||
if(ped.getData("vrr.dataIndex")) {
|
||||
return ped.getData("vrr.dataIndex");
|
||||
function getNPCData(npcId) {
|
||||
if(typeof getServerData().npcs[npcId] != "undefined") {
|
||||
return getServerData().npcs[npcId];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -38,20 +40,14 @@ function createNPCCommand(client, command, params) {
|
||||
let skinId = getSkinModelIndexFromParams(params);
|
||||
|
||||
if(!skinId) {
|
||||
messagePlayerError(client, `Invalid skin`);
|
||||
messagePlayerError(client, getLocaleString(client, "InvalidSkin"));
|
||||
return false;
|
||||
}
|
||||
|
||||
let position = getPosInFrontOfPos(getPlayerPosition(client), getPlayerHeading(client), 3);
|
||||
|
||||
let tempNPCData = new NPCData(false);
|
||||
tempNPCData.position = position;
|
||||
tempNPCData.heading = getPlayerHeading(client);
|
||||
tempNPCData.skin = skinId;
|
||||
|
||||
let npcIndex = getServerData().npcs.push(tempNPCData);
|
||||
|
||||
spawnNPC(npcIndex-1);
|
||||
let npcId = createNPC(skinId, position, getPlayerHeading(client));
|
||||
messageAdmins(`${client.name}{MAINCOLOUR} created a ${getSkinNameFromIndex(getNPCData(npcId).skin)} NPC!`);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -155,7 +151,11 @@ function loadNPCTriggerResponsesFromDatabase(npcTriggerDatabaseId) {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveAllNPCsToDatabase() {
|
||||
function saveNPCsToDatabase() {
|
||||
if(getServerConfig().devServer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for(let i in getServerData().npcs) {
|
||||
saveNPCToDatabase(i);
|
||||
}
|
||||
@@ -163,108 +163,93 @@ function saveAllNPCsToDatabase() {
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function saveNPCToDatabase(npc) {
|
||||
if(getNPCData(vehicleDataId) == null) {
|
||||
// Invalid vehicle data
|
||||
function saveNPCToDatabase(npcDataId) {
|
||||
if(getNPCData(npcDataId) == null) {
|
||||
// Invalid NPC data
|
||||
return false;
|
||||
}
|
||||
|
||||
let tempVehicleData = getServerData().vehicles[vehicleDataId];
|
||||
let tempNPCData = getNPCData(npcDataId);
|
||||
|
||||
if(tempVehicleData.databaseId == -1) {
|
||||
// Temp vehicle, no need to save
|
||||
if(tempNPCData.databaseId == -1) {
|
||||
// Temp NPC, no need to save
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!tempVehicleData.needsSaved) {
|
||||
// Vehicle hasn't changed. No need to save.
|
||||
if(!tempNPCData.needsSaved) {
|
||||
// NPC hasn't changed. No need to save.
|
||||
return false;
|
||||
}
|
||||
|
||||
logToConsole(LOG_VERBOSE, `[VRR.Vehicle]: Saving vehicle ${tempVehicleData.databaseId} to database ...`);
|
||||
logToConsole(LOG_VERBOSE, `[VRR.NPC]: Saving NPC ${tempNPCData.databaseId} to database ...`);
|
||||
let dbConnection = connectToDatabase();
|
||||
if(dbConnection) {
|
||||
if(tempVehicleData.vehicle != false) {
|
||||
if(!tempVehicleData.spawnLocked) {
|
||||
if(tempNPCData.ped != false) {
|
||||
if(!tempNPCData.spawnLocked) {
|
||||
if(areServerElementsSupported()) {
|
||||
tempVehicleData.spawnPosition = tempVehicleData.vehicle.position;
|
||||
tempVehicleData.spawnRotation = tempVehicleData.vehicle.heading;
|
||||
tempNPCData.spawnPosition = tempNPCData.vehicle.position;
|
||||
tempNPCData.spawnRotation = tempNPCData.vehicle.heading;
|
||||
} else {
|
||||
tempVehicleData.spawnPosition = tempVehicleData.syncPosition;
|
||||
tempVehicleData.spawnRotation = tempVehicleData.syncHeading;
|
||||
tempNPCData.spawnPosition = tempNPCData.syncPosition;
|
||||
tempNPCData.spawnRotation = tempNPCData.syncHeading;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let safeAnimationName = escapeDatabaseString(tempNPCData.animationName);
|
||||
let safeFirstName = escapeDatabaseString(tempNPCData.firstName);
|
||||
let safeLastName = escapeDatabaseString(tempNPCData.lastName);
|
||||
let safeMiddleName = escapeDatabaseString(tempNPCData.middleName);
|
||||
|
||||
let data = [
|
||||
["veh_server", getServerId()],
|
||||
["veh_model", toInteger(tempVehicleData.model)],
|
||||
["veh_owner_type", toInteger(tempVehicleData.ownerType)],
|
||||
["veh_owner_id", toInteger(tempVehicleData.ownerId)],
|
||||
["veh_locked", boolToInt(tempVehicleData.locked)],
|
||||
["veh_spawn_lock", boolToInt(tempVehicleData.spawnLocked)],
|
||||
["veh_buy_price", toInteger(tempVehicleData.buyPrice)],
|
||||
["veh_rent_price", toInteger(tempVehicleData.rentPrice)],
|
||||
["veh_pos_x", toFloat(tempVehicleData.spawnPosition.x)],
|
||||
["veh_pos_y", toFloat(tempVehicleData.spawnPosition.y)],
|
||||
["veh_pos_z", toFloat(tempVehicleData.spawnPosition.z)],
|
||||
["veh_rot_z", toFloat(tempVehicleData.spawnRotation)],
|
||||
["veh_col1", toInteger(tempVehicleData.colour1)],
|
||||
["veh_col2", toInteger(tempVehicleData.colour2)],
|
||||
["veh_col3", toInteger(tempVehicleData.colour3)],
|
||||
["veh_col4", toInteger(tempVehicleData.colour4)],
|
||||
["veh_col1_isrgb", boolToInt(tempVehicleData.colour1IsRGBA)],
|
||||
["veh_col2_isrgb", boolToInt(tempVehicleData.colour2IsRGBA)],
|
||||
["veh_col3_isrgb", boolToInt(tempVehicleData.colour3IsRGBA)],
|
||||
["veh_col4_isrgb", boolToInt(tempVehicleData.colour4IsRGBA)],
|
||||
["veh_extra1", tempVehicleData.extras[0]],
|
||||
["veh_extra2", tempVehicleData.extras[1]],
|
||||
["veh_extra3", tempVehicleData.extras[2]],
|
||||
["veh_extra4", tempVehicleData.extras[3]],
|
||||
["veh_extra5", tempVehicleData.extras[4]],
|
||||
["veh_extra6", tempVehicleData.extras[5]],
|
||||
["veh_extra7", tempVehicleData.extras[6]],
|
||||
["veh_extra8", tempVehicleData.extras[7]],
|
||||
["veh_extra9", tempVehicleData.extras[8]],
|
||||
["veh_extra10", tempVehicleData.extras[9]],
|
||||
["veh_extra11", tempVehicleData.extras[10]],
|
||||
["veh_extra12", tempVehicleData.extras[11]],
|
||||
["veh_extra13", tempVehicleData.extras[12]],
|
||||
["veh_engine", intToBool(tempVehicleData.engine)],
|
||||
["veh_lights", intToBool(tempVehicleData.lights)],
|
||||
["veh_health", toInteger(tempVehicleData.health)],
|
||||
["veh_damage_engine", toInteger(tempVehicleData.engineDamage)],
|
||||
["veh_damage_visual", toInteger(tempVehicleData.visualDamage)],
|
||||
["veh_dirt_level", toInteger(tempVehicleData.dirtLevel)],
|
||||
["veh_int", toInteger(tempVehicleData.interior)],
|
||||
["veh_vw", toInteger(tempVehicleData.dimension)],
|
||||
["veh_livery", toInteger(tempVehicleData.livery)],
|
||||
["npc_server", getServerId()],
|
||||
["npc_skin", toInteger(tempNPCData.model)],
|
||||
["npc_name_first", safeFirstName],
|
||||
["npc_name_middle", safeMiddleName],
|
||||
["npc_name_last", safeLastName],
|
||||
["npc_owner_type", toInteger(tempNPCData.ownerType)],
|
||||
["npc_owner_id", toInteger(tempNPCData.ownerId)],
|
||||
["npc_pos_x", toFloat(tempNPCData.position.x)],
|
||||
["npc_pos_y", toFloat(tempNPCData.position.y)],
|
||||
["npc_pos_z", toFloat(tempNPCData.position.z)],
|
||||
["npc_rot_z", toFloat(tempNPCData.heading)],
|
||||
["npc_scale_x", toFloat(tempNPCData.scale.x)],
|
||||
["npc_scale_y", toFloat(tempNPCData.scale.y)],
|
||||
["npc_scale_z", toFloat(tempNPCData.scale.z)],
|
||||
["npc_animation", safeAnimationName],
|
||||
["npc_health", toInteger(tempNPCData.health)],
|
||||
["npc_armour", toInteger(tempNPCData.armour)],
|
||||
["npc_invincible", boolToInt(tempNPCData.invincible)],
|
||||
["npc_heedthreats", boolToInt(tempNPCData.heedThreats)],
|
||||
["npc_threats", toInteger(tempNPCData.threats)],
|
||||
["npc_stay", boolToInt(tempNPCData.stay)],
|
||||
["npc_type_flags", toInteger(tempNPCData.typeFlags)],
|
||||
];
|
||||
|
||||
let dbQuery = null;
|
||||
if(tempVehicleData.databaseId == 0) {
|
||||
let queryString = createDatabaseInsertQuery("veh_main", data);
|
||||
if(tempNPCData.databaseId == 0) {
|
||||
let queryString = createDatabaseInsertQuery("npc_main", data);
|
||||
dbQuery = queryDatabase(dbConnection, queryString);
|
||||
getServerData().vehicles[vehicleDataId].databaseId = getDatabaseInsertId(dbConnection);
|
||||
getServerData().vehicles[vehicleDataId].needsSaved = false;
|
||||
tempNPCData.databaseId = getDatabaseInsertId(dbConnection);
|
||||
tempNPCData.needsSaved = false;
|
||||
} else {
|
||||
let queryString = createDatabaseUpdateQuery("veh_main", data, `veh_id=${tempVehicleData.databaseId}`);
|
||||
let queryString = createDatabaseUpdateQuery("npc_main", data, `npc_id=${tempNPCData.databaseId}`);
|
||||
dbQuery = queryDatabase(dbConnection, queryString);
|
||||
getServerData().vehicles[vehicleDataId].needsSaved = false;
|
||||
tempNPCData.needsSaved = false;
|
||||
}
|
||||
|
||||
freeDatabaseQuery(dbQuery);
|
||||
disconnectFromDatabase(dbConnection);
|
||||
return true;
|
||||
}
|
||||
logToConsole(LOG_VERBOSE, `[VRR.Vehicle]: Saved vehicle ${vehicleDataId} to database!`);
|
||||
logToConsole(LOG_VERBOSE, `[VRR.NPC]: Saved NPC ${npcDataId} to database!`);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setAllNPCDataIndexes() {
|
||||
function setNPCDataIndexes() {
|
||||
for(let i in getServerData().npcs) {
|
||||
getServerData().npcs[i].index = i;
|
||||
|
||||
@@ -291,16 +276,120 @@ function spawnNPC(npcIndex) {
|
||||
let civilian = createGameCivilian(getNPCData(npcIndex).model, getNPCData(npcIndex).spawnPosition, getNPCData(npcIndex).spawnRotation);
|
||||
if(civilian) {
|
||||
civilian.setData("vrr.dataIndex", npcIndex);
|
||||
if(getNPCData(npcIndex).animationName != "") {
|
||||
civilian.setData("vrr.animation", getNPCData(npcIndex).animationName);
|
||||
}
|
||||
getNPCData(npcIndex).ped = civilian;
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function spawnAllNPCs() {
|
||||
function spawnNPCs() {
|
||||
for(let i in getServerData().npcs) {
|
||||
spawnNPC(npcIndex);
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function deleteNPCCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, command);
|
||||
return false;
|
||||
}
|
||||
|
||||
let closestNPC = getClosestNPC(getPlayerPosition(client));
|
||||
|
||||
if(!getNPCData(closestNPC)) {
|
||||
messagePlayerError(client, getLocaleString(client, "InvalidNPC"));
|
||||
return false;
|
||||
}
|
||||
|
||||
let npcName = getNPCData(closestNPC).name;
|
||||
|
||||
deleteNPC(closestNPC);
|
||||
messageAdmins(`${client.name}{MAINCOLOUR} deleted NPC {npcPink}${npcName}`);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function deleteNPC(npcId) {
|
||||
quickDatabaseQuery(`DELETE FROM npc_main WHERE npc_id=${getNPCData(npcId).databaseId}`);
|
||||
|
||||
if(getNPCData(npcId)) {
|
||||
if(getNPCData(npcId).ped != false) {
|
||||
deleteEntity(getNPCData(npcId).ped);
|
||||
}
|
||||
getServerData().npcs.splice(npcId, 1);
|
||||
}
|
||||
|
||||
setNPCDataIndexes();
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function setNPCAnimationCommand(command, params, client) {
|
||||
if(areParamsEmpty(params)) {
|
||||
messagePlayerSyntax(client, command);
|
||||
return false;
|
||||
}
|
||||
|
||||
let closestNPC = getClosestNPC(getPlayerPosition(client));
|
||||
let animationId = getAnimationFromParams(getParam(params, " ", 1));
|
||||
let animationPositionOffset = 1;
|
||||
|
||||
if(!getNPCData(closestNPC)) {
|
||||
messagePlayerError(client, getLocaleString(client, "InvalidNPC"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!getAnimationData(animationId)) {
|
||||
messagePlayerError(client, getLocaleString(client, "InvalidAnimation"));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(areThereEnoughParams(params, 2, " ")) {
|
||||
if(toInteger(animationPositionOffset) < 0 || toInteger(animationPositionOffset) > 3) {
|
||||
messagePlayerError(client, getLocaleString(client, "InvalidAnimationDistance"));
|
||||
return false;
|
||||
}
|
||||
animationPositionOffset = getParam(params, " ", 2);
|
||||
}
|
||||
|
||||
getNPCData(closestNPC).animationName = animation;
|
||||
makePedPlayAnimation(getNPCData(closestNPC).ped, animationId, animationPositionOffset);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function getClosestNPC(position) {
|
||||
let npcs = getServerData().npcs;
|
||||
let closest = 0;
|
||||
for(let i in npcs) {
|
||||
if(getDistance(npcs[i].ped.position, position) < getDistance(npcs[i].ped.position, position)) {
|
||||
closest = i;
|
||||
}
|
||||
}
|
||||
|
||||
return closest;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function createNPC(skinIndex, position, heading) {
|
||||
let tempNPCData = new NPCData(false);
|
||||
tempNPCData.position = position;
|
||||
tempNPCData.heading = heading;
|
||||
tempNPCData.skin = skinIndex;
|
||||
tempNPCData.animationName = "";
|
||||
|
||||
let npcIndex = getServerData().npcs.push(tempNPCData);
|
||||
|
||||
spawnNPC(npcIndex-1);
|
||||
setNPCDataIndexes();
|
||||
|
||||
return npcIndex-1;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
@@ -21,7 +21,7 @@ function attemptToSignalToNearbyTaxi(client) {
|
||||
let closestTaxi = nearbyTaxis.reduce((i, j) => (i.position.distance(pos) < j.position.distance(pos)) ? i : j);
|
||||
if(!closestTaxi.getOccupant(0).isType(ELEMENT_PLAYER)) {
|
||||
setVehicleCruiseSpeed(closestTaxi, 0.0);
|
||||
setVehicleLockedState(closestTaxi, false);
|
||||
setVehicleLocked(closestTaxi, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
31
scripts/server/race.js
Normal file
31
scripts/server/race.js
Normal file
@@ -0,0 +1,31 @@
|
||||
// ===========================================================================
|
||||
// Vortrex's Roleplay Resource
|
||||
// https://github.com/VortrexFTW/gtac_roleplay
|
||||
// ===========================================================================
|
||||
// FILE: race.js
|
||||
// DESC: Provides racing usage and functions
|
||||
// TYPE: Server (JavaScript)
|
||||
// ===========================================================================
|
||||
|
||||
function initRaceScript() {
|
||||
if(!getServerConfig().devServer) {
|
||||
getServerData().races = loadRacesFromDatabase();
|
||||
}
|
||||
|
||||
setRaceDataIndexes();
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
/**
|
||||
* @param {Number} raceId - The data index of the race
|
||||
* @return {RaceData} The race's data (class instance)
|
||||
*/
|
||||
function getRaceData(raceId) {
|
||||
if(typeof getServerData().races[raceId] != "undefined") {
|
||||
return getServerData().races[raceId];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user