Guest User

Untitled

a guest
Mar 2nd, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 381.73 KB | None | 0 0
  1. var $jscomp = $jscomp || {};
  2. $jscomp.scope = {};
  3. $jscomp.ASSUME_ES5 = !1;
  4. $jscomp.ASSUME_NO_NATIVE_MAP = !1;
  5. $jscomp.ASSUME_NO_NATIVE_SET = !1;
  6. $jscomp.defineProperty = $jscomp.ASSUME_ES5 || "function" == typeof Object.defineProperties ? Object.defineProperty : function(a, b, c) {
  7. a != Array.prototype && a != Object.prototype && (a[b] = c.value)
  8. };
  9. $jscomp.getGlobal = function(a) {
  10. return "undefined" != typeof window && window === a ? a : "undefined" != typeof global && null != global ? global : a
  11. };
  12. $jscomp.global = $jscomp.getGlobal(this);
  13. $jscomp.SYMBOL_PREFIX = "jscomp_symbol_";
  14. $jscomp.initSymbol = function() {
  15. $jscomp.initSymbol = function() {};
  16. $jscomp.global.Symbol || ($jscomp.global.Symbol = $jscomp.Symbol)
  17. };
  18. $jscomp.Symbol = function() {
  19. var a = 0;
  20. return function(b) {
  21. return $jscomp.SYMBOL_PREFIX + (b || "") + a++
  22. }
  23. }();
  24. $jscomp.initSymbolIterator = function() {
  25. $jscomp.initSymbol();
  26. var a = $jscomp.global.Symbol.iterator;
  27. a || (a = $jscomp.global.Symbol.iterator = $jscomp.global.Symbol("iterator"));
  28. "function" != typeof Array.prototype[a] && $jscomp.defineProperty(Array.prototype, a, {
  29. configurable: !0,
  30. writable: !0,
  31. value: function() {
  32. return $jscomp.arrayIterator(this)
  33. }
  34. });
  35. $jscomp.initSymbolIterator = function() {}
  36. };
  37. $jscomp.arrayIterator = function(a) {
  38. var b = 0;
  39. return $jscomp.iteratorPrototype(function() {
  40. return b < a.length ? {
  41. done: !1,
  42. value: a[b++]
  43. } : {
  44. done: !0
  45. }
  46. })
  47. };
  48. $jscomp.iteratorPrototype = function(a) {
  49. $jscomp.initSymbolIterator();
  50. a = {
  51. next: a
  52. };
  53. a[$jscomp.global.Symbol.iterator] = function() {
  54. return this
  55. };
  56. return a
  57. };
  58. $jscomp.iteratorFromArray = function(a, b) {
  59. $jscomp.initSymbolIterator();
  60. a instanceof String && (a += "");
  61. var c = 0,
  62. d = {
  63. next: function() {
  64. if (c < a.length) {
  65. var e = c++;
  66. return {
  67. value: b(e, a[e]),
  68. done: !1
  69. }
  70. }
  71. d.next = function() {
  72. return {
  73. done: !0,
  74. value: void 0
  75. }
  76. };
  77. return d.next()
  78. }
  79. };
  80. d[Symbol.iterator] = function() {
  81. return d
  82. };
  83. return d
  84. };
  85. $jscomp.polyfill = function(a, b, c, d) {
  86. if (b) {
  87. c = $jscomp.global;
  88. a = a.split(".");
  89. for (d = 0; d < a.length - 1; d++) {
  90. var e = a[d];
  91. e in c || (c[e] = {});
  92. c = c[e]
  93. }
  94. a = a[a.length - 1];
  95. d = c[a];
  96. b = b(d);
  97. b != d && null != b && $jscomp.defineProperty(c, a, {
  98. configurable: !0,
  99. writable: !0,
  100. value: b
  101. })
  102. }
  103. };
  104. $jscomp.polyfill("Array.prototype.keys", function(a) {
  105. return a ? a : function() {
  106. return $jscomp.iteratorFromArray(this, function(a) {
  107. return a
  108. })
  109. }
  110. }, "es6", "es3");
  111. $jscomp.findInternal = function(a, b, c) {
  112. a instanceof String && (a = String(a));
  113. for (var d = a.length, e = 0; e < d; e++) {
  114. var f = a[e];
  115. if (b.call(c, f, e, a)) return {
  116. i: e,
  117. v: f
  118. }
  119. }
  120. return {
  121. i: -1,
  122. v: void 0
  123. }
  124. };
  125. $jscomp.polyfill("Array.prototype.find", function(a) {
  126. return a ? a : function(a, c) {
  127. return $jscomp.findInternal(this, a, c).v
  128. }
  129. }, "es6", "es3");
  130. var _typeof = "function" === typeof Symbol && "symbol" === typeof Symbol.iterator ? function(a) {
  131. return typeof a
  132. } : function(a) {
  133. return a && "function" === typeof Symbol && a.constructor === Symbol && a !== Symbol.prototype ? "symbol" : typeof a
  134. },
  135. _createClass = function() {
  136. function a(a, c) {
  137. for (var b = 0; b < c.length; b++) {
  138. var e = c[b];
  139. e.enumerable = e.enumerable || !1;
  140. e.configurable = !0;
  141. "value" in e && (e.writable = !0);
  142. Object.defineProperty(a, e.key, e)
  143. }
  144. }
  145. return function(b, c, d) {
  146. c && a(b.prototype, c);
  147. d && a(b, d);
  148. return b
  149. }
  150. }(),
  151. _emergencyVehicles;
  152.  
  153. function _classCallCheck(a, b) {
  154. if (!(a instanceof b)) throw new TypeError("Cannot call a class as a function");
  155. }
  156.  
  157. function _defineProperty(a, b, c) {
  158. b in a ? Object.defineProperty(a, b, {
  159. value: c,
  160. enumerable: !0,
  161. configurable: !0,
  162. writable: !0
  163. }) : a[b] = c;
  164. return a
  165. }
  166. var lang_de = {
  167. window_login: {
  168. registerUpperCase: "Registrieren",
  169. loginUpperCase: "Login",
  170. passwordsecurity: "Passwortsicherheit",
  171. YourPasswordMustMeetAtLeastThreeOfTheseConditions: "Dein Passwort muss mindestends drei dieser Bedingungen erfuellen",
  172. anUppercase: "einen Grossbuchstaben",
  173. aLowercase: "einen Kleinbuchstaben",
  174. aNumber: "eine Zahl",
  175. aSpecialCharacter: "eine Sonderzeichen",
  176. ANDmin8CharsLong: "UND mind. 8 Zeichen lang sein",
  177. repeatPassword: "Passwort wiederholen",
  178. yourPasswordIsConsistent: "Dein Passwort stimmt ueberein",
  179. yourPasswordIsInconsistent: "Dein Passwort stimmt nicht ueberein",
  180. yourPasswoPrivacyPolicy: "Ich akzeptiere die Datenschutzerklaerung",
  181. privacyPolicy: "Datenschutzerklaerung",
  182. patchnotes: "Patchnotes",
  183. successUpperCase: "Erfolg",
  184. overview: "Uebersicht",
  185. email: "Email",
  186. password: "Passwort",
  187. username: "Benutzername",
  188. completeFieldsCorrect: "Bitte fuelle alle Felder korrekt aus!",
  189. registerSurveyQuestion: "Eine letzte Sache: Wir wuerden gerne erfahren, wie du den Weg zu uns gefunden hast.",
  190. youtube: "YouTube",
  191. userForUser: "User werben User",
  192. pleaseChoose: "Bitte auswaehlen"
  193. },
  194. window_settings: {
  195. 1: "Spiel",
  196. 2: "Grafik",
  197. 3: "Audio",
  198. 4: "Account",
  199. einstellungen: "Spieleinstellungen",
  200. old_pw: "Altes Passwort",
  201. new_pw: "Neues Passwort"
  202. },
  203. window_gasstation: {
  204. gasstation: "Tankstelle",
  205. tankup: "Volltanken",
  206. liter: "Liter",
  207. tank: "Tanken",
  208. buycanister: "Kanister kaufen",
  209. buysnack: "Snack kaufen"
  210. },
  211. account: {
  212. wrongPW: "~r~Falsches Passwort!",
  213. Bonus: " Vielen Dank f\u00fcr deinen Support!",
  214. Bonus1: "+ 20.000 $ (Bankkonto)",
  215. Bonus2: "+ 50 Lagerplatz im Inventar",
  216. Bonus2_1: "+ 1 Fahrzeugslot",
  217. Bonus3: "+ 1 Bonusfahrzeug (Abholbar bei HayesAutos)",
  218. changedPW: "~g~Du hast dein Passwort erfolgreich ge\u00e4ndert!",
  219. changedEMail: "~g~Du hast deine E-Mail Adresse erfolgreich ge\u00e4ndert!"
  220. },
  221. items: {
  222. inventory: "Inventar",
  223. group: "Gruppe",
  224. color: "Farbauswahl",
  225. seccolor: "Nebenfarbe",
  226. primcolor: "Hauptfarbe",
  227. house: "Haus",
  228. object: "Objekte",
  229. removeItem: "{1} hat {2} x {3} weggeworfen!",
  230. no_money: "Du hast nicht genug Geld! Kosten:",
  231. no_mats: "Du hast nicht genug Metallteile! Kosten:",
  232. take_illegal: "Deine illegalen Gegenst\u00e4nde wurden entfernt!",
  233. inventory_full: "Dein Inventar ist zu voll, daher hast du nicht alle Items erhalten!",
  234. inventory_too_full: "Dein Inventar ist zu voll!",
  235. buy: "Kaufen",
  236. rent: "CarFlex (Mieten)",
  237. HayesAutos: "HayesAutos",
  238. barber: "Friseur",
  239. storage: "Lager",
  240. carshop: "Fahrzeugladen",
  241. save: "Speichern",
  242. "item.-1": "Schl\u00fcsselbund",
  243. "desc.-1": "Hier sind die Schl\u00fcssel deiner Besitzt\u00fcmer",
  244. "legal.-1": "1",
  245. "weight.-1": "0",
  246. "item.0": "$",
  247. "desc.0": "Dein Bargeld was du mit dir tr\u00e4gst",
  248. "legal.0": "1",
  249. "weight.0": "0.00025",
  250. "item.1": "Haus",
  251. "desc.1": "Dein Haus",
  252. "legal.1": "1",
  253. "weight.1": "0",
  254. "item.2": "Haftbombe",
  255. "desc.2": "Eine Bombe aus 680g Nitroglycerin und Cellulosenitrat",
  256. "legal.2": "0",
  257. "weight.2": "4",
  258. "item.3": "Aceton (ml)",
  259. "desc.3": "Aceton ist eine farblose Fl\u00fcssigkeit und findet Verwendung als polares, aprotisches L\u00f6sungsmittel und als Ausgangsstoff f\u00fcr viele Synthesen der organischen Chemie",
  260. "legal.3": "0",
  261. "weight.3": "0.5",
  262. "item.4": "Benzol (ml)",
  263. "desc.4": "Benzol ist ein fl\u00fcssiger organischer Kohlenwasserstoff mit der Summenformel C6H6",
  264. "legal.4": "0",
  265. "weight.4": "0.5",
  266. "item.5": "40%tiges Methylamin (ml)",
  267. "desc.5": "40%tiges Methylamin ist das einfachste organische Amin und enth\u00e4lt eine prim\u00e4re Aminogruppe. Es kommt als 40%ige w\u00e4ssrige L\u00f6sung und als druckverfl\u00fcssigtes Gas in den Handel",
  268. "legal.5": "0",
  269. "weight.5": "0.5",
  270. "item.6": "Phenylaceton (ml)",
  271. "desc.6": "Phenylaceton ist eine farblose bis schwach gelbe Fl\u00fcssigkeit mit einem starken, charakteristischen Geruch, die in der chemischen und pharmazeutischen Industrie Verwendung findet. Wird aus 10(ml) Aceton und aus 10(ml) Benzol hergestellt",
  272. "legal.6": "0",
  273. "weight.6": "0.5",
  274. "item.7": "Methamphetamin (g)",
  275. "desc.7": "Methamphetamin geh\u00f6rt zur Substanzklasse der Amphetamine. Es wird aus 10(ml) Phenylaceton und aus 10(ml) 40%tiges Methylamin hergestellt",
  276. "legal.7": "0",
  277. "weight.7": "1",
  278. "item.8": "Schokoriegel",
  279. "desc.8": "Ein leckerer Schokoriegel der dir das Wasser im Mund zerflie\u00dfen l\u00e4sst",
  280. "legal.8": "1",
  281. "weight.8": "0.5",
  282. "item.9": "Beschlagnahmte Gegenst\u00e4nde",
  283. "desc.9": "Illegale Gegenst\u00e4nde die von Straft\u00e4tern abgenommen wurden",
  284. "legal.9": "1",
  285. "weight.9": "1",
  286. "item.10": "Metallteile",
  287. "item.10_1": "Metallteil",
  288. "desc.10": "Verschiedene Metallbauteile um Waffen herzustellen",
  289. "legal.10": "0",
  290. "weight.10": "1",
  291. "item.11": "EC-Karte",
  292. "desc.11": "Dies ist deine Bankkarte womit du an ATM's dein Geld verwalten kannst",
  293. "legal.11": "1",
  294. "weight.11": "0",
  295. "item.12": "Treibstoffkanister",
  296. "desc.12": "Ein 5l Treibstoffkanister",
  297. "legal.12": "1",
  298. "weight.12": "8",
  299. "item.13": "Reparaturkit",
  300. "desc.13": "Mit diesem Reparaturkit kannst du dein Auto von au\u00dfen reparieren",
  301. "legal.13": "1",
  302. "weight.13": "8",
  303. "item.14": "Spitzhacke",
  304. "desc.14": "Mit einer Spitzhacke kannst du in Minen Gestein aus der Wand schlagen. Leider bricht dieses Werkzeug auch, ab und zu",
  305. "legal.14": "1",
  306. "weight.14": "5",
  307. "item.15": "Presslufthammer",
  308. "desc.15": "Dieser Presslufthammer mit motorgetriebenen Kompressor eignet sich ideal um Gestein aus dem Boden zu schlagen.",
  309. "legal.15": "1",
  310. "weight.15": "10",
  311. "item.16": "Eisenerz",
  312. "desc.16": "Eisenerz ist ein Gemenge aus nat\u00fcrlich vorkommenden chemischen Verbindungen des Eisens und nicht- oder kaum eisenhaltigem Gestein.",
  313. "legal.16": "1",
  314. "weight.16": "1",
  315. "item.17": "Golderz",
  316. "desc.17": "Golderz ist ein Gemenge aus nat\u00fcrlich vorkommenden chemischen Verbindungen des Goldes und nicht- oder kaum eisenhaltigem Gestein.",
  317. "legal.17": "1",
  318. "weight.17": "4",
  319. "item.18": "Kaliumnitrat",
  320. "desc.18": "Kaliumnitrat bildet farblose Kristalle, die sich in Wasser unter starker Abk\u00fchlung l\u00f6sen. Es ist der Hauptbestandteil von Schwarzpulver.",
  321. "legal.18": "1",
  322. "weight.18": "0.5",
  323. "item.19": "MediKit",
  324. "desc.19": "Mit MediKits k\u00f6nnen Sanit\u00e4ter einen Spieler wiederbeleben oder bei Nutzung erh\u00f6ht sich das Leben stark.",
  325. "legal.19": "1",
  326. "weight.19": "1",
  327. "item.20": "Gangmedaille",
  328. "desc.20": "Mit Gangmedaillen ist es m\u00f6glich Erweiterungen f\u00fcr Gangs freizuschalten!",
  329. "legal.20": "1",
  330. "weight.20": "0",
  331. "item.21": "Schwarzpulver",
  332. "desc.21": "Schwarzpulver wird zusammen mit Metallteilen zur Herstellung von Haftbomben ben\u00f6tigt!",
  333. "legal.21": "0",
  334. "weight.21": "1",
  335. "item.22": "Hanf-Steckling",
  336. "desc.22": "Abgeschnittener Teil einer Mutterpflanze um ohne den Keimprozess eine neue Hanfpflanze zu z\u00fcchten",
  337. "legal.22": "0",
  338. "weight.22": "0.5",
  339. "item.23": "Hanf",
  340. "desc.23": "Die Bl\u00fcte der Hanfpflanze. Wird aufgrund der berauschenden und schmerzstillenden Wirkung geraucht.",
  341. "legal.23": "0",
  342. "weight.23": "1",
  343. "item.24": "Angelrute",
  344. "desc.24": "Die Angelrute hat die Aufgabe, den Haken mit K\u00f6der gut zu positionieren und den Anhieb sicher zu setzen. Sie kann brechen, falls ein zu gro\u00dfer Fisch angebissen hat.",
  345. "legal.24": "1",
  346. "weight.24": "2",
  347. "item.25": "Angelhaken",
  348. "desc.25": "Er dient zur Befestigung des Angelk\u00f6ders sowie dazu, einen gefangenen Fisch an der Schnur zu halten. Er rei\u00dft manchmal ab.",
  349. "legal.25": "1",
  350. "weight.25": "0.2",
  351. "item.26": "Fischernetz",
  352. "desc.26": "Ein Fischernetz ist ein engmaschiges, netzf\u00f6rmiges textiles Fl\u00e4chengebilde, das zum Fischfang genutzt wird.",
  353. "legal.26": "1",
  354. "weight.26": "4",
  355. "item.27": "Holzkiste",
  356. "desc.27": "Eine verzierte Holzkiste, die alle m\u00f6glichen Gegenst\u00e4nde beinhalten kann.",
  357. "legal.27": "1",
  358. "weight.27": "10",
  359. "item.28": "Forelle",
  360. "desc.28": "Eine frisch gefangene Forelle, die sich hervorragend zum verspeisen eignet.",
  361. "legal.28": "1",
  362. "weight.28": "0.5",
  363. "item.29": "Munition A",
  364. "desc.29": "Munition A wird f\u00fcr Handfeuerwaffen (zB: Pistol, Revolver) ben\u00f6tigt",
  365. "legal.29": "1",
  366. "weight.29": "0.1",
  367. "item.30": "Munition B",
  368. "desc.30": "Munition B wird f\u00fcr leichte Maschinengewehre (zB: SMG, MiniSMG) ben\u00f6tigt",
  369. "legal.30": "1",
  370. "weight.30": "0.1",
  371. "item.31": "Munition C",
  372. "desc.31": "Munition C wird f\u00fcr Maschinengewehre (zB: MG, CombatMG) ben\u00f6tigt",
  373. "legal.31": "1",
  374. "weight.31": "0.1",
  375. "item.32": "Munition D",
  376. "desc.32": "Munition D wird f\u00fcr schwere Maschinengewehre (zB: CarbineRifle, CompactRifle) ben\u00f6tigt",
  377. "legal.32": "1",
  378. "weight.32": "0.1",
  379. "item.33": "Munition E",
  380. "desc.33": "Munition E wird f\u00fcr Pr\u00e4zisionswaffen (zB: SniperRifle, HeavySniper) ben\u00f6tigt",
  381. "legal.33": "1",
  382. "weight.33": "0.1",
  383. "item.34": "Munition F",
  384. "desc.34": "Munition F wird f\u00fcr Schrotflinten (zB: PumpShotgun, AssaultShotgun) ben\u00f6tigt",
  385. "legal.34": "1",
  386. "weight.34": "0.1",
  387. "item.35": "Muschel",
  388. "desc.35": "Muscheln ( ugs. Mupfel ) k\u00f6nnen beim \u00d6ffnen Perlen beinhalten",
  389. "legal.35": "1",
  390. "weight.35": "0.5",
  391. "item.36": "Krabbe",
  392. "desc.36": "Eine frisch gefangene Krabbe, die sich hervorragend zum verspeisen eignet.",
  393. "legal.36": "1",
  394. "weight.36": "0.5",
  395. "item.37": "K\u00fcrbis",
  396. "desc.37": "K\u00fcrbisse k\u00f6nnen zum Kauf von seltenen Fahrzeugen genutzt oder ge\u00f6ffnet werden!",
  397. "legal.37": "1",
  398. "weight.37": "1",
  399. "item.38": "Rucksack",
  400. "desc.38": "Ein Rucksack erweitert dein Inventar um 150. Sollte dein Rucksack ablaufen, so gehen keine Items verloren!",
  401. "legal.38": "1",
  402. "weight.38": "0",
  403. "item.39": "Credits",
  404. "desc.39": "Im Bonusshop kannst du mit Credits einige sehr hilfreiche Inhalte freischalten! Aufladen kannst du diese unter http://shop.vio-v.com",
  405. "legal.39": "1",
  406. "weight.39": "0"
  407. },
  408. house: {
  409. tooSell: "Mit /buyhouse kannst du dieses Haus kaufen",
  410. waypoint: "Standort markiert",
  411. spawnchange: "Spawnpunkt angepasst",
  412. notForRent: "Das Haus wurde vom Besitzer nicht zum Vermieten freigegeben!",
  413. tooCreateGang: "Mit /creategang kannst du hier eine Gang erstellen!",
  414. houseOwner: "Du hast bereits ein Haus!",
  415. houseRentDetail: "Du wohnst hier zur Miete Kosten: {1} $/Stunde",
  416. houseUnRentDetail: "Um den Mietvertrag zu k\u00fcndigen, \u00e4ndere deinen Spawnpunkt unter F3",
  417. newHouseOwner: "Herzlichen Glueckwunsch! Du bist nun Hausbesitzer!",
  418. openHouse: "Haus aufgeschlossen",
  419. closeHouse: "Haus abgeschlossen",
  420. rentPrice: "Die Miete muss zwischen 0 und 250 $ betragen!",
  421. setHouseToRent: "Der Vermietungsmodus deines Hauses ist aktuell deaktivert. Aktivieren diesen um dein Haus vermieten zu k\u00f6nnen.",
  422. setRentPrice: "Die Miete wurde erfolgreich gesetzt",
  423. howToRent: "Nutze /rent um dich in dieses Haus einzumieten",
  424. setRent: "Nutze /setrent {1} [Preis] um die Miete festzulegen",
  425. notIfForRent: "Du kannst die T\u00fcre nicht zuschlie\u00dfen, solange du das Haus vermietest!",
  426. sellHouseUsage: "Nutze /sellhouse {1} um dein Haus zu verkaufen.",
  427. sellHousePrice: "Verkaufspreis:",
  428. soldHouseServer: "Du hast dein Haus an den Server verkauft!"
  429. },
  430. vehicle: {
  431. respawned: "Fahrzeug respawnt",
  432. respawnedVehicles: "Fahrzeuge respawnt",
  433. wrongParked: "Da dein Fahrzeug falsch geparkt ist, kannst du es im Moment nicht nutzen!",
  434. spawnWrongParkedVehicle: "Nutze /spawnVehicle {1} um dein Fahrzeug wieder zu erstellen!",
  435. markWrongParkedVehicle: "Begib dich zur markieren Stelle um dein Fahrzeug umzuparken.",
  436. markWrongParkedVehicle1: "Sollte sich dein Fahrzeug nicht an der markierten Stelle befinden nutze den Befehl erneut!",
  437. locked: "Fahrzeug abgeschlossen",
  438. slot: "Weiterer Fahrzeugslot",
  439. locked_failed: "Dieses Fahrzeug hat keine T\u00fcren!",
  440. seatbelt_on: "Du hast dich angeschnallt",
  441. seatbelt_off: "Du hast dich abgeschnallt",
  442. warning_on: "Warnblinker aktiviert",
  443. warning_off: "Warnblinker deaktiviert",
  444. howToPark: "Nutze /park um dein Fahrzeug umzuparken",
  445. engineNeedOut: "Der Motor des Fahrzeuges muss ausgeschaltet sein!",
  446. noRepairKit: "Du ben\u00f6tigst ein Reparaturkit",
  447. noFuelCan: "Du ben\u00f6tigst einen Treibstoffkanister",
  448. unlocked: "Fahrzeug aufgeschlossen",
  449. waypoint: "Fahrzeug markiert",
  450. noVehicle: "Du befindest dich in keinem Fahrzeug",
  451. onlySellPrivateVehicle: "Du kannst nur Privatfahrzeuge verkaufen",
  452. onlySellOwnVehicle: "Du kannst nur dein eigenes Privatfahrzeug verkaufen",
  453. parked: "Fahrzeug geparkt",
  454. toofast: "Das Fahrzeug bewegt sich!",
  455. targetToFarAway: "Der Handelspartner ist zu weit entfernt!",
  456. toofastVehicle: "Das Fahrzeug ist zu schnell!",
  457. sellVehicleUsage: "Nutze /sellvehicle {1} um dein Fahrzeug an den Server zu verkaufen.",
  458. checkSellVehicleTo: "Handelsanfrage an {1} | Fahrzeug: {2} | Preis: {3} $",
  459. checkSellVehicleToAnswer: "Sind alle Angaben richtig? ~g~/sendRequest~w~ um das Angebot zu senden andernfalls ~r~/cancelRequest",
  460. sellVehiclePrice: "Server-Verkaufspreis:",
  461. sellVehicleToUsage: "Oder nutze /sellto [Name] [Preis] um dein Fahrzeug an einen Spieler zu verkaufen!",
  462. stopSendRequest: "Anfrage abgebrochen!",
  463. cancleRequest: "Handelsanfrage abgelehnt!",
  464. soldVehicleServer: "Du hast dein Fahrzeug an den Server verkauft!",
  465. limitReached: "Du hast das Fahrzeuglimit erreicht!",
  466. repaired: "Fahrzeug repariert!",
  467. notEmty: "Fahrzeug nicht leer!",
  468. FuelLow: "Der Tank des Fahrzeugs ist leer! Du kannst das Fahrzeug mit einem Benzinkanister betanken!",
  469. pleaseReconnect: "Verbinde dich erneut auf dem Server und parke dein Fahrzeug dann direkt um!",
  470. carflex_end_1: "Deine Mietzeit ist fast abgelaufen. Nutze /updaterent um deine",
  471. carflex_end_2: "Fahrzeugmietdauer um 10 Minuten zu erh\u00f6hen. Kosten : ",
  472. carflex_double: "Du hast bereits ein Fahrzeug bei uns angemietet!",
  473. carflex_renew: "Der Mietvertrag wurde um 10 Minuten verl\u00e4ngert!!",
  474. carflex_renew_time: "Dein Mietvertrag kann noch nicht verl\u00e4ngert werden!",
  475. carflex_nocar: "Auf dich ist kein Mietfahrzeug registiert!",
  476. carflex_finalend: "Der Mietvertrag ist ausgelaufen!",
  477. noKey: "~r~Du hast keinen Schl\u00fcssel!",
  478. gasFilled: "Fahrzeug betankt!",
  479. gasFull: "Fahrzeugtank zu voll!",
  480. HayesAutos_noCar: "Du hast kein Fahrzeug, welches bei mir abgegeben wurde.",
  481. HayesAutos_Car: "Eines oder mehrere deiner Fahrzeuge stehen bei Hayes Autos. Hole es dort ab.",
  482. HayesAutos_CarExploded: "Dein Fahrzeug wurde zerst\u00f6rt und in Hayes Werkstatt geschleppt.",
  483. HayesAutos_CarExploded1: "Dort kannst du es gegen eine Geb\u00fchr abholen.",
  484. HayesAutos_CarBuySpawn: "Fahrzeug repariert. Es befindet sich an der Parkposition"
  485. },
  486. quest: {
  487. quest_CarFlex: "Begib dich zum CarFlex (rotes C) der Autovermietung auf VioV um dir ein Fahrzeug zu mieten | Belohnung : 125 $",
  488. quest_EngineUse: "Prima! Du bist nun mobil. Mit der Taste X (gedrueckt halten) kannst du den Motor an/aus schalten. Schalte den Motor aus! | Belohnung : 75 $",
  489. quest_ChangeSpawn: "Mit der Taste F3 kannst du auf deine Einstellungen zugreifen. Dort kannst du dir zB DelPenno als Spawn setzen. Nutze F3 und passe deinen Spawnpunkt an | Belohnung : 225 $",
  490. quest_HelpUse: "Bei Fragen rund um das Spiel kannst du unser Hilfe/Ticketsystem nutzen. \u00d6ffne das Handy (Taste P) und klicke auf das ? um das Hilfe/Ticketsystem zu \u00f6ffnen | Belohnung : 50 $",
  491. quest_FirstJob: "Jobs werden in VioV als gruenes Symbol auf der Karte markiert. Verdiene mit einem Job 1.000 $ [ {1} $ ] | Belohnung : 1.200 $",
  492. quest_BuySnack: "Lebenspunkte sind kostbar! Kaufe dir zum Beispiel bei einem Shop einen Schokoriegel | Belohnung : 7 Schokoriegel",
  493. quest_BuyPetrolCan: "Schieben war gestern! Kaufe dir bei einer Tankstelle einen Treibstoffkanister | Belohnung : 5 Treibstoffkanister",
  494. quest_CashpointUse: "Bankautomaten kannst du mit der Taste E nutzen. Zahle etwas Geld auf dein Konto ein | Belohnung : 250 $",
  495. quest_BuyWeedSeed: "Kaufe Hanf-Stecklinge an der Hanfplantage in Grapeseed | Belohnung : 10 Hanf-Stecklinge",
  496. quest_PlantWeedSeed: "Pflanze deinen Steckling | Belohnung : 10 Hanf-Stecklinge",
  497. quest_HarvestWeed: "Ernte 1 g Hanf | Belohnung : 25 g Hanf",
  498. quest_SellWeed: "Verkaufe dein geerntetes Hanf auf der Hanfplantage in Grapeseed | Belohnung : 5.000 $",
  499. quest_BuyHinge: "Kaufe eine Angel bei Millars Fishery in Great Chaparral | Belohnung : 10 Angelruten",
  500. quest_StartFishing: "Wirf deine Angel aus und befolge die Schritte, welche dir \u00fcber der Minimap angezeigt werden | Belohnung : 20 Angelhaken",
  501. quest_Fish50: "Angel 50 Forellen [ {1} Forellen ] | Belohnung : 5.000 $",
  502. quest_BuyVehicle: "Der Traum vom eigenen Fahrzeug. Kaufe dir ein Fahrzeug bei einem Autohaus (goldenes Symbol auf der Karte) | Belohnung : 5.000 $",
  503. quest_ParkVehicle: "Parken nur auf gekennzeichneten Parkplaetze erlaubt! Parke dein Fahrzeug mit /park | Belohnung : 1.250 $",
  504. quest_DrugMission: "Einige der Gegenstaende sind illegal. Darum solltest du damit aufpassen! Erhalte von der Drogendealermission 15 mL Aceton [ {1} mL ] | Belohnung : 20 mL Benzol \x26 20 mL Aceton",
  505. quest_DrugCraftPhenylaceton: "Finde eine Drogenkueche (in Sandy Shores) und stelle dort 1 mL Phenylaceton her. Hierfuer ben\u00f6tigst du 10 mL Aceton und 10 mL Benzol | Belohnung : 10 mL Phenylaceton \x26 20 mL 40%tiges Methylamin",
  506. quest_DrugCraftMethamphetamin1: "Stelle 1 g Methamphetamin her. Hierfuer ben\u00f6tigst du 10 mL 40%tiges Methylamin und 10 mL Phenylaceton | Belohnung : 10 mL Phenylaceton \x26 20 mL 40%tiges Methylamin",
  507. quest_DrugCraftMethamphetamin5: "Die Nachfrage an Methamphetamin explodiert. Stelle 5 g Methamphetamin her. [ {1} g ] | Belohnung : 5 g Methamphetamin",
  508. quest_SellMethamphetamin: "Einige Obdachlose kaufen Methamphetamin. Verkaufe Methamphetamin an einen Obdachlosen. Obdachlose findest du zB unter Bruecken. | Belohnung : 6.250 $"
  509. },
  510. mission: {
  511. missionAccomplished: "+ {1} {2}",
  512. noGunLicens: "~r~Du besitzt den erforderlichen Waffenschein nicht!",
  513. toFootSelectedPositionRentCar: "Begebe dich zu der makierten Position um dir ein Fahrezug zu mieten.",
  514. toSelectedPosition: "Bringe das Fahrzeug zur markierten Position.",
  515. toSearchPeace: "Dort kannst du es in Ruhe durchsuchen.",
  516. howToCraft: "Dr\u00fccke in deinem Inventar auf eine Chemikalie um diese zu verwenden!",
  517. mission_3_dialog_1: "Gestern ist mein Vater bei einer Verfolgungsjagd gestorben",
  518. mission_3_dialog_2: "Ich brauche dringend Stoff. Daf\u00fcr kannst du den alten Journey haben.",
  519. mission_3_dialog_3: "Bring mir 130 g Methamphetamin \x26 20.000 $ und er ist deiner.",
  520. mission_3_dialog_4: "Nutze /buyjourney",
  521. mission_5_dialog_1: "Das Lager ist voll!",
  522. mission_5_dialog_2: "Lieferung abgegeben!",
  523. mission_5_dialog_3: "Wir haben aktuell nichts zum verkaufen",
  524. craftPhenylacetonMissingRes: "Synthese : 10mL Aceton \x26 10mL Benzol",
  525. vehicleEngineOff: "Der Motor des Journey ist ausgeschaltet!",
  526. vehicleNoDriverSeat: "Du befindest dich nicht auf dem Fahrersitz!",
  527. craftMethamphetaminMissingRes: "Synthese : 10mL 40%tiges Methylamin und 10mL Phenylaceton",
  528. craftSchwarzpulverMissingRes: "Synthese : 10 Kaliumnitrat",
  529. craftHaftbombeMissingRes: "Synthese : 15 Schwarzpulver und 5 Metallteile",
  530. craftPhenylacetonNoJourney: "Du musst dich in einem Journey oder einem Labor befinden!",
  531. mission_5_dialog_4_1: "~b~[Department] ~r~Es wurde ein Truck mit einer Menge illegaler Gegenst\u00e4nde beladen",
  532. mission_5_dialog_4_2: "~b~[Department] ~r~Es wurde ein Fahrzeug mit einigen illegalen Gegenst\u00e4nde beladen",
  533. mission_5_dialog_4_3: "~b~[Department] ~r~Es wurde ein Fahrzeug mit ein paar illegalen Gegenst\u00e4nde beladen",
  534. mission_5_dialog_5_1: "~b~[Department] ~r~Ein Truck mit einer Menge illegaler Gegenst\u00e4nde wurde entladen",
  535. mission_5_dialog_5_2: "~b~[Department] ~r~Ein Fahrzeug mit einigen illegalen Gegenst\u00e4nde wurde entladen",
  536. mission_5_dialog_5_3: "~b~[Department] ~r~Ein Fahrzeug mit ein paar illegalen Gegenst\u00e4nde wurde entladen",
  537. mission_5_dialog_6: "~r~{1} hat ein Fahrzeug mit illegalen Gegenst\u00e4nden beladen",
  538. mission_6_dialog_1: "~b~Es wurde ein Asservatentruck beladen!",
  539. mission_6_dialog_2: "~r~Es wurde ein Asservatentruck entladen!",
  540. errorSubmitQuest: "~r~Du kannst diese Quest nicht abschlie\u00dfen!"
  541. },
  542. faction: {
  543. untiedBy: "{1} hat {2} entfesselt",
  544. tiedBy: "{1} hat {2} gefesselt",
  545. removedIllegalItems: "{1} hat {2} illegale Gegenst\u00e4nde aus dem Fahrzeug entfernt!",
  546. searchedIllegalItems: "{1} hat das Fahrzeug nach illegalen Gegenst\u00e4nden durchsucht!",
  547. freeFromJail: "Du wurdest freigelassen!",
  548. jailTime: "Du befindest dich noch 1 Minute im Knast!",
  549. jailTimes: "Du befindest dich noch {1} Minuten im Knast!",
  550. lottoNumbers: "Die Lottozahlen : {1} , {2} , {3}",
  551. lottoNumbersWinner: "Gewinner : {1} : {2} $",
  552. eventSystemActive: "{1} hat das Eventsystem aktiviert!",
  553. eventSystemDeactive: "{1} hat das Eventsystem deaktiviert!",
  554. newWeather: "Das Wetter wird {1}",
  555. thunderstormWarning: "~r~Meteorologen warnen vor einem kommenden starkem Unwetter!",
  556. notInGanghouse: "Du musst dich im Ganghaus befinden!",
  557. unrestPlayer: "~b~[Department] ~g~{1} hat {2} aus dem Knast entlassen.",
  558. lockedPDNPC: "~b~[Department] ~g~{1} hat den PD - NPC deaktiviert.",
  559. unlockedPDNPC: "~b~[Department] ~g~Der PD - NPC wurde aktiviert.",
  560. someoneIsInBank: "~b~[Department] ~b~Eine unbekannte Person wurde am Tresor einer Bank gesichtet.",
  561. bankIsGettingRobbedFromGang: "~b~[Department] ~r~Die {1} wird von {2} ausgeraubt!",
  562. yourGroupRobsABank: "~r~Deine Gang raubt die {1} aus!",
  563. arrestedPlayer: "Du hast ~r~{1}~w~ eingesperrt.",
  564. arrestedBy: "~r~Du wurdest von ~b~{1}~w~ eingesperrt.",
  565. bankrobFromGangStopped: "~b~[Department] ~g~Die Gang {1} hat den Bank-Raub gestoppt und ist auf der Flucht!",
  566. yourGangsBankrobStopped: "~g~Deine Gang hat die Bank verlassen.",
  567. Lotto1: "~b~In 15 Minuten findet die Lottoziehung an der Base der Lifeinvader statt!",
  568. Lotto2: "~b~Die letzte Chance einen Lottoschein zu kaufen. In 5 Minuten findet die Lottoziehung statt!",
  569. LottoPot: "~g~Aktuell im Checkpot : 50.000 $",
  570. theGangRobsAShop: "~b~[Department] ~r~Es wurde ein Raub gemeldet!",
  571. yourGangRobsThePD: "~r~Deine Gang raubt die Polizei-Station aus!",
  572. yourGangRobsTheAmmo: "~r~Deine Gang raubt das Ammunation aus!",
  573. theGangRobsTheAmmo: "~b~[Department] ~r~Die Gang {1} raubt das Ammunation aus!",
  574. yourGangCaptureGangShop: "~r~Deine Gang nimmt einen Gangshop ein!",
  575. theGangCapturesGangShop: "~r~Die Gang {1} nimmt euren Gangshop ein!",
  576. theGangRobsThePD: "~b~[Department] ~r~Die Gang {1} raubt die Polizei-Station aus!",
  577. theGangStopsTheShopRob: "~b~[Department] ~g~Der R\u00e4uber flieht!",
  578. yourGangStopsThePoliceRob: "~g~Deine Gang hat mit dem Polizei-Raub aufgehoert und flieht!",
  579. yourGangStopsTheAmmoRob: "~g~Deine Gang hat mit dem Ammunation-Raub aufgehoert und flieht!",
  580. theGangStopsThePoliceRob: "~b~[Department] ~g~Die Gang {1} hat mit dem Polizei-Raub aufgehoert und flieht!",
  581. theGangStopsTheAmmoRob: "~b~[Department] ~g~Die Gang {1} hat mit dem Ammunation-Raub aufgehoert und flieht!",
  582. userHasBeenOfflineRemoved: "Der Spieler ist online und wurde entfernt!",
  583. userHasBeenOnlineRemoved: "Der Spieler ist offline und wurde entfernt!",
  584. userRemoved: "Du wurdest aus deiner Gruppe geworfen!",
  585. userIsLeader: "Der Spieler ist Leader!",
  586. userNotinTheGroup: "Der Spieler ist nicht in der Gruppe",
  587. userHasBeenPromoted: "{1} wurde von {2} auf den Rang {3} bef\u00f6rdert!",
  588. userHasBeenRelegated: "{1} wurde von {2} auf den Rang {3} degradiert!",
  589. userHasHighestRank: "Der Spieler hat bereits den h\u00f6chsten freigschalteten Rang",
  590. userHaslowestRank: "Der Spieler hat bereits den niedrigsten freigschalteten Rang",
  591. playerChangedRights: "Du hast die Berechtigung angepasst!",
  592. playerChangedRankName: "Du hast die Rangbezeichnung angepasst!",
  593. playerChangedRankBonus: "Du hast den Rangbonus angepasst!",
  594. noSpecialCharakterRankName: "Die Rangbezeichnung darf keine Sonderzeichen enthalten!",
  595. limitRankName: "Die Rangbezeichnung muss zwischen 4 und 15 Zeichen enthalten!",
  596. limitRankBonus: "Der Rangbonus muss zwischen 0 und 1000 Doller liegen!",
  597. playerChangedGangName: "Du hast den Gangnamen angepasst!",
  598. playerChangedGangColor: "Du hast die Gangfarbe angepasst! (Anpassung wird erst nach einem Serverneustart wirksam !!!)",
  599. noSpecialCharakterGangName: "Der Gangname darf keine Sonderzeichen enthalten!",
  600. limitGangName: "Der Gangname muss zwischen 4 und 15 Zeichen enthalten!",
  601. gangColorUsed: "Diese Gangfarbe wird bereits von einer anderen Gang genutzt!",
  602. newGangVehicle: "Deine Gang hat jetzt ein neues Gangfahrzeug! (Nutze /park)",
  603. vehicleRemoved: "Fahrzeug {1} wurde entfernt!",
  604. gangPromoted: "Eure Gang ist von Level {1} auf {2} gestiegen!",
  605. memberLimit: "Memberlimit {1}",
  606. vehicleLimit: "Fahrzeuglimit {1}",
  607. gangForumAccess: "Eurer Gang wurde ein Forumbereich erstellt, die Erstellung kann bis zu 24 Stunden dauern!",
  608. putRobBagOn: "Aktionstasche aufgenommen",
  609. putRobBagOff: "Aktionstasche abgelegt",
  610. clearPlayerWanteds: "~g~{1} ~w~hat die Akte von ~r~{2} ~w~entfernt!",
  611. addPlayerWanteds: "~g~{1} ~w~hat ~r~{2} ~w~ Wanteds gegeben Grund: {3}!",
  612. addPlayerToPrison: "~g~{1} ~w~hat ~r~{2} ~w~ eingesperrt!",
  613. freeFromWanteds: "~g~{1} hat deine Akte entfernt!",
  614. haveToBeInGang: "Dazu musst du in einer Gang sein!",
  615. onlyOneGangshop: "Wir haben bereits einen Gangshop!",
  616. noBagError: "... und wo willst du die Ware verstauen? Hol dir eine Tasche!",
  617. noPermission: "Du bist nicht befugt!",
  618. notInGroup: "Du bist nicht in der Gruppe!",
  619. leaveGroup: "Du hast die Gruppe verlassen!",
  620. playerChangedMsg: "Pinnwand bearbeitet!",
  621. needNoBag: "Komme ohne Aktionstasche wieder!",
  622. takeIllegal: "Du hast {1} {2} illegale Gegenstaende abgenommen.",
  623. foundIllegal: "Du hast bei {1} {2} illegale Gegenstaende gefunden.",
  624. noIllegal: "{1} besitzt keine illegale Gegenstaende.",
  625. checkKiller: "{1} sucht Spuren warum du gestorben bist.",
  626. checkedKiller: "Spurensuche bei {1} abgeschlossen.",
  627. noSkin: "Eure Gruppe hat keinen Gruppenskin!",
  628. useSkin: "Gruppenskin angenommen!",
  629. changedSkin: "Gruppenskin angepasst!",
  630. evidenceroomInfo: "Asservatenkammer {1}/{2}",
  631. surrenderWeapon: "Das Stellen ist nur ohne angelegte Waffe m\u00f6glich!",
  632. evidenceroomNotFull: "Die Asservatenkammer ist nicht voll genug!",
  633. medicHealDone: "~b~{1} hat {2} behandelt!",
  634. medicRevive: "~b~{1} hat {2} aufgenommen!",
  635. medicToPickup: "~r~{1} ist schwer verletzt!",
  636. medicName: "San Andreas Rescue Unit",
  637. medicDescription: "Willkommen bei der San Andreas Rescue Unit. F\u00fcr nur 75$ kannst du dich von einem Arzt behandeln lassen!.",
  638. medicInfo: "Wir behandeln nur Personen, welche nicht als gesucht gemeldet sind!",
  639. medicHeal: "Arzt aufsuchen",
  640. medicNoHeal: "Du ben\u00f6tigst im Moment noch keine \u00e4rztliche Hilfe.",
  641. respawnedBy: "{1} hat alle Gruppenfahrzeuge respawned.",
  642. targetInHouse: "Der Spieler befindet sich in einem Geb\u00e4ude",
  643. sosStart: "~r~{1} hat sofortige Unterst\u00fctzung angefordert!",
  644. sosError: "Unterst\u00fctzungsanfrage abgebrochen.",
  645. sosAlready: "Es existiert bereits eine Unterst\u00fctzungsanfrage!",
  646. wrongPositionUnjail: "Diese Aktion ist nur am Computer im Zellentrakt des L.S.P.D m\u00f6glich!",
  647. targetDead: "F\u00fcr diese Aktion muss der Spieler am Leben sein!",
  648. targetNotInJail: "Der Spieler befindet sich nicht im Gef\u00e4ngnis!",
  649. putWeaponAway: "Ich verkaufe nur an Personen ohne Waffe!",
  650. howToSaveMoney: "Du musst min. 3 Minuten \u00fcberleben um das Geld zu behalten!",
  651. bombFactory: "~b~Es wurde eine Person in der Umgebung eines Lagers gesichtet!",
  652. robFactory: "~r~Eure Fabrik wird ausgeraubt!",
  653. captureFactory: "~r~Eure Fabrik wird eingenommen!",
  654. lostFactory: "~r~Eure Fabrik wurde eingenommen! Ihr seid nun nicht mehr Besitzer der Fabrik!",
  655. capturedFactory: "~g~Ihr habt eine Fabrik erobert! Denkt daran, diese vor Diebstahl und Eroberungen zu verteidigen!",
  656. actions: {
  657. pedrobs: {
  658. shoprob: {
  659. incooldown: "Verk\u00e4ufer: Ich wurde doch erst vor kurzem ausgeraubt.",
  660. nocops: "Es sind nicht genug Cops online!",
  661. end: "Der Shop-Rob ist vorbei!",
  662. collected: "Du konntest ${1} sammeln.",
  663. start: "Shop-Rob gestartet!\nZiele weiter auf den NPC,\num das Geld zu bekommen."
  664. },
  665. policerob: {
  666. incooldown: "Polizist: Wir haben hier keine Waffen mehr! Alles weg!",
  667. nocops: "Es sind nicht genug Cops online!",
  668. end: "Der Police-Rob ist vorbei!",
  669. collected: "Du konntest ein(e) {1} in die Tasche bekommen.",
  670. start: "Police-Rob gestartet!\nZiele weiter auf den NPC,\num die Waffe zu bekommen."
  671. },
  672. ammorob: {
  673. incooldown: "NPC: Wir haben hier keine Waffen mehr! Alles weg!",
  674. nocops: "Es sind nicht genug Cops online!",
  675. end: "Der Ammunation-Rob ist vorbei!",
  676. collected: "Du konntest ein(e) {1} in die Tasche bekommen.",
  677. start: "Ammunation-Rob gestartet!\nZiele weiter auf den NPC,\num die Waffe zu bekommen."
  678. },
  679. gangseller: {
  680. incooldown: "Hilfe ... Ich habe nichts!",
  681. nogangs: "Es sind nicht genug Gangler online!",
  682. end: "",
  683. collected: "Gangshop eingenommen! Ihr koennt nun einen Matstruck am Gangshop abgeben!",
  684. start: "Gangshop-Capture gestartet!\nZiele weiter auf den NPC,\num den Shop einzunehmen!"
  685. }
  686. },
  687. bankrob: {
  688. end: "Du konntest ${1} sammeln.",
  689. player: {
  690. collected: "Gesammelt: ",
  691. seconds: " Sekunden"
  692. }
  693. }
  694. }
  695. },
  696. vehiclemods: {
  697. "item.0": "Spoiler",
  698. "item.1": "Front Sto\u00dfstange",
  699. "item.2": "Heck Sto\u00dfstange",
  700. "item.3": "Seitenschweller",
  701. "item.4": "Auspuff",
  702. "item.5": "Fahrgestell",
  703. "item.6": "K\u00fchlergrill",
  704. "item.7": "Motorhaube",
  705. "item.8": "Kotfl\u00fcgel",
  706. "item.9": "Rechter Kotfl\u00fcgel",
  707. "item.10": "Erweiterungen",
  708. "item.11": "Motor",
  709. "item.12": "Bremsen",
  710. "item.13": "Getriebe",
  711. "item.14": "Hupe",
  712. "item.15": "Fahrwerk",
  713. "item.16": "Panzerung",
  714. "item.18": "Turbolader",
  715. "item.22": "Xenon Scheinwerfer",
  716. "item.23": "Vorderr\u00e4der",
  717. "item.24": "Hinterr\u00e4der",
  718. "item.25": "Nummernschild",
  719. "item.27": "Ausstattungsfarbe",
  720. "item.28": "Amaturenfigur",
  721. "item.30": "Instrumente",
  722. "item.33": "Lenkrad",
  723. "item.34": "Schaltkn\u00fcppel",
  724. "item.35": "Nummerschilddesign",
  725. "item.38": "Hydrauik",
  726. "item.48": "Design",
  727. "item.62": "Nummernschildfarbe",
  728. "item.69": "Scheibent\u00f6nung",
  729. "item.200": "Unterbodenbeleuchtung",
  730. "item.300": "Lackierung"
  731. },
  732. admin: {
  733. chat_muted: "Du kannst keine Nachricht schreiben, du wurdest gemutet!",
  734. noAccount: "Es gibt keinen Spieler mit diesem Namen!",
  735. noBan: "Der Spieler ist nicht gebannt!",
  736. noWarn: "Es gibt keinen Warn mit diesem Namen!",
  737. noWarns: "Der Spieler hat keine aktiven Verwarnungen!",
  738. noWarnWithID: "Der Spieler hat keinen Warn mit dieser ID!",
  739. get_warn: "Du hast von {1} {2} Warnpunkte bekommen | Grund : {3}",
  740. del_warn: "Du hast den Warn von {1} mit {2} Warnpunkte entfernt!",
  741. del_sanction: "Du hast die Sanktion von {1} entfernt!",
  742. del_warn_by: "Admin {1} hat dir einen Warn entfernt!",
  743. warn: "Grund: {1} Ablaufdatum: {2} Punkte: {3}",
  744. warns_total: "Warnpunkte :",
  745. warns_view: "Verwarnungs\u00fcbersicht: ",
  746. set_warn: "Du hast {1} {2} Warnpunkte gegeben | Grund : {3}",
  747. set_freeze_true: "Du hast {1} gefreezt",
  748. get_freeze_true: "Du wurdest von Admin {1} gefreezt",
  749. set_freeze_false: "Du hast {1} entfreezt",
  750. get_freeze_false: "Du wurdest von Admin {1} entfreezt",
  751. set_mute_true: "Du hast {1} gemutet",
  752. get_mute_true: "Du wurdest von Admin {1} gemutet",
  753. set_mute_false: "Du hast {1} entmutet",
  754. get_mute_false: "Du wurdest von Admin {1} entmutet",
  755. vehicle: "Du befindest dich in einem Fahrzeug",
  756. novehicle: "Du befindest dich in keinem Fahrzeug",
  757. mark: "Du hast einen Marker gesetzt",
  758. "goto": "Du hast dich zu {1} teleportiert!",
  759. goto_target: "Admin {1} hat sich zu dir teleportiert!",
  760. gethere: "Du hast {1} zu dir teleportiert!",
  761. gethere_target: "Admin {1} hat dich teleportiert!",
  762. gotomark: "Du hast dich zu einem Marker teleportiert!",
  763. help: "Willkommen bei Vio-V solltest du einen Fehler entdecken, melde diesen einem Admin.",
  764. helpCmds: "F1 - FAQ | F2 - Wichtige Orte | F3 - Einstellungen"
  765. },
  766. storage: {
  767. error_invalid: "Es konnten einige Items nicht verschoben werden!",
  768. trade_failed: "Handel abgebrochen!",
  769. trade_too_full_target: "Das Inventar von deinem Handelspartner ist zu voll!",
  770. trade_too_full: "Dein Inventar ist zu voll!",
  771. trade_done: "Handel abgeschlossen!",
  772. trade_request_done: "Handelsanfrage gesendet!",
  773. trade_request_vehicle: "Handelsanfrage von {1} | Fahrzeug: {2} (Das Fahrzeug wurde markiert!) | Preis: {3} $",
  774. trade_request_vehicle_marked: "Nutze ~g~/buyvehicle~w~ um das Fahrzeug zu kaufen oder ~r~/skipvehicle~w~ um das Angebot abzulehnen!",
  775. trade_request_error: "Der Spieler kann aktuell nicht handeln!",
  776. trade_request: "Handelsanfrage von {1} | Nutze /atrade",
  777. trade_no_space: "Kein freier Slot!",
  778. trade_no_storage: "[ERROR] Es konnte kein Storage gefunden werden",
  779. payOutMoneyBank: "Auszahlung",
  780. medicBonus: "Krankenhausbehandlung",
  781. transferTarget: "Du hast von {1} {2} $ erhalten!",
  782. transferPlayer: "Du hast {1} {2} $ \u00fcberwiesen!",
  783. transferMin: "\u00dcberweisungen werden erst ab 250 $ entgegen genommen!",
  784. transferOffline: "Offline\u00fcberweisung aktuell nicht m\u00f6glich!",
  785. transfer: "\u00dcberweisung",
  786. lotto: "Lottogewinn",
  787. payInMoneyBank: "Einzahlung",
  788. Bonus: "Bonussystem",
  789. payFactionMoneyBank: "PayDay",
  790. payFactionBonus: "Bonus",
  791. payRent: "Miete",
  792. payVehicleTax: "Fahrzeugsteuern",
  793. target_istrading: "Der Spieler handelt bereits!",
  794. trade_target_notReady: "Der Spieler kann aktuell nicht handeln!",
  795. trade_no_request: "Keine Handelsanfrage offen!"
  796. },
  797. guns: {
  798. lastDmg: "Du wurdest von einen Spieler verletzt und kannst dich deshalb noch nicht heilen.",
  799. WeaponLicenseA: "Kleiner Waffenschein",
  800. WeaponLicenseB: "Mittlerer Waffenschein",
  801. WeaponLicenseC: "Gro\u00dfer Waffenschein",
  802. WeaponLicenseATime: "Kleiner Waffenschein (7 h)",
  803. WeaponLicenseBTime: "Mittlerer Waffenschein (30 h)",
  804. WeaponLicenseCTime: "Gro\u00dfer Waffenschein (150 h)"
  805. },
  806. window_gang: {
  807. select_1: "Gruppe",
  808. select_2: "Mitglieder",
  809. select_3: "Einstellungen",
  810. select_4: "Logs",
  811. einstellungen: "Gruppensystem",
  812. getbag: "Aktionstasche",
  813. heal: "Heilen",
  814. storage: "Lager",
  815. shop: "Shop",
  816. equip: "Gangskin",
  817. upgrade_to: "Upgraden auf Level",
  818. max_lvl: "Maximales Level erreicht!",
  819. gangweapon: "Gangwaffe",
  820. member_name: "Spielername",
  821. member_rang: "Spielerrang",
  822. desc: "Name",
  823. vehicles: "Fahrzeuge",
  824. sure: "Sicher?",
  825. "delete": "Entfernen",
  826. insert: "Einfuegen",
  827. delete_gang: "Gang entfernen",
  828. updateskin: "Gangskin aendern",
  829. devare: "Aufloesen",
  830. devare_gang: "Gang loeschen"
  831. },
  832. wanteds: {
  833. NoDmKill: "Mord (DM)",
  834. bv: "Befehlsverweigerung",
  835. befehlsverweigerung: "Befehlsverweigerung",
  836. bei: "Beihilfe",
  837. beihilfe: "Beihilfe",
  838. belei: "Beleidigung",
  839. beleidigung: "Beleidigung",
  840. stech: "Bestechungsversuch",
  841. bestech: "Bestechungsversuch",
  842. bestechung: "Bestechungsversuch",
  843. bestechungsversuch: "Bestechungsversuch",
  844. droh: "Drohung",
  845. drohung: "Drohung",
  846. press: "Erpressung",
  847. erpressung: "Erpressung",
  848. einsatz: "Einsatzbehinderung",
  849. behind: "Einsatzbehinderung",
  850. einsatzbehinderung: "Einsatzbehinderung",
  851. dieb: "Fahrzeugdiebstahl",
  852. diebstahl: "Fahrzeugdiebstahl",
  853. fahrzeugdiebstahl: "Fahrzeugdiebstahl",
  854. rennen: "Illegales Stra\u00dfenrennen",
  855. strassenrennen: "Illegales Stra\u00dfenrennen",
  856. kpv: "K\u00f6rperverletzung",
  857. verletzung: "K\u00f6rperverletzung",
  858. koerperverletzung: "K\u00f6rperverletzung",
  859. owaffe: "Offenes Waffentragen",
  860. offenwaffe: "Offenes Waffentragen",
  861. sb: "Sachbesch\u00e4digung",
  862. sach: "Sachbesch\u00e4digung",
  863. beschaedigung: "Sachbesch\u00e4digung",
  864. "sachbesch\u00e4digung": "Sachbesch\u00e4digung",
  865. tat: "Vort\u00e4uschen falscher Tatsachen",
  866. tatsachen: "Vort\u00e4uschen falscher Tatsachen",
  867. "vort\u00e4uschen": "Vort\u00e4uschen falscher Tatsachen",
  868. sperr: "Betreten von Sperrzonen",
  869. pd: "Betreten von Sperrzonen",
  870. sperrzonen: "Betreten von Sperrzonen",
  871. konsum: "Drogenkonsum",
  872. dkonsum: "Drogenkonsum",
  873. anbau: "Drogenabbau/ -anbau",
  874. beraub: "Freiheitsberaubung",
  875. freiheitsberaubung: "Freiheitsberaubung",
  876. flucht: "Flucht vor/aus Kontrolle",
  877. kontrolle: "Flucht vor/aus Kontrolle",
  878. vkk: "Flucht vor/aus Kontrolle",
  879. sraub: "Laden\u00fcberfall",
  880. laden: "Laden\u00fcberfall",
  881. "laden\u00fcberfall": "Laden\u00fcberfall",
  882. waffe: "Schusswaffengebrauch",
  883. waffengebrauch: "Schusswaffengebrauch",
  884. schusswaffengebrauch: "Schusswaffengebrauch",
  885. verweig: "Verweigerung der Durchsuchung",
  886. durchsuchung: "Verweigerung der Durchsuchung",
  887. it: "Illegaler Transport",
  888. transport: "Illegaler Transport",
  889. mord: "Mord",
  890. br: "Bankraub",
  891. bank: "Bankraub",
  892. geisel: "Geiselnahme",
  893. geiselnahme: "Geiselnahme",
  894. raub: "Raub\u00fcberfall beim PD/Ammu",
  895. pdraub: "Raub\u00fcberfall beim Police Dept.",
  896. ammuraub: "Raub\u00fcberfall beim Ammunation",
  897. refusal: "Befehlsverweigerung",
  898. abetting: "Beihilfe",
  899. insult: "Beleidigung",
  900. bribery: "Bestechungsversuch",
  901. threat: "Drohung",
  902. extorsion: "Erpressung",
  903. blackmail: "Erpressung",
  904. obstruction: "Einsatzbehinderung",
  905. theft: "Fahrzeugdiebstahl",
  906. race: "Illegales Stra\u00dfenrennen",
  907. injury: "K\u00f6rperverletzung",
  908. opengun: "Offenes Waffentragen",
  909. mischief: "Sachbesch\u00e4digung",
  910. property: "Sachbesch\u00e4digung",
  911. facts: "Vort\u00e4uschen falscher Tatsachen",
  912. feigning: "Vort\u00e4uschen falscher Tatsachen",
  913. restricted: "Betreten von Sperrzonen",
  914. zone: "Betreten von Sperrzonen",
  915. druguse: "Drogenkonsum",
  916. consumption: "Drogenkonsum",
  917. plant: "Drogenabbau/ -anbau",
  918. harvest: "Drogenabbau/ -anbau",
  919. drugp: "Drogenabbau/ -anbau",
  920. detention: "Freiheitsberaubung",
  921. detent: "Freiheitsberaubung",
  922. escape: "Flucht vor/aus Kontrolle",
  923. control: "Flucht vor/aus Kontrolle",
  924. srob: "Laden\u00fcberfall",
  925. shop: "Laden\u00fcberfall",
  926. gun: "Schusswaffengebrauch",
  927. arms: "Schusswaffengebrauch",
  928. trunk: "Verweigerung der Durchsuchung",
  929. searching: "Verweigerung der Durchsuchung",
  930. truck: "Illegaler Transport",
  931. wt: "Illegaler Transport",
  932. murder: "Mord",
  933. homicide: "Mord",
  934. bankrob: "Bankraub",
  935. heist: "Bankraub",
  936. hostages: "Geiselnahme",
  937. hostage: "Geiselnahme",
  938. ammurob: "Raub\u00fcberfall beim Ammunation",
  939. pdrob: "Raub\u00fcberfall beim Police Dept.",
  940. wantedReduced: "Dein Fahndungslevel hat sich reduziert!"
  941. },
  942. window_quest: {
  943. quest_submit: "Quest abschlie\u00dfen",
  944. quest_start: "Quest starten",
  945. quest_info_1: "Diese Quest kann nur von einem Spieler abgeschlossen werden. Du solltest dir also nicht soviel Zeit lassen!",
  946. quest_1: "Bringe mir schnellstm\u00f6glich {1}g Methamphetamin, als Belohnung erh\u00e4lst du {2}$ in bar auf die Hand.",
  947. quest_2: "Belade dein Gangfahrzeug mit {1} Metallteilen f\u00fcr {2}$.",
  948. quest_info_2: "Bringe die Metallteile zu deinem Ganghaus. Achte darauf, dass dein Fahrzeug weder respawnt noch zerst\u00f6rt wird.",
  949. quest_3_name: "Mission Row Police Department",
  950. quest_3: "Willkommen im Mission Row Police Department. Vielen Dank, dass du dich daf\u00fcr entschieden hast, deine krimminelle Vergangenheit hinter dir zu lassen.",
  951. quest_info_3: "Dir werden wenn du dich stellst alle illegalen Gegenst\u00e4nde abgenommen!",
  952. quest_surrender: "Stellen",
  953. quest_4_name: "Eclipse Medical Tower",
  954. quest_4: "Willkommen im Eclipse Medical Tower. F\u00fcr 10.000 $ kannst du dich einer Sch\u00f6nheitsoperation unterziehen.",
  955. quest_info_4: "WICHTIG: Es gehen beim Wechsel des Geschlechts alle Kleidungsst\u00fccke verloren!",
  956. quest_submit_4: "Operieren",
  957. quest_5_name: "Peter Millerson",
  958. quest_5_1: "Ich habe Informationen, wo eine Gang Ihre illegalen Gegenst\u00e4nde versteckt. F\u00fcr diesen Tipp m\u00f6chte ich jedoch 145 $!",
  959. quest_5_2: "Ein paar Freunde haben an diesen Orten schon einmal was gefunden. Teilweise sogar einen ganzen Truck! Unter 200 $ bekommst du nichts aus mir raus!",
  960. quest_5_3: "Ich kenne ein verlassenes Drogenlabor, dort kannst du aus deinen Chemikalien Drogen herstellen! Falls dich jemand fragen sollte, den Tipp hast du nicht von mir!",
  961. quest_info_5: "WICHTIG: Halte dich von den Cops fern, sonst kannst du deine illegalen Gegenst\u00e4nde vergessen!",
  962. quest_submit_5: "Tipp annehmen!",
  963. quest_6_name: "Humane Labs and Research",
  964. quest_6: "Wir die Humane Labs and Research verkaufen MediKits zum Preis von nur 25 $ pro St\u00fcck! Eine Lieferung beinhaltet immer 30 MediKits (750 $)",
  965. quest_info_6: "Die Lieferung muss beim Central Medical Center entladen werden!",
  966. quest_submit_6: "Transport starten!",
  967. quest_weedcorn_name: "Ronnys Hanf-Stecklinge",
  968. quest_weedcorn: "Hey mein Name ist Ronny, hier auf der Farm ist es so langweilig... Darum verdiene ich mir mit ein paar Hanf-Stecklinge etwas Geld hinzu. F\u00fcr 5 Hanf-Stecklinge verlange ich {1} $.",
  969. quest_info_weedcorn: "WICHTIG: Halte dich von den Cops fern, sonst kannst du deine illegalen Gegenst\u00e4nde vergessen!",
  970. quest_submit_weedcorn: "Hanf-Stecklinge kaufen",
  971. quest_weedseller_name: "Helmuts Kitchen",
  972. quest_weedseller: "Auf dem Land sind alle ganz verr\u00fcckt nach meinen Keksen. Daf\u00fcr ben\u00f6tige ich jedoch ein paar spezielle Zutaten. F\u00fcr ein Beutel Hanf zahle ich {1} $",
  973. quest_info_weedseller: "WICHTIG: Beim Verkaufen wird dein gesamtes Hanf f\u00fcr {1} $ verkauft!",
  974. quest_submit_weedseller: "Hanf verkaufen",
  975. quest_fishshop_name: "Millars Fishery",
  976. quest_fishshop: "Seit BSE und der Schweinegrippe ist die Nachfrage nach Fisch massiv gestiegen! Diese Mengen an Fisch k\u00f6nnen wir unm\u00f6glich selbt fischen. Daher kaufen wir Fische f\u00fcr {1} $ pro St\u00fcck zu.",
  977. quest_info_fishshop: "WICHTIG: Beim Verkaufen werden deine gesamten Fische f\u00fcr {1} $ verkauft!",
  978. quest_submit_fishshop: "Fische verkaufen"
  979. },
  980. job: {
  981. trash_start_tut: "Fahre zu den markierten H\u00e4usern und sammel den M\u00fcll (Taste E) auf.",
  982. trash_collect_tut: "Werfe den M\u00fcllsack (Taste E) in den M\u00fcllwagen!",
  983. trash_collect_full: "Der Muellwagen ist voll. Fahre zur\u00fcck zur Deponie um ihn zu entleeren.",
  984. trash_wait_for_player: "Bitte habe einen Augenblick Geduld, da es sich um einen Mehrspielerjob handelt!",
  985. how_to_quit_job: "Mit /quitjob kannst du den Job beenden!",
  986. dailyQuestBonus: "~g~ + $1.000 | T\u00e4glicher Bonus",
  987. dailyQuestReady: "T\u00e4glicher Bonus | Bereit",
  988. dailyQuestReadyAt: "T\u00e4glicher Bonus | ",
  989. wanteds: "Wir besch\u00e4ftigen keine Fl\u00fcchtigen!"
  990. },
  991. window_jobbrowser: [{
  992. jobbrowser: "Jobbrowser",
  993. overview: "Navigation",
  994. navigation: "Navigation",
  995. maxLevelReached: "Maximallevel erreicht",
  996. jobs: {
  997. logistic: {
  998. jobname: "Logistik",
  999. btn: ["Mule", "Benson", "Pounder"],
  1000. desc: "Du bist diese eine Person, die nie an einem Ort bleiben kann. Du musst unterwegs sein und durch ganz San Andreas deine Touren fahren, ob mit dem Roller, dem Van oder dem grossen Tanker. Du lernst alle Strassen und Gaesschen von San Andreas kennen und verdienst so deinen Lebensunterhalt."
  1001. },
  1002. bus: {
  1003. jobname: "Busfahrer",
  1004. btn: ["Tourbus", "Stadtlinie", "Fernlinie"],
  1005. desc: "Ueberall laufen Bewohner von San Andreas von einem Ort zum Anderen. Nachdem die Strassenbahnen leicht zu verpassen sind, gibt es 4 Buslinien. 2 durch Los Santos und 2 durch ganz San Andreas, um es allen anderen zu erleichtern von A nach B zu kommen. Du bist der Transportservice auf den der Staat gewartet hat.",
  1006. extra: {
  1007. header: "Route",
  1008. desc: "Bitte waehle deine Route aus:",
  1009. S1: "Stadtlinie 1",
  1010. S2: "DOWNTOWN"
  1011. }
  1012. },
  1013. pizzadelivery: {
  1014. jobname: "Pizza-Lieferant",
  1015. btn: ["Praktikant",
  1016. "Mitarbeiter"
  1017. ],
  1018. desc: "Die Leute haben Hunger und k\u00f6nnen sich eine Pizza bestellen, doch wer liefert sie? Du musst mit deinem Fahrzeug die Pizza frisch und warm an die Kundschaft bringen. Daf\u00fcr hast du je Level verschiedene Fahrzeuge, also versuch hoch zu kommen. Das Geld bekommst du, wenn du zur\u00fcck kommst."
  1019. },
  1020. packagecourier: {
  1021. jobname: "Kurier-Dienst",
  1022. btn: ["Postbote", "Paket-Zusteller", "Spezial-Pakete"],
  1023. desc: "Die Bewohner von Los Santos brauchen ihre morgentliche Post und ihre vom Internet oder per Anruf bestellten Pakete. Damit sie diese bekommen, bist du zust\u00e4ndig. Fahre als Postbote mit dem Fahrrad zu den H\u00e4usen und liefer ihre Post. Fahre mit dem Boxville durch die Stadt und liefere die Pakete ab. Spezielle Pakete lieferst du mit dem Burrito, daf\u00fcr musst du jedoch erst die n\u00f6tige Erfahrung besitzen."
  1024. },
  1025. harbor: {
  1026. jobname: "Hafenarbeiter",
  1027. btn: ["Fischer", "Coming Soon"],
  1028. desc: "Lecker ein Fisch. Du bist nun Hafenarbeiter und musst mit einem Schiff auf das Meer und die Fische fangen, damit die Einwohner frischen Fisch bekommen."
  1029. },
  1030. trash: {
  1031. jobname: "Abfallentsorgung",
  1032. btn: ["Abfallentsorgung"],
  1033. desc: "Wohin mit dem M\u00fcll? Mit deinen Kollegen f\u00e4hrst du zu den makierten H\u00e4usern und holst den M\u00fcll der Einwohner ab. Ihr sorgt f\u00fcr saubere Stra\u00dfen."
  1034. },
  1035. taxi: {
  1036. jobname: "Taxifahrer",
  1037. btn: ["Taxifahrer"],
  1038. desc: "In San Andreas schnell an den richtigen Zielort zu gelangen kann oftmals schwer sein. Gerade, wenn man kein eigenes Auto hat. Daher sind Taxifahrer sehr beliebt unter Pendlern. Setz dich in einer unserer Taxi-Fahrzeuge und warte auf eine Transportanfrage. Begib dich dann an den Standort des Kunden und fahre ihn zu seinem gew\u00fcnschten Zielort. Bezahlt wirst du durch den Fahrgast. Dieser bezahlt ab Fahrtbeginn den von dir bestimmten Fahrpreis/min."
  1039. }
  1040. },
  1041. overviewtext: "Willkommen im Jobcenter. Hier findest du alle wichtigen Informationen ueber all deine verfuegbaren Berufe.",
  1042. locked: "Gesperrt",
  1043. joblevel: "Level",
  1044. missingExp: "Fehlende Erfahrung",
  1045. showLocation: "Position anzeigen"
  1046. }],
  1047. jobs: {
  1048. pizzadelivery: {
  1049. start: "Fahre die Pizzen zu den Kunden!",
  1050. end: "Pizza-Lieferanten Job beendet"
  1051. },
  1052. packagecourier: {
  1053. start: "Fahre die Ware zu den Kunden!",
  1054. end: "Kurier-Dienst Job beendet"
  1055. },
  1056. harbor: {
  1057. start: "Fange im angezeigten Gebiet die Fische ein!",
  1058. end: "Hafenarbeiter Job beendet"
  1059. }
  1060. },
  1061. antiAFK: {
  1062. youAreAFK: "Du wurdest AFK gesetzt!",
  1063. youAreNotAFK: "AFK gestoppt!",
  1064. AFKIn30Seconds: "Du wirst in 30 Sekunden AFK gesetzt!"
  1065. },
  1066. window_bank: {
  1067. bank: "Bank",
  1068. payin: "Einzahlen",
  1069. payout: "Auszahlen",
  1070. cash: "Bar",
  1071. username: "Spielername",
  1072. summe: "Summe",
  1073. uerberweisen: "\u00dcberweisen",
  1074. account: "Konto"
  1075. },
  1076. window_userpanel: {
  1077. nav_overview: "\u00dcbersicht",
  1078. nav_skills: "Skills",
  1079. nav_warnings: "Verwarnungen",
  1080. playerName: "Spielername",
  1081. playingTime: "Spielzeit",
  1082. phoneNumber: "Handynummer",
  1083. academyGrade: "Academy Note",
  1084. group: "Gruppe",
  1085. rang: "Rank",
  1086. activeSlots: "aktive Fahrzeugslots",
  1087. passiveSlots: "passive Fahrzeugslots",
  1088. votingInfo: "soon",
  1089. bills_licences: "Scheine / Lizenzen",
  1090. level: "Level",
  1091. warningsActive: "aktiv",
  1092. warningsExpired: "abgelaufen",
  1093. warningsDeleted: "gel\u00f6scht",
  1094. warningPoints: "Punkte",
  1095. warningsTimeFrom: "vom",
  1096. warningsTimeTo: "bis",
  1097. warningsReason: "Grund",
  1098. pros: "Vorteile",
  1099. cons: "Nachteile"
  1100. }
  1101. },
  1102. natives = {};
  1103. mp.game.graphics.clearDrawOrigin = function() {
  1104. return mp.game.invoke("0xFF0B610F6BE0D7AF")
  1105. };
  1106. mp.game.audio.setVehRadioStation = function(a, b) {
  1107. return mp.game.invoke("0x1B9C0099CB942AC6", a, b)
  1108. };
  1109. mp.game.vehicle.getVehicleClass = function(a) {
  1110. return mp.game.invoke("0x29439776AAA00A62", a)
  1111. };
  1112. mp.game.vehicle.getVehicleSeats = function(a) {
  1113. return mp.game.invoke("0xA7C4F2C6E744A550", a.handle)
  1114. };
  1115. mp.game.entity.getEntityType = function(a) {
  1116. return mp.game.invoke("0x8ACD366038D14505", a)
  1117. };
  1118. mp.game.entity.getInteriorFromEntity = function(a) {
  1119. return mp.game.invoke("0x2107BA504071A6BB", a)
  1120. };
  1121. natives.SET_BLIP_SPRITE = function(a, b) {
  1122. return mp.game.invoke("0xDF735600A4696DAF", a, b)
  1123. };
  1124. natives.SET_BLIP_ALPHA = function(a, b) {
  1125. return mp.game.invoke("0x45FF974EEE1C8734", a, b)
  1126. };
  1127. natives.SET_BLIP_COLOUR = function(a, b) {
  1128. return mp.game.invoke("0x03D7FB09E75D6B7E", a, b)
  1129. };
  1130. natives.SET_BLIP_ROTATION = function(a, b) {
  1131. return mp.game.invoke("0xF87683CDF73C3F6E", a, b)
  1132. };
  1133. natives.SET_BLIP_FLASHES = function(a, b) {
  1134. return mp.game.invoke("0xB14552383D39CE3E", a, b)
  1135. };
  1136. natives.SET_BLIP_FLASH_TIMER = function(a, b) {
  1137. return mp.game.invoke("0xD3CD6FD297AE87CC", a, b)
  1138. };
  1139. natives.SET_BLIP_COORDS = function(a, b, c, d) {
  1140. return mp.game.invoke("0xAE2AF67E9D9AF65D", a, b, c, d)
  1141. };
  1142. natives.SET_CURSOR_LOCATION = function(a, b) {
  1143. return mp.game.invoke("0xFC695459D4D0E219", a, b)
  1144. };
  1145. natives.SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT = function(a) {
  1146. return mp.game.invoke("0xB98236CAAECEF897", a)
  1147. };
  1148. natives.GET_FIRST_BLIP_INFO_ID = function(a) {
  1149. return mp.game.invoke("0x1BEDE233E6CD2A1F", a)
  1150. };
  1151. natives.GET_NEXT_BLIP_INFO_ID = function(a) {
  1152. return mp.game.invoke("0x14F96AA50D6FBEA7", a)
  1153. };
  1154. natives.DOES_BLIP_EXIST = function(a) {
  1155. return mp.game.invoke("0xA6DB27D19ECBB7DA", a)
  1156. };
  1157. natives.GET_NUMBER_OF_ACTIVE_BLIPS = function() {
  1158. return mp.game.invoke("0x9A3FF3DE163034E8")
  1159. };
  1160. natives.SET_ENTITY_ALPHA = function(a, b, c) {
  1161. return mp.game.invoke("0x44A0870B7E92D7C0", a.handle, b, c)
  1162. };
  1163. natives.SET_ENTITY_NO_COLLISION_ENTITY = function(a, b, c) {
  1164. return mp.game.invoke("0xA53ED5520C07654A", a.handle, b.handle, c)
  1165. };
  1166. natives.DISABLE_PED_PAIN_AUDIO = function(a, b) {
  1167. return mp.game.invoke("0xA9A41C1E940FB0E8", a.handle, b)
  1168. };
  1169.  
  1170. function lerp(a, b, c) {
  1171. return (1 - c) * a + c * b
  1172. }
  1173.  
  1174. function findrot(a, b, c, d) {
  1175. var e = new mp.Vector3(0, 0, 0);
  1176. e.x = a.x;
  1177. e.y = a.y;
  1178. e.z = a.z;
  1179. a = Math.PI / 180 * (b.z + d);
  1180. e.x += c * Math.cos(a);
  1181. e.y += c * Math.sin(a);
  1182. return e
  1183. }
  1184. mp.Vector3.prototype.findRot = function(a, b, c) {
  1185. a = Math.PI / 180 * (a + c);
  1186. this.x += b * Math.cos(a);
  1187. this.y += b * Math.sin(a);
  1188. return this
  1189. };
  1190. mp.Vector3.prototype.normalize = function(a) {
  1191. this.x /= a;
  1192. this.y /= a;
  1193. this.z /= a;
  1194. return this
  1195. };
  1196. mp.Vector3.prototype.multiply = function(a) {
  1197. this.x *= a;
  1198. this.y *= a;
  1199. this.z *= a;
  1200. return this
  1201. };
  1202. mp.Vector3.prototype.dist = function(a) {
  1203. var b = this.x - a.x,
  1204. c = this.y - a.y;
  1205. a = this.z - a.z;
  1206. return Math.sqrt(b * b + c * c + a * a)
  1207. };
  1208. mp.Vector3.prototype.getOffset = function(a) {
  1209. this.x -= a.x;
  1210. this.y -= a.y;
  1211. this.z -= a.z;
  1212. return new mp.Vector3(x, y, z)
  1213. };
  1214. mp.Vector3.prototype.ground = function() {
  1215. this.z = mp.game.gameplay.getGroundZFor3dCoord(this.x, this.y, this.z, 0, !1);
  1216. return this
  1217. };
  1218. var vehicle_data = {
  1219. data: {
  1220. 0: {
  1221. name: "Spoilers",
  1222. tunes: {}
  1223. },
  1224. 1: {
  1225. name: "FrontBumper",
  1226. tunes: {}
  1227. },
  1228. 2: {
  1229. name: "RearBumper",
  1230. tunes: {}
  1231. },
  1232. 3: {
  1233. name: "SideSkirt",
  1234. tunes: {}
  1235. },
  1236. 4: {
  1237. name: "Exhaust",
  1238. tunes: {}
  1239. },
  1240. 5: {
  1241. name: "Frame",
  1242. tunes: {}
  1243. },
  1244. 6: {
  1245. name: "Grille",
  1246. tunes: {}
  1247. },
  1248. 7: {
  1249. name: "Hood",
  1250. tunes: {}
  1251. },
  1252. 8: {
  1253. name: "Fender",
  1254. tunes: {}
  1255. },
  1256. 9: {
  1257. name: "RightFender",
  1258. tunes: {}
  1259. },
  1260. 10: {
  1261. name: "Roof",
  1262. tunes: {}
  1263. },
  1264. 11: {
  1265. name: "Engine",
  1266. tunes: {}
  1267. },
  1268. 12: {
  1269. name: "Brakes",
  1270. tunes: {}
  1271. },
  1272. 13: {
  1273. name: "Transmission",
  1274. tunes: {
  1275. 0: "Stra\u00dfengetriebe",
  1276. 1: "Sportgetriebe",
  1277. 2: "Renngetriebe"
  1278. }
  1279. },
  1280. 14: {
  1281. name: "Horns",
  1282. tunes: {}
  1283. },
  1284. 15: {
  1285. name: "Suspension",
  1286. tunes: {
  1287. 0: "Stra\u00dfenfahrwerk",
  1288. 1: "Sportfahrwerk",
  1289. 2: "Rennfahrwerk"
  1290. }
  1291. },
  1292. 16: {
  1293. name: "Armor",
  1294. tunes: {}
  1295. },
  1296. 18: {
  1297. name: "Turbo",
  1298. tunes: {
  1299. 0: "Turbo-Tuning"
  1300. }
  1301. },
  1302. 20: {
  1303. name: "Util Shadow Silver",
  1304. tunes: {}
  1305. },
  1306. 22: {
  1307. name: "Xenon",
  1308. tunes: {}
  1309. },
  1310. 23: {
  1311. name: "FrontWheels",
  1312. tunes: {}
  1313. },
  1314. 24: {
  1315. name: "BackWheels",
  1316. tunes: {}
  1317. },
  1318. 25: {
  1319. name: "Plateholders",
  1320. tunes: {}
  1321. },
  1322. 27: {
  1323. name: "TrimDesign",
  1324. tunes: {}
  1325. },
  1326. 28: {
  1327. name: "Ornaments",
  1328. tunes: {}
  1329. },
  1330. 30: {
  1331. name: "DialDesign",
  1332. tunes: {}
  1333. },
  1334. 33: {
  1335. name: "SteeringWheel",
  1336. tunes: {}
  1337. },
  1338. 34: {
  1339. name: "ShiftLever",
  1340. tunes: {}
  1341. },
  1342. 35: {
  1343. name: "Plaques",
  1344. tunes: {}
  1345. },
  1346. 38: {
  1347. name: "Hydraulics",
  1348. tunes: {}
  1349. },
  1350. 46: {
  1351. name: "WindowTint ",
  1352. tunes: {}
  1353. },
  1354. 48: {
  1355. name: "Livery",
  1356. tunes: {}
  1357. }
  1358. },
  1359. getSlotName: function(a) {
  1360. return this.data[a] ? this.data[a].name : "No-Name"
  1361. },
  1362. getPartName: function(a, b) {
  1363. return this.data[a].tunes[b] ? this.data[a].tunes[b] : "TUNING:" + b
  1364. }
  1365. },
  1366. weapon_data = {
  1367. hashes: {
  1368. 7872484: {
  1369. name: "compactlauncher",
  1370. hash: "125959754"
  1371. },
  1372. 37527445: {
  1373. name: "ball",
  1374. hash: "600439132"
  1375. },
  1376. 100416529: {
  1377. name: "sniperrifle",
  1378. hash: "100416529"
  1379. },
  1380. 101631238: {
  1381. name: "fireextinguisher",
  1382. hash: "101631238"
  1383. },
  1384. 101716584: {
  1385. name: "gusenberg",
  1386. hash: "1627465347"
  1387. },
  1388. 111591470: {
  1389. name: "marksmanrifle_mk2",
  1390. hash: "NOT DEFINED marksmanrifle_mk2"
  1391. },
  1392. 126349499: {
  1393. name: "snowball",
  1394. hash: "126349499"
  1395. },
  1396. 137902532: {
  1397. name: "vintagepistol",
  1398. hash: "137902532"
  1399. },
  1400. 171789620: {
  1401. name: "combatpdw",
  1402. hash: "171789620"
  1403. },
  1404. 177293209: {
  1405. name: "heavysniper_mk2",
  1406. hash: "177293209"
  1407. },
  1408. 198330549: {
  1409. name: "minismg",
  1410. hash: "-1121678507"
  1411. },
  1412. 205991906: {
  1413. name: "heavysniper",
  1414. hash: "205991906"
  1415. },
  1416. 317205821: {
  1417. name: "autoshotgun",
  1418. hash: "317205821"
  1419. },
  1420. 324215364: {
  1421. name: "microsmg",
  1422. hash: "324215364"
  1423. },
  1424. 419712736: {
  1425. name: "weapon_wrench",
  1426. hash: "419712736"
  1427. },
  1428. 453432689: {
  1429. name: "pistol",
  1430. hash: "453432689"
  1431. },
  1432. 487013001: {
  1433. name: "pumpshotgun",
  1434. hash: "487013001"
  1435. },
  1436. 584646201: {
  1437. name: "appistol",
  1438. hash: "584646201"
  1439. },
  1440. 615608432: {
  1441. name: "molotov",
  1442. hash: "615608432"
  1443. },
  1444. 736523883: {
  1445. name: "smg",
  1446. hash: "736523883"
  1447. },
  1448. 741814745: {
  1449. name: "stickybomb",
  1450. hash: "741814745"
  1451. },
  1452. 883325847: {
  1453. name: "petrolcan",
  1454. hash: "883325847"
  1455. },
  1456. 911657153: {
  1457. name: "stungun",
  1458. hash: "911657153"
  1459. },
  1460. 940833800: {
  1461. name: "weapon_stone_hatchet",
  1462. hash: "NOT DEFINED weapon_stone_hatchet"
  1463. },
  1464. 961495388: {
  1465. name: "assaultrifle_mk2",
  1466. hash: "961495388"
  1467. },
  1468. 984333226: {
  1469. name: "heavyshotgun",
  1470. hash: "984333226"
  1471. },
  1472. 1119849093: {
  1473. name: "minigun",
  1474. hash: "1119849093"
  1475. },
  1476. 1141786504: {
  1477. name: "weapon_golfclub",
  1478. hash: "1141786504"
  1479. },
  1480. 1198879012: {
  1481. name: "flaregun",
  1482. hash: "1198879012"
  1483. },
  1484. 1233104067: {
  1485. name: "flare",
  1486. hash: "1233104067"
  1487. },
  1488. 1305664598: {
  1489. name: "grenadelauncher_smoke",
  1490. hash: "1305664598"
  1491. },
  1492. 1317494643: {
  1493. name: "weapon_hammer",
  1494. hash: "1317494643"
  1495. },
  1496. 1432025498: {
  1497. name: "pumpshotgun_mk2",
  1498. hash: "NOT DEFINED pumpshotgun_mk2"
  1499. },
  1500. 1593441988: {
  1501. name: "combatpist",
  1502. hash: "1593441988"
  1503. },
  1504. 1649403952: {
  1505. name: "compactrifle",
  1506. hash: "1649403952"
  1507. },
  1508. 1672152130: {
  1509. name: "hominglauncher",
  1510. hash: "1672152130"
  1511. },
  1512. 1737195953: {
  1513. name: "weapon_nightstick",
  1514. hash: "1737195953"
  1515. },
  1516. 1834241177: {
  1517. name: "railgun",
  1518. hash: "1834241177"
  1519. },
  1520. 2017895192: {
  1521. name: "sawnoffshotgun",
  1522. hash: "2017895192"
  1523. },
  1524. 2024373456: {
  1525. name: "smg_mk2",
  1526. hash: "2024373456"
  1527. },
  1528. 2132975508: {
  1529. name: "bullpuprifle",
  1530. hash: "2132975508"
  1531. },
  1532. 2138347493: {
  1533. name: "firework",
  1534. hash: "2138347493"
  1535. },
  1536. 2144741730: {
  1537. name: "combatmg",
  1538. hash: "2144741730"
  1539. },
  1540. 2210333304: {
  1541. name: "carbinerifle",
  1542. hash: "-2084633992"
  1543. },
  1544. 2227010557: {
  1545. name: "weapon_crowbar",
  1546. hash: "-2067956739"
  1547. },
  1548. 2228681469: {
  1549. name: "bullpuprifle_mk2",
  1550. hash: "NOT DEFINED bullpuprifle_mk2"
  1551. },
  1552. 2285322324: {
  1553. name: "snspistol_mk2",
  1554. hash: "NOT DEFINED snspistol_mk2"
  1555. },
  1556. 2343591895: {
  1557. name: "weapon_flashlight",
  1558. hash: "-1951375401"
  1559. },
  1560. 2460120199: {
  1561. name: "weapon_dagger",
  1562. hash: "-1834847097"
  1563. },
  1564. 2481070269: {
  1565. name: "grenade",
  1566. hash: "-1813897027"
  1567. },
  1568. 2484171525: {
  1569. name: "weapon_poolcue",
  1570. hash: "-1810795771"
  1571. },
  1572. 2508868239: {
  1573. name: "weapon_bat",
  1574. hash: "-1786099057"
  1575. },
  1576. 2526821735: {
  1577. name: "specialcarbine_mk2",
  1578. hash: "NOT DEFINED specialcarbine_mk2"
  1579. },
  1580. 2548703416: {
  1581. name: "doubleaction",
  1582. hash: "NOT DEFINED doubleaction"
  1583. },
  1584. 2578377531: {
  1585. name: "pistol50",
  1586. hash: "-1716589765"
  1587. },
  1588. 2578778090: {
  1589. name: "weapon_knife",
  1590. hash: "-1716189206"
  1591. },
  1592. 2634544996: {
  1593. name: "mg",
  1594. hash: "-1660422300"
  1595. },
  1596. 2640438543: {
  1597. name: "bullpupshotgun",
  1598. hash: "-1654528753"
  1599. },
  1600. 2694266206: {
  1601. name: "bzgas",
  1602. hash: "-1600701090"
  1603. },
  1604. 2725352035: {
  1605. name: "weapon_unarmed",
  1606. hash: "-1569615261"
  1607. },
  1608. 2726580491: {
  1609. name: "grenadelauncher",
  1610. hash: "-1568386805"
  1611. },
  1612. 2828843422: {
  1613. name: "musket",
  1614. hash: "-1466123874"
  1615. },
  1616. 2874559379: {
  1617. name: "proxmine",
  1618. hash: "-1420407917"
  1619. },
  1620. 2937143193: {
  1621. name: "advancedrifle",
  1622. hash: "-1357824103"
  1623. },
  1624. 2982836145: {
  1625. name: "rpg",
  1626. hash: "-1312131151"
  1627. },
  1628. 3125143736: {
  1629. name: "pipebomb",
  1630. hash: "-1169823560"
  1631. },
  1632. 3218215474: {
  1633. name: "snspistol",
  1634. hash: "-1076751822"
  1635. },
  1636. 3219281620: {
  1637. name: "pistol_mk2",
  1638. hash: "3219281620"
  1639. },
  1640. 3220176749: {
  1641. name: "assaultrifle",
  1642. hash: "-1074790547"
  1643. },
  1644. 3231910285: {
  1645. name: "specialcarbine",
  1646. hash: "-1063057011"
  1647. },
  1648. 3249783761: {
  1649. name: "revolver",
  1650. hash: "-1045183535"
  1651. },
  1652. 3342088282: {
  1653. name: "marksmanrifle",
  1654. hash: "-952879014"
  1655. },
  1656. 3415619887: {
  1657. name: "revolver_mk2",
  1658. hash: "NOT DEFINED revolver_mk2"
  1659. },
  1660. 3441901897: {
  1661. name: "weapon_battleaxe",
  1662. hash: "-853065399"
  1663. },
  1664. 3523564046: {
  1665. name: "heavypistol",
  1666. hash: "-771403250"
  1667. },
  1668. 3638508604: {
  1669. name: "weapon_knuckle",
  1670. hash: "-656458692"
  1671. },
  1672. 3675956304: {
  1673. name: "machinepistol",
  1674. hash: "-619010992"
  1675. },
  1676. 3686625920: {
  1677. name: "combatmg_mk2",
  1678. hash: "3686625920"
  1679. },
  1680. 3696079510: {
  1681. name: "marksmanpistol",
  1682. hash: "-598887786"
  1683. },
  1684. 3713923289: {
  1685. name: "weapon_machete",
  1686. hash: "-581044007"
  1687. },
  1688. 3756226112: {
  1689. name: "weapon_switchblade",
  1690. hash: "-538741184"
  1691. },
  1692. 3800352039: {
  1693. name: "assaultshotgun",
  1694. hash: "-494615257"
  1695. },
  1696. 4019527611: {
  1697. name: "dbshotgun",
  1698. hash: "-275439685"
  1699. },
  1700. 4024951519: {
  1701. name: "assaultsmg",
  1702. hash: "-270015777"
  1703. },
  1704. 4191993645: {
  1705. name: "weapon_hatchet",
  1706. hash: "-102973651"
  1707. },
  1708. 4192643659: {
  1709. name: "weapon_bottle",
  1710. hash: "-102323637"
  1711. },
  1712. 4208062921: {
  1713. name: "carbinerifle_mk2",
  1714. hash: "4208062921"
  1715. },
  1716. 4222310262: {
  1717. name: "parachute",
  1718. hash: "-72657034"
  1719. },
  1720. 4256991824: {
  1721. name: "smokegrenade",
  1722. hash: "-37975472"
  1723. }
  1724. },
  1725. getWeaponHash: function(a) {
  1726. return this.hashes[a] ? this.hashes[a].hash : 0
  1727. },
  1728. getWeaponName: function(a) {
  1729. return this.hashes[a] ? this.hashes[a].name : "No-Name"
  1730. }
  1731. },
  1732. Webwindow = [],
  1733. TempArguments = [],
  1734. LastTeleportPosition, HouseTable = {},
  1735. LocalCharacterID = -1,
  1736. disableAllControls = !1,
  1737. LocalGroupID = -1,
  1738. GangShopBlip = null,
  1739. FactoryBlip = {},
  1740. FactoryBlipPosition = {},
  1741. TempBarricade = null,
  1742. login = !1;
  1743. disableAllControls = !0;
  1744. var disableSprintJump = !1,
  1745. startTime = (new Date).getTime(),
  1746. canWearHelmet = null,
  1747. temp_obj_1, vioObjects = {},
  1748. vioPeds = {},
  1749. accessToken, bones = {
  1750. SKEL_R_Hand: 57005,
  1751. SKEL_L_Hand: 18905
  1752. };
  1753. mp.nametags.enabled = !1;
  1754. mp.gui.chat.colors = !0;
  1755. mp.game.ui.setMinimapVisible(!0);
  1756. mp.game.streaming.requestAnimDict("amb@world_human_stand_fishing@base");
  1757. mp.game.streaming.requestAnimDict("mp_defend_base");
  1758. mp.game.streaming.requestAnimDict("mp_country_bank_heist");
  1759. mp.events.add("setPlayerPositionFrozen", function(a, b) {
  1760. setPlayerFrozen(a, b)
  1761. });
  1762.  
  1763. function setPlayerFrozen(a, b) {
  1764. switch (a) {
  1765. case !0:
  1766. mp.players.local.isInAnyVehicle(!1) && mp.players.local.vehicle.freezePosition(!0);
  1767. mp.players.local.freezePosition(!0);
  1768. disableAllControls = b;
  1769. break;
  1770. case !1:
  1771. mp.players.local.isInAnyVehicle(!1) && mp.players.local.vehicle.freezePosition(!1), mp.players.local.freezePosition(!1), disableAllControls = b
  1772. }
  1773. }
  1774.  
  1775. function setPlayerTimeUnFrozen() {
  1776. mp.players.local.isInAnyVehicle(!1) && (mp.players.local.vehicle.setIndicatorLights(0, !1), mp.players.local.vehicle.setIndicatorLights(1, !1), mp.players.local.vehicle.getVariable("Indicator_warning") && mp.players.local.vehicle.setIndicatorLights(0, mp.players.local.vehicle.getVariable("Indicator_warning")), mp.players.local.vehicle.getVariable("Indicator_warning") && mp.players.local.vehicle.setIndicatorLights(1, mp.players.local.vehicle.getVariable("Indicator_warning")));
  1777. setPlayerFrozen(!1)
  1778. }
  1779. mp.events.add("setPlayerTimeFrozen", function() {
  1780. mp.players.local.isInAnyVehicle(!1) && (mp.players.local.vehicle.setIndicatorLights(0, !0), mp.players.local.vehicle.setIndicatorLights(1, !0));
  1781. setPlayerFrozen(!0);
  1782. setTimeout(setPlayerTimeUnFrozen, 15E3)
  1783. });
  1784. mp.events.add("createExplosion", function() {
  1785. for (var a = arguments.length, b = Array(a), c = 0; c < a; c++) b[c] = arguments[c];
  1786. mp.game.fire.addExplosion(b[1].x, b[1].y, b[1].z, 2, 8, !0, !1, 1)
  1787. });
  1788. mp.game.invoke("0xA6294919E56FF02A", !1);
  1789. mp.game.ui.displayRadar(!1);
  1790. mp.game.gameplay.setFadeOutAfterDeath(!0);
  1791. mp.discord.update("www.vio-v.com", "Anmeldung");
  1792. mp.events.add("sentHouseTable", function(a, b) {
  1793. HouseTable = JSON.parse(a);
  1794. LocalCharacterID = Number(b)
  1795. });
  1796. var blackout = !1;
  1797. mp.keys.bind(116, !1, function() {});
  1798. mp.keys.bind(122, !1, function() {
  1799. var a = new Date;
  1800. a = a.toISOString().slice(0, 10).replace(/-/g, "") + "-" + a.getHours() + "-" + a.getMinutes() + "-" + a.getSeconds() + ".jpg";
  1801. mp.gui.takeScreenshot(a, 0, 95, 0);
  1802. mp.gui.chat.push("Screenshot gespeichert als " + a)
  1803. });
  1804. mp.events.add("RemoveObjectAtPosition", function(a, b, c) {
  1805. mp.game.entity.createModelHide(a.x, a.y, a.z, c, mp.game.joaat(b), !0)
  1806. });
  1807. mp.events.add("SetStateOfClosestDoorOfType", function(a, b, c, d, e, f, g) {
  1808. mp.game.object.setStateOfClosestDoorOfType(a, b, c, d, e, f, g)
  1809. });
  1810. mp.events.add("SendNotificationToPlayer", function(a) {
  1811. mp.game.graphics.notify(a)
  1812. });
  1813. mp.events.add("ForcePlayerExitVehicleTask", function() {
  1814. var a = mp.players.local.vehicle;
  1815. a && mp.players.local.taskLeaveVehicle(a.handle, 0)
  1816. });
  1817. mp.events.add("RemoveTrailerFromPlayerVehicle", function() {
  1818. var a = mp.players.local.vehicle;
  1819. a && a.detachFromTrailer()
  1820. });
  1821. mp.events.add("render", function() {
  1822. mp.game.ui.setPauseMenuActive(!disableAllControls);
  1823. disableAllControls && mp.game.controls.disableAllControlActions(2);
  1824. mp.game.player.setHealthRechargeMultiplier(0);
  1825. mp.game.controls.disableControlAction(0, 212, !0);
  1826. mp.game.controls.disableControlAction(0, 213, !0);
  1827. disableSprintJump && (mp.game.controls.disableControlAction(2, 21, !0), mp.game.controls.disableControlAction(2, 22, !0), mp.game.controls.disableControlAction(2, 24, !0), mp.game.controls.disableControlAction(2, 25, !0));
  1828. mp.game.controls.disableControlAction(2, 7, !0);
  1829. mp.game.controls.disableControlAction(2, 95, !0);
  1830. mp.game.controls.disableControlAction(2, 96, !0);
  1831. mp.game.controls.disableControlAction(2, 97, !0);
  1832. mp.game.controls.disableControlAction(2, 98, !0);
  1833. mp.game.controls.disableControlAction(0, 200, !0);
  1834. mp.game.controls.disableControlAction(0, 199, !0);
  1835. mp.game.controls.disableControlAction(2, 200, !0);
  1836. mp.game.controls.disableControlAction(2, 199, !0);
  1837. mp.players.local.setMinGroundTimeForStungun(15E3);
  1838. canWearHelmet ? mp.players.local.setHelmet(!0) :
  1839. mp.players.local.setHelmet(!1)
  1840. });
  1841. mp.keys.bind(27, !1, function() {
  1842. mp.game.ui.activateFrontendMenu(mp.game.joaat("FE_MENU_VERSION_MP_PAUSE"), !0, -1)
  1843. });
  1844. mp.events.add("disablePlayerControls", function(a) {
  1845. disableAllControls = a
  1846. });
  1847. mp.events.add("updatePlayerGang", function(a) {
  1848. LocalGroupID = Number(a);
  1849. 0 <= LocalGroupID ? (GangShopBlip = mp.blips.new(225, new mp.Vector3(570.5346, -3123.515, 18.76861), {
  1850. color: 67,
  1851. shortRange: !0
  1852. }), null == FactoryBlip[1] && (FactoryBlip[1] = mp.blips.new(478, new mp.Vector3(216.0155, 2801.3, 46.05), {
  1853. color: 4,
  1854. shortRange: !0
  1855. }), FactoryBlipPosition[1] = new mp.Vector3(216.0155, 2801.3, 46.05), FactoryBlip[2] = mp.blips.new(478, new mp.Vector3(2857.589, 4466.63, 48.22105), {
  1856. color: 4,
  1857. shortRange: !0
  1858. }), FactoryBlipPosition[2] = new mp.Vector3(2857.589,
  1859. 4466.63, 48.22105), FactoryBlip[3] = mp.blips.new(478, new mp.Vector3(-163.5741, 6282.047, 30.68784), {
  1860. color: 4,
  1861. shortRange: !0
  1862. }), FactoryBlipPosition[3] = new mp.Vector3(-163.5741, 6282.047, 30.68784), FactoryBlip[4] = mp.blips.new(478, new mp.Vector3(2469.655, 1588.551, 32.72033), {
  1863. color: 4,
  1864. shortRange: !0
  1865. }), FactoryBlipPosition[4] = new mp.Vector3(2469.655, 1588.551, 32.72033))) : null != GangShopBlip && GangShopBlip.destroy()
  1866. });
  1867. mp.events.add("playerEnterVehicle", function(a, b) {
  1868. null != a && (a.freezePosition(!1), 1 == a.getVariable("ENGINE_STATUS") ? a.setEngineOn(!0, !0, !0) : a.setEngineOn(!1, !0, !0), 1 == a.getVariable("Marker") && a.setEngineOn(!0, !0, !0))
  1869. });
  1870. mp.events.add("render", function() {
  1871. mp.players.local.isInAnyVehicle(!1) && null != mp.players.local.vehicle && (null != mp.players.local.vehicle.getVariable("Marker") ? 121658888 != mp.players.local.vehicle.model && (mp.players.local.vehicle.setEnginePowerMultiplier(-15), mp.players.local.vehicle.setEngineTorqueMultiplier(.8)) : 1 != mp.players.local.vehicle.getVariable("ENGINE_STATUS") && (mp.game.controls.disableControlAction(0, 278, !0), mp.game.controls.disableControlAction(0, 279, !0), mp.game.controls.disableControlAction(0,
  1872. 280, !0), mp.game.controls.disableControlAction(0, 281, !0), mp.game.controls.disableControlAction(2, 278, !0), mp.game.controls.disableControlAction(2, 279, !0), mp.game.controls.disableControlAction(2, 280, !0), mp.game.controls.disableControlAction(2, 281, !0), mp.players.local.vehicle.setEngineOn(!1, !0, !0)))
  1873. });
  1874. mp.events.add("SetVehicleEngineStatus", function() {
  1875. mp.players.local.isInAnyVehicle(!1) && mp.players.local.vehicle.setEngineOn(!1, !0, !0)
  1876. });
  1877. var weather = {
  1878. 0: "EXTRASUNNY",
  1879. 1: "CLEAR",
  1880. 2: "CLOUDS",
  1881. 3: "SMOG",
  1882. 4: "FOGGY",
  1883. 5: "OVERCAST",
  1884. 6: "RAIN",
  1885. 7: "THUNDER",
  1886. 8: "CLEARING",
  1887. 9: "NEUTRAL",
  1888. 10: "SNOW",
  1889. 11: "BLIZZARD",
  1890. 12: "SNOWLIGHT",
  1891. 13: "XMAS",
  1892. 14: "HALLOWEEN"
  1893. };
  1894. mp.events.add("SetWeather", function(a) {
  1895. mp.game.gameplay.setWeatherTypeNowPersist(weather[a])
  1896. });
  1897. mp.events.add("promptClientNotification", function(a, b, c) {
  1898. if (!mp.game.graphics.hasStreamedTextureDictLoaded(a))
  1899. for (mp.game.graphics.requestStreamedTextureDict(a, !0); !mp.game.graphics.hasStreamedTextureDictLoaded(a);) mp.game.wait(0);
  1900. mp.game.graphics.hasStreamedTextureDictLoaded(a) && (mp.game.ui.setNotificationTextEntry("CELL_EMAIL_BCON"), mp.game.ui.addTextComponentSubstringPlayerName(c), mp.game.ui.setNotificationMessage(a, a, !1, 4, b, ""), mp.game.ui.drawNotification(!0, !1))
  1901. });
  1902. var emergencyVehicles = (_emergencyVehicles = {
  1903. 1171614426: !0,
  1904. 1127131465: !0,
  1905. 2647026068: !0,
  1906. 1433415128: !0,
  1907. 469291905: !0,
  1908. 2287941233: !0,
  1909. 2046537925: !0,
  1910. 2667966721: !0
  1911. }, _defineProperty(_emergencyVehicles, "2667966721", !0), _defineProperty(_emergencyVehicles, 1912215274, !0), _defineProperty(_emergencyVehicles, 2321795001, !0), _defineProperty(_emergencyVehicles, 353883353, !0), _defineProperty(_emergencyVehicles, 2758042359, !0), _defineProperty(_emergencyVehicles, 2515846680, !0), _defineProperty(_emergencyVehicles, 456714581, !0), _defineProperty(_emergencyVehicles, 741586030, !0), _defineProperty(_emergencyVehicles, 3806844075, !0), _defineProperty(_emergencyVehicles, 3089277354, !0), _defineProperty(_emergencyVehicles, 2601952180, !0), _defineProperty(_emergencyVehicles, 2611638396, !0), _defineProperty(_emergencyVehicles, 1922257928, !0), _emergencyVehicles);
  1912.  
  1913. function getRandomArbitrary(a, b) {
  1914. return Math.random() * (b - a) + a
  1915. }
  1916.  
  1917. function moveSkyCamera(a, b, c, d) {
  1918. switch (b) {
  1919. case "up":
  1920. mp.gui.chat.show(!1);
  1921. disableAllControls = !0;
  1922. mp.players.local.freezePosition(!0);
  1923. mp.game.invoke("0xAAB3200ED59016BC", a.handle, 0, parseInt(c));
  1924. break;
  1925. case "down":
  1926. checkCamInAir(), mp.game.invoke("0xD8295AF639FD9CB8", a.handle)
  1927. }
  1928. }
  1929.  
  1930. function checkCamInAir() {
  1931. mp.game.invoke("0xD9D2CFFF49FAB35F") ? (mp.gui.chat.show(!1), disableAllControls = !0, mp.players.local.freezePosition(!0), mp.players.local.position = LastTeleportPosition, setTimeout(function() {
  1932. checkCamInAir()
  1933. }, 500)) : (disableAllControls = !1, mp.gui.chat.show(!0), mp.players.local.freezePosition(!1), mp.players.local.position = LastTeleportPosition)
  1934. }
  1935. var contactList = null,
  1936. handyOpen = 0,
  1937. HandyState = "main",
  1938. acNumber = null,
  1939. acName = null,
  1940. HandyStatus = null,
  1941. browserInit = 0,
  1942. callChange = null,
  1943. show = !0,
  1944. icName = null,
  1945. editMode = !1,
  1946. newsState = null,
  1947. CallSound = null;
  1948. mp.keys.bind(80, !1, function() {
  1949. editMode || !login || creatorCamera || (handyOpen || null != Webwindow.Handy ? null != Webwindow.Handy && (Webwindow.Handy.call("getState"), browserInit = handyOpen = 0) : (0 == mp.players.local.isDead() && 0 == mp.gui.cursor.visible && (Webwindow.Handy = new CEFBrowser("package://viov/client_ui/html/handy/handy.html", !0), handyOpen = 1), null != tempBrowser && mp.events.call("closeBig")))
  1950. });
  1951.  
  1952. function closeBrowser() {
  1953. browserInit = 0;
  1954. null != Webwindow.Handy && (Webwindow.Handy.destroy(), Webwindow.Handy = null);
  1955. mp.gui.cursor.show(!1, !1);
  1956. mp.gui.chat.show(!0);
  1957. show = !0
  1958. }
  1959. mp.events.add("sentPlayerContacts", function(a) {
  1960. contactList = a;
  1961. browserInit && Webwindow.Handy.call("sendCList", contactList)
  1962. });
  1963. mp.events.add("changeCallStatus", function(a, b) {
  1964. 3 == a ? (mp.game.graphics.notify("Eingehender Anruf (Taste P)"), null == CallSound && (null != voiceChat && mp.events.call("playSound", "handy.ogg", !0), CallSound = !0)) : null != CallSound && (voiceChat && mp.events.call("stopAudio"), setTimeout(function() {
  1965. CallSound = null
  1966. }, 2E3));
  1967. browserInit ? Webwindow.Handy.call("changeCallStatus", JSON.stringify({
  1968. id: a,
  1969. target: b
  1970. })) : callChange = JSON.stringify({
  1971. id: a,
  1972. target: b
  1973. })
  1974. });
  1975. mp.events.add("onServerSendNews", function(a, b, c) {
  1976. Webwindow.Handy.call("Context.set", "news", JSON.parse(a));
  1977. Webwindow.Handy.call("Context.set", "ads", JSON.parse(b));
  1978. Webwindow.Handy.call("Events.setPermission", c)
  1979. });
  1980. mp.events.add("sentPlayerTaxiDriverList", function(a) {
  1981. Webwindow.Handy.call("Context.set", "taxi", a)
  1982. });
  1983. mp.events.add("requestPlayerPhoneCalls", function(a) {
  1984. Webwindow.Handy.call("setPhoneData", a)
  1985. });
  1986. mp.events.add("handyLoaded", function() {
  1987. if (null == Webwindow.Handy) closeBrowser();
  1988. else {
  1989. if (!browserInit) {
  1990. if (null != mp.storage.data.handy) {
  1991. var a = parseInt(mp.storage.data.handy.posx),
  1992. b = parseInt(mp.storage.data.handy.posy),
  1993. c = mp.game.graphics.getScreenActiveResolution(1, 1);
  1994. a <= c.x && b <= c.y ? (Webwindow.Handy.position(a, b, "frame"), Webwindow.Handy.trigger("movebg(" + a + "," + b + ");")) : (Webwindow.Handy.position(100, 100, "frame"), Webwindow.Handy.trigger("movebg(100,100);"))
  1995. } else Webwindow.Handy.position(100, 100, "frame"),
  1996. Webwindow.Handy.trigger("movebg(100,100);");
  1997. Webwindow.Handy.show("handyBody")
  1998. }
  1999. browserInit = 1;
  2000. null != contactList && ("activeCall" == HandyState ? Webwindow.Handy.call("setState", HandyState, acNumber, acName, HandyStatus, newsState) : "incomingCall" == HandyState ? Webwindow.Handy.call("setState", HandyState, icName, newsState) : Webwindow.Handy.call("setState", HandyState), Webwindow.Handy.call("sendCList", contactList));
  2001. "news" == HandyState && mp.events.callRemote("onClientRequestNews");
  2002. "taxi" == HandyState && mp.events.callRemote("requestTaxiDrivers");
  2003. if ("history" == HandyState || "historyView" == HandyState) mp.events.callRemote("requestPlayerPhoneCalls"), Webwindow.Handy.call("setState", "history");
  2004. null != callChange && (Webwindow.Handy.call("changeCallStatus", callChange), callChange = null)
  2005. }
  2006. });
  2007. mp.events.add("triggerServer", function(a, b, c, d, e, f, g, h, l, m) {
  2008. switch (a) {
  2009. case "onClientRequestCallPlayer":
  2010. mp.events.callRemote("onClientRequestCallPlayer", b);
  2011. break;
  2012. case "onClientRequestRemovePlayerContact":
  2013. mp.events.callRemote("onClientRequestRemovePlayerContact", b);
  2014. break;
  2015. case "onClientRequestAddPlayerContact":
  2016. mp.events.callRemote("onClientRequestAddPlayerContact", b);
  2017. break;
  2018. case "onClientRejectedCall":
  2019. mp.events.callRemote("onClientRejectedCall");
  2020. break;
  2021. case "onClientAcceptCall":
  2022. mp.events.callRemote("onClientAcceptCall");
  2023. break;
  2024. case "onClientHandyOff":
  2025. mp.events.callRemote("onClientHandyOff");
  2026. break;
  2027. case "onClientRequestNews":
  2028. mp.events.callRemote("onClientRequestNews");
  2029. break;
  2030. case "onClientHandyOn":
  2031. mp.events.callRemote("onClientHandyOn");
  2032. break;
  2033. case "onClientAddNews":
  2034. a = mp.players.local;
  2035. b = JSON.parse(b);
  2036. b.author = a.name;
  2037. mp.events.callRemote("onClientAddNews", JSON.stringify(b));
  2038. break;
  2039. case "onClientAddAds":
  2040. b = JSON.parse(b);
  2041. mp.events.callRemote("onClientAddAds", JSON.stringify(b));
  2042. break;
  2043. case "onClientUpdateNews":
  2044. a = mp.players.local;
  2045. b = JSON.parse(b);
  2046. b.author = a.name;
  2047. mp.events.callRemote("onClientUpdateNews", JSON.stringify(b));
  2048. break;
  2049. case "onClientUpdateAds":
  2050. b = JSON.parse(b);
  2051. mp.events.callRemote("onClientUpdateAds", JSON.stringify(b));
  2052. break;
  2053. case "onClientDeleteNews":
  2054. mp.events.callRemote("onClientDeleteNews", b);
  2055. break;
  2056. case "onClientDeleteAds":
  2057. mp.events.callRemote("onClientDeleteAds", b);
  2058. break;
  2059. case "onClientGetBonus":
  2060. mp.events.callRemote("onClientGetBonus", b);
  2061. break;
  2062. case "callTaxiDriver":
  2063. mp.events.callRemote("callTaxiDriver", b);
  2064. break;
  2065. case "requestTaxiDrivers":
  2066. mp.events.callRemote("requestTaxiDrivers");
  2067. break;
  2068. case "onClientSendPosition":
  2069. mp.events.callRemote("onClientSendPosition");
  2070. break;
  2071. case "requestPlayerPhoneCalls":
  2072. mp.events.callRemote("requestPlayerPhoneCalls")
  2073. }
  2074. });
  2075. mp.events.add("setStateCEF", function(a, b, c, d, e, f) {
  2076. HandyState = a;
  2077. acNumber = b;
  2078. acName = c;
  2079. HandyStatus = d;
  2080. newsState = f;
  2081. closeBrowser()
  2082. });
  2083. mp.events.add("setEditMode", function(a) {
  2084. editMode = a;
  2085. mp.gui.chat.show(!1)
  2086. });
  2087. mp.events.add("saveHandyPosition", function(a, b) {
  2088. var c = mp.game.graphics.getScreenActiveResolution(1, 1);
  2089. mp.storage.data.handy = a > c.x - 50 || b > c.y - 50 ? {
  2090. posx: c.x - 100,
  2091. posy: c.y - 100
  2092. } : {
  2093. posx: a,
  2094. posy: b
  2095. };
  2096. mp.storage.flush()
  2097. });
  2098. var tempBrowser = void 0;
  2099. mp.events.add("openBig", function(a) {
  2100. if (null != Webwindow.Handy) switch (Webwindow.Handy.destroy(), Webwindow.Handy = null, browserInit = handyOpen = 0, editMode = !0, a) {
  2101. case "news":
  2102. tempBrowser = new CEFBrowser("package://viov/client_ui/html/handy/news.html", !0);
  2103. break;
  2104. case "forum":
  2105. tempBrowser = new CEFBrowser("package://viov/client_ui/html/handy/forum.html", !0), mp.events.callRemote("quest_HelpUse_Done")
  2106. }
  2107. });
  2108. mp.events.add("closeBig", function() {
  2109. null != tempBrowser && void 0 !== tempBrowser && (tempBrowser.destroy(), tempBrowser = null);
  2110. login && (editMode = !1, HandyState = "main", handyOpen || null != Webwindow.Handy ? (Webwindow.Handy.call("getState"), browserInit = handyOpen = 0) : 0 != mp.players.local.isDead() || mp.gui.cursor.visible || (Webwindow.Handy = new CEFBrowser("package://viov/client_ui/html/handy/handy.html", !0), handyOpen = 1))
  2111. });
  2112. mp.events.add("forumReady", function() {
  2113. accessToken && null != tempBrowser && tempBrowser.call("autoLogin", accessToken)
  2114. });
  2115. var voiceChat, MaxRange = 30;
  2116. mp.voiceChat.muted = !0;
  2117. var g_voiceMgr = {
  2118. listeners: [],
  2119. listenersglobal: [],
  2120. currentspeaking: [],
  2121. timer: null,
  2122. add: function(a, b) {
  2123. this.listeners.push(a);
  2124. a.isListening = !0;
  2125. mp.events.callRemote("OnClientRequestEnableVoiceTo", a);
  2126. a.voiceVolume = 1;
  2127. b ? a.voice3d = !0 : (this.listenersglobal.push(a), a.voice3d = !1)
  2128. },
  2129. remove: function(a, b) {
  2130. var c = this.listeners.indexOf(a); - 1 !== c && this.listeners.splice(c, 1);
  2131. c = this.listenersglobal.indexOf(a); - 1 !== c && this.listenersglobal.splice(c, 1);
  2132. a.isListening = !1;
  2133. b && mp.events.callRemote("OnClientRequestDisableVoiceTo",
  2134. a)
  2135. },
  2136. start: function() {
  2137. var a = this;
  2138. a.timer = setInterval(function() {
  2139. a.cycle()
  2140. }, 750)
  2141. },
  2142. cycle: function() {
  2143. var a = mp.players.local,
  2144. b = a.position,
  2145. c = mp.storage.data.voice_settings.volume;
  2146. c /= 75;
  2147. mp.players.forEachInStreamRange(function(c) {
  2148. if (c != a && !c.isListening) {
  2149. var d = c.position;
  2150. mp.game.system.vdist(d.x, d.y, d.z, b.x, b.y, b.z) <= MaxRange && 0 == c.isDead() && 0 == a.isDead() && g_voiceMgr.add(c, !0)
  2151. }
  2152. });
  2153. g_voiceMgr.listeners.forEach(function(d) {
  2154. if (-1 === g_voiceMgr.listenersglobal.indexOf(d))
  2155. if (0 !== d.handle) {
  2156. var e = d.position;
  2157. e = mp.game.system.vdist(e.x,
  2158. e.y, e.z, b.x, b.y, b.z);
  2159. e > MaxRange || 1 == d.isDead() || 1 == a.isDead() ? g_voiceMgr.remove(d, !0) : e <= MaxRange && (d.voiceVolume = (1 - 1 / MaxRange * e) * c + 1 / MaxRange * e * 0)
  2160. } else g_voiceMgr.remove(d, !0)
  2161. })
  2162. }
  2163. };
  2164. mp.events.add("playerQuit", function(a) {
  2165. a.isListening && g_voiceMgr.remove(a, !1)
  2166. });
  2167. mp.events.add("ConnectPlayerWithOtherPlayer", function(a) {
  2168. a.isListening && g_voiceMgr.remove(a, !1);
  2169. g_voiceMgr.add(a, !1)
  2170. });
  2171. mp.events.add("DisconnectPlayerWithOtherPlayer", function(a) {
  2172. a.isListening && g_voiceMgr.remove(a, !1)
  2173. });
  2174. mp.events.add("playerStartTalking", function(a) {
  2175. -1 === g_voiceMgr.currentspeaking.indexOf(a) && g_voiceMgr.currentspeaking.push(a)
  2176. });
  2177. mp.events.add("playerStopTalking", function(a) {
  2178. a = g_voiceMgr.currentspeaking.indexOf(a); - 1 !== a && g_voiceMgr.currentspeaking.splice(a, 1)
  2179. });
  2180. var ShowVoicePlayers = !1;
  2181. mp.events.add("showVoicePlayers", function(a) {
  2182. ShowVoicePlayers = a
  2183. });
  2184. mp.events.add("render", function() {
  2185. if (ShowVoicePlayers) {
  2186. var a = .45;
  2187. mp.game.graphics.clearDrawOrigin();
  2188. g_voiceMgr.listeners.forEach(function(b) {
  2189. -1 === g_voiceMgr.currentspeaking.indexOf(b) ? mp.game.graphics.drawText(b.name, [.025, a], {
  2190. font: 0,
  2191. color: [255, 255, 255, 255],
  2192. scale: [.22, .22],
  2193. outline: !1,
  2194. centre: !1
  2195. }) : mp.game.graphics.drawText(b.name, [.025, a], {
  2196. font: 0,
  2197. color: [255, 0, 0, 255],
  2198. scale: [.22, .22],
  2199. outline: !1,
  2200. centre: !1
  2201. });
  2202. a += .02
  2203. })
  2204. }
  2205. });
  2206. var voice_ready = !1;
  2207. mp.events.add("voiceChatLoader", function() {
  2208. setTimeout(function() {
  2209. voiceChat || null == accessToken || (g_voiceMgr.start(), voice_ready = !0, voiceChat = new CEFBrowser("package://viov/client_ui/html/hud/hud.html", !1), mp.game.ui.displayRadar(!0))
  2210. }, 2E3)
  2211. });
  2212. mp.events.add("initVoiceWindow", function() {
  2213. mp.events.call("hudLoaded");
  2214. mp.voiceChat.muted = !0;
  2215. voiceChat.call("mute", !0);
  2216. if (0 < tempVoiceCommands.length)
  2217. for (var a = 0; a < tempVoiceCommands.length; a++) voiceChat.call(tempVoiceCommands[a].command, tempVoiceCommands[a].arg)
  2218. });
  2219. mp.keys.bind(77, !0, function() {
  2220. !voice_ready || mp.gui.cursor.visible && (editMode || !login || creatorCamera || null == Webwindow.Handy) || (mp.voiceChat.muted = mp.storage.data.voice_settings.pushtotalk ? !1 : !mp.voiceChat.muted, voiceChat.call("mute", mp.voiceChat.muted))
  2221. });
  2222. mp.keys.bind(77, !1, function() {
  2223. voice_ready && mp.storage.data.voice_settings.pushtotalk && (mp.voiceChat.muted = !0, voiceChat.call("mute", !0))
  2224. });
  2225. var audioMuted = {
  2226. mutedSounds: [],
  2227. mute: function(a) {
  2228. mp.gui.chat.push("sound " + a);
  2229. this.mutedSounds[a] = !0
  2230. },
  2231. unmute: function(a) {
  2232. this.mutedSounds[a] = !1
  2233. },
  2234. isMuted: function(a) {
  2235. return this.mutedSounds[a]
  2236. }
  2237. };
  2238. mp.events.add("playSound", function(a, b) {
  2239. null != voiceChat && voiceChat.call("playAudio", a, b)
  2240. });
  2241. mp.events.add("stopAudio", function() {
  2242. voiceChat.call("stopAudio")
  2243. });
  2244. mp.gui.execute("window.location \x3d 'package://viov/client_ui/html/hud/chat.html'");
  2245. mp.events.add("SendChatMessageToPlayer", function(a) {
  2246. mp.gui.chat.colors = !0;
  2247. a = a.replace("~r~", "!{#FF0000}");
  2248. a = a.replace("~g~", "!{#00FF00}");
  2249. a = a.replace("~b~", "!{#4286f4}");
  2250. a = a.replace("~w~", "!{#FFFFFF}");
  2251. a = a.replace("~r~", "!{#FF0000}");
  2252. a = a.replace("~g~", "!{#00FF00}");
  2253. a = a.replace("~b~", "!{#4286f4}");
  2254. a = a.replace("~w~", "!{#FFFFFF}");
  2255. mp.gui.chat.push(a)
  2256. });
  2257. var language = !1,
  2258. lastpos, afkcounter = 0,
  2259. canbeafklist = {},
  2260. isafk = !1,
  2261. amountofcanbeafk = 0,
  2262. tickcount = 0;
  2263. language = lang_de.antiAFK;
  2264. var SetSaveTimes = 0,
  2265. SetSavePosition;
  2266.  
  2267. function SavePlayerPositionTimer() {
  2268. 1 >= mp.game.system.vdist2(SetSavePosition.x, SetSavePosition.y, SetSavePosition.z, mp.players.local.position.x, mp.players.local.position.y, mp.players.local.position.z) ? (SetSaveTimes -= 5, 0 >= SetSaveTimes ? mp.events.callRemote("OnClientDisconnectSave") : (mp.game.graphics.notify("~b~Du wirst in " + SetSaveTimes.toString() + " Sekunden ausgeloggt!"), setTimeout(SavePlayerPositionTimer, 5E3))) : mp.game.graphics.notify("~r~Logout abgebrochen!")
  2269. }
  2270. mp.events.add("OnClientRequestDisconnectSave", function() {
  2271. SetSaveTimes = 35;
  2272. SetSavePosition = mp.players.local.position;
  2273. setTimeout(SavePlayerPositionTimer, 500)
  2274. });
  2275. mp.events.add("changeAntiAFKState", function() {
  2276. for (var a = arguments.length, b = Array(a), c = 0; c < a; c++) b[c] = arguments[c];
  2277. canbeafklist[b[0]] != b[1] && (b[1] ? (isafk && (isafk = !1, mp.events.callRemote("onPlayerStopAFK")), afkcounter = 0, amountofcanbeafk++) : amountofcanbeafk--);
  2278. canbeafklist[b[0]] = b[1]
  2279. });
  2280.  
  2281. function canPlayerBeAFK() {
  2282. return 0 != amountofcanbeafk && !mp.players.local.isDead()
  2283. }
  2284. mp.events.add("playerWeaponShot", function() {
  2285. afkcounter = 0;
  2286. isafk && (isafk = !1, mp.events.callRemote("onPlayerStopAFK"))
  2287. });
  2288. setInterval(function() {
  2289. checkAFK()
  2290. }, 15E3);
  2291.  
  2292. function checkAFK() {
  2293. AntiCheat();
  2294. if (0 == mp.players.local.isInAnyBoat() && 0 == checkIfPlayerIsOnABoat())
  2295. if (null == lastpos) lastpos = mp.players.local.position;
  2296. else {
  2297. var a = mp.players.local.position;
  2298. 3 > mp.game.system.vdist2(lastpos.x, lastpos.y, lastpos.z, a.x, a.y, a.z) ? isafk ? (mp.game.graphics.notify("~r~" + language.youAreAFK), mp.game.graphics.notify("~r~" + language.youAreAFK)) : (afkcounter++, 8 <= afkcounter && (canPlayerBeAFK() ? (afkcounter = 0, isafk && (isafk = !1, mp.events.callRemote("onPlayerStopAFK"))) : 15 == afkcounter ? mp.game.graphics.notify("~r~" +
  2299. language.AFKIn30Seconds) : 17 <= afkcounter && (isafk = !0, mp.game.graphics.notify("~r~" + language.youAreAFK), mp.game.graphics.notify("~r~" + language.youAreAFK), mp.events.callRemote("onPlayerAFK"), afkcounter = 0))) : (isafk && (isafk = !1, mp.events.callRemote("onPlayerStopAFK")), afkcounter = 0);
  2300. lastpos = a
  2301. } else 0 != antiAfkCheck.getLastAction(15) || isafk ? (afkcounter = 0, isafk = !1, mp.events.callRemote("onPlayerStopAFK")) : (afkcounter++, 8 <= afkcounter && (canPlayerBeAFK() ? (afkcounter = 0, isafk && (isafk = !1, mp.events.callRemote("onPlayerStopAFK"))) :
  2302. 15 == afkcounter ? mp.game.graphics.notify("~r~" + language.AFKIn30Seconds) : 17 <= afkcounter && (isafk = !0, mp.game.graphics.notify("~r~" + language.youAreAFK), mp.game.graphics.notify("~r~" + language.youAreAFK), mp.events.callRemote("onPlayerAFK"), afkcounter = 0)))
  2303. }
  2304.  
  2305. function checkIfPlayerIsOnABoat() {
  2306. var a = !1,
  2307. b = mp.players.local.position,
  2308. c = mp.players.local.position;
  2309. c.z -= 15;
  2310. (b = mp.raycasting.testPointToPoint(b, c, mp.players.local.handle, 2)) && 2 == b.entity.getType() && 1 == mp.game.vehicle.isThisModelABoat(b.entity.model) && (a = !0);
  2311. return a
  2312. }
  2313. var antiAfkCheck = {
  2314. movements: {
  2315. left: 0,
  2316. right: 0,
  2317. up: 0,
  2318. down: 0,
  2319. jump: 0,
  2320. shift: 0,
  2321. mouse1: 0,
  2322. mouse2: 0
  2323. },
  2324. getLastAction: function(a) {
  2325. var b = !1;
  2326. for (k in this.movements) this.movements[k] + a > Date.now() / 1E3 && (b = k);
  2327. return 0 != b
  2328. }
  2329. };
  2330. mp.events.add("render", function() {
  2331. mp.game.controls.isControlJustPressed(0, 266) && (antiAfkCheck.movements.left = new Date / 1E3);
  2332. mp.game.controls.isControlJustPressed(0, 267) && (antiAfkCheck.movements.right = new Date / 1E3);
  2333. mp.game.controls.isControlJustPressed(0, 268) && (antiAfkCheck.movements.up = new Date / 1E3);
  2334. mp.game.controls.isControlJustPressed(0, 269) && (antiAfkCheck.movements.down = new Date / 1E3);
  2335. mp.game.controls.isControlJustPressed(0, 22) && (antiAfkCheck.movements.jump = new Date / 1E3);
  2336. mp.game.controls.isControlJustPressed(0,
  2337. 21) && (antiAfkCheck.movements.shift = new Date / 1E3);
  2338. mp.game.controls.isControlJustPressed(0, 24) && (antiAfkCheck.movements.mouse1 = new Date / 1E3);
  2339. mp.game.controls.isControlJustPressed(0, 25) && (antiAfkCheck.movements.mouse2 = new Date / 1E3)
  2340. });
  2341. var ClientColShapes = [],
  2342. ClientColShape = function() {
  2343. function a(b, c, d, e, f, g) {
  2344. _classCallCheck(this, a);
  2345. this._setup(b, c, d, e, f, g)
  2346. }
  2347. _createClass(a, [{
  2348. key: "_setup",
  2349. value: function(a, c, d, e, f, g) {
  2350. this._id = a;
  2351. this._dim = c;
  2352. this._size = e;
  2353. this._pos = {
  2354. x: d.x,
  2355. y: d.y,
  2356. z: d.z
  2357. };
  2358. this._colshape = mp.colshapes.newSphere(this._pos.x, this._pos.y, this._pos.z, this._size, this._dim);
  2359. "MedicPickup" == f || "MedicInformation" == f ? (this._blip = mp.blips.new(84, new mp.Vector3(this._pos.x, this._pos.y, this._pos.z), {
  2360. scale: 1,
  2361. name: g
  2362. }), "MedicPickup" == f && mp.gui.chat.push("!{#FF0000}" +
  2363. g + " ist schwer verletzt!")) : this._blip = null
  2364. }
  2365. }, {
  2366. key: "trigger",
  2367. value: function() {
  2368. mp.events.callRemote("OnClientEnterVioColShape", this._id)
  2369. }
  2370. }, {
  2371. key: "destroy",
  2372. value: function() {
  2373. this._colshape && (this._blip && this._blip.destroy(), this._colshape.destroy());
  2374. this._colshape = null
  2375. }
  2376. }, {
  2377. key: "isShape",
  2378. value: function(a) {
  2379. return this._colshape == a
  2380. }
  2381. }, {
  2382. key: "isID",
  2383. value: function(a) {
  2384. return this._id == a
  2385. }
  2386. }]);
  2387. return a
  2388. }();
  2389. mp.events.add("createVioColShape", function(a) {
  2390. a = JSON.parse(a);
  2391. a = new ClientColShape(a.ID, a.Dim, a.Pos, a.Size, a.EventName, a.Arg1);
  2392. ClientColShapes.push(a)
  2393. });
  2394. mp.events.add("destroyVioColShape", function(a) {
  2395. ClientColShapes.forEach(function(b, c) {
  2396. b.isID(a) && (b.destroy(), ClientColShapes[c] = null, delete ClientColShapes[c])
  2397. })
  2398. });
  2399. mp.events.add("playerEnterColshape", function(a) {
  2400. ClientColShapes.forEach(function(b) {
  2401. b.isShape(a) && b.trigger()
  2402. })
  2403. });
  2404. var CEFBrowser = function() {
  2405. function a(b, c) {
  2406. _classCallCheck(this, a);
  2407. this._setup(b, c)
  2408. }
  2409. _createClass(a, [{
  2410. key: "_setup",
  2411. value: function(a, c) {
  2412. this.id = Math.random().toString(36).substr(2, 16);
  2413. this.browser = mp.browsers.new(a);
  2414. if (this.interact = c) mp.gui.cursor.visible = !0, mp.gui.chat.show(!1)
  2415. }
  2416. }, {
  2417. key: "load",
  2418. value: function(a) {
  2419. this.browser.execute("window.location \x3d '" + a + "?id\x3d" + this.id + "'")
  2420. }
  2421. }, {
  2422. key: "resize",
  2423. value: function(a, c) {
  2424. this.browser.execute("document.body.style.width \x3d '" + a + "px';");
  2425. this.browser.execute("document.body.style.height \x3d '" +
  2426. c + "px';")
  2427. }
  2428. }, {
  2429. key: "position",
  2430. value: function(a, c, d) {
  2431. this.browser.execute("document.getElementById('" + d + "').style.left \x3d '" + a + "px'; ");
  2432. this.browser.execute("document.getElementById('" + d + "').style.top \x3d '" + c + "px'; ")
  2433. }
  2434. }, {
  2435. key: "trigger",
  2436. value: function(a) {
  2437. this.browser.execute(a)
  2438. }
  2439. }, {
  2440. key: "call",
  2441. value: function() {
  2442. for (var a = Array.prototype.slice.call(arguments), c = a[0], d = "(", e = 1; e < a.length; e++) {
  2443. switch (_typeof(a[e])) {
  2444. case "string":
  2445. d += "'" + a[e] + "'";
  2446. break;
  2447. case "number":
  2448. case "boolean":
  2449. d += a[e];
  2450. break;
  2451. case "object":
  2452. d +=
  2453. JSON.stringify(a[e])
  2454. }
  2455. e < a.length - 1 && (d += ",")
  2456. }
  2457. this.browser.execute(c + (d + ");"))
  2458. }
  2459. }, {
  2460. key: "destroy",
  2461. value: function() {
  2462. null != this.browser && (this.browser.destroy(), this.browser = null);
  2463. this.interact && (mp.gui.cursor.visible = !1, mp.gui.chat.show(!0))
  2464. }
  2465. }, {
  2466. key: "show",
  2467. value: function(a) {
  2468. this.browser.execute("document.getElementById('" + a + "').style.visibility \x3d 'visible';")
  2469. }
  2470. }, {
  2471. key: "active",
  2472. value: function(a) {
  2473. this.browser.active = a
  2474. }
  2475. }, {
  2476. key: "isActive",
  2477. get: function() {
  2478. return this.browser.active
  2479. }
  2480. }]);
  2481. return a
  2482. }(),
  2483. spectating = !1,
  2484. specateCam = null,
  2485. specName = void 0,
  2486. camRotX, camRotY;
  2487. mp.events.add("SetLocalPlayerToSpectator", function(a) {
  2488. specName = a;
  2489. setTimeout(spect, 3E3)
  2490. });
  2491.  
  2492. function spect() {
  2493. mp.gui.chat.push("Name: " + specName);
  2494. null != specateCam && (specateCam.setActive(!1), specateCam.destroy(), mp.game.cam.renderScriptCams(!1, !1, 0, !0, !1), specateCam = null, spectating = !1);
  2495. mp.players.forEachInStreamRange(function(a) {
  2496. if (a.name == specName) {
  2497. var b = a.position;
  2498. specateCam = mp.cameras.new("test", b, new mp.Vector3(0, 0, 0), 40);
  2499. specateCam.setCoord(b.x, b.y, b.z);
  2500. b = mp.gui.cursor.position;
  2501. mp.gui.chat.push(JSON.stringify(b));
  2502. specateCam.attachTo(a.handle, 0, -5, 5, !1);
  2503. specateCam.setActive(!0);
  2504. mp.game.cam.renderScriptCams(!0, !1, 0, !0, !1);
  2505. spectating = !0;
  2506. camRotX = b[0];
  2507. camRotY = b[1]
  2508. }
  2509. })
  2510. }
  2511. mp.events.add("render", function() {
  2512. if (spectating && null != specateCam) {
  2513. var a = specateCam.getRot(2),
  2514. b = void 0,
  2515. c = void 0;
  2516. mp.gui.cursor.position[0] != camRotX && (b = mp.gui.cursor.position[0] - camRotX, camRotX = mp.gui.cursor.position[0]);
  2517. mp.gui.cursor.position[1] != camRotY && (c = mp.gui.cursor.position[1] - camRotY, camRotY = mp.gui.cursor.position[1]);
  2518. if (b || c) isNaN(b) && (b = 0), isNaN(c) && (c = 0), specateCam.setRot(a.x + c, 0, a.z + b, 2);
  2519. mp.players.forEachInStreamRange(function(a) {
  2520. a.name == specName && (a = a.position, mp.players.local.position =
  2521. new mp.Vector3(a.x, a.y, a.z - 50))
  2522. })
  2523. }
  2524. });
  2525. mp.events.add("render", function() {});
  2526. mp.events.add("SetLocalPlayerOutOfSpactator", function() {
  2527. spectating && null != specateCam && (specateCam.setActive(!1), specateCam.destroy(), mp.game.cam.renderScriptCams(!1, !1, 0, !0, !1), specateCam = null, spectating = !1, mp.players.local.freezePosition(!1), mp.players.local.detach(!0, !0))
  2528. });
  2529. mp.events.add("createPeds", function(a) {
  2530. a = JSON.parse(a);
  2531. for (var b in a) null != vioPeds[a[b].ID] && (vioPeds[a[b].ID].destroy(), vioPeds[a[b].ID] = null), vioPeds[a[b].ID] = new NPC({
  2532. id: a[b].ID,
  2533. x: a[b].Pos.x,
  2534. y: a[b].Pos.y,
  2535. z: a[b].Pos.z,
  2536. rot: a[b].Rot,
  2537. dim: 0,
  2538. skin: a[b].Hash,
  2539. animDict: a[b].AnimDict,
  2540. animName: a[b].AnimName,
  2541. event: "" != a[b].EventName ? a[b].EventName : "",
  2542. radius: "" != a[b].EventName ? 1.5 : 0
  2543. }), a[b].RobPossible && new pedRob(vioPeds[a[b].ID]._id, a[b].RobType.split("_")[0], a[b].RobType.split("_")[1])
  2544. });
  2545. mp.events.add("createSinglePed", function(a) {
  2546. a = JSON.parse(a);
  2547. null != vioPeds[a.ID] && (vioPeds[a.ID].destroy(), vioPeds[a.ID] = null);
  2548. vioPeds[a.ID] = new NPC({
  2549. id: a.ID,
  2550. x: a.Pos.x,
  2551. y: a.Pos.y,
  2552. z: a.Pos.z,
  2553. rot: a.Rot,
  2554. dim: 0,
  2555. skin: a.Hash,
  2556. animDict: a.AnimDict,
  2557. animName: a.AnimName,
  2558. event: "" != a.EventName ? a.EventName : "",
  2559. radius: "" != a.EventName ? 1.5 : 0
  2560. });
  2561. a.RobPossible && new pedRob(vioPeds[a.ID]._id, a.RobType.split("_")[0], a.RobType.split("_")[1])
  2562. });
  2563. mp.events.add("createSingleObject", function(a) {
  2564. var b = JSON.parse(a);
  2565. if (b)
  2566. if (null != vioObjects[b.ID] && (vioObjects[b.ID].destroy(), vioObjects[b.ID].markForDeletion(), vioObjects[b.ID] = null), void 0 !== bones[b.OffsetKey] && (b.OffsetKey = bones[b.OffsetKey]), "" != b.OffsetKey) {
  2567. var c = null;
  2568. mp.players.forEach(function(a) {
  2569. b.OffsetPlayerName == a.name && (c = a)
  2570. });
  2571. vioObjects[b.ID] = new OBJECT({
  2572. id: b.ID,
  2573. x: b.Pos.x,
  2574. y: b.Pos.y,
  2575. z: b.Pos.z,
  2576. rx: b.Rot.x,
  2577. ry: b.Rot.y,
  2578. rz: b.Rot.z,
  2579. dim: b.Dim,
  2580. hash: b.Hash,
  2581. alpha: b.Alpha,
  2582. collision: b.Collision,
  2583. offsetPosX: b.OffsetPos.x,
  2584. offsetPosY: b.OffsetPos.y,
  2585. offsetPosZ: b.OffsetPos.z,
  2586. offsetRotX: b.OffsetRot.x,
  2587. offsetRotY: b.OffsetRot.y,
  2588. offsetRotZ: b.OffsetRot.z,
  2589. offsetPlayer: c,
  2590. offsetBone: b.OffsetKey,
  2591. event: "" != b.EventName ? b.EventName : "",
  2592. radius: "" != b.EventName ? b.EventRadius : 0
  2593. })
  2594. } else vioObjects[b.ID] = new OBJECT({
  2595. id: b.ID,
  2596. x: b.Pos.x,
  2597. y: b.Pos.y,
  2598. z: b.Pos.z,
  2599. rx: b.Rot.x,
  2600. ry: b.Rot.y,
  2601. rz: b.Rot.z,
  2602. dim: b.Dim,
  2603. hash: b.Hash,
  2604. alpha: b.Alpha,
  2605. collision: b.Collision,
  2606. event: "" != b.EventName ? b.EventName : "",
  2607. radius: "" != b.EventName ? b.EventRadius : 0
  2608. })
  2609. });
  2610. mp.events.add("createObjects", function(a) {
  2611. var b = JSON.parse(a);
  2612. a = function(a) {
  2613. null != vioObjects[b[a].ID] && (vioObjects[b[a].ID].markForDeletion(), vioObjects[b[a].ID].destroy(), vioObjects[b[a].ID] = null);
  2614. void 0 !== bones[b[a].OffsetKey] && (b[a].OffsetKey = bones[b[a].OffsetKey]);
  2615. if ("" != b[a].OffsetKey) {
  2616. var c = null;
  2617. mp.players.forEachInStreamRange(function(d) {
  2618. b[a].OffsetPlayerName == d.name && (c = d)
  2619. });
  2620. vioObjects[b[a].ID] = new OBJECT({
  2621. id: b[a].ID,
  2622. x: b[a].Pos.x,
  2623. y: b[a].Pos.y,
  2624. z: b[a].Pos.z,
  2625. rx: b[a].Rot.x,
  2626. ry: b[a].Rot.y,
  2627. rz: b[a].Rot.z,
  2628. dim: b[a].Dim,
  2629. hash: b[a].Hash,
  2630. alpha: b[a].Alpha,
  2631. collision: b[a].Collision,
  2632. offsetPosX: b[a].OffsetPos.x,
  2633. offsetPosY: b[a].OffsetPos.y,
  2634. offsetPosZ: b[a].OffsetPos.z,
  2635. offsetRotX: b[a].OffsetRot.x,
  2636. offsetRotY: b[a].OffsetRot.y,
  2637. offsetRotZ: b[a].OffsetRot.z,
  2638. offsetPlayer: c,
  2639. offsetBone: b[a].OffsetKey,
  2640. event: "" != b[a].EventName ? b[a].EventName : "",
  2641. radius: "" != b[a].EventName ? b[a].EventRadius : ""
  2642. })
  2643. } else vioObjects[b[a].ID] = new OBJECT({
  2644. id: b[a].ID,
  2645. x: b[a].Pos.x,
  2646. y: b[a].Pos.y,
  2647. z: b[a].Pos.z,
  2648. rx: b[a].Rot.x,
  2649. ry: b[a].Rot.y,
  2650. rz: b[a].Rot.z,
  2651. dim: b[a].Dim,
  2652. hash: b[a].Hash,
  2653. alpha: b[a].Alpha,
  2654. collision: b[a].Collision,
  2655. event: "" != b[a].EventName ? b[a].EventName : "",
  2656. radius: "" != b[a].EventName ? b[a].EventRadius : ""
  2657. })
  2658. };
  2659. for (var c in b) a(c)
  2660. });
  2661. mp.events.add("destroyObject", function(a) {
  2662. null != vioObjects[a] && (vioObjects[a].markForDeletion(), vioObjects[a].destroy(), vioObjects[a] = null)
  2663. });
  2664. mp.events.add("destroyPed", function(a) {
  2665. null != vioPeds[a] && (vioPeds[a].destroy(), vioPeds[a] = null)
  2666. });
  2667. var QuestString = "";
  2668. mp.events.add("StartQuestDialog", function() {
  2669. null == Webwindow.QuestWindow && null == creatorCamera && (Webwindow.QuestWindow = !1, QuestString = 1 >= arguments.length ? void 0 : arguments[1], TempArguments.QuestWindow = 0 >= arguments.length ? void 0 : arguments[0], Webwindow.QuestWindow = new CEFBrowser("package://viov/client_ui/html/quest/quest.html", !0), disableAllControls = !0)
  2670. });
  2671. mp.events.add("initQuestWindow", function() {
  2672. null != Webwindow.QuestWindow && (Webwindow.QuestWindow.call("vio._callEvent", "quest:init", JSON.parse(TempArguments.QuestWindow)), TempArguments.QuestWindow = null)
  2673. });
  2674. mp.events.add("requestCloseQuestWindow", function() {
  2675. null != Webwindow.QuestWindow && (Webwindow.QuestWindow.destroy(), Webwindow.QuestWindow = null, mp.gui.chat.activate(!0), mp.gui.cursor.show(!1, !1), disableAllControls = !1)
  2676. });
  2677. mp.events.add("requestSubmitQuestWindow", function() {
  2678. null != Webwindow.QuestWindow && (Webwindow.QuestWindow.destroy(), Webwindow.QuestWindow = null, mp.gui.chat.activate(!0), mp.gui.cursor.show(!1, !1), disableAllControls = !1, mp.events.callRemote("submitQuest", QuestString))
  2679. });
  2680. mp.events.add("initTutWindow", function() {
  2681. "1" == ClientSettings[7] && null == Webwindow.TutorialWindow && (Webwindow.TutorialWindow = new CEFBrowser("package://viov/client_ui/html/infobox/infobox.html", !1))
  2682. });
  2683. mp.events.add("sentQuestUpdate", function() {
  2684. null != Webwindow.TutorialWindow && ("" != (0 >= arguments.length ? void 0 : arguments[0]) && Webwindow.TutorialWindow.call("vio._callEvent", "infoboxdelete", 0 >= arguments.length ? void 0 : arguments[0]), TempArguments.TutorialWindowArg = {}, TempArguments.TutorialWindowArg.id = 0 >= arguments.length ? void 0 : arguments[0], TempArguments.TutorialWindowArg.typ = "4", TempArguments.TutorialWindowArg.msg = 1 >= arguments.length ? void 0 : arguments[1], TempArguments.TutorialWindowArg.time = 0, setTimeout(UpdateQuestStatus,
  2685. 3E3))
  2686. });
  2687. mp.events.add("destroyTutQuest", function() {
  2688. null != Webwindow.TutorialWindow && Webwindow.TutorialWindow.call("vio._callEvent", "infoboxdelete", 0 >= arguments.length ? void 0 : arguments[0])
  2689. });
  2690. mp.events.add("sentNewQuest", function() {
  2691. if (null != Webwindow.TutorialWindow) {
  2692. var a = {};
  2693. a.id = 0 >= arguments.length ? void 0 : arguments[0];
  2694. a.typ = "4";
  2695. a.msg = 1 >= arguments.length ? void 0 : arguments[1];
  2696. a.time = 0;
  2697. Webwindow.TutorialWindow.call("vio._callEvent", "infoboxadd", JSON.stringify(a))
  2698. }
  2699. });
  2700. mp.events.add("destroyTutWindow", function() {
  2701. null != Webwindow.TutorialWindow && (Webwindow.TutorialWindow.destroy(), Webwindow.TutorialWindow = null)
  2702. });
  2703. mp.events.add("infoboxinit", function() {
  2704. mp.events.callRemote("requestPlayerQuest")
  2705. });
  2706.  
  2707. function UpdateQuestStatus() {
  2708. null != Webwindow.TutorialWindow && Webwindow.TutorialWindow.call("vio._callEvent", "infoboxadd", JSON.stringify(TempArguments.TutorialWindowArg))
  2709. }
  2710. var NPC = function() {
  2711. function a(b) {
  2712. _classCallCheck(this, a);
  2713. this._setup(b)
  2714. }
  2715. _createClass(a, [{
  2716. key: "_setup",
  2717. value: function(a) {
  2718. this._id = a.id;
  2719. this._skin = a.skin;
  2720. this._pos = {
  2721. x: a.x,
  2722. y: a.y,
  2723. z: a.z
  2724. };
  2725. this._rot = a.rot;
  2726. this._dim = a.dim;
  2727. this._ped = null;
  2728. this._animation = {
  2729. anim: a.animName,
  2730. dict: a.animDict
  2731. };
  2732. this._colshape = null;
  2733. this._event = a.event;
  2734. this._colradius = a.radius;
  2735. this.create()
  2736. }
  2737. }, {
  2738. key: "create",
  2739. value: function() {
  2740. this._ped || (this._ped = mp.peds.new(mp.game.joaat(this._skin), new mp.Vector3(this._pos.x, this._pos.y, this._pos.z),
  2741. this._rot,
  2742. function(a) {}, this._dim), mp.game.streaming.requestAnimDict(this._animation.dict), "" != this._animation.dict && null != this._animation.dict && void 0 !== this._animation.dict && this._ped.taskPlayAnim(this._animation.dict, this._animation.anim, 8, 1, -1, 1, .5, !0, !0, !0), "" != this._event && (this._colshape = mp.colshapes.newSphere(this._pos.x, this._pos.y, this._pos.z, this._colradius)))
  2743. }
  2744. }, {
  2745. key: "trigger",
  2746. value: function() {
  2747. mp.events.callRemote(this._event, this._id)
  2748. }
  2749. }, {
  2750. key: "getPed",
  2751. value: function() {
  2752. if (this._ped) return this._ped
  2753. }
  2754. }, {
  2755. key: "destroy",
  2756. value: function() {
  2757. this._ped && (this._ped.destroy(), this._ped = null);
  2758. this._colshape && this._colshape.destroy();
  2759. this._colshape = null
  2760. }
  2761. }]);
  2762. return a
  2763. }();
  2764. mp.events.add("playerEnterColshape", function(a) {
  2765. for (key in vioPeds) vioPeds[key] && vioPeds[key]._colshape == a && vioPeds[key].trigger()
  2766. });
  2767. var OBJECT = function() {
  2768. function a(b) {
  2769. _classCallCheck(this, a);
  2770. this._setup(b)
  2771. }
  2772. _createClass(a, [{
  2773. key: "_setup",
  2774. value: function(a) {
  2775. this._id = a.id;
  2776. this._hash = a.hash;
  2777. this._pos = {
  2778. x: a.x,
  2779. y: a.y,
  2780. z: a.z
  2781. };
  2782. this._rot = {
  2783. x: a.rx,
  2784. y: a.ry,
  2785. z: a.rz
  2786. };
  2787. this._dim = a.dim;
  2788. this._offsetPos = {
  2789. x: a.offsetPosX,
  2790. y: a.offsetPosY,
  2791. z: a.offsetPosZ
  2792. };
  2793. this._offsetRot = {
  2794. x: a.offsetRotX,
  2795. y: a.offsetRotY,
  2796. z: a.offsetRotZ
  2797. };
  2798. this._alpha = a.alpha;
  2799. this._collision = a.collision;
  2800. this._offsetPlayer = a.offsetPlayer;
  2801. this._offsetBone = a.offsetBone;
  2802. this._colshape = this._object = null;
  2803. this._event = a.event;
  2804. this._colradius = a.radius;
  2805. this.create()
  2806. }
  2807. }, {
  2808. key: "create",
  2809. value: function() {
  2810. if (!this._object) {
  2811. this._object = mp.objects.new(mp.game.joaat(this._hash), new mp.Vector3(this._pos.x, this._pos.y, this._pos.z), {
  2812. dimension: this._dim,
  2813. rotation: new mp.Vector3(this._rot.x, this._rot.y, this._rot.z)
  2814. });
  2815. this._object.setAlpha(this._alpha);
  2816. this._object.setCollision(this._collision, !0);
  2817. if ("" != this._offsetBone && null != this._offsetBone && null != this._offsetPlayer && void 0 !== this._offsetBone) {
  2818. var a = this._offsetPlayer.getBoneIndex(this._offsetBone);
  2819. this._object.attachTo(this._offsetPlayer.handle, a, this._offsetPos.x, this._offsetPos.y, this._offsetPos.z, this._offsetRot.x, this._offsetRot.y, this._offsetRot.z, !0, !1, !1, !1, 0, !0)
  2820. }
  2821. "" != this._event && (this._colshape = mp.colshapes.newSphere(this._pos.x, this._pos.y, this._pos.z, this._colradius))
  2822. }
  2823. }
  2824. }, {
  2825. key: "trigger",
  2826. value: function() {
  2827. mp.events.callRemote(this._event, this._id)
  2828. }
  2829. }, {
  2830. key: "isCreated",
  2831. value: function() {
  2832. return this._object ? !0 : !1
  2833. }
  2834. }, {
  2835. key: "destroy",
  2836. value: function() {
  2837. this._object && (this._object.destroy(), this._object =
  2838. null);
  2839. this._colshape && this._colshape.destroy();
  2840. this._colshape = null
  2841. }
  2842. }, {
  2843. key: "markForDeletion",
  2844. value: function() {
  2845. this._object && this._object.markForDeletion()
  2846. }
  2847. }, {
  2848. key: "getCoords",
  2849. value: function(a) {
  2850. if (this._object) return this._object.getCoords(a)
  2851. }
  2852. }, {
  2853. key: "attachTo",
  2854. value: function(a, c, d, e, f, g, h, l, m, n, p, r, q, t) {
  2855. this._object && this._object.attachTo(a, c, d, e, f, g, h, l, m, n, p, r, q, t)
  2856. }
  2857. }]);
  2858. return a
  2859. }();
  2860. mp.events.add("playerEnterColshape", function(a) {
  2861. for (key in vioObjects) vioObjects[key] && vioObjects[key]._colshape == a && vioObjects[key].trigger()
  2862. });
  2863. var ClientSettings = {},
  2864. EMail = "",
  2865. TeamspeakReadyToStart = !1,
  2866. audioDevices = [],
  2867. tempVoiceCommands = [],
  2868. ATMBlips = {},
  2869. HouseBlips = {};
  2870.  
  2871. function openSettings() {
  2872. null == Webwindow.Settings && 0 == mp.players.local.isDead() && login ? 0 == mp.gui.cursor.visible && (Webwindow.Settings = new CEFBrowser("package://viov/client_ui/html/settings/settings.html", !0)) : null != Webwindow.Settings && (Webwindow.Settings.destroy(), Webwindow.Settings = null)
  2873. }
  2874. mp.keys.bind(114, !1, function() {
  2875. openSettings()
  2876. });
  2877. mp.events.add("initSettingsWindow", function() {
  2878. if (null != Webwindow.Settings) {
  2879. var a = {
  2880. 1: {}
  2881. };
  2882. a["1"].atm = {};
  2883. a["1"].atm.type = "bool";
  2884. a["1"].atm.selected = ClientSettings[1];
  2885. a["1"].atm.name = "ATMs";
  2886. a["1"].atm.info = "Anzeige der ATMs auf der Karte";
  2887. a["1"].house = {};
  2888. a["1"].house.type = "bool";
  2889. a["1"].house.selected = ClientSettings[5];
  2890. a["1"].house.name = "Haus";
  2891. a["1"].house.info = "Anzeige der freien H\u00e4user auf der Karte";
  2892. a["1"].helmet_auto = {};
  2893. a["1"].helmet_auto.type = "bool";
  2894. a["1"].helmet_auto.selected = ClientSettings[4];
  2895. a["1"].helmet_auto.name = "Helm";
  2896. a["1"].helmet_auto.info = "M\u00f6glichkeit das automatische Aufsetzen des Helmes zu deaktivieren";
  2897. a["1"].quest = {};
  2898. a["1"].quest.type = "bool";
  2899. a["1"].quest.selected = ClientSettings[7];
  2900. a["1"].quest.name = "Quests";
  2901. a["1"].quest.info = "M\u00f6glichkeit die Anzeige der Quests zu deaktivieren";
  2902. a["1"].news = {};
  2903. a["1"].news.type = "bool";
  2904. a["1"].news.selected = ClientSettings[9];
  2905. a["1"].news.name = "Reporter";
  2906. a["1"].news.info = "M\u00f6glichkeit die Anzeige des Reporterchats zu deaktivieren. Sollte diese Einstellung deaktiviert sein, wirst du nicht mehr \ufffdber Events und Aktionen informiert!";
  2907. a["1"].spawnpunkt = {};
  2908. a["1"].spawnpunkt.type = "gridlist";
  2909. a["1"].spawnpunkt.selected = " ";
  2910. a["1"].spawnpunkt.array = loadPlayerSpawnPoints();
  2911. a["1"].spawnpunkt.name = "Spawnpunkt";
  2912. a["1"].spawnpunkt.info = "An diesem Punkt startest du, wenn du den Server betrittst";
  2913. a["2"] = {};
  2914. a["2"].tacho = {};
  2915. a["2"].tacho.type = "bool";
  2916. a["2"].tacho.selected = ClientSettings[6];
  2917. a["2"].tacho.name = "Tacho";
  2918. a["2"].tacho.info = "M\u00f6glichkeit den Tacho zu an/aus zuschalten";
  2919. a["2"].hitmarker = {};
  2920. a["2"].hitmarker.type = "bool";
  2921. a["2"].hitmarker.selected =
  2922. mp.storage.data.hitSettings.hitmarker;
  2923. a["2"].hitmarker.name = "Hitmarker";
  2924. a["2"].hitmarker.info = "Hitmarker anzeigen";
  2925. a["3"] = {};
  2926. a["3"].radio = {};
  2927. a["3"].radio.type = "bool";
  2928. a["3"].radio.selected = ClientSettings[2];
  2929. a["3"].radio.name = "Auto-Radio";
  2930. a["3"].radio.info = "Sound des Autoradios";
  2931. a["3"].sound = {};
  2932. a["3"].sound.type = "gridlist";
  2933. a["3"].sound.selected = "1" == ClientSettings[10] ? "Leise" : "2" == ClientSettings[10] ? "Laut" : "Normal";
  2934. var b = [];
  2935. b.push("Leise");
  2936. b.push("Normal");
  2937. b.push("Laut");
  2938. a["3"].sound.array = b;
  2939. a["3"].sound.name =
  2940. "Lautstaerke der Sounds";
  2941. a["3"].sound.info = "Lautstaerke der Sounds z.B PayDay";
  2942. a["4"] = {};
  2943. a["4"].passwort = {};
  2944. a["4"].passwort.type = "password";
  2945. a["4"].passwort.selected = 0;
  2946. a["4"].passwort.name = "Passwort";
  2947. a["4"].passwort.info = "Hier kannst du dein Passwort \u00e4ndern";
  2948. a["4"].email = {};
  2949. a["4"].email.type = "email";
  2950. a["4"].email.selected = EMail;
  2951. a["4"].email.name = "E-Mail";
  2952. a["4"].email.info = "Hier kannst du dein E-Mail Adresse \u00e4ndern";
  2953. a["5"] = {};
  2954. a["5"].soundVoice = {};
  2955. a["5"].soundVoice.type = "slider";
  2956. a["5"].soundVoice.name =
  2957. "Lautstaerke des Voicechats";
  2958. a["5"].soundVoice.info = "Lautstaerke der anderen Spieler im Voicechat";
  2959. a["5"].soundVoice.selected = 25;
  2960. a["5"].soundVoice.min = 10;
  2961. a["5"].soundVoice.max = 100;
  2962. a["5"].soundVoice.selected = mp.storage.data.voice_settings.volume;
  2963. a["5"].micro_auto = {};
  2964. a["5"].micro_auto.type = "bool";
  2965. a["5"].micro_auto.selected = ClientSettings[3];
  2966. a["5"].micro_auto.name = "Mikrofon";
  2967. a["5"].micro_auto.info = "Mikrofon beim Verbinden an/aus";
  2968. a["5"].pushtotalk = {};
  2969. a["5"].pushtotalk.type = "bool";
  2970. a["5"].pushtotalk.name =
  2971. "Push-To-Talk";
  2972. a["5"].pushtotalk.info = "Push-To-Talk Taste: M";
  2973. a["5"].pushtotalk.selected = mp.storage.data.voice_settings.pushtotalk;
  2974. Webwindow.Settings.call("vio._callEvent", "settings:init", '[ { "1" : "Spiel","2" : "Gameplay", "3" : "Audio", "4" : "Account","5" : "Voice", "einstellungen" : "Spieleinstellungen", "old_pw": "Altes Passwort", "new_pw": "Neues Passwort"} ]', "[ " + JSON.stringify(a) + " ]")
  2975. }
  2976. });
  2977. mp.events.add("updateSettings", function(a) {
  2978. null == mp.storage.data && (mp.storage.data = {});
  2979. null == mp.storage.data.hitSettings ? mp.storage.data.hitSettings = {
  2980. hitmarker: 0,
  2981. sound: 0
  2982. } : (null == mp.storage.data.hitSettings.hitmarker && (mp.storage.data.voice_settings.hitmarker = 0), null == mp.storage.data.hitSettings.sound && (mp.storage.data.voice_settings.sound = 0));
  2983. null == mp.storage.data.handy ? mp.storage.data.handy = {
  2984. posx: 0,
  2985. posy: 0
  2986. } : (null == mp.storage.data.handy.posx && (mp.storage.data.handy.posx = "100px"), null == mp.storage.data.handy.posy &&
  2987. (mp.storage.data.handy.posy = "100px"));
  2988. null == mp.storage.data.voice_settings ? mp.storage.data.voice_settings = {
  2989. volume: 80,
  2990. pushtotalk: 0
  2991. } : (null == mp.storage.data.voice_settings.volume && (mp.storage.data.voice_settings.volume = 80), null == mp.storage.data.voice_settings.pushtotalk && (mp.storage.data.voice_settings.pushtotalk = 0));
  2992. "atm" != a && "radio" != a && "email" != a && "house" != a && "helmet_auto" != a && "sound" != a && "micro_auto" != a && "hit_sound" != a && "hitmarker" != a && "passwort" != a && "quest" != a && "news" != a && "spawnpunkt" != a && "tacho" !=
  2993. a && "soundVoice" != a && "microSens" != a && (ClientSettings = JSON.parse(a), executeClientSettings())
  2994. });
  2995. mp.events.add("updateSettingsCEF", function(a, b, c) {
  2996. mp.gui.chat.colors = !0;
  2997. mp.gui.chat.safeMode = !1;
  2998. if ("atm" == a)
  2999. if (1 == Number(b) && "0" == ClientSettings[1]) {
  3000. ClientSettings[1] = "1";
  3001. for (var d in ATMTable) a = mp.blips.new(277, ATMTable[d], {
  3002. shortRange: !0,
  3003. color: 69,
  3004. name: "Geldautomat"
  3005. }), ATMBlips[d] = a;
  3006. mp.events.callRemote("changePlayerSetting", "1", "1")
  3007. } else {
  3008. if (0 == Number(b) && "1" == ClientSettings[1]) {
  3009. ClientSettings[1] = "0";
  3010. for (var e in ATMBlips) ATMBlips[e].destroy();
  3011. mp.events.callRemote("changePlayerSetting", "1", "0")
  3012. }
  3013. } else if ("house" ==
  3014. a)
  3015. if (1 == Number(b) && "0" == ClientSettings[5]) {
  3016. ClientSettings[5] = "1";
  3017. for (var f in HouseTable) 0 == HouseTable[f].Character_ID && 0 == HouseTable[f].GangHouse && (a = mp.blips.new(374, new mp.Vector3(HouseTable[f].Pos.x, HouseTable[f].Pos.y, HouseTable[f].Pos.z), {
  3018. color: 46,
  3019. scale: .5,
  3020. shortRange: !0,
  3021. name: "Haus"
  3022. }), HouseBlips[f] = a);
  3023. mp.events.callRemote("changePlayerSetting", "5", "1")
  3024. } else {
  3025. if (0 == Number(b) && "1" == ClientSettings[5]) {
  3026. ClientSettings[5] = "0";
  3027. for (var g in HouseBlips) HouseBlips[g].destroy();
  3028. mp.events.callRemote("changePlayerSetting",
  3029. "5", "0")
  3030. }
  3031. } else if ("radio" == a) 1 == Number(b) && "0" == ClientSettings[2] ? (ClientSettings[2] = "1", mp.events.callRemote("changePlayerSetting", "2", "1")) : 0 == Number(b) && "1" == ClientSettings[2] && (ClientSettings[2] = "0", mp.events.callRemote("changePlayerSetting", "2", "0"));
  3032. else if ("micro_auto" == a) 1 == Number(b) && "0" == ClientSettings[3] ? (ClientSettings[3] = "1", voiceChat && voiceChat.call("mute", !1), mp.events.callRemote("changePlayerSetting", "3", "1"), mp.gui.chat.push("Verbindungseinstellung f\u00fcr Mikrofon auf [\x3cfont style\x3d'color:#00EB00'\x3eunmuted\x3c/font\x3e] ge\u00e4ndert.")) :
  3033. 0 == Number(b) && "1" == ClientSettings[3] && (ClientSettings[3] = "0", voiceChat && voiceChat.call("mute", !0), mp.events.callRemote("changePlayerSetting", "3", "0"), mp.gui.chat.push("Verbindungseinstellung f\u00fcr Mikrofon auf [\x3cfont style\x3d'color:#00EB00'\x3emuted\x3c/font\x3e] ge\u00e4ndert."));
  3034. else if ("helmet_auto" == a) 1 == Number(b) && "0" == ClientSettings[4] ? (ClientSettings[4] = "1", mp.events.callRemote("changePlayerSetting", "4", "1"), mp.players.local.setHelmet(!0)) : 0 == Number(b) && "1" == ClientSettings[4] && (ClientSettings[4] =
  3035. "0", mp.events.callRemote("changePlayerSetting", "4", "0"), mp.players.local.setHelmet(!1));
  3036. else if ("tacho" == a) 1 == Number(b) && "0" == ClientSettings[6] ? (ClientSettings[6] = "1", mp.events.callRemote("changePlayerSetting", "6", "1")) : 0 == Number(b) && "1" == ClientSettings[6] && (ClientSettings[6] = "0", mp.events.callRemote("changePlayerSetting", "6", "0"));
  3037. else if ("news" == a) 1 == Number(b) && "0" == ClientSettings[9] ? (ClientSettings[9] = "1", mp.events.callRemote("changePlayerSetting", "9", "1")) : 0 == Number(b) && "1" == ClientSettings[9] &&
  3038. (ClientSettings[9] = "0", mp.events.callRemote("changePlayerSetting", "9", "0"));
  3039. else if ("quest" == a) 1 == Number(b) && "0" == ClientSettings[7] ? (ClientSettings[7] = "1", null == Webwindow.TutorialWindow && (Webwindow.TutorialWindow = new CEFBrowser("package://viov/client_ui/html/infobox/infobox.html")), mp.events.callRemote("requestPlayerQuest"), mp.events.callRemote("changePlayerSetting", "7", "1")) : 0 == Number(b) && "1" == ClientSettings[7] && (ClientSettings[7] = "0", null != Webwindow.TutorialWindow && (Webwindow.TutorialWindow.destroy(),
  3040. Webwindow.TutorialWindow = null), mp.events.callRemote("changePlayerSetting", "7", "0"));
  3041. else if ("spawnpunkt" == a) mp.events.callRemote("changePlayerSetting", "spawn", b);
  3042. else if ("sound" == a) {
  3043. if ("Normal" == b && "0" != ClientSettings[10] || "Laut" == b && "2" != ClientSettings[10] || "Leise" == b && "1" != ClientSettings[10]) "Normal" == b ? (ClientSettings[10] = "0", voiceChat.call("setAudioVolume", .5), mp.events.callRemote("changePlayerSetting", "10", "0")) : "Laut" == b ? (ClientSettings[10] = "2", voiceChat.call("setAudioVolume", 1), mp.events.callRemote("changePlayerSetting",
  3044. "10", "2")) : "Leise" == b && (ClientSettings[10] = "1", voiceChat.call("setAudioVolume", .25), mp.events.callRemote("changePlayerSetting", "10", "1")), mp.gui.chat.push("Audio-Lautst\u00e4rke ge\u00e4ndert auf [\x3cfont style\x3d'color:#00EB00'\x3e" + b + "\x3c/font\x3e]")
  3045. } else "email" == a ? (Webwindow.Settings.destroy(), Webwindow.Settings = null, mp.events.callRemote("changeEMail", b)) : "passwort" == a ? (Webwindow.Settings.destroy(), Webwindow.Settings = null, mp.events.callRemote("changePassword", b, c)) : "hitmarker" == a ? 1 == Number(b) ?
  3046. (mp.storage.data.hitSettings.hitmarker = 1, mp.gui.chat.push("Hit-Marker auf [\x3cfont style\x3d'color:#00EB00'\x3eein\x3c/font\x3e] ge\u00e4ndert.")) : 0 == Number(b) && (mp.storage.data.hitSettings.hitmarker = 0, mp.gui.chat.push("Hit-Marker auf [\x3cfont style\x3d'color:#eb2b00'\x3eaus\x3c/font\x3e] ge\u00e4ndert.")) : "pushtotalk" == a ? 1 == Number(b) ? (mp.storage.data.voice_settings.pushtotalk = 1, mp.gui.chat.push("Push-To-Talk auf [\x3cfont style\x3d'color:#00EB00'\x3eein\x3c/font\x3e] ge\u00e4ndert.")) : 0 == Number(b) &&
  3047. (mp.storage.data.voice_settings.pushtotalk = 0, mp.gui.chat.push("Push-To-Talk auf [\x3cfont style\x3d'color:#eb2b00'\x3eaus\x3c/font\x3e] ge\u00e4ndert.")) : "soundVoice" == a && 100 >= Number(b) && 10 <= Number(b) && (mp.storage.data.voice_settings.volume = Number(b), mp.gui.chat.push("Lautst\u00e4rke Voice auf \x3cfont style\x3d'color:#00EB00'\x3e" + b.toString() + "\x3c/font\x3e% ge\u00e4ndert."));
  3048. mp.storage.flush();
  3049. mp.gui.chat.safeMode = !0
  3050. });
  3051. mp.events.add("closeSettings", function() {
  3052. null != Webwindow.Settings && (Webwindow.Settings.destroy(), Webwindow.Settings = null)
  3053. });
  3054.  
  3055. function executeClientSettings() {
  3056. if ("1" == ClientSettings[1])
  3057. for (var a in ATMTable) {
  3058. var b = mp.blips.new(277, ATMTable[a], {
  3059. shortRange: !0,
  3060. color: 69,
  3061. name: "Geldautomat"
  3062. });
  3063. ATMBlips[a] = b
  3064. }
  3065. if ("1" == ClientSettings[5])
  3066. for (var c in HouseTable) 0 == HouseTable[c].Character_ID && 0 == HouseTable[c].GangHouse && (b = mp.blips.new(374, new mp.Vector3(HouseTable[c].Pos.x, HouseTable[c].Pos.y, HouseTable[c].Pos.z), {
  3067. color: 46,
  3068. scale: .5,
  3069. shortRange: !0,
  3070. name: "Haus"
  3071. }), HouseBlips[c] = b);
  3072. mp.players.local.isInAnyVehicle(!1) && ("0" == ClientSettings[2] ?
  3073. (mp.game.audio.setVehRadioStation(mp.players.local.vehicle.handle, "OFF"), mp.game.audio.setUserRadioControlEnabled(!1)) : mp.game.audio.setUserRadioControlEnabled(!0));
  3074. "1" == ClientSettings[3] ? void 0 !== voiceChat ? voiceChat.call("mute", !1) : tempVoiceCommands.push({
  3075. command: "mute",
  3076. arg: !1
  3077. }) : void 0 !== voiceChat ? voiceChat.call("mute", !0) : tempVoiceCommands.push({
  3078. command: "mute",
  3079. arg: !0
  3080. });
  3081. "1" == ClientSettings[4] ? (canWearHelmet = !0, mp.players.local.setHelmet(!0)) : "0" == ClientSettings[4] && (canWearHelmet = !1, mp.players.local.setHelmet(!1));
  3082. void 0 !== voiceChat ? "1" == ClientSettings[10] ? voiceChat.call("setAudioVolume", .5) : "2" == ClientSettings[10] ? voiceChat.call("setAudioVolume", 1) : voiceChat.call("setAudioVolume", .75) : "1" == ClientSettings[10] ? tempVoiceCommands.push({
  3083. command: "setAudioVolume",
  3084. arg: .5
  3085. }) : "2" == ClientSettings[10] ? tempVoiceCommands.push({
  3086. command: "setAudioVolume",
  3087. arg: 1
  3088. }) : tempVoiceCommands.push({
  3089. command: "setAudioVolume",
  3090. arg: .75
  3091. })
  3092. }
  3093.  
  3094. function loadPlayerSpawnPoints() {
  3095. var a = [];
  3096. a.push("Los Santos International Airport");
  3097. a.push("Del Penno");
  3098. a.push("Mega Mall");
  3099. 0 == LocalGroupID ? (a.push("Mission Row Police Department"), a.push("Paleto Bay Sheriffs Office"), a.push("Academy")) : 1 == LocalGroupID ? a.push("Hospital") : 2 == LocalGroupID ? a.push("Lifeinvader") : 3 == LocalGroupID ? a.push("FIB") : -1 < LocalGroupID && a.push("Gang");
  3100. 1 == InventoryItems["1"] && a.push("House");
  3101. return a
  3102. }
  3103. mp.events.add("updateEMail", function(a) {
  3104. TeamspeakReadyToStart = !0;
  3105. EMail = a
  3106. });
  3107. mp.events.add("sendAudioDevices", function(a) {
  3108. audioDevices.push(a)
  3109. });
  3110. mp.events.add("GroupOpen", function(a) {
  3111. null == Webwindow.GroupWindow && (Webwindow.GroupWindow = !1, TempArguments.Group = {}, TempArguments.Group["1"] = lang_de.window_gang, TempArguments.Group["2"] = lang_de.items, TempArguments.Group["3"] = a, Webwindow.GroupWindow = new CEFBrowser("package://viov/client_ui/html/gang/gang.html", !0))
  3112. });
  3113. mp.events.add("initGroupWindow", function() {
  3114. null != Webwindow.GroupWindow && Webwindow.GroupWindow.call("vio._callEvent", "gang:init", TempArguments.Group["1"], TempArguments.Group["2"], JSON.parse(TempArguments.Group["3"]))
  3115. });
  3116. mp.events.add("setFactoryColor", function(a, b) {
  3117. null != FactoryBlip[Number(a)] && (FactoryBlip[Number(a)].getCoords(), FactoryBlip[Number(a)].setColour(b))
  3118. });
  3119. mp.events.add("setFactoryName", function(a, b) {
  3120. if (null != FactoryBlip[Number(a)]) {
  3121. var c = FactoryBlip[Number(a)].getColour();
  3122. FactoryBlip[Number(a)].destroy();
  3123. FactoryBlip[Number(a)] = mp.blips.new(478, FactoryBlipPosition[Number(a)], {
  3124. color: c,
  3125. name: "Fabrik: " + b,
  3126. shortRange: !0
  3127. })
  3128. }
  3129. });
  3130. mp.events.add("requestCloseGroup", function() {
  3131. null != Webwindow.GroupWindow && (Webwindow.GroupWindow.active(!1), setTimeout(function() {
  3132. Webwindow.GroupWindow.destroy();
  3133. Webwindow.GroupWindow = null
  3134. }, 10))
  3135. });
  3136. mp.events.add("updateGroup", function(a, b, c, d) {
  3137. "uninvite" == a && null == c ? mp.events.callRemote("updateGroup", "uninvite_player", b, 0, 0) : "befoerdern" == a && null == c ? mp.events.callRemote("updateGroup", "rank_up_player", b, 0, 0) : "degradieren" == a && null == c ? mp.events.callRemote("updateGroup", "rank_down_player", b, 0, 0) : "uninvite" == a ? mp.events.callRemote("updateGroup", "uninvite", b, c, 0) : "invite" == a ? mp.events.callRemote("updateGroup", "invite", b, c, 0) : "rank_down" == a ? mp.events.callRemote("updateGroup", "rank_down", b, c, 0) : "rank_up" ==
  3138. a ? mp.events.callRemote("updateGroup", "rank_up", b, c, 0) : "respawn" == a ? mp.events.callRemote("updateGroup", "respawn", b, c, 0) : "storage" == a ? mp.events.callRemote("updateGroup", "storage", b, c, 0) : "park" == a ? mp.events.callRemote("updateGroup", "park", b, c, 0) : "change_rank_name" == a ? mp.events.callRemote("updateGroup", "change_rank_name", b, c, 0) : "Name" == a ? mp.events.callRemote("updateGroup", "change_gang_name", b, 0, 0) : "getbag" == a ? mp.events.callRemote("updateGroup", "get_action_bag", b, 0, 0) : "update_gang" == a ? (null != Webwindow.GroupWindow &&
  3139. Webwindow.GroupWindow.destroy(), Webwindow.GroupWindow = null, mp.events.callRemote("updateGroup", "update_gang", b, 0, 0)) : "respawnCar" == a ? mp.events.callRemote("updateGroup", "respawnCar", b, 0, 0) : "respawnCars" == a ? mp.events.callRemote("updateGroup", "respawnCars", b, 0, 0) : "updateskin" == a ? mp.events.callRemote("updateGroup", "updateskin", b, 0, 0) : "equip" == a ? mp.events.callRemote("updateGroup", "equip", b, 0, 0) : "deleteGang" == a ? (mp.events.callRemote("updateGroup", "deleteGang", b, 0, 0), null != Webwindow.GroupWindow && Webwindow.GroupWindow.destroy(),
  3140. Webwindow.GroupWindow = null) : "devareCar" == a ? (mp.events.callRemote("updateGroup", "deleteGangVehicle", b, 0, 0), null != Webwindow.GroupWindow && Webwindow.GroupWindow.destroy(), Webwindow.GroupWindow = null) : "Pinnwand" == a ? (mp.events.callRemote("updateGroup", "Pinnwand", b, 0, 0), null != Webwindow.GroupWindow && Webwindow.GroupWindow.destroy(), Webwindow.GroupWindow = null) : "shop" == a ? (null != Webwindow.GroupWindow && Webwindow.GroupWindow.destroy(), Webwindow.GroupWindow = null, mp.events.callRemote("updateGroup", "hauskasse", b, 0,
  3141. 0)) : "open_storage" == a ? (null != Webwindow.GroupWindow && Webwindow.GroupWindow.destroy(), Webwindow.GroupWindow = null, mp.events.callRemote("updateGroup", "open_storage", b, 0, 0)) : "changeColor" == a ? (null != Webwindow.GroupWindow && Webwindow.GroupWindow.destroy(), Webwindow.GroupWindow = null, mp.events.callRemote("updateGroup", "change_gang_color", b.toString(), c.toString(), d.toString())) : "changeRankBonus" == a && (null != Webwindow.GroupWindow && Webwindow.GroupWindow.destroy(), Webwindow.GroupWindow = null, mp.events.callRemote("updateGroup",
  3142. "change_rank_bonus", b.toString(), c.toString(), 0))
  3143. });
  3144. mp.events.add("openFactoryRob", function() {
  3145. 0 == (0 >= arguments.length ? void 0 : arguments[0]) ? getSelectionChoices("factorycapture") : getSelectionChoices("factoryrob")
  3146. });
  3147. TempBarricade = null;
  3148. var PoliceMarker = [],
  3149. temp_sos_marker = !1,
  3150. temp_sos_blip = !1;
  3151. mp.events.add("startBarricading", function() {
  3152. if (null == TempBarricade) {
  3153. var a = mp.players.local.position,
  3154. b = mp.game.gameplay.getGroundZFor3dCoord(a.x, a.y, a.z, 0, !1);
  3155. a = new mp.Vector3(a.X, a.Y, b + 1);
  3156. b = mp.players.local.getRotation(0);
  3157. findrot(a, b, 2, 90);
  3158. a = mp.objects.new(mp.game.joaat("prop_barrier_work05"), mp.players.local.position, new mp.Vector3(0, 0, 0));
  3159. a.setCollision(!1, !0);
  3160. TempBarricade = a
  3161. }
  3162. });
  3163. mp.events.add("openWantedcomputer", function(a, b, c) {
  3164. null != Webwindow.Wantedcomputer && (Webwindow.Wantedcomputer.destroy(), Webwindow.Wantedcomputer = null);
  3165. TempArguments.Wantedcomputer = {};
  3166. TempArguments.Wantedcomputer["1"] = a;
  3167. TempArguments.Wantedcomputer["2"] = b;
  3168. TempArguments.Wantedcomputer["3"] = c;
  3169. Webwindow.Wantedcomputer = new CEFBrowser("package://viov/client_ui/html/wantedcomputer/wantedcomputer.html", !0)
  3170. });
  3171. mp.events.add("openWantedComputerPlayerDetail", function() {
  3172. for (var a = arguments.length, b = Array(a), c = 0; c < a; c++) b[c] = arguments[c];
  3173. null != Webwindow.Wantedcomputer && Webwindow.Wantedcomputer.call("loadPlayerData", b)
  3174. });
  3175. mp.events.add("initWantedcomputer", function() {
  3176. if (null != Webwindow.Wantedcomputer) {
  3177. var a = mp.game.graphics.getScreenActiveResolution(1, 1);
  3178. Webwindow.Wantedcomputer.position((a.x - 820) / 2, (a.y - 550) / 2, "computer");
  3179. Webwindow.Wantedcomputer.show("computer");
  3180. Webwindow.Wantedcomputer.call("vio._callEvent", "wantedcomputer:init", "1", JSON.parse(TempArguments.Wantedcomputer["1"]), JSON.parse(TempArguments.Wantedcomputer["2"]), JSON.parse(TempArguments.Wantedcomputer["3"]));
  3181. TempArguments.Wantedcomputer = {}
  3182. }
  3183. });
  3184. mp.events.add("requestCloseWantedcomputer", function() {
  3185. null != Webwindow.Wantedcomputer && (Webwindow.Wantedcomputer.destroy(), Webwindow.Wantedcomputer = null)
  3186. });
  3187. mp.events.add("requestWantedcomputerAction", function(a, b, c) {
  3188. "locate" == a ? mp.events.callRemote("locatePlayer", b) : "wantedPlayer" == a ? mp.events.callRemote("wantedPlayer", b, c) : "clear" == a ? mp.events.callRemote("clearPlayerWanteds", b) : "data" == a ? mp.events.callRemote("requestWantedcomputerData", b) : mp.events.callRemote("updateWantedcomputerMemo", b, c)
  3189. });
  3190.  
  3191. function rot_point(a, b) {
  3192. var c = new mp.Vector3(0, 0, 0);
  3193. c.x = a.x;
  3194. c.y = a.y;
  3195. c.z = a.z;
  3196. a = new mp.Vector3(0, 0, 0);
  3197. a.x = b.x;
  3198. a.y = b.y;
  3199. a.z = b.z;
  3200. b = c.x - a.x;
  3201. var d = c.y - a.y;
  3202. return 180 * Math.atan2(a.z - c.z, Math.sqrt(b * b + d * d)) / Math.PI
  3203. }
  3204. mp.events.add("render", function() {
  3205. if (null != TempBarricade) {
  3206. var a = mp.players.local.position,
  3207. b = mp.players.local.getRotation(0);
  3208. a = findrot(a, b, 2, 90);
  3209. a.z = mp.game.gameplay.getGroundZFor3dCoord(a.x, a.y, a.z, 0, !1);
  3210. var c = findrot(a, b, 1, 180),
  3211. d = findrot(a, b, 1, 0);
  3212. c.z = mp.game.gameplay.getGroundZFor3dCoord(c.x, c.y, c.z + 5, 0, !1);
  3213. d.z = mp.game.gameplay.getGroundZFor3dCoord(d.x, d.y, d.z + 5, 0, !1);
  3214. var e = findrot(a, b, 1, 270),
  3215. f = findrot(a, b, 1, 90);
  3216. f.z = mp.game.gameplay.getGroundZFor3dCoord(f.x, f.y, f.z + 5, 0, !1);
  3217. e.z = mp.game.gameplay.getGroundZFor3dCoord(e.x,
  3218. e.y, e.z + 5, 0, !1);
  3219. b.y = -1 * rot_point(c, d);
  3220. b.x = -1 * rot_point(f, e);
  3221. TempBarricade.setCoords(a.x, a.y, a.z, !1, !1, !1, !1);
  3222. TempBarricade.setRotation(b.x, b.y, b.z, 0, !0)
  3223. }
  3224. });
  3225. mp.events.add("setTempPoliceWaypoint", function(a, b) {
  3226. PoliceMarker[PoliceMarker.length] = mp.blips.new(60, a, {
  3227. name: "Meldung",
  3228. color: Number(b),
  3229. shortRange: !0
  3230. })
  3231. });
  3232. mp.keys.bind(69, !1, function() {
  3233. if (null != TempBarricade) {
  3234. var a = TempBarricade.getCoords(!1),
  3235. b = TempBarricade.getRotation(0);
  3236. mp.events.callRemote("createBarricade", a.x, a.y, a.z, b.x, b.y, b.z);
  3237. TempBarricade.destroy();
  3238. TempBarricade = null
  3239. }
  3240. });
  3241. mp.keys.bind(32, !1, function() {
  3242. null != TempBarricade && (TempBarricade.destroy(), TempBarricade = null)
  3243. });
  3244. mp.events.add("setSOS", function(a, b, c, d) {
  3245. 0 != temp_sos_blip && (temp_sos_blip.destroy(), temp_sos_blip = !1);
  3246. temp_sos_blip = mp.blips.new(0, new mp.Vector3(a, b, c), {
  3247. color: 59,
  3248. name: d
  3249. })
  3250. });
  3251. mp.events.add("cancelSOS", function() {
  3252. 0 != temp_sos_blip && (temp_sos_blip.destroy(), temp_sos_blip = !1)
  3253. });
  3254. mp.events.add("RequestLocalPlayerGrab", function(a) {
  3255. mp.players.local.isBeingStunned(0) && mp.events.callRemote("SetPlayerIntoOfficerVehicle", a)
  3256. });
  3257. mp.events.add("sentPlayerNews", function(a) {
  3258. 0 != player_lang && "1" == ClientSettings[9] && mp.gui.chat.push(a)
  3259. });
  3260. mp.events.add("GunCraftOpen", function() {
  3261. if (null == Webwindow.GunCraftWindow) {
  3262. Webwindow.GunCraftWindow = !1;
  3263. var a = {
  3264. mode: "buy"
  3265. };
  3266. a.money = InventoryItems["10"];
  3267. a.moneyformat = "mats";
  3268. a.items = JSON.parse(0 >= arguments.length ? void 0 : arguments[0]);
  3269. disableAllControls = !0;
  3270. TempArguments.Dealer = {};
  3271. TempArguments.Dealer["1"] = lang_de.items;
  3272. TempArguments.Dealer["2"] = JSON.stringify(a);
  3273. Webwindow.GunCraftWindow = new CEFBrowser("package://viov/client_ui/html/dealer/dealer.html", !0)
  3274. }
  3275. });
  3276. mp.events.add("requestCloseDealerGunCraftWindow", function(a) {
  3277. "GunCraftWindow" == a && (Webwindow.GunCraftWindow.active(!1), setTimeout(function() {
  3278. Webwindow.GunCraftWindow.destroy();
  3279. Webwindow.GunCraftWindow = null;
  3280. disableAllControls = !1
  3281. }, 10))
  3282. });
  3283. mp.events.add("requestBuyDealerGunCraftWindow", function(a, b, c) {
  3284. "GunCraftWindow" == a && (Webwindow.GunCraftWindow.active(!1), setTimeout(function() {
  3285. Webwindow.GunCraftWindow.destroy();
  3286. Webwindow.GunCraftWindow = null;
  3287. disableAllControls = !1;
  3288. mp.events.callRemote("requestGunCraftWindow", b)
  3289. }, 10))
  3290. });
  3291.  
  3292. function bankrobFunc() {
  3293. function a() {
  3294. var a = (new Date).getTime();
  3295. f ? (a = Math.ceil((b - a) / 1E3), 0 < a ? f != a && (f = a, e.text = a + p.seconds) : (f = d = null, e.destroy(), mp.game.fire.addExplosion(c.x, c.y, c.z, 34, 1, !0, !1, 1))) : null != m && (2 >= mp.game.gameplay.getDistanceBetweenCoords(mp.players.local.position.x, mp.players.local.position.y, mp.players.local.position.z, m.x, m.y, m.z, !0) ? (null != n && (g += a - n, n = null), a = Math.floor((a - g) / l * h), a > h && (a = h), e.text = p.collected + Math.floor(a / h * 100) + "%") : null == n && (n = a))
  3296. }
  3297. var b, c, d, e, f, g, h, l, m, n, p = {
  3298. collected: "",
  3299. seconds: ""
  3300. };
  3301. mp.events.add("detonateBombAtBankRob", function() {
  3302. c = 0 >= arguments.length ? void 0 : arguments[0];
  3303. p.seconds = 1 >= arguments.length ? void 0 : arguments[1];
  3304. e = mp.labels.new(p.collected + "30" + p.seconds, new mp.Vector3(c.x, c.y, c.z), {
  3305. los: !1,
  3306. font: 2,
  3307. drawDistance: 20,
  3308. color: [255, 255, 255, 255],
  3309. dimension: 0
  3310. });
  3311. f = 30;
  3312. b = (new Date).getTime() + 3E4;
  3313. d = mp.events.add("render", function() {
  3314. a()
  3315. })
  3316. });
  3317. mp.events.add("showBankRobCollectInfo", function() {
  3318. null != d && (f = d = null, e.destroy(), mp.game.fire.addExplosion(c.x, c.y, c.z,
  3319. 34, 1, !0, !1, 1));
  3320. n = null;
  3321. m = 0 >= arguments.length ? void 0 : arguments[0];
  3322. h = 1 >= arguments.length ? void 0 : arguments[1];
  3323. l = 2 >= arguments.length ? void 0 : arguments[2];
  3324. p.collected = 3 >= arguments.length ? void 0 : arguments[3];
  3325. g = (new Date).getTime();
  3326. e = e = mp.labels.new(p.collected + "0%", new mp.Vector3(m.x, m.y, m.z), {
  3327. los: !0,
  3328. font: 0,
  3329. drawDistance: 20,
  3330. color: [255, 255, 255, 255],
  3331. dimension: 0
  3332. });
  3333. d = mp.events.add("render", function() {
  3334. a()
  3335. })
  3336. });
  3337. mp.events.add("stopBankRobCollect", function() {
  3338. e.destroy();
  3339. m = null
  3340. })
  3341. }
  3342. bankrobFunc();
  3343. var InHouse = !1,
  3344. TrashBlips = {},
  3345. ATMTable = {};
  3346. mp.keys.bind(69, !1, function() {
  3347. if (null == TempBarricade && 1 != mp.gui.cursor.visible && 0 == mp.players.local.isInAnyVehicle(!0)) {
  3348. var a = mp.players.local.dimension,
  3349. b = mp.players.local.position;
  3350. if (0 == a && 0 == InHouse) {
  3351. for (var c in HouseTable)
  3352. if (a = mp.game.gameplay.getDistanceBetweenCoords(b.x, b.y, b.z, HouseTable[c].Pos.x, HouseTable[c].Pos.y, HouseTable[c].Pos.z, !1), 5 > a) {
  3353. b = HouseTable[c].ID;
  3354. null != TrashBlips[b] ? mp.events.callRemote("pickUpTrash", b) : null == mp.players.local.getVariable("TRASH_CAR") && 0 == mp.players.local.isBeingStunned(0) &&
  3355. mp.events.callRemote("requestEnterHouse", b);
  3356. return
  3357. }
  3358. if (null != Webwindow.Bank) openBank();
  3359. else {
  3360. for (var d in ATMTable)
  3361. if (a = mp.game.gameplay.getDistanceBetweenCoords(b.x, b.y, b.z, ATMTable[d].x, ATMTable[d].y, ATMTable[d].z, !1), 3 > a) {
  3362. openBank();
  3363. return
  3364. }
  3365. null != mp.players.local.getVariable("TRASH") && null != mp.players.local.getVariable("TRASH_CAR") && (d = mp.players.local.getVariable("TRASH_CAR"), c = d.getWorldPositionOfBone(d.getBoneIndexByName("seat_pside_r1")), a = d.getWorldPositionOfBone(d.getBoneIndexByName("seat_dside_r1")),
  3366. d = Math.round(mp.game.gameplay.getDistanceBetweenCoords(b.x, b.y, b.z, c.x, c.y, c.z, !0)), b = Math.round(mp.game.gameplay.getDistanceBetweenCoords(b.x, b.y, b.z, c.x, a.y, a.z, !0)), (3 > d || 3 > b) && mp.events.callRemote("requestTrashIntoVehicle"))
  3367. }
  3368. } else 0 != a && 1 == InHouse && mp.events.callRemote("requestLeaveHouse")
  3369. }
  3370. });
  3371. mp.keys.bind(115, !0, function() {
  3372. 0 != mp.players.local.dimension && 1 == InHouse && mp.events.callRemote("onClientRequestOpenGroupWindow")
  3373. });
  3374. mp.events.add("setPlayerIntoInt", function() {
  3375. InHouse = !0
  3376. });
  3377. mp.events.add("setPlayerOutOfInt", function() {
  3378. InHouse = !1
  3379. });
  3380. mp.events.add("sentNewTrashToPlayer", function() {
  3381. var a = JSON.parse(0 >= arguments.length ? void 0 : arguments[0]),
  3382. b;
  3383. for (b in TrashBlips) TrashBlips[b].destroy();
  3384. TrashBlips = {};
  3385. for (var c in a)
  3386. for (var d in HouseTable) c == HouseTable[d].ID && (a = mp.blips.new(1, new mp.Vector3(HouseTable[d].Pos.x, HouseTable[d].Pos.y, HouseTable[d].Pos.z), {
  3387. scale: .6,
  3388. name: "M\u00fcllsack"
  3389. }), TrashBlips[HouseTable[d].ID] = a)
  3390. });
  3391. mp.events.add("requestHouseAction", function(a) {
  3392. "sell" == a ? mp.events.callRemote("onClientRequestHouseAction", "sell") : "lock" == a ? mp.events.callRemote("onClientRequestHouseAction", "lock") : "unlock" == a ? mp.events.callRemote("onClientRequestHouseAction", "unlock") : "road" == a ? mp.events.callRemote("onClientRequestHouseAction", "position") : "spawn" == a ? mp.events.callRemote("onClientRequestHouseAction", "spawn") : "rent" == a && mp.events.callRemote("onClientRequestHouseAction", "rent")
  3393. });
  3394. var ATMCount = 0;
  3395. ATMTable[ATMCount] = new mp.Vector3(-1109.797, -1690.808, 4.375014);
  3396. ATMTable[ATMCount++] = new mp.Vector3(-821.6062, -1081.885, 11.13243);
  3397. ATMTable[ATMCount++] = new mp.Vector3(-537.8409, -854.5145, 29.28953);
  3398. ATMTable[ATMCount++] = new mp.Vector3(-1315.744, -834.6907, 16.96173);
  3399. ATMTable[ATMCount++] = new mp.Vector3(-1314.786, -835.9669, 16.96015);
  3400. ATMTable[ATMCount++] = new mp.Vector3(-1570.069, -546.6727, 34.95547);
  3401. ATMTable[ATMCount++] = new mp.Vector3(-1571.018, -547.3666, 34.95734);
  3402. ATMTable[ATMCount++] = new mp.Vector3(-866.6416, -187.8008, 37.84286);
  3403. ATMTable[ATMCount++] = new mp.Vector3(-867.6165, -186.1373, 37.8433);
  3404. ATMTable[ATMCount++] = new mp.Vector3(-721.1284, -415.5296, 34.98175);
  3405. ATMTable[ATMCount++] = new mp.Vector3(-254.3758, -692.4947, 33.63751);
  3406. ATMTable[ATMCount++] = new mp.Vector3(24.37422, -946.0142, 29.35756);
  3407. ATMTable[ATMCount++] = new mp.Vector3(130.1186, -1292.669, 29.26953);
  3408. ATMTable[ATMCount++] = new mp.Vector3(129.7023, -1291.954, 29.26953);
  3409. ATMTable[ATMCount++] = new mp.Vector3(129.2096, -1291.14, 29.26953);
  3410. ATMTable[ATMCount++] = new mp.Vector3(288.8256, -1282.364, 29.64128);
  3411. ATMTable[ATMCount++] = new mp.Vector3(1077.768, -776.4548, 58.23997);
  3412. ATMTable[ATMCount++] = new mp.Vector3(527.2687, -160.7156, 57.08937);
  3413. ATMTable[ATMCount++] = new mp.Vector3(-867.5897, -186.1757, 37.84291);
  3414. ATMTable[ATMCount++] = new mp.Vector3(-866.6556, -187.7766, 37.84278);
  3415. ATMTable[ATMCount++] = new mp.Vector3(-1205.024, -326.2916, 37.83985);
  3416. ATMTable[ATMCount++] = new mp.Vector3(-1205.703, -324.7474, 37.85942);
  3417. ATMTable[ATMCount++] = new mp.Vector3(-1570.167, -546.7214, 34.95663);
  3418. ATMTable[ATMCount++] = new mp.Vector3(-1571.056, -547.3947, 34.95724);
  3419. ATMTable[ATMCount++] = new mp.Vector3(-57.64693, -92.66162, 57.77995);
  3420. ATMTable[ATMCount++] = new mp.Vector3(527.3583, -160.6381, 57.0933);
  3421. ATMTable[ATMCount++] = new mp.Vector3(-165.1658, 234.8314, 94.92194);
  3422. ATMTable[ATMCount++] = new mp.Vector3(-165.1503, 232.7887, 94.92194);
  3423. ATMTable[ATMCount++] = new mp.Vector3(-2072.445, -317.3048, 13.31597);
  3424. ATMTable[ATMCount++] = new mp.Vector3(-3241.082, 997.5428, 12.55044);
  3425. ATMTable[ATMCount++] = new mp.Vector3(-1091.462, 2708.637, 18.95291);
  3426. ATMTable[ATMCount++] = new mp.Vector3(1172.492, 2702.492, 38.17477);
  3427. ATMTable[ATMCount++] = new mp.Vector3(1171.537, 2702.492, 38.17542);
  3428. ATMTable[ATMCount++] = new mp.Vector3(1822.637, 3683.131, 34.27678);
  3429. ATMTable[ATMCount++] = new mp.Vector3(1686.753, 4815.806, 42.00874);
  3430. ATMTable[ATMCount++] = new mp.Vector3(1701.209, 6426.569, 32.76408);
  3431. ATMTable[ATMCount++] = new mp.Vector3(-95.54314, 6457.19, 31.46093);
  3432. ATMTable[ATMCount++] = new mp.Vector3(-97.23336, 6455.469, 31.46682);
  3433. ATMTable[ATMCount++] = new mp.Vector3(-386.7451, 6046.102, 31.50172);
  3434. ATMTable[ATMCount++] = new mp.Vector3(-1091.42, 2708.629, 18.95568);
  3435. ATMTable[ATMCount++] = new mp.Vector3(5.132, -919.7711, 29.55953);
  3436. ATMTable[ATMCount++] = new mp.Vector3(-660.703, -853.971, 24.484);
  3437. ATMTable[ATMCount++] = new mp.Vector3(-2293.827, 354.817, 174.602);
  3438. ATMTable[ATMCount++] = new mp.Vector3(-2294.637, 356.553, 174.602);
  3439. ATMTable[ATMCount++] = new mp.Vector3(-2295.377, 358.241, 174.648);
  3440. ATMTable[ATMCount++] = new mp.Vector3(-1409.782, -100.41, 52.387);
  3441. ATMTable[ATMCount++] = new mp.Vector3(-1410.279, -98.649, 52.436);
  3442. ATMTable[ATMCount++] = new mp.Vector3(296.3147, -895.1487, 29.22718);
  3443. ATMTable[ATMCount++] = new mp.Vector3(146.9257, -1035.465, 29.34387);
  3444. ATMTable[ATMCount++] = new mp.Vector3(-255.6634, -716.0283, 33.47763);
  3445. ATMTable[ATMCount++] = new mp.Vector3(-258.8192, -723.5684, 33.46172);
  3446. ATMTable[ATMCount++] = new mp.Vector3(-302.4936, -829.8085, 32.41725);
  3447. ATMTable[ATMCount++] = new mp.Vector3(-618.0313, -707.865, 30.05278);
  3448. ATMTable[ATMCount++] = new mp.Vector3(-846.4432, -340.7214, 38.68027);
  3449. ATMTable[ATMCount++] = new mp.Vector3(285.7219, 143.5284, 104.1688);
  3450. ATMTable[ATMCount++] = new mp.Vector3(237.0332, 217.7051, 106.2868);
  3451. ATMTable[ATMCount++] = new mp.Vector3(357.0666, 173.4619, 103.0655);
  3452. ATMTable[ATMCount++] = new mp.Vector3(1166.907, -456.0782, 66.806);
  3453. ATMTable[ATMCount++] = new mp.Vector3(1138.292, -469.0696, 66.7278);
  3454. ATMTable[ATMCount++] = new mp.Vector3(1171.881, 2702.488, 38.17521);
  3455. ATMTable[ATMCount++] = new mp.Vector3(33.15104, -1348.158, 29.49703);
  3456. ATMTable[ATMCount++] = new mp.Vector3(-717.6112, -915.8884, 19.2156);
  3457. ATMTable[ATMCount++] = new mp.Vector3(-56.85688, -1752.181, 29.42101);
  3458. ATMTable[ATMCount++] = new mp.Vector3(-2957.844, 487.9157, 15.46391);
  3459. ATMTable[ATMCount++] = new mp.Vector3(-3240.689, 1008.609, 12.83071);
  3460. ATMTable[ATMCount++] = new mp.Vector3(-283.0984, 6226.135, 31.49316);
  3461. ATMTable[ATMCount++] = new mp.Vector3(-133.1364, 6366.522, 31.47617);
  3462. ATMTable[ATMCount++] = new mp.Vector3(1735.201, 6410.649, 35.03724);
  3463. ATMTable[ATMCount++] = new mp.Vector3(2683.093, 3286.566, 55.24114);
  3464. ATMTable[ATMCount++] = new mp.Vector3(228.3088, 338.5678, 105.5587);
  3465. ATMTable[ATMCount++] = new mp.Vector3(289.0123, -1256.848, 29.44076);
  3466. ATMTable[ATMCount++] = new mp.Vector3(380.8073, 323.4547, 103.5664);
  3467. ATMTable[ATMCount++] = new mp.Vector3(1968.141, 3743.605, 32.34375);
  3468. ATMTable[ATMCount++] = new mp.Vector3(-2957.885, 487.8467, 15.46391);
  3469. ATMTable[ATMCount++] = new mp.Vector3(-3040.838, 593.1485, 7.908931);
  3470. ATMTable[ATMCount++] = new mp.Vector3(-3043.97, 594.6237, 7.736614);
  3471. ATMTable[ATMCount++] = new mp.Vector3(2564.607, 2584.777, 38.08311);
  3472. ATMTable[ATMCount++] = new mp.Vector3(-1827.164, 784.8987, 138.3023);
  3473. ATMTable[ATMCount++] = new mp.Vector3(2558.794, 351.0217, 108.6215);
  3474. ATMTable[ATMCount++] = new mp.Vector3(158.6132, 234.0741, 106.6264);
  3475. ATMTable[ATMCount++] = new mp.Vector3(112.9124, -775.6813, 31.428);
  3476. ATMTable[ATMCount++] = new mp.Vector3(119.0629, -883.828, 31.12307);
  3477. ATMTable[ATMCount++] = new mp.Vector3(112.6496, -818.8077, 31.33914);
  3478. ATMTable[ATMCount++] = new mp.Vector3(1153.667, -326.7621, 69.20508);
  3479. ATMTable[ATMCount++] = new mp.Vector3(174.2261, 6637.987, 31.57306);
  3480. ATMTable[ATMCount++] = new mp.Vector3(155.7531, 6642.904, 31.60182);
  3481. ATMTable[ATMCount++] = new mp.Vector3(1702.877, 4933.57, 42.06367);
  3482. ATMTable[ATMCount++] = new mp.Vector3(2558.409, 389.4285, 108.623);
  3483. ATMTable[ATMCount++] = new mp.Vector3(-29.29773, -723.7197, 44.22524);
  3484. ATMTable[ATMCount++] = new mp.Vector3(-203.9189, -861.4605, 30.26762);
  3485. ATMTable[ATMCount++] = new mp.Vector3(-711.585, -818.8065, 23.72954);
  3486. ATMTable[ATMCount++] = new mp.Vector3(-526.6584, -1222.86, 18.45498);
  3487. ATMTable[ATMCount++] = new mp.Vector3(-2975.1, 380.0502, 14.99872);
  3488. ATMTable[ATMCount++] = new mp.Vector3(-1077.504, -260.6153, 37.81066);
  3489. ATMTable[ATMCount++] = new mp.Vector3(925.9649, 41.43527, 79.84252);
  3490. ATMTable[ATMCount++] = new mp.Vector3(-1036.824, -434.7372, 39.61561);
  3491. ATMTable[ATMCount++] = new mp.Vector3(-1038.635, -430.4318, 39.61561);
  3492.  
  3493. function call(a) {
  3494. a()
  3495. }
  3496. var nextTick = function(a) {
  3497. setTimeout(call(a), 5)
  3498. },
  3499. Weed = function() {
  3500. function a() {
  3501. _classCallCheck(this, a);
  3502. this._setup()
  3503. }
  3504. _createClass(a, [{
  3505. key: "_setup",
  3506. value: function() {
  3507. this._drawPlant = null;
  3508. this._plantFullGrown = 86400;
  3509. this._obj = null;
  3510. this._isUpdating = !1;
  3511. this._easingSwitch = this._easing = 0
  3512. }
  3513. }, {
  3514. key: "easing",
  3515. value: function(a) {
  3516. return a * (2 - a)
  3517. }
  3518. }, {
  3519. key: "reset",
  3520. value: function() {
  3521. this._easingSwitch = this._easing = 0;
  3522. this._isPlacing = this._isUpdating = !1;
  3523. null != this._obj && this._obj.destroy();
  3524. this._obj = null
  3525. }
  3526. }, {
  3527. key: "findrot",
  3528. value: function(a,
  3529. c, d, e) {
  3530. var b = new mp.Vector3(0, 0, 0);
  3531. b.x = a.x;
  3532. b.y = a.y;
  3533. b.z = a.z;
  3534. a = Math.PI / 180 * (c.z + e);
  3535. b.x += d * Math.cos(a);
  3536. b.y += d * Math.sin(a);
  3537. return b
  3538. }
  3539. }, {
  3540. key: "rot_point",
  3541. value: function(a, c) {
  3542. a = new mp.Vector3(a.x, a.y, a.z);
  3543. c = new mp.Vector3(c.x, c.y, c.z);
  3544. var b = a.x - c.x,
  3545. e = a.y - c.y;
  3546. return 180 * Math.atan2(c.z - a.z, Math.sqrt(b * b + e * e)) / Math.PI
  3547. }
  3548. }, {
  3549. key: "getDistance",
  3550. value: function(a, c) {
  3551. var b = a.x - c.x,
  3552. e = a.y - c.y;
  3553. a = a.z - c.z;
  3554. return Math.sqrt(b * b + e * e + a * a)
  3555. }
  3556. }, {
  3557. key: "groundPos",
  3558. value: function(a) {
  3559. return mp.game.gameplay.getGroundZFor3dCoord(a.x, a.y,
  3560. a.z, 0, !1)
  3561. }
  3562. }, {
  3563. key: "update",
  3564. value: function() {
  3565. var a = mp.players.local.position,
  3566. c = mp.players.local.getRotation(0),
  3567. d = this.findrot(a, c, .8, 90);
  3568. d.z = this.groundPos(d);
  3569. var e = this.findrot(d, c, 1, 180),
  3570. f = this.findrot(d, c, 1, 0);
  3571. e.z = mp.game.gameplay.getGroundZFor3dCoord(e.x, e.y, e.z + 1, 0, !1);
  3572. f.z = mp.game.gameplay.getGroundZFor3dCoord(f.x, f.y, f.z + 1, 0, !1);
  3573. var g = this.findrot(d, c, 1, 270),
  3574. h = this.findrot(d, c, 1, 90);
  3575. h.z = mp.game.gameplay.getGroundZFor3dCoord(h.x, h.y, h.z + 1, 0, !1);
  3576. g.z = mp.game.gameplay.getGroundZFor3dCoord(g.x, g.y,
  3577. g.z + 1, 0, !1);
  3578. c.y = -1 * this.rot_point(e, f);
  3579. c.x = -1 * this.rot_point(h, g);
  3580. mp.game.controls.disableControlAction(2, 22, !0);
  3581. mp.game.controls.disableControlAction(2, 24, !0);
  3582. mp.game.controls.disableControlAction(2, 38, !0);
  3583. mp.game.controls.isDisabledControlJustPressed(2, 38) && !mp.raycasting.testPointToPoint(a, d, mp.players.local, 1) && (this._isPlacing = !0);
  3584. if (mp.game.controls.isDisabledControlJustPressed(2, 22)) this.reset();
  3585. else {
  3586. if (1 == this._isPlacing && (0 == this._easingSwitch && 1 > this._easing && (this._easing += .04), 0 <= this._easing &&
  3587. 1 == this._easingSwitch && (this._easing -= .04), 0 == this._easingSwitch && 1 <= this._easing && (this._easingSwitch = 1), d.z += .2 * this.easing(this._easing), 0 >= this._easing && 1 == this._easingSwitch)) {
  3588. this.place();
  3589. return
  3590. }
  3591. this._obj.setCoords(d.x, d.y, d.z, !1, !1, !1, !1);
  3592. this._obj.setRotation(c.x, c.y, c.z, 0, !0);
  3593. mp.game.graphics.setDrawOrigin(d.x, d.y, d.z + 1.05, 0);
  3594. mp.game.graphics.drawText("Steckling anpflanzen", [0, -.02], {
  3595. font: 0,
  3596. color: [255, 255, 255, 255],
  3597. scale: [.3, .3],
  3598. outline: !0
  3599. });
  3600. 1 == this._isPlacing ? mp.game.graphics.drawText("Warten ..", [0, 0], {
  3601. font: 0,
  3602. color: [255, 255, 255, 255],
  3603. scale: [.3, .3],
  3604. outline: !0
  3605. }) : mp.game.graphics.drawText("E zum Platzieren\nLeertaste zum Abbrechen", [0, 0], {
  3606. font: 0,
  3607. color: [255, 255, 255, 255],
  3608. scale: [.3, .3],
  3609. outline: !0
  3610. });
  3611. mp.game.graphics.clearDrawOrigin()
  3612. }
  3613. }
  3614. }, {
  3615. key: "place",
  3616. value: function() {
  3617. var a = this._obj.getCoords(!1),
  3618. c = this._obj.getRotation(0),
  3619. d = mp.game.entity.getInteriorFromEntity(this._obj);
  3620. this.reset();
  3621. var e = mp.players.local.position;
  3622. mp.raycasting.testPointToPoint(a, e, mp.players.local, 1) ? mp.game.graphics.notify("~r~An dieser Position kannst du keinen Steckling anpflanzen!") :
  3623. 1 == mp.players.local.isSittingInAnyVehicle() || mp.players.local.isDeadOrDying(!0) || (0 < d ? mp.game.graphics.notify("~r~An dieser Position kannst du keinen Steckling anpflanzen!") : 15 < c.x || -15 > c.x ? mp.game.graphics.notify("~r~Die Neigung ist zu stark!") : 15 < c.y || -15 > c.y ? mp.game.graphics.notify("~r~Die Neigung ist zu stark!") : 0 > a.z ? mp.game.graphics.notify("~r~Stecklinge wachsen in dieser Gegend leider nicht!") : null != this._drawPlant ? mp.game.graphics.notify("~r~Der Stecklinge sollten etwas auseinander platziert werden!") :
  3624. e.z >= a.z + 1.75 ? mp.game.graphics.notify("~r~Die Neigung ist zu stark!") : (c = mp.game.water.getWaterHeight(a.x, a.y, a.z, 0), !c || a.z > c ? mp.events.callRemote("plant_finish", a.x, a.y, a.z) : mp.game.graphics.notify("~r~Stecklinge wachsen unter Wasser leider nicht!")))
  3625. }
  3626. }, {
  3627. key: "preview",
  3628. value: function() {
  3629. if (null == Webwindow.TicketsystemBrowser && null == Webwindow.Settings && null == Webwindow.Trade && 1 != Selection.visible && 0 != player_lang && 1 != mp.players.local.isSittingInAnyVehicle() && 1 != mp.gui.cursor.visible && !mp.players.local.isDeadOrDying(!0)) {
  3630. this._obj &&
  3631. this._obj.destroy();
  3632. var a = mp.players.local.position,
  3633. c = this.groundPos(a);
  3634. c = new mp.Vector3(a.x, a.y, c);
  3635. var d = mp.players.local.getRotation(0);
  3636. this.findrot(c, d, 2, 90);
  3637. this._obj = mp.objects.new(mp.game.joaat("prop_weed_02"), a, {
  3638. rotation: d
  3639. });
  3640. this._obj.setCollision(!1, !0);
  3641. this._isUpdating = !0
  3642. }
  3643. }
  3644. }, {
  3645. key: "show_plant",
  3646. value: function(a, c) {
  3647. this._drawPlant = {
  3648. plant: a,
  3649. grow_state: c
  3650. }
  3651. }
  3652. }, {
  3653. key: "drawPlant",
  3654. value: function() {
  3655. var a = mp.players.local.position;
  3656. if (vioObjects[this._drawPlant.plant]) {
  3657. var c = vioObjects[this._drawPlant.plant];
  3658. if (c.isCreated())
  3659. if (c = c.getCoords(!1) || c._pos, 2.5 > this.getDistance(c, a)) {
  3660. parseInt(Date.now() / 1E3);
  3661. mp.game.controls.disableControlAction(2, 38, !0);
  3662. mp.game.graphics.setDrawOrigin(c.x, c.y, c.z + 1, 0);
  3663. mp.game.graphics.drawText("~g~Hanfpflanze", [0, -.02], {
  3664. font: 0,
  3665. color: [255, 255, 255, 255],
  3666. scale: [.3, .3],
  3667. outline: !0
  3668. });
  3669. 50 > this._drawPlant.grow_state ? (mp.game.graphics.drawText("~g~Wachstum: " + this._drawPlant.grow_state + "%", [0, 0], {
  3670. font: 0,
  3671. color: [255, 255, 255, 255],
  3672. scale: [.3, .3],
  3673. outline: !0
  3674. }), mp.game.graphics.drawText("~g~Taste 'E' um den Steckling zu entfernen", [0, .02], {
  3675. font: 0,
  3676. color: [255, 255, 255, 255],
  3677. scale: [.3, .3],
  3678. outline: !0
  3679. })) : 99 < this._drawPlant.grow_state ? mp.game.graphics.drawText("~g~Taste 'E' zum Ernten", [0, 0], {
  3680. font: 0,
  3681. color: [255, 255, 255, 255],
  3682. scale: [.3, .3],
  3683. outline: !0
  3684. }) : 49 < this._drawPlant.grow_state && (mp.game.graphics.drawText("~g~Wachstum: " + this._drawPlant.grow_state + "%", [0, 0], {
  3685. font: 0,
  3686. color: [255, 255, 255, 255],
  3687. scale: [.3, .3],
  3688. outline: !0
  3689. }), mp.game.graphics.drawText("~g~Taste 'E' zum Ernten", [0, .02], {
  3690. font: 0,
  3691. color: [255, 255, 255, 255],
  3692. scale: [.3, .3],
  3693. outline: !0
  3694. }));
  3695. if (mp.game.controls.isDisabledControlJustPressed(2, 38)) {
  3696. if (1 == mp.players.local.isSittingInAnyVehicle() || 1 == mp.gui.cursor.visible || mp.players.local.isDeadOrDying(!0)) return;
  3697. this.harvestPlant()
  3698. }
  3699. mp.game.graphics.clearDrawOrigin()
  3700. } else this._drawPlant = null
  3701. }
  3702. }
  3703. }, {
  3704. key: "harvestPlant",
  3705. value: function() {
  3706. mp.events.callRemote("OnClientRequestWeedHarvest");
  3707. this._drawPlant = null
  3708. }
  3709. }]);
  3710. return a
  3711. }(),
  3712. WeedPlantDrug = new Weed;
  3713. mp.events.add("render", function() {
  3714. WeedPlantDrug._isUpdating && WeedPlantDrug.update();
  3715. null != WeedPlantDrug._drawPlant && WeedPlantDrug.drawPlant()
  3716. });
  3717. mp.events.add("plantstart", function() {
  3718. WeedPlantDrug.preview()
  3719. });
  3720. mp.events.add("plant_show", function(a, b) {
  3721. WeedPlantDrug.show_plant(a, b)
  3722. });
  3723. var DrugEffects = new(function() {
  3724. function a() {
  3725. _classCallCheck(this, a);
  3726. this._setup()
  3727. }
  3728. _createClass(a, [{
  3729. key: "_setup",
  3730. value: function() {
  3731. this._effect = {
  3732. meth: "Rampage",
  3733. weed: "DrugsDrivingOut"
  3734. };
  3735. this._debuffEffect = "FocusIn";
  3736. this._activeEffects = [];
  3737. this._activeDebuffEffects = []
  3738. }
  3739. }, {
  3740. key: "effect",
  3741. value: function(a, c) {
  3742. 0 == c && this.removeEffect(a, this._effect[a]);
  3743. 1 == c && this.showDebuff(a, this._effect[a]);
  3744. 2 == c && this.showBuff(a, this._effect[a])
  3745. }
  3746. }, {
  3747. key: "showBuff",
  3748. value: function(a, c) {
  3749. this._activeEffects[a] || (this._activeEffects[a] = !0, mp.game.graphics.startScreenEffect(c, 1E3, !0), this._activeDebuffEffects[a] && mp.game.graphics.stopScreenEffect(this._debuffEffect))
  3750. }
  3751. }, {
  3752. key: "removeEffect",
  3753. value: function(a, c) {
  3754. this._activeEffects[a] && (this._activeEffects[a] = !1, mp.game.graphics.stopScreenEffect(c));
  3755. this._activeDebuffEffects[a] && (this._activeDebuffEffects[a] = !1, mp.game.graphics.stopScreenEffect(this._debuffEffect))
  3756. }
  3757. }, {
  3758. key: "showDebuff",
  3759. value: function(a, c) {
  3760. this._activeDebuffEffects[a] || (this._activeDebuffEffects[a] = !0, mp.game.graphics.stopScreenEffect(this._debuffEffect),
  3761. mp.game.graphics.startScreenEffect(this._debuffEffect, 1E3, !0))
  3762. }
  3763. }]);
  3764. return a
  3765. }());
  3766. mp.events.add("updateMethamphetaminStatus", function(a) {
  3767. DrugEffects.effect("meth", a)
  3768. });
  3769. var AnimationFlags = {
  3770. Loop: 1,
  3771. StopOnLastFrame: 2,
  3772. OnlyAnimateUpperBody: 16,
  3773. AllowPlayerControl: 32,
  3774. Cancellable: 128
  3775. },
  3776. FishingJob = new(function() {
  3777. function a() {
  3778. _classCallCheck(this, a);
  3779. this._setup()
  3780. }
  3781. _createClass(a, [{
  3782. key: "_setup",
  3783. value: function() {
  3784. var a = this;
  3785. a._player = mp.players.local;
  3786. a.res = mp.game.graphics.getScreenActiveResolution(1, 1);
  3787. a.render = !1;
  3788. a.obj = null;
  3789. a.child = null;
  3790. a._init = !1;
  3791. a._catch = !1;
  3792. a.ped = !1;
  3793. a._catchingfinish = !1;
  3794. a._catching = !1;
  3795. a._isWaiting = !1;
  3796. a._minigame = {
  3797. progress: 0,
  3798. max: 100,
  3799. step: 4,
  3800. remove: 1,
  3801. timer: null,
  3802. active: !1,
  3803. strikes: 0
  3804. };
  3805. mp.events.add("render", function() {
  3806. a.render && a.update()
  3807. })
  3808. }
  3809. }, {
  3810. key: "minigame",
  3811. value: function() {
  3812. var a = this;
  3813. mp.players.local.taskPlayAnim("amb@world_human_stand_fishing@idle_a", "idle_c", 8, 1, -1, 1, .5, !0, !0, !0);
  3814. a._minigame.active = !1;
  3815. a._minigame.timer = setInterval(function() {
  3816. 0 < a._minigame.progress && (a._minigame.active = !0);
  3817. a._minigame.active && (a._minigame.progress -= a._minigame.remove, 0 > a._minigame.progress && (a._minigame.progress = 0, a._minigame.strikes += 1, 150 < a._minigame.strikes && (clearInterval(a._minigame.timer),
  3818. a.cancel())))
  3819. }, 70)
  3820. }
  3821. }, {
  3822. key: "reset",
  3823. value: function() {
  3824. this._catching = this._catch = this._init = this.render = !1;
  3825. this._minigame.timer = null;
  3826. this._isWaiting = !1;
  3827. null != this.obj && (this.obj.destroy(), this.obj = null);
  3828. null != this.child && (this.child.destroy(), this.child = null);
  3829. mp.players.local.stopAnimTask("amb@world_human_stand_fishing@idle_a", "idle_c", 1);
  3830. mp.events.callRemote("fish_cancel")
  3831. }
  3832. }, {
  3833. key: "cancel",
  3834. value: function() {
  3835. this.reset();
  3836. mp.game.graphics.notify("~g~Der Fisch ist entwischt")
  3837. }
  3838. }, {
  3839. key: "begin",
  3840. value: function(a,
  3841. c, d) {
  3842. 1 == this.render || 1 == this._catch || 1 == this._catching || 1 == this._isWaiting ? this.reset() : null == this._minigame.timer && (mp.game.graphics.notify("~g~Nutze '~b~~h~E~h~~g~' die Angel auszuwerfen!"), null != this.obj && (this.obj.destroy(), this.obj = null), null != this.child && (this.child.destroy(), this.child = null), this._curSecret = d, this._minigame.step = a, this._minigame.remove = c, this._minigame.progress = 0, this._minigame.strikes = 0, this._player = mp.players.local, mp.game.streaming.requestAnimDict("amb@world_human_stand_fishing@base"),
  3843. mp.players.local.taskPlayAnim("amb@world_human_stand_fishing@base", "base", 8, 1, -1, 49, .5, !0, !0, !0), this.obj = mp.objects.new(mp.game.joaat("prop_fishing_rod_01"), mp.players.local.position), a = mp.players.local.getBoneIndex(36029), this.child = mp.objects.new(mp.game.joaat("ng_proc_sodacan_01b"), mp.players.local.position, {
  3844. alpha: 0
  3845. }), this.obj.attachTo(mp.players.local.handle, a, .15, .15, .05, 270, -90, -30, !0, !1, !1, !1, 0, !0), this.child.attachTo(mp.players.local.handle, a, 1.4, 2.3, .05, 270, -90, -30, !0, !1, !1, !1, 0, !0), this.child.setCollision(!1, !0), this._init = this.render = !0, this._catching = this._catch = !1)
  3846. }
  3847. }, {
  3848. key: "update",
  3849. value: function() {
  3850. var a = this;
  3851. mp.game.controls.disableControlAction(2, 38, !0);
  3852. mp.game.controls.disableControlAction(2, 22, !0);
  3853. mp.game.controls.disableControlAction(2, 24, !0);
  3854. if (mp.players.local.isInAnyVehicle(!0)) a.reset();
  3855. else if (0 == mp.players.local.getHealth()) a.reset();
  3856. else if (mp.players.local.isSwimming()) a.reset();
  3857. else {
  3858. if (a._init) {
  3859. mp.game.controls.disableControlAction(2, 38, !0);
  3860. mp.game.controls.disableControlAction(2, 22, !0);
  3861. a._player.getRotation(1);
  3862. var c = a.child.getCoords(!0),
  3863. d = mp.game.gameplay.getGroundZFor3dCoord(c.x, c.y, c.z, 0, !1);
  3864. d = new mp.Vector3(c.x, c.y, d);
  3865. mp.game.controls.isDisabledControlJustPressed(2, 38) && 0 == a.ped && (a.ped = !0, (c = mp.game.water.getWaterHeight(d.x, d.y, d.z, 0)) && d.z < c ? (a._isWaiting = !0, a.obj.destroy(), a.obj = null, a.child.destroy(), a.child = null, mp.players.local.stopAnimTask("amb@world_human_stand_fishing@base", "base", 1), mp.events.callRemote("fish_init"), a._init = !1, mp.game.graphics.notify("~g~Angel wird ausgeworfen!")) :
  3866. (mp.game.graphics.notify("~r~Das Wasser an dieser Stelle ist nicht tief genug!"), a.reset()), a.ped = !1)
  3867. }
  3868. 1 == a._isWaiting && mp.game.controls.isDisabledControlJustPressed(2, 22) ? (a.reset(), mp.game.graphics.notify("~r~Es hat noch kein Fisch angebissen! Habe etwas mehr Geduld.")) : (a._catch && (c = a._player.position, mp.game.graphics.setDrawOrigin(c.x, c.y, c.z + 1, 0), mp.game.graphics.drawRect(0, 0, .12, .03, 0, 0, 0, 200), mp.game.graphics.clearDrawOrigin(), mp.game.controls.isDisabledControlJustPressed(2, 22) ? (a._catching = !0, a._catch = !1, mp.game.graphics.notify("~g~Nutze ~b~~h~'LEERTASTE'~h~~g~, um die Rute einzuholen."), a.minigame()) : (mp.game.graphics.setDrawOrigin(c.x, c.y, c.z + 1, 0), mp.game.graphics.drawText("Nutze 'LEERTASTE' zum Anhieb", [0, 0], {
  3869. scale: [.3, .3],
  3870. color: [255, 255, 255, 255],
  3871. font: 0,
  3872. outline: !0
  3873. }), mp.game.graphics.clearDrawOrigin()), mp.game.graphics.clearDrawOrigin()), a._catching && (c = a._player.position, mp.game.graphics.setDrawOrigin(c.x, c.y, c.z + 1, 0), mp.game.graphics.drawRect(0, 0, .12, .02, 0, 0, 0, 200), c = .11 / a._minigame.max *
  3874. a._minigame.progress, mp.game.graphics.drawRect(-.0595 + c / 2, .0005, c, .018, 0, 180, 0, 200), mp.game.controls.isDisabledControlJustPressed(2, 22) && (a._minigame.progress += a._minigame.step, 99 < a._minigame.progress && (a._minigame.progress = 100), 100 <= a._minigame.progress && (a._catchingfinish = !1, a._catching = !1, clearInterval(a._minigame.timer), a._minigame.timer = null, setTimeout(function() {
  3875. a.render = !1;
  3876. a._catchingfinish = !0;
  3877. a.reset();
  3878. mp.events.callRemote("fish_finish", a._curSecret)
  3879. }, 1E3))), mp.game.graphics.clearDrawOrigin()),
  3880. a.child && (c = a.child.getCoords(!0), a._player.getRotation(1), d = mp.game.gameplay.getGroundZFor3dCoord(c.x, c.y, c.z, 0, !1), d = new mp.Vector3(c.x, c.y, d + .04), mp.game.graphics.drawLine(c.x, c.y, c.z, d.x, d.y, d.z, 0, 0, 0, 150)))
  3881. }
  3882. }
  3883. }, {
  3884. key: "beginCatch",
  3885. value: function() {
  3886. 1 == this._isWaiting && (this._catch = this.render = !0, this._isWaiting = !1, mp.game.graphics.notify("~g~Es tut sich was...~n~~g~Nutze '~b~~h~LEERTASTE~h~~g~' um einen Anhieb zu probieren."), null != this.child && (this.child.destroy(), this.child = null), mp.players.local.taskPlayAnim("amb@world_human_stand_fishing@base",
  3887. "base", 8, 1, -1, 49, .5, !0, !0, !0))
  3888. }
  3889. }, {
  3890. key: "earn",
  3891. value: function(a, c) {
  3892. 0 == a ? mp.game.graphics.notify("~g~Du hast erfolgreich einen Fisch geangelt, ~n~Gewicht " + c + " kg") : 1 == a ? mp.game.graphics.notify("~r~Die Angel hat dem Gewicht nicht standgehalten und ist abgebrochen!") : 2 == a ? mp.game.graphics.notify("~g~Du hast eine seltsame Holzkiste an Land gezogen, ~n~ was da wohl drinne ist...") : 3 == a ? mp.game.graphics.notify("~y~Du hast ein Stueck Treibholz geangelt. Sieht irgendwie aus, wie ein Holzbein. Du wirfst es weg!") :
  3893. 4 == a && mp.game.graphics.notify("~g~Du hast ein altes Fischernetz gefunden. Mit etwas Erfahrung kann man damit Fische fangen!")
  3894. }
  3895. }]);
  3896. return a
  3897. }());
  3898. mp.events.add("fish_start", function() {
  3899. FishingJob.begin(0 >= arguments.length ? void 0 : arguments[0], 1 >= arguments.length ? void 0 : arguments[1], 2 >= arguments.length ? void 0 : arguments[2])
  3900. });
  3901. mp.events.add("fish_catch", function() {
  3902. FishingJob.beginCatch()
  3903. });
  3904. mp.events.add("fish_earn", function() {
  3905. FishingJob.earn(0 >= arguments.length ? void 0 : arguments[0], 1 >= arguments.length ? void 0 : arguments[1])
  3906. });
  3907. var FishNets = new(function() {
  3908. function a() {
  3909. _classCallCheck(this, a);
  3910. this._setup()
  3911. }
  3912. _createClass(a, [{
  3913. key: "_setup",
  3914. value: function() {
  3915. var a = this;
  3916. a._player = mp.players.local;
  3917. a._fishnets = [];
  3918. a.render = !1;
  3919. a.loaded = !1;
  3920. mp.events.add("render", function() {
  3921. a.render && a.update()
  3922. })
  3923. }
  3924. }, {
  3925. key: "loadNets",
  3926. value: function(a) {
  3927. a = JSON.parse(a);
  3928. for (var b in a) this.loadNet(a[b]);
  3929. this.loaded = !0
  3930. }
  3931. }, {
  3932. key: "update",
  3933. value: function() {
  3934. var a = this,
  3935. c = null,
  3936. d = mp.players.local.position,
  3937. e = 150;
  3938. Object.keys(a._fishnets).forEach(function(b) {
  3939. var f = a._fishnets[b];
  3940. null != f.Position && (f = mp.game.system.vdist2(d.x, d.y, d.z, f.Position.x, f.Position.y, f.Position.z), e > f && (c = b, e = f))
  3941. });
  3942. if (null != c) {
  3943. var f = a._fishnets[c];
  3944. if (null != f.Position) {
  3945. var g = mp.game.water.getWaterHeight(f.Position.x, f.Position.y, f.Position.z, 0);
  3946. mp.game.graphics.setDrawOrigin(f.Position.x, f.Position.y, g + 1, 0);
  3947. mp.game.graphics.drawText("Fischnetz", [0, 0], {
  3948. font: 0,
  3949. color: [255, 255, 255, 255],
  3950. scale: [.3, .3],
  3951. outline: !0
  3952. });
  3953. mp.game.graphics.drawText("Ausgelastet " + (100 < f.amount ? 100 : f.amount) + "%", [0, .025], {
  3954. font: 0,
  3955. color: [255, 255, 255, 255],
  3956. scale: [.3, .3],
  3957. outline: !0
  3958. });
  3959. mp.game.graphics.drawText("Besch\u00e4digung " + (100 < f.damage ? 100 : f.damage) + "%", [0, .05], {
  3960. font: 0,
  3961. color: [255, 255, 255, 255],
  3962. scale: [.3, .3],
  3963. outline: !0
  3964. });
  3965. mp.game.graphics.clearDrawOrigin()
  3966. }
  3967. }
  3968. }
  3969. }, {
  3970. key: "isLoaded",
  3971. value: function() {
  3972. return 0 < Object.keys(this._fishnets).length
  3973. }
  3974. }, {
  3975. key: "getNearestNet",
  3976. value: function() {
  3977. var a = this,
  3978. c = null,
  3979. d = mp.players.local.position,
  3980. e = 150;
  3981. Object.keys(a._fishnets).forEach(function(b) {
  3982. var f = a._fishnets[b];
  3983. null != f.Position && (f = mp.game.system.vdist2(d.x,
  3984. d.y, d.z, f.Position.x, f.Position.y, f.Position.z), e > f && (c = b, e = f))
  3985. });
  3986. return null !== c ? a._fishnets[c] : null
  3987. }
  3988. }, {
  3989. key: "unloadNets",
  3990. value: function() {
  3991. var a = this;
  3992. FishNets.render = !1;
  3993. Object.keys(a._fishnets).forEach(function(b) {
  3994. a._fishnets[b] && (a._fishnets[b].fishground_blip && a._fishnets[b].fishground_blip.destroy(), a._fishnets[b].fishground && a._fishnets[b].fishground.destroy(), a._fishnets[b].fish_net && a._fishnets[b].fish_net.destroy(), a._fishnets[b].buoy && a._fishnets[b].buoy.destroy())
  3995. });
  3996. a._fishnets = [];
  3997. a.loaded = !1
  3998. }
  3999. }, {
  4000. key: "loadNet",
  4001. value: function(a) {
  4002. this._fishnets[a.ID] && (this._fishnets[a.ID].fishground_blip && this._fishnets[a.ID].fishground_blip.destroy(), this._fishnets[a.ID].fishground && this._fishnets[a.ID].fishground.destroy(), this._fishnets[a.ID].fish_net && this._fishnets[a.ID].fish_net.destroy(), this._fishnets[a.ID].buoy && this._fishnets[a.ID].buoy.destroy());
  4003. var b = mp.game.water.getWaterHeight(a.GlobalPosition.x, a.GlobalPosition.y, a.GlobalPosition.z, 0);
  4004. this._fishnets[a.ID] = {
  4005. fishground_blip: mp.blips.new(68,
  4006. new mp.Vector3(a.GlobalPosition.x, a.GlobalPosition.y, a.GlobalPosition.z), {
  4007. name: "Fischgrund",
  4008. color: 42,
  4009. shortRange: !0,
  4010. scale: 1,
  4011. alpha: 150,
  4012. drawDistance: 500
  4013. }),
  4014. fishground: mp.objects.new(mp.game.joaat("prop_dock_bouy_2"), new mp.Vector3(a.GlobalPosition.x, a.GlobalPosition.y, b), new mp.Vector3),
  4015. fish_net: null,
  4016. buoy: null,
  4017. damage: a.Damage,
  4018. amount: a.Amount,
  4019. ID: a.ID,
  4020. Position: a.Position
  4021. };
  4022. null != a.Position && (b = mp.game.water.getWaterHeight(a.Position.x, a.Position.y, a.Position.z, 0), this._fishnets[a.ID].fish_net = mp.blips.new(515,
  4023. new mp.Vector3(a.Position.x, a.Position.y, a.Position.z), {
  4024. name: "Fischnetz",
  4025. color: 38,
  4026. shortRange: !0,
  4027. scale: 1,
  4028. alpha: 150,
  4029. drawDistance: 30
  4030. }), this._fishnets[a.ID].buoy = mp.objects.new(mp.game.joaat("prop_dock_float_1"), new mp.Vector3(a.Position.x, a.Position.y, b), new mp.Vector3), mp.players.local.vehicle.setNoCollision(this._fishnets[a.ID].buoy.handle, !1))
  4031. }
  4032. }]);
  4033. return a
  4034. }());
  4035. mp.events.add("CreatePlayerLocalFishNets", function(a) {
  4036. FishNets.loadNets(a);
  4037. FishNets.render = !0
  4038. });
  4039. mp.events.add("playerLeaveVehicle", function(a, b) {
  4040. FishNets.isLoaded() && FishNets.unloadNets()
  4041. });
  4042. var IsLocalPlayerInCasino = !1;
  4043. mp.events.add("render", function() {
  4044. IsLocalPlayerInCasino && (mp.game.time.setClockTime(0, 0, 0), mp.game.gameplay.setWeatherTypeNowPersist("EXTRASUNNY"), mp.game.controls.disableControlAction(2, 22, !0), mp.game.controls.disableControlAction(2, 23, !0), mp.game.controls.disableControlAction(2, 24, !0), mp.game.controls.disableControlAction(2, 25, !0), mp.game.controls.disableControlAction(2, 257, !0), mp.game.controls.disableControlAction(2, 45, !0), mp.game.controls.disableControlAction(2, 44, !0), mp.game.controls.disableControlAction(2,
  4045. 37, !0), mp.game.controls.disableControlAction(2, 140, !0), mp.game.controls.disableControlAction(2, 141, !0), mp.game.controls.disableControlAction(2, 142, !0), mp.game.controls.disableControlAction(2, 143, !0))
  4046. });
  4047. mp.events.add("SetPlayerCasinoStatus", function(a, b) {
  4048. 0 == a ? (IsLocalPlayerInCasino = !1, a = new Date, mp.game.time.setClockTime(a.getHours(), a.getMinutes(), a.getSeconds()), mp.game.gameplay.setWeatherTypeNowPersist(weather[b])) : IsLocalPlayerInCasino = !0
  4049. });
  4050. var disabled_items = {
  4051. 0: !0,
  4052. 1: !0,
  4053. 9: !0,
  4054. 11: !0,
  4055. 38: !0
  4056. },
  4057. MPClass = function() {
  4058. function a(b) {
  4059. _classCallCheck(this, a);
  4060. this._setup(b)
  4061. }
  4062. _createClass(a, [{
  4063. key: "_setup",
  4064. value: function(a) {
  4065. this.init(a)
  4066. }
  4067. }, {
  4068. key: "init",
  4069. value: function(a) {
  4070. this._slots = a;
  4071. this.window = new CEFBrowser("package://viov/client_ui/html/marketplace/index.html", !0);
  4072. this.window.call("showAll");
  4073. this.window.call("setMaxSlots", this._slots)
  4074. }
  4075. }, {
  4076. key: "loadInventory",
  4077. value: function(a) {
  4078. null !== this.window && this.window.call("loadInventory", a)
  4079. }
  4080. }, {
  4081. key: "close",
  4082. value: function() {
  4083. null !==
  4084. this.window && this.window.destroy()
  4085. }
  4086. }]);
  4087. return a
  4088. }(),
  4089. Marketplace;
  4090. mp.events.add("initMarketplace", function() {
  4091. null !== Marketplace && (null !== Marketplace.window && Marketplace.window.call("setPlayerNameForItems", mp.players.local.name), mp.events.callRemote("OnClientRequestMarketplaceLoadListings", 1))
  4092. });
  4093. mp.events.add("requestBuyItem", function(a, b) {
  4094. mp.events.callRemote("OnClientRequestMarketplaceBuyItem", a, b)
  4095. });
  4096. mp.events.add("requestSellItem", function(a, b, c, d, e, f) {
  4097. mp.events.callRemote("OnClientRequestMarketplaceSellItem", b, c, d)
  4098. });
  4099. mp.events.add("onMarketplaceUpdate", function(a, b, c) {
  4100. if (!mp.game.graphics.hasStreamedTextureDictLoaded("WEB_SIXFIGURETEMPS"))
  4101. for (mp.game.graphics.requestStreamedTextureDict("WEB_SIXFIGURETEMPS", !0); !mp.game.graphics.hasStreamedTextureDictLoaded("WEB_SIXFIGURETEMPS");) mp.game.wait(0);
  4102. var d = "",
  4103. e = "",
  4104. f = "",
  4105. g = "";
  4106. if (0 < b)
  4107. for (var h in lang_de.items) Number(h.replace("item.", "")) == c && (f = lang_de.items[h]);
  4108. 0 == a ? (g = "Fehler", d = "~o~So viel haben wir derzeit nicht auf Lager.", e = "\x3cfont style\x3d'color:#f49542'\x3eSo viel haben wir derzeit nicht auf Lager.\x3c/font\x3e") :
  4109. 1 == a ? (g = "", d = "Du hast ~g~" + b + "x " + f + " ~w~gekauft.", e = "Du hast \x3cfont style\x3d'color:#32d62c'\x3e" + b + "x " + f + "\x3c/font\x3e gekauft.") : 2 == a ? (g = "", d = "Es wurde ~g~" + b + "x " + f + " ~w~von dir gekauft.", e = "Es wurde \x3cfont style\x3d'color:#32d62c'\x3e" + b + "x " + f + "\x3c/font\x3e von dir gekauft.") : 3 == a ? (g = "Fehler", d = "~o~Du hast nicht genug Geld auf der Hand", e = "\x3cfont style\x3d'color:#f49542'\x3eDu hast nicht genug Geld auf der Hand.\x3c/font\x3e") : 4 == a ? (g = "", d = "Du hast ~g~" + b + "x " + f + " ~w~zum Verkauf angeboten.",
  4110. e = "Du hast \x3cfont style\x3d'color:#32d62c'\x3e" + b + "x " + f + "\x3c/font\x3e zum Verkauf angeboten.") : 5 == a ? (g = "Fehler", d = "~y~Verkaufswert zu gro\u00df.", e = "\x3cfont style\x3d'color:#e55922'\x3eVerkaufswert zu gro\u00df.\x3c/font\x3e") : 6 == a ? (g = "Fehler", d = "~y~Weahle ein Item aus.", e = "\x3cfont style\x3d'color:#e55922'\x3eWeahle ein Item aus.\x3c/font\x3e") : 7 == a ? (g = "Fehler", d = "~y~Alle 'Angebot-Slots' belegt.", e = "\x3cfont style\x3d'color:#e55922'\x3eAlle 'Angebot-Slots' belegt.\x3c/font\x3e") : 8 == a && (g = "Fehler",
  4111. d = "~y~Verkaufswert zu klein.", e = "\x3cfont style\x3d'color:#e55922'\x3eVerkaufswert zu klein.\x3c/font\x3e");
  4112. mp.game.graphics.hasStreamedTextureDictLoaded("WEB_SIXFIGURETEMPS") && (mp.game.ui.setNotificationTextEntry("CELL_EMAIL_BCON"), mp.game.ui.addTextComponentSubstringPlayerName(d), mp.game.ui.setNotificationMessage("WEB_SIXFIGURETEMPS", "WEB_SIXFIGURETEMPS", !1, 4, "Marktplatz", g), mp.game.ui.drawNotification(!0, !1));
  4113. mp.gui.chat.safeMode = !1;
  4114. mp.gui.chat.push("[\x3cfont style\x3d'color:#f44b42'\x3eMarktplatz\x3c/font\x3e] " +
  4115. e);
  4116. mp.gui.chat.safeMode = !0
  4117. });
  4118. mp.events.add("requestListings", function() {
  4119. mp.events.callRemote("OnClientRequestMarketplaceLoadListings")
  4120. });
  4121. mp.events.add("requestLoadInventory", function() {
  4122. for (var a = [], b = 0; b <= Object.keys(InventoryItems).length; b++)
  4123. if (!disabled_items[b] && 0 < InventoryItems[b]) {
  4124. var c = {
  4125. id: b,
  4126. name: "",
  4127. amount: InventoryItems[b],
  4128. legal: 0,
  4129. type: "items",
  4130. image: "../inventory/img/" + b + ".png"
  4131. },
  4132. d;
  4133. for (d in lang_de.items) Number(d.replace("legal.", "")) == b && (c.legal = lang_de.items[d]), Number(d.replace("item.", "")) == b && (c.name = lang_de.items[d]);
  4134. a.push(c)
  4135. }
  4136. null !== Marketplace.window && Marketplace.window.call("loadInventory", JSON.stringify(a))
  4137. });
  4138. mp.events.add("requstCloseMarketplace", function() {
  4139. Marketplace.close();
  4140. Marketplace = null
  4141. });
  4142. mp.events.add("OnClientMarketplaceOpen", function(a) {
  4143. null == Marketplace && (Marketplace = new MPClass(a))
  4144. });
  4145. mp.events.add("OnClientMarketplaceLoadListings", function(a, b) {
  4146. if (null !== Marketplace) {
  4147. a = JSON.parse(a);
  4148. var c = [],
  4149. d;
  4150. for (d in a) c.push(a[d]);
  4151. c = c.map(function(a, b) {
  4152. for (var c in lang_de.items) Number(c.replace("legal.", "")) == a.ItemID && (a.legal = lang_de.items[c]), Number(c.replace("item.", "")) == a.ItemID && (a.ItemName = lang_de.items[c]);
  4153. a.Image = "../inventory/img/" + a.ItemID + ".png";
  4154. a.Type = "items";
  4155. return a
  4156. });
  4157. void 0 !== Marketplace && null !== Marketplace.window && (Marketplace.window.call("loadListings", JSON.stringify(c)),
  4158. 1 == b && Marketplace.window.call("showAll"))
  4159. }
  4160. });
  4161. var temp_marker = !1,
  4162. temp_blip = !1;
  4163. mp.events.add("JobbrowerInit", function(a, b) {
  4164. null == Webwindow.JobBrowser && (TempArguments.Jobs = {}, TempArguments.Jobs["1"] = a, TempArguments.Jobs["2"] = lang_de.window_jobbrowser, TempArguments.Jobs["3"] = b, Webwindow.JobBrowser = new CEFBrowser("package://viov/client_ui/html/jobbrowser/jobbrowser.html", !0))
  4165. });
  4166. mp.events.add("updateClientTaxometer", function(a, b, c) {
  4167. null != Webwindow.TaxiWindow ? Webwindow.TaxiWindow.execute("vio._callEvent('taxi:init'," + Number(a) + ");") : (TempArguments.Taxi = {}, TempArguments.Taxi["1"] = Number(a), Webwindow.TaxiWindow = mp.browsers.new("package://viov/client_ui/html/taxi/taxi.html"))
  4168. });
  4169. mp.events.add("destroyClientTaxometer", function() {
  4170. null != Webwindow.TaxiWindow && (Webwindow.TaxiWindow.destroy(), Webwindow.TaxiWindow = null)
  4171. });
  4172. mp.events.add("initJobWindow", function() {
  4173. null != Webwindow.JobBrowser && (Webwindow.JobBrowser.call("vio._callEvent", "jobbrowser:init", TempArguments.Jobs["1"], TempArguments.Jobs["2"], TempArguments.Jobs["3"]), resolution = mp.game.graphics.getScreenActiveResolution(1, 1), Webwindow.JobBrowser.position((resolution.x - 1005) / 2, (resolution.y - 635) / 2, "jobbrowser"), Webwindow.JobBrowser.show("jobbrowser"), TempArguments.Jobs = {})
  4174. });
  4175. mp.events.add("requestJob", function(a, b) {
  4176. null != Webwindow.JobBrowser && (Webwindow.JobBrowser.destroy(), mp.gui.chat.show(!0), mp.gui.cursor.show(!1, !1), mp.gui.cursor.visible = !1, "Trucker" == a ? mp.events.callRemote("requestTruckerjob", b) : "Bus" == a ? mp.events.callRemote("requestBusjob", b) : "Trash" == a ? mp.events.callRemote("requestTrash", b) : "Taxi" == a && mp.events.callRemote("requestTaxijob", b), Webwindow.JobBrowser = null)
  4177. });
  4178. mp.events.add("initTaxiWindow", function() {
  4179. null != Webwindow.TaxiWindow && (Webwindow.TaxiWindow.execute('vio._callEvent("taxi:init",' + TempArguments.Taxi["1"] + ");"), TempArguments.Taxi = {})
  4180. });
  4181. mp.events.add("requestCloseJobBrowser", function() {
  4182. null != Webwindow.JobBrowser && (Webwindow.JobBrowser.destroy(), mp.gui.chat.show(!0), mp.gui.cursor.show(!1, !1), mp.gui.cursor.visible = !1, Webwindow.JobBrowser = null)
  4183. });
  4184. var player_lang = 0;
  4185. TempArguments = [];
  4186. Webwindow = [];
  4187. var isPlayerOnBetaServer = !1;
  4188. mainCam = mp.cameras.new("default", new mp.Vector3(-1656.676, 2578.351, 1.28305), new mp.Vector3, 90);
  4189. mainCam.pointAtCoord(-1585.407, 2667.559, 2.166325);
  4190. mainCam.setActive(!0);
  4191. mp.game.cam.renderScriptCams(!0, !1, 0, !0, !1);
  4192. mp.events.add("loginInit", function(a, b) {
  4193. isPlayerOnBetaServer = b;
  4194. disableAllControls = !0;
  4195. TempArguments.Login0 = lang_de.window_login;
  4196. TempArguments.Login1 = a;
  4197. null == Webwindow.Login && (mp.game.graphics.getScreenResolution(), Webwindow.Login = new CEFBrowser("package://viov/client_ui/html/login/login.html", !0), player_lang = "german", mp.game.ui.setRadarBigmapEnabled(!1, !1))
  4198. });
  4199. setInterval(function() {
  4200. null != Webwindow.Login && (mp.gui.cursor.visible = !0)
  4201. }, 2E3);
  4202. mp.events.add("loginCreate", function() {
  4203. disableAllControls = !0;
  4204. mainCam = mp.cameras.new("default", new mp.Vector3(-1656.676, 2578.351, 1.28305), new mp.Vector3, 90);
  4205. mainCam.pointAtCoord(-1585.407, 2667.558, 2.166325);
  4206. mainCam.setActive(!0);
  4207. player_lang = "german";
  4208. mp.gui.chat.activate(!1);
  4209. mp.gui.chat.show(!1);
  4210. mp.gui.cursor.show(!0, !0);
  4211. mp.game.ui.displayHud(!1);
  4212. mp.events.callRemote("requestRegisterLogin", player_lang)
  4213. });
  4214. mp.events.add("killLogin", function() {
  4215. disableAllControls = !1;
  4216. player_lang = "german";
  4217. null != Webwindow.Login && (Webwindow.Login.destroy(), Webwindow.Login = null);
  4218. mp.game.ui.displayHud(!0);
  4219. mp.gui.chat.activate(!0)
  4220. });
  4221. mp.events.add("loginUpdate", function(a, b, c) {
  4222. b ? c ? Webwindow.Login.call("vio._callEvent", "login:showSurvey") : (disableAllControls = !1, player_lang = "german", null != Webwindow.Login && (Webwindow.Login.destroy(), Webwindow.Login = null), mp.game.ui.displayHud(!0), mainCam.setActive(!1), mp.gui.chat.show(!0), isPlayerOnBetaServer ? mp.discord.update("Vio-V Testserver", mp.players.local.name) : mp.discord.update("www.vio-v.com", mp.players.local.name)) : (Webwindow.Login.call("vio._callEvent", "login:update", JSON.parse(a)), mp.gui.cursor.visible = !0)
  4223. });
  4224. var tmpB = void 0;
  4225. mp.events.add("setLoginDestroyed", function() {
  4226. mp.players.local.setMaxHealth(200);
  4227. null != Webwindow.Login && void 0 === creatorCamera ? (login = !0, Webwindow.Login.destroy(), Webwindow.Login = null, disableAllControls = !1, player_lang = "german", moveSkyCamera(mp.players.local, "up", 1, !1), setTimeout(function() {
  4228. mainCam.setActive(!1);
  4229. mainCam.destroy();
  4230. mp.game.ui.displayHud(!0);
  4231. mp.game.cam.renderScriptCams(!1, !1, 0, !0, !1);
  4232. mp.game.ui.setMinimapVisible(!1);
  4233. mp.game.ui.displayRadar(!0)
  4234. }, 1E3), setTimeout(function() {
  4235. moveSkyCamera(mp.players.local, "down",
  4236. 1, !1)
  4237. }, 8E3), isPlayerOnBetaServer ? mp.discord.update("Vio-V Testserver", mp.players.local.name) : mp.discord.update("www.vio-v.com", mp.players.local.name), mp.gui.cursor.visible = !1) : void 0 !== creatorCamera && (login = !0, disableAllControls = !1, Webwindow.Login.destroy(), Webwindow.Login = null, mp.gui.chat.show(!1))
  4238. });
  4239. mp.events.add("playerAccessToken", function(a) {
  4240. accessToken = a;
  4241. login = !0
  4242. });
  4243. mp.events.add("initLoginWindow", function() {
  4244. Webwindow.Login.call("vio._callEvent", "login:init", TempArguments.Login0, TempArguments.Login1);
  4245. TempArguments = {}
  4246. });
  4247. mp.events.add("requestRegister", function(a) {
  4248. mp.events.callRemote("requestRegistration", a)
  4249. });
  4250. mp.events.add("requestLogin", function(a) {
  4251. a = JSON.parse(a);
  4252. mp.events.callRemote("requestLogin", a.username, a.password, "y")
  4253. });
  4254. mp.events.add("registerSurveyResult", function(a) {
  4255. null != Webwindow.Login && (Webwindow.Login.destroy(), Webwindow.Login = null, mp.game.ui.displayHud(!0), mainCam.setActive(!1), disableAllControls = !1, isPlayerOnBetaServer ? mp.discord.update("Vio-V Testserver", mp.players.local.name) : mp.discord.update("www.vio-v.com", mp.players.local.name), mp.events.callRemote("registerSurveyResult", a))
  4256. });
  4257. mp.events.add("pw_forget", function() {
  4258. null != Webwindow.pw_forget ? (Webwindow.pw_forget.destroy(), Webwindow.pw_forget = null) : Webwindow.pw_forget = new CEFBrowser("package://viov/client_ui/html/login/pwforget.html?name\x3d" + mp.players.local.name, !0)
  4259. });
  4260. mp.events.add("pw_forget_close", function() {
  4261. null != Webwindow.pw_forget && (Webwindow.pw_forget.destroy(), Webwindow.pw_forget = null, mp.gui.cursor.visible = !0)
  4262. });
  4263. mp.events.add("openClientLottoWindow", function(a) {
  4264. TempArguments.Lotto = a;
  4265. Webwindow.Lotto = new CEFBrowser("package://viov/client_ui/html/lotto/lotto.html", !0)
  4266. });
  4267. mp.events.add("closeLotto", function() {
  4268. Webwindow.Lotto.destroy();
  4269. Webwindow.Lotto = null
  4270. });
  4271. mp.events.add("initLottoWindow", function() {
  4272. null != Webwindow.Lotto && null != TempArguments.Lotto && (Webwindow.Lotto.call("setState", TempArguments.Lotto), TempArguments.Lotto = null)
  4273. });
  4274. mp.events.add("triggerServer", function(a, b, c, d, e, f, g, h, l, m) {
  4275. "onClientPlayLotto" == a && (mp.events.callRemote("onClientPlayLotto", b, c, d, e, f, g, h, l, m), Webwindow.Lotto.destroy(), Webwindow.Lotto = null)
  4276. });
  4277. var NativeUI = require("nativeui"),
  4278. Data = require("charcreator/data"),
  4279. Menu = NativeUI.Menu,
  4280. UIMenuItem = NativeUI.UIMenuItem,
  4281. UIMenuListItem = NativeUI.UIMenuListItem,
  4282. UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem,
  4283. BadgeStyle = NativeUI.BadgeStyle,
  4284. Point = NativeUI.Point,
  4285. ItemsCollection = NativeUI.ItemsCollection,
  4286. Color = NativeUI.Color,
  4287. creatorCoords = {
  4288. camera: new mp.Vector3(402.8664, -997.5515, -98.5),
  4289. cameraLookAt: new mp.Vector3(402.8664, -996.4108, -98.5)
  4290. },
  4291. localPlayer = mp.players.local;
  4292.  
  4293. function getRandomInt(a, b) {
  4294. return Math.floor(Math.random() * (b - a + 1)) + a
  4295. }
  4296.  
  4297. function colorForOverlayIdx(a) {
  4298. switch (a) {
  4299. case 1:
  4300. a = beardColorItem.Index;
  4301. break;
  4302. case 2:
  4303. a = eyebrowColorItem.Index;
  4304. break;
  4305. case 5:
  4306. a = blushColorItem.Index;
  4307. break;
  4308. case 8:
  4309. a = lipstickColorItem.Index;
  4310. break;
  4311. case 10:
  4312. a = chestHairColorItem.Index;
  4313. break;
  4314. default:
  4315. a = 0
  4316. }
  4317. return a
  4318. }
  4319.  
  4320. function updateParents() {
  4321. localPlayer.setHeadBlendData(Data.mothers[motherItem.Index], Data.fathers[fatherItem.Index], 0, Data.mothers[motherItem.Index], Data.fathers[fatherItem.Index], 0, .01 * similarityItem.Index, .01 * skinSimilarityItem.Index, 0, !1)
  4322. }
  4323.  
  4324. function updateFaceFeature(a) {
  4325. localPlayer.setFaceFeature(a, parseFloat(featureItems[a].SelectedValue))
  4326. }
  4327.  
  4328. function updateAppearance(a) {
  4329. localPlayer.setHeadOverlay(a, 0 == appearanceItems[a].Index ? 255 : appearanceItems[a].Index - 1, .01 * appearanceOpacityItems[a].Index, colorForOverlayIdx(a), 0)
  4330. }
  4331.  
  4332. function updateHairAndColors() {
  4333. localPlayer.setComponentVariation(2, Data.hairList[currentGender][hairItem.Index].ID, 0, 2);
  4334. localPlayer.setHairColor(hairColorItem.Index, hairHighlightItem.Index);
  4335. localPlayer.setEyeColor(eyeColorItem.Index);
  4336. localPlayer.setHeadOverlayColor(1, 1, beardColorItem.Index, 0);
  4337. localPlayer.setHeadOverlayColor(2, 1, eyebrowColorItem.Index, 0);
  4338. localPlayer.setHeadOverlayColor(5, 2, blushColorItem.Index, 0);
  4339. localPlayer.setHeadOverlayColor(8, 2, lipstickColorItem.Index, 0);
  4340. localPlayer.setHeadOverlayColor(10,
  4341. 1, chestHairColorItem.Index, 0)
  4342. }
  4343.  
  4344. function applyCreatorOutfit() {
  4345. 0 == currentGender ? (localPlayer.setDefaultComponentVariation(), localPlayer.setComponentVariation(3, 15, 0, 2), localPlayer.setComponentVariation(4, 21, 0, 2), localPlayer.setComponentVariation(6, 34, 0, 2)) : (localPlayer.setDefaultComponentVariation(), localPlayer.setComponentVariation(3, 15, 0, 2), localPlayer.setComponentVariation(4, 10, 0, 2), localPlayer.setComponentVariation(6, 35, 0, 2));
  4346. localPlayer.setComponentVariation(8, 15, 0, 2);
  4347. localPlayer.setComponentVariation(11, 15, 0, 2)
  4348. }
  4349.  
  4350. function fillHairMenu() {
  4351. hairItem = new UIMenuListItem("Haar", "Das Haar deines Charakters.", new ItemsCollection(Data.hairList[currentGender].map(function(a) {
  4352. return a.Name
  4353. })));
  4354. creatorHairMenu.AddItem(hairItem);
  4355. hairColorItem = new UIMenuListItem("Haarfarbe", "Die Haarfarbe deines Charakters.", new ItemsCollection(hairColors));
  4356. creatorHairMenu.AddItem(hairColorItem);
  4357. hairHighlightItem = new UIMenuListItem("Hair Highlight Color", "Your character's hair highlight color.", new ItemsCollection(hairColors));
  4358. creatorHairMenu.AddItem(hairHighlightItem);
  4359. eyebrowColorItem = new UIMenuListItem("Augenbraue Farbe", "Die Augenbrauenfarbe deines Charakters.", new ItemsCollection(hairColors));
  4360. creatorHairMenu.AddItem(eyebrowColorItem);
  4361. beardColorItem = new UIMenuListItem("Gesichtshaarfarbe", "Die Gesichtshaarfarbe deines Charakters.", new ItemsCollection(hairColors));
  4362. creatorHairMenu.AddItem(beardColorItem);
  4363. eyeColorItem = new UIMenuListItem("Augenfarbe", "Die Augenfarbe deines Charakters", new ItemsCollection(Data.eyeColors));
  4364. creatorHairMenu.AddItem(eyeColorItem);
  4365. blushColorItem =
  4366. new UIMenuListItem("Blush Color", "Your character's blush color.", new ItemsCollection(blushColors));
  4367. creatorHairMenu.AddItem(blushColorItem);
  4368. lipstickColorItem = new UIMenuListItem("Lippenstift-Farbe", "Die Lippenstiftfarbe deines Charakters.", new ItemsCollection(lipstickColors));
  4369. creatorHairMenu.AddItem(lipstickColorItem);
  4370. chestHairColorItem = new UIMenuListItem("Brusthaarfarbe", "Die Brusthaarfarbe deines Charakters.", new ItemsCollection(hairColors));
  4371. creatorHairMenu.AddItem(chestHairColorItem);
  4372. creatorHairMenu.AddItem(new UIMenuItem("Zuf\u00e4llig",
  4373. "~r~Randomizes your hair \x26 colors."));
  4374. creatorHairMenu.AddItem(new UIMenuItem("Zur\u00fccksetzen", "~r~Setzt Ihre Haare und Farben zur\u00fcck."))
  4375. }
  4376.  
  4377. function resetParentsMenu() {
  4378. var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : !1;
  4379. fatherItem.Index = 0;
  4380. motherItem.Index = 0;
  4381. similarityItem.Index = 0 == currentGender ? 100 : 0;
  4382. skinSimilarityItem.Index = 0 == currentGender ? 100 : 0;
  4383. updateParents();
  4384. a && creatorParentsMenu.RefreshIndex()
  4385. }
  4386.  
  4387. function resetFeaturesMenu() {
  4388. for (var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : !1, b = 0; b < Data.featureNames.length; b++) featureItems[b].Index = 100, updateFaceFeature(b);
  4389. a && creatorFeaturesMenu.RefreshIndex()
  4390. }
  4391.  
  4392. function resetAppearanceMenu() {
  4393. for (var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : !1, b = 0; b < Data.appearanceNames.length; b++) appearanceItems[b].Index = 0, appearanceOpacityItems[b].Index = 100, updateAppearance(b);
  4394. a && creatorAppearanceMenu.RefreshIndex()
  4395. }
  4396.  
  4397. function resetHairAndColorsMenu() {
  4398. var a = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : !1;
  4399. hairItem.Index = 0;
  4400. hairColorItem.Index = 0;
  4401. hairHighlightItem.Index = 0;
  4402. eyebrowColorItem.Index = 0;
  4403. beardColorItem.Index = 0;
  4404. eyeColorItem.Index = 0;
  4405. blushColorItem.Index = 0;
  4406. lipstickColorItem.Index = 0;
  4407. chestHairColorItem.Index = 0;
  4408. updateHairAndColors();
  4409. a && creatorHairMenu.RefreshIndex()
  4410. }
  4411. for (var currentGender = 0, creatorMenus = [], creatorCamera, hairColors = [], i = 0; i < Data.maxHairColor; i++) hairColors.push(i.toString());
  4412. for (var blushColors = [], _i = 0; _i < Data.maxBlushColor; _i++) blushColors.push(_i.toString());
  4413. for (var lipstickColors = [], _i2 = 0; _i2 < Data.maxLipstickColor; _i2++) lipstickColors.push(_i2.toString());
  4414. var creatorMainMenu = new Menu("Creator", "", new Point(50, 50)),
  4415. genderItem = new UIMenuListItem("Geschlecht", "~r~Wenn Sie dies \u00e4ndern, wird Ihre Anpassung zur\u00fcckgesetzt.", new ItemsCollection(["Male", "Female"]));
  4416. creatorMainMenu.AddItem(genderItem);
  4417. creatorMainMenu.AddItem(new UIMenuItem("Eltern", "Die Eltern deines Charakters."));
  4418. creatorMainMenu.AddItem(new UIMenuItem("Eigenschaften", "Die Gesichtsz\u00fcge deines Charakters"));
  4419. creatorMainMenu.AddItem(new UIMenuItem("Haare \x26 Farben", "Die Haarfarben deines Charakters."));
  4420. for (var angles = [], _i3 = -180; 180 >= _i3; _i3 += 5) angles.push(_i3.toFixed(1));
  4421. var angleItem = new UIMenuListItem("Angle", "", new ItemsCollection(angles));
  4422. creatorMainMenu.AddItem(angleItem);
  4423. var saveItem = new UIMenuItem("Speichern", "Alle \u00c4nderungen speichern.");
  4424. saveItem.BackColor = new Color(13, 71, 161);
  4425. saveItem.HighlightedBackColor = new Color(25, 118, 210);
  4426. creatorMainMenu.AddItem(saveItem);
  4427. var cancelItem = new UIMenuItem("Abbrechen", "Verwerfen Sie alle \u00c4nderungen.");
  4428. cancelItem.BackColor = new Color(213, 0, 0);
  4429. cancelItem.HighlightedBackColor = new Color(229, 57, 53);
  4430. creatorMainMenu.ListChange.on(function(a, b) {
  4431. a == genderItem ? (currentGender = b, mp.events.callRemote("SetGender", b), setTimeout(function() {
  4432. localPlayer.clearTasksImmediately();
  4433. applyCreatorOutfit();
  4434. angleItem.Index = 0;
  4435. resetParentsMenu(!0);
  4436. resetFeaturesMenu(!0);
  4437. resetAppearanceMenu(!0);
  4438. creatorHairMenu.Clear();
  4439. fillHairMenu();
  4440. creatorHairMenu.RefreshIndex()
  4441. }, 200)) : a == angleItem && (localPlayer.setHeading(parseFloat(angleItem.SelectedValue)), localPlayer.clearTasksImmediately())
  4442. });
  4443. creatorMainMenu.ItemSelect.on(function(a, b) {
  4444. switch (b) {
  4445. case 1:
  4446. creatorMainMenu.Visible = !1;
  4447. creatorParentsMenu.Visible = !0;
  4448. break;
  4449. case 2:
  4450. creatorMainMenu.Visible = !1;
  4451. creatorFeaturesMenu.Visible = !0;
  4452. break;
  4453. case 3:
  4454. creatorMainMenu.Visible = !1;
  4455. creatorHairMenu.Visible = !0;
  4456. break;
  4457. case 5:
  4458. a = Data.fathers[fatherItem.Index];
  4459. b = Data.mothers[motherItem.Index];
  4460. for (var c = .01 * similarityItem.Index, d = .01 * skinSimilarityItem.Index, e = [], f = 0; f < featureItems.length; f++) e.push(parseFloat(featureItems[f].SelectedValue));
  4461. f = [];
  4462. for (var g =
  4463. 0; g < appearanceItems.length; g++) f.push({
  4464. Value: 0 == appearanceItems[g].Index ? 255 : appearanceItems[g].Index - 1,
  4465. Opacity: .01 * appearanceOpacityItems[g].Index
  4466. });
  4467. g = [Data.hairList[currentGender][hairItem.Index].ID, hairColorItem.Index, hairHighlightItem.Index, eyebrowColorItem.Index, beardColorItem.Index, eyeColorItem.Index, blushColorItem.Index, lipstickColorItem.Index, chestHairColorItem.Index];
  4468. mp.events.callRemote("SaveCharacter", currentGender, a, b, c, d, JSON.stringify(e), JSON.stringify(f), JSON.stringify(g));
  4469. break;
  4470. case 6:
  4471. mp.events.callRemote("LeaveCreator")
  4472. }
  4473. });
  4474. creatorMainMenu.MenuClose.on(function() {
  4475. mp.events.callRemote("creator_Leave")
  4476. });
  4477. creatorMainMenu.Visible = !1;
  4478. creatorMenus.push(creatorMainMenu);
  4479. for (var similarities = [], _i6 = 0; 100 >= _i6; _i6++) similarities.push(_i6 + "%");
  4480. var creatorParentsMenu = new Menu("Eltern", "", new Point(50, 50)),
  4481. fatherItem = new UIMenuListItem("Vater", "Der Vater deines Charakters.", new ItemsCollection(Data.fatherNames)),
  4482. motherItem = new UIMenuListItem("Mutter", "Die Mutter deines Charakters.", new ItemsCollection(Data.motherNames)),
  4483. similarityItem = new UIMenuListItem("\u00c4hnlichkeit", "Similarity to parents.\n(lower \x3d feminine, higher \x3d masculine)", new ItemsCollection(similarities)),
  4484. skinSimilarityItem = new UIMenuListItem("Hautfarbe", "Skin color similarity to parents.\n(lower \x3d mother's, higher \x3d father's)",
  4485. new ItemsCollection(similarities));
  4486. creatorParentsMenu.AddItem(fatherItem);
  4487. creatorParentsMenu.AddItem(motherItem);
  4488. creatorParentsMenu.AddItem(similarityItem);
  4489. creatorParentsMenu.AddItem(skinSimilarityItem);
  4490. creatorParentsMenu.AddItem(new UIMenuItem("Zuf\u00e4llig", "~r~Randomizes your parents."));
  4491. creatorParentsMenu.AddItem(new UIMenuItem("Zur\u00fccksetzen", "~r~Setzt deine Eltern zur\u00fcck."));
  4492. creatorParentsMenu.ItemSelect.on(function(a, b) {
  4493. switch (a.Text) {
  4494. case "Zuf\u00e4llig":
  4495. fatherItem.Index = getRandomInt(0, Data.fathers.length - 1);
  4496. motherItem.Index = getRandomInt(0, Data.mothers.length - 1);
  4497. similarityItem.Index = getRandomInt(0, 100);
  4498. skinSimilarityItem.Index = getRandomInt(0, 100);
  4499. updateParents();
  4500. break;
  4501. case "Zur\u00fccksetzen":
  4502. resetParentsMenu()
  4503. }
  4504. });
  4505. creatorParentsMenu.ListChange.on(function(a, b) {
  4506. updateParents()
  4507. });
  4508. creatorParentsMenu.ParentMenu = creatorMainMenu;
  4509. creatorParentsMenu.Visible = !1;
  4510. creatorMenus.push(creatorParentsMenu);
  4511. for (var featureItems = [], features = [], _i7 = -1; 1.01 >= _i7; _i7 += .01) features.push(_i7.toFixed(2));
  4512. for (var creatorFeaturesMenu = new Menu("Eigenschaften", "", new Point(50, 50)), _i8 = 0; _i8 < Data.featureNames.length; _i8++) {
  4513. var tempFeatureItem = new UIMenuListItem(Data.featureNames[_i8], "", new ItemsCollection(features));
  4514. tempFeatureItem.Index = 100;
  4515. featureItems.push(tempFeatureItem);
  4516. creatorFeaturesMenu.AddItem(tempFeatureItem)
  4517. }
  4518. creatorFeaturesMenu.AddItem(new UIMenuItem("Zuf\u00e4llig", "~r~Randomizes your features."));
  4519. creatorFeaturesMenu.AddItem(new UIMenuItem("Zur\u00fccksetzen", "~r~Resets your features."));
  4520. creatorFeaturesMenu.ItemSelect.on(function(a, b) {
  4521. switch (a.Text) {
  4522. case "Zuf\u00e4llig":
  4523. for (a = 0; a < Data.featureNames.length; a++) featureItems[a].Index = getRandomInt(0, 200), updateFaceFeature(a);
  4524. break;
  4525. case "Zur\u00fccksetzen":
  4526. resetFeaturesMenu()
  4527. }
  4528. });
  4529. creatorFeaturesMenu.ListChange.on(function(a, b) {
  4530. updateFaceFeature(featureItems.indexOf(a))
  4531. });
  4532. creatorFeaturesMenu.ParentMenu = creatorMainMenu;
  4533. creatorFeaturesMenu.Visible = !1;
  4534. creatorMenus.push(creatorFeaturesMenu);
  4535. for (var appearanceItems = [], appearanceOpacityItems = [], opacities = [], _i10 = 0; 100 >= _i10; _i10++) opacities.push(_i10 + "%");
  4536. for (var creatorAppearanceMenu = new Menu("Appearance", "", new Point(50, 50)), _i11 = 0; _i11 < Data.appearanceNames.length; _i11++) {
  4537. for (var items = [], j = 0, max = mp.game.ped.getNumHeadOverlayValues(_i11); j <= max; j++) items.push(void 0 === Data.appearanceItemNames[_i11][j] ? j.toString() : Data.appearanceItemNames[_i11][j]);
  4538. var tempAppearanceItem = new UIMenuListItem(Data.appearanceNames[_i11], "", new ItemsCollection(items));
  4539. appearanceItems.push(tempAppearanceItem);
  4540. creatorAppearanceMenu.AddItem(tempAppearanceItem);
  4541. var tempAppearanceOpacityItem =
  4542. new UIMenuListItem(Data.appearanceNames[_i11] + " Opacity", "", new ItemsCollection(opacities));
  4543. tempAppearanceOpacityItem.Index = 100;
  4544. appearanceOpacityItems.push(tempAppearanceOpacityItem);
  4545. creatorAppearanceMenu.AddItem(tempAppearanceOpacityItem)
  4546. }
  4547. creatorAppearanceMenu.AddItem(new UIMenuItem("Zuf\u00e4llig", "~r~Randomizes your appearance."));
  4548. creatorAppearanceMenu.AddItem(new UIMenuItem("Zur\u00fccksetzen", "~r~Resets your appearance."));
  4549. creatorAppearanceMenu.ItemSelect.on(function(a, b) {
  4550. switch (a.Text) {
  4551. case "Zuf\u00e4llig":
  4552. for (a = 0; a < Data.appearanceNames.length; a++) appearanceItems[a].Index = getRandomInt(0, mp.game.ped.getNumHeadOverlayValues(a) - 1), appearanceOpacityItems[a].Index = getRandomInt(0, 100), updateAppearance(a);
  4553. break;
  4554. case "Zur\u00fccksetzen":
  4555. resetAppearanceMenu()
  4556. }
  4557. });
  4558. creatorAppearanceMenu.ListChange.on(function(a, b) {
  4559. updateAppearance(0 == creatorAppearanceMenu.CurrentSelection % 2 ? creatorAppearanceMenu.CurrentSelection / 2 : Math.floor(creatorAppearanceMenu.CurrentSelection / 2))
  4560. });
  4561. creatorAppearanceMenu.ParentMenu = creatorMainMenu;
  4562. creatorAppearanceMenu.Visible = !1;
  4563. creatorMenus.push(creatorAppearanceMenu);
  4564. var hairItem = void 0,
  4565. hairColorItem = void 0,
  4566. hairHighlightItem = void 0,
  4567. eyebrowColorItem = void 0,
  4568. beardColorItem = void 0,
  4569. eyeColorItem = void 0,
  4570. blushColorItem = void 0,
  4571. lipstickColorItem = void 0,
  4572. chestHairColorItem = void 0;
  4573. creatorHairMenu = new Menu("Haare \x26 Farben", "", new Point(50, 50));
  4574. fillHairMenu();
  4575. creatorHairMenu.ItemSelect.on(function(a, b) {
  4576. switch (a.Text) {
  4577. case "Zuf\u00e4llig":
  4578. hairItem.Index = getRandomInt(0, Data.hairList[currentGender].length - 1);
  4579. hairColorItem.Index = getRandomInt(0, Data.maxHairColor);
  4580. hairHighlightItem.Index = getRandomInt(0, Data.maxHairColor);
  4581. eyebrowColorItem.Index = getRandomInt(0, Data.maxHairColor);
  4582. beardColorItem.Index = getRandomInt(0, Data.maxHairColor);
  4583. eyeColorItem.Index = getRandomInt(0, Data.maxEyeColor);
  4584. blushColorItem.Index = getRandomInt(0, Data.maxBlushColor);
  4585. lipstickColorItem.Index =
  4586. getRandomInt(0, Data.maxLipstickColor);
  4587. chestHairColorItem.Index = getRandomInt(0, Data.maxHairColor);
  4588. updateHairAndColors();
  4589. break;
  4590. case "Zur\u00fccksetzen":
  4591. resetHairAndColorsMenu()
  4592. }
  4593. });
  4594. creatorHairMenu.ListChange.on(function(a, b) {
  4595. if (a == hairItem) localPlayer.setComponentVariation(2, Data.hairList[currentGender][b].ID, 0, 2);
  4596. else switch (creatorHairMenu.CurrentSelection) {
  4597. case 1:
  4598. localPlayer.setHairColor(b, hairHighlightItem.Index);
  4599. break;
  4600. case 2:
  4601. localPlayer.setHairColor(hairColorItem.Index, b);
  4602. break;
  4603. case 3:
  4604. localPlayer.setHeadOverlayColor(2, 1, b, 0);
  4605. break;
  4606. case 4:
  4607. localPlayer.setHeadOverlayColor(1, 1, b, 0);
  4608. break;
  4609. case 5:
  4610. localPlayer.setEyeColor(b);
  4611. break;
  4612. case 6:
  4613. localPlayer.setHeadOverlayColor(5, 2, b, 0);
  4614. break;
  4615. case 7:
  4616. localPlayer.setHeadOverlayColor(8, 2, b, 0);
  4617. break;
  4618. case 8:
  4619. localPlayer.setHeadOverlayColor(10, 1, b, 0)
  4620. }
  4621. });
  4622. creatorHairMenu.ParentMenu = creatorMainMenu;
  4623. creatorHairMenu.Visible = !1;
  4624. creatorMenus.push(creatorHairMenu);
  4625. mp.events.add("render", function() {
  4626. void 0 != creatorCamera ? (mp.game.controls.disableControlAction(2, 266, !0), mp.game.controls.disableControlAction(2, 267, !0), mp.game.controls.disableControlAction(2, 268, !0), mp.game.controls.disableControlAction(2, 269, !0), mp.game.controls.disableControlAction(2, 36, !0), mp.game.ui.setPauseMenuActive(!1)) : mp.game.ui.setPauseMenuActive(!0)
  4627. });
  4628. var AddedCancelItem = !1;
  4629. mp.events.add("CreatorCamera", function(a) {
  4630. void 0 === creatorCamera && (mp.game.cam.renderScriptCams(!0, !1, 0, !0, !1), creatorCamera = mp.cameras.new("creatorCamera", creatorCoords.camera, new mp.Vector3(0, 0, 0), 45), creatorCamera.pointAtCoord(creatorCoords.cameraLookAt), creatorCamera.setActive(!0), creatorMainMenu.Visible = !0, mp.gui.chat.show(!1), mp.game.ui.displayRadar(!1), mp.game.ui.displayHud(!1), localPlayer.clearTasksImmediately(), localPlayer.freezePosition(!0), mp.game.cam.renderScriptCams(!0, !1, 0, !0, !1), 0 ==
  4631. AddedCancelItem && 0 == a && (creatorMainMenu.AddItem(cancelItem), AddedCancelItem = !0))
  4632. });
  4633. mp.events.add("DestroyCamera", function() {
  4634. for (var a = 0; a < creatorMenus.length; a++) creatorMenus[a].Visible = !1;
  4635. mp.gui.chat.show(!0);
  4636. mp.game.ui.displayRadar(!0);
  4637. mp.game.ui.displayHud(!0);
  4638. localPlayer.freezePosition(!1);
  4639. creatorCamera = void 0;
  4640. mp.game.cam.renderScriptCams(!1, !1, 0, !0, !1);
  4641. creatorMainMenu.Visible = !1
  4642. });
  4643. mp.events.add("UpdateCreator", function() {
  4644. charData = JSON.parse(0 >= arguments.length ? void 0 : arguments[0]);
  4645. currentGender = charData.Gender;
  4646. genderItem.Index = charData.Gender;
  4647. creatorHairMenu.Clear();
  4648. fillHairMenu();
  4649. applyCreatorOutfit();
  4650. fatherItem.Index = Data.fathers.indexOf(charData.Parents.Father);
  4651. motherItem.Index = Data.mothers.indexOf(charData.Parents.Mother);
  4652. similarityItem.Index = parseInt(100 * charData.Parents.Similarity);
  4653. skinSimilarityItem.Index = parseInt(100 * charData.Parents.SkinSimilarity);
  4654. updateParents();
  4655. for (var a = 0; a < charData.Features.length; a++) featureItems[a].Index = 100 * charData.Features[a] + 100, updateFaceFeature(a);
  4656. a = Data.hairList[currentGender].find(function(a) {
  4657. return a.ID == charData.Hair.Hair
  4658. });
  4659. hairItem.Index = Data.hairList[currentGender].indexOf(a);
  4660. hairColorItem.Index = charData.Hair.Color;
  4661. hairHighlightItem.Index = charData.Hair.HighlightColor;
  4662. eyebrowColorItem.Index = charData.EyebrowColor;
  4663. beardColorItem.Index = charData.BeardColor;
  4664. eyeColorItem.Index = charData.EyeColor;
  4665. blushColorItem.Index = charData.BlushColor;
  4666. lipstickColorItem.Index = charData.LipstickColor;
  4667. chestHairColorItem.Index = charData.ChestHairColor;
  4668. updateHairAndColors();
  4669. for (a = 0; a < charData.Appearance.length; a++) appearanceItems[a].Index = 255 == charData.Appearance[a].Value ? 0 : charData.Appearance[a].Value + 1, appearanceOpacityItems[a].Index = 100 * charData.Appearance[a].Opacity, updateAppearance(a)
  4670. });
  4671. mp.keys.bind(27, !1, function() {
  4672. creatorCamera && (creatorMainMenu.Visible = !0)
  4673. });
  4674. mp.keys.bind(8, !1, function() {
  4675. creatorCamera && (creatorMainMenu.Visible = !0)
  4676. });
  4677.  
  4678. function inside(a, b) {
  4679. var c = a[0];
  4680. a = a[1];
  4681. for (var d = !1, e = 0, f = b.length - 1; e < b.length; f = e++) {
  4682. var g = b[e][0],
  4683. h = b[e][1],
  4684. l = b[f][0];
  4685. f = b[f][1];
  4686. h > a != f > a && c < (l - g) * (a - h) / (f - h) + g && (d = !d)
  4687. }
  4688. return d
  4689. }
  4690. var Gangturf = function() {
  4691. function a(b, c, d, e, f, g, h, l, m) {
  4692. _classCallCheck(this, a);
  4693. this._setup(b, c, d, e, f, g, h, l, m)
  4694. }
  4695. _createClass(a, [{
  4696. key: "_setup",
  4697. value: function(a, c, d, e, f, g, h, l, m) {
  4698. this.name = a;
  4699. this.id = c;
  4700. this.range = g;
  4701. this.color = h;
  4702. this.position = {
  4703. x: d,
  4704. y: e,
  4705. z: f
  4706. };
  4707. this.rotation = l;
  4708. this._colshape = this.blip = null;
  4709. this._status = !0;
  4710. this._inColshape = this._isEntering = this._entered = !1;
  4711. this._timerCheck;
  4712. this._owner = m;
  4713. this.loadArea()
  4714. }
  4715. }, {
  4716. key: "loadArea",
  4717. value: function() {
  4718. this.blip = mp.game.ui.addBlipForRadius(this.position.x, this.position.y,
  4719. this.position.z, this.range);
  4720. natives.SET_BLIP_SPRITE(this.blip, 5);
  4721. natives.SET_BLIP_ALPHA(this.blip, 170);
  4722. this._colshape = mp.colshapes.newCircle(this.position.x, this.position.y, 1.5 * this.range);
  4723. natives.SET_BLIP_COLOUR(this.blip, this.color)
  4724. }
  4725. }, {
  4726. key: "render",
  4727. value: function() {
  4728. this.blip && (natives.SET_BLIP_ROTATION(this.blip, this.rotation), natives.SET_BLIP_COORDS(this.blip, this.position.x, this.position.y, this.position.z))
  4729. }
  4730. }, {
  4731. key: "updateArea",
  4732. value: function(a) {
  4733. "attack" == a ? (this._status = "attack", natives.SET_BLIP_FLASHES(this.blip, !0)) : "normal" == a ? (this._status = "normal", natives.SET_BLIP_FLASHES(this.blip, !1)) : "conquered" == a && (this._status = "conquered", this._owner = 2 >= arguments.length ? void 0 : arguments[2], natives.SET_BLIP_FLASHES(this.blip, !1), natives.SET_BLIP_COLOUR(this.blip, 1 >= arguments.length ? void 0 : arguments[1]))
  4734. }
  4735. }, {
  4736. key: "destroy",
  4737. value: function() {
  4738. mp.game.ui.removeBlip(this.blip);
  4739. this._colshape.destroy()
  4740. }
  4741. }, {
  4742. key: "isTurfArea",
  4743. value: function(a) {
  4744. return a == this._colshape
  4745. }
  4746. }, {
  4747. key: "isOwner",
  4748. value: function(a) {
  4749. return a == this._owner
  4750. }
  4751. }, {
  4752. key: "check",
  4753. value: function() {
  4754. this._entered ? 1 != this._entered || this.isInsideArea() && 0 != this.isNearGround() || (this._entered = !1, mp.events.call("OnClientGangAreaLeave", this), mp.events.callRemote("OnClientGangAreaLeave", this.id)) : this.isInsideArea() && 1 == this.isNearGround() && (this._entered = !0, mp.events.call("OnClientGangAreaEnter", this), mp.events.callRemote("OnClientGangAreaEnter", this.id))
  4755. }
  4756. }, {
  4757. key: "enter",
  4758. value: function() {
  4759. var a = this;
  4760. a._timerCheck = setInterval(function() {
  4761. a.check()
  4762. }, 1E3)
  4763. }
  4764. }, {
  4765. key: "leave",
  4766. value: function() {
  4767. clearInterval(this._timerCheck);
  4768. this.check()
  4769. }
  4770. }, {
  4771. key: "isNearGround",
  4772. value: function() {
  4773. var a = mp.game.gameplay.getGroundZFor3dCoord(this.position.x, this.position.y, 9E3, 0, !1);
  4774. return 75 >= mp.game.system.vdist(0, 0, a, 0, 0, mp.players.local.position.z) ? !0 : !1
  4775. }
  4776. }, {
  4777. key: "isInsideArea",
  4778. value: function() {
  4779. var a = mp.players.local.position.x,
  4780. c = mp.players.local.position.y,
  4781. d = Math.sqrt(1.44 * this.range * this.range + 1.2 * this.range / 2 * (1.2 * this.range / 2)),
  4782. e = Math.PI / 180 * (this.rotation + 45),
  4783. f = this.position.x + d * Math.cos(e),
  4784. g = this.position.y + d * Math.sin(e);
  4785. e = Math.PI /
  4786. 180 * (this.rotation + 135);
  4787. var h = this.position.x + d * Math.cos(e),
  4788. l = this.position.y + d * Math.sin(e);
  4789. e = Math.PI / 180 * (this.rotation + 225);
  4790. var m = this.position.x + d * Math.cos(e),
  4791. n = this.position.y + d * Math.sin(e);
  4792. e = Math.PI / 180 * (this.rotation + 315);
  4793. return inside([a, c], [
  4794. [f, g],
  4795. [h, l],
  4796. [m, n],
  4797. [this.position.x + d * Math.cos(e), this.position.y + d * Math.sin(e)]
  4798. ]) ? !0 : !1
  4799. }
  4800. }, {
  4801. key: "status",
  4802. get: function() {}
  4803. }]);
  4804. return a
  4805. }(),
  4806. TurfDisplay = new(function() {
  4807. function a() {
  4808. _classCallCheck(this, a);
  4809. this._setup()
  4810. }
  4811. _createClass(a, [{
  4812. key: "_setup",
  4813. value: function() {
  4814. this._curArea =
  4815. "";
  4816. this._area = null;
  4817. this._curPointsPositive = 50;
  4818. this._curPointsNegative = 150;
  4819. this._turfScores = []
  4820. }
  4821. }, {
  4822. key: "setTurfScores",
  4823. value: function(a, c, d) {
  4824. this._turfScores[a] = {
  4825. attacker: c,
  4826. defender: d
  4827. }
  4828. }
  4829. }, {
  4830. key: "clearTurfScores",
  4831. value: function(a) {
  4832. this._turfScores[a] = null;
  4833. delete this._turfScores[a]
  4834. }
  4835. }, {
  4836. key: "setCurrentArea",
  4837. value: function(a) {
  4838. this._area = a
  4839. }
  4840. }, {
  4841. key: "render",
  4842. value: function() {
  4843. if (null != this._area && this._area.isInsideArea()) {
  4844. var a = this._area.id;
  4845. if (this._turfScores[a]) {
  4846. var c = this._turfScores[a].attacker;
  4847. a = this._turfScores[a].defender;
  4848. mp.game.graphics.drawRect(.225, .959, .12, .06, 0, 0, 0, 100);
  4849. mp.game.graphics.drawRect(.225, .97, .11, .022, 0, 0, 0, 100);
  4850. var d = .00055 * a,
  4851. e = .17 + d / 2;
  4852. mp.game.graphics.drawRect(e, .97, d, .022, 150, 0, 0, 100);
  4853. var f = .00055 * c;
  4854. d = .17 + f / 2 + d;
  4855. mp.game.graphics.drawRect(d, .97, f, .022, 0, 150, 0, 100);
  4856. mp.game.graphics.drawText(this._area.name, [.225, .933], {
  4857. font: 0,
  4858. color: [255, 255, 255, 255],
  4859. scale: [.27, .27],
  4860. outline: !0,
  4861. centre: !0
  4862. });
  4863. 10 < c && mp.game.graphics.drawText(c, [d, .962], {
  4864. font: 0,
  4865. color: [255, 255, 255, 150],
  4866. scale: [.2, .2],
  4867. outline: !0,
  4868. centre: !0
  4869. });
  4870. 10 < a && mp.game.graphics.drawText(a, [e, .962], {
  4871. font: 0,
  4872. color: [255, 255, 255, 150],
  4873. scale: [.2, .2],
  4874. outline: !0,
  4875. centre: !0
  4876. })
  4877. }
  4878. }
  4879. }
  4880. }]);
  4881. return a
  4882. }()),
  4883. gangturfs = [];
  4884. mp.events.add("playerEnterColshape", function(a) {
  4885. var b = void 0;
  4886. gangturfs.forEach(function(c, d) {
  4887. 1 == c.isTurfArea(a) && (b = c)
  4888. });
  4889. b && b.isTurfArea(a) && b.enter()
  4890. });
  4891. mp.events.add("playerExitColshape", function(a) {
  4892. var b = void 0;
  4893. gangturfs.forEach(function(c, d) {
  4894. 1 == c.isTurfArea(a) && (b = c)
  4895. });
  4896. b && b.isTurfArea(a) && b.leave()
  4897. });
  4898. mp.events.add("render", function() {
  4899. gangturfs.forEach(function(a, b) {
  4900. a.render()
  4901. });
  4902. GangwarScoreboard.render()
  4903. });
  4904. mp.events.add("CreateGangAreas", function(a) {
  4905. natives.SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT(!0);
  4906. for (var b = natives.GET_FIRST_BLIP_INFO_ID(5); natives.DOES_BLIP_EXIST(b);) mp.game.ui.removeBlip(b), b = natives.GET_NEXT_BLIP_INFO_ID(5);
  4907. mp.game.wait(50);
  4908. a = JSON.parse(a);
  4909. for (k in a) b = a[k], gangturfs[gangturfs.length + 1] = new Gangturf(b.Name, b.ID, b.Position.x, b.Position.y, b.Position.z, b.Range, b.Color, b.Rotation, b.OwnerID)
  4910. });
  4911. mp.events.add("initGangwarScoreboard", function() {
  4912. null != GangwarScoreboard.window && GangwarScoreboard.windowReady()
  4913. });
  4914. var GangwarScoreboard = new(function() {
  4915. function a() {
  4916. _classCallCheck(this, a);
  4917. this._setup()
  4918. }
  4919. _createClass(a, [{
  4920. key: "_setup",
  4921. value: function() {
  4922. this._curArea = "";
  4923. this._area = null;
  4924. this._turfScores = [];
  4925. this._window = null;
  4926. this._isShowing = this._windowReady = !1
  4927. }
  4928. }, {
  4929. key: "windowReady",
  4930. value: function() {
  4931. this._windowReady = !0;
  4932. if (null != this._area && this._area.isInsideArea()) {
  4933. var a = this._turfScores[this._area.id];
  4934. null != a && null != this._window && 1 == this._windowReady && this._window.call("loadGangwarScoreboard", a.attacker, a.defender,
  4935. a.attacker_member, a.defender_member, !a.isDefending)
  4936. }
  4937. }
  4938. }, {
  4939. key: "createScoreboard",
  4940. value: function() {
  4941. null == this._window && (this._window = new CEFBrowser("package://viov/client_ui/html/gangwar_display/index.html", !1))
  4942. }
  4943. }, {
  4944. key: "destroyScoreboard",
  4945. value: function() {}
  4946. }, {
  4947. key: "setTurfScores",
  4948. value: function(a, c, d, e, f, g) {
  4949. 0 == Object.keys(this._turfScores).length && this.createScoreboard();
  4950. this._turfScores[a] = {
  4951. attacker: d,
  4952. defender: e,
  4953. isDefending: c,
  4954. attacker_member: JSON.parse(f),
  4955. defender_member: JSON.parse(g)
  4956. };
  4957. null != this._area &&
  4958. this._area.isInsideArea() && (a = this._turfScores[a], null != a && null != this._window && 1 == this._windowReady && this._window.call("loadGangwarScoreboard", a.attacker, a.defender, a.attacker_member, a.defender_member, !a.isDefending))
  4959. }
  4960. }, {
  4961. key: "clearTurfScores",
  4962. value: function(a) {
  4963. this._turfScores[a] = null;
  4964. delete this._turfScores[a];
  4965. this._window && 0 == Object.keys(this._turfScores).length && (this._window.destroy(), this._window = null, this._windowReady = !1)
  4966. }
  4967. }, {
  4968. key: "setCurrentArea",
  4969. value: function(a) {
  4970. this._area = a;
  4971. null != this._area ?
  4972. (a = this._turfScores[this._area.id], null != a && null != this._window && 1 == this._windowReady && this._window.call("loadGangwarScoreboard", a.attacker, a.defender, a.attacker_member, a.defender_member, !a.isDefending)) : (this._isShowing = !1, null != this._window && 1 == this._windowReady && this._window.call("hideGangwarScoreboard"))
  4973. }
  4974. }, {
  4975. key: "render",
  4976. value: function() {
  4977. null != this._area && this._area.isInsideArea() && this._turfScores[this._area.id] && null != this._window && 1 == this._windowReady && (mp.keys.isDown(89) ? (0 == this._isShowing &&
  4978. (this._isShowing = !0, this._window.call("showGangwarScoreboard")), mp.game.controls.disableControlAction(2, 99, !0), mp.game.controls.disableControlAction(2, 100, !0), mp.game.controls.disableControlAction(2, 115, !0), mp.game.controls.disableControlAction(2, 116, !0), mp.game.controls.disableControlAction(2, 85, !0), mp.game.controls.disableControlAction(2, 16, !0), mp.game.controls.disableControlAction(2, 17, !0), mp.game.controls.isDisabledControlJustPressed(2, 16) ? this._window.call("scrollDown") : mp.game.controls.isDisabledControlJustPressed(2,
  4979. 17) && this._window.call("scrollUp")) : 1 == this._isShowing && (this._isShowing = !1, this._window.call("hideGangwarScoreboard")))
  4980. }
  4981. }, {
  4982. key: "shouldDisplayGangwarScoreboard",
  4983. value: function() {
  4984. return null != this._area ? this._area.isInsideArea() ? this._turfScores[this._area.id] ? null != this._window && 1 == this._windowReady ? !0 : !1 : !1 : !1 : !1
  4985. }
  4986. }, {
  4987. key: "window",
  4988. get: function() {
  4989. return this._window
  4990. }
  4991. }]);
  4992. return a
  4993. }());
  4994. mp.events.add("OnClientGangAreaEnter", function(a) {
  4995. GangwarScoreboard.setCurrentArea(a)
  4996. });
  4997. mp.events.add("OnClientGangAreaLeave", function(a) {
  4998. GangwarScoreboard.setCurrentArea(null)
  4999. });
  5000. mp.events.add("OnGangAreaUpdate", function(a, b, c, d, e, f, g) {
  5001. var h = void 0;
  5002. gangturfs.forEach(function(b) {
  5003. a == b.id && (h = b)
  5004. });
  5005. h && (GangwarScoreboard.setTurfScores(h.id, h.isOwner(LocalGroupID), b, c, f, g), h.updateArea("attack"))
  5006. });
  5007. mp.events.add("OnGangAreaFinish", function(a, b, c) {
  5008. var d = void 0;
  5009. gangturfs.forEach(function(b) {
  5010. a == b.id && (d = b)
  5011. });
  5012. d && (d.updateArea("conquered", b, c), GangwarScoreboard.clearTurfScores(a))
  5013. });
  5014. mp.events.add("ClientRequestCloseGangwarSlots", function() {
  5015. null != Webwindow.GangwarSlots && (Webwindow.GangwarSlots.active(!1), setTimeout(function() {
  5016. Webwindow.GangwarSlots.destroy();
  5017. Webwindow.GangwarSlots = null;
  5018. TempArguments.GangwarSlotsData = null
  5019. }, 10))
  5020. });
  5021. mp.events.add("ClientRequestSaveGangwarSlots", function(a, b) {
  5022. null != Webwindow.GangwarSlots && (Webwindow.GangwarSlots.active(!1), setTimeout(function() {
  5023. Webwindow.GangwarSlots.destroy();
  5024. Webwindow.GangwarSlots = null;
  5025. TempArguments.GangwarSlotsData = null;
  5026. var c = JSON.parse(b).join(",");
  5027. mp.events.callRemote("OnClientRequestGangOwnerAdd", a, c)
  5028. }, 10))
  5029. });
  5030. mp.events.add("initGangwarSetWindow", function() {
  5031. if (null != Webwindow.GangwarSlots) {
  5032. var a = TempArguments.GangwarSlotsData;
  5033. null != a && Webwindow.GangwarSlots.call("loadGangwarData", a.id, a.members, a.counter, a.set_members)
  5034. }
  5035. });
  5036. mp.events.add("OnPlayerOpenedGangOwnerWindow", function(a, b, c, d) {
  5037. Webwindow.GangwarSlots = new CEFBrowser("package://viov/client_ui/html/gangwar_set/index.html", !0);
  5038. TempArguments.GangwarSlotsData = {
  5039. members: JSON.parse(a),
  5040. id: b,
  5041. counter: c,
  5042. set_members: JSON.parse(d)
  5043. }
  5044. });
  5045. var scoreboard = {
  5046. scroll: 0,
  5047. players: [],
  5048. max_visible_players: 20,
  5049. initialized: 0,
  5050. timer: null,
  5051. draw: function() {
  5052. var a = this;
  5053. 0 == a.initialized && (a.initialized = 1);
  5054. if (mp.keys.isDown(89) && 0 == mp.gui.cursor.visible && 0 == GangwarScoreboard.shouldDisplayGangwarScoreboard()) {
  5055. mp.game.graphics.clearDrawOrigin();
  5056. mp.game.controls.disableControlAction(2, 99, !0);
  5057. mp.game.controls.disableControlAction(2, 100, !0);
  5058. mp.game.controls.disableControlAction(2, 115, !0);
  5059. mp.game.controls.disableControlAction(2, 116, !0);
  5060. mp.game.controls.disableControlAction(2,
  5061. 85, !0);
  5062. mp.game.controls.disableControlAction(2, 16, !0);
  5063. mp.game.controls.disableControlAction(2, 17, !0);
  5064. var b = a.players.length;
  5065. b > a.max_visible_players && (b = a.max_visible_players);
  5066. mp.game.graphics.drawRect(.5, .48, .42, .6, 5, 5, 5, 150);
  5067. b < a.players.length && a.players.length >= a.max_visible_players && (mp.game.controls.isDisabledControlJustPressed(2, 16) ? a.scroll = a.scroll + 1 >= a.players.length - a.max_visible_players ? a.players.length - a.max_visible_players : a.scroll + 1 : mp.game.controls.isDisabledControlJustPressed(2, 17) &&
  5068. (a.scroll = 0 >= a.scroll - 1 ? 0 : a.scroll - 1), mp.game.graphics.drawRect(.7, .48, .02, .6, 30, 30, 30, 187), b = .6 / (a.players.length + 1 - b), mp.game.graphics.drawRect(.7, .18 + b / 2 + a.scroll * b, .02, b, 120, 120, 120, 187));
  5069. mp.game.graphics.drawText("Name", [.36, .19], {
  5070. font: 0,
  5071. color: [255, 255, 255, 255],
  5072. scale: [.4, .4],
  5073. outline: !1
  5074. });
  5075. mp.game.graphics.drawText("Gruppe", [.47, .19], {
  5076. font: 0,
  5077. color: [255, 255, 255, 255],
  5078. scale: [.4, .4],
  5079. outline: !1
  5080. });
  5081. mp.game.graphics.drawText("Spielzeit", [.57, .19], {
  5082. font: 0,
  5083. color: [255, 255, 255, 255],
  5084. scale: [.4, .4],
  5085. outline: !1
  5086. });
  5087. mp.game.graphics.drawText("Ping", [.66, .19], {
  5088. font: 0,
  5089. color: [255, 255, 255, 255],
  5090. scale: [.4, .4],
  5091. outline: !1
  5092. });
  5093. var c = 0;
  5094. a.players.forEach(function(b, e) {
  5095. e < a.scroll + a.max_visible_players && e >= a.scroll && (c += 1, mp.game.graphics.drawText(b.name, [.36, .21 + .026 * c], {
  5096. font: 0,
  5097. color: [255, 255, 255, 255],
  5098. scale: [.3, .3],
  5099. outline: !1,
  5100. centre: !1
  5101. }), mp.game.graphics.drawText(b.group, [.47, .21 + .026 * c], {
  5102. font: 0,
  5103. color: [255, 255, 255, 255],
  5104. scale: [.3, .3],
  5105. outline: !1,
  5106. centre: !1
  5107. }), mp.game.graphics.drawText(b.playtime, [.57, .21 + .026 * c], {
  5108. font: 0,
  5109. color: [255,
  5110. 255, 255, 255
  5111. ],
  5112. scale: [.3, .3],
  5113. outline: !1,
  5114. centre: !1
  5115. }), e = [255, 255, 255, 255], 80 >= b.ping && (e = [39, 209, 33, 255]), 80 < b.ping && (e = [238, 91, 13, 255]), 100 < b.ping && (e = [230, 50, 50, 255]), mp.game.graphics.drawText(b.ping, [.66, .21 + .026 * c], {
  5116. font: 0,
  5117. color: e,
  5118. scale: [.3, .3],
  5119. outline: !1,
  5120. centre: !1
  5121. }))
  5122. })
  5123. }
  5124. }
  5125. };
  5126. mp.events.add("render", function() {
  5127. scoreboard.draw()
  5128. });
  5129. mp.events.add("giveRequestedPlayerListDatas", function() {
  5130. scoreboard.players = [];
  5131. isPlayerOnBetaServer ? mp.discord.update("Vio-V Testserver", mp.players.local.name) : mp.discord.update("www.vio-v.com", mp.players.local.name);
  5132. for (var a = arguments.length, b = Array(a), c = 0; c < a; c++) b[c] = arguments[c];
  5133. 0 == IsLocalPlayerInCasino && mp.game.time.setClockTime(b[4], b[5], 0);
  5134. for (a = 0; a < b[1].length; a++) {
  5135. c = {
  5136. name: b[0][a],
  5137. playtime: b[1][a],
  5138. group: b[2][a],
  5139. ping: b[3][a]
  5140. };
  5141. if (!isNaN(b[1][a])) {
  5142. var d = c.playtime % 60;
  5143. c.playtime = Math.floor(c.playtime /
  5144. 60) + ":" + (10 > d ? "0" + d : d)
  5145. }
  5146. scoreboard.players.push(c)
  5147. }
  5148. scoreboard.players = scoreboard.players.sort(function(a, b) {
  5149. return "verbindet ..." == a.group && "verbindet ..." == b.group ? a.name > b.name ? 1 : -1 : "verbindet ..." == a.group ? 1 : "verbindet ..." == b.group ? -1 : "-" == a.group && "-" == b.group ? a.name > b.name ? 1 : -1 : "-" == a.group ? -1 : "-" == b.group ? 1 : a.group > b.group ? 1 : -1
  5150. });
  5151. mp.events.call("onScoreboardUpdate", scoreboard.players)
  5152. });
  5153. var player_bones = {
  5154. SKEL_L_UpperArm: {
  5155. bone_id: 45509,
  5156. threshold: .08,
  5157. offset: {
  5158. x: 0,
  5159. y: 0,
  5160. z: 0
  5161. }
  5162. },
  5163. SKEL_R_UpperArm: {
  5164. bone_id: 40269,
  5165. threshold: .08,
  5166. offset: {
  5167. x: 0,
  5168. y: 0,
  5169. z: 0
  5170. }
  5171. },
  5172. SKEL_L_Forearm: {
  5173. bone_id: 61163,
  5174. threshold: .08,
  5175. offset: {
  5176. x: 0,
  5177. y: 0,
  5178. z: 0
  5179. }
  5180. },
  5181. SKEL_R_Forearm: {
  5182. bone_id: 28252,
  5183. threshold: .08,
  5184. offset: {
  5185. x: 0,
  5186. y: 0,
  5187. z: 0
  5188. }
  5189. },
  5190. SKEL_Head: {
  5191. bone_id: 31086,
  5192. threshold: .15,
  5193. offset: {
  5194. x: 0,
  5195. y: 0,
  5196. z: 0
  5197. }
  5198. },
  5199. SKEL_R_Hand: {
  5200. bone_id: 57005,
  5201. threshold: .06,
  5202. offset: {
  5203. x: 0,
  5204. y: 0,
  5205. z: 0
  5206. }
  5207. },
  5208. SKEL_L_Hand: {
  5209. bone_id: 18905,
  5210. threshold: .06,
  5211. offset: {
  5212. x: 0,
  5213. y: 0,
  5214. z: .05
  5215. }
  5216. },
  5217. SKEL_R_Clavicle: {
  5218. bone_id: 10706,
  5219. threshold: .1,
  5220. offset: {
  5221. x: 0,
  5222. y: 0,
  5223. z: 0
  5224. }
  5225. },
  5226. SKEL_L_Clavicle: {
  5227. bone_id: 64729,
  5228. threshold: .1,
  5229. offset: {
  5230. x: 0,
  5231. y: 0,
  5232. z: 0
  5233. }
  5234. },
  5235. SKEL_Spine0: {
  5236. bone_id: 23553,
  5237. threshold: .15,
  5238. offset: {
  5239. x: 0,
  5240. y: 0,
  5241. z: 0
  5242. }
  5243. },
  5244. SKEL_Spine1: {
  5245. bone_id: 24816,
  5246. threshold: .15,
  5247. offset: {
  5248. x: 0,
  5249. y: 0,
  5250. z: 0
  5251. }
  5252. },
  5253. SKEL_Spine2: {
  5254. bone_id: 24817,
  5255. threshold: .15,
  5256. offset: {
  5257. x: 0,
  5258. y: 0,
  5259. z: 0
  5260. }
  5261. },
  5262. SKEL_Spine3: {
  5263. bone_id: 24818,
  5264. threshold: .15,
  5265. offset: {
  5266. x: 0,
  5267. y: 0,
  5268. z: 0
  5269. }
  5270. },
  5271. SKEL_R_Calf: {
  5272. bone_id: 36864,
  5273. threshold: .08,
  5274. offset: {
  5275. x: 0,
  5276. y: 0,
  5277. z: 0
  5278. }
  5279. },
  5280. SKEL_L_Calf: {
  5281. bone_id: 63931,
  5282. threshold: .08,
  5283. offset: {
  5284. x: 0,
  5285. y: 0,
  5286. z: 0
  5287. }
  5288. },
  5289. SKEL_L_Thigh: {
  5290. bone_id: 58271,
  5291. threshold: .08,
  5292. offset: {
  5293. x: 0,
  5294. y: 0,
  5295. z: 0
  5296. }
  5297. },
  5298. SKEL_R_Thigh: {
  5299. bone_id: 51826,
  5300. threshold: .08,
  5301. offset: {
  5302. x: 0,
  5303. y: 0,
  5304. z: 0
  5305. }
  5306. },
  5307. SKEL_R_Foot: {
  5308. bone_id: 52301,
  5309. threshold: .08,
  5310. offset: {
  5311. x: 0,
  5312. y: 0,
  5313. z: 0
  5314. }
  5315. },
  5316. SKEL_L_Foot: {
  5317. bone_id: 14201,
  5318. threshold: .08,
  5319. offset: {
  5320. x: 0,
  5321. y: 0,
  5322. z: 0
  5323. }
  5324. }
  5325. };
  5326.  
  5327. function getVehiclePassangerEntityFromPosition(a, b) {
  5328. var c = [];
  5329. mp.players.forEachInStreamRange(function(a) {
  5330. a.vehicle == b && c.push(a)
  5331. });
  5332. var d = {
  5333. dist: 9999,
  5334. target: null
  5335. };
  5336. c.forEach(function(b) {
  5337. var c = b.position;
  5338. c = mp.game.system.vdist2(a.x, a.y, a.z, c.x, c.y, c.z);
  5339. c < d.dist && (d.dist = c, d.target = b)
  5340. });
  5341. return d
  5342. }
  5343.  
  5344. function getIsHitOnBone(a, b) {
  5345. var c = "",
  5346. d = 99;
  5347. if (null != b)
  5348. for (var e in player_bones) {
  5349. var f = player_bones[e].bone_id,
  5350. g = player_bones[e].offset,
  5351. h = player_bones[e].threshold,
  5352. l = mp.players.local.getBoneCoords(12844, 0, 0, 0);
  5353. f = b.getBoneCoords(f, g.x, g.y, g.z);
  5354. mp.raycasting.testPointToPoint(a, f, mp.players.local, 2);
  5355. if (1.6 > mp.game.system.vdist(a.x, a.y, a.z, f.x, f.y, f.z)) {
  5356. g = new mp.Vector3(a.x - l.x, a.y - l.y, a.z - l.z);
  5357. var m = mp.game.system.vdist(a.x, a.y, a.z, l.x, l.y, l.z);
  5358. g = g.normalize(m);
  5359. m = mp.game.system.vdist(f.x, f.y, f.z, l.x,
  5360. l.y, l.z);
  5361. g = g.multiply(m);
  5362. l = mp.game.system.vdist(f.x, f.y, f.z, l.x + g.x, l.y + g.y, l.z + g.z);
  5363. d > l && l <= h && (c = e, d = l)
  5364. }
  5365. }
  5366. return {
  5367. hit: "" != c ? !0 : !1,
  5368. bone: c,
  5369. dist: d
  5370. }
  5371. }
  5372. var shotgunSpreadData = {
  5373. 487013001: {
  5374. spray: 1.5,
  5375. max_dist: 25
  5376. }
  5377. };
  5378.  
  5379. function getWeaponDetails(a) {
  5380. return shotgunSpreadData[a] ? shotgunSpreadData[a] : {
  5381. spray: 1.5,
  5382. max_dist: 25
  5383. }
  5384. }
  5385.  
  5386. function isWallbugging(a) {
  5387. var b = mp.players.local.getBoneCoords(40269, 0, 0, 0);
  5388. if (a = mp.raycasting.testPointToPoint(a, b, mp.players.local, 19)) {
  5389. a = a.position;
  5390. var c = new mp.Vector3(a.x - b.x, a.y - b.y, a.z - b.z);
  5391. b = mp.game.system.vdist(a.x, a.y, a.z, b.x, b.y, b.z);
  5392. c = c.normalize(b / 2).multiply(b / 2);
  5393. b = new mp.Vector3(a.x + c.x, a.y + c.y, a.z + c.z);
  5394. c = new mp.Vector3(a.x - c.x, a.y - c.y, a.z - c.z);
  5395. a = mp.raycasting.testPointToPoint(b, c, mp.players.local, 19);
  5396. b = mp.raycasting.testPointToPoint(c, b, mp.players.local, 19);
  5397. return a && b ? .45 > mp.game.system.vdist(a.position.x,
  5398. a.position.y, a.position.z, b.position.x, b.position.y, b.position.z) ? !1 : !0 : !0
  5399. }
  5400. return !1
  5401. }
  5402.  
  5403. function calculateShotgunPelletsOnPlayers() {
  5404. var a = null,
  5405. b = mp.players.local.getBoneCoords(57005, 0, 0, 0),
  5406. c = mp.players.local.aimingAt;
  5407. mp.raycasting.testPointToPoint(c, b, mp.players.local, 19) || mp.players.forEachInStreamRange(function(d) {
  5408. if (mp.players.local != d) {
  5409. var e = d.getWorldPositionOfBone(d.getBoneIndexByName("IK_Head"));
  5410. if (!mp.raycasting.testPointToPoint(b, e, mp.players.local, 19)) {
  5411. var f = mp.players.local.getBoneCoords(12844, 0, 0, 0),
  5412. g = new mp.Vector3(c.x - f.x, c.y - f.y, c.z - f.z),
  5413. h = mp.game.system.vdist(c.x, c.y,
  5414. c.z, f.x, f.y, f.z);
  5415. g = g.normalize(h);
  5416. h = mp.game.system.vdist(e.x, e.y, e.z, f.x, f.y, f.z);
  5417. g = g.multiply(h);
  5418. new mp.Vector3(f.x + g.x, f.y + g.y, f.z + g.z);
  5419. f = mp.game.system.vdist(e.x, e.y, e.z, f.x + g.x, f.y + g.y, f.z + g.z);
  5420. g = mp.game.system.vdist(e.x, e.y, e.z, b.x, b.y, b.z);
  5421. if (e = getWeaponDetails(Number(mp.players.local.weapon))) g = lerp(.5, e.spray, 1 / e.max_dist * g), g > e.spray && (g = e.spray), e = !1, g > f && (e = !0), 1 == e && (a = d)
  5422. }
  5423. }
  5424. });
  5425. return a
  5426. }
  5427. mp.events.add("playerWeaponShot", function(a, b) {
  5428. var c = weapon_data.getWeaponHash(Number(mp.players.local.weapon)),
  5429. d = mp.players.local.weapon,
  5430. e = mp.players.local.getAmmoInClip(d);
  5431. mp.events.callRemote("onClientWeaponFired", c, e);
  5432. mp.game.player.setTargetingMode(1);
  5433. mp.game.player.setLockon(!1);
  5434. mp.game.player.setLockonRangeOverride(0);
  5435. 0 == isWallbugging(a) && (b ? b.isInAnyVehicle(!1) ? (b = b.vehicle, d = getVehiclePassangerEntityFromPosition(a, b), 1 == getIsHitOnBone(a, d.target).hit ? mp.events.callRemote("onPlayerHitOtherPlayer",
  5436. d.target, c) : mp.events.callRemote("onPlayerHitOtherVehicle", b, c)) : mp.events.callRemote("onPlayerHitOtherPlayer", b, c) : 860033945 == mp.game.weapon.getWeapontypeGroup(d) && (a = calculateShotgunPelletsOnPlayers(), null != a && mp.events.callRemote("onPlayerHitOtherPlayer", a, c)))
  5437. });
  5438. var driveby_disabled = {
  5439. 324215364: !0
  5440. },
  5441. timerHitmarker = 0,
  5442. timerHitmarkerVehicle = 0,
  5443. timerHitmarkerKill = 0,
  5444. timerEnterDisable = 0;
  5445. mp.events.add("render", function() {
  5446. mp.game.player.resetStamina();
  5447. mp.game.graphics.hasStreamedTextureDictLoaded("hud_reticle") || mp.game.graphics.requestStreamedTextureDict("hud_reticle", !0);
  5448. mp.game.graphics.hasStreamedTextureDictLoaded("hud_reticle") && (.1 >= Date.now() / 1E3 - timerHitmarker && mp.game.graphics.drawSprite("hud_reticle", "reticle_ar", .5, .5, .025, .04, 45, 255, 255, 255, 150), .1 >= Date.now() / 1E3 - timerHitmarkerVehicle && mp.game.graphics.drawSprite("hud_reticle", "reticle_ar", .5, .5, .025, .04, 45, 255, 255, 0,
  5449. 150), .1 >= Date.now() / 1E3 - timerHitmarkerKill && mp.game.graphics.drawSprite("hud_reticle", "reticle_ar", .5, .5, .025, .04, 45, 200, 0, 0, 150));
  5450. 2 >= Date.now() / 1E3 - timerEnterDisable && (mp.game.controls.disableControlAction(0, 23, !0), mp.game.controls.disableControlAction(1, 23, !0), mp.game.controls.disableControlAction(2, 23, !0));
  5451. driveby_disabled[Number(mp.players.local.weapon)] ? mp.game.player.setCanDoDriveBy(!1) : mp.game.player.setCanDoDriveBy(!0)
  5452. });
  5453.  
  5454. function playHitmarker() {
  5455. if (0 < mp.storage.data.hitSettings.sound) {
  5456. var a = "";
  5457. 1 == mp.storage.data.hitSettings.sound ? a = "hit_sound_1.mp3" : 2 == mp.storage.data.hitSettings.sound ? a = "hit_sound_2.wav" : 3 == mp.storage.data.hitSettings.sound ? a = "hit_sound_3.wav" : 4 == mp.storage.data.hitSettings.sound && (a = "hit_sound_4.mp3");
  5458. mp.events.call("playSound", a, !1)
  5459. }
  5460. }
  5461. mp.events.add("onPlayerTargetHit", function() {
  5462. 1 == mp.storage.data.hitSettings.hitmarker && (timerHitmarker = Date.now() / 1E3)
  5463. });
  5464. mp.events.add("onPlayerVehicleHit", function() {
  5465. 1 == mp.storage.data.hitSettings.hitmarker && (timerHitmarkerVehicle = Date.now() / 1E3)
  5466. });
  5467. mp.events.add("onPlayerTargetKill", function() {
  5468. 1 == mp.storage.data.hitSettings.hitmarker && (timerHitmarkerKill = Date.now() / 1E3)
  5469. });
  5470. mp.events.add("onPlayerHitted", function(a) {
  5471. timerEnterDisable = Date.now() / 1E3
  5472. });
  5473. var color = [255, 255, 255, 255],
  5474. alphaLoads = [],
  5475. knownPlayers = [],
  5476. optionsViewRange = {
  5477. foot: 80,
  5478. vehicle: 500,
  5479. passanger: 800,
  5480. aiming_in_cone: 800,
  5481. known: 500,
  5482. biggest_dist: 800
  5483. },
  5484. aimPointTarget = {
  5485. target: null,
  5486. target_id: null,
  5487. duration: 0,
  5488. maxDuration: 1.5,
  5489. offsetMax: 1.5,
  5490. loseTarget: 2,
  5491. alpha: 0
  5492. },
  5493. weaponSpotDistance = {
  5494. 453432689: 30,
  5495. 1593441988: 30,
  5496. 911657153: 10,
  5497. 2578377531: 30,
  5498. 3218215474: 30,
  5499. 137902532: 30,
  5500. 3249783761: 30,
  5501. 736523883: 40,
  5502. 487013001: 20,
  5503. 3220176749: 50,
  5504. 2210333304: 50
  5505. };
  5506.  
  5507. function getWeaponSpotDistance(a) {
  5508. return weaponSpotDistance[a] ? weaponSpotDistance[a] : 20
  5509. }
  5510. var timeCalls = [];
  5511. timeCalls.known = 0;
  5512. timeCalls.aimNametag = 0;
  5513. mp.events.add("render", function(a) {
  5514. var b = null,
  5515. c = mp.players.local.getBoneCoords(12844, .5, 0, 0);
  5516. mp.players.forEachInStreamRange(function(a) {
  5517. if (a != mp.players.local) {
  5518. alphaLoads[a.name] || (alphaLoads[a.name] = 0);
  5519. knownPlayers[a.name] || (knownPlayers[a.name] = 0);
  5520. var d = a.getBoneCoords(12844, 0, 0, 0);
  5521. if (!mp.raycasting.testPointToPoint(c, d, mp.players.local, 273)) {
  5522. d = !1;
  5523. if (a.getVariable("WantedLevel")) switch (parseInt(a.getVariable("WantedLevel"))) {
  5524. case 1:
  5525. color = [255, 204, 204, alphaLoads[a.name]];
  5526. break;
  5527. case 2:
  5528. color = [255,
  5529. 153, 153, alphaLoads[a.name]
  5530. ];
  5531. break;
  5532. case 3:
  5533. color = [255, 102, 102, alphaLoads[a.name]];
  5534. break;
  5535. case 4:
  5536. color = [255, 51, 51, alphaLoads[a.name]];
  5537. break;
  5538. case 5:
  5539. color = [255, 0, 0, alphaLoads[a.name]]
  5540. } else color = [255, 255, 255, alphaLoads[a.name]];
  5541. if (a.isDead() || 1 > a.getHealth()) color = [40, 40, 40, alphaLoads[a.name]];
  5542. var e = mp.players.local.position,
  5543. f = a.getWorldPositionOfBone(a.getBoneIndexByName("IK_Head"));
  5544. if (a.isInAnyVehicle(!1) && null != a.vehicle) {
  5545. var g = null;
  5546. a.vehicle.getPedInSeat(-1) == a.handle ? g = a.vehicle.getWorldPositionOfBone(a.vehicle.getBoneIndexByName("seat_dside_f")) :
  5547. a.vehicle.getPedInSeat(0) == a.handle ? g = a.vehicle.getWorldPositionOfBone(a.vehicle.getBoneIndexByName("seat_pside_f")) : a.vehicle.getPedInSeat(1) == a.handle ? g = a.vehicle.getWorldPositionOfBone(a.vehicle.getBoneIndexByName("seat_dside_r")) : a.vehicle.getPedInSeat(2) == a.handle && (g = a.vehicle.getWorldPositionOfBone(a.vehicle.getBoneIndexByName("seat_pside_r")));
  5548. if (null != g) {
  5549. var h = a.vehicle.getOffsetFromGivenWorldCoords(g.x, g.y, g.z);
  5550. 25 > mp.game.system.vdist2(g.x, g.y, g.z, f.x, f.y, f.z) ? f = a.vehicle.getOffsetFromInWorldCoords(h.x,
  5551. h.y, h.z + 1.2) : f.z += .5
  5552. }
  5553. } else f.z += .5;
  5554. h = mp.game.system.vdist2(e.x, e.y, e.z, f.x, f.y, f.z);
  5555. g = lerp(.5, .06, 1 / optionsViewRange.biggest_dist * h);.5 < g ? g = .5 : .06 > g && (g = .06);
  5556. var q = optionsViewRange.foot;
  5557. mp.players.local.isInAnyVehicle(!1) && (q = optionsViewRange.vehicle, mp.players.local.vehicle && mp.players.local.vehicle.getPedInSeat(0) == mp.players.local.handle && (q = optionsViewRange.passanger));
  5558. h <= q ? (255 > alphaLoads[a.name] && (alphaLoads[a.name] += 20), 255 < alphaLoads[a.name] && (alphaLoads[a.name] = 255), h <= optionsViewRange.foot &&
  5559. .05 < Date.now() / 1E3 - timeCalls.known && 100 > knownPlayers[a.name] && (timeCalls.known = Date.now() / 1E3, knownPlayers[a.name] += .1), d = !0) : h >= optionsViewRange.known || h <= optionsViewRange.known && 40 >= knownPlayers[a.name] ? .05 < Date.now() / 1E3 - timeCalls.known && 0 < knownPlayers[a.name] && (timeCalls.known = Date.now() / 1E3, knownPlayers[a.name] -= .3) : 40 < knownPlayers[a.name] && (mp.game.system.vdist2(e.x, e.y, e.z, f.x, f.y, f.z) <= optionsViewRange.known && (255 > alphaLoads[a.name] && (alphaLoads[a.name] += 20), 255 < alphaLoads[a.name] && (alphaLoads[a.name] =
  5560. 255)), d = !0);
  5561. 0 == d && 0 < alphaLoads[a.name] && (0 < alphaLoads[a.name] && (alphaLoads[a.name] -= 15, d = !0), 0 > alphaLoads[a.name] && (alphaLoads[a.name] = 0));
  5562. 1 == d && b != a.name && (mp.game.graphics.setDrawOrigin(f.x, f.y, f.z, 0), mp.game.graphics.drawText(a.name, [0, 0], {
  5563. font: 4,
  5564. color: color,
  5565. scale: [g, g],
  5566. outline: !0
  5567. }), 40 < knownPlayers[a.name] && (a = lerp(0, 255, 1 / 60 * (knownPlayers[a.name] - 40)), 255 < a && (a = 255), color[3] = a, mp.game.graphics.drawText("_", [0, .0032], {
  5568. font: 4,
  5569. color: color,
  5570. scale: [g, g],
  5571. outline: !0
  5572. })), mp.game.graphics.clearDrawOrigin())
  5573. }
  5574. }
  5575. });
  5576. if (mp.players.local.getIsTaskActive(4)) {
  5577. if (a = mp.game.player.getEntityIsFreeAimingAt(), void 0 !== a && null == aimPointTarget.target && "object" == ("undefined" === typeof a ? "undefined" : _typeof(a)) && a.name && "" != a.name && (aimPointTarget.duration = 0, aimPointTarget.alpha = 0, aimPointTarget.target = a, aimPointTarget.target_id = a.id), aimPointTarget.target_id && aimPointTarget.target_id)
  5578. if (mp.players.exists(aimPointTarget.target_id) && null !== aimPointTarget.target) {
  5579. if ((a = mp.players.at(aimPointTarget.target_id)) && aimPointTarget.target.id ==
  5580. aimPointTarget.target_id) {
  5581. aimPointTarget.target = a;
  5582. a = mp.players.local.getBoneCoords(12844, .2, 0, 0);
  5583. var d = mp.players.local.aimingAt,
  5584. e = aimPointTarget.target.position,
  5585. f = new mp.Vector3(d.x - a.x, d.y - a.y, d.z - a.z);
  5586. d = mp.game.system.vdist(d.x, d.y, d.z, a.x, a.y, a.z);
  5587. f = f.normalize(d);
  5588. d = mp.game.system.vdist(e.x, e.y, e.z, a.x, a.y, a.z);
  5589. if (getWeaponSpotDistance(Number(mp.players.local.weapon)) >= d) {
  5590. if (f = f.multiply(d), e = mp.game.system.vdist(e.x, e.y, e.z, a.x + f.x, a.y + f.y, a.z + f.z), e <= aimPointTarget.offsetMax ? .05 < Date.now() /
  5591. 1E3 - timeCalls.aimNametag && (timeCalls.aimNametag = Date.now() / 1E3, aimPointTarget.duration += .05, aimPointTarget.duration > aimPointTarget.maxDuration && (aimPointTarget.duration = aimPointTarget.maxDuration, aimPointTarget.alpha += 20, 255 < aimPointTarget.alpha && (aimPointTarget.alpha = 255))) : e >= aimPointTarget.loseTarget && (aimPointTarget.target = null, aimPointTarget.duration = 0, aimPointTarget.alpha = 0, timeCalls.aimNametag = Date.now() / 1E3), aimPointTarget.duration == aimPointTarget.maxDuration && null != aimPointTarget.target) {
  5592. color = [255, 255, 255, 255];
  5593. if (aimPointTarget.target.getVariable("WantedLevel")) switch (parseInt(aimPointTarget.target.getVariable("WantedLevel"))) {
  5594. case 1:
  5595. color = [255, 204, 204, aimPointTarget.alpha];
  5596. break;
  5597. case 2:
  5598. color = [255, 153, 153, aimPointTarget.alpha];
  5599. break;
  5600. case 3:
  5601. color = [255, 102, 102, aimPointTarget.alpha];
  5602. break;
  5603. case 4:
  5604. color = [255, 51, 51, aimPointTarget.alpha];
  5605. break;
  5606. case 5:
  5607. color = [255, 0, 0, aimPointTarget.alpha]
  5608. } else color = [255, 255, 255, aimPointTarget.alpha];
  5609. if (aimPointTarget.target.isDead() || 1 > aimPointTarget.target.getHealth()) color = [40, 40, 40, aimPointTarget.alpha];
  5610. e = aimPointTarget.target.getWorldPositionOfBone(aimPointTarget.target.getBoneIndexByName("IK_Head"));
  5611. a = mp.game.system.vdist2(e.x, e.y, e.z, a.x, a.y, a.z);
  5612. a = lerp(.5, .3, 1 / optionsViewRange.biggest_dist * a);.5 < a ? a = .5 : .25 > a && (a = .25);
  5613. if (aimPointTarget.target.isInAnyVehicle(!1) && (f = null, d = aimPointTarget.target.vehicle, d.getPedInSeat(-1) == aimPointTarget.target.handle ? f = d.getWorldPositionOfBone(d.getBoneIndexByName("seat_dside_f")) : d.getPedInSeat(0) == aimPointTarget.target.handle ?
  5614. f = d.getWorldPositionOfBone(d.getBoneIndexByName("seat_pside_f")) : d.getPedInSeat(1) == aimPointTarget.target.handle ? f = d.getWorldPositionOfBone(d.getBoneIndexByName("seat_dside_r")) : d.getPedInSeat(2) == aimPointTarget.target.handle && (f = d.getWorldPositionOfBone(d.getBoneIndexByName("seat_pside_r"))), null != f)) {
  5615. var g = d.getOffsetFromGivenWorldCoords(f.x, f.y, f.z);
  5616. 25 > mp.game.system.vdist2(f.x, f.y, f.z, e.x, e.y, e.z) && (e = d.getOffsetFromInWorldCoords(g.x, g.y, g.z + .7))
  5617. }
  5618. b = aimPointTarget.target.name;
  5619. mp.game.graphics.setDrawOrigin(e.x,
  5620. e.y, e.z + .5, 0);
  5621. mp.game.graphics.drawText(aimPointTarget.target.name || "name", [0, 0], {
  5622. font: 4,
  5623. color: color,
  5624. scale: [a, a],
  5625. outline: !0
  5626. });
  5627. mp.game.graphics.clearDrawOrigin()
  5628. }
  5629. } else b = "", aimPointTarget.target = null, aimPointTarget.duration = 0, aimPointTarget.alpha = 0, timeCalls.aimNametag = Date.now() / 1E3
  5630. }
  5631. } else b = "", aimPointTarget.target_id = null, aimPointTarget.target = null, aimPointTarget.duration = 0, aimPointTarget.alpha = 0, timeCalls.aimNametag = Date.now() / 1E3
  5632. } else b = "", aimPointTarget.target_id = null, aimPointTarget.target = null,
  5633. aimPointTarget.duration = 0, aimPointTarget.alpha = 0, timeCalls.aimNametag = Date.now() / 1E3
  5634. });
  5635. var UserpanelLanguage = null;
  5636. UserpanelLanguage = lang_de.window_userpanel;
  5637. mp.events.add("OnUserpanelClosed", function() {
  5638. null != Webwindow.Userpanel && (Webwindow.Userpanel.destroy(), Webwindow.Userpanel = null, disableAllControls = mp.gui.cursor.visible = !1)
  5639. });
  5640. mp.events.add("OpenClientUserpanel", function(a) {
  5641. null == Webwindow.Userpanel && (TempArguments.Userpanel = a, Webwindow.Userpanel = new CEFBrowser("package://viov/client_ui/html/userpanel/userpanel.html", !0), disableAllControls = !0, mp.gui.cursor.visible = !0)
  5642. });
  5643. mp.events.add("OnUserpanelLoaded", function() {
  5644. null != TempArguments.Userpanel && null != Webwindow.Userpanel && Webwindow.Userpanel.call("vio._callEvent", "userpanel:init", UserpanelLanguage, TempArguments.Userpanel);
  5645. TempArguments = {}
  5646. });
  5647. var InventoryItems = [],
  5648. ItemsNames = null,
  5649. BankLanguage = null,
  5650. Items = null,
  5651. HUDINIT = !1;
  5652. ItemsNames = lang_de.items;
  5653. BankLanguage = lang_de.window_bank;
  5654. mp.events.add("updateInventoryItems", function(a, b, c) {
  5655. InventoryItems = JSON.parse(a);
  5656. InventoryItems["-1"] = "1";
  5657. InventoryItems.Size = b;
  5658. InventoryItems.MaxSize = c;
  5659. Items = a;
  5660. 0 == HUDINIT ? TempArguments.HUD1 = InventoryItems["0"] : voiceChat.call("setMoney", InventoryItems["0"]);
  5661. mp.events.call("onInventoryUpdate");
  5662. 1 == Inventory.visible && (a = JSON.parse(Items), a[-1] = 1, Inventory.loadItems("UserInventory", a))
  5663. });
  5664. mp.events.add("updateInventoryWanteds", function(a) {
  5665. 0 == HUDINIT ? TempArguments.HUD2 = a : voiceChat.call("setWanted", a)
  5666. });
  5667. mp.events.add("openExport", function(a) {
  5668. for (var b in Webwindow) "hud" != b && "progressbar" != b && "TutorialWindow" != b && "Audio" != b && null != Webwindow[b] && (Webwindow[b].destroy(), Webwindow[b] = null);
  5669. TempArguments.Export = {};
  5670. TempArguments.Export["1"] = a;
  5671. Webwindow.Export = new CEFBrowser("package://viov/client_ui/html/export/miene.html", !0);
  5672. mp.gui.chat.show(!1)
  5673. });
  5674. mp.events.add("openTrade", function(a, b, c) {
  5675. for (var d in Webwindow) "Handy" != d && "hud" != d && "Trade" != d && "progressbar" != d && "TutorialWindow" != d && "Audio" != d && null != Webwindow[d] && (Webwindow[d].destroy(), Webwindow[d] = null);
  5676. TempArguments.Trade = {};
  5677. TempArguments.Trade["1"] = a;
  5678. TempArguments.Trade["2"] = b;
  5679. a = ItemsNames;
  5680. a.username = c;
  5681. ItemsNames = a;
  5682. Webwindow.Trade = new CEFBrowser("package://viov/client_ui/html/trade/trade.html", !0)
  5683. });
  5684. mp.events.add("cancelTrade", function() {
  5685. null != Webwindow.Trade && (Webwindow.Trade.destroy(), mp.gui.chat.show(!0), mp.gui.cursor.show(!1), mp.gui.cursor.visible = !1, Webwindow.Trade = null)
  5686. });
  5687. mp.events.add("updateTradeItems", function(a, b) {
  5688. null != Webwindow.Trade && Webwindow.Trade.call("vio._callEvent", "trade:update", "[ " + a + " ]", "[ " + b + " ]")
  5689. });
  5690. mp.events.add("updateTradeItemsTarget", function(a) {
  5691. null != Webwindow.Trade && Webwindow.Trade.call("vio._callEvent", "trade:updateTarget", "[ " + a + " ]")
  5692. });
  5693. mp.events.add("updateTradeReady", function() {
  5694. null != Webwindow.Trade && Webwindow.Trade.call("vio._callEvent", "trade:ready")
  5695. });
  5696. mp.events.add("initMieneWindow", function() {
  5697. null != Webwindow.Export && (Webwindow.Export.call("vio._callEvent", "miene:init", ItemsNames, JSON.parse(Items), TempArguments.Export["1"]), TempArguments.Export = {})
  5698. });
  5699. mp.events.add("initTradeWindow", function() {
  5700. null != Webwindow.Trade && (mp.game.graphics.getScreenActiveResolution(1, 1), Webwindow.Trade.call("vio._callEvent", "trade:init", ItemsNames, "[ " + TempArguments.Trade["1"] + " ]", "[ " + TempArguments.Trade["2"] + " ]"), Webwindow.Trade.show("tradewindow"))
  5701. });
  5702. mp.events.add("clientRequestTradeStorageAction", function(a, b) {
  5703. mp.events.callRemote("onClientRequestTradeStorageAction", a, b)
  5704. });
  5705. mp.events.add("requestMieneClose", function() {
  5706. Webwindow.Export.destroy();
  5707. mp.gui.chat.show(!0);
  5708. mp.gui.cursor.visible = !1;
  5709. Webwindow.Export = null
  5710. });
  5711. mp.events.add("onClientSellMats", function(a) {
  5712. Webwindow.Export.destroy();
  5713. mp.gui.chat.show(!0);
  5714. mp.gui.cursor.visible = !1;
  5715. Webwindow.Export = null;
  5716. mp.events.callRemote("onClientRequestExport", a)
  5717. });
  5718. mp.events.add("requestCloseTrade", function() {
  5719. mp.events.callRemote("onClientRequestTradeCancel")
  5720. });
  5721. mp.events.add("clientTradeReady", function() {
  5722. mp.events.callRemote("onClientTradeReady")
  5723. });
  5724. var Inventory = new(function() {
  5725. function a() {
  5726. _classCallCheck(this, a);
  5727. this._setup()
  5728. }
  5729. _createClass(a, [{
  5730. key: "_setup",
  5731. value: function() {
  5732. this.choices = [];
  5733. this.browser = new CEFBrowser("package://viov/client_ui/html/inventory/inventory.html", !1);
  5734. this.active = !1;
  5735. this.browser.active(this.active);
  5736. this._openTabs = []
  5737. }
  5738. }, {
  5739. key: "show",
  5740. value: function() {
  5741. this.active = !this.active;
  5742. mp.gui.cursor.visible = this.active;
  5743. this.browser.active(this.active)
  5744. }
  5745. }, {
  5746. key: "hide",
  5747. value: function() {
  5748. var a = this;
  5749. a.active = !1;
  5750. mp.gui.cursor.visible = !1;
  5751. a.allowMoney("Storage", !1);
  5752. a.allowMoney("UserInventory", !1);
  5753. a.showInventory("UserInventory", !1);
  5754. a._openTabs.forEach(function(b) {
  5755. a.showInventory(b, !1)
  5756. });
  5757. a._openTabs = [];
  5758. this.browser.call("hide_amount_move");
  5759. a.browser.active(!1)
  5760. }
  5761. }, {
  5762. key: "showInventory",
  5763. value: function(a, c) {
  5764. this.browser.call("show", a, c);
  5765. c && this._openTabs.push(a)
  5766. }
  5767. }, {
  5768. key: "isOpen",
  5769. value: function(a) {
  5770. return -1 < this._openTabs.indexOf(a)
  5771. }
  5772. }, {
  5773. key: "loadItems",
  5774. value: function(a, c) {
  5775. this.browser.call("load_inventory", a, c)
  5776. }
  5777. }, {
  5778. key: "setMaxWeight",
  5779. value: function(a,
  5780. c) {
  5781. this.browser.call("set_max_weight", a, c)
  5782. }
  5783. }, {
  5784. key: "loadLangpack",
  5785. value: function(a) {
  5786. this.browser.call("loadLangpack", a)
  5787. }
  5788. }, {
  5789. key: "allowMoney",
  5790. value: function(a, c) {
  5791. this.browser.call("allow_money", a, c)
  5792. }
  5793. }, {
  5794. key: "requestSave",
  5795. value: function() {
  5796. this.browser.call("save")
  5797. }
  5798. }, {
  5799. key: "visible",
  5800. get: function() {
  5801. return this.active
  5802. }
  5803. }]);
  5804. return a
  5805. }());
  5806. mp.events.add("removeInventoryObject", function(a, b) {
  5807. mp.events.callRemote("onClientRequestRemoveItem", a, b)
  5808. });
  5809. mp.events.add("openInventory", function() {
  5810. Inventory.visible && null != ItemsNames && null == Webwindow.VehicleWindow && 0 < mp.players.local.getHealth() && (openInventory(), WeedPlantDrug.reset())
  5811. });
  5812. mp.keys.bind(73, !1, function() {
  5813. openInventory()
  5814. });
  5815. mp.events.add("hudLoaded", function() {
  5816. HUDINIT = !0;
  5817. null != TempArguments.HUD1 && voiceChat.call("setMoney", TempArguments.HUD1);
  5818. null != TempArguments.HUD2 && voiceChat.call("setWanted", TempArguments.HUD2)
  5819. });
  5820.  
  5821. function openInventory() {
  5822. if (0 == Inventory.visible && null != ItemsNames && null == Webwindow.VehicleWindow && 0 == mp.players.local.isDead()) {
  5823. if (0 == Inventory.visible && 0 == mp.gui.cursor.visible && !creatorCamera) {
  5824. if (0 == checkVehStorage()) {
  5825. Inventory.loadLangpack(ItemsNames);
  5826. Inventory.show();
  5827. var a = JSON.parse(Items);
  5828. a[-1] = 1;
  5829. Inventory.setMaxWeight("UserInventory", InventoryItems.MaxSize.toString());
  5830. Inventory.loadItems("UserInventory", a);
  5831. Inventory.showInventory("UserInventory", !0)
  5832. }
  5833. mp.game.graphics.notify(InventoryItems.Size.toString() +
  5834. "/" + InventoryItems.MaxSize.toString())
  5835. }
  5836. } else null != Webwindow.VehicleWindow && (Webwindow.VehicleWindow.destroy(), mp.gui.chat.show(!0), mp.gui.cursor.visible = !1, Webwindow.VehicleWindow = null), Inventory.isOpen("Storage") ? Inventory.requestSave() : Inventory.hide()
  5837. }
  5838. mp.events.add("openStorageWindow", function(a, b, c) {
  5839. var d = JSON.parse(a).storage;
  5840. a = JSON.parse(a).inventory;
  5841. c = JSON.parse(c);
  5842. Inventory.loadLangpack(ItemsNames);
  5843. Inventory.show();
  5844. a[-1] = 1;
  5845. Inventory.loadItems("UserInventory", a);
  5846. Inventory.setMaxWeight("UserInventory", InventoryItems.MaxSize.toString());
  5847. Inventory.showInventory("UserInventory", !0);
  5848. Inventory.loadItems("Storage", d);
  5849. Inventory.setMaxWeight("Storage", c.storage_max);
  5850. Inventory.showInventory("Storage", !0);
  5851. 1 == b ? (Inventory.allowMoney("Storage", !0), Inventory.allowMoney("UserInventory", !0)) : (Inventory.allowMoney("Storage", !1), Inventory.allowMoney("UserInventory", !1))
  5852. });
  5853.  
  5854. function checkVehStorage() {
  5855. var a = null,
  5856. b = 100,
  5857. c = void 0,
  5858. d = void 0;
  5859. mp.vehicles.forEachInStreamRange(function(e) {
  5860. d = e.position;
  5861. c = mp.game.gameplay.getDistanceBetweenCoords(mp.players.local.position.x, mp.players.local.position.y, mp.players.local.position.z, d.x, d.y, d.z, !1);
  5862. c < b && (b = c, a = e)
  5863. });
  5864. if (null != a && null != a.getVariable("PRIVATE_VEHICLE_OWNER") && a.getVariable("PRIVATE_VEHICLE_OWNER") == LocalCharacterID) {
  5865. var e = mp.players.local.position,
  5866. f = a.getWorldPositionOfBone(a.getBoneIndexByName("boot"));
  5867. if (2 > mp.game.gameplay.getDistanceBetweenCoords(e.x,
  5868. e.y, e.z, f.x, f.y, f.z, !1) || mp.players.local.isInAnyVehicle(!1) && mp.players.local.vehicle == a) return mp.events.callRemote("onClientRequestPrivateVehicleStorage", a), !0
  5869. }
  5870. return !1
  5871. }
  5872. mp.events.add("requestInventoryListAction", function(a) {
  5873. -1 == parseInt(a) ? mp.events.callRemote("onClientRequestObjectsWindowOpen") : (mp.events.callRemote("onClientRequestInventoryAction", Number(a)), mp.events.call("onItemUse", Number(a)));
  5874. mp.gui.chat.show(!0);
  5875. mp.gui.cursor.visible = !1;
  5876. Inventory.isOpen("Storage") ? Inventory.requestSave() : Inventory.hide()
  5877. });
  5878. mp.events.add("requestCloseInventory", function() {
  5879. Inventory.isOpen("Storage") ? Inventory.requestSave() : Inventory.hide()
  5880. });
  5881. mp.events.add("requestSaveStorageWindow", function(a, b) {
  5882. mp.events.callRemote("onClientRequestStorageAction", a, b);
  5883. Inventory.hide();
  5884. mp.events.callRemote("onClientRequestStorageClose")
  5885. });
  5886. mp.events.add("requestCloseStorageWindow", function() {
  5887. Inventory.hide();
  5888. mp.events.callRemote("onClientRequestStorageClose")
  5889. });
  5890.  
  5891. function openBank() {
  5892. null == Webwindow.Bank && 0 == mp.players.local.isDead() ? 1 != mp.gui.cursor.visible && mp.events.callRemote("requestOpenBankWindow") : null != Webwindow.Bank && (Webwindow.Bank.destroy(), Webwindow.Bank = null, disableAllControls = !1)
  5893. }
  5894. mp.events.add("initBankWindow", function() {
  5895. if (null != Webwindow.Bank) {
  5896. var a = {};
  5897. a.player = InventoryItems["0"];
  5898. a.bank = InventoryItems["11"];
  5899. Webwindow.Bank.call("vio._callEvent", "bank:init", BankLanguage, "[ " + JSON.stringify(a) + " ]", "[ " + TempArguments.Bank["1"] + " ]")
  5900. }
  5901. });
  5902. mp.events.add("reopenMoneyBank", function() {
  5903. if (null != Webwindow.Bank) {
  5904. var a = {};
  5905. a.player = InventoryItems["0"];
  5906. a.bank = InventoryItems["11"];
  5907. Webwindow.Bank.call("vio._callEvent", "bank:update", "[ " + JSON.stringify(a) + " ]")
  5908. }
  5909. });
  5910. mp.events.add("forceCloseMoneyBank", function() {
  5911. null != Webwindow.Bank && (Webwindow.Bank.destroy(), Webwindow.Bank = null, disableAllControls = !1)
  5912. });
  5913. mp.events.add("openMoneyBank", function() {
  5914. null == Webwindow.Bank && 0 == mp.players.local.isDead() ? 1 != mp.gui.cursor.visible && (TempArguments.Bank = {}, TempArguments.Bank["1"] = 0 >= arguments.length ? void 0 : arguments[0], Webwindow.Bank = new CEFBrowser("package://viov/client_ui/html/bank/bank.html", !0), disableAllControls = !0) : null != Webwindow.Bank && (Webwindow.Bank.destroy(), Webwindow.Bank = null, disableAllControls = !1)
  5915. });
  5916. mp.events.add("requestCloseBank", function() {
  5917. null != Webwindow.Bank && (Webwindow.Bank.destroy(), Webwindow.Bank = null, disableAllControls = !1)
  5918. });
  5919. mp.events.add("bankpayin", function(a, b) {
  5920. mp.events.callRemote("payInMoneyBank", a)
  5921. });
  5922. mp.events.add("requestSentPlayerMoney", function(a, b) {
  5923. Webwindow.Bank.destroy();
  5924. Webwindow.Bank = null;
  5925. disableAllControls = !1;
  5926. mp.events.callRemote("requestSentPlayerMoney", b, a)
  5927. });
  5928. mp.events.add("bankpayout", function(a, b) {
  5929. mp.events.callRemote("payOutMoneyBank", a)
  5930. });
  5931. Webwindow = [];
  5932. var PositionList = {};
  5933. PositionList["Los Santos International Airport"] = new mp.Vector3(-984.4622, -2641.172, 13.97301);
  5934. PositionList["Del Penno"] = new mp.Vector3(-1168.258, -700.3124, 21.89547);
  5935. PositionList["Mega Mall"] = new mp.Vector3(46.4484, -1749.105, 29.63828);
  5936. PositionList["Mission Row Police Department"] = new mp.Vector3(457.6562, -991.2404, 30.6896);
  5937. PositionList.Hospital = new mp.Vector3(1151.03, -1529.89, 35.37);
  5938. PositionList["Central Medical Center"] = new mp.Vector3(309.0706, -1435.446, 29.89129);
  5939. PositionList["Pillbox Hill Medical Center"] = new mp.Vector3(358.1382, -589.7339, 28.79429);
  5940. PositionList["Mount Zonah Medical Center"] = new mp.Vector3(-497.7031, -328.5704, 34.50169);
  5941. PositionList["Sandy Shores Medical Center"] = new mp.Vector3(1837.536, 3672.181, 34.2767);
  5942. PositionList["Bay Care Center"] = new mp.Vector3(-248.8725, 6330.753, 32.42618);
  5943. PositionList["Hayes Autos"] = new mp.Vector3(495.693, -1340.385, 29.31346);
  5944. PositionList["Town Hall"] = new mp.Vector3(233.1222, -410.3885, 48.11195);
  5945.  
  5946. function openPositionWindow() {
  5947. null == Webwindow.PositionWindow && login ? Webwindow.PositionWindow = new CEFBrowser("package://viov/client_ui/html/position/position.html", !0) : requestClosePosition()
  5948. }
  5949. mp.events.add("initPositionWindow", function() {
  5950. setTimeout(initPosition, 500)
  5951. });
  5952.  
  5953. function initPosition() {
  5954. null != Webwindow.PositionWindow && Webwindow.PositionWindow.call("vio._callEvent", "position:init", PositionList)
  5955. }
  5956. mp.events.add("requestClosePosition", function() {
  5957. Webwindow.PositionWindow.destroy();
  5958. mp.game.ui.displayHud(!0);
  5959. Webwindow.PositionWindow = null
  5960. });
  5961. mp.events.add("requestPosition", function(a) {
  5962. mp.game.ui.setNewWaypoint(Number(PositionList[a].x), Number(PositionList[a].y));
  5963. Webwindow.PositionWindow.destroy();
  5964. mp.game.ui.displayHud(!0);
  5965. Webwindow.PositionWindow = null
  5966. });
  5967. mp.keys.bind(113, !1, function() {
  5968. null == Webwindow.PositionWindow ? 0 == mp.gui.cursor.visible && openPositionWindow() : null != Webwindow.PositionWindow && (Webwindow.PositionWindow.destroy(), Webwindow.PositionWindow = null)
  5969. });
  5970. mp.events.add("createProgressbar", function(a) {
  5971. createProgressbar(Number(a))
  5972. });
  5973. mp.events.add("destroyProgressbar", function() {
  5974. destroyProgressbar()
  5975. });
  5976.  
  5977. function createProgressbar(a) {
  5978. null != Webwindow.progressbar && (Webwindow.progressbar.destroy(), Webwindow.progressbar = null);
  5979. Webwindow.progressbar = new CEFBrowser("package://viov/client_ui/html/progressbar/progressbar.html", !1);
  5980. TempArguments.Progressbar = Number(a) / 1E3
  5981. }
  5982.  
  5983. function destroyProgressbar() {
  5984. null != Webwindow.progressbar && (Webwindow.progressbar.destroy(), Webwindow.progressbar = null)
  5985. }
  5986. mp.events.add("initProgressbarWindow", function() {
  5987. null != Webwindow.progressbar && Webwindow.progressbar.call("initProgress", TempArguments.Progressbar)
  5988. });
  5989. var Selection = function() {
  5990. function a() {
  5991. _classCallCheck(this, a);
  5992. this._setup()
  5993. }
  5994. _createClass(a, [{
  5995. key: "_setup",
  5996. value: function() {
  5997. this.choices = [];
  5998. this.browser = new CEFBrowser("package://viov/client_ui/html/selection/index.html", !1);
  5999. this.active = !1
  6000. }
  6001. }, {
  6002. key: "toggle",
  6003. value: function() {
  6004. this.active = !this.active;
  6005. this.browser.call("fillOptions", this.choices);
  6006. mp.gui.cursor.visible = this.active;
  6007. this.browser.call("toggleVisiblity", this.active)
  6008. }
  6009. }, {
  6010. key: "mapChoices",
  6011. value: function(a) {
  6012. this.choices = a.map(function(a) {
  6013. return {
  6014. img: a.img,
  6015. name: a.name,
  6016. id: a.id,
  6017. type: a.type
  6018. }
  6019. });
  6020. this.browser.call("fillOptions", this.choices)
  6021. }
  6022. }, {
  6023. key: "visible",
  6024. get: function() {
  6025. return this.active
  6026. }
  6027. }]);
  6028. return a
  6029. }();
  6030. Selection = new Selection;
  6031. var warningblocked = [13, 14, 15, 16, 21],
  6032. selectetEnitity = null;
  6033.  
  6034. function isVehicleWarningIndicatorBlocked(a) {
  6035. return -1 < warningblocked.indexOf(mp.game.vehicle.getVehicleClass(a)) ? !0 : !1
  6036. }
  6037. mp.events.add("requestSelection", function() {
  6038. if (null == Webwindow.TicketsystemBrowser && null == Webwindow.Settings && null == Webwindow.Trade && 1 != mp.gui.cursor.visible && 1 == login && (!spectating || null == specateCam) && 0 == mp.players.local.isDead() && 0 == Selection.visible)
  6039. if (mp.players.local.isInAnyVehicle(!1)) selectetEnitity = mp.players.local.vehicle, getSelectionChoices("incar");
  6040. else {
  6041. var a = null,
  6042. b = 100,
  6043. c = void 0,
  6044. d = void 0;
  6045. mp.vehicles.forEachInStreamRange(function(e) {
  6046. d = e.position;
  6047. c = mp.game.gameplay.getDistanceBetweenCoords(mp.players.local.position.x,
  6048. mp.players.local.position.y, mp.players.local.position.z, d.x, d.y, d.z, !0);
  6049. c < b && (b = c, a = e)
  6050. });
  6051. if (4 >= b && null != a) selectetEnitity = a, getSelectionChoices("outcar");
  6052. else {
  6053. var e = null;
  6054. entityDistance = 100;
  6055. targets = mp.players.forEachInStreamRange(function(a) {
  6056. a != mp.players.local && (d = a.position, c = mp.game.gameplay.getDistanceBetweenCoords(mp.players.local.position.x, mp.players.local.position.y, mp.players.local.position.z, d.x, d.y, d.z, !0), 3 >= c && entityDistance > c && (entityDistance = c, e = a))
  6057. });
  6058. 3 >= entityDistance && null != e && 1 !=
  6059. e.isInAnyVehicle(!1) ? (mp.game.graphics.notify(e.name), selectetEnitity = e, getSelectionChoices("player")) : getSelectionChoices("self")
  6060. }
  6061. }
  6062. });
  6063.  
  6064. function getSelectionChoices(a) {
  6065. if (0 == Selection.visible) {
  6066. var b = [];
  6067. if ("incar" == a) {
  6068. if (selectetEnitity.getPedInSeat(-1) == mp.players.local.handle && 1 == mp.players.local.isInAnyVehicle(!1)) {
  6069. if (LocalCharacterID == selectetEnitity.getVariable("PRIVATE_VEHICLE_OWNER")) b.push({
  6070. name: "Fahrzeug aufschliessen",
  6071. img: "unlock.svg",
  6072. id: 3,
  6073. type: a
  6074. }), b.push({
  6075. name: "Fahrzeug abschliessen",
  6076. img: "lock.svg",
  6077. id: 2,
  6078. type: a
  6079. }), b.push({
  6080. img: "engine.svg",
  6081. name: "Motor an/aus schalten",
  6082. id: 1,
  6083. type: a
  6084. }), b.push({
  6085. img: "suitcase.svg",
  6086. name: "Kofferraum oeffnen",
  6087. id: 4,
  6088. type: a
  6089. });
  6090. else if (LocalCharacterID == selectetEnitity.getVariable("RENT_VEHICLE_OWNER") || LocalGroupID == selectetEnitity.getVariable("GROUP_VEHICLE_OWNER")) null == selectetEnitity.getVariable("Marker") && (b.push({
  6091. name: "Fahrzeug aufschliessen",
  6092. img: "unlock.svg",
  6093. id: 3,
  6094. type: a
  6095. }), b.push({
  6096. name: "Fahrzeug abschliessen",
  6097. img: "lock.svg",
  6098. id: 2,
  6099. type: a
  6100. })), b.push({
  6101. img: "engine.svg",
  6102. name: "Motor an/aus schalten",
  6103. id: 1,
  6104. type: a
  6105. });
  6106. b.push({
  6107. img: "warning.svg",
  6108. name: "Warnblinker",
  6109. id: 8,
  6110. type: a
  6111. });
  6112. 0 != LocalGroupID && 3 != LocalGroupID || b.push({
  6113. img: "gavel.svg",
  6114. name: "Kofferraum durchsuchen",
  6115. id: 10,
  6116. type: a
  6117. })
  6118. }
  6119. b.push({
  6120. img: "seatbelt.svg",
  6121. name: "Sitzgurt nutzen",
  6122. id: 6,
  6123. type: a
  6124. });
  6125. 1 == FishNets.isLoaded() && null != FishNets.getNearestNet() && (b.push({
  6126. img: "life-ring.svg",
  6127. name: "Fischernetz einholen",
  6128. id: 26,
  6129. type: a
  6130. }), b.push({
  6131. img: "wrench.svg",
  6132. name: "Fischernetz reparieren",
  6133. id: 27,
  6134. type: a
  6135. }))
  6136. } else "outcar" == a ? (LocalCharacterID != selectetEnitity.getVariable("PRIVATE_VEHICLE_OWNER") && LocalCharacterID != selectetEnitity.getVariable("RENT_VEHICLE_OWNER") && LocalGroupID != selectetEnitity.getVariable("GROUP_VEHICLE_OWNER") ||
  6137. null != selectetEnitity.getVariable("Marker") || (b.push({
  6138. name: "Fahrzeug aufschliessen",
  6139. img: "unlock.svg",
  6140. id: 3,
  6141. type: a
  6142. }), b.push({
  6143. name: "Fahrzeug abschliessen",
  6144. img: "lock.svg",
  6145. id: 2,
  6146. type: a
  6147. })), b.push({
  6148. img: "wrench.svg",
  6149. name: "Fahrzeug reparieren",
  6150. id: 5,
  6151. type: a
  6152. }), b.push({
  6153. img: "fuel.svg",
  6154. name: "Fahrzeug betanken",
  6155. id: 7,
  6156. type: a
  6157. }), isPlayerAdmin(mp.players.local.name) && b.push({
  6158. img: "sync.svg",
  6159. name: "Fahrzeug respawnen",
  6160. id: 9,
  6161. type: a
  6162. }), 1 == LocalGroupID && 1 == selectetEnitity.getVariable("GROUP_VEHICLE_OWNER") && b.push({
  6163. img: "archive.svg",
  6164. name: "Fahrzeug beladen",
  6165. id: 11,
  6166. type: a
  6167. }), 0 != LocalGroupID && 3 != LocalGroupID || null != selectetEnitity.getVariable("BlockedVehicle") || b.push({
  6168. img: "anchor.svg",
  6169. name: "Radkralle anbringen",
  6170. id: 12,
  6171. type: a
  6172. }), null != selectetEnitity.getVariable("BlockedVehicle") && b.push({
  6173. img: "cogs.svg",
  6174. name: "Radkralle entfernen",
  6175. id: 12,
  6176. type: a
  6177. })) : "player" == a ? 0 == LocalGroupID || 3 == LocalGroupID ? (b.push({
  6178. img: "exchange.svg",
  6179. name: "Handeln",
  6180. id: 1,
  6181. type: a
  6182. }), b.push({
  6183. img: "address.svg",
  6184. name: "Ausweis zeigen",
  6185. id: 2,
  6186. type: a
  6187. }), b.push({
  6188. img: "search.svg",
  6189. name: "Spieler durchsuchen",
  6190. id: 3,
  6191. type: a
  6192. }), b.push({
  6193. img: "mobile.svg",
  6194. name: "Handynummer zeigen",
  6195. id: 6,
  6196. type: a
  6197. }), b.push({
  6198. img: "gavel.svg",
  6199. name: "Illegales abnehmen",
  6200. id: 7,
  6201. type: a
  6202. }), 0 == selectetEnitity.getHealth() && b.push({
  6203. img: "user-secret.svg",
  6204. name: "Spuren sicherstellen",
  6205. id: 8,
  6206. type: a
  6207. }), b.push({
  6208. img: "star.svg",
  6209. name: "Spieler bewerten",
  6210. id: 9,
  6211. type: a
  6212. })) : b = 1 == LocalGroupID ? [{
  6213. name: "Handelsanfrage stellen",
  6214. img: "exchange.svg",
  6215. id: 1,
  6216. type: a
  6217. }, {
  6218. name: "Ausweis zeigen",
  6219. img: "address.svg",
  6220. id: 2,
  6221. type: a
  6222. }, {
  6223. name: "Spieler heilen",
  6224. img: "medkit.svg",
  6225. id: 4,
  6226. type: a
  6227. }, {
  6228. name: "Spieler wiederbeleben",
  6229. img: "ambulance.svg",
  6230. id: 5,
  6231. type: a
  6232. }, {
  6233. name: "Handynummer zeigen",
  6234. img: "mobile.svg",
  6235. id: 6,
  6236. type: a
  6237. }, {
  6238. img: "star.svg",
  6239. name: "Spieler bewerten",
  6240. id: 9,
  6241. type: a
  6242. }] : [{
  6243. name: "Handelsanfrage stellen",
  6244. img: "exchange.svg",
  6245. id: 1,
  6246. type: a
  6247. }, {
  6248. name: "Ausweis zeigen",
  6249. img: "address.svg",
  6250. id: 2,
  6251. type: a
  6252. }, {
  6253. name: "Handynummer zeigen",
  6254. img: "mobile.svg",
  6255. id: 6,
  6256. type: a
  6257. }, {
  6258. img: "star.svg",
  6259. name: "Spieler bewerten",
  6260. id: 9,
  6261. type: a
  6262. }] : "factoryrob" == a ? b = [{
  6263. name: "Fabrik ausrauben",
  6264. img: "bolt.svg",
  6265. id: 1,
  6266. type: a
  6267. }, {
  6268. name: "Fabrik einnehmen",
  6269. img: "flag.svg",
  6270. id: 2,
  6271. type: a
  6272. }] : "factorycapture" == a ? b = [{
  6273. name: "Fabrik einnehmen",
  6274. img: "flag.svg",
  6275. id: 1,
  6276. type: a
  6277. }] : "self" == a ? b = [{
  6278. name: "User werben User Bonusprogramm",
  6279. img: "trophy.svg",
  6280. id: 1,
  6281. type: a
  6282. }, {
  6283. name: "Spielerinformationen",
  6284. img: "address.svg",
  6285. id: 2,
  6286. type: a
  6287. }] : "raiting" == a && (b = [{
  6288. name: "Verhalten von " + selectetEnitity + " als Gut bewerten",
  6289. img: "smile.svg",
  6290. id: 1,
  6291. type: a
  6292. }, {
  6293. name: "Verhalten von " + selectetEnitity + " als Mittel bewerten",
  6294. img: "meh.svg",
  6295. id: 2,
  6296. type: a
  6297. }, {
  6298. name: "Verhalten von " + selectetEnitity + " als Schlecht bewerten",
  6299. img: "frown.svg",
  6300. id: 3,
  6301. type: a
  6302. }]);
  6303. if (10 < LocalGroupID && "raiting" != a) {
  6304. var c = void 0;
  6305. gangturfs.forEach(function(a, b) {
  6306. 1 == a.isInsideArea() && (c = a)
  6307. });
  6308. c && 1 == c.isInsideArea() && 1 == c.isNearGround() && 0 == c.isOwner(LocalGroupID) && b.push({
  6309. img: "gangwar.svg",
  6310. name: "Ganggebiet Angreifen",
  6311. id: c.id,
  6312. type: "gangarea"
  6313. })
  6314. }
  6315. Selection.mapChoices(b);
  6316. Selection.toggle()
  6317. }
  6318. }
  6319. var EngineLastTick = 0;
  6320. mp.events.add("pickSelection", function(a, b) {
  6321. 1 == Selection.visible && (Selection.toggle(), "incar" == b || "outcar" == b ? 1 == a ? 1E3 <= (new Date).getTime() - EngineLastTick && selectetEnitity.getPedInSeat(-1) == mp.players.local.handle && (LocalCharacterID == selectetEnitity.getVariable("PRIVATE_VEHICLE_OWNER") || LocalCharacterID == selectetEnitity.getVariable("RENT_VEHICLE_OWNER") || LocalGroupID == selectetEnitity.getVariable("GROUP_VEHICLE_OWNER")) && (1 == selectetEnitity.getIsEngineRunning() ? mp.events.callRemote("onClientRequestPrivateVehicleAction",
  6322. "engine_off") : mp.events.callRemote("onClientRequestPrivateVehicleAction", "engine_on")) : 4 == a ? null != selectetEnitity.getVariable("PRIVATE_VEHICLE_OWNER") && (1 == StorageOpen ? requestCloseStorageWindow() : 0 == StorageOpen && mp.events.callRemote("onClientRequestPrivateVehicleStorage", selectetEnitity)) : 26 == a ? null !== FishNets.getNearestNet() && (a = FishNets.getNearestNet(), mp.events.callRemote("onClientPickupFishnet", a.ID)) : 27 == a ? null !== FishNets.getNearestNet() && (a = FishNets.getNearestNet(), mp.events.callRemote("onClientRepairFishnet",
  6323. a.ID)) : mp.events.callRemote("onClientRequestVehicleAction", a, selectetEnitity) : "player" == b ? (b = selectetEnitity.name, 1 == a ? mp.events.callRemote("onClientRequestTrade", b) : 2 == a ? mp.events.callRemote("onClientRequestIdShow", b) : 3 == a ? mp.events.callRemote("onClientRequestSearch", b) : 4 == a ? mp.events.callRemote("onClientRequestHealPlayer", b) : 5 == a ? mp.events.callRemote("onClientRequestRevivePlayer", b) : 6 == a ? mp.events.callRemote("onClientRequestShowPhoneNumber", b) : 7 == a ? mp.events.callRemote("onClientRequestTakeIllegal",
  6324. b) : 8 == a ? mp.events.callRemote("onClientRequestCheckKiller", b) : 9 == a && (selectetEnitity = b, getSelectionChoices("raiting"))) : "factoryrob" == b ? 1 == a ? mp.events.callRemote("onClientRequestFactoryRob") : 2 == a && mp.events.callRemote("onClientRequestFactoryCapture") : "factorycapture" == b ? 1 == a && mp.events.callRemote("onClientRequestFactoryCapture") : "self" == b ? 1 == a ? mp.events.callRemote("onClientRequestUserBonusList") : 2 == a && mp.events.callRemote("onClientRequestSelfData") : "raiting" == b ? 1 == a ? mp.events.callRemote("onClientRequestUpdatePlayerRaiting",
  6325. selectetEnitity, 1) : 2 == a ? mp.events.callRemote("onClientRequestUpdatePlayerRaiting", selectetEnitity, 0) : 3 == a && mp.events.callRemote("onClientRequestUpdatePlayerRaiting", selectetEnitity, -1) : "gangarea" == b && mp.events.callRemote("OnClientRequestGangAreaAttack", a))
  6326. });
  6327. mp.events.add("playHoverSound", function() {
  6328. mp.game.audio.playSoundFrontend(1, "Select_Placed_Prop", "DLC_Dmod_Prop_Editor_Sounds", !0)
  6329. });
  6330. mp.events.add("sentPlayerReferred", function() {
  6331. var a = !0,
  6332. b;
  6333. for (b in Webwindow) "hud" != b && "Trade" != b && "progressbar" != b && "TutorialWindow" != b && "Audio" != b && null != Webwindow[b] && (a = !1, mp.game.graphics.notify(b));
  6334. null == Webwindow.UserWerbenUser && 1 == a && (Webwindow.UserWerbenUser = new CEFBrowser("package://viov/client_ui/html/userbenefits/userbenefits.html", !0), TempArguments.UserWerbenUser1 = 0 >= arguments.length ? void 0 : arguments[0], TempArguments.UserWerbenUser2 = 1 >= arguments.length ? void 0 : arguments[1], TempArguments.UserWerbenUser3 =
  6335. 2 >= arguments.length ? void 0 : arguments[2])
  6336. });
  6337. mp.events.add("initUserBenefitsWindow", function() {
  6338. null != Webwindow.UserWerbenUser && (Webwindow.UserWerbenUser.call("generateTable", TempArguments.UserWerbenUser1), Webwindow.UserWerbenUser.call("generateTimeline", TempArguments.UserWerbenUser2, TempArguments.UserWerbenUser3))
  6339. });
  6340. mp.events.add("closeUserBenefits", function() {
  6341. Webwindow.UserWerbenUser.destroy();
  6342. Webwindow.UserWerbenUser = null
  6343. });
  6344. mp.events.add("askPlayerRaiting", function() {
  6345. 0 == Selection.visible && (selectetEnitity = 0 >= arguments.length ? void 0 : arguments[0], getSelectionChoices("raiting"))
  6346. });
  6347. mp.events.add("playerStartEnterVehicle", function(a, b) {
  6348. 1 == Selection.visible && Selection.toggle()
  6349. });
  6350. var mainCam = null,
  6351. barberHairCuts = {};
  6352. mp.events.add("BarberShopOpen", function() {
  6353. BarberTable = {
  6354. mode: "barber"
  6355. };
  6356. BarberTable.money = 0 >= arguments.length ? void 0 : arguments[0];
  6357. barberHairCuts = JSON.parse(1 >= arguments.length ? void 0 : arguments[1]);
  6358. BarberTable.items = barberHairCuts;
  6359. TempArguments.Dealer = {};
  6360. TempArguments.Dealer["1"] = lang_de.items;
  6361. TempArguments.Dealer["2"] = JSON.stringify(BarberTable);
  6362. Webwindow.BarberWindow = new CEFBrowser("package://viov/client_ui/html/dealer/dealer.html", !0);
  6363. disableAllControls = !0;
  6364. mp.players.local.setRotation(0, 0, 175, 1, !0);
  6365. mainCam = mp.cameras.new("Barber", new mp.Vector3(-1281.378, -1117.5, 8.25), new mp.Vector3, 50);
  6366. mainCam.pointAt(mp.players.local.handle, 0, 0, 0, !0);
  6367. mainCam.setActive(!0);
  6368. mp.game.cam.renderScriptCams(!0, !1, 0, !0, !1)
  6369. });
  6370. mp.events.add("requestCloseDealerBarberShop", function(a) {
  6371. "BarberShop" == a && null != Webwindow.BarberWindow && (Webwindow.BarberWindow.destroy(), Webwindow.BarberWindow = null, disableAllControls = !1, mainCam.setActive(!1), mainCam.destroy(), mp.game.cam.renderScriptCams(!1, !1, 0, !0, !1), mp.events.callRemote("requestBarberShopCancel"))
  6372. });
  6373. mp.events.add("requestTryDealerBarberShop", function(a, b, c) {
  6374. "BarberShop" == a && (mp.game.invoke("0x03924C68EFCBC511", mp.players.local, 2, Number(barberHairCuts[c].drawable), Number(barberHairCuts[c].texture), 0), Webwindow.BarberWindow.call("vio._callEvent", "dealer:update", !1))
  6375. });
  6376. mp.events.add("requestBuyDealerBarberShop", function(a, b, c) {
  6377. "BarberShop" == a && null != Webwindow.BarberWindow && (Webwindow.BarberWindow.destroy(), Webwindow.BarberWindow = null, disableAllControls = !1, mp.events.callRemote("requestBarberShopBuy", b))
  6378. });
  6379. mp.events.add("ShopOpen", function() {
  6380. if (null == Webwindow.ShopWindow) {
  6381. Webwindow.ShopWindow = !1;
  6382. var a = {
  6383. mode: "buy"
  6384. };
  6385. a.money = 0 >= arguments.length ? void 0 : arguments[0];
  6386. a.items = JSON.parse(1 >= arguments.length ? void 0 : arguments[1]);
  6387. TempArguments.Dealer = {};
  6388. TempArguments.Dealer["1"] = lang_de.items;
  6389. TempArguments.Dealer["2"] = a;
  6390. Webwindow.ShopWindow = new CEFBrowser("package://viov/client_ui/html/dealer/dealer.html", !0)
  6391. }
  6392. });
  6393. mp.events.add("BonusShopOpen", function(a) {
  6394. null == Webwindow.BonusShop && (TempArguments.BonusShop = a, Webwindow.BonusShop = new CEFBrowser("package://viov/client_ui/html/bonusshop/bonusshop.html", !0))
  6395. });
  6396. mp.events.add("initBonusShopWindow", function() {
  6397. null != Webwindow.BonusShop && null != TempArguments.BonusShop && Webwindow.BonusShop.call("vio._callEvent", "bonusshop:init", TempArguments.BonusShop)
  6398. });
  6399. mp.events.add("requestCloseBonusShop", function() {
  6400. null != Webwindow.BonusShop && (Webwindow.BonusShop.destroy(), Webwindow.BonusShop = null)
  6401. });
  6402. mp.events.add("requestBuyBonusShop", function(a, b) {
  6403. 1 == a && (null != Webwindow.BonusShop && (Webwindow.BonusShop.destroy(), Webwindow.BonusShop = null), mp.events.callRemote("OnClientRequestBonusShopAction", 1, ""))
  6404. });
  6405. mp.events.add("RentOpen", function() {
  6406. if (null == Webwindow.RentWindow) {
  6407. Webwindow.RentWindow = !1;
  6408. var a = {
  6409. mode: "rent"
  6410. };
  6411. a.money = InventoryItems["0"];
  6412. a.items = JSON.parse(0 >= arguments.length ? void 0 : arguments[0]);
  6413. TempArguments.Dealer = {};
  6414. TempArguments.Dealer["1"] = lang_de.items;
  6415. TempArguments.Dealer["2"] = a;
  6416. Webwindow.RentWindow = new CEFBrowser("package://viov/client_ui/html/dealer/dealer.html", !0)
  6417. }
  6418. });
  6419. mp.events.add("HayesAutosOpen", function() {
  6420. if (null == Webwindow.HayesAutos) {
  6421. Webwindow.HayesAutos = !1;
  6422. var a = {
  6423. mode: "HayesAutos"
  6424. };
  6425. a.money = 0 >= arguments.length ? void 0 : arguments[0];
  6426. a.items = JSON.parse(1 >= arguments.length ? void 0 : arguments[1]);
  6427. TempArguments.Dealer = {};
  6428. TempArguments.Dealer["1"] = lang_de.items;
  6429. TempArguments.Dealer["2"] = a;
  6430. Webwindow.HayesAutos = new CEFBrowser("package://viov/client_ui/html/dealer/dealer.html", !0)
  6431. }
  6432. });
  6433. mp.events.add("requestCloseDealerShop", function() {
  6434. null != Webwindow.ShopWindow && (Webwindow.ShopWindow.destroy(), Webwindow.ShopWindow = null)
  6435. });
  6436. mp.events.add("requestCloseDealerRent", function() {
  6437. null != Webwindow.RentWindow && (Webwindow.RentWindow.destroy(), Webwindow.RentWindow = null)
  6438. });
  6439. mp.events.add("requestCloseDealerHayesAutos", function() {
  6440. null != Webwindow.HayesAutos && (Webwindow.HayesAutos.destroy(), Webwindow.HayesAutos = null)
  6441. });
  6442. mp.events.add("requestBuyDealerHayesAutos", function(a, b, c) {
  6443. "HayesAutos" == a && (mp.events.callRemote("requestHayesAutos", b), null != Webwindow.HayesAutos && (Webwindow.HayesAutos.destroy(), Webwindow.HayesAutos = null))
  6444. });
  6445. mp.events.add("requestBuyDealerShop", function(a, b, c) {
  6446. "Shop" == a && (null != Webwindow.ShopWindow && (Webwindow.ShopWindow.destroy(), Webwindow.ShopWindow = null), mp.events.callRemote("requestShopBuy", b))
  6447. });
  6448. mp.events.add("requestBuyDealerRent", function(a, b, c) {
  6449. "Rent" == a && (mp.events.callRemote("requestVehicleRent", b), null != Webwindow.RentWindow && (Webwindow.RentWindow.destroy(), Webwindow.RentWindow = null))
  6450. });
  6451. mp.events.add("initDealerWindow", function() {
  6452. void 0 != TempArguments.Dealer && (null != Webwindow.GunCraftWindow && Webwindow.GunCraftWindow.call("vio._callEvent", "dealer:init", "GunCraftWindow", TempArguments.Dealer["1"], TempArguments.Dealer["2"]), null != Webwindow.ShopWindow && Webwindow.ShopWindow.call("vio._callEvent", "dealer:init", "Shop", TempArguments.Dealer["1"], JSON.stringify(TempArguments.Dealer["2"])), null != Webwindow.RentWindow && Webwindow.RentWindow.call("vio._callEvent", "dealer:init", "Rent", TempArguments.Dealer["1"],
  6453. JSON.stringify(TempArguments.Dealer["2"])), null != Webwindow.HayesAutos && Webwindow.HayesAutos.call("vio._callEvent", "dealer:init", "HayesAutos", TempArguments.Dealer["1"], JSON.stringify(TempArguments.Dealer["2"])), null != Webwindow.GunWindow && Webwindow.GunWindow.call("vio._callEvent", "dealer:init", "GunShop", TempArguments.Dealer["1"], TempArguments.Dealer["2"]), null != Webwindow.ClothesDetailWindow && Webwindow.ClothesDetailWindow.call("vio._callEvent", "dealer:init", "ClothesShopDetail", JSON.parse(TempArguments.Dealer["1"]),
  6454. TempArguments.Dealer["2"]), null != Webwindow.ClothesWindow && Webwindow.ClothesWindow.call("vio._callEvent", "dealer:init", "ClothesShop", JSON.parse(TempArguments.Dealer["1"]), TempArguments.Dealer["2"]), null != Webwindow.CarShopWindow && (Webwindow.CarShopWindow.call("vio._callEvent", "dealer:init", "CarShop", TempArguments.Dealer["1"], TempArguments.Dealer["2"]), Webwindow.CarShopWindow.position(290, 491, "dealerwindow")), null != Webwindow.BarberWindow && Webwindow.BarberWindow.call("vio._callEvent", "dealer:init", "BarberShop",
  6455. TempArguments.Dealer["1"], JSON.stringify(TempArguments.Dealer["2"])));
  6456. null != TempArguments.TownHall && null != Webwindow.TownHallWindow && Webwindow.TownHallWindow.call("vio._callEvent", "dealer:init", "TownHall", TempArguments.TownHall["1"], TempArguments.TownHall["2"]);
  6457. TempArguments = {}
  6458. });
  6459. var CarHouseTable = [],
  6460. CarHouses = 11,
  6461. CarHouse = 0,
  6462. CarHouseTempVehicle = null;
  6463. mp.events.add("CarShopInit", function(a) {
  6464. a = JSON.parse(a);
  6465. for (var b = 1; b <= CarHouses; b++) {
  6466. CarHouseTable[b] = {};
  6467. CarHouseTable[b].items = {};
  6468. CarHouseTable[b].mode = "buy";
  6469. CarHouseTable[b].money = 0;
  6470. for (var c in a) a[c].Shop == b && (CarHouseTable[b].items[c] = {
  6471. price: a[c].Price,
  6472. name: a[c].Name,
  6473. hash: a[c].Hash,
  6474. modelName: a[c].ModelName,
  6475. drawable: !0
  6476. })
  6477. }
  6478. });
  6479.  
  6480. function sleep(a) {
  6481. for (var b = (new Date).getTime(), c = 0; 1E7 > c && !((new Date).getTime() - b > a); c++);
  6482. }
  6483.  
  6484. function onGround() {
  6485. CarHouseTempVehicle.setOnGroundProperly()
  6486. }
  6487. var carshopCam;
  6488. mp.events.add("CarShopOpen", function(a, b) {
  6489. null != a && (CarHouseTable[Number(a)].money = b);
  6490. CarHouse = Number(a);
  6491. var c;
  6492. for (c in CarHouseTable[CarHouse].items) {
  6493. var d = CarHouseTable[CarHouse].items[c].modelName;
  6494. break
  6495. }
  6496. CarHouseTempVehicle = mp.vehicles.new(mp.game.joaat(d), new mp.Vector3(-336.1386, -134.9311, 38.8));
  6497. CarHouseTempVehicle.setRotation(0, 0, -105, 1, !0);
  6498. CarHouseTempVehicle.freezePosition(!0);
  6499. CarHouseTempVehicle.setDoorsLocked(2);
  6500. CarHouseTempVehicle.setDeformationFixed();
  6501. CarHouseTempVehicle.setProofs(!0, !0, !0, !0, !0, !0, !0, !0);
  6502. setTimeout(onGround, 300);
  6503. CarHouseTempVehicle.setOnGroundProperly();
  6504. disableAllControls = !0;
  6505. carshopCam = mp.cameras.new("Carshop", new mp.Vector3(-332, -141.5, 39.4), new mp.Vector3(0, 0, 0), 50);
  6506. carshopCam.pointAt(CarHouseTempVehicle.handle, 0, 0, 0, !0);
  6507. carshopCam.setActive(!0);
  6508. mp.game.cam.renderScriptCams(!0, !1, 0, !0, !1);
  6509. isPlayerOnTuningPlace = !0;
  6510. CarHouseTable[CarHouse].mode = "carshop";
  6511. CarHouseTable[CarHouse].money = InventoryItems["0"];
  6512. setTimeout(resetPos, 500);
  6513. TempArguments.Dealer = {};
  6514. TempArguments.Dealer["1"] =
  6515. lang_de.items;
  6516. TempArguments.Dealer["2"] = JSON.stringify(CarHouseTable[CarHouse]);
  6517. setTimeout(CarShopOpenInit, 800)
  6518. });
  6519.  
  6520. function CarShopOpenInit() {
  6521. Webwindow.CarShopWindow = new CEFBrowser("package://viov/client_ui/html/dealer/dealer.html", !0)
  6522. }
  6523. mp.events.add("requestCloseDealerCarShop", function(a) {
  6524. "CarShop" == a && (Webwindow.CarShopWindow.destroy(), mp.events.callRemote("requestCarShopClose", CarHouse), Webwindow.CarShopWindow = null, isPlayerOnTuningPlace = disableAllControls = !1, carshopCam.setActive(!1), carshopCam.destroy(), mp.game.cam.renderScriptCams(!1, !1, 0, !0, !1), null != CarHouseTempVehicle && (CarHouseTempVehicle.destroy(), CarHouseTempVehicle = null))
  6525. });
  6526.  
  6527. function resetPos(a, b) {
  6528. "plus" == a && (CarHouseTempVehicle.position = new mp.Vector3(-336.1386, -134.9311, 38.8 + b));
  6529. "minus" == a && (CarHouseTempVehicle.position = new mp.Vector3(-336.1386, -134.9311, 38.8 - b))
  6530. }
  6531. mp.events.add("requestTryDealerCarShop", function(a, b, c) {
  6532. "CarShop" == a && null != CarHouseTempVehicle && (a = CarHouseTable[CarHouse].items[c].modelName, CarHouseTempVehicle.destroy(), CarHouseTempVehicle = mp.vehicles.new(mp.game.joaat(CarHouseTable[CarHouse].items[c].modelName), new mp.Vector3(-336.1386, -134.9311, 38.8)), CarHouseTempVehicle.freezePosition(!0), CarHouseTempVehicle.setRotation(0, 0, -105, 1, !0), CarHouseTempVehicle.setDoorsLocked(2), CarHouseTempVehicle.setDeformationFixed(), CarHouseTempVehicle.setProofs(!0, !0, !0, !0, !0, !0, !0, !0), CarHouseTempVehicle.setOnGroundProperly(), "Rumpo3" == a ? (CarHouseTempVehicle.position = new mp.Vector3(-336.1386, -134.9311, 39.3), CarHouseTempVehicle.setRotation(-.05, -.13, -105.1, 1, !0)) : "Dinghy" == a ? CarHouseTempVehicle.position = new mp.Vector3(-336.1386, -134.9311, 38.3) : "Seashark" == a ? CarHouseTempVehicle.position = new mp.Vector3(-336.1386, -134.9311, 38.05) : "Maverick" == a ? (CarHouseTempVehicle.position = new mp.Vector3(-336.1386, -134.9311, 39.3), CarHouseTempVehicle.setRotation(-.05, -.13, -105.1,
  6533. 1, !0)) : "Vestra" == a ? (CarHouseTempVehicle.position = new mp.Vector3(-336.1386, -134.9311, 39.3), CarHouseTempVehicle.setRotation(-.05, -.13, -105.1, 1, !0)) : "Squalo" == a ? CarHouseTempVehicle.position = new mp.Vector3(-336.1386, -134.9311, 38.8) : "Tropic" == a && (CarHouseTempVehicle.position = new mp.Vector3(-336.1386, -134.9311, 38.8)), carshopCam.pointAt(CarHouseTempVehicle.handle, 0, 0, 0, !0), carshopCam.setActive(!0), mp.game.cam.renderScriptCams(!0, !1, 0, !0, !1), Webwindow.CarShopWindow.call("vio._callEvent", "dealer:update", !1))
  6534. });
  6535. mp.events.add("requestBuyDealerCarShop", function(a, b, c) {
  6536. "CarShop" == a && (Webwindow.CarShopWindow.destroy(), Webwindow.CarShopWindow = null, isPlayerOnTuningPlace = disableAllControls = !1, carshopCam.setActive(!1), carshopCam.destroy(), mp.game.cam.renderScriptCams(!1, !1, 0, !0, !1), null != CarHouseTempVehicle && (CarHouseTempVehicle.destroy(), CarHouseTempVehicle = null), mp.events.callRemote("requestCarShopBuy", b, CarHouse))
  6537. });
  6538. var ClothesLanguage = {},
  6539. ClothesTable = {},
  6540. clothesCam;
  6541.  
  6542. function ClothesShopOpen() {
  6543. ClothesTable = {
  6544. mode: "buy"
  6545. };
  6546. ClothesTable.money = InventoryItems["0"];
  6547. ClothesTable.items = {};
  6548. ClothesTable.items[4] = {};
  6549. ClothesTable.items[4].name = "Legs";
  6550. ClothesTable.items[4].price = 0;
  6551. ClothesTable.items[4].select = 4;
  6552. ClothesTable.items[6] = {};
  6553. ClothesTable.items[6].name = "Feet";
  6554. ClothesTable.items[6].price = 0;
  6555. ClothesTable.items[6].select = 6;
  6556. ClothesTable.items[11] = {};
  6557. ClothesTable.items[11].name = "Tops";
  6558. ClothesTable.items[11].price = 0;
  6559. ClothesTable.items[11].select = 11;
  6560. TempArguments.Dealer = {};
  6561. TempArguments.Dealer["1"] = JSON.stringify(ClothesLanguage);
  6562. TempArguments.Dealer["2"] = JSON.stringify(ClothesTable);
  6563. Webwindow.ClothesWindow = new CEFBrowser("package://viov/client_ui/html/dealer/dealer.html", !0)
  6564. }
  6565.  
  6566. function ClothesShopDetailOpen(a) {
  6567. if (null == Webwindow.ClothesDetailWindow) {
  6568. ClothesTable = {
  6569. mode: "buy"
  6570. };
  6571. ClothesTable.money = InventoryItems["0"];
  6572. ClothesTable.items = {};
  6573. var b = 0;
  6574. 1885233650 == mp.players.local.getModel() && (b = 1);
  6575. a = JSON.parse(a);
  6576. if (4 == ClothesShopDetail || 6 == ClothesShopDetail) {
  6577. var c = 0,
  6578. d;
  6579. for (d in a)
  6580. if (Number(a[d].gender) == b)
  6581. for (var e = 0; e <= a[d].texture; e++) ClothesTable.items[c] = {}, ClothesTable.items[c].slot = a[d].slot, ClothesTable.items[c].drawable = a[d].drawable, ClothesTable.items[c].texture = e, ClothesTable.items[c].price =
  6582. a[d].price, ClothesTable.items[c].id = c, ClothesTable.items[c].name = a[d].drawable.toString() + " - " + e.toString(), c += 1
  6583. } else if (11 == ClothesShopDetail)
  6584. for (e in c = 0, a)
  6585. if (Number(a[e].gender) == b)
  6586. for (d = 0; d <= a[e].topstex; d++) ClothesTable.items[c] = {}, ClothesTable.items[c].id = c, ClothesTable.items[c].slot = a[e].slot, ClothesTable.items[c].drawable = 1, ClothesTable.items[c].tops = a[e].tops, ClothesTable.items[c].topstex = d, ClothesTable.items[c].undershirt = a[e].undershirt, ClothesTable.items[c].undershirttex = 0, ClothesTable.items[c].torso =
  6587. a[e].torso, ClothesTable.items[c].price = a[e].price, ClothesTable.items[c].name = a[e].tops + " - " + a[e].undershirt, c += 1;
  6588. TempArguments.Dealer = {};
  6589. TempArguments.Dealer["1"] = JSON.stringify(ClothesLanguage);
  6590. TempArguments.Dealer["2"] = JSON.stringify(ClothesTable);
  6591. Webwindow.ClothesDetailWindow = new CEFBrowser("package://viov/client_ui/html/dealer/dealer.html", !0)
  6592. }
  6593. }
  6594. mp.events.add("requestCloseDealerClothesShopDetail", function(a) {
  6595. "ClothesShopDetail" == a && null != Webwindow.ClothesDetailWindow && (Webwindow.ClothesDetailWindow.destroy(), Webwindow.ClothesDetailWindow = null, mp.events.callRemote("requestClothesShop"))
  6596. });
  6597. mp.events.add("requestCloseDealerClothesShop", function(a) {
  6598. "ClothesShop" == a && null != Webwindow.ClothesWindow && (Webwindow.ClothesWindow.destroy(), Webwindow.ClothesWindow = null, clothesCam.setActive(!1), clothesCam.destroy(), mp.game.cam.renderScriptCams(!1, !1, 0, !0, !1), disableAllControls = !1, mp.events.callRemote("requestCloseClothesShopDetail"))
  6599. });
  6600. mp.events.add("requestTryDealerClothesShopDetail", function(a, b, c) {
  6601. "ClothesShopDetail" == a && (11 == Number(ClothesTable.items[c].slot) ? (mp.players.local.setComponentVariation(11, Number(ClothesTable.items[c].tops), Number(ClothesTable.items[c].topstex), 2), mp.players.local.setComponentVariation(8, Number(ClothesTable.items[c].undershirt), Number(ClothesTable.items[c].undershirttex), 2), mp.players.local.setComponentVariation(3, Number(ClothesTable.items[c].torso), 0, 2)) : mp.players.local.setComponentVariation(Number(ClothesTable.items[c].slot),
  6602. Number(ClothesTable.items[c].drawable), Number(ClothesTable.items[c].texture), 2), Webwindow.ClothesDetailWindow.call("vio._callEvent", "dealer:update", !1))
  6603. });
  6604. mp.events.add("requestSelectDealerClothesShop", function(a, b, c) {
  6605. "ClothesShop" == a && null != Webwindow.ClothesWindow && (Webwindow.ClothesWindow.destroy(), Webwindow.ClothesWindow = null, ClothesShopDetail = Number(c), mp.events.callRemote("requestClothesShopDetail", c))
  6606. });
  6607. var ClothesShopDetail = 0;
  6608. mp.events.add("requestBuyDealerClothesShopDetail", function(a, b, c) {
  6609. "ClothesShopDetail" == a && (Webwindow.ClothesDetailWindow.destroy(), Webwindow.ClothesDetailWindow = null, 6 == Number(ClothesTable.items[c].slot) || 4 == Number(ClothesTable.items[c].slot) ? mp.events.callRemote("requestBuyClothesShopDetail", Number(ClothesTable.items[c].id), Number(ClothesTable.items[c].slot), Number(ClothesTable.items[c].drawable), Number(ClothesTable.items[c].texture), Number(ClothesTable.items[c].price), 0, 0, 0) : mp.events.callRemote("requestBuyClothesShopDetail",
  6610. Number(ClothesTable.items[c].id), Number(ClothesTable.items[c].slot), Number(ClothesTable.items[c].tops), Number(ClothesTable.items[c].topstex), Number(ClothesTable.items[c].undershirt), Number(ClothesTable.items[c].undershirttex), Number(ClothesTable.items[c].torso), Number(ClothesTable.items[c].price)))
  6611. });
  6612. mp.events.add("ClothesShopOpenNew", function() {
  6613. ClothesLanguage = lang_de.items;
  6614. ClothesShopOpen();
  6615. disableAllControls = !0;
  6616. mp.players.local.position = new mp.Vector3(132.159, -211.7974, 54.5578);
  6617. mp.players.local.setRotation(0, 0, 106.0372, 1, !0);
  6618. clothesCam = mp.cameras.new("ClothesCam", new mp.Vector3(130.159, -211.7974 - .8, 54.8578), new mp.Vector3, 50);
  6619. clothesCam.pointAtCoord(132.159, -211.7974 - .8, 54.8578);
  6620. clothesCam.setActive(!0);
  6621. mp.game.cam.renderScriptCams(!0, !1, 0, !0, !1)
  6622. });
  6623. mp.events.add("ClothesShopOpen", function() {
  6624. ClothesShopOpen()
  6625. });
  6626. mp.events.add("ClothesShopDetailOpen", function() {
  6627. mp.players.local.setRotation(0, 0, 106.0372, 1, !0);
  6628. 11 == ClothesShopDetail ? (clothesCam.setCoord(130.159, -211.7974 - .8, 54.8578), clothesCam.pointAtCoord(132.159, -211.7974 - .8, 54.8578)) : 4 == ClothesShopDetail ? (clothesCam.setCoord(130.159, -211.7974 - .8, 54.2578), clothesCam.pointAtCoord(132.159, -211.7974 - .8, 54.2578)) : 6 == ClothesShopDetail && (clothesCam.setCoord(130.159, -211.7974 - .8, 54.0578), clothesCam.pointAtCoord(132.159, -211.7974 - .8, 54.0578));
  6629. ClothesShopDetailOpen(0 >=
  6630. arguments.length ? void 0 : arguments[0])
  6631. });
  6632. mp.events.add("GunShopOpen", function() {
  6633. if (null == Webwindow.GunWindow) {
  6634. Webwindow.GunWindow = !1;
  6635. disableAllControls = !0;
  6636. var a = {
  6637. mode: "buy"
  6638. };
  6639. a.money = 0 >= arguments.length ? void 0 : arguments[0];
  6640. a.items = JSON.parse(1 >= arguments.length ? void 0 : arguments[1]);
  6641. TempArguments.Dealer = {};
  6642. TempArguments.Dealer["1"] = lang_de.items;
  6643. TempArguments.Dealer["2"] = JSON.stringify(a);
  6644. Webwindow.GunWindow = new CEFBrowser("package://viov/client_ui/html/dealer/dealer.html", !0)
  6645. }
  6646. });
  6647. mp.events.add("TownHallOpen", function() {
  6648. if (null == Webwindow.TownHallWindow) {
  6649. Webwindow.TownHallWindow = !1;
  6650. disableAllControls = !0;
  6651. var a = {
  6652. mode: "buy"
  6653. };
  6654. a.money = 0 >= arguments.length ? void 0 : arguments[0];
  6655. a.items = JSON.parse(1 >= arguments.length ? void 0 : arguments[1]);
  6656. TempArguments.TownHall = {};
  6657. TempArguments.TownHall["1"] = lang_de.items;
  6658. TempArguments.TownHall["2"] = JSON.stringify(a);
  6659. Webwindow.TownHallWindow = new CEFBrowser("package://viov/client_ui/html/dealer/dealer.html", !0)
  6660. }
  6661. });
  6662. mp.events.add("requestCloseDealerGunShop", function(a) {
  6663. "GunShop" == a && (Webwindow.GunWindow.active(!1), setTimeout(function() {
  6664. null != Webwindow.GunWindow && (Webwindow.GunWindow.destroy(), Webwindow.GunWindow = null, disableAllControls = !1)
  6665. }, 10))
  6666. });
  6667. mp.events.add("requestCloseDealerTownHall", function(a) {
  6668. "TownHall" == a && (Webwindow.TownHallWindow.active(!1), setTimeout(function() {
  6669. null != Webwindow.TownHallWindow && (Webwindow.TownHallWindow.destroy(), Webwindow.TownHallWindow = null, disableAllControls = !1)
  6670. }, 10))
  6671. });
  6672. mp.events.add("requestBuyDealerGunShop", function(a, b, c) {
  6673. "GunShop" == a && (Webwindow.GunWindow.active(!1), setTimeout(function() {
  6674. mp.events.callRemote("requestGunShopBuy", b);
  6675. null != Webwindow.GunWindow && (Webwindow.GunWindow.destroy(), Webwindow.GunWindow = null, disableAllControls = !1)
  6676. }, 10))
  6677. });
  6678. mp.events.add("requestBuyDealerTownHall", function(a, b, c) {
  6679. "TownHall" == a && (Webwindow.TownHallWindow.active(!1), setTimeout(function() {
  6680. mp.events.callRemote("requestTownHallBuy", b);
  6681. null != Webwindow.TownHallWindow && (Webwindow.TownHallWindow.destroy(), Webwindow.TownHallWindow = null, disableAllControls = !1)
  6682. }, 10))
  6683. });
  6684. var moneypersecond = 8,
  6685. maxmoney = 800,
  6686. showmoneyinterval = 5,
  6687. maxmsforpolicerob = 24E4,
  6688. maxmsforgangshoprob = 48E4,
  6689. pedrobclasses = [],
  6690. robrunning = [],
  6691. robbingclass = null,
  6692. lasttrigger = 0,
  6693. robcounter = 0,
  6694. lastrobid = -1,
  6695. robstarttick = 0,
  6696. gotproductinfo = [],
  6697. poscheckedattime = [],
  6698. pedRob = function(a, b, c) {
  6699. this.ped = vioPeds[a];
  6700. this.pos = this.ped._pos;
  6701. this.rot = this.ped._rot;
  6702. this.task = b;
  6703. null == pedrobclasses[b] && (pedrobclasses[b] = []);
  6704. this.id = pedrobclasses[b].length;
  6705. pedrobclasses[b][this.id] = this;
  6706. this.i = robcounter;
  6707. this.robID = c;
  6708. robcounter++
  6709. };
  6710. pedRob.prototype.startRob = function() {
  6711. robrunning[this.i] = !0;
  6712. poscheckedattime = []
  6713. };
  6714. pedRob.prototype.stopRob = function() {
  6715. robrunning[this.i] = null;
  6716. lastrobid = -1
  6717. };
  6718. var getNextPedRobClass = function() {
  6719. for (var a in pedrobclasses)
  6720. if (null != pedrobclasses[a][0])
  6721. for (var b = 0; b < pedrobclasses[a].length; b++)
  6722. if (3 >= mp.game.gameplay.getDistanceBetweenCoords(mp.players.local.position.x, mp.players.local.position.y, mp.players.local.position.z, pedrobclasses[a][b].pos.x, pedrobclasses[a][b].pos.y, pedrobclasses[a][b].pos.z, !0)) return lastrobid = pedrobclasses[a][b].i, pedrobclasses[a][b];
  6723. return null
  6724. },
  6725. getPedClassByTaskAndID = function(a, b) {
  6726. return null != pedrobclasses[b] ? pedrobclasses[b][a] :
  6727. null
  6728. };
  6729.  
  6730. function isBlockedWeapon(a) {
  6731. return -1 != [2343591895, 2725352035].indexOf(a) ? !0 : !1
  6732. }
  6733. mp.keys.bind(69, !1, function() {
  6734. if (null == robbingclass) {
  6735. var a = (new Date).getTime();
  6736. !mp.game.controls.isControlPressed(2, 25) || -1 != lastrobid && null != robrunning[lastrobid] || !(0 == lasttrigger || 1E3 < a - lasttrigger) || 0 != mp.players.local.isInAnyVehicle(!0) || isBlockedWeapon(mp.players.local.weapon) || (lasttrigger = a, a = getNextPedRobClass(), null != a && mp.events.callRemote("StartPedRobServer", a.robID, a.task))
  6737. }
  6738. });
  6739. var stopOwnRob = function() {
  6740. robbingclass = null;
  6741. robstarttick = 0;
  6742. mp.events.callRemote("StopPedRobServer")
  6743. };
  6744. mp.events.add("render", function() {
  6745. if (null != robbingclass) {
  6746. var a = (new Date).getTime() - robstarttick;
  6747. if (null == poscheckedattime[Math.floor(a / 400)]) {
  6748. var b = mp.players.local.position;
  6749. if (7 < mp.game.gameplay.getDistanceBetweenCoords(b.x, b.y, b.z, robbingclass.pos.x, robbingclass.pos.y, robbingclass.pos.z, !0)) {
  6750. stopOwnRob();
  6751. return
  6752. }
  6753. if (1 == mp.players.local.isInAnyVehicle(!0)) {
  6754. stopOwnRob();
  6755. return
  6756. }
  6757. if (0 == mp.players.local.getHealth()) {
  6758. stopOwnRob();
  6759. return
  6760. }
  6761. poscheckedattime[Math.floor(a / 400)] = !0
  6762. }
  6763. switch (robbingclass.task) {
  6764. case "shoprob":
  6765. b =
  6766. Math.floor(a / 1E3 * moneypersecond);
  6767. b >= maxmoney && null == gotproductinfo[0] ? (b = maxmoney, gotproductinfo[0] = !0, mp.game.audio.playSoundFrontend(1, "LOCAL_PLYR_CASH_COUNTER_COMPLETE", "DLC_HEISTS_GENERAL_FRONTEND_SOUNDS", !0), mp.game.graphics.notify("$" + b + " - du hast die Kasse leer ger\u00e4umt!")) : b < maxmoney && 0 != b && a / 1E3 >= showmoneyinterval && null == gotproductinfo[Math.floor(a / 1E3 / showmoneyinterval)] && (gotproductinfo[Math.floor(a / 1E3 / showmoneyinterval)] = !0, mp.game.audio.playSoundFrontend(1, "LOCAL_PLYR_CASH_COUNTER_INCREASE",
  6768. "DLC_HEISTS_GENERAL_FRONTEND_SOUNDS", !0), mp.game.graphics.notify("$" + b));
  6769. break;
  6770. case "policerob":
  6771. a >= maxmsforpolicerob && null == gotproductinfo[0] && (gotproductinfo[0] = !0, mp.game.audio.playSoundFrontend(1, "LOCAL_PLYR_CASH_COUNTER_COMPLETE", "DLC_HEISTS_GENERAL_FRONTEND_SOUNDS", !0), stopOwnRob());
  6772. break;
  6773. case "ammorob":
  6774. a >= maxmsforpolicerob && null == gotproductinfo[0] && (gotproductinfo[0] = !0, mp.game.audio.playSoundFrontend(1, "LOCAL_PLYR_CASH_COUNTER_COMPLETE", "DLC_HEISTS_GENERAL_FRONTEND_SOUNDS", !0), stopOwnRob());
  6775. break;
  6776. case "gangseller":
  6777. a >= maxmsforgangshoprob && null == gotproductinfo[0] && (gotproductinfo[0] = !0, mp.game.audio.playSoundFrontend(1, "LOCAL_PLYR_CASH_COUNTER_COMPLETE", "DLC_HEISTS_GENERAL_FRONTEND_SOUNDS", !0), stopOwnRob())
  6778. }
  6779. }
  6780. });
  6781. mp.events.add("StartPedRobClient", function() {
  6782. var a = getPedClassByTaskAndID(0 >= arguments.length ? void 0 : arguments[0], 1 >= arguments.length ? void 0 : arguments[1]);
  6783. null != a && a.startRob()
  6784. });
  6785. mp.events.add("StartYourPedRobClient", function() {
  6786. var a = 0 >= arguments.length ? void 0 : arguments[0],
  6787. b = 1 >= arguments.length ? void 0 : arguments[1];
  6788. gotproductinfo = [];
  6789. robbingclass = getPedClassByTaskAndID(a, b);
  6790. robstarttick = (new Date).getTime();
  6791. mp.game.audio.playSoundFrontend(1, "GO_NON_RACE", "HUD_MINI_GAME_SOUNDSET", !0)
  6792. });
  6793. mp.events.add("StopPedRobClient", function() {
  6794. var a = getPedClassByTaskAndID(0 >= arguments.length ? void 0 : arguments[0], 1 >= arguments.length ? void 0 : arguments[1]);
  6795. null != a && a.stopRob()
  6796. });
  6797. var VehicleFuel = 100;
  6798. mp.events.add("GasstationOpen", function() {
  6799. for (var a = arguments.length, b = Array(a), c = 0; c < a; c++) b[c] = arguments[c];
  6800. null != Webwindow.GasstationWindow || 0 != disableAllControls || 1 != mp.players.local.isInAnyVehicle(!0) || 1 == mp.players.local.isDead() || 20 <= mp.players.local.vehicle.getSpeed() || mp.players.local.vehicle.getPedInSeat(-1) != mp.players.local.handle || (disableAllControls = !0, a = {}, a.money = InventoryItems["0"], a.gasstation = "Tanktelle", a.username = "Forces", a.cartype = "", a.maxfuel = 50, a.currentfuel = VehicleFuel, b =
  6801. b[0].replace(",", "."), a.fuelprice = Number(b), a.canisterprice = 135, a.snackprice = 7, TempArguments.Gasstation = {}, TempArguments.Gasstation["1"] = lang_de.window_gasstation, TempArguments.Gasstation["2"] = JSON.stringify(a), Webwindow.GasstationWindow = new CEFBrowser("package://viov/client_ui/html/gasstation/gasstation.html", !0), b = mp.players.local.vehicle, null != b && (b.freezePosition(!0), a = b.getRotation(2), b.setRotation(new mp.Vector3(0, 0, a.Z))))
  6802. });
  6803. mp.events.add("GasstationUpdate", function() {
  6804. if (1 == mp.players.local.isDead() || null == Webwindow.GasstationWindow) {
  6805. null != Webwindow.GasstationWindow && (Webwindow.GasstationWindow.destroy(), Webwindow.GasstationWindow = null);
  6806. disableAllControls = !1;
  6807. var a = mp.players.local.vehicle;
  6808. null != a && a.freezePosition(!1)
  6809. } else null != Webwindow.GasstationWindow && (a = {}, a.money = InventoryItems["0"], a.currentfuel = VehicleFuel, Webwindow.GasstationWindow.call("vio._callEvent", "gasstation:update", JSON.stringify(a)))
  6810. });
  6811. mp.events.add("setVehicleFuel", function() {
  6812. VehicleFuel = Number(0 >= arguments.length ? void 0 : arguments[0])
  6813. });
  6814. mp.events.add("gasstationinit", function() {
  6815. null != Webwindow.GasstationWindow && Webwindow.GasstationWindow.call("vio._callEvent", "gasstation:init", TempArguments.Gasstation["1"], TempArguments.Gasstation["2"])
  6816. });
  6817. mp.events.add("gasstationfill", function(a) {
  6818. null != Webwindow.GasstationWindow && (Webwindow.GasstationWindow.destroy(), Webwindow.GasstationWindow = null);
  6819. disableAllControls = !1;
  6820. mp.events.callRemote("requestGasstationBuy", "fuel", a, VehicleFuel)
  6821. });
  6822. mp.events.add("gasstationclose", function() {
  6823. null != Webwindow.GasstationWindow && (Webwindow.GasstationWindow.destroy(), Webwindow.GasstationWindow = null);
  6824. disableAllControls = !1;
  6825. var a = mp.players.local.vehicle;
  6826. null != a && a.freezePosition(!1)
  6827. });
  6828. mp.events.add("gasstationbuy", function(a) {
  6829. mp.events.callRemote("requestGasstationBuy", a, 0, 0)
  6830. });
  6831. mp.events.add("openStorageWindow", function(a, b, c) {});
  6832. mp.events.add("initStorageWindow", function() {
  6833. null != Webwindow.StorageWindow && (Webwindow.StorageWindow.call("vio._callEvent", "storage:init", ItemsNames, JSON.parse(TempArguments.Storage["1"]), JSON.parse(TempArguments.Storage["2"]), JSON.parse(TempArguments.Storage["3"])), mp.game.graphics.getScreenActiveResolution(1, 1), TempArguments.Storage = {})
  6834. });
  6835. var bikes = {
  6836. 1131912276: !0,
  6837. 448402357: !0,
  6838. 3458454463: !0,
  6839. 4108429845: !0,
  6840. 1127861609: !0,
  6841. 3061159916: !0,
  6842. 3894672200: !0
  6843. },
  6844. Tacho = function() {
  6845. function a() {
  6846. _classCallCheck(this, a);
  6847. this._setup()
  6848. }
  6849. _createClass(a, [{
  6850. key: "_setup",
  6851. value: function() {
  6852. var a = this;
  6853. a.speed = 0;
  6854. a.rpm = 0;
  6855. a.fuel = 0;
  6856. a.max_fuel = 50;
  6857. a.km = 0;
  6858. a.pos = null;
  6859. a.browser = mp.browsers.new("package://viov/client_ui/html/tacho/index.html");
  6860. a.browser.active = !1;
  6861. a._ready = !1;
  6862. a._static = !1;
  6863. a._locked = !0;
  6864. a._engine = !1;
  6865. a._light = !1;
  6866. a._seatbelt = !1;
  6867. a._kmCounter = 0;
  6868. a._kmUpdaterThreshold =
  6869. 2;
  6870. mp.events.add("render", function() {
  6871. a.render()
  6872. });
  6873. mp.events.add("initTacho", function() {
  6874. a.ready()
  6875. });
  6876. mp.events.add("reload_tacho", function() {
  6877. a.reload()
  6878. });
  6879. mp.events.add("setVehicleFuel", function() {
  6880. a.setFuel(Number(0 >= arguments.length ? void 0 : arguments[0]))
  6881. });
  6882. mp.events.add("setVehicleDistance", function() {
  6883. a.setMileage(Number(0 >= arguments.length ? void 0 : arguments[0]))
  6884. });
  6885. mp.events.add("playerLeaveVehicle", function(b, d) {
  6886. 0 < a._kmCounter && mp.events.callRemote("updateVehicleDistance", parseFloat(a._kmCounter));
  6887. a._kmCounter =
  6888. 0;
  6889. a.speed = 0;
  6890. a.rpm = 0;
  6891. a.fuel = 0;
  6892. a.max_fuel = 50;
  6893. a.km = 0
  6894. })
  6895. }
  6896. }, {
  6897. key: "render",
  6898. value: function() {
  6899. if (0 == mp.game.ui.isPauseMenuActive()) {
  6900. var a = mp.players.local.vehicle;
  6901. if (a)
  6902. if (this._ready && a.getPedInSeat(-1) == mp.players.local.handle && null == Webwindow.CarTuneWindow)
  6903. if (this._static || (this._static = !0, this.browser.execute("drawCircle(" + (new Date).getHours() + ")"), this.browser.execute("drawInfo()"), this.browser.execute("drawFuel(0,false,false)")), this.browser && this._ready) {
  6904. null == this.pos && (this.pos = mp.players.local.position);
  6905. var c = mp.players.local.position;
  6906. "1" == ClientSettings[6] && 0 == this.browser.active && (this.browser.active = !0, 0 == this._kmCounter && (this._kmCounter = .01, mp.events.callRemote("updateVehicleDistance", .0001)));
  6907. var d = mp.game.system.vdist2(c.x, c.y, c.z, this.pos.x, this.pos.y, this.pos.z) / 1E3;
  6908. this.pos != c && (this.pos = c, .3 > d && 0 < d && (d *= 2.4, this.km += d, 1 == this.browser.active && this.browser.execute("drawMileage(" + this.km + ")"), this._kmCounter += d, this._kmCounter >= this._kmUpdaterThreshold && (mp.events.callRemote("updateVehicleDistance",
  6909. parseFloat(this._kmCounter)), this._kmCounter = 0)));
  6910. if ("1" == ClientSettings[6]) {
  6911. if (c = 3.6 * a.getSpeed(), c != this.speed && (this.browser.execute("drawNeedle(" + c + ")"), this.speed = c), c = 2 == a.getDoorLockStatus() ? !0 : !1, d = a.getIsEngineRunning(), a = a.getLightsState(1, 1), a = 1 == a.lightsOn ? 1 : 1 == a.highbeamsOn ? 1 : 0, this._locked != c || this._engine != d || this._light != a) this._locked = c, this._engine = d, this._light = a, this.browser.execute("drawInfo(" + this._engine + "," + this._light + "," + this._locked + "," + this._seatbelt + ")")
  6912. } else this.browser.active = !1
  6913. } else this.browser.active = !1;
  6914. else this._static = this.browser.active = !1;
  6915. else this._static = this.browser.active = !1
  6916. }
  6917. }
  6918. }, {
  6919. key: "ready",
  6920. value: function() {
  6921. this._ready = !0
  6922. }
  6923. }, {
  6924. key: "reload",
  6925. value: function() {
  6926. this.browser.execute("drawCircle(" + (new Date).getHours() + ")");
  6927. this.browser.execute("drawInfo(true,true,false)");
  6928. this.browser.execute("drawFuel(0,false,false)")
  6929. }
  6930. }, {
  6931. key: "setSeatbelt",
  6932. value: function(a) {
  6933. this._seatbelt = a;
  6934. this.browser.execute("drawInfo(" + this._engine + "," + this._light + "," + this._locked + "," + this._seatbelt +
  6935. ")")
  6936. }
  6937. }, {
  6938. key: "setFuel",
  6939. value: function(a) {
  6940. this.fuel = a;
  6941. a = mp.players.local.vehicle;
  6942. var b = !1;
  6943. 5 > this.fuel && (b = !0);
  6944. a && (bikes[a.model] ? this.browser.execute("drawFuel(" + this.fuel + ",false,true)") : this.browser.execute("drawFuel(" + this.fuel + "," + b + ",false)"))
  6945. }
  6946. }, {
  6947. key: "setMileage",
  6948. value: function(a) {
  6949. this.km = a;
  6950. this._kmCounter = 0
  6951. }
  6952. }, {
  6953. key: "loadFuel",
  6954. value: function() {
  6955. mp.events.callRemote("updateVehicleDistance", .00001)
  6956. }
  6957. }]);
  6958. return a
  6959. }();
  6960. Tacho = new Tacho;
  6961. var VehicleWindow = null,
  6962. PlayerVehicles = {
  6963. 1: {},
  6964. 2: {},
  6965. 3: {}
  6966. },
  6967. StorageOpen = !1,
  6968. MarkedVehicleSellTo = temp_blip = temp_marker = !1;
  6969. setInterval(reattachVehicleBlips, 15E3);
  6970. mp.events.add("initVehicleWindow", function(a) {
  6971. PlayerVehicles[1] = JSON.parse(a)
  6972. });
  6973. mp.events.add("openVehicleWindow", function(a) {
  6974. null == Webwindow.VehicleWindow && (Webwindow.VehicleWindow = !1, PlayerVehicles[2] = null != InventoryItems["1"] ? InventoryItems["1"] : {}, PlayerVehicles[3] = JSON.parse(a), TempArguments.Vehicle = {}, TempArguments.Vehicle["1"] = lang_de.items, TempArguments.Vehicle["2"] = PlayerVehicles, mp.game.graphics.getScreenActiveResolution(1, 1), Webwindow.VehicleWindow = new CEFBrowser("package://viov/client_ui/html/vehicle/vehicle.html", !0))
  6975. });
  6976. mp.events.add("vehicleWindowReady", function() {
  6977. null != Webwindow.VehicleWindow && Webwindow.VehicleWindow.call("vio._callEvent", "vehicle:init", TempArguments.Vehicle["1"], TempArguments.Vehicle["2"])
  6978. });
  6979. mp.events.add("requestCloseVehicleWindow", function() {
  6980. Webwindow.VehicleWindow.destroy();
  6981. Webwindow.VehicleWindow = null
  6982. });
  6983. mp.events.add("requestVehicleListAction", function(a, b) {
  6984. b = JSON.parse(b).vehicle_id;
  6985. "refresh" == a ? mp.events.callRemote("onClientRequestPrivateVehicleActionJSON", "respawn", b) : "lock" == a ? mp.events.callRemote("onClientRequestPrivateVehicleActionJSON", "lock", b) : "unlock" == a ? mp.events.callRemote("onClientRequestPrivateVehicleActionJSON", "unlock", b) : "road" == a ? mp.events.callRemote("onClientRequestPrivateVehicleActionJSON", "position", b) : "sell" == a && mp.events.callRemote("onClientRequestPrivateVehicleActionJSON",
  6986. "sell", b)
  6987. });
  6988. mp.events.add("requestGroupAction", function(a) {
  6989. "road" == a && mp.events.callRemote("updateGroup", "get_gang_pos", "1", 0, 0)
  6990. });
  6991. var VehicleMarker = [];
  6992.  
  6993. function reattachVehicleBlips() {
  6994. var a;
  6995. for (a = 0; a < VehicleMarker.length; a++) VehicleMarker[a].destroy();
  6996. for (a = 0; a < PoliceMarker.length; a++) PoliceMarker[a].destroy();
  6997. VehicleMarker = [];
  6998. PoliceMarker = [];
  6999. null != mp.players.local.getVariable("TRASH_CAR") && (a = mp.players.local.getVariable("TRASH_CAR").position, a = mp.blips.new(318, a, {
  7000. color: 47,
  7001. scale: .9
  7002. }), VehicleMarker[VehicleMarker.length] = a);
  7003. 0 <= LocalGroupID && mp.vehicles.forEachInStreamRange(function(a) {
  7004. if (a.dimension == mp.players.local.dimension) {
  7005. if (null != a.getVariable("Marker") &&
  7006. void 0 !== a.getPedInSeat(-1) && 0 != a.getPedInSeat(-1)) {
  7007. var b = a.position;
  7008. b = mp.blips.new(1, b, {
  7009. color: 75,
  7010. shortRange: !0,
  7011. scale: .7
  7012. });
  7013. b.setFlashes(!0);
  7014. VehicleMarker[VehicleMarker.length] = b
  7015. }
  7016. 0 == LocalGroupID && null != a.getVariable("PoliceMarker") && void 0 !== a.getPedInSeat(-1) && 0 != a.getPedInSeat(-1) && (b = a.position, b = mp.blips.new(1, b, {
  7017. color: 47,
  7018. shortRange: !0,
  7019. scale: .7
  7020. }), b.setFlashes(!0), VehicleMarker[VehicleMarker.length] = b)
  7021. }
  7022. })
  7023. }
  7024. var vehicleMaxSpeed = {},
  7025. vehicleMaxSpeedEnabled = {},
  7026. blockedModels = [782665360, -1860900134, 666166960],
  7027. blockedCategories = [14, 15, 16];
  7028.  
  7029. function IsModelBlocked(a) {
  7030. return -1 < blockedModels.indexOf(a) || -1 < blockedCategories.indexOf(mp.players.local.vehicle.getClass()) ? !0 : !1
  7031. }
  7032.  
  7033. function GetVehicleLimiterStatus(a) {
  7034. a = a.model;
  7035. return void 0 === vehicleMaxSpeedEnabled[a] ? !1 : vehicleMaxSpeedEnabled[a]
  7036. }
  7037.  
  7038. function SetVehicleLimiterStatus(a, b) {
  7039. var c = a.model;
  7040. mp.players.local.vehicle.setMaxSpeed();
  7041. b ? a.setMaxSpeed(void 0 === vehicleMaxSpeed[c] ? 3.6 * mp.game.vehicle.getVehicleModelMaxSpeed(c) : vehicleMaxSpeed[c] / 3.6) : a.setMaxSpeed(3.6 * mp.game.vehicle.getVehicleModelMaxSpeed(c))
  7042. }
  7043.  
  7044. function getVehicleLimit(a) {
  7045. a = API.getEntityModel(a);
  7046. return void 0 === vehicleMaxSpeed[a] ? 0 : vehicleMaxSpeed[a]
  7047. }
  7048. mp.events.add("SetPlayerSeatbelt", function(a) {
  7049. Tacho.setSeatbelt(a);
  7050. mp.players.local.setConfigFlag(32, !a)
  7051. });
  7052. mp.events.add("SetEngineTorqueMultiplier", function(a) {
  7053. var b = mp.players.local.vehicle;
  7054. null != b && b.setEngineTorqueMultiplier(a)
  7055. });
  7056. mp.events.add("SetEnginePowerMultiplier", function(a) {
  7057. var b = mp.players.local.vehicle;
  7058. null != b && b.setEnginePowerMultiplier(a)
  7059. });
  7060. mp.events.add("playerEnterVehicle", function(a, b) {
  7061. null != TempBarricade && TempBarricade.destroy();
  7062. "0" == ClientSettings[2] ? (mp.game.audio.setVehRadioStation(a.handle, "OFF"), mp.game.audio.setUserRadioControlEnabled(!1)) : mp.game.audio.setUserRadioControlEnabled(!0);
  7063. "1" == ClientSettings[6] && (Tacho.setFuel(Number(0)), Tacho.setSeatbelt(!1));
  7064. WeedPlantDrug.reset()
  7065. });
  7066. mp.events.add("entityStreamIn", function(a) {
  7067. "vehicle" === a.type && (null != a.getVariable("Indicator_warning") && (a.setIndicatorLights(0, !0), a.setIndicatorLights(1, !0)), null != a.getVariable("VEHICLE_HEALTH") && (a.setBodyHealth(a.getVariable("VEHICLE_HEALTH")), a.setEngineHealth(a.getVariable("VEHICLE_HEALTH"))))
  7068. });
  7069. var wheel_cramps = [];
  7070. mp.events.addDataHandler("Indicator_warning", function(a, b) {
  7071. "vehicle" === a.type && (null != a.getVariable("Indicator_warning") ? (a.setIndicatorLights(0, !0), a.setIndicatorLights(1, !0)) : (a.setIndicatorLights(0, !1), a.setIndicatorLights(1, !1)))
  7072. });
  7073. mp.events.addDataHandler("VEHICLE_HEALTH", function(a, b) {
  7074. "vehicle" === a.type && void 0 != b && (b = a.getVariable("VEHICLE_HEALTH"), -200 >= b ? (a.setDisablePetrolTankFires(!1), a.setDisablePetrolTankDamage(!1), a.setBodyHealth(-999), a.setEngineHealth(-999), a.setPetrolTankHealth(-999)) : (a.setBodyHealth(b), a.setEngineHealth(b)))
  7075. });
  7076. mp.events.addDataHandler("BlockedVehicle", function(a, b) {
  7077. if ("vehicle" === a.type) {
  7078. b = a.getVariable("BlockedVehicle");
  7079. var c = a.getBoneIndexByName("wheel_lf");
  7080. a && a.handle && (null !== b ? null === c || wheel_cramps[Number(a.handle)] || (wheel_cramps[Number(a.handle)] = mp.objects.new(mp.game.joaat("gr_prop_gr_target_03a"), a.position), wheel_cramps[Number(a.handle)].attachTo(a.handle, c, 0, 0, -.25, 0, 0, 0, !1, !1, !1, !1, 0, !0)) : wheel_cramps[Number(a.handle)] && void 0 != wheel_cramps[Number(a.handle)] && (wheel_cramps[Number(a.handle)].destroy(),
  7081. delete wheel_cramps[Number(a.handle)]))
  7082. }
  7083. });
  7084. mp.keys.bind(75, !1, function() {
  7085. null == Webwindow.TicketsystemBrowser && null == Webwindow.Settings && 0 != mp.players.local.dimension && 1 == InHouse && 0 == mp.gui.cursor.visible && mp.events.callRemote("requestOpenHouseStorage")
  7086. });
  7087. mp.keys.bind(76, !1, function() {
  7088. if (null == Webwindow.TicketsystemBrowser && null == Webwindow.Settings && !mp.gui.cursor.visible) {
  7089. var a = mp.players.local.vehicle;
  7090. if (null != a && a.getPedInSeat(-1) == mp.players.local.handle) {
  7091. var b = parseInt(3.6 * a.getSpeed()),
  7092. c = a.model;
  7093. IsModelBlocked(c) ? mp.game.graphics.notify("~r~Auf diesem Fahrzeug kannst du den Limitor nicht verwenden") : 0 != GetVehicleLimiterStatus(a) ? (SetVehicleLimiterStatus(a, !1), vehicleMaxSpeedEnabled[c] = void 0, vehicleMaxSpeed[c] = void 0, mp.game.graphics.notify("~r~Limit deaktiviert")) :
  7094. b <= 3.6 * mp.game.vehicle.getVehicleModelMaxSpeed(mp.players.local.vehicle.model) ? 50 <= b ? (54 == b ? b = 55 : 72 == b ? b = 73 : 90 == b ? b = 91 : 108 == b ? b = 109 : 126 == b ? b = 127 : 144 == b ? b = 145 : 162 == b ? b = 163 : 180 == b && (b = 181), vehicleMaxSpeed[c] = b, vehicleMaxSpeedEnabled[c] = !0, a.setMaxSpeed(void 0 === b ? 3.6 * mp.game.vehicle.getVehicleModelMaxSpeed(mp.players.local.vehicle.model) : b / 3.6), mp.game.graphics.notify("~g~Limit auf " + b + " km/h eingestellt")) : mp.game.graphics.notify("~r~Mindestgeschwindigkeit Limit : 50 km/h") : mp.game.graphics.notify("~r~Maximale Geschwindigkeit Limit : " +
  7095. Math.round(3.6 * mp.game.vehicle.getVehicleModelMaxSpeed(mp.players.local.vehicle.model)) + " km/h")
  7096. }
  7097. }
  7098. });
  7099. mp.events.add("setWaypoint", function() {
  7100. for (var a = arguments.length, b = Array(a), c = 0; c < a; c++) b[c] = arguments[c];
  7101. mp.game.ui.setNewWaypoint(b[0].x, b[0].y);
  7102. b[1] && (0 != temp_marker && (temp_marker.destroy(), temp_marker = !1), 0 != temp_blip && (temp_blip.destroy(), temp_blip = !1), temp_marker = mp.markers.new(24, new mp.Vector3(b[0].x, b[0].y, b[0].z + .5), 1.2, {
  7103. color: [200, 70, 63, 200],
  7104. visible: !0
  7105. }), temp_blip = mp.blips.new(8, new mp.Vector3(b[0].x, b[0].y, b[0].z), {
  7106. color: 6,
  7107. scale: .6,
  7108. alpha: 230
  7109. }))
  7110. });
  7111. mp.events.add("deleteWaypoint", function() {
  7112. mp.game.ui.setNewWaypoint(mp.players.local.position.x, mp.players.local.position.y);
  7113. 0 != temp_marker && (temp_marker.destroy(), temp_marker = !1);
  7114. 0 != temp_blip && (temp_blip.destroy(), temp_blip = !1)
  7115. });
  7116. mp.events.add("createMarker", function() {
  7117. for (var a = arguments.length, b = Array(a), c = 0; c < a; c++) b[c] = arguments[c];
  7118. MarkedVehicleSellTo = mp.markers.new(0, new mp.Vector3(b[0].x, b[0].y, b[0].z), 1, {
  7119. color: [255, 0, 0, 255]
  7120. });
  7121. a = MarkedVehicleSellTo.getBoneIndexByName("0");
  7122. MarkedVehicleSellTo.attachTo(b[0].handle, a, 0, 0, 2, 0, 0, 0, !0, !1, !1, !1, 0, !1)
  7123. });
  7124. mp.events.add("StopMarkVehicleSell", function() {
  7125. 0 != MarkedVehicleSellTo && (MarkedVehicleSellTo.destroy(), MarkedVehicleSellTo = !1)
  7126. });
  7127. mp.events.add("playerCreateWaypoint", function(a, b) {
  7128. mp.game.graphics.notify("~r~ playerCreateWaypoint")
  7129. });
  7130. mp.events.add("CheckPlayerVehicleParkCommand", function() {
  7131. mp.players.local.isInAnyVehicle(!0) && mp.events.callRemote("onClientRequestParkVehicle", mp.players.local.vehicle.getSpeed())
  7132. });
  7133. setInterval(function() {
  7134. mp.players.local.isInAnyVehicle(!1) && ClientSettings[2] && ("0" == ClientSettings[2] ? (mp.game.audio.setVehRadioStation(mp.players.local.vehicle.handle, "OFF"), mp.game.audio.setUserRadioControlEnabled(!1)) : mp.game.audio.setUserRadioControlEnabled(!0))
  7135. }, 2E3);
  7136. var seats = {
  7137. 0: "seat_pside_f",
  7138. 1: "seat_dside_r",
  7139. 2: "seat_pside_r",
  7140. 3: "seat_dside_r1",
  7141. 4: "seat_pside_r1",
  7142. 5: "seat_dside_r2",
  7143. 6: "seat_pside_r2",
  7144. 7: "seat_dside_r3",
  7145. 8: "seat_pside_r3",
  7146. 9: "seat_dside_r4",
  7147. 10: "seat_pside_r4",
  7148. 11: "seat_dside_r5",
  7149. 12: "seat_pside_r5",
  7150. 13: "seat_dside_r6",
  7151. 14: "seat_pside_r6",
  7152. 15: "seat_dside_r7",
  7153. 16: "seat_pside_r7"
  7154. },
  7155. enter_marker_temp = mp.game.controls.useDefaultVehicleEntering = !1,
  7156. enter_marker_timer = !1;
  7157. mp.keys.bind(71, !1, function() {
  7158. if (null === mp.players.local.vehicle && !mp.gui.cursor.visible) {
  7159. var a = mp.players.local.position,
  7160. b = null,
  7161. c = 100;
  7162. mp.vehicles.forEachInStreamRange(function(d) {
  7163. var e = d.position;
  7164. e = mp.game.system.vdist2(a.x, a.y, a.z, e.x, e.y, e.z);
  7165. e < c && (c = e, b = d)
  7166. });
  7167. var d = b;
  7168. if (null !== d && d.isAnySeatEmpty()) {
  7169. var e = 0,
  7170. f = 99999;
  7171. new mp.Vector3(0, 0, 0);
  7172. for (var g = !1, h = mp.game.vehicle.getVehicleSeats(d), l = 0; l <= h; l++)
  7173. if (d.isSeatFree(l)) {
  7174. 2 >= l && (g = !0);
  7175. var m = d.getWorldPositionOfBone(d.getBoneIndexByName(seats[l])),
  7176. n = mp.game.gameplay.getGroundZFor3dCoord(m.x, m.y, m.z, 0, !1),
  7177. p = mp.game.system.vdist2(a.x, a.y, a.z, m.x, m.y, m.z);
  7178. !(2 < l && 1 == g) && p < f && (f = p, e = l, new mp.Vector3(m.x, m.y, n + .05))
  7179. }
  7180. 1475773103 == d.model && 0 < e ? mp.players.local.taskEnterVehicle(d.handle, 5E3, e, 2, 16, 0) : mp.players.local.taskEnterVehicle(d.handle, 5E3, e, 2, 1, 0)
  7181. }
  7182. }
  7183. });
  7184. var GarageClass = function() {
  7185. function a(b) {
  7186. _classCallCheck(this, a);
  7187. this._setup(b)
  7188. }
  7189. _createClass(a, [{
  7190. key: "_setup",
  7191. value: function(a) {
  7192. this.init(a)
  7193. }
  7194. }, {
  7195. key: "init",
  7196. value: function(a) {
  7197. this._slots = a;
  7198. this.window = new CEFBrowser("package://viov/client_ui/html/garage/index.html", !0)
  7199. }
  7200. }, {
  7201. key: "close",
  7202. value: function() {
  7203. this.window.destroy()
  7204. }
  7205. }]);
  7206. return a
  7207. }(),
  7208. garage, cached_vehicles = [];
  7209. mp.events.add("initGarage", function() {
  7210. garage && garage.window.call("OnClientSendsStoredVehicles", cached_vehicles)
  7211. });
  7212. mp.events.add("OnClientRequestGarageOpen", function() {
  7213. garage = new GarageClass;
  7214. cached_vehicles = 0 >= arguments.length ? void 0 : arguments[0]
  7215. });
  7216. mp.events.add("OnGarageClose", function() {
  7217. null !== garage && (garage.close(), garage = null, cached_vehicles = [])
  7218. });
  7219. mp.events.add("OnClientRequestVehicleFromGarage", function(a) {
  7220. mp.events.callRemote("OnClientRequestVehicleFromGarage", a)
  7221. });
  7222. var CarTuneTable = {},
  7223. CarTuneLanguage = {},
  7224. Vehiclemods = {},
  7225. CarDetails = {},
  7226. CarTunes, TunePrices, isPlayerOnTuningPlace = !1,
  7227. CarTuneNumbers = {
  7228. 0: !0,
  7229. 1: !0,
  7230. 2: !0,
  7231. 3: !0,
  7232. 4: !0,
  7233. 5: !0,
  7234. 6: !0,
  7235. 7: !0,
  7236. 8: !0,
  7237. 9: !0,
  7238. 10: !0,
  7239. 11: !0,
  7240. 12: !0,
  7241. 13: !0,
  7242. 14: !0,
  7243. 15: !0,
  7244. 18: !0,
  7245. 22: !0,
  7246. 23: !0,
  7247. 24: !0,
  7248. 25: !0,
  7249. 27: !0,
  7250. 28: !0,
  7251. 30: !0,
  7252. 33: !0,
  7253. 34: !0,
  7254. 35: !0,
  7255. 38: !0,
  7256. 46: !0,
  7257. 48: !0,
  7258. 69: !0,
  7259. 200: !0
  7260. };
  7261. mp.events.add("playerActionCloseCarTune", function() {
  7262. if (null != Webwindow.CarTuneWindow && isPlayerOnTuningPlace) {
  7263. Webwindow.CarTuneWindow.destroy();
  7264. Webwindow.CarTuneWindow = null;
  7265. mp.events.callRemote("requestBuyCarTuneShopDetail", 9999999, 0, 0, 0, 0);
  7266. mp.gui.cursor.visible = !1;
  7267. mainCam.setActive(!1);
  7268. mainCam.destroy();
  7269. mp.game.cam.renderScriptCams(!1, !1, 0, !0, !1);
  7270. mp.game.ui.setMinimapVisible(!1);
  7271. mp.game.ui.displayRadar(!0);
  7272. var a = mp.players.local.vehicle;
  7273. a.setNeonLightEnabled(0, !1);
  7274. a.setNeonLightEnabled(1, !1);
  7275. a.setNeonLightEnabled(2, !1);
  7276. a.setNeonLightEnabled(3, !1);
  7277. for (var b in CarTuneNumbers) CarTuneNumbers[b] && 0 < a.getNumMods(Number(b)) && a.removeMod(Number(b));
  7278. disableAllControls = isPlayerOnTuningPlace = !1;
  7279. CarTuneTable = {}
  7280. }
  7281. });
  7282. mp.keys.bind(32, !1, function() {
  7283. isPlayerOnTuningPlace && mp.events.call("playerActionCloseCarTune")
  7284. });
  7285.  
  7286. function CarTuneShopOpen() {
  7287. Webwindow.CarTuneWindow = new CEFBrowser("package://viov/client_ui/html/cartune/index.html", !0);
  7288. mp.game.ui.displayRadar(!1);
  7289. CarTuneTable = {
  7290. mode: "buy"
  7291. };
  7292. CarTuneTable.money = InventoryItems["0"];
  7293. CarTuneTable.items = {};
  7294. var a = mp.players.local.vehicle,
  7295. b;
  7296. for (b in CarTuneNumbers)
  7297. if (CarTuneNumbers[b]) {
  7298. var c = a.getNumMods(Number(b));
  7299. 0 < c && (CarTuneTable.items[b] = {}, CarTuneTable.items[b].name = Vehiclemods["item." + b], CarTuneTable.items[b].native_name = vehicle_data.getSlotName(b), CarTuneTable.items[b].price =
  7300. 0, CarTuneTable.items[b].select = !0);
  7301. if (11 != Number(b) && 12 != Number(b) && 200 > Number(b) && 0 < c) {
  7302. CarDetails[b] = {};
  7303. CarDetails[b][-1] = {};
  7304. CarDetails[b][-1].name = "Standard";
  7305. CarDetails[b][-1].price = TunePrices[b];
  7306. CarDetails[b][-1].drawable = b;
  7307. CarDetails[b][-1].texture = -1;
  7308. for (var d = 0; d < c; d++) {
  7309. CarDetails[b][d] = {};
  7310. CarDetails[b][d].name = mp.game.ui.getLabelText(a.getModTextLabel(Number(b), Number(d)));
  7311. if ("NULL" == CarDetails[b][d].name) {
  7312. var e = vehicle_data.getPartName(b, d);
  7313. CarDetails[b][d].name = e
  7314. }
  7315. CarDetails[b][d].price = TunePrices[b];
  7316. CarDetails[b][d].drawable = b;
  7317. CarDetails[b][d].texture = d
  7318. }
  7319. }
  7320. 11 == Number(b) && 4 == c && (d = TunePrices[b], TunePrices[b] = {}, CarDetails[b] = {}, CarDetails[b][-1] = {}, CarDetails[b][-1].name = "Standard", CarDetails[b][-1].price = d, CarDetails[b][-1].drawable = 11, CarDetails[b][-1].texture = -1, TunePrices[b][-1] = d, CarDetails[b][0] = {}, CarDetails[b][0].name = "EMS I (+4% Beschleunigung)", CarDetails[b][0].price = d, CarDetails[b][0].drawable = 11, CarDetails[b][0].texture = 0, TunePrices[b][0] = d, CarDetails[b][1] = {}, CarDetails[b][1].name =
  7321. "EMS II (+8% Beschleunigung)", CarDetails[b][1].price = 1.5 * d, CarDetails[b][1].drawable = 11, CarDetails[b][1].texture = 1, TunePrices[b][1] = 1.5 * d, CarDetails[b][2] = {}, CarDetails[b][2].name = "EMS III (+11% Beschleunigung)", CarDetails[b][2].price = 2 * d, CarDetails[b][2].drawable = 11, CarDetails[b][2].texture = 2, TunePrices[b][2] = 2 * d, CarDetails[b][3] = {}, CarDetails[b][3].name = "EMS IV (+15% Beschleunigung)", CarDetails[b][3].price = 3 * d, CarDetails[b][3].drawable = 11, CarDetails[b][3].texture = 3, TunePrices[b][3] = 3 * d);
  7322. 12 == Number(b) &&
  7323. 3 == c && (c = TunePrices[b], TunePrices[b] = {}, CarDetails[b] = {}, CarDetails[b][-1] = {}, CarDetails[b][-1].name = "Standard", CarDetails[b][-1].price = c, CarDetails[b][-1].drawable = 12, CarDetails[b][-1].texture = -1, TunePrices[b][-1] = c, CarDetails[b][0] = {}, CarDetails[b][0].name = "Verbesserte Bremsanlage", CarDetails[b][0].price = c, CarDetails[b][0].drawable = 12, CarDetails[b][0].texture = 0, TunePrices[b][0] = c, CarDetails[b][1] = {}, CarDetails[b][1].name = "Sport Bremsanlage", CarDetails[b][1].price = 1.5 * c, CarDetails[b][1].drawable =
  7324. 12, CarDetails[b][1].texture = 1, TunePrices[b][1] = 1.5 * c, CarDetails[b][2] = {}, CarDetails[b][2].name = "Rennsport Bremsanlage", CarDetails[b][2].price = 3 * c, CarDetails[b][2].drawable = 12, CarDetails[b][2].texture = 2, TunePrices[b][2] = 3 * c);
  7325. 200 == Number(b) && (CarDetails[b] = {}, TunePrices[b] = 7500, CarDetails[b][-1] = {}, CarDetails[b][-1].name = "Default", CarDetails[b][-1].price = 0, CarDetails[b][-1].drawable = 200, CarDetails[b][-1].texture = -1, CarDetails[b][0] = {}, CarDetails[b][0].name = "NeonStateLeft", CarDetails[b][0].price = 200,
  7326. CarDetails[b][0].drawable = 200, CarDetails[b][0].texture = 0, CarDetails[b][1] = {}, CarDetails[b][1].name = "NeonStateRight", CarDetails[b][1].price = 200, CarDetails[b][1].drawable = 200, CarDetails[b][1].texture = 1, CarDetails[b][2] = {}, CarDetails[b][2].name = "NeonStateFront", CarDetails[b][2].price = 200, CarDetails[b][2].drawable = 200, CarDetails[b][2].texture = 2, CarDetails[b][3] = {}, CarDetails[b][3].name = "NeonStateBack", CarDetails[b][3].price = 200, CarDetails[b][3].drawable = 200, CarDetails[b][3].texture = 3)
  7327. }
  7328. CarTuneTable.items[200] = {};
  7329. CarTuneTable.items[200].name = Vehiclemods["item.200"];
  7330. CarTuneTable.items[200].price = 0;
  7331. CarTuneTable.items[200].select = !0;
  7332. CarTuneTable.items[300] = {};
  7333. CarTuneTable.items[300].name = Vehiclemods["item.300"];
  7334. CarTuneTable.items[300].price = 0;
  7335. CarTuneTable.items[300].select = !0
  7336. }
  7337. var currentCam = {
  7338. x: 0,
  7339. y: 0,
  7340. z: 0,
  7341. r: 45,
  7342. dist: 6
  7343. },
  7344. tuning_Cam;
  7345. mp.events.add("InitCarTuneShop", function() {
  7346. mp.players.local.vehicle && (mp.players.local.vehicle.position = new mp.Vector3(-332.5066, -136.8213, 38.73852), mp.players.local.vehicle.setRotation(0, 0, 111, 0, !1), mp.players.local.vehicle.setOnGroundProperly(), mp.game.cam.doScreenFadeOut(500), tuning_Cam = mp.cameras.new("default", new mp.Vector3(-353, -135, 39), new mp.Vector3(0, 0, 0), 70), tuning_Cam.setActive(!0), tuning_Cam.pointAt(mp.players.local.vehicle.handle, 0, 0, 0, !0), mp.game.cam.renderScriptCams(!0, !1, 0, !0, !1))
  7347. });
  7348. mp.events.add("CarTuneShopOpenNew", function() {
  7349. Vehiclemods = lang_de.vehiclemods;
  7350. CarTunes = 0 >= arguments.length ? void 0 : arguments[0];
  7351. TunePrices = JSON.parse(1 >= arguments.length ? void 0 : arguments[1]);
  7352. TunePrices[11] = 2 >= arguments.length ? void 0 : arguments[2];
  7353. TunePrices[12] = 3 >= arguments.length ? void 0 : arguments[3];
  7354. disableAllControls = !0;
  7355. mp.players.local.vehicle.position = new mp.Vector3(-332.5066, -136.8213, 38.73852);
  7356. mp.players.local.vehicle.setRotation(0, 0, 111, 0, !1);
  7357. mp.players.local.vehicle.setOnGroundProperly();
  7358. setTimeout(function() {
  7359. mp.game.cam.doScreenFadeIn(500);
  7360. var a = (new mp.Vector3(mp.players.local.position.x, mp.players.local.position.y, mp.players.local.position.z + 1)).findRot(0, 6, 180);
  7361. currentCam = {
  7362. x: a.x,
  7363. y: a.y,
  7364. z: a.z,
  7365. r: 180,
  7366. dist: 6
  7367. };
  7368. var b = mp.raycasting.testPointToPoint(mp.players.local.position, a, mp.players.local, 17);
  7369. b && (a = b.position);
  7370. mainCam = mp.cameras.new("gameplay", a, new mp.Vector3, 70);
  7371. mainCam.setCoord(a.x, a.y, a.z);
  7372. mainCam.pointAt(mp.players.local.vehicle.handle, 0, 0, 0, !0);
  7373. null != tuning_Cam ? mainCam.setActiveWithInterp(tuning_Cam.handle, 2E3, 0, 0) : mainCam.setActive(!0);
  7374. mp.game.cam.renderScriptCams(!0, !1, 0, !0, !1);
  7375. isPlayerOnTuningPlace = !0;
  7376. CarTuneShopOpen()
  7377. }, 100)
  7378. });
  7379. mp.events.add("tuningLoaded", function() {
  7380. Webwindow.CarTuneWindow.call("init", JSON.stringify(CarTuneTable), JSON.stringify(CarDetails), CarTunes, TunePrices)
  7381. });
  7382. mp.events.add("onInventoryUpdate", function(a, b, c) {
  7383. isPlayerOnTuningPlace && Webwindow.CarTuneWindow && Webwindow.CarTuneWindow.call("updateMoney", InventoryItems["0"])
  7384. });
  7385. mp.events.add("moveTuningCam", function(a, b, c) {
  7386. "none" != a && ("right" == a ? currentCam.r += 2 : "left" == a && (currentCam.r -= 2));
  7387. "none" != b && ("up" == b ? currentCam.z += .05 : "down" == b && (currentCam.z -= .05));
  7388. "none" != c && ("in" == c ? currentCam.dist -= .12 : "out" == c && (currentCam.dist += .12));
  7389. currentCam.z > mp.players.local.vehicle.position.z + 2 && (currentCam.z = mp.players.local.vehicle.position.z + 2);
  7390. 38.5 > currentCam.z && (currentCam.z = 38.5);
  7391. 0 > currentCam.r && (currentCam.r = 360);
  7392. 360 < currentCam.r && (currentCam.r = 0);
  7393. 3 > currentCam.dist && (currentCam.dist =
  7394. 3);
  7395. 5 <= currentCam.dist && (currentCam.dist = 5);
  7396. a = (new mp.Vector3(mp.players.local.vehicle.position.x, mp.players.local.vehicle.position.y, currentCam.z)).findRot(0, currentCam.dist, currentCam.r);
  7397. if (b = mp.raycasting.testPointToPoint(mp.players.local.vehicle.position, a, mp.players.local, 17)) a = b.position;
  7398. mainCam.setCoord(a.x, a.y, a.z)
  7399. });
  7400. mp.events.add("requestTryDealerCarTuneShopDetail", function(a, b, c, d, e) {
  7401. mp.players.local.vehicle.setModKit(0);
  7402. CarDetails[a] && (200 == Number(CarDetails[a][b].drawable) ? -1 == Number(CarDetails[a][b].texture) ? (mp.players.local.vehicle.setNeonLightEnabled(0, !1), mp.players.local.vehicle.setNeonLightEnabled(1, !1), mp.players.local.vehicle.setNeonLightEnabled(2, !1), mp.players.local.vehicle.setNeonLightEnabled(3, !1)) : (mp.players.local.vehicle.setNeonLightEnabled(Number(CarDetails[a][b].texture), !0), mp.players.local.vehicle.setNeonLightsColour(Number(c),
  7403. Number(d), Number(e))) : 14 == Number(CarDetails[a][b].drawable) ? (-1 == Number(CarDetails[a][b].drawable) ? mp.players.local.vehicle.removeMod(Number(CarDetails[a][b].drawable)) : mp.players.local.vehicle.setMod(Number(CarDetails[a][b].drawable), Number(CarDetails[a][b].texture)), mp.players.local.vehicle.startHorn(1E4, mp.game.gameplay.getHashKey("HELDDOWN"), !0)) : -1 == Number(CarDetails[a][b].drawable) ? mp.players.local.vehicle.removeMod(Number(CarDetails[a][b].drawable)) : mp.players.local.vehicle.setMod(Number(CarDetails[a][b].drawable),
  7404. Number(CarDetails[a][b].texture)))
  7405. });
  7406. mp.events.add("forceCloseTuning", function() {
  7407. null != Webwindow.CarTuneWindow && Webwindow.CarTuneWindow.destroy();
  7408. var a = mp.players.local.vehicle;
  7409. mp.players.local.vehicle.setNeonLightEnabled(0, !1);
  7410. mp.players.local.vehicle.setNeonLightEnabled(1, !1);
  7411. mp.players.local.vehicle.setNeonLightEnabled(2, !1);
  7412. mp.players.local.vehicle.setNeonLightEnabled(3, !1);
  7413. for (var b in CarTuneNumbers) CarTuneNumbers[b] && 0 < a.getNumMods(Number(b)) && a.removeMod(Number(b));
  7414. mp.gui.cursor.visible = !1;
  7415. mainCam && (mainCam.setActive(!1), mainCam.destroy(),
  7416. mp.game.cam.renderScriptCams(!1, !1, 0, !0, !1));
  7417. mp.game.ui.setMinimapVisible(!1);
  7418. mp.game.ui.displayRadar(!0);
  7419. disableAllControls = isPlayerOnTuningPlace = !1
  7420. });
  7421. mp.events.add("carTuneDeleteTunes", function() {
  7422. var a = mp.players.local.vehicle;
  7423. mp.players.local.vehicle.setNeonLightEnabled(0, !1);
  7424. mp.players.local.vehicle.setNeonLightEnabled(1, !1);
  7425. mp.players.local.vehicle.setNeonLightEnabled(2, !1);
  7426. mp.players.local.vehicle.setNeonLightEnabled(3, !1);
  7427. for (var b in CarTuneNumbers) CarTuneNumbers[b] && 0 < a.getNumMods(Number(b)) && a.removeMod(Number(b))
  7428. });
  7429. mp.events.add("setVehicleNeon", function() {
  7430. 1 == Number(0 >= arguments.length ? void 0 : arguments[0]) && mp.players.local.vehicle.setNeonLightEnabled(0, !0);
  7431. 1 == Number(1 >= arguments.length ? void 0 : arguments[1]) && mp.players.local.vehicle.setNeonLightEnabled(1, !0);
  7432. 1 == Number(2 >= arguments.length ? void 0 : arguments[2]) && mp.players.local.vehicle.setNeonLightEnabled(2, !0);
  7433. 1 == Number(3 >= arguments.length ? void 0 : arguments[3]) && mp.players.local.vehicle.setNeonLightEnabled(3, !0)
  7434. });
  7435. mp.events.add("requestTryColorCarTuneShop", function(a, b, c, d) {
  7436. var e = mp.players.local.vehicle;
  7437. 1 == Number(a) && e.setCustomPrimaryColour(b, c, d);
  7438. 2 == Number(a) && e.setCustomSecondaryColour(b, c, d)
  7439. });
  7440. mp.events.add("carTuneCursor", function(a) {
  7441. mp.gui.cursor.visible = a
  7442. });
  7443. mp.events.add("requestBuyColorCarTuneShop", function(a, b, c, d) {
  7444. CarTunes.Color1R != b && CarTunes.Color1G != c && CarTunes.Color1B != d && 1 == a && mp.events.callRemote("requestBuyCarTuneShopDetail", 300, 1, b, c, d);
  7445. CarTunes.Color2R != b && CarTunes.Color2G != c && CarTunes.Color2B != d && 2 == a && mp.events.callRemote("requestBuyCarTuneShopDetail", 300, 2, b, c, d)
  7446. });
  7447. mp.events.add("requestBuyDealerCarTuneShopDetail", function(a, b, c, d, e) {
  7448. var f = mp.players.local.vehicle;
  7449. for (g in CarTuneNumbers) CarTuneNumbers[g] && 0 < f.getNumMods(Number(g)) && f.removeMod(Number(g));
  7450. f = CarDetails[a][b].drawable;
  7451. var g = CarDetails[a][b].texture;
  7452. var h = TunePrices[a];
  7453. TunePrices[a][b] && (h = TunePrices[a][b]);
  7454. 200 == a ? -1 != b ? mp.events.callRemote("requestBuyCarTuneShopDetail", f, g, c, d, e) : mp.events.callRemote("requestBuyCarTuneShopDetail", f, b, 0, 0, 0) : mp.events.callRemote("requestBuyCarTuneShopDetail", f,
  7455. g, h, 0, 0)
  7456. });
  7457. var removeObject = function() {
  7458. function a(b, c, d, e, f, g, h) {
  7459. _classCallCheck(this, a);
  7460. this._setup(b, c, d, e, f, g, h)
  7461. }
  7462. _createClass(a, [{
  7463. key: "_setup",
  7464. value: function(a, c, d, e, f, g, h) {
  7465. var b = this;
  7466. b.x = a;
  7467. b.y = c;
  7468. b.y = d;
  7469. b._model = f;
  7470. b._dist = g;
  7471. b._radius = e;
  7472. b._checkinterval = h;
  7473. b._checkTimer = setInterval(function() {
  7474. b.check()
  7475. }, 1E3 * b._checkinterval)
  7476. }
  7477. }, {
  7478. key: "check",
  7479. value: function() {
  7480. var a = mp.players.local.position;
  7481. mp.game.system.vdist(a.x, a.y, a.z, this.x, this.y, this.z) < this._dist && (mp.gui.chat.push("Remove Object"), mp.game.entity.createModelHide(this.x, this.y,
  7482. this.z, this._radius, mp.game.joaat(this._model), !0))
  7483. }
  7484. }]);
  7485. return a
  7486. }(),
  7487. AC_frozen = !1,
  7488. AC_active = !1,
  7489. AC_weapon = {},
  7490. AC_ammo = {},
  7491. AC_aim = !1,
  7492. AC_anticheat = {},
  7493. disableSprintJumpTimes = 0;
  7494. AC_anticheat.AC_movement = 0;
  7495. AC_anticheat.AC_cam = 0;
  7496. AC_anticheat.AC_teleport = 0;
  7497. AC_anticheat.AC_airbreak = 0;
  7498.  
  7499. function isPlayerAdmin(a) {
  7500. return "PARADYZE" == a || "Forces" == a || "Fabian" == a || "William" == a || "Burberry" == a || "kultstar" == a || "swordfish" == a || "Z8pn" == a || "feris" == a || "Schnizzar" == a || "Zaxon" == a || "MaNe" == a || "Varo" == a || "JannaKaiju" == a || "CarloGambino" == a ? !0 : !1
  7501. }
  7502. mp.events.add("setPlayerHealth", function(a) {
  7503. 0 > a && mp.players.local.applyDamageTo(200, !0)
  7504. });
  7505. mp.events.add("setPlayerArmor", function(a) {});
  7506.  
  7507. function AntiCheat() {
  7508. var a = mp.players.local;
  7509. a.getIsTaskActive(32) || a.getIsTaskActive(169) ? mp.events.callRemote("AntiCheat", "CHEAT_AUTODRIVE") : playerVehicleHandlerAntiCheat()
  7510. }
  7511. mp.events.add("playerWeaponShot", function(a, b) {
  7512. a = Number(weapon_data.getWeaponHash(Number(mp.players.local.weapon))); - 1569615261 != a && 2725352035 != a && 1 != AC_weapon[a] && mp.events.callRemote("AntiCheat", "CHEAT_WEAPON")
  7513. });
  7514. mp.events.add("entityStreamIn", function(a) {
  7515. "player" === a.type && (mp.game.player.setTargetingMode(1), mp.game.player.setLockon(!1), mp.game.player.setLockonRangeOverride(0), mp.players.local.setOnlyDamagedByPlayer(!1), mp.players.local.setProofs(!0, !1, !1, !1, !1, !1, !1, !1), mp.game.player.setLockonRangeOverride(0))
  7516. });
  7517. mp.events.add("removeAllPlayerWeapons", function(a, b) {
  7518. AC_weapon = {}
  7519. });
  7520. mp.events.add("givePlayerWeapon", function(a, b) {
  7521. AC_weapon[Number(a)] = !0
  7522. });
  7523. mp.events.add("setPlayerPositionFrozen", function(a, b) {
  7524. AC_frozen = a
  7525. });
  7526.  
  7527. function playerVehicleHandlerAntiCheat() {
  7528. var a = mp.players.local.vehicle;
  7529. if (a && a.getPedInSeat(-1) == mp.players.local.handle) {
  7530. var b = a.model;
  7531. a = mp.game.vehicle.getDisplayNameFromVehicleModel(b);
  7532. var c = mp.game.vehicle.getVehicleModelAcceleration(b).toFixed(3),
  7533. d = mp.game.vehicle.getVehicleModelMaxBraking(b).toFixed(3),
  7534. e = mp.game.vehicle.getVehicleModelMaxSpeed(b).toFixed(3);
  7535. b = mp.game.vehicle.getVehicleModelMaxTraction(b).toFixed(3);
  7536. mp.events.callRemote("onClientCheckVehicleModel", a, c, d, e, b, 0, 0, 0, 0)
  7537. }
  7538. }
  7539. var teleportCheck = {
  7540. vehicle: null,
  7541. lastCall: null,
  7542. lastPos: null,
  7543. threshold: 200,
  7544. strikes: 0,
  7545. max_strike: 1,
  7546. timeout: 0,
  7547. pingdata: [],
  7548. check: function() {
  7549. if ((new Date).getTime() > this.timeout) {
  7550. null == this.lastCall && (this.lastCall = (new Date).getTime(), this.lastPos = mp.players.local.position);
  7551. spectating && null != specateCam && (this.strikes = 0, this.lastCall = (new Date).getTime(), this.lastPos = mp.players.local.position);
  7552. mp.players.local.isInAnyVehicle(!1) && emergencyVehicles[mp.players.local.vehicle.model] && mp.players.local.vehicle.getPedInSeat(-1) !=
  7553. mp.players.local.handle && (this.timeout = (new Date).getTime() + 1E4);
  7554. var a = 1;
  7555. if (mp.players.local.isInAnyVehicle(!1)) {
  7556. var b = mp.players.local.vehicle.getPedInSeat(-1);
  7557. (b = mp.players.atHandle(b)) && (a = lerp(1, 5, 1 / 1500 * this.pingdata[b.name]))
  7558. }
  7559. if (mp.players.local.isDead() || 0 != isPlayerOnTuningPlace) this.strikes = 0, this.lastCall = (new Date).getTime(), this.lastPos = mp.players.local.position;
  7560. else {
  7561. b = mp.players.local.position;
  7562. var c = (new Date).getTime();
  7563. b = mp.game.system.vdist2(b.x, b.y, 0, this.lastPos.x, this.lastPos.y, 0) /
  7564. (c - this.lastCall);
  7565. b > this.threshold * a && (this.strikes += 1);
  7566. this.lastCall = (new Date).getTime();
  7567. this.lastPos = mp.players.local.position;
  7568. this.strikes >= this.max_strike && (mp.game.invoke("0xD9D2CFFF49FAB35F") ? (this.strikes = 0, this.lastCall = (new Date).getTime(), this.lastPos = mp.players.local.position) : mp.events.callRemote("AntiCheatTeleport", b.toString(), this.threshold.toString(), a.toString()))
  7569. }
  7570. } else this.strikes = 0, this.lastCall = (new Date).getTime(), this.lastPos = mp.players.local.position
  7571. },
  7572. freezeTimer: function(a) {
  7573. this.timeout =
  7574. (new Date).getTime() + 1E3 * a
  7575. },
  7576. pingData: function(a) {
  7577. var b = this;
  7578. b.pingdata = [];
  7579. a.forEach(function(a) {
  7580. b.pingdata[a.name] = a.ping
  7581. })
  7582. }
  7583. };
  7584. mp.events.add("setPlayerPosition", function(a, b) {
  7585. teleportCheck.freezeTimer(8);
  7586. LastTeleportPosition = a;
  7587. 0 != b && (moveSkyCamera(mp.players.local, "up", 1, !1), mp.players.local.freezePosition(!0), disableAllControls = !0, setTimeout(function() {
  7588. mp.players.local.position = a
  7589. }, b / 2), setTimeout(function() {
  7590. moveSkyCamera(mp.players.local, "down", 1, !1);
  7591. disableAllControls = !1;
  7592. mp.players.local.freezePosition(!1)
  7593. }, b))
  7594. });
  7595. mp.events.add("onScoreboardUpdate", function(a) {
  7596. teleportCheck.pingData(a)
  7597. });
  7598. setInterval(function() {
  7599. login ? teleportCheck.check() : teleportCheck.freezeTimer(1)
  7600. }, 100);
  7601. var noiseHistory = [],
  7602. offsetData = [],
  7603. aimData = {
  7604. target: null,
  7605. timer: null,
  7606. interval: null
  7607. };
  7608. mp.events.add("playerWeaponShot", function(a, b) {
  7609. b && (aimData.target = b, clearTimeout(aimData.timer), clearInterval(aimData.interval), aimData.timer = setTimeout(function() {
  7610. aimData.target = null;
  7611. offsetData = [];
  7612. clearInterval(aimData.interval)
  7613. }, 2E3), aimData.interval = setInterval(function() {
  7614. getOffsets()
  7615. }, 10))
  7616. });
  7617.  
  7618. function getOffsets() {
  7619. if (null != aimData.target) {
  7620. var a = mp.players.local.aimingAt,
  7621. b = aimData.target.position;
  7622. 5 > mp.game.system.vdist2(a.x, a.y, a.z, b.x, b.y, b.z) ? (a = aimData.target.getOffsetFromGivenWorldCoords(a.x, a.y, a.z), offsetData.push({
  7623. target: aimData.target,
  7624. offset: a
  7625. }), 1E3 < offsetData.length && offsetData.shift()) : (aimData.target = null, clearTimeout(aimData.timer), clearInterval(aimData.interval), offsetData = [])
  7626. }
  7627. }
  7628. var LocalAntiCheatPeds = [],
  7629. LocalAntiCheatPedMaxAmount = 1,
  7630. LocalAntiCheatPedSettings = [];
  7631. mp.events.add("setPlayerRandomNPC", function(a, b) {
  7632. setTimeout(function() {
  7633. AC_aim = !0
  7634. }, 5E3);
  7635. LocalAntiCheatPedMaxAmount = a;
  7636. LocalAntiCheatPedSettings = JSON.parse(b)
  7637. });
  7638. mp.events.add("render", function(a) {
  7639. if (1 == AC_aim) {
  7640. var b = mp.game.player.getEntityIsFreeAimingAt(),
  7641. c = mp.players.local.position;
  7642. null != c && mp.peds.forEachInStreamRange(function(a) {
  7643. if (a.IsAntiCheatNPC && (a.IsADowner && a.setCoords(c.x, c.y, c.z - 50, !0, !1, !1, !0), natives.SET_ENTITY_ALPHA(a, 0, !0), natives.SET_ENTITY_NO_COLLISION_ENTITY(a, mp.players.local, !1), natives.SET_ENTITY_NO_COLLISION_ENTITY(mp.players.local, a, !1), mp.players.local.vehicle && (natives.SET_ENTITY_NO_COLLISION_ENTITY(a, mp.players.local.vehicle, !1),
  7644. natives.SET_ENTITY_NO_COLLISION_ENTITY(mp.players.local.vehicle, a, !1)), natives.DISABLE_PED_PAIN_AUDIO(a, !0), mp.game.audio.stopCurrentPlayingAmbientSpeech(a.handle), b == a.handle)) {
  7645. var d = a.getCoords(!0);
  7646. null != d && a.setCoords(d.x + 2, d.y - 2, c.z, !0, !1, !1, !0)
  7647. }
  7648. })
  7649. }
  7650. });
  7651. setInterval(function() {
  7652. 1 == AC_aim && SpawnAntiCheatNPCs()
  7653. }, 2E3);
  7654.  
  7655. function SpawnAntiCheatNPCs() {
  7656. if (LocalAntiCheatPeds.length <= LocalAntiCheatPedMaxAmount) {
  7657. var a = getRandomArbitrary(-100, 100); - 30 < a && 30 > a && (a = 30);
  7658. var b = LocalAntiCheatPedSettings[Math.floor(Math.random() * LocalAntiCheatPedSettings.length)],
  7659. c = "MP_F_Freemode_01";
  7660. "male" == b.Gender && (c = "MP_M_Freemode_01");
  7661. var d = mp.players.local.position.x + a;
  7662. a = mp.players.local.position.y + a;
  7663. var e = mp.game.gameplay.getGroundZFor3dCoord(d, a, mp.players.local.position.z, 0, !1) + 1;
  7664. d = new mp.Vector3(d, a, e);
  7665. c = mp.peds.new(mp.game.joaat(c),
  7666. d, 270, 0);
  7667. c.freezePosition(!1);
  7668. natives.DISABLE_PED_PAIN_AUDIO(c, !0);
  7669. natives.SET_ENTITY_ALPHA(c, 0, !0);
  7670. d = getRandomArbitrary(0, 100);
  7671. 25 <= d && c.taskWanderStandard(10, 10);
  7672. c.setHealth(getRandomArbitrary(100, 200));
  7673. c.setArmour(getRandomArbitrary(0, 100));
  7674. for (a = 0; a < b.Datas.length; a++) c.setComponentVariation(b.Datas[a].slot, b.Datas[a].drawable, b.Datas[a].texture, 0);
  7675. LocalAntiCheatPeds.unshift(c);
  7676. c.IsAntiCheatNPC = !0;
  7677. 5 >= d && (c.IsADowner = !0)
  7678. } else b = LocalAntiCheatPeds[LocalAntiCheatPedMaxAmount - 1], void 0 !== b && (LocalAntiCheatPeds.pop(),
  7679. b.destroy())
  7680. }
  7681. var SlotLanguage = null;
  7682. SlotLanguage = lang_de.window_casino_slot;
  7683. var SlotStake = 10;
  7684. mp.events.add("OnSlotClosed", function() {
  7685. null != Webwindow.Slot && (Webwindow.Slot.destroy(), Webwindow.Slot = null, disableAllControls = mp.gui.cursor.visible = !1)
  7686. });
  7687. mp.events.add("OpenPlayerSlotMachine", function(a) {
  7688. null == Webwindow.Slot && (Webwindow.Slot = new CEFBrowser("package://viov/client_ui/html/casino/slot/slot.html", !0), disableAllControls = !0, mp.gui.cursor.visible = !0, SlotStake = a)
  7689. });
  7690. mp.events.add("OnSlotMaschineLoaded", function() {
  7691. null != Webwindow.Slot && Webwindow.Slot.call("banditInit", SlotLanguage, SlotStake)
  7692. });
  7693. mp.events.add("changeHUD", function(a) {
  7694. voiceChat.call("toggleHUD", a)
  7695. });
  7696. mp.events.add("startSoundRolling", function() {
  7697. mp.events.call("playSound", "slot_rolling.mp3", !1)
  7698. });
  7699. mp.events.add("playWinSound", function() {
  7700. mp.events.call("playSound", "slotmachine_win.mp3", !1)
  7701. });
  7702. mp.events.add("SetPlayerSlotMachineResult", function(a, b, c, d) {
  7703. null != Webwindow.Slot && Webwindow.Slot.call("banditStartGame", a, b, c, d)
  7704. });
  7705. mp.events.add("requestStartGame", function(a) {
  7706. mp.events.callRemote("OnClientRequestSlotMachineResult", a)
  7707. });
  7708. var casino_positions = {
  7709. cheap_positions: [{
  7710. x: 953.174438,
  7711. y: 27.9130917,
  7712. z: 44.4684334,
  7713. rot: new mp.Vector3(0, 0, -4.57984209)
  7714. }, {
  7715. x: 951.874756,
  7716. y: 28.013092,
  7717. z: 44.4684334,
  7718. rot: new mp.Vector3(0, 0, -4.57984161)
  7719. }, {
  7720. x: 950.475098,
  7721. y: 28.1130924,
  7722. z: 44.4684334,
  7723. rot: new mp.Vector3(0, 0, -4.57984114)
  7724. }, {
  7725. x: 949.275391,
  7726. y: 28.2130928,
  7727. z: 44.4684334,
  7728. rot: new mp.Vector3(0, 0, -4.57984114)
  7729. }, {
  7730. x: 947.875732,
  7731. y: 28.3130932,
  7732. z: 44.4684334,
  7733. rot: new mp.Vector3(0, 0, -4.57984114)
  7734. }, {
  7735. x: 952.323608,
  7736. y: 11.8030014,
  7737. z: 44.4684334,
  7738. rot: new mp.Vector3(0, -0, 176.419754)
  7739. }, {
  7740. x: 950.823975,
  7741. y: 11.9030018,
  7742. z: 44.4684334,
  7743. rot: new mp.Vector3(0, -0, 176.419754)
  7744. }, {
  7745. x: 949.624268,
  7746. y: 12.0030022,
  7747. z: 44.4684334,
  7748. rot: new mp.Vector3(0, -0, 176.419754)
  7749. }, {
  7750. x: 948.124634,
  7751. y: 12.1030025,
  7752. z: 44.4684334,
  7753. rot: new mp.Vector3(0, -0, 176.419754)
  7754. }, {
  7755. x: 946.924927,
  7756. y: 12.2030029,
  7757. z: 44.4684334,
  7758. rot: new mp.Vector3(0, -0, 176.419754)
  7759. }],
  7760. medium_positions: [{
  7761. x: 947.47583,
  7762. y: 22.1130905,
  7763. z: 44.4684334,
  7764. rot: new mp.Vector3(0, 0, -4.57984114)
  7765. }, {
  7766. x: 948.775513,
  7767. y: 22.0130901,
  7768. z: 44.4684334,
  7769. rot: new mp.Vector3(0, 0, -4.57984114)
  7770. }, {
  7771. x: 950.175171,
  7772. y: 21.9130898,
  7773. z: 44.4684334,
  7774. rot: new mp.Vector3(0, 0, -4.57984114)
  7775. }, {
  7776. x: 951.374878,
  7777. y: 21.8130894,
  7778. z: 44.4684334,
  7779. rot: new mp.Vector3(0, 0, -4.57984114)
  7780. }, {
  7781. x: 952.774536,
  7782. y: 21.713089,
  7783. z: 44.4684334,
  7784. rot: new mp.Vector3(0, 0, -4.57984114)
  7785. }, {
  7786. x: 947.224854,
  7787. y: 18.5030041,
  7788. z: 44.4684334,
  7789. rot: new mp.Vector3(0, -0, 176.419754)
  7790. }, {
  7791. x: 948.524536,
  7792. y: 18.4030037,
  7793. z: 44.4684334,
  7794. rot: new mp.Vector3(0, -0, 176.419754)
  7795. }, {
  7796. x: 949.924194,
  7797. y: 18.2030029,
  7798. z: 44.4684334,
  7799. rot: new mp.Vector3(0, -0, 176.419754)
  7800. }, {
  7801. x: 951.323853,
  7802. y: 18.2030029,
  7803. z: 44.4684334,
  7804. rot: new mp.Vector3(0, -0, 176.419754)
  7805. }, {
  7806. x: 952.52356,
  7807. y: 18.1030025,
  7808. z: 44.4684334,
  7809. rot: new mp.Vector3(0, -0, 176.419754)
  7810. }],
  7811. high_positions: [{
  7812. x: 952.474609,
  7813. y: 15.6130886,
  7814. z: 44.4684334,
  7815. rot: new mp.Vector3(0, 0, -4.57984114)
  7816. }, {
  7817. x: 950.974976,
  7818. y: 15.713089,
  7819. z: 44.4684334,
  7820. rot: new mp.Vector3(0, 0, -4.57984114)
  7821. }, {
  7822. x: 949.675293,
  7823. y: 15.8130894,
  7824. z: 44.4684334,
  7825. rot: new mp.Vector3(0, 0, -4.57984114)
  7826. }, {
  7827. x: 948.475586,
  7828. y: 15.8130894,
  7829. z: 44.4684334,
  7830. rot: new mp.Vector3(0, 0, -4.57984114)
  7831. }, {
  7832. x: 947.075928,
  7833. y: 15.9130898,
  7834. z: 44.4684334,
  7835. rot: new mp.Vector3(0, 0, -4.57984114)
  7836. }, {
  7837. x: 953.023438,
  7838. y: 24.3030033,
  7839. z: 44.4684334,
  7840. rot: new mp.Vector3(0, -0, 176.419754)
  7841. }, {
  7842. x: 951.623779,
  7843. y: 24.4030037,
  7844. z: 44.4684334,
  7845. rot: new mp.Vector3(0, -0, 176.419754)
  7846. }, {
  7847. x: 950.324097,
  7848. y: 24.4030037,
  7849. z: 44.4684334,
  7850. rot: new mp.Vector3(0, -0, 176.419754)
  7851. }, {
  7852. x: 949.024414,
  7853. y: 24.5030041,
  7854. z: 44.4684334,
  7855. rot: new mp.Vector3(0, -0, 176.419754)
  7856. }, {
  7857. x: 947.724731,
  7858. y: 24.6030045,
  7859. z: 44.4684334,
  7860. rot: new mp.Vector3(0, -0, 176.419754)
  7861. }]
  7862. };
  7863. mp.keys.bind(69, !1, function() {
  7864. if (1 != mp.gui.cursor.visible && 11 == mp.players.local.dimension) {
  7865. var a = mp.players.local.position,
  7866. b = !1;
  7867. casino_positions.cheap_positions.forEach(function(c) {
  7868. 4 >= mp.game.system.vdist2(a.x, a.y, a.z, c.x, c.y, c.z) && (b = !0)
  7869. });
  7870. casino_positions.medium_positions.forEach(function(c) {
  7871. 4 >= mp.game.system.vdist2(a.x, a.y, a.z, c.x, c.y, c.z) && (b = !0)
  7872. });
  7873. casino_positions.high_positions.forEach(function(c) {
  7874. 4 >= mp.game.system.vdist2(a.x, a.y, a.z, c.x, c.y, c.z) && (b = !0)
  7875. });
  7876. 1 == b && mp.events.callRemote("OnClientRequestOpenSlotMachine",
  7877. 10)
  7878. }
  7879. });
Add Comment
Please, Sign In to add comment