366 Commits

Author SHA1 Message Date
Vortrex
be29c02960 Remove duplicate locale strings 2023-03-07 21:05:08 -06:00
Vortrex
79e351cf8f Fix veh min rank + add who/when added 2023-03-07 21:01:23 -06:00
Vortrex
1cc54d4dd9 Set and remove password on start/reload (disabled) 2023-03-07 21:00:34 -06:00
Vortrex
b4aca0257f Save player payday 2023-03-07 20:59:53 -06:00
Vortrex
a11560b5b9 Add job and clan invite prompt types (unfinished) 2023-03-07 20:59:40 -06:00
Vortrex
0368ea3371 Check if payphone & player valid for desync fix 2023-03-07 20:59:23 -06:00
Vortrex
ea4cd87202 Fix send biz to client args 2023-03-07 20:58:40 -06:00
Vortrex
af2de3455e Remove set server password 2023-03-07 20:58:17 -06:00
Vortrex
785e506d69 Public job val + JSDoc + logging + invite cmd 2023-03-07 20:57:55 -06:00
Vortrex
eb30c616af Remove website/discord help categories (crashes) 2023-03-07 20:56:56 -06:00
Vortrex
a2eca84f52 Fix error when pay too low for tax + add eco cmds 2023-03-07 20:56:34 -06:00
Vortrex
a92fc14570 Save server chat type to database 2023-03-07 20:55:56 -06:00
Vortrex
063b2aab4f Allow manager cmd disable + add job/eco commands 2023-03-07 20:55:14 -06:00
Vortrex
242210bc9d Add prompt value to player data 2023-03-07 20:54:23 -06:00
Vortrex
9ab6bf2700 Check if global OOC enabled + add local OOC cmd 2023-03-07 20:54:09 -06:00
Vortrex
99da6df3ee Check for gun ban + show proper cost difference 2023-03-07 20:53:44 -06:00
Vortrex
bf88a14b23 Add new entries to job flags 2023-03-07 20:53:15 -06:00
Vortrex
72adf16515 Fix business labels 2023-03-07 20:52:26 -06:00
Vortrex
f6cb20b4ff Fix admin info category 2023-03-05 23:26:54 -06:00
Vortrex
9a06d7e7ba Mark inventory action tip seen 2023-03-05 23:26:34 -06:00
Vortrex
3de60247c6 Add job name to uniform list header 2023-03-05 23:26:19 -06:00
Vortrex
36c074ee3d Fix initial business label stuff 2023-03-05 23:26:05 -06:00
Vortrex
cbb820ec9f Woops wrong locale name 2023-03-05 23:25:56 -06:00
Vortrex
cf38abac7f Fix vehicle job/clan rank 2023-03-05 23:25:33 -06:00
Vortrex
f0d0384a41 Map change warning (unfinished) 2023-03-05 23:25:21 -06:00
Vortrex
37d485a7c3 Change word in local strings 2023-03-05 23:24:49 -06:00
Vortrex
1b04c60576 Chat type 2023-03-05 20:49:53 -06:00
Vortrex
0fcd38dd51 Update business.js 2023-03-05 20:49:47 -06:00
Vortrex
5c2320adea New locale strings 2023-03-05 20:48:25 -06:00
Vortrex
9713ecaf63 A few new commands 2023-03-05 20:48:16 -06:00
Vortrex
c1aaf8af53 Set inactive vehicle respawn to 60 minutes 2023-03-05 20:48:06 -06:00
Vortrex
5dbc93f38c Don't delete from database + fix job rank cmd 2023-03-05 20:47:29 -06:00
Vortrex
96586f6be0 More staff commands and fixes 2023-03-05 20:47:08 -06:00
Vortrex
4b63689f6e New locale strings 2023-03-05 20:46:55 -06:00
Vortrex
5d3119f051 Allow "all" payphone state set in net event 2023-03-05 20:46:39 -06:00
Vortrex
ec4a35d7bb Check for null vehicle 2023-03-05 20:46:22 -06:00
Vortrex
4e10158b29 Reset action tips command 2023-03-05 20:46:12 -06:00
Vortrex
b15964e763 Add job flag value util 2023-03-05 20:46:00 -06:00
Vortrex
0a9866ac9e Disable GUI prompts for now 2023-03-05 20:45:47 -06:00
Vortrex
7bb7775898 Admin-set chat type 2023-03-05 20:45:23 -06:00
Vortrex
c664e40d1e Don't delete from database 2023-03-05 20:45:09 -06:00
Vortrex
0d9388afa7 Net event rename 2023-03-05 20:44:45 -06:00
Vortrex
07cd95b861 Scene stuff 2023-03-05 20:44:34 -06:00
Vortrex
dbef2a2d5d Fix desynced payphones in timer 2023-03-05 20:44:13 -06:00
Vortrex
4cb1639461 Fix unoccupied veh util 2023-03-05 20:43:59 -06:00
Vortrex
f70021a4f2 Only give 20 default biz items 2023-03-05 20:43:42 -06:00
Vortrex
c54b0abf07 Use databaseId member when logging item buy 2023-03-04 23:46:04 -06:00
Vortrex
f843e43d66 Don't show nametags if in vehicle on Mafia 1 2023-03-04 23:45:42 -06:00
Vortrex
38e60a4837 Don't show labels if in vehicle on Mafia 1 2023-03-04 23:45:32 -06:00
Vortrex
90caff03a6 Add revision args to account hash/salts 2023-03-04 23:45:14 -06:00
Vortrex
eb7512f75c Add security config util 2023-03-04 23:45:00 -06:00
Vortrex
cdb67fa7e6 Reset payday after getting paid 2023-03-04 23:44:51 -06:00
Vortrex
d8b35d9aa9 Fix timestamp, remove extra strings in job route info 2023-03-04 23:44:38 -06:00
Vortrex
e0ae0793db Fix payphone database ID not being set 2023-03-04 23:44:18 -06:00
Vortrex
d87dfb0b05 Save next payday (in case of crash) 2023-03-04 23:43:56 -06:00
Vortrex
7193e349df Fix timestamp in veh info 2023-03-04 23:43:41 -06:00
Vortrex
7f6945f402 Check for null string 2023-03-04 23:43:33 -06:00
Vortrex
ef4c64f722 Check for empty string 2023-03-04 23:42:56 -06:00
Vortrex
992cc53dfd Job routes list and info commands 2023-03-04 08:36:48 -06:00
Vortrex
c6e1fb7f6d More JSDoc 2023-03-04 08:36:37 -06:00
Vortrex
16549d5042 Security config 2023-03-04 08:36:24 -06:00
Vortrex
e34d24033e Use british time format 2023-03-04 08:36:18 -06:00
Vortrex
738cd55e75 Add who/when added info to veh 2023-03-04 08:36:01 -06:00
Vortrex
1d0cbbd176 Use security config 2023-03-04 08:35:32 -06:00
Vortrex
d01a413ecc More JSDoc 2023-03-04 08:35:18 -06:00
Vortrex
72ae8aeead Load security config 2023-03-04 08:35:06 -06:00
Vortrex
6b3651f660 Check for job and rank on payday 2023-03-04 08:34:57 -06:00
Vortrex
77ef9dab35 New locale strings 2023-03-04 08:33:26 -06:00
Vortrex
802a489fee Fix wrong locale string in add key bind examples 2023-03-03 03:07:01 -06:00
Vortrex
f1d53734d3 Don't give arg to universal number locale string 2023-03-03 03:06:40 -06:00
Vortrex
1da6b82af5 Wrong del item util (fixes infinite veh fix item) 2023-03-03 03:06:23 -06:00
Vortrex
fef84bf75b Some fishing stuff (unfinished) 2023-03-03 03:05:48 -06:00
Vortrex
1782b6af2c Fix wrong command locale message 2023-03-03 03:05:35 -06:00
Vortrex
c61eee4197 Add new locale string 2023-03-03 03:05:18 -06:00
Vortrex
b695b3d9d0 Merge branch 'nightly' of https://github.com/VortrexFTW/v-roleplay into nightly 2023-03-03 01:32:50 -06:00
Vortrex
2ee939cc2c Merge branch 'master' into nightly 2023-03-03 01:32:19 -06:00
Vortrex
732940e56f Force add config files 2023-03-03 01:31:57 -06:00
Vortrex
19b433e7fb Remove config files (gitignore reset) 2023-03-03 01:28:45 -06:00
Vortrex
1d281256a1 Update .gitignore 2023-03-03 01:27:21 -06:00
Vortrex
e1137b728b Update .gitignore 2023-03-03 01:24:53 -06:00
Vortrex
908c5980e7 Set new payphone enabled 2023-03-03 00:51:31 -06:00
Vortrex
a8637692ee Number detective uniforms 2023-03-02 08:17:33 -06:00
Vortrex
e2f7b5403a Fix payphones 2023-03-02 08:17:20 -06:00
Vortrex
880de94677 Incoming damage multiplier network event handler 2023-03-02 08:17:07 -06:00
Vortrex
ef62513115 Woops wrong name 2023-03-02 08:16:52 -06:00
Vortrex
f2166cc804 Fix job uniforms not saving 2023-03-02 08:16:39 -06:00
Vortrex
b7cd14c654 Update incoming damage multiplier on drug use 2023-03-02 08:16:30 -06:00
Vortrex
c4a2f0aeda Use despawn functions + house labels 2023-03-02 08:16:12 -06:00
Vortrex
e27521761f Use new tax income field 2023-03-02 08:15:46 -06:00
Vortrex
0c936d4a8f Nearby businesses command 2023-03-02 08:15:35 -06:00
Vortrex
ea8efdc70a Add info files 2023-03-02 08:12:21 -06:00
Vortrex
23c8acae21 Woops wrong variable for chat message 2023-03-02 08:09:28 -06:00
Vortrex
868bb10091 Show job blips on edge when off of screen 2023-03-02 08:09:14 -06:00
Vortrex
453a946a1c Init job script on start 2023-03-02 08:08:52 -06:00
Vortrex
8a206bcaf8 Add weapon damage multiplier 2023-03-02 08:08:44 -06:00
Vortrex
588359ef27 Create ECONOMY.md 2023-03-02 05:15:26 -06:00
Vortrex
b27305e788 Don't log item move if dev server 2023-03-01 01:22:46 -06:00
Vortrex
f6ce6105e2 Biz nearby list cmd + buy log 2023-03-01 01:22:28 -06:00
Vortrex
ff2d416539 Remove economy config reload command 2023-03-01 01:20:32 -06:00
Vortrex
9f8d4cf034 Use server config for economy settings 2023-03-01 01:20:22 -06:00
Vortrex
3f925a4a44 Locate player command 2023-03-01 01:19:15 -06:00
Vortrex
b4d8acc07b Use server config for currency string 2023-03-01 01:18:56 -06:00
Vortrex
623434d70f More payphone commands & utils 2023-03-01 01:18:43 -06:00
Vortrex
f603d71062 Don't require args or player for staff flags list 2023-03-01 01:18:22 -06:00
Vortrex
f9d6f9eff3 Despawn all elements util + starting state 2023-03-01 01:18:06 -06:00
Vortrex
793b764469 Fix day/night cycle element spawning 2023-03-01 01:17:27 -06:00
Vortrex
3da2507cf7 Re-enabled day/night rule text 2023-03-01 01:17:14 -06:00
Vortrex
d7bbe1748e Dealership vehicle fix 2023-03-01 01:16:56 -06:00
Vortrex
e36d366f84 Add MafiaC train stations + fix vehicle names 2023-03-01 01:16:33 -06:00
Vortrex
b7eac224c5 Payphone state 2023-03-01 01:16:14 -06:00
Vortrex
67b8266a71 Add admin help category (needs finished) 2023-02-28 22:37:28 -06:00
Vortrex
f39697bf29 Commands is not a HouseData array lol 2023-02-28 22:37:10 -06:00
Vortrex
abea95a909 Use svr_main table for server economy settings 2023-02-28 22:36:57 -06:00
Vortrex
a9007338af Payphone + locate player commands 2023-02-28 22:36:42 -06:00
Vortrex
d55ae9ea6b Add world icons for businesses, house, and jobs 2023-02-28 22:36:20 -06:00
Vortrex
16a8014920 Move job objective icon image 2023-02-28 22:36:06 -06:00
Vortrex
cb54cc9aa5 Show debug logging in client console 2023-02-28 22:35:55 -06:00
Vortrex
b463c9f71f Remove economy.json (moved to database) 2023-02-28 22:35:43 -06:00
Vortrex
c8b2dca8de Add world icon images 2023-02-28 22:35:30 -06:00
Vortrex
4e0565eefe New locale strings 2023-02-28 22:35:10 -06:00
Vortrex
edcc063d8c Item type commands and output fixes 2023-02-26 20:08:49 -06:00
Vortrex
da578f40d9 Woops wrong game select 2023-02-26 20:08:27 -06:00
Vortrex
0900b0637a Save job rank + add JSDoc 2023-02-26 20:07:56 -06:00
Vortrex
84a55d76fb Fixes for some vehicle data ID issues 2023-02-26 20:07:43 -06:00
Vortrex
12f9a66349 Logging changes 2023-02-26 20:06:49 -06:00
Vortrex
081f78e53b Lower nametag height for MafiaC 2023-02-26 20:06:40 -06:00
Vortrex
272cfd9a3f Simple queueing script (needs finished) 2023-02-25 04:44:56 -06:00
Vortrex
d15ed19401 Add ammo items to Mafia 1 legal gun store + veh name fixes 2023-02-25 04:44:42 -06:00
Vortrex
57d274b334 Payphone state constants 2023-02-25 04:44:20 -06:00
Vortrex
1c5d2669fc Delete from table, don't update 2023-02-25 04:44:02 -06:00
Vortrex
896cb75591 Save veh positions + save payphones 2023-02-25 04:43:54 -06:00
Vortrex
920cfbd2ae Set payphone indexes in startup util 2023-02-25 04:43:33 -06:00
Vortrex
9205f07dbe Respawn vehicle on getveh, dont teleport 2023-02-25 04:43:18 -06:00
Vortrex
a388d94244 Payphone script fixes 2023-02-25 04:43:04 -06:00
Vortrex
0c7b25d0a8 Payphone net events 2023-02-25 04:42:39 -06:00
Vortrex
f4a2425fce Phone messaging functions 2023-02-25 04:42:29 -06:00
Vortrex
796072daab Send all payphones on spawn 2023-02-25 04:41:54 -06:00
Vortrex
085173d807 Add payphone distances to global config 2023-02-25 04:41:44 -06:00
Vortrex
11f034698b Add payphone commands to array 2023-02-25 04:41:29 -06:00
Vortrex
0762e4ac52 Add payphone data to client class 2023-02-25 04:41:11 -06:00
Vortrex
3fdc038242 Use payphone chat if on a call 2023-02-25 04:40:53 -06:00
Vortrex
9c9d242ae4 Init timers and payphone script 2023-02-25 04:39:37 -06:00
Vortrex
69317b3b1f Add client timers script 2023-02-25 04:39:27 -06:00
Vortrex
e14d7170aa Add payphone client script 2023-02-25 04:39:00 -06:00
Vortrex
d7b911004b Payphone net events 2023-02-25 04:38:51 -06:00
Vortrex
14fe451c83 Job route location check 2023-02-25 04:38:44 -06:00
Vortrex
9c86ad0e2c Process payphone and job route location 2023-02-25 04:38:01 -06:00
Vortrex
a8802c0c7e Add payphone array 2023-02-25 04:37:45 -06:00
Vortrex
c4fc123d75 Organize + add new files 2023-02-25 04:37:37 -06:00
Vortrex
64a9280fe6 New locale strings 2023-02-25 04:37:22 -06:00
Vortrex
b11510005a Add payphone sound files 2023-02-25 04:36:58 -06:00
Vortrex
85b934064e Move logo to lower left 2023-02-23 01:17:44 -06:00
Vortrex
542d1384db Use utils for vehicle delete/despawn 2023-02-23 01:17:33 -06:00
Vortrex
93e48df39a Add passive income to business till if players are on 2023-02-23 01:17:16 -06:00
Vortrex
52e8d6c1db Payphone array is camel case 2023-02-23 01:16:40 -06:00
Vortrex
b632e1d26b Add vehicle occupants native wrap 2023-02-23 01:16:16 -06:00
Vortrex
efea8a015f Add job pay 2023-02-23 01:16:05 -06:00
Vortrex
a0d03a0aab Check for clan before clan chat 2023-02-23 01:15:49 -06:00
Vortrex
c225c4d130 Move local player vehicle control state to vehicle.js 2023-02-23 01:15:41 -06:00
Vortrex
8532aa74ca Fix remove player from veh 2023-02-23 01:15:29 -06:00
Vortrex
0f788068c1 Job route indicator 2023-02-23 01:13:48 -06:00
Vortrex
d07a890a10 Process job route location rendering 2023-02-23 01:13:39 -06:00
Vortrex
b746970b9f Move fade camera func to camera.js 2023-02-23 01:13:24 -06:00
Vortrex
64a3d2daf8 Add objective icon to meta.xml 2023-02-23 01:13:12 -06:00
Vortrex
56ce5b7846 Make objective icon white 2023-02-23 01:13:04 -06:00
Vortrex
d940d6033e Don't respawn vehicle on job route finish 2023-02-22 16:45:43 -06:00
Vortrex
49026b7faf Only set job vehicle colour if supported 2023-02-22 16:27:26 -06:00
Vortrex
b9f47539a8 Fixes for interior scene change 2023-02-22 16:27:13 -06:00
Vortrex
51194882c1 Fixes for interior scene change 2023-02-22 16:26:59 -06:00
Vortrex
998dbf33f8 Load payphone script and data 2023-02-22 16:26:47 -06:00
Vortrex
dff8b8b8db Payphone array 2023-02-22 16:26:00 -06:00
Vortrex
21b2429536 Add ManagePayphones staff permission 2023-02-22 16:25:53 -06:00
Vortrex
520164269b Add payphone script and commands 2023-02-22 16:24:56 -06:00
Vortrex
44cbdc07ac Fix duplicate vehicle spawning 2023-02-22 05:27:03 -06:00
Vortrex
ac397a9011 Rename main world scene 2023-02-22 05:26:53 -06:00
Vortrex
8e11b9337b Disable day/night cycle on Mafia 1 for now 2023-02-22 05:26:42 -06:00
Vortrex
d2335e7bec Woops removed stuff from wrong native file 2023-02-22 05:26:07 -06:00
Vortrex
b39abaab6c Use util for main world scene 2023-02-22 05:25:51 -06:00
Vortrex
150d3f10b0 Add job rank command 2023-02-22 05:25:40 -06:00
Vortrex
810acd8036 Send correct job type 2023-02-22 05:25:28 -06:00
Vortrex
339ec0808c Add job rank command 2023-02-22 05:25:17 -06:00
Vortrex
d1e9b6f08b Fix clan owner command 2023-02-22 05:24:34 -06:00
Vortrex
f6d1ee189c Convert scoreboard key to int 2023-02-22 05:24:20 -06:00
Vortrex
549f8a3c59 Convert enter property key to int 2023-02-22 05:24:07 -06:00
Vortrex
e8d7b9312a Fix nametags for Mafia 1 2023-02-22 05:23:54 -06:00
Vortrex
fcdf8542d6 Fix job type 2023-02-22 05:23:46 -06:00
Vortrex
5401bb33c2 New string 2023-02-22 05:23:31 -06:00
Vortrex
7b9a41f8d1 Scoreboard command 2023-02-21 20:28:46 -06:00
Vortrex
a5008bdbf5 Use job index, not database ID 2023-02-21 20:28:37 -06:00
Vortrex
e3a0b27c4e Scoreboard error checking 2023-02-21 20:28:27 -06:00
Vortrex
697ccd860f Use label distance, not pickup distance 2023-02-21 20:28:17 -06:00
Vortrex
9536ed9aa9 Comment unfinished stuff 2023-02-21 20:28:06 -06:00
Vortrex
5ebbe17920 Fix biz label not showing buy info 2023-02-21 19:49:28 -06:00
Vortrex
d8dde07845 Change HUD money colour to white (will add more to HUD) 2023-02-21 19:49:13 -06:00
Vortrex
9c16ceeb3a Fix job label rendering 2023-02-21 19:49:00 -06:00
Vortrex
faf4a1569c Nametag fixes 2023-02-21 19:48:49 -06:00
Vortrex
d70a8d451a Make scoreboard key re-bindable 2023-02-21 19:48:38 -06:00
Vortrex
a0477b10fe Woops wrong variable name for chat message 2023-02-21 19:44:28 -06:00
Vortrex
700e98768e Make default chat global (will add config for this later) 2023-02-21 19:44:18 -06:00
Vortrex
adb8975c6a Colour for client code execute 2023-02-21 19:44:01 -06:00
Vortrex
c76459e777 Move setup all event handlers to native files 2023-02-21 19:43:51 -06:00
Vortrex
961670687f Move locked state to bottom 2023-02-21 19:43:31 -06:00
Vortrex
eaa0f3a563 Enable world labels on Mafia 1 2023-02-21 19:43:23 -06:00
Vortrex
4dcbcf5658 Wtf extra character inserted 2023-02-21 14:42:23 -06:00
Vortrex
77fbc48f4e Fix names and enable nametags on Mafia 2023-02-21 14:40:01 -06:00
Vortrex
b4ac02f9ec Remove all async/await stuff 2023-02-21 14:39:45 -06:00
Vortrex
1cb02b9ab1 Update database.sql 2023-02-20 21:36:38 -06:00
Vortrex
b42f98917d Update name 2023-02-18 15:43:36 -06:00
Vortrex
a39acd67d0 Disable timezone stuff for now (needs finished) 2023-02-18 14:40:30 -06:00
Vortrex
f6e452ee0e Update vehicle saved positions 2023-02-18 14:40:14 -06:00
Vortrex
e8c658acff Use chat list index colour for character list 2023-02-18 14:39:48 -06:00
Vortrex
06bb1d2c61 Use chat list index colour for staff notes 2023-02-18 14:39:29 -06:00
Vortrex
902072b6a2 Use chat list index colour for radio stations 2023-02-18 14:39:14 -06:00
Vortrex
441eaca65d Start working on custom classes for native wrapping 2023-02-18 14:38:52 -06:00
Vortrex
e4221198c6 Allow slashes in bindkey, fix bindkey 2023-02-18 14:38:13 -06:00
Vortrex
3eaf6f2452 Fix wrong skin info for job uniform cmd 2023-02-18 14:37:57 -06:00
Vortrex
2b17deb25a Debug logging 2023-02-18 14:37:26 -06:00
Vortrex
9e4ae75fbe Fix reply command 2023-02-18 14:37:13 -06:00
Vortrex
ad8c459839 Custom command aliases (needs finished) 2023-02-18 14:36:57 -06:00
Vortrex
889d7898c3 Make enter key removable for label 2023-02-18 14:36:20 -06:00
Vortrex
a374702da2 Check if enter key is null for label 2023-02-18 14:36:09 -06:00
Vortrex
1b2168c39d Use primary text colour on char select GUI 2023-02-18 14:35:57 -06:00
Vortrex
62a4581c55 Update README.md 2023-02-18 14:20:37 -06:00
Vortrex
0607057f3f Update README.md 2023-02-18 14:18:46 -06:00
Vortrex
ab4cd7a212 Add features list 2023-02-18 14:17:57 -06:00
Vortrex
3ab59fa3f8 Old util 2023-02-15 21:56:38 -06:00
Vortrex
ae96568c0a Couple error checks 2023-02-15 21:56:32 -06:00
Vortrex
c0f7d1ce02 New default chat state 2023-02-15 03:20:37 -06:00
Vortrex
0ed30452f6 Fix timezone saving/loading issue 2023-02-15 03:20:18 -06:00
Vortrex
68f7bb1db7 Event fixes 2023-02-15 03:19:49 -06:00
Vortrex
ce73e81f89 Net event fixes 2023-02-15 03:19:39 -06:00
Vortrex
297ce51323 Use new custom fade camera 2023-02-15 03:19:32 -06:00
Vortrex
8ca2e84e62 Rename create game element funcs to "spawn" 2023-02-15 03:19:00 -06:00
Vortrex
ae0178717c Function to remove vehicles 2023-02-15 03:18:04 -06:00
Vortrex
9322d793e6 Small fixes 2023-02-15 03:17:50 -06:00
Vortrex
f755de8de6 Get rid of old death handling 2023-02-15 03:17:37 -06:00
Vortrex
fd703e969a New netevents to clear stuff 2023-02-15 03:17:25 -06:00
Vortrex
f3df3a37e6 Use property label render distance 2023-02-15 03:17:12 -06:00
Vortrex
711c429363 Process custom fade camera 2023-02-15 03:16:56 -06:00
Vortrex
736857e120 Fix custom fade camera 2023-02-15 03:16:43 -06:00
Vortrex
f23a98f182 Send deleted job 2023-02-15 03:16:25 -06:00
Vortrex
350a42eef5 Send deleted house 2023-02-15 03:16:18 -06:00
Vortrex
a098fec203 Add support for sending deleted biz 2023-02-15 03:16:03 -06:00
Vortrex
2028d34a0c Add camera script to meta.xml 2023-02-15 03:15:47 -06:00
Vortrex
4db0882d4c Fix position for SalieriBar interior 2023-02-12 13:12:42 -06:00
Vortrex
7169dc65ba Make vehicle chat indicator color lighter 2023-02-12 13:12:28 -06:00
Vortrex
3b509da887 Wrong util name 2023-02-12 13:12:07 -06:00
Vortrex
2d7e7f5a6e Check if dimension and interior supported 2023-02-12 13:11:58 -06:00
Vortrex
89118b8426 Use radio utils 2023-02-12 13:11:43 -06:00
Vortrex
c168e80258 Re-enable 2D rendering after map switch 2023-02-12 13:11:31 -06:00
Vortrex
82f4d31b3b Prefix 2023-02-12 13:11:15 -06:00
Vortrex
0934a86023 Check pickup is supported 2023-02-12 13:11:06 -06:00
Vortrex
afce71dd19 Check animation exists 2023-02-12 13:10:56 -06:00
Vortrex
734446c4f0 Not an async function 2023-02-12 13:10:27 -06:00
Vortrex
03e939a4af Enable game map 2023-02-12 13:10:11 -06:00
Vortrex
ba3c5533e7 Disable rendering before switching scenes 2023-02-12 13:10:03 -06:00
Vortrex
8aa8e843b7 Need event object 2023-02-12 13:09:49 -06:00
Vortrex
ea9135e898 Fix job and uniform create + optional use admin's skin 2023-02-09 11:08:41 -06:00
Vortrex
4d13ab33e4 Fix Mafia font size for big game message 2023-02-09 11:08:12 -06:00
Vortrex
1553d19fdd Add optional custom HUD (money only for now, more later) 2023-02-09 11:07:55 -06:00
Vortrex
bca6816fad Different method for removing players from veh 2023-02-09 10:05:57 -06:00
Vortrex
5c2cb68bb7 Use pre-enter/exit veh events for Mafia 1 2023-02-09 10:05:44 -06:00
Vortrex
436bbc753a Use v prefix 2023-02-09 10:05:29 -06:00
Vortrex
2ce7d35971 Add default account settings when saving data 2023-02-09 10:05:22 -06:00
Vortrex
42c31ed2ef Using pre-enter/exit veh events for Mafia 1 2023-02-09 10:04:55 -06:00
Vortrex
bacdc063d4 Prefix 2023-02-08 18:04:27 -06:00
Vortrex
77114a14a3 Merge branch 'master' into nightly 2023-02-08 18:00:29 -06:00
Vortrex
66109a8fe9 Use in vehicle seat var instead of loop 2023-02-08 17:59:52 -06:00
Vortrex
07187b99ce Use non-ex events for Mafia 1 2023-02-08 17:59:34 -06:00
Vortrex
dd04ec0bb3 Send -1 blip/pickup for deleted biz 2023-02-08 17:59:24 -06:00
Vortrex
9004e51928 Use v prefix for server config cvars 2023-02-08 17:59:00 -06:00
Vortrex
094387dc41 Use non-ex events on Mafia 1 2023-02-08 17:58:46 -06:00
Vortrex
145906042b Add melee weapons array for Mafia 1 2023-02-08 17:58:19 -06:00
Vortrex
529a6bb3a0 Remove everybody from vehicle before stopping rent 2023-02-07 15:35:41 -06:00
Vortrex
0593c36a06 Use server ID when creating char server data 2023-02-07 15:35:26 -06:00
Vortrex
1e91698e05 Update from master (merge error) 2023-02-07 15:11:56 -06:00
Vortrex
280573069c Merge branch 'master' of https://github.com/VortrexFTW/v-roleplay 2023-02-07 15:11:04 -06:00
Vortrex
ebcc79b135 Fix subaccount default server data 2023-02-07 15:10:59 -06:00
Vortrex
b6ffbf0381 Console output prefix 2023-02-07 15:10:49 -06:00
Vortrex
30120d0640 Rename 2023-02-07 15:10:23 -06:00
Vortrex
6a5baf53d4 Fix db defaults 2023-02-07 15:10:17 -06:00
Vortrex
44b625cc29 Update README.md 2023-01-28 10:44:30 -06:00
Vortrex
761e6d00ef Update README.md 2023-01-28 10:39:29 -06:00
Vortrex
053691d195 Merge branch 'nightly' 2023-01-23 14:45:51 -06:00
Vortrex
a5b9840729 Make default server ID 1 2023-01-23 14:44:48 -06:00
Vortrex
e11a5b34ad Create account data based on servers in svr_main 2023-01-23 14:40:11 -06:00
Vortrex
1f31132070 Change default "no account" ID to 1 2023-01-23 14:39:21 -06:00
Vortrex
139bb78064 Create COMMANDS.md 2023-01-23 13:32:20 -06:00
Vortrex
821257db34 Update IDEAS.md 2023-01-23 13:27:57 -06:00
Vortrex
6f04a6e2dd Update IDEAS.md 2023-01-23 13:27:37 -06:00
Vortrex
02678e5654 Reset database auto increments 2023-01-20 00:01:52 -06:00
Vortrex
667dfb2167 Update README.md 2023-01-19 22:19:26 -06:00
Vortrex
4446aab960 Update README.md 2023-01-19 22:17:47 -06:00
Vortrex
17f4a7df24 Update README.md 2023-01-19 22:17:19 -06:00
Vortrex
38cf009e3a Merge branch 'nightly' 2023-01-19 22:12:37 -06:00
Vortrex
b15c611a01 Merge branch 'nightly' of https://github.com/VortrexFTW/v-roleplay into nightly 2023-01-19 22:09:38 -06:00
Vortrex
c5bafd2b2f Add database.sql 2023-01-19 22:09:31 -06:00
Vortrex
1e9dd13730 Merge pull request #7 from Suprise444/patch-1
updated polish locales
2023-01-17 02:45:31 -06:00
Suprise444
e858be2575 updated polish locales
16/01/2023
2023-01-16 22:02:51 +01:00
Vortrex
f63770ba06 Civilian white is a colour type, not name 2023-01-11 00:04:14 -06:00
Vortrex
11853807f6 No need to remove insert keybind (not used anymore) 2023-01-11 00:03:58 -06:00
Vortrex
cda7191fee Use server spawnPlayer for skin setting 2023-01-11 00:03:41 -06:00
Vortrex
7b7ab19a17 Don't allow IV cellphone 2023-01-11 00:03:29 -06:00
Vortrex
c87805a5fe Fix missing indicators for businesses 2023-01-11 00:03:11 -06:00
Vortrex
51e0d63b3d Use ped id for collision util 2023-01-11 00:02:57 -06:00
Vortrex
ae215aa0db Update IDEAS.md 2022-12-28 00:05:24 -06:00
Vortrex
aa3b3b968a Update IDEAS.md 2022-12-28 00:03:43 -06:00
Vortrex
d2a016926d Update IDEAS.md 2022-12-28 00:02:26 -06:00
Vortrex
505132bf3a Update IDEAS.md 2022-12-27 23:56:53 -06:00
Vortrex
b0192b9ce9 Update IDEAS.md 2022-12-27 23:56:06 -06:00
Vortrex
fe945ac56b Delete TODO.md 2022-12-27 23:41:06 -06:00
Vortrex
63811d4b11 Update TRANSLATE.md 2022-12-27 23:39:05 -06:00
Vortrex
104f5a1e1b Add info for providing server translations 2022-12-27 23:38:40 -06:00
Vortrex
66391bcaad Change logos 2022-12-27 23:34:15 -06:00
Vortrex
bacb54423b Add locale files 2022-12-27 23:32:41 -06:00
Vortrex
ea31b69bd3 Update config files 2022-12-27 23:31:54 -06:00
Vortrex
65aacb6389 Remove old database file (will add new soon) 2022-12-27 23:28:17 -06:00
Vortrex
fe92098952 Remove config files from gitignore 2022-12-27 23:27:59 -06:00
Vortrex
9e5e410582 Remove garbage collector stuff 2022-12-21 08:19:05 -06:00
Vortrex
e055bbb128 Reduce log levels to info 2022-12-21 08:18:50 -06:00
Vortrex
4245f3cf02 Merge branch 'master' of https://github.com/VortrexFTW/v-roleplay 2022-12-19 10:38:21 -06:00
Vortrex
0f94714f6e Merge branch 'nightly' 2022-12-19 10:38:05 -06:00
Vortrex
d8f5b04df2 Update README.md 2022-12-19 10:36:10 -06:00
Vortrex
bd29a9f7d5 Change copyright, consts, and net events prefix 2022-12-19 10:11:10 -06:00
Vortrex
df0bf2fdd7 Remove old util 2022-12-18 17:38:02 -06:00
Vortrex
dd30b9c389 Fix for admin buy of biz-owned veh 2022-12-18 17:27:02 -06:00
Vortrex
58b587c0e2 Output message for fixblips and fixpickups 2022-12-18 15:58:47 -06:00
Vortrex
c1fda19473 Delete business after message 2022-12-18 15:53:15 -06:00
Vortrex
2496d569da Wrong locale string for ban cmds 2022-12-18 15:53:00 -06:00
Vortrex
8b94a4160b Only show /admins that are logged in 2022-12-18 15:52:49 -06:00
Vortrex
c53e42ae70 Woops forgot var for fee 2022-12-18 15:43:27 -06:00
Vortrex
dea5e99ed7 Chat list index colour 2022-12-18 15:43:15 -06:00
Vortrex
0b1662eb46 Fix vehrespawn cmd + currency string in vehinfo 2022-12-18 15:43:04 -06:00
Vortrex
5b522e3098 Show error if geoip cmd fails 2022-12-18 15:22:59 -06:00
Vortrex
f8ff02b9be Wrong locale string for GUI window title 2022-12-18 15:22:50 -06:00
Vortrex
dbc200faf6 Wrong info used in plrinfo command 2022-12-18 15:22:36 -06:00
Vortrex
656747de1c Wrong locale name + item display changes 2022-12-18 15:22:24 -06:00
Vortrex
8ee1356680 Set correct job blips on player spawn 2022-12-18 15:22:14 -06:00
Vortrex
20f1dcfd0c Default account settings (unfinished) 2022-12-18 15:21:56 -06:00
Vortrex
e1f6f62ada Don't permasync non-looped anims 2022-12-18 15:21:39 -06:00
Vortrex
59d41f8482 New query system to ease port for RageMP 2022-12-18 14:35:39 -06:00
Vortrex
79eb7e2424 Null error checking 2022-12-18 12:18:17 -06:00
Vortrex
f1e3ece40e Woops wrong delete item func name 2022-12-18 12:18:08 -06:00
Vortrex
dea2765daf Add action tip msg func 2022-12-18 12:17:53 -06:00
Vortrex
35f4143d9b Use radio station database ID for house save 2022-12-18 12:17:45 -06:00
Vortrex
7ed0cc0e26 Make vehicle inline chat colour softer, easier to read 2022-12-17 14:51:14 -06:00
Vortrex
02ae2db0b2 Make nearveh list a bit easier to read 2022-12-17 14:50:52 -06:00
Vortrex
f98f586ecf Job route location types 2022-12-17 14:50:31 -06:00
Vortrex
e31b21d766 Recache item bool 2022-12-17 14:50:17 -06:00
Vortrex
3d23ef5871 Don't recache all items until finished removing 2022-12-17 14:50:06 -06:00
Vortrex
382155a452 Collision state natives 2022-12-17 14:49:40 -06:00
Vortrex
68b6bee79a New automatic login stuff 2022-12-17 14:49:27 -06:00
Vortrex
80795122eb Check null client and data for nametag 2022-12-17 14:48:46 -06:00
Vortrex
913e36449a Fix for gotoloc cmd 2022-12-17 14:48:35 -06:00
Vortrex
b0b99f2086 Move animals to bottom of skins array (GTA V) 2022-12-11 05:05:17 -06:00
Vortrex
6f10426063 Add missing discord event 2022-12-11 05:05:05 -06:00
Vortrex
14b78eb338 Fix config assoc 2022-12-11 05:04:56 -06:00
Vortrex
2f4e72e2a8 Increase log level 2022-12-11 05:04:48 -06:00
Vortrex
c55b850f60 Fix NPC query assoc 2022-12-11 05:04:39 -06:00
Vortrex
a495f70239 New assoc table usage 2022-12-11 04:49:53 -06:00
Vortrex
b10118e1ab Use new fetch assoc stuff 2022-12-11 04:05:24 -06:00
Vortrex
fb9e55e7e8 Merge branch 'nightly' 2022-08-13 13:09:35 -05:00
Vortrex
49d212b9fd Backup current script state 2022-07-26 02:18:13 -05:00
Vortrex
1022ca4944 Merge branch 'nightly' 2022-05-31 08:36:39 -05:00
Vortrex
75fd982a49 Merge pull request #5 from Suprise444/patch-1
May 2, 2022
2022-05-02 16:01:47 -05:00
Suprise444
1992359c3c May 2, 2022 2022-05-02 22:48:03 +02:00
179 changed files with 24474 additions and 16104 deletions

5
.gitignore vendored
View File

@@ -1,7 +1,4 @@
.vs/
.git/
*.code-workspace
config/database.json
config/email.json
config/discord.json
locale/*
config

41
ECONOMY.md Normal file
View File

@@ -0,0 +1,41 @@
# Economy Information
### Basic Information
Each server has it's own independent economy with simulated inflation and is designed to slowly self-repair over time, assuming nothing is affecting it too heavily.
---
### Asset Ownership
Any player or clan is allowed to own as many businesses, vehicles, and houses as they want. However, it should be noted that the more you own, the more upkeep (via taxes, insurance, etc) is required. Failure to maintain this upkeep for too long will automatically force you to lose the unmaintained assets. Vehicle owners can park their car anywhere (subject to IC parking laws), store items in the trunk or dash compartment, give anybody access, and set the price if they want to make it available to buy, and more. Business owners can stock their store with any item they want, set what prices they want for any item for sale, close/open the business, keep a stock of items in the business's storage, force people to pay a fee to enter, and more. House owners can store items in their house, purchase a safe, decorate with furniture, give anybody access, and more.
---
### Ordering Items for a Business
Ordering items is simple: just use the /bizorder command.
You'll need to specify which item you want to order and how many.
Remember, the prices will vary depending on certain circumstances.
The formula is as follows:
> Base price * server inflation * demand * risk * amount
**Here's a breakdown on how the above formula works:**
* First, each item has a base price. This value will never change.
* Next, the base price is multiplied by the server's current inflation value. When the servers were first opened, the inflation value is 100%, which means no inflation. Everything cost 100% of it's calculated price. However, the inflation will slowly increase over time, simulating realistic economy inflation.
* Next, the inflated price is then multiplied by the demand factor, which is determined by how much demand there is for the item you want. Every 10 of the item ordered increases the demand value by 10%, and this will slowly go back down over time. If another business just ordered 100 of the item you want, the demand has forced the item's order price to increase by 100%, which means it's now double the original price. This simulates the things involved with increased demand, such as the extra manufacturing and shipping needed to get this item imported to your business.
* Next, the cost is multiplied by a risk value. This value never changes, and varies depending on the item. For illegal items, the risk value will be lower for less-risky items and higher as they get worse. For example, a shotgun versus an AK-47 have different risk levels, as an AK-47 is a far deadlier and a harder to get weapon, and is more difficult to conceal through customs. This simulates the "risk" of ordering items like these. For legal items, there is no risk so the risk price won't increase for those.
* Finally, the order cost is multiplied by the amount you want to order.
**An example of this formula in action is below ... shown for an order for 10 AK-47's with no inflation**
*The demand is increased by 10% since you're ordering 10 of them. 1 = 100% of the normal cost, 1.1 = 110%, and so on.*
> Base price $1000
> x inflation 1 = $1000
> x demand 1.1 = $1100
> x risk 5 = $5500
> x amount 10 = $55000
So as you can see, the total cost to order 10 AK-47's in this scenario is $55,000. Remember, an AK-47 is a deadly and uncommon weapon (and highly illegal!) so it's a very risky and costly thing to do business with.

View File

@@ -1,18 +1,49 @@
# Vortrex's Roleplay Resource
### Description
This is Vortrex's Roleplay Resource
This is Vortrex's Roleplay Resource. Originally created for [GTA Connected](https://gtaconnected.com/) but support for other multiplayer mods coming soon!
### Supported Games and Multiplayer Mods
* GTA III (on [GTA Connected](https://gtaconnected.com/))
* GTA VC (on [GTA Connected](https://gtaconnected.com/))
* GTA SA (on [GTA Connected](https://gtaconnected.com/))
* GTA IV (on [GTA Connected](https://gtaconnected.com/))
* Mafia: The City of Lost Heaven (on [Mafia Connected](https://mafiaconnected.com/))
* **(Coming Soon!)** GTA V (on [RAGEMP](https://rage.mp/))
* **(Coming Soon!)** Mafia Definitive Edition (on MafiaMP)
### Features
*Some features may be disabled on specific multiplayer mods depending on functionality*
* Works on multiple server instances sharing the same database
* Jobs operate as factions but leader can make ranks "public" so anybody can use those if enabled.
* Clans with custom ranks, permissions, pay, titles, and more
* Custom inventory system where everything is an item: food, weapons, devices, etc
* All items can be dropped, given, used, picked up, or stored in certain places (other items, vehicles, etc)
* Ownable vehicles, houses, businesses, and more
* No "hard cap" to how many things you can own, but the more you own the more you pay in tax
* Stock your business with any items you want, and set custom prices
* Extra storage for businesses (floor items for sale, stockroom in back for hidden stuff)
* Security features like two-factor login, email alerts for login attempts, and more
* Animations and ped speech for extra RP goodness
* Players can make aliases for commands
* Choosable levels of GUI: Simple (input, list, message like SA-MP), Full (whole app layouts), or None (commands only)
* Custom keybinds. Server can set defaults, but players can bind/unbind keys for personalization
* *Everything* is dynamically changable in the server using commands and/or GUI
* Community-provided translations for GUI and server messages
* Automatic translator for chat (players can turn it on/off for themselves)
* Way too many other things to list here
## Setup
* Download the server from the [downloads page](https://gtaconnected.com/downloads) of the GTA Connected website.
* Download this resource via git clone or directly from GitHub with the green zip download button.
* Add this resource as-is into a resource folder of your choice inside the resources directory of your server. I named my resource folder "gtac_roleplay"
* Add this resource as-is into a resource folder of your choice inside the resources directory of your server.
* Add the resource to the server config. You should also disable a lot of the cvars in the config too. I only have traffic, civilians, planes, and bigmap enabled.
* Download the required modules and add them to your server config. See list of modules below.
* Import the database to your MySQL server, and edit database.json in the resource's config folder with the info to connect to the database.
* Edit `svr_main` table, and set the `svr_game` and `svr_port` to your server's info. Game ID numbers are [here](https://wiki.gtaconnected.com/GameIdentifiers)
* (Optional) Edit the email SMTP connection info. Without this, the email features will be disabled.
* Start the server and connect. Register your account, make a character, and disconnect.
* Edit your account in the database (get your account ID from the acct_main table and then edit the four entries in acct_svr for your account, changing acct_svr_staff_flags to negative 1 (-1) ... **you must not be connected to the server when doing this**
* Edit your account in the database (get your account ID from the acct_main table and then edit the four entries in acct_svr for your account, changing `acct_svr_staff_flags` to negative 1 (-1) ... **you must not be connected to the server when doing this**
* You now have full admin. Enjoy the resource!
## Modules
@@ -31,20 +62,22 @@ This is Vortrex's Roleplay Resource
* Keep opening curly brackets in-line. Don't linebreak before an opening curly brackets.
* Use sentence case instead of adjacent uppercase letters in class/member names. (i.e. Id instead of ID)
* Use generic, non-specific class member names wherever possible. (i.e. databaseId instead of accountId)
* All communications from server to client are handled in server-side `client.js` script file via utils
* All communications from client to server are handled in client-side `server.js` script file via utils
* All server events are handled in `event.js` script file, sometimes with utils.
* All communications from server <-> client are handled in each side's `netevents.js` script files via utils
* All server and client events are handled in each side's `event.js` script files, sometimes with utils.
### Database Style
* Always use lowercase.
* Shorten prefix names to four characters or less (i.e. acct=account, veh=vehicle)
* Always use lowercase names for tables and fields
* Try to shorten prefix names to four characters or less (i.e. acct=account, veh=vehicle)
* Add an underscore between each word
* Append _main to any tables that store primary data (i.e. acct_main, ban_main, etc)
* Prefix field names with the table name, except for _main tables (i.e. acct_id, job_loc_id)
* Tables use primary index on their ID column.
* Tables use both secondary indexes & cascading foreign key links to any ID that points to another table
* Tables use primary key on their ID column
* Tables use both secondary keys & cascading foreign key links to any ID that points to another table
* Prefix table names with func_ if they are a custom function or procedure
### Notes
* The resource is designed to load the script files first, then initialize after that's done.
* The resource is designed to run on multiple servers. Each server needs a row in `svr_main` table with matching port and [game ID](https://wiki.gtaconnected.com/GameIdentifiers)
* The IDEAS.md file is not a to-do list. It's just a random file to throw ideas into when they come to mind.
* Bitwise values are used for several different aspects related to permissions. The value of -1 is **always** used as "*all flags*" for that set.
* Bitwise values are used for several different aspects, mostly related to permissions.
* Bitwise value of -1 is **always** used as "*all flags*" for that set. For admin permissions, -1 is god-tier admin level

26
TODO.md
View File

@@ -1,26 +0,0 @@
== TODO
* 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
* Fix the item take/put system for items in vehicle trunks, other items, etc
---
== Planned Features
* Named and scripted NPCs
* Racing
* Fishing
* Stock Market
* Mapped interiors for GTA 3
* Drug growing/manufacturing
---
== Bug Fixes
* Check natives for if player is console (getPlayerPosition, etc)
* Add command to copy account keybinds to other server(s)
* Add command to reset all account keybinds to default

View File

@@ -1,27 +1,27 @@
[
"English",
"French",
"Russian",
"Scottish",
"Irish",
"Spanish",
"Southern American",
"Italian",
"Australian",
"Jamaican",
"Israeli",
"Dutch",
"Brazilian",
"Portuguese",
"German",
"Canadian",
"Chinese",
"Japanese",
"Turkish",
"Korean",
"Estonian",
"Sicilian",
"Indian",
"Rough",
"Swedish"
[
"English",
"French",
"Russian",
"Scottish",
"Irish",
"Spanish",
"Southern American",
"Italian",
"Australian",
"Jamaican",
"Israeli",
"Dutch",
"Brazilian",
"Portuguese",
"German",
"Canadian",
"Chinese",
"Japanese",
"Turkish",
"Korean",
"Estonian",
"Sicilian",
"Indian",
"Rough",
"Swedish"
]

View File

@@ -1,145 +1,145 @@
[
{
"id": 0,
"englishName": "English",
"stringsFile": "english.json",
"isoCode": "en",
"flagImageFile": "uk.png",
"countries": ["gb", "us", "au", "bz", "ca", "ie", "jm", "nz", "za", "tt"],
"requiresUnicode": false,
"contributor": "Vortrex",
"enabled": true
},
{
"id": 1,
"englishName": "Russian",
"stringsFile": "russian.json",
"isoCode": "ru",
"flagImageFile": "ru.png",
"countries": ["ru", "ua"],
"requiresUnicode": false,
"contributor": "VNDTTS",
"enabled": true
},
{
"id": 2,
"englishName": "Polish",
"stringsFile": "polish.json",
"isoCode": "pl",
"flagImageFile": "pl.png",
"countries": ["pl"],
"requiresUnicode": false,
"contributor": "Suprise444",
"enabled": true
},
{
"id": 3,
"englishName": "Spanish",
"stringsFile": "spanish.json",
"isoCode": "es",
"flagImageFile": "es.png",
"countries": ["es", "ar", "bo", "cl", "co", "cr", "do", "ec", "sv", "gt", "hn", "mx", "ni", "pa", "py", "pe", "pr", "uy", "ve"],
"requiresUnicode": false,
"contributor": "PerikiyoXD",
"enabled": true
},
{
"id": 4,
"englishName": "Chinese",
"stringsFile": "chinese.json",
"isoCode": "zh",
"flagImageFile": "cn.png",
"countries": ["cn", "hk", "sg", "tw"],
"requiresUnicode": true,
"contributor": "Renzuko_Ctone",
"enabled": true
},
{
"id": 5,
"englishName": "Arabic",
"stringsFile": "arabic.json",
"isoCode": "ar",
"flagImageFile": "sa.png",
"countries": ["dz", "bh", "eg", "iq", "jo", "kw", "lb", "ly", "ma", "om", "qa", "sa", "sy", "tn", "ae", "ye"],
"requiresUnicode": true,
"contributor": "! KASIR",
"enabled": true
},
{
"id": 6,
"englishName": "Slovak",
"stringsFile": "slovak.json",
"isoCode": "sk",
"flagImageFile": "sk.png",
"countries": ["sk"],
"requiresUnicode": false,
"contributor": "UAKLAUS",
"enabled": false
},
{
"id": 7,
"englishName": "German",
"stringsFile": "german.json",
"isoCode": "de",
"flagImageFile": "de.png",
"countries": ["de", "at", "be", "ch", "li", "lu"],
"requiresUnicode": false,
"contributor": "Sladernimo",
"enabled": true
},
{
"id": 8,
"englishName": "French",
"stringsFile": "french.json",
"isoCode": "fr",
"flagImageFile": "fr.png",
"countries": ["fr", "cd", "bj", "bf", "cd", "cg", "ga", "gn", "ml", "mc", "ne", "sn"],
"requiresUnicode": false,
"contributor": "Cocam",
"enabled": false
},
{
"id": 9,
"englishName": "Japanese",
"stringsFile": "japanese.json",
"isoCode": "jp",
"flagImageFile": "jp.png",
"countries": ["jp"],
"requiresUnicode": true,
"contributor": "Cocam",
"enabled": false
},
{
"id": 10,
"englishName": "Finnish",
"stringsFile": "finnish.json",
"isoCode": "fi",
"flagImageFile": "fi.png",
"countries": ["fi"],
"requiresUnicode": false,
"contributor": "SIMBA_MEOW",
"enabled": true
},
{
"id": 11,
"englishName": "Lithuanian",
"stringsFile": "lithuanian.json",
"isoCode": "lt",
"flagImageFile": "lt.png",
"countries": ["lt"],
"requiresUnicode": false,
"contributor": "dovis",
"enabled": false
},
{
"id": 12,
"englishName": "Latvian",
"stringsFile": "latvian.json",
"isoCode": "lv",
"flagImageFile": "lv.png",
"countries": ["lv"],
"requiresUnicode": false,
"contributor": "YuOn",
"enabled": false
}
[
{
"id": 0,
"englishName": "English",
"stringsFile": "english.json",
"isoCode": "en",
"flagImageFile": "uk.png",
"countries": ["gb", "us", "au", "bz", "ca", "ie", "jm", "nz", "za", "tt"],
"requiresUnicode": false,
"contributor": "Vortrex",
"enabled": true
},
{
"id": 1,
"englishName": "Russian",
"stringsFile": "russian.json",
"isoCode": "ru",
"flagImageFile": "ru.png",
"countries": ["ru", "ua"],
"requiresUnicode": false,
"contributor": "VNDTTS",
"enabled": true
},
{
"id": 2,
"englishName": "Polish",
"stringsFile": "polish.json",
"isoCode": "pl",
"flagImageFile": "pl.png",
"countries": ["pl"],
"requiresUnicode": false,
"contributor": "Suprise444",
"enabled": true
},
{
"id": 3,
"englishName": "Spanish",
"stringsFile": "spanish.json",
"isoCode": "es",
"flagImageFile": "es.png",
"countries": ["es", "ar", "bo", "cl", "co", "cr", "do", "ec", "sv", "gt", "hn", "mx", "ni", "pa", "py", "pe", "pr", "uy", "ve"],
"requiresUnicode": false,
"contributor": "PerikiyoXD",
"enabled": true
},
{
"id": 4,
"englishName": "Chinese",
"stringsFile": "chinese.json",
"isoCode": "zh",
"flagImageFile": "cn.png",
"countries": ["cn", "hk", "sg", "tw"],
"requiresUnicode": true,
"contributor": "Renzuko_Ctone",
"enabled": true
},
{
"id": 5,
"englishName": "Arabic",
"stringsFile": "arabic.json",
"isoCode": "ar",
"flagImageFile": "sa.png",
"countries": ["dz", "bh", "eg", "iq", "jo", "kw", "lb", "ly", "ma", "om", "qa", "sa", "sy", "tn", "ae", "ye"],
"requiresUnicode": true,
"contributor": "! KASIR",
"enabled": true
},
{
"id": 6,
"englishName": "Slovak",
"stringsFile": "slovak.json",
"isoCode": "sk",
"flagImageFile": "sk.png",
"countries": ["sk"],
"requiresUnicode": false,
"contributor": "UAKLAUS",
"enabled": false
},
{
"id": 7,
"englishName": "German",
"stringsFile": "german.json",
"isoCode": "de",
"flagImageFile": "de.png",
"countries": ["de", "at", "be", "ch", "li", "lu"],
"requiresUnicode": false,
"contributor": "Sladernimo",
"enabled": true
},
{
"id": 8,
"englishName": "French",
"stringsFile": "french.json",
"isoCode": "fr",
"flagImageFile": "fr.png",
"countries": ["fr", "cd", "bj", "bf", "cd", "cg", "ga", "gn", "ml", "mc", "ne", "sn"],
"requiresUnicode": false,
"contributor": "Cocam",
"enabled": false
},
{
"id": 9,
"englishName": "Japanese",
"stringsFile": "japanese.json",
"isoCode": "jp",
"flagImageFile": "jp.png",
"countries": ["jp"],
"requiresUnicode": true,
"contributor": "Cocam",
"enabled": false
},
{
"id": 10,
"englishName": "Finnish",
"stringsFile": "finnish.json",
"isoCode": "fi",
"flagImageFile": "fi.png",
"countries": ["fi"],
"requiresUnicode": false,
"contributor": "SIMBA_MEOW",
"enabled": true
},
{
"id": 11,
"englishName": "Lithuanian",
"stringsFile": "lithuanian.json",
"isoCode": "lt",
"flagImageFile": "lt.png",
"countries": ["lt"],
"requiresUnicode": false,
"contributor": "dovis",
"enabled": false
},
{
"id": 12,
"englishName": "Latvian",
"stringsFile": "latvian.json",
"isoCode": "lv",
"flagImageFile": "lv.png",
"countries": ["lv"],
"requiresUnicode": false,
"contributor": "YuOn",
"enabled": false
}
]

8
config/database.json Normal file
View File

@@ -0,0 +1,8 @@
{
"host": "",
"user": "",
"pass": "",
"name": "",
"port": 3306,
"usePersistentConnection": false
}

View File

@@ -1,13 +1,15 @@
{
"sendChat": false,
"sendEvents": false,
"sendConnectEvents": false,
"sendVehicleEvents": false,
"sendDeathEvents": false,
"sendAdmin": false,
"webhook": {
"enabled": false,
"webhookBaseURL": "http://127.0.0.1:8090/discord.php?message={0}&server={1}&type={2}&pass={3}",
"pass": "LWb7T3ZyCam7Nzen"
}
{
"sendChat": false,
"sendEvents": false,
"sendConnectEvents": false,
"sendVehicleEvents": false,
"sendDeathEvents": false,
"sendAdmin": false,
"sendClan": false,
"sendAction": false,
"webhook": {
"enabled": false,
"webhookBaseURL": "",
"pass": ""
}
}

View File

@@ -1,13 +0,0 @@
{
"passiveIncomePerPayDay": 2000,
"applyTax": true,
"applyUpkeep": true,
"grossIncomeMultiplier": 1.0,
"incomeTaxRate": 0.7,
"currencyString": "${AMOUNT}",
"upKeepCosts": {
"upKeepPerVehicle": 250,
"upKeepPerHouse": 350,
"upKeepPerBusiness": 600
}
}

27
config/email.json Normal file
View File

@@ -0,0 +1,27 @@
{
"enabled": false,
"method": "http",
"smtp": {
"host": "",
"port": 0,
"username": "",
"password": "",
"from": "",
"fromName": "",
"useTLS": true
},
"http": {
"password": "",
"baseURL": ""
},
"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 login on {SERVERNAME} for {GAMENAME}: {2FACODE}",
"accountAuthSuccessAlert": "You or someone else has successfully logged in to your account on {SERVERNAME} for {GAMENAME}.\nIP Address: {IPADDRESS}\nLocation: {LOCATION}\nTimestamp: {TIMESTAMP}",
"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!"
}
}

View File

@@ -1,109 +1,114 @@
{
"config": {
"shortHoldDuration": 500,
"longHoldDuration": 1500,
"coolDownBetweenUse": 500
},
"defaultKeyBinds": [
{
"keyName": "k",
"commandString": "engine",
"keyState": 1
},
{
"keyName": "l",
"commandString": "lights",
"keyState": 1
},
{
"keyName": "j",
"commandString": "lock",
"keyState": 1
},
{
"keyName": "f",
"commandString": "enter",
"keyState": 1
},
{
"keyName": "g",
"commandString": "passenger",
"keyState": 1
},
{
"keyName": "m",
"commandString": "cursor",
"keyState": 1
},
{
"keyName": "o",
"commandString": "drop",
"keyState": 1
},
{
"keyName": "p",
"commandString": "pickup",
"keyState": 1
},
{
"keyName": "u",
"commandString": "use",
"keyState": 1
},
{
"keyName": "i",
"commandString": "inv",
"keyState": 1
},
{
"keyName": "0",
"commandString": "item 0",
"keyState": 1
},
{
"keyName": "1",
"commandString": "item 1",
"keyState": 1
},
{
"keyName": "2",
"commandString": "item 2",
"keyState": 1
},
{
"keyName": "3",
"commandString": "item 3",
"keyState": 1
},
{
"keyName": "4",
"commandString": "item 4",
"keyState": 1
},
{
"keyName": "5",
"commandString": "item 5",
"keyState": 1
},
{
"keyName": "6",
"commandString": "item 6",
"keyState": 1
},
{
"keyName": "7",
"commandString": "item 7",
"keyState": 1
},
{
"keyName": "8",
"commandString": "item 8",
"keyState": 1
},
{
"keyName": "9",
"commandString": "item 9",
"keyState": 1
}
]
{
"config": {
"shortHoldDuration": 500,
"longHoldDuration": 1500,
"coolDownBetweenUse": 500
},
"defaultKeyBinds": [
{
"keyName": "k",
"commandString": "engine",
"keyState": 1
},
{
"keyName": "l",
"commandString": "lights",
"keyState": 1
},
{
"keyName": "j",
"commandString": "lock",
"keyState": 1
},
{
"keyName": "f",
"commandString": "enter",
"keyState": 1
},
{
"keyName": "g",
"commandString": "passenger",
"keyState": 1
},
{
"keyName": "m",
"commandString": "cursor",
"keyState": 1
},
{
"keyName": "o",
"commandString": "drop",
"keyState": 1
},
{
"keyName": "p",
"commandString": "pickup",
"keyState": 1
},
{
"keyName": "u",
"commandString": "use",
"keyState": 1
},
{
"keyName": "i",
"commandString": "inv",
"keyState": 1
},
{
"keyName": "0",
"commandString": "item 0",
"keyState": 1
},
{
"keyName": "1",
"commandString": "item 1",
"keyState": 1
},
{
"keyName": "2",
"commandString": "item 2",
"keyState": 1
},
{
"keyName": "3",
"commandString": "item 3",
"keyState": 1
},
{
"keyName": "4",
"commandString": "item 4",
"keyState": 1
},
{
"keyName": "5",
"commandString": "item 5",
"keyState": 1
},
{
"keyName": "6",
"commandString": "item 6",
"keyState": 1
},
{
"keyName": "7",
"commandString": "item 7",
"keyState": 1
},
{
"keyName": "8",
"commandString": "item 8",
"keyState": 1
},
{
"keyName": "9",
"commandString": "item 9",
"keyState": 1
},
{
"keyName": "f5",
"commandString": "scoreboard",
"keyState": 1
}
]
}

View File

@@ -1,150 +1,150 @@
{
"apiEmail": "example@example.com",
"defaultLanguageId": 0,
"translateURL": "http://api.mymemory.translated.net/get?de={3}&q={0}&langpair={1}|{2}",
"locales": [
{
"id": 0,
"englishName": "English",
"stringsFile": "english.json",
"isoCode": "en",
"flagImageFile": "uk.png",
"countries": ["gb", "us", "au", "bz", "ca", "ie", "jm", "nz", "za", "tt"],
"requiresUnicode": false,
"contributor": "Vortrex",
"enabled": true
},
{
"id": 1,
"englishName": "Russian",
"stringsFile": "russian.json",
"isoCode": "ru",
"flagImageFile": "ru.png",
"countries": ["ru", "ua"],
"requiresUnicode": false,
"contributor": "VNDTTS",
"enabled": true
},
{
"id": 2,
"englishName": "Polish",
"stringsFile": "polish.json",
"isoCode": "pl",
"flagImageFile": "pl.png",
"countries": ["pl"],
"requiresUnicode": false,
"contributor": "Suprise444",
"enabled": true
},
{
"id": 3,
"englishName": "Spanish",
"stringsFile": "spanish.json",
"isoCode": "es",
"flagImageFile": "es.png",
"countries": ["es", "ar", "bo", "cl", "co", "cr", "do", "ec", "sv", "gt", "hn", "mx", "ni", "pa", "py", "pe", "pr", "uy", "ve"],
"requiresUnicode": false,
"contributor": "PerikiyoXD",
"enabled": true
},
{
"id": 4,
"englishName": "Chinese",
"stringsFile": "chinese.json",
"isoCode": "zh",
"flagImageFile": "cn.png",
"countries": ["cn", "hk", "sg", "tw"],
"requiresUnicode": true,
"contributor": "Renzuko_Ctone",
"enabled": true
},
{
"id": 5,
"englishName": "Arabic",
"stringsFile": "arabic.json",
"isoCode": "ar",
"flagImageFile": "sa.png",
"countries": ["dz", "bh", "eg", "iq", "jo", "kw", "lb", "ly", "ma", "om", "qa", "sa", "sy", "tn", "ae", "ye"],
"requiresUnicode": true,
"contributor": "! KASIR",
"enabled": true
},
{
"id": 6,
"englishName": "Slovak",
"stringsFile": "slovak.json",
"isoCode": "sk",
"flagImageFile": "sk.png",
"countries": ["sk"],
"requiresUnicode": false,
"contributor": "UAKLAUS",
"enabled": false
},
{
"id": 7,
"englishName": "German",
"stringsFile": "german.json",
"isoCode": "de",
"flagImageFile": "de.png",
"countries": ["de", "at", "be", "ch", "li", "lu"],
"requiresUnicode": false,
"contributor": "Sladernimo",
"enabled": true
},
{
"id": 8,
"englishName": "French",
"stringsFile": "french.json",
"isoCode": "fr",
"flagImageFile": "fr.png",
"countries": ["fr", "cd", "bj", "bf", "cd", "cg", "ga", "gn", "ml", "mc", "ne", "sn"],
"requiresUnicode": false,
"contributor": "Cocam",
"enabled": false
},
{
"id": 9,
"englishName": "Japanese",
"stringsFile": "japanese.json",
"isoCode": "jp",
"flagImageFile": "jp.png",
"countries": ["jp"],
"requiresUnicode": true,
"contributor": "Cocam",
"enabled": false
},
{
"id": 10,
"englishName": "Finnish",
"stringsFile": "finnish.json",
"isoCode": "fi",
"flagImageFile": "fi.png",
"countries": ["fi"],
"requiresUnicode": false,
"contributor": "SIMBA_MEOW",
"enabled": true
},
{
"id": 11,
"englishName": "Lithuanian",
"stringsFile": "lithuanian.json",
"isoCode": "lt",
"flagImageFile": "lt.png",
"countries": ["lt"],
"requiresUnicode": false,
"contributor": "dovis",
"enabled": false
},
{
"id": 12,
"englishName": "Latvian",
"stringsFile": "latvian.json",
"isoCode": "lv",
"flagImageFile": "lv.png",
"countries": ["lv"],
"requiresUnicode": false,
"contributor": "YuOn",
"enabled": false
}
]
{
"apiEmail": "example@example.com",
"defaultLanguageId": 0,
"translateURL": "http://api.mymemory.translated.net/get?de={3}&q={0}&langpair={1}|{2}",
"locales": [
{
"id": 0,
"englishName": "English",
"stringsFile": "english.json",
"isoCode": "en",
"flagImageFile": "uk.png",
"countries": ["gb", "us", "au", "bz", "ca", "ie", "jm", "nz", "za", "tt"],
"requiresUnicode": false,
"contributor": "Vortrex",
"enabled": true
},
{
"id": 1,
"englishName": "Russian",
"stringsFile": "russian.json",
"isoCode": "ru",
"flagImageFile": "ru.png",
"countries": ["ru", "ua"],
"requiresUnicode": false,
"contributor": "VNDTTS",
"enabled": true
},
{
"id": 2,
"englishName": "Polish",
"stringsFile": "polish.json",
"isoCode": "pl",
"flagImageFile": "pl.png",
"countries": ["pl"],
"requiresUnicode": false,
"contributor": "Suprise444",
"enabled": true
},
{
"id": 3,
"englishName": "Spanish",
"stringsFile": "spanish.json",
"isoCode": "es",
"flagImageFile": "es.png",
"countries": ["es", "ar", "bo", "cl", "co", "cr", "do", "ec", "sv", "gt", "hn", "mx", "ni", "pa", "py", "pe", "pr", "uy", "ve"],
"requiresUnicode": false,
"contributor": "PerikiyoXD",
"enabled": true
},
{
"id": 4,
"englishName": "Chinese",
"stringsFile": "chinese.json",
"isoCode": "zh",
"flagImageFile": "cn.png",
"countries": ["cn", "hk", "sg", "tw"],
"requiresUnicode": true,
"contributor": "Renzuko_Ctone",
"enabled": true
},
{
"id": 5,
"englishName": "Arabic",
"stringsFile": "arabic.json",
"isoCode": "ar",
"flagImageFile": "sa.png",
"countries": ["dz", "bh", "eg", "iq", "jo", "kw", "lb", "ly", "ma", "om", "qa", "sa", "sy", "tn", "ae", "ye"],
"requiresUnicode": true,
"contributor": "! KASIR",
"enabled": true
},
{
"id": 6,
"englishName": "Slovak",
"stringsFile": "slovak.json",
"isoCode": "sk",
"flagImageFile": "sk.png",
"countries": ["sk"],
"requiresUnicode": false,
"contributor": "UAKLAUS",
"enabled": false
},
{
"id": 7,
"englishName": "German",
"stringsFile": "german.json",
"isoCode": "de",
"flagImageFile": "de.png",
"countries": ["de", "at", "be", "ch", "li", "lu"],
"requiresUnicode": false,
"contributor": "Sladernimo",
"enabled": true
},
{
"id": 8,
"englishName": "French",
"stringsFile": "french.json",
"isoCode": "fr",
"flagImageFile": "fr.png",
"countries": ["fr", "cd", "bj", "bf", "cd", "cg", "ga", "gn", "ml", "mc", "ne", "sn"],
"requiresUnicode": false,
"contributor": "Cocam",
"enabled": false
},
{
"id": 9,
"englishName": "Japanese",
"stringsFile": "japanese.json",
"isoCode": "jp",
"flagImageFile": "jp.png",
"countries": ["jp"],
"requiresUnicode": true,
"contributor": "Cocam",
"enabled": false
},
{
"id": 10,
"englishName": "Finnish",
"stringsFile": "finnish.json",
"isoCode": "fi",
"flagImageFile": "fi.png",
"countries": ["fi"],
"requiresUnicode": false,
"contributor": "SIMBA_MEOW",
"enabled": true
},
{
"id": 11,
"englishName": "Lithuanian",
"stringsFile": "lithuanian.json",
"isoCode": "lt",
"flagImageFile": "lt.png",
"countries": ["lt"],
"requiresUnicode": false,
"contributor": "dovis",
"enabled": false
},
{
"id": 12,
"englishName": "Latvian",
"stringsFile": "latvian.json",
"isoCode": "lv",
"flagImageFile": "lv.png",
"countries": ["lv"],
"requiresUnicode": false,
"contributor": "YuOn",
"enabled": false
}
]
}

8
config/security.json Normal file
View File

@@ -0,0 +1,8 @@
{
"accountSaltHash": [
"LGj6w8SRwJEJ95XH"
],
"accountPasswordSaltAlgorithm": [
"v.roleplay.{SALTHASH}.{NAME}.{PASSWORD}"
]
}

10459
database.sql

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

194
info/COMMANDS.md Normal file
View File

@@ -0,0 +1,194 @@
## Player Commands
### Account
* /login
* /register
* /changepass
* /setemail
* /verifyemail
### Character
* /newchar /usechar /switchchar
* /autolastchar
### Settings
* /logo
* /gui
* /lang
* /notips
* /loginalert
* /scrolllines
* /chatautohide
* /chatfilter
* /chatemoji
* /chattime
### Chat
* /me
* /do
* /s
* /shout
* /talk
* /local
* /l
* /w
* /whisper
* /clanchat
* /clan
* /c
* /m
* /dm
* /reply
### Items
* /i
* /item
* /pickup
* /=--drop
* /put
* /take
* /use
* /inv
* /inventory
* /items
* /houseitems
* /bizstorage
* /bizfloor
* /buylist
* /power
* /freq
* /radio
* /r
### Vehicle
* /nearveh
* /oldveh
* /lastveh
* /oldcar
* /lastcar
* /engine
* /siren
* /lights
* /vehclan
* /vehbiz
* /vehrank
* /vehinfo
* /vehrent
* /vehrentprice
* /vehbuyprice
* /vehstoprent
* /vehbuy
* /vehcolour
* /vehlivery
* /vehrepair
* /passenger
### Business
* /bizbuy
* /bizfee
* /biztill
* /bizbalance
* /bizwithdraw
* /bizdeposit
* /buy
* /bizstock
* /bizstore
* /bizorder
* /bizitemprice
* /bizname
* /bizowner
* /bizrank
* /bizclan
* /bizbuyprice
* /bizinfo
* /bizflooritems
* /bizstorageitems
* /bizdealership
* /bizpaintball
### Clan
* /clans
* /clanchat
* /c
* /clanranks
* /clanflags
* /clanaddrank
* /clandelrank
* /clansetrank
* /clanowner
* /clantag
* /clanranktag
* /clanmembertag
* /clanrankname
* /clanranklevel
* /clanmembertitle
* /clanaddrankflag
* /clanrankflags
* /clandelrankflag
* /clanaddmemberflag
* /clandelmemberflag
### House
* /houseinfo
* /housebuy
* /houseclan
* /houseowner
* /housebuyprice
* /houserentprice
### Keybinds
* /bindkey
* /unbindkey
* /keybinds
### Misc
* /idea
* /bug
* /pos
* /enter
* /cursor
* /yes
* /no
* /help
* /suicide
* /lights
* /lock
* /admins
* /mousecam
* /cursor
* /speak
* /gps
* /stuck
### Job
* /takejob
* /startwork
* /stopwork
* /startjob
* /stopjob
* /quitjob
* /uniform
* /equip
* /department
* /d
* /fare
* /detain
* /drag
* /search
* /startroute
* /stoproute
* /jobinfo
* /joblocinfo
### Animation
* /anim
* /an
* /e
* /anims
* /animlist
* /stopanim
### Radio
* /radiostation
* /radiostations
* /radiovolume

41
info/ECONOMY.md Normal file
View File

@@ -0,0 +1,41 @@
# Economy Information
### Basic Information
Each server has it's own independent economy with simulated inflation and is designed to slowly self-repair over time, assuming nothing is affecting it too heavily.
---
### Asset Ownership
Any player or clan is allowed to own as many businesses, vehicles, and houses as they want. However, it should be noted that the more you own, the more upkeep (via taxes, insurance, etc) is required. Failure to maintain this upkeep for too long will automatically force you to lose the unmaintained assets. Vehicle owners can park their car anywhere (subject to IC parking laws), store items in the trunk or dash compartment, give anybody access, and set the price if they want to make it available to buy, and more. Business owners can stock their store with any item they want, set what prices they want for any item for sale, close/open the business, keep a stock of items in the business's storage, force people to pay a fee to enter, and more. House owners can store items in their house, purchase a safe, decorate with furniture, give anybody access, and more.
---
### Ordering Items for a Business
Ordering items is simple: just use the /bizorder command.
You'll need to specify which item you want to order and how many.
Remember, the prices will vary depending on certain circumstances.
The formula is as follows:
> Base price * server inflation * demand * risk * amount
**Here's a breakdown on how the above formula works:**
* First, each item has a base price. This value will never change.
* Next, the base price is multiplied by the server's current inflation value. When the servers were first opened, the inflation value is 100%, which means no inflation. Everything cost 100% of it's calculated price. However, the inflation will slowly increase over time, simulating realistic economy inflation.
* Next, the inflated price is then multiplied by the demand factor, which is determined by how much demand there is for the item you want. Every 10 of the item ordered increases the demand value by 10%, and this will slowly go back down over time. If another business just ordered 100 of the item you want, the demand has forced the item's order price to increase by 100%, which means it's now double the original price. This simulates the things involved with increased demand, such as the extra manufacturing and shipping needed to get this item imported to your business.
* Next, the cost is multiplied by a risk value. This value never changes, and varies depending on the item. For illegal items, the risk value will be lower for less-risky items and higher as they get worse. For example, a shotgun versus an AK-47 have different risk levels, as an AK-47 is a far deadlier and a harder to get weapon, and is more difficult to conceal through customs. This simulates the "risk" of ordering items like these. For legal items, there is no risk so the risk price won't increase for those.
* Finally, the order cost is multiplied by the amount you want to order.
**An example of this formula in action is below ... shown for an order for 10 AK-47's with no inflation**
*The demand is increased by 10% since you're ordering 10 of them. 1 = 100% of the normal cost, 1.1 = 110%, and so on.*
> Base price $1000
> x inflation 1 = $1000
> x demand 1.1 = $1100
> x risk 5 = $5500
> x amount 10 = $55000
So as you can see, the total cost to order 10 AK-47's in this scenario is $55,000. Remember, an AK-47 is a deadly and uncommon weapon (and highly illegal!) so it's a very risky and costly thing to do business with.

View File

@@ -1,8 +1,10 @@
# Ideas
---
**NOTICE: Most of these ideas are totally random and some might be unrealistic. Every time I thought of something, I just immediately threw it into this file. I never checked to see if I had already added it, so there may be duplicates or similar entries spread out and unorganized.**
---
### Businesses (some from GTA Online)
### Businesses
*Inspiration from GTA Online*
* Nightclubs
* Executive Offices
* Warehouses
@@ -11,10 +13,14 @@
* Garages
* Casinos
---
### Interactive peds with each one having a background story, characteristics, certain people or groups they like/dislike.
### Interactive peds with each one having a background story, characteristics, certain people or groups they like/dislike
*Inspiration from Skyrim and many other RPGs*
* Procedurally generated?
---
### Bouncers
*Inspiration from GTA IV clubs*
* Nightclubs, bars, etc can employ "bouncer" peds that either prevent entry to certain people, or kick people out.
---
### Background ambience.
@@ -29,53 +35,73 @@
* Relationship levels with each player and clan. If you piss them off, they won't do business with you.
---
### Firefighter Job
*Inspiration from making this for SA-MP and LU long ago*
* Vehicles catch on fire instead of blowing up.
* Random property fires can occur.
* Firetrucks can "spray" a fire, lowering the damage until it is extinguished (Aim detection).
---
### Streetsweeper Job
*Inspiration from making this for SA-MP long ago*
* Instead of checkpoints, show actual messes on the road.
* Drive over the messes with the right vehicle to "clean" the mess.
* Only show messes if at least one player is on duty.
---
### Garbageman Job
*Inspiration from making this for SA-MP long ago*
* Instead of checkpoints, have trashbag objects outside of properties or wherever.
* Allow the trashtruck drivers to "pickup" the trashbag, then "place" into the truck.
* If the truck is full, deliver the trashbags to the dump.
* Only show trashbags if at least one player is currently doing the job.
---
### Mailman Job
*Inspiration from making this for SA-MP and LU long ago*
* Use a white solid van (Pony maybe) as a mail van.
* Load mail at the post office, and drive a specific route to "deliver" mail.
* Return the truck for payment.
---
### Vehicle Towing
*Inspiration from making this for SA-MP and LU long ago*
* Use a Yankee or something to store the vehicle "inside" (just make the car disappear) until better sync options are built.
* Universal command to tow/release a vehicle ( /tow ).
* Universal command to tow/release a vehicle (/tow).
* Try attach to nearest vehicle.
---
### Item System (FINISHED)
*Inspiration from making this for SA-MP and LU long ago*
* Several item types, including armour, skins, weapons, drugs, materials, and more.
* Items can be dropped and picked up.
* Items can be stored in a vehicle trunk or dash compartment.
* Items can be given, taken, or used.
---
### Payphones
*Inspiration from making this for SA-MP and LHMP long ago*
* Make built in payphones usable (detect position, ring sound, etc)
* Payphones can be called, making them ring to nearby players.
---
### Multiple bed hospital.
*Inspiration from Star Citizen*
* When one is taken, use the next one.
* If all are full, have a waiting list.
* Allow people to go in and lay on a bed to heal (or use a check-in system)
---
### Several NPC's (NEEDS SPAWNED)
### Several NPC's
*Inspiration from singleplayer GTA*
* Paramedics/Doctors at hospitals,
* LC/VC/LS/SF/LV police dept desk clerk and dispatcher.
* Jail guard
* Interactive. Go up and talk to them for responses etc
---
### Use permissions/flag system for everything (FINISHED)
*Inspiration from a SA-MP server I helped with long ago, and making this for LU later on*
* Admin abilities
* Moderation (muted/frozen/etc)
* LEO abilities (skipped for now)
@@ -84,22 +110,32 @@
* etc
---
### Interiors (FINISHED)
*Inspiration from a SA-MP server I helped with long ago*
* For games with interiors, properties inside of properties (possibly make it a sub-property, but using a "type" to define it. May not be necessary) AKA a business inside a business (illegal back room gambling, anyone?)
---
### Stealable skins.
*Inspiration from an idea a friend pitched to me long ago, never saw the light of day*
* When one is stolen, it is replaced by the thief's skin
---
### Black market for anything.
*Inspiration from an idea a friend pitched to me long ago, never saw the light of day. Similar to previous entry*
* Smuggled drugs
* LEO items
* Weapons and weapon upgrades
* Illegal vehicle upgrades like NOS.
---
### Drug houses and weed farms.
*Inspiration from Rhytz's weed farm on GTA Online*
* Make weed only plantable in certain areas.
* Drug houses aren't limited to the type of house, as anybody can deal or use in any place.
---
### Size-based inventories.
*Inspiration from other games with inventory system*
* Items should have a size and inventories can only hold so much.
* Items inside of items. This could be (but not limited to):
* Briefcases
@@ -110,6 +146,8 @@
* Use the item sizes for storage capacity
---
### Weapons like DayZ.
*Inspiration from ... it's in the title, duh*
* Multiple weapon types that issue different damages.
* Ammo clips that only fit a compatible weapon
* Different clip types hold different amounts of ammo in them (and specific ammo types)
@@ -117,6 +155,8 @@
* Modifications. Flashlight, silencer, bigger clip, tracer, scope, etc.
---
### Crime scene investigations.
*Inspiration from an old SA-MP server I made this for long ago*
* Blood
* Fingerprints
* Ballistics/bullets on ground, in objects, walls, etc.
@@ -129,6 +169,8 @@
* Rain washes away blood outside (if not under an object or bridge). Perhaps line of sight check with high up Z at same coord?
---
### Police interiors and garages.
*Inspiration from some SA-MP server I played on long ago*
* Multiple interrogation rooms with blocked sound (chat is localized to that room)
* Multiple offices for ranking members
* Detective squad rooms with a CO office
@@ -138,6 +180,8 @@
* Elevators that can take you to multiple levels of the building (and roof/garage).
---
### Police Computer
*Inspiration from an old SA-MP server I made this for long ago*
* Arrest logs
* Past tickets
* Officer reports
@@ -145,6 +189,8 @@
* APB list
---
### Admin panel.
*Inspiration from LU admin panel by Stoku*
* Reports
* Multiple actions for each
* Viewing info and past reports/actions on the reporter and the situation.
@@ -155,14 +201,20 @@
* Others
---
### Logging
*Inspiration from needing this to solve disputes between players on an old SA-MP server long ago*
* Log everything possible
---
### Injuries
*Inspiration from some old game that dealt with this stuff, can't remember which one*
* Depending on type of injuries, have multiple results occur over time.
* Gunshots lead to bleeding which could lead to passing out for loss of blood.
* Post-treatment effects are also possible including siezures from blunt force trauma.
---
### Interactive Actions
*Inspiration from GTA Chinatown Wars and Among Us*
* Hotwiring a car could be successful or could also fail, depending on vehicle type and variance.
* The user has to go through each step in order to complete the task.
* Hotwiring could have things like splitting and joining wires to make the car start or the alarm stop.
@@ -171,16 +223,22 @@
* Different vehicles have different wires to use to be successful.
---
### Limit weapons per person.
*Inspiration from a SA-MP server I managed long ago. The scripter called them taliban weapons because he stacked AK's on his back*
* Have a visible large weapon if they have one (attached)
* Concealable smaller weapon.
* Officers usually have a utility belt. Allow it to hold equipment as well.
---
### Vehicle Trunks
*Inspiration from GTA Chinatown Wars and Among Us*
* Can hold tied up players/peds
* Can hold items
* Size/capacity depending on vehicle
---
### Vehicle Interiors
*Inspiration from an old server I wanted to make this for before but never did*
* Get "inside" the back of trucks/trailers and store items inside.
* Use an interior for this and allow dropped items (including crates and boxes and etc).
* Shouts and certain speech can be heard outside wherever the truck is at.
@@ -188,17 +246,25 @@
* Also for airplane interiors
---
### Impound Lot
*Inspiration from some SA-MP server I played on long ago*
* Multi space impound lot. When retrieving a car from impound, spawn it in the first empty space that isn't obstructed.
---
### Weapon Wear and Tear
*Inspiration from DayZ*
* Weapons obtain damage from use and time. If not cared for, they can have decreased damage from shots, or even break or malfunction
* Cleaning weapons improves reliability
---
### Weapon Identification
*Inspiration from forensics system I made for a SA-MP server long ago*
* Weapons have identifying parts like barrel bores (for ballistics) and serial numbers.
* Serial numbers can be removed.
---
### Police Behavior
*Inspiration from cops in newer GTA games and an idea to mesh that with player cops working with them*
* Stars
* 1 star for an initial misdemeanor. Traffic violation, pedestrian crime, etc. Police will pursue to fine/ticket.
* 2 stars for any subsequent crimes committed in police presence, after receiving one star and no action taken (if you don't pull over, run on foot, etc). Results in arrest.
@@ -208,9 +274,10 @@
* NPC police will chase you if you have 1+ stars. If you lose them with 2 or less stars, they go away unless you are sighted by another officer before cooldown.
* Any traffic violation that takes place within LOS and range of police will cause them to chase you until you pull over.
* Failure to pull over within a timely manner, or breaking another law before pulling over adds a second star. They won't fine you at this level, only arrest or worse.
```
Player police officers can issue an APB for a player suspect. NPC police drive and walk around as normal in the game but if they spot the player suspect within a certain distance and line of sight, their position is sent to any player police officers via radio and shown as a blip on the radar. If the suspect evades the NPC police, the blip fades out at the last seen suspect location and eventually disappears, no longer available to player police officers. This means that the blip will continue to show other officers at the suspect's updated location until a) all police officers lose line of sight, b) suspect gets too far away or c) enters a house/business (losing line of sight with police unless they enter). All of these will cause the blip to show the suspects last known and seen location while the blip fades out and eventually disappears. Any officer that re-establishes line of sight within a certain distance will cause the suspect's blip to show again for all police. NPC police will NOT use the built-in wanted level system because this causes excessive spawning of police no matter where the suspect is generally completely unfair. Instead, scripting functions like ped.runTo, vehicle.setCarMission, vehicle.setCruiseSpeed, etc will be used to pursue the suspect. The logic in these functions is not perfect. The NPC officer can wreck the police car, get slowed down by traffic or stuck on something altogether, and the ped can be evaded by continously going around corners and such. All of this provides the ability for the suspect to have a chance of getting away. Changing skin/clothes or driving different/unknown vehicles reduces the NPC's line of sight and distance checking and thus reduces their chance of identifying them when near
```
```
Player police officers can issue an APB for a player suspect. NPC police drive and walk around as normal in the game but if they spot the player suspect within a certain distance and line of sight, their position is sent to any player police officers via radio and shown as a blip on the radar. If the suspect evades the NPC police, the blip fades out at the last seen suspect location and eventually disappears, no longer available to player police officers. This means that the blip will continue to show other officers at the suspect's updated location until a) all police officers lose line of sight, b) suspect gets too far away or c) enters a house/business (losing line of sight with police unless they enter). All of these will cause the blip to show the suspects last known and seen location while the blip fades out and eventually disappears. Any officer that re-establishes line of sight within a certain distance will cause the suspect's blip to show again for all police. NPC police will NOT use the built-in wanted level system because this causes excessive spawning of police no matter where the suspect is generally completely unfair. Instead, scripting functions like ped.runTo, vehicle.setCarMission, vehicle.setCruiseSpeed, etc will be used to pursue the suspect. The logic in these functions is not perfect. The NPC officer can wreck the police car, get slowed down by traffic or stuck on something altogether, and the ped can be evaded by continously going around corners and such. All of this provides the ability for the suspect to have a chance of getting away. Changing skin/clothes or driving different/unknown vehicles reduces the NPC's line of sight and distance checking and thus reduces their chance of identifying them when near
```
---
### NPC Types
* Bodyguards
@@ -288,14 +355,16 @@
* Admin functions for each one (ban, kick, delete, set owner, etc)
* Chat log
* Lists of submitted ideas and bug reports
---
### Web API
* REST-like URLs
* Type shortened to database table prefix style (/acct, /veh, etc)
* Auth token header
---
### Newspaper GUI
* Similar to SimCity 2000 ![Image](https://images.gog-statics.com/43b6c3011fbe107e37f397110065d90e8090a15ed9d5a89b749297897881ad9f_product_card_v2_mobile_slider_639.jpg)
*Inspiration from SimCity 2000*
![Image](https://images.gog-statics.com/43b6c3011fbe107e37f397110065d90e8090a15ed9d5a89b749297897881ad9f_product_card_v2_mobile_slider_639.jpg)
---
### Tutorial Stuff
* Two sets of flags for each tutorial. One for "already finished" and "declined tutorial"
@@ -336,10 +405,19 @@
* Use pointing (finger?) animation if available
---
### Multi-command one-liners
Obviously this would still be using slashes for commands still. The way this works is simple: Every command returns a value `{RETURN}`, and provides indexed numerical references to it's args that can be *piped* to another command `{1}`, `{2}`, etc. For example, the /tempveh command adds a vehicle and provides both a reference to the vehicle itself (`{RETURN}`) and a reference to it's only argument (`{1}`). Some commands already implement a final, optional command to override the default chosen entity to act on (for example, `/bizname Some Business 3` will set business ID 3's name instead of the closest business to the player. Only works for staff with the manageBusinesses permission or if the player using it owns or is in the clan that owns business ID 3 and has the ability to set it's name. So this: `/tempveh infernus | /vehrgb 0 0 0 0 {RETURN} | /vehrgb 1 {2} {3} {4} {RETURN}` Would spawn a temporary infernus and immediately set both colours as completely black RGB values.
```
Obviously this would still be using slashes for commands still. The way this works is simple: Every command returns a value {RETURN}, and provides indexed numerical references to it's args that can be piped to another command {1}, {2}, etc. For example, the /tempveh command adds a vehicle and provides both a reference to the vehicle itself (`{RETURN}`) and a reference to it's only argument (`{1}`). Some commands already implement a final, optional command to override the default chosen entity to act on (for example, `/bizname Some Business 3` will set business ID 3's name instead of the closest business to the player. Only works for staff with the ManageBusinesses permission or if the player using it owns or is in the clan that owns business ID 3 and has the ability to set it's name.
So this:
/tempveh infernus | /vehrgb 1 0 0 0 {RETURN} | /vehrgb 2 {2} {3} {4} {RETURN}`
Would spawn a temporary infernus and immediately set both colours as completely black RGB values.
```
---
### Real time display
* Steam has the player's local time on it's overlay. Something like that. Toggleable in account settings of course.
### Real time clock display
*Inspiration from Steam in-game overlay*
---
### New items
*Street Vendors/Fairgrounds
@@ -353,7 +431,7 @@ Obviously this would still be using slashes for commands still. The way this wor
* Misc
* Gas Can
---
### Quick Reply (FINISHED)
### Quick Reply
* When somebody sends a private message, use /reply to quickly reply without having to find their ID to use the private message command
---
### Item management commands (ALMOST FINISHED)
@@ -391,9 +469,13 @@ The inventory system is already planned to use a hotbar/wheel but I don't have a
* Player would be wise to bring a bucket or crate to keep the fish in, using existing /take and /put system like any other item.
**This will need extra stuff added to keybinds system for duration key holding**
---
### GPS indicator like the 3D Fallout games
### Compass
*Inspiration from Hell Let Loose and the 3D Fallout games*
An indicator at the bottom, showing compass direction and a dot or something in the direction of the GPS location. Like an object marker.
In-world indicator too, when player gets close and is in line of sight
---
### Item/Object pickup and move like the 3D Fallout games
Fallout 3 and New Vegas have a neat feature where you can "grab" an object and fling it around while the key is pressed. Could be implemented for items in GTACRP servers
### Item/Object pickup and move
*Inspiration from the 3D Fallout games*
Fallout 3 and New Vegas have a neat feature where you can "grab" an object and fling it around while the key is pressed. Could be implemented for items in GTACRP servers

17
info/TRANSLATE.md Normal file
View File

@@ -0,0 +1,17 @@
# Translating
## Want to provide a translation?
### **Here's some info about how it works:**
* You can submit a pull request with your changes.
* There's no rush. You can translate at your own pace, and you don't need to translate it all right away. There's no errors or anything *"missing"* from an incomplete translation. Anything that you haven't been able to translated yet will show up as English.
* You can move around the {1}, {2}, etc but **please don't delete them**. The server replaces these in real-time with info from the script. These are usually commands or names of things (like vehicle or player names).
* Each line has two parts: key and text. Example: `"ActionTipsToggle": "Action tips are now {1}"`. The "ActionTipsToggle" is the key which the script uses to find the text it needs (the second part of the line) when showing it to the player. **Please do not translate the key names**
* All new strings will be added to the bottom of the file, including any that previously translated but were changed (usually for bug fix or if a server mechanic gets changed). This makes it easy to find the latest stuff that needs translated. Updated grouped translations will also be moved to the bottom, but may contain previously translated texts inside.
* The first two texts aren't translated. They just provide a reference to the name and author(s) of the translation.
* Some strings say DO NOT TRANSLATE ... these are just comment lines. JSON doesn't have a comment system so I had to resort to this method. They're usually to separate new sections when I add a bunch of strings in bulk. Most of them will have a date for when it was addded. As the name says, please don't translate these.

786
locale/arabic.json Normal file
View File

@@ -0,0 +1,786 @@
{
"TranslationProvidedBy": "Kasir",
"LocaleEnglishName": "Arabic",
"LocaleNativeName": "عربى",
"LocaleOffer": ".الخادم متاح باللغة الإنجليزية.استخدم {1} لاستخدامه",
"LocaleChanged1": "لغتك الآن على {1}",
"LocaleChanged2": "سيعرض الخادم الآن الرسائل في {1}",
"LocaleChangedNote": "هذا لا يغير الرسائل من اللاعبين الآخرين",
"AccentsListHeader": "لهجآت",
"HelpMainListHeader": "فئة الدعم",
"AccentNotFound": "اللكنة الحالية غير متوفرة",
"AccentSet": "قمت بتعيين لهجتك على {1}",
"InvalidAnimation": "هذه الرسوم المتحركة غير متوفرة",
"AnimationCommandTip": "استخدم {1} لمشاهدة قائمة الرسوم المتحركة المتاحة",
"InvalidAnimationDistance": "يجب المسافة تكون بين 0 و 3",
"AnimationStopCommandTip": "استخدم {1} لإيقاف الرسوم المتحركة",
"CantBanClient": "لا يمكنك حظر هذا الإعب",
"PlayerAccountBanned": "تم حظر حساب {1}",
"ClanNameTaken": "توجد مجموعة بهذا الاسم بالفعل",
"ClanCantRemoveRanks": "لا يمكنك إزالة رتب المجموعة",
"ClanCantAddRanks": "لأ يمكنك إضافة رتب",
"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": "({2}) يفتح الباب ويدخل {1}",
"ExitsProperty": "({2}) يفتح الباب ويخرج من {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": "قائمة الادمن",
"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": {
"North": "شمال",
"Northeast": "الشمال الشرقي",
"East": "شرق",
"Southeast": "الجنوب الشرقي",
"South": "جنوب",
"Southwest": "جنوب غرب",
"West": "غرب",
"Northwest": "الشمال الغربي"
},
"NewPlayerReadyToPlay": [
"لقد حصلت على بعض من المال. استخدم {1} للبحث عن أماكن لشراء العناصر.",
"إذا كنت بحاجة إلى المال،الوظائف هي النقاط الصفراء على الخريطة.",
"للحصول على سيارة ، قم بزيارة وكالة السيارات. يمكنك أيضًا استخدام سيارة مستأجرة بالقرب من السباون أو ركوب القطار",
"تأكد من قراءة {1} واستخدم {2} للحصول على معلومات."
],
"YourCurrentVehicleDeleted": "تم حذف السيارة التي كنت بداخلها.",
"Distance": "مسافة",
"Meters": "أمتار",
"Feet": "قدم",
"Kilometers": "كيلومترات",
"Miles": "اميال",
"MustBeVehicleDriver": "يجب أن تكون سائق السيارة!",
"PlayerJoinedServer": "انضم إلى اللعبة من {1}!",
"PlayerLeftServer": "غادر {1} اللعبة! ({2})",
"TakeItemFromHouse": "يأخذ {1} من المنزل",
"TakeItemFromBusinessStorage": "يأخذ {1} من تخزين الشركة",
"TakeItemFromBusiness": "يأخذ {1} من الأعمال",
"TakeItemFromItem": "يأخذ {1} من {2}",
"TakeItemFromVehicleTrunk": "يأخذ {1} من صندوق السيارة",
"TakeItemFromVehicleDash": "يأخذ {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} لمعرفة كيفية استخدام العناصر)",
"تقتصر بعض الأشكال على الوظائف أو المجموعات أو لأسباب أخرى."
],
"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": "ليس لديك ما يكفي من المال لشراء هذا العمل!",
"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} في مركبة عمل",
"CurrentJobRouteVehicleColoursChanged": "تم تغيير ألوان السيارة لمسار وظيفتك بواسطة الإدمن",
"NotYourJob": "هذه ليست وظيفتك!",
"JobPoints": "يمكنك الحصول على وظيفة من خلال الذهاب إلى النقاط الصفراء على الخريطة.",
"QuitJobToTakeAnother": "إذا كنت تريد هذه الوظيفة ، فاستخدم {1} لإنهاء وظيفتك الحالية.",
"NotAJobVehicle": "هذه ليست وسيلة عمل!",
"NotYourJobVehicle": "هذه ليست مركبة عملك!",
"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": "يمكنك شراء سيارة من خلال زيارة متجر سيارات. استخدم {1} لمزيد من المعلومات.",
"SkinCommandHelp": "يمكنك تغيير بشرتك من خلال زيارة متجر الملابس. استخدم {1} لمزيد من المعلومات.",
"BusinessVehiclesRespawned": "تم تجديد جميع المركبات التجارية من قبل الإدارة!",
"JobVehiclesRespawned": "تم تجديد جميع مركبات العمل من قبل الإدارة!",
"PlayerVehiclesRespawned": "تمت إعادة نشر جميع مركبات اللاعب من قبل الإدارة",
"ClanVehiclesRespawned": "تمت إعادة نشر جميع مركبات العشيرة من قبل الإدارة!",
"PublicVehiclesRespawned": "تمت إعادة نشر كل الجمهور من قبل الإدارة",
"EmptyVehiclesRespawned": "تم إعادة نشر جميع المركبات الفارغة من قبل الإدارة",
"AllVehiclesRespawned": "تم تجديد جميع المركبات من قبل الإدارة",
"AllVehiclesReloaded": "تم إعادة تحميل جميع المركبات من قبل الإدارة",
"YourVehicleRespawned": "تمت إعادة سيارتك",
"PlayerIPBanned": "تم حظر عنوان IP {1}!",
"PlayerCharacterBanned": "تم حظر شخصية {1}!",
"PlayerSubNetBanned": "تم حظر الشبكة الفرعية {1}!",
"CantModifyBusiness": "لا يمكنك إدارة أو تعديل هذا العمل",
"CantModifyHouse": "لا يمكنك إدارة أو تعديل هذا العمل",
"ServerTimeSet": "{1} اضبط الوقت على {2}",
"ServerWeatherSet": "{1} ضبط الطقس على {2}",
"ServerSnowSet": "{1} تحول الثلج المتساقط {2} وثلوجًا على سطح الأرض {3}",
"AllJobsReloaded": "تم إعادة تحميل جميع وظائف الخادم من قبل الإدمن",
"ServerLogoSet": "{1} صورة شعار الخادم {2}",
"ServerGUISet": "{1} شغّل واجهة المستخدم الرسومية لهذا الخادم {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": "مغلق",
"Open": "فتح",
"VehicleDealershipLabel": "أدخل السيارة كسائق لشرائها",
"TakeJobLabel": "استخدم {1} للعمل هنا",
"StartWorkLabel": "استخدم {1} لبدء العمل",
"JobEquipAndUniformLabel": "استخدم الوظيفة {1} و {2} ، أو {3} للتوقف عن العمل",
"NotYourJobLabel": "لديك بالفعل وظيفة مختلفة. استخدم {1} إذا كنت تريد هذا",
"JobLabel": "{1} وظيفة",
"PaydayBonusSet": "🤑 {1} اضبط مكافأة يوم الدفع على {2} دولار",
"AllHousesReloaded": "🏘️ تم إعادة تحميل جميع المنازل من قبل الإدارة",
"AllRadioStationsReloaded": "📻 تم إعادة تحميل جميع محطات الراديو من قبل الإدارة",
"PlayerKicked": "🦶 تم طرد {1} من الخادم",
"AllBusinessesReloaded": "🏢 تم إعادة تحميل جميع الأعمال من قبل الإدارة",
"UnableToDoThat": "أنت غير قادر على القيام بذلك",
"SetVehicleClanConfirmMessage": "هل أنت متأكد أنك تريد إعطاء هذه السيارة لمجموعتك",
"SetVehicleClanConfirmTitle": "تحذير!",
"SetItemPriceBelowOrderPriceMessage": "هل أنت متأكد أنك تريد تعيين سعر العنصر أسفل سعر الأمر؟ ستخسر {1} دولارًا أمريكيًا في كل عملية شراء!",
"SetItemPriceBelowOrderPriceTitle": "تحذير!",
"MustOwnVehicle": "أنت لا تملك هذه السيارة!",
"RandomTips": [
"ابحث عن النقاط الصفراء على خريطتك لمواقع العمل",
"يمكنك تعيين روابط مفاتيح مخصصة. استخدم {1} للحصول على التفاصيل",
"استخدم {1} إذا كنت لا تريد مشاهدة النصائح والمعلومات الإضافية",
"يمكنك تحرير روابط المفاتيح الخاصة بك باستخدام {1} و {2}",
"اضغط على لرؤية مخزونك ، واستخدم مفاتيح الأرقام لتحديد عنصر",
"استخدم {1} في الشركة لشراء العناصر",
"وجدت خطأ؟ الإبلاغ عن ذلك مع {1}",
"تريد شراء عمل؟ استخدم {1} بسعر واحد للبيع",
"تريد شراء عمل؟ استخدم {1} بسعر واحد للبيع",
"تريد شراء منزل؟ استخدم {1} بسعر واحد للبيع",
"تريد شراء سيارة؟ قم بزيارة أحد الوكلاء وأدخل واحدًا للحصول على معلومات حول كيفية شرائه!",
"التبديل إلى أي من الشخصيات الخاصة بك مع {1}",
"استخدم {1} لتسجيل الدخول تلقائيًا عند الاتصال بنفس عنوان IP",
"استخدم {1} لتشغيل / إطفاء الأنوار في منزلك أو عملك",
"استخدم {1} لتشغيل محطة راديو عبر الإنترنت في سيارتك أو منزلك أو عملك",
"تريد تكوين مجموعة؟ استخدم {1} للحصول على التفاصيل",
"يمكن شراء الأسلحة القانونية بأي ذخيرة"
],
"PromptResponseTip": "استخدم {1} للقبول أو {2} للرفض",
"PlayerConnecting": "👋يتم الاتصال بالخادم {1}",
"GetStartedJobVehicle": "احصل على {1} لتبدأ.",
"VehicleTypes": {
"Car": "سيارة",
"Truck": "شاحنة",
"Van": "سيارة نقل",
"Taxi": "تاكسي",
"Bus": "باص",
"PoliceCar": "سيارة شرطة",
"Ambulance": "سياره اسعاف",
"FireTruck": "سيارة إطفاء",
"Bike": "دراجة",
"Motorbike": "دراجات نارية",
"Boat": "قارب",
"Helicopter": "هليكوبتر",
"Plane": "طائرة",
"Train": "قطار"
},
"AlreadyOnJobRoute": "أنت تقوم بالفعل بطريق عمل!",
"GaveVehicleToClan": "لقد أعطيت هذا {1} لمجموعتك",
"JobDisabled": "تم تعطيل هذه الوظيفة!",
"SetHouseClanConfirmMessage": "هل أنت متأكد أنك تريد إعطاء هذا المنزل لمجموعتك?",
"SetHouseClanConfirmTitle": "تحذير!",
"SetBusinessClanConfirmMessage": "هل أنت متأكد أنك تريد إعطاء هذا العمل لمجموعتك",
"SetBusinessClanConfirmTitle": "تحذير!",
"MustOwnHouse": "أنت لا تملك هذا المنزل!",
"MustOwnBusiness": "أنت لا تملك هذا العمل!",
"GaveHouseToClan": "لقد أعطيت هذا المنزل لمجموعتك",
"GaveBusinessToClan": "لقد أعطيت هذا العمل لمجموعتك",
"BuyBusinessConfirmMessage": "هل أنت متأكد أنك تريد شراء هذا العمل؟",
"BuyBusinessConfirmTitle": "تحذير!",
"BuyHouseConfirmMessage": "هل أنت متأكد أنك تريد شراء هذا المنزل؟",
"BuyHouseConfirmTitle": "تحذير!",
"BuyBusinessLabel": "استخدم {1} لشراء هذا النشاط التجاري",
"BuyHouseLabel": "استخدم {1} لشراء هذا المنزل",
"RentHouseLabel": "استخدم {1} لاستئجار هذا المنزل",
"AccountEmailAlreadyVerified": "لقد قمت بالفعل بتعيين والتحقق من بريدك الإلكتروني!",
"EmailVerificationCodeSent": "تم إرسال رمز التحقق والتعليمات إلى بريدك الإلكتروني.",
"GUIPlayAsCharacterButton": "لعب",
"GUINewCharacterButton": "شخصية جديدة",
"GUIPreviousCharacterButton": "سابق",
"GUINextCharacterButton": "التالي",
"GUICharacterSelectWindowTitle": "حدد شخصية",
"GUICharacterSelectMoneyLabel": "المال: {1} دولار",
"GUICharacterSelectClanLabel": "المجموعة: {1}",
"GUICharacterSelectLastPlayedLabel": "آخر زيارة: قبل {1} يوم و {2} ساعة و {3} دقيقة",
"GUILoginWindowLabelEnterPassword": "من فضلك أدخل كلمة السر",
"GUILoginWindowSubmitButton": "تسجيل الدخول",
"GUILoginWindowResetPasswordButton": "إعادة ضبط",
"GUILoginWindowPasswordPlaceholder": "كلمة المرور",
"GUILoginWindowForgotPasswordLabel": "هل نسيت كلمة المرور ؟",
"GUIRegisterWindowLabelCreateAccount": "انشاء حساب",
"GUIRegisterWindowPasswordPlaceholder": "كلمة المرور",
"GUIRegisterWindowConfirmPasswordPlaceholder": "تأكيد كلمة المرور",
"GUIRegisterWindowEmailPlaceholder": "ايميل",
"GUIRegisterWindowSubmitButton": "انشاء حساب",
"GUINewCharacterMessageLabel": "قم بتسميه شخصيتك",
"GUINewCharacterFirstNamePlaceholder": "الاسم الأول",
"GUINewCharacterLastNamePlaceholder": "الكنية",
"GUINewCharacterSubmitButton": "إنشاء إختصار",
"GUIChangePasswordWindowTitle": "تغيير كلمة المرور",
"GUIChangePasswordPasswordLabel": "أدخل كلمة مرور جديدة",
"GUIChangePasswordPasswordPlaceholder": "كلمة المرور",
"GUIChangePasswordConfirmPasswordPlaceholder": "تأكيد كلمة المرور",
"GUIChangePasswordSubmitButton": "تغيير كلمة المرور",
"GUIResetPasswordWindowMessage": "إعادة تعيين كلمة المرور",
"GUIResetPasswordConfirmEmailLabel": "برجاء تأكيد بريدك الالكترونى",
"GUIResetPasswordEmailPlaceholder": "ايميل",
"GUIResetPasswordSubmitButton": "إعادة تعيين كلمة المرور",
"GUIResetPasswordLoginButton": "تسجيل",
"GUIResetPasswordRememberMessage": "حفظ كلمة المرور الخاصة بك؟",
"HeaderJobList": "وظائف",
"HeaderBusinessInfo": "معلومات العمل",
"HeaderHouseInfo": "معلومات المنزل",
"HeaderClanInfo": "معلومات المجموعة",
"Locales": {
"English": "انجلزي",
"Russian": "روسي",
"Spanish": "الإسبانية",
"German": "الإلمانية",
"Dutch": "الهولندية",
"Polish": "البولندية",
"Chinese": "الصينية",
"French": "French",
"Japanese": "Japanese",
"Slovak": "Slovak",
"Arabic": "Arabic"
},
"TwoFactorAuthSet": "⚙️لقد قمت بتشغيل المصادقة الثنائية {1}",
"AccountServerLogoSet": "⚙️ شعار الخادم",
"ChatScrollLinesNotNumber": "يجب أن يكون مبلغ البند رقمًا",
"ChatScrollLinesMustBeBetween": "يجب أن يكون مبلغ البند بين {1} و {2}",
"ChatScrollLinesSet": "سيقوم مربع الدردشة الآن بتمرير {1} سطورًا في المرة الواحدة",
"InvalidEmailVerificationCode": "رمز التحقق من البريد الإلكتروني غير صالح! تم إنشاء واحد جديد وإرساله إلى بريدك الإلكتروني.",
"EmailVerified": "تم التحقق من بريدك الالكتروني",
"EmailVerifiedTip": "يمكنك الآن استخدام بريدك الإلكتروني لإعادة تعيين كلمة المرور والمصادقة ذات العاملين وتنبيهات تسجيل الدخول",
"CommandRequiresLogin": "يجب أن تقوم بتسجيل الدخول لاستخدام الأمر {1}",
"CommandDisabled": "تم تعطيل الأمر {1}",
"CommandDisabledOnDiscord": "الأمر {1} غير متاح في الدسكورد",
"CommandNotFoundHelpTip": "الأمر {1} غير موجود! استخدم {2} للأوامر والمعلومات.",
"CommandNotFoundPossibleMatchTip": "الأمر {1} غير موجود! هل تقصد {2}؟",
"CommandNoPermissions": "ليس لديك إذن لاستخدام الأمر {1}",
"GUIResetPasswordCodeInputLabel": "تحقق من بريدك الإلكتروني للحصول على رمز",
"GUIResetPasswordCodePlaceholder": "رمز التحقق",
"GUIErrorTitle": "خطأ",
"GUIWarningTitle": "تحذير",
"GUIInfoTitle": "معلومات",
"GUIOkButton": "موافق",
"GUIErrorResetPasswordFailedInvalidEmail": "بريد إلكتروني خاطئ!",
"HeaderVehicleInfo": "معلومات السيارة",
"HeaderClanRanksList": "رتبة الكلان",
"HeaderNPCInfo": "معلومات الشخصية",
"NPCAnimationSet": "تم تحديد الشخصية {1} على {2}",
"NPCNameSet": "قمت بتعيين اسم الشخصية {1} على {2}",
"VehicleTooFar": "أنت بعيد جدًا عن السيارة!",
"HeaderPropertyTemplateTypes": "أنواع العقارات",
"MustBeLoggedInAndSpawnedToChat": "تحتاج إلى تسجيل الدخول ونشرها قبل أن تتمكن من الدردشة!",
"MutedCantChat": "تم إعطاءك ميوت ولا يمكنك الدردشة!",
"CantUseMegaphone": "يجب عليك تجهيز عنصر مكبر الصوت أو أن تكون في سيارة طوارئ!",
"HeaderAnimationHelp": "معلومات الرسوم المتحركة",
"HeaderBadgeInfo": "معلومات الشارة ({1})",
"NoItemCloseEnough": "لا يوجد عنصر قريب بما فيه الكفاية",
"CantDropJobEquipmentItem": "لا يمكنك إسقاط عناصر العمل",
"CantPutJobEquipmentItem": "لا يمكنك تخزين عناصر العمل",
"NoItemEquipped": "ليس لديك أي عنصر محدد",
"NoItemInActiveSlot": "ليس لديك عنصر في خانة العنصر النشط",
"CantPutItemInSkinChange": "لايمكنك تخزين عنصرأثناء تخصيص مظهرك",
"NothingToTakeItemFrom": "أنت لست بالقرب من أي شيء لأخذ العناصر منه",
"NoAmmoToLoadIntoWeapon": "ليس لديك أي ذخيرة لتحميلها في {1}",
"LoadAmmoIntoWeaponHelpCommand": "لتحميل هذه الذخيرة في سلاح ، جهز السلاح واكتب {1}",
"LoadAmmoIntoWeaponHelpKeyPress": "لتحميل هذه الذخيرة في سلاح ، جهز السلاح واضغط {1}",
"NobodyCloseEnoughToHandcuff": "لا أحد قريب بما يكفي لتقييد يديه",
"NobodyCloseEnoughToTie": "لا أحد قريب بما يكفي لربطه",
"PlayerNotSurrenderedHandcuff": "لا يمكن تقييد {1}! هم إما يحتاجون إلى رفع أيديهم ، أو طردهم ، أو صعقهم",
"PlayerNotSurrenderedTie": "لا يمكن تقييد {1}! هم إما يحتاجون إلى رفع أيديهم ، أو طردهم ، أو صعقهم",
"HeaderCharactersListSelf": "شخصياتك",
"HeaderCharactersListOther": "شخصيات {1}",
"CharacterSelectHelpText": "استخدم {1} لتحديد حرف ، أو {2} لإنشاء شخصية جديدة",
"ItemDoesntDoAnythingOnUse": "لا يفعل {1} أي شيء عند محاولة استخدامه.",
"ItemRadioStationTip": "استخدم {1} لتعيين محطة الراديو",
"VehicleLockedCommandTip": "🔒 تم قفل {1} هذا. استخدم {2} لفتحه",
"VehicleLockedKeyPressTip": "🔒 تم قفل {1} هذا. اضغط على {2} لفتحه",
"VehicleLockedCantUnlock": "🔒 تم قفل هذا {1} وليس لديك المفاتيح لفتحه",
"CurrentlyRentingThisVehicle": "أنت تستأجر {1} مقابل {2} في الدقيقة. استخدم {3} إذا كنت تريد التوقف عن تأجيره.",
"VehicleBelongsTo": "هذا {1} ينتمي إلى {2} ({3})",
"NotOwned": "لا يملكه",
"NotCloseEnoughToItemContainer": "أنت لست قريبًا بدرجة كافية من أي شيء يحتوي على عناصر",
"Job": "وظيفة",
"Player": "لاعب",
"BusinessIsNowPaintBall": "هذا العمل هو الآن ساحة كرات الطلاء",
"JoinedPaintBall": "لقد انضممت إلى لعبة كرات الطلاء.",
"ItemsStoredForPaintBall": "يتم تخزين العناصر الخاصة بك في الخزانة الخاصة بك وسيتم إرجاعها عندما تغادر لعبة كرات الطلاء",
"LeftPaintBall": "لقد غادرت لعبة كرات الطلاء. تم إرجاع العناصر الخاصة بك.",
"PaintBallEnded": "انتهت مباراة كرة الطلاء. تم إرجاع العناصر الخاصة بك.",
"HeaderEventWinners": "الفائزون",
"YourPaintBallResults": "لقد تلقيت {1} عمليات قتل و {2} حالة وفاة في مباراة كرات الطلاء",
"NoPrivateMessageToReply": "لم تتلق رسالة خاصة للرد عليها",
"PrivateMessageReplyCommandTip": "استخدم {1} للرد بسرعة على الرسالة الخاصة",
"WeaponDoesNotUseAmmo": "لا يستخدم {1} الذخيرة",
"ChatBoxTimestampsToggle": "لقد أدرت عرض الوقت {1} في مربع الدردشة",
"ProfanityFilterSet": "لقد قمت بإدخال عامل تصفية الألفاظ النابية في الدردشة {1}",
"ResetAllKeyBindsConfirm": "هل أنت متأكد من أنك تريد إعادة تعيين كافة روابط المفاتيح الخاصة بك إلى الوضع الافتراضي؟",
"NotRentingAVehicle": "أنت لا تستأجر سيارة!",
"StoppedRentingVehicle": "لقد توقفت عن استئجار {1}",
"VehicleEngineStartKeyPressTip": "محرك {1} متوقف. اضغط على {2} لبدء تشغيله.",
"VehicleEngineStartCommandTip": "محرك {1} متوقف. استخدم {2} لبدء تشغيله.",
"StartedRentingVehicle": "أنت الآن تستأجر {1} مقابل {2} في الدقيقة. للتوقف عن الاستئجار ، استخدم {3}",
"VehicleAlreadyRentedByOther": "هذه السيارة مستأجرة بالفعل من قبل شخص آخر",
"VehicleAlreadyRentedBySelf": "أنت تستأجر هذه السيارة بالفعل",
"JobRankTooLow": "أنت لست رتبة عالية بما يكفي!",
"InvalidKeyName": "معرف المفتاح أو الاسم الذي أدخلته غير صالح!",
"KeyBindsReset": "تمت إعادة تعيين جميع روابط المفاتيح إلى الوضع الافتراضي",
"KeyBindNameTip": "أستخدم أسماء مفاتيح أو أحرف أو ارقام.لاتضف مسافات",
"UniversalInlineExamplesList": "أمثلة: {1}",
"KeyBindRemoved": "لقد قمت بإزالة رابط المفتاح للمفتاح {1}",
"KeyBindAdded": "لقد ربطت المفتاح {1} بـ {2}",
"CopyAllKeyBindsToServerConfirm": "هل تريد بالتأكيد نسخ جميع روابط المفاتيح إلى خادم {1}؟",
"CopiedAllKeyBindsToServer": "تم نسخ جميع روابط المفاتيح الخاصة بك إلى خادم {1}",
"MustBeSpawned": "يجب أن تولد!",
"ChatEmojiSet": "لقد قمت بتشغيل الرموز التعبيرية تلقائيًا في الدردشة {1}",
"FishingLineNotCast": "خط الصيد الخاص بك لا يلقي!",
"CantFishHere": "لا يمكنك الصيد هنا! يجب أن تكون بالقرب من الماء أو على متن قارب!",
"NeedFishingRod": "عليك أن تمسك صنارة الصيد!",
"FishingCastCommandHelp": "استخدم {1} لرمي خط الصيد الخاص بك",
"FishingCastKeyBindHelp": "اضغط على {1} لإلقاء خط الصيد الخاص بك",
"Paused": "متوقف مؤقتًا",
"PaintBallAlmostWin": "{1} يحتاج فقط إلى {2} عمليات قتل أخرى للفوز بمباراة كرة الطلاء!",
"HeaderClanFlagsList": "أعلام القبيلة ({1})",
"PleaseWait": "برجاء الإنتظار ...",
"HeaderServerRulesList": "قوانين سيرفر",
"FrequencyChannelChanged": "قمت بتعيين قناة {1} في الفتحة {2} على {3}",
"ItemTurnedOnOff": "لقد أدرت {1} {2} في الفتحة {3}",
"SkinSelectHelpTextSkin": "اضغط على {1} أو {2} لتبديل السطح ، أو {3} للحفظ ، أو {4} للإلغاء",
"SkinSelectHelpTextBodyPart": "اضغط على {1} أو {2} لتبديل جزء من الجسم",
"SkinSelectBodyPartNames": {
"Head": "رأس",
"UpperBody": "الجزء العلوي من الجسم",
"LowerBody": "الجسم السفلي",
"Hair": "شعر",
"Hat": "قبعة",
"Glasses": "نظارات",
"LeftHand": "اليد اليسرى",
"RightHand": "اليد اليمنى",
"LeftWrist": "معصم اليد اليسرى",
"RightWrist": "معصم اليد اليمنى"
},
"DisconnectReasons": {
"Unknown": "غير معروف",
"LostConnection": "انقطع الإتصال",
"Disconnected": "انقطع الاتصال",
"UnsupportedClient": "عميل غير مدعوم",
"WrongGame": "تحذير اللعبة",
"IncorrectPassword": "كلمة سر خاطئة",
"UnsupportedExecutable": "قابل للتنفيذ غير معتمد",
"Kicked": "انقطع الاتصال",
"Banned": "حظر",
"Failed": "باءت بالفشل",
"InvalidName": "اسم غير صحيح",
"Crashed": "تحطم اداء",
"ModifiedGame": "لعبة معدلة",
"FailedToLogin": "كيك - فشل في تسجيل الدخول",
"NotATester": "كيك - ليس مختبرا",
"ClientScriptVerificationFail": "فشل التحقق من البرنامج النصي للعميل (الاختراقات المحتملة)",
"ServerRestarting": "يتم إعادة تشغيل الخادم",
"Desync": "منبوذ",
"FailedToCreateCharacter": "كيك - لم يخلق شخصية"
},
"DevelopersNotified": "تم إخطار المطورين بالمشكلة",
"NoJobLocationCloseEnough": "لا توجد مواقع عمل قريبة بما فيه الكفاية!",
"NotAllowedToUseJobs": "لا يسمح لك باستخدام أي وظائف!",
"CantUseThisJob": "لا يمكنك استخدام هذه الوظيفة!",
"JobChanged": "💼 لديك الآن وظيفة {1}",
"NeedToBeNearJob": "يجب أن تكون بالقرب من موقع عملك أو من سيارة تنتمي لعملك!",
"DontHaveAJob": "ليس لديك عمل!",
"StartedWorking": "💼 أنت تعمل الآن في وظيفة {1}",
"StoppedWorking": "لقد توقفت عن العمل",
"ItemsStoredForJob": "تم تخزين أغراضك الشخصية في خزانتك أثناء عملك",
"NoJobRoutesForLocation": "عملك ليس له أي طرق لهذا الموقع!",
"CurrentJobRouteDeleted": "تم حذف مسار الوظيفة الذي كنت تعمل فيه أو تعطيله من قبل الإدمن",
"YourTax": "الضريبة الخاصة بك في يوم الدفع هي: {1}. استخدم {2} لمزيد من المعلومات.",
"YourWealth": "ثروتك هي: {1}. استخدم {2} لمزيد من المعلومات.",
"InvalidKeyBindName": "Key name not found!",
"BusinessPurchased": "🏢You are now the owner of business {1}",
"HousePurchased": "🏘️ You are now the owner of house {1}",
"CopyAllKeyBindsConfirm": "Are you sure you want to copy your keybinds to the {1} server?",
"CopyAllKeyBindsOverwriteWarning": "This will replace all your keybinds on the other server",
"NoPromptAccept": "You don't have anything to accept",
"NoPromptReject": "You don't have anything to reject",
"NotOrderingAnyBusinessItems": "You aren't ordering anything for a business!",
"BusinessOrderCanceled": "You cancelled the business item order",
"DidNotCreateCharacter": "You do not have a character to play. Goodbye!",
"BusinessOrderNotEnoughMoney": "This business doesn't have enough money to order that! Deposit some using {1}",
"ADDED-12OCT2022": "DO NOT TRANSLATE. Example of line below: You ordered 50 Colt 45 for $5000!",
"BusinessOrderSuccessInfo": "You ordered {1} {2} for {4}!",
"AccountSettings": {
"UseWhiteList": "Access whitelist",
"UseBlackList": "Access blacklist",
"TwoStepAuth": "Require 2FA code on login",
"AuthAttemptAlert": "Email login notifications",
"NoGUI": "No GUI",
"AutoLoginIP": "Automatic login by IP",
"NoServerLogo": "No server logo",
"AutoSelectLastCharacter": "Automatic spawn as most recent character",
"ShowRealTimeClock": "Show real time clock",
"UseGUIForItems": "Use GUI for inventory",
"UseRadialWheelItems": "Use pie wheel for inventory (like GTA V)",
"NoKeyBinds": "No keybinds",
"NoRandomTips": "No random tips",
"NoActionTips": "No action tips",
"ChatBoxTimestamps": "Show time in chat",
"ProfanityFilter": "Profanity filter",
"ChatAutoHide": "Automatically hide inactive chatbox",
"NoPlayerContent": "No custom images (like clan logos or spray tags)",
"ChatEmoji": "Show emoji images in chat"
},
"SaveSettings": "Save Settings",
"Cancel": "Cancel",
"AlreadyOwnVehicle": "You already own this vehicle!",
"PropertyEntranceFeeLabel": "Entrance Fee: {1}",
"NeedToBeInJobVehicle": "You need to be in a job vehicle!",
"InvalidJobRank": "Job rank not found!",
"PayPhoneRecipientAnswered": "Somebody answered the call. Use normal chat to talk to them.",
"PayPhoneAnswered": "You answered the phone. Use normal chat to talk to the caller.",
"PayPhoneRecipientHangup": "The line was disconnected. You have been charged {1}",
"PayPhoneHangup": "You hung up the phone.",
"AlreadyUsingPayPhone": "You are already using a payphone!",
"NotUsingPayPhone": "You are not using a payphone!",
"NoPayPhoneCloseEnough": "There is no payphone close enough!",
"PayPhoneNotRinging": "This payphone is not ringing!",
"PayPhoneOccupied": "This payphone is already being used by someone else!",
"PayPhoneOccupantSwitched": "A different voice is now on the line",
"PayPhoneGiven": "You gave the phone to {1}",
"PayPhoneReceived": "{1} gave you the phone",
"PayPhoneUnableToCallPlayer": "You can't call {1} at this time. Please try again later.",
"ActionTips": {
"VehicleEngineOffWhenEnteringKey": "استخدم {1} لتشغيل أو إيقاف تشغيل محرك السيارة",
"VehicleLockedAfterEntryAttempt": "استخدم {1} لقفل أو إلغاء تأمين مركبة",
"ShowItemsAfterPurchase": "استخدم {1} لمشاهدة مخزونك",
"BuyCommandAfterEnterBusiness": "استخدم {1} لشراء عناصر من شركة",
"UseItemKeyAfterEquipping": "استخدم {1} لاستخدام العنصر المجهز الخاص بك",
"UseItemKeyAfterEquippingWalkieTalkie": "استخدم {1} لتشغيل الراديو أو إيقاف تشغيله",
"RadioCommandAfterEnablingWalkieTalkie": "استخدم {1} للتحدث في الراديو الخاص بك",
"ReplyToDirectMessage": "استخدم {1} للرد بسهولة على رسالة خاصة",
"UseItemKeyAmmoAfterEquippingWeapon": "استخدم {1} لتحميل ذخيرة في سلاحك المجهز",
"AnimationStop": "استخدم {1} لإيقاف الرسم المتحرك",
"JobEquipmentInventory": "معدات العمل موجودة في مخزونك. استخدم {1} لمشاهدتها.",
"ViewInventory": "استخدم {1} لمشاهدة عناصرك",
"VehicleRepairItemUsage": "قف بجانب سيارة واستخدم {1} لإصلاحها",
"VehicleColourItemUsage": "قف بجوار سيارة واستخدم {1} لتغيير لونها",
"VehiclePartItemUsage": "قف بجوار سيارة واستخدم {1} للترقية باستخدام {2}",
"AmmoClipItemUsage": "جهز السلاح واستخدم {1} لتحميل الذخيرة فيه",
"GenericItemUsage": "استخدم {1} لاستخدام {2}",
"EnterJobVehicleForRoute": "أدخل سيارة عمل قريبة لبدء مسار عمل",
"JobLocations": "قم بزيارة موقع العمل للحصول على وظيفة. استخدم {1} للعثور على موقع عمل",
"JobRouteStart": "استخدم {1} لبدء مسار عمل بهذه السيارة",
"PayPhoneFirstUse": "Use {1} to end the call, and {2} to give the phone to somebody nearby"
},
"NoBusinessesWithinRange": "There are no businesses within {1} meters",
"NoHousesWithinRange": "There are no houses within {1} meters",
"NoPayPhonesWithinRange": "There are no payphones within {1} meters",
"HeaderBusinessesInRangeList": "Businesses (within {1} meters)",
"HeaderHousesInRangeList": "Businesses (within {1} meters)",
"HeaderPayPhonesInRangeList": "Businesses (within {1} meters)",
"HeaderCommandsForStaffFlagList": "Admin Commands ({1})",
"PlayerLocateDistanceAndDirection": "{1} is {2} meters {3}",
"MustBeNumber": "You need to use a number!",
"HeaderJobRoutesList": "Job Routes ({1})",
"HeaderJobRouteInfo": "Job Route Information (${1})",
"InvalidJobRoute": "Job route not found!",
"PayPhoneDeleted": "The payphone was deleted",
"PayPhoneAnswer": "Use {1} to answer the payphone",
"ResetActionTipsConfirm": "Are you sure you want to reset all seen action tips?",
"ActionTipsReset": "All seen action tips have been reset.",
"NormalChatDisabled": "Normal chat is disabled by server admin. Use chat commands instead.",
"GlobalChatDisabled": "Global out-of-character chat is disabled by server admin"
}

784
locale/canadian-french.json Normal file
View File

@@ -0,0 +1,784 @@
{
"TranslationProvidedBy": "BlowMe-Wan Kenobi",
"LocaleEnglishName": "Canadian French",
"LocaleNativeName": "Canadian French",
"LocaleOffer": "This server is available in Canadian French. 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",
"HelpMainListHeader": "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",
"CantBanClient": "You cannot ban this person",
"PlayerAccountBanned": "{1} has been account banned",
"ClanNameTaken": "A clan with that name already exists",
"ClanCantRemoveRanks": "You can't remove clan ranks",
"ClanCantAddRanks": "You can't add clan ranks",
"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} ({2})",
"ExitsProperty": "opens the door and exits the {1} ({2})",
"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",
"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": "North",
"Northeast": "Northeast",
"East": "East",
"Southeast": "Southeast",
"South": "South",
"Southwest": "Southwest",
"West": "West",
"Northwest": "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!",
"PlayerJoined": "{1} has joined the game from {2}!",
"PlayerLeftServer": "{1} has left the game! ({2})",
"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",
"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!",
"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",
"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!",
"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": "Access Denied",
"InvalidSkin": "That skin is invalid!",
"HeaderInteriorTypes": "Interiors List",
"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!",
"RandomTips": [
"Look for yellow dots on your map for job locations",
"You can set custom key binds. Use {1} for details",
"Use {1} if you don't want to see tips and extra information",
"You can edit your keybinds using {1} and {2}",
"Press to see your inventory, and use number keys to select an item",
"Use {1} at a business to purchase items",
"Found a bug? Report it with {1}",
"Have an idea or suggestion for the server? Let the devs know using {1}",
"Want to buy a business? Use {1} at one for sale",
"Want to buy a house? Use {1} at one for sale",
"Want to buy a vehicle? Visit a dealership and enter one for info on how to buy it!",
"Switch to any of your characters with {1}",
"Use {1} to automatically login when connecting with the same IP",
"Use {1} to turn on/off the lights in your house or business",
"Use {1} to play an internet radio station in your car, house, or business",
"Want to make a clan? Use {1} for details",
"Legal weapons can be purchased at any ammunation"
],
"PromptResponseTip": "Use {1} to accept or {2} to decline",
"PlayerConnecting": "👋 {1} is connecting to the server ...",
"GetStartedJobVehicle": "Get in a {1} to get started.",
"VehicleTypes": {
"Car": "Car",
"Truck": "Truck",
"Van": "Van",
"Taxi": "Taxi",
"Bus": "Bus",
"PoliceCar": "Police Car",
"Ambulance": "Ambulance",
"FireTruck": "Fire Truck",
"Bike": "Bike",
"Motorbike": "Motorbike",
"Boat": "Boat",
"Helicopter": "Helicopter",
"Plane": "Plane",
"Train": "Train"
},
"AlreadyOnJobRoute": "You are already doing a job route! Finish the route or use {1}",
"GaveVehicleToClan": "You gave this {1} to your clan!",
"JobDisabled": "This job is disabled!",
"SetHouseClanConfirmMessage": "Are you sure you want to give this house to your clan?",
"SetHouseClanConfirmTitle": "Warning!",
"SetBusinessClanConfirmMessage": "Are you sure you want to give this business to your clan?",
"SetBusinessClanConfirmTitle": "Warning!",
"MustOwnHouse": "You don't own this house!",
"MustOwnBusiness": "You don't own this business!",
"GaveHouseToClan": "You gave this house to your clan!",
"GaveBusinessToClan": "You gave this business to your clan!",
"BuyBusinessConfirmMessage": "Are you sure you want to buy this business?",
"BuyBusinessConfirmTitle": "Attention!",
"BuyHouseConfirmMessage": "Are you sure you want to buy this house?",
"BuyHouseConfirmTitle": "Attention!",
"BuyBusinessLabel": "Use {1} to buy this business",
"BuyHouseLabel": "Use {1} to buy this house",
"RentHouseLabel": "Use {1} to rent this house",
"AccountEmailAlreadyVerified": "You already set and verified your email!",
"EmailVerificationCodeSent": "A verification code and instructions have been sent to your email.",
"GUIPlayAsCharacterButton": "Play",
"GUINewCharacterButton": "New character",
"GUIPreviousCharacterButton": "Previous",
"GUINextCharacterButton": "Next",
"GUICharacterSelectWindowTitle": "Select a character",
"GUICharacterSelectMoneyLabel": "Money: {1}",
"GUICharacterSelectClanLabel": "Clan: {1}",
"GUICharacterSelectLastPlayedLabel": "Last Played: {1} days, {2} hours, {3} minutes ago",
"GUILoginWindowLabelEnterPassword": "Please enter your password",
"GUILoginWindowSubmitButton": "Login",
"GUILoginWindowResetPasswordButton": "Reset",
"GUILoginWindowPasswordPlaceholder": "Password",
"GUILoginWindowForgotPasswordLabel": "Forgot your password?",
"GUIRegisterWindowLabelCreateAccount": "Create an account",
"GUIRegisterWindowPasswordPlaceholder": "Password",
"GUIRegisterWindowConfirmPasswordPlaceholder": "Confirm password",
"GUIRegisterWindowEmailPlaceholder": "Email",
"GUIRegisterWindowSubmitButton": "Create account",
"GUINewCharacterMessageLabel": "Name your character",
"GUINewCharacterFirstNamePlaceholder": "First Name",
"GUINewCharacterLastNamePlaceholder": "Last Name",
"GUINewCharacterSubmitButton": "Create Character",
"GUIChangePasswordWindowTitle": "Change Password",
"GUIChangePasswordPasswordLabel": "Enter a new password",
"GUIChangePasswordPasswordPlaceholder": "Password",
"GUIChangePasswordConfirmPasswordPlaceholder": "Confirm password",
"GUIChangePasswordSubmitButton": "Change Password",
"GUIResetPasswordWindowMessage": "Reset Password",
"GUIResetPasswordConfirmEmailLabel": "Please confirm your email",
"GUIResetPasswordEmailPlaceholder": "Email",
"GUIResetPasswordSubmitButton": "Reset Password",
"GUIResetPasswordLoginButton": "Login",
"GUIResetPasswordRememberMessage": "Remember your password?",
"HeaderJobList": "Jobs",
"HeaderBusinessInfo": "Business Info",
"HeaderHouseInfo": "House Info",
"HeaderClanInfo": "Clan Info",
"Locales": {
"English": "English",
"Russian": "Russian",
"Spanish": "Spanish",
"German": "German",
"Dutch": "Dutch",
"Polish": "Polish",
"Chinese": "Chinese",
"French": "French",
"Japanese": "Japanese",
"Slovak": "Slovak",
"Arabic": "Arabic"
},
"TwoFactorAuthSet": "⚙️ You have turned two factor authentication {1}",
"AccountServerLogoSet": "⚙️ You turned the server logo {1}",
"ChatScrollLinesNotNumber": "The line amount must be a number",
"ChatScrollLinesMustBeBetween": "The line amount must be between {1} and {2}",
"ChatScrollLinesSet": "The chatbox will now scroll {1} lines at a time",
"InvalidEmailVerificationCode": "Invalid email verification code! A new one has been created and sent to your email.",
"EmailVerified": "Your email has been verified",
"EmailVerifiedTip": "You can now use your email for password resets, two-factor authentication, login alerts, and more",
"CommandRequiresLogin": "You must be logged in to use the {1} command",
"CommandDisabled": "The {1} command is disabled",
"CommandDisabledOnDiscord": "The {1} command isn't available on discord",
"CommandNotFoundHelpTip": "The command {1} does not exist! Use {2} for commands and information.",
"CommandNotFoundPossibleMatchTip": "The command {1} does not exist! Did you mean {2}?",
"CommandNoPermissions": "You don't have permission to use the {1} command",
"GUIResetPasswordCodeInputLabel": "Check your email for a code",
"GUIResetPasswordCodePlaceholder": "Verification code",
"GUIErrorTitle": "Error",
"GUIWarningTitle": "Warning",
"GUIInfoTitle": "Info",
"GUIOkButton": "Ok",
"GUIErrorResetPasswordFailedInvalidEmail": "Invalid email!",
"HeaderVehicleInfo": "Vehicle Info",
"HeaderClanRanksList": "Clan Ranks ({1})",
"HeaderNPCInfo": "NPC Info",
"NPCAnimationSet": "You set NPC {1} animation to {2}",
"NPCNameSet": "You set NPC {1} name to {2}",
"VehicleTooFar": "You are too far away from the vehicle!",
"HeaderPropertyTemplateTypes": "Property Types",
"MustBeLoggedInAndSpawnedToChat": "You need to be logged in and spawned before you can chat!",
"MutedCantChat": "You are muted and can't chat!",
"CantUseMegaphone": "You must equip a megaphone item or be in an emergency vehicle!",
"HeaderAnimationHelp": "Animation Info",
"HeaderBadgeInfo": "Badge Information ({1})",
"NoItemCloseEnough": "There is no item close enough",
"CantDropJobEquipmentItem": "You can't drop job items",
"CantPutJobEquipmentItem": "You can't store job items",
"NoItemEquipped": "You don't have any item selected",
"NoItemInActiveSlot": "You don't have an item in your active item slot",
"CantPutItemInSkinChange": "You can't store an item while customizing your appearance",
"NothingToTakeItemFrom": "You aren't near anything to take items from",
"NoAmmoToLoadIntoWeapon": "You don't have any ammo to load into the {1}",
"LoadAmmoIntoWeaponHelpCommand": "To load this ammo into a weapon, equip the weapon and type {1}",
"LoadAmmoIntoWeaponHelpKeyPress": "To load this ammo into a weapon, equip the weapon and press {1}",
"NobodyCloseEnoughToHandcuff": "Nobody is close enough to handcuff",
"NobodyCloseEnoughToTie": "Nobody is close enough to tie up",
"PlayerNotSurrenderedHandcuff": "{1} can't be handcuffed! They either need to have their hands up, be knocked out, or tazed",
"PlayerNotSurrenderedTie": "{1} can't be tied! They either need to have their hands up, be knocked out, or tazed",
"HeaderCharactersListSelf": "Your Characters",
"HeaderCharactersListOther": "{1}'s Characters",
"CharacterSelectHelpText": "Use {1} to select a character, or {2} to create a new character",
"ItemDoesntDoAnythingOnUse": "The {1} doesn't do anything when you try to use it.",
"ItemRadioStationTip": "Use {1} to set the radio station",
"VehicleLockedCommandTip": "🔒 This {1} is locked. Use {2} to unlock it",
"VehicleLockedKeyPressTip": "🔒 This {1} is locked. Press {2} to unlock it",
"VehicleLockedCantUnlock": "🔒 This {1} is locked and you don't have the keys to unlock it",
"CurrentlyRentingThisVehicle": "You are renting this {1} for {2} per minute. Use {3} if you want to stop renting it.",
"VehicleBelongsTo": "This {1} belongs to {2} ({3})",
"NotOwned": "Not Owned",
"NotCloseEnoughToItemContainer": "You are not close enough to anything that holds items",
"Job": "Job",
"Player": "Player",
"BusinessIsNowPaintBall": "This business is now a paintball arena",
"JoinedPaintBall": "You have joined the paintball game.",
"ItemsStoredForPaintBall": "Your items are stored in your locker and will be returned when you leave the paintball game",
"LeftPaintBall": "You have left the paintball game. Your items have been returned.",
"PaintBallEnded": "The paintball match has ended. Your items have been returned.",
"HeaderEventWinners": "Winners",
"YourPaintBallResults": "You got {1} kills and {2} deaths in the paintball match",
"NoPrivateMessageToReply": "You haven't received a private message to reply to",
"WeaponDoesNotUseAmmo": "The {1} doesn't use ammo",
"ChatBoxTimestampsToggle": "You turned {1} time display in the chatbox",
"ProfanityFilterSet": "You turned chat profanity filter {1}",
"ResetAllKeyBindsConfirm": "Are you sure you want to reset all your keybinds to default?",
"NotRentingAVehicle": "You are not renting a vehicle!",
"StoppedRentingVehicle": "You stopped renting the {1}",
"VehicleEngineStartKeyPressTip": "The {1} engine is off. Press {2} to start it.",
"VehicleEngineStartCommandTip": "The {1} engine is off. Use {2} to start it.",
"StartedRentingVehicle": "You are now renting this {1} for {2} per minute. To stop renting, use {3}",
"VehicleAlreadyRentedByOther": "This vehicle is already rented by someone else",
"VehicleAlreadyRentedBySelf": "You are already renting this vehicle",
"JobRankTooLow": "You are not high enough rank!",
"InvalidKeyName": "The key ID or name you input is invalid!",
"KeyBindsReset": "All your keybinds have been reset to default",
"KeyBindNameTip": "Use simple key names, letters, or numbers. Don't add spaces.",
"UniversalInlineExamplesList": "Examples: {1}",
"KeyBindRemoved": "You removed the keybind for the {1} key",
"KeyBindAdded": "You binded key {1} to {2}",
"CopyAllKeyBindsToServerConfirm": "Are you sure you want to copy all your keybinds to the {1} server?",
"CopiedAllKeyBindsToServer": "All your keybinds have been copied to the {1} server",
"MustBeSpawned": "You must be spawned!",
"ChatEmojiSet": "You turned automatic emoji in chat {1}",
"FishingLineNotCast": "Your fishing line isn't cast!",
"CantFishHere": "You can't fish here! You need to be near water or on a boat!",
"NeedFishingRod": "You need to be holding a fishing rod!",
"FishingCastCommandHelp": "Use {1} to cast your fishing line",
"FishingCastKeyBindHelp": "Press {1} to cast your fishing line",
"Paused": "Paused",
"PaintBallAlmostWin": "{1} only needs {2} more kills to win the paintball match!",
"HeaderClanFlagsList": "Clan Flags ({1})",
"PleaseWait": "Please wait ...",
"HeaderServerRulesList": "Server Rules",
"FrequencyChannelChanged": "You set the channel of your {1} in slot {2} to {3}",
"ItemTurnedOn": "You turned {1} your {2} in slot {3}",
"SkinSelectHelpTextSkin": "Press {1} or {2} to switch skin, {3} to save, or {4} to cancel",
"SkinSelectHelpTextBodyPart": "Press {1} or {2} to switch body part",
"SkinSelectBodyPartNames": {
"Head": "Head",
"UpperBody": "Upper Body",
"LowerBody": "Lower Body",
"Hair": "Hair",
"Hat": "Hat",
"Glasses": "Glasses",
"LeftHand": "Left Hand",
"RightHand": "Right Hand",
"LeftWrist": "Left Wrist",
"RightWrist": "Right Wrist"
},
"DisconnectReasons": {
"Unknown": "Unknown",
"LostConnection": "Lost Connection",
"Disconnected": "Disconnected",
"UnsupportedClient": "Unsupported Client",
"WrongGame": "Wrong Game",
"IncorrectPassword": "Incorrect Password",
"UnsupportedExecutable": "Unsupported Executable",
"Kicked": "Disconnected",
"Banned": "Banned",
"Failed": "Failed",
"InvalidName": "Invalid Name",
"Crashed": "Crashed",
"ModifiedGame": "Modified Game",
"FailedToLogin": "Kicked - Failed to login",
"NotATester": "Kicked - Not a tester",
"ClientScriptVerificationFail": "Client script verification failed (possible hacks)",
"ServerRestarting": "Server is restarting",
"Desync": "Desynced",
"FailedToCreateCharacter": "Kicked - Didn't create a character"
},
"DevelopersNotified": "The developers have been notified of the problem",
"NoJobLocationCloseEnough": "There are no job locations close enough!",
"NotAllowedToUseJobs": "You are not allowed to use any jobs!",
"CantUseThisJob": "You can't use this job!",
"JobChanged": "💼 You now have the {1} job",
"NeedToBeNearJob": "You need to be near your job location or a vehicle that belongs to your job!",
"DontHaveAJob": "You don't have a job!",
"StartedWorking": "💼 You are now working for the {1} job",
"StoppedWorking": "You have stopped working",
"ItemsStoredForJob": "Your personal items have been stored in your locker while you work",
"NoJobRoutesForLocation": "Your job does not have any routes for this location!",
"CurrentJobRouteDeleted": "The job route you were on has been deleted or disabled by an admin",
"YourTax": "Your tax on payday is: {1}. Use {2} for more information.",
"YourWealth": "Your wealth is: {1}. Use {2} for more information.",
"InvalidKeyBindName": "Key name not found!",
"BusinessPurchased": "🏢You are now the owner of business {1}",
"HousePurchased": "🏘️ You are now the owner of house {1}",
"CopyAllKeyBindsConfirm": "Are you sure you want to copy your keybinds to the {1} server?",
"CopyAllKeyBindsOverwriteWarning": "This will replace all your keybinds on the other server",
"NoPromptAccept": "You don't have anything to accept",
"NoPromptReject": "You don't have anything to reject",
"NotOrderingAnyBusinessItems": "You aren't ordering anything for a business!",
"BusinessOrderCanceled": "You cancelled the business item order",
"DidNotCreateCharacter": "You do not have a character to play. Goodbye!",
"BusinessOrderNotEnoughMoney": "This business doesn't have enough money to order that! Deposit some using {1}",
"ADDED-12OCT2022": "DO NOT TRANSLATE. Example of line below: You ordered 50 Colt 45 for $5000!",
"BusinessOrderSuccessInfo": "You ordered {1} {2} for {4}!",
"AccountSettings": {
"UseWhiteList": "Access whitelist",
"UseBlackList": "Access blacklist",
"TwoStepAuth": "Require 2FA code on login",
"AuthAttemptAlert": "Email login notifications",
"NoGUI": "No GUI",
"AutoLoginIP": "Automatic login by IP",
"NoServerLogo": "No server logo",
"AutoSelectLastCharacter": "Automatic spawn as most recent character",
"ShowRealTimeClock": "Show real time clock",
"UseGUIForItems": "Use GUI for inventory",
"UseRadialWheelItems": "Use pie wheel for inventory (like GTA V)",
"NoKeyBinds": "No keybinds",
"NoRandomTips": "No random tips",
"NoActionTips": "No action tips",
"ChatBoxTimestamps": "Show time in chat",
"ProfanityFilter": "Profanity filter",
"ChatAutoHide": "Automatically hide inactive chatbox",
"NoPlayerContent": "No custom images (like clan logos or spray tags)",
"ChatEmoji": "Show emoji images in chat"
},
"SaveSettings": "Save Settings",
"Cancel": "Cancel",
"AlreadyOwnVehicle": "You already own this vehicle!",
"PropertyEntranceFeeLabel": "Entrance Fee: {1}",
"NeedToBeInJobVehicle": "You need to be in a job vehicle!",
"InvalidJobRank": "Job rank not found!",
"PayPhoneRecipientAnswered": "Somebody answered the call. Use normal chat to talk to them.",
"PayPhoneAnswered": "You answered the phone. Use normal chat to talk to the caller.",
"PayPhoneRecipientHangup": "The line was disconnected. You have been charged {1}",
"PayPhoneHangup": "You hung up the phone.",
"AlreadyUsingPayPhone": "You are already using a payphone!",
"NotUsingPayPhone": "You are not using a payphone!",
"NoPayPhoneCloseEnough": "There is no payphone close enough!",
"PayPhoneNotRinging": "This payphone is not ringing!",
"PayPhoneOccupied": "This payphone is already being used by someone else!",
"PayPhoneOccupantSwitched": "A different voice is now on the line",
"PayPhoneGiven": "You gave the phone to {1}",
"PayPhoneReceived": "{1} gave you the phone",
"PayPhoneUnableToCallPlayer": "You can't call {1} at this time. Please try again later.",
"ActionTips": {
"VehicleEngineOffWhenEnteringKey": "Use {1} to turn on or off a vehicle's engine",
"VehicleLockedAfterEntryAttempt": "Use {1} to lock or unlock a vehicle",
"ShowItemsAfterPurchase": "Use {1} to see your inventory",
"BuyCommandAfterEnterBusiness": "Use {1} to buy items from a business",
"UseItemKeyAfterEquipping": "Use {1} to use your equipped item",
"UseItemKeyAfterEquippingWalkieTalkie": "Use {1} to turn on or off your radio",
"RadioCommandAfterEnablingWalkieTalkie": "Use {1} to talk on your radio",
"ReplyToDirectMessage": "Use {1} to easily reply to a private message",
"UseItemKeyAmmoAfterEquippingWeapon": "Use {1} to load an ammo item into your equipped weapon",
"AnimationStop": "Use {1} to stop your animation",
"JobEquipmentInventory": "The job equipment is in your inventory. Use {1} to see them.",
"ViewInventory": "Use {1} to see your items",
"VehicleRepairItemUsage": "Stand next to a vehicle and use {1} to repair it",
"VehicleColourItemUsage": "Stand next to a vehicle and use {1} to change it's colour",
"VehiclePartItemUsage": "Stand next to a vehicle and use {1} to upgrade with {2}",
"AmmoClipItemUsage": "Equip the weapon and use {1} to load ammo into it",
"GenericItemUsage": "Use {1} to use the {2}",
"EnterJobVehicleForRoute": "Enter a job vehicle nearby to start a job route",
"JobLocations": "Visit a job location to get a job. Use {1} to find a job location",
"JobRouteStart": "Use {1} to start a job route with this vehicle",
"PayPhoneFirstUse": "Use {1} to end the call, and {2} to give the phone to somebody nearby"
},
"NoBusinessesWithinRange": "There are no businesses within {1} meters",
"NoHousesWithinRange": "There are no houses within {1} meters",
"NoPayPhonesWithinRange": "There are no payphones within {1} meters",
"HeaderBusinessesInRangeList": "Businesses (within {1} meters)",
"HeaderHousesInRangeList": "Businesses (within {1} meters)",
"HeaderPayPhonesInRangeList": "Businesses (within {1} meters)",
"HeaderCommandsForStaffFlagList": "Admin Commands ({1})",
"PlayerLocateDistanceAndDirection": "{1} is {2} meters {3}",
"MustBeNumber": "You need to use a number!",
"HeaderJobRoutesList": "Job Routes ({1})",
"HeaderJobRouteInfo": "Job Route Information (${1})",
"InvalidJobRoute": "Job route not found!",
"PayPhoneDeleted": "The payphone was deleted",
"PayPhoneAnswer": "Use {1} to answer the payphone",
"ResetActionTipsConfirm": "Are you sure you want to reset all seen action tips?",
"ActionTipsReset": "All seen action tips have been reset.",
"NormalChatDisabled": "Normal chat is disabled by server admin. Use chat commands instead.",
"GlobalChatDisabled": "Global out-of-character chat is disabled by server admin"
}

782
locale/chinese.json Normal file
View File

@@ -0,0 +1,782 @@
{
"TranslationProvidedBy": "Renzuka_Ctone and ARSEnic",
"LocaleEnglishName": "Simplified Chinese",
"LocaleNativeName": "简体中文",
"LocaleOffer": "本服务器有可用的中文翻译版本,使用 {1} 以启用。",
"LocaleChanged1": "语言已设定为 {1}",
"LocaleChanged2": "服务器现将以 {1} 显示所有消息。",
"LocaleChangedNote": "这将不会影响到来自其他玩家的消息",
"AccentsListHeader": "口音",
"HelpMainListHeader": "帮助类别",
"AccentNotFound": "该口音不存在",
"AccentSet": " 口音已设置为 {1}",
"InvalidAnimation": "该动作不存在",
"AnimationCommandTip": "使用 {1} 以查看可用动作列表",
"InvalidAnimationDistance": "范围必须在 0 到 3 之间",
"AnimationStopCommandTip": "使用 {1} 以停止当前动作",
"CantBanClient": "你无法封禁该玩家",
"PlayerAccountBanned": "{1} 的账户已被封禁",
"ClanNameTaken": "该帮派名称已被占用",
"ClanCantRemoveRanks": "无法清除帮派等级",
"ClanCantAddRanks": "无法增加帮派等级",
"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} ({2})",
"ExitsProperty": "开门并退出 {1} ({2})",
"EnterExitPropertyDoorLocked": "试图打开 {1} 之门,却发现已上锁。",
"PropertyNoInterior": "{1} 暂无内部场景,但你仍可以在大门图标上使用相关指令。",
"NoBusinessWithItemType": "暂无可用项目的企业",
"HeaderKeyBinds": "快捷键设置",
"HeaderAccountHelp": "账户帮助",
"HeaderVehicleHelp": "载具帮助",
"HeaderVehicleDealershipHelp": "汽车经销商帮助 ",
"HeaderJobHelp": "工作帮助",
"HeaderChatHelp": "聊天帮助",
"HeaderServerRules": "服务器规则",
"HeaderWebsiteInfo": "官网",
"HeaderDiscordInfo": "Discord",
"HeaderAnimationsList": "动作列表",
"HeaderPayAndSprayHelp": "付费喷漆帮助",
"HeaderAmmunationHelp": "弹药帮助",
"HeaderVehicleTuneupHelp": "载具改装帮助",
"HeaderBindableKeysHelp": "可绑定的按键",
"HeaderSkinHelp": "服装/皮肤帮助",
"HeaderBusinessHelp": "企业帮助",
"HeaderClanHelp": "帮派帮助",
"HeaderPlayerVehiclesList": "玩家载具 ({1})",
"HeaderPlayerBusinessesList": "玩家企业 ({1})",
"HeaderClansList": "帮派列表",
"HeaderAdminsList": "管理员列表",
"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": [
"一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月"
],
"WeekDays": [
"周日",
"周一",
"周二",
"周三",
"周四",
"周五",
"周六"
],
"CardinalDirections": {
"North": "北",
"Northeast": "东北",
"East": "东",
"Southeast": "东南",
"South": "南",
"Southwest": "西南",
"West": "西",
"Northwest": "西北"
},
"NewPlayerReadyToPlay": [
"你得到了一些现金,使用 {1} 以找到买东西的地方。",
"赚钱靠劳动,求职请前往雷达上的小黄点。",
"买车可以到汽车经销店,你也可以在出生点附近租车或者直接乘火车。",
"确保已阅读 {1},使用 {2} 以获取相关信息。"
],
"YourCurrentVehicleDeleted": "当前乘坐的车辆已被删除。",
"Distance": "距离",
"Meters": "米",
"Feet": "英尺",
"Kilometers": "公里",
"Miles": "英里",
"MustBeVehicleDriver": "你并不是主驾驶!",
"PlayerJoinedServer": "{1} 加入游戏。来自:{2}",
"PlayerLeftServer": "{1} 退出游戏! ({2})",
"TakeItemFromHouse": "从住宅处拿到 {1}",
"TakeItemFromBusinessStorage": "从企业仓库拿到 {1}",
"TakeItemFromBusiness": "从企业处拿到 {1}",
"TakeItemFromItem": "从 {2} 处拿到 {1}",
"TakeItemFromVehicleTrunk": "从后备箱中取出 {1}",
"TakeItemFromVehicleDash": "从杂物箱中取出 {1}",
"AccountHelp": [
"请不要将密码分享给任何人,且 {1} 工作人员不会询问你的密码。",
"使用 {1} 以更改密码,若遗忘密码请使用 {2} 。",
"可用设定:{1}"
],
"VehicleHelp": [
"你的私人车辆将会在离开车辆时自动保存!",
"前往汽车经销商购买新车 (使用 {1} 以获取更多信息)",
"相关指令:{1}",
"去修理厂修理、喷漆和改装你的汽车! 使用 {1} 以获取相关信息。"
],
"VehicleDealershipHelp": [
"前往汽车经销商购买新车,使用 {1} 可以找一家。",
"在经销商处进入你希望购买的车辆,对应价格将会自动显示。",
"确定车辆后使用 {1},即可开始试驾。",
"驾驶车辆离开经销商以确认购买。"
],
"JobHelp": [
"地图上的黄点为求职处,你可以在那里找工作挣大钱。",
"在求职处使用 {1} 以获得工作,不想干了就使用 {2} 跑路。",
"使用 {1} 即开始工作,你也可以在 {2} 与 {3} 中获得工作。",
"工作专用车一般都是锁着的,在其旁边使用 {1} 即可进入。",
"进入专用车时,将向你显示有关如何执行工作的信息。"
],
"ChatHelp": [
"聊天方式主要有两种:本我意识 (OOC 即 out-of-character) 和 角色意识 (IC 即 in-character)",
"在玩角色扮演的时候最好不要混用两种聊天方式,查看 {1} 以获取更多信息。",
"聊天指令:{1}",
"某些玩家有可用的简称 ({1} 用以正常交流, {2} 用以喊话等)"
],
"ServerRulesHelp": [
"不允许不切实际的行为 (powergaming),世界并不由你主宰。",
"不允许恐怖分子或恐怖主义式角色扮演。",
"请始终遵循版主和管理员的指示。",
"不建议混合式聊天 (metagaming) 你不能在 IC 中使用收到 OOC 的信息。",
"请使用英语与其他玩家进行交流,不大擅长英语的话可以试试 {1}"
],
"AnimationHelp": [
"虚拟动作可以提升你角色扮演的游戏体验。",
"使用 {1} 或 {2} + 动作名称 以做出一个动作。",
"要查看动作列表,使用 {1}"
],
"WeaponHelp": [
"前往枪店购买武器,使用 {1} 可以找一家。",
"购买武器是需要武器许可证的。",
"而武器许可证由警察局管理,在那里申请就可以办到一张。",
"武器也可以从一些企业、武器经销商和帮派那里非法购买。"
],
"SkinHelp": [
"在服装店里使用 {1} 即可买到衣服",
"当你拥有可穿戴式物品时,像其它物品一样直接装备即可。(查看 {1} 以了解如何使用物品)",
"某些服装将因工作、帮派或其它原因而受到限制。"
],
"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": "你没有足够的钱来买这家企业!",
"ADDED-21JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
"HeaderPlayerHousesList": "玩家住宅 ({1})",
"HeaderPlayerStaffFlagsList": "玩家信号旗 ({1})",
"HeaderStaffFlagsList": "信号旗",
"NonRPName": "非角色扮演名称!请选择新的名称:",
"InvalidStaffFlag": "信号旗帜不存在!",
"InvalidClanFlag": "帮派旗帜不存在!",
"InvalidLocale": "语言不存在!",
"HeaderJobUniformList": "工作制服 ({1})",
"HeaderJobEquipmentList": "工作设备 ({1})",
"InvalidJobUniform": "工作制服不存在!",
"InvalidJobEquipment": "工作设备不存在!",
"HeaderVehiclesInRangeList": "{1} 内的车辆",
"NoVehiclesWithinRange": "{1} 内无任何车辆。",
"AmountNotNumber": "请输入有效数字!",
"NeedToBeWorking": "你得去工作!在求职处或工作专用车旁使用 {1} 。",
"NeedToBeOnJobRoute": "你需要进行一个工作路线!请在工作专用车内使用 {1} 。",
"CurrentJobRouteVehicleColoursChanged": "管理员已更改你的工作路线的车辆颜色",
"NotYourJob": "这不是你的工作!",
"JobPoints": "前往地图上的黄点找到工作。",
"QuitJobToTakeAnother": "要是想干这行,先使用 {1} 离开当前工作。",
"NotAJobVehicle": "这并不是辆工作专用车!",
"NotYourJobVehicle": "这不是你工作用的车!",
"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": "内部场景列表",
"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": "关闭",
"Open": "开放",
"VehicleDealershipLabel": "驾驶一辆车以购买",
"TakeJobLabel": "使用 {1} 在此工作",
"StartWorkLabel": "使用 {1} 开始工作",
"JobEquipAndUniformLabel": "使用 {1} 与 {2} 以寻求工作用品,或使用 {3} 以停止工作",
"NotYourJobLabel": "你正进行一份与此不同的工作。若想改行,请使用 {1} ",
"JobLabel": "{1} 工作",
"PaydayBonusSet": "🤑 {1} 将结算奖金设定为 {2}",
"AllHousesReloaded": "🏘️ 所有住宅已刷新",
"AllRadioStationsReloaded": "📻 所有电台已刷新!",
"PlayerKicked": "🦶 {1} 被踢出服务器",
"AllBusinessesReloaded": "🏢 所有企业已刷新!",
"UnableToDoThat": "无法操作",
"SetVehicleClanConfirmMessage": "确定把这辆车送给你的帮派吗?",
"SetVehicleClanConfirmTitle": "警告!",
"SetItemPriceBelowOrderPriceMessage": "确定要将项目价格降到成本价以下吗?你将在每次交易中损失 {1} ",
"SetItemPriceBelowOrderPriceTitle": "警告!",
"MustOwnVehicle": "这辆车不属于你!",
"RandomTips": [
"地图上的黄点代表工作地点",
"你可以绑定自定义键位功能,使用 {1} 以了解详细信息",
"如果不想看到提示和额外信息,请使用 {1} ",
"你可以使用 {1} 与 {2} 来更改键位绑定",
"按下 显示库存,并使用数字键来选择一个项目",
"在商家使用 {1} 购买商品",
"发现错误?请使用 {1} 以报告给我们",
"对服务器有想法或建议?使用 {1} 以告诉开发人员",
"想买下一家企业?在你希望购买的企业中使用 {1} 即可",
"想买房?在你希望购买的住宅中使用 {1} 即可",
"想买车?去汽车销售店里看看吧",
"使用 {1} 以切换角色",
"使用 {1} 开启自动登录",
"在住宅或企业中使用 {1} 以控制灯光",
"使用 {1} 在你的汽车、住宅或企业中播放网络广播电台",
"想创立个帮派?使用 {1} 了解详细信息",
"你可以在任意一家武器店买到合法武器"
],
"PromptResponseTip": "使用 {1} 以接受,{2} 以拒绝",
"PlayerConnecting": "👋 {1} 正在连接至服务器",
"GetStartedJobVehicle": "进入一辆 {1} 以开始。",
"VehicleTypes": {
"Car": "汽车",
"Truck": "卡车",
"Van": "货车",
"Taxi": "出租车",
"Bus": "公交车",
"PoliceCar": "警车",
"Ambulance": "救护车",
"FireTruck": "消防车",
"Bike": "自行车",
"Motorbike": "摩托车",
"Boat": "船",
"Helicopter": "直升机",
"Plane": "飞机",
"Train": "火车"
},
"AlreadyOnJobRoute": "你正在进行工作路线!",
"GaveVehicleToClan": "已将这辆 {1} 送给你的帮派。",
"JobDisabled": "该工作暂时不可用。",
"SetHouseClanConfirmMessage": "确定要把这处住宅送给你的帮派吗?",
"SetHouseClanConfirmTitle": "警告!",
"SetBusinessClanConfirmMessage": "确定要把这家企业送给你的帮派吗?",
"SetBusinessClanConfirmTitle": "警告!",
"MustOwnHouse": "这处住宅并不属于你!",
"MustOwnBusiness": "这家企业并不属于你!",
"GaveHouseToClan": "已将这处住宅送给你的帮派!",
"GaveBusinessToClan": "已将这家企业送给你的帮派!",
"BuyBusinessConfirmMessage": "确定要买下这家企业吗?",
"BuyBusinessConfirmTitle": "注意!",
"BuyHouseConfirmMessage": "确定要买下这处住宅吗?",
"BuyHouseConfirmTitle": "注意!",
"BuyBusinessLabel": "使用 {1} 以买下这家企业",
"BuyHouseLabel": "使用 {1} 以买下这处住宅",
"RentHouseLabel": "使用 {1} 以租用这处住宅",
"AccountEmailAlreadyVerified": "成功设置并验证你的电子邮件!",
"EmailVerificationCodeSent": "验证码与相关说明已发送至你的电子邮件!",
"GUIPlayAsCharacterButton": "开始",
"GUINewCharacterButton": "新的角色",
"GUIPreviousCharacterButton": "上一个",
"GUINextCharacterButton": "下一个",
"GUICharacterSelectWindowTitle": "选择你的角色",
"GUICharacterSelectMoneyLabel": "价格:{1}",
"GUICharacterSelectClanLabel": "帮派:{1}",
"GUICharacterSelectLastPlayedLabel": "最后一次进入游戏:{1} 天, {2} 小时, {3} 分钟前",
"GUILoginWindowLabelEnterPassword": "请输入密码",
"GUILoginWindowSubmitButton": "登录",
"GUILoginWindowResetPasswordButton": "重置",
"GUILoginWindowPasswordPlaceholder": "密码",
"GUILoginWindowForgotPasswordLabel": "忘记密码?",
"GUIRegisterWindowLabelCreateAccount": "创建账户",
"GUIRegisterWindowPasswordPlaceholder": "密码",
"GUIRegisterWindowConfirmPasswordPlaceholder": "确认密码",
"GUIRegisterWindowEmailPlaceholder": "电子邮件",
"GUIRegisterWindowSubmitButton": "创建账户",
"GUINewCharacterMessageLabel": "为你的角色命名",
"GUINewCharacterFirstNamePlaceholder": "名字",
"GUINewCharacterLastNamePlaceholder": "姓氏",
"GUINewCharacterSubmitButton": "创建角色",
"GUIChangePasswordWindowTitle": "更改密码",
"GUIChangePasswordPasswordLabel": "输入新密码",
"GUIChangePasswordPasswordPlaceholder": "密码",
"GUIChangePasswordConfirmPasswordPlaceholder": "确认密码",
"GUIChangePasswordSubmitButton": "更改密码",
"GUIResetPasswordWindowMessage": "重置密码",
"GUIResetPasswordConfirmEmailLabel": "请验证你的电子邮件",
"GUIResetPasswordEmailPlaceholder": "电子邮件",
"GUIResetPasswordSubmitButton": "重置密码",
"GUIResetPasswordLoginButton": "登录",
"GUIResetPasswordRememberMessage": "还记得你的密码吗?",
"HeaderJobList": "工作",
"HeaderBusinessInfo": "企业信息",
"HeaderHouseInfo": "住宅信息",
"HeaderClanInfo": "帮派信息",
"Locales": {
"English": "英文",
"Russian": "俄文",
"Spanish": "西班牙文",
"German": "德文",
"Dutch": "荷兰文",
"Polish": "波兰文",
"Chinese": "中文",
"French": "法文",
"Japanese": "日文",
"Slovak": "斯洛伐克文",
"Arabic": "阿拉伯文"
},
"TwoFactorAuthSet": "⚙️ 你已开启双重验证 {1}",
"AccountServerLogoSet": "⚙️ 已开启服务器 LOGO {1}",
"ChatScrollLinesNotNumber": "行的值必须为整数",
"ChatScrollLinesMustBeBetween": "行的值必须在 {1} 与 {2} 之间",
"ChatScrollLinesSet": "聊天框一次滚动 {1} 行",
"InvalidEmailVerificationCode": "此验证码无效!系统已重新发送新的验证码,请注意查收。",
"EmailVerified": "电子邮件已成功验证",
"EmailVerifiedTip": "你现在可以使用你的电子邮件进行密码重置、双重验证、登录提醒等",
"CommandRequiresLogin": "登录以使用 {1} 指令",
"CommandDisabled": "{1} 指令被禁用",
"CommandDisabledOnDiscord": "{1} 指令在 Discord 上不可用",
"CommandNotFoundHelpTip": "指令 {1} 不存在!使用 {2} 了解可用指令与相关信息。",
"CommandNotFoundPossibleMatchTip": "指令 {1} 不存在!你是否要查找 {2}",
"CommandNoPermissions": "没有权限使用 {1} 指令",
"GUIResetPasswordCodeInputLabel": "验证码已发送,请注意查收",
"GUIResetPasswordCodePlaceholder": "验证码",
"GUIErrorTitle": "错误",
"GUIWarningTitle": "警告",
"GUIInfoTitle": "信息",
"GUIOkButton": "好",
"GUIErrorResetPasswordFailedInvalidEmail": "无效的电子邮件!",
"HeaderVehicleInfo": "载具信息",
"HeaderClanRanksList": "帮派排名",
"HeaderNPCInfo": "NPC 信息",
"NPCAnimationSet": "已将 NPC {1} 的动作设定为 {2}",
"NPCNameSet": "已将 NPC {1} 的名字更改为 {2}",
"VehicleTooFar": "你离那辆车太远了!",
"HeaderPropertyTemplateTypes": "资产类型",
"MustBeLoggedInAndSpawnedToChat": "发送消息前请先登录并进入游戏世界。",
"MutedCantChat": "你已被禁言。",
"CantUseMegaphone": "你没有扩音器,且不在紧急车辆中。",
"HeaderAnimationHelp": "动作信息",
"HeaderBadgeInfo": "徽章信息 ({1})",
"NoItemCloseEnough": "附近没有可用物品",
"CantDropJobEquipmentItem": "无法丢弃工作物品",
"CantPutJobEquipmentItem": "无法储存工作物品",
"NoItemEquipped": "没有选定任何物品",
"NoItemInActiveSlot": "当前物品槽中无任何物品",
"CantPutItemInSkinChange": "自定义皮肤时无法存储物品",
"NothingToTakeItemFrom": "附近没有可用物品",
"NoAmmoToLoadIntoWeapon": "没有装载进 {1} 的弹药",
"LoadAmmoIntoWeaponHelpCommand": "请先装备武器并使用 {1} 以装弹",
"LoadAmmoIntoWeaponHelpKeyPress": "请先装备武器并按下 {1} 以装弹",
"NobodyCloseEnoughToHandcuff": "无法使用手铐,请离目标近一些",
"NobodyCloseEnoughToTie": "无法绑起任何人,请离目标近一些",
"PlayerNotSurrenderedHandcuff": "不能把 {1} 铐起来!你只能让他举手投降,或直接进行暴力执政",
"PlayerNotSurrenderedTie": "不能把 {1} 绑起来!你只能让他举手投降,或直接进行暴力执政",
"HeaderCharactersListSelf": "你的角色",
"HeaderCharactersListOther": "{1} 的角色",
"CharacterSelectHelpText": "使用 {1} 以选择一个角色,或 {2} 以创建一个新角色",
"ItemDoesntDoAnythingOnUse": "你尝试使用 {1} ,但什么都没有发生。",
"ItemRadioStationTip": "使用 {1} 以设定电台",
"VehicleLockedCommandTip": "🔒 {1} 已被锁定。使用 {2} 尝试解锁",
"VehicleLockedKeyPressTip": "🔒 {1} 已被锁定。按下 {2} 尝试解锁",
"VehicleLockedCantUnlock": "🔒 {1} 已被锁定,你没有钥匙以解锁",
"CurrentlyRentingThisVehicle": "你正以每分钟 {2} 的价格租用这辆 {1},使用 {3} 以停止租用。",
"VehicleBelongsTo": "这辆 {1} 属于 {2} ({3})",
"NotOwned": "未获得",
"NotCloseEnoughToItemContainer": "旁边没有持有物品的玩家,请离目标近一些",
"Job": "工作",
"Player": "玩家",
"BusinessIsNowPaintBall": "这家企业现已成为彩弹竞技场",
"JoinedPaintBall": "你加入了彩弹竞技。",
"ItemsStoredForPaintBall": "你的物品已存放于储物柜中,在你离开彩弹竞技时将归还",
"LeftPaintBall": "已离开彩弹竞技,你的物品已归还。",
"PaintBallEnded": "彩弹竞技结束,你的物品已归还。",
"HeaderEventWinners": "获胜者",
"YourPaintBallResults": "你的彩弹竞技成绩:{1} 次击杀,{2} 次死亡",
"NoPrivateMessageToReply": "暂未收到未读私信",
"WeaponDoesNotUseAmmo": "{1} 无需装弹",
"ChatBoxTimestampsToggle": "聊天框时间显示现已 {1} ",
"ProfanityFilterSet": "过滤冒犯性词汇现已 {1}",
"ResetAllKeyBindsConfirm": "确定要恢复所有按键设置吗?",
"NotRentingAVehicle": "你没有在租车",
"StoppedRentingVehicle": "已停止租用 {1}",
"VehicleEngineStartKeyPressTip": "{1} 引擎已关闭。按下 {2} 以开启。",
"VehicleEngineStartCommandTip": "{1} 引擎已关闭。使用 {2} 以开启。",
"StartedRentingVehicle": "你正以每分钟 {2} 的价格租用这辆 {1},使用 {3} 以停止租用。",
"VehicleAlreadyRentedByOther": "这辆车正在被其他人租用",
"VehicleAlreadyRentedBySelf": "你正在租用这辆车",
"JobRankTooLow": "等级未达标!",
"InvalidKeyName": "输入的按键 ID 或名称无效!",
"KeyBindsReset": "所有按键已恢复默认设置",
"KeyBindNameTip": "使用简单的按键名称(字母或数字),且不要使用空格。",
"UniversalInlineExamplesList": "例如:{1}",
"KeyBindRemoved": "{1} 按键已被取消绑定",
"KeyBindAdded": "已将按键 {1} 绑定为 {2}",
"CopyAllKeyBindsToServerConfirm": "确定要将所有按键设置复制至 {1} 服务器吗?",
"CopiedAllKeyBindsToServer": "所有按键设置已复制至 {1} 服务器",
"MustBeSpawned": "请先复活!",
"ChatEmojiSet": "聊天自动贴表情现在 {1}",
"FishingLineNotCast": "先抛竿!",
"CantFishHere": "不能在这里钓鱼!你应在水边或者船上钓鱼。",
"NeedFishingRod": "先找根钓鱼竿!",
"FishingCastCommandHelp": "使用 {1} 以抛竿",
"FishingCastKeyBindHelp": "按下 {1} 以抛竿",
"Paused": "已暂停",
"PaintBallAlmostWin": "{1} 仅剩 {2} 次击杀即可赢得彩弹比赛!",
"HeaderClanFlagsList": "Clan Flags ({1})",
"PleaseWait": "Please wait ...",
"HeaderServerRulesList": "Server Rules",
"FrequencyChannelChanged": "You set the channel of your {1} in slot {2} to {3}",
"ItemTurnedOnOff": "You turned {1} your {2} in slot {3}",
"SkinSelectHelpTextSkin": "Press {1} or {2} to switch skin, {3} to save, or {4} to cancel",
"SkinSelectHelpTextBodyPart": "Press {1} or {2} to switch body part",
"SkinSelectBodyPartNames": {
"Head": "Head",
"UpperBody": "Upper Body",
"LowerBody": "Lower Body",
"Hair": "Hair",
"Hat": "Hat",
"Glasses": "Glasses",
"LeftHand": "Left Hand",
"RightHand": "Right Hand",
"LeftWrist": "Left Wrist",
"RightWrist": "Right Wrist"
},
"DisconnectReasons": {
"Unknown": "Unknown",
"LostConnection": "Lost Connection",
"Disconnected": "Disconnected",
"UnsupportedClient": "Unsupported Client",
"WrongGame": "Wrong Game",
"IncorrectPassword": "Incorrect Password",
"UnsupportedExecutable": "Unsupported Executable",
"Kicked": "Disconnected",
"Banned": "Banned",
"Failed": "Failed",
"InvalidName": "Invalid Name",
"Crashed": "Crashed",
"ModifiedGame": "Modified Game",
"FailedToLogin": "Kicked - Failed to login",
"NotATester": "Kicked - Not a tester",
"ClientScriptVerificationFail": "Client script verification failed (possible hacks)",
"ServerRestarting": "Server is restarting",
"Desync": "Desynced",
"FailedToCreateCharacter": "Kicked - Didn't create a character"
},
"DevelopersNotified": "The developers have been notified of the problem",
"NoJobLocationCloseEnough": "There are no job locations close enough!",
"NotAllowedToUseJobs": "You are not allowed to use any jobs!",
"CantUseThisJob": "You can't use this job!",
"JobChanged": "💼 You now have the {1} job",
"NeedToBeNearJob": "You need to be near your job location or a vehicle that belongs to your job!",
"DontHaveAJob": "You don't have a job!",
"StartedWorking": "💼 You are now working for the {1} job",
"StoppedWorking": "You have stopped working",
"ItemsStoredForJob": "Your personal items have been stored in your locker while you work",
"NoJobRoutesForLocation": "Your job does not have any routes for this location!",
"CurrentJobRouteDeleted": "The job route you were on has been deleted or disabled by an admin",
"YourTax": "Your tax on payday is: {1}. Use {2} for more information.",
"YourWealth": "Your wealth is: {1}. Use {2} for more information.",
"InvalidKeyBindName": "Key name not found!",
"BusinessPurchased": "🏢You are now the owner of business {1}",
"HousePurchased": "🏘️ You are now the owner of house {1}",
"CopyAllKeyBindsConfirm": "Are you sure you want to copy your keybinds to the {1} server?",
"CopyAllKeyBindsOverwriteWarning": "This will replace all your keybinds on the other server",
"NoPromptAccept": "You don't have anything to accept",
"NoPromptReject": "You don't have anything to reject",
"NotOrderingAnyBusinessItems": "You aren't ordering anything for a business!",
"BusinessOrderCanceled": "You cancelled the business item order",
"DidNotCreateCharacter": "You do not have a character to play. Goodbye!",
"BusinessOrderNotEnoughMoney": "This business doesn't have enough money to order that! Deposit some using {1}",
"ADDED-12OCT2022": "DO NOT TRANSLATE. Example of line below: You ordered 50 Colt 45 for $5000!",
"BusinessOrderSuccessInfo": "You ordered {1} {2} for {4}!",
"AccountSettings": {
"UseWhiteList": "Access whitelist",
"UseBlackList": "Access blacklist",
"TwoStepAuth": "Require 2FA code on login",
"AuthAttemptAlert": "Email login notifications",
"NoGUI": "No GUI",
"AutoLoginIP": "Automatic login by IP",
"NoServerLogo": "No server logo",
"AutoSelectLastCharacter": "Automatic spawn as most recent character",
"ShowRealTimeClock": "Show real time clock",
"UseGUIForItems": "Use GUI for inventory",
"UseRadialWheelItems": "Use pie wheel for inventory (like GTA V)",
"NoKeyBinds": "No keybinds",
"NoRandomTips": "No random tips",
"NoActionTips": "No action tips",
"ChatBoxTimestamps": "Show time in chat",
"ProfanityFilter": "Profanity filter",
"ChatAutoHide": "Automatically hide inactive chatbox",
"NoPlayerContent": "No custom images (like clan logos or spray tags)",
"ChatEmoji": "Show emoji images in chat"
},
"SaveSettings": "Save Settings",
"Cancel": "Cancel",
"AlreadyOwnVehicle": "You already own this vehicle!",
"PropertyEntranceFeeLabel": "Entrance Fee: {1}",
"NeedToBeInJobVehicle": "You need to be in a job vehicle!",
"InvalidJobRank": "Job rank not found!",
"PayPhoneRecipientAnswered": "Somebody answered the call. Use normal chat to talk to them.",
"PayPhoneAnswered": "You answered the phone. Use normal chat to talk to the caller.",
"PayPhoneRecipientHangup": "The line was disconnected. You have been charged {1}",
"PayPhoneHangup": "You hung up the phone.",
"AlreadyUsingPayPhone": "You are already using a payphone!",
"NotUsingPayPhone": "You are not using a payphone!",
"NoPayPhoneCloseEnough": "There is no payphone close enough!",
"PayPhoneNotRinging": "This payphone is not ringing!",
"PayPhoneOccupied": "This payphone is already being used by someone else!",
"PayPhoneOccupantSwitched": "A different voice is now on the line",
"PayPhoneGiven": "You gave the phone to {1}",
"PayPhoneReceived": "{1} gave you the phone",
"PayPhoneUnableToCallPlayer": "You can't call {1} at this time. Please try again later.",
"ActionTips": {
"VehicleEngineOffWhenEnteringKey": "Use {1} to turn on or off a vehicle's engine",
"VehicleLockedAfterEntryAttempt": "Use {1} to lock or unlock a vehicle",
"ShowItemsAfterPurchase": "Use {1} to see your inventory",
"BuyCommandAfterEnterBusiness": "Use {1} to buy items from a business",
"UseItemKeyAfterEquipping": "Use {1} to use your equipped item",
"UseItemKeyAfterEquippingWalkieTalkie": "Use {1} to turn on or off your radio",
"RadioCommandAfterEnablingWalkieTalkie": "Use {1} to talk on your radio",
"ReplyToDirectMessage": "Use {1} to easily reply to a private message",
"UseItemKeyAmmoAfterEquippingWeapon": "Use {1} to load an ammo item into your equipped weapon",
"AnimationStop": "Use {1} to stop your animation",
"JobEquipmentInventory": "The job equipment is in your inventory. Use {1} to see them.",
"ViewInventory": "Use {1} to see your items",
"VehicleRepairItemUsage": "Stand next to a vehicle and use {1} to repair it",
"VehicleColourItemUsage": "Stand next to a vehicle and use {1} to change it's colour",
"VehiclePartItemUsage": "Stand next to a vehicle and use {1} to upgrade with {2}",
"AmmoClipItemUsage": "Equip the weapon and use {1} to load ammo into it",
"GenericItemUsage": "Use {1} to use the {2}",
"EnterJobVehicleForRoute": "Enter a job vehicle nearby to start a job route",
"JobLocations": "Visit a job location to get a job. Use {1} to find a job location",
"JobRouteStart": "Use {1} to start a job route with this vehicle",
"PayPhoneFirstUse": "Use {1} to end the call, and {2} to give the phone to somebody nearby"
},
"NoBusinessesWithinRange": "There are no businesses within {1} meters",
"NoHousesWithinRange": "There are no houses within {1} meters",
"NoPayPhonesWithinRange": "There are no payphones within {1} meters",
"HeaderBusinessesInRangeList": "Businesses (within {1} meters)",
"HeaderHousesInRangeList": "Businesses (within {1} meters)",
"HeaderPayPhonesInRangeList": "Businesses (within {1} meters)",
"HeaderCommandsForStaffFlagList": "Admin Commands ({1})",
"PlayerLocateDistanceAndDirection": "{1} is {2} meters {3}",
"MustBeNumber": "You need to use a number!",
"HeaderJobRoutesList": "Job Routes ({1})",
"HeaderJobRouteInfo": "Job Route Information (${1})",
"InvalidJobRoute": "Job route not found!",
"PayPhoneDeleted": "The payphone was deleted",
"PayPhoneAnswer": "Use {1} to answer the payphone",
"ResetActionTipsConfirm": "Are you sure you want to reset all seen action tips?",
"ActionTipsReset": "All seen action tips have been reset.",
"NormalChatDisabled": "Normal chat is disabled by server admin. Use chat commands instead.",
"GlobalChatDisabled": "Global out-of-character chat is disabled by server admin"
}

793
locale/english.json Normal file
View File

@@ -0,0 +1,793 @@
{
"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}",
"LocaleChanged2": "The server will now display messages in {1}",
"LocaleChangedNote": "This does not change messages from other players",
"AccentsListHeader": "Accents",
"HelpMainListHeader": "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",
"CantBanClient": "You cannot ban this person",
"PlayerAccountBanned": "{1} has been account banned",
"ClanNameTaken": "A clan with that name already exists",
"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} ({2})",
"ExitsProperty": "opens the door and exits the {1} ({2})",
"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",
"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": "North",
"Northeast": "Northeast",
"East": "East",
"Southeast": "Southeast",
"South": "South",
"Southwest": "Southwest",
"West": "West",
"Northwest": "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!",
"PlayerJoined": "{1} has joined the game from {2}!",
"PlayerLeftServer": "{1} has left the game! ({2})",
"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",
"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!",
"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",
"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!",
"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": "Access Denied",
"InvalidSkin": "That skin is invalid!",
"HeaderInteriorTypes": "Interiors List",
"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!",
"RandomTips": [
"Look for yellow dots on your map for job locations",
"You can set custom key binds. Use {1} for details",
"Use {1} if you don't want to see tips and extra information",
"You can edit your keybinds using {1} and {2}",
"Press to see your inventory, and use number keys to select an item",
"Use {1} at a business to purchase items",
"Found a bug? Report it with {1}",
"Have an idea or suggestion for the server? Let the devs know using {1}",
"Want to buy a business? Use {1} at one for sale",
"Want to buy a house? Use {1} at one for sale",
"Want to buy a vehicle? Visit a dealership and enter one for info on how to buy it!",
"Switch to any of your characters with {1}",
"Use {1} to automatically login when connecting with the same IP",
"Use {1} to turn on/off the lights in your house or business",
"Use {1} to play an internet radio station in your car, house, or business",
"Want to make a clan? Use {1} for details",
"Legal weapons can be purchased at any ammunation"
],
"PromptResponseTip": "Use {1} to accept or {2} to decline",
"PlayerConnecting": "👋 {1} is connecting to the server ...",
"GetStartedJobVehicle": "Get in a {1} to get started.",
"VehicleTypes": {
"Car": "Car",
"Truck": "Truck",
"Van": "Van",
"Taxi": "Taxi",
"Bus": "Bus",
"PoliceCar": "Police Car",
"Ambulance": "Ambulance",
"FireTruck": "Fire Truck",
"Bike": "Bike",
"Motorbike": "Motorbike",
"Boat": "Boat",
"Helicopter": "Helicopter",
"Plane": "Plane",
"Train": "Train"
},
"AlreadyOnJobRoute": "You are already doing a job route! Finish the route or use {1}",
"GaveVehicleToClan": "You gave this {1} to your clan!",
"JobDisabled": "This job is disabled!",
"SetHouseClanConfirmMessage": "Are you sure you want to give this house to your clan?",
"SetHouseClanConfirmTitle": "Warning!",
"SetBusinessClanConfirmMessage": "Are you sure you want to give this business to your clan?",
"SetBusinessClanConfirmTitle": "Warning!",
"MustOwnHouse": "You don't own this house!",
"MustOwnBusiness": "You don't own this business!",
"GaveHouseToClan": "You gave this house to your clan!",
"GaveBusinessToClan": "You gave this business to your clan!",
"BuyBusinessConfirmMessage": "Are you sure you want to buy this business?",
"BuyBusinessConfirmTitle": "Attention!",
"BuyHouseConfirmMessage": "Are you sure you want to buy this house?",
"BuyHouseConfirmTitle": "Attention!",
"BuyBusinessLabel": "Use {1} to buy this business",
"BuyHouseLabel": "Use {1} to buy this house",
"RentHouseLabel": "Use {1} to rent this house",
"AccountEmailAlreadyVerified": "You already set and verified your email!",
"EmailVerificationCodeSent": "A verification code and instructions have been sent to your email.",
"GUIPlayAsCharacterButton": "Play",
"GUINewCharacterButton": "New character",
"GUIPreviousCharacterButton": "Previous",
"GUINextCharacterButton": "Next",
"GUICharacterSelectWindowTitle": "Select a character",
"GUICharacterSelectMoneyLabel": "Money: {1}",
"GUICharacterSelectClanLabel": "Clan: {1}",
"GUICharacterSelectLastPlayedLabel": "Last Played: {1} days, {2} hours, {3} minutes ago",
"GUILoginWindowLabelEnterPassword": "Please enter your password",
"GUILoginWindowSubmitButton": "Login",
"GUILoginWindowResetPasswordButton": "Reset",
"GUILoginWindowPasswordPlaceholder": "Password",
"GUILoginWindowForgotPasswordLabel": "Forgot your password?",
"GUIRegisterWindowLabelCreateAccount": "Create an account",
"GUIRegisterWindowPasswordPlaceholder": "Password",
"GUIRegisterWindowConfirmPasswordPlaceholder": "Confirm password",
"GUIRegisterWindowEmailPlaceholder": "Email",
"GUIRegisterWindowSubmitButton": "Create account",
"GUINewCharacterMessageLabel": "Name your character",
"GUINewCharacterFirstNamePlaceholder": "First Name",
"GUINewCharacterLastNamePlaceholder": "Last Name",
"GUINewCharacterSubmitButton": "Create Character",
"GUIChangePasswordWindowTitle": "Change Password",
"GUIChangePasswordPasswordLabel": "Enter a new password",
"GUIChangePasswordPasswordPlaceholder": "Password",
"GUIChangePasswordConfirmPasswordPlaceholder": "Confirm password",
"GUIChangePasswordSubmitButton": "Change Password",
"GUIResetPasswordWindowMessage": "Reset Password",
"GUIResetPasswordConfirmEmailLabel": "Please confirm your email",
"GUIResetPasswordEmailPlaceholder": "Email",
"GUIResetPasswordSubmitButton": "Reset Password",
"GUIResetPasswordLoginButton": "Login",
"GUIResetPasswordRememberMessage": "Remember your password?",
"HeaderJobList": "Jobs",
"HeaderBusinessInfo": "Business Info",
"HeaderHouseInfo": "House Info",
"HeaderClanInfo": "Clan Info",
"Locales": {
"English": "English",
"Russian": "Russian",
"Spanish": "Spanish",
"German": "German",
"Dutch": "Dutch",
"Polish": "Polish",
"Chinese": "Chinese",
"French": "French",
"Japanese": "Japanese",
"Slovak": "Slovak",
"Arabic": "Arabic"
},
"TwoFactorAuthSet": "⚙️ You have turned two factor authentication {1}",
"AccountServerLogoSet": "⚙️ You turned the server logo {1}",
"ChatScrollLinesNotNumber": "The line amount must be a number",
"ChatScrollLinesMustBeBetween": "The line amount must be between {1} and {2}",
"ChatScrollLinesSet": "The chatbox will now scroll {1} lines at a time",
"InvalidEmailVerificationCode": "Invalid email verification code! A new one has been created and sent to your email.",
"EmailVerified": "Your email has been verified",
"EmailVerifiedTip": "You can now use your email for password resets, two-factor authentication, login alerts, and more",
"CommandRequiresLogin": "You must be logged in to use the {1} command",
"CommandDisabled": "The {1} command is disabled",
"CommandDisabledOnDiscord": "The {1} command isn't available on discord",
"CommandNotFoundHelpTip": "The command {1} does not exist! Use {2} for commands and information.",
"CommandNotFoundPossibleMatchTip": "The command {1} does not exist! Did you mean {2}?",
"CommandNoPermissions": "You don't have permission to use the {1} command",
"GUIResetPasswordCodeInputLabel": "Check your email for a code",
"GUIResetPasswordCodePlaceholder": "Verification code",
"GUIErrorTitle": "Error",
"GUIWarningTitle": "Warning",
"GUIInfoTitle": "Info",
"GUIOkButton": "Ok",
"GUIErrorResetPasswordFailedInvalidEmail": "Invalid email!",
"HeaderVehicleInfo": "Vehicle Info",
"HeaderClanRanksList": "Clan Ranks ({1})",
"HeaderNPCInfo": "NPC Info",
"NPCAnimationSet": "You set NPC {1} animation to {2}",
"NPCNameSet": "You set NPC {1} name to {2}",
"VehicleTooFar": "You are too far away from the vehicle!",
"HeaderPropertyTemplateTypes": "Property Types",
"MustBeLoggedInAndSpawnedToChat": "You need to be logged in and spawned before you can chat!",
"MutedCantChat": "You are muted and can't chat!",
"CantUseMegaphone": "You must equip a megaphone item or be in an emergency vehicle!",
"HeaderAnimationHelp": "Animation Info",
"HeaderBadgeInfo": "Badge Information ({1})",
"NoItemCloseEnough": "There is no item close enough",
"CantDropJobEquipmentItem": "You can't drop job items",
"CantPutJobEquipmentItem": "You can't store job items",
"NoItemEquipped": "You don't have any item selected",
"NoItemInActiveSlot": "You don't have an item in your active item slot",
"CantPutItemInSkinChange": "You can't store an item while customizing your appearance",
"NothingToTakeItemFrom": "You aren't near anything to take items from",
"NoAmmoToLoadIntoWeapon": "You don't have any ammo to load into the {1}",
"LoadAmmoIntoWeaponHelpCommand": "To load this ammo into a weapon, equip the weapon and type {1}",
"LoadAmmoIntoWeaponHelpKeyPress": "To load this ammo into a weapon, equip the weapon and press {1}",
"NobodyCloseEnoughToHandcuff": "Nobody is close enough to handcuff",
"NobodyCloseEnoughToTie": "Nobody is close enough to tie up",
"PlayerNotSurrenderedHandcuff": "{1} can't be handcuffed! They either need to have their hands up, be knocked out, or tazed",
"PlayerNotSurrenderedTie": "{1} can't be tied! They either need to have their hands up, be knocked out, or tazed",
"HeaderCharactersListSelf": "Your Characters",
"HeaderCharactersListOther": "{1}'s Characters",
"CharacterSelectHelpText": "Use {1} to select a character, or {2} to create a new character",
"ItemDoesntDoAnythingOnUse": "The {1} doesn't do anything when you try to use it.",
"ItemRadioStationTip": "Use {1} to set the radio station",
"VehicleLockedCommandTip": "🔒 This {1} is locked. Use {2} to unlock it",
"VehicleLockedKeyPressTip": "🔒 This {1} is locked. Press {2} to unlock it",
"VehicleLockedCantUnlock": "🔒 This {1} is locked and you don't have the keys to unlock it",
"CurrentlyRentingThisVehicle": "You are renting this {1} for {2} per minute. Use {3} if you want to stop renting it.",
"VehicleBelongsTo": "This {1} belongs to {2} ({3})",
"NotOwned": "Not Owned",
"NotCloseEnoughToItemContainer": "You are not close enough to anything that holds items",
"Job": "Job",
"Player": "Player",
"BusinessIsNowPaintBall": "This business is now a paintball arena",
"JoinedPaintBall": "You have joined the paintball game.",
"ItemsStoredForPaintBall": "Your items are stored in your locker and will be returned when you leave the paintball game",
"LeftPaintBall": "You have left the paintball game. Your items have been returned.",
"PaintBallEnded": "The paintball match has ended. Your items have been returned.",
"HeaderEventWinners": "Winners",
"YourPaintBallResults": "You got {1} kills and {2} deaths in the paintball match",
"NoPrivateMessageToReply": "You haven't received a private message to reply to",
"WeaponDoesNotUseAmmo": "The {1} doesn't use ammo",
"ChatBoxTimestampsToggle": "You turned {1} time display in the chatbox",
"ProfanityFilterSet": "You turned chat profanity filter {1}",
"ResetAllKeyBindsConfirm": "Are you sure you want to reset all your keybinds to default?",
"NotRentingAVehicle": "You are not renting a vehicle!",
"StoppedRentingVehicle": "You stopped renting the {1}",
"VehicleEngineStartKeyPressTip": "The {1} engine is off. Press {2} to start it.",
"VehicleEngineStartCommandTip": "The {1} engine is off. Use {2} to start it.",
"StartedRentingVehicle": "You are now renting this {1} for {2} per minute. To stop renting, use {3}",
"VehicleAlreadyRentedByOther": "This vehicle is already rented by someone else",
"VehicleAlreadyRentedBySelf": "You are already renting this vehicle",
"JobRankTooLow": "You are not high enough rank!",
"InvalidKeyName": "The key ID or name you input is invalid!",
"KeyBindsReset": "All your keybinds have been reset to default",
"KeyBindNameTip": "Use simple key names, letters, or numbers. Don't add spaces.",
"UniversalInlineExamplesList": "Examples: {1}",
"KeyBindRemoved": "You removed the keybind for the {1} key",
"KeyBindAdded": "You binded key {1} to {2}",
"CopyAllKeyBindsToServerConfirm": "Are you sure you want to copy all your keybinds to the {1} server?",
"CopiedAllKeyBindsToServer": "All your keybinds have been copied to the {1} server",
"MustBeSpawned": "You must be spawned!",
"ChatEmojiSet": "You turned automatic emoji in chat {1}",
"FishingLineNotCast": "Your fishing line isn't cast!",
"CantFishHere": "You can't fish here! You need to be near water or on a boat!",
"NeedFishingRod": "You need to be holding a fishing rod!",
"FishingCastCommandHelp": "Use {1} to cast your fishing line",
"FishingCastKeyBindHelp": "Press {1} to cast your fishing line",
"Paused": "Paused",
"PaintBallAlmostWin": "{1} only needs {2} more kills to win the paintball match!",
"HeaderClanFlagsList": "Clan Flags ({1})",
"PleaseWait": "Please wait ...",
"HeaderServerRulesList": "Server Rules",
"FrequencyChannelChanged": "You set the channel of your {1} in slot {2} to {3}",
"ItemTurnedOn": "You turned {1} your {2} in slot {3}",
"SkinSelectHelpTextSkin": "Press {1} or {2} to switch skin, {3} to save, or {4} to cancel",
"SkinSelectHelpTextBodyPart": "Press {1} or {2} to switch body part",
"SkinSelectBodyPartNames": {
"Head": "Head",
"UpperBody": "Upper Body",
"LowerBody": "Lower Body",
"Hair": "Hair",
"Hat": "Hat",
"Glasses": "Glasses",
"LeftHand": "Left Hand",
"RightHand": "Right Hand",
"LeftWrist": "Left Wrist",
"RightWrist": "Right Wrist"
},
"DisconnectReasons": {
"Unknown": "Unknown",
"LostConnection": "Lost Connection",
"Disconnected": "Disconnected",
"UnsupportedClient": "Unsupported Client",
"WrongGame": "Wrong Game",
"IncorrectPassword": "Incorrect Password",
"UnsupportedExecutable": "Unsupported Executable",
"Kicked": "Disconnected",
"Banned": "Banned",
"Failed": "Failed",
"InvalidName": "Invalid Name",
"Crashed": "Crashed",
"ModifiedGame": "Modified Game",
"FailedToLogin": "Kicked - Failed to login",
"NotATester": "Kicked - Not a tester",
"ClientScriptVerificationFail": "Client script verification failed (possible hacks)",
"ServerRestarting": "Server is restarting",
"Desync": "Desynced",
"FailedToCreateCharacter": "Kicked - Didn't create a character"
},
"DevelopersNotified": "The developers have been notified of the problem",
"NoJobLocationCloseEnough": "There are no job locations close enough!",
"NotAllowedToUseJobs": "You are not allowed to use any jobs!",
"CantUseThisJob": "You can't use this job!",
"JobChanged": "💼 You now have the {1} job",
"NeedToBeNearJob": "You need to be near your job location or a vehicle that belongs to your job!",
"DontHaveAJob": "You don't have a job!",
"StartedWorking": "💼 You are now working for the {1} job",
"StoppedWorking": "You have stopped working",
"ItemsStoredForJob": "Your personal items have been stored in your locker while you work",
"NoJobRoutesForLocation": "Your job does not have any routes for this location!",
"CurrentJobRouteDeleted": "The job route you were on has been deleted or disabled by an admin",
"YourTax": "Your tax on payday is: {1}. Use {2} for more information.",
"YourWealth": "Your wealth is: {1}. Use {2} for more information.",
"InvalidKeyBindName": "Key name not found!",
"BusinessPurchased": "🏢You are now the owner of business {1}",
"HousePurchased": "🏘️ You are now the owner of house {1}",
"CopyAllKeyBindsConfirm": "Are you sure you want to copy your keybinds to the {1} server?",
"CopyAllKeyBindsOverwriteWarning": "This will replace all your keybinds on the other server",
"NoPromptAccept": "You don't have anything to accept",
"NoPromptReject": "You don't have anything to reject",
"NotOrderingAnyBusinessItems": "You aren't ordering anything for a business!",
"BusinessOrderCanceled": "You cancelled the business item order",
"DidNotCreateCharacter": "You do not have a character to play. Goodbye!",
"BusinessOrderNotEnoughMoney": "This business doesn't have enough money to order that! Deposit some using {1}",
"ADDED-12OCT2022": "DO NOT TRANSLATE. Example of line below: You ordered 50 Colt 45 for $5000!",
"BusinessOrderSuccessInfo": "You ordered {1} {2} for {4}!",
"AccountSettings": {
"UseWhiteList": "Access whitelist",
"UseBlackList": "Access blacklist",
"TwoStepAuth": "Require 2FA code on login",
"AuthAttemptAlert": "Email login notifications",
"NoGUI": "No GUI",
"AutoLoginIP": "Automatic login by IP",
"NoServerLogo": "No server logo",
"AutoSelectLastCharacter": "Automatic spawn as most recent character",
"ShowRealTimeClock": "Show real time clock",
"UseGUIForItems": "Use GUI for inventory",
"UseRadialWheelItems": "Use pie wheel for inventory (like GTA V)",
"NoKeyBinds": "No keybinds",
"NoRandomTips": "No random tips",
"NoActionTips": "No action tips",
"ChatBoxTimestamps": "Show time in chat",
"ProfanityFilter": "Profanity filter",
"ChatAutoHide": "Automatically hide inactive chatbox",
"NoPlayerContent": "No custom images (like clan logos or spray tags)",
"ChatEmoji": "Show emoji images in chat"
},
"SaveSettings": "Save Settings",
"Cancel": "Cancel",
"AlreadyOwnVehicle": "You already own this vehicle!",
"PropertyEntranceFeeLabel": "Entrance Fee: {1}",
"NeedToBeInJobVehicle": "You need to be in a job vehicle!",
"InvalidJobRank": "Job rank not found!",
"NoPlayerCloseEnough": "There is no player close enough!",
"PayPhoneRecipientAnswered": "Somebody answered the call. Use normal chat to talk to them.",
"PayPhoneAnswered": "You answered the phone. Use normal chat to talk to the caller.",
"PayPhoneRecipientHangup": "The line was disconnected. You have been charged {1}",
"PayPhoneHangup": "You hung up the phone.",
"AlreadyUsingPayPhone": "You are already using a payphone!",
"NotUsingPayPhone": "You are not using a payphone!",
"NoPayPhoneCloseEnough": "There is no payphone close enough!",
"PayPhoneNotRinging": "This payphone is not ringing!",
"PayPhoneOccupied": "This payphone is already being used by someone else!",
"PayPhoneOccupantSwitched": "A different voice is now on the line",
"PayPhoneGiven": "You gave the phone to {1}",
"PayPhoneReceived": "{1} gave you the phone",
"PayPhoneUnableToCallPlayer": "You can't call {1} at this time. Please try again later.",
"ActionTips": {
"VehicleEngineOffWhenEnteringKey": "Use {1} to turn on or off a vehicle's engine",
"VehicleLockedAfterEntryAttempt": "Use {1} to lock or unlock a vehicle",
"ShowItemsAfterPurchase": "Use {1} to see your inventory",
"BuyCommandAfterEnterBusiness": "Use {1} to buy items from a business",
"UseItemKeyAfterEquipping": "Use {1} to use your equipped item",
"UseItemKeyAfterEquippingWalkieTalkie": "Use {1} to turn on or off your radio",
"RadioCommandAfterEnablingWalkieTalkie": "Use {1} to talk on your radio",
"ReplyToDirectMessage": "Use {1} to easily reply to a private message",
"UseItemKeyAmmoAfterEquippingWeapon": "Use {1} to load an ammo item into your equipped weapon",
"AnimationStop": "Use {1} to stop your animation",
"JobEquipmentInventory": "The job equipment is in your inventory. Use {1} to see them.",
"ViewInventory": "Use {1} to see your items",
"VehicleRepairItemUsage": "Stand next to a vehicle and use {1} to repair it",
"VehicleColourItemUsage": "Stand next to a vehicle and use {1} to change it's colour",
"VehiclePartItemUsage": "Stand next to a vehicle and use {1} to upgrade with {2}",
"AmmoClipItemUsage": "Equip the weapon and use {1} to load ammo into it",
"GenericItemUsage": "Use {1} to use the {2}",
"EnterJobVehicleForRoute": "Enter a job vehicle nearby to start a job route",
"JobLocations": "Visit a job location to get a job. Use {1} to find a job location",
"JobRouteStart": "Use {1} to start a job route with this vehicle",
"PayPhoneFirstUse": "Use {1} to end the call, and {2} to give the phone to somebody nearby",
"BusinessOwnerHelp": "Use {1} to see commands and information for business owners"
},
"NoBusinessesWithinRange": "There are no businesses within {1} meters",
"NoHousesWithinRange": "There are no houses within {1} meters",
"NoPayPhonesWithinRange": "There are no payphones within {1} meters",
"HeaderBusinessesInRangeList": "Businesses (within {1} meters)",
"HeaderHousesInRangeList": "Businesses (within {1} meters)",
"HeaderPayPhonesInRangeList": "Businesses (within {1} meters)",
"HeaderCommandsForStaffFlagList": "Admin Commands ({1})",
"PlayerLocateDistanceAndDirection": "{1} is {2} meters {3}",
"MustBeNumber": "You need to use a number!",
"HeaderJobRoutesList": "Job Routes ({1})",
"HeaderJobRouteInfo": "Job Route Information (${1})",
"InvalidJobRoute": "Job route not found!",
"PayPhoneDeleted": "The payphone was deleted",
"PayPhoneAnswer": "Use {1} to answer the payphone",
"ResetActionTipsConfirm": "Are you sure you want to reset all seen action tips?",
"ActionTipsReset": "All seen action tips have been reset.",
"NormalChatDisabled": "Normal chat is disabled by server admin. Use chat commands instead.",
"GlobalChatDisabled": "Global out-of-character chat is disabled by server admin",
"GUIAlertTitle": "Alert!",
"JobInviteSent": "You sent a job invite to {1}",
"JobInviteAlreadyHasJob": "That player already has a job!",
"JobInviteRequest": "{1} invited you to the {2} job.",
"CantAddJobMembers": "You can't invite new members to the job!",
"CantRemoveJobMembers": "You can't remove members from the job!"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

784
locale/latvian.json Normal file
View File

@@ -0,0 +1,784 @@
{
"TranslationProvidedBy": "YuOn",
"LocaleEnglishName": "Latvian",
"LocaleNativeName": "Latvian",
"LocaleOffer": "This server is available in Latvian. 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",
"HelpMainListHeader": "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",
"CantBanClient": "You cannot ban this person",
"PlayerAccountBanned": "{1} has been account banned",
"ClanNameTaken": "A clan with that name already exists",
"ClanCantRemoveRanks": "You can't remove clan ranks",
"ClanCantAddRanks": "You can't add clan ranks",
"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} ({2})",
"ExitsProperty": "opens the door and exits the {1} ({2})",
"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",
"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": "North",
"Northeast": "Northeast",
"East": "East",
"Southeast": "Southeast",
"South": "South",
"Southwest": "Southwest",
"West": "West",
"Northwest": "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!",
"PlayerJoined": "{1} has joined the game from {2}!",
"PlayerLeftServer": "{1} has left the game! ({2})",
"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",
"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!",
"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",
"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!",
"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": "Access Denied",
"InvalidSkin": "That skin is invalid!",
"HeaderInteriorTypes": "Interiors List",
"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!",
"RandomTips": [
"Look for yellow dots on your map for job locations",
"You can set custom key binds. Use {1} for details",
"Use {1} if you don't want to see tips and extra information",
"You can edit your keybinds using {1} and {2}",
"Press to see your inventory, and use number keys to select an item",
"Use {1} at a business to purchase items",
"Found a bug? Report it with {1}",
"Have an idea or suggestion for the server? Let the devs know using {1}",
"Want to buy a business? Use {1} at one for sale",
"Want to buy a house? Use {1} at one for sale",
"Want to buy a vehicle? Visit a dealership and enter one for info on how to buy it!",
"Switch to any of your characters with {1}",
"Use {1} to automatically login when connecting with the same IP",
"Use {1} to turn on/off the lights in your house or business",
"Use {1} to play an internet radio station in your car, house, or business",
"Want to make a clan? Use {1} for details",
"Legal weapons can be purchased at any ammunation"
],
"PromptResponseTip": "Use {1} to accept or {2} to decline",
"PlayerConnecting": "👋 {1} is connecting to the server ...",
"GetStartedJobVehicle": "Get in a {1} to get started.",
"VehicleTypes": {
"Car": "Car",
"Truck": "Truck",
"Van": "Van",
"Taxi": "Taxi",
"Bus": "Bus",
"PoliceCar": "Police Car",
"Ambulance": "Ambulance",
"FireTruck": "Fire Truck",
"Bike": "Bike",
"Motorbike": "Motorbike",
"Boat": "Boat",
"Helicopter": "Helicopter",
"Plane": "Plane",
"Train": "Train"
},
"AlreadyOnJobRoute": "You are already doing a job route!",
"GaveVehicleToClan": "You gave this {1} to your clan!",
"JobDisabled": "This job is disabled!",
"SetHouseClanConfirmMessage": "Are you sure you want to give this house to your clan?",
"SetHouseClanConfirmTitle": "Warning!",
"SetBusinessClanConfirmMessage": "Are you sure you want to give this business to your clan?",
"SetBusinessClanConfirmTitle": "Warning!",
"MustOwnHouse": "You don't own this house!",
"MustOwnBusiness": "You don't own this business!",
"GaveHouseToClan": "You gave this house to your clan!",
"GaveBusinessToClan": "You gave this business to your clan!",
"BuyBusinessConfirmMessage": "Are you sure you want to buy this business?",
"BuyBusinessConfirmTitle": "Attention!",
"BuyHouseConfirmMessage": "Are you sure you want to buy this house?",
"BuyHouseConfirmTitle": "Attention!",
"BuyBusinessLabel": "Use {1} to buy this business",
"BuyHouseLabel": "Use {1} to buy this house",
"RentHouseLabel": "Use {1} to rent this house",
"AccountEmailAlreadyVerified": "You already set and verified your email!",
"EmailVerificationCodeSent": "A verification code and instructions have been sent to your email.",
"GUIPlayAsCharacterButton": "Play",
"GUINewCharacterButton": "New character",
"GUIPreviousCharacterButton": "Previous",
"GUINextCharacterButton": "Next",
"GUICharacterSelectWindowTitle": "Select a character",
"GUICharacterSelectMoneyLabel": "Money: {1}",
"GUICharacterSelectClanLabel": "Clan: {1}",
"GUICharacterSelectLastPlayedLabel": "Last Played: {1} days, {2} hours, {3} minutes ago",
"GUILoginWindowLabelEnterPassword": "Please enter your password",
"GUILoginWindowSubmitButton": "Login",
"GUILoginWindowResetPasswordButton": "Reset",
"GUILoginWindowPasswordPlaceholder": "Password",
"GUILoginWindowForgotPasswordLabel": "Forgot your password?",
"GUIRegisterWindowLabelCreateAccount": "Create an account",
"GUIRegisterWindowPasswordPlaceholder": "Password",
"GUIRegisterWindowConfirmPasswordPlaceholder": "Confirm password",
"GUIRegisterWindowEmailPlaceholder": "Email",
"GUIRegisterWindowSubmitButton": "Create account",
"GUINewCharacterMessageLabel": "Name your character",
"GUINewCharacterFirstNamePlaceholder": "First Name",
"GUINewCharacterLastNamePlaceholder": "Last Name",
"GUINewCharacterSubmitButton": "Create Character",
"GUIChangePasswordWindowTitle": "Change Password",
"GUIChangePasswordPasswordLabel": "Enter a new password",
"GUIChangePasswordPasswordPlaceholder": "Password",
"GUIChangePasswordConfirmPasswordPlaceholder": "Confirm password",
"GUIChangePasswordSubmitButton": "Change Password",
"GUIResetPasswordWindowMessage": "Reset Password",
"GUIResetPasswordConfirmEmailLabel": "Please confirm your email",
"GUIResetPasswordEmailPlaceholder": "Email",
"GUIResetPasswordSubmitButton": "Reset Password",
"GUIResetPasswordLoginButton": "Login",
"GUIResetPasswordRememberMessage": "Remember your password?",
"HeaderJobList": "Jobs",
"HeaderBusinessInfo": "Business Info",
"HeaderHouseInfo": "House Info",
"HeaderClanInfo": "Clan Info",
"Locales": {
"English": "English",
"Russian": "Russian",
"Spanish": "Spanish",
"German": "German",
"Dutch": "Dutch",
"Polish": "Polish",
"Chinese": "Chinese",
"French": "French",
"Japanese": "Japanese",
"Slovak": "Slovak",
"Arabic": "Arabic"
},
"TwoFactorAuthSet": "⚙️ You have turned two factor authentication {1}",
"AccountServerLogoSet": "⚙️ You turned the server logo {1}",
"ChatScrollLinesNotNumber": "The line amount must be a number",
"ChatScrollLinesMustBeBetween": "The line amount must be between {1} and {2}",
"ChatScrollLinesSet": "The chatbox will now scroll {1} lines at a time",
"InvalidEmailVerificationCode": "Invalid email verification code! A new one has been created and sent to your email.",
"EmailVerified": "Your email has been verified",
"EmailVerifiedTip": "You can now use your email for password resets, two-factor authentication, login alerts, and more",
"CommandRequiresLogin": "You must be logged in to use the {1} command",
"CommandDisabled": "The {1} command is disabled",
"CommandDisabledOnDiscord": "The {1} command isn't available on discord",
"CommandNotFoundHelpTip": "The command {1} does not exist! Use {2} for commands and information.",
"CommandNotFoundPossibleMatchTip": "The command {1} does not exist! Did you mean {2}?",
"CommandNoPermissions": "You don't have permission to use the {1} command",
"GUIResetPasswordCodeInputLabel": "Check your email for a code",
"GUIResetPasswordCodePlaceholder": "Verification code",
"GUIErrorTitle": "Error",
"GUIWarningTitle": "Warning",
"GUIInfoTitle": "Info",
"GUIOkButton": "Ok",
"GUIErrorResetPasswordFailedInvalidEmail": "Invalid email!",
"HeaderVehicleInfo": "Vehicle Info",
"HeaderClanRanksList": "Clan Ranks ({1})",
"HeaderNPCInfo": "NPC Info",
"NPCAnimationSet": "You set NPC {1} animation to {2}",
"NPCNameSet": "You set NPC {1} name to {2}",
"VehicleTooFar": "You are too far away from the vehicle!",
"HeaderPropertyTemplateTypes": "Property Types",
"MustBeLoggedInAndSpawnedToChat": "You need to be logged in and spawned before you can chat!",
"MutedCantChat": "You are muted and can't chat!",
"CantUseMegaphone": "You must equip a megaphone item or be in an emergency vehicle!",
"HeaderAnimationHelp": "Animation Info",
"HeaderBadgeInfo": "Badge Information ({1})",
"NoItemCloseEnough": "There is no item close enough",
"CantDropJobEquipmentItem": "You can't drop job items",
"CantPutJobEquipmentItem": "You can't store job items",
"NoItemEquipped": "You don't have any item selected",
"NoItemInActiveSlot": "You don't have an item in your active item slot",
"CantPutItemInSkinChange": "You can't store an item while customizing your appearance",
"NothingToTakeItemFrom": "You aren't near anything to take items from",
"NoAmmoToLoadIntoWeapon": "You don't have any ammo to load into the {1}",
"LoadAmmoIntoWeaponHelpCommand": "To load this ammo into a weapon, equip the weapon and type {1}",
"LoadAmmoIntoWeaponHelpKeyPress": "To load this ammo into a weapon, equip the weapon and press {1}",
"NobodyCloseEnoughToHandcuff": "Nobody is close enough to handcuff",
"NobodyCloseEnoughToTie": "Nobody is close enough to tie up",
"PlayerNotSurrenderedHandcuff": "{1} can't be handcuffed! They either need to have their hands up, be knocked out, or tazed",
"PlayerNotSurrenderedTie": "{1} can't be tied! They either need to have their hands up, be knocked out, or tazed",
"HeaderCharactersListSelf": "Your Characters",
"HeaderCharactersListOther": "{1}'s Characters",
"CharacterSelectHelpText": "Use {1} to select a character, or {2} to create a new character",
"ItemDoesntDoAnythingOnUse": "The {1} doesn't do anything when you try to use it.",
"ItemRadioStationTip": "Use {1} to set the radio station",
"VehicleLockedCommandTip": "🔒 This {1} is locked. Use {2} to unlock it",
"VehicleLockedKeyPressTip": "🔒 This {1} is locked. Press {2} to unlock it",
"VehicleLockedCantUnlock": "🔒 This {1} is locked and you don't have the keys to unlock it",
"CurrentlyRentingThisVehicle": "You are renting this {1} for {2} per minute. Use {3} if you want to stop renting it.",
"VehicleBelongsTo": "This {1} belongs to {2} ({3})",
"NotOwned": "Not Owned",
"NotCloseEnoughToItemContainer": "You are not close enough to anything that holds items",
"Job": "Job",
"Player": "Player",
"BusinessIsNowPaintBall": "This business is now a paintball arena",
"JoinedPaintBall": "You have joined the paintball game.",
"ItemsStoredForPaintBall": "Your items are stored in your locker and will be returned when you leave the paintball game",
"LeftPaintBall": "You have left the paintball game. Your items have been returned.",
"PaintBallEnded": "The paintball match has ended. Your items have been returned.",
"HeaderEventWinners": "Winners",
"YourPaintBallResults": "You got {1} kills and {2} deaths in the paintball match",
"NoPrivateMessageToReply": "You haven't received a private message to reply to",
"WeaponDoesNotUseAmmo": "The {1} doesn't use ammo",
"ChatBoxTimestampsToggle": "You turned {1} time display in the chatbox",
"ProfanityFilterSet": "You turned chat profanity filter {1}",
"ResetAllKeyBindsConfirm": "Are you sure you want to reset all your keybinds to default?",
"NotRentingAVehicle": "You are not renting a vehicle!",
"StoppedRentingVehicle": "You stopped renting the {1}",
"VehicleEngineStartKeyPressTip": "The {1} engine is off. Press {2} to start it.",
"VehicleEngineStartCommandTip": "The {1} engine is off. Use {2} to start it.",
"StartedRentingVehicle": "You are now renting this {1} for {2} per minute. To stop renting, use {3}",
"VehicleAlreadyRentedByOther": "This vehicle is already rented by someone else",
"VehicleAlreadyRentedBySelf": "You are already renting this vehicle",
"JobRankTooLow": "You are not high enough rank!",
"InvalidKeyName": "The key ID or name you input is invalid!",
"KeyBindsReset": "All your keybinds have been reset to default",
"KeyBindNameTip": "Use simple key names, letters, or numbers. Don't add spaces.",
"UniversalInlineExamplesList": "Examples: {1}",
"KeyBindRemoved": "You removed the keybind for the {1} key",
"KeyBindAdded": "You binded key {1} to {2}",
"CopyAllKeyBindsToServerConfirm": "Are you sure you want to copy all your keybinds to the {1} server?",
"CopiedAllKeyBindsToServer": "All your keybinds have been copied to the {1} server",
"MustBeSpawned": "You must be spawned!",
"ChatEmojiSet": "You turned automatic emoji in chat {1}",
"FishingLineNotCast": "Your fishing line isn't cast!",
"CantFishHere": "You can't fish here! You need to be near water or on a boat!",
"NeedFishingRod": "You need to be holding a fishing rod!",
"FishingCastCommandHelp": "Use {1} to cast your fishing line",
"FishingCastKeyBindHelp": "Press {1} to cast your fishing line",
"Paused": "Paused",
"PaintBallAlmostWin": "{1} only needs {2} more kills to win the paintball match!",
"HeaderClanFlagsList": "Clan Flags ({1})",
"PleaseWait": "Please wait ...",
"HeaderServerRulesList": "Server Rules",
"FrequencyChannelChanged": "You set the channel of your {1} in slot {2} to {3}",
"ItemTurnedOn": "You turned {1} your {2} in slot {3}",
"SkinSelectHelpTextSkin": "Press {1} or {2} to switch skin, {3} to save, or {4} to cancel",
"SkinSelectHelpTextBodyPart": "Press {1} or {2} to switch body part",
"SkinSelectBodyPartNames": {
"Head": "Head",
"UpperBody": "Upper Body",
"LowerBody": "Lower Body",
"Hair": "Hair",
"Hat": "Hat",
"Glasses": "Glasses",
"LeftHand": "Left Hand",
"RightHand": "Right Hand",
"LeftWrist": "Left Wrist",
"RightWrist": "Right Wrist"
},
"DisconnectReasons": {
"Unknown": "Unknown",
"LostConnection": "Lost Connection",
"Disconnected": "Disconnected",
"UnsupportedClient": "Unsupported Client",
"WrongGame": "Wrong Game",
"IncorrectPassword": "Incorrect Password",
"UnsupportedExecutable": "Unsupported Executable",
"Kicked": "Disconnected",
"Banned": "Banned",
"Failed": "Failed",
"InvalidName": "Invalid Name",
"Crashed": "Crashed",
"ModifiedGame": "Modified Game",
"FailedToLogin": "Kicked - Failed to login",
"NotATester": "Kicked - Not a tester",
"ClientScriptVerificationFail": "Client script verification failed (possible hacks)",
"ServerRestarting": "Server is restarting",
"Desync": "Desynced",
"FailedToCreateCharacter": "Kicked - Didn't create a character"
},
"DevelopersNotified": "The developers have been notified of the problem",
"NoJobLocationCloseEnough": "There are no job locations close enough!",
"NotAllowedToUseJobs": "You are not allowed to use any jobs!",
"CantUseThisJob": "You can't use this job!",
"JobChanged": "💼 You now have the {1} job",
"NeedToBeNearJob": "You need to be near your job location or a vehicle that belongs to your job!",
"DontHaveAJob": "You don't have a job!",
"StartedWorking": "💼 You are now working for the {1} job",
"StoppedWorking": "You have stopped working",
"ItemsStoredForJob": "Your personal items have been stored in your locker while you work",
"NoJobRoutesForLocation": "Your job does not have any routes for this location!",
"CurrentJobRouteDeleted": "The job route you were on has been deleted or disabled by an admin",
"YourTax": "Your tax on payday is: {1}. Use {2} for more information.",
"YourWealth": "Your wealth is: {1}. Use {2} for more information.",
"InvalidKeyBindName": "Key name not found!",
"BusinessPurchased": "🏢You are now the owner of business {1}",
"HousePurchased": "🏘️ You are now the owner of house {1}",
"CopyAllKeyBindsConfirm": "Are you sure you want to copy your keybinds to the {1} server?",
"CopyAllKeyBindsOverwriteWarning": "This will replace all your keybinds on the other server",
"NoPromptAccept": "You don't have anything to accept",
"NoPromptReject": "You don't have anything to reject",
"NotOrderingAnyBusinessItems": "You aren't ordering anything for a business!",
"BusinessOrderCanceled": "You cancelled the business item order",
"DidNotCreateCharacter": "You do not have a character to play. Goodbye!",
"BusinessOrderNotEnoughMoney": "This business doesn't have enough money to order that! Deposit some using {1}",
"ADDED-12OCT2022": "DO NOT TRANSLATE. Example of line below: You ordered 50 Colt 45 for $5000!",
"BusinessOrderSuccessInfo": "You ordered {1} {2} for {4}!",
"AccountSettings": {
"UseWhiteList": "Access whitelist",
"UseBlackList": "Access blacklist",
"TwoStepAuth": "Require 2FA code on login",
"AuthAttemptAlert": "Email login notifications",
"NoGUI": "No GUI",
"AutoLoginIP": "Automatic login by IP",
"NoServerLogo": "No server logo",
"AutoSelectLastCharacter": "Automatic spawn as most recent character",
"ShowRealTimeClock": "Show real time clock",
"UseGUIForItems": "Use GUI for inventory",
"UseRadialWheelItems": "Use pie wheel for inventory (like GTA V)",
"NoKeyBinds": "No keybinds",
"NoRandomTips": "No random tips",
"NoActionTips": "No action tips",
"ChatBoxTimestamps": "Show time in chat",
"ProfanityFilter": "Profanity filter",
"ChatAutoHide": "Automatically hide inactive chatbox",
"NoPlayerContent": "No custom images (like clan logos or spray tags)",
"ChatEmoji": "Show emoji images in chat"
},
"SaveSettings": "Save Settings",
"Cancel": "Cancel",
"AlreadyOwnVehicle": "You already own this vehicle!",
"PropertyEntranceFeeLabel": "Entrance Fee: {1}",
"NeedToBeInJobVehicle": "You need to be in a job vehicle!",
"InvalidJobRank": "Job rank not found!",
"PayPhoneRecipientAnswered": "Somebody answered the call. Use normal chat to talk to them.",
"PayPhoneAnswered": "You answered the phone. Use normal chat to talk to the caller.",
"PayPhoneRecipientHangup": "The line was disconnected. You have been charged {1}",
"PayPhoneHangup": "You hung up the phone.",
"AlreadyUsingPayPhone": "You are already using a payphone!",
"NotUsingPayPhone": "You are not using a payphone!",
"NoPayPhoneCloseEnough": "There is no payphone close enough!",
"PayPhoneNotRinging": "This payphone is not ringing!",
"PayPhoneOccupied": "This payphone is already being used by someone else!",
"PayPhoneOccupantSwitched": "A different voice is now on the line",
"PayPhoneGiven": "You gave the phone to {1}",
"PayPhoneReceived": "{1} gave you the phone",
"PayPhoneUnableToCallPlayer": "You can't call {1} at this time. Please try again later.",
"ActionTips": {
"VehicleEngineOffWhenEnteringKey": "Use {1} to turn on or off a vehicle's engine",
"VehicleLockedAfterEntryAttempt": "Use {1} to lock or unlock a vehicle",
"ShowItemsAfterPurchase": "Use {1} to see your inventory",
"BuyCommandAfterEnterBusiness": "Use {1} to buy items from a business",
"UseItemKeyAfterEquipping": "Use {1} to use your equipped item",
"UseItemKeyAfterEquippingWalkieTalkie": "Use {1} to turn on or off your radio",
"RadioCommandAfterEnablingWalkieTalkie": "Use {1} to talk on your radio",
"ReplyToDirectMessage": "Use {1} to easily reply to a private message",
"UseItemKeyAmmoAfterEquippingWeapon": "Use {1} to load an ammo item into your equipped weapon",
"AnimationStop": "Use {1} to stop your animation",
"JobEquipmentInventory": "The job equipment is in your inventory. Use {1} to see them.",
"ViewInventory": "Use {1} to see your items",
"VehicleRepairItemUsage": "Stand next to a vehicle and use {1} to repair it",
"VehicleColourItemUsage": "Stand next to a vehicle and use {1} to change it's colour",
"VehiclePartItemUsage": "Stand next to a vehicle and use {1} to upgrade with {2}",
"AmmoClipItemUsage": "Equip the weapon and use {1} to load ammo into it",
"GenericItemUsage": "Use {1} to use the {2}",
"EnterJobVehicleForRoute": "Enter a job vehicle nearby to start a job route",
"JobLocations": "Visit a job location to get a job. Use {1} to find a job location",
"JobRouteStart": "Use {1} to start a job route with this vehicle",
"PayPhoneFirstUse": "Use {1} to end the call, and {2} to give the phone to somebody nearby"
},
"NoBusinessesWithinRange": "There are no businesses within {1} meters",
"NoHousesWithinRange": "There are no houses within {1} meters",
"NoPayPhonesWithinRange": "There are no payphones within {1} meters",
"HeaderBusinessesInRangeList": "Businesses (within {1} meters)",
"HeaderHousesInRangeList": "Businesses (within {1} meters)",
"HeaderPayPhonesInRangeList": "Businesses (within {1} meters)",
"HeaderCommandsForStaffFlagList": "Admin Commands ({1})",
"PlayerLocateDistanceAndDirection": "{1} is {2} meters {3}",
"MustBeNumber": "You need to use a number!",
"HeaderJobRoutesList": "Job Routes ({1})",
"HeaderJobRouteInfo": "Job Route Information (${1})",
"InvalidJobRoute": "Job route not found!",
"PayPhoneDeleted": "The payphone was deleted",
"PayPhoneAnswer": "Use {1} to answer the payphone",
"ResetActionTipsConfirm": "Are you sure you want to reset all seen action tips?",
"ActionTipsReset": "All seen action tips have been reset.",
"NormalChatDisabled": "Normal chat is disabled by server admin. Use chat commands instead.",
"GlobalChatDisabled": "Global out-of-character chat is disabled by server admin"
}

783
locale/lithuanian.json Normal file
View File

@@ -0,0 +1,783 @@
{
"TranslationProvidedBy": "dovis",
"LocaleEnglishName": "Lithuanian",
"LocaleNativeName": "Lithuanian",
"LocaleOffer": "This server is available in Lithuanian. 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",
"HelpMainListHeader": "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",
"CantBanClient": "You cannot ban this person",
"PlayerAccountBanned": "{1} has been account banned",
"ClanNameTaken": "A clan with that name already exists",
"ClanCantRemoveRanks": "You can't remove clan ranks",
"ClanCantAddRanks": "You can't add clan ranks",
"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} ({2})",
"ExitsProperty": "opens the door and exits the {1} ({2})",
"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",
"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": "North",
"Northeast": "Northeast",
"East": "East",
"Southeast": "Southeast",
"South": "South",
"Southwest": "Southwest",
"West": "West",
"Northwest": "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!",
"PlayerJoined": "{1} has joined the game from {2}!",
"PlayerLeftServer": "{1} has left the game! ({2})",
"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",
"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!",
"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",
"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!",
"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",
"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!",
"RandomTips": [
"Look for yellow dots on your map for job locations",
"You can set custom key binds. Use {1} for details",
"Use {1} if you don't want to see tips and extra information",
"You can edit your keybinds using {1} and {2}",
"Press to see your inventory, and use number keys to select an item",
"Use {1} at a business to purchase items",
"Found a bug? Report it with {1}",
"Have an idea or suggestion for the server? Let the devs know using {1}",
"Want to buy a business? Use {1} at one for sale",
"Want to buy a house? Use {1} at one for sale",
"Want to buy a vehicle? Visit a dealership and enter one for info on how to buy it!",
"Switch to any of your characters with {1}",
"Use {1} to automatically login when connecting with the same IP",
"Use {1} to turn on/off the lights in your house or business",
"Use {1} to play an internet radio station in your car, house, or business",
"Want to make a clan? Use {1} for details",
"Legal weapons can be purchased at any ammunation"
],
"PromptResponseTip": "Use {1} to accept or {2} to decline",
"PlayerConnecting": "👋 {1} is connecting to the server ...",
"GetStartedJobVehicle": "Get in a {1} to get started.",
"VehicleTypes": {
"Car": "Car",
"Truck": "Truck",
"Van": "Van",
"Taxi": "Taxi",
"Bus": "Bus",
"PoliceCar": "Police Car",
"Ambulance": "Ambulance",
"FireTruck": "Fire Truck",
"Bike": "Bike",
"Motorbike": "Motorbike",
"Boat": "Boat",
"Helicopter": "Helicopter",
"Plane": "Plane",
"Train": "Train"
},
"AlreadyOnJobRoute": "You are already doing a job route!",
"GaveVehicleToClan": "You gave this {1} to your clan!",
"JobDisabled": "This job is disabled!",
"SetHouseClanConfirmMessage": "Are you sure you want to give this house to your clan?",
"SetHouseClanConfirmTitle": "Warning!",
"SetBusinessClanConfirmMessage": "Are you sure you want to give this business to your clan?",
"SetBusinessClanConfirmTitle": "Warning!",
"MustOwnHouse": "You don't own this house!",
"MustOwnBusiness": "You don't own this business!",
"GaveHouseToClan": "You gave this house to your clan!",
"GaveBusinessToClan": "You gave this business to your clan!",
"BuyBusinessConfirmMessage": "Are you sure you want to buy this business?",
"BuyBusinessConfirmTitle": "Attention!",
"BuyHouseConfirmMessage": "Are you sure you want to buy this house?",
"BuyHouseConfirmTitle": "Attention!",
"BuyBusinessLabel": "Use {1} to buy this business",
"BuyHouseLabel": "Use {1} to buy this house",
"RentHouseLabel": "Use {1} to rent this house",
"AccountEmailAlreadyVerified": "You already set and verified your email!",
"EmailVerificationCodeSent": "A verification code and instructions have been sent to your email.",
"GUIPlayAsCharacterButton": "Play",
"GUINewCharacterButton": "New character",
"GUIPreviousCharacterButton": "Previous",
"GUINextCharacterButton": "Next",
"GUICharacterSelectWindowTitle": "Select a character",
"GUICharacterSelectMoneyLabel": "Money: {1}",
"GUICharacterSelectClanLabel": "Clan: {1}",
"GUICharacterSelectLastPlayedLabel": "Last Played: {1} days, {2} hours, {3} minutes ago",
"GUILoginWindowLabelEnterPassword": "Please enter your password",
"GUILoginWindowSubmitButton": "Login",
"GUILoginWindowResetPasswordButton": "Reset",
"GUILoginWindowPasswordPlaceholder": "Password",
"GUILoginWindowForgotPasswordLabel": "Forgot your password?",
"GUIRegisterWindowLabelCreateAccount": "Create an account",
"GUIRegisterWindowPasswordPlaceholder": "Password",
"GUIRegisterWindowConfirmPasswordPlaceholder": "Confirm password",
"GUIRegisterWindowEmailPlaceholder": "Email",
"GUIRegisterWindowSubmitButton": "Create account",
"GUINewCharacterMessageLabel": "Name your character",
"GUINewCharacterFirstNamePlaceholder": "First Name",
"GUINewCharacterLastNamePlaceholder": "Last Name",
"GUINewCharacterSubmitButton": "Create Character",
"GUIChangePasswordWindowTitle": "Change Password",
"GUIChangePasswordPasswordLabel": "Enter a new password",
"GUIChangePasswordPasswordPlaceholder": "Password",
"GUIChangePasswordConfirmPasswordPlaceholder": "Confirm password",
"GUIChangePasswordSubmitButton": "Change Password",
"GUIResetPasswordWindowMessage": "Reset Password",
"GUIResetPasswordConfirmEmailLabel": "Please confirm your email",
"GUIResetPasswordEmailPlaceholder": "Email",
"GUIResetPasswordSubmitButton": "Reset Password",
"GUIResetPasswordLoginButton": "Login",
"GUIResetPasswordRememberMessage": "Remember your password?",
"HeaderJobList": "Jobs",
"HeaderBusinessInfo": "Business Info",
"HeaderHouseInfo": "House Info",
"HeaderClanInfo": "Clan Info",
"Locales": {
"English": "English",
"Russian": "Russian",
"Spanish": "Spanish",
"German": "German",
"Dutch": "Dutch",
"Polish": "Polish",
"Chinese": "Chinese",
"French": "French",
"Japanese": "Japanese",
"Slovak": "Slovak",
"Arabic": "Arabic"
},
"TwoFactorAuthSet": "⚙️ You have turned two factor authentication {1}",
"AccountServerLogoSet": "⚙️ You turned the server logo {1}",
"ChatScrollLinesNotNumber": "The line amount must be a number",
"ChatScrollLinesMustBeBetween": "The line amount must be between {1} and {2}",
"ChatScrollLinesSet": "The chatbox will now scroll {1} lines at a time",
"InvalidEmailVerificationCode": "Invalid email verification code! A new one has been created and sent to your email.",
"EmailVerified": "Your email has been verified",
"EmailVerifiedTip": "You can now use your email for password resets, two-factor authentication, login alerts, and more",
"CommandRequiresLogin": "You must be logged in to use the {1} command",
"CommandDisabled": "The {1} command is disabled",
"CommandDisabledOnDiscord": "The {1} command isn't available on discord",
"CommandNotFoundHelpTip": "The command {1} does not exist! Use {2} for commands and information.",
"CommandNotFoundPossibleMatchTip": "The command {1} does not exist! Did you mean {2}?",
"CommandNoPermissions": "You don't have permission to use the {1} command",
"GUIResetPasswordCodeInputLabel": "Check your email for a code",
"GUIResetPasswordCodePlaceholder": "Verification code",
"GUIErrorTitle": "Error",
"GUIWarningTitle": "Warning",
"GUIInfoTitle": "Info",
"GUIOkButton": "Ok",
"GUIErrorResetPasswordFailedInvalidEmail": "Invalid email!",
"HeaderVehicleInfo": "Vehicle Info",
"HeaderClanRanksList": "Clan Rank",
"HeaderNPCInfo": "NPC Info",
"NPCAnimationSet": "You set NPC {1} animation to {2}",
"NPCNameSet": "You set NPC {1} name to {2}",
"VehicleTooFar": "You are too far away from the vehicle!",
"HeaderPropertyTemplateTypes": "Property Types",
"MustBeLoggedInAndSpawnedToChat": "You need to be logged in and spawned before you can chat!",
"MutedCantChat": "You are muted and can't chat!",
"CantUseMegaphone": "You must equip a megaphone item or be in an emergency vehicle!",
"HeaderAnimationHelp": "Animation Info",
"HeaderBadgeInfo": "Badge Information ({1})",
"NoItemCloseEnough": "There is no item close enough",
"CantDropJobEquipmentItem": "You can't drop job items",
"CantPutJobEquipmentItem": "You can't store job items",
"NoItemEquipped": "You don't have any item selected",
"NoItemInActiveSlot": "You don't have an item in your active item slot",
"CantPutItemInSkinChange": "You can't store an item while customizing your appearance",
"NothingToTakeItemFrom": "You aren't near anything to take items from",
"NoAmmoToLoadIntoWeapon": "You don't have any ammo to load into the {1}",
"LoadAmmoIntoWeaponHelpCommand": "To load this ammo into a weapon, equip the weapon and type {1}",
"LoadAmmoIntoWeaponHelpKeyPress": "To load this ammo into a weapon, equip the weapon and press {1}",
"NobodyCloseEnoughToHandcuff": "Nobody is close enough to handcuff",
"NobodyCloseEnoughToTie": "Nobody is close enough to tie up",
"PlayerNotSurrenderedHandcuff": "{1} can't be handcuffed! They either need to have their hands up, be knocked out, or tazed",
"PlayerNotSurrenderedTie": "{1} can't be tied! They either need to have their hands up, be knocked out, or tazed",
"HeaderCharactersListSelf": "Your Characters",
"HeaderCharactersListOther": "{1}'s Characters",
"CharacterSelectHelpText": "Use {1} to select a character, or {2} to create a new character",
"ItemDoesntDoAnythingOnUse": "The {1} doesn't do anything when you try to use it.",
"ItemRadioStationTip": "Use {1} to set the radio station",
"VehicleLockedCommandTip": "🔒 This {1} is locked. Use {2} to unlock it",
"VehicleLockedKeyPressTip": "🔒 This {1} is locked. Press {2} to unlock it",
"VehicleLockedCantUnlock": "🔒 This {1} is locked and you don't have the keys to unlock it",
"CurrentlyRentingThisVehicle": "You are renting this {1} for {2} per minute. Use {3} if you want to stop renting it.",
"VehicleBelongsTo": "This {1} belongs to {2} ({3})",
"NotOwned": "Not Owned",
"NotCloseEnoughToItemContainer": "You are not close enough to anything that holds items",
"Job": "Job",
"Player": "Player",
"BusinessIsNowPaintBall": "This business is now a paintball arena",
"JoinedPaintBall": "You have joined the paintball game.",
"ItemsStoredForPaintBall": "Your items are stored in your locker and will be returned when you leave the paintball game",
"LeftPaintBall": "You have left the paintball game. Your items have been returned.",
"PaintBallEnded": "The paintball match has ended. Your items have been returned.",
"HeaderEventWinners": "Winners",
"YourPaintBallResults": "You got {1} kills and {2} deaths in the paintball match",
"NoPrivateMessageToReply": "You haven't received a private message to reply to",
"WeaponDoesNotUseAmmo": "The {1} doesn't use ammo",
"ChatBoxTimestampsToggle": "You turned {1} time display in the chatbox",
"ProfanityFilterSet": "You turned chat profanity filter {1}",
"ResetAllKeyBindsConfirm": "Are you sure you want to reset all your keybinds to default?",
"NotRentingAVehicle": "You are not renting a vehicle!",
"StoppedRentingVehicle": "You stopped renting the {1}",
"VehicleEngineStartKeyPressTip": "The {1} engine is off. Press {2} to start it.",
"VehicleEngineStartCommandTip": "The {1} engine is off. Use {2} to start it.",
"StartedRentingVehicle": "You are now renting this {1} for {2} per minute. To stop renting, use {3}",
"VehicleAlreadyRentedByOther": "This vehicle is already rented by someone else",
"VehicleAlreadyRentedBySelf": "You are already renting this vehicle",
"JobRankTooLow": "You are not high enough rank!",
"InvalidKeyName": "The key ID or name you input is invalid!",
"KeyBindsReset": "All your keybinds have been reset to default",
"KeyBindNameTip": "Use simple key names, letters, or numbers. Don't add spaces.",
"UniversalInlineExamplesList": "Examples: {1}",
"KeyBindRemoved": "You removed the keybind for the {1} key",
"KeyBindAdded": "You binded key {1} to {2}",
"CopyAllKeyBindsToServerConfirm": "Are you sure you want to copy all your keybinds to the {1} server?",
"CopiedAllKeyBindsToServer": "All your keybinds have been copied to the {1} server",
"MustBeSpawned": "You must be spawned!",
"ChatEmojiSet": "You turned automatic emoji in chat {1}",
"FishingLineNotCast": "Your fishing line isn't cast!",
"CantFishHere": "You can't fish here! You need to be near water or on a boat!",
"NeedFishingRod": "You need to be holding a fishing rod!",
"FishingCastCommandHelp": "Use {1} to cast your fishing line",
"FishingCastKeyBindHelp": "Press {1} to cast your fishing line",
"Paused": "Paused",
"PaintBallAlmostWin": "{1} only needs {2} more kills to win the paintball match!",
"HeaderClanFlagsList": "Clan Flags ({1})",
"PleaseWait": "Please wait ...",
"HeaderServerRulesList": "Server Rules",
"FrequencyChannelChanged": "You set the channel of your {1} in slot {2} to {3}",
"ItemTurnedOnOff": "You turned {1} your {2} in slot {3}",
"SkinSelectHelpTextSkin": "Press {1} or {2} to switch skin, {3} to save, or {4} to cancel",
"SkinSelectHelpTextBodyPart": "Press {1} or {2} to switch body part",
"SkinSelectBodyPartNames": {
"Head": "Head",
"UpperBody": "Upper Body",
"LowerBody": "Lower Body",
"Hair": "Hair",
"Hat": "Hat",
"Glasses": "Glasses",
"LeftHand": "Left Hand",
"RightHand": "Right Hand",
"LeftWrist": "Left Wrist",
"RightWrist": "Right Wrist"
},
"DisconnectReasons": {
"Unknown": "Unknown",
"LostConnection": "Lost Connection",
"Disconnected": "Disconnected",
"UnsupportedClient": "Unsupported Client",
"WrongGame": "Wrong Game",
"IncorrectPassword": "Incorrect Password",
"UnsupportedExecutable": "Unsupported Executable",
"Kicked": "Disconnected",
"Banned": "Banned",
"Failed": "Failed",
"InvalidName": "Invalid Name",
"Crashed": "Crashed",
"ModifiedGame": "Modified Game",
"FailedToLogin": "Kicked - Failed to login",
"NotATester": "Kicked - Not a tester",
"ClientScriptVerificationFail": "Client script verification failed (possible hacks)",
"ServerRestarting": "Server is restarting",
"Desync": "Desynced",
"FailedToCreateCharacter": "Kicked - Didn't create a character"
},
"DevelopersNotified": "The developers have been notified of the problem",
"NoJobLocationCloseEnough": "There are no job locations close enough!",
"NotAllowedToUseJobs": "You are not allowed to use any jobs!",
"CantUseThisJob": "You can't use this job!",
"JobChanged": "💼 You now have the {1} job",
"NeedToBeNearJob": "You need to be near your job location or a vehicle that belongs to your job!",
"DontHaveAJob": "You don't have a job!",
"StartedWorking": "💼 You are now working for the {1} job",
"StoppedWorking": "You have stopped working",
"ItemsStoredForJob": "Your personal items have been stored in your locker while you work",
"NoJobRoutesForLocation": "Your job does not have any routes for this location!",
"CurrentJobRouteDeleted": "The job route you were on has been deleted or disabled by an admin",
"YourTax": "Your tax on payday is: {1}. Use {2} for more information.",
"YourWealth": "Your wealth is: {1}. Use {2} for more information.",
"InvalidKeyBindName": "Key name not found!",
"BusinessPurchased": "🏢You are now the owner of business {1}",
"HousePurchased": "🏘️ You are now the owner of house {1}",
"CopyAllKeyBindsConfirm": "Are you sure you want to copy your keybinds to the {1} server?",
"CopyAllKeyBindsOverwriteWarning": "This will replace all your keybinds on the other server",
"NoPromptAccept": "You don't have anything to accept",
"NoPromptReject": "You don't have anything to reject",
"NotOrderingAnyBusinessItems": "You aren't ordering anything for a business!",
"BusinessOrderCanceled": "You cancelled the business item order",
"DidNotCreateCharacter": "You do not have a character to play. Goodbye!",
"BusinessOrderNotEnoughMoney": "This business doesn't have enough money to order that! Deposit some using {1}",
"ADDED-12OCT2022": "DO NOT TRANSLATE. Example of line below: You ordered 50 Colt 45 for $5000!",
"BusinessOrderSuccessInfo": "You ordered {1} {2} for {4}!",
"AccountSettings": {
"UseWhiteList": "Access whitelist",
"UseBlackList": "Access blacklist",
"TwoStepAuth": "Require 2FA code on login",
"AuthAttemptAlert": "Email login notifications",
"NoGUI": "No GUI",
"AutoLoginIP": "Automatic login by IP",
"NoServerLogo": "No server logo",
"AutoSelectLastCharacter": "Automatic spawn as most recent character",
"ShowRealTimeClock": "Show real time clock",
"UseGUIForItems": "Use GUI for inventory",
"UseRadialWheelItems": "Use pie wheel for inventory (like GTA V)",
"NoKeyBinds": "No keybinds",
"NoRandomTips": "No random tips",
"NoActionTips": "No action tips",
"ChatBoxTimestamps": "Show time in chat",
"ProfanityFilter": "Profanity filter",
"ChatAutoHide": "Automatically hide inactive chatbox",
"NoPlayerContent": "No custom images (like clan logos or spray tags)",
"ChatEmoji": "Show emoji images in chat"
},
"SaveSettings": "Save Settings",
"Cancel": "Cancel",
"AlreadyOwnVehicle": "You already own this vehicle!",
"PropertyEntranceFeeLabel": "Entrance Fee: {1}",
"NeedToBeInJobVehicle": "You need to be in a job vehicle!",
"InvalidJobRank": "Job rank not found!",
"PayPhoneRecipientAnswered": "Somebody answered the call. Use normal chat to talk to them.",
"PayPhoneAnswered": "You answered the phone. Use normal chat to talk to the caller.",
"PayPhoneRecipientHangup": "The line was disconnected. You have been charged {1}",
"PayPhoneHangup": "You hung up the phone.",
"AlreadyUsingPayPhone": "You are already using a payphone!",
"NotUsingPayPhone": "You are not using a payphone!",
"NoPayPhoneCloseEnough": "There is no payphone close enough!",
"PayPhoneNotRinging": "This payphone is not ringing!",
"PayPhoneOccupied": "This payphone is already being used by someone else!",
"PayPhoneOccupantSwitched": "A different voice is now on the line",
"PayPhoneGiven": "You gave the phone to {1}",
"PayPhoneReceived": "{1} gave you the phone",
"PayPhoneUnableToCallPlayer": "You can't call {1} at this time. Please try again later.",
"ActionTips": {
"VehicleEngineOffWhenEnteringKey": "Use {1} to turn on or off a vehicle's engine",
"VehicleLockedAfterEntryAttempt": "Use {1} to lock or unlock a vehicle",
"ShowItemsAfterPurchase": "Use {1} to see your inventory",
"BuyCommandAfterEnterBusiness": "Use {1} to buy items from a business",
"UseItemKeyAfterEquipping": "Use {1} to use your equipped item",
"UseItemKeyAfterEquippingWalkieTalkie": "Use {1} to turn on or off your radio",
"RadioCommandAfterEnablingWalkieTalkie": "Use {1} to talk on your radio",
"ReplyToDirectMessage": "Use {1} to easily reply to a private message",
"UseItemKeyAmmoAfterEquippingWeapon": "Use {1} to load an ammo item into your equipped weapon",
"AnimationStop": "Use {1} to stop your animation",
"JobEquipmentInventory": "The job equipment is in your inventory. Use {1} to see them.",
"ViewInventory": "Use {1} to see your items",
"VehicleRepairItemUsage": "Stand next to a vehicle and use {1} to repair it",
"VehicleColourItemUsage": "Stand next to a vehicle and use {1} to change it's colour",
"VehiclePartItemUsage": "Stand next to a vehicle and use {1} to upgrade with {2}",
"AmmoClipItemUsage": "Equip the weapon and use {1} to load ammo into it",
"GenericItemUsage": "Use {1} to use the {2}",
"EnterJobVehicleForRoute": "Enter a job vehicle nearby to start a job route",
"JobLocations": "Visit a job location to get a job. Use {1} to find a job location",
"JobRouteStart": "Use {1} to start a job route with this vehicle",
"PayPhoneFirstUse": "Use {1} to end the call, and {2} to give the phone to somebody nearby"
},
"NoBusinessesWithinRange": "There are no businesses within {1} meters",
"NoHousesWithinRange": "There are no houses within {1} meters",
"NoPayPhonesWithinRange": "There are no payphones within {1} meters",
"HeaderBusinessesInRangeList": "Businesses (within {1} meters)",
"HeaderHousesInRangeList": "Businesses (within {1} meters)",
"HeaderPayPhonesInRangeList": "Businesses (within {1} meters)",
"HeaderCommandsForStaffFlagList": "Admin Commands ({1})",
"PlayerLocateDistanceAndDirection": "{1} is {2} meters {3}",
"MustBeNumber": "You need to use a number!",
"HeaderJobRoutesList": "Job Routes ({1})",
"HeaderJobRouteInfo": "Job Route Information (${1})",
"InvalidJobRoute": "Job route not found!",
"PayPhoneDeleted": "The payphone was deleted",
"PayPhoneAnswer": "Use {1} to answer the payphone",
"ResetActionTipsConfirm": "Are you sure you want to reset all seen action tips?",
"ActionTipsReset": "All seen action tips have been reset.",
"NormalChatDisabled": "Normal chat is disabled by server admin. Use chat commands instead.",
"GlobalChatDisabled": "Global out-of-character chat is disabled by server admin"
}

783
locale/persian.json Normal file
View File

@@ -0,0 +1,783 @@
{
"TranslationProvidedBy": "bigmohammad",
"LocaleEnglishName": "Persian",
"LocaleNativeName": "Persian",
"LocaleOffer": "This server is available in Persian. 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",
"HelpMainListHeader": "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",
"CantBanClient": "You cannot ban this person",
"PlayerAccountBanned": "{1} has been account banned",
"ClanNameTaken": "A clan with that name already exists",
"ClanCantRemoveRanks": "You can't remove clan ranks",
"ClanCantAddRanks": "You can't add clan ranks",
"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} ({2})",
"ExitsProperty": "opens the door and exits the {1} ({2})",
"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",
"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": "North",
"Northeast": "Northeast",
"East": "East",
"Southeast": "Southeast",
"South": "South",
"Southwest": "Southwest",
"West": "West",
"Northwest": "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!",
"PlayerJoined": "{1} has joined the game from {2}!",
"PlayerLeftServer": "{1} has left the game! ({2})",
"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",
"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!",
"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",
"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!",
"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",
"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!",
"RandomTips": [
"Look for yellow dots on your map for job locations",
"You can set custom key binds. Use {1} for details",
"Use {1} if you don't want to see tips and extra information",
"You can edit your keybinds using {1} and {2}",
"Press to see your inventory, and use number keys to select an item",
"Use {1} at a business to purchase items",
"Found a bug? Report it with {1}",
"Have an idea or suggestion for the server? Let the devs know using {1}",
"Want to buy a business? Use {1} at one for sale",
"Want to buy a house? Use {1} at one for sale",
"Want to buy a vehicle? Visit a dealership and enter one for info on how to buy it!",
"Switch to any of your characters with {1}",
"Use {1} to automatically login when connecting with the same IP",
"Use {1} to turn on/off the lights in your house or business",
"Use {1} to play an internet radio station in your car, house, or business",
"Want to make a clan? Use {1} for details",
"Legal weapons can be purchased at any ammunation"
],
"PromptResponseTip": "Use {1} to accept or {2} to decline",
"PlayerConnecting": "👋 {1} is connecting to the server ...",
"GetStartedJobVehicle": "Get in a {1} to get started.",
"VehicleTypes": {
"Car": "Car",
"Truck": "Truck",
"Van": "Van",
"Taxi": "Taxi",
"Bus": "Bus",
"PoliceCar": "Police Car",
"Ambulance": "Ambulance",
"FireTruck": "Fire Truck",
"Bike": "Bike",
"Motorbike": "Motorbike",
"Boat": "Boat",
"Helicopter": "Helicopter",
"Plane": "Plane",
"Train": "Train"
},
"AlreadyOnJobRoute": "You are already doing a job route!",
"GaveVehicleToClan": "You gave this {1} to your clan!",
"JobDisabled": "This job is disabled!",
"SetHouseClanConfirmMessage": "Are you sure you want to give this house to your clan?",
"SetHouseClanConfirmTitle": "Warning!",
"SetBusinessClanConfirmMessage": "Are you sure you want to give this business to your clan?",
"SetBusinessClanConfirmTitle": "Warning!",
"MustOwnHouse": "You don't own this house!",
"MustOwnBusiness": "You don't own this business!",
"GaveHouseToClan": "You gave this house to your clan!",
"GaveBusinessToClan": "You gave this business to your clan!",
"BuyBusinessConfirmMessage": "Are you sure you want to buy this business?",
"BuyBusinessConfirmTitle": "Attention!",
"BuyHouseConfirmMessage": "Are you sure you want to buy this house?",
"BuyHouseConfirmTitle": "Attention!",
"BuyBusinessLabel": "Use {1} to buy this business",
"BuyHouseLabel": "Use {1} to buy this house",
"RentHouseLabel": "Use {1} to rent this house",
"AccountEmailAlreadyVerified": "You already set and verified your email!",
"EmailVerificationCodeSent": "A verification code and instructions have been sent to your email.",
"GUIPlayAsCharacterButton": "Play",
"GUINewCharacterButton": "New character",
"GUIPreviousCharacterButton": "Previous",
"GUINextCharacterButton": "Next",
"GUICharacterSelectWindowTitle": "Select a character",
"GUICharacterSelectMoneyLabel": "Money: {1}",
"GUICharacterSelectClanLabel": "Clan: {1}",
"GUICharacterSelectLastPlayedLabel": "Last Played: {1} days, {2} hours, {3} minutes ago",
"GUILoginWindowLabelEnterPassword": "Please enter your password",
"GUILoginWindowSubmitButton": "Login",
"GUILoginWindowResetPasswordButton": "Reset",
"GUILoginWindowPasswordPlaceholder": "Password",
"GUILoginWindowForgotPasswordLabel": "Forgot your password?",
"GUIRegisterWindowLabelCreateAccount": "Create an account",
"GUIRegisterWindowPasswordPlaceholder": "Password",
"GUIRegisterWindowConfirmPasswordPlaceholder": "Confirm password",
"GUIRegisterWindowEmailPlaceholder": "Email",
"GUIRegisterWindowSubmitButton": "Create account",
"GUINewCharacterMessageLabel": "Name your character",
"GUINewCharacterFirstNamePlaceholder": "First Name",
"GUINewCharacterLastNamePlaceholder": "Last Name",
"GUINewCharacterSubmitButton": "Create Character",
"GUIChangePasswordWindowTitle": "Change Password",
"GUIChangePasswordPasswordLabel": "Enter a new password",
"GUIChangePasswordPasswordPlaceholder": "Password",
"GUIChangePasswordConfirmPasswordPlaceholder": "Confirm password",
"GUIChangePasswordSubmitButton": "Change Password",
"GUIResetPasswordWindowMessage": "Reset Password",
"GUIResetPasswordConfirmEmailLabel": "Please confirm your email",
"GUIResetPasswordEmailPlaceholder": "Email",
"GUIResetPasswordSubmitButton": "Reset Password",
"GUIResetPasswordLoginButton": "Login",
"GUIResetPasswordRememberMessage": "Remember your password?",
"HeaderJobList": "Jobs",
"HeaderBusinessInfo": "Business Info",
"HeaderHouseInfo": "House Info",
"HeaderClanInfo": "Clan Info",
"Locales": {
"English": "English",
"Russian": "Russian",
"Spanish": "Spanish",
"German": "German",
"Dutch": "Dutch",
"Polish": "Polish",
"Chinese": "Chinese",
"French": "French",
"Japanese": "Japanese",
"Slovak": "Slovak",
"Arabic": "Arabic"
},
"TwoFactorAuthSet": "⚙️ You have turned two factor authentication {1}",
"AccountServerLogoSet": "⚙️ You turned the server logo {1}",
"ChatScrollLinesNotNumber": "The line amount must be a number",
"ChatScrollLinesMustBeBetween": "The line amount must be between {1} and {2}",
"ChatScrollLinesSet": "The chatbox will now scroll {1} lines at a time",
"InvalidEmailVerificationCode": "Invalid email verification code! A new one has been created and sent to your email.",
"EmailVerified": "Your email has been verified",
"EmailVerifiedTip": "You can now use your email for password resets, two-factor authentication, login alerts, and more",
"CommandRequiresLogin": "You must be logged in to use the {1} command",
"CommandDisabled": "The {1} command is disabled",
"CommandDisabledOnDiscord": "The {1} command isn't available on discord",
"CommandNotFoundHelpTip": "The command {1} does not exist! Use {2} for commands and information.",
"CommandNotFoundPossibleMatchTip": "The command {1} does not exist! Did you mean {2}?",
"CommandNoPermissions": "You don't have permission to use the {1} command",
"GUIResetPasswordCodeInputLabel": "Check your email for a code",
"GUIResetPasswordCodePlaceholder": "Verification code",
"GUIErrorTitle": "Error",
"GUIWarningTitle": "Warning",
"GUIInfoTitle": "Info",
"GUIOkButton": "Ok",
"GUIErrorResetPasswordFailedInvalidEmail": "Invalid email!",
"HeaderVehicleInfo": "Vehicle Info",
"HeaderClanRanksList": "Clan Rank",
"HeaderNPCInfo": "NPC Info",
"NPCAnimationSet": "You set NPC {1} animation to {2}",
"NPCNameSet": "You set NPC {1} name to {2}",
"VehicleTooFar": "You are too far away from the vehicle!",
"HeaderPropertyTemplateTypes": "Property Types",
"MustBeLoggedInAndSpawnedToChat": "You need to be logged in and spawned before you can chat!",
"MutedCantChat": "You are muted and can't chat!",
"CantUseMegaphone": "You must equip a megaphone item or be in an emergency vehicle!",
"HeaderAnimationHelp": "Animation Info",
"HeaderBadgeInfo": "Badge Information ({1})",
"NoItemCloseEnough": "There is no item close enough",
"CantDropJobEquipmentItem": "You can't drop job items",
"CantPutJobEquipmentItem": "You can't store job items",
"NoItemEquipped": "You don't have any item selected",
"NoItemInActiveSlot": "You don't have an item in your active item slot",
"CantPutItemInSkinChange": "You can't store an item while customizing your appearance",
"NothingToTakeItemFrom": "You aren't near anything to take items from",
"NoAmmoToLoadIntoWeapon": "You don't have any ammo to load into the {1}",
"LoadAmmoIntoWeaponHelpCommand": "To load this ammo into a weapon, equip the weapon and type {1}",
"LoadAmmoIntoWeaponHelpKeyPress": "To load this ammo into a weapon, equip the weapon and press {1}",
"NobodyCloseEnoughToHandcuff": "Nobody is close enough to handcuff",
"NobodyCloseEnoughToTie": "Nobody is close enough to tie up",
"PlayerNotSurrenderedHandcuff": "{1} can't be handcuffed! They either need to have their hands up, be knocked out, or tazed",
"PlayerNotSurrenderedTie": "{1} can't be tied! They either need to have their hands up, be knocked out, or tazed",
"HeaderCharactersListSelf": "Your Characters",
"HeaderCharactersListOther": "{1}'s Characters",
"CharacterSelectHelpText": "Use {1} to select a character, or {2} to create a new character",
"ItemDoesntDoAnythingOnUse": "The {1} doesn't do anything when you try to use it.",
"ItemRadioStationTip": "Use {1} to set the radio station",
"VehicleLockedCommandTip": "🔒 This {1} is locked. Use {2} to unlock it",
"VehicleLockedKeyPressTip": "🔒 This {1} is locked. Press {2} to unlock it",
"VehicleLockedCantUnlock": "🔒 This {1} is locked and you don't have the keys to unlock it",
"CurrentlyRentingThisVehicle": "You are renting this {1} for {2} per minute. Use {3} if you want to stop renting it.",
"VehicleBelongsTo": "This {1} belongs to {2} ({3})",
"NotOwned": "Not Owned",
"NotCloseEnoughToItemContainer": "You are not close enough to anything that holds items",
"Job": "Job",
"Player": "Player",
"BusinessIsNowPaintBall": "This business is now a paintball arena",
"JoinedPaintBall": "You have joined the paintball game.",
"ItemsStoredForPaintBall": "Your items are stored in your locker and will be returned when you leave the paintball game",
"LeftPaintBall": "You have left the paintball game. Your items have been returned.",
"PaintBallEnded": "The paintball match has ended. Your items have been returned.",
"HeaderEventWinners": "Winners",
"YourPaintBallResults": "You got {1} kills and {2} deaths in the paintball match",
"NoPrivateMessageToReply": "You haven't received a private message to reply to",
"WeaponDoesNotUseAmmo": "The {1} doesn't use ammo",
"ChatBoxTimestampsToggle": "You turned {1} time display in the chatbox",
"ProfanityFilterSet": "You turned chat profanity filter {1}",
"ResetAllKeyBindsConfirm": "Are you sure you want to reset all your keybinds to default?",
"NotRentingAVehicle": "You are not renting a vehicle!",
"StoppedRentingVehicle": "You stopped renting the {1}",
"VehicleEngineStartKeyPressTip": "The {1} engine is off. Press {2} to start it.",
"VehicleEngineStartCommandTip": "The {1} engine is off. Use {2} to start it.",
"StartedRentingVehicle": "You are now renting this {1} for {2} per minute. To stop renting, use {3}",
"VehicleAlreadyRentedByOther": "This vehicle is already rented by someone else",
"VehicleAlreadyRentedBySelf": "You are already renting this vehicle",
"JobRankTooLow": "You are not high enough rank!",
"InvalidKeyName": "The key ID or name you input is invalid!",
"KeyBindsReset": "All your keybinds have been reset to default",
"KeyBindNameTip": "Use simple key names, letters, or numbers. Don't add spaces.",
"UniversalInlineExamplesList": "Examples: {1}",
"KeyBindRemoved": "You removed the keybind for the {1} key",
"KeyBindAdded": "You binded key {1} to {2}",
"CopyAllKeyBindsToServerConfirm": "Are you sure you want to copy all your keybinds to the {1} server?",
"CopiedAllKeyBindsToServer": "All your keybinds have been copied to the {1} server",
"MustBeSpawned": "You must be spawned!",
"ChatEmojiSet": "You turned automatic emoji in chat {1}",
"FishingLineNotCast": "Your fishing line isn't cast!",
"CantFishHere": "You can't fish here! You need to be near water or on a boat!",
"NeedFishingRod": "You need to be holding a fishing rod!",
"FishingCastCommandHelp": "Use {1} to cast your fishing line",
"FishingCastKeyBindHelp": "Press {1} to cast your fishing line",
"Paused": "Paused",
"PaintBallAlmostWin": "{1} only needs {2} more kills to win the paintball match!",
"HeaderClanFlagsList": "Clan Flags ({1})",
"PleaseWait": "Please wait ...",
"HeaderServerRulesList": "Server Rules",
"FrequencyChannelChanged": "You set the channel of your {1} in slot {2} to {3}",
"ItemTurnedOnOff": "You turned {1} your {2} in slot {3}",
"SkinSelectHelpTextSkin": "Press {1} or {2} to switch skin, {3} to save, or {4} to cancel",
"SkinSelectHelpTextBodyPart": "Press {1} or {2} to switch body part",
"SkinSelectBodyPartNames": {
"Head": "Head",
"UpperBody": "Upper Body",
"LowerBody": "Lower Body",
"Hair": "Hair",
"Hat": "Hat",
"Glasses": "Glasses",
"LeftHand": "Left Hand",
"RightHand": "Right Hand",
"LeftWrist": "Left Wrist",
"RightWrist": "Right Wrist"
},
"DisconnectReasons": {
"Unknown": "Unknown",
"LostConnection": "Lost Connection",
"Disconnected": "Disconnected",
"UnsupportedClient": "Unsupported Client",
"WrongGame": "Wrong Game",
"IncorrectPassword": "Incorrect Password",
"UnsupportedExecutable": "Unsupported Executable",
"Kicked": "Disconnected",
"Banned": "Banned",
"Failed": "Failed",
"InvalidName": "Invalid Name",
"Crashed": "Crashed",
"ModifiedGame": "Modified Game",
"FailedToLogin": "Kicked - Failed to login",
"NotATester": "Kicked - Not a tester",
"ClientScriptVerificationFail": "Client script verification failed (possible hacks)",
"ServerRestarting": "Server is restarting",
"Desync": "Desynced",
"FailedToCreateCharacter": "Kicked - Didn't create a character"
},
"DevelopersNotified": "The developers have been notified of the problem",
"NoJobLocationCloseEnough": "There are no job locations close enough!",
"NotAllowedToUseJobs": "You are not allowed to use any jobs!",
"CantUseThisJob": "You can't use this job!",
"JobChanged": "💼 You now have the {1} job",
"NeedToBeNearJob": "You need to be near your job location or a vehicle that belongs to your job!",
"DontHaveAJob": "You don't have a job!",
"StartedWorking": "💼 You are now working for the {1} job",
"StoppedWorking": "You have stopped working",
"ItemsStoredForJob": "Your personal items have been stored in your locker while you work",
"NoJobRoutesForLocation": "Your job does not have any routes for this location!",
"CurrentJobRouteDeleted": "The job route you were on has been deleted or disabled by an admin",
"YourTax": "Your tax on payday is: {1}. Use {2} for more information.",
"YourWealth": "Your wealth is: {1}. Use {2} for more information.",
"InvalidKeyBindName": "Key name not found!",
"BusinessPurchased": "🏢You are now the owner of business {1}",
"HousePurchased": "🏘️ You are now the owner of house {1}",
"CopyAllKeyBindsConfirm": "Are you sure you want to copy your keybinds to the {1} server?",
"CopyAllKeyBindsOverwriteWarning": "This will replace all your keybinds on the other server",
"NoPromptAccept": "You don't have anything to accept",
"NoPromptReject": "You don't have anything to reject",
"NotOrderingAnyBusinessItems": "You aren't ordering anything for a business!",
"BusinessOrderCanceled": "You cancelled the business item order",
"DidNotCreateCharacter": "You do not have a character to play. Goodbye!",
"BusinessOrderNotEnoughMoney": "This business doesn't have enough money to order that! Deposit some using {1}",
"ADDED-12OCT2022": "DO NOT TRANSLATE. Example of line below: You ordered 50 Colt 45 for $5000!",
"BusinessOrderSuccessInfo": "You ordered {1} {2} for {4}!",
"AccountSettings": {
"UseWhiteList": "Access whitelist",
"UseBlackList": "Access blacklist",
"TwoStepAuth": "Require 2FA code on login",
"AuthAttemptAlert": "Email login notifications",
"NoGUI": "No GUI",
"AutoLoginIP": "Automatic login by IP",
"NoServerLogo": "No server logo",
"AutoSelectLastCharacter": "Automatic spawn as most recent character",
"ShowRealTimeClock": "Show real time clock",
"UseGUIForItems": "Use GUI for inventory",
"UseRadialWheelItems": "Use pie wheel for inventory (like GTA V)",
"NoKeyBinds": "No keybinds",
"NoRandomTips": "No random tips",
"NoActionTips": "No action tips",
"ChatBoxTimestamps": "Show time in chat",
"ProfanityFilter": "Profanity filter",
"ChatAutoHide": "Automatically hide inactive chatbox",
"NoPlayerContent": "No custom images (like clan logos or spray tags)",
"ChatEmoji": "Show emoji images in chat"
},
"SaveSettings": "Save Settings",
"Cancel": "Cancel",
"AlreadyOwnVehicle": "You already own this vehicle!",
"PropertyEntranceFeeLabel": "Entrance Fee: {1}",
"NeedToBeInJobVehicle": "You need to be in a job vehicle!",
"InvalidJobRank": "Job rank not found!",
"PayPhoneRecipientAnswered": "Somebody answered the call. Use normal chat to talk to them.",
"PayPhoneAnswered": "You answered the phone. Use normal chat to talk to the caller.",
"PayPhoneRecipientHangup": "The line was disconnected. You have been charged {1}",
"PayPhoneHangup": "You hung up the phone.",
"AlreadyUsingPayPhone": "You are already using a payphone!",
"NotUsingPayPhone": "You are not using a payphone!",
"NoPayPhoneCloseEnough": "There is no payphone close enough!",
"PayPhoneNotRinging": "This payphone is not ringing!",
"PayPhoneOccupied": "This payphone is already being used by someone else!",
"PayPhoneOccupantSwitched": "A different voice is now on the line",
"PayPhoneGiven": "You gave the phone to {1}",
"PayPhoneReceived": "{1} gave you the phone",
"PayPhoneUnableToCallPlayer": "You can't call {1} at this time. Please try again later.",
"ActionTips": {
"VehicleEngineOffWhenEnteringKey": "Use {1} to turn on or off a vehicle's engine",
"VehicleLockedAfterEntryAttempt": "Use {1} to lock or unlock a vehicle",
"ShowItemsAfterPurchase": "Use {1} to see your inventory",
"BuyCommandAfterEnterBusiness": "Use {1} to buy items from a business",
"UseItemKeyAfterEquipping": "Use {1} to use your equipped item",
"UseItemKeyAfterEquippingWalkieTalkie": "Use {1} to turn on or off your radio",
"RadioCommandAfterEnablingWalkieTalkie": "Use {1} to talk on your radio",
"ReplyToDirectMessage": "Use {1} to easily reply to a private message",
"UseItemKeyAmmoAfterEquippingWeapon": "Use {1} to load an ammo item into your equipped weapon",
"AnimationStop": "Use {1} to stop your animation",
"JobEquipmentInventory": "The job equipment is in your inventory. Use {1} to see them.",
"ViewInventory": "Use {1} to see your items",
"VehicleRepairItemUsage": "Stand next to a vehicle and use {1} to repair it",
"VehicleColourItemUsage": "Stand next to a vehicle and use {1} to change it's colour",
"VehiclePartItemUsage": "Stand next to a vehicle and use {1} to upgrade with {2}",
"AmmoClipItemUsage": "Equip the weapon and use {1} to load ammo into it",
"GenericItemUsage": "Use {1} to use the {2}",
"EnterJobVehicleForRoute": "Enter a job vehicle nearby to start a job route",
"JobLocations": "Visit a job location to get a job. Use {1} to find a job location",
"JobRouteStart": "Use {1} to start a job route with this vehicle",
"PayPhoneFirstUse": "Use {1} to end the call, and {2} to give the phone to somebody nearby"
},
"NoBusinessesWithinRange": "There are no businesses within {1} meters",
"NoHousesWithinRange": "There are no houses within {1} meters",
"NoPayPhonesWithinRange": "There are no payphones within {1} meters",
"HeaderBusinessesInRangeList": "Businesses (within {1} meters)",
"HeaderHousesInRangeList": "Businesses (within {1} meters)",
"HeaderPayPhonesInRangeList": "Businesses (within {1} meters)",
"HeaderCommandsForStaffFlagList": "Admin Commands ({1})",
"PlayerLocateDistanceAndDirection": "{1} is {2} meters {3}",
"MustBeNumber": "You need to use a number!",
"HeaderJobRoutesList": "Job Routes ({1})",
"HeaderJobRouteInfo": "Job Route Information (${1})",
"InvalidJobRoute": "Job route not found!",
"PayPhoneDeleted": "The payphone was deleted",
"PayPhoneAnswer": "Use {1} to answer the payphone",
"ResetActionTipsConfirm": "Are you sure you want to reset all seen action tips?",
"ActionTipsReset": "All seen action tips have been reset.",
"NormalChatDisabled": "Normal chat is disabled by server admin. Use chat commands instead.",
"GlobalChatDisabled": "Global out-of-character chat is disabled by server admin"
}

781
locale/polish.json Normal file
View File

@@ -0,0 +1,781 @@
{
"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}",
"LocaleChanged2": "Serwer będzie teraz pokazywał wiadomości w języku {1}",
"LocaleChangedNote": "To nie zmienia wiadomości od innych graczy",
"AccentsListHeader": "Akcenty",
"HelpMainListHeader": "Pomoc - Kategorie",
"AccentNotFound": "Akcent nie znaleziony",
"AccentSet": "Ustawiłeś swój akcent na {1}",
"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",
"CantBanClient": "Nie możesz zbanować tej osoby",
"PlayerAccountBanned": "{1} został zbanowany",
"ClanNameTaken": "Klan z taką nazwą już istnieje",
"ClanCantRemoveRanks": "Nie możesz usuwać rang klanu",
"ClanCantAddRanks": "Nie możesz dodawać rang klanu",
"ClanCantChangeMemberTag": "Nie możesz zmienić tagu członka klanu",
"ClanPlayerNotInSameClan": "Ten gracz nie jest w twoim klanie",
"ClanCantChangeRankLevel": "Nie możesz zmienić poziomu rangi klanu",
"ClanCantChangeRankTag": "Nie możesz zmienić tagu rangi klanu",
"NameNotRegistered": "Twoja nazwa nie jest zarejestrowana! Użyj {1} aby stworzyć konto.",
"AutomaticLoginIPToggle": "Automatyczny login przez IP jest teraz {1}",
"CouldNotRegisterAccount": "Napotkano problem podczas tworzenia twojego konta. Proszę skontaktuj się z administratorem.",
"RandomTipsToggle": "Losowe wskazówki są teraz {1}",
"ActionTipsToggle": "Wskazówki akcji są teraz {1}",
"AutoSpawnLastCharToggle": "Automatyczny spawn jako ostatnia postać jest teraz {1}",
"AccountGUISettingToggle": "GUI jest teraz {1}",
"On": "Włączony",
"Off": "Wyłączony",
"Yes": "Tak",
"No": "Nie",
"True": "Prawda",
"False": "Fałsz",
"Locked": "Zamknięty",
"Unlocked": "Otwarty",
"PasswordNotGoodEnough": "Nowe hasło musi spełniać wymagania!",
"PasswordNeedsBase": "Hasło musi mieć przynajmniej {1}",
"PasswordNeedsCapitals": "{1} dużych liter",
"PasswordNeedsNumbers": "{1} numerów",
"PasswordNeedsSymbols": "{1} symboli",
"PasswordsDontMatch": "Hasła nie są takie same!",
"PasswordChanged": "Twoje hasło zostało zmienione!",
"AutoLoggedInIP": "Zostałeś automatycznie zalogowany przez IP!",
"WelcomeBack": "Witaj ponownie w {1}, {2}! Użyj {3} aby kontynuować.",
"WelcomeNewPlayer": "Witaj w {1}, {2}! Użyj {3} aby zagrać.",
"InvalidPlayer": "Praca nie znaleziona!",
"InvalidBusiness": "Biznes nie znaleziony!",
"InvalidHouse": "Mieszkanie nie znalezione!",
"InvalidVehicle": "Pojazd nie znaleziony!",
"InvalidClan": "Klan nie znaleziony!",
"InvalidClanRank": "Ranga klanu nie znaleziona!",
"InvalidJob": "Gracz nie znaleziony!",
"InvalidItem": "Przedmiot nie znaleziony!",
"InvalidItemType": "Rodzaj przedmiot nie znaleziony!",
"InvalidRadioStation": "Stacja radiowa nie znaleziona!",
"InvalidGate": "Brama nie znaleziona!",
"EntersProperty": "otwiera drzwi i wchodzi do {1} ({2})",
"ExitsProperty": "otwiera drzwi i wychodzi z {1} ({2})",
"EnterExitPropertyDoorLocked": "próbuje otworzyć {1} drzwi, ale nie udaje się, ponieważ są zamknięte",
"PropertyNoInterior": "Ten {1} nie ma wnętrza, ale dalej możesz używaj komend przy ikonie drzwi.",
"NoBusinessWithItemType": "Nie ma biznesu, który posiada ten przedmiot",
"HeaderKeyBinds": "Przypisania klawiszy",
"HeaderAccountHelp": "Pomoc - Konto",
"HeaderVehicleHelp": "Pomoc - Pojazd",
"HeaderVehicleDealershipHelp": "Pomoc - Dealer Samochodów",
"HeaderJobHelp": "Pomoc - Praca",
"HeaderChatHelp": "Pomoc - Czat",
"HeaderServerRules": "Zasady serwera",
"HeaderWebsiteInfo": "Strona",
"HeaderDiscordInfo": "Discord",
"HeaderAnimationsList": "Lista Animacji",
"HeaderPayAndSprayHelp": "Pomoc - Pay and Spray",
"HeaderAmmunationHelp": "Pomoc - Ammunation",
"HeaderVehicleTuneupHelp": "Pomoc - Ulepszanie Aut",
"HeaderBindableKeysHelp": "Przypisywalne klawisze",
"HeaderSkinHelp": "Pomoc - Ubrania/Skóra",
"HeaderBusinessHelp": "Pomoc - Biznes",
"HeaderClanHelp": "Pomoc - Klan",
"HeaderPlayerVehiclesList": "Pojazdy Gracza ({1})",
"HeaderPlayerBusinessesList": "Biznesy Gracza ({1})",
"HeaderClansList": "Lista Klanów",
"HeaderAdminsList": "Lista Administracji",
"HeaderAccentsList": "Lista Akcentów",
"HeaderPlayerInfo": "Informacje o Graczu ({1})",
"HeaderWealthandTaxHelp": "Informacje o Bogactwach i Podatkach",
"HeaderCommandInfo": "Informacje o Komendzie ({1})",
"HeaderRadioHelp": "Pomoc - Radio",
"HeaderRadioStationsList": "Stacje Radiowe",
"HeaderKeyBindsList": "Lista przypisań klawiszy",
"RadioVolumeChanged": "{1} Zmieniłeś głośność swojego radia na {2}%",
"VolumeLevelNotNumber": "Poziom głośności musi być liczbą",
"RadioStationLocationInvalid": "Musisz być w aucie, domu, biznesie lub mieć osobite urządzenie by zmienić stacje radiową!",
"ActionBusinessRadioStationChange": "zmienia biznesową stacje radiową na {1} ({2})",
"ActionHouseRadioStationChange": "zmienia domową stacje radiową na {1} ({2})",
"ActionVehicleRadioStationChange": "zmienia samochodową stacje radiową na {1} ({2})",
"ActionItemRadioStationChange": "zmienia stacje {1} na {2} ({3})",
"RandomVehicleCommandsDisabled": "To losowy pojazd uliczny i komendy nie mogą być na nim użyte.",
"HouseDoorLock": "Mieszkanie {1} {2}!",
"BusinessDoorLock": "Biznes {1} {2}!",
"ServerGameModeRestarting": "Tryb gry serwera się restartuje!",
"HeaderSelfItemList": "Twój ekwipunek",
"HeaderPlayerItemList": "Ekwipunek gracza ({1})",
"HeaderHouseItemList": "Ekwipunek mieszkania",
"HeaderBusinessFloorItemList": "Ekwipunek Bizneus (Na sprzedaż)",
"HeaderBusinessStorageItemList": "Ekwipunek Bizenus (Magazyn)",
"HeaderItemItemList": "Ekwipunek {1}",
"ItemSlotNotNumber": "Slot przedmiotu musi być liczbą",
"ItemSlotMustBeBetween": "Slot itemu musi być liczbą między {1} i {2}!",
"UseItemBugged": "Przedmiot, który próbujesz użyć jest popsuty. Zgłoszenie zostało wysłane do deweloperów serwera.",
"PickupItemBugged": "Przedmiot, który próbujesz podnieść jest popsuty. Zgłoszenie zostało wysłane do deweloperów serwera.",
"DropItemBugged": "Przedmiot, który próbujesz upuścić jest popsuty. Zgłoszenie zostało wysłane do deweloperów serwera.",
"HandsBusy": "Twoje ręce są zajęte",
"CantUseItemInSkinChange": "Nie możesz użyć przedmiotu podczas zmieniania swojego wizerunku",
"CantDropItemInSkinChange": "Nie możesz upuścić przedmiotu podczas zmieniania swojego wizerunku",
"CantPickupItemInSkinChange": "Nie możesz podnieść przedmiotu podczas zmieniania swojego wizerunku",
"CantSwitchItemInSkinChange": "Nie możesz zmienić przedmiotu podczas zmieniania swojego wizerunku",
"CantGiveItemInSkinChange": "Nie możesz dać przedmiotu podczas zmieniania swojego wizerunku",
"CantTakeItemInSkinChange": "Nie możesz wziąć przedmiotu podczas zmieniania swojego wizerunku",
"ItemUnequippableNoAmmo": "{1} w slocie {2} nie ma amunicji i nie może zostać użyty!",
"NoSpaceSelfInventory": "Nie masz już miesca w ekwipunku",
"Business": "biznes",
"House": "mieszkanie",
"Clan": "klan",
"Vehicle": "pojazd",
"Item": "przedmiot",
"ItemType": "rodzaj przedmiotu",
"Gate": "brama",
"Door": "drzwi",
"ClanRank": "ranga klanu",
"JobRank": "praca rangi",
"RadioStation": "stacja radiowa",
"Months": [
"Styczeń",
"Luty",
"Marzec",
"Kwiecień",
"Maj",
"Czerwiec",
"Lipiec",
"Sierpień",
"Wrzesień",
"Październik",
"Listopad",
"Grudzień"
],
"WeekDays": [
"Niedziela",
"Poniedziałek",
"Wtorek",
"Środa",
"Czwartek",
"Piątek",
"Sobota"
],
"CardinalDirections": {
"North": "Północ",
"Northeast": "Północny wschód",
"East": "Wschód",
"Southeast": "Południowy zachód",
"South": "Południe",
"Southwest": "Południowy wschód",
"West": "Zachód",
"Northwest": "Północny zachód"
},
"NewPlayerReadyToPlay": [
"Dostałeś trochę pieniędzy. Użyj {1} aby znaleść miejsca do kupowania przedmiotów.",
"Jeżeli potrzebujesz pieniędzy, żółte kropki na mapie to miejsca pracy.",
"Aby zdobyć auto musisz odwiedzić dealera samochodów. Możesz też wypożyczyć samochód przy spawnie lub użyć pociągu",
"Pamiętaj aby przeczytać {1} i użyć {2} aby zdobyć więcej informacji."
],
"YourCurrentVehicleDeleted": "Samochód w którym przebywałeś został usunięty.",
"Distance": "Odległość",
"Meters": "Metry",
"Feet": "Stopy",
"Kilometers": "Kilometry",
"Miles": "Mile",
"MustBeVehicleDriver": "Musisz być kierowcą tego pojazdu!",
"PlayerJoinedServer": "{1} dołączył do gry z {2}!",
"PlayerLeftServer": "{1} wyszedł z gry! ({2})",
"TakeItemFromHouse": "bierze {1} z mieszkania",
"TakeItemFromBusinessStorage": "bierze {1} z magazynu biznesu",
"TakeItemFromBusiness": "bierze {1} z biznesu",
"TakeItemFromItem": "bierze {1} z {2}",
"TakeItemFromVehicleTrunk": "bierze {1} z bagażnika",
"TakeItemFromVehicleDash": "bierze {1} ze schowka",
"AccountHelp": [
"NIE PODAWAJ nikomu swojego hasła. {1} nigdy nie zapyta cię o twoje hasło",
"Użyj {1} aby zmienić swoje hasło i {2} jeżeli je zapomniałeś",
"Kilka ustawień które możesz użyć: {1}"
],
"VehicleHelp": [
"Twoje osobiste auta zapisują się za każdym razem jak ktoś wyjdzie z gry!",
"Odwiedź dealera samochodów, aby zakupić pojazd (Użyj {1} po więcej informacji)",
"Kilka komend: {1}",
"Odwiedź warsztat mechanika aby naprawić, pokolorować i/lub ulepszyć swój pojazd! {1} po więcej informacji"
],
"VehicleDealershipHelp": [
"Odwiedź dealera samochodów, aby zakupić nowy pojazd. Użyj {1} aby jednego zlokalizować.",
"Przy dealerze samochodów, wejdź do auta, które chcesz kupić i ukaże ci się jego cena.",
"Jeśli chcesz kupić pojazd, użyj {1} i dostanie kluczyki by przetestować je na parkingu.",
"Odjedź od dealera samochodów, aby potwierdzić zakup pojazdu."
],
"JobHelp": [
"Odwiedzaj miejsca pracy aby zarabiać pieniądze. Szkuaj zółtych punktów na mapie",
"Przy miejscu pracy, użyj {1} aby zdobyć prace. Użyj {2} by opuścić swoją pracę",
"Użyj {1} aby zacząć pracę. Możesz też dostać pracę {2} i {3}",
"Większość pojazdów służbowych jest zamknięta. Użyj {1} obok niego aby do niego wsiąść.",
"Przy wsiadaniu do pojazdu służbowego, dostaniesz informacje jak wykonać podjętą pracę."
],
"ChatHelp": [
"Są 2 główne rodzaje chatów: Poza postacią (OOC) i w postaci (IC)",
"Mieszanie tych 2 rodzajów jest nieprawidłowym roleplay'em. Zobacz {1} po więcej informacji.",
"Kilka komend na chacie: {1}",
"Niektóre mają dostępne krótsze nazwy ({1} by rozmawiać, {2} by krzyczeć, itp.)"
],
"ServerRulesHelp": [
"Nierealistyczne akcje (powergaming) są niedozwolone. Nie jesteś superman'em.",
"Roleplay na tle terrorystycznym jest niedozowolony.",
"Zawszę słuchaj się administracji.",
"Nie mieszaj czatów (metagaming). Nie możesz używać informacji w postaci, jeżeli uzyskałeś je poza nią.",
"Używaj języka angielskiego na głównych chatach. Jeżeli nie jestes dobry z angielskiego, użyj {1}"
],
"AnimationHelp": [
"Animacje pozwalają ci bardziej wczuć się w swoją role.",
"Używaj {1} lub {2} z nazwą by użyć animacji.",
"By zobaczyć liste animacji, użyj {1}"
],
"WeaponHelp": [
"Odwiedź sklep z bronią, aby kupić nową broń. Użyj {1} by znaleźć taki sklep.",
"Musisz posiadać licenje na broń, aby takową kupić.",
"Licencje broni są wydawanie przez policję. Zaaplikuj się tam, aby taką zdobyć.",
"Bronie mogą być też kupowane nielegalnie od niektórych bizensów, dealerów broni i klanów."
],
"SkinHelp": [
"W sklepie z ubraniami, użyj {1} aby kupić ubrania.",
"Kiedy masz ubrania, wyposaż się w nie i użyj je jak każdy inny przedmiot by ukazać modyfikacje postaci (sprawdź {1} aby zobaczyć jak używać itemy)",
"Niektóre skiny są dostępne tylko dla niektórych osób, klanów lub z innych powodów."
],
"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, {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."
],
"BusinessHelp": [
"Użyj {1} aby kupować przedmioty lub {2} aby zobaczyć listę co jest na sprzedaż w jakimkolwiek bizensie.",
"Biznesy mają niebieskie nazwy nad ikoną przy ich wejściu.",
"Komendy właściciela biznesu: {1}",
"Nowe auto na sprzedaż pojawi się po odjechaniu od dealera samochodów."
],
"ClanHelp": [
"Zapytaj administratora o stworzenie klanu (Podobne do fakcji/grup/rodzin)",
"Właściciele klanu mają pełną kontrole over nad ich klanem od momentu gdy jest stworzony",
"Komendy klanu: {1}",
"Więcej komend klanu: {1}"
],
"RadioStationHelp": [
"Użyj {1} by ustawić stację twojego auta, mieszkania lub biznesu",
"Użyj {2} by zobaczyć listę stacji",
"Możesz zmienić głośność swojego radia używając {1} i liczbą od 0 do 100 jako procenty"
],
"WealthAndTaxHelp": [
"Twoje podatki przy wypłacie są {1} procentami twojego przeliczonego bogactwa.",
"Twoja przeliczone bogactwo jest obliczone wliczając twoje pojazdy, mieszkania i biznesy, które posiadasz.",
"Każdy pojazd jest {1}, każde mieszkanie jest {2} i każdy biznes jest {3}",
"Użyj {1} aby zobaczyć swoje bogactow i {2} zobaczyć ile będziesz musiał zapłacić przy następnej wypłacie"
],
"MustBeInAVehicle": "Musisz być w pojeździe!",
"MustBeInOrNearVehicle": "Musisz być w lub obok pojazdu!",
"MustBeInVehicleFrontSeat": "Musisz być w przednim siedzeniu pojazdu!",
"MustBeInVehicleDriverSeat": "Musisz być kierowcą pojazdu!",
"DontHaveVehicleKey": "Nie masz klucza do tego pojazdu!",
"NoGateAccess": "Nie masz dostępu do tej bramy!",
"GateBroken": "Ta brama jest popsuta!",
"GateHacked": "Ta brama nie odpowiada!",
"RadioJammed": "Słysysz tylko szumy z radia.",
"VehicleNotForSale": "To auto nie jest na sprzedaż!",
"VehicleNotForRent": "Tego pojazdu nie można wypożyczyć!",
"BusinessNotForSale": "Ten biznes nie jest na sprzedaż!",
"BusinessNotForRent": "Tego biznesu nie można wypożyczyć!",
"HouseNotForSale": "This house is not for sale!",
"HouseNotForRent": "Tego biznesu nie można wypożyczyć!",
"DealershipPurchaseTestDrive": "Odjedź pojazdem od dealera samochodów aby go kupić, lub wysiądź aby anulować zakup.",
"DealershipPurchaseExitedVehicle": "Anulowałeś kupno pojazdu, ponieważ wysiadłeś z pojazdu!",
"VehiclePurchaseComplete": "Ten pojazd jest teraz twój, zapiszę się nieważne gdzie jest.",
"VehiclePurchaseNotEnoughMoney": "Nie masz wystarczająco dużo funduszy aby kupić to auto!",
"HousePurchaseNotEnoughMoney": "Nie masz wystarczająco dużo funduszy aby kupić to mieszkanie!",
"BusinessPurchaseNotEnoughMoney": "Nie masz wystarczająco dużo funduszy aby kupić ten biznes!",
"ADDED-21JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
"HeaderPlayerHousesList": "Mieszkania Gracza ({1})",
"HeaderPlayerStaffFlagsList": "Flagi Administracji ({1})",
"HeaderStaffFlagsList": "Flagi Administracji",
"NonRPName": "Nieprawidłowa nazwa roleplay! Wybierz nową:",
"InvalidStaffFlag": "Flaga administracji nie znaleziona!",
"InvalidClanFlag": "Flaga klanu nie znaleziona!",
"InvalidLocale": "Język nie znaleziony!",
"HeaderJobUniformList": "Mundury robocze ({1})",
"HeaderJobEquipmentList": "Wyposażenie robocze ({1})",
"InvalidJobUniform": "Mundur roboczy nie znaleziony!",
"InvalidJobEquipment": "Wyposażenie robocze nie znalezione!",
"HeaderVehiclesInRangeList": "Pojazdy w {1}",
"NoVehiclesWithinRange": "Nie ma pojazdów w {1}",
"AmountNotNumber": "Ilość musi być liczbą!",
"NeedToBeWorking": "Musisz być w pracy! Użyj {1} w punkcie pracy lub obok pojazdu służbowego.",
"NeedToBeOnJobRoute": "Musisz być w trasie! Użyj {1} w pojeździe służbowym",
"CurrentJobRouteVehicleColoursChanged": "Kolory pojazdów na twojej trasie zostały zmienione przez Administratora.",
"NotYourJob": "To nie twoja praca!",
"JobPoints": "Możesz zdobyć pracę udając się do żółtych punktów na mapie.",
"QuitJobToTakeAnother": "Jeżeli chcesz tą prace, użyj {1} aby opuścić swoją dotychczasową pracę.",
"NotAJobVehicle": "To nie jest pojazd służbowy!",
"NotYourJobVehicle": "To nie jest twój pojazd służbowy!",
"HeaderPickupTypes": "Rodzaję Pickup'ów",
"HeaderBlipTypes": "Rodzaje Ikon Mapy",
"InvalidGPSLocation": "Nie ma lokalizacji z taką nazwą lub rodzajem",
"HeaderBusinessList": "Biznesy",
"VehicleForSale": "Ten {1} jest do kupienia za {2}! Użyj {3} jeżeli chcesz go kupić",
"VehicleForRent": "Ten {1} jest do wynajęcia za {2}! Użyj {3} jeżeli chcesz go wynająć",
"ADDED-31JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
"LoginFailedInvalidPassword": "Nieprawidłowe hasło! Pozostało {1} prób",
"LoginFailedNoPassword": "Musisz podać hasło! ! Pozostało {1} prób",
"RegistrationFailedNoPassword": "Musisz podać hasło!",
"RegistrationFailedNoPasswordConfirm": "Musisz potwierdzić hasło!",
"RegistrationFailedNoEmail": "Musisz podać adres email!",
"AccountNameAlreadyRegistered": "Twoja nazwa jest już zarejestrowana!",
"AlreadyLoggedIn": "Jesteś już zalogowany!",
"RegistrationFailedInvalidEmail": "Nieprawidłowy adres email!",
"RegistrationFailedPasswordMismatch": "Hasła się nie zgadzają!",
"RegistrationFailedCreateError": "Nie udało się stworzyć twojego konta!",
"RegistrationSuccess": "Twoje konto zostało utworzone!",
"RegistrationEmailVerifyReminder": "Nie zapomnij zweryfikować swojego adresu email! Kod werifikacyjny został wysłany na twój adres email.",
"RegistrationCreateCharReminder": "Aby zagrać na serwerze, musisz stworzyć postać.",
"NoCharactersGUIMessage": "Nie masz postaci. Czy chciałbyś ją stworzyć?",
"NoCharactersGUIWindowTitle": "Brak postaci",
"NoCharactersChatMessage": "Nie masz postaci. Użyj {1} aby ją stworzyć.",
"NeedEmailFor2FA": "Musisz przypisać adres email do swojego konta, aby używać weryfikacji dwuetapowej.",
"NeedEmailVerifiedFor2FA": "Musisz zweryfikować swój adres email, aby używać weryfikacji dwuetapowej",
"SetEmailHelpTip": "Użyj {1} aby ustawić swój adres email.",
"VerifyEmailHelpTip": "Użyj {1} aby zweryfikować swój adres email.",
"ADDED-13FEB2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
"NearbyRadio": "Pobliskie radio",
"FromRadio": "Z radia",
"ToRadio": "Do radia",
"NeedToEnterPropertyCommand": "Musisz najpierw wejść do {1}! Użyj {2} aby wejść lub wyjść",
"NeedToEnterPropertyKeyPress": "Musisz najpierw wejść do {1}! Naciśnij {2} aby wejść lub wyjść",
"InventoryFullCantCarry": "Nie masz miejsca aby to podnieść (pełny ekwipunek)!",
"NotEnoughCashNeedAmountMore": "Nie masz wystarczająco miejsca! Potrzebujesz jeszcze {1}!",
"AmountMustBeMoreThan": "Wartość musi być większa od {1}!",
"WeaponBanned": "Nie możesz używać ani kupować broni!",
"TimeNotNumber": "Czas musi być numerem",
"HeaderDefaultBusinessItemTypes": "Wzory przedmiotów biznesowych",
"FixingStuck": "Naprawianie twojej pozycji i świata wirtualnego ...",
"CantUseCommandYet": "Musisz poczekać zanim znowu użyjesz tej komendy!",
"NotATester": "Nie jesteś testerem!",
"AccessDenied": "OdmowaDostępu",
"InvalidSkin": "Ta skórka jest nieprawidłowa!",
"HeaderInteriorTypes": "Wnętrza",
"GUIAccountSettingToggle": "Przełączyłeś {1} GUI",
"ADDED-23MAR2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations",
"CarCommandHelp": "Możesz kupić pojazd poprzez odwiedzenie salonu samochodowego. Użyj {1} aby uzyskać więcej informacji.",
"SkinCommandHelp": "Możesz zmienić swój wygląd poprzez odwiedzenie sklepu odzieżowego. Użyj {1} aby uzyskać więcej informacji.",
"BusinessVehiclesRespawned": "Wszystkie pojazdy biznesowe zostały zrespione przez admina!",
"JobVehiclesRespawned": "Wszystkie pojazdy firmowe zostały zrespione przez admina!",
"PlayerVehiclesRespawned": "Wszystkie pojazdy gracza zostały zrespione przez admina!",
"ClanVehiclesRespawned": "Wszystkie pojazdy klanowe zostały zrespione przez admina!",
"PublicVehiclesRespawned": "Wszystkie pojazdy publiczne zostały zrespione przez admina!",
"EmptyVehiclesRespawned": "Wszystkie puste pojazdy zostały zrespione przez admina!",
"AllVehiclesRespawned": "Wszystkie pojazdy zostały zrespione przez admina!",
"AllVehiclesReloaded": "Wszystkie pojazdy biznesowe zostały ponownie załadowane przez admina!",
"YourVehicleRespawned": "Twój pojazd został zrespiony",
"PlayerIPBanned": "{1} został zbanowany poprzez IP!",
"PlayerCharacterBanned": "{1} został zbanowany poprzez postać!",
"PlayerSubNetBanned": "{1} został zbanowany poprzez podsieć!",
"CantModifyBusiness": "Nie możesz zarządzać ani modyfikować tego biznesu",
"CantModifyHouse": "Nie możesz zarządzać ani modyfikować tego mieszkania",
"ServerTimeSet": "{1} ustawił czas na {2}",
"ServerWeatherSet": "{1} ustawił pogodę na {2}",
"ServerSnowSet": "{1} ustawił spadający śnieg na {2} i śnieg na podłożu na {3}",
"AllJobsReloaded": "Wszystkie prace zostały ponownie załadowane przed admina",
"ServerLogoSet": "{1} ustawił logo serwera na {2}",
"ServerGUISet": "{1} ustawił interfejs tego serwera na {2}",
"ServerBusinessBlipsSet": "{1} ustawił wszystkie punkty biznesowe na {2}",
"ServerHouseBlipsSet": "{1} ustawił wszystkie punkty mieszkaniowe na {2}",
"ServerJobBlipsSet": "{1} ustawił wszystkie punkty pracy na {2}",
"ServerBusinessPickupsSet": "{1} ustawił wszystkie interakcje biznesowe na {2}",
"ServerHousePickupsSet": "{1} ustawił wszystkie interakcje mieszkaniowe na {2}",
"ServerJobPickupsSet": "{1} ustawił wszystkie interakcje pracy na {2}",
"BusinessBuyItemsLabel": "Użyj {1} aby kupić przedmioty",
"PropertyEnterCommandLabel": "Użyj {1} aby wejść",
"PropertyEnterKeyPressLabel": "Naciśnij {1} aby wejść",
"PropertyForSaleLabel": "Na sprzedaż: {1}",
"PropertyForRentLabel": "Wynajem: {1} dziennie",
"RemainingTaxPaidInMoney": "Pokryłeś pozostałe podatki za {1}.",
"LostMoneyFromTaxes": "Straciłeś trochę pieniędzy ponieważ twoję podatky przewyższają twoją wypłatę!",
"NextPaycheckRepossessionWarning": "Jeżeli nie będziesz miał wystarczającej sumy aby pokryć podatki, stracisz swoje przedmioty przy kolejnej wypłacie!",
"NotEnoughMoneyForTax": "Nie masz wystarczająco dużo pieniędzy aby zapłacić podatki!",
"AssetsRepossessedForTax": "Straciłeś {1} pojazdów, {2} mieszkania, and {3} biznesów, ponieważ nie byłeś w stanie zapłacić za podatki!",
"Closed": "Zakmnięte",
"Open": "Otwarte",
"VehicleDealershipLabel": "Wsiądz do pojazdu jako kierowca aby go kupić",
"TakeJobLabel": "Użyj /takejob aby tu pracować",
"StartWorkLabel": "Uzyj /startwork aby zacząć prace",
"JobEquipAndUniformLabel": "Użyj /uniform i /equip po przedmioty firmowe, albo /stopwork aby przestać pracować",
"NotYourJobLabel": "Masz już inną pracę. Użyj /quitjob jeżeli wolisz tą",
"JobLabel": "{1} Praca",
"PaydayBonusSet": "🤑 {1} ustawił bonus wypłaty na {2}",
"AllHousesReloaded": "🏘️ Wszystkie mieszkania zostały ponownie załadowane przez admina!",
"AllRadioStationsReloaded": "📻 Wszystkie stacje radiowe zostały ponownie załadowane przez admina!",
"PlayerKicked": "🦶 {1} został wyrzucony z serwera",
"AllBusinessesReloaded": "🏢 Wszystkie biznesy zostały ponownie załadowane przez admina!",
"UnableToDoThat": "Nie jesteś w stanie tego zrobić",
"SetVehicleClanConfirmMessage": "Czy na pewno chcesz oddać ten pojazd na rzecz twojego klanu?",
"SetVehicleClanConfirmTitle": "Uwaga!",
"SetItemPriceBelowOrderPriceMessage": "Czy na pewno chcesz ustawić cenę tego przedmiotu, poniżej jego rzeczywistej ceny? Będziesz tracił {1} za każdy zakup!",
"SetItemPriceBelowOrderPriceTitle": "Uwaga!",
"MustOwnVehicle": "Nie jesteś właścicielem tego pojazdu!",
"RandomTips": [
"Zółte kropki na mapie oznaczają miejsca pracy",
"Możesz przypisywać klawisze. Użyj {1} aby uzyskać więcej szczegółów",
"Użyj {1} jeżeli nie chcesz uzyskiwać więcej wskazówek",
"Możesz edytować swoje przypisane klawisze używając {1} i {2}",
"Naciśnij aby zobaczyć swój ekwipunek oraz klawiszy z numerami aby wybrać przedmiot",
"Użyj {1} przy biznesie aby kupować przedmioty",
"Znalazłeś błąd? Zgłoś go przy użyciu {1}",
"Masz pomysł albo jakąś sugestje? Podziel się nią z nami przy użyciu {1}",
"Chcesz kupić biznes? Użyj {1} przy biznesie na sprzedaż",
"Chcesz kupić mieszkanie? Użyj {1} przy mieszkaniu na sprzedaż",
"Chcesz kupić pojazd? Odwiedź salon samochodowy aby uzyskać więcej informacji!",
"Zmień się w inna postać przy użyciu {1}",
"Użyj {1} aby automatycznie zalogować się w przypadku połączenia się z identycznego IP",
"Użyj {1} aby włączyć/wyłączyć światła w twoim mieszkaniu/biznesie",
"Użyj {1} aby włączyć radio w twoim pojezdzie, mieszkaniu albo biznesie",
"Chcesz utworzyć klan? Użyj {1} po więcej informacji",
"Legalne bronie mogą zostać kupione w każdym sklepie Ammunation"
],
"PromptResponseTip": "Użyj {1} aby zaakceptować lub {2} aby odrzucić",
"PlayerConnecting": "👋 {1} łączy się z serwerem",
"GetStartedJobVehicle": "Wejdź do {1} aby rozpocząć.",
"VehicleTypes": {
"Car": "Samochód",
"Truck": "Cieżarówka",
"Van": "Van",
"Taxi": "Taksówka",
"Bus": "Autobus",
"PoliceCar": "Samochód Policyjny",
"Ambulance": "Ambulans",
"FireTruck": "Pojazd pożarowy",
"Bike": "Rower",
"Motorbike": "Skuter",
"Boat": "Łódka",
"Helicopter": "Śmigłowiec",
"Plane": "Samolot",
"Train": "Pociąg"
},
"AlreadyOnJobRoute": "Jesteś już w trakcie drogi!",
"GaveVehicleToClan": "Oddałeś to {1} na rzecz swojego klanu!",
"JobDisabled": "Ta praca jest wyłączona!",
"SetHouseClanConfirmMessage": "Czy na pewno chcesz oddać to mieszkanie na rzecz twojego klanu?",
"SetHouseClanConfirmTitle": "Uwaga!",
"SetBusinessClanConfirmMessage": "Czy na pewno chcesz oddać ten biznes na rzecz twojego klanu?",
"SetBusinessClanConfirmTitle": "Uwaga!",
"MustOwnHouse": "Nie jesteś właścicielem tego mieszkania!",
"MustOwnBusiness": "Nie jesteś właścicielem tego biznesu!",
"GaveHouseToClan": "Oddałeś to mieszkanie na rzecz twojego klanu!",
"GaveBusinessToClan": "Oddałeś ten biznes na rzecz twojego klanu!",
"BuyBusinessConfirmMessage": "Czy na pewno chcesz kupić tą firmę?",
"BuyBusinessConfirmTitle": "Uwaga!",
"BuyHouseConfirmMessage": "Czy na pewno chcesz kupić to mieszkanie?",
"BuyHouseConfirmTitle": "Uwaga!",
"BuyBusinessLabel": "Użyj {1} aby kupić tą firmę",
"BuyHouseLabel": "Użyj {1} aby kupić to mieszkanie",
"RentHouseLabel": "Użyj {1} aby wynająć to mieszkanie",
"AccountEmailAlreadyVerified": "Już ustawiłeś oraz zweryfikowałeś swój email!",
"EmailVerificationCodeSent": "Kod weryfikacyjny wraz z instrukcjami został wysłany na twój email.",
"GUIPlayAsCharacterButton": "Graj",
"GUINewCharacterButton": "Nowa postać",
"GUIPreviousCharacterButton": "Poprzednie",
"GUINextCharacterButton": "Następne",
"GUICharacterSelectWindowTitle": "Wybierz postać",
"GUICharacterSelectMoneyLabel": "Pieniądze: {1}",
"GUICharacterSelectClanLabel": "Klan: {1}",
"GUICharacterSelectLastPlayedLabel": "Ostation grano: {1} dni, {2} godzin, {3} minut temu",
"GUILoginWindowLabelEnterPassword": "Proszę podać swoje hasło",
"GUILoginWindowSubmitButton": "Login",
"GUILoginWindowResetPasswordButton": "Reset",
"GUILoginWindowPasswordPlaceholder": "Hasło",
"GUILoginWindowForgotPasswordLabel": "Zapomniałeś hasła?",
"GUIRegisterWindowLabelCreateAccount": "Stwórz konto",
"GUIRegisterWindowPasswordPlaceholder": "Hasło",
"GUIRegisterWindowConfirmPasswordPlaceholder": "Potwierdz hasło",
"GUIRegisterWindowEmailPlaceholder": "Email",
"GUIRegisterWindowSubmitButton": "Stwórz konto",
"GUINewCharacterMessageLabel": "Nazwij swoją postać",
"GUINewCharacterFirstNamePlaceholder": "Imię",
"GUINewCharacterLastNamePlaceholder": "Nazwisko",
"GUINewCharacterSubmitButton": "Stwórz postać",
"GUIChangePasswordWindowTitle": "Zmień hasło",
"GUIChangePasswordPasswordLabel": "Podaj nowe hasło",
"GUIChangePasswordPasswordPlaceholder": "Hasło",
"GUIChangePasswordConfirmPasswordPlaceholder": "Potwierdz hasło",
"GUIChangePasswordSubmitButton": "Zmień hasło",
"GUIResetPasswordWindowMessage": "Zresetuj hasło",
"GUIResetPasswordConfirmEmailLabel": "Proszę potwierdz swój email",
"GUIResetPasswordEmailPlaceholder": "Email",
"GUIResetPasswordSubmitButton": "Zresetuj hasło",
"GUIResetPasswordLoginButton": "Login",
"GUIResetPasswordRememberMessage": "Pamiętasz swoje hasło?",
"HeaderJobList": "Prace",
"HeaderBusinessInfo": "Informacje o biznesie",
"HeaderHouseInfo": "Informacje o mieszkaniu",
"HeaderClanInfo": "Informacje o klanie",
"Locales": {
"English": "Angielski",
"Russian": "Rosyjski",
"Spanish": "Hiszpański",
"German": "Niemiecki",
"Dutch": "Holenderski",
"Polish": "Polski",
"Chinese": "Chiński",
"French": "Francuski",
"Japanese": "Japoński",
"Slovak": "Słowacki",
"Arabic": "Arabski"
},
"TwoFactorAuthSet": "⚙️ Włączyłeś weryfikacje dwu-etapową {1}",
"AccountServerLogoSet": "⚙️ Zmieniłeś logo serwera {1}",
"ChatScrollLinesNotNumber": "Ilość linijek musi być numerem",
"ChatScrollLinesMustBeBetween": "Iloś linijek musi być pomiędzy {1} i {2}",
"ChatScrollLinesSet": "Czat będzie teraz scrollował {1} linijek na raz",
"InvalidEmailVerificationCode": "Nieprawidłowy kod weryfikacyjny! Nowy kod został stworzony i wysłany na twojego email'a.",
"EmailVerified": "Twój email został zweryfikowany",
"EmailVerifiedTip": "Możesz teraz używać email'a do resetowania hasła, weryfikacji dwu-etapowej, logowaniu z nowego urządzenia itp.",
"CommandRequiresLogin": "Musisz być zalogowany, aby użyć komendy {1}",
"CommandDisabled": "Komenda {1} jest wyłączona",
"CommandDisabledOnDiscord": "Komenda {1} nie jest dostępna na discordzie",
"CommandNotFoundHelpTip": "Komenda {1} nie istnieje! Użyj {2} aby zobaczyć komendy i informacje.",
"CommandNotFoundPossibleMatchTip": "Komenda {1} nie istnieje! Czy miałeś na myśli {2}?",
"CommandNoPermissions": "Nie masz uprawnień aby użyć komendy {1}",
"GUIResetPasswordCodeInputLabel": "Sprawdź swój email, aby uzyskać kod",
"GUIResetPasswordCodePlaceholder": "Kod weryfikacyjny",
"GUIErrorTitle": "Error",
"GUIWarningTitle": "Uwaga",
"GUIInfoTitle": "Informacje",
"GUIOkButton": "Ok",
"GUIErrorResetPasswordFailedInvalidEmail": "Nieprawidłowy email!",
"HeaderVehicleInfo": "Informacje o pojeździe",
"HeaderClanRanksList": "Ranga w klanie",
"HeaderNPCInfo": "Informacje o NPC",
"NPCAnimationSet": "Ustawiłeś animacje NPC {1} na animacje {2}",
"NPCNameSet": "Ustawiłeś nazwę NPC {1} na {2}",
"VehicleTooFar": "Jesteś za daleko od pojazdu!",
"HeaderPropertyTemplateTypes": "Rodzaje posesji",
"MustBeLoggedInAndSpawnedToChat": "Musisz być zalogowany oraz zrespiony aby rozmawiać na czacie!",
"MutedCantChat": "Jesteś wyciszony i nie możesz rozmawiać na czacie!",
"CantUseMegaphone": "Musisz posiadać megafon albo siedzieć w pojeździe w uprzywilejowanym!",
"HeaderAnimationHelp": "Info o Animacjach",
"HeaderBadgeInfo": "Informacje o odznace ({1})",
"NoItemCloseEnough": "W pobliżu nie ma przedmiotu",
"CantDropJobEquipmentItem": "Nie możesz wyrzucać przedmiotów służbowych",
"CantPutJobEquipmentItem": "Nie możesz przechowywać przedmiotów służbowych",
"NoItemEquipped": "Nie masz żadnego wybranego przedmiotu",
"NoItemInActiveSlot": "Nie masz żadnego przedmiotu w twoim aktywnym slocie przedmiotów",
"CantPutItemInSkinChange": "Nie możesz przechowywać przedmiotów while podczas zmieniania swojego wyglądu",
"NothingToTakeItemFrom": "W pobliżu nie ma żadnego pojemnika, z którego można wziąć przedmioty",
"NoAmmoToLoadIntoWeapon": "Nie masz żadnej amunicji do {1}",
"LoadAmmoIntoWeaponHelpCommand": "Aby wprowadzić ten pocisk do broni, weź broń i wpisz {1}",
"LoadAmmoIntoWeaponHelpKeyPress": "Aby wprowadzić ten pocisk do broni, weź broń i wciśnij {1}",
"NobodyCloseEnoughToHandcuff": "Nie ma nikogo w pobliżu do zakucia",
"NobodyCloseEnoughToTie": "Nie ma nikogo w pobliżu do związania",
"PlayerNotSurrenderedHandcuff": "{1} nie może być zakuty! Muszą się poddać, być nieprzytomni albo dostać z paralizatora",
"PlayerNotSurrenderedTie": "{1} nie może być związany! Muszą się poddać, być nieprzytomni albo dostać z paralizatora",
"HeaderCharactersListSelf": "Twoje postacie",
"HeaderCharactersListOther": "Postacie {1}",
"CharacterSelectHelpText": "Użyj {1} aby wybrać postać albo {2} aby stworzyć nową postać",
"ItemDoesntDoAnythingOnUse": "{1} nic nie robi kiedy próbujesz go użyć.",
"ItemRadioStationTip": "Użyj {1} aby wybrać stacje radiową",
"VehicleLockedCommandTip": "🔒 Ten {1} jest zamknięty. Użyj {2} aby go otworzyć",
"VehicleLockedKeyPressTip": "🔒 Ten {1} jest zamknięty. Press {2} aby go otworzyć",
"VehicleLockedCantUnlock": "🔒 Ten {1} jest zamknięty i nie masz do niego kluczy",
"CurrentlyRentingThisVehicle": "Wypożyczasz ten {1} za {2} co minute. Użyj {3} jeżeli chcesz przestać go wypożyczać.",
"VehicleBelongsTo": "Ten {1} należy do {2} ({3})",
"NotOwned": "Bez właściciela",
"NotCloseEnoughToItemContainer": "Nie jesteś wystarczająco blisko czegokolwiek co może pomieścić przedmioty",
"Job": "Praca",
"Player": "Gracz",
"BusinessIsNowPaintBall": "Ten biznes jest teraz areną paintball",
"JoinedPaintBall": "Dołączyłeś do gry w paintball'a.",
"ItemsStoredForPaintBall": "Twoje przedmioty zostały umieszczone w szafce i zostaną do ciebie zwrócone jak opuścisz grę w paintball'a",
"LeftPaintBall": "Opusciłeś grę w paintball'a. Twoje itemy zostały zwrócone.",
"PaintBallEnded": "Gra w paintball'a się zakończyła. Twoje itemy zostały zwrócone.",
"HeaderEventWinners": "Zwycięzcy",
"YourPaintBallResults": "Masz {1} zabójstwo i {2} śmierci w tym meczu",
"NoPrivateMessageToReply": "Nie dostałeś żadnej prywatnej wiadomości na którą mogłbyś odpowiedzieć",
"WeaponDoesNotUseAmmo": "{1} nie używa amunicji",
"ChatBoxTimestampsToggle": "{1} zegar na czacie",
"ProfanityFilterSet": "{1} system cenzury na czacie",
"ResetAllKeyBindsConfirm": "Czy jesteś pewnien, że chcesz zresetować wszystkie przypisane klawisze na domyślne?",
"NotRentingAVehicle": "Nie wypożyczasz żadnego pojazdu!",
"StoppedRentingVehicle": "Przestałeś wypożyczać {1}",
"VehicleEngineStartKeyPressTip": "Silnik {1} jest wyłączony. Naciśnij {2} aby go włączyć.",
"VehicleEngineStartCommandTip": "Silnik {1} jest wyłączony. Użyj {2} aby go włączyć.",
"StartedRentingVehicle": "Wypożyczasz teraz ten {1} za {2} co minute. Aby przestać wypożyczać, użyj {3}",
"VehicleAlreadyRentedByOther": "Ten pojazd jest już wypożyczony przez kogoś innego",
"VehicleAlreadyRentedBySelf": "Już wypożyczasz ten pojazd",
"JobRankTooLow": "Nie jesteś wystarczająco wysoką rangą!",
"InvalidKeyName": "Wprowadzone ID klawisza lub nazwa jest błędna!",
"KeyBindsReset": "Wszystkie twoje przypisania klawiszy zostały zresetowane",
"KeyBindNameTip": "Używaj ID klawiszy, liter lub numerów. Nie używaj spacji.",
"UniversalInlineExamplesList": "Przykłady: {1}",
"KeyBindRemoved": "Usunąłeś przypisanie dla klawisza {1}",
"KeyBindAdded": "Przypisałeś klawisz {1} do {2}",
"CopyAllKeyBindsToServerConfirm": "Czy jesteś pewien, że chcesz skopowiać swoje wszystkie przypisania na serwer {1}?",
"CopiedAllKeyBindsToServer": "Wszystkie twoje przypisania zostały skopiowane na serwer {1}",
"MustBeSpawned": "Musisz być zrespiony!",
"ChatEmojiSet": "Włączyłeś automatyczne emoji na czacie {1}",
"FishingLineNotCast": "Nie zarzuciłeś wędki!",
"CantFishHere": "Nie możesz tutaj łowić! Musisz być blisko wody lub na łódce!",
"NeedFishingRod": "Musisz trzymać wędke!",
"FishingCastCommandHelp": "Użyj {1} aby zarzucić swoją wędke",
"FishingCastKeyBindHelp": "Naciśnij {1} aby zarzucić swoją wędke",
"Paused": "Pauza",
"PaintBallAlmostWin": "{1} potrzebuje tylko {2} zabójstw aby wygrać mecz!",
"HeaderClanFlagsList": "Flagi klanu ({1})",
"PleaseWait": "Prosze czekać...",
"HeaderServerRulesList": "Zasady serwera",
"FrequencyChannelChanged": "Ustawiłeś kanał swojego {1} w slocie {2} na {3}",
"ItemTurnedOnOff": "{1} twoje {2} w slocie {3}",
"SkinSelectHelpTextSkin": "Naciśnij {1} lub {2} aby zmienić skin, {3} aby zapisać lub {4} aby anulować",
"SkinSelectHelpTextBodyPart": "Naciśnij {1} lub {2} by zmienić części ciała",
"SkinSelectBodyPartNames": {
"Head": "Głowa",
"UpperBody": "Górna część ciała",
"LowerBody": "Dolna część ciała",
"Hair": "Włosy",
"Hat": "Kapelusz",
"Glasses": "Okulary",
"LeftHand": "Lewa Ręka",
"RightHand": "Prawa Ręka",
"LeftWrist": "Lewy Nadgarstek",
"RightWrist": "Prawy Nadgarstek"
},
"DisconnectReasons": {
"Unknown": "Nieznane",
"LostConnection": "Stracono Połączenie",
"Disconnected": "Odłączony",
"UnsupportedClient": "Niewspierany Client",
"WrongGame": "Zła Wersja Gry",
"IncorrectPassword": "Niepoprawne Hasło",
"UnsupportedExecutable": "Niewspierany Plik Wykonalny",
"Kicked": "Wyrzucony",
"Banned": "Zbanowany",
"Failed": "Nieudane",
"InvalidName": "Niepoprawna Nazwa",
"Crashed": "Crashed",
"ModifiedGame": "Zmodyfikowana Gra",
"FailedToLogin": "Wyrzucony - Nieudało się zalogować",
"NotATester": "Wyrzucony - Nie jest testerem",
"ClientScriptVerificationFail": "Weryfikacja skryptów klienta nieudana (możliwe cheaty)",
"ServerRestarting": "Serwer się restartuje",
"Desync": "Desynced",
"FailedToCreateCharacter": "Wyrzucony - Nie stworzył postaci"
},
"DevelopersNotified": "Developerzy zostali poinformowani o problemie",
"NoJobLocationCloseEnough": "Nie ma żadnych lokacji pracy w pobliżu!",
"NotAllowedToUseJobs": "Nie możesz użyć żadnej pracy!",
"CantUseThisJob": "Nie możesz użyć tej pracy!",
"JobChanged": "💼 Teraz pracujesz jako {1}",
"NeedToBeNearJob": "Musisz być blisko lokacji pracy lub pojazdu, który do niej należy!",
"DontHaveAJob": "Nie masz pracy!",
"StartedWorking": "💼 Zacząłeś prace jako {1}",
"StoppedWorking": "Przestałeś pracować",
"ItemsStoredForJob": "Twoje przedmioty zostały schowane do szafy na czas twojej pracy",
"NoJobRoutesForLocation": "Twoja praca nie ma trasy do tej lokacji!",
"CurrentJobRouteDeleted": "Trasa na której było została usunięta lub wyłączona przez Admina",
"YourTax": "Twoje podaki na wypłacie to: {1}. Użyj {2} aby uzyskać więcej informacji.",
"YourWealth": "Twój majątek to: {1}. Użyj {2} aby uzyskać więcej informacji.",
"InvalidKeyBindName": "Nie znaleziono klawisza!",
"BusinessPurchased": "🏢Jesteś teraz włascicielem biznesu {1}",
"HousePurchased": "🏘️ Jesteś teraz włascicielem mieszkania {1}",
"CopyAllKeyBindsConfirm": "Czy jesteś pewien że chcesz przenieść swoją konfiguracje klawiszy na serwer {1}?",
"CopyAllKeyBindsOverwriteWarning": "To podmieni wszystkie twoje klawisze na innym serwerze",
"NoPromptAccept": "Nie masz niczego do przyjęcia",
"NoPromptReject": "Nie masz niczego do odrzucenia",
"NotOrderingAnyBusinessItems": "Nie zamawiasz nic dla bizensu!",
"BusinessOrderCanceled": "Anulowałeś zamówienie przedmiotu dla biznesu",
"DidNotCreateCharacter": "Nie masz żadnej postaci za grania. Do zobaczenia!",
"BusinessOrderNotEnoughMoney": "Ten biznes nie ma wystarczają dużo pieniędzy żeby to zamówić! Wypłac trochę używając {1}",
"ADDED-12OCT2022": "DO NOT TRANSLATE. Example of line below: You ordered 50 Colt 45 for $5000!",
"BusinessOrderSuccessInfo": "Zamówiłeś {1} {2} za {4}!",
"AccountSettings": {
"UseWhiteList": "Używaj białej listy",
"UseBlackList": "Używaj czarnej listy",
"TwoStepAuth": "Wymagaj weryfikacji dwustepowej podczas logowania",
"AuthAttemptAlert": "Powiadomienia email przy logowaniu",
"NoGUI": "Brak Interfejsu",
"AutoLoginIP": "Automatyczny login poprzez IP",
"NoServerLogo": "Brak loga serwera",
"AutoSelectLastCharacter": "Automatyczny spawn jako ostatnia postać",
"ShowRealTimeClock": "Pokaż zegar w czasie rzeczywistym",
"UseGUIForItems": "Używaj interfejsu jako ekwipunku",
"UseRadialWheelItems": "Używaj menu kołowego jako ekwipunku (tak jak w GTA V)",
"NoKeyBinds": "Wyłącz przypisania klawiszy",
"NoRandomTips": "Wyłącz losowe podpowiedzi",
"NoActionTips": "Wyłącz podpowiedzi akcji",
"ChatBoxTimestamps": "Pokazuj czas na czacie",
"ProfanityFilter": "Filtr wulgaryzmów",
"ChatAutoHide": "Automatycznie ukrywaj nieaktywny czat",
"NoPlayerContent": "Wyłącz customowe loga (logo clanu/spray)",
"ChatEmoji": "Pokazuj emoji na czacie"
},
"SaveSettings": "Zapisz ustawienia",
"Cancel": "Anuluj",
"AlreadyOwnVehicle": "Już posiadasz ten pojazd!",
"PropertyEntranceFeeLabel": "Opłata wejściowa: {1}",
"NeedToBeInJobVehicle": "Musisz być w firmowym pojeździe!",
"InvalidJobRank": "Job rank not found!",
"PayPhoneRecipientAnswered": "Somebody answered the call. Use normal chat to talk to them.",
"PayPhoneAnswered": "You answered the phone. Use normal chat to talk to the caller.",
"PayPhoneRecipientHangup": "The line was disconnected. You have been charged {1}",
"PayPhoneHangup": "You hung up the phone.",
"AlreadyUsingPayPhone": "You are already using a payphone!",
"NotUsingPayPhone": "You are not using a payphone!",
"NoPayPhoneCloseEnough": "There is no payphone close enough!",
"PayPhoneNotRinging": "This payphone is not ringing!",
"PayPhoneOccupied": "This payphone is already being used by someone else!",
"PayPhoneOccupantSwitched": "A different voice is now on the line",
"PayPhoneGiven": "You gave the phone to {1}",
"PayPhoneReceived": "{1} gave you the phone",
"PayPhoneUnableToCallPlayer": "You can't call {1} at this time. Please try again later.",
"ActionTips": {
"VehicleEngineOffWhenEnteringKey": "Użyj {1} aby włączyć/wyłączyć silnik pojazdu",
"VehicleLockedAfterEntryAttempt": "Użyj {1} aby otworzyć/zamknąć pojazd",
"ShowItemsAfterPurchase": "Użyj {1} aby zobaczyć swoje inventory",
"BuyCommandAfterEnterBusiness": "Użyj {1} aby kupić przedmioty od biznesu",
"UseItemKeyAfterEquipping": "Użyj {1} aby użyć wyjęty przedmiot",
"UseItemKeyAfterEquippingWalkieTalkie": "Użyj {1} aby włączyć/wyłączyć radio",
"RadioCommandAfterEnablingWalkieTalkie": "Użyj {1} aby użyć radia",
"ReplyToDirectMessage": "Użyj {1} aby odpowiedzieć na prywatną wiadomość",
"UseItemKeyAmmoAfterEquippingWeapon": "Użyj {1} aby załadować amunicje do wyjętej broni",
"AnimationStop": "Użyj {1} aby zatrzymać swoją animacje",
"JobEquipmentInventory": "Sprzęt do pracy jest w twoim inventory. Użyj {1} aby go zobaczyć.",
"ViewInventory": "Użyj {1} aby zobaczyć swoje przedmioty",
"VehicleRepairItemUsage": "Stań obok pojazdu i użyj {1} aby go naprawić",
"VehicleColourItemUsage": "Stań obok pojazdu i użyj {1} aby zmienić jego kolor",
"VehiclePartItemUsage": "Stań obok pojazdu i użyj {1} aby ulepszyć go z {2}",
"AmmoClipItemUsage": "Wyjmnij broń i użyj {1} aby załadować amunicje",
"GenericItemUsage": "Użyj {1} aby użyć {2}",
"EnterJobVehicleForRoute": "Wejdź do pobliskiego pojazdu służbowego aby rozpocząć trasę",
"JobLocations": "Odwiedź zakład pracy aby zdobyć pracę. Użyj {1} aby znaleźć zakład pracy",
"JobRouteStart": "Użyj {1} aby rozpocząć trasę z tym pojazdem",
"PayPhoneFirstUse": "Use {1} to end the call, and {2} to give the phone to somebody nearby"
},
"NoBusinessesWithinRange": "There are no businesses within {1} meters",
"NoHousesWithinRange": "There are no houses within {1} meters",
"NoPayPhonesWithinRange": "There are no payphones within {1} meters",
"HeaderBusinessesInRangeList": "Businesses (within {1} meters)",
"HeaderHousesInRangeList": "Businesses (within {1} meters)",
"HeaderPayPhonesInRangeList": "Businesses (within {1} meters)",
"HeaderCommandsForStaffFlagList": "Admin Commands ({1})",
"PlayerLocateDistanceAndDirection": "{1} is {2} meters {3}",
"MustBeNumber": "You need to use a number!",
"HeaderJobRoutesList": "Job Routes ({1})",
"HeaderJobRouteInfo": "Job Route Information (${1})",
"InvalidJobRoute": "Job route not found!",
"PayPhoneDeleted": "The payphone was deleted",
"PayPhoneAnswer": "Use {1} to answer the payphone",
"ResetActionTipsConfirm": "Are you sure you want to reset all seen action tips?",
"ActionTipsReset": "All seen action tips have been reset.",
"NormalChatDisabled": "Normal chat is disabled by server admin. Use chat commands instead.",
"GlobalChatDisabled": "Global out-of-character chat is disabled by server admin"
}

782
locale/russian.json Normal file
View File

@@ -0,0 +1,782 @@
{
"TranslationProvidedBy": "VNDTTS(Vende)",
"LocaleEnglishName": "Russian",
"LocaleNativeName": "Русский",
"LocaleOffer": "Этот сервер доступен на русском. Используйте {1} чтобы его использовать.",
"LocaleChanged1": "Ваш язык был установлен на {1}",
"LocaleChanged2": "Этот сервер теперь будет показывать сообщения в {1}",
"LocaleChangedNote": "Это не влияет на сообщения других игроков",
"AccentsListHeader": "Акценты",
"HelpMainListHeader": "Помощь Категории",
"AccentNotFound": "Не удалось найти акцент",
"AccentSet": "Вы установили свой акцент на {1}",
"InvalidAnimation": "Такой анимации не существует",
"AnimationCommandTip": "Используйте {1} чтобы просмотреть список доступных анимаций",
"InvalidAnimationDistance": "Дистанция должна быть между 0 и 3",
"CantBanClient": "Вы не можете забанить этого игрока",
"PlayerAccountBanned": "Аккаунт {1} был заблокирован ",
"ClanNameTaken": "Клан с таким именем уже существует",
"ClanCantRemoveRanks": "Вы не можете убрать ранги клана",
"ClanCantAddRanks": "Вы не можете добавить новые ранги клана",
"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} ({2})",
"ExitsProperty": "открывает дверь и покидает {1} ({2})",
"EnterExitPropertyDoorLocked": "пытаеться открыть двери {1} но у него не выходить потому-что двери закрыты",
"PropertyNoInterior": "У {1} нет доступного интерьера, но вы все еще можете использовать комманды стоя на значке возле входа.",
"NoBusinessWithItemType": "Нет бизнесов в которых этот предмет доступен",
"HeaderKeyBinds": "Привязки",
"HeaderAccountHelp": "Помощь Аккаунт",
"HeaderVehicleHelp": "Помощь Транспорт",
"HeaderVehicleDealershipHelp": "Помощь Автосалон",
"HeaderJobHelp": "Помощь Работа",
"HeaderChatHelp": "Помощь Чат",
"HeaderServerRules": "Правила Сервера",
"HeaderWebsiteInfo": "Сайт",
"HeaderDiscordInfo": "Discord",
"HeaderAnimationsList": "Список Анимаций",
"HeaderPayAndSprayHelp": "Помощь Pay 'n' Spray",
"HeaderAmmunationHelp": "Помощь Аммунация",
"HeaderVehicleTuneupHelp": "Помощь Тюнинг Автомобиля",
"HeaderBindableKeysHelp": "Кнопки которые можно привязать",
"HeaderSkinHelp": "Помощь Одежда/Облик",
"HeaderBusinessHelp": "Помощь ",
"HeaderClanHelp": "Помощь Клан",
"HeaderPlayerVehiclesList": "Транспорт Игрока ({1})",
"HeaderPlayerBusinessesList": "Бизнес Игрока ({1})",
"HeaderClansList": "Список кланов",
"HeaderAdminsList": "Список администраторов",
"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": "{1} на слоте {2} не имеет патронов и не может быть экипирован!",
"NoSpaceSelfInventory": "У вас не осталось места в инвентаре",
"Business": "бизнес",
"House": "дом",
"Clan": "клан",
"Vehicle": "транспорт",
"Item": "предмет",
"ItemType": "тип предмета",
"Gate": "ворота",
"Door": "двери",
"ClanRank": "Ранг клана",
"JobRank": "Ранг работы",
"RadioStation": "радиостанция",
"Months": [
"Январь",
"Февраль",
"Март",
"Апрель",
"Май",
"Июнь",
"Июль",
"Август",
"Сентябрь",
"Октябрь",
"Ноябрь",
"Декабрь"
],
"WeekDays": [
"Воскресенье",
"Понедельник",
"Вторник",
"Среда",
"Четверг",
"Пятница",
"Субота"
],
"CardinalDirections": {
"North": "Север",
"Northeast": "Северо-восток",
"East": "Восток",
"Southeast": "Юго-восток",
"South": "Юг",
"Southwest": "Юго-запад",
"West": "Запад",
"Northwest": "Северо-запад"
},
"NewPlayerReadyToPlay": [
"Вам было надано немного денег. Используйте {1} чтобы найти места в которых можно купить предметы.",
"Если вам нужны деньги, желтые точки это места работы на карте.",
"Если вам нужен транспорт, посетите автосалон. Вы также можете использовать орендовочный транспорт возле начальной зоны или сесть на поезд",
"Не забудьте ознакомиться с {1} и использовать {2} для информации."
],
"YourCurrentVehicleDeleted": "Транспорт в котором вы находились было удалено.",
"Distance": "Дистанция",
"Meters": "Метров",
"Feet": "Футов",
"Kilometers": "Километры",
"Miles": "Мили",
"MustBeVehicleDriver": "Вы можете быть только водителем!",
"PlayerJoinedServer": "{1} присоеденился к игре из {2}!",
"PlayerLeftServer": "{1} покинул игру! ({2})",
"TakeItemFromHouse": "Берет {1} из дома",
"TakeItemFromBusinessStorage": "Берет {1} из хранилища",
"TakeItemFromBusiness": "Берет {1} из бизнеса",
"TakeItemFromItem": "Достает {1} из {2}",
"TakeItemFromVehicleTrunk": "Достает {1} из багажника",
"TakeItemFromVehicleDash": "Достает {1} из бардачка",
"AccountHelp": [
"Не предоставляйте свой пароль никому. {1} персонал никогда не будет спрашивать у вас пароль ",
"Используйте {1} чтобы изменить ваш пароль, и {2} если вы его забыли",
"Некоторые опции: {1}"
],
"VehicleHelp": [
"Ваш личный транспорт будет сохранен в любом месте где вы, или кто-либо другой его оставит!",
"Посетите автосалон чтобы приобрести новый транспорт (Используйте {1} чтобы увидеть больше информации)",
"Некоторые комманды: {1}",
"Посетите гараж механика чтобы починить, изменить цвет, и затюнинговать ваш автомобиль! {1} для информации"
],
"VehicleDealershipHelp": [
"Посетите автосалон чтобы приобрести новый транспорт. Используйте {1} чтобы найти его.",
"Ввойдите в транспорт который вы хотите приобрести, и цена на него будет вам показана",
"Если хотите приобрести транспорт, используйте {1} и вам дадут ключи чтобы провести тест-драйв на парковке.",
"Покиньте автосалон на вашем новом транспорте чтобы подвердить покупку."
],
"JobHelp": [
"Посетите места работы, получите работу и зарабатывайте деньги. Ищите желтые точки на карте",
"На месте работы, используйте {1} чтобы получить работу. Используйте {2} чтобы оставить работу",
"Используйте {1} чтобы начать работать. Вы также можете получить работу {2} и {3}",
"Большинство рабочего транспорта изначально закрыто. Используйте {1} находясь возле него чтобы войти.",
"Во время входа в рабочий транспорт, информация о том, как работать будет вам предоставлена."
],
"ChatHelp": [
"Существуют два основных типов чата: внутри персонажа и вне его",
"Смешивать их не считается полноценной ролевой игрой. Просмотрите {1} для информации.",
"Некоторые комманды чата: {1}",
"Некоторые имеют укороченые версии ({1} чтобы говорить, {2} чтобы выкрикивать, и так далее)"
],
"ServerRulesHelp": [
"Нереалистичные действия запрещены. Вы не супермен.",
"Ролевая игра за террориста и терроризм запрещены.",
"Всегда следуйте соблюдайте инструкии даные модератором или администратором.",
"Вам не позволяется использовать информацию полученую вне персонажа, персонажем ",
"Пожалуйста придерживаетесь английского в главном чате, если вы плохо знаете английский, используйте {1}"
],
"AnimationHelp": [
"Анимации позволяют вам улучшить составляющую ролевой игры с помощью визуальных действий",
"Используте {1} или {2} с названием тобы применить анимацию.",
"Чтобы просмотреть список доступных анимаций, используйте {1}"
],
"WeaponHelp": [
"Посетите магазин оружия что-бы приобрести оружие. Используйте {1} чтобы найти.",
"Оружие невозможно купить без лицензии.",
"Лицензиями на оружие занимается отделение полиции. Обратитесь туда чтобы заполучить лицензию.",
"Оружие также может быть приобретено нелегально от некоторых бизнесов, торговцев оружием, и кланов."
],
"SkinHelp": [
"В магазине одежды используйте {1} чтобы купить одежду",
"Когда у вас есть предмет одежды, экипируйте его и используйте его как любой другой предмет чтобы просмотреть меню выбора облика персонажа (Просмотрите {1} чтобы научиться использовать предметы)",
"Некоторые облики ограничены только для некоторых работ, кланов, или по каким-то другим причинам."
],
"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": "У вас недостаточно денег для покупки этого бизнеса!",
"ADDED-21JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
"HeaderPlayerHousesList": "Дома Игрока ({1})",
"HeaderPlayerStaffFlagsList": "Флаги игрока персонала ({1})",
"HeaderStaffFlagsList": "Флаги персонала",
"NonRPName": "Ваше имя не подходит для ролевой игры! Выберете другое:",
"InvalidStaffFlag": "Не удалось найти флаг персонала!",
"InvalidClanFlag": "Не удалось найти флаг клана!",
"InvalidLocale": "Не удалось найти язык!",
"HeaderJobUniformList": "Рабочие униформы ({1})",
"HeaderJobEquipmentList": "Рабочие снаряжение ({1})",
"InvalidJobUniform": "Не удалось найти рабочую униформу!",
"InvalidJobEquipment": "Не удалось найти рабочее снаряжение!",
"HeaderVehiclesInRangeList": "Транспорт в пределах {1}",
"NoVehiclesWithinRange": "Нет транспорта в пределах {1}",
"AmountNotNumber": "Количество должно быть введено цифрой!",
"NeedToBeWorking": "Вы должны быть на работе! Используйте {1} на месте работы или возле рабочего транспорта.",
"NeedToBeOnJobRoute": "Вы должны быть на рабочем маршруте! Используйте {1} в рабочем транспорте",
"CurrentJobRouteVehicleColoursChanged": "Цвет транспорта на маршруте был изменен администратором",
"NotYourJob": "Это работа пренадлежит не вам!",
"JobPoints": "Вы можете устроиться на работу ориентируясь по желтым значкам на карте.",
"QuitJobToTakeAnother": "Если хотите покинуть работу, ипользуйте {1}.",
"NotAJobVehicle": "Это не рабочий транспорт!",
"NotYourJobVehicle": "Этот транспорт пренадлежит не вашей работе!",
"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": "Список интерьеров",
"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} переключил лого сервера {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": "Закрыто",
"Open": "Открыто",
"VehicleDealershipLabel": "Войдите внутрь транспорта для его покупки",
"TakeJobLabel": "Используйте {1} чтобы начать работать здесь",
"StartWorkLabel": "Используйте {1} чтобы выйти на работу",
"JobEquipAndUniformLabel": "Используйте {1} и {2} для вашего рабочего снаряжения, или {3} чтобы прекратить работу",
"NotYourJobLabel": "У вас уже есть работа. Используйте {1} если вам эта больше по душе",
"JobLabel": "{1} Работа",
"BonusSet": "🤑 {1} установил бонус заработной платы {2}",
"AllHousesReloaded": "🏘️ Все дома были перезагружены администратором",
"AllRadioStationsReloaded": "📻 Все радиостанции были перезагружены администратором!",
"PlayerKicked": "🦶 {1} был выкинут из сервера",
"AllBusinessesReloaded": "🏢 Весь бизнес был перезагружен администратором!",
"UnableToDoThat": "Вы не можете это сделать",
"SetVehicleClanConfirmMessage": "Вы уверены что хотите предать этот автомобиль клану?",
"SetVehicleClanConfirmTitle": "Предостережение!",
"SetItemPriceBelowOrderPriceMessage": "Вы уверены что хотите установить цену товара ниже его закупочной цены, вы будете терять {1} с каждой покупки!",
"SetItemPriceBelowOrderPriceTitle": "Предостережение!",
"MustOwnVehicle": "Этот автомобиль пренадлежит не вам!",
"RandomTips": [
"Ищите желтые точки на карте чтобы найти место работы",
"Вы можете установить собственные привязки. Используйте {1} для более детальной информации",
"Используйте {1} если хотите увидеть подсказки и дополнительную информацию",
"Вы можете изменять ваши превязки используя {1} и {2}",
"Используйте чтобы просмотреть ваш инвентарь и используйте цыфры для выбора",
"Используйте {1} возле бизнеса чтобы покупать предметы",
"Нашли ошибку? Используйте чтобы дать нам знать {1}",
"Есть какие то идеи или предложения? Дайте знать разработчикам используя {1}",
"Хотите купить бизнес? Используйте {1} возле одного из них",
"Хотите купить дом? Используйте {1} возле одного из них",
"Хотите приобрести автомобиль? посетите автосалон!",
"Переключайтесь между персонажами с помощью {1}",
"Используйте {1} чтобы автоматически подключать после входа из того же IP",
"Используйте {1} чтобы выключить/выключить свет внутри бизнеса или дома",
"Используйте {1} чтобы слушать интернет радио в автомобиле, дома, или внутри бизнеса",
"Хотите создать клан? Используйте {1} чтобы узнать подробности",
"Легальное оружие можно приобрести в аммунации"
],
"PromptResponseTip": "Используйте {1} чтобы подтвердить или {2} чтобы отклонить",
"PlayerConnecting": "👋 {1} подключается",
"GetStartedJobVehicle": "Войдите внутрь {1} чтобы начать.",
"VehicleTypes": {
"Car": "Автомобиль",
"Truck": "Грузовик",
"Van": "Фургон",
"Taxi": "Такси",
"Bus": "Автобус",
"PoliceCar": "Полицейская машина",
"Ambulance": "Машина скорой помощи",
"FireTruck": "Пожарная машина",
"Bike": "Велосипед",
"Motorbike": "Мотоцикл",
"Boat": "Лодка",
"Helicopter": "Вертолет",
"Plane": "Самолет",
"Train": "Поезд"
},
"AlreadyOnJobRoute": "Вы уже на маршруте!",
"GaveVehicleToClan": "Вы передали {1} вашему клану!",
"JobDisabled": "Ваша работа сейчас отключена!",
"SetHouseClanConfirmMessage": "Вы уверены что хотите передать этот дом клану?",
"SetHouseClanConfirmTitle": "Предосторежение!",
"SetBusinessClanConfirmMessage": "Вы уверены что хотите передать этот бизнес клану?",
"SetBusinessClanConfirmTitle": "Предосторежение!",
"MustOwnHouse": "Этот дом пренадлежит не вам!",
"MustOwnBusiness": "Этот бизнес пренадлежит не вам!",
"GaveHouseToClan": "Вы передали этот дом клану!",
"GaveBusinessToClan": "Вы передали ваш бизнес клану!",
"BuyBusinessConfirmMessage": "Вы уверены что хотите купить этот бизнес?",
"BuyBusinessConfirmTitle": "Внимание!",
"BuyHouseConfirmMessage": "Вы уверены что хотите купить этот дом?",
"BuyHouseConfirmTitle": "Внимание!",
"BuyBusinessLabel": "Используйте {1} чтобы купить этот бизнес",
"BuyHouseLabel": "Используйте {1} чтобы купить этот дом",
"RentHouseLabel": "Используйте {1} чтобы снять этот дом",
"AccountEmailAlreadyVerified": "Вы уже установили и подтвердили ваш адрес элекронной почты!",
"EmailVerificationCodeSent": "Код подтверждения и дальнейшие инструкции были посланы на ваш адрес электронной почты.",
"GUIPlayAsCharacterButton": "Играть",
"GUINewCharacterButton": "Новый персонаж",
"GUIPreviousCharacterButton": "Назад",
"GUINextCharacterButton": "Далее",
"GUICharacterSelectWindowTitle": "Выбрать Персонажа",
"GUICharacterSelectMoneyLabel": "Деньги: {1}",
"GUICharacterSelectClanLabel": "Клан: {1}",
"GUICharacterSelectLastPlayedLabel": "В последний раз играли: {1} дней, {2} часов, {3} минут назад",
"GUILoginWindowLabelEnterPassword": "Пожалуйста введите ваш пароль",
"GUILoginWindowSubmitButton": "Вход",
"GUILoginWindowResetPasswordButton": "сбросить",
"GUILoginWindowPasswordPlaceholder": "Пароль",
"GUILoginWindowForgotPasswordLabel": "Забыли пароль?",
"GUIRegisterWindowLabelCreateAccount": "Создать Аккаунт",
"GUIRegisterWindowPasswordPlaceholder": "Пароль",
"GUIRegisterWindowConfirmPasswordPlaceholder": "Подтвердить пароль",
"GUIRegisterWindowEmailPlaceholder": "Электронный адрес",
"GUIRegisterWindowSubmitButton": "Создать персонажа",
"GUINewCharacterMessageLabel": "Назвите Вашего Персонажа",
"GUINewCharacterFirstNamePlaceholder": "Имя",
"GUINewCharacterLastNamePlaceholder": "Фамилия",
"GUINewCharacterSubmitButton": "Создать нового пероснажа",
"GUIChangePasswordWindowTitle": "Изменить пароль",
"GUIChangePasswordPasswordLabel": "Введите новый пароль",
"GUIChangePasswordPasswordPlaceholder": "Пароль",
"GUIChangePasswordConfirmPasswordPlaceholder": "Подтвердить Пароль",
"GUIChangePasswordSubmitButton": "Изменить Пароль",
"GUIResetPasswordWindowMessage": "Сбросить Пароль",
"GUIResetPasswordConfirmEmailLabel": "Пожалуйста подтвердите свой электронный адрес",
"GUIResetPasswordEmailPlaceholder": "Электронный адрес",
"GUIResetPasswordSubmitButton": "Сбросить пароль",
"GUIResetPasswordLoginButton": "Вход",
"GUIResetPasswordRememberMessage": "Помните свой пароль?",
"HeaderJobList": "Работа",
"HeaderBusinessInfo": "Информация о бизнесе",
"HeaderHouseInfo": "Информация о доме",
"HeaderClanInfo": "Информация о клане",
"Locales": {
"English": "Английский",
"Russian": "Русский",
"Spanish": "Испанский",
"German": "Немецкий",
"Dutch": "Нидерландский",
"Polish": "Польский",
"Chinese": "Китайский",
"French": "Французкий",
"Japanese": "Японский",
"Slovak": "Словацкий",
"Arabic": "Арабский"
},
"TwoFactorAuthSet": "⚙️ Вы переключили двух факторную аутентификацию на {1}",
"AccountServerLogoSet": "⚙️ Вы переключили лого сервера на {1}",
"ChatScrollLinesNotNumber": "Количество строк должно быть описано в цыфре",
"ChatScrollLinesMustBeBetween": "Количесто строк должно находится между {1} и {2}",
"ChatScrollLinesSet": "Лог чата теперь будет крутить {1} строк за раз",
"InvalidEmailVerificationCode": "Не правильный код подтверждения! Новый код был выслан вам на адрес электронной почты.",
"EmailVerified": "Вы подтвердили ваш адрес",
"EmailVerifiedTip": "Вы можете использовать ваш электонный адрес для сброса пароля, двух факторной аутинтефикации, сообщений об входе, и больше",
"CommandRequiresLogin": "Вы должны войти чтобы использовать команду {1}",
"CommandDisabled": "Команда {1} отключена",
"CommandDisabledOnDiscord": "Команда {1} не доступна в Discord-e",
"CommandNotFoundHelpTip": "Команда {1} не существует! Используйте {2} для команд и информации.",
"CommandNotFoundPossibleMatchTip": "Команда {1} не существует! Возможно вы имели ввиду {2}?",
"CommandNoPermissions": "У вас нет прав использовать команду {1}",
"GUIResetPasswordCodeInputLabel": "Проверьте вашу почту на наличие пароля",
"GUIResetPasswordCodePlaceholder": "Код подтверждения",
"GUIErrorTitle": "Ошибка",
"GUIWarningTitle": "Предосторежение",
"GUIInfoTitle": "Информация",
"GUIOkButton": "Ок",
"GUIErrorResetPasswordFailedInvalidEmail": "Неправельный адрес!",
"HeaderVehicleInfo": "Информация о транспорте",
"HeaderClanRanksList": "Клановый Ранг",
"HeaderNPCInfo": "NPC Инфо",
"NPCAnimationSet": "Вы установили анимацию NPC {1} на {2}",
"NPCNameSet": "Вы установили имя NPC {1} на {2}",
"VehicleTooFar": "Вы слишком далеко от транспорта!",
"HeaderPropertyTemplateTypes": "Типы имуществ",
"MustBeLoggedInAndSpawnedToChat": "Вы должны войти и возродиться перед тем как использовать чат!",
"MutedCantChat": "Вас мутнули, вы не можете чаттить!",
"CantUseMegaphone": "Вы должны экипировать предмет мегафон или быть в служебном транспорте!",
"HeaderAnimationHelp": "Инфо Анимации",
"HeaderBadgeInfo": "Значки Инфо ({1})",
"NoItemCloseEnough": "Нет предметов достаточно близких у вам",
"CantDropJobEquipmentItem": "Рабочие предметы не могут быть выкинуты",
"CantPutJobEquipmentItem": "Вы не можете сохранять рабочие предметы",
"NoItemEquipped": "Нет выбраных предметов",
"NoItemInActiveSlot": "Нет предмета в активном слоте",
"CantPutItemInSkinChange": "Вы неможете сохранять предметы когда вы кастомизируете свою облик",
"NothingToTakeItemFrom": "Вы не находитесь возле ничего из чего можно было бы звять предмет",
"NoAmmoToLoadIntoWeapon": "У вас нет патронов чтобы зарядить в {1}",
"LoadAmmoIntoWeaponHelpCommand": "Чтобы зарядить патроны экипируйте оружие и используйте {1}",
"LoadAmmoIntoWeaponHelpKeyPress": "Чтобы зарядить патроны экипируйте оружие и нажмите {1}",
"NobodyCloseEnoughToHandcuff": "Nobody is close enough to handcuff",
"NobodyCloseEnoughToTie": "Нет никого по близости чтобы вас связать",
"PlayerNotSurrenderedHandcuff": "{1} не может быть повязан, или руки должны быть подняты, или он должен быть вырублен или шокнут тейзером",
"PlayerNotSurrenderedTie": "{1} не может быть связан, он должен поднять руки, быть вырублен или шокнут тейзером",
"HeaderCharactersListSelf": "Ваши Персонажи",
"HeaderCharactersListOther": "Персонажи {1}",
"CharacterSelectHelpText": "Используйте {1} чтобы выбрать персонажа, или {2} чтобы создать нового",
"ItemDoesntDoAnythingOnUse": "{1} ничего не делает когда вы его используете.",
"ItemRadioStationTip": "Используйте {1} чтобы выбрать радиостанцию",
"VehicleLockedCommandTip": "🔒 Этот {1} закрыт. Используйте {2} чтобы его открыть",
"VehicleLockedKeyPressTip": "🔒 Этот {1} закрыт. Нажмите {2} чтобы его открыть",
"VehicleLockedCantUnlock": "🔒 Этот {1} закрыт и у вас нет ключа чтобы его открыть",
"CurrentlyRentingThisVehicle": "Вы снимаете {1} по {2} за минуту. Используйте {3} чтобы перестать снимать.",
"VehicleBelongsTo": "Этот {1} пренадлежит {2} ({3})",
"NotOwned": "Никому не пренадлежит",
"NotCloseEnoughToItemContainer": "Нет ничего поблизости чтобы местило предметы",
"Job": "Работа",
"Player": "Игрок",
"BusinessIsNowPaintBall": "Этот бизнес теперь арена для пейнтбола",
"JoinedPaintBall": "Вы пресоиденились к пейнтболу.",
"ItemsStoredForPaintBall": "Ваши предметы сохранены и будут возращены вам когда вы закончите сессию пейнтбола",
"LeftPaintBall": "Вы покинули пейнтбол и ваши предметы были возвращены.",
"PaintBallEnded": "Эта сессия пейнтбола была закончена и ваши предметы были возвращены.",
"HeaderEventWinners": "Победители",
"YourPaintBallResults": "Вы заработали {1} убийств и {2} смертей во время сессии",
"NoPrivateMessageToReply": "Вы не получили приватное сообщения которому можно было бы ответить",
"WeaponDoesNotUseAmmo": "У {1} нет патронов",
"ChatBoxTimestampsToggle": "Вы переключили дисплей времени в чате на {1}",
"ProfanityFilterSet": "Вы переключили цензуру чата на {1}",
"ResetAllKeyBindsConfirm": "Вы уверены что хотите сбросить все привязаные клавишы?",
"NotRentingAVehicle": "Вы не снимаете транспорт!",
"StoppedRentingVehicle": "Вы перестали снимать {1}",
"VehicleEngineStartKeyPressTip": "Двигатель {1} сейчас не в работе. Используйте {2} чтобы запустить его.",
"VehicleEngineStartCommandTip": "Двигатель {1} сейчас не в работе. Используйте {2} чтобы его запустить.",
"StartedRentingVehicle": "Теперь вы снимаете {1} по {2} за минуту. Чтобы прекратить это используйте {3}",
"VehicleAlreadyRentedByOther": "Этот транспорт уже снимается",
"VehicleAlreadyRentedBySelf": "Вы уже снимаете этот транспорт",
"JobRankTooLow": "Ваш ранк не достаточно высок!",
"InvalidKeyName": "Ключевое Айди или имя которое вы вводили неправильно!",
"KeyBindsReset": "Все ваши привязки были сброшены",
"KeyBindNameTip": "Используйте простые клавиши или айди без пробелов.",
"UniversalInlineExamplesList": "Примеры: {1}",
"KeyBindRemoved": "Вы удалили привязку с клавиши {1}",
"KeyBindAdded": "Вы привязали кнопку {1} на {2}",
"CopyAllKeyBindsToServerConfirm": "Вы уверены что хотите скопировать все привязки на {1} сервер?",
"CopiedAllKeyBindsToServer": "Все ваши привязки были скопированы на {1} сервер",
"MustBeSpawned": "Вы долно сначало возродиться!",
"ChatEmojiSet": "Вы переключили ауто имодзи на {1}",
"FishingLineNotCast": "Ваша рыболовная сетка не были розкинута!",
"CantFishHere": "Вы не можете здесь рыбачить, вы должны быть или возле воды или на лодке!",
"NeedFishingRod": "Вы должны держать удочку!",
"FishingCastCommandHelp": "Используйте {1} чтобы бросить сетку",
"FishingCastKeyBindHelp": "Используйте {1} чтобы бросить сетку",
"Paused": "Пауза",
"PaintBallAlmostWin": "{1} осталось еще {2} убийтв чтобы выиграть пейнтбольную сессию!",
"HeaderClanFlagsList": "Clan Flags ({1})",
"PleaseWait": "Please wait ...",
"HeaderServerRulesList": "Server Rules",
"FrequencyChannelChanged": "You set the channel of your {1} in slot {2} to {3}",
"ItemTurnedOnOff": "You turned {1} your {2} in slot {3}",
"SkinSelectHelpTextSkin": "Press {1} or {2} to switch skin, {3} to save, or {4} to cancel",
"SkinSelectHelpTextBodyPart": "Press {1} or {2} to switch body part",
"SkinSelectBodyPartNames": {
"Head": "Head",
"UpperBody": "Upper Body",
"LowerBody": "Lower Body",
"Hair": "Hair",
"Hat": "Hat",
"Glasses": "Glasses",
"LeftHand": "Left Hand",
"RightHand": "Right Hand",
"LeftWrist": "Left Wrist",
"RightWrist": "Right Wrist"
},
"DisconnectReasons": {
"Unknown": "Unknown",
"LostConnection": "Lost Connection",
"Disconnected": "Disconnected",
"UnsupportedClient": "Unsupported Client",
"WrongGame": "Wrong Game",
"IncorrectPassword": "Incorrect Password",
"UnsupportedExecutable": "Unsupported Executable",
"Kicked": "Disconnected",
"Banned": "Banned",
"Failed": "Failed",
"InvalidName": "Invalid Name",
"Crashed": "Crashed",
"ModifiedGame": "Modified Game",
"FailedToLogin": "Kicked - Failed to login",
"NotATester": "Kicked - Not a tester",
"ClientScriptVerificationFail": "Client script verification failed (possible hacks)",
"ServerRestarting": "Server is restarting",
"Desync": "Desynced",
"FailedToCreateCharacter": "Kicked - Didn't create a character"
},
"DevelopersNotified": "The developers have been notified of the problem",
"NoJobLocationCloseEnough": "There are no job locations close enough!",
"NotAllowedToUseJobs": "You are not allowed to use any jobs!",
"CantUseThisJob": "You can't use this job!",
"JobChanged": "💼 You now have the {1} job",
"NeedToBeNearJob": "You need to be near your job location or a vehicle that belongs to your job!",
"DontHaveAJob": "You don't have a job!",
"StartedWorking": "💼 You are now working for the {1} job",
"StoppedWorking": "You have stopped working",
"ItemsStoredForJob": "Your personal items have been stored in your locker while you work",
"NoJobRoutesForLocation": "Your job does not have any routes for this location!",
"CurrentJobRouteDeleted": "The job route you were on has been deleted or disabled by an admin",
"YourTax": "Your tax on payday is: {1}. Use {2} for more information.",
"YourWealth": "Your wealth is: {1}. Use {2} for more information.",
"InvalidKeyBindName": "Key name not found!",
"BusinessPurchased": "🏢You are now the owner of business {1}",
"HousePurchased": "🏘️ You are now the owner of house {1}",
"CopyAllKeyBindsConfirm": "Are you sure you want to copy your keybinds to the {1} server?",
"CopyAllKeyBindsOverwriteWarning": "This will replace all your keybinds on the other server",
"NoPromptAccept": "You don't have anything to accept",
"NoPromptReject": "You don't have anything to reject",
"NotOrderingAnyBusinessItems": "You aren't ordering anything for a business!",
"BusinessOrderCanceled": "You cancelled the business item order",
"DidNotCreateCharacter": "You do not have a character to play. Goodbye!",
"BusinessOrderNotEnoughMoney": "This business doesn't have enough money to order that! Deposit some using {1}",
"ADDED-12OCT2022": "DO NOT TRANSLATE. Example of line below: You ordered 50 Colt 45 for $5000!",
"BusinessOrderSuccessInfo": "You ordered {1} {2} for {4}!",
"AccountSettings": {
"UseWhiteList": "Access whitelist",
"UseBlackList": "Access blacklist",
"TwoStepAuth": "Require 2FA code on login",
"AuthAttemptAlert": "Email login notifications",
"NoGUI": "No GUI",
"AutoLoginIP": "Automatic login by IP",
"NoServerLogo": "No server logo",
"AutoSelectLastCharacter": "Automatic spawn as most recent character",
"ShowRealTimeClock": "Show real time clock",
"UseGUIForItems": "Use GUI for inventory",
"UseRadialWheelItems": "Use pie wheel for inventory (like GTA V)",
"NoKeyBinds": "No keybinds",
"NoRandomTips": "No random tips",
"NoActionTips": "No action tips",
"ChatBoxTimestamps": "Show time in chat",
"ProfanityFilter": "Profanity filter",
"ChatAutoHide": "Automatically hide inactive chatbox",
"NoPlayerContent": "No custom images (like clan logos or spray tags)",
"ChatEmoji": "Show emoji images in chat"
},
"SaveSettings": "Save Settings",
"Cancel": "Cancel",
"AlreadyOwnVehicle": "You already own this vehicle!",
"PropertyEntranceFeeLabel": "Entrance Fee: {1}",
"NeedToBeInJobVehicle": "You need to be in a job vehicle!",
"InvalidJobRank": "Job rank not found!",
"PayPhoneRecipientAnswered": "Somebody answered the call. Use normal chat to talk to them.",
"PayPhoneAnswered": "You answered the phone. Use normal chat to talk to the caller.",
"PayPhoneRecipientHangup": "The line was disconnected. You have been charged {1}",
"PayPhoneHangup": "You hung up the phone.",
"AlreadyUsingPayPhone": "You are already using a payphone!",
"NotUsingPayPhone": "You are not using a payphone!",
"NoPayPhoneCloseEnough": "There is no payphone close enough!",
"PayPhoneNotRinging": "This payphone is not ringing!",
"PayPhoneOccupied": "This payphone is already being used by someone else!",
"PayPhoneOccupantSwitched": "A different voice is now on the line",
"PayPhoneGiven": "You gave the phone to {1}",
"PayPhoneReceived": "{1} gave you the phone",
"PayPhoneUnableToCallPlayer": "You can't call {1} at this time. Please try again later.",
"ActionTips": {
"VehicleEngineOffWhenEnteringKey": "Use {1} to turn on or off a vehicle's engine",
"VehicleLockedAfterEntryAttempt": "Use {1} to lock or unlock a vehicle",
"ShowItemsAfterPurchase": "Use {1} to see your inventory",
"BuyCommandAfterEnterBusiness": "Use {1} to buy items from a business",
"UseItemKeyAfterEquipping": "Use {1} to use your equipped item",
"UseItemKeyAfterEquippingWalkieTalkie": "Use {1} to turn on or off your radio",
"RadioCommandAfterEnablingWalkieTalkie": "Use {1} to talk on your radio",
"ReplyToDirectMessage": "Use {1} to easily reply to a private message",
"UseItemKeyAmmoAfterEquippingWeapon": "Use {1} to load an ammo item into your equipped weapon",
"AnimationStop": "Use {1} to stop your animation",
"JobEquipmentInventory": "The job equipment is in your inventory. Use {1} to see them.",
"ViewInventory": "Use {1} to see your items",
"VehicleRepairItemUsage": "Stand next to a vehicle and use {1} to repair it",
"VehicleColourItemUsage": "Stand next to a vehicle and use {1} to change it's colour",
"VehiclePartItemUsage": "Stand next to a vehicle and use {1} to upgrade with {2}",
"AmmoClipItemUsage": "Equip the weapon and use {1} to load ammo into it",
"GenericItemUsage": "Use {1} to use the {2}",
"EnterJobVehicleForRoute": "Enter a job vehicle nearby to start a job route",
"JobLocations": "Visit a job location to get a job. Use {1} to find a job location",
"JobRouteStart": "Use {1} to start a job route with this vehicle",
"PayPhoneFirstUse": "Use {1} to end the call, and {2} to give the phone to somebody nearby"
},
"NoBusinessesWithinRange": "There are no businesses within {1} meters",
"NoHousesWithinRange": "There are no houses within {1} meters",
"NoPayPhonesWithinRange": "There are no payphones within {1} meters",
"HeaderBusinessesInRangeList": "Businesses (within {1} meters)",
"HeaderHousesInRangeList": "Businesses (within {1} meters)",
"HeaderPayPhonesInRangeList": "Businesses (within {1} meters)",
"HeaderCommandsForStaffFlagList": "Admin Commands ({1})",
"PlayerLocateDistanceAndDirection": "{1} is {2} meters {3}",
"MustBeNumber": "You need to use a number!",
"HeaderJobRoutesList": "Job Routes ({1})",
"HeaderJobRouteInfo": "Job Route Information (${1})",
"InvalidJobRoute": "Job route not found!",
"PayPhoneDeleted": "The payphone was deleted",
"PayPhoneAnswer": "Use {1} to answer the payphone",
"ResetActionTipsConfirm": "Are you sure you want to reset all seen action tips?",
"ActionTipsReset": "All seen action tips have been reset.",
"NormalChatDisabled": "Normal chat is disabled by server admin. Use chat commands instead.",
"GlobalChatDisabled": "Global out-of-character chat is disabled by server admin"
}

782
locale/slovak.json Normal file
View File

@@ -0,0 +1,782 @@
{
"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",
"HelpMainListHeader": "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",
"CantBanClient": "You cannot ban this person",
"PlayerAccountBanned": "{1} has been account banned",
"ClanNameTaken": "A clan with that name already exists",
"ClanCantRemoveRanks": "You can't remove clan ranks",
"ClanCantAddRanks": "You can't add clan ranks",
"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} ({2})",
"ExitsProperty": "opens the door and exits the {1} ({2})",
"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",
"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": "North",
"Northeast": "Northeast",
"East": "East",
"Southeast": "Southeast",
"South": "South",
"Southwest": "Southwest",
"West": "West",
"Northwest": "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 {2}!",
"PlayerLeftServer": "{1} has left the game! ({2})",
"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",
"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!",
"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",
"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!",
"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",
"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!",
"RandomTips": [
"Look for yellow dots on your map for job locations",
"You can set custom key binds. Use {1} for details",
"Use {1} if you don't want to see tips and extra information",
"You can edit your keybinds using {1} and {2}",
"Press to see your inventory, and use number keys to select an item",
"Use {1} at a business to purchase items",
"Found a bug? Report it with {1}",
"Have an idea or suggestion for the server? Let the devs know using {1}",
"Want to buy a business? Use /bizbuy at one for sale",
"Want to buy a house? Use /housebuy at one for sale",
"Want to buy a vehicle? Visit a dealership and enter one for info on how to buy it!",
"Switch to any of your characters with {1}",
"Use {1} to automatically login when connecting with the same IP",
"Use {1} to turn on/off the lights in your house or business",
"Use {1} to play an internet radio station in your car, house, or business",
"Want to make a clan? Use {1} for details",
"Legal weapons can be purchased at any ammunation"
],
"PromptResponseTip": "Use {1} to accept or {2} to decline",
"PlayerConnecting": "👋 {1} is connecting to the server",
"GetStartedJobVehicle": "Get in a {1} to get started.",
"VehicleTypes": {
"Car": "Car",
"Truck": "Truck",
"Van": "Van",
"Taxi": "Taxi",
"Bus": "Bus",
"PoliceCar": "Police Car",
"Ambulance": "Ambulance",
"FireTruck": "Fire Truck",
"Bike": "Bike",
"Motorbike": "Motorbike",
"Boat": "Boat",
"Helicopter": "Helicopter",
"Plane": "Plane",
"Train": "Train"
},
"AlreadyOnJobRoute": "You are already doing a job route!",
"GaveVehicleToClan": "You gave this {1} to your clan!",
"JobDisabled": "This job is disabled!",
"SetHouseClanConfirmMessage": "Are you sure you want to give this house to your clan?",
"SetHouseClanConfirmTitle": "Warning!",
"SetBusinessClanConfirmMessage": "Are you sure you want to give this business to your clan?",
"SetBusinessClanConfirmTitle": "Warning!",
"MustOwnHouse": "You don't own this house!",
"MustOwnBusiness": "You don't own this business!",
"GaveHouseToClan": "You gave this house to your clan!",
"GaveBusinessToClan": "You gave this business to your clan!",
"BuyBusinessConfirmMessage": "Are you sure you want to buy this business?",
"BuyBusinessConfirmTitle": "Attention!",
"BuyHouseConfirmMessage": "Are you sure you want to buy this house?",
"BuyHouseConfirmTitle": "Attention!",
"BuyBusinessLabel": "Use {1} to buy this business",
"BuyHouseLabel": "Use {1} to buy this house",
"RentHouseLabel": "Use {1} to rent this house",
"AccountEmailAlreadyVerified": "You already set and verified your email!",
"EmailVerificationCodeSent": "A verification code and instructions have been sent to your email.",
"GUIPlayAsCharacterButton": "Play",
"GUINewCharacterButton": "New character",
"GUIPreviousCharacterButton": "Previous",
"GUINextCharacterButton": "Next",
"GUICharacterSelectWindowTitle": "Select a character",
"GUICharacterSelectMoneyLabel": "Money: {1}",
"GUICharacterSelectClanLabel": "Clan: {1}",
"GUICharacterSelectLastPlayedLabel": "Last Played: {1} days, {2} hours, {3} minutes ago",
"GUILoginWindowLabelEnterPassword": "Please enter your password",
"GUILoginWindowSubmitButton": "Login",
"GUILoginWindowResetPasswordButton": "Reset",
"GUILoginWindowPasswordPlaceholder": "Password",
"GUILoginWindowForgotPasswordLabel": "Forgot your password?",
"GUIRegisterWindowLabelCreateAccount": "Create an account",
"GUIRegisterWindowPasswordPlaceholder": "Password",
"GUIRegisterWindowConfirmPasswordPlaceholder": "Confirm password",
"GUIRegisterWindowEmailPlaceholder": "Email",
"GUIRegisterWindowSubmitButton": "Create account",
"GUINewCharacterMessageLabel": "Name your character",
"GUINewCharacterFirstNamePlaceholder": "First Name",
"GUINewCharacterLastNamePlaceholder": "Last Name",
"GUINewCharacterSubmitButton": "Create Character",
"GUIChangePasswordWindowTitle": "Change Password",
"GUIChangePasswordPasswordLabel": "Enter a new password",
"GUIChangePasswordPasswordPlaceholder": "Password",
"GUIChangePasswordConfirmPasswordPlaceholder": "Confirm password",
"GUIChangePasswordSubmitButton": "Change Password",
"GUIResetPasswordWindowMessage": "Reset Password",
"GUIResetPasswordConfirmEmailLabel": "Please confirm your email",
"GUIResetPasswordEmailPlaceholder": "Email",
"GUIResetPasswordSubmitButton": "Reset Password",
"GUIResetPasswordLoginButton": "Login",
"GUIResetPasswordRememberMessage": "Remember your password?",
"HeaderJobList": "Jobs",
"HeaderBusinessInfo": "Business Info",
"HeaderHouseInfo": "House Info",
"HeaderClanInfo": "Clan Info",
"Locales": {
"English": "English",
"Russian": "Russian",
"Spanish": "Spanish",
"German": "German",
"Dutch": "Dutch",
"Polish": "Polish",
"Chinese": "Chinese",
"French": "French",
"Japanese": "Japanese",
"Slovak": "Slovak",
"Arabic": "Arabic"
},
"TwoFactorAuthSet": "⚙️ You have turned two factor authentication {1}",
"AccountServerLogoSet": "⚙️ You turned the server logo {1}",
"ChatScrollLinesNotNumber": "The line amount must be a number",
"ChatScrollLinesMustBeBetween": "The line amount must be between {1} and {2}",
"ChatScrollLinesSet": "The chatbox will now scroll {1} lines at a time",
"InvalidEmailVerificationCode": "Invalid email verification code! A new one has been created and sent to your email.",
"EmailVerified": "Your email has been verified",
"EmailVerifiedTip": "You can now use your email for password resets, two-factor authentication, login alerts, and more",
"CommandRequiresLogin": "You must be logged in to use the {1} command",
"CommandDisabled": "The {1} command is disabled",
"CommandDisabledOnDiscord": "The {1} command isn't available on discord",
"CommandNotFoundHelpTip": "The command {1} does not exist! Use {2} for commands and information.",
"CommandNotFoundPossibleMatchTip": "The command {1} does not exist! Did you mean {2}?",
"CommandNoPermissions": "You don't have permission to use the {1} command",
"GUIResetPasswordCodeInputLabel": "Check your email for a code",
"GUIResetPasswordCodePlaceholder": "Verification code",
"GUIErrorTitle": "Error",
"GUIWarningTitle": "Warning",
"GUIInfoTitle": "Info",
"GUIOkButton": "Ok",
"GUIErrorResetPasswordFailedInvalidEmail": "Invalid email!",
"HeaderVehicleInfo": "Vehicle Info",
"HeaderClanRanksList": "Clan Rank",
"HeaderNPCInfo": "NPC Info",
"NPCAnimationSet": "You set NPC {1} animation to {2}",
"NPCNameSet": "You set NPC {1} name to {2}",
"VehicleTooFar": "You are too far away from the vehicle!",
"HeaderPropertyTemplateTypes": "Property Types",
"MustBeLoggedInAndSpawnedToChat": "You need to be logged in and spawned before you can chat!",
"MutedCantChat": "You are muted and can't chat!",
"CantUseMegaphone": "You must equip a megaphone item or be in an emergency vehicle!",
"HeaderAnimationHelp": "Animation Info",
"HeaderBadgeInfo": "Badge Information ({1})",
"NoItemCloseEnough": "There is no item close enough",
"CantDropJobEquipmentItem": "You can't drop job items",
"CantPutJobEquipmentItem": "You can't store job items",
"NoItemEquipped": "You don't have any item selected",
"NoItemInActiveSlot": "You don't have an item in your active item slot",
"CantPutItemInSkinChange": "You can't store an item while customizing your appearance",
"NothingToTakeItemFrom": "You aren't near anything to take items from",
"NoAmmoToLoadIntoWeapon": "You don't have any ammo to load into the {1}",
"LoadAmmoIntoWeaponHelpCommand": "To load this ammo into a weapon, equip the weapon and type {1}",
"LoadAmmoIntoWeaponHelpKeyPress": "To load this ammo into a weapon, equip the weapon and press {1}",
"NobodyCloseEnoughToHandcuff": "Nobody is close enough to handcuff",
"NobodyCloseEnoughToTie": "Nobody is close enough to tie up",
"PlayerNotSurrenderedHandcuff": "{1} can't be handcuffed! They either need to have their hands up, be knocked out, or tazed",
"PlayerNotSurrenderedTie": "{1} can't be tied! They either need to have their hands up, be knocked out, or tazed",
"HeaderCharactersListSelf": "Your Characters",
"HeaderCharactersListOther": "{1}'s Characters",
"CharacterSelectHelpText": "Use {1} to select a character, or {2} to create a new character",
"ItemDoesntDoAnythingOnUse": "The {1} doesn't do anything when you try to use it.",
"ItemRadioStationTip": "Use {1} to set the radio station",
"VehicleLockedCommandTip": "🔒 This {1} is locked. Use {2} to unlock it",
"VehicleLockedKeyPressTip": "🔒 This {1} is locked. Press {2} to unlock it",
"VehicleLockedCantUnlock": "🔒 This {1} is locked and you don't have the keys to unlock it",
"CurrentlyRentingThisVehicle": "You are renting this {1} for {2} per minute. Use {3} if you want to stop renting it.",
"VehicleBelongsTo": "This {1} belongs to {2} ({3})",
"NotOwned": "Not Owned",
"NotCloseEnoughToItemContainer": "You are not close enough to anything that holds items",
"Job": "Job",
"Player": "Player",
"BusinessIsNowPaintBall": "This business is now a paintball arena",
"JoinedPaintBall": "You have joined the paintball game.",
"ItemsStoredForPaintBall": "Your items are stored in your locker and will be returned when you leave the paintball game",
"LeftPaintBall": "You have left the paintball game. Your items have been returned.",
"PaintBallEnded": "The paintball match has ended. Your items have been returned.",
"HeaderEventWinners": "Winners",
"YourPaintBallResults": "You got {1} kills and {2} deaths in the paintball match",
"NoPrivateMessageToReply": "You haven't received a private message to reply to",
"WeaponDoesNotUseAmmo": "The {1} doesn't use ammo",
"ChatBoxTimestampsToggle": "You turned {1} time display in the chatbox",
"ProfanityFilterSet": "You turned chat profanity filter {1}",
"ResetAllKeyBindsConfirm": "Are you sure you want to reset all your keybinds to default?",
"NotRentingAVehicle": "You are not renting a vehicle!",
"StoppedRentingVehicle": "You stopped renting the {1}",
"VehicleEngineStartKeyPressTip": "The {1} engine is off. Press {2} to start it.",
"VehicleEngineStartCommandTip": "The {1} engine is off. Use {2} to start it.",
"StartedRentingVehicle": "You are now renting this {1} for {2} per minute. To stop renting, use {3}",
"VehicleAlreadyRentedByOther": "This vehicle is already rented by someone else",
"VehicleAlreadyRentedBySelf": "You are already renting this vehicle",
"JobRankTooLow": "You are not high enough rank!",
"InvalidKeyName": "The key ID or name you input is invalid!",
"KeyBindsReset": "All your keybinds have been reset to default",
"KeyBindNameTip": "Use simple key names, letters, or numbers. Don't add spaces.",
"UniversalInlineExamplesList": "Examples: {1}",
"KeyBindRemoved": "You removed the keybind for the {1} key",
"KeyBindAdded": "You binded key {1} to {2}",
"CopyAllKeyBindsToServerConfirm": "Are you sure you want to copy all your keybinds to the {1} server?",
"CopiedAllKeyBindsToServer": "All your keybinds have been copied to the {1} server",
"MustBeSpawned": "You must be spawned!",
"ChatEmojiSet": "You turned automatic emoji in chat {1}",
"FishingLineNotCast": "Your fishing line isn't cast!",
"CantFishHere": "You can't fish here! You need to be near water or on a boat!",
"NeedFishingRod": "You need to be holding a fishing rod!",
"FishingCastCommandHelp": "Use {1} to cast your fishing line",
"FishingCastKeyBindHelp": "Press {1} to cast your fishing line",
"Paused": "Paused",
"PaintBallAlmostWin": "{1} only needs {2} more kills to win the paintball match!",
"HeaderClanFlagsList": "Clan Flags ({1})",
"PleaseWait": "Please wait ...",
"HeaderServerRulesList": "Server Rules",
"FrequencyChannelChanged": "You set the channel of your {1} in slot {2} to {3}",
"ItemTurnedOnOff": "You turned {1} your {2} in slot {3}",
"SkinSelectHelpTextSkin": "Press {1} or {2} to switch skin, {3} to save, or {4} to cancel",
"SkinSelectHelpTextBodyPart": "Press {1} or {2} to switch body part",
"SkinSelectBodyPartNames": {
"Head": "Head",
"UpperBody": "Upper Body",
"LowerBody": "Lower Body",
"Hair": "Hair",
"Hat": "Hat",
"Glasses": "Glasses",
"LeftHand": "Left Hand",
"RightHand": "Right Hand",
"LeftWrist": "Left Wrist",
"RightWrist": "Right Wrist"
},
"DisconnectReasons": {
"Unknown": "Unknown",
"LostConnection": "Lost Connection",
"Disconnected": "Disconnected",
"UnsupportedClient": "Unsupported Client",
"WrongGame": "Wrong Game",
"IncorrectPassword": "Incorrect Password",
"UnsupportedExecutable": "Unsupported Executable",
"Kicked": "Disconnected",
"Banned": "Banned",
"Failed": "Failed",
"InvalidName": "Invalid Name",
"Crashed": "Crashed",
"ModifiedGame": "Modified Game",
"FailedToLogin": "Kicked - Failed to login",
"NotATester": "Kicked - Not a tester",
"ClientScriptVerificationFail": "Client script verification failed (possible hacks)",
"ServerRestarting": "Server is restarting",
"Desync": "Desynced",
"FailedToCreateCharacter": "Kicked - Didn't create a character"
},
"DevelopersNotified": "The developers have been notified of the problem",
"NoJobLocationCloseEnough": "There are no job locations close enough!",
"NotAllowedToUseJobs": "You are not allowed to use any jobs!",
"CantUseThisJob": "You can't use this job!",
"JobChanged": "💼 You now have the {1} job",
"NeedToBeNearJob": "You need to be near your job location or a vehicle that belongs to your job!",
"DontHaveAJob": "You don't have a job!",
"StartedWorking": "💼 You are now working for the {1} job",
"StoppedWorking": "You have stopped working",
"ItemsStoredForJob": "Your personal items have been stored in your locker while you work",
"NoJobRoutesForLocation": "Your job does not have any routes for this location!",
"CurrentJobRouteDeleted": "The job route you were on has been deleted or disabled by an admin",
"YourTax": "Your tax on payday is: {1}. Use {2} for more information.",
"YourWealth": "Your wealth is: {1}. Use {2} for more information.",
"InvalidKeyBindName": "Key name not found!",
"BusinessPurchased": "🏢You are now the owner of business {1}",
"HousePurchased": "🏘️ You are now the owner of house {1}",
"CopyAllKeyBindsConfirm": "Are you sure you want to copy your keybinds to the {1} server?",
"CopyAllKeyBindsOverwriteWarning": "This will replace all your keybinds on the other server",
"NoPromptAccept": "You don't have anything to accept",
"NoPromptReject": "You don't have anything to reject",
"NotOrderingAnyBusinessItems": "You aren't ordering anything for a business!",
"BusinessOrderCanceled": "You cancelled the business item order",
"DidNotCreateCharacter": "You do not have a character to play. Goodbye!",
"BusinessOrderNotEnoughMoney": "This business doesn't have enough money to order that! Deposit some using {1}",
"ADDED-12OCT2022": "DO NOT TRANSLATE. Example of line below: You ordered 50 Colt 45 for $5000!",
"BusinessOrderSuccessInfo": "You ordered {1} {2} for {4}!",
"AccountSettings": {
"UseWhiteList": "Access whitelist",
"UseBlackList": "Access blacklist",
"TwoStepAuth": "Require 2FA code on login",
"AuthAttemptAlert": "Email login notifications",
"NoGUI": "No GUI",
"AutoLoginIP": "Automatic login by IP",
"NoServerLogo": "No server logo",
"AutoSelectLastCharacter": "Automatic spawn as most recent character",
"ShowRealTimeClock": "Show real time clock",
"UseGUIForItems": "Use GUI for inventory",
"UseRadialWheelItems": "Use pie wheel for inventory (like GTA V)",
"NoKeyBinds": "No keybinds",
"NoRandomTips": "No random tips",
"NoActionTips": "No action tips",
"ChatBoxTimestamps": "Show time in chat",
"ProfanityFilter": "Profanity filter",
"ChatAutoHide": "Automatically hide inactive chatbox",
"NoPlayerContent": "No custom images (like clan logos or spray tags)",
"ChatEmoji": "Show emoji images in chat"
},
"SaveSettings": "Save Settings",
"Cancel": "Cancel",
"AlreadyOwnVehicle": "You already own this vehicle!",
"PropertyEntranceFeeLabel": "Entrance Fee: {1}",
"NeedToBeInJobVehicle": "You need to be in a job vehicle!",
"InvalidJobRank": "Job rank not found!",
"PayPhoneRecipientAnswered": "Somebody answered the call. Use normal chat to talk to them.",
"PayPhoneAnswered": "You answered the phone. Use normal chat to talk to the caller.",
"PayPhoneRecipientHangup": "The line was disconnected. You have been charged {1}",
"PayPhoneHangup": "You hung up the phone.",
"AlreadyUsingPayPhone": "You are already using a payphone!",
"NotUsingPayPhone": "You are not using a payphone!",
"NoPayPhoneCloseEnough": "There is no payphone close enough!",
"PayPhoneNotRinging": "This payphone is not ringing!",
"PayPhoneOccupied": "This payphone is already being used by someone else!",
"PayPhoneOccupantSwitched": "A different voice is now on the line",
"PayPhoneGiven": "You gave the phone to {1}",
"PayPhoneReceived": "{1} gave you the phone",
"PayPhoneUnableToCallPlayer": "You can't call {1} at this time. Please try again later.",
"ActionTips": {
"VehicleEngineOffWhenEnteringKey": "Use {1} to turn on or off a vehicle's engine",
"VehicleLockedAfterEntryAttempt": "Use {1} to lock or unlock a vehicle",
"ShowItemsAfterPurchase": "Use {1} to see your inventory",
"BuyCommandAfterEnterBusiness": "Use {1} to buy items from a business",
"UseItemKeyAfterEquipping": "Use {1} to use your equipped item",
"UseItemKeyAfterEquippingWalkieTalkie": "Use {1} to turn on or off your radio",
"RadioCommandAfterEnablingWalkieTalkie": "Use {1} to talk on your radio",
"ReplyToDirectMessage": "Use {1} to easily reply to a private message",
"UseItemKeyAmmoAfterEquippingWeapon": "Use {1} to load an ammo item into your equipped weapon",
"AnimationStop": "Use {1} to stop your animation",
"JobEquipmentInventory": "The job equipment is in your inventory. Use {1} to see them.",
"ViewInventory": "Use {1} to see your items",
"VehicleRepairItemUsage": "Stand next to a vehicle and use {1} to repair it",
"VehicleColourItemUsage": "Stand next to a vehicle and use {1} to change it's colour",
"VehiclePartItemUsage": "Stand next to a vehicle and use {1} to upgrade with {2}",
"AmmoClipItemUsage": "Equip the weapon and use {1} to load ammo into it",
"GenericItemUsage": "Use {1} to use the {2}",
"EnterJobVehicleForRoute": "Enter a job vehicle nearby to start a job route",
"JobLocations": "Visit a job location to get a job. Use {1} to find a job location",
"JobRouteStart": "Use {1} to start a job route with this vehicle",
"PayPhoneFirstUse": "Use {1} to end the call, and {2} to give the phone to somebody nearby"
},
"NoBusinessesWithinRange": "There are no businesses within {1} meters",
"NoHousesWithinRange": "There are no houses within {1} meters",
"NoPayPhonesWithinRange": "There are no payphones within {1} meters",
"HeaderBusinessesInRangeList": "Businesses (within {1} meters)",
"HeaderHousesInRangeList": "Businesses (within {1} meters)",
"HeaderPayPhonesInRangeList": "Businesses (within {1} meters)",
"HeaderCommandsForStaffFlagList": "Admin Commands ({1})",
"PlayerLocateDistanceAndDirection": "{1} is {2} meters {3}",
"MustBeNumber": "You need to use a number!",
"HeaderJobRoutesList": "Job Routes ({1})",
"HeaderJobRouteInfo": "Job Route Information (${1})",
"InvalidJobRoute": "Job route not found!",
"PayPhoneDeleted": "The payphone was deleted",
"PayPhoneAnswer": "Use {1} to answer the payphone",
"ResetActionTipsConfirm": "Are you sure you want to reset all seen action tips?",
"ActionTipsReset": "All seen action tips have been reset.",
"NormalChatDisabled": "Normal chat is disabled by server admin. Use chat commands instead.",
"GlobalChatDisabled": "Global out-of-character chat is disabled by server admin"
}

788
locale/spanish.json Normal file
View File

@@ -0,0 +1,788 @@
{
"TranslationProvidedBy": "PerikiyoXD and EliasDR",
"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}",
"LocaleChangedNote": "Esto no cambia los mensajes de otros jugadores",
"AccentsListHeader": "Acentos",
"HelpMainListHeader": "Categorías de ayuda",
"HelpSkinHeader": "Ayuda de personajes",
"HelpVehicleHeader": "Ayuda de vehículos",
"HelpBusinessHeader": "Ayuda de negocios",
"HelpHouseHeader": "Ayuda de casas",
"HelpRadioHeader": "Ayuda de radio",
"HelpAnimationHeader": "Ayuda de animaciones",
"AccentNotFound": "Acento no encontrado",
"AccentSet": "Acento establecido como {1}",
"InvalidAnimation": "Esa animación no existe",
"AnimationCommandTip": "Usa {1} para ver la lista de animaciones",
"InvalidAnimationDistance": "La distancia debe ser un numero entre el 0 y el 3",
"CantBanClient": "No se puede vetar a esta persona",
"PlayerAccountBanned": "La cuenta de {1} ha sido vetada",
"ClanNameTaken": "Ya existe un clan con ese nombre",
"ClanCantRemoveRanks": "No puedes eliminar rangos del clan",
"ClanCantAddRanks": "No puedes añadir rangos del clan",
"ClanCantChangeMemberTag": "No puedes cambiar las etiquetas del miembro del clan",
"ClanPlayerNotInSameClan": "El jugador indicado no está en tu clan",
"ClanCantChangeRankLevel": "No puedes cambiar el nivel del rango del clan",
"ClanCantChangeRankTag": "No puedes cambiar la etiqueta del rango del clan",
"NameNotRegistered": "¡Tu nombre no está registrado! Usa {1} para crear una cuenta",
"AutomaticLoginIPToggle": "Se ha {1} el inicio de sesión automático por IP",
"CouldNotRegisterAccount": "Hubo un problema al crear su cuenta. Por favor, póngase en contacto con un administrador",
"RandomTipsToggle": "Se han {1} los Consejos aleatorios",
"ActionTipsToggle": "Se han {1} los Consejos de acción",
"AutoSpawnLastCharToggle": "Se ha {1} reaparecer con el ultimo personaje usado",
"AccountGUISettingToggle": "Se ha {1} la Interfaz de Usuario",
"On": "Encendido",
"Off": "Apagado",
"Yes": "Si",
"No": "No",
"True": "True",
"False": "False",
"Locked": "Locked",
"Unlocked": "Unlocked",
"PasswordNotGoodEnough": "La nueva contraseña debe cumplir los requisitos",
"PasswordNeedsBase": "Las contraseñas deben tener al menos {1}",
"PasswordNeedsCapitals": "{1} letras mayúsculas",
"PasswordNeedsNumbers": "{1} números",
"PasswordNeedsSymbols": "{1} símbolos",
"PasswordsDontMatch": "La nueva contraseña y la confirmación de la nueva contraseña no son iguales.",
"PasswordChanged": "Su contraseña ha sido cambiada",
"AutoLoggedInIP": "Ha iniciado la sesion automáticamente por su IP",
"WelcomeBack": "¡Bienvenidos de nuevo a {1}, {2}! Por favor, {3} para continuar",
"WelcomeNewPlayer": "¡Bienvenido a {1}, {2}! Por favor, {3} para jugar",
"InvalidPlayer": "Jugador no encontrado",
"InvalidBusiness": "Negocio no encontrada",
"InvalidHouse": "Casa no encontrada",
"InvalidVehicle": "Vehículo no encontrado",
"InvalidClan": "Clan no encontrado",
"InvalidClanRank": "Rango del clan no encontrado",
"InvalidJob": "Trabajo no encontrado",
"InvalidItem": "Objeto no encontrado",
"InvalidItemType": "Tipo de objeto no encontrado",
"InvalidRadioStation": "Estación de radio no encontrada",
"InvalidGate": "Puerta no encontrada",
"EntersProperty": "abre la puerta y entra en el {1} ({2})",
"ExitsProperty": "abre la puerta y sale del {1} ({2})",
"EnterExitPropertyDoorLocked": "intenta abrir la puerta {1} pero no lo consigue porque está cerrada",
"PropertyNoInterior": "Este {1} no tiene un interior, pero todavía puede utilizar los comandos en el icono de la puerta",
"NoBusinessWithItemType": "No hay ningun negocio con ese objeto disponible",
"HeaderKeyBinds": "Atajos de teclado",
"HeaderAccountHelp": "Account Help",
"HeaderVehicleHelp": "Vehicle Help",
"HeaderVehicleDealershipHelp": "Ayuda del Concesionario de Vehiculos",
"HeaderJobHelp": "Ayuda del Trabajo",
"HeaderChatHelp": "Ayuda del Chat",
"HeaderServerRules": "Reglas del Servidor",
"HeaderWebsiteInfo": "Sitio Web",
"HeaderDiscordInfo": "Discord",
"HeaderAnimationsList": "Lista de animaciones",
"HeaderPayAndSprayHelp": "Ayuda de 'Pay and Spray'",
"HeaderAmmunationHelp": "Ayuda de 'Ammunation'",
"HeaderVehicleTuneupHelp": "Ayuda de Puesta a punto del vehículo",
"HeaderBindableKeysHelp": "Atajos de teclado",
"HeaderSkinHelp": "Ayuda de Ropa/Personaje",
"HeaderBusinessHelp": "Ayuda del negocio",
"HeaderClanHelp": "Ayuda del clan",
"HeaderPlayerVehiclesList": "Vehiculos del jugador ({1})",
"HeaderPlayerBusinessesList": "Negocios del jugador ({1})",
"HeaderClansList": "Lista de clanes",
"HeaderAdminsList": "Lista de administradores",
"HeaderAccentsList": "Lista de acentos",
"HeaderPlayerInfo": "Información del jugador ({1})",
"HeaderWealthandTaxHelp": "Información sobre el patrimonio y los impuestos",
"HeaderCommandInfo": "Información de comando ({1})",
"HeaderRadioHelp": "Ayuda para la radio",
"HeaderRadioStationsList": "Emisoras de radio",
"HeaderKeyBindsList": "Lista de atajos de teclado",
"RadioVolumeChanged": "{1} Has cambiado el volumen de tu radio en directo a {2}%",
"VolumeLevelNotNumber": "El volumen debe ser un número",
"RadioStationLocationInvalid": "Debe estar en un vehículo, casa o negocio o tener un dispositivo personal para cambiar la emisora",
"ActionBusinessRadioStationChange": "cambia la emisora de la radio del negocio a {1} ({2})",
"ActionHouseRadioStationChange": "cambia la emisora de la radio de la casa a {1} ({2})",
"ActionVehicleRadioStationChange": "cambia la emisora de la radio del vehículo a {1} ({2})",
"ActionItemRadioStationChange": "cambia la estación de {1} a {2} ({3})",
"RandomVehicleCommandsDisabled": "Este es un vehículo de tráfico aleatorio y los comandos no se pueden utilizar en él",
"HouseDoorLock": "Casa {1} {2}!",
"BusinessDoorLock": "Negocio {1} {2}!",
"ServerGameModeRestarting": "El modo de juego del servidor se reinicia",
"HeaderSelfItemList": "Su inventario",
"HeaderPlayerItemList": "Inventario del jugador ({1})",
"HeaderHouseItemList": "Inventario de la casa",
"HeaderBusinessFloorItemList": "Inventario del negocio (En venta)",
"HeaderBusinessStorageItemList": "Inventario del negocio (Almacén)",
"HeaderItemItemList": "Inventario de {1}",
"ItemSlotNotNumber": "La ranura del objeto debe ser un número",
"ItemSlotMustBeBetween": "La ranura del objeto debe ser un número entre {1} y {2}!",
"UseItemBugged": "El objeto que intentas utilizar tiene un error. Se ha enviado un informe de error a los desarrolladores del servidor",
"PickupItemBugged": "El objeto que intentas recoger tiene un error. Se ha enviado un informe de error a los desarrolladores del servidor",
"DropItemBugged": "El objeto que intentas soltar tiene un error. Se ha enviado un informe de error a los desarrolladores del servidor",
"HandsBusy": "Tus manos están ocupadas",
"CantUseItemInSkinChange": "No puedes usar un objeto mientras personalizas tu apariencia",
"CantDropItemInSkinChange": "No puedes soltar un objeto mientras personalizas tu apariencia",
"CantPickupItemInSkinChange": "No puedes recoger un objeto mientras personalizas tu apariencia",
"CantSwitchItemInSkinChange": "No puedes cambiar de objeto mientras se personaliza la apariencia",
"CantGiveItemInSkinChange": "No puedes dar un objeto mientras personalizas tu apariencia",
"CantTakeItemInSkinChange": "No puedes coger un objeto mientras personalizas tu apariencia",
"ItemUnequippableNoAmmo": "{1} (ranura {2}) no tiene munición y no puede equiparse",
"NoSpaceSelfInventory": "No tienes más espacio en tu inventario",
"Business": "negocio",
"House": "casa",
"Clan": "clan",
"Vehicle": "vehiculo",
"Item": "objeto",
"ItemType": "tipo de objeto",
"Gate": "portón",
"Door": "puerta",
"ClanRank": "rango del clan",
"JobRank": "rango del trabajo",
"RadioStation": "estación de radio",
"Months": [
"Enero",
"Febrero",
"Marzo",
"Abril",
"Mayo",
"Junio",
"Julio",
"Agosto",
"Septiembre",
"Octubre",
"Noviembre",
"Diciembre"
],
"WeekDays": [
"Domingo",
"Lunes",
"Martes",
"Miércoles",
"Jueves",
"Viernes",
"Sábado"
],
"CardinalDirections": {
"North": "Norte",
"Northeast": "Noreste",
"East": "Este",
"Southeast": "Sureste",
"South": "Sur",
"Southwest": "Suroeste",
"West": "Oeste",
"Northwest": "Noroeste"
},
"NewPlayerReadyToPlay": [
"Te han dado algo de dinero. Usa {1} para encontrar lugares donde comprar artículos",
"Si necesitas dinero, los trabajos son los puntos amarillos del radar",
"Para conseguir un coche, visita el concesionario de coches. También puedes utilizar un vehículo de alquiler cerca del punto de aparición o tomar el tren",
"Asegúrese de leer el {1} y utilizar el {2} para obtener información"
],
"YourCurrentVehicleDeleted": "El vehículo en el que estabas fue eliminado",
"Distance": "Distancia",
"Meters": "Metros",
"Feet": "Pies",
"Kilometers": "Kilómetros",
"Miles": "Millas",
"MustBeVehicleDriver": "¡Debes ser el conductor del vehículo!",
"PlayerJoinedServer": "¡{1} se unió al juego desde {2}!",
"PlayerLeftServer": "¡{1} ha abandonado el juego! ({2})",
"TakeItemFromHouse": "saca {1} de la casa",
"TakeItemFromBusinessStorage": "saca {1} del almacén del negocio",
"TakeItemFromBusiness": "saca {1} del negocio",
"TakeItemFromItem": "saca {1} del {2}",
"TakeItemFromVehicleTrunk": "saca {1} del maletero",
"TakeItemFromVehicleDash": "saca {1} de la guantera",
"AccountHelp": [
"NO comparta su contraseña con nadie más. El personal de {1} nunca le pedirá su contraseña",
"Utilice {1} para cambiar su contraseña, y {2} si la ha olvidado",
"Algunos comandos: {1}"
],
"VehicleHelp": [
"Sus vehículos personales se guardarán donde usted u otra persona los deje",
"Visite un concesionario para comprar vehículos nuevos. {1} para más información)",
"Algunos comandos: {1}",
"Visita un taller mecánico para reparar, colorear y poner a punto tu coche. {1} para más información"
],
"VehicleDealershipHelp": [
"Visite un concesionario para comprar vehículos nuevos. {1} para encontrar uno",
"En el concesionario, introduce el coche que quieres comprar, y se te mostrará el precio",
"Si quieres comprar el vehículo, utiliza {1} y te darán las llaves para que lo pruebes en el aparcamiento",
"Salga del concesionario con el vehículo nuevo para confirmar la compra"
],
"JobHelp": [
"Visita los lugares de trabajo para conseguir un empleo y ganar dinero. Busca puntos amarillos en el mapa",
"En un lugar de trabajo, usa {1} para conseguir el trabajo. Utiliza {2} para dejar el trabajo",
"Usa {1} para empezar a trabajar. También puedes conseguir un trabajo {2} y {3}",
"La mayoría de los vehículos de trabajo están cerrados. Usa {1} cerca de uno para entrar en él",
"Al entrar en un vehículo de trabajo, se le mostrará información sobre cómo hacer el trabajo"
],
"ChatHelp": [
"Hay dos tipos principales de chat: fuera del personaje (OOC) y dentro del personaje (IC)",
"Mezclar estos dos tipos no resulta en un juego de rol apropiado. Vea {1} para más información",
"Algunos comandos del chat: {1}",
"Algunos tienen nombres más cortos disponibles ({1} para hablar, {2} para gritar, etc)"
],
"ServerRulesHelp": [
"Las acciones irreales (powergaming) no están permitidas. No eres Superman",
"No se permite ningún juego de rol terrorista o de terrorismo",
"Siga siempre las instrucciones de los moderadores y administradores",
"No mezcles los chats (metagaming). No puedes usar información en IC que fue recibida OOC",
"Mantén el inglés en los chats principales. Si no se te da bien el inglés, utiliza {1}"
],
"AnimationHelp": [
"Las animaciones permiten mejorar el juego de rol con acciones visuales",
"Utilice {1} o {2} con un nombre para utilizar una animación",
"Para ver una lista de animaciones, utilice {1}"
],
"WeaponHelp": [
"Visita una armería para comprar armas. Usa {1} para encontrar una",
"La compra de un arma requiere una licencia de armas",
"Las licencias de armas son gestionadas por el departamento de policía. Solicítela allí para obtenerla",
"Las armas también pueden comprarse ilegalmente en algunos negocios, vendedores de armas y clanes"
],
"SkinHelp": [
"En una tienda de ropa, usa {1} para comprar ropa",
"Cuando tengas un objeto de ropa, equípalo y úsalo como cualquier otro objeto para mostrar la selección de personajes (revisa {1} para aprender a usar objetos)",
"Algunas pieles están restringidas a trabajos, clanes o por otras razones"
],
"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, {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"
],
"BusinessHelp": [
"Utilice {1} para comprar artículos o {2} para ver una lista de lo que está a la venta en cualquier negocio",
"Las empresas aparecen con nombres azules sobre el icono de su entrada",
"Comandos del dueño del negocio: {1}",
"Un coche nuevo en venta aparecerá cuando salgas del concesionario"
],
"ClanHelp": [
"Pedir a un administrador que cree un clan (similar a las facciones/grupos/familias)",
"Los propietarios de clanes tienen pleno control sobre su clan una vez creado",
"Comandos de clan: {1}",
"Más comandos del clan: {1}"
],
"RadioStationHelp": [
"Utilice {1} para fijar la estación de su vehículo, casa o negocio",
"Utilice {2} para ver una lista de estaciones",
"Puedes cambiar el volumen de tu radio usando {1} con 0-100 como porcentaje"
],
"WealthAndTaxHelp": [
"Sus impuestos en el día de pago son el {1} por ciento de su riqueza calculada",
"Su riqueza calculada es una suma total basada en cuántos vehículos, casas y negocios tiene",
"Cada vehículo es {1}, cada casa es {2}, y cada negocio es {3}",
"Utilice {1} para ver su patrimonio actual, y {2} para ver cuánto pagará de impuestos cada día de pago"
],
"MustBeInAVehicle": "Necesitas estar en un vehículo",
"MustBeInOrNearVehicle": "Tienes que estar dentro o cerca de un vehículo",
"MustBeInVehicleFrontSeat": "Tienes que estar en los asientos delanteros del vehículo",
"MustBeInVehicleDriverSeat": "Tienes que ser el conductor",
"DontHaveVehicleKey": "No tiene una llave para este vehículo",
"NoGateAccess": "No tienes acceso a esta puerta",
"GateBroken": "Esta puerta está rota",
"GateHacked": "La puerta no funciona",
"RadioJammed": "Sólo se oye la estática de la radio",
"VehicleNotForSale": "Este vehículo no está en venta",
"VehicleNotForRent": "Este vehículo no se alquila",
"BusinessNotForSale": "Este negocio no está en venta",
"BusinessNotForRent": "Este negocio no se alquila",
"HouseNotForSale": "Esta casa no está en venta",
"HouseNotForRent": "Esta casa no está en alquiler",
"DealershipPurchaseTestDrive": "Conduzca fuera del concesionario para comprar el vehículo, o salga del vehículo para cancelar",
"DealershipPurchaseExitedVehicle": "Has cancelado la compra del vehículo al salir de él",
"VehiclePurchaseComplete": "¡Este vehículo es ahora tuyo! Se guardará donde quiera que lo dejes",
"VehiclePurchaseNotEnoughMoney": "No tienes suficiente dinero para comprar este vehículo",
"HousePurchaseNotEnoughMoney": "No tienes suficiente dinero para comprar esta casa",
"BusinessPurchaseNotEnoughMoney": "No tienes suficiente dinero para comprar este negocio",
"ADDED-21JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
"HeaderPlayerHousesList": "Casas del jugador ({1})",
"HeaderPlayerStaffFlagsList": "Banderas administrativas del jugador ({1})",
"HeaderStaffFlagsList": "Banderas administrativas",
"NonRPName": "¡Nombre no RP! Elige uno nuevo:",
"InvalidStaffFlag": "Bandera administrativa no encontrada",
"InvalidClanFlag": "Bandera del clan no encontrada.",
"InvalidLocale": "Lenguaje no encontrado!",
"HeaderJobUniformList": "Uniformes de Trabajo ({1})",
"HeaderJobEquipmentList": "Equipamiento de Trabajo ({1})",
"InvalidJobUniform": "Uniforme de trabajo no encontrado!",
"InvalidJobEquipment": "Equipamiento de trabajo no encontrado!",
"HeaderVehiclesInRangeList": "Vehiculos Cercanos< {1}",
"NoVehiclesWithinRange": "No hay vehiculos cercanos {1}",
"AmountNotNumber": "La cantidad debe ser un numero!",
"NeedToBeWorking": "Necesitas estar trabajando! Usa {1} en un lugar o vehiculo de trabajo.",
"NeedToBeOnJobRoute": "Necesitas estar en una ruta de trabajo! Usa {1} en un vehiculo de trabajo.",
"CurrentJobRouteVehicleColoursChanged": "El color de tu vehiculo de trabajo fue cambiado por un admin.",
"NotYourJob": "Este no es tu trabajo!",
"JobPoints": "Puedes conseguir un trabajo llendo a los puntos amarillos del mapa.",
"QuitJobToTakeAnother": "Si quieres este trabajo, usa {1} para dejar tu trabajo actual.",
"NotAJobVehicle": "Este no es un vehiculo de trabajo!",
"NotYourJobVehicle": "Este no es tu vehiculo de trabajo!",
"HeaderPickupTypes": "Tipos de recogidas.",
"HeaderBlipTypes": "Tipos de iconos para mapa.",
"InvalidGPSLocation": "No hay locaciones con ese nombre o tipo.",
"HeaderBusinessList": "Negocios",
"VehicleForSale": "Esto {1} es comprable por {2}! Usa {3} si deseas comprarlo.",
"VehicleForRent": "Esto {1} es rentable por {2}! Usa {3} si deseas rentarlo.",
"ADDED-31JAN2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
"LoginFailedInvalidPassword": "Contraseña incorrecta! {1} intentos restantes",
"LoginFailedNoPassword": "Debes ingresar una contraseña! ! {1} intentos restantes",
"RegistrationFailedNoPassword": "Debes ingresar una contraseña!",
"RegistrationFailedNoPasswordConfirm": "Debes confirmar la contraseña!",
"RegistrationFailedNoEmail": "Debes ingresar un email!",
"AccountNameAlreadyRegistered": "Este nombre ya esta registrado!",
"AlreadyLoggedIn": "Ya te encuentras logeado!",
"RegistrationFailedInvalidEmail": "Este correo es invalido!",
"RegistrationFailedPasswordMismatch": "La contraseña no coincide!",
"RegistrationFailedCreateError": "Tu cuenta no pudo ser creada!",
"RegistrationSuccess": "Tu cuenta fue creada!",
"RegistrationEmailVerifyReminder": "No olvides verificar tu email! Se te envio un codigo de verificación.",
"RegistrationCreateCharReminder": "Para jugar en el servidor, debes crear un personaje.",
"NoCharactersGUIMessage": "No tienes ningun personaje. Deseas crear uno?",
"NoCharactersGUIWindowTitle": "Sin Personajes",
"NoCharactersChatMessage": "No tienes personajes. Usa {1} para crear uno.",
"NeedEmailFor2FA": "Necesitas añadir un email a tu cuenta para usar la autenticación de dos-factores.",
"NeedEmailVerifiedFor2FA": "Necesitas verificar tu email para usar la autenticación de dos-factores.",
"SetEmailHelpTip": "Usa {1} para establecer tu email.",
"VerifyEmailHelpTip": "Usa {1} para verificar tu email.",
"ADDED-13FEB2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations.",
"NearbyRadio": "Radio Cercano",
"FromRadio": "Del Radio",
"ToRadio": "Al Radio",
"NeedToEnterPropertyCommand": "¡Tienes que entrar en el {1} primero! Usa {2} para entrar y salir",
"NeedToEnterPropertyKeyPress": "¡Tienes que entrar en el {1} primero! Presiona {2} para entrar y salir",
"InventoryFullCantCarry": "¡No tienes suficiente espacio para llevar esto! (inventario lleno)",
"NotEnoughCashNeedAmountMore": "¡No tienes suficiente dinero! Necesitas {1} más!",
"AmountMustBeMoreThan": "¡La cantidad debe ser más de {1}!",
"WeaponBanned": "¡No tienes permitido usar o comprar armas!",
"TimeNotNumber": "El tiempo debe ser un número",
"HeaderDefaultBusinessItemTypes": "Plantillas de Ítems Comerciales",
"FixingStuck": "Arreglando tu posición y mundo virtual ...",
"CantUseCommandYet": "¡Debes esperar antes de usar este comando nuevamente!",
"NotATester": "¡No eres un tester!",
"AccessDenied": "AccesoDenegado",
"InvalidSkin": "¡Esta skin es inválida!",
"HeaderInteriorTypes": "Lista de interiores",
"GUIAccountSettingToggle": "Has {1} la Interfaz de Usuario",
"ADDED-23MAR2022": "DO NOT TRANSLATE. This string is just a comment to separate newly added translations",
"CarCommandHelp": "Puedes comprar un auto visitando un concesionario de vehículos. Usa {1} para más información.",
"SkinCommandHelp": "Puedes cambiar tu skin visitando una Tienda de Ropa. Usa {1} para más información.",
"BusinessVehiclesRespawned": "¡Todos los vehículos comerciales han sido Re-Spawneados por un Administrador!",
"JobVehiclesRespawned": "¡Todos los vehículos de trabajo han sido Re-Spawneados por un Administrador!",
"PlayerVehiclesRespawned": "¡Todos los vehículos de los jugadores han sido Re-Spawneados por un Administrador!",
"ClanVehiclesRespawned": "¡Todos los vehículos de los clanes han sido Re-Spawneados por un Administrador!",
"PublicVehiclesRespawned": "¡Todos los vehículos públicos han sido Re-Spawneados por un Administrador!",
"EmptyVehiclesRespawned": "¡Todos los vehículos vacíos han sido Re-Spawneados por un Administrador!",
"AllVehiclesRespawned": "¡Todos los vehículos han sido Re-Spawneados por un Administrador!",
"AllVehiclesReloaded": "¡Todos los vehículos han sido recargados por un administrador!",
"YourVehicleRespawned": "Tu vehículo ha sido Re-Spawneado",
"PlayerIPBanned": "¡{1} fue baneado por IP!",
"PlayerCharacterBanned": "¡{1} fue baneado de su personaje!",
"PlayerSubNetBanned": "{1} fue baneado por Rango de IP!",
"CantModifyBusiness": "No puedes administrar o modificar este comercio",
"CantModifyHouse": "No puedes administrar o modificar esta casa",
"ServerTimeSet": "{1} estableció el tiempo a {2}",
"ServerWeatherSet": "{1} estableció el clima a {2}",
"ServerSnowSet": "{1} estableció nevada {2} y nieve terrestre {3}",
"AllJobsReloaded": "Todos los trabajos del servidor han sido recargados por un Administrador",
"ServerLogoSet": "{1} cambió la imagen del logotipo del servidor {2}",
"ServerGUISet": "{1} cambió la Interfaz de Usuario para este servidor {2}",
"ServerBusinessBlipsSet": "{1} cambió todos los puntos comerciales {2}",
"ServerHouseBlipsSet": "{1} cambió todos los puntos de las casas {2}",
"ServerJobBlipsSet": "{1} cambió todos los puntos de trabajo {2}",
"ServerBusinessPickupsSet": "{1} cambió todos los objetos recoleccionables comerciales {2}",
"ServerHousePickupsSet": "{1} cambió todos los objetos recoleccionables de las casas {2}",
"ServerJobPickupsSet": "{1} cambió todos los objetos recoleccionables de trabajos {2}",
"BusinessBuyItemsLabel": "Usa {1} para comprar ítems",
"PropertyEnterCommandLabel": "Usa {1} para entrar",
"PropertyEnterKeyPressLabel": "Presiona {1} para entrar",
"PropertyForSaleLabel": "En venta: {1}",
"PropertyForRentLabel": "En alquiler: {1} cada día de pago",
"RemainingTaxPaidInMoney": "Has cubrido los impuestos restantes con {1} en efectivo.",
"LostMoneyFromTaxes": "¡Perdiste dinero ya que sus impuestos son más que su cheque de pago!",
"NextPaycheckRepossessionWarning": "¡Si no tiene suficiente efectivo para cubrir los impuestos en el próximo cheque de pago, perderá cosas!",
"NotEnoughMoneyForTax": "¡No tienes suficiente dinero para cubrir tus impuestos!",
"AssetsRepossessedForTax": "¡Perdiste {1} vehículos, {2} casas, y {3} comercios ya que no pagaste tus impuestos!",
"Closed": "Cerrado",
"Open": "Abierto",
"VehicleDealershipLabel": "Entra a un vehículo como conductor para comprarlo",
"TakeJobLabel": "Usa {1} para trabajar aquí",
"StartWorkLabel": "Usa {1} para empezar a trabajar",
"JobEquipAndUniformLabel": "Usa {1} y {2} para cosas de trabajo, o {3} para dejar de trabajar",
"NotYourJobLabel": "Ya tienes otro trabajo. Usa {1} si quieres este",
"JobLabel": "{1} Trabajo",
"PaydayBonusSet": "🤑 {1} fijó el bono de día de pago en {2}",
"AllHousesReloaded": "🏘️ ¡Todas las casas han sido recargadas por un Administrador!",
"AllRadioStationsReloaded": "📻 ¡Todas las estaciones de radio han sido recargadas por un Administrador!",
"PlayerKicked": "🦶 {1} fue expulsado de este servidor",
"AllBusinessesReloaded": "🏢 ¡Todos los comercios fueron recargados por un Administrador!",
"UnableToDoThat": "No eres capaz de hacer esto",
"SetVehicleClanConfirmMessage": "¿Estás seguro que quieres regalar este vehículo a tu clan?",
"SetVehicleClanConfirmTitle": "¡Advertencia!",
"SetItemPriceBelowOrderPriceMessage": "¿Está seguro de que desea establecer el precio del artículo por debajo del precio del pedido? ¡Perderá {1} en cada compra!",
"SetItemPriceBelowOrderPriceTitle": "¡Advertencia!",
"MustOwnVehicle": "¡No eres dueño de este vehículo!",
"RandomTips": [
"Busca puntos amarillos en tu mapa para encontrar ubicaciones de trabajo",
"Puedes establecer combinaciones de teclas personalizadas. Usa {1} para más detalles",
"Usa {1} si no quieres ver tips o información extra.",
"Puedes editar tus combinaciones de teclas usando {1} y {2}",
"Presiona para ver tu inventario, y use las teclas numéricas para seleccionar un elemento",
"Usa {1} en un comercio para comprar artículos",
"¿Encontraste un bug? Repórtalo con {1}",
"¿Tiene alguna idea o sugerencia para el servidor? Hágales saber a los desarrolladores usando {1}",
"¿Quieres comprar un comercio? Usa {1} en uno en venta",
"¿Quieres comprar una casa? Usa {1} en uno en venta",
"¿Quieres comprar un vehículo? Visite un concesionario e ingrese a uno para obtener información sobre cómo comprarlo!",
"Cambia a cualquiera de tus personajes con {1}",
"Usa {1} para iniciar sesión automáticamente cuando se conecta con la misma IP",
"Usa {1} para encender / apagar las luces de tu casa o comercio",
"Usa {1} para reproducir una estación de radio por Internet en tu vehículo, casa o negocio",
"¿Quieres hacer un clan? Usa {1} para más detalles",
"Las armas legales se pueden comprar en cualquier Ammu-Nation."
],
"PromptResponseTip": "Usa {1} para aceptar, o {2} para rechazar",
"PlayerConnecting": "👋 {1} se está conectando al servidor",
"GetStartedJobVehicle": "Entra en un {1} para empezar.",
"VehicleTypes": {
"Car": "Auto",
"Truck": "Camión",
"Van": "Camioneta",
"Taxi": "Taxi",
"Bus": "Autobús",
"PoliceCar": "Coche de Policía",
"Ambulance": "Ambulancia",
"FireTruck": "Camión de Bomberos",
"Bike": "Bicicleta",
"Motorbike": "Motocicleta",
"Boat": "Barco",
"Helicopter": "Helicóptero",
"Plane": "Avión",
"Train": "Tren"
},
"AlreadyOnJobRoute": "¡Ya estás haciendo una ruta de trabajo!",
"GaveVehicleToClan": "¡Le diste este {1} a tu clan!",
"JobDisabled": "¡Este trabajo no está disponible!",
"SetHouseClanConfirmMessage": "¿Estás seguro de darle esta casa a tu clan?",
"SetHouseClanConfirmTitle": "¡Advertencia!",
"SetBusinessClanConfirmMessage": "¿Estás seguro de darle este comercio a tu clan?",
"SetBusinessClanConfirmTitle": "¡Advertencia!",
"MustOwnHouse": "¡No eres dueño de esta casa!",
"MustOwnBusiness": "¡No eres dueño de este comercio!",
"GaveHouseToClan": "¡Le diste esta casa a tu clan!",
"GaveBusinessToClan": "¡Le diste este comercio a tu clan!",
"BuyBusinessConfirmMessage": "¿Estás seguro de que quieres comprar este comercio?",
"BuyBusinessConfirmTitle": "¡Atención!",
"BuyHouseConfirmMessage": "¿Estás seguro de que quieres comprar esta casa?",
"BuyHouseConfirmTitle": "¡Atención!",
"BuyBusinessLabel": "Usa {1} para comprar este comercio",
"BuyHouseLabel": "Usa {1} para comprar esta casa",
"RentHouseLabel": "Usa {1} para alquilar esta casa",
"AccountEmailAlreadyVerified": "¡Ya configuraste y verificaste tu correo electrónico!",
"EmailVerificationCodeSent": "Se ha enviado un código de verificación e instrucciones a tu correo electrónico.",
"GUIPlayAsCharacterButton": "Jugar",
"GUINewCharacterButton": "Nuevo personaje",
"GUIPreviousCharacterButton": "Anterior",
"GUINextCharacterButton": "Siguiente",
"GUICharacterSelectWindowTitle": "Seleccionar un personaje",
"GUICharacterSelectMoneyLabel": "Dinero: {1}",
"GUICharacterSelectClanLabel": "Clan: {1}",
"GUICharacterSelectLastPlayedLabel": "Última vez que se jugó: Hace {1} días, {2} horas, {3} minutos",
"GUILoginWindowLabelEnterPassword": "Por favor, introduzca su contraseña",
"GUILoginWindowSubmitButton": "Iniciar sesión",
"GUILoginWindowResetPasswordButton": "Restablecer",
"GUILoginWindowPasswordPlaceholder": "Contraseña",
"GUILoginWindowForgotPasswordLabel": "¿Olvidaste tu contraseña?",
"GUIRegisterWindowLabelCreateAccount": "Crear una cuenta",
"GUIRegisterWindowPasswordPlaceholder": "Contraseña",
"GUIRegisterWindowConfirmPasswordPlaceholder": "Confirmar contraseña",
"GUIRegisterWindowEmailPlaceholder": "Email",
"GUIRegisterWindowSubmitButton": "Crear cuenta",
"GUINewCharacterMessageLabel": "Nombra a tu personaje",
"GUINewCharacterFirstNamePlaceholder": "Nombre",
"GUINewCharacterLastNamePlaceholder": "Apellidos",
"GUINewCharacterSubmitButton": "Crear personaje",
"GUIChangePasswordWindowTitle": "Cambiar contraseña",
"GUIChangePasswordPasswordLabel": "Introduzca una nueva contraseña",
"GUIChangePasswordPasswordPlaceholder": "Contraseña",
"GUIChangePasswordConfirmPasswordPlaceholder": "Confirmar contraseña",
"GUIChangePasswordSubmitButton": "Cambiar contraseña",
"GUIResetPasswordWindowMessage": "Reiniciar contraseña",
"GUIResetPasswordConfirmEmailLabel": "Por favor, confirme su correo electrónico",
"GUIResetPasswordEmailPlaceholder": "Email",
"GUIResetPasswordSubmitButton": "Restablecer contraseña",
"GUIResetPasswordLoginButton": "Iniciar sesión",
"GUIResetPasswordRememberMessage": "¿Recuerdas tu contraseña?",
"HeaderJobList": "Jobs",
"HeaderBusinessInfo": "Business Info",
"HeaderHouseInfo": "House Info",
"HeaderClanInfo": "Clan Info",
"Locales": {
"English": "Inglés",
"Russian": "Ruso",
"Spanish": "Español",
"German": "Alemán",
"Dutch": "Holandés",
"Polish": "Polaco",
"Chinese": "Chino",
"French": "Francés",
"Japanese": "Japonés",
"Slovak": "Eslovaco",
"Arabic": "Árabe"
},
"TwoFactorAuthSet": "⚙️ Has activado la autenticación de dos factores {1}",
"AccountServerLogoSet": "⚙️ Has cambiado el logo del servidor {1}",
"ChatScrollLinesNotNumber": "El monto de la línea debe ser un número",
"ChatScrollLinesMustBeBetween": "El monto de la línea debe ser entre {1} y {2}",
"ChatScrollLinesSet": "La ventana de chat se desplazará ahora {1} líneas a la vez",
"InvalidEmailVerificationCode": "¡Código de verificación de correo electrónico no válido! Se ha creado uno nuevo y enviado a su correo electrónico.",
"EmailVerified": "Tu correo electrónico ha sido verificado",
"EmailVerifiedTip": "Ahora puedes usar tu correo electrónico para restablecer contraseñas, autenticación de dos factores, alertas de inicio de sesión y más",
"CommandRequiresLogin": "Debe iniciar sesión para utilizar el commando {1}",
"CommandDisabled": "El comando {1} está deshabilitado",
"CommandDisabledOnDiscord": "El comando {1} no esta disponible en discord",
"CommandNotFoundHelpTip": "¡El comando {1} no existe! Usa {2} para ver comandos e información.",
"CommandNotFoundPossibleMatchTip": "¡El comando {1} no existe! Querrás decir {2}?",
"CommandNoPermissions": "No tienes permiso para usar el comando {1}",
"GUIResetPasswordCodeInputLabel": "Revisa tu correo electrónico para obtener un código.",
"GUIResetPasswordCodePlaceholder": "Código de verificación",
"GUIErrorTitle": "Error",
"GUIWarningTitle": "Advertencia",
"GUIInfoTitle": "Información",
"GUIOkButton": "Ok",
"GUIErrorResetPasswordFailedInvalidEmail": "¡Correo electrónico inválido!",
"HeaderVehicleInfo": "Información de vehículo",
"HeaderClanRanksList": "Rango del Clan",
"HeaderNPCInfo": "Información de NPC",
"NPCAnimationSet": "Estableciste la animación del NPC {1} a {2}",
"NPCNameSet": "Estableciste el nombre del NPC {1} a {2}",
"VehicleTooFar": "¡Estás demasiado lejos del vehículo!",
"HeaderPropertyTemplateTypes": "Tipos de propiedad",
"MustBeLoggedInAndSpawnedToChat": "¡Debes iniciar sesión y spawnearse antes de poder chatear!",
"MutedCantChat": "¡Estás silenciado y no puedes chatear!",
"CantUseMegaphone": "¡Debes equipar un megáfono o estar en un vehículo de emergencia!",
"HeaderAnimationHelp": "Información de Animación",
"HeaderBadgeInfo": "Información de Insignia ({1})",
"NoItemCloseEnough": "No hay ningún elemento lo suficientemente cerca",
"CantDropJobEquipmentItem": "No puedes soltar elementos de trabajo",
"CantPutJobEquipmentItem": "No puedes almacenar elementos de trabajo",
"NoItemEquipped": "No tienes ningún elemento seleccionado",
"NoItemInActiveSlot": "No tienes un elemento en tu espacio de elementos activo",
"CantPutItemInSkinChange": "No puedes almacenar un artículo mientras personalizas tu apariencia.",
"NothingToTakeItemFrom": "No estás cerca de nada de donde tomar objetos.",
"NoAmmoToLoadIntoWeapon": "No tienes munición para cargar en el {1}",
"LoadAmmoIntoWeaponHelpCommand": "Para cargar esta munición en un arma, equipa una y escribe {1}",
"LoadAmmoIntoWeaponHelpKeyPress": "Para cargar esta munición en un arma, equipa una arma y presiona {1}",
"NobodyCloseEnoughToHandcuff": "Nadie está lo suficientemente cerca para esposar",
"NobodyCloseEnoughToTie": "Nadie está lo suficientemente cerca para atar",
"PlayerNotSurrenderedHandcuff": "¡{1} no puede ser esposado! Necesita tener las manos en alto, ser noqueado o tazeado.",
"PlayerNotSurrenderedTie": "¡{1} no puede ser atado! Necesita tener las manos en alto, ser noqueado o tazeado.",
"HeaderCharactersListSelf": "Tus personajes",
"HeaderCharactersListOther": "Personajes de {1}",
"CharacterSelectHelpText": "Usa {1} para seleccionar un personaje, o {2} para crear uno nuevo",
"ItemDoesntDoAnythingOnUse": "El {1} no hace nada cuando intentas usarlo",
"ItemRadioStationTip": "Usa {1} para configurar la estación de radio",
"VehicleLockedCommandTip": "🔒 Este {1} está bloqueado. Usa {2} para desbloquearlo",
"VehicleLockedKeyPressTip": "🔒 Este {1} está bloqueado. Presiona {2} para desbloquearlo",
"VehicleLockedCantUnlock": "🔒 Este {1} está bloqueado y no tienes las llaves para desbloquearlo",
"CurrentlyRentingThisVehicle": "Estás alquilando este {1} por {2} cada minuto. Usa {3} si quieres dejar de alquilarlo.",
"VehicleBelongsTo": "Este {1} pertenece a {2} ({3})",
"NotOwned": "Sin dueño",
"NotCloseEnoughToItemContainer": "No estás lo suficientemente cerca de nada que contenga objetos",
"Job": "Trabajo",
"Player": "Jugador",
"BusinessIsNowPaintBall": "Este comercio ahora es un campo de paintball.",
"JoinedPaintBall": "Te has unido al juego de paintball..",
"ItemsStoredForPaintBall": "Tus artículos se almacenan en tu casillero y serán devueltos cuando abandones el juego de paintball.",
"LeftPaintBall": "Has dejado el juego de paintball. Sus artículos han sido devueltos.",
"PaintBallEnded": "El partido de paintball ha terminado. Tus artículos han sido devueltos.",
"HeaderEventWinners": "Ganadores",
"YourPaintBallResults": "Obtuviste {1} muertes y {2} defunciones en el partido de paintball",
"NoPrivateMessageToReply": "No has recibido un mensaje privado para responder",
"WeaponDoesNotUseAmmo": "El {1} no usa munición",
"ChatBoxTimestampsToggle": "Activaste {1} visualizaciónes de tiempo en el chatbox",
"ProfanityFilterSet": "Cambiaste el filtro de malas palabras del chat {1}",
"ResetAllKeyBindsConfirm": "¿Estás seguro de que deseas restablecer todas las combinaciones de teclas a sus valores predeterminados?",
"NotRentingAVehicle": "¡No estás alquilando un vehículo!",
"StoppedRentingVehicle": "Dejaste de alquilar el {1}",
"VehicleEngineStartKeyPressTip": "El motor del {1} está apagado. Presiona {2} para encenderlo.",
"VehicleEngineStartCommandTip": "El motor del {1} está apagado. Usa {2} para encenderlo.",
"StartedRentingVehicle": "Ahora estás alquilando este {1} por {2} cada minuto. Para dejar de alquilarlo, usa {3}",
"VehicleAlreadyRentedByOther": "Este vehículo ya está alquilado por otra persona",
"VehicleAlreadyRentedBySelf": "Ya estás alquilando este vehículo",
"JobRankTooLow": "¡No tienes un rango lo suficientemente alto!",
"InvalidKeyName": "¡El ID de clave o el nombre que ingresaste no es válido!",
"KeyBindsReset": "Todas tus combinaciones de teclas se han restablecido a los valores predeterminados",
"KeyBindNameTip": "Utilice nombres de teclas simples, letras o números. No agregue espacios.",
"UniversalInlineExamplesList": "Ejemplos: {1}",
"KeyBindRemoved": "Quitaste la combinación de teclas para la tecla {1}",
"KeyBindAdded": "Has vinculado la tecla {1} a la {2}",
"CopyAllKeyBindsToServerConfirm": "¿Está seguro de que desea copiar todas sus combinaciones de teclas en el servidor {1}?",
"CopiedAllKeyBindsToServer": "Todas sus combinaciones de teclas se han copiado en el servidor {1}",
"MustBeSpawned": "¡Debes estar spawneado!",
"ChatEmojiSet": "Activaste emoji automático en el chat {1}",
"FishingLineNotCast": "¡Tu hilo de pescar no está lanzado!",
"CantFishHere": "¡No puedes pescar aquí! ¡Necesitas estar cerca del agua o en un bote!",
"NeedFishingRod": "Necesitas estar sosteniendo una caña de pescar!",
"FishingCastCommandHelp": "Usa {1} para lanzar tu hilo de pescar",
"FishingCastKeyBindHelp": "Presiona {1} para lanzar tu hilo de pescar",
"Paused": "En Pausa",
"PaintBallAlmostWin": "¡{1} solo necesitas {2} muertes más para ganar la partida de paintball!",
"HeaderClanFlagsList": "Clan Flags ({1})",
"PleaseWait": "Please wait ...",
"HeaderServerRulesList": "Server Rules",
"FrequencyChannelChanged": "You set the channel of your {1} in slot {2} to {3}",
"ItemTurnedOnOff": "You turned {1} your {2} in slot {3}",
"SkinSelectHelpTextSkin": "Press {1} or {2} to switch skin, {3} to save, or {4} to cancel",
"SkinSelectHelpTextBodyPart": "Press {1} or {2} to switch body part",
"SkinSelectBodyPartNames": {
"Head": "Head",
"UpperBody": "Upper Body",
"LowerBody": "Lower Body",
"Hair": "Hair",
"Hat": "Hat",
"Glasses": "Glasses",
"LeftHand": "Left Hand",
"RightHand": "Right Hand",
"LeftWrist": "Left Wrist",
"RightWrist": "Right Wrist"
},
"DisconnectReasons": {
"Unknown": "Unknown",
"LostConnection": "Lost Connection",
"Disconnected": "Disconnected",
"UnsupportedClient": "Unsupported Client",
"WrongGame": "Wrong Game",
"IncorrectPassword": "Incorrect Password",
"UnsupportedExecutable": "Unsupported Executable",
"Kicked": "Disconnected",
"Banned": "Banned",
"Failed": "Failed",
"InvalidName": "Invalid Name",
"Crashed": "Crashed",
"ModifiedGame": "Modified Game",
"FailedToLogin": "Kicked - Failed to login",
"NotATester": "Kicked - Not a tester",
"ClientScriptVerificationFail": "Client script verification failed (possible hacks)",
"ServerRestarting": "Server is restarting",
"Desync": "Desynced",
"FailedToCreateCharacter": "Kicked - Didn't create a character"
},
"DevelopersNotified": "The developers have been notified of the problem",
"NoJobLocationCloseEnough": "There are no job locations close enough!",
"NotAllowedToUseJobs": "You are not allowed to use any jobs!",
"CantUseThisJob": "You can't use this job!",
"JobChanged": "💼 You now have the {1} job",
"NeedToBeNearJob": "You need to be near your job location or a vehicle that belongs to your job!",
"DontHaveAJob": "You don't have a job!",
"StartedWorking": "💼 You are now working for the {1} job",
"StoppedWorking": "You have stopped working",
"ItemsStoredForJob": "Your personal items have been stored in your locker while you work",
"NoJobRoutesForLocation": "Your job does not have any routes for this location!",
"CurrentJobRouteDeleted": "The job route you were on has been deleted or disabled by an admin",
"YourTax": "Your tax on payday is: {1}. Use {2} for more information.",
"YourWealth": "Your wealth is: {1}. Use {2} for more information.",
"InvalidKeyBindName": "Key name not found!",
"BusinessPurchased": "🏢You are now the owner of business {1}",
"HousePurchased": "🏘️ You are now the owner of house {1}",
"CopyAllKeyBindsConfirm": "Are you sure you want to copy your keybinds to the {1} server?",
"CopyAllKeyBindsOverwriteWarning": "This will replace all your keybinds on the other server",
"NoPromptAccept": "You don't have anything to accept",
"NoPromptReject": "You don't have anything to reject",
"NotOrderingAnyBusinessItems": "You aren't ordering anything for a business!",
"BusinessOrderCanceled": "You cancelled the business item order",
"DidNotCreateCharacter": "You do not have a character to play. Goodbye!",
"BusinessOrderNotEnoughMoney": "This business doesn't have enough money to order that! Deposit some using {1}",
"ADDED-12OCT2022": "DO NOT TRANSLATE. Example of line below: You ordered 50 Colt 45 (100 rounds) for $5000!",
"BusinessOrderSuccessInfo": "You ordered {1} {2} for {4}!",
"AccountSettings": {
"UseWhiteList": "Access whitelist",
"UseBlackList": "Access blacklist",
"TwoStepAuth": "Require 2FA code on login",
"AuthAttemptAlert": "Email login notifications",
"NoGUI": "No GUI",
"AutoLoginIP": "Automatic login by IP",
"NoServerLogo": "No server logo",
"AutoSelectLastCharacter": "Automatic spawn as most recent character",
"ShowRealTimeClock": "Show real time clock",
"UseGUIForItems": "Use GUI for inventory",
"UseRadialWheelItems": "Use pie wheel for inventory (like GTA V)",
"NoKeyBinds": "No keybinds",
"NoRandomTips": "No random tips",
"NoActionTips": "No action tips",
"ChatBoxTimestamps": "Show time in chat",
"ProfanityFilter": "Profanity filter",
"ChatAutoHide": "Automatically hide inactive chatbox",
"NoPlayerContent": "No custom images (like clan logos or spray tags)",
"ChatEmoji": "Show emoji images in chat"
},
"SaveSettings": "Save Settings",
"Cancel": "Cancel",
"AlreadyOwnVehicle": "You already own this vehicle!",
"PropertyEntranceFeeLabel": "Entrance Fee: {1}",
"NeedToBeInJobVehicle": "You need to be in a job vehicle!",
"InvalidJobRank": "Job rank not found!",
"PayPhoneRecipientAnswered": "Somebody answered the call. Use normal chat to talk to them.",
"PayPhoneAnswered": "You answered the phone. Use normal chat to talk to the caller.",
"PayPhoneRecipientHangup": "The line was disconnected. You have been charged {1}",
"PayPhoneHangup": "You hung up the phone.",
"AlreadyUsingPayPhone": "You are already using a payphone!",
"NotUsingPayPhone": "You are not using a payphone!",
"NoPayPhoneCloseEnough": "There is no payphone close enough!",
"PayPhoneNotRinging": "This payphone is not ringing!",
"PayPhoneOccupied": "This payphone is already being used by someone else!",
"PayPhoneOccupantSwitched": "A different voice is now on the line",
"PayPhoneGiven": "You gave the phone to {1}",
"PayPhoneReceived": "{1} gave you the phone",
"PayPhoneUnableToCallPlayer": "You can't call {1} at this time. Please try again later.",
"ActionTips": {
"VehicleEngineOffWhenEnteringKey": "Use {1} to turn on or off a vehicle's engine",
"VehicleLockedAfterEntryAttempt": "Use {1} to lock or unlock a vehicle",
"ShowItemsAfterPurchase": "Use {1} to see your inventory",
"BuyCommandAfterEnterBusiness": "Use {1} to buy items from a business",
"UseItemKeyAfterEquipping": "Use {1} to use your equipped item",
"UseItemKeyAfterEquippingWalkieTalkie": "Use {1} to turn on or off your radio",
"RadioCommandAfterEnablingWalkieTalkie": "Use {1} to talk on your radio",
"ReplyToDirectMessage": "Use {1} to easily reply to a private message",
"UseItemKeyAmmoAfterEquippingWeapon": "Use {1} to load an ammo item into your equipped weapon",
"AnimationStop": "Use {1} to stop your animation",
"JobEquipmentInventory": "The job equipment is in your inventory. Use {1} to see them.",
"ViewInventory": "Use {1} to see your items",
"VehicleRepairItemUsage": "Stand next to a vehicle and use {1} to repair it",
"VehicleColourItemUsage": "Stand next to a vehicle and use {1} to change it's colour",
"VehiclePartItemUsage": "Stand next to a vehicle and use {1} to upgrade with {2}",
"AmmoClipItemUsage": "Equip the weapon and use {1} to load ammo into it",
"GenericItemUsage": "Use {1} to use the {2}",
"EnterJobVehicleForRoute": "Enter a job vehicle nearby to start a job route",
"JobLocations": "Visit a job location to get a job. Use {1} to find a job location",
"JobRouteStart": "Use {1} to start a job route with this vehicle",
"PayPhoneFirstUse": "Use {1} to end the call, and {2} to give the phone to somebody nearby"
},
"NoBusinessesWithinRange": "There are no businesses within {1} meters",
"NoHousesWithinRange": "There are no houses within {1} meters",
"NoPayPhonesWithinRange": "There are no payphones within {1} meters",
"HeaderBusinessesInRangeList": "Businesses (within {1} meters)",
"HeaderHousesInRangeList": "Businesses (within {1} meters)",
"HeaderPayPhonesInRangeList": "Businesses (within {1} meters)",
"HeaderCommandsForStaffFlagList": "Admin Commands ({1})",
"PlayerLocateDistanceAndDirection": "{1} is {2} meters {3}",
"MustBeNumber": "You need to use a number!",
"HeaderJobRoutesList": "Job Routes ({1})",
"HeaderJobRouteInfo": "Job Route Information (${1})",
"InvalidJobRoute": "Job route not found!",
"PayPhoneDeleted": "The payphone was deleted",
"PayPhoneAnswer": "Use {1} to answer the payphone",
"ResetActionTipsConfirm": "Are you sure you want to reset all seen action tips?",
"ActionTipsReset": "All seen action tips have been reset.",
"NormalChatDisabled": "Normal chat is disabled by server admin. Use chat commands instead.",
"GlobalChatDisabled": "Global out-of-character chat is disabled by server admin"
}

View File

@@ -1,5 +1,5 @@
<meta>
<info author="Vortrex" version="1.0" description="Asshat Gaming Roleplay - Main Script" />
<info author="Vortrex" version="1.0" description="Vortrex's Roleplay Resource - Main Script" />
<!-- Shared -->
<script src="scripts/shared/const.js" type="server" language="javascript" />
@@ -8,6 +8,8 @@
<script src="scripts/shared/utilities.js" type="client" language="javascript" />
<script src="scripts/shared/gamedata.js" type="server" language="javascript" />
<script src="scripts/shared/gamedata.js" type="client" language="javascript" />
<script src="scripts/shared/queue.js" type="server" language="javascript" />
<script src="scripts/shared/queue.js" type="client" language="javascript" />
<!-- Multiplayer Mod (Wrapped Natives) -->
<!-- The goal is to just swap only these out when I port the script to a new MP mod -->
@@ -50,6 +52,7 @@
<script src="scripts/server/npc.js" type="server" language="javascript" />
<script src="scripts/server/netevents.js" type="server" language="javascript" />
<script src="scripts/server/paintball.js" type="server" language="javascript" />
<script src="scripts/server/payphone.js" type="server" language="javascript" />
<script src="scripts/server/prompt.js" type="server" language="javascript" />
<script src="scripts/server/race.js" type="server" language="javascript" />
<script src="scripts/server/radio.js" type="server" language="javascript" />
@@ -83,15 +86,29 @@
<script src="scripts/server/item/rope.js" type="server" language="javascript" />
<script src="scripts/server/item/tazer.js" type="server" language="javascript" />
<!-- Extra Client Files -->
<!-- Fonts -->
<file type="client" src="files/fonts/roboto-regular.ttf" />
<file type="client" src="files/fonts/pricedown.ttf" />
<file type="client" src="files/fonts/aurora-bold-condensed.ttf" />
<!-- Images -->
<file type="client" src="files/images/skins/none.png" />
<!--<file type="client" src="files/images/server-logo.png" />-->
<file type="client" src="files/images/asshat-logo.png" />
<file type="client" src="files/images/gtac-logo.png" />
<file type="client" src="files/images/mafiac-logo.png" />
<file type="client" src="files/images/cursor.png" />
<!-- 3D World Icons -->
<file type="client" src="files/images/icons/objective-icon.png" />
<file type="client" src="files/images/icons/business-icon.png" />
<file type="client" src="files/images/icons/house-icon.png" />
<file type="client" src="files/images/icons/job-icon.png" />
<!-- Sounds -->
<file type="client" src="files/sounds/payphone/old-payphone-ring.mp3" />
<file type="client" src="files/sounds/payphone/old-payphone-dial.mp3" />
<file type="client" src="files/sounds/payphone/old-payphone-pickup.mp3" />
<file type="client" src="files/sounds/payphone/old-payphone-hangup.mp3" />
<!-- GUI -->
<script src="scripts/client/gui/2fa.js" type="client" language="javascript" />
<script src="scripts/client/gui/bizmgr.js" type="client" language="javascript" />
@@ -114,19 +131,20 @@
<script src="scripts/client/gui/games/betting.js" type="client" language="javascript" />
<script src="scripts/client/gui/games/5cardpoker.js" type="client" language="javascript" />
<!-- Client Scripts -->
<script src="scripts/client/afk.js" type="client" language="javascript" />
<script src="scripts/client/animation.js" type="client" language="javascript" />
<script src="scripts/client/business.js" type="client" language="javascript" />
<script src="scripts/client/core.js" type="client" language="javascript" />
<script src="scripts/client/camera.js" type="client" language="javascript" />
<script src="scripts/client/chat.js" type="client" language="javascript" />
<script src="scripts/client/core.js" type="client" language="javascript" />
<script src="scripts/client/cursor.js" type="client" language="javascript" />
<script src="scripts/client/economy.js" type="client" language="javascript" />
<script src="scripts/client/event.js" type="client" language="javascript" />
<script src="scripts/client/gui.js" type="client" language="javascript" />
<script src="scripts/client/gps.js" type="client" language="javascript" />
<script src="scripts/client/house.js" type="client" language="javascript" />
<script src="scripts/client/hud.js" type="client" language="javascript" />
<script src="scripts/client/item.js" type="client" language="javascript" />
<script src="scripts/client/job.js" type="client" language="javascript" />
<script src="scripts/client/keybind.js" type="client" language="javascript" />
@@ -137,10 +155,12 @@
<script src="scripts/client/mousecam.js" type="client" language="javascript" />
<script src="scripts/client/nametag.js" type="client" language="javascript" />
<script src="scripts/client/npc.js" type="client" language="javascript" />
<script src="scripts/client/payphone.js" type="client" language="javascript" />
<script src="scripts/client/radio.js" type="client" language="javascript" />
<script src="scripts/client/scoreboard.js" type="client" language="javascript" />
<script src="scripts/client/skin-select.js" type="client" language="javascript" />
<script src="scripts/client/sync.js" type="client" language="javascript" />
<script src="scripts/client/timers.js" type="client" language="javascript" />
<script src="scripts/client/utilities.js" type="client" language="javascript" />
<script src="scripts/client/vehicle.js" type="client" language="javascript" />
<script src="scripts/client/netevents.js" type="client" language="javascript" />

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: afk.js
// DESC: Provides AFK detection
@@ -10,8 +9,8 @@
// Init AFK script
function initAFKScript() {
logToConsole(LOG_DEBUG, "[AGRP.AFK]: Initializing AFK script ...");
logToConsole(LOG_DEBUG, "[AGRP.AFK]: AFK script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.AFK]: Initializing AFK script ...");
logToConsole(LOG_DEBUG, "[V.RP.AFK]: AFK script initialized!");
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: animation.js
// DESC: Provides animation functions and usage
@@ -9,8 +8,8 @@
// ===========================================================================
function initAnimationScript() {
logToConsole(LOG_DEBUG, "[AGRP.Animation]: Initializing animation script ...");
logToConsole(LOG_DEBUG, "[AGRP.Animation]: Animation script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.Animation]: Initializing animation script ...");
logToConsole(LOG_DEBUG, "[V.RP.Animation]: Animation script initialized!");
}
// ===========================================================================
@@ -23,12 +22,12 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
}
let animationData = getAnimationData(animationSlot);
logToConsole(LOG_DEBUG, `[AGRP.Animation] Playing animation ${animationData[0]} for ped ${pedId}`);
logToConsole(LOG_DEBUG, `[V.RP.Animation] Playing animation ${animationData[0]} for ped ${pedId}`);
let freezePlayer = false;
switch (animationData.moveType) {
case AGRP_ANIMMOVE_FORWARD: {
setElementCollisionsEnabled(ped, false);
case V_ANIMMOVE_FORWARD: {
setElementCollisionsEnabled(pedId, false);
if (ped.isSyncer) {
setElementPosition(ped, getPosInFrontOfPos(getElementPosition(pedId), fixAngle(getElementHeading(pedId)), positionOffset));
}
@@ -36,7 +35,7 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
break;
}
case AGRP_ANIMMOVE_BACK: {
case V_ANIMMOVE_BACK: {
setElementCollisionsEnabled(pedId, false);
if (ped.isSyncer) {
setElementPosition(pedId, getPosBehindPos(getElementPosition(pedId), fixAngle(getElementHeading(pedId)), positionOffset));
@@ -45,7 +44,7 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
break;
}
case AGRP_ANIMMOVE_LEFT: {
case V_ANIMMOVE_LEFT: {
setElementCollisionsEnabled(pedId, false);
if (ped.isSyncer) {
setElementPosition(pedId, getPosToLeftOfPos(getElementPosition(pedId), fixAngle(getElementHeading(pedId)), positionOffset));
@@ -54,7 +53,7 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
break;
}
case AGRP_ANIMMOVE_RIGHT: {
case V_ANIMMOVE_RIGHT: {
setElementCollisionsEnabled(pedId, false);
if (ped.isSyncer) {
setElementPosition(pedId, getPosToRightOfPos(getElementPosition(pedId), fixAngle(getElementHeading(pedId)), positionOffset));
@@ -68,9 +67,9 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
}
}
if (getGame() < AGRP_GAME_GTA_IV) {
if (animationData.animType == AGRP_ANIMTYPE_NORMAL || animationData.animType == AGRP_ANIMTYPE_SURRENDER) {
if (getGame() == AGRP_GAME_GTA_VC || getGame() == AGRP_GAME_GTA_SA) {
if (getGame() < V_GAME_GTA_IV) {
if (animationData.animType == V_ANIMTYPE_NORMAL || animationData.animType == V_ANIMTYPE_SURRENDER) {
if (getGame() == V_GAME_GTA_VC || getGame() == V_GAME_GTA_SA) {
ped.clearAnimations();
} else {
ped.clearObjective();
@@ -82,7 +81,7 @@ function makePedPlayAnimation(pedId, animationSlot, positionOffset) {
setLocalPlayerControlState(false, false);
localPlayer.collisionsEnabled = false;
}
} else if (animationData.animType == AGRP_ANIMTYPE_BLEND) {
} else if (animationData.animType == V_ANIMTYPE_BLEND) {
ped.position = ped.position;
ped.blendAnimation(animationData.groupId, animationData.animId, animationData.animSpeed);
}
@@ -103,7 +102,7 @@ function forcePedAnimation(pedId, animSlot) {
let animationData = getAnimationData(animSlot);
if (getGame() < AGRP_GAME_GTA_IV) {
if (getGame() < V_GAME_GTA_IV) {
ped.position = ped.position;
ped.addAnimation(animationData.groupId, animationData.animId);
@@ -127,8 +126,8 @@ function makePedStopAnimation(pedId) {
return false;
}
if (getGame() != AGRP_GAME_GTA_IV) {
if (getGame() == AGRP_GAME_GTA_VC || getGame() == AGRP_GAME_GTA_SA) {
if (getGame() != V_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_VC || getGame() == V_GAME_GTA_SA) {
ped.clearAnimations();
} else {
ped.clearObjective();
@@ -136,7 +135,7 @@ function makePedStopAnimation(pedId) {
}
if (ped == localPlayer) {
if (getGame() != AGRP_GAME_GTA_IV) {
if (getGame() != V_GAME_GTA_IV) {
localPlayer.collisionsEnabled = true;
}
setLocalPlayerControlState(true, false);

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: business.js
// DESC: Provides business functions and usage
@@ -30,16 +29,25 @@ class BusinessData {
// ===========================================================================
function initBusinessScript() {
logToConsole(LOG_DEBUG, "[AGRP.Business]: Initializing business script ...");
logToConsole(LOG_INFO, "[AGRP.Business]: Business script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.Business]: Initializing business script ...");
logToConsole(LOG_INFO, "[V.RP.Business]: Business script initialized!");
}
// ===========================================================================
function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel, pickupModel, buyPrice, rentPrice, hasInterior, locked, hasItems, entranceFee) {
logToConsole(LOG_DEBUG, `[AGRP.Business] Received business ${businessId} (${name}) from server`);
function receiveBusinessFromServer(businessId, isDeleted, name, entrancePosition, blipModel, pickupModel, buyPrice, rentPrice, hasInterior, locked, hasItems, entranceFee) {
logToConsole(LOG_DEBUG, `[V.RP.Business] Received business ${businessId} (${name}) from server`);
if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE || getGame() == V_GAME_GTA_IV) {
if (isDeleted == true) {
if (getGame() == V_GAME_GTA_IV) {
natives.removeBlipAndClearIndex(getBusinessData(businessId).blipId);
}
getServerData().businesses.splice(businessId, 1);
return false;
}
if (!areServerElementsSupported() || getGame() == AGRP_GAME_MAFIA_ONE || getGame() == AGRP_GAME_GTA_IV) {
if (getBusinessData(businessId) != false) {
let businessData = getBusinessData(businessId);
businessData.name = name;
@@ -53,21 +61,25 @@ function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel
businessData.locked = locked;
businessData.entranceFee = entranceFee;
if (hasInterior && !hasItems) {
businessData.labelInfoType = AGRP_PROPLABEL_INFO_ENTER;
} else if (!hasInterior && hasItems) {
businessData.labelInfoType = AGRP_PROPLABEL_INFO_BUY;
if (businessData.buyPrice > 0) {
businessData.labelInfoType = V_PROPLABEL_INFO_BUYBIZ;
} else {
if (businessData.buyPrice > 0) {
businessData.labelInfoType = AGRP_PROPLABEL_INFO_BUYBIZ;
if (hasInterior) {
businessData.labelInfoType = V_PROPLABEL_INFO_ENTER;
} else {
if (hasItems) {
businessData.labelInfoType = V_PROPLABEL_INFO_BUY;
} else {
businessData.labelInfoType = V_PROPLABEL_INFO_NONE;
}
}
}
logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId} already exists. Checking blip ...`);
logToConsole(LOG_DEBUG, `[V.RP.Business] Business ${businessId} already exists. Checking blip ...`);
if (blipModel == -1) {
if (businessData.blipId != -1) {
logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId}'s blip has been removed by the server`);
if (getGame() == AGRP_GAME_GTA_IV) {
logToConsole(LOG_DEBUG, `[V.RP.Business] Business ${businessId}'s blip has been removed by the server`);
if (getGame() == V_GAME_GTA_IV) {
natives.removeBlipAndClearIndex(getBusinessData(businessId).blipId);
} else {
destroyElement(getElementFromId(blipId));
@@ -76,12 +88,12 @@ function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel
//businesses.splice(businessData.index, 1);
//setAllBusinessDataIndexes();
} else {
logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId}'s blip is unchanged`);
logToConsole(LOG_DEBUG, `[V.RP.Business] Business ${businessId}'s blip is unchanged`);
}
} else {
if (businessData.blipId != -1) {
logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId}'s blip has been changed by the server`);
if (getGame() == AGRP_GAME_GTA_IV) {
logToConsole(LOG_DEBUG, `[V.RP.Business] Business ${businessId}'s blip has been changed by the server`);
if (getGame() == V_GAME_GTA_IV) {
natives.setBlipCoordinates(businessData.blipId, businessData.entrancePosition);
natives.changeBlipSprite(businessData.blipId, businessData.blipModel);
natives.setBlipMarkerLongDistance(businessData.blipId, false);
@@ -93,22 +105,32 @@ function receiveBusinessFromServer(businessId, name, entrancePosition, blipModel
if (blipId != -1) {
tempBusinessData.blipId = blipId;
}
logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
logToConsole(LOG_DEBUG, `[V.RP.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
}
}
} else {
logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId} doesn't exist. Adding ...`);
let tempBusinessData = new BusinessData(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, hasItems);
logToConsole(LOG_DEBUG, `[V.RP.Business] Business ${businessId} doesn't exist. Adding ...`);
let businessData = new BusinessData(businessId, name, entrancePosition, blipModel, pickupModel, hasInterior, locked, hasItems, entranceFee);
businessData.name = name;
businessData.entrancePosition = entrancePosition;
businessData.blipModel = blipModel;
businessData.pickupModel = pickupModel;
businessData.hasInterior = hasInterior;
businessData.buyPrice = buyPrice;
businessData.rentPrice = rentPrice;
businessData.hasItems = hasItems;
businessData.locked = locked;
businessData.entranceFee = entranceFee;
if (blipModel != -1) {
let blipId = createGameBlip(tempBusinessData.blipModel, tempBusinessData.entrancePosition, tempBusinessData.name);
let blipId = createGameBlip(businessData.blipModel, businessData.entrancePosition, businessData.name);
if (blipId != -1) {
tempBusinessData.blipId = blipId;
businessData.blipId = blipId;
}
logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
logToConsole(LOG_DEBUG, `[V.RP.Business] Business ${businessId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
} else {
logToConsole(LOG_DEBUG, `[AGRP.Business] Business ${businessId} has no blip.`);
logToConsole(LOG_DEBUG, `[V.RP.Business] Business ${businessId} has no blip.`);
}
getServerData().businesses.push(tempBusinessData);
getServerData().businesses.push(businessData);
setAllBusinessDataIndexes();
}
}
@@ -143,4 +165,10 @@ function setAllBusinessDataIndexes() {
}
}
// ===========================================================================
function removeBusinessesFromClient() {
getServerData().businesses.splice(0);
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: camera.js
// DESC: Provides camera functions and usage
@@ -13,27 +12,45 @@ let cameraFadeIn = false;
let cameraFadeStart = 0;
let cameraFadeDuration = 0;
let cameraFadeColour = 0;
let cameraFadeAlpha = 0;
// ===========================================================================
function processCameraFadeRendering() {
if (cameraFadeEnabled) {
logToConsole(LOG_VERBOSE, `[V.RP.Camera] Camera fade enabled`);
let finishTime = cameraFadeStart + cameraFadeDuration;
if (sdl.ticks >= finishTime) {
logToConsole(LOG_VERBOSE, `[V.RP.Camera] Camera fade finished`);
cameraFadeEnabled = false;
cameraFadeDuration = 0;
cameraFadeStart = 0;
} else {
logToConsole(LOG_VERBOSE, `[V.RP.Camera] Camera fade processing`);
let currentTick = sdl.ticks - cameraFadeStart;
let progressPercent = Math.ceil(currentTick * 100 / cameraFadeDuration);
let rgbaArray = rgbaArrayFromToColour(cameraFadeColour);
let alpha = (cameraFadeIn) ? Math.ceil(255 / progressPercent) : Math.ceil(progressPercent / 255);
cameraFadeAlpha = (cameraFadeIn) ? Math.ceil(((100 - progressPercent) / 100) * 255) : Math.ceil(255 * (progressPercent / 100));
logToConsole(LOG_VERBOSE, `[V.RP.Camera] Camera fade progress: ${progressPercent}% (Alpha: ${cameraFadeAlpha})`);
cameraFadeColour = toColour(rgbaArray[0], rgbaArray[1], rgbaArray[2], alpha);
cameraFadeColour = toColour(rgbaArray[0], rgbaArray[1], rgbaArray[2], cameraFadeAlpha);
graphics.drawRectangle(null, toVector2(0, 0), toVector2(game.width, game.height), cameraFadeColour, cameraFadeColour, cameraFadeColour, cameraFadeColour);
}
}
}
// ===========================================================================
function fadeLocalCamera(state, duration, colour) {
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Fading camera ${(state) ? "in" : "out"} for ${duration}ms`);
cameraFadeDuration = duration;
cameraFadeStart = sdl.ticks;
cameraFadeIn = state;
cameraFadeColour = colour;
cameraFadeAlpha = (state) ? 255 : 0;
cameraFadeEnabled = true;
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: chatbox.js
// DESC: Provides extra chatbox features
@@ -29,11 +28,11 @@ let scrollDownKey = false;
// ===========================================================================
function initChatBoxScript() {
logToConsole(LOG_DEBUG, "[AGRP.Chat]: Initializing chat script ...");
logToConsole(LOG_DEBUG, "[V.RP.Chat]: Initializing chat script ...");
scrollUpKey = getKeyIdFromParams("pageup");
scrollDownKey = getKeyIdFromParams("pagedown");
bindChatBoxKeys();
logToConsole(LOG_INFO, "[AGRP.Chat]: Chat script initialized!");
logToConsole(LOG_INFO, "[V.RP.Chat]: Chat script initialized!");
}
// ===========================================================================
@@ -53,7 +52,7 @@ function unBindChatBoxKeys() {
// ===========================================================================
function receiveChatBoxMessageFromServer(messageString, colour, hour, minute, second) {
logToConsole(LOG_DEBUG, `[AGRP.Chat]: Received chatbox message from server: ${messageString}`);
logToConsole(LOG_DEBUG, `[V.RP.Chat]: Received chatbox message from server: ${messageString}`);
// Just in case it's hidden by auto hide
//setChatWindowEnabled(true);
@@ -78,16 +77,16 @@ function receiveChatBoxMessageFromServer(messageString, colour, hour, minute, se
outputString = `${timeStampString}${messageString}`;
}
logToConsole(LOG_DEBUG, `[AGRP.Chat]: Changed colours in string: ${outputString}`);
logToConsole(LOG_DEBUG, `[V.RP.Chat]: Changed colours in string: ${outputString}`);
outputString = replaceColoursInMessage(`${outputString}`);
if (chatEmojiEnabled == true) {
logToConsole(LOG_DEBUG, `[AGRP.Chat]: Enabled emoji in string: ${outputString}`);
logToConsole(LOG_DEBUG, `[V.RP.Chat]: Enabled emoji in string: ${outputString}`);
outputString = replaceEmojiInMessage(outputString);
}
if (profanityFilterEnabled == true) {
logToConsole(LOG_DEBUG, `[AGRP.Chat]: Removed profanity in string: ${outputString}`);
logToConsole(LOG_DEBUG, `[V.RP.Chat]: Removed profanity in string: ${outputString}`);
outputString = replaceProfanityInMessage(outputString);
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: content.js
// DESC: Provides connection to extra content resources

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: main.js
// DESC: Main client script (will be reorganized into individual files later)
@@ -17,8 +16,6 @@ let inVehicleSeat = false;
let isWalking = false;
let isSpawned = false;
let garbageCollectorInterval = null;
//let parkedVehiclePosition = false;
//let parkedVehicleHeading = false;
@@ -35,6 +32,7 @@ let logLevel = LOG_INFO | LOG_DEBUG;
let weaponDamageEnabled = {};
let weaponDamageEvent = {};
let weaponDamageMultiplier = 1.0;
let forceWeapon = 0;
let forceWeaponAmmo = 0;
@@ -65,7 +63,7 @@ let mouseCursorEnabled = false;
let currentPickup = false;
let vehiclePurchaseState = AGRP_VEHBUYSTATE_NONE;
let vehiclePurchaseState = V_VEHBUYSTATE_NONE;
let vehiclePurchasing = null;
let vehiclePurchasePosition = null;
@@ -92,6 +90,7 @@ let localLocaleId = 0;
* @property {Array} localeStrings
* @property {Array} localeOptions
* @property {Object} cvars
* @property {Array.<PayPhoneData>} payPhones
*/
let serverData = {
houses: [],
@@ -101,6 +100,7 @@ let serverData = {
vehicles: [],
jobs: [],
cvars: {},
payPhones: [],
};
let localPlayerMoney = 0;
@@ -109,8 +109,11 @@ let localPlayerMoneyInterval = null;
let currencyString = "${AMOUNT}";
let mapChangeWarning = false;
let mapChangeToNight = false;
let cruiseControlEnabled = false;
let cruiseControlSpeed = 0.0;
let myToken = "";
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: cursor.js
// DESC: Provides cursor functions and usage
@@ -15,14 +14,14 @@ let cursorSize = toVector2(16.0, 24.0);
// ===========================================================================
function initCursorScript() {
logToConsole(LOG_DEBUG, "[AGRP.Cursor]: Initializing cursor script ...");
logToConsole(LOG_DEBUG, "[V.RP.Cursor]: Initializing cursor script ...");
let cursorStream = openFile(cursorImagePath);
if (cursorStream != null) {
cursorImage = graphics.loadPNG(cursorStream);
cursorStream.close();
}
logToConsole(LOG_INFO, "[AGRP.Cursor]: Cursor script initialized!");
logToConsole(LOG_INFO, "[V.RP.Cursor]: Cursor script initialized!");
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: economy.js
// DESC: Provides economy functions

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: event.js
// DESC: Provides handlers for built in GTAC and Asshat-Gaming created events
@@ -9,9 +8,9 @@
// ===========================================================================
function initEventScript() {
logToConsole(LOG_DEBUG, "[AGRP.Event]: Initializing event script ...");
logToConsole(LOG_DEBUG, "[V.RP.Event]: Initializing event script ...");
addAllEventHandlers();
logToConsole(LOG_DEBUG, "[AGRP.Event]: Event script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.Event]: Event script initialized!");
}
// ===========================================================================
@@ -33,17 +32,22 @@ function addAllEventHandlers() {
addEventHandler("OnMouseWheel", onMouseWheel);
addEventHandler("OnEntityProcess", onEntityProcess);
if (findResourceByName("v-events") != null) {
if (findResourceByName("v-events").isStarted) {
addEventHandler("OnPedEnteredVehicleEx", onPedEnteredVehicle);
addEventHandler("OnPedExitedVehicleEx", onPedExitedVehicle);
addEventHandler("OnPedEnteredSphereEx", onPedEnteredSphere);
addEventHandler("OnPedExitedSphereEx", onPedExitedSphere);
if (getGame() <= V_GAME_GTA_SA) {
if (findResourceByName("v-events") != null) {
if (findResourceByName("v-events").isStarted) {
addEventHandler("OnPedEnteredVehicleEx", onPedEnteredVehicle);
addEventHandler("OnPedExitedVehicleEx", onPedExitedVehicle);
addEventHandler("OnPedEnteredSphereEx", onPedEnteredSphere);
addEventHandler("OnPedExitedSphereEx", onPedExitedSphere);
}
}
}
if (getGame() == AGRP_GAME_MAFIA_ONE) {
if (getGame() == V_GAME_MAFIA_ONE) {
addEventHandler("OnMapLoaded", onMapLoaded);
addEventHandler("OnPedEnteringVehicle", onPedEnteredVehicle);
addEventHandler("OnPedExitingVehicle", onPedExitedVehicle);
addEventHandler("OnPedInflictDamage", onPedHit);
}
}
@@ -57,15 +61,20 @@ function onResourceStart(event, resource) {
removeEventHandler("OnPedEnteredSphereEx");
removeEventHandler("OnPedExitedSphereEx");
addEventHandler("OnPedEnteredVehicleEx", onPedEnteredVehicle);
addEventHandler("OnPedExitedVehicleEx", onPedExitedVehicle);
addEventHandler("OnPedEnteredSphereEx", onPedEnteredSphere);
addEventHandler("OnPedExitedSphereEx", onPedExitedSphere);
if (getGame() <= V_GAME_GTA_SA) {
if (findResourceByName("v-events") != null) {
if (findResourceByName("v-events").isStarted) {
addEventHandler("OnPedEnteredVehicleEx", onPedEnteredVehicle);
addEventHandler("OnPedExitedVehicleEx", onPedExitedVehicle);
addEventHandler("OnPedEnteredSphereEx", onPedEnteredSphere);
addEventHandler("OnPedExitedSphereEx", onPedExitedSphere);
}
}
}
}
if (resource == thisResource) {
logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.Event] onResourceStart called - Sending signal to server`);
garbageCollectorInterval = setInterval(collectAllGarbage, 1000 * 60);
logToConsole(LOG_DEBUG | LOG_WARN, `[V.RP.Event] onResourceStart called - Sending signal to server`);
localPlayerMoneyInterval = setInterval(updateLocalPlayerMoney, 1000 * 5);
sendResourceStartedSignalToServer();
}
@@ -75,7 +84,7 @@ function onResourceStart(event, resource) {
function onResourceStop(event, resource) {
if (resource == thisResource) {
logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.Event] onResourceStop called - Sending signal to server`);
logToConsole(LOG_DEBUG | LOG_WARN, `[V.RP.Event] onResourceStop called - Sending signal to server`);
sendResourceStoppedSignalToServer();
}
}
@@ -84,7 +93,7 @@ function onResourceStop(event, resource) {
function onResourceReady(event, resource) {
if (resource == thisResource) {
logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.Event] onResourceReady called - Sending signal to server`);
logToConsole(LOG_DEBUG | LOG_WARN, `[V.RP.Event] onResourceReady called - Sending signal to server`);
loadLocaleConfig();
sendResourceReadySignalToServer();
}
@@ -93,7 +102,8 @@ function onResourceReady(event, resource) {
// ===========================================================================
function onProcess(event, deltaTime) {
logToConsole(LOG_VERBOSE, `[AGRP.Event] onProcess`);
logToConsole(LOG_VERBOSE, `[V.RP.Event] onProcess`);
if (localPlayer == null) {
return false;
}
@@ -112,6 +122,8 @@ function onProcess(event, deltaTime) {
processVehiclePurchasing();
processVehicleBurning();
processVehicleCruiseControl();
processPayPhonesDistance();
processJobRouteLocationDistance();
//checkChatBoxAutoHide(); // Will be uncommented on 1.4.0 GTAC update
//processVehicleFires();
}
@@ -128,7 +140,7 @@ function onKeyUp(event, keyCode, scanCode, keyModifiers) {
// ===========================================================================
function onDrawnHUD(event) {
logToConsole(LOG_VERBOSE, `[AGRP.Event] HUD drawn`);
logToConsole(LOG_VERBOSE, `[V.RP.Event] HUD drawn`);
processMouseCursorRendering();
if (!renderHUD) {
@@ -147,12 +159,16 @@ function onDrawnHUD(event) {
processSkinSelectRendering();
processNameTagRendering();
processInteriorLightsRendering();
processCustomHUDRendering();
processCameraFadeRendering();
processJobLocationIndicatorRendering();
processMapChangeWarning();
}
// ===========================================================================
function onPedWasted(event, wastedPed, killerPed, weapon, pedPiece) {
logToConsole(LOG_DEBUG, `[AGRP.Event] Ped ${wastedPed.name} died`);
logToConsole(LOG_DEBUG, `[V.RP.Event] Ped ${wastedPed.name} died`);
wastedPed.clearWeapons();
}
@@ -165,12 +181,13 @@ function onElementStreamIn(event, element) {
// ===========================================================================
function onPedExitedVehicle(event, ped, vehicle, seat) {
//logToConsole(LOG_DEBUG, `[AGRP.Event] Local player exited vehicle`);
//sendNetworkEventToServer("agrp.onPlayerExitVehicle", getVehicleForNetworkEvent(vehicle), seat);
//logToConsole(LOG_DEBUG, `[V.RP.Event] Local player exited vehicle`);
//sendNetworkEventToServer("v.rp.onPlayerExitVehicle", getVehicleForNetworkEvent(vehicle), seat);
cruiseControlEnabled = false;
cruiseControlSpeed = 0.0;
/*
if (localPlayer != null) {
if (ped == localPlayer) {
if (areServerElementsSupported()) {
@@ -184,13 +201,14 @@ function onPedExitedVehicle(event, ped, vehicle, seat) {
}
}
}
*/
}
// ===========================================================================
function onPedExitingVehicle(event, ped, vehicle, seat) {
//logToConsole(LOG_DEBUG, `[AGRP.Event] Local player exited vehicle`);
//sendNetworkEventToServer("agrp.onPlayerExitVehicle", getVehicleForNetworkEvent(vehicle), seat);
//logToConsole(LOG_DEBUG, `[V.RP.Event] Local player exited vehicle`);
//sendNetworkEventToServer("v.rp.onPlayerExitVehicle", getVehicleForNetworkEvent(vehicle), seat);
if (localPlayer != null) {
if (ped == localPlayer) {
@@ -203,8 +221,8 @@ function onPedExitingVehicle(event, ped, vehicle, seat) {
// ===========================================================================
function onPedEnteredVehicle(event, ped, vehicle, seat) {
logToConsole(LOG_DEBUG, `[AGRP.Event] Ped entered vehicle`);
//sendNetworkEventToServer("agrp.onPlayerEnterVehicle", getVehicleForNetworkEvent(vehicle), seat);
logToConsole(LOG_DEBUG, `[V.RP.Event] Ped entered vehicle`);
//sendNetworkEventToServer("v.rp.onPlayerEnterVehicle", getVehicleForNetworkEvent(vehicle), seat);
cruiseControlEnabled = false;
cruiseControlSpeed = 0.0;
@@ -215,9 +233,9 @@ function onPedEnteredVehicle(event, ped, vehicle, seat) {
if (inVehicleSeat == 0) {
//parkedVehiclePosition = inVehicle.position;
//parkedVehicleHeading = inVehicle.heading;
if (doesEntityDataExist(vehicle, "agrp.server") == true) {
if (doesEntityDataExist(vehicle, "v.rp.server") == true) {
//setVehicleEngine(vehicle.id, false);
setVehicleEngine(vehicle.id, getEntityData(vehicle, "agrp.engine"));
setVehicleEngine(vehicle.id, getEntityData(vehicle, "v.rp.engine"));
//setLocalPlayerControlState(false, false);
}
}
@@ -231,14 +249,14 @@ function onPedEnteredVehicle(event, ped, vehicle, seat) {
function onPedInflictDamage(event, damagedEntity, damagerEntity, weaponId, healthLoss, pedPiece) {
//let damagerEntityString = (!isNull(damagedEntity)) ? `${damagerEntity.name} (${damagerEntity.name}, ${damagerEntity.type} - ${typeof damagerEntity})` : `Unknown ped`;
//let damagedEntityString = (!isNull(damagedEntity)) ? `${damagedEntity.name} (${damagedEntity.name}, ${damagedEntity.type} - ${typeof damagedEntity})` : `Unknown ped`;
//logToConsole(LOG_DEBUG, `[AGRP.Event] ${damagerEntityString} damaged ${damagedEntityString}'s '${pedPiece} with weapon ${weaponId}`);
//logToConsole(LOG_DEBUG, `[V.RP.Event] ${damagerEntityString} damaged ${damagedEntityString}'s '${pedPiece} with weapon ${weaponId}`);
if (!isNull(damagedEntity) && !isNull(damagerEntity)) {
if (damagedEntity.isType(ELEMENT_PLAYER)) {
if (damagedEntity == localPlayer) {
if (!weaponDamageEnabled[damagerEntity.name]) {
preventDefaultEventAction(event);
}
sendNetworkEventToServer("agrp.weaponDamage", damagerEntity.name, weaponId, pedPiece, healthLoss);
sendNetworkEventToServer("v.rp.weaponDamage", damagerEntity.name, weaponId, pedPiece, healthLoss);
}
}
}
@@ -246,6 +264,16 @@ function onPedInflictDamage(event, damagedEntity, damagerEntity, weaponId, healt
// ===========================================================================
function onPedHit(event, hitPed, vec1, vec2, vec3, hitType, damage, bodyPart) {
logToConsole(LOG_DEBUG, `[V.RP.Event] Ped ${hitPed.id} (${hitPed.name}) hit using type ${hitType}, causing ${damage} to body part ${bodyPart}`);
event.preventDefault();
if (hitPed == localPlayer) {
localPlayer.health = localPlayer.health - (damage * weaponDamageMultiplier);
}
}
// ===========================================================================
function onPedEnteredSphere(event, ped, sphere) {
if (sphere == jobRouteLocationSphere) {
enteredJobRouteSphere();
@@ -296,8 +324,8 @@ function onEntityProcess(event, entity) {
// ===========================================================================
function onMapLoaded(mapName) {
sendNetworkEventToServer("agrp.mapLoaded", mapName);
function onMapLoaded(event, mapName) {
sendNetworkEventToServer("v.rp.mapLoaded", mapName);
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: gps.js
// DESC: Provides GPS functions and usage
@@ -17,9 +16,9 @@ let gpsBlipBlinkTimer = null;
// ===========================================================================
function showGPSLocation(position, colour) {
logToConsole(LOG_DEBUG, `[AGRP.GPS] Showing gps location`);
if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
if (getGame() == AGRP_GAME_GTA_SA) {
logToConsole(LOG_DEBUG, `[V.RP.GPS] Showing gps location`);
if (getMultiplayerMod() == V_MPMOD_GTAC) {
if (getGame() == V_GAME_GTA_SA) {
// Server-side spheres don't show in GTA SA for some reason.
gpsSphere = game.createPickup(1318, position, 1);
} else {

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: gui.js
// DESC: Provides GUI functionality and styles (using MexUI)
@@ -12,8 +11,8 @@ var app = {};
let mainFont = "Roboto"; // "Arial"
//let mainLogoPath = (typeof gta == "undefined") ? "files/images/mafiac-logo.png" : "files/images/gtac-logo.png";
let mainLogoPath = "files/images/asshat-logo.png";
let mainLogoPath = (typeof gta == "undefined") ? "files/images/mafiac-logo.png" : "files/images/gtac-logo.png";
//let mainLogoPath = "files/images/server-logo.png";
let primaryColour = [200, 200, 200];
let secondaryColour = [16, 16, 16];
@@ -41,14 +40,14 @@ let creatingCharacter = false;
// ===========================================================================
function initGUIScript() {
logToConsole(LOG_DEBUG, "[AGRP.GUI]: Initializing GUI script ...");
logToConsole(LOG_DEBUG, "[AGRP.GUI]: GUI script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.GUI]: Initializing GUI script ...");
logToConsole(LOG_DEBUG, "[V.RP.GUI]: GUI script initialized!");
}
// ===========================================================================
function initGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Initializing GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Initializing GUI ...`);
initLoginGUI();
initRegisterGUI();
@@ -74,15 +73,15 @@ function initGUI() {
closeAllWindows();
guiReady = true;
logToConsole(LOG_DEBUG, `[AGRP.GUI] All GUI created successfully!`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] All GUI created successfully!`);
sendNetworkEventToServer("agrp.guiReady", true);
sendNetworkEventToServer("v.rp.guiReady", true);
};
// ===========================================================================
function closeAllWindows() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing all GUI windows`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Closing all GUI windows`);
infoDialog.window.shown = false;
yesNoDialog.window.shown = false;
errorDialog.window.shown = false;
@@ -209,7 +208,7 @@ function isAnyGUIActive() {
// ===========================================================================
function setGUIColours(red1, green1, blue1, red2, green2, blue2, red3, green3, blue3) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Received new GUI colours from server: ${red1}, ${green1}, ${blue1} / ${red2}, ${green2}, ${blue2} / ${red3}, ${green3}, ${blue3}`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Received new GUI colours from server: ${red1}, ${green1}, ${blue1} / ${red2}, ${green2}, ${blue2} / ${red3}, ${green3}, ${blue3}`);
primaryColour = [red1, green1, blue1];
secondaryColour = [red2, green2, blue2];
primaryTextColour = [red3, green3, blue3];
@@ -229,45 +228,45 @@ function hideAllGUI() {
// ===========================================================================
function processGUIKeyPress(keyCode) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Processing key press: ${keyCode}`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Processing key press: ${keyCode}`);
if (!guiReady) {
return false;
}
if (!isAnyGUIActive()) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] GUI is not active. Cancelling keypress processing.`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] GUI is not active. Cancelling keypress processing.`);
return false;
}
if (keyCode == SDLK_RETURN || keyCode == SDLK_RETURN2) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Key press is submit (${guiSubmitKey})`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Key press is submit (${guiSubmitKey})`);
if (guiSubmitKey != false) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Calling submit key function`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Calling submit key function`);
guiSubmitKey.call();
}
} else if (keyCode == getKeyIdFromParams("left") || keyCode == getKeyIdFromParams("a")) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Key press is left (${guiLeftKey})`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Key press is left (${guiLeftKey})`);
if (guiLeftKey != false) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Calling left key function`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Calling left key function`);
guiLeftKey.call();
}
} else if (keyCode == getKeyIdFromParams("right") || keyCode == getKeyIdFromParams("d")) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Key press is right (${guiRightKey})`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Key press is right (${guiRightKey})`);
if (guiRightKey != false) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Calling right key function`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Calling right key function`);
guiRightKey.call();
}
} else if (keyCode == getKeyIdFromParams("down") || keyCode == getKeyIdFromParams("s")) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Key press is down (${guiDownKey})`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Key press is down (${guiDownKey})`);
if (guiDownKey != false) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Calling down key function`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Calling down key function`);
guiDownKey.call();
}
} else if (keyCode == getKeyIdFromParams("up") || keyCode == getKeyIdFromParams("w")) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Key press is up (${guiUpKey})`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Key press is up (${guiUpKey})`);
if (guiUpKey != false) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Calling up key function`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Calling up key function`);
guiUpKey.call();
}
}
@@ -277,7 +276,7 @@ function processGUIKeyPress(keyCode) {
function processToggleGUIKeyPress(keyCode) {
if (keyCode == disableGUIKey) {
sendNetworkEventToServer("agrp.toggleGUI");
sendNetworkEventToServer("v.rp.toggleGUI");
}
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: 2fa.js
// DESC: Provides two factor authentication GUI
@@ -21,7 +20,7 @@ let twoFactorAuth = {
// ===========================================================================
function initTwoFactorAuthenticationGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating two factor auth GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating two factor auth GUI ...`);
twoFactorAuth.window = mexui.window(game.width / 2 - 150, game.height / 2 - 129, 300, 258, 'LOGIN', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -95,14 +94,14 @@ function initTwoFactorAuthenticationGUI() {
},
}, checkTwoFactorAuth);
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created two factor auth GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created two factor auth GUI`);
}
// ===========================================================================
function showTwoFactorAuthGUI() {
closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing two-factor authentication window`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing two-factor authentication window`);
setChatWindowEnabled(false);
mexui.setInput(true);
twoFactorAuth.window.shown = true;
@@ -113,7 +112,7 @@ function showTwoFactorAuthGUI() {
// ===========================================================================
function twoFactorAuthFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports two-factor authentication failed. Reason: ${errorMessage}`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Server reports two-factor authentication failed. Reason: ${errorMessage}`);
twoFactorAuth.messageLabel.text = errorMessage;
twoFactorAuth.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
twoFactorAuth.codeInput.text = "";
@@ -122,15 +121,15 @@ function twoFactorAuthFailed(errorMessage) {
// ===========================================================================
function twoFactorAuthSuccess() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports two-factor authentication was successful`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Server reports two-factor authentication was successful`);
closeAllWindows();
}
// ===========================================================================
function checkTwoFactorAuth() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking two-factor authentication with server ...`);
sendNetworkEventToServer("agrp.2fa", twoFactorAuth.codeInput.lines[0]);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Checking two-factor authentication with server ...`);
sendNetworkEventToServer("v.rp.2fa", twoFactorAuth.codeInput.lines[0]);
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: bizmgr.js
// DESC: Provides business manager GUI
@@ -78,7 +77,7 @@ function receiveBusinessManagerData(businessIndex, name, locked, entranceFee, bu
// ===========================================================================
function saveBusinessData() {
sendNetworkEventToServer("agrp.businessManagerSave", businessManager.data.businessIndex);
sendNetworkEventToServer("v.rp.businessManagerSave", businessManager.data.businessIndex);
}
*/

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: changepass.js
// DESC: Provides change password GUI
@@ -20,7 +19,7 @@ let passwordChange = {
// ===========================================================================
function initChangePasswordGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating password change GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating password change GUI ...`);
passwordChange.window = mexui.window(game.width / 2 - 130, game.height / 2 - 125, 300, 250, 'Change Password', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -111,13 +110,13 @@ function initChangePasswordGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkChangePassword);
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created change password GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created change password GUI`);
}
// ===========================================================================
function passwordChangeFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports change password failed. Reason: ${errorMessage}`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Server reports change password failed. Reason: ${errorMessage}`);
passwordChange.messageLabel.text = errorMessage;
passwordChange.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
passwordChange.passwordInput.text = "";
@@ -128,14 +127,14 @@ function passwordChangeFailed(errorMessage) {
// ===========================================================================
function checkChangePassword() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking password change with server ...`);
sendNetworkEventToServer("agrp.checkChangePassword", passwordChange.passwordInput.lines[0], passwordChange.confirmPasswordInput.lines[0]);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Checking password change with server ...`);
sendNetworkEventToServer("v.rp.checkChangePassword", passwordChange.passwordInput.lines[0], passwordChange.confirmPasswordInput.lines[0]);
}
// ===========================================================================
function showChangePasswordGUI(errorMessage) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing change password window`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing change password window`);
closeAllWindows();
setChatWindowEnabled(false);
mexui.setInput(true);
@@ -150,7 +149,7 @@ function showChangePasswordGUI(errorMessage) {
// ===========================================================================
function passwordChangeSuccess() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports password change was successful`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Server reports password change was successful`);
guiSubmitKey = false;
closeAllWindows();
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: charselect.js
// DESC: Provides character select GUI
@@ -24,7 +23,7 @@ let characterSelect = {
// ===========================================================================
function initCharacterSelectGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating character select GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating character select GUI ...`);
characterSelect.window = mexui.window(game.width / 2 - 215, game.height / 2 - 83, 430, 190, 'SELECT CHARACTER', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -32,13 +31,13 @@ function initCharacterSelectGUI() {
title: {
textSize: 12.0,
textFont: mainFont,
textColour: toColour(0, 0, 0, 255),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
},
icon: {
textSize: 10.0,
textFont: mainFont,
textColour: toColour(0, 0, 0, 255),
textColour: toColour(primaryTextColour[0], primaryTextColour[1], primaryTextColour[2], 255),
backgroundColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], windowTitleAlpha),
}
});
@@ -151,14 +150,14 @@ function initCharacterSelectGUI() {
borderColour: toColour(0, 0, 0, 0),
}
});
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created character select GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created character select GUI`);
}
// ===========================================================================
function showCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, skinId) {
closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing character selection window`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing character selection window`);
setChatWindowEnabled(false);
mexui.setInput(true);
characterSelect.nameText.text = `${firstName} ${lastName}`;
@@ -179,35 +178,35 @@ function showCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, ski
function showNewCharacter() {
closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing new character dialog window`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing new character dialog window`);
showNewCharacterGUI();
}
// ===========================================================================
function selectNextCharacter() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Requesting next character info from server for character select window`);
sendNetworkEventToServer("agrp.nextCharacter");
logToConsole(LOG_DEBUG, `[V.RP.GUI] Requesting next character info from server for character select window`);
sendNetworkEventToServer("v.rp.nextCharacter");
}
// ===========================================================================
function selectPreviousCharacter() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Requesting previous character info from server for character select window`);
sendNetworkEventToServer("agrp.previousCharacter");
logToConsole(LOG_DEBUG, `[V.RP.GUI] Requesting previous character info from server for character select window`);
sendNetworkEventToServer("v.rp.previousCharacter");
}
// ===========================================================================
function selectThisCharacter() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Tell server the current shown character was selected in character select window`);
sendNetworkEventToServer("agrp.selectCharacter");
logToConsole(LOG_DEBUG, `[V.RP.GUI] Tell server the current shown character was selected in character select window`);
sendNetworkEventToServer("v.rp.selectCharacter");
}
// ===========================================================================
function switchCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, skinId) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Updating character info with data from server`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Updating character info with data from server`);
setChatWindowEnabled(false);
characterSelect.window.shown = false;
characterSelect.nameText.text = `${firstName} ${lastName}`;
@@ -218,7 +217,7 @@ function switchCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, s
if (characterSelect.skinImage != null) {
characterSelect.skinImage.remove();
}
characterSelect.skinImage = (getGame() == AGRP_GAME_GTA_III) ? characterSelect.window.image(310, 32, 100, 90, `files/images/skins/gta3/${getSkinImage(skinId)}.png`) : characterSelect.window.image(310, 32, 100, 90, "files/images/skins/none.png");
characterSelect.skinImage = (getGame() == V_GAME_GTA_III) ? characterSelect.window.image(310, 32, 100, 90, `files/images/skins/gta3/${getSkinImage(skinId)}.png`) : characterSelect.window.image(310, 32, 100, 90, "files/images/skins/none.png");
characterSelect.window.shown = true;
@@ -230,7 +229,7 @@ function switchCharacterSelectGUI(firstName, lastName, cash, clan, lastPlayed, s
// ===========================================================================
function characterSelectSuccess() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports character selection was successful`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Server reports character selection was successful`);
closeAllWindows();
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: clanmgr.js
// DESC: Provides clan manager GUI

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: error.js
// DESC: Provides error box GUI
@@ -17,7 +16,7 @@ let errorDialog = {
// ===========================================================================
function initErrorDialogGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating error GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating error GUI ...`);
errorDialog.window = mexui.window(getScreenWidth() / 2 - 200, getScreenHeight() / 2 - 70, 400, 140, 'ERROR', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -59,14 +58,14 @@ function initErrorDialogGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
}, closeErrorDialog);
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created error GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created error GUI ...`);
}
// ===========================================================================
function showErrorGUI(errorMessage, errorTitle, buttonText) {
closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing error window. Error: ${errorTitle} - ${errorMessage}`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing error window. Error: ${errorTitle} - ${errorMessage}`);
setChatWindowEnabled(false);
mexui.setInput(true);
errorDialog.messageLabel.text = errorMessage;
@@ -78,7 +77,7 @@ function showErrorGUI(errorMessage, errorTitle, buttonText) {
// ===========================================================================
function closeErrorDialog() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing error dialog`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Closing error dialog`);
errorDialog.window.shown = false;
mexui.setInput(false);
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: 5cardpoker.js
// DESC: Provides 5-card poker games GUI
@@ -14,7 +13,7 @@ let fiveCardPokerGUI = {
function initFiveCardPokerGUI() {
// Render a five card poker game in MexUI
//logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating five-card poker GUI ...`);
//logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating five-card poker GUI ...`);
fiveCardPokerGUI.window = mexui.window(game.width / 2 - 200, game.height - 150, 400, 400, 'Five Card Poker', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], 0),
@@ -34,7 +33,7 @@ function initFiveCardPokerGUI() {
fiveCardPokerGUI.window.shown = false;
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created five card poker GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created five card poker GUI`);
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: betting.js
// DESC: Provides betting GUI (used for multiple casino games)

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: blackjack.js
// DESC: Provides blackjack game GUI
@@ -23,7 +22,7 @@ let dealerCards = [];
function initBlackJackGUI() {
// Render a blackjack game in MexUI
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating blackjack GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating blackjack GUI ...`);
blackJackGUI.window = mexui.window(game.width / 2 - 200, game.height - 150, 400, 400, 'Blackjack', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], 0),
@@ -43,7 +42,7 @@ function initBlackJackGUI() {
blackJackGUI.window.shown = false;
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created blackjack GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created blackjack GUI`);
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: housemgr.js
// DESC: Provides house manager GUI

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: info.js
// DESC: Provides info dialog box GUI
@@ -17,7 +16,7 @@ let infoDialog = {
// ===========================================================================
function initInfoDialogGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating info dialog GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating info dialog GUI ...`);
infoDialog.window = mexui.window(getScreenWidth() / 2 - 200, getScreenHeight() / 2 - 70, 400, 140, 'Information', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -58,13 +57,13 @@ function initInfoDialogGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
}, closeInfoDialog);
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created info dialog GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created info dialog GUI`);
}
// ===========================================================================
function closeInfoDialog() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing info dialog`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Closing info dialog`);
infoDialog.window.shown = false;
mexui.setInput(false);
}
@@ -73,7 +72,7 @@ function closeInfoDialog() {
function showInfoGUI(infoMessage, infoTitle, buttonText) {
closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing info dialog window. Info: ${infoTitle} - ${infoMessage}`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing info dialog window. Info: ${infoTitle} - ${infoMessage}`);
mexui.setInput(true);
infoDialog.messageLabel.text = infoMessage;
infoDialog.okayButton.text = buttonText;

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: inventory.js
// DESC: Provides inventory dialog box GUI
@@ -26,7 +25,7 @@ function initInventoryGUI() {
// ===========================================================================
function closeAllInventoryGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing all inventory GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Closing all inventory GUI`);
for (let i in inventoryGUI) {
inventoryGUI[i].window.shown = false;
}
@@ -37,7 +36,7 @@ function closeAllInventoryGUI() {
function showInventoryGUI(inventoryIndex, items) {
closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing inventory window. Index: ${inventoryIndex}`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing inventory window. Index: ${inventoryIndex}`);
inventoryGUI[inventoryIndex].window.shown = true;
mexui.setInput(true);
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: inventorybulk.js
// DESC: Provides bulk inventory box GUI
@@ -26,7 +25,7 @@ function initInventoryBulkGUI() {
// ===========================================================================
function closeAllInventoryBulkGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing all bulk inventory GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Closing all bulk inventory GUI`);
for (let i in inventoryBulkGUI) {
inventoryBulkGUI[i].window.shown = false;
}
@@ -37,7 +36,7 @@ function closeAllInventoryBulkGUI() {
function showInventoryBulkGUI(inventoryIndex, items) {
closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing bulk inventory window. Index: ${inventoryIndex}`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing bulk inventory window. Index: ${inventoryIndex}`);
inventoryBulkGUI[inventoryIndex].window.shown = true;
mexui.setInput(true);
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: list.js
// DESC: Provides simple list GUI
@@ -19,7 +18,7 @@ let listDialog = {
// ===========================================================================
function initListGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating list dialog GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating list dialog GUI ...`);
listDialog.window = mexui.window(game.width / 2 - 200, game.height / 2 - 70, 400, 500, 'List', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -73,14 +72,14 @@ function initListGUI() {
}
}
});
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created list dialog GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created list dialog GUI`);
}
// ===========================================================================
function showListGUI() {
closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing list window`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing list window`);
setChatWindowEnabled(false);
mexui.setInput(true);
listDialog.window.shown = true;
@@ -96,7 +95,7 @@ function checkListDialogSelection() {
return false;
}
sendNetworkEventToServer("agrp.list.select", listDialog.listGrid.activeRow.getEntryIndex());
sendNetworkEventToServer("v.rp.list.select", listDialog.listGrid.activeRow.getEntryIndex());
}
// ===========================================================================
@@ -113,7 +112,7 @@ function selectPreviousListItem() {
listDialog.listGrid.activeRow = listDialog.listRows[activeRowId - 1];
}
//sendNetworkEventToServer("agrp.list.next", listDialog.listGrid.activeRow.getEntryIndex());
//sendNetworkEventToServer("v.rp.list.next", listDialog.listGrid.activeRow.getEntryIndex());
}
// ===========================================================================
@@ -126,7 +125,7 @@ function selectNextListItem() {
listDialog.listGrid.activeRow = listDialog.listRows[activeRowId + 1];
}
//sendNetworkEventToServer("agrp.list.next", listDialog.listGrid.activeRow.getEntryIndex());
//sendNetworkEventToServer("v.rp.list.next", listDialog.listGrid.activeRow.getEntryIndex());
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: localechooser.js
// DESC: Provides locale chooser GUI
@@ -20,7 +19,7 @@ let flagImageGap = toVector2(5, 5);
// ===========================================================================
function initLocaleChooserGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating locale chooser GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating locale chooser GUI ...`);
localeChooser.window = mexui.window(game.width / 2 - 200, game.height - 150, 60, 60, 'Choose a language', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], 0),
@@ -40,13 +39,13 @@ function initLocaleChooserGUI() {
localeChooser.window.shown = false;
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created locale chooser GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created locale chooser GUI`);
}
// ===========================================================================
function closeLocaleChooserGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Closing locale chooser window`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Closing locale chooser window`);
localeChooser.window.shown = false;
for (let i in localeChooser.flagImages) {
localeChooser.flagImages[i].shown = false;
@@ -64,7 +63,7 @@ function showLocaleChooserGUI(position = toVector2(0.0, 0.0)) {
}
//closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing locale chooser window`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing locale chooser window`);
mexui.setInput(true);
localeChooser.window.shown = true;
@@ -86,14 +85,14 @@ function toggleLocaleChooserGUI() {
// ===========================================================================
function localeChooserSetLocale(localeId) {
logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.GUI] Asking server to change locale to ${localeId}`);
logToConsole(LOG_DEBUG | LOG_WARN, `[V.RP.GUI] Asking server to change locale to ${localeId}`);
sendLocaleSelectToServer(localeId);
}
// ===========================================================================
function resetLocaleChooserOptions() {
logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.GUI] Resetting locale chooser options`);
logToConsole(LOG_DEBUG | LOG_WARN, `[V.RP.GUI] Resetting locale chooser options`);
// let tempLocaleOptions = getServerData().localeOptions; // getAvailableLocaleOptions();
let tempLocaleOptions = getAvailableLocaleOptions();
@@ -117,7 +116,7 @@ function resetLocaleChooserOptions() {
localeChooser.flagImages[i].shown = false;
logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.GUI] Created locale chooser option ${tempLocaleOptions[i].englishName} with image ${imagePath}`);
logToConsole(LOG_DEBUG | LOG_WARN, `[V.RP.GUI] Created locale chooser option ${tempLocaleOptions[i].englishName} with image ${imagePath}`);
//localeChooser.activeRingImages.push(activeRingImage);
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: login.js
// DESC: Provides login GUI
@@ -43,7 +42,7 @@ let loginHTML =
// ===========================================================================
function initLoginGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating login GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating login GUI ...`);
login.window = mexui.window(getScreenWidth() / 2 - 150, getScreenHeight() / 2 - 135, 300, 275, 'LOGIN', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -144,14 +143,14 @@ function initLoginGUI() {
},
});
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created login GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created login GUI`);
}
// ===========================================================================
function showLoginGUI() {
closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing login window`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing login window`);
setChatWindowEnabled(false);
mexui.setInput(true);
login.window.shown = true;
@@ -165,14 +164,14 @@ function showLoginGUI() {
// ===========================================================================
function checkLogin() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking login with server ...`);
sendNetworkEventToServer("agrp.checkLogin", login.passwordInput.lines[0]);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Checking login with server ...`);
sendNetworkEventToServer("v.rp.checkLogin", login.passwordInput.lines[0]);
}
// ===========================================================================
function loginFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports login failed`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Server reports login failed`);
login.messageLabel.text = errorMessage;
login.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
login.passwordInput.text = "";
@@ -181,7 +180,7 @@ function loginFailed(errorMessage) {
// ===========================================================================
function loginSuccess() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports login was successful`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Server reports login was successful`);
guiSubmitKey = false;
closeAllWindows();
}
@@ -190,9 +189,9 @@ function loginSuccess() {
function switchToPasswordResetGUI() {
//closeAllWindows();
//logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing password reset dialog window`);
//logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing password reset dialog window`);
//showResetPasswordGUI();
sendNetworkEventToServer("agrp.checkResetPassword", "");
sendNetworkEventToServer("v.rp.checkResetPassword", "");
return false;
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: newchar.js
// DESC: Provides new character creation GUI
@@ -20,8 +19,8 @@ let newCharacter = {
// ===========================================================================
function initNewCharacterGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating new character GUI ...`);
newCharacter.window = mexui.window(getScreenWidth() / 2 - 130, getScreenHeight() / 2 - 115, 300, 230, 'NEW CHARACTER', {
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating new character GUI ...`);
newCharacter.window = mexui.window(getScreenWidth() / 2 - 150, getScreenHeight() / 2 - 115, 300, 230, 'NEW CHARACTER', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
transitionTime: 500,
@@ -43,7 +42,7 @@ function initNewCharacterGUI() {
newCharacter.window.titleBarShown = false;
newCharacter.window.titleBarHeight = 30;
newCharacter.mainLogoImage = newCharacter.window.image(80, 20, 80, 80, mainLogoPath, {
newCharacter.mainLogoImage = newCharacter.window.image(100, 10, 100, 100, mainLogoPath, {
focused: {
borderColour: toColour(0, 0, 0, 0),
},
@@ -111,13 +110,13 @@ function initNewCharacterGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkNewCharacter);
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created new character GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created new character GUI`);
}
// ===========================================================================
function newCharacterFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports new character creation failed. Reason: ${errorMessage}`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Server reports new character creation failed. Reason: ${errorMessage}`);
newCharacter.messageLabel.text = errorMessage;
newCharacter.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
newCharacter.firstNameInput.text = "";
@@ -135,7 +134,7 @@ function newCharacterFailed(errorMessage) {
// ===========================================================================
function checkNewCharacter() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking new character with server ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Checking new character with server ...`);
if (newCharacter.firstNameInput.lines[0].length < 2) {
return false;
}
@@ -144,7 +143,7 @@ function checkNewCharacter() {
return false;
}
sendNetworkEventToServer("agrp.checkNewCharacter",
sendNetworkEventToServer("v.rp.checkNewCharacter",
newCharacter.firstNameInput.lines[0],
newCharacter.lastNameInput.lines[0],
);
@@ -153,7 +152,7 @@ function checkNewCharacter() {
// ===========================================================================
function showNewCharacterGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing new character window`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing new character window`);
closeAllWindows();
setChatWindowEnabled(false);
mexui.setInput(true);

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: register.js
// DESC: Provides account registration GUI
@@ -21,7 +20,7 @@ let register = {
// ===========================================================================
function initRegisterGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating register GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating register GUI ...`);
register.window = mexui.window(getScreenWidth() / 2 - 150, getScreenHeight() / 2 - 150, 300, 300, 'Register', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -131,13 +130,13 @@ function initRegisterGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], buttonAlpha),
},
}, checkRegistration);
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created register GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created register GUI`);
}
// ===========================================================================
function registrationFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports registration failed. Reason: ${errorMessage}`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Server reports registration failed. Reason: ${errorMessage}`);
register.messageLabel.text = errorMessage;
register.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
register.passwordInput.text = "";
@@ -148,14 +147,14 @@ function registrationFailed(errorMessage) {
// ===========================================================================
function checkRegistration() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking registration with server ...`);
sendNetworkEventToServer("agrp.checkRegistration", register.passwordInput.lines[0], register.confirmPasswordInput.lines[0], register.emailInput.lines[0]);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Checking registration with server ...`);
sendNetworkEventToServer("v.rp.checkRegistration", register.passwordInput.lines[0], register.confirmPasswordInput.lines[0], register.emailInput.lines[0]);
}
// ===========================================================================
function showRegistrationGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing registration window`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing registration window`);
closeAllWindows();
setChatWindowEnabled(false);
mexui.setInput(true);
@@ -171,7 +170,7 @@ function showRegistrationGUI() {
// ===========================================================================
function registrationSuccess() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports registration was successful`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Server reports registration was successful`);
guiSubmitKey = false;
closeAllWindows();
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: resetpass.js
// DESC: Provides password reset GUI
@@ -21,7 +20,7 @@ let passwordReset = {
// ===========================================================================
function initResetPasswordGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Creating password reset GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Creating password reset GUI ...`);
passwordReset.window = mexui.window(getScreenWidth() / 2 - 150, getScreenHeight() / 2 - 135, 300, 275, 'RESET PASSWORD', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -121,14 +120,14 @@ function initResetPasswordGUI() {
},
});
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created password reset GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created password reset GUI`);
}
// ===========================================================================
function showResetPasswordGUI() {
closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing password reset window`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing password reset window`);
setChatWindowEnabled(false);
mexui.setInput(true);
passwordReset.window.shown = true;
@@ -142,14 +141,14 @@ function showResetPasswordGUI() {
// ===========================================================================
function checkResetPassword() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Checking password reset with server (${passwordReset.emailInput.lines[0]}) ...`);
sendNetworkEventToServer("agrp.checkResetPassword", passwordReset.emailInput.lines[0]);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Checking password reset with server (${passwordReset.emailInput.lines[0]}) ...`);
sendNetworkEventToServer("v.rp.checkResetPassword", passwordReset.emailInput.lines[0]);
}
// ===========================================================================
function resetPasswordFailed(errorMessage) {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Server reports password reset failed`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Server reports password reset failed`);
passwordReset.messageLabel.text = errorMessage;
passwordReset.messageLabel.styles.main.textColour = toColour(180, 32, 32, 255);
passwordReset.emailInput.text = "";
@@ -158,7 +157,7 @@ function resetPasswordFailed(errorMessage) {
// ===========================================================================
function resetPasswordCodeInputGUI() {
logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.GUI] Server reports password reset email confirmation was successful. Asking for code ...`);
logToConsole(LOG_DEBUG | LOG_WARN, `[V.RP.GUI] Server reports password reset email confirmation was successful. Asking for code ...`);
closeAllWindows();
passwordReset.messageLabel.text = getLocaleString("GUIResetPasswordCodeInputLabel");
@@ -173,7 +172,7 @@ function resetPasswordCodeInputGUI() {
// ===========================================================================
function resetPasswordEmailInputGUI() {
logToConsole(LOG_DEBUG | LOG_WARN, `[AGRP.GUI] Server reports password reset request was approved. Asking for email ...`);
logToConsole(LOG_DEBUG | LOG_WARN, `[V.RP.GUI] Server reports password reset request was approved. Asking for email ...`);
closeAllWindows();
passwordReset.messageLabel.text = getLocaleString("GUIResetPasswordConfirmEmailLabel");

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: yesno.js
// DESC: Provides yes/no prompt dialog GUI
@@ -19,7 +18,7 @@ let yesNoDialog = {
// ===========================================================================
function initYesNoDialogGUI() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created prompt GUI ...`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created prompt GUI ...`);
yesNoDialog.window = mexui.window(game.width / 2 - 200, game.height / 2 - 70, 400, 140, 'Question', {
main: {
backgroundColour: toColour(secondaryColour[0], secondaryColour[1], secondaryColour[2], windowAlpha),
@@ -74,14 +73,14 @@ function initYesNoDialogGUI() {
borderColour: toColour(primaryColour[0], primaryColour[1], primaryColour[2], 255),
},
}, yesNoDialogAnswerNo);
logToConsole(LOG_DEBUG, `[AGRP.GUI] Created prompt GUI`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Created prompt GUI`);
}
// ===========================================================================
function showYesNoPromptGUI(promptMessage, promptTitle, yesButtonText, noButtonText) {
closeAllWindows();
logToConsole(LOG_DEBUG, `[AGRP.GUI] Showing prompt window. Prompt: ${promptTitle} - ${promptMessage}`);
logToConsole(LOG_DEBUG, `[V.RP.GUI] Showing prompt window. Prompt: ${promptTitle} - ${promptMessage}`);
mexui.setInput(true);
yesNoDialog.messageLabel.text = "";
@@ -100,16 +99,16 @@ function showYesNoPromptGUI(promptMessage, promptTitle, yesButtonText, noButtonT
// ===========================================================================
function yesNoDialogAnswerNo() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Responding with answer NO to server prompt`);
sendNetworkEventToServer("agrp.promptAnswerNo");
logToConsole(LOG_DEBUG, `[V.RP.GUI] Responding with answer NO to server prompt`);
sendNetworkEventToServer("v.rp.promptAnswerNo");
closeAllWindows();
}
// ===========================================================================
function yesNoDialogAnswerYes() {
logToConsole(LOG_DEBUG, `[AGRP.GUI] Responding with answer YES to server prompt`);
sendNetworkEventToServer("agrp.promptAnswerYes");
logToConsole(LOG_DEBUG, `[V.RP.GUI] Responding with answer YES to server prompt`);
sendNetworkEventToServer("v.rp.promptAnswerYes");
closeAllWindows();
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: house.js
// DESC: Provides house functions and usage
@@ -26,10 +25,19 @@ class HouseData {
// ===========================================================================
function receiveHouseFromServer(houseId, description, entrancePosition, blipModel, pickupModel, buyPrice, rentPrice, hasInterior, locked) {
logToConsole(LOG_DEBUG, `[AGRP.House] Received house ${houseId} (${name}) from server`);
function receiveHouseFromServer(houseId, isDeleted, description, entrancePosition, blipModel, pickupModel, buyPrice, rentPrice, hasInterior, locked) {
logToConsole(LOG_DEBUG, `[V.RP.House] Received house ${houseId} (${name}) from server`);
if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE || getGame() == V_GAME_GTA_IV) {
if (isDeleted == true) {
if (getGame() == V_GAME_GTA_IV) {
natives.removeBlipAndClearIndex(getHouseData(houseId).blipId);
}
getServerData().houses.splice(houseId, 1);
return false;
}
if (!areServerElementsSupported() || getGame() == AGRP_GAME_MAFIA_ONE || getGame() == AGRP_GAME_GTA_IV) {
if (getHouseData(houseId) != false) {
let houseData = getHouseData(houseId);
houseData.description = description;
@@ -42,32 +50,36 @@ function receiveHouseFromServer(houseId, description, entrancePosition, blipMode
houseData.locked = locked;
if (houseData.buyPrice > 0) {
houseData.labelInfoType = AGRP_PROPLABEL_INFO_BUYHOUSE;
houseData.labelInfoType = V_PROPLABEL_INFO_BUYHOUSE;
} else {
if (houseData.rentPrice > 0) {
houseData.labelInfoType = AGRP_PROPLABEL_INFO_RENTHOUSE;
houseData.labelInfoType = V_PROPLABEL_INFO_RENTHOUSE;
} else {
houseData.labelInfoType = AGRP_PROPLABEL_INFO_ENTER;
if (houseData.hasInterior) {
houseData.labelInfoType = V_PROPLABEL_INFO_ENTER;
} else {
houseData.labelInfoType = V_PROPLABEL_INFO_NONE;
}
}
}
logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId} already exists. Checking blip ...`);
logToConsole(LOG_DEBUG, `[V.RP.House] House ${houseId} already exists. Checking blip ...`);
if (blipModel == -1) {
if (houseData.blipId != -1) {
logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId}'s blip has been removed by the server`);
if (getGame() == AGRP_GAME_GTA_IV) {
logToConsole(LOG_DEBUG, `[V.RP.House] House ${houseId}'s blip has been removed by the server`);
if (getGame() == V_GAME_GTA_IV) {
natives.removeBlipAndClearIndex(getHouseData(houseId).blipId);
} else {
destroyElement(getElementFromId(blipId));
}
houseData.blipId = -1;
} else {
logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId}'s blip is unchanged`);
logToConsole(LOG_DEBUG, `[V.RP.House] House ${houseId}'s blip is unchanged`);
}
} else {
if (houseData.blipId != -1) {
logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId}'s blip has been changed by the server`);
if (getGame() == AGRP_GAME_GTA_IV) {
logToConsole(LOG_DEBUG, `[V.RP.House] House ${houseId}'s blip has been changed by the server`);
if (getGame() == V_GAME_GTA_IV) {
natives.setBlipCoordinates(houseData.blipId, houseData.entrancePosition);
natives.changeBlipSprite(houseData.blipId, houseData.blipModel);
natives.setBlipMarkerLongDistance(houseData.blipId, false);
@@ -79,20 +91,20 @@ function receiveHouseFromServer(houseId, description, entrancePosition, blipMode
if (blipId != -1) {
houseData.blipId = blipId;
}
logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
logToConsole(LOG_DEBUG, `[V.RP.House] House ${houseId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
}
}
} else {
logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId} doesn't exist. Adding ...`);
logToConsole(LOG_DEBUG, `[V.RP.House] House ${houseId} doesn't exist. Adding ...`);
let tempHouseData = new HouseData(houseId, description, entrancePosition, blipModel, pickupModel, hasInterior);
if (blipModel != -1) {
let blipId = createGameBlip(tempHouseData.blipModel, tempHouseData.entrancePosition, "House");
if (blipId != -1) {
tempHouseData.blipId = blipId;
}
logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
logToConsole(LOG_DEBUG, `[V.RP.House] House ${houseId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
} else {
logToConsole(LOG_DEBUG, `[AGRP.House] House ${houseId} has no blip.`);
logToConsole(LOG_DEBUG, `[V.RP.House] House ${houseId} has no blip.`);
}
getServerData().houses.push(tempHouseData);
setAllHouseDataIndexes();
@@ -125,4 +137,10 @@ function setAllHouseDataIndexes() {
}
}
// ===========================================================================
function removeHousesFromClient() {
getServerData().houses.splice(0);
}
// ===========================================================================

59
scripts/client/hud.js Normal file
View File

@@ -0,0 +1,59 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: hud.js
// DESC: Provides custom HUD functions and usage
// TYPE: Client (JavaScript)
// ===========================================================================
let customHUDMoneyFont = null;
let customHUDMoneyColour = toColour(255, 255, 255, 255);
let customHUDMoneySize = 22.0;
// ===========================================================================
function initCustomHUDScript() {
logToConsole(LOG_DEBUG, "[V.RP.HUD]: Initializing HUD script ...");
customHUDMoneyFont = initCustomHUDMoneyFont();
logToConsole(LOG_DEBUG, "[V.RP.HUD]: HUD script initialized!");
}
// ===========================================================================
function processCustomHUDRendering() {
logToConsole(LOG_VERBOSE, "[V.RP.HUD]: Processing custom HUD rendering ...");
if (renderHUD == false) {
return false;
}
if (getGame() == V_GAME_MAFIA_ONE) {
if (customHUDMoneyFont != null) {
let text = getCurrencyString(localPlayerMoney);
logToConsole(LOG_VERBOSE, `[V.RP.HUD]: Rendering custom HUD money (${text})...`);
customHUDMoneyFont.render(text, [game.width - 150, 20], 130, 1.0, 0.0, customHUDMoneyFont.size, customHUDMoneyColour, true, true, false, true);
//graphics.drawRectangle()
} else {
logToConsole(LOG_VERBOSE | LOG_ERROR, `[V.RP.HUD]: Rendering custom HUD money FAILED. Font object is null!`);
}
}
}
// ===========================================================================
function initCustomHUDMoneyFont() {
logToConsole(LOG_DEBUG, "[V.RP.HUD]: Loading custom HUD money font ...");
let tempFont = null;
let fontStream = openFile("files/fonts/aurora-bold-condensed.ttf");
if (fontStream != null) {
tempFont = lucasFont.createFont(fontStream, customHUDMoneySize);
logToConsole(LOG_DEBUG, "[V.RP.HUD]: Custom HUD money font loaded successfully!");
} else {
logToConsole(LOG_DEBUG | LOG_ERROR, "[V.RP.HUD]: Loading custom HUD money font FAILED. Font file stream is null!");
}
return tempFont;
}
// ===========================================================================

View File

@@ -1,34 +0,0 @@
// For RAGEMP only
// Shared Scripts
require("shared/const.js");
require("shared/utilities.js");
require("shared/gamedata.js");
// Multiplayer Mod (Wrapped Natives)
require("native/ragemp.js");
// Client Scripts
require("gui.js");
require("main.js");
require("nametag.js");
require("sync.js");
require("scoreboard.js");
require("keybind.js");
require("chatbox.js");
require("label.js");
require("skin-select.js");
require("server.js");
require("job.js");
require("event.js");
require("item.js");
require("utilities.js");
require("messaging.js");
require("logo.js");
require("afk.js");
require("mousecam.js");
require("radio.js");
require("animation.js");
// Startup
require("startup.js");

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: item.js
// DESC: Provides item action and hotbar functions
@@ -17,8 +16,8 @@ let itemActionDelaySize = toVector2(200, 5);
// ===========================================================================
function initItemScript() {
logToConsole(LOG_DEBUG, "[AGRP.Item]: Initializing item script ...");
logToConsole(LOG_DEBUG, "[AGRP.Item]: Item script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.Item]: Initializing item script ...");
logToConsole(LOG_DEBUG, "[V.RP.Item]: Item script initialized!");
}
// ===========================================================================
@@ -48,7 +47,7 @@ function processItemActionRendering() {
// ===========================================================================
function updatePlayerHotBar(activeSlot, itemsArray) {
logToConsole(LOG_DEBUG, `[AGRP.Main] Updating hotbar`);
logToConsole(LOG_DEBUG, `[V.RP.Main] Updating hotbar`);
}
// ===========================================================================

View File

@@ -1,17 +1,23 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: job.js
// DESC: Provides job functions and usage
// TYPE: Client (JavaScript)
// ===========================================================================
let localPlayerJobType = 0;
let localPlayerJobType = -1;
let localPlayerWorking = false;
let jobRouteLocationBlip = null;
let jobRouteLocationSphere = null;
let jobRouteLocationRadius = 5.0;
let jobRouteLocationIndicatorPosition = toVector3(0.0, 0.0, 0.0);
let jobRouteLocationIndicatorSize = toVector2(32, 32);
let jobRouteLocationIndicatorEnabled = false;
let jobRouteLocationIndicatorImagePath = "files/images/icons/objective-icon.png";
let jobRouteLocationIndicatorImage = null;
let jobBlipBlinkAmount = 0;
let jobBlipBlinkTimes = 10;
@@ -36,31 +42,45 @@ class JobData {
// ===========================================================================
function initJobScript() {
logToConsole(LOG_DEBUG, "[AGRP.Job]: Initializing job script ...");
logToConsole(LOG_DEBUG, "[AGRP.Job]: Job script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.Job]: Initializing job script ...");
jobRouteLocationIndicatorImage = loadJobRouteLocationIndicatorImage();
logToConsole(LOG_DEBUG, "[V.RP.Job]: Job script initialized!");
}
// ===========================================================================
function loadJobRouteLocationIndicatorImage() {
let imageStream = openFile(jobRouteLocationIndicatorImagePath);
let tempImage = null;
if (imageStream != null) {
tempImage = graphics.loadPNG(imageStream);
imageStream.close();
}
return tempImage;
}
// ===========================================================================
function setLocalPlayerJobType(tempJobType) {
logToConsole(LOG_DEBUG, `[AGRP.Job] Set local player job type to ${tempJobType}`);
logToConsole(LOG_DEBUG, `[V.RP.Job] Set local player job type to ${tempJobType}`);
localPlayerJobType = tempJobType;
}
// ===========================================================================
function setLocalPlayerWorkingState(tempWorking) {
logToConsole(LOG_DEBUG, `[AGRP.Job] Setting working state to ${tempWorking}`);
logToConsole(LOG_DEBUG, `[V.RP.Job] Setting working state to ${tempWorking}`);
localPlayerWorking = tempWorking;
}
// ===========================================================================
function showJobRouteLocation(position, colour) {
logToConsole(LOG_DEBUG, `[AGRP.Job] Showing job route location at ${position.x}, ${position.y}, ${position.z}`);
logToConsole(LOG_DEBUG, `[V.RP.Job] Showing job route location at ${position.x}, ${position.y}, ${position.z}`);
hideJobRouteLocation();
if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
if (getGame() == AGRP_GAME_GTA_SA) {
if (getMultiplayerMod() == V_MPMOD_GTAC) {
if (getGame() == V_GAME_GTA_SA) {
// Server-side spheres don't show in GTA SA for some reason.
jobRouteLocationSphere = game.createPickup(1318, position, 1);
} else {
@@ -76,12 +96,17 @@ function showJobRouteLocation(position, colour) {
blinkJobRouteLocationBlip(10, position, colour);
jobRouteLocationBlip = game.createBlip(position, 0, 2, colour);
}
if (getGame() == V_GAME_MAFIA_ONE) {
jobRouteLocationIndicatorPosition = position;
jobRouteLocationIndicatorEnabled = true;
}
}
// ===========================================================================
function enteredJobRouteSphere() {
logToConsole(LOG_DEBUG, `[AGRP.Job] Entered job route sphere`);
logToConsole(LOG_DEBUG, `[V.RP.Job] Entered job route sphere`);
hideJobRouteLocation();
tellServerPlayerArrivedAtJobRouteLocation();
}
@@ -115,32 +140,48 @@ function blinkJobRouteLocationBlip(times, position, colour) {
// ===========================================================================
function hideJobRouteLocation() {
logToConsole(LOG_DEBUG, `[AGRP.Job] Hiding job route location`);
logToConsole(LOG_DEBUG, `[V.RP.Job] Hiding job route location`);
if (jobRouteLocationBlip != null) {
destroyElement(jobRouteLocationBlip);
jobRouteLocationBlip = null;
if (isGameFeatureSupported("blip")) {
if (jobRouteLocationBlip != null) {
destroyElement(jobRouteLocationBlip);
jobRouteLocationBlip = null;
}
if (jobRouteLocationSphere != null) {
destroyElement(jobRouteLocationSphere);
jobRouteLocationSphere = null;
}
if (jobBlipBlinkTimer != null) {
clearInterval(jobBlipBlinkTimer);
}
jobBlipBlinkAmount = 0;
jobBlipBlinkTimes = 0;
}
if (jobRouteLocationSphere != null) {
destroyElement(jobRouteLocationSphere);
jobRouteLocationSphere = null;
if (getGame() == V_GAME_MAFIA_ONE) {
jobRouteLocationIndicatorPosition = toVector3(0.0, 0.0, 0.0);
jobRouteLocationIndicatorEnabled = false;
}
if (jobBlipBlinkTimer != null) {
clearInterval(jobBlipBlinkTimer);
}
jobBlipBlinkAmount = 0;
jobBlipBlinkTimes = 0;
}
// ===========================================================================
function receiveJobFromServer(jobId, jobLocationId, name, position, blipModel, pickupModel) {
logToConsole(LOG_DEBUG, `[AGRP.Job] Received job ${jobId} (${name}) from server`);
function receiveJobFromServer(jobId, isDeleted, jobLocationId, name, position, blipModel, pickupModel) {
logToConsole(LOG_DEBUG, `[V.RP.Job] Received job ${jobId} (${name}) from server`);
if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE || getGame() == V_GAME_GTA_IV) {
if (isDeleted == true) {
if (getGame() == V_GAME_GTA_IV) {
natives.removeBlipAndClearIndex(getJobData(jobId).blipId);
}
getServerData().jobs.splice(jobs, 1);
return false;
}
if (!areServerElementsSupported() || getGame() == AGRP_GAME_MAFIA_ONE || getGame() == AGRP_GAME_GTA_IV) {
if (getJobData(jobId) != false) {
let jobData = getJobData(jobId);
jobData.jobLocationId = jobLocationId;
@@ -149,23 +190,23 @@ function receiveJobFromServer(jobId, jobLocationId, name, position, blipModel, p
jobData.blipModel = blipModel;
jobData.pickupModel = pickupModel;
logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId} already exists. Checking blip ...`);
logToConsole(LOG_DEBUG, `[V.RP.Job] Job ${jobId} already exists. Checking blip ...`);
if (blipModel == -1) {
if (jobData.blipId != -1) {
logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId}'s blip has been removed by the server`);
if (getGame() == AGRP_GAME_GTA_IV) {
logToConsole(LOG_DEBUG, `[V.RP.Job] Job ${jobId}'s blip has been removed by the server`);
if (getGame() == V_GAME_GTA_IV) {
natives.removeBlipAndClearIndex(getJobData(jobId).blipId);
} else {
destroyElement(getElementFromId(blipId));
}
jobData.blipId = -1;
} else {
logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId}'s blip is unchanged`);
logToConsole(LOG_DEBUG, `[V.RP.Job] Job ${jobId}'s blip is unchanged`);
}
} else {
if (jobData.blipId != -1) {
logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId}'s blip has been changed by the server`);
if (getGame() == AGRP_GAME_GTA_IV) {
logToConsole(LOG_DEBUG, `[V.RP.Job] Job ${jobId}'s blip has been changed by the server`);
if (getGame() == V_GAME_GTA_IV) {
natives.setBlipCoordinates(jobData.blipId, jobData.position);
natives.changeBlipSprite(jobData.blipId, jobData.blipModel);
natives.setBlipMarkerLongDistance(jobData.blipId, false);
@@ -177,20 +218,20 @@ function receiveJobFromServer(jobId, jobLocationId, name, position, blipModel, p
if (blipId != -1) {
jobData.blipId = blipId;
}
logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
logToConsole(LOG_DEBUG, `[V.RP.Job] Job ${jobId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
}
}
} else {
logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId} doesn't exist. Adding ...`);
logToConsole(LOG_DEBUG, `[V.RP.Job] Job ${jobId} doesn't exist. Adding ...`);
let tempJobData = new JobData(jobId, jobLocationId, name, position, blipModel, pickupModel);
if (blipModel != -1) {
let blipId = createGameBlip(blipModel, tempJobData.position, tempJobData.name);
if (blipId != -1) {
tempJobData.blipId = blipId;
}
logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
logToConsole(LOG_DEBUG, `[V.RP.Job] Job ${jobId}'s blip has been added by the server (Model ${blipModel}, ID ${blipId})`);
} else {
logToConsole(LOG_DEBUG, `[AGRP.Job] Job ${jobId} has no blip.`);
logToConsole(LOG_DEBUG, `[V.RP.Job] Job ${jobId} has no blip.`);
}
getServerData().jobs.push(tempJobData);
setAllJobDataIndexes();
@@ -218,7 +259,54 @@ function getJobData(jobId) {
function setAllJobDataIndexes() {
for (let i in getServerData().jobs) {
jobs[i].index = i;
getServerData().jobs[i].index = i;
}
}
// ===========================================================================
function removeJobsFromClient() {
getServerData().jobs.splice(0);
}
// ===========================================================================
function processJobLocationIndicatorRendering() {
if (jobRouteLocationIndicatorImage == null) {
logToConsole(LOG_VERBOSE, `[V.RP.Job]: Can't render job location indicator. Image is null.`);
return false;
}
if (getGame() != V_GAME_MAFIA_ONE) {
logToConsole(LOG_VERBOSE, `[V.RP.Job]: Can't render job location indicator. Unsupported game.`);
return false;
}
if (!jobRouteLocationIndicatorEnabled) {
logToConsole(LOG_VERBOSE, `[V.RP.Job]: Can't render job location indicator. Disabled`);
return false;
}
let screenPosition = getScreenFromWorldPosition(jobRouteLocationIndicatorPosition);
screenPosition = fixOffScreenPosition(screenPosition, jobRouteLocationIndicatorSize);
graphics.drawRectangle(jobRouteLocationIndicatorImage, [screenPosition.x - (jobRouteLocationIndicatorSize.x / 2), screenPosition.y - (jobRouteLocationIndicatorSize.y / 2)], [jobRouteLocationIndicatorSize.x, jobRouteLocationIndicatorSize.y]);
}
// ===========================================================================
function processJobRouteLocationDistance() {
if (getGame() != V_GAME_MAFIA_ONE) {
return false;
}
if (jobRouteLocationIndicatorEnabled == false) {
return false;
}
if (getDistance(getLocalPlayerPosition(), jobRouteLocationIndicatorPosition) <= jobRouteLocationRadius) {
logToConsole(LOG_DEBUG, `[V.RP.Job] Reached job route location`);
hideJobRouteLocation();
tellServerPlayerArrivedAtJobRouteLocation();
}
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: keybind.js
// DESC: Provides keybind features
@@ -17,14 +16,14 @@ let keyBindLongHoldDuration = 1500;
// ===========================================================================
function initKeyBindScript() {
logToConsole(LOG_DEBUG, "[AGRP.KeyBind]: Initializing key bind script ...");
logToConsole(LOG_DEBUG, "[AGRP.KeyBind]: Key bind script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.KeyBind]: Initializing key bind script ...");
logToConsole(LOG_DEBUG, "[V.RP.KeyBind]: Key bind script initialized!");
}
// ===========================================================================
function bindAccountKey(key, keyState) {
logToConsole(LOG_DEBUG, `[AGRP.KeyBind]: Binded key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
logToConsole(LOG_DEBUG, `[V.RP.KeyBind]: Binded key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
keyBinds.push(toInteger(key));
bindKey(toInteger(key), keyState, function (event) {
if (isAnyGUIActive()) {
@@ -33,14 +32,14 @@ function bindAccountKey(key, keyState) {
if (hasKeyBindDelayElapsed()) {
if (canLocalPlayerUseKeyBinds()) {
logToConsole(LOG_DEBUG, `[AGRP.KeyBind]: Using keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
logToConsole(LOG_DEBUG, `[V.RP.KeyBind]: Using keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
lastKeyBindUse = sdl.ticks;
tellServerPlayerUsedKeyBind(key);
} else {
logToConsole(LOG_DEBUG, `[AGRP.KeyBind]: Failed to use keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key}) - Not allowed to use keybinds!`);
logToConsole(LOG_DEBUG, `[V.RP.KeyBind]: Failed to use keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key}) - Not allowed to use keybinds!`);
}
} else {
logToConsole(LOG_DEBUG, `[AGRP.KeyBind]: Failed to use keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key}) - Not enough time has passed since last keybind use!`);
logToConsole(LOG_DEBUG, `[V.RP.KeyBind]: Failed to use keybind for key ${toUpperCase(getKeyNameFromId(key))} (${key}) - Not enough time has passed since last keybind use!`);
}
});
}
@@ -48,7 +47,7 @@ function bindAccountKey(key, keyState) {
// ===========================================================================
function unBindAccountKey(key) {
logToConsole(LOG_DEBUG, `[AGRP.KeyBind]: Unbinded key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
logToConsole(LOG_DEBUG, `[V.RP.KeyBind]: Unbinded key ${toUpperCase(getKeyNameFromId(key))} (${key})`);
unbindKey(key);
keyBinds.splice(keyBinds.indexOf(key), 1);
return true;

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: labels.js
// DESC: Provides functionality for world labels (3D labels)
@@ -14,7 +13,7 @@ let jobLabels = [];
let propertyLabelNameFont = null;
let propertyLabelLockedFont = null;
let propertyLabelHeight = (getGame() == AGRP_GAME_MAFIA_ONE) ? 2.0 : 1.0;
let propertyLabelHeight = (getGame() == V_GAME_MAFIA_ONE) ? 1.75 : 1.0;
let propertyPickupRenderDistance = 75.0;
let propertyLabelRenderDistance = 5.0;
let propertyLabelLockedOffset = 16;
@@ -28,15 +27,33 @@ let unlockedColour = toColour(50, 205, 50, 255);
let lockedColour = toColour(205, 92, 92, 255);
let jobHelpColour = toColour(234, 198, 126, 255);
let businessWorldIconPath = "files/images/icons/business-icon.png";
let jobWorldIconPath = "files/images/icons/job-icon.png";
let houseWorldIconPath = "files/images/icons/house-icon.png";
let businessWorldIconImage = null;
let jobWorldIconImage = null;
let houseWorldIconImage = null;
let businessWorldIconSize = [64, 64];
let jobWorldIconSize = [64, 64];
let houseWorldIconSize = [64, 64];
let worldIconRenderDistance = 15.0;
let businessWorldIconRenderDistance = worldIconRenderDistance;
let houseWorldIconRenderDistance = worldIconRenderDistance;
let jobWorldIconRenderDistance = worldIconRenderDistance;
// ===========================================================================
function initLabelScript() {
logToConsole(LOG_DEBUG, "[AGRP.Label]: Initializing label script ...");
logToConsole(LOG_DEBUG, "[V.RP.Label]: Initializing label script ...");
propertyLabelNameFont = initLabelPropertyNameFont();
propertyLabelLockedFont = initLabelPropertyLockedFont();
jobNameLabelFont = initLabelJobNameFont();
jobHelpLabelFont = initLabelJobHelpFont();
logToConsole(LOG_DEBUG, "[AGRP.Label]: Label script initialized!");
businessWorldIconImage = initBusinessWorldIcon();
jobWorldIconImage = initJobWorldIcon();
houseWorldIconImage = initHouseWorldIcon();
logToConsole(LOG_DEBUG, "[V.RP.Label]: Label script initialized!");
}
// ===========================================================================
@@ -65,6 +82,45 @@ function initLabelJobHelpFont() {
// ===========================================================================
function initBusinessWorldIcon() {
let imageStream = openFile(businessWorldIconPath);
let tempImage = null;
if (imageStream != null) {
tempImage = graphics.loadPNG(imageStream);
imageStream.close();
}
return tempImage;
}
// ===========================================================================
function initJobWorldIcon() {
let imageStream = openFile(jobWorldIconPath);
let tempImage = null;
if (imageStream != null) {
tempImage = graphics.loadPNG(imageStream);
imageStream.close();
}
return tempImage;
}
// ===========================================================================
function initHouseWorldIcon() {
let imageStream = openFile(houseWorldIconPath);
let tempImage = null;
if (imageStream != null) {
tempImage = graphics.loadPNG(imageStream);
imageStream.close();
}
return tempImage;
}
// ===========================================================================
function renderPropertyEntranceLabel(name, position, locked, isBusiness, price, rentPrice, labelInfoType, fee) {
if (localPlayer == null) {
return false;
@@ -78,27 +134,33 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
return false;
}
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_MAFIA_ONE) {
if (localPlayer.vehicle != null) {
return false;
}
}
if (getGame() == V_GAME_GTA_IV) {
if (!natives.doesViewportExist(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport does not exist!");
logToConsole(LOG_INFO, "[V.RP.Label]: Game viewport does not exist!");
return false;
}
if (!natives.isViewportActive(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport is not active!");
logToConsole(LOG_INFO, "[V.RP.Label]: Game viewport is not active!");
return false;
}
}
position = getPosAbovePos(position, propertyLabelHeight);
let screenPosition = new Vec3(0.0, 0.0, 0.0);
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
screenPosition = natives.getViewportPositionOfCoord(position, natives.getGameViewportId());
} else {
screenPosition = getScreenFromWorldPosition(position);
}
logToConsole(LOG_VERBOSE, `[AGRP.Label] World [${position.x}, ${position.y}, ${position.z}] to screen [${screenPosition.x}, ${screenPosition.y}, ${screenPosition.z}]`);
logToConsole(LOG_VERBOSE, `[V.RP.Label] World [${position.x}, ${position.y}, ${position.z}] to screen [${screenPosition.x}, ${screenPosition.y}, ${screenPosition.z}]`);
if (screenPosition.x < 0 || screenPosition.x > game.width) {
return false;
@@ -137,11 +199,11 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
text = (locked) ? toUpperCase(getLocaleString("Locked")) : toUpperCase(getLocaleString("Unlocked"));
}
if (!locked && labelInfoType != AGRP_PROPLABEL_INFO_NONE) {
if (!locked && labelInfoType != V_PROPLABEL_INFO_NONE) {
let infoText = "";
switch (labelInfoType) {
case AGRP_PROPLABEL_INFO_ENTER: {
if (enterPropertyKey) {
case V_PROPLABEL_INFO_ENTER: {
if (enterPropertyKey != null) {
infoText = getLocaleString("PropertyEnterKeyPressLabel", toUpperCase(getKeyNameFromId(enterPropertyKey)));
} else {
infoText = getLocaleString("PropertyEnterCommandLabel", "/enter");
@@ -149,33 +211,33 @@ function renderPropertyEntranceLabel(name, position, locked, isBusiness, price,
break;
}
case AGRP_PROPLABEL_INFO_BUY: {
case V_PROPLABEL_INFO_BUY: {
infoText = getLocaleString("BusinessBuyItemsLabel", "/buy");
break;
}
case AGRP_PROPLABEL_INFO_BUYBIZ: {
case V_PROPLABEL_INFO_BUYBIZ: {
infoText = getLocaleString("BuyBusinessLabel", "/bizbuy");
break;
}
case AGRP_PROPLABEL_INFO_BUYHOUSE: {
case V_PROPLABEL_INFO_BUYHOUSE: {
infoText = getLocaleString("BuyHouseLabel", "/housebuy");
break;
}
case AGRP_PROPLABEL_INFO_RENTHOUSE: {
case V_PROPLABEL_INFO_RENTHOUSE: {
infoText = getLocaleString("RentHouseLabel", "/houserent");
break;
}
case AGRP_PROPLABEL_INFO_ENTERVEHICLE: {
case V_PROPLABEL_INFO_ENTERVEHICLE: {
infoText = getLocaleString("VehicleDealershipLabel");
break;
}
default: {
if (enterPropertyKey) {
if (enterPropertyKey != null) {
infoText = getLocaleString("PropertyEnterKeyPressLabel", toUpperCase(getKeyNameFromId(enterPropertyKey)));
} else {
infoText = getLocaleString("PropertyEnterCommandLabel", "/enter");
@@ -219,29 +281,30 @@ function renderPropertyExitLabel(position) {
return false;
}
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_MAFIA_ONE) {
if (localPlayer.vehicle != null) {
return false;
}
}
if (getGame() == V_GAME_GTA_IV) {
if (!natives.doesViewportExist(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport does not exist!");
logToConsole(LOG_INFO, "[V.RP.Label]: Game viewport does not exist!");
return false;
}
if (!natives.isViewportActive(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport is not active!");
logToConsole(LOG_INFO, "[V.RP.Label]: Game viewport is not active!");
return false;
}
}
let tempPosition = position;
tempPosition.z = tempPosition.z + propertyLabelHeight;
position = getPosAbovePos(position, propertyLabelHeight);
let screenPosition = new Vec3(0.0, 0.0, 0.0);
if (getGame() == AGRP_GAME_GTA_IV) {
screenPosition = natives.getViewportPositionOfCoord(tempPosition, natives.getGameViewportId());
if (getGame() == V_GAME_GTA_IV) {
screenPosition = natives.getViewportPositionOfCoord(position, natives.getGameViewportId());
} else {
screenPosition = getScreenFromWorldPosition(tempPosition);
}
if (screenPosition.x < 0 || screenPosition.x > game.width) {
return false;
screenPosition = getScreenFromWorldPosition(position);
}
let text = "EXIT";
@@ -264,27 +327,34 @@ function renderJobLabel(name, position, jobType) {
return false;
}
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_MAFIA_ONE) {
if (localPlayer.vehicle != null) {
return false;
}
}
if (getGame() == V_GAME_GTA_IV) {
if (!natives.doesViewportExist(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport does not exist!");
logToConsole(LOG_INFO, "[V.RP.Label]: Game viewport does not exist!");
return false;
}
if (!natives.isViewportActive(natives.getGameViewportId())) {
logToConsole(LOG_INFO, "[AGRP.Label]: Game viewport is not active!");
logToConsole(LOG_INFO, "[V.RP.Label]: Game viewport is not active!");
return false;
}
}
let tempPosition = position;
tempPosition.z = tempPosition.z + propertyLabelHeight;
position = getPosAbovePos(position, propertyLabelHeight);
let screenPosition = new Vec3(0.0, 0.0, 0.0);
if (getGame() == AGRP_GAME_GTA_IV) {
screenPosition = natives.getViewportPositionOfCoord(tempPosition, natives.getGameViewportId());
if (getGame() == V_GAME_GTA_IV) {
screenPosition = natives.getViewportPositionOfCoord(position, natives.getGameViewportId());
} else {
screenPosition = getScreenFromWorldPosition(tempPosition);
screenPosition = getScreenFromWorldPosition(position);
}
logToConsole(LOG_VERBOSE, `[V.RP.Label] World [${position.x}, ${position.y}, ${position.z}] to screen [${screenPosition.x}, ${screenPosition.y}, ${screenPosition.z}]`);
if (screenPosition.x < 0 || screenPosition.x > game.width) {
return false;
}
@@ -297,7 +367,7 @@ function renderJobLabel(name, position, jobType) {
text = getLocaleString("StartWorkLabel", "/startwork");
}
} else {
if (localPlayerJobType == 0) {
if (localPlayerJobType == -1) {
text = getLocaleString("TakeJobLabel", "/takejob");
} else {
text = getLocaleString("NotYourJobLabel", "/quitjob");
@@ -317,90 +387,113 @@ function renderJobLabel(name, position, jobType) {
// -------------------------------------------------------------------------
function processLabelRendering() {
if (getGame() == V_GAME_MAFIA_ONE) {
if (localPlayer.vehicle != null) {
return false;
}
}
if (renderLabels) {
if (!areServerElementsSupported() || getGame() == AGRP_GAME_MAFIA_ONE) {
if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE || getGame() == V_GAME_GTA_IV || getGame() == V_GAME_GTA_IV_EFLC) {
if (localPlayer != null) {
getServerData().businesses.forEach((business) => {
if (getDistance(localPlayer.position, business.entrancePosition) <= propertyPickupRenderDistance) {
if (getGame() == AGRP_GAME_GTA_IV || getGame() == AGRP_GAME_GTA_IV_EFLC) {
let distance = getDistance(localPlayer.position, business.entrancePosition);
if (distance <= propertyLabelRenderDistance) {
if (getGame() == V_GAME_GTA_IV || getGame() == V_GAME_GTA_IV_EFLC) {
natives.drawColouredCylinder(getPosBelowPos(business.entrancePosition, 1.0), 0.0, 0.0, 0, 153, 255, 255);
}
if (getDistance(localPlayer.position, business.entrancePosition) <= propertyLabelRenderDistance) {
renderPropertyEntranceLabel(business.name, business.entrancePosition, business.locked, true, business.buyPrice, business.rentPrice, business.labelInfoType, business.entranceFee);
renderPropertyEntranceLabel(business.name, business.entrancePosition, business.locked, true, business.buyPrice, business.rentPrice, business.labelInfoType, business.entranceFee);
}
if (distance <= businessWorldIconRenderDistance) {
if (getGame() == V_GAME_MAFIA_ONE && localPlayer.vehicle == null) {
renderBusinessWorldIcon(getPosAbovePos(business.entrancePosition, 1.0));
}
}
});
getServerData().houses.forEach((house) => {
if (getDistance(localPlayer.position, house.entrancePosition) <= propertyPickupRenderDistance) {
if (getGame() == AGRP_GAME_GTA_IV || getGame() == AGRP_GAME_GTA_IV_EFLC) {
let distance = getDistance(localPlayer.position, house.entrancePosition);
if (distance <= propertyLabelRenderDistance) {
if (getGame() == V_GAME_GTA_IV || getGame() == V_GAME_GTA_IV_EFLC) {
natives.drawColouredCylinder(getPosBelowPos(house.entrancePosition, 1.0), 0.0, 0.0, 0, 200, 0, 255);
}
if (getDistance(localPlayer.position, house.entrancePosition) <= propertyLabelRenderDistance) {
renderPropertyEntranceLabel(house.description, house.entrancePosition, house.locked, true, house.buyPrice, house.rentPrice, house.labelInfoType);
renderPropertyEntranceLabel(house.description, house.entrancePosition, house.locked, true, house.buyPrice, house.rentPrice, house.labelInfoType);
}
if (distance <= houseWorldIconRenderDistance) {
if (getGame() == V_GAME_MAFIA_ONE && localPlayer.vehicle == null) {
renderHouseWorldIcon(getPosAbovePos(house.entrancePosition, 1.0));
}
}
});
getServerData().jobs.forEach((job) => {
if (getDistance(localPlayer.position, job.position) <= propertyPickupRenderDistance) {
if (getGame() == AGRP_GAME_GTA_IV || getGame() == AGRP_GAME_GTA_IV_EFLC) {
let distance = getDistance(localPlayer.position, job.position);
if (distance <= propertyLabelRenderDistance) {
if (getGame() == V_GAME_GTA_IV || getGame() == V_GAME_GTA_IV_EFLC) {
natives.drawColouredCylinder(getPosBelowPos(job.position, 1.0), 0.0, 0.0, 255, 255, 0, 255);
}
renderJobLabel(job.name, job.position, job.jobId);
}
if (getDistance(localPlayer.position, job.position) <= 5.0) {
renderJobLabel(job.name, job.position, job.jobType);
if (distance <= jobWorldIconRenderDistance) {
if (getGame() == V_GAME_MAFIA_ONE && localPlayer.vehicle == null) {
renderJobWorldIcon(getPosAbovePos(job.position, 1.0));
}
}
});
}
}
if (areWorldLabelsSupported()) {
if (arePickupsSupported() && areWorldLabelsSupported()) {
if (localPlayer != null) {
let pickups = getElementsByType(ELEMENT_PICKUP);
for (let i in pickups) {
if (pickups[i].getData("agrp.label.type") != null) {
if (pickups[i].getData("v.rp.label.type") != null) {
if (getDistance(localPlayer.position, pickups[i].position) <= propertyLabelRenderDistance) {
if (!pickups[i].isOnScreen) {
let price = "0";
let rentPrice = "0";
let labelInfoType = AGRP_PROPLABEL_INFO_NONE;
if (pickups[i].getData("agrp.label.price") != null) {
price = pickups[i].getData("agrp.label.price");
let fee = "0";
let labelInfoType = V_PROPLABEL_INFO_NONE;
if (pickups[i].getData("v.rp.label.price") != null) {
price = pickups[i].getData("v.rp.label.price");
}
if (pickups[i].getData("agrp.label.rentprice") != null) {
rentPrice = pickups[i].getData("agrp.label.rentprice");
if (pickups[i].getData("v.rp.label.rentprice") != null) {
rentPrice = pickups[i].getData("v.rp.label.rentprice");
}
if (pickups[i].getData("agrp.label.help") != null) {
labelInfoType = pickups[i].getData("agrp.label.help");
if (pickups[i].getData("v.rp.label.help") != null) {
labelInfoType = pickups[i].getData("v.rp.label.help");
}
if (pickups[i].getData("agrp.label.fee") != null) {
fee = pickups[i].getData("agrp.label.fee");
if (pickups[i].getData("v.rp.label.fee") != null) {
fee = pickups[i].getData("v.rp.label.fee");
}
switch (pickups[i].getData("agrp.label.type")) {
case AGRP_LABEL_BUSINESS: {
renderPropertyEntranceLabel(pickups[i].getData("agrp.label.name"), pickups[i].position, pickups[i].getData("agrp.label.locked"), true, price, rentPrice, labelInfoType, fee);
switch (pickups[i].getData("v.rp.label.type")) {
case V_LABEL_BUSINESS: {
renderPropertyEntranceLabel(pickups[i].getData("v.rp.label.name"), pickups[i].position, pickups[i].getData("v.rp.label.locked"), true, price, rentPrice, labelInfoType, fee);
break;
}
case AGRP_LABEL_HOUSE: {
renderPropertyEntranceLabel(pickups[i].getData("agrp.label.name"), pickups[i].position, pickups[i].getData("agrp.label.locked"), false, price, rentPrice, labelInfoType);
case V_LABEL_HOUSE: {
renderPropertyEntranceLabel(pickups[i].getData("v.rp.label.name"), pickups[i].position, pickups[i].getData("v.rp.label.locked"), false, price, rentPrice, labelInfoType);
break;
}
case AGRP_LABEL_JOB: {
renderJobLabel(pickups[i].getData("agrp.label.name"), pickups[i].position, pickups[i].getData("agrp.label.jobType"));
case V_LABEL_JOB: {
renderJobLabel(pickups[i].getData("v.rp.label.name"), pickups[i].position, pickups[i].getData("v.rp.label.jobType"));
break;
}
case AGRP_LABEL_EXIT: {
case V_LABEL_EXIT: {
renderPropertyExitLabel(pickups[i].position);
break;
}
@@ -414,4 +507,55 @@ function processLabelRendering() {
}
}
// -------------------------------------------------------------------------
function renderJobWorldIcon(position) {
if (jobWorldIconImage == null) {
logToConsole(LOG_VERBOSE, `[V.RP.Label]: Can't render job world icon. Image is null.`);
return false;
}
if (getGame() != V_GAME_MAFIA_ONE) {
logToConsole(LOG_VERBOSE, `[V.RP.Label]: Can't render job world icon. Unsupported game.`);
return false;
}
let screenPosition = getScreenFromWorldPosition(position);
graphics.drawRectangle(jobWorldIconImage, [screenPosition.x - (jobWorldIconSize[0] / 2), screenPosition.y - (jobWorldIconSize[1] / 2)], [jobWorldIconSize[0], jobWorldIconSize[1]]);
}
// -------------------------------------------------------------------------
function renderBusinessWorldIcon(position) {
if (businessWorldIconImage == null) {
logToConsole(LOG_VERBOSE, `[V.RP.Label]: Can't render business world icon. Image is null.`);
return false;
}
if (getGame() != V_GAME_MAFIA_ONE) {
logToConsole(LOG_VERBOSE, `[V.RP.Label]: Can't render business world icon. Unsupported game.`);
return false;
}
let screenPosition = getScreenFromWorldPosition(position);
graphics.drawRectangle(businessWorldIconImage, [screenPosition.x - (businessWorldIconSize[0] / 2), screenPosition.y - (businessWorldIconSize[1] / 2)], [businessWorldIconSize[0], businessWorldIconSize[1]]);
}
// -------------------------------------------------------------------------
function renderHouseWorldIcon(position) {
if (houseWorldIconImage == null) {
logToConsole(LOG_VERBOSE, `[V.RP.Label]: Can't render house world icon. Image is null.`);
return false;
}
if (getGame() != V_GAME_MAFIA_ONE) {
logToConsole(LOG_VERBOSE, `[V.RP.Label]: Can't render house world icon. Unsupported game.`);
return false;
}
let screenPosition = getScreenFromWorldPosition(position);
graphics.drawRectangle(houseWorldIconImage, [screenPosition.x - (houseWorldIconSize[0] / 2), screenPosition.y - (houseWorldIconSize[1] / 2)], [houseWorldIconSize[0], houseWorldIconSize[1]]);
}
// -------------------------------------------------------------------------

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: locale.js
// DESC: Provides locale functions and usage
@@ -35,7 +34,7 @@ function getAvailableLocaleOptions() {
// ===========================================================================
function loadLocaleConfig() {
let configFile = getContentsOfTextFile("config/client/locale.json");
let configFile = loadTextFile("config/client/locale.json");
getServerData().localeOptions = JSON.parse(configFile);
//resetLocaleChooserOptions();
@@ -47,8 +46,8 @@ function loadLocaleConfig() {
function loadAllLocaleStrings() {
let localeOptions = getServerData().localeOptions;
for (let i in localeOptions) {
logToConsole(LOG_INFO, `[AGRP.Locale] Loading locale strings for ${localeOptions[i].englishName} (${i})`);
let localeStringFile = getContentsOfTextFile(`locale/${localeOptions[i].stringsFile}`);
logToConsole(LOG_INFO, `[V.RP.Locale] Loading locale strings for ${localeOptions[i].englishName} (${i})`);
let localeStringFile = loadTextFile(`locale/${localeOptions[i].stringsFile}`);
let localeStringData = JSON.parse(localeStringFile);
let localeId = localeOptions[i].id;
@@ -61,7 +60,7 @@ function loadAllLocaleStrings() {
// ===========================================================================
function setLocale(tempLocaleId) {
logToConsole(LOG_DEBUG, `[AGRP.Locale] Setting locale to ${tempLocaleId} (${getServerData().localeOptions[tempLocaleId].englishName})`);
logToConsole(LOG_DEBUG, `[V.RP.Locale] Setting locale to ${tempLocaleId} (${getServerData().localeOptions[tempLocaleId].englishName})`);
localLocaleId = tempLocaleId;
resetGUIStrings();
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: logo.js
// DESC: Provides logo rendering functions
@@ -9,21 +8,21 @@
// ===========================================================================
let logoImage = null;
let logoPos = toVector2(game.width - 132, game.height - 132);
let logoPos = (getGame() == V_GAME_MAFIA_ONE) ? toVector2(80, game.height - 80) : toVector2(64, 64);
let logoSize = toVector2(128, 128);
// ===========================================================================
function initLogoScript() {
logToConsole(LOG_DEBUG, "[AGRP.Logo]: Initializing logo script ...");
logToConsole(LOG_DEBUG, "[V.RP.Logo]: Initializing logo script ...");
//logoImage = loadLogoImage();
logToConsole(LOG_DEBUG, "[AGRP.Logo]: Logo script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.Logo]: Logo script initialized!");
}
// ===========================================================================
function loadLogoImage() {
//if (getGame() == AGRP_GAME_MAFIA_ONE) {
//if (getGame() == V_GAME_MAFIA_ONE) {
// return false;
//}
@@ -40,7 +39,7 @@ function loadLogoImage() {
// ===========================================================================
function processLogoRendering() {
if (getGame() == AGRP_GAME_MAFIA_ONE) {
if (getGame() == V_GAME_MAFIA_ONE) {
return false;
}
@@ -54,7 +53,7 @@ function processLogoRendering() {
// ===========================================================================
function setServerLogoRenderState(state) {
logToConsole(LOG_DEBUG, `[AGRP.Main] Server logo ${(state) ? "enabled" : "disabled"}`);
logToConsole(LOG_DEBUG, `[V.RP.Main] Server logo ${(state) ? "enabled" : "disabled"}`);
renderLogo = state;
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: messaging.js
// DESC: Provides messaging/textdraw functions and usage
@@ -23,10 +22,10 @@ let smallGameMessageTimer = null;
// ===========================================================================
function initMessagingScript() {
logToConsole(LOG_DEBUG, "[AGRP.Messaging]: Initializing messaging script ...");
logToConsole(LOG_DEBUG, "[V.RP.Messaging]: Initializing messaging script ...");
smallGameMessageFonts = loadSmallGameMessageFonts();
bigGameMessageFonts = loadSmallGameMessageFonts();
logToConsole(LOG_DEBUG, "[AGRP.Messaging]: Messaging script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.Messaging]: Messaging script initialized!");
}
// ===========================================================================
@@ -63,7 +62,7 @@ function loadBigGameMessageFont() {
fontStream = openFile("files/fonts/aurora-bold-condensed.ttf");
if (fontStream != null) {
tempBigGameMessageFonts["AuroraBdCnBT"] = lucasFont.createFont(fontStream, 20.0);
tempBigGameMessageFonts["AuroraBdCnBT"] = lucasFont.createFont(fontStream, 28.0);
fontStream.close();
}
@@ -76,10 +75,10 @@ function loadBigGameMessageFont() {
// ===========================================================================
function processSmallGameMessageRendering() {
logToConsole(LOG_VERBOSE, "[AGRP.Messaging]: Processing small game message rendering ...");
logToConsole(LOG_VERBOSE, "[V.RP.Messaging]: Processing small game message rendering ...");
if (renderSmallGameMessage) {
if (smallGameMessageText != "") {
logToConsole(LOG_VERBOSE, `[AGRP.Messaging]: Rendering small game message: ${smallGameMessageText}`);
logToConsole(LOG_VERBOSE, `[V.RP.Messaging]: Rendering small game message: ${smallGameMessageText}`);
if (smallGameMessageFonts[smallGameMessageFontName] != null) {
smallGameMessageFonts[smallGameMessageFontName].render(smallGameMessageText, [0, game.height - 90], game.width, 0.5, 0.0, smallGameMessageFonts[smallGameMessageFontName].size, smallGameMessageColour, true, true, false, true);
}
@@ -90,7 +89,7 @@ function processSmallGameMessageRendering() {
// ===========================================================================
function showSmallGameMessage(text, colour, duration, fontName) {
logToConsole(LOG_DEBUG, `[AGRP.Messaging] Showing small game message '${text}' using font ${fontName} for ${duration}ms`);
logToConsole(LOG_DEBUG, `[V.RP.Messaging] Showing small game message '${text}' using font ${fontName} for ${duration}ms`);
if (smallGameMessageText != "") {
clearTimeout(smallGameMessageTimer);
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: nametags.js
// DESC: Provides nametag rendering
@@ -14,6 +13,7 @@ let afkStatusFont = null;
let pingFont = null;
let nametagDistance = 50.0;
let nametagWidth = 70;
let nametagHeight = (getGame() == V_GAME_MAFIA_ONE) ? 2.0 : 0.9;
let playerNames = {};
let playerColours = {};
@@ -23,10 +23,10 @@ let playerPing = {};
// ===========================================================================
function initNameTagScript() {
logToConsole(LOG_DEBUG, "[AGRP.NameTag]: Initializing nametag script ...");
logToConsole(LOG_DEBUG, "[V.RP.NameTag]: Initializing nametag script ...");
nametagFont = loadNameTagFont();
afkStatusFont = loadPausedStatusFont();
logToConsole(LOG_DEBUG, "[AGRP.NameTag]: Nametag script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.NameTag]: Nametag script initialized!");
}
// ===========================================================================
@@ -53,7 +53,7 @@ function updatePlayerNameTag(clientName, characterName, colour, paused, ping) {
playerPaused[clientName] = paused;
playerPing[clientName] = ping;
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
let client = getPlayerFromParams(clientName);
if (client != false) {
if (getPlayerPed(client) != null) {
@@ -85,21 +85,15 @@ function drawNametag(x, y, health, armour, text, ping, alpha, distance, colour,
// -------------------------------------------
// Health Bar
if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
if (getGame() == AGRP_GAME_GTA_III) {
// Mickey Hamfists is ridiculously tall. Raise the nametag for him a bit
if (skin == 109) {
y -= 20;
} else {
y -= 5;
}
} else {
y -= 5;
if (getGame() == V_GAME_GTA_III) {
// Mickey Hamfists is ridiculously tall. Raise the nametag for him a bit
if (skin == 109) {
y -= 15;
}
} else {
y -= 5;
}
y -= 5;
if (health > 0.0) {
let hx = x - width / 2;
let hy = y - 10 / 2;
@@ -144,20 +138,18 @@ function drawNametag(x, y, health, armour, text, ping, alpha, distance, colour,
// ===========================================================================
function updateNametag(element) {
if (!areWorldLabelsSupported()) {
if (!isGameFeatureSupported("customNametag")) {
return false;
}
if (localPlayer != null) {
let playerPos = localPlayer.position;
let elementPos = element.position;
let playerPosition = localPlayer.position;
let elementPosition = element.position;
elementPos[2] += 0.9;
elementPosition = getPosAbovePos(elementPosition, nametagHeight);
//if(typeof element.getComponentPosition()) {
let screenPos = getScreenFromWorldPosition(elementPos);
if (screenPos[2] >= 0.0) {
let screenPosition = getScreenFromWorldPosition(elementPosition);
if (screenPosition[2] >= 0.0 || getGame() == V_GAME_MAFIA_ONE) {
let health = element.health / 100.0;
if (health > 1.0) {
health = 1.0;
@@ -168,10 +160,10 @@ function updateNametag(element) {
armour = 1.0;
}
let distance = playerPos.distance(elementPos);
let distance = playerPosition.distance(elementPosition);
if (distance <= nametagDistance) {
if (typeof game.processLineOfSight != "undefined") {
let losCheck = game.processLineOfSight(playerPos, elementPos, true, false, false, true, true, false, true, true);
let losCheck = game.processLineOfSight(playerPosition, elementPosition, true, false, false, true, true, false, true, true);
if (losCheck != null) {
return false;
}
@@ -183,25 +175,23 @@ function updateNametag(element) {
let paused = false;
let ping = -1;
if (element.isType(ELEMENT_PLAYER)) {
if (typeof playerNames[element.name] != "undefined") {
name = playerNames[element.name];
}
if (typeof playerPaused[element.name] != "undefined") {
paused = playerPaused[element.name];
}
if (typeof playerColours[element.name] != "undefined") {
colour = playerColours[element.name];
}
if (typeof playerPing[element.name] != "undefined") {
ping = playerPing[element.name];
}
if (typeof playerNames[element.name] != "undefined") {
name = playerNames[element.name];
}
drawNametag(screenPos[0], screenPos[1], health, armour, name, ping, 1.0 - distance / nametagDistance, distance, colour, paused, element.skin);
if (typeof playerPaused[element.name] != "undefined") {
paused = playerPaused[element.name];
}
if (typeof playerColours[element.name] != "undefined") {
colour = playerColours[element.name];
}
if (typeof playerPing[element.name] != "undefined") {
ping = playerPing[element.name];
}
drawNametag(screenPosition[0], screenPosition[1], health, armour, name, ping, 1.0 - distance / nametagDistance, distance, colour, paused, element.skin);
}
}
}
@@ -225,6 +215,12 @@ function processNameTagRendering(event) {
// return false;
//}
if (getGame() == V_GAME_MAFIA_ONE) {
if (localPlayer.vehicle != null) {
return false;
}
}
getElementsByType(ELEMENT_PED).forEach(function (ped) {
if (ped != localPlayer) {
updateNametag(ped);

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: connected.js
// DESC: Provides wrapped natives for GTA Connected and Mafia Connected mods
@@ -38,7 +37,7 @@ function getPlayerPosition() {
// ===========================================================================
function setPlayerPosition(position) {
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
natives.setCharCoordinates(localPlayer, position);
} else {
localPlayer.position = position;
@@ -188,7 +187,7 @@ function getVehiclesInRange(position, range) {
// ===========================================================================
function createGameBlip(blipModel, position, name = "") {
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
let blipId = natives.addBlipForCoord(position);
if (blipId) {
natives.changeBlipSprite(blipId, blipModel);
@@ -232,50 +231,50 @@ function repairVehicle(syncId) {
// ===========================================================================
function syncVehicleProperties(vehicle) {
if (doesEntityDataExist(vehicle, "agrp.lights")) {
let lightStatus = getEntityData(vehicle, "agrp.lights");
if (doesEntityDataExist(vehicle, "v.rp.lights")) {
let lightStatus = getEntityData(vehicle, "v.rp.lights");
vehicle.lights = lightStatus;
}
if (doesEntityDataExist(vehicle, "agrp.invincible")) {
let invincible = getEntityData(vehicle, "agrp.invincible");
if (doesEntityDataExist(vehicle, "v.rp.invincible")) {
let invincible = getEntityData(vehicle, "v.rp.invincible");
element.setProofs(invincible, invincible, invincible, invincible, invincible);
}
if (doesEntityDataExist(vehicle, "agrp.panelStatus")) {
let panelsStatus = getEntityData(vehicle, "agrp.panelStatus");
if (doesEntityDataExist(vehicle, "v.rp.panelStatus")) {
let panelsStatus = getEntityData(vehicle, "v.rp.panelStatus");
for (let i in panelsStatus) {
vehicle.setPanelStatus(i, panelsStatus[i]);
}
}
if (doesEntityDataExist(vehicle, "agrp.wheelStatus")) {
let wheelsStatus = getEntityData(vehicle, "agrp.wheelStatus");
if (doesEntityDataExist(vehicle, "v.rp.wheelStatus")) {
let wheelsStatus = getEntityData(vehicle, "v.rp.wheelStatus");
for (let i in wheelsStatus) {
vehicle.setWheelStatus(i, wheelsStatus[i]);
}
}
if (doesEntityDataExist(vehicle, "agrp.lightStatus")) {
let lightStatus = getEntityData(vehicle, "agrp.lightStatus");
if (doesEntityDataExist(vehicle, "v.rp.lightStatus")) {
let lightStatus = getEntityData(vehicle, "v.rp.lightStatus");
for (let i in lightStatus) {
vehicle.setLightStatus(i, lightStatus[i]);
}
}
if (doesEntityDataExist(vehicle, "agrp.suspensionHeight")) {
let suspensionHeight = getEntityData(vehicle, "agrp.suspensionHeight");
if (doesEntityDataExist(vehicle, "v.rp.suspensionHeight")) {
let suspensionHeight = getEntityData(vehicle, "v.rp.suspensionHeight");
vehicle.setSuspensionHeight(suspensionHeight);
}
if (getGame() == AGRP_GAME_GTA_SA) {
if (getGame() == V_GAME_GTA_SA) {
let allUpgrades = getGameConfig().vehicleUpgrades[getGame()];
for (let i in allUpgrades) {
vehicle.removeUpgrade(i);
}
if (doesEntityDataExist(vehicle, "agrp.upgrades")) {
let upgrades = getEntityData(vehicle, "agrp.upgrades");
if (doesEntityDataExist(vehicle, "v.rp.upgrades")) {
let upgrades = getEntityData(vehicle, "v.rp.upgrades");
for (let i in upgrades) {
if (upgrades[i] != 0) {
vehicle.addUpgrade(upgrades[i]);
@@ -284,12 +283,12 @@ function syncVehicleProperties(vehicle) {
}
}
if (getGame() == AGRP_GAME_GTA_SA || getGame() == AGRP_GAME_GTA_IV) {
if (doesEntityDataExist(vehicle, "agrp.livery")) {
let livery = getEntityData(vehicle, "agrp.livery");
if (getGame() == AGRP_GAME_GTA_SA) {
if (getGame() == V_GAME_GTA_SA || getGame() == V_GAME_GTA_IV) {
if (doesEntityDataExist(vehicle, "v.rp.livery")) {
let livery = getEntityData(vehicle, "v.rp.livery");
if (getGame() == V_GAME_GTA_SA) {
vehicle.setPaintJob(livery);
} else if (getGame() == AGRP_GAME_GTA_IV) {
} else if (getGame() == V_GAME_GTA_IV) {
vehicle.livery = livery;
}
}
@@ -317,9 +316,9 @@ function doesEntityDataExist(entity, dataName) {
// ===========================================================================
function syncCivilianProperties(civilian) {
if (getGame() == AGRP_GAME_GTA_III) {
if (doesEntityDataExist(civilian, "agrp.scale")) {
let scaleFactor = getEntityData(civilian, "agrp.scale");
if (getGame() == V_GAME_GTA_III) {
if (doesEntityDataExist(civilian, "v.rp.scale")) {
let scaleFactor = getEntityData(civilian, "v.rp.scale");
let tempMatrix = civilian.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = civilian.position;
@@ -329,79 +328,79 @@ function syncCivilianProperties(civilian) {
}
}
if (getGame() == AGRP_GAME_GTA_SA) {
if (doesEntityDataExist(civilian, "agrp.fightStyle")) {
let fightStyle = getEntityData(civilian, "agrp.fightStyle");
if (getGame() == V_GAME_GTA_SA) {
if (doesEntityDataExist(civilian, "v.rp.fightStyle")) {
let fightStyle = getEntityData(civilian, "v.rp.fightStyle");
civilian.setFightStyle(fightStyle[0], fightStyle[1]);
}
}
if (getGame() == AGRP_GAME_GTA_III) {
if (doesEntityDataExist(civilian, "agrp.walkStyle")) {
let walkStyle = getEntityData(civilian, "agrp.walkStyle");
if (getGame() == V_GAME_GTA_III) {
if (doesEntityDataExist(civilian, "v.rp.walkStyle")) {
let walkStyle = getEntityData(civilian, "v.rp.walkStyle");
civilian.walkStyle = walkStyle;
}
}
if (getGame() == AGRP_GAME_GTA_IV) {
if (doesEntityDataExist(civilian, "agrp.bodyPropHair")) {
let bodyPropHair = getEntityData(civilian, "agrp.bodyPropHair");
if (getGame() == V_GAME_GTA_IV) {
if (doesEntityDataExist(civilian, "v.rp.bodyPropHair")) {
let bodyPropHair = getEntityData(civilian, "v.rp.bodyPropHair");
civilian.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropHead")) {
let bodyPropHead = getEntityData(civilian, "agrp.bodyPropHead");
if (doesEntityDataExist(civilian, "v.rp.bodyPropHead")) {
let bodyPropHead = getEntityData(civilian, "v.rp.bodyPropHead");
civilian.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(civilian, "agrp.bodyPropEyes");
if (doesEntityDataExist(civilian, "v.rp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(civilian, "v.rp.bodyPropEyes");
civilian.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(civilian, "agrp.bodyPropLeftHand");
if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(civilian, "v.rp.bodyPropLeftHand");
civilian.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(civilian, "agrp.bodyPropRightHand");
if (doesEntityDataExist(civilian, "v.rp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(civilian, "v.rp.bodyPropRightHand");
civilian.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(civilian, "agrp.bodyPropLeftWrist");
if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(civilian, "v.rp.bodyPropLeftWrist");
civilian.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
if (doesEntityDataExist(civilian, "v.rp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "v.rp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
if (doesEntityDataExist(civilian, "v.rp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "v.rp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropHip")) {
let bodyPropHip = getEntityData(civilian, "agrp.bodyPropHip");
if (doesEntityDataExist(civilian, "v.rp.bodyPropHip")) {
let bodyPropHip = getEntityData(civilian, "v.rp.bodyPropHip");
civilian.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(civilian, "agrp.bodyPropLeftFoot");
if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(civilian, "v.rp.bodyPropLeftFoot");
civilian.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(civilian, "agrp.bodyPropRightFoot");
if (doesEntityDataExist(civilian, "v.rp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(civilian, "v.rp.bodyPropRightFoot");
civilian.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
}
}
if (doesEntityDataExist(civilian, "agrp.anim")) {
let animData = getEntityData(vehicle, "agrp.anim");
if (doesEntityDataExist(civilian, "v.rp.anim")) {
let animData = getEntityData(vehicle, "v.rp.anim");
civilian.addAnimation(animData[0], animData[1]);
}
}
@@ -415,9 +414,9 @@ function preventDefaultEventAction(event) {
// ===========================================================================
function syncPlayerProperties(player) {
if (getGame() == AGRP_GAME_GTA_III) {
if (doesEntityDataExist(player, "agrp.scale")) {
let scaleFactor = getEntityData(player, "agrp.scale");
if (getGame() == V_GAME_GTA_III) {
if (doesEntityDataExist(player, "v.rp.scale")) {
let scaleFactor = getEntityData(player, "v.rp.scale");
let tempMatrix = player.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = player.position;
@@ -427,95 +426,95 @@ function syncPlayerProperties(player) {
}
}
if (getGame() == AGRP_GAME_GTA_SA) {
if (doesEntityDataExist(player, "agrp.fightStyle")) {
let fightStyle = getEntityData(player, "agrp.fightStyle");
if (getGame() == V_GAME_GTA_SA) {
if (doesEntityDataExist(player, "v.rp.fightStyle")) {
let fightStyle = getEntityData(player, "v.rp.fightStyle");
player.setFightStyle(fightStyle[0], fightStyle[1]);
}
}
//if(getGame() == AGRP_GAME_GTA_SA) {
// if(doesEntityDataExist(player, "agrp.walkStyle")) {
// let walkStyle = getEntityData(player, "agrp.walkStyle");
//if(getGame() == V_GAME_GTA_SA) {
// if(doesEntityDataExist(player, "v.rp.walkStyle")) {
// let walkStyle = getEntityData(player, "v.rp.walkStyle");
// player.walkStyle = walkStyle;
// }
//}
if (getGame() == AGRP_GAME_GTA_IV) {
if (doesEntityDataExist(player, "agrp.bodyPartHair")) {
let bodyPartHead = getEntityData(player, "agrp.bodyPartHair");
if (getGame() == V_GAME_GTA_IV) {
if (doesEntityDataExist(player, "v.rp.bodyPartHair")) {
let bodyPartHead = getEntityData(player, "v.rp.bodyPartHair");
player.changeBodyPart(0, bodyPartHead[0], bodyPartHair[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPartHead")) {
let bodyPartHead = getEntityData(player, "agrp.bodyPartHead");
if (doesEntityDataExist(player, "v.rp.bodyPartHead")) {
let bodyPartHead = getEntityData(player, "v.rp.bodyPartHead");
player.changeBodyPart(1, bodyPartHead[0], bodyPartHead[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPartUpper")) {
let bodyPartUpper = getEntityData(player, "agrp.bodyPartUpper");
if (doesEntityDataExist(player, "v.rp.bodyPartUpper")) {
let bodyPartUpper = getEntityData(player, "v.rp.bodyPartUpper");
player.changeBodyPart(1, bodyPartUpper[0], bodyPartUpper[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPartLower")) {
let bodyPartLower = getEntityData(player, "agrp.bodyPartLower");
if (doesEntityDataExist(player, "v.rp.bodyPartLower")) {
let bodyPartLower = getEntityData(player, "v.rp.bodyPartLower");
player.changeBodyPart(1, bodyPartLower[0], bodyPartLower[1]);
}
}
if (getGame() == AGRP_GAME_GTA_IV) {
if (doesEntityDataExist(player, "agrp.bodyPropHair")) {
let bodyPropHair = getEntityData(player, "agrp.bodyPropHair");
if (getGame() == V_GAME_GTA_IV) {
if (doesEntityDataExist(player, "v.rp.bodyPropHair")) {
let bodyPropHair = getEntityData(player, "v.rp.bodyPropHair");
player.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropHead")) {
let bodyPropHead = getEntityData(player, "agrp.bodyPropHead");
if (doesEntityDataExist(player, "v.rp.bodyPropHead")) {
let bodyPropHead = getEntityData(player, "v.rp.bodyPropHead");
player.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(player, "agrp.bodyPropEyes");
if (doesEntityDataExist(player, "v.rp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(player, "v.rp.bodyPropEyes");
player.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(player, "agrp.bodyPropLeftHand");
if (doesEntityDataExist(player, "v.rp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(player, "v.rp.bodyPropLeftHand");
player.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(player, "agrp.bodyPropRightHand");
if (doesEntityDataExist(player, "v.rp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(player, "v.rp.bodyPropRightHand");
player.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(player, "agrp.bodyPropLeftWrist");
if (doesEntityDataExist(player, "v.rp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(player, "v.rp.bodyPropLeftWrist");
player.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
if (doesEntityDataExist(player, "v.rp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "v.rp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
if (doesEntityDataExist(player, "v.rp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "v.rp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropHip")) {
let bodyPropHip = getEntityData(player, "agrp.bodyPropHip");
if (doesEntityDataExist(player, "v.rp.bodyPropHip")) {
let bodyPropHip = getEntityData(player, "v.rp.bodyPropHip");
player.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(player, "agrp.bodyPropLeftFoot");
if (doesEntityDataExist(player, "v.rp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(player, "v.rp.bodyPropLeftFoot");
player.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(player, "agrp.bodyPropRightFoot");
if (doesEntityDataExist(player, "v.rp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(player, "v.rp.bodyPropRightFoot");
player.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
}
}
@@ -524,9 +523,9 @@ function syncPlayerProperties(player) {
// ===========================================================================
function syncObjectProperties(object) {
if (getGame() == AGRP_GAME_GTA_III || getGame() == AGRP_GAME_GTA_VC) {
if (doesEntityDataExist(object, "agrp.scale")) {
let scaleFactor = getEntityData(object, "agrp.scale");
if (getGame() == V_GAME_GTA_III || getGame() == V_GAME_GTA_VC) {
if (doesEntityDataExist(object, "v.rp.scale")) {
let scaleFactor = getEntityData(object, "v.rp.scale");
let tempMatrix = object.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = object.position;
@@ -576,9 +575,9 @@ function getPlayerId(client) {
// ===========================================================================
function syncElementProperties(element) {
if (doesEntityDataExist(element, "agrp.interior")) {
if (doesEntityDataExist(element, "v.rp.interior")) {
if (typeof element.interior != "undefined") {
element.interior = getEntityData(element, "agrp.interior");
element.interior = getEntityData(element, "v.rp.interior");
}
}
@@ -628,21 +627,21 @@ function getScreenHeight() {
function openAllGarages() {
switch (getGame()) {
case AGRP_GAME_GTA_III:
case V_GAME_GTA_III:
for (let i = 0; i <= 26; i++) {
openGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
}
break;
case AGRP_GAME_GTA_VC:
case V_GAME_GTA_VC:
for (let i = 0; i <= 32; i++) {
openGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
}
break;
case AGRP_GAME_GTA_SA:
case V_GAME_GTA_SA:
for (let i = 0; i <= 44; i++) {
openGarage(i);
}
@@ -657,21 +656,21 @@ function openAllGarages() {
function closeAllGarages() {
switch (getGame()) {
case AGRP_GAME_GTA_III:
case V_GAME_GTA_III:
for (let i = 0; i <= 26; i++) {
closeGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
}
break;
case AGRP_GAME_GTA_VC:
case V_GAME_GTA_VC:
for (let i = 0; i <= 32; i++) {
closeGarage(i);
game.NO_SPECIAL_CAMERA_FOR_THIS_GARAGE(i);
}
break;
case AGRP_GAME_GTA_SA:
case V_GAME_GTA_SA:
for (let i = 0; i <= 44; i++) {
closeGarage(i);
}
@@ -691,7 +690,7 @@ function setPedInvincible(ped, state) {
// ===========================================================================
function setPedLookAt(ped, position) {
if (getGame() == AGRP_GAME_GTA_SA) {
if (getGame() == V_GAME_GTA_SA) {
ped.lookAt(position, 10000);
return true;
} else {
@@ -711,4 +710,24 @@ function deleteLocalPlayerPed() {
destroyElement(localPlayer);
}
// ===========================================================================
function setElementCollisionsEnabled(elementId, state) {
if (getElementFromId(elementId) == null) {
return false;
}
getElementFromId(elementId).collisionsEnabled = state;
}
// ===========================================================================
function getElementCollisionsEnabled(elementId, state) {
if (getElementFromId(elementId) == null) {
return false;
}
return getElementFromId(elementId).collisionsEnabled;
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: netevents.js
// DESC: Provides server communication and cross-endpoint network events
@@ -9,189 +8,204 @@
// ===========================================================================
function initNetworkEventsScript() {
logToConsole(LOG_DEBUG, "[AGRP.NetEvents]: Initializing server script ...");
logToConsole(LOG_DEBUG, "[AGRP.NetEvents]: Server script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.NetEvents]: Initializing server script ...");
logToConsole(LOG_DEBUG, "[V.RP.NetEvents]: Server script initialized!");
}
// ===========================================================================
function addAllNetworkHandlers() {
logToConsole(LOG_DEBUG, "[AGRP.Server]: Adding network handlers ...");
logToConsole(LOG_DEBUG, "[V.RP.Server]: Adding network handlers ...");
// Chat Box
addNetworkEventHandler("m", receiveChatBoxMessageFromServer); // Not prefixed with VRR to make it as small as possible
addNetworkEventHandler("agrp.chatScrollLines", setChatScrollLines);
addNetworkEventHandler("agrp.chatAutoHideDelay", setChatAutoHideDelay);
addNetworkEventHandler("agrp.chatTimeStamps", setChatTimeStampsState);
addNetworkEventHandler("agrp.chatEmoji", setChatEmojiState);
addNetworkEventHandler("v.rp.chatScrollLines", setChatScrollLines);
addNetworkEventHandler("v.rp.chatAutoHideDelay", setChatAutoHideDelay);
addNetworkEventHandler("v.rp.chatTimeStamps", setChatTimeStampsState);
addNetworkEventHandler("v.rp.chatEmoji", setChatEmojiState);
// Messaging (like textdraws and stuff)
addNetworkEventHandler("agrp.smallGameMessage", showSmallGameMessage);
addNetworkEventHandler("v.rp.smallGameMessage", showSmallGameMessage);
// Job
addNetworkEventHandler("agrp.job", receiveJobFromServer);
addNetworkEventHandler("agrp.working", setLocalPlayerWorkingState);
addNetworkEventHandler("agrp.jobType", setLocalPlayerJobType);
addNetworkEventHandler("agrp.showJobRouteLocation", showJobRouteLocation);
addNetworkEventHandler("agrp.hideJobRouteLocation", hideJobRouteLocation);
addNetworkEventHandler("v.rp.job", receiveJobFromServer);
addNetworkEventHandler("v.rp.removeJobs", removeJobsFromClient);
addNetworkEventHandler("v.rp.working", setLocalPlayerWorkingState);
addNetworkEventHandler("v.rp.jobType", setLocalPlayerJobType);
addNetworkEventHandler("v.rp.showJobRouteLocation", showJobRouteLocation);
addNetworkEventHandler("v.rp.hideJobRouteLocation", hideJobRouteLocation);
// Local player states and values
addNetworkEventHandler("agrp.restoreCamera", restoreLocalCamera);
addNetworkEventHandler("agrp.cameraLookAt", setLocalCameraLookAt);
addNetworkEventHandler("agrp.freeze", setLocalPlayerFrozenState);
addNetworkEventHandler("agrp.control", setLocalPlayerControlState);
addNetworkEventHandler("agrp.fadeCamera", fadeLocalCamera);
addNetworkEventHandler("agrp.removeFromVehicle", removeLocalPlayerFromVehicle);
addNetworkEventHandler("agrp.clearWeapons", clearLocalPlayerWeapons);
addNetworkEventHandler("agrp.giveWeapon", giveLocalPlayerWeapon);
addNetworkEventHandler("agrp.position", setLocalPlayerPosition);
addNetworkEventHandler("agrp.heading", setLocalPlayerHeading);
addNetworkEventHandler("agrp.interior", setLocalPlayerInterior);
addNetworkEventHandler("agrp.spawned", onServerSpawnedLocalPlayer);
addNetworkEventHandler("agrp.money", setLocalPlayerMoney);
addNetworkEventHandler("agrp.armour", setLocalPlayerArmour);
addNetworkEventHandler("agrp.localPlayerSkin", setLocalPlayerSkin);
addNetworkEventHandler("agrp.pedSpeak", makeLocalPlayerPedSpeak);
addNetworkEventHandler("agrp.infiniteRun", setLocalPlayerInfiniteRun);
addNetworkEventHandler("agrp.playerCop", setLocalPlayerAsCopState);
addNetworkEventHandler("agrp.health", setLocalPlayerHealth);
addNetworkEventHandler("agrp.wantedLevel", setLocalPlayerWantedLevel);
addNetworkEventHandler("agrp.playerPedId", sendLocalPlayerNetworkIdToServer);
addNetworkEventHandler("agrp.ped", setLocalPlayerPedPartsAndProps);
addNetworkEventHandler("agrp.spawn", serverRequestedLocalPlayerSpawn);
addNetworkEventHandler("agrp.clearPedState", clearLocalPedState);
addNetworkEventHandler("agrp.drunkEffect", setLocalPlayerDrunkEffect);
addNetworkEventHandler("agrp.deleteLocalPlayerPed", deleteLocalPlayerPed);
addNetworkEventHandler("v.rp.restoreCamera", restoreLocalCamera);
addNetworkEventHandler("v.rp.cameraLookAt", setLocalCameraLookAt);
addNetworkEventHandler("v.rp.freeze", setLocalPlayerFrozenState);
addNetworkEventHandler("v.rp.control", setLocalPlayerControlState);
addNetworkEventHandler("v.rp.fadeCamera", fadeLocalCamera);
addNetworkEventHandler("v.rp.removeFromVehicle", removeLocalPlayerFromVehicle);
addNetworkEventHandler("v.rp.clearWeapons", clearLocalPlayerWeapons);
addNetworkEventHandler("v.rp.giveWeapon", giveLocalPlayerWeapon);
addNetworkEventHandler("v.rp.position", setLocalPlayerPosition);
addNetworkEventHandler("v.rp.heading", setLocalPlayerHeading);
addNetworkEventHandler("v.rp.interior", setLocalPlayerInterior);
addNetworkEventHandler("v.rp.spawned", onServerSpawnedLocalPlayer);
addNetworkEventHandler("v.rp.money", setLocalPlayerMoney);
addNetworkEventHandler("v.rp.armour", setLocalPlayerArmour);
addNetworkEventHandler("v.rp.localPlayerSkin", setLocalPlayerSkin);
addNetworkEventHandler("v.rp.pedSpeak", makeLocalPlayerPedSpeak);
addNetworkEventHandler("v.rp.infiniteRun", setLocalPlayerInfiniteRun);
addNetworkEventHandler("v.rp.playerCop", setLocalPlayerAsCopState);
addNetworkEventHandler("v.rp.health", setLocalPlayerHealth);
addNetworkEventHandler("v.rp.wantedLevel", setLocalPlayerWantedLevel);
addNetworkEventHandler("v.rp.playerPedId", sendLocalPlayerNetworkIdToServer);
addNetworkEventHandler("v.rp.ped", setLocalPlayerPedPartsAndProps);
addNetworkEventHandler("v.rp.spawn", serverRequestedLocalPlayerSpawn);
addNetworkEventHandler("v.rp.clearPedState", clearLocalPedState);
addNetworkEventHandler("v.rp.drunkEffect", setLocalPlayerDrunkEffect);
addNetworkEventHandler("v.rp.deleteLocalPlayerPed", deleteLocalPlayerPed);
// Vehicle
addNetworkEventHandler("agrp.vehicle", receiveVehicleFromServer);
addNetworkEventHandler("agrp.veh.lights", setVehicleLights);
addNetworkEventHandler("agrp.veh.engine", setVehicleEngine);
addNetworkEventHandler("agrp.veh.repair", repairVehicle);
addNetworkEventHandler("agrp.cruiseControl", toggleLocalVehicleCruiseControl);
addNetworkEventHandler("agrp.passenger", enterVehicleAsPassenger);
addNetworkEventHandler("v.rp.vehicle", receiveVehicleFromServer);
addNetworkEventHandler("v.rp.removeVehicles", removeVehiclesFromClient);
addNetworkEventHandler("v.rp.veh.lights", setVehicleLights);
addNetworkEventHandler("v.rp.veh.engine", setVehicleEngine);
addNetworkEventHandler("v.rp.veh.repair", repairVehicle);
addNetworkEventHandler("v.rp.cruiseControl", toggleLocalVehicleCruiseControl);
addNetworkEventHandler("v.rp.passenger", enterVehicleAsPassenger);
addNetworkEventHandler("v.rp.vehBuyState", setVehiclePurchaseState);
// Radio
addNetworkEventHandler("agrp.radioStream", playStreamingRadio);
addNetworkEventHandler("agrp.audioFileStream", playAudioFile);
addNetworkEventHandler("agrp.stopRadioStream", stopStreamingRadio);
addNetworkEventHandler("agrp.radioVolume", setStreamingRadioVolume);
addNetworkEventHandler("v.rp.radioStream", playStreamingRadio);
addNetworkEventHandler("v.rp.audioFileStream", playAudioFile);
addNetworkEventHandler("v.rp.stopRadioStream", stopStreamingRadio);
addNetworkEventHandler("v.rp.radioVolume", setStreamingRadioVolume);
// Key Bindings
addNetworkEventHandler("agrp.delKeyBind", unBindAccountKey);
addNetworkEventHandler("agrp.addKeyBind", bindAccountKey);
addNetworkEventHandler("agrp.clearKeyBinds", clearKeyBinds);
addNetworkEventHandler("v.rp.delKeyBind", unBindAccountKey);
addNetworkEventHandler("v.rp.addKeyBind", bindAccountKey);
addNetworkEventHandler("v.rp.clearKeyBinds", clearKeyBinds);
// Weapon Damage
addNetworkEventHandler("agrp.weaponDamageEnabled", setPlayerWeaponDamageEnabled);
addNetworkEventHandler("agrp.weaponDamageEvent", setPlayerWeaponDamageEvent);
addNetworkEventHandler("v.rp.weaponDamageEnabled", setPlayerWeaponDamageEnabled);
addNetworkEventHandler("v.rp.weaponDamageEvent", setPlayerWeaponDamageEvent);
// GUI
addNetworkEventHandler("agrp.showRegistration", showRegistrationGUI);
addNetworkEventHandler("agrp.showNewCharacter", showNewCharacterGUI);
addNetworkEventHandler("agrp.showLogin", showLoginGUI);
addNetworkEventHandler("agrp.2fa", showTwoFactorAuthGUI);
addNetworkEventHandler("agrp.showResetPasswordCodeInput", resetPasswordCodeInputGUI);
addNetworkEventHandler("agrp.showResetPasswordEmailInput", resetPasswordEmailInputGUI);
addNetworkEventHandler("agrp.showChangePassword", showChangePasswordGUI);
addNetworkEventHandler("agrp.showCharacterSelect", showCharacterSelectGUI);
addNetworkEventHandler("agrp.switchCharacterSelect", switchCharacterSelectGUI);
addNetworkEventHandler("agrp.showError", showErrorGUI);
addNetworkEventHandler("agrp.showInfo", showInfoGUI);
addNetworkEventHandler("agrp.showPrompt", showYesNoPromptGUI);
addNetworkEventHandler("agrp.loginSuccess", loginSuccess);
addNetworkEventHandler("agrp.characterSelectSuccess", characterSelectSuccess);
addNetworkEventHandler("agrp.loginFailed", loginFailed);
addNetworkEventHandler("agrp.registrationSuccess", registrationSuccess);
addNetworkEventHandler("agrp.registrationFailed", registrationFailed);
addNetworkEventHandler("agrp.newCharacterFailed", newCharacterFailed);
addNetworkEventHandler("agrp.changePassword", showChangePasswordGUI);
addNetworkEventHandler("agrp.showLocaleChooser", showLocaleChooserGUI);
addNetworkEventHandler("agrp.guiColour", setGUIColours);
addNetworkEventHandler("agrp.mapChangeWarning", setMapChangeWarningState);
addNetworkEventHandler("v.rp.showRegistration", showRegistrationGUI);
addNetworkEventHandler("v.rp.showNewCharacter", showNewCharacterGUI);
addNetworkEventHandler("v.rp.showLogin", showLoginGUI);
addNetworkEventHandler("v.rp.2fa", showTwoFactorAuthGUI);
addNetworkEventHandler("v.rp.showResetPasswordCodeInput", resetPasswordCodeInputGUI);
addNetworkEventHandler("v.rp.showResetPasswordEmailInput", resetPasswordEmailInputGUI);
addNetworkEventHandler("v.rp.showChangePassword", showChangePasswordGUI);
addNetworkEventHandler("v.rp.showCharacterSelect", showCharacterSelectGUI);
addNetworkEventHandler("v.rp.switchCharacterSelect", switchCharacterSelectGUI);
addNetworkEventHandler("v.rp.showError", showErrorGUI);
addNetworkEventHandler("v.rp.showInfo", showInfoGUI);
addNetworkEventHandler("v.rp.showPrompt", showYesNoPromptGUI);
addNetworkEventHandler("v.rp.loginSuccess", loginSuccess);
addNetworkEventHandler("v.rp.characterSelectSuccess", characterSelectSuccess);
addNetworkEventHandler("v.rp.loginFailed", loginFailed);
addNetworkEventHandler("v.rp.registrationSuccess", registrationSuccess);
addNetworkEventHandler("v.rp.registrationFailed", registrationFailed);
addNetworkEventHandler("v.rp.newCharacterFailed", newCharacterFailed);
addNetworkEventHandler("v.rp.changePassword", showChangePasswordGUI);
addNetworkEventHandler("v.rp.showLocaleChooser", showLocaleChooserGUI);
addNetworkEventHandler("v.rp.guiColour", setGUIColours);
addNetworkEventHandler("v.rp.mapChangingSoon", setMapChangeWarningState);
// 2D Rendering
addNetworkEventHandler("agrp.set2DRendering", set2DRendering);
addNetworkEventHandler("agrp.logo", setServerLogoRenderState);
addNetworkEventHandler("agrp.showItemActionDelay", showItemActionDelay);
addNetworkEventHandler("v.rp.set2DRendering", set2DRendering);
addNetworkEventHandler("v.rp.logo", setServerLogoRenderState);
addNetworkEventHandler("v.rp.showItemActionDelay", showItemActionDelay);
// Business
addNetworkEventHandler("agrp.business", receiveBusinessFromServer);
addNetworkEventHandler("v.rp.business", receiveBusinessFromServer);
addNetworkEventHandler("v.rp.removeBusinesses", removeBusinessesFromClient);
// House
addNetworkEventHandler("agrp.house", receiveHouseFromServer);
addNetworkEventHandler("v.rp.house", receiveHouseFromServer);
addNetworkEventHandler("v.rp.removeHouses", removeHousesFromClient);
// GPS
addNetworkEventHandler("agrp.showGPSBlip", showGPSLocation);
addNetworkEventHandler("v.rp.showGPSBlip", showGPSLocation);
// Locale
addNetworkEventHandler("agrp.locale", setLocale);
addNetworkEventHandler("agrp.localeChooser", toggleLocaleChooserGUI);
addNetworkEventHandler("v.rp.locale", setLocale);
addNetworkEventHandler("v.rp.localeChooser", toggleLocaleChooserGUI);
// Animation
addNetworkEventHandler("agrp.anim", makePedPlayAnimation);
addNetworkEventHandler("agrp.stopAnim", makePedStopAnimation);
addNetworkEventHandler("agrp.forceAnim", forcePedAnimation);
addNetworkEventHandler("v.rp.anim", makePedPlayAnimation);
addNetworkEventHandler("v.rp.stopAnim", makePedStopAnimation);
addNetworkEventHandler("v.rp.forceAnim", forcePedAnimation);
// Nametags
addNetworkEventHandler("agrp.nametag", updatePlayerNameTag);
addNetworkEventHandler("agrp.nametagDistance", setNameTagDistance);
addNetworkEventHandler("v.rp.nametag", updatePlayerNameTag);
addNetworkEventHandler("v.rp.nametagDistance", setNameTagDistance);
// PayPhones
addNetworkEventHandler("v.rp.payPhone", receivePayPhoneFromServer);
addNetworkEventHandler("v.rp.payPhoneState", receivePayPhoneStateFromServer);
addNetworkEventHandler("v.rp.removePayPhones", removePayPhonesFromClient);
addNetworkEventHandler("v.rp.payPhoneDial", payPhoneDial);
addNetworkEventHandler("v.rp.payPhoneHangup", payPhoneHangup);
addNetworkEventHandler("v.rp.payPhonePickup", payPhonePickup);
// Misc
addNetworkEventHandler("agrp.mouseCursor", toggleMouseCursor);
addNetworkEventHandler("agrp.mouseCamera", toggleMouseCamera);
addNetworkEventHandler("agrp.clearPeds", clearLocalPlayerOwnedPeds);
addNetworkEventHandler("agrp.clearPickups", clearLocalPlayerOwnedPickups);
addNetworkEventHandler("agrp.ambience", setCityAmbienceState);
addNetworkEventHandler("agrp.runCode", runClientCode);
addNetworkEventHandler("agrp.minuteDuration", setMinuteDuration);
addNetworkEventHandler("agrp.snow", setSnowState);
addNetworkEventHandler("agrp.enterPropertyKey", setEnterPropertyKey);
addNetworkEventHandler("agrp.skinSelect", toggleSkinSelect);
addNetworkEventHandler("agrp.hotbar", updatePlayerHotBar);
addNetworkEventHandler("agrp.mouseCameraForce", setMouseCameraState);
addNetworkEventHandler("agrp.logLevel", setLogLevel);
addNetworkEventHandler("agrp.hideAllGUI", hideAllGUI);
addNetworkEventHandler("agrp.ping", updatePlayerPing);
addNetworkEventHandler("agrp.clientInfo", serverRequestedClientInfo);
addNetworkEventHandler("agrp.interiorLights", updateInteriorLightsState);
addNetworkEventHandler("agrp.scene", changeScene);
addNetworkEventHandler("agrp.syncElement", forceSyncElementProperties);
addNetworkEventHandler("agrp.elementPosition", setElementPosition);
addNetworkEventHandler("agrp.elementCollisions", setElementCollisionsEnabled);
addNetworkEventHandler("agrp.vehBuyState", setVehiclePurchaseState);
addNetworkEventHandler("agrp.holdObject", makePedHoldObject);
addNetworkEventHandler("agrp.profanityFilter", setProfanityFilterState);
addNetworkEventHandler("agrp.currencyString", receiveCurrencyStringFromServer);
addNetworkEventHandler("v.rp.mouseCursor", toggleMouseCursor);
addNetworkEventHandler("v.rp.mouseCamera", toggleMouseCamera);
addNetworkEventHandler("v.rp.mouseCameraForce", setMouseCameraState);
addNetworkEventHandler("v.rp.clearPeds", clearLocalPlayerOwnedPeds);
addNetworkEventHandler("v.rp.clearPickups", clearLocalPlayerOwnedPickups);
addNetworkEventHandler("v.rp.ambience", setCityAmbienceState);
addNetworkEventHandler("v.rp.runCode", runClientCode);
addNetworkEventHandler("v.rp.minuteDuration", setMinuteDuration);
addNetworkEventHandler("v.rp.snow", setSnowState);
addNetworkEventHandler("v.rp.enterPropertyKey", setEnterPropertyKey);
addNetworkEventHandler("v.rp.scoreBoardKey", setScoreBoardKey);
addNetworkEventHandler("v.rp.skinSelect", toggleSkinSelect);
addNetworkEventHandler("v.rp.hotbar", updatePlayerHotBar);
addNetworkEventHandler("v.rp.logLevel", setLogLevel);
addNetworkEventHandler("v.rp.hideAllGUI", hideAllGUI);
addNetworkEventHandler("v.rp.ping", updatePlayerPing);
addNetworkEventHandler("v.rp.clientInfo", serverRequestedClientInfo);
addNetworkEventHandler("v.rp.interiorLights", updateInteriorLightsState);
addNetworkEventHandler("v.rp.scene", changeScene);
addNetworkEventHandler("v.rp.syncElement", forceSyncElementProperties);
addNetworkEventHandler("v.rp.elementPosition", setElementPosition);
addNetworkEventHandler("v.rp.elementCollisions", setElementCollisionsEnabled);
addNetworkEventHandler("v.rp.holdObject", makePedHoldObject);
addNetworkEventHandler("v.rp.profanityFilter", setProfanityFilterState);
addNetworkEventHandler("v.rp.currencyString", receiveCurrencyStringFromServer);
addNetworkEventHandler("v.rp.token", serverRequestedToken);
addNetworkEventHandler("v.rp.incomingDamageMultiplier", setIncomingDamageMultiplier);
}
// ===========================================================================
function sendResourceReadySignalToServer() {
sendNetworkEventToServer("agrp.clientReady");
sendNetworkEventToServer("v.rp.clientReady");
}
// ===========================================================================
function sendResourceStartedSignalToServer() {
sendNetworkEventToServer("agrp.clientStarted");
sendNetworkEventToServer("v.rp.clientStarted");
}
// ===========================================================================
function sendResourceStoppedSignalToServer() {
if (isConnected) {
sendNetworkEventToServer("agrp.clientStopped");
sendNetworkEventToServer("v.rp.clientStopped");
}
}
// ===========================================================================
function set2DRendering(hudState, labelState, smallGameMessageState, scoreboardState, hotBarState, itemActionDelayState) {
logToConsole(LOG_DEBUG, `[AGRP.Main] Updating render states (HUD: ${hudState}, Labels: ${labelState}, Bottom Text: ${smallGameMessageState}, Scoreboard: ${scoreboardState}, HotBar: ${hotBarState}, Item Action Delay: ${itemActionDelayState})`);
logToConsole(LOG_DEBUG, `[V.RP.Main] Updating render states (HUD: ${hudState}, Labels: ${labelState}, Bottom Text: ${smallGameMessageState}, Scoreboard: ${scoreboardState}, HotBar: ${hotBarState}, Item Action Delay: ${itemActionDelayState})`);
renderHUD = hudState;
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
natives.displayCash(hudState);
natives.displayAmmo(hudState);
natives.displayHud(hudState);
@@ -213,9 +227,10 @@ function set2DRendering(hudState, labelState, smallGameMessageState, scoreboardS
// ===========================================================================
function onServerSpawnedLocalPlayer(state) {
logToConsole(LOG_DEBUG, `[AGRP.Main] Setting spawned state to ${state}`);
logToConsole(LOG_DEBUG, `[V.RP.Main] Setting spawned state to ${state}`);
isSpawned = state;
setUpInitialGame();
calledDeathEvent = false;
if (state) {
setTimeout(function () {
calledDeathEvent = false;
@@ -238,19 +253,19 @@ function onServerSpawnedLocalPlayer(state) {
// ===========================================================================
function tellServerPlayerUsedKeyBind(key) {
sendNetworkEventToServer("agrp.useKeyBind", key);
sendNetworkEventToServer("v.rp.useKeyBind", key);
}
// ===========================================================================
function tellServerPlayerArrivedAtJobRouteLocation() {
sendNetworkEventToServer("agrp.arrivedAtJobRouteLocation");
sendNetworkEventToServer("v.rp.arrivedAtJobRouteLocation");
}
// ===========================================================================
function tellServerItemActionDelayComplete() {
sendNetworkEventToServer("agrp.itemActionDelayComplete");
sendNetworkEventToServer("v.rp.itemActionDelayComplete");
}
// ===========================================================================
@@ -260,13 +275,13 @@ function sendServerClientInfo() {
if (typeof CLIENT_VERSION_MAJOR != "undefined") {
clientVersion = `${CLIENT_VERSION_MAJOR}.${CLIENT_VERSION_MINOR}.${CLIENT_VERSION_PATCH}.${CLIENT_VERSION_BUILD}`;
}
sendNetworkEventToServer("agrp.clientInfo", clientVersion, game.width, game.height);
sendNetworkEventToServer("v.rp.clientInfo", clientVersion, game.width, game.height);
}
// ===========================================================================
function sendServerNewAFKStatus(state) {
sendNetworkEventToServer("agrp.afk", state);
sendNetworkEventToServer("v.rp.afk", state);
}
// ===========================================================================
@@ -278,7 +293,11 @@ function anchorBoat(vehicleId) {
// ===========================================================================
function setEnterPropertyKey(key) {
enterPropertyKey = key;
if (key == -1) {
enterPropertyKey = null;
} else {
enterPropertyKey = toInteger(key);
}
}
// ===========================================================================
@@ -305,16 +324,6 @@ function forceSyncElementProperties(elementId) {
// ===========================================================================
function setElementCollisionsEnabled(elementId, state) {
if (getElementFromId(elementId) == null) {
return false;
}
getElementFromId(elementId).collisionsEnabled = state;
}
// ===========================================================================
function setLocalPlayerArmour(armour) {
if (typeof localPlayer.armour != "undefined") {
localPlayer.armour = armour;
@@ -337,7 +346,7 @@ function setLogLevel(level) {
function setLocalPlayerInfiniteRun(state) {
if (localPlayer != null) {
if (getGame() == AGRP_GAME_GTA_III || getGame() == AGRP_GAME_GTA_VC) {
if (getGame() == V_GAME_GTA_III || getGame() == V_GAME_GTA_VC) {
game.SET_PLAYER_NEVER_GETS_TIRED(game.GET_PLAYER_ID(), boolToInt(state));
}
}
@@ -346,8 +355,8 @@ function setLocalPlayerInfiniteRun(state) {
// ===========================================================================
function setLocalPlayerSkin(skinId) {
logToConsole(LOG_INFO, `[AGRP.Server] Setting locale player skin to ${skinId}`);
if (getGame() == AGRP_GAME_GTA_IV) {
logToConsole(LOG_INFO, `[V.RP.Server] Setting locale player skin to ${skinId}`);
if (getGame() == V_GAME_GTA_IV) {
if (natives.isModelInCdimage(skinId)) {
natives.requestModel(skinId);
natives.loadAllObjectsNow();
@@ -363,7 +372,7 @@ function setLocalPlayerSkin(skinId) {
// ===========================================================================
function makePedHoldObject(pedId, modelIndex) {
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
natives.givePedAmbientObject(natives.getPedFromNetworkId(pedId), getGameConfig().objects[getGame()][modelIndex][1])
}
}
@@ -371,15 +380,15 @@ function makePedHoldObject(pedId, modelIndex) {
// ===========================================================================
function sendLocalPlayerNetworkIdToServer() {
if (getGame() == AGRP_GAME_GTA_IV || getGame() == AGRP_GAME_GTA_IV_EFLC) {
sendNetworkEventToServer("agrp.playerPedId", natives.getNetworkIdFromPed(localPlayer));
if (getGame() == V_GAME_GTA_IV || getGame() == V_GAME_GTA_IV_EFLC) {
sendNetworkEventToServer("v.rp.playerPedId", natives.getNetworkIdFromPed(localPlayer));
}
}
// ===========================================================================
function changeScene(sceneName) {
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
if (cutsceneName == "") {
natives.clearCutscene();
} else {
@@ -388,15 +397,25 @@ function changeScene(sceneName) {
}
natives.initCutscene(cutsceneName);
}
} else if (getGame() == AGRP_GAME_MAFIA_ONE) {
game.changeMap(sceneName);
} else if (getGame() == V_GAME_MAFIA_ONE) {
renderHUD = false;
renderHotBar = false;
renderInteriorLights = false;
renderItemActionDelay = false;
renderLabels = false;
renderLogo = false;
renderScoreBoard = false;
renderSmallGameMessage = false;
setTimeout(function () {
game.changeMap(sceneName, false);
}, 250);
}
}
// ===========================================================================
function makeLocalPlayerPedSpeak(speechName) {
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
// if player is in vehicle, allow megaphone (if last arg is "1", it will cancel megaphone echo)
// Only speeches with _MEGAPHONE will have the bullhorn effect
// Afaik it only works on police voices anyway
@@ -405,7 +424,7 @@ function makeLocalPlayerPedSpeak(speechName) {
} else {
natives.sayAmbientSpeech(localPlayer, speechName, true, false, 1);
}
} else if (getGame() == AGRP_GAME_GTA_III || getGame() == AGRP_GAME_GTA_VC) {
} else if (getGame() == V_GAME_GTA_III || getGame() == V_GAME_GTA_VC) {
// Don't have a way to get the ped ref ID and can't use ped in arg
//game.SET_CHAR_SAY(game.GET_PLAYER_ID(), int);
}
@@ -414,7 +433,7 @@ function makeLocalPlayerPedSpeak(speechName) {
// ===========================================================================
function setLocalPlayerAsCopState(state) {
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
natives.setPlayerAsCop(natives.getPlayerId(), state);
natives.setPoliceIgnorePlayer(natives.getPlayerId(), state);
}
@@ -423,7 +442,7 @@ function setLocalPlayerAsCopState(state) {
// ===========================================================================
function serverRequestedLocalPlayerSpawn(skinId, position) {
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
natives.createPlayer(skinId, position);
//if(isCustomCameraSupported()) {
// game.restoreCamera(true);
@@ -434,7 +453,7 @@ function serverRequestedLocalPlayerSpawn(skinId, position) {
// ===========================================================================
function sendLocaleSelectToServer(localeId) {
sendNetworkEventToServer("agrp.localeSelect", localeId);
sendNetworkEventToServer("v.rp.localeSelect", localeId);
}
// ===========================================================================
@@ -454,8 +473,9 @@ function receiveCurrencyStringFromServer(newCurrencyString) {
// ===========================================================================
function setMapChangeWarningState(state) {
function setMapChangeWarningState(state, changeToNight) {
mapChangeWarning = state;
mapChangeToNight = changeToNight;
}
// ===========================================================================
@@ -470,4 +490,17 @@ function receiveClientVariablesFromServer(clientVariablesString) {
serverData.cvars = JSON.parse(clientVariablesString);
}
// ===========================================================================
function serverRequestedToken() {
let token = loadToken();
sendNetworkEventToServer("v.rp.token", token);
}
// ===========================================================================
function setIncomingDamageMultiplier(tempMultiplier) {
weaponDamageMultiplier = tempMultiplier;
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: npc.js
// DESC: Provides NPC functions and processing
@@ -10,7 +9,7 @@
function processNPCMovement(npc) {
//if(npc.isSyncer == true) {
if (getEntityData(npc, "agrp.lookAtClosestPlayer") == true) {
if (getEntityData(npc, "v.rp.lookAtClosestPlayer") == true) {
let closestPlayer = getClosestPlayer(getElementPosition(npc.id));
setPedLookAt(npc, getElementPosition(closestPlayer.id));
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: object.js
// DESC: Provides object functions and processing
@@ -20,7 +19,7 @@ function startMovingObject(object) {
function stopMovingObject(object, save = true) {
if (save) {
sendNetworkEventToServer("agrp.objectSave", object.id, object.position, object.rotation);
sendNetworkEventToServer("v.rp.objectSave", object.id, object.position, object.rotation);
}
}

252
scripts/client/payphone.js Normal file
View File

@@ -0,0 +1,252 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: payphone.js
// DESC: Provides payphone functions and processing
// TYPE: Client (JavaScript)
// ===========================================================================
let payPhoneMaxAudibleDistance = 75;
let payPhoneRingMaxVolume = 50;
let payPhoneRingingIndicatorImage = null;
let payPhoneRingingIndicatorImagePath = "files/images/payphone-ringing.png";
// Will be unnecessary once MafiaC has game sound playback in scripting
let payPhoneRingingSound = null;
let payPhoneDialingSound = null;
let payPhonePickupSound = null;
let payPhoneHangupSound = null;
let payPhoneRingingSoundFilePath = "files/sounds/payphone/old-payphone-ring.mp3";
let payPhoneDialingSoundFilePath = "files/sounds/payphone/old-payphone-dial.mp3";
let payPhonePickupSoundFilePath = "files/sounds/payphone/old-payphone-pickup.mp3";
let payPhoneHangupSoundFilePath = "files/sounds/payphone/old-payphone-hangup.mp3";
let ringingPayPhone = -1;
// ===========================================================================
class PayPhoneData {
constructor(payPhoneId, state, position) {
this.index = -1;
this.payPhoneId = payPhoneId;
this.position = position;
this.state = state;
}
}
// ===========================================================================
function initPayPhoneScript() {
logToConsole(LOG_DEBUG, "[V.RP.PayPhone]: Initializing payphone script ...");
//payPhoneRingingIndicatorImage = loadPayPhoneRingingIndicatorImage();
payPhoneRingingSound = loadPayPhoneRingingSound();
payPhoneDialingSound = loadPayPhoneDialingSound();
payPhonePickupSound = loadPayPhonePickupSound();
payPhoneHangupSound = loadPayPhoneHangupSound();
logToConsole(LOG_DEBUG, "[V.RP.PayPhone]: Payphone script initialized!");
}
// ===========================================================================
function loadPayPhoneRingingIndicatorImage() {
let imageStream = openFile(payPhoneRingingIndicatorImagePath);
let tempImage = null;
if (imageStream != null) {
tempImage = graphics.loadPNG(imageStream);
imageStream.close();
}
return tempImage;
}
// ===========================================================================
function loadPayPhoneRingingSound() {
let soundStream = openFile(payPhoneRingingSoundFilePath);
let tempSound = null;
if (soundStream != null) {
tempSound = audio.createSound(soundStream, true);
soundStream.close();
}
return tempSound;
}
// ===========================================================================
function loadPayPhoneDialingSound() {
let soundStream = openFile(payPhoneDialingSoundFilePath);
let tempSound = null;
if (soundStream != null) {
tempSound = audio.createSound(soundStream, false);
soundStream.close();
}
if (tempSound != null) {
tempSound.volume = 1.0;
}
return tempSound;
}
// ===========================================================================
function loadPayPhonePickupSound() {
let soundStream = openFile(payPhonePickupSoundFilePath);
let tempSound = null;
if (soundStream != null) {
tempSound = audio.createSound(soundStream, false);
soundStream.close();
}
if (tempSound != null) {
tempSound.volume = 1.0;
}
return tempSound;
}
// ===========================================================================
function loadPayPhoneHangupSound() {
let soundStream = openFile(payPhoneHangupSoundFilePath);
let tempSound = null;
if (soundStream != null) {
tempSound = audio.createSound(soundStream, false);
soundStream.close();
}
if (tempSound != null) {
tempSound.volume = 1.0;
}
return tempSound;
}
// ===========================================================================
function processPayPhonesDistance() {
let tempRingingPhone = -1;
for (let i in getServerData().payPhones) {
if (getServerData().payPhones[i].state == V_PAYPHONE_STATE_RINGING) {
if (getDistance(getLocalPlayerPosition(), getServerData().payPhones[i].position) <= payPhoneMaxAudibleDistance) {
if (tempRingingPhone != -1) {
if (getDistance(getLocalPlayerPosition(), getServerData().payPhones[i].position) <= getDistance(getLocalPlayerPosition(), getServerData().payPhones[tempRingingPhone].position)) {
tempRingingPhone = i;
}
} else {
tempRingingPhone = i;
}
}
}
}
if (tempRingingPhone == -1) {
logToConsole(LOG_VERBOSE, "[V.RP.PayPhone]: No phones are ringing, stopping all ring sounds");
payPhoneRingingSound.stop();
} else {
let distance = getDistance(getLocalPlayerPosition(), getServerData().payPhones[tempRingingPhone].position);
let distancePercent = (payPhoneRingMaxVolume - (distance * 100 / payPhoneMaxAudibleDistance));
payPhoneRingingSound.volume = distancePercent / 100;
if (ringingPayPhone == -1) {
logToConsole(LOG_VERBOSE, "[V.RP.PayPhone]: No previous phone ringing, starting ring sound");
payPhoneRingingSound.play();
}
}
ringingPayPhone = tempRingingPhone;
}
// ===========================================================================
function receivePayPhoneFromServer(payPhoneId, isDeleted, state, position) {
logToConsole(LOG_DEBUG, `[V.RP.PayPhone] Received payphone ${payPhoneId} from server`);
if (!areServerElementsSupported() || getGame() == V_GAME_MAFIA_ONE || getGame() == V_GAME_GTA_IV) {
if (isDeleted == true) {
getServerData().payPhones.splice(payPhoneId, 1);
return false;
}
if (getPayPhoneData(payPhoneId) != false) {
logToConsole(LOG_DEBUG, `[V.RP.PayPhone] Payphone ${payPhoneId} already exists. Updating ...`);
let payPhoneData = getPayPhoneData(payPhoneId);
payPhoneData.state = state;
payPhoneData.position = position;
} else {
logToConsole(LOG_DEBUG, `[V.RP.PayPhone] Payphone ${payPhoneId} doesn't exist. Adding ...`);
let tempPayPhoneData = new PayPhoneData(payPhoneId, state, position);
getServerData().payPhones.push(tempPayPhoneData);
}
}
}
// ===========================================================================
function receivePayPhoneStateFromServer(payPhoneId, state) {
logToConsole(LOG_DEBUG, `[V.RP.PayPhone] Received payphone ${payPhoneId} state (${state}) from server`);
if (payPhoneId != -1) {
if (getPayPhoneData(payPhoneId) == false) {
return false;
}
getPayPhoneData(payPhoneId).state = state;
} else {
for (let i in getServerData().payPhones) {
getServerData().payPhones[i].state = state;
}
}
}
// ===========================================================================
/**
* @param {number} payPhoneId - The ID of the payphone (initially provided by server)
* @return {PayPhoneData} The payphone's data (class instance)
*/
function getPayPhoneData(payPhoneId) {
if (payPhoneId == -1) {
return false;
}
for (let i in getServerData().payPhones) {
if (getServerData().payPhones[i].payPhoneId == payPhoneId) {
return getServerData().payPhones[i];
}
}
return false;
}
// ===========================================================================
function removePayPhonesFromClient() {
clearArray(getServerData().payPhones);
}
// ===========================================================================
function payPhoneDial() {
logToConsole(LOG_DEBUG, "[V.RP.PayPhone]: Playing payphone dial sound");
payPhoneDialingSound.play();
}
// ===========================================================================
function payPhoneHangup() {
logToConsole(LOG_DEBUG, "[V.RP.PayPhone]: Playing payphone hangup sound");
payPhoneHangupSound.play();
}
// ===========================================================================
function payPhonePickup() {
logToConsole(LOG_DEBUG, "[V.RP.PayPhone]: Playing payphone pickup sound");
payPhonePickupSound.play();
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: radio.js
// DESC: Provides internet streaming radio functions and usage

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: scoreboard.js
// DESC: Provides scoreboard features and rendering
@@ -13,15 +12,15 @@ let scoreBoardListFont = null;
let pausedColour = COLOUR_RED;
let scoreboardKey = SDLK_TAB;
let scoreBoardKey = null;
// ===========================================================================
function initScoreBoardScript() {
logToConsole(LOG_DEBUG, "[AGRP.ScoreBoard]: Initializing scoreboard script ...");
logToConsole(LOG_DEBUG, "[V.RP.ScoreBoard]: Initializing scoreboard script ...");
scoreBoardTitleFont = initScoreBoardTitleFont();
scoreBoardListFont = initScoreBoardListFont();
logToConsole(LOG_DEBUG, "[AGRP.ScoreBoard]: Scoreboard script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.ScoreBoard]: Scoreboard script initialized!");
}
// ===========================================================================
@@ -39,67 +38,97 @@ function initScoreBoardListFont() {
// ===========================================================================
function processScoreBoardRendering() {
if (isAnyGUIActive()) {
if (!renderScoreBoard) {
logToConsole(LOG_VERBOSE | LOG_ERROR, `[V.RP.ScoreBoard] Could not render scoreboard. Scoreboard rendering is disabled!`);
return false;
}
if (renderScoreBoard) {
if (isKeyDown(SDLK_TAB)) {
if (scoreBoardListFont != null && scoreBoardTitleFont != null) {
let scoreboardStart = (game.height / 2) - (Math.floor(getClients().length / 2) * 20);
let titleSize = scoreBoardTitleFont.measure("PLAYERS", game.width, 0.0, 1.0, 10, false, false);
scoreBoardTitleFont.render("PLAYERS", [game.width / 2, scoreboardStart - 50], 0, 0.5, 0.0, scoreBoardTitleFont.size, COLOUR_WHITE, false, false, false, true);
if (scoreBoardListFont == null) {
logToConsole(LOG_VERBOSE | LOG_ERROR, `[V.RP.ScoreBoard] Could not render scoreboard. List font is null!`);
return false;
}
titleSize = scoreBoardTitleFont.measure("____________________________", game.width, 0.0, 1.0, 10, false, false);
scoreBoardTitleFont.render("____________________________", [game.width / 2, scoreboardStart - 35], 0, 0.5, 0.0, scoreBoardTitleFont.size, COLOUR_WHITE, false, false, false, true);
if (scoreBoardTitleFont == null) {
logToConsole(LOG_VERBOSE | LOG_ERROR, `[V.RP.ScoreBoard] Could not render scoreboard. Title font is null!`);
return false;
}
let clients = getClients();
for (let i in clients) {
if (!clients[i].console) {
let name = clients[i].name;
let colour = COLOUR_WHITE;
let paused = false;
let ping = "-1";
if (isAnyGUIActive()) {
logToConsole(LOG_VERBOSE | LOG_ERROR, `[V.RP.ScoreBoard] Could not render scoreboard. A GUI window is active!`);
return false;
}
if (typeof playerNames[clients[i].name] != "undefined") {
name = playerNames[clients[i].name];
}
if (scoreBoardKey == null) {
return false;
}
if (typeof playerPaused[clients[i].name] != "undefined") {
paused = playerPaused[clients[i].name];
}
if (!isKeyDown(scoreBoardKey)) {
return false;
}
if (typeof playerColours[clients[i].name] != "undefined") {
colour = playerColours[clients[i].name];
}
let scoreboardStart = (game.height / 2) - (Math.floor(getClients().length / 2) * 20);
let titleSize = scoreBoardTitleFont.measure("PLAYERS", game.width, 0.0, 1.0, 10, false, false);
scoreBoardTitleFont.render("PLAYERS", [game.width / 2, scoreboardStart - 50], 0, 0.5, 0.0, scoreBoardTitleFont.size, COLOUR_WHITE, false, false, false, true);
if (typeof playerPing[clients[i].name] != "undefined") {
ping = toString(playerPing[clients[i].name]);
}
titleSize = scoreBoardTitleFont.measure("____________________________", game.width, 0.0, 1.0, 10, false, false);
scoreBoardTitleFont.render("____________________________", [game.width / 2, scoreboardStart - 35], 0, 0.5, 0.0, scoreBoardTitleFont.size, COLOUR_WHITE, false, false, false, true);
// Player ID
let text = String(clients[i].index);
let size = scoreBoardListFont.measure(text, 75, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render(text, [game.width / 2 - 100, scoreboardStart + (i * 20)], 0, 0.5, 0.0, scoreBoardListFont.size, COLOUR_WHITE, false, false, false, true);
let clients = getClients();
for (let i in clients) {
if (!clients[i].console) {
let name = clients[i].name;
let colour = COLOUR_WHITE;
let paused = false;
let ping = "-1";
// Player Name
text = name;
size = scoreBoardListFont.measure(text, 100, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render(text, [game.width / 2, scoreboardStart + (i * 20)], 0, 0.5, 0.0, scoreBoardListFont.size, colour, false, false, false, true);
if (typeof playerNames[clients[i].name] != "undefined") {
name = playerNames[clients[i].name];
}
// Ping
text = ping;
size = scoreBoardListFont.measure(ping, 75, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render(ping, [game.width / 2 + 100, scoreboardStart + (i * 20)], 0, 0.5, 0.0, scoreBoardListFont.size, COLOUR_WHITE, false, false, false, true);
if (typeof playerPaused[clients[i].name] != "undefined") {
paused = playerPaused[clients[i].name];
}
// PAUSED Status (depends on resource "afk")
if (paused == true) {
size = scoreBoardListFont.measure("PAUSED", 100, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render("PAUSED", [game.width / 2 + 200, scoreboardStart + (i * 20)], 0, 0.5, 0.0, scoreBoardListFont.size, pausedColour, false, false, false, true);
}
}
}
if (typeof playerColours[clients[i].name] != "undefined") {
colour = playerColours[clients[i].name];
}
if (typeof playerPing[clients[i].name] != "undefined") {
ping = toString(playerPing[clients[i].name]);
}
// Player ID
let text = String(clients[i].index);
let size = scoreBoardListFont.measure(text, 75, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render(text, [game.width / 2 - 100, scoreboardStart + (i * 20)], 0, 0.5, 0.0, scoreBoardListFont.size, COLOUR_WHITE, false, false, false, true);
// Player Name
text = name;
size = scoreBoardListFont.measure(text, 100, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render(text, [game.width / 2, scoreboardStart + (i * 20)], 0, 0.5, 0.0, scoreBoardListFont.size, colour, false, false, false, true);
// Ping
text = ping;
size = scoreBoardListFont.measure(ping, 75, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render(ping, [game.width / 2 + 100, scoreboardStart + (i * 20)], 0, 0.5, 0.0, scoreBoardListFont.size, COLOUR_WHITE, false, false, false, true);
// PAUSED Status (depends on resource "afk")
if (paused == true) {
size = scoreBoardListFont.measure("PAUSED", 100, 0.0, 1.0, 10, false, false);
scoreBoardListFont.render("PAUSED", [game.width / 2 + 200, scoreboardStart + (i * 20)], 0, 0.5, 0.0, scoreBoardListFont.size, pausedColour, false, false, false, true);
}
}
}
}
}
// ===========================================================================
function setScoreBoardKey(key) {
if (key == -1) {
scoreBoardKey = null;
} else {
scoreBoardKey = toInteger(key);
}
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: skin-select.js
// DESC: Provides skin-selector functions and usage
@@ -24,10 +23,10 @@ let skinSelectHeading = null;
// ===========================================================================
function initSkinSelectScript() {
logToConsole(LOG_DEBUG, "[AGRP.SkinSelect]: Initializing skin selector script ...");
logToConsole(LOG_DEBUG, "[V.RP.SkinSelect]: Initializing skin selector script ...");
skinSelectMessageFontTop = loadSkinSelectMessageFontTop();
skinSelectMessageFontBottom = loadSkinSelectMessageFontBottom();
logToConsole(LOG_DEBUG, "[AGRP.SkinSelect]: Skin selector script initialized!");
logToConsole(LOG_DEBUG, "[V.RP.SkinSelect]: Skin selector script initialized!");
}
// ===========================================================================
@@ -65,16 +64,16 @@ function processSkinSelectKeyPress(keyCode) {
skinSelectMessageTextTop = allowedSkins[skinSelectorIndex][1];
setLocalPlayerSkin(allowedSkins[skinSelectorIndex][0]);
} else if (keyCode == getKeyIdFromParams("enter")) {
sendNetworkEventToServer("agrp.skinSelected", skinSelectorIndex);
sendNetworkEventToServer("v.rp.skinSelected", skinSelectorIndex);
toggleSkinSelect(false);
return true;
} else if (keyCode == getKeyIdFromParams("backspace")) {
sendNetworkEventToServer("agrp.skinSelected", -1);
sendNetworkEventToServer("v.rp.skinSelected", -1);
toggleSkinSelect(false);
return true;
}
if (getGame() <= AGRP_GAME_GTA_SA) {
if (getGame() <= V_GAME_GTA_SA) {
localPlayer.heading = skinSelectHeading;
}
}
@@ -109,7 +108,7 @@ function toggleSkinSelect(state) {
if (isCustomCameraSupported()) {
let cameraPosition = localPlayer.position;
let playerPosition = localPlayer.position;
if (getGame() == AGRP_GAME_MAFIA_ONE) {
if (getGame() == V_GAME_MAFIA_ONE) {
cameraPosition.y += 1.5;
playerPosition.y += 1.5;
distance = 3;
@@ -121,7 +120,7 @@ function toggleSkinSelect(state) {
game.setCameraLookAt(frontCameraPosition, playerPosition, true);
}
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
let skinId = allowedSkins[skinSelectorIndex][0];
if (natives.isModelInCdimage(skinId)) {
natives.requestModel(skinId);

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: startup.js
// DESC: Provides startup/shutdown procedures
@@ -22,14 +21,20 @@ function initClientScripts() {
initEventScript();
initSkinSelectScript();
initCursorScript();
initCustomHUDScript();
initPayPhoneScript();
initTimersScript();
initJobScript();
addAllNetworkHandlers();
initTimers();
}
// ===========================================================================
function setUpInitialGame() {
if (getGame() == AGRP_GAME_GTA_III) {
if (getGame() == V_GAME_GTA_III) {
logToConsole(LOG_DEBUG | LOG_WARN, "Setting up initial game stuff for GTA III ...");
// Turn off unlimited sprint
@@ -48,7 +53,7 @@ function setUpInitialGame() {
// Provided by mouse camera script (mousecam.js)
SetStandardControlsEnabled(true);
} else if (getGame() == AGRP_GAME_GTA_VC) {
} else if (getGame() == V_GAME_GTA_VC) {
logToConsole(LOG_DEBUG | LOG_WARN, "Setting up initial game stuff for GTA Vice City ...");
// Turn off unlimited sprint
@@ -91,7 +96,7 @@ function setUpInitialGame() {
// Provided by mouse camera script (mousecam.js)
SetStandardControlsEnabled(true);
} else if (getGame() == AGRP_GAME_GTA_SA) {
} else if (getGame() == V_GAME_GTA_SA) {
logToConsole(LOG_DEBUG | LOG_WARN, "Setting up initial game stuff for GTA San Andreas ...");
// Turn weapon skills down a bit
game.setGameStat(STAT_WEAPONTYPE_PISTOL_SKILL, 400);
@@ -128,7 +133,7 @@ function setUpInitialGame() {
// Disables taxi/vigilante/etc and other start mission triggers
game.onMission = true;
} else if (getGame() == AGRP_GAME_GTA_IV) {
} else if (getGame() == V_GAME_GTA_IV) {
natives.allowEmergencyServices(false);
natives.setCreateRandomCops(true);
natives.setMaxWantedLevel(0);
@@ -190,9 +195,9 @@ function setUpInitialGame() {
// Some last steps
//natives.loadAllObjectsNow();
} else if (getGame() == AGRP_GAME_MAFIA_ONE) {
game.mapEnabled = false;
game.setTrafficEnabled(false);
} else if (getGame() == V_GAME_MAFIA_ONE) {
game.mapEnabled = true;
//game.setTrafficEnabled(false);
}
}

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: sync.js
// DESC: Provides some elements and data sync
@@ -11,33 +10,36 @@
function processSync(event, deltaTime) {
if (localPlayer != null) {
if (!areServerElementsSupported()) {
sendNetworkEventToServer("agrp.plr.pos", (localPlayer.vehicle != null) ? localPlayer.vehicle.position : localPlayer.position);
sendNetworkEventToServer("agrp.plr.rot", (localPlayer.vehicle != null) ? localPlayer.vehicle.heading : localPlayer.heading);
sendNetworkEventToServer("v.rp.plr.pos", (localPlayer.vehicle != null) ? localPlayer.vehicle.position : localPlayer.position);
sendNetworkEventToServer("v.rp.plr.rot", (localPlayer.vehicle != null) ? localPlayer.vehicle.heading : localPlayer.heading);
//if(localPlayer.vehicle != null) {
// sendNetworkEventToServer("agrp.veh.pos", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.position);
// sendNetworkEventToServer("agrp.veh.rot", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.heading);
// sendNetworkEventToServer("v.rp.veh.pos", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.position);
// sendNetworkEventToServer("v.rp.veh.rot", getVehicleForNetworkEvent(localPlayer.vehicle), localPlayer.vehicle.heading);
//}
}
if (localPlayer.health <= 0) {
if (!calledDeathEvent) {
logToConsole(LOG_DEBUG, `Local player died`);
localPlayer.clearWeapons();
calledDeathEvent = true;
sendNetworkEventToServer("agrp.playerDeath");
if (calledDeathEvent == false) {
if (localPlayer.health <= 0) {
if (!calledDeathEvent) {
logToConsole(LOG_DEBUG, `Local player died`);
localPlayer.clearWeapons();
calledDeathEvent = true;
sendNetworkEventToServer("v.rp.playerDeath");
}
}
}
}
if (localPlayer.health <= 0) {
if (!calledDeathEvent) {
logToConsole(LOG_DEBUG, `Local player died`);
localPlayer.clearWeapons();
calledDeathEvent = true;
sendNetworkEventToServer("agrp.playerDeath");
}
}
//if (localPlayer.health <= 0) {
// if (!calledDeathEvent) {
// logToConsole(LOG_DEBUG, `Local player died`);
// localPlayer.clearWeapons();
// calledDeathEvent = true;
// sendNetworkEventToServer("v.rp.playerDeath");
// }
//}
if (streamingRadioElement) {
//streamingRadio.volume = getStreamingRadioVolumeForPosition(streamingRadio.position);
@@ -47,15 +49,9 @@ function processSync(event, deltaTime) {
// ===========================================================================
function setVehicleLights(vehicleId, state) {
//if (getGame() == AGRP_GAME_GTA_IV) {
// if (!state) {
// natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 0));
// } else {
// natives.forceCarLights(natives.getVehicleFromNetworkId(vehicleId, 1));
// }
//} else {
getElementFromId(vehicleId).lights = state;
//}
if (getElementFromId(vehicleId) != null) {
getElementFromId(vehicleId).lights = state;
}
}
// ===========================================================================
@@ -71,44 +67,44 @@ function syncVehicleProperties(vehicle) {
return false;
}
if (doesEntityDataExist(vehicle, "agrp.lights")) {
let lightStatus = getEntityData(vehicle, "agrp.lights");
if (doesEntityDataExist(vehicle, "v.rp.lights")) {
let lightStatus = getEntityData(vehicle, "v.rp.lights");
vehicle.lights = lightStatus;
}
if (doesEntityDataExist(vehicle, "agrp.locked")) {
let lockStatus = getEntityData(vehicle, "agrp.locked");
if (doesEntityDataExist(vehicle, "v.rp.locked")) {
let lockStatus = getEntityData(vehicle, "v.rp.locked");
vehicle.locked = lockStatus;
}
if (doesEntityDataExist(vehicle, "agrp.invincible")) {
let invincible = getEntityData(vehicle, "agrp.invincible");
if (doesEntityDataExist(vehicle, "v.rp.invincible")) {
let invincible = getEntityData(vehicle, "v.rp.invincible");
element.setProofs(invincible, invincible, invincible, invincible, invincible);
}
if (doesEntityDataExist(vehicle, "agrp.panelStatus")) {
let panelsStatus = getEntityData(vehicle, "agrp.panelStatus");
if (doesEntityDataExist(vehicle, "v.rp.panelStatus")) {
let panelsStatus = getEntityData(vehicle, "v.rp.panelStatus");
for (let i in panelsStatus) {
vehicle.setPanelStatus(i, panelsStatus[i]);
}
}
if (doesEntityDataExist(vehicle, "agrp.wheelStatus")) {
let wheelsStatus = getEntityData(vehicle, "agrp.wheelStatus");
if (doesEntityDataExist(vehicle, "v.rp.wheelStatus")) {
let wheelsStatus = getEntityData(vehicle, "v.rp.wheelStatus");
for (let i in wheelsStatus) {
vehicle.setWheelStatus(i, wheelsStatus[i]);
}
}
if (doesEntityDataExist(vehicle, "agrp.lightStatus")) {
let lightStatus = getEntityData(vehicle, "agrp.lightStatus");
if (doesEntityDataExist(vehicle, "v.rp.lightStatus")) {
let lightStatus = getEntityData(vehicle, "v.rp.lightStatus");
for (let i in lightStatus) {
vehicle.setLightStatus(i, lightStatus[i]);
}
}
if (doesEntityDataExist(vehicle, "agrp.suspensionHeight")) {
let suspensionHeight = getEntityData(vehicle, "agrp.suspensionHeight");
if (doesEntityDataExist(vehicle, "v.rp.suspensionHeight")) {
let suspensionHeight = getEntityData(vehicle, "v.rp.suspensionHeight");
vehicle.setSuspensionHeight(suspensionHeight);
}
@@ -118,8 +114,8 @@ function syncVehicleProperties(vehicle) {
// vehicle.removeUpgrade(i);
//}
if (doesEntityDataExist(vehicle, "agrp.upgrades")) {
let upgrades = getEntityData(vehicle, "agrp.upgrades");
if (doesEntityDataExist(vehicle, "v.rp.upgrades")) {
let upgrades = getEntityData(vehicle, "v.rp.upgrades");
for (let i in upgrades) {
if (upgrades[i] != 0) {
vehicle.addUpgrade(upgrades[i]);
@@ -128,12 +124,12 @@ function syncVehicleProperties(vehicle) {
}
}
if (getGame() == AGRP_GAME_GTA_SA || getGame() == AGRP_GAME_GTA_IV) {
if (doesEntityDataExist(vehicle, "agrp.livery")) {
let livery = getEntityData(vehicle, "agrp.livery");
if (getGame() == AGRP_GAME_GTA_SA) {
if (getGame() == V_GAME_GTA_SA || getGame() == V_GAME_GTA_IV) {
if (doesEntityDataExist(vehicle, "v.rp.livery")) {
let livery = getEntityData(vehicle, "v.rp.livery");
if (getGame() == V_GAME_GTA_SA) {
vehicle.setPaintJob(livery);
} else if (getGame() == AGRP_GAME_GTA_IV) {
} else if (getGame() == V_GAME_GTA_IV) {
vehicle.livery = livery;
}
}
@@ -148,8 +144,8 @@ function syncCivilianProperties(civilian) {
}
if (isGameFeatureSupported("pedScale")) {
if (doesEntityDataExist(civilian, "agrp.scale")) {
let scaleFactor = getEntityData(civilian, "agrp.scale");
if (doesEntityDataExist(civilian, "v.rp.scale")) {
let scaleFactor = getEntityData(civilian, "v.rp.scale");
let tempMatrix = civilian.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = civilian.position;
@@ -159,79 +155,79 @@ function syncCivilianProperties(civilian) {
}
}
if (getGame() == AGRP_GAME_GTA_SA) {
if (doesEntityDataExist(civilian, "agrp.fightStyle")) {
let fightStyle = getEntityData(civilian, "agrp.fightStyle");
if (getGame() == V_GAME_GTA_SA) {
if (doesEntityDataExist(civilian, "v.rp.fightStyle")) {
let fightStyle = getEntityData(civilian, "v.rp.fightStyle");
civilian.setFightStyle(fightStyle[0], fightStyle[1]);
}
}
if (getGame() == AGRP_GAME_GTA_SA) {
if (doesEntityDataExist(civilian, "agrp.walkStyle")) {
let walkStyle = getEntityData(civilian, "agrp.walkStyle");
if (getGame() == V_GAME_GTA_SA) {
if (doesEntityDataExist(civilian, "v.rp.walkStyle")) {
let walkStyle = getEntityData(civilian, "v.rp.walkStyle");
civilian.walkStyle = walkStyle;
}
}
if (getGame() == AGRP_GAME_GTA_IV) {
if (doesEntityDataExist(civilian, "agrp.bodyPropHair")) {
let bodyPropHair = getEntityData(civilian, "agrp.bodyPropHair");
if (getGame() == V_GAME_GTA_IV) {
if (doesEntityDataExist(civilian, "v.rp.bodyPropHair")) {
let bodyPropHair = getEntityData(civilian, "v.rp.bodyPropHair");
civilian.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropHead")) {
let bodyPropHead = getEntityData(civilian, "agrp.bodyPropHead");
if (doesEntityDataExist(civilian, "v.rp.bodyPropHead")) {
let bodyPropHead = getEntityData(civilian, "v.rp.bodyPropHead");
civilian.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(civilian, "agrp.bodyPropEyes");
if (doesEntityDataExist(civilian, "v.rp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(civilian, "v.rp.bodyPropEyes");
civilian.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(civilian, "agrp.bodyPropLeftHand");
if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(civilian, "v.rp.bodyPropLeftHand");
civilian.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(civilian, "agrp.bodyPropRightHand");
if (doesEntityDataExist(civilian, "v.rp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(civilian, "v.rp.bodyPropRightHand");
civilian.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(civilian, "agrp.bodyPropLeftWrist");
if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(civilian, "v.rp.bodyPropLeftWrist");
civilian.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
if (doesEntityDataExist(civilian, "v.rp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "v.rp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "agrp.bodyPropRightWrist");
if (doesEntityDataExist(civilian, "v.rp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(civilian, "v.rp.bodyPropRightWrist");
civilian.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropHip")) {
let bodyPropHip = getEntityData(civilian, "agrp.bodyPropHip");
if (doesEntityDataExist(civilian, "v.rp.bodyPropHip")) {
let bodyPropHip = getEntityData(civilian, "v.rp.bodyPropHip");
civilian.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(civilian, "agrp.bodyPropLeftFoot");
if (doesEntityDataExist(civilian, "v.rp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(civilian, "v.rp.bodyPropLeftFoot");
civilian.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
}
if (doesEntityDataExist(civilian, "agrp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(civilian, "agrp.bodyPropRightFoot");
if (doesEntityDataExist(civilian, "v.rp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(civilian, "v.rp.bodyPropRightFoot");
civilian.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
}
}
if (doesEntityDataExist(civilian, "agrp.anim")) {
let animationSlot = getEntityData(civilian, "agrp.anim");
if (doesEntityDataExist(civilian, "v.rp.anim")) {
let animationSlot = getEntityData(civilian, "v.rp.anim");
let animationData = getAnimationData(animationSlot);
civilian.addAnimation(animationData.groupId, animationData.animId);
}
@@ -245,8 +241,8 @@ function syncObjectProperties(object) {
}
if (isGameFeatureSupported("objectScale")) {
if (doesEntityDataExist(object, "agrp.scale")) {
let scaleFactor = getEntityData(object, "agrp.scale");
if (doesEntityDataExist(object, "v.rp.scale")) {
let scaleFactor = getEntityData(object, "v.rp.scale");
let tempMatrix = object.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = object.position;
@@ -265,8 +261,8 @@ function syncPlayerProperties(player) {
}
if (isGameFeatureSupported("pedScale")) {
if (doesEntityDataExist(player, "agrp.scale")) {
let scaleFactor = getEntityData(player, "agrp.scale");
if (doesEntityDataExist(player, "v.rp.scale")) {
let scaleFactor = getEntityData(player, "v.rp.scale");
let tempMatrix = player.matrix;
tempMatrix.setScale(toVector3(scaleFactor.x, scaleFactor.y, scaleFactor.z));
let tempPosition = player.position;
@@ -276,95 +272,95 @@ function syncPlayerProperties(player) {
}
}
if (getGame() == AGRP_GAME_GTA_SA) {
if (doesEntityDataExist(player, "agrp.fightStyle")) {
let fightStyle = getEntityData(player, "agrp.fightStyle");
if (getGame() == V_GAME_GTA_SA) {
if (doesEntityDataExist(player, "v.rp.fightStyle")) {
let fightStyle = getEntityData(player, "v.rp.fightStyle");
player.setFightStyle(fightStyle[0], fightStyle[1]);
}
}
//if(getGame() == AGRP_GAME_GTA_SA) {
// if(doesEntityDataExist(player, "agrp.walkStyle")) {
// let walkStyle = getEntityData(player, "agrp.walkStyle");
//if(getGame() == V_GAME_GTA_SA) {
// if(doesEntityDataExist(player, "v.rp.walkStyle")) {
// let walkStyle = getEntityData(player, "v.rp.walkStyle");
// player.walkStyle = walkStyle;
// }
//}
if (getGame() == AGRP_GAME_GTA_IV) {
if (doesEntityDataExist(player, "agrp.bodyPartHair")) {
let bodyPartHead = getEntityData(player, "agrp.bodyPartHair");
if (getGame() == V_GAME_GTA_IV) {
if (doesEntityDataExist(player, "v.rp.bodyPartHair")) {
let bodyPartHead = getEntityData(player, "v.rp.bodyPartHair");
player.changeBodyPart(0, bodyPartHead[0], bodyPartHair[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPartHead")) {
let bodyPartHead = getEntityData(player, "agrp.bodyPartHead");
if (doesEntityDataExist(player, "v.rp.bodyPartHead")) {
let bodyPartHead = getEntityData(player, "v.rp.bodyPartHead");
player.changeBodyPart(1, bodyPartHead[0], bodyPartHead[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPartUpper")) {
let bodyPartUpper = getEntityData(player, "agrp.bodyPartUpper");
if (doesEntityDataExist(player, "v.rp.bodyPartUpper")) {
let bodyPartUpper = getEntityData(player, "v.rp.bodyPartUpper");
player.changeBodyPart(1, bodyPartUpper[0], bodyPartUpper[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPartLower")) {
let bodyPartLower = getEntityData(player, "agrp.bodyPartLower");
if (doesEntityDataExist(player, "v.rp.bodyPartLower")) {
let bodyPartLower = getEntityData(player, "v.rp.bodyPartLower");
player.changeBodyPart(1, bodyPartLower[0], bodyPartLower[1]);
}
}
if (getGame() == AGRP_GAME_GTA_IV) {
if (doesEntityDataExist(player, "agrp.bodyPropHair")) {
let bodyPropHair = getEntityData(player, "agrp.bodyPropHair");
if (getGame() == V_GAME_GTA_IV) {
if (doesEntityDataExist(player, "v.rp.bodyPropHair")) {
let bodyPropHair = getEntityData(player, "v.rp.bodyPropHair");
player.changeBodyProp(0, bodyPropHair[0], bodyPropHair[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropHead")) {
let bodyPropHead = getEntityData(player, "agrp.bodyPropHead");
if (doesEntityDataExist(player, "v.rp.bodyPropHead")) {
let bodyPropHead = getEntityData(player, "v.rp.bodyPropHead");
player.changeBodyProp(1, bodyPropHead[0], bodyPropHead[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(player, "agrp.bodyPropEyes");
if (doesEntityDataExist(player, "v.rp.bodyPropEyes")) {
let bodyPropEyes = getEntityData(player, "v.rp.bodyPropEyes");
player.changeBodyProp(1, bodyPropEyes[0], bodyPropEyes[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(player, "agrp.bodyPropLeftHand");
if (doesEntityDataExist(player, "v.rp.bodyPropLeftHand")) {
let bodyPropLeftHand = getEntityData(player, "v.rp.bodyPropLeftHand");
player.changeBodyProp(1, bodyPropLeftHand[0], bodyPropLeftHand[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(player, "agrp.bodyPropRightHand");
if (doesEntityDataExist(player, "v.rp.bodyPropRightHand")) {
let bodyPropRightHand = getEntityData(player, "v.rp.bodyPropRightHand");
player.changeBodyProp(1, bodyPropRightHand[0], bodyPropRightHand[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(player, "agrp.bodyPropLeftWrist");
if (doesEntityDataExist(player, "v.rp.bodyPropLeftWrist")) {
let bodyPropLeftWrist = getEntityData(player, "v.rp.bodyPropLeftWrist");
player.changeBodyProp(1, bodyPropLeftWrist[0], bodyPropLeftWrist[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
if (doesEntityDataExist(player, "v.rp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "v.rp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "agrp.bodyPropRightWrist");
if (doesEntityDataExist(player, "v.rp.bodyPropRightWrist")) {
let bodyPropRightWrist = getEntityData(player, "v.rp.bodyPropRightWrist");
player.changeBodyProp(1, bodyPropRightWrist[0], bodyPropRightWrist[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropHip")) {
let bodyPropHip = getEntityData(player, "agrp.bodyPropHip");
if (doesEntityDataExist(player, "v.rp.bodyPropHip")) {
let bodyPropHip = getEntityData(player, "v.rp.bodyPropHip");
player.changeBodyProp(1, bodyPropHip[0], bodyPropHip[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(player, "agrp.bodyPropLeftFoot");
if (doesEntityDataExist(player, "v.rp.bodyPropLeftFoot")) {
let bodyPropLeftFoot = getEntityData(player, "v.rp.bodyPropLeftFoot");
player.changeBodyProp(1, bodyPropLeftFoot[0], bodyPropLeftFoot[1]);
}
if (doesEntityDataExist(player, "agrp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(player, "agrp.bodyPropRightFoot");
if (doesEntityDataExist(player, "v.rp.bodyPropRightFoot")) {
let bodyPropRightFoot = getEntityData(player, "v.rp.bodyPropRightFoot");
player.changeBodyProp(1, bodyPropRightFoot[0], bodyPropRightFoot[1]);
}
}
@@ -378,20 +374,20 @@ function syncElementProperties(element) {
}
if (isGameFeatureSupported("interior")) {
if (doesEntityDataExist(element, "agrp.interior")) {
if (doesEntityDataExist(element, "v.rp.interior")) {
if (typeof element.interior != "undefined") {
element.interior = getEntityData(element, "agrp.interior");
element.interior = getEntityData(element, "v.rp.interior");
}
}
}
if (isGameFeatureSupported("toggleCollision")) {
if (doesEntityDataExist(element, "agrp.collisions")) {
element.collisionsEnabled = getEntityData(element, "agrp.collisions");
if (doesEntityDataExist(element, "v.rp.collisions")) {
element.collisionsEnabled = getEntityData(element, "v.rp.collisions");
}
}
if (getGame() == AGRP_GAME_MAFIA_ONE) {
if (getGame() == V_GAME_MAFIA_ONE) {
switch (element.type) {
case ELEMENT_VEHICLE:
syncVehicleProperties(element);
@@ -436,7 +432,7 @@ function syncElementProperties(element) {
// ===========================================================================
function receiveHouseFromServer(houseId, entrancePosition, blipModel, pickupModel, hasInterior) {
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
}
}

20
scripts/client/timers.js Normal file
View File

@@ -0,0 +1,20 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: timers.js
// DESC: Provides timer functions and usage
// TYPE: Client (JavaScript)
// ===========================================================================
function initTimersScript() {
logToConsole(LOG_DEBUG, "[V.RP.Timers]: Initializing timer script ...");
logToConsole(LOG_DEBUG, "[V.RP.Timers]: Timers script initialized!");
}
// ===========================================================================
function initTimers() {
}
// ===========================================================================

20
scripts/client/token.js Normal file
View File

@@ -0,0 +1,20 @@
// ===========================================================================
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: token.js
// DESC: Provides "remember me" auto-login token system and functions
// TYPE: Client (JavaScript)
// ===========================================================================
function saveToken(token) {
saveDataToFile("config/client/token.js", token);
}
// ===========================================================================
function loadToken() {
return loadDataFromFile("config/client/token.js");
}
// ===========================================================================

View File

@@ -1,7 +1,6 @@
// ===========================================================================
// Asshat Gaming Roleplay
// https://github.com/VortrexFTW/agrp_main
// (c) 2022 Asshat Gaming
// Vortrex's Roleplay Resource
// https://github.com/VortrexFTW/v-roleplay
// ===========================================================================
// FILE: utilities.js
// DESC: Provides util functions and arrays with data
@@ -9,47 +8,39 @@
// ===========================================================================
function setLocalPlayerFrozenState(state) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting frozen state to ${state}`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Setting frozen state to ${state}`);
gui.showCursor(state, !state);
}
// ===========================================================================
function setLocalPlayerControlState(controlState, cursorState = false) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting control state to ${controlState} (Cursor: ${cursorState})`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Setting control state to ${controlState} (Cursor: ${cursorState})`);
controlsEnabled = controlState;
game.setPlayerControl(controlState);
if (getGame() == AGRP_GAME_GTA_III || getGame() == AGRP_GAME_GTA_VC) {
if (getGame() == V_GAME_GTA_III || getGame() == V_GAME_GTA_VC) {
game.SET_PLAYER_CONTROL(game.GET_PLAYER_ID(), boolToInt(controlState));
} else if (getGame() <= AGRP_GAME_GTA_IV) {
setElementCollisionsEnabled(localPlayer, controlState);
} else if (getGame() <= V_GAME_GTA_IV) {
setElementCollisionsEnabled(localPlayer.id, controlState);
setPedInvincible(localPlayer, true);
}
}
// ===========================================================================
function fadeLocalCamera(state, duration, colour) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Fading camera ${(state) ? "in" : "out"} for ${time}ms`);
cameraFadeDuration = duration;
cameraFadeStart = sdl.ticks;
cameraFadeEnabled = true;
cameraFadeIn = state;
cameraFadeColour = colour;
cameraFadeAlpha = (state) ? 255 : 0;
}
// ===========================================================================
function removeLocalPlayerFromVehicle() {
if (getGame() == V_GAME_MAFIA_ONE) {
localPlayer.removeFromVehicle(localPlayer.vehicle, 0);
localPlayer.position = getPosAbovePos(localPlayer.position, 5);
}
localPlayer.removeFromVehicle();
}
// ===========================================================================
function restoreLocalCamera() {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Camera restored`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Camera restored`);
if (isGameFeatureSupported("customCamera")) {
game.restoreCamera(true);
}
@@ -58,7 +49,7 @@ function restoreLocalCamera() {
// ===========================================================================
function setLocalCameraLookAt(cameraPosition, cameraLookAt) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Set camera to look at [${cameraLookAt.x}, ${cameraLookAt.y}, ${cameraLookAt.z}] from [${cameraPosition.x}, ${cameraPosition.y}, ${cameraPosition.z}]`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Set camera to look at [${cameraLookAt.x}, ${cameraLookAt.y}, ${cameraLookAt.z}] from [${cameraPosition.x}, ${cameraPosition.y}, ${cameraPosition.z}]`);
if (isCustomCameraSupported()) {
game.setCameraLookAt(cameraPosition, cameraLookAt, true);
}
@@ -67,20 +58,20 @@ function setLocalCameraLookAt(cameraPosition, cameraLookAt) {
// ===========================================================================
function clearLocalPlayerOwnedPeds() {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Clearing all self-owned peds ...`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Clearing all self-owned peds ...`);
clearSelfOwnedPeds();
logToConsole(LOG_DEBUG, `[AGRP.Utilities] All self-owned peds cleared`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] All self-owned peds cleared`);
};
// ===========================================================================
function setCityAmbienceState(state, clearElements = false) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Ambient civilians and traffic ${(state) ? "enabled" : "disabled"}`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Ambient civilians and traffic ${(state) ? "enabled" : "disabled"}`);
game.setTrafficEnabled(state);
if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
if (getMultiplayerMod() == V_MPMOD_GTAC) {
game.setGenerateCarsAroundCamera(state);
if (getGame() != AGRP_GAME_GTA_SA) {
if (getGame() != V_GAME_GTA_SA) {
game.setCiviliansEnabled(state);
}
@@ -98,7 +89,7 @@ function runClientCode(code, returnTo) {
try {
returnValue = eval("(" + code + ")");
} catch (error) {
sendNetworkEventToServer("agrp.runCodeFail", returnTo, error.toString());
sendNetworkEventToServer("v.rp.runCodeFail", returnTo, error.toString());
return false;
}
let returnValueString = returnValue;
@@ -107,7 +98,7 @@ function runClientCode(code, returnTo) {
} else {
returnValueString = "null/undefined";
}
sendNetworkEventToServer("agrp.runCodeSuccess", returnTo, returnValueString);
sendNetworkEventToServer("v.rp.runCodeSuccess", returnTo, returnValueString);
}
// ===========================================================================
@@ -115,7 +106,7 @@ function runClientCode(code, returnTo) {
function enterVehicleAsPassenger() {
if (localPlayer.vehicle == null) {
let tempVehicle = getClosestVehicle(localPlayer.position);
if (getGame() != AGRP_GAME_GTA_IV) {
if (getGame() != V_GAME_GTA_IV) {
if (tempVehicle != null) {
localPlayer.enterVehicle(tempVehicle, false);
}
@@ -135,15 +126,15 @@ function enterVehicleAsPassenger() {
// ===========================================================================
function giveLocalPlayerWeapon(weaponId, ammo, active) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Giving weapon ${weaponId} with ${ammo} ammo`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Giving weapon ${weaponId} with ${ammo} ammo`);
forceWeapon = weaponId;
if (getGame() == AGRP_GAME_MAFIA_ONE) {
if (getGame() == V_GAME_MAFIA_ONE) {
localPlayer.giveWeapon(weaponId, 0, ammo);
forceWeaponAmmo = 0;
forceWeaponClipAmmo = ammo;
} else {
localPlayer.giveWeapon(weaponId, ammo, active);
if (getGame() < AGRP_GAME_GTA_IV) {
if (getGame() < V_GAME_GTA_IV) {
forceWeaponAmmo = localPlayer.getWeaponAmmunition(getWeaponSlot(weaponId));
forceWeaponClipAmmo = localPlayer.getWeaponClipAmmunition(getWeaponSlot(weaponId));
} else {
@@ -156,7 +147,7 @@ function giveLocalPlayerWeapon(weaponId, ammo, active) {
// ===========================================================================
function clearLocalPlayerWeapons(clearData) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Clearing weapons`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Clearing weapons`);
localPlayer.clearWeapons();
if (clearData == true) {
forceWeapon = 0;
@@ -174,7 +165,7 @@ function getClosestVehicle(pos) {
// ===========================================================================
function setLocalPlayerPosition(position) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting position to ${position.x}, ${position.y}, ${position.z}`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Setting position to ${position.x}, ${position.y}, ${position.z}`);
if (typeof localPlayer.velocity != "undefined") {
localPlayer.velocity = toVector3(0.0, 0.0, 0.0);
}
@@ -187,7 +178,7 @@ function setLocalPlayerPosition(position) {
// ===========================================================================
function setLocalPlayerHeading(heading) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting heading to ${heading}`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Setting heading to ${heading}`);
if (typeof localPlayer.heading != "undefined") {
localPlayer.heading = heading;
}
@@ -196,8 +187,8 @@ function setLocalPlayerHeading(heading) {
// ===========================================================================
function setLocalPlayerInterior(interior) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting interior to ${interior}`);
if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Setting interior to ${interior}`);
if (getMultiplayerMod() == V_MPMOD_GTAC) {
if (!isGTAIV()) {
localPlayer.interior = interior;
game.cameraInterior = interior;
@@ -215,8 +206,8 @@ function setLocalPlayerInterior(interior) {
if (areServerElementsSupported() && isGameFeatureSupported("interior")) {
let vehicles = getElementsByType(ELEMENT_VEHICLE);
for (let i in vehicles) {
if (getEntityData(vehicles[i], "agrp.interior")) {
vehicles[i].interior = getEntityData(vehicles[i], "agrp.interior");
if (getEntityData(vehicles[i], "v.rp.interior")) {
vehicles[i].interior = getEntityData(vehicles[i], "v.rp.interior");
}
}
}
@@ -225,7 +216,11 @@ function setLocalPlayerInterior(interior) {
// ===========================================================================
function setSnowState(falling, ground, forceGround) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting falling snow to ${falling} and ground snow to ${ground}`);
if (!isGameFeatureSupported("snow")) {
return false;
}
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Setting falling snow to ${falling} and ground snow to ${ground}`);
snowing = falling;
//snow.force = ground;
//if (forceGround == true) {
@@ -239,14 +234,17 @@ function setSnowState(falling, ground, forceGround) {
// ===========================================================================
function setLocalPlayerHealth(health) {
if (localPlayer == null) {
return false;
}
localPlayer.health = health;
}
// ===========================================================================
function playPedSpeech(pedName, speechId) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Making ${pedName}'s ped talk (${speechId})`);
if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Making ${pedName}'s ped talk (${speechId})`);
if (getMultiplayerMod() == V_MPMOD_GTAC) {
game.SET_CHAR_SAY(int, int);
}
}
@@ -254,7 +252,7 @@ function playPedSpeech(pedName, speechId) {
// ===========================================================================
function clearLocalPedState() {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Clearing local ped state`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Clearing local ped state`);
localPlayer.clearObjective();
}
@@ -267,8 +265,8 @@ function getWeaponSlot(weaponId) {
// ===========================================================================
function setLocalPlayerDrunkEffect(amount, duration) {
if (getMultiplayerMod() == AGRP_MPMOD_GTAC) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Drunk effect set to ${amount} for ${duration} ms`);
if (getMultiplayerMod() == V_MPMOD_GTAC) {
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Drunk effect set to ${amount} for ${duration} ms`);
drunkEffectAmount = 0;
drunkEffectDurationTimer = setInterval(function () {
drunkEffectAmount = drunkEffectAmount;
@@ -286,11 +284,13 @@ function setLocalPlayerDrunkEffect(amount, duration) {
// ===========================================================================
function getLocalPlayerVehicleSeat() {
for (let i = 0; i <= 4; i++) {
if (localPlayer.vehicle.getOccupant(i) == localPlayer) {
return i;
}
}
return inVehicleSeat;
//for (let i = 0; i <= 4; i++) {
// if (localPlayer.vehicle.getOccupant(i) == localPlayer) {
// return i;
// }
//}
}
// ===========================================================================
@@ -318,7 +318,7 @@ function clearSelfOwnedVehicles() {
// ===========================================================================
function setMouseCameraState(state) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] ${(state) ? "Enabled" : "Disabled"} mouse camera`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] ${(state) ? "Enabled" : "Disabled"} mouse camera`);
mouseCameraEnabled = state;
SetStandardControlsEnabled(!mouseCameraEnabled);
}
@@ -326,28 +326,28 @@ function setMouseCameraState(state) {
// ===========================================================================
function toggleMouseCursor() {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] ${(!gui.cursorEnabled) ? "Enabled" : "Disabled"} mouse cursor`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] ${(!gui.cursorEnabled) ? "Enabled" : "Disabled"} mouse cursor`);
gui.showCursor(!gui.cursorEnabled, gui.cursorEnabled);
}
// ===========================================================================
function toggleMouseCursor() {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] ${(!gui.cursorEnabled) ? "Enabled" : "Disabled"} mouse cursor`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] ${(!gui.cursorEnabled) ? "Enabled" : "Disabled"} mouse cursor`);
setMouseCameraState(!mouseCameraEnabled);
}
// ===========================================================================
function setPlayerWeaponDamageEvent(clientName, eventType) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Set ${clientName} damage event type to ${eventType}`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Set ${clientName} damage event type to ${eventType}`);
weaponDamageEvent[clientName] = eventType;
}
// ===========================================================================
function setPlayerWeaponDamageEnabled(clientName, state) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] ${(state) ? "Enabled" : "Disabled"} damage from ${clientName}`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] ${(state) ? "Enabled" : "Disabled"} damage from ${clientName}`);
weaponDamageEnabled[clientName] = state;
}
@@ -397,45 +397,17 @@ function processWantedLevelReset() {
// ===========================================================================
function processLocalPlayerVehicleControlState() {
if (areServerElementsSupported()) {
if (localPlayer.vehicle != null) {
if (doesEntityDataExist(localPlayer.vehicle, "agrp.engine")) {
if (getEntityData(localPlayer.vehicle, "agrp.engine") == false) {
localPlayer.vehicle.engine = false;
//localPlayer.vehicle.netFlags.sendSync = false;
if (!localPlayer.vehicle.engine) {
if (typeof localPlayer.vehicle.velocity != "undefined") {
localPlayer.vehicle.velocity = toVector3(0.0, 0.0, 0.0);
localPlayer.vehicle.turnVelocity = toVector3(0.0, 0.0, 0.0);
}
//if (parkedVehiclePosition) {
// localPlayer.vehicle.position = parkedVehiclePosition;
// localPlayer.vehicle.heading = parkedVehicleHeading;
//}
}
} else {
//localPlayer.vehicle.netFlags.sendSync = true;
}
}
}
}
}
// ===========================================================================
function forceLocalPlayerEquippedWeaponItem() {
if (typeof localPlayer.weapon != "undefined") {
if (forceWeapon != 0) {
if (localPlayer.weapon != forceWeapon) {
localPlayer.weapon = forceWeapon;
if (getGame() < AGRP_GAME_GTA_IV) {
if (getGame() < V_GAME_GTA_IV) {
localPlayer.setWeaponClipAmmunition(getWeaponSlot(forceWeapon), forceWeaponClipAmmo);
localPlayer.setWeaponAmmunition(getWeaponSlot(forceWeapon), forceWeaponAmmo);
}
} else {
//if(getGame() < AGRP_GAME_GTA_IV) {
//if(getGame() < V_GAME_GTA_IV) {
// forceWeaponClipAmmo = localPlayer.getWeaponClipAmmunition(getWeaponSlot(forceWeapon));
// forceWeaponAmmo = localPlayer.getWeaponAmmunition(getWeaponSlot(forceWeapon));
//}
@@ -462,7 +434,7 @@ function getLocalPlayerPosition() {
// ===========================================================================
function getVehicleForNetworkEvent(vehicle) {
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
return natives.getNetworkIdFromVehicle(vehicle);
}
return vehicle.id;
@@ -471,7 +443,7 @@ function getVehicleForNetworkEvent(vehicle) {
// ===========================================================================
function setMinuteDuration(minuteDuration) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting minute duration to ${minuteDuration}ms`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Setting minute duration to ${minuteDuration}ms`);
if (isTimeSupported()) {
game.time.minuteDuration = minuteDuration;
@@ -534,7 +506,7 @@ function processNearbyPickups() {
//if(pickups[i].interior == localPlayer.interior && pickups[i].dimension == localPlayer.dimension) {
if (currentPickup != pickups[i]) {
currentPickup = pickups[i];
sendNetworkEventToServer("agrp.pickup", pickups[i].id);
sendNetworkEventToServer("v.rp.pickup", pickups[i].id);
}
//}
}
@@ -545,10 +517,14 @@ function processNearbyPickups() {
// ===========================================================================
function processGameSpecifics() {
if (getGame() < AGRP_GAME_GTA_IV) {
if (getGame() < V_GAME_GTA_IV) {
game.clearMessages();
}
if (getGame() == V_GAME_GTA_IV || getGame() == V_GAME_GTA_IV_EFLC) {
gta.terminateScript("mpcellphonemain");
}
destroyAutoCreatedPickups();
}
@@ -604,7 +580,7 @@ function updateLocalPlayerMoney() {
localPlayer.money = toInteger(localPlayerMoney);
}
if (getGame() == AGRP_GAME_GTA_IV) {
if (getGame() == V_GAME_GTA_IV) {
natives.setMultiplayerHudCash(localPlayerMoney);
}
}
@@ -612,9 +588,37 @@ function updateLocalPlayerMoney() {
// ===========================================================================
function setLocalPlayerMoney(amount) {
logToConsole(LOG_DEBUG, `[AGRP.Utilities] Setting local player money`);
logToConsole(LOG_DEBUG, `[V.RP.Utilities] Setting local player money`);
localPlayerMoney = amount;
updateLocalPlayerMoney();
}
// ===========================================================================
function fixOffScreenPosition(position, margin = toVector2(0.0, 0.0)) {
if (position.x <= 0) {
position.x = 0.0 + (margin.x / 2);
} else if (position.x > game.width) {
position.x = game.width - (margin.x / 2);
}
if (position.y <= 0) {
position.y = 0.0 + (margin.y / 2);
} else if (position.y > game.height) {
position.y = game.height - (margin.y / 2);
}
return position;
}
// ===========================================================================
function processMapChangeWarning() {
if (mapChangeWarning == false) {
return false;
}
smallGameMessageFonts["AuroraBdCnBT"].render(`Map is changing to ${(mapChangeToNight) ? "night" : "day"} soon!`, [0, game.height - 90], game.width, 0.5, 0.0, smallGameMessageFonts["AuroraBdCnBT"].size, getColourByName("yellow"), true, true, false, true);
}
// ===========================================================================

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