Greasy Fork is available in English.

The-West Sweets

Cool features!

  1. // ==UserScript==
  2. // @name The-West Sweets
  3. // @namespace TWSweets
  4. // @author Shelimov (updated by Tom Robert)
  5. // @description Cool features!
  6. // @include https://*.the-west.*/game.php*
  7. // @exclude https://classic.the-west.net*
  8. // @version 1.2.8
  9. // @grant none
  10. // ==/UserScript==
  11. // translation:Shelimov(Russian),Tom Robert(German),pepe100(Spanish),jccwest(Portuguese),Lutte Finale(French),anto81(Italian),0ndra(Polish),JackJeruk(Hungarian),Jamza(Czech&Slovak),Timemod Herkumo(Greek)
  12. (function (fn) {
  13. var script = document.createElement('script');
  14. script.setAttribute('type', 'application/javascript');
  15. script.textContent = '(' + fn + ')();';
  16. document.body.appendChild(script);
  17. document.body.removeChild(script);
  18. })(function () {
  19. TWS = {
  20. version: '1.2.8',
  21. name: 'TWSweets',
  22. author: 'Shelimov (updated by Tom Robert)',
  23. minGame: '2.06',
  24. maxGame: Game.version.toString(),
  25. website: 'https://greasyfork.org/scripts/11379',
  26. updateUrl: 'https://tomrobert.safe-ws.de/sUp.js',
  27. updateAd: 'http://adf.ly/1LtS60',
  28. date: '27 January 2018',
  29. langs: {
  30. en: {
  31. language: 'English',
  32. ApiGui: 'This script contains some cool features which improve your gaming experience on The West.',
  33. contact: 'Contact',
  34. opentab: 'Open %1 tab',
  35. general: 'General',
  36. main: 'Main',
  37. chooseLang: 'Choose language',
  38. saved: 'Successfully saved',
  39. need_reload: 'The page will be reloaded, ok?',
  40. patches_title: 'Modifications/Patches',
  41. enable_select: 'Enable selectable text',
  42. enable_lastpage: 'Enable last page mod',
  43. enable_timelefters: 'Enable regeneration timers',
  44. enable_beeper: 'Enable Beeper',
  45. enable_beeper_title: '<b>Beeper</b> - Sound alert at new private chat message',
  46. enable_town_button: 'Enable ExTB',
  47. enable_town_title: '<b>ExtTB</b><i>(Extension for Town Button)</i>:<br>Extend town button in bottom bar.',
  48. enable_noenergy: 'Remove premium message at low energy',
  49. enable_menutop: 'Keep the menu and scripts bar always on top',
  50. to_last_page: 'Go to last page of the topic',
  51. wir: 'WIR',
  52. wir_enabler: 'Enable WIR',
  53. wir_enabler_title: '(West Inventory Reducer)</i>:<br>Resizes inventory items and adds a scroll bar.',
  54. wir_on_line: 'on a row',
  55. wir_on_one_line: 'Number of items per line',
  56. ext: 'Close inventory and docked window',
  57. ext_enabler: 'Extra close button',
  58. ext_enabler_title: 'Additional button that closes inventory and docked window',
  59. open: 'Open ',
  60. bank: 'Bank',
  61. saloon: 'Saloon',
  62. sleep: 'Sleep',
  63. sleep_in_hotel: 'Sleep in your hotel',
  64. forum: 'Town forum',
  65. market: 'Market',
  66. pray: 'Pray',
  67. pray_in_church: 'Start to pray',
  68. sheriff: 'Sheriff',
  69. cityhall: 'Town hall',
  70. dont_have_hotel: 'You don\'t have a hotel!',
  71. DuelSafer_found: 'DuelSafer',
  72. DuelSafer_no_town: 'This player is without a town!',
  73. DuelSafer_friend_text: 'Do you want to attack a friend?',
  74. DuelSafer_from_town: 'Town',
  75. DuelSafer_from_alliance: 'Alliance',
  76. DuelSafer_from_player: 'Player',
  77. DuelSafer_friend: 'Friend attack',
  78. DuelSafer_input_town: 'Add new town',
  79. DuelSafer_input_alliance: 'Add new alliance',
  80. DuelSafer_input_player: 'Add a new player',
  81. DuelSafer_not_found_town: 'Can\'t find the town',
  82. DuelSafer_not_found_ally: 'Can\'t find the alliance',
  83. DuelSafer_not_found_player: 'Can\'t find the player',
  84. DuelSafer_already_have: 'Already on the list',
  85. open_town: 'Open town window',
  86. open_ally: 'Open alliance window',
  87. open_player: 'Open player profile',
  88. help_icon: 'Add players, towns or alliances to the Duelsafer list to get a confirmation pop-up before duelling them.',
  89. add: 'Add',
  90. addfriends: 'Add all your friends',
  91. friendlist: 'Friend list',
  92. delete_town: 'Remove town',
  93. delete_ally: 'Remove alliance',
  94. delete_player: 'Remove player',
  95. default_sound: 'Default sound',
  96. beeper_sound: 'Choose file',
  97. listen: 'Listen',
  98. HealthTL_to: 'Time left for full health',
  99. EnergyTL_to: 'Time left for full energy',
  100. HealthNext: 'Next health point in',
  101. EnergyNext: 'Next energy point in',
  102. Reg_perH: 'Regeneration per hour',
  103. Reg_missing: 'Missing',
  104. },
  105. ru: {
  106. language: 'Russian (русский)',
  107. ApiGui: 'This script contains some cool features which improve your gaming experience on The West.',
  108. contact: 'Контакты',
  109. opentab: 'Открыть вкладку "%1"',
  110. general: 'Общее',
  111. main: 'Главные',
  112. chooseLang: 'Сменить язык (Language)',
  113. saved: 'Successfully saved',
  114. need_reload: 'Требуется перезагрузка страницы. Выполнить?',
  115. patches_title: 'Модфикации/Патчи',
  116. enable_select: 'Сделать текст выделяемым',
  117. enable_lastpage: 'Переход к последней странице',
  118. enable_timelefters: 'Включить счетчики',
  119. enable_beeper: 'Включить бипер',
  120. enable_beeper_title: '<b>Beeper</b> - звуковое уведомление о новом сообщении в приват',
  121. enable_town_button: 'Включить кнопку "Город"',
  122. enable_town_title: 'Добавляет справа кнопку <b>"город"</b>, которая содержит функции для быстрого управления "городскими" задачами. (Открыть сплетни, лечь спать в ближ. форт, рынок, церковь и т.п)',
  123. enable_noenergy: 'Remove premium message at low energy',
  124. enable_menutop: 'Keep the menu and scripts bar always on top',
  125. to_last_page: 'К последней странице',
  126. wir: 'WIR',
  127. wir_enabler: 'Уменьшитель инвентаря',
  128. wir_enabler_title: '(West Inventory Reducer)</i>:<br>Resizes inventory items and adds a scroll bar.',
  129. wir_on_line: 'на строку',
  130. wir_on_one_line: 'Кол-во элементов на строку в инвентаре',
  131. ext: 'Close inventory and docked window',
  132. ext_enabler: 'Extra close button',
  133. ext_enabler_title: 'Additional button that closes inventory and docked window',
  134. open: 'Open ',
  135. bank: 'Банк',
  136. saloon: 'Cалун',
  137. sleep: 'Sleep',
  138. sleep_in_hotel: 'Спать в своем отеле',
  139. forum: 'Сплетни',
  140. market: 'Рынок',
  141. pray: 'Pray',
  142. pray_in_church: 'Start to pray',
  143. sheriff: 'Шериф',
  144. cityhall: 'Town hall',
  145. dont_have_hotel: 'У тебя не построен отель!',
  146. DuelSafer_found: 'DuelSafer',
  147. DuelSafer_no_town: 'This player is without a town!',
  148. DuelSafer_friend_text: 'О нет! Это союзник! Вы действительно хотите напасть?',
  149. DuelSafer_from_town: 'Город',
  150. DuelSafer_from_alliance: 'Альянс',
  151. DuelSafer_from_player: 'Player',
  152. DuelSafer_friend: 'Нападение на союзника',
  153. DuelSafer_input_town: 'Введите название города',
  154. DuelSafer_input_alliance: 'Введите название альянса',
  155. DuelSafer_input_player: 'Add a new player',
  156. DuelSafer_not_found_town: 'Не найден такой город',
  157. DuelSafer_not_found_ally: 'Не найден такой альянс',
  158. DuelSafer_not_found_player: 'Can\'t find the player',
  159. DuelSafer_already_have: 'Уже есть в списке городов/альянсов',
  160. open_town: 'Open town window',
  161. open_ally: 'Open alliance window',
  162. open_player: 'Open player profile',
  163. help_icon: 'Add players, towns or alliances to the Duelsafer list to get a confirmation pop-up before duelling them.',
  164. add: 'Добавить',
  165. addfriends: 'Add all your friends',
  166. friendlist: 'Friend list',
  167. delete_town: 'Remove town',
  168. delete_ally: 'Remove alliance',
  169. delete_player: 'Remove player',
  170. default_sound: 'Стандартный звук',
  171. beeper_sound: 'Свой аудиофайл',
  172. listen: 'Прослушать',
  173. HealthTL_to: 'Полное восстановление хп через',
  174. EnergyTL_to: 'Полное восстановление энергии через',
  175. HealthNext: 'Next health point in',
  176. EnergyNext: 'Next energy point in',
  177. Reg_perH: 'Регенерация в час единиц',
  178. Reg_missing: 'Missing',
  179. },
  180. de: {
  181. language: 'German (Deutsch)',
  182. ApiGui: 'Das Script beinhaltet ein paar coole Funktionen für ein besseres Spielerlebnis bei The West.',
  183. contact: 'Kontakt',
  184. opentab: 'Öffne den Tab %1',
  185. general: 'Einstellungen',
  186. main: 'Allgemein',
  187. chooseLang: 'Sprache ändern (Language)',
  188. saved: 'Änderung gespeichert',
  189. need_reload: 'Die Seite wird neu geladen, ok?',
  190. patches_title: 'Modifikationen/Patches',
  191. enable_select: 'Text markieren aktivieren',
  192. enable_lastpage: 'Letzte Seite Mod aktivieren',
  193. enable_timelefters: 'Regeneration Timer aktivieren',
  194. enable_beeper: 'Beeper aktivieren',
  195. enable_beeper_title: '<b>Beeper</b> - Ein Ton erklingt, wenn man angeflüstert wird',
  196. enable_town_button: 'ExtTB aktivieren',
  197. enable_town_title: '<b>ExtTB</b><i>(Extension for Town Button)</i>:<br>Der Stadtbutton wird mit verschiedenen Links erweitert.',
  198. enable_noenergy: 'Hinweis auf Erholung PA entfernen',
  199. enable_menutop: 'Halte die Menü- und Scriptsleiste immer im Vordergrund',
  200. to_last_page: 'Gehe zur letzten Seite',
  201. wir: 'WIR',
  202. wir_enabler: 'WIR aktivieren',
  203. wir_enabler_title: '(West Inventory Reducer)</i>:<br>Verkleinert die Gegenstände im Inventar und fügt einen Scroll-Balken hinzu.',
  204. wir_on_line: 'pro Zeile',
  205. wir_on_one_line: 'Anzahl Gegenstände in einer Reihe',
  206. ext: 'Inventar- und Ausrüstungs-Fenster schließen',
  207. ext_enabler: 'Extra Schließ-Button',
  208. ext_enabler_title: 'Zusätzlicher Button, welcher nur das Inventar und das angeheftete Fenster schließt.',
  209. open: 'Öffne ',
  210. bank: 'Bank',
  211. saloon: 'Saloon',
  212. sleep: 'Schlafen',
  213. sleep_in_hotel: 'Im eigenen Hotel schlafen',
  214. forum: 'Stadtforum',
  215. market: 'Markt',
  216. pray: 'Beten',
  217. pray_in_church: 'Bete in der Kirche',
  218. sheriff: 'Sheriff',
  219. cityhall: 'Stadthalle',
  220. dont_have_hotel: 'Deine Stadt hat kein Hotel!',
  221. DuelSafer_found: 'DuelSafer',
  222. DuelSafer_no_town: 'Dieser Spieler ist stadtlos!',
  223. DuelSafer_friend_text: 'Freund wirklich duellieren?',
  224. DuelSafer_from_town: 'Stadt',
  225. DuelSafer_from_alliance: 'Bündnis',
  226. DuelSafer_from_player: 'Spieler',
  227. DuelSafer_friend: 'Duell gegen Freund',
  228. DuelSafer_input_town: 'Füge eine neue Stadt hinzu',
  229. DuelSafer_input_alliance: 'Füge ein neues Bündnis hinzu',
  230. DuelSafer_input_player: 'Füge einen neuen Spieler hinzu',
  231. DuelSafer_not_found_town: 'Diese Stadt existiert nicht.',
  232. DuelSafer_not_found_ally: 'Dieses Bündnis existiert nicht.',
  233. DuelSafer_not_found_player: 'Dieser Spieler existiert nicht.',
  234. DuelSafer_already_have: 'Ist bereits auf der Liste',
  235. open_town: 'Öffne Stadfenster',
  236. open_ally: 'Öffne Bündnisübersicht',
  237. open_player: 'Öffne Spielerprofil',
  238. help_icon: 'Füge Spieler, Städte oder Bündnisse zur DuelSafer-Liste hinzu, damit vor einem Duell ein Bestätigungs-Popup auftaucht.',
  239. add: 'Hinzufügen',
  240. addfriends: 'All deine Freunde hinzufügen',
  241. friendlist: 'Freundesliste',
  242. delete_town: 'Stadt entfernen',
  243. delete_ally: 'Bündnis entfernen',
  244. delete_player: 'Spieler entfernen',
  245. default_sound: 'Standard',
  246. beeper_sound: 'Datei auswählen',
  247. listen: 'Anhören',
  248. HealthTL_to: 'Zeit bis zu 100% Lebenspunkte',
  249. EnergyTL_to: 'Zeit bis zu 100% Erholung',
  250. HealthNext: 'Nächster Lebenspunkt in',
  251. EnergyNext: 'Nächster Erholungspunkt in',
  252. Reg_perH: 'Regeneration pro Stunde',
  253. Reg_missing: 'Fehlend',
  254. },
  255. es: {
  256. language: 'Spanish (español)',
  257. ApiGui: 'Este script contiene algunas funciones interesantes que mejoran su experiencia de juego en The West.',
  258. contact: 'Contacto',
  259. opentab: 'Abrir pestaña %1',
  260. general: 'General',
  261. main: 'Principal',
  262. chooseLang: 'Elegir idioma (Language)',
  263. saved: 'Los ajustes han sido guardados!',
  264. need_reload: 'La página será recargada, ¿de acuerdo?',
  265. patches_title: 'Modificaciones/Parches',
  266. enable_select: 'Habilitar texto seleccionable',
  267. enable_lastpage: 'Habilitar última página foro',
  268. enable_timelefters: 'Habilitar temporizadores de regeneración',
  269. enable_beeper: 'Habilitar Beeper',
  270. enable_beeper_title: '<b>Beeper</b> - Sonido de alerta sobre nuevo mensaje',
  271. enable_town_button: 'Enable ExTB',
  272. enable_town_title: '<b>ExtTB</b><i>(Extensión para el botón ciudad)</i>:<br>Extiende el botón ciudad en la barra inferior.',
  273. enable_noenergy: 'Remove premium message at low energy',
  274. enable_menutop: 'Keep the menu and scripts bar always on top',
  275. to_last_page: 'Ir a la última página del hilo',
  276. wir: 'WIR',
  277. wir_enabler: 'Habilitar WIR',
  278. wir_enabler_title: '(West Inventario Reductor)</i>:<br>Redimensiona los artículos del inventario y añade una barra desplazamiento.',
  279. wir_on_line: 'en una fila',
  280. wir_on_one_line: 'Número de artículos por línea',
  281. ext: 'Cierra el inventario y las ventanas fijas',
  282. ext_enabler: 'Botón extra cierre',
  283. ext_enabler_title: 'Botón adicional que cierra el Inventario y las ventanas fijas',
  284. open: 'Abrir ',
  285. bank: 'Banco',
  286. saloon: 'Salón',
  287. sleep: 'Dormir',
  288. sleep_in_hotel: 'Dormir en tu hotel',
  289. forum: 'Foro ciudad',
  290. market: 'Mercado',
  291. pray: 'Rezar',
  292. pray_in_church: 'Comenzar a rezar',
  293. sheriff: 'Sheriff',
  294. cityhall: 'Ayuntamiento',
  295. dont_have_hotel: '¡No dispones de hotel!',
  296. DuelSafer_found: 'Duelo-Seguro',
  297. DuelSafer_no_town: '¡Este jugador no tiene ciudad!',
  298. DuelSafer_friend_text: '¿Quieres atacar un amigo?',
  299. DuelSafer_from_town: 'Ciudad',
  300. DuelSafer_from_alliance: 'Alianza',
  301. DuelSafer_from_player: 'Player',
  302. DuelSafer_friend: 'Atacar amigo',
  303. DuelSafer_input_town: 'Agregar nueva Ciudad',
  304. DuelSafer_input_alliance: 'Agregar nueva Alianza',
  305. DuelSafer_input_player: 'Add a new player',
  306. DuelSafer_not_found_town: 'No puedo encontrar la Ciudad',
  307. DuelSafer_not_found_ally: 'No puedo encontrar la Alianza',
  308. DuelSafer_not_found_player: 'Can\'t find the player',
  309. DuelSafer_already_have: 'Ya está en la lista',
  310. open_town: 'Abrir ventana Ciudad',
  311. open_ally: 'Abrir ventana Alianza',
  312. open_player: 'Open player profile',
  313. help_icon: 'Add players, towns or alliances to the Duelsafer list to get a confirmation pop-up before duelling them.',
  314. add: 'Agregar',
  315. addfriends: 'Add all your friends',
  316. friendlist: 'Friend list',
  317. delete_town: 'Eliminar Ciudad',
  318. delete_ally: 'Eliminar Alianza',
  319. delete_player: 'Remove player',
  320. default_sound: 'Sonido por defecto',
  321. beeper_sound: 'Elegir archivo',
  322. listen: 'Escuchar',
  323. HealthTL_to: 'Tiempo restante salud completa',
  324. EnergyTL_to: 'Tiempo restante energía completa',
  325. HealthNext: 'Próximo punto de salud en',
  326. EnergyNext: 'Próximo punto de energía en',
  327. Reg_perH: 'Regeneración por hora',
  328. Reg_missing: 'Falta para completar',
  329. },
  330. pt: {
  331. language: 'Portuguese (português)',
  332. ApiGui: 'Esse script contém alguns recursos interessantes que melhoram a sua experiência no jogo The West.',
  333. contact: 'Contato com Autor',
  334. opentab: 'Abrir %1 separador',
  335. general: 'Geral',
  336. main: 'Principal',
  337. chooseLang: 'Escolhe idioma (Language)',
  338. saved: 'Successfully saved',
  339. need_reload: 'A página será recarregada, ok?',
  340. patches_title: 'Modificações/Patches',
  341. enable_select: 'Ativar texto selecionado',
  342. enable_lastpage: 'Ativar última página mod',
  343. enable_timelefters: 'Ativar temporizadores',
  344. enable_beeper: 'Ativar Beeper',
  345. enable_beeper_title: '<b>Beeper</b> - Som de alerta sobre novo sussurro',
  346. enable_town_button: 'Habilitar botao "Cidade"',
  347. enable_town_title: 'Voce pode gerenciar instantaneamente a maioria das tarefas em sua cidade com este script, que e a adicao de um botao com o mesmo nome no lado direito. (Ex: Ir dormir no forte mais proximo, mercado, igreja etc)',
  348. enable_noenergy: 'Remove premium message at low energy',
  349. enable_menutop: 'Keep the menu and scripts bar always on top',
  350. to_last_page: 'Ir para a ultima pagina',
  351. wir: 'WIR',
  352. wir_enabler: 'Redutor de Inventario',
  353. wir_enabler_title: '(West Inventory Reducer)</i>:<br>Resizes inventory items and adds a scroll bar.',
  354. wir_on_line: 'em uma linha',
  355. wir_on_one_line: 'Numero de itens em uma linha',
  356. ext: 'Close inventory and docked window',
  357. ext_enabler: 'Extra close button',
  358. ext_enabler_title: 'Additional button that closes inventory and docked window',
  359. open: 'Open ',
  360. bank: 'Banco',
  361. saloon: 'Salao da cidade',
  362. sleep: 'Sleep',
  363. sleep_in_hotel: 'Dormir no hotel',
  364. forum: 'Forum',
  365. market: 'Mercado',
  366. pray: 'Pray',
  367. pray_in_church: 'Start to pray',
  368. sheriff: 'Xerife',
  369. cityhall: 'Town hall',
  370. dont_have_hotel: 'Voce nao tem um hotel!',
  371. DuelSafer_found: 'DuelSafer',
  372. DuelSafer_no_town: 'This player is without a town!',
  373. DuelSafer_friend_text: 'Esse jogador e uma alianca. Ataca-lo mesmo assim?',
  374. DuelSafer_from_town: 'Cidade',
  375. DuelSafer_from_alliance: 'Alianca',
  376. DuelSafer_from_player: 'Player',
  377. DuelSafer_friend: 'Aliado atacando',
  378. DuelSafer_input_town: 'Insira o nome de uma cidade',
  379. DuelSafer_input_alliance: 'Insira o nome de uma alianca',
  380. DuelSafer_input_player: 'Add a new player',
  381. DuelSafer_not_found_town: 'Cidade nao encontrada',
  382. DuelSafer_not_found_ally: 'Alianca nao encontrada',
  383. DuelSafer_not_found_player: 'Can\'t find the player',
  384. DuelSafer_already_have: 'Ja existe na lista das cidades/aliancas',
  385. open_town: 'Open town window',
  386. open_ally: 'Open alliance window',
  387. open_player: 'Open player profile',
  388. help_icon: 'Add players, towns or alliances to the Duelsafer list to get a confirmation pop-up before duelling them.',
  389. add: 'Adicionar',
  390. addfriends: 'Add all your friends',
  391. friendlist: 'Friend list',
  392. delete_town: 'Remove town',
  393. delete_ally: 'Remove alliance',
  394. delete_player: 'Remove player',
  395. default_sound: 'Som padrão',
  396. beeper_sound: 'Escolher arquivo',
  397. listen: 'Ouvir',
  398. HealthTL_to: 'Tempo restante para saúde total',
  399. EnergyTL_to: 'Tempo restante para a energia total',
  400. HealthNext: 'Next health point in',
  401. EnergyNext: 'Next energy point in',
  402. Reg_perH: 'Regeneração por hora',
  403. Reg_missing: 'Missing',
  404. },
  405. fr: {
  406. language: 'French (français)',
  407. ApiGui: 'Ce script contient des fonctionnalités géniales qui améliorent votre expérience de The West.',
  408. contact: 'Contact',
  409. opentab: 'Ouvrez l\'onglet %1',
  410. general: 'Parametres',
  411. main: 'Options',
  412. chooseLang: 'Changer la langue (Language)',
  413. saved: 'Successfully saved',
  414. need_reload: 'La page doit etre rafraichie, proceder?',
  415. patches_title: 'Modifications/Patches',
  416. enable_select: 'Activer texte selectionnable',
  417. enable_lastpage: 'Activer dernière page mod',
  418. enable_timelefters: 'Activer régénération compteur',
  419. enable_beeper: 'Activer TW Beeper',
  420. enable_beeper_title: '<b>Beeper</b> - Alerte sonore pour les chuchos',
  421. enable_town_button: 'Active le bouton "Ville"',
  422. enable_town_title: 'Permet de prevoir/activer des taches automatiques (dormir a l\'hotel, au fort, ouvrir le sheriff...',
  423. enable_noenergy: 'Remove premium message at low energy',
  424. enable_menutop: 'Keep the menu and scripts bar always on top',
  425. to_last_page: 'Derniere page',
  426. wir: 'WIR',
  427. wir_enabler: 'Reducteur d\'inventaire',
  428. wir_enabler_title: '(West Inventory Reducer)</i>:<br>Resizes inventory items and adds a scroll bar.',
  429. wir_on_line: 'sur une ligne',
  430. wir_on_one_line: 'Nombre d\'item sur une ligne',
  431. ext: 'Close inventory and docked window',
  432. ext_enabler: 'Extra close button',
  433. ext_enabler_title: 'Additional button that closes inventory and docked window',
  434. open: 'Open ',
  435. bank: 'Banque',
  436. saloon: 'Propre saloon',
  437. sleep: 'Sleep',
  438. sleep_in_hotel: 'Sleep in your hotel',
  439. forum: 'Forum',
  440. market: 'Marche',
  441. pray: 'Pray',
  442. pray_in_church: 'Start to pray',
  443. sheriff: 'Sheriff',
  444. cityhall: 'Town hall',
  445. dont_have_hotel: 'Tu n\'as pas d\'hotel!',
  446. DuelSafer_found: 'Duels Securises',
  447. DuelSafer_no_town: 'This player is without a town!',
  448. DuelSafer_friend_text: 'Ce joueur est allie, l\'attaquer quand meme?',
  449. DuelSafer_from_town: 'Ville',
  450. DuelSafer_from_alliance: 'Alliance',
  451. DuelSafer_from_player: 'Player',
  452. DuelSafer_friend: 'Attaque Alliee',
  453. DuelSafer_input_town: 'Entrer nom de la ville',
  454. DuelSafer_input_alliance: 'Entrer nom de l\'alliance',
  455. DuelSafer_input_player: 'Add a new player',
  456. DuelSafer_not_found_town: 'Ville non trouvee',
  457. DuelSafer_not_found_ally: 'Alliance non trouvee',
  458. DuelSafer_not_found_player: 'Can\'t find the player',
  459. DuelSafer_already_have: 'Deja present dans les listes Alliances/Villes',
  460. open_town: 'Open town window',
  461. open_ally: 'Open alliance window',
  462. open_player: 'Open player profile',
  463. help_icon: 'Add players, towns or alliances to the Duelsafer list to get a confirmation pop-up before duelling them.',
  464. add: 'Ajouter',
  465. addfriends: 'Add all your friends',
  466. friendlist: 'Friend list',
  467. delete_town: 'Remove town',
  468. delete_ally: 'Remove alliance',
  469. delete_player: 'Remove player',
  470. default_sound: 'Defaut',
  471. beeper_sound: 'Son personnalisé',
  472. listen: 'Ecouter',
  473. HealthTL_to: 'Temps à pleine PV',
  474. EnergyTL_to: 'Temps à pleine énergie',
  475. HealthNext: 'Next health point in',
  476. EnergyNext: 'Next energy point in',
  477. Reg_perH: 'Régénération par heure',
  478. Reg_missing: 'Missing',
  479. },
  480. it: {
  481. language: 'Italian (italiano)',
  482. ApiGui: 'Questo script contiene alcune funzioni interessanti che migliorano l\'esperienza di gioco su The West.',
  483. contact: 'Contatto',
  484. opentab: 'Aprire la scheda %1',
  485. general: 'Generale',
  486. main: 'Impostazioni principali',
  487. chooseLang: 'Cambia lingua (Language)',
  488. saved: 'Successfully saved',
  489. need_reload: 'La pagina ha bisogno di essere ricaricata. Procedere?',
  490. patches_title: 'Modifiche/Patch',
  491. enable_select: 'Abilita testo selezionabile',
  492. enable_lastpage: 'Abilita ultima pagina mod',
  493. enable_timelefters: 'Attivare timer rigenerazione',
  494. enable_beeper: 'Abilita segnale acustico',
  495. enable_beeper_title: 'Segnale acustico – Suono di avviso se si ottiene un messaggio privato',
  496. enable_town_button: 'Attiva pulsante "Citta"',
  497. enable_town_title: 'Con questo script si puo immediatamente gestire la maggior parte dei compiti della tua citta, grazie all\'aggiunta del pulsante citta sul lato destro. (Es.: voci aperte, andare a dormire al piu vicino forte, mercato, chiesa ecc.)',
  498. enable_noenergy: 'Remove premium message at low energy',
  499. enable_menutop: 'Keep the menu and scripts bar always on top',
  500. to_last_page: 'Vai all\'ultima pagina',
  501. wir: 'WIR',
  502. wir_enabler: 'Riduttore di inventario.',
  503. wir_enabler_title: '(West Inventory Reducer)</i>:<br>Resizes inventory items and adds a scroll bar.',
  504. wir_on_line: 'su una linea',
  505. wir_on_one_line: 'Numero di articoli su una linea',
  506. ext: 'Close inventory and docked window',
  507. ext_enabler: 'Extra close button',
  508. ext_enabler_title: 'Additional button that closes inventory and docked window',
  509. open: 'Open ',
  510. bank: 'Banca',
  511. saloon: 'Proprio saloon',
  512. sleep: 'Sleep',
  513. sleep_in_hotel: 'Sleep in your hotel',
  514. forum: 'Forum',
  515. market: 'Mercato',
  516. pray: 'Pray',
  517. pray_in_church: 'Start to pray',
  518. sheriff: 'Sceriffo',
  519. cityhall: 'Town hall',
  520. dont_have_hotel: 'Non si dispone di un albergo!',
  521. DuelSafer_found: 'Duello sicuro',
  522. DuelSafer_no_town: 'This player is without a town!',
  523. DuelSafer_friend_text: 'Questo giocatore e un alleato. Attaccare lui in ogni caso?',
  524. DuelSafer_from_town: 'Citta',
  525. DuelSafer_from_alliance: 'Alleanza',
  526. DuelSafer_from_player: 'Player',
  527. DuelSafer_friend: 'Alleato attaccato',
  528. DuelSafer_input_town: 'Inserisci il nome della citta',
  529. DuelSafer_input_alliance: 'Inserisci il nome del alleanza',
  530. DuelSafer_input_player: 'Add a new player',
  531. DuelSafer_not_found_town: 'Citta non trovata',
  532. DuelSafer_not_found_ally: 'Alleanza non trovata',
  533. DuelSafer_not_found_player: 'Can\'t find the player',
  534. DuelSafer_already_have: 'E ‘gia presente nella lista citta / alleanze',
  535. open_town: 'Open town window',
  536. open_ally: 'Open alliance window',
  537. open_player: 'Open player profile',
  538. help_icon: 'Add players, towns or alliances to the Duelsafer list to get a confirmation pop-up before duelling them.',
  539. add: 'Aggiungere',
  540. addfriends: 'Add all your friends',
  541. friendlist: 'Friend list',
  542. delete_town: 'Remove town',
  543. delete_ally: 'Remove alliance',
  544. delete_player: 'Remove player',
  545. default_sound: 'Predefinito',
  546. beeper_sound: 'File audio',
  547. listen: 'Ascoltare',
  548. HealthTL_to: 'Recupero totale della vita in',
  549. EnergyTL_to: 'Recupero totale della riposo in',
  550. HealthNext: 'Next health point in',
  551. EnergyNext: 'Next energy point in',
  552. Reg_perH: 'Rigenerazione per ora',
  553. Reg_missing: 'Missing',
  554. },
  555. pl: {
  556. language: 'Polish (polski)',
  557. ApiGui: 'Skrypt ten zawiera kilka ciekawych funkcji, które poprawiają swoją rozgrywkę na zachodzie.',
  558. contact: 'Kontakt',
  559. opentab: 'Otwórz zakładkę %1',
  560. general: 'Ogólne',
  561. main: 'Ustawienia główne',
  562. chooseLang: 'Zmień język (Language)',
  563. saved: 'Ustawienia zostały zapisane.',
  564. need_reload: 'Strona musi zostać ponownie załadowana. Kontynuować?',
  565. patches_title: 'Modyfikacje/Poprawki',
  566. enable_select: 'Możliwość zaznacznia teksty',
  567. enable_lastpage: 'Włącz ostatnia strona mod',
  568. enable_timelefters: 'Włącz licznik regeneracji',
  569. enable_beeper: 'Włączenie dźwieku',
  570. enable_beeper_title: '<b>Brzęczek</b> - Dźwięk jeżeli gracz otrzyma wiadomość szeptem',
  571. enable_town_button: 'Włącz przycisk "Miasto"',
  572. enable_town_title: 'Za pomocą tego przycisku, otrzymujemy dostęp do wiekszości budynków w mieście.<br>Po prawej stronie zostanie dodany przycisk.<br>(Np.: Forum, spanie w koszarach, targ, kościól e t.c.)',
  573. enable_noenergy: 'Remove premium message at low energy',
  574. enable_menutop: 'Keep the menu and scripts bar always on top',
  575. to_last_page: 'Idź do ostatniej strony',
  576. wir: 'WIR',
  577. wir_enabler: 'Redukcja ekwipunku',
  578. wir_enabler_title: '(West Inventory Reducer)</i>:<br>Resizes inventory items and adds a scroll bar.',
  579. wir_on_line: 'pozycji w linii',
  580. wir_on_one_line: 'Ilość przedmiotów w jednej linii',
  581. ext: 'Close inventory and docked window',
  582. ext_enabler: 'Extra close button',
  583. ext_enabler_title: 'Additional button that closes inventory and docked window',
  584. open: 'Open ',
  585. bank: 'Bank',
  586. saloon: 'Własny saloon',
  587. sleep: 'Sleep',
  588. sleep_in_hotel: 'Sleep in your hotel',
  589. forum: 'Forum',
  590. market: 'Targ',
  591. pray: 'Pray',
  592. pray_in_church: 'Start to pray',
  593. sheriff: 'Szeryf',
  594. cityhall: 'Town hall',
  595. dont_have_hotel: 'Nie posiadasz hotelu!',
  596. DuelSafer_found: 'Bezpieczne pojedynki',
  597. DuelSafer_no_town: 'This player is without a town!',
  598. DuelSafer_friend_text: 'Ten przeciwnik jest sojusznikiem. Chcesz go zaatakować?',
  599. DuelSafer_from_town: 'Miasto',
  600. DuelSafer_from_alliance: 'Sojusz',
  601. DuelSafer_from_player: 'Player',
  602. DuelSafer_friend: 'Atak na sojusznika',
  603. DuelSafer_input_town: 'Wprowadź nazwę miasta',
  604. DuelSafer_input_alliance: 'Wprowadź nazwę sojuszu',
  605. DuelSafer_input_player: 'Add a new player',
  606. DuelSafer_not_found_town: 'Nie znaleziono miast',
  607. DuelSafer_not_found_ally: 'Nie znaleziono sjuszu',
  608. DuelSafer_not_found_player: 'Can\'t find the player',
  609. DuelSafer_already_have: 'Te miasto/sojusz jest już dopisane do listy',
  610. open_town: 'Open town window',
  611. open_ally: 'Open alliance window',
  612. open_player: 'Open player profile',
  613. help_icon: 'Add players, towns or alliances to the Duelsafer list to get a confirmation pop-up before duelling them.',
  614. add: 'Dodaj',
  615. addfriends: 'Add all your friends',
  616. friendlist: 'Friend list',
  617. delete_town: 'Remove town',
  618. delete_ally: 'Remove alliance',
  619. delete_player: 'Remove player',
  620. default_sound: 'Domyślny',
  621. beeper_sound: 'Rodzaj dźwięku',
  622. listen: 'Słuchaj',
  623. HealthTL_to: 'Czas do uzyskania pełnego punkty życia',
  624. EnergyTL_to: 'Czas pozostały do pełnego energia',
  625. HealthNext: 'Next health point in',
  626. EnergyNext: 'Next energy point in',
  627. Reg_perH: 'Regeneracja na godzinę',
  628. Reg_missing: 'Missing',
  629. },
  630. hu: {
  631. language: 'Hungarian (Magyar)',
  632. ApiGui: 'Ez a szkript tartalmaz néhány nagyszerű tulajdonsága, amely javítja a játékélményt, a nyugati.',
  633. contact: 'Érintkezés',
  634. opentab: 'Nyissa meg a %1 fülre',
  635. general: 'Általános',
  636. main: 'Keretprogram beállítások',
  637. chooseLang: 'Megváltoztathatja a nyelvet (Language)',
  638. saved: 'Beállítások mentve.',
  639. need_reload: 'A változtatáshoz újra kell tölteni az oldalt! Mehet most?',
  640. patches_title: 'Kényelmi funkciók beállításai',
  641. enable_select: 'Szöveg kijelölés/másolás engedélyezése',
  642. enable_lastpage: 'Engedélyezze utolsó oldal mod',
  643. enable_timelefters: 'Engedélyezze a regenerációs időzítő',
  644. enable_beeper: 'Figyelmeztető hangjelzés engedélyezése',
  645. enable_beeper_title: 'Bekapcsolásával fgyelmeztető hangjelzést kapsz, ha neved <i>elhangzik</i> a fő chat-ablakban vagy privát üzeneted ( <i>suttogás</i> ) érkezik, továbbá egy hangerőszabályzó / némító gomb is megjelenik a képernyőn a Chat közelében.<br><br><b>ICQ</b>: az eredetileg izraeli fejlesztésű csevegőprogramból kinyert hang. ( az ICQ 2010 óta a <i>Mail.ru</i> tulajdona ),<br><b>QIP</b>: a <i>Quiet Internet Pager</i> nevű, főleg orosz nyelvterületen ismert és használt csevegőprogramból ( készítette: Ilgam Zyulkorneev ) kinyert hang,<br><b>VK</b>: a <i>VKontakt</i> elnevezésű, főleg orosz nyelvterületen és izraelben ismert és kedvelt facebook-klónból kinyert hang.',
  646. enable_town_button: '"Városom" gomb mutatása',
  647. enable_town_title: 'Engedélyezésével egy új gomb jelenik meg a jobb oldali Menüsoron, mellyel gyorsan hozzáférhetsz városod épületeihez, egy kattintással a legközelebbi Szövetséges Erődbe mehetsz aludni, stb.',
  648. enable_noenergy: 'Remove premium message at low energy',
  649. enable_menutop: 'Keep the menu and scripts bar always on top',
  650. to_last_page: 'Ugrás az utolsó oldalra',
  651. wir: 'WIR',
  652. wir_enabler: 'Enable WIR',
  653. wir_enabler_title: '(West Inventory Reducer)</i>: Ezzel a funkcióval beállíthatod, hogy hány elem jelenjen meg soronként a Felszerelések ablakban.<br><br><b>TIPP:</b> A funkció bekapcsolásával nem csak a soronkénti darabszámot állíthatod be, hanem kényelmesebb gördítősávra cserélheted a Felszerelések ablak alján látható számozott, oldal-lapozó funkciót is.',
  654. wir_on_line: 'darab soronként',
  655. wir_on_one_line: 'Megjelenített darabszám',
  656. ext: 'Close inventory and docked window',
  657. ext_enabler: 'Extra close button',
  658. ext_enabler_title: 'Additional button that closes inventory and docked window',
  659. open: 'Open ',
  660. bank: 'Bank',
  661. saloon: 'Saját Kocsma',
  662. sleep: 'Sleep',
  663. sleep_in_hotel: 'Sleep in your hotel',
  664. forum: 'Fórum',
  665. market: 'Piac',
  666. pray: 'Pray',
  667. pray_in_church: 'Start to pray',
  668. sheriff: 'Sheriff',
  669. cityhall: 'Town hall',
  670. dont_have_hotel: 'Nincs Hoteled!',
  671. DuelSafer_found: 'Párbaj-segéd',
  672. DuelSafer_no_town: 'This player is without a town!',
  673. DuelSafer_friend_text: 'Ez a Játékos a Szövetségesed! Mindenképpen megtámadod?',
  674. DuelSafer_from_town: 'Város',
  675. DuelSafer_from_alliance: 'Szövetség',
  676. DuelSafer_from_player: 'Player',
  677. DuelSafer_friend: 'Szövetséges megtámadása',
  678. DuelSafer_input_town: 'Írd be a Város nevét',
  679. DuelSafer_input_alliance: 'Írd be a Szövetség nevét',
  680. DuelSafer_input_player: 'Add a new player',
  681. DuelSafer_not_found_town: 'Ez a Város nem található',
  682. DuelSafer_not_found_ally: 'Ez a Szövetség nem található',
  683. DuelSafer_not_found_player: 'Can\'t find the player',
  684. DuelSafer_already_have: 'Ez a Város/Szövetség már szerepel a listán',
  685. open_town: 'Open town window',
  686. open_ally: 'Open alliance window',
  687. open_player: 'Open player profile',
  688. help_icon: 'Add players, towns or alliances to the Duelsafer list to get a confirmation pop-up before duelling them.',
  689. add: 'Hozzáadás',
  690. addfriends: 'Add all your friends',
  691. friendlist: 'Friend list',
  692. delete_town: 'Remove town',
  693. delete_ally: 'Remove alliance',
  694. delete_player: 'Remove player',
  695. default_sound: 'Alapbeállítás',
  696. beeper_sound: 'Figyelmeztető hang',
  697. listen: 'Lejátszás',
  698. HealthTL_to: 'Ennyi idő kell még mire felépülsz',
  699. EnergyTL_to: 'Hátralévő idő az összes energia',
  700. HealthNext: 'Next health point in',
  701. EnergyNext: 'Next energy point in',
  702. Reg_perH: 'Regeneráció óránként',
  703. Reg_missing: 'Missing',
  704. },
  705. cs: {
  706. language: 'Czech (čeština)',
  707. ApiGui: 'Tento script obsahuje pár skvělých funkcí, které zlepší tvůj herní zážitek na The West.',
  708. contact: 'Kontakt',
  709. opentab: 'Otevři %1',
  710. general: 'Všeobecní',
  711. main: 'Hlavní',
  712. chooseLang: 'Vyber jazyk (Language)',
  713. saved: 'Nastavení byla uložena.',
  714. need_reload: 'Stránka bude znovu načtena, ok?',
  715. patches_title: 'Modifikace/Patche',
  716. enable_select: 'Povolit volitelný text',
  717. enable_lastpage: 'Povolit režim poslední stránky',
  718. enable_timelefters: 'Povolit ukazovatele času regenerace',
  719. enable_beeper: 'Povolit Beeper',
  720. enable_beeper_title: '<b>Beeper</b> - Zvukové upozornení na novou privátní zprávu v chatu (šepot)',
  721. enable_town_button: 'Povolit ExTB',
  722. enable_town_title: '<b>ExtTB</b><i>(Rozšíření pro Tlačidlo města)</i>:<br>Rozšířené tlačítko města ve spodní liště.',
  723. enable_noenergy: 'Zakázat prémiovú zprávu při nízké energii',
  724. enable_menutop: 'Keep the menu and scripts bar always on top',
  725. to_last_page: 'Přejít na poslední stránku tématu',
  726. wir: 'WIR',
  727. wir_enabler: 'Povolit WIR',
  728. wir_enabler_title: '(West Inventory Reducer)</i>:<br>Změní velikost položek inventáře a přidá posouvání.',
  729. wir_on_line: 'v jedné řadě',
  730. wir_on_one_line: 'Počet itemů v jedné řadě',
  731. ext: 'Zavři inventář a ukotvené okno',
  732. ext_enabler: 'Extra tlačidlo na zavíraní',
  733. ext_enabler_title: 'Další tlačidlo, které zavírá inventář a ukotvěné okná',
  734. open: 'Otevři ',
  735. bank: 'Banka',
  736. saloon: 'Saloon',
  737. sleep: 'Spánek',
  738. sleep_in_hotel: 'Spánek ve svím hotelu',
  739. forum: 'Městské fórum',
  740. market: 'Trh',
  741. pray: 'Modlení',
  742. pray_in_church: 'Začni se modlit',
  743. sheriff: 'Šerif',
  744. cityhall: 'Radnica',
  745. dont_have_hotel: 'Nemáš hotel!',
  746. DuelSafer_found: 'DuelSafer',
  747. DuelSafer_no_town: 'Tenhle hráč je bez města!',
  748. DuelSafer_friend_text: 'Opravdu chceš zaútočit na svého přítele?',
  749. DuelSafer_from_town: 'Města',
  750. DuelSafer_from_alliance: 'Aliance',
  751. DuelSafer_from_player: 'Hráč',
  752. DuelSafer_friend: 'Útok na přítele',
  753. DuelSafer_input_town: 'Přidat nové město',
  754. DuelSafer_input_alliance: 'Přidat novou alianci',
  755. DuelSafer_input_player: 'Přidat nového hráče',
  756. DuelSafer_not_found_town: 'Nemůžu najít tohle město',
  757. DuelSafer_not_found_ally: 'Nemůžu najít tuhle alianci',
  758. DuelSafer_not_found_player: 'Nemůžu najít tohohle hráče',
  759. DuelSafer_already_have: 'Již v seznamu',
  760. open_town: 'Otevři okno města',
  761. open_ally: 'Otevři okno aliance',
  762. open_player: 'Otevři profil hráče',
  763. help_icon: 'Přidej hráče, města nebo aliance do Duelsafer seznamu, aby si před soubojem dostal potvrdzovací pop-up okno.',
  764. add: 'Přidat',
  765. addfriends: 'Add all your friends',
  766. friendlist: 'Friend list',
  767. delete_town: 'Odstranit město',
  768. delete_ally: 'Odstranit alianci',
  769. delete_player: 'Odstranit hráče',
  770. default_sound: 'Základní zvuk',
  771. beeper_sound: 'Vyber soubor',
  772. listen: 'Poslechnout si',
  773. HealthTL_to: 'Čas do úplného doplnení zdraví',
  774. EnergyTL_to: 'Čas do úplného doplnení energie',
  775. HealthNext: 'Další bod zdraví za',
  776. EnergyNext: 'Ďalší bod energie za',
  777. Reg_perH: 'Regenerace za hodinu',
  778. Reg_missing: 'Chybí',
  779. },
  780. sk: {
  781. language: 'Slovak (slovenčina)',
  782. ApiGui: 'Tento script obsahuje pár skvelých funkcií, ktoré ti spríjemnia hranie The West.',
  783. contact: 'Koktakt',
  784. opentab: 'Otvor %1',
  785. general: 'Všeobecné',
  786. main: 'Hlavné',
  787. chooseLang: 'Vyber jazyk (Language)',
  788. saved: 'Nastavenia boli uložené.',
  789. need_reload: 'Stránka bude znovu načítaná, ok?',
  790. patches_title: 'Modifikácie/Patche',
  791. enable_select: 'Povoliť voliteľný text',
  792. enable_lastpage: 'Povoliť režim poslednej stránky',
  793. enable_timelefters: 'Povoliť ukazovatele času regenerácie',
  794. enable_beeper: 'Povoliť Beeper',
  795. enable_beeper_title: '<b>Beeper</b> - Zvukové upozornenie na novú privátnu správu (šepot)',
  796. enable_town_button: 'Povoliť ExTB',
  797. enable_town_title: '<b>ExtTB</b><i>(Rozšírenie pre Tlačidlo mesta)</i>:<br>Rozšírené tlačidlo mesta v spodnej lište.',
  798. enable_noenergy: 'Zakázať prémiovú správu pri nízkej energii',
  799. enable_menutop: 'Keep the menu and scripts bar always on top',
  800. to_last_page: 'Prejsť na poslednú stránku témy',
  801. wir: 'WIR',
  802. wir_enabler: 'Povoliť WIR',
  803. wir_enabler_title: '(West Inventory Reducer)</i>:<br>Upraví veľkosť položiek v inventári a pridá posúvanie.',
  804. wir_on_line: 'v jednej rade',
  805. wir_on_one_line: 'Počet itemov v jednej rade',
  806. ext: 'Zatvor inventor a ukotvené okno',
  807. ext_enabler: 'Extra tlačidlo na zatváranie',
  808. ext_enabler_title: 'Ďalšie tlačidlo, ktoré zatvára inventár a ukotvené okná',
  809. open: 'Otvor ',
  810. bank: 'Banka',
  811. saloon: 'Saloon',
  812. sleep: 'Spánok',
  813. sleep_in_hotel: 'Spánok vo svojom hotely',
  814. forum: 'Mestské fórum',
  815. market: 'Trh',
  816. pray: 'Modlenie',
  817. pray_in_church: 'Začni sa modliť',
  818. sheriff: 'Šerif',
  819. cityhall: 'Radnica',
  820. dont_have_hotel: 'Nemáš hotel!',
  821. DuelSafer_found: 'DuelSafer',
  822. DuelSafer_no_town: 'Tento hráč je bez mesta!',
  823. DuelSafer_friend_text: 'Naozaj chceš zaútočiť na svojho priateľa?',
  824. DuelSafer_from_town: 'Mesto',
  825. DuelSafer_from_alliance: 'Aliancia',
  826. DuelSafer_from_player: 'Hráč',
  827. DuelSafer_friend: 'Útok na priateľa',
  828. DuelSafer_input_town: 'Pridať nové mesto',
  829. DuelSafer_input_alliance: 'Pridať novú alianciu',
  830. DuelSafer_input_player: 'Pridať nového hráča',
  831. DuelSafer_not_found_town: 'Nemôžem nájsť toto mesto',
  832. DuelSafer_not_found_ally: 'Nemôžem nájsť túto alianciu',
  833. DuelSafer_not_found_player: 'Nemôžem nájsť tohto hráča',
  834. DuelSafer_already_have: 'Už je v zozname',
  835. open_town: 'Otvor okno mesta',
  836. open_ally: 'Otvor okno aliancie',
  837. open_player: 'Otvor profil hráča',
  838. help_icon: 'Pridaj hráčov, mestá alebo aliancie do Duelsafer zoznamu, aby si pred súbojom dostal pozvrdzovacie pop-up okno.',
  839. add: 'Pridať',
  840. addfriends: 'Add all your friends',
  841. friendlist: 'Friend list',
  842. delete_town: 'Odstrániť mesto',
  843. delete_ally: 'Odstrániť alianciu',
  844. delete_player: 'Odstrániť hráča',
  845. default_sound: 'Základný zvuk',
  846. beeper_sound: 'vyber súbor',
  847. listen: 'Vypočuť si',
  848. HealthTL_to: 'Čas do úplného doplnenia zdravia',
  849. EnergyTL_to: 'Čas do úplného doplnenia energie',
  850. HealthNext: 'Ďalší bod zdravia za',
  851. EnergyNext: 'Ďalší bod energie za',
  852. Reg_perH: 'Regenerácia za hodinu',
  853. Reg_missing: 'Chýba',
  854. },
  855. el: {
  856. language: 'Greek (ελληνικά)',
  857. ApiGui: 'Αυτό το script περιέχει μερικά χρήσιμα χαρακτηριστικά γνωρίσματα<br>που βελτιώνουν την εμπειρία του παιχνιδιού σας στο The West.',
  858. contact: 'Επικοινωνία',
  859. opentab: 'Ανοίξτε την καρτέλα: %1',
  860. general: 'Ρυθμίσεις',
  861. main: 'Αρχικές επιλογές',
  862. chooseLang: 'Επιλογή Γλώσσας',
  863. saved: 'Αποθηκεύτηκε με επιτυχία',
  864. need_reload: 'Η σελίδα θα φορτωθεί εκ νέου, εντάξει;',
  865. patches_title: 'Τροποποιήσεις / Επεκτάσεις',
  866. enable_select: 'Ενεργοποίηση: Μαρκάρισμα κειμένου',
  867. enable_lastpage: 'Enable last page mod',
  868. enable_timelefters: 'Ενεργοποίηση: Χρόνων Αναγέννησης',
  869. enable_beeper: 'Ενεργοποίηση: Beeper',
  870. enable_beeper_title: '<b> Beeper </b> -<u><i> Ειδοποίηση ήχου σε νέο ιδιωτικό μήνυμα συνομιλίας</i></u><br><br>Με την ενεργοποίηση, κάθε φορά που λαμβάνετε ένα νέο ιδιωτικό μήνυμα<br><b>(Ψίθυρος)</b> θα λαμβάνετε ένα ειδικό ηχητικό σήμα. Μπορείτε να επιλέξετε<br>τον ήχο που σας αρέσει στην λίστα που σας έχουμε ετοιμάσει παρακάτω<br>ή να προσθέσε τον δικό σας μοναδικό ήχο.',
  871. enable_town_button: 'Ενεργοποίηση: ΕγΚΠ',
  872. enable_town_title: '<b>ΕγΚΠ</b><i> - <u>Επέκταση για Κουμπί Πόλης</u></i>:<br><br>Αυτό το χαρακτηριστικό σας εμφανίζει μια λίστα<br>από διάφορες χρήσιμες λειτουργείες, στο κουμπί<br>"Πόλη" της γραμμής μενού, τις οποίες θα μπορείτε<br>να χρησιμοποιήσετε με το πάτημα ενός κουμπιού.',
  873. enable_noenergy: 'Κατάργηση μηνύματος premium με χαμηλή ενέργεια',
  874. enable_menutop: 'Κρατήστε τη γραμμή scripts και τη γραμμή μενού πάντα στην κορυφή',
  875. to_last_page: 'Πηγαίνετε στην τελευταία σελίδα του θέματος',
  876. wir: 'WIR ',
  877. wir_enabler: 'Ενεργοποίηση: WIR',
  878. wir_enabler_title: '- <u>(West Inventory Reducer)</u></i><br><br>Αυτό το χαρακτηριστικό σας επιτρέπει να ορίσετε τον αριθμό<br>των στοιχείων ανά γραμμή στο παράθυρο "Αποθέματα".<br><br><b>ΣΥΜΒΟΥΛΗ:</b> Ενεργοποιώντας αυτή τη λειτουργία, μπορείτε<br>όχι μόνο να ορίσετε τον αριθμό στοιχείων ανά γραμμή<br>αλλά και να μεταβείτε σε μια πιο βολική γραμμή κύλισης,<br>αντί να έχετε την μπάρα με τις σελίδες στο κάτω μέρος<br>του παραθύρου των Αποθεμάτων σας.',
  879. wir_on_line: 'σε μια σειρά',
  880. wir_on_one_line: 'Αριθμός στοιχείων ανά γραμμή',
  881. ext: 'Κλείσιμο μόνο των παραθύρων αποθεμάτων σας',
  882. ext_enabler: 'Επιπλέον κουμπί κλεισίματος',
  883. ext_enabler_title: 'Πρόσθετο κουμπί που κλείνει μόνο τα παράθυρα αποθεμάτων σας',
  884. open: 'Ανοίξτε: ',
  885. bank: 'Τράπεζα',
  886. saloon: 'Σαλούν',
  887. sleep: 'Ύπνος',
  888. sleep_in_hotel: 'Ύπνος σε δωμάτιο ξενοδοχείου',
  889. forum: 'Φόρουμ Πόλης',
  890. market: 'Αγορά',
  891. pray: 'Προσευχή',
  892. pray_in_church: 'Ξεκινήστε να προσεύχεστε',
  893. sheriff: 'Σερίφης',
  894. cityhall: 'Δημαρχείο Πόλης',
  895. dont_have_hotel: 'Δεν έχετε ξενοδοχείο',
  896. DuelSafer_found: 'DuelSafer',
  897. DuelSafer_no_town: 'Αυτός ο παίκτης είναι εκτός πόλης',
  898. DuelSafer_friend_text: 'Θέλετε να μονομαχήσετε τον φίλο σας;',
  899. DuelSafer_from_town: 'Πόλη',
  900. DuelSafer_from_alliance: 'Συμμαχία',
  901. DuelSafer_from_player: 'Παίκτης',
  902. DuelSafer_friend: 'Επίθεση σε φίλο',
  903. DuelSafer_input_town: 'Προσθέστε Πόλη',
  904. DuelSafer_input_alliance: 'Προσθέστε Συμμαχία',
  905. DuelSafer_input_player: 'Προσθέστε Παίκτη',
  906. DuelSafer_not_found_town: 'Η πόλη δεν βρέθηκε',
  907. DuelSafer_not_found_ally: 'Η συμμαχία δεν βρέθηκε',
  908. DuelSafer_not_found_player: 'Ο παίκτης δεν βρέθηκε',
  909. DuelSafer_already_have: 'Ήδη στην λίστα',
  910. open_town: 'Ανοίξτε την Πόλη σε νέο παράθυρο',
  911. open_ally: 'Ανοίξτε την Συμμαχία σε νέο παράθυρο',
  912. open_player: 'Ανοίξτε το προφίλ του παίχτη',
  913. help_icon: 'Προσθέστε παίκτες, πόλεις ή συμμαχίες στην λίστα της Ασφαλούς Μονομαχίας,<br>για να εμφανιστεί ένα μήνυμα επιβεβαίωσης όταν τύχει να τους μονομαχήσετε.',
  914. add: 'Προσθήκη',
  915. addfriends: 'Προσθήκη όλων των φίλων σας',
  916. friendlist: 'Λίστα Φίλων',
  917. delete_town: 'Αφαιρέστε την Πόλη',
  918. delete_ally: 'Αφαιρέστε την Συμμαχία',
  919. delete_player: 'Αφαιρέστε τον Παίκτη',
  920. default_sound: 'Προεπιλεγμένος ήχος',
  921. beeper_sound: 'Επιλέξτε αρχείο',
  922. listen: 'Ακούστε',
  923. HealthTL_to: 'Χρόνος για την πλήρη υγεία',
  924. EnergyTL_to: 'Χρόνος για την πλήρη ενέργεια',
  925. HealthNext: 'Επόμενος πόντος υγείας σε',
  926. EnergyNext: 'Επόμενος πόντος ενέργειας σε',
  927. Reg_perH: 'Αναγέννηση ανά ώρα',
  928. Reg_missing: 'Σας λείπει συνολικά το',
  929. },
  930.  
  931. },
  932. updateLang: function () {
  933. var lg = TWS.langs;
  934. TWS.lang = lg[localStorage.getItem('scriptsLang')] ? localStorage.getItem('scriptsLang') : lg[Game.locale.substr(0, 2)] ? Game.locale.substr(0, 2) : 'en';
  935. TWSlang = lg[TWS.lang];
  936. },
  937. Images: {
  938. controlMenu: 'data:image/png;base64,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',
  939. },
  940. Settings: function () {
  941. function i() {
  942. var r = {
  943. beeperSound: 1,
  944. enableBeeper: true,
  945. enableNoEnergy: true,
  946. enableSelectableText: true,
  947. enableTownButton: true,
  948. enableMenuTop: true,
  949. enableTimelefters: true,
  950. enableWir: true,
  951. enableWirExt: false,
  952. safeFriends: false,
  953. language: Game.locale.substr(0, 2),
  954. wirSize: 5
  955. };
  956. t = $.extend(r, t);
  957. localStorage.setItem(n, JSON.stringify(t));
  958. }
  959. function s(e, r) {
  960. if (t[e])
  961. return;
  962. t[e] = r;
  963. localStorage.setItem(n, JSON.stringify(t));
  964. }
  965. function o(e) {
  966. return t[e] === undefined ? null : t[e];
  967. }
  968. function u(e, r) {
  969. if (t[e] === undefined)
  970. return false;
  971. t[e] = r;
  972. localStorage.setItem(n, JSON.stringify(t));
  973. new UserMessage(TWSlang.saved, 'success').show();
  974. return true;
  975. }
  976. var t,
  977. n = 'tws_settings',
  978. r = function () {
  979. t = JSON.parse(localStorage.getItem(n)) || {};
  980. i();
  981. }
  982. ();
  983. return {
  984. get: o,
  985. set: u,
  986. reg: s
  987. };
  988. }
  989. (),
  990. };
  991. TWS.updateLang();
  992. var fmfb = function (l) {
  993. return 'https://forum.the-west.' + l + '/index.php?conversations/add&to=Tom Robert';
  994. };
  995. TheWestApi.register('TWS', TWS.name, TWS.minGame, TWS.maxGame, TWS.author, TWS.website).setGui('<br><i>Language: </i>' + TWSlang.language + '<br><br>' + TWSlang.ApiGui + '<br><br><i>' + TWS.name + ' v' + TWS.version +
  996. '</i><br><br><br><b>' + TWSlang.contact + ':</b><ul style="margin-left:15px;"><li>Send a message to <a target=\'_blanck\' href="http://om.the-west.de/west/de/player/?ref=west_invite_linkrl&player_id=647936&world_id=13&hash=7dda">Tom Robert on German world Arizona</a></li>' +
  997. '<li>Contact me on <a target=\'_blanck\' href="https://greasyfork.org/forum/messages/add/Tom Robert">Greasy Fork</a></li>' +
  998. '<li>Message me on one of these The West Forum:<br>/ <a target=\'_blanck\' href="' + fmfb('de') + '">deutsches Forum</a> / ' +
  999. '<a target=\'_blanck\' href="' + fmfb('net') + '">English forum</a> / <a target=\'_blanck\' href="' + fmfb('pl') + '">forum polski</a> / ' +
  1000. '<a target=\'_blanck\' href="' + fmfb('es') + '">foro español</a> /<br>/ <a target=\'_blanck\' href="' + fmfb('ru') + '">Русский форум</a> / ' +
  1001. '<a target=\'_blanck\' href="' + fmfb('fr') + '">forum français</a> / <a target=\'_blanck\' href="' + fmfb('it') + '">forum italiano</a> / ' +
  1002. '<a target=\'_blanck\' href="https://forum.beta.the-west.net/index.php?conversations/add&to=Tom Robert">beta forum</a> /<br>I will get an e-mail when you sent me the message <img src="../images/chat/emoticons/smile.png"></li></ul>');
  1003. TWS.GUIControl = new function () {
  1004. function o() {
  1005. r.getContentPane().innerHTML = '';
  1006. r.fireEvent(TWE('WINDOW_DESTROY'), window);
  1007. $(r.divMain).remove();
  1008. i = false;
  1009. s = null;
  1010. }
  1011. function u(n) {
  1012. if (!t[n])
  1013. n = 'general';
  1014. if (n == s && i) {
  1015. return;
  1016. }
  1017. if (s)
  1018. t[s].onLeave(r);
  1019. s = n;
  1020. $.each(t, function (e, t) {
  1021. var i = t.content;
  1022. if (e == n) {
  1023. r.setSize.apply(r, t.size);
  1024. r.setTitle(t.name);
  1025. t.onOpen(r);
  1026. i.fadeIn('fast');
  1027. return;
  1028. }
  1029. i.hide();
  1030. });
  1031. r.activateTab(n);
  1032. }
  1033. function a() {
  1034. r = wman.open('tws', 'TWSweets', 'noreload').setMiniTitle('TWS');
  1035. r.destroy = o;
  1036. i = true;
  1037. $.each(t, function (e, t) {
  1038. r.addTab(t.name + t.version, e, function () {
  1039. u(e);
  1040. });
  1041. r.appendToContentPane(t.content);
  1042. });
  1043. for (var s = 0, b = n.length; s < b; s++) {
  1044. var f = n[s];
  1045. if (f[2])
  1046. $(f[2], t[f[0]].content).append(f[1]);
  1047. else
  1048. t[f[0]].content.append(f[1]);
  1049. }
  1050. }
  1051. var t = {},
  1052. n = [],
  1053. r,
  1054. s,
  1055. i = false;
  1056. this.open = function (t) {
  1057. var n = $('.tws');
  1058. if (n.length) {
  1059. if (n.is(':hidden'))
  1060. wman.reopen('tws');
  1061. u(t);
  1062. return;
  1063. }
  1064. a();
  1065. u(t);
  1066. };
  1067. this.addTab = function (n) {
  1068. var r = n.tid || n.name.toLowerCase().replace(/ /g, ''),
  1069. i = t[r] = {};
  1070. i.content = $('<div></div>').append(n.content);
  1071. i.onOpen = $.isFunction(n.onOpen) ? n.onOpen : function () {};
  1072. i.onLeave = $.isFunction(n.onLeave) ? n.onLeave : function () {};
  1073. i.size = n.size || [748, 471];
  1074. i.name = n.name || n.tid;
  1075. i.version = n.version && ' v' + n.version || '';
  1076. if (n.menu_shortcut !== false)
  1077. this.Rightside.regTab(i.name, r);
  1078. };
  1079. this.addTo = function (r, i, s) {
  1080. if (arguments.length < 2 || !t[r])
  1081. return;
  1082. n.push([r,
  1083. typeof i == 'string' ? $(i) : i,
  1084. s]);
  1085. };
  1086. }
  1087. ();
  1088. TWS.GUIControl.Rightside = new function () {
  1089. function r() {
  1090. t.append(n);
  1091. i();
  1092. o();
  1093. }
  1094. function i() {
  1095. selectBox.show();
  1096. $selectBox.css({
  1097. right: 37,
  1098. top: 3
  1099. });
  1100. $but.append($selectBox);
  1101. $selectBox.hide();
  1102. }
  1103. function o() {
  1104. $el.on('mouseover', function () {
  1105. $but.css('background-position', '-25px 0');
  1106. $selectBox.show();
  1107. });
  1108. $el.on('mouseleave', function () {
  1109. $but.css('background-position', '0 0');
  1110. $selectBox.hide();
  1111. });
  1112. }
  1113. var t = $('#ui_menubar'),
  1114. n = $('<div class="ui_menucontainer"><div id="tws_menu_icon"></div><div class="menucontainer_bottom"></div></div>'),
  1115. $but = $('#tws_menu_icon', n),
  1116. $el = $but.parent(),
  1117. selectBox = new west.gui.Selectbox().addListener(function (e) {
  1118. TWS.GUIControl.open(e);
  1119. }),
  1120. $selectBox = selectBox.getMainDiv();
  1121. r();
  1122. this.regTab = function (e, t) {
  1123. selectBox.addItem(t, e, s(TWSlang.opentab, e));
  1124. i();
  1125. };
  1126. this.addIcon = function (n, r) {
  1127. if (n === undefined || r === undefined)
  1128. return;
  1129. var i = $('<div id="tws_' + n + '"></div>').click(r),
  1130. s = $('<div class="ui_menucontainer"><div class="menucontainer_bottom"></div></div>');
  1131. t.append(s.append(i));
  1132. };
  1133. }
  1134. ();
  1135. TWS.GUIControl.Style = new function () {
  1136. var e = document.getElementsByTagName('head')[0],
  1137. t = document.createElement('style'),
  1138. n = '#tws_menu_icon { width: 25px; height: 25px; background: url(\'' + TWS.Images.controlMenu + '\'); background-position: 0 0; }\n' + '#tws_menu_icon .tw2gui_selectbox .arrow { width: 12px; height: 22px; background-position: -12px 0px; background-image: url(../images/tw2gui/selectbox_arrows.png); right: -10px; left: auto; top: auto; }\n';
  1139. t.innerHTML = n;
  1140. e.appendChild(t);
  1141. this.append = function (r) {
  1142. n += '\n' + r.replace(/ /g, '');
  1143. e.removeChild(t);
  1144. t = document.createElement('style');
  1145. t.innerHTML = n;
  1146. e.appendChild(t);
  1147. };
  1148. }
  1149. ();
  1150. TWS.Module = function () {
  1151. function t(e, u, n, i) {
  1152. if (arguments.length < 2)
  1153. return;
  1154. if (u)
  1155. for (var s in u)
  1156. this[s] = u[s];
  1157. if (this.init)
  1158. this.init();
  1159. if (arguments[2] || e.type) {
  1160. n = n || {};
  1161. r.call(this, e, n);
  1162. }
  1163. if (e.version)
  1164. this.version = e.version;
  1165. if (i) {
  1166. TWS.GUIControl.Style.append(i);
  1167. }
  1168. var o = arguments;
  1169. this._getConstructorArgs = function (e) {
  1170. return o[e];
  1171. };
  1172. }
  1173. function n(e, u, r, i) {
  1174. return new t(e, u, r, i);
  1175. }
  1176. function r(t, v) {
  1177. function i() {
  1178. if (v.init) {
  1179. var e = v.init(this);
  1180. if (typeof e == 'object')
  1181. v.DOM = e;
  1182. }
  1183. }
  1184. switch (t.type) {
  1185. case n.TAB:
  1186. v.DOM = $('<div id="tws_' + (t.tid ? t.tid : t.name.toLowerCase().replace(/ /g, '')) + '"></div>');
  1187. i.call(this);
  1188. t.content = v.DOM;
  1189. TWS.GUIControl.addTab(t);
  1190. break;
  1191. case n.MOD:
  1192. i.call(this);
  1193. TWS.GUIControl.General.createBlock(t.name, v.DOM, t.version);
  1194. break;
  1195. case n.PATCH:
  1196. i.call(this);
  1197. TWS.GUIControl.General.appendToPatches(v.DOM);
  1198. break;
  1199. }
  1200. }
  1201. t.prototype = {
  1202. getGUI: function () {
  1203. if (this._getConstructorArgs(2))
  1204. return this._getConstructorArgs(2);
  1205. },
  1206. getCSS: function () {
  1207. if (this._getConstructorArgs(3))
  1208. return this._getConstructorArgs(3);
  1209. },
  1210. open: function (e) {
  1211. var t = this._getConstructorArgs(0);
  1212. if (t.type == TWS.Module.TAB)
  1213. TWS.GUIControl.open(t.tid ? t.tid : t.name.toLowerCase().replace(/ /g, ''));
  1214. if (this.parseOpenData)
  1215. this.parseOpenData(e);
  1216. }
  1217. };
  1218. t.prototype.constructor = t;
  1219. n.TAB = 'tab';
  1220. n.PATCH = 'patch';
  1221. n.MOD = 'modification';
  1222. return n;
  1223. }
  1224. ();
  1225. var mod = TWS.Module;
  1226. TWS.GUIControl.General = mod({
  1227. name: TWSlang.general,
  1228. version: TWS.version,
  1229. type: mod.TAB,
  1230. tid: 'general'
  1231. }, {
  1232. append: function (e) {
  1233. this.getGUI().scrollpane.appendContent(e);
  1234. },
  1235. createBlock: function (t, n, r) {
  1236. r = r && ' v' + r || '';
  1237. if (arguments.length < 2)
  1238. return;
  1239. var i = $('<div class="tws_block"><b>' + t + r + '</b><hr></div>').append(n);
  1240. this.append(i);
  1241. },
  1242. appendToPatches: function (e) {
  1243. this.getGUI().modifications.append(e);
  1244. }
  1245. }, {
  1246. main_block: $('<div class="tws_block"><b>' + TWSlang.main + '</b><hr></div>'),
  1247. modifications: $('<div class="tws_block"><b>' + TWSlang.patches_title + '</b><hr></div>'),
  1248. scrollpane: null,
  1249. init: function () {
  1250. this.scrollpane = new west.gui.Scrollpane(null, true);
  1251. this.main_block.append('<p>' + TWSlang.chooseLang + ':</p>').append(this.getLangBar());
  1252. this.scrollpane.appendContent(this.main_block).appendContent(this.modifications);
  1253. return $(this.scrollpane.getMainDiv()).attr('id', 'tws_general');
  1254. },
  1255. getLangBar: function () {
  1256. var langBox = new west.gui.Combobox('tws_changelang');
  1257. $.each(TWS.langs, function (a, b) {
  1258. langBox.addItem(a, b.language);
  1259. });
  1260. langBox.select(TWS.lang).addListener(function (e) {
  1261. localStorage.setItem('scriptsLang', e);
  1262. TWS.updateLang();
  1263. if (confirm(TWSlang.need_reload))
  1264. location.reload(true);
  1265. });
  1266. return langBox.getMainDiv();
  1267. }
  1268. }, '#tws_general { width: 100%; height: 355px; margin-top: 10px;}\n' + '#tws_general .tw2gui_scrollpane_clipper_contentpane { height: 340px; }\n' + '#tws_general .tws_block { width: 45%; float: left; }\n' + '#tws_general .tw2gui_checkbox { float: left; clear: left; margin-bottom: 5px; }\n' + '#tws_general .tws_block:nth-child(even) { float: right; }\n' + '#tws_copyright { position:absolute; bottom: 0px; right:5px; font-size:10px; }\n' + '.tws_block { margin: 5px; border: 1px solid #000000; -moz-border-radius: 10px; -webkit-border-radius: 10px; -khtml-border-radius: 10px; -o-border-radius: 10px; border-radius: 10px; background: rgba(175, 146, 94, 0.5); padding: 10px; }\n' + '.tws_block hr { color: #000; background-color: #000; border: 0px none; height: 1px; box-shadow: 0px 1px 1px rgba(255, 255, 255, 0.6); margin: 5px 0px 5px 0px; }\n' + '.tws_help_icon { background: url(https://www.the-west.ru/images/tw2gui/iconset.png); width: 16px; height: 16px; position: absolute; background-position: -67px -64px; cursor: help; }\n' + '#tws_all .tw2gui_checkbox { float: left; clear: left; margin-top: 5px; }');
  1269. TWS.Patches = {
  1270. SText: mod({
  1271. name: 'Selectable text',
  1272. version: 1.1,
  1273. type: mod.PATCH
  1274. }, {
  1275. style: null,
  1276. init: function () {
  1277. this.style = $('<style>#forum, #ui_chat, div#ui_topbar > div, #ui_character_container, .tw2gui_window {\n' + '-webkit-user-select: text !important;\n' + '-khtml-user-select: text !important;\n' + '-moz-user-select: text !important;\n' + '-ms-user-select: text !important;\n' + 'user-select: text !important;\n' + '}</style>');
  1278. if (TWS.Settings.get('enableSelectableText'))
  1279. this.on();
  1280. },
  1281. selectableForum: function () {
  1282. $('iframe[src=\'forum.php\']').load(function () {
  1283. content = $(this).contents();
  1284. content.find('head').append(TWS.Patches.SText.style);
  1285. });
  1286. },
  1287. DOMNodeInserted: new MutationObserver(function (e) {
  1288. e.forEach(function (mut) {
  1289. for (var m = 0; m < mut.addedNodes.length; m++)
  1290. if (mut.addedNodes[m].tagName == 'IFRAME')
  1291. TWS.Patches.SText.selectableForum();
  1292. });
  1293. }),
  1294. on: function () {
  1295. $('head').append(this.style);
  1296. this.DOMNodeInserted.observe(document.getElementById('windows'), {
  1297. childList: true,
  1298. subtree: true
  1299. });
  1300. },
  1301. off: function () {
  1302. this.style.remove();
  1303. this.DOMNodeInserted.disconnect();
  1304. }
  1305. }, {
  1306. init: function () {
  1307. return (new west.gui.Checkbox(TWSlang.enable_select, '', function (e) {
  1308. TWS.Settings.set('enableSelectableText', e);
  1309. if (e)
  1310. TWS.Patches.SText.on();
  1311. else
  1312. TWS.Patches.SText.off();
  1313. })).setSelected(TWS.Settings.get('enableSelectableText'), true).getMainDiv();
  1314. }
  1315. }),
  1316. noEnergy: mod({
  1317. name: 'No Energy Premium',
  1318. version: 1,
  1319. type: mod.PATCH
  1320. }, {
  1321. init: function () {
  1322. if (TWS.Settings.get('enableNoEnergy'))
  1323. this.on();
  1324. },
  1325. on: function () {
  1326. Premium.buyable.backupEnergy = Premium.buyable.backupEnergy || Premium.buyable.energy;
  1327. Premium.buyable.energy = false;
  1328. },
  1329. off: function () {
  1330. Premium.buyable.energy = Premium.buyable.backupEnergy;
  1331. }
  1332. }, {
  1333. init: function () {
  1334. return (new west.gui.Checkbox(TWSlang.enable_noenergy, '', function (e) {
  1335. TWS.Settings.set('enableNoEnergy', e);
  1336. if (e)
  1337. TWS.Patches.noEnergy.on();
  1338. else
  1339. TWS.Patches.noEnergy.off();
  1340. })).setSelected(TWS.Settings.get('enableNoEnergy'), true).getMainDiv();
  1341. }
  1342. }),
  1343. };
  1344. TWS.Beeper = mod({
  1345. name: 'Chat Beeper',
  1346. version: 1.3,
  1347. type: mod.MOD
  1348. }, {
  1349. init: function () {
  1350. this.updateSound();
  1351. if (TWS.Settings.get('enableBeeper'))
  1352. this.on();
  1353. },
  1354. on: function () {
  1355. EventHandler.listen('chat_tell_received', this.play, this);
  1356. AudioController.tws_play = AudioController.tws_play || AudioController.play;
  1357. AudioController.play = function (sN) {
  1358. if (sN == 'newmsg')
  1359. return;
  1360. AudioController.tws_play.apply(this, arguments);
  1361. };
  1362. },
  1363. off: function () {
  1364. EventHandler.unlistenByContext('chat_tell_received', this);
  1365. AudioController.play = AudioController.tws_play;
  1366. },
  1367. sounds: {
  1368. 1: 'bum',
  1369. 2: 'chime',
  1370. 3: 'coin',
  1371. 4: 'coin2',
  1372. 5: 'icq',
  1373. 6: 'qip',
  1374. 7: 'tinkle',
  1375. 8: 'trumpet',
  1376. 9: 'vk',
  1377. },
  1378. updateSound: function () {
  1379. var gS = TWS.Settings.get('beeperSound');
  1380. if (this.sounds[gS])
  1381. this.currSound = 'https://tomrobert.safe-ws.de/' + this.sounds[gS] + '.mp3';
  1382. else if (gS)
  1383. this.currSound = gS;
  1384. else
  1385. this.currSound = 'sounds/newmsg.mp3';
  1386. },
  1387. play: function () {
  1388. new Audio(this.currSound).play();
  1389. },
  1390. }, {
  1391. init: function (t) {
  1392. var div = $('<div></div>'),
  1393. beCo = (new west.gui.Combobox('tws_beeper_changesound')).addItem(0, TWSlang.default_sound).addItem(1, 'Bum').addItem(2, 'Chime').addItem(3, 'Coin').addItem(4, 'Coin 2').addItem(5, 'ICQ').addItem(6, 'QIP').addItem(7, 'Tinkle').addItem(8, 'Trumpet').addItem(9, 'VK').addItem(10, TWSlang.beeper_sound + '...').select(typeof TWS.Settings.get('beeperSound') == 'string' ? 10 : TWS.Settings.get('beeperSound')).addListener(function (v) {
  1394. if (v == 10) {
  1395. var inp = prompt(TWSlang.beeper_sound + ':', 'https:// .mp3');
  1396. if (!inp) {
  1397. beCo.select(TWS.Settings.get('beeperSound'));
  1398. return;
  1399. }
  1400. v = inp;
  1401. }
  1402. TWS.Settings.set('beeperSound', v);
  1403. t.updateSound();
  1404. }),
  1405. beBo = (new west.gui.Checkbox(TWSlang.enable_beeper, '', function (e) {
  1406. TWS.Settings.set('enableBeeper', e);
  1407. if (e)
  1408. t.on();
  1409. else
  1410. t.off();
  1411. })).setSelected(TWS.Settings.get('enableBeeper'), true).setId('tws_beeper_enabled').setTitle(TWSlang.enable_beeper_title).getMainDiv(),
  1412. beBu = (new west.gui.Button(TWSlang.listen, function () {
  1413. if (TWS.Settings.get('enableBeeper'))
  1414. t.play();
  1415. })).getMainDiv();
  1416. div.append(beBo, beCo.getMainDiv(), $(beBu).css('float', 'right'));
  1417. return div;
  1418. }
  1419. }, '#tws_beeper { width: 36px; height: 145px; position: fixed; left: 50%; z-index: 15; bottom: 15px; margin-left: -320px; }' + '#tws_beeper_changesound { float: left; clear: left; }');
  1420. TWS.Timelefters = mod({
  1421. type: mod.PATCH,
  1422. version: 2.1
  1423. }, {
  1424. $charContainer: $('#ui_character_container'),
  1425. $tlContainer: $('<div id="tws_tlContainer"></div>'),
  1426. init: function () {
  1427. var pop1 = new MousePopup(),
  1428. pop2 = new MousePopup(),
  1429. el1 = $('<p id="tws_tlHp"></p>').addMousePopup(pop1),
  1430. el2 = $('<p id="tws_tlEnergy"></p>').addMousePopup(pop2);
  1431. this.$tlContainer.append(el1).append(el2);
  1432. (new this.TimeLefter('maxHealth', 'healthRegen', 'health', 'healthDate', function (time, perH, next, pc) {
  1433. pop1.setXHTML(s(TWSlang.HealthTL_to + ': <b>%1</b><br>' + TWSlang.Reg_perH + ': <b>%2</b><br>' + TWSlang.HealthNext + ': <b>%3</b><br>' + TWSlang.Reg_missing + ': <b>%4%</b>', time, perH, next, pc));
  1434. el1.html(time);
  1435. })).startTicker();
  1436. (new this.TimeLefter('maxEnergy', 'energyRegen', 'energy', 'energyDate', function (time, perH, next, pc) {
  1437. pop2.setXHTML(s(TWSlang.EnergyTL_to + ': <b>%1</b><br>' + TWSlang.Reg_perH + ': <b>%2</b><br>' + TWSlang.EnergyNext + ': <b>%3</b><br>' + TWSlang.Reg_missing + ': <b>%4%</b>', time, perH, next, pc));
  1438. el2.html(time);
  1439. })).startTicker();
  1440. if (TWS.Settings.get('enableTimelefters'))
  1441. this.on();
  1442. },
  1443. on: function () {
  1444. this.$charContainer.append(this.$tlContainer);
  1445. },
  1446. off: function () {
  1447. this.$tlContainer.remove();
  1448. },
  1449. TimeLefter: function (max, regen, current, date, r) {
  1450. function reT() {
  1451. perH = charM * charR;
  1452. one = 3600 / perH;
  1453. toGo = charM - charC;
  1454. sec = toGo * one;
  1455. rest = one - Game.getServerTime() + charD;
  1456. pc = Math.round(100 / charM * toGo);
  1457. }
  1458. function startT() {
  1459. checkT();
  1460. subT();
  1461. r(dur(sec), perH, dur(rest), pc);
  1462. }
  1463. function checkT() {
  1464. if (charM == Character[max] && charR == Character[regen] && charC == Character[current] && charD == Character[date])
  1465. return;
  1466. charM = Character[max];
  1467. charR = Character[regen];
  1468. charC = Character[current];
  1469. charD = Character[date];
  1470. reT();
  1471. }
  1472. function subT() {
  1473. if (sec > 1)
  1474. sec--;
  1475. if (rest > 1)
  1476. rest--;
  1477. }
  1478. function dur(v) {
  1479. return v.formatDuration();
  1480. }
  1481. var charM = Character[max],
  1482. charR = Character[regen],
  1483. charC = Character[current],
  1484. charD = Character[date],
  1485. perH,
  1486. sec,
  1487. f,
  1488. one,
  1489. toGo,
  1490. rest,
  1491. pc;
  1492. this.startTicker = function () {
  1493. f = setInterval(startT, 1000);
  1494. };
  1495. this.stopTicker = function () {
  1496. clearInterval(f);
  1497. };
  1498. reT();
  1499. }
  1500. }, {
  1501. init: function (e) {
  1502. var t = (new west.gui.Checkbox(TWSlang.enable_timelefters, '', function (t) {
  1503. TWS.Settings.set('enableTimelefters', t);
  1504. if (t)
  1505. e.on();
  1506. else
  1507. e.off();
  1508. })).setSelected(TWS.Settings.get('enableTimelefters'), true);
  1509. return t.getMainDiv();
  1510. }
  1511. }, '#tws_tlContainer { width: 50px; top: 144px; position: relative; }\n' + '#tws_tlContainer p { font-size: 9px; position: relative; cursor: help; left: 4px; color: #FFF; }\n' + '#tws_tlHp { top: 2px; }\n' + '#tws_tlEnergy { top: 5px; }');
  1512. TWS.Wir = mod({
  1513. type: mod.MOD,
  1514. version: 1.4,
  1515. name: TWSlang.wir
  1516. }, {
  1517. methodEdited: null,
  1518. init: function () {
  1519. setTimeout(function () {
  1520. if (TWS.Settings.get('enableWir'))
  1521. TWS.Wir.on();
  1522. }, 3000);
  1523. },
  1524. on: function () {
  1525. if (!this.methodEdited)
  1526. this.editInventoryLoad();
  1527. this.addCSS();
  1528. Inventory.size = 99999;
  1529. Inventory.sizeSearch = 99999;
  1530. },
  1531. bigInv: function () {
  1532. if (Inventory.width > 304)
  1533. return true;
  1534. return false;
  1535. },
  1536. addCSS: function (s) {
  1537. if (TWS.Settings.get('enableWir') || s == 1) {
  1538. var t = s || parseInt(TWS.Settings.get('wirSize'));
  1539. if (this.bigInv())
  1540. t *= 2;
  1541. switch (t) {
  1542. case 6:
  1543. t = [
  1544. 36, 40, 2, 2, 15, 264, 'auto', -5, 42,
  1545. ];
  1546. break;
  1547. case 5:
  1548. t = [
  1549. 42, 48, 3, 3, 18, 264, 'auto', -5, 30,
  1550. ];
  1551. break;
  1552. case 4:
  1553. t = [
  1554. 53, 60, 3, 4, 23, 264, 'auto', -5, 20,
  1555. ];
  1556. break;
  1557. case 12:
  1558. t = [
  1559. 37, 41, 2, 2, 15, 692, 'auto', 0, 128,
  1560. ];
  1561. break;
  1562. case 10:
  1563. t = [
  1564. 45, 51, 3, 3, 18, 694, 'auto', 0, 91,
  1565. ];
  1566. break;
  1567. case 8:
  1568. t = [
  1569. 53, 60, 3, 4, 23, 692, 'auto', 0, 66,
  1570. ];
  1571. break;
  1572. case 2:
  1573. t = [
  1574. 53, 60, 3, 4, 23, 692, 'hidden', 0, 66,
  1575. ];
  1576. break;
  1577. default:
  1578. t = [
  1579. 53, 60, 3, 4, 23, 264, 'hidden', 5, 20,
  1580. ];
  1581. break;
  1582. }
  1583. var n = '#bag .item.item_inventory .tw_item.item_inventory_img { width: ' + t[0] + 'px; height: ' + t[0] + 'px; margin-left: ' + t[2] + 'px !important; margin-top: ' + t[3] + 'px !important; }\n' +
  1584. '#bag .item.item_inventory { width: ' + t[1] + 'px !important; height: ' + t[1] + 'px !important; background-size: contain !important; }\n' +
  1585. '#bag .count { min-width: ' + t[4] + 'px !important; }\n' +
  1586. '#bag > .pinned > .item { background-size: auto !important; }\n' +
  1587. '#bag { width: ' + t[5] + 'px !important; overflow-y: ' + t[6] + '; margin-left: ' + t[7] + 'px;}';
  1588. $('head').append($('<style type="text/css">' + n + '</style>'));
  1589. Inventory.latestSize = t[8];
  1590. }
  1591. },
  1592. editInventoryLoad: function () {
  1593. if (this.methodEdited)
  1594. return;
  1595. Inventory.tws_firstLoad = Inventory.firstLoad;
  1596. Inventory.firstLoad = function () {
  1597. Inventory.tws_firstLoad.apply(this, arguments);
  1598. $('#bag', Inventory.DOM).off('mousewheel');
  1599. if (TWS.Settings.get('enableWirExt')) {
  1600. var button2 = $('<div class="tw2gui_window_buttons_closeall" title="<b>' + TWSlang.ext + '</b&gt"></div>').click(function () {
  1601. Inventory.dockedWindow && Inventory.dockedWindow.destroy();
  1602. Inventory.window.destroy();
  1603. });
  1604. $(".tw2gui_window_buttons", Inventory.window.divMain).append(button2);
  1605. }
  1606. };
  1607. Inventory.tws_setCategoryActive = Inventory.setCategoryActive;
  1608. Inventory.setCategoryActive = function (category) {
  1609. Inventory.tws_setCategoryActive.apply(this, arguments);
  1610. var bigInv = TWS.Wir.bigInv(),
  1611. heig = bigInv ? 366 : 305,
  1612. margb = bigInv ? -20 : 0;
  1613. if (category == "set" || category == "custom") {
  1614. heig = bigInv ? 332 : 257;
  1615. margb = bigInv ? 16 : 50;
  1616. }
  1617. document.getElementById("bag").style = "height:" + heig + "px!important;margin-bottom:" + margb + "px;";
  1618. };
  1619. this.methodEdited = true;
  1620. },
  1621. off: function () {
  1622. this.methodEdited = null;
  1623. Inventory.firstLoad = Inventory.tws_firstLoad;
  1624. Inventory.setCategoryActive = Inventory.tws_setCategoryActive;
  1625. Inventory.size = this.bigInv() ? 66 : 20;
  1626. Inventory.sizeSearch = this.bigInv() ? 55 : 16;
  1627. this.addCSS(1);
  1628. }
  1629. }, {
  1630. init: function () {
  1631. var t = $('<div></div>').append((new west.gui.Checkbox(s(TWSlang.wir_enabler, 'WIR'), '', function (f) {
  1632. TWS.Settings.set('enableWir', f);
  1633. if (f)
  1634. TWS.Wir.on();
  1635. else
  1636. TWS.Wir.off();
  1637. })).setSelected(TWS.Settings.get('enableWir'), true).setId('tws_wir_enabler').setTitle('<b>' + TWSlang.wir + '</b><i>' + TWSlang.wir_enabler_title).getMainDiv()).append((new west.gui.Checkbox(TWSlang.ext_enabler, '', function (g) {
  1638. TWS.Settings.set('enableWirExt', g);
  1639. })).setSelected(TWS.Settings.get('enableWirExt'), true).setId('tws_wir_ext_enabler').setTitle(TWSlang.ext_enabler_title).getMainDiv()).append($('<p>' + TWSlang.wir_on_one_line + ':</p>').css({
  1640. 'float': 'left',
  1641. clear: 'left'
  1642. })).append((new west.gui.Combobox('wir_sizer')).addItem(4, s('%1 ' + TWSlang.wir_on_line, 4)).addItem(5, s('%1 ' + TWSlang.wir_on_line, 5)).addItem(6, s('%1 ' + TWSlang.wir_on_line, 6)).select(TWS.Settings.get('wirSize')).addListener(function (h) {
  1643. TWS.Settings.set('wirSize', h);
  1644. TWS.Wir.addCSS(h);
  1645. }).getMainDiv());
  1646. return t;
  1647. }
  1648. },
  1649. '#wir_sizer { float: left; clear: left; }');
  1650. TWS.ExtTB = mod({
  1651. type: mod.PATCH,
  1652. version: 1.3,
  1653. name: 'ExtTB'
  1654. }, {
  1655. selectBox: null,
  1656. button: null,
  1657. items: null,
  1658. enabled: null,
  1659. init: function () {
  1660. var that = this;
  1661. this.addItems();
  1662. this.selectBox = new west.gui.Selectbox().setWidth(100).addListener(this.listener);
  1663. for (var t in this.items)
  1664. this.selectBox.addItem(t, this.items[t][0], this.items[t][1]);
  1665. this.selectBox.divWrap.remove();
  1666. this.selectBox.getMainDiv().hide();
  1667. var val = setInterval(function () {
  1668. if ($('.button.city').length > 0) {
  1669. clearInterval(val);
  1670. if (TWS.Settings.get('enableMenuTop')) {
  1671. document.getElementById('ui_bottombar').style.zIndex = 20;
  1672. document.getElementById('ui_menubar').style.zIndex = 20;
  1673. } else
  1674. document.getElementById('ui_menubar').style.zIndex = 16;
  1675. that.selectBox.show();
  1676. $('div.tw2gui_modal_fixed').remove();
  1677. that.button = $('.button.city').append(that.selectBox.getMainDiv());
  1678. if (TWS.Settings.get('enableTownButton'))
  1679. that.on();
  1680. }
  1681. }, 2000);
  1682. },
  1683. editCityButton: function (t, n, r) {
  1684. if (r === undefined)
  1685. r = TWS.ExtTB;
  1686. if (!n.town_id) {
  1687. r.off();
  1688. $('.city.dock-image').off('click').on('click', function () {
  1689. west.window.Blackboard.toggleOpen();
  1690. });
  1691. } else {
  1692. $('.city.dock-image').off('click').on('click', function () {
  1693. TownWindow.toggleOpen(n.x, n.y);
  1694. r.selectBox.getMainDiv().hide();
  1695. });
  1696. }
  1697. r.button.off('click');
  1698. },
  1699. addItems: function () {
  1700. var e = Character.homeTown,
  1701. n = {};
  1702. n.bank = [
  1703. TWSlang.bank,
  1704. TWSlang.open + TWSlang.bank,
  1705. function () {
  1706. BankWindow.open(e.town_id);
  1707. }
  1708. ];
  1709. n.saloon = [
  1710. TWSlang.saloon,
  1711. TWSlang.open + TWSlang.saloon,
  1712. function () {
  1713. SaloonWindow.open(e.town_id);
  1714. }
  1715. ];
  1716. n.sleep = [
  1717. TWSlang.sleep,
  1718. TWSlang.sleep_in_hotel,
  1719. function () {
  1720. TWS.ExtTB.sleep(e.town_id);
  1721. }
  1722. ];
  1723. n.forum = [
  1724. TWSlang.forum,
  1725. TWSlang.open + TWSlang.forum,
  1726. function () {
  1727. ForumWindow.open();
  1728. }
  1729. ];
  1730. n.market = [
  1731. TWSlang.market,
  1732. TWSlang.open + TWSlang.market,
  1733. function () {
  1734. Ajax.remoteCallMode('town', 'get_town', {
  1735. x: e.x,
  1736. y: e.y
  1737. }, function (t) {
  1738. if (t.error)
  1739. return (new UserMessage(t.error)).show();
  1740. MarketWindow.open(e.town_id, t.allBuildings.market.stage);
  1741. });
  1742. }
  1743. ];
  1744. n.pray = [
  1745. TWSlang.pray,
  1746. TWSlang.pray_in_church,
  1747. function () {
  1748. ChurchWindow.start(e.town_id);
  1749. }
  1750. ];
  1751. n.sheriff = [
  1752. TWSlang.sheriff,
  1753. TWSlang.open + TWSlang.sheriff,
  1754. function () {
  1755. SheriffWindow.open(e.town_id);
  1756. }
  1757. ];
  1758. n.hall = [
  1759. TWSlang.cityhall,
  1760. TWSlang.open + TWSlang.cityhall,
  1761. function () {
  1762. CityhallWindow.open(e.town_id);
  1763. }
  1764. ];
  1765. this.items = n;
  1766. },
  1767. listener: function (e) {
  1768. TWS.ExtTB.items[e][2]();
  1769. },
  1770. sleep: function (e) {
  1771. var t;
  1772. Ajax.remoteCallMode('building_hotel', 'get_data', {
  1773. town_id: e
  1774. }, function (n) {
  1775. if (n.hotel_level != 0 && !n.error) {
  1776. switch (n.hotel_level) {
  1777. case 5:
  1778. t = 'luxurious_apartment';
  1779. break;
  1780. case 4:
  1781. t = 'apartment';
  1782. break;
  1783. case 3:
  1784. t = 'hotel_room';
  1785. break;
  1786. case 2:
  1787. t = 'bedroom';
  1788. break;
  1789. case 1:
  1790. t = 'cubby';
  1791. break;
  1792. }
  1793. } else {
  1794. (new UserMessage(TWSlang.dont_have_hotel, 'error')).show();
  1795. return;
  1796. }
  1797. TaskQueue.add(new TaskSleep(e, t));
  1798. });
  1799. },
  1800. show: function () {
  1801. TWS.ExtTB.selectBox.getMainDiv().show();
  1802. var e = TWS.ExtTB.button.offset();
  1803. TWS.ExtTB.selectBox.setPosition(e.left + 26, e.top + 5);
  1804. },
  1805. hide: function () {
  1806. TWS.ExtTB.selectBox.getMainDiv().hide({
  1807. duration: 100,
  1808. always: true
  1809. });
  1810. },
  1811. on: function () {
  1812. var e = this;
  1813. EventHandler.listen('char_home_town_changed', this.editCityButton, 'TWSExt');
  1814. EventHandler.listen('character_level_up', function () {
  1815. e.editCityButton(null, Character.homeTown, e);
  1816. }, 'TWSExt');
  1817. this.button.on('mouseenter', this.show);
  1818. this.button.on('mouseleave', this.hide);
  1819. this.editCityButton(null, Character.homeTown, this);
  1820. },
  1821. off: function () {
  1822. EventHandler.unlistenByContext('char_home_town_changed', 'TWSExt');
  1823. EventHandler.unlistenByContext('character_level_up', 'TWSExt');
  1824. this.button.off('mouseenter', this.show);
  1825. this.button.off('mouseleave', this.hide);
  1826. },
  1827. toggleM: function (on) {
  1828. if (on) {
  1829. document.getElementById('ui_bottombar').style.zIndex = 20;
  1830. document.getElementById('ui_menubar').style.zIndex = 20;
  1831. } else {
  1832. document.getElementById('ui_bottombar').style.zIndex = 15;
  1833. document.getElementById('ui_menubar').style.zIndex = 16;
  1834. }
  1835. },
  1836. }, {
  1837. init: function () {
  1838. var t = $('<div/>').append(new west.gui.Checkbox(TWSlang.enable_town_button, '', function (e) {
  1839. TWS.Settings.set('enableTownButton', e);
  1840. if (e)
  1841. TWS.ExtTB.on();
  1842. else
  1843. TWS.ExtTB.off();
  1844. }).setSelected(TWS.Settings.get('enableTownButton'), true).setTitle(TWSlang.enable_town_title).getMainDiv()).append(new west.gui.Checkbox(TWSlang.enable_menutop, '', function (g) {
  1845. TWS.Settings.set('enableMenuTop', g);
  1846. TWS.ExtTB.toggleM(g);
  1847. }).setSelected(TWS.Settings.get('enableMenuTop'), true).getMainDiv());
  1848. return t;
  1849. }
  1850. },
  1851. '.city.button .tw2gui_selectbox { position: fixed; }\n' + '.city.button .arrow.bottom { width: 24px !important; height: 10px !important; background-position: -23px 14px !important; top: auto !important; background-image: url(https://www.the-west.ru/images/tw2gui/selectbox_arrows.png?4) !important; }');
  1852. TWS.DuelSafer = mod({
  1853. type: mod.TAB,
  1854. version: 1.5,
  1855. name: TWSlang.DuelSafer_found,
  1856. tid: 'ds'
  1857. }, {
  1858. init: function () {
  1859. this.Friends.init();
  1860. SaloonWindow.tws_startDuel = SaloonWindow.startDuel;
  1861. SaloonWindow.startDuel = function (playerId, allianceId, a, p, v) {
  1862. TWS.DuelSafer.args = arguments;
  1863. var duel = function () {
  1864. SaloonWindow.tws_startDuel.apply(SaloonWindow, TWS.DuelSafer.args);
  1865. };
  1866. if (!a) {
  1867. var s = TWS.DuelSafer.Friends.get(),
  1868. o = TWS.DuelSafer;
  1869. if (s.alliances.hasOwnProperty(allianceId))
  1870. o.showWarningMessage('alliance', allianceId);
  1871. else if (s.players.hasOwnProperty(playerId))
  1872. o.showWarningMessage('player', playerId);
  1873. else if (TWS.Settings.get('safeFriends') && Chat.Friendslist.isFriend('client_' + playerId))
  1874. o.showWarningMessage('player', 'friendlist');
  1875. else if (!$.isEmptyObject(s.towns)) {
  1876. Ajax.remoteCallMode('profile', 'init', {
  1877. playerId: playerId
  1878. }, function (e) {
  1879. if (!e.hasTown)
  1880. return new UserMessage(TWSlang.DuelSafer_no_town);
  1881. var xy = e.town.town_x + '_' + e.town.town_y;
  1882. if (s.towns.hasOwnProperty(xy))
  1883. o.showWarningMessage('town', xy);
  1884. else
  1885. duel();
  1886. });
  1887. } else
  1888. duel();
  1889. } else
  1890. duel();
  1891. };
  1892. setTimeout(function () {
  1893. if (window.TW_Calc && TW_Calc.DuelBar && TW_Calc.DuelBar.startDuel)
  1894. TW_Calc.DuelBar.startDuel = SaloonWindow.startDuel;
  1895. }, 3000);
  1896. },
  1897. showWarningMessage: function (type, id) {
  1898. var i,
  1899. o = TWS.DuelSafer.Friends.get();
  1900. i = '<div>' + TWSlang.DuelSafer_friend_text + '</br></br>' + this.Friends.types[type] + ':' + '<b style=\'color:green;\'> ' + (id == 'friendlist' ? TWSlang.friendlist : o[type + 's'][id]) + '</b></div>';
  1901. (new west.gui.Dialog(TWSlang.DuelSafer_friend, i, 'question')).addButton('yes', function () {
  1902. SaloonWindow.tws_startDuel.apply(SaloonWindow, TWS.DuelSafer.args);
  1903. }).addButton('no').show();
  1904. },
  1905. Friends: {
  1906. data: null,
  1907. name: 'tws_duelsafer',
  1908. types: {
  1909. alliance: TWSlang.DuelSafer_from_alliance,
  1910. town: TWSlang.DuelSafer_from_town,
  1911. player: TWSlang.DuelSafer_from_player,
  1912. },
  1913. init: function () {
  1914. this.data = $.extend({
  1915. players: {},
  1916. towns: {},
  1917. alliances: {}
  1918. }, JSON.parse(localStorage.getItem(this.name)));
  1919. },
  1920. update: function () {
  1921. localStorage.setItem(this.name, JSON.stringify(this.data));
  1922. },
  1923. add: function (e, t, n) {
  1924. if (!this.types[e])
  1925. return;
  1926. this.data[e + 's'][n] = t;
  1927. this.update();
  1928. },
  1929. 'delete': function (e, t) {
  1930. return delete this.data[e + 's'][t];
  1931. },
  1932. get: function (e) {
  1933. if (e === undefined)
  1934. return this.data;
  1935. if (!this.types[e])
  1936. return;
  1937. return this.data[e + 's'];
  1938. },
  1939. clear: function () {
  1940. this.data = {
  1941. players: {},
  1942. towns: {},
  1943. alliances: {}
  1944. };
  1945. this.update();
  1946. }
  1947. },
  1948. getId: function (e, t, n) {
  1949. var r,
  1950. i;
  1951. if (e == 'player')
  1952. Ajax.remoteCallMode("profile", "init", {
  1953. name: t,
  1954. }, function (resp) {
  1955. if (resp.error)
  1956. return n(null);
  1957. n(resp.playerid);
  1958. });
  1959. else
  1960. Ajax.remoteCall('settings', 'get_parsed_text', {
  1961. text: '[' + e + ']' + t + '[/' + e + ']'
  1962. }, function (t) {
  1963. var s = t.parsed_text;
  1964. if (s.match(/Window.open\(/) === null)
  1965. return n(null);
  1966. if (e == 'town') {
  1967. i = s.match(/Window.open\((\d+).(\d+)\)/);
  1968. r = i[1] + '_' + i[2];
  1969. } else if (e == 'alliance')
  1970. r = s.match(/Window.open\((\d+)\)/)[1];
  1971. n(r);
  1972. });
  1973. },
  1974. add: function (type, n, r) {
  1975. var i = this,
  1976. s;
  1977. if (!this.Friends.types[type])
  1978. return;
  1979. this.getId(type, n, function (o) {
  1980. if (o === null)
  1981. return $.isFunction(r) && r(null);
  1982. if (isDefined(i.Friends.get()[type + 's'][o]))
  1983. return $.isFunction(r) && r(false);
  1984. i.Friends.add(type, n, o);
  1985. s = {
  1986. id: o
  1987. };
  1988. s[type] = n;
  1989. if ($.isFunction(r))
  1990. r(s);
  1991. });
  1992. },
  1993. 'delete': function () {
  1994. this.Friends.delete.apply(this.Friends, arguments);
  1995. this.Friends.update();
  1996. }
  1997. }, {
  1998. init: function (t) {
  1999. var n = this,
  2000. r = $('<div id="tws_ds_help" class="tws_help_icon" title="' + TWSlang.help_icon + '"></div>'),
  2001. friendsBox = (new west.gui.Checkbox(TWSlang.addfriends, '', function (e) {
  2002. TWS.Settings.set('safeFriends', e);
  2003. })).setSelected(TWS.Settings.get('safeFriends'), true).setTitle(TWSlang.addfriends).setId('tws_ds_friendsBox').getMainDiv();
  2004. this.towns = new this.container('tws_ds_town', 'town', {
  2005. open_title: TWSlang.open_town,
  2006. add_new: TWSlang.DuelSafer_input_town,
  2007. delete_title: TWSlang.delete_town,
  2008. not_found: TWSlang.DuelSafer_not_found_town,
  2009. }, function (e) {
  2010. var t = e.split('_');
  2011. TownWindow.open(t[0], t[1]);
  2012. });
  2013. this.alliances = new this.container('tws_ds_alliance', 'alliance', {
  2014. open_title: TWSlang.open_ally,
  2015. add_new: TWSlang.DuelSafer_input_alliance,
  2016. delete_title: TWSlang.delete_ally,
  2017. not_found: TWSlang.DuelSafer_not_found_ally,
  2018. }, function (e) {
  2019. AllianceWindow.open(e);
  2020. });
  2021. this.players = new this.container('tws_ds_player', 'player', {
  2022. open_title: TWSlang.open_player,
  2023. add_new: TWSlang.DuelSafer_input_player,
  2024. delete_title: TWSlang.delete_player,
  2025. not_found: TWSlang.DuelSafer_not_found_player,
  2026. }, function (e) {
  2027. PlayerProfileWindow.open(+e);
  2028. });
  2029. $.each(t.Friends.get('town'), function (e, t) {
  2030. n.towns.addItem(e, t);
  2031. });
  2032. $.each(t.Friends.get('alliance'), function (e, t) {
  2033. n.alliances.addItem(e, t);
  2034. });
  2035. $.each(t.Friends.get('player'), function (e, t) {
  2036. n.players.addItem(e, t);
  2037. });
  2038. this.DOM.append(this.towns.DOM, this.alliances.DOM, this.players.DOM, r, friendsBox);
  2039. },
  2040. container: function (t, n, r, i) {
  2041. function f(e) {
  2042. TWS.DuelSafer.add(n, e, function (t) {
  2043. if (t === null)
  2044. new UserMessage(r.not_found).show();
  2045. else if (t === false)
  2046. new UserMessage(TWSlang.DuelSafer_already_have).show();
  2047. else {
  2048. o.addItem(t.id, e);
  2049. u.setValue('');
  2050. }
  2051. });
  2052. }
  2053. function l(t, s) {
  2054. var a = $('<span class="tws_ds_friend"></span>').append($('<strong title="' + r.open_title + '">' + s + '</strong>').click(function () {
  2055. i(t);
  2056. })).append($('<a class="tws_ds_delete" title="' + r.delete_title + '"></a>').click(function () {
  2057. TWS.DuelSafer.delete(n, t);
  2058. o.deleteItem(t);
  2059. }));
  2060. return a;
  2061. }
  2062. var s = {},
  2063. o = this,
  2064. u = new west.gui.Textfield('tws_ds_townfield'),
  2065. a = new west.gui.Button(TWSlang.add, function () {
  2066. f(u.getValue());
  2067. });
  2068. u.addListener(function (e) {
  2069. f(e);
  2070. });
  2071. this.List = $('<div id="tws_ds_towns" class="tws_block"></div>');
  2072. this.DOM = $('<div id="' + t + '"></div>').append('<p>' + r.add_new + '</p>', u.getMainDiv(), a.getMainDiv(), this.List);
  2073. this.addItem = function (e, t) {
  2074. var n = l(e, t);
  2075. s[e] = n;
  2076. this.List.append(n);
  2077. };
  2078. this.deleteItem = function (e) {
  2079. if (s[e])
  2080. s[e].remove();
  2081. };
  2082. }
  2083. }, '#tws_ds { padding: 10px 5px 0 5px; }\n' +
  2084. '#tws_ds p { font-weight: bold; margin-left: 5px; }\n' +
  2085. '#tws_ds .tw2gui_button { float: right; margin: -7px 3px 0 0; } \n' +
  2086. '#tws_ds_player .tw2gui_button { float: none; position: absolute; margin-left: 20px; } \n' +
  2087. '#tws_ds .tw2gui_textfield_wrapper input { width: 180px; }\n' +
  2088. '#tws_ds .tws_block { min-height: 112px; margin-top: 4px; padding: 4px; }\n' +
  2089. '#tws_ds_help { left: 49%; top: 110px; }\n' +
  2090. '#tws_ds_friendsBox { position: relative; left: 54%; top: 15px; }\n' +
  2091. '#tws_ds_town { float: left; width: 47%; }\n' +
  2092. '#tws_ds_alliance { float: right; width: 47%; }\n' +
  2093. '#tws_ds_player { position: absolute; width: 98%; top: 189px}\n' +
  2094. '.tws_ds_friend { padding: 3px; float: left; margin: 0px 3px 3px 0px; background: rgba(163, 163, 163, 0.60); border: 1px solid #000000; -moz-border-radius: 3px; -webkit-border-radius: 3px; -khtml-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; }\n' +
  2095. '.tws_ds_friend strong { cursor: pointer; }\n' +
  2096. '.tws_ds_friend strong:hover { color: white; text-shadow: 0 0 2px #000; }\n' +
  2097. '.tws_ds_delete { border-radius: 5px; border: 1px solid #000; line-height: 0px; display: inline-block; padding: 4px 0 4px 0; font-size: 15px; color: rgb(150,0,0); margin-left: 5px; } \n' +
  2098. '.tws_ds_delete:hover { color: rgb(200,0,0); }\n' +
  2099. '.tws_ds_delete:before { content: \'×\'; }');
  2100. (TWS.Updater = function () {
  2101. if (!window.scriptRequest) {
  2102. scriptRequest = true;
  2103. $.getScript(TWS.updateUrl);
  2104. }
  2105. var intVal = setInterval(function () {
  2106. if (window.scriptUp) {
  2107. scriptUp.c('TWS', TWS.version, TWS.name, TWS.updateAd, TWS.website, TWS.lang);
  2108. clearInterval(intVal);
  2109. }
  2110. }, 2000);
  2111. })();
  2112. });