// ==UserScript==
// @name TWLeoTools
// @namespace TomRobert
// @author Leotas (updated by Tom Robert)
// @description Useful tools for The West!
// @include https://*.the-west.*/game.php*
// @include https://*.the-west.*/index.php?page=logout
// @include https://www.the-west.*
// @include https://beta.the-west.net*
// @include http*://tw-db.info/*?strana=invent&x=*
// @exclude https://classic.the-west.net*
// @version 1.45.5
// @grant none
// ==/UserScript==
// translation:Tom Robert(German&English),Darius II/Wojcieszy(Polish),pepe100(Spanish),ruud99(Dutch),Creature/krcsirke(Hungarian),Timemod Herkumo(Greek),Elly Siranno/Raymond Reddington(Portuguese),Billy-AR(Italian)
(function (fn) {
var script = document.createElement('script');
script.setAttribute('type', 'application/javascript');
script.textContent = '(' + fn.toString() + ')();';
document.body.appendChild(script);
document.body.removeChild(script);
})(function () {
if (location.href.includes('index.php?page=logout')) {
location.href = '/';
} else {
LTstart = {
version: '1.45.5',
langs: {
en: {
language: 'English',
ApiGui1: 'This script contains many features to simplify your everyday life in The West.<br><br>More Informations: ',
ApiGui2: 'Open script page',
FeatLogout: 'Add a logout button on the right side',
FeatStatusbar: 'Remove the taskbar',
FeatShowAP: 'Show your actual skill points in job windows',
FeatChangeCity: 'Switch title and player name in the town hall',
FeatDuellMap: 'Add Duelmap tab in duel window',
FeatMarkDaily: 'Highlight daily login bonus on day 5 to not miss it',
FeatMarketTown: 'Show town name in market window',
FeatMarketMessage: 'Get a message when there are items or money to pick up on actual market',
FeatAchievHide: 'Hide completed achievements in achievements window',
FeatRecipeMarket: 'Improve the purchase of recipes on market',
FeatMoveJobs: 'Move the queued jobs a bit to the left',
FeatBlinkEvents: 'Stop the blinking of the event, County Fair buttons on the left side',
FeatFortTracker: 'Turn off fort battle reminder',
FeatFriendsPop: 'Hide "Friend online" pop-ups',
FeatInstantQuest: 'Complete the quest instantly if all requirements are done',
FeatQuestWiki: 'Add a link in the quest window to show the quest on the wiki page',
FeatCityTravel: 'Show the travel time to the towns in the blackboard',
FeatBetterSheriff: 'Add a new tab in the sheriff window to see all possible bounties',
FeatChatProfessions: 'Show the crafting profession of the players in the chat list',
FeatQuestBookSearch: 'Search for solved quests in the quest book',
FeatMarketRights: 'Show if market offers are public or only for alliance/town members',
FeatEquipManagerPlus: 'Improve the equipment manager in the inventory',
FeatShortPopups: 'Make the item pop-ups shorter',
FeatHideNotis: 'Add a button to hide the job notifications on the left side',
FeatJobProducts: 'Show in the job pop-up how many products you already have in your inventory',
FeatMapDistance: ' Show the number of miles next to the travel time',
FeatTraderSell: 'Sell multiple items at once to the trader',
FeatTouchControl: 'Enable touch control on your mobile browser',
settings1: 'Open settings',
settings2: 'Open settings and information window',
ghosttown1: 'Go to ghost town ',
ghosttown2: 'Open ghost town',
ghosttown3: 'Open ghost town and center it on map',
indiantown1: 'Go to Indian village ',
indiantown2: 'Open Indian village',
indiantown3: 'Open Indian village and center it on map',
openmarket: 'Open market',
forum: 'Open town forum',
newsets: 'New sets are added to the script',
chooseItems: 'Choose the items',
remindHover: 'You get a notification when an item can be used again. Here you can choose these items.',
remindReady: 'Ready to collect',
skipHover: 'Skip the confirmation and result messages when you open some bags. Here you can choose these bags',
skipDone: 'You get',
info: 'Info',
contact: 'Contact',
chooseLang: 'Choose language',
features: 'Features',
name: 'Name',
author: 'Author',
version: 'Version',
gameversion: 'Gameversions',
website: 'Website',
weblink: 'Weblink',
save: 'Save',
saveMessage: 'Settings saved. Some changes need a refresh of the game window.',
setbonus2: 'Informations about the set bonuses',
frame2: 'Helpful web pages',
choose: 'Click on the hat to get started',
items: 'items',
parts: 'parts',
showItems: 'Show the set items in your Bag',
noItems: 'No items in your inventory found. Click again with CTRL to show it on TW-Calc.',
ownSets: 'Only own sets',
switchWeapon: 'Switch between firearm and melee weapon',
selectBonus: 'Select bonuses',
resetB: 'Reset',
body: 'Clothing',
right_arm: 'Weapons',
animal: 'Horse & Yield',
rest: 'Other',
buff: 'Buffs',
refresh: 'Refresh',
noFriends: 'No Friends',
reward: 'Reward',
allprofessions: 'All Professions',
market1: 'Items on market',
market2: 'There are items/money on this market. What do you want to pick up?',
all: 'All',
onlyBids: 'Only bids',
nothing: 'Nothing',
worldwide: 'Worldwide',
alliance: 'Alliance',
town: 'Town',
level: 'Level',
duelLevel: 'Duelling level',
exp: 'Exp',
distance: 'Distance',
startduel: 'Start Duel',
centerMap: 'Center map',
popup: 'The opponent\'s skill bonus',
damage: 'Damage',
duelmap: 'Duelmap',
duelradius: 'Duel radius',
minutes: 'minutes',
hour: '1 hour',
hours: 'hours',
searchOpp: 'Search for opponents',
amount: 'Dead',
not_dead_amount: 'Alive',
duellevel: 'Lvl',
status: 'Status',
sortBy: 'Sort by',
tooLow: 'Too low duelling level of opponent',
tooHigh: 'Too high duelling level of opponent',
ownTown: 'Member of your town',
attackable: 'Show only attackable players',
logout: 'Logout',
accNfin: 'Accept & complete quest',
onWiki: 'Show the quest on the wiki',
longerName: 'Name must be longer than 2 characters',
loading: 'Loading...',
rename: 'Rename',
newName: 'Choose a new set name',
used: 'Used',
renameWarning: 'When you rename a set, you will wear it and undress it again.<br>You may loose health points during the process!',
sellItems: 'Sell items to the trader?',
removeWorkNotis: 'Hide all job notifications',
compInv: 'Click on "cancel" to just show only auctionable items\n or\nEnter other inventory URL to compare',
loginAll1: 'Login all worlds',
loginAll2: 'Load all your active worlds with one click',
custom1: 'Custom',
custom2: 'Your custom login list',
edit: 'Edit',
saveMessage2: 'Saved successfully',
},
de: {
language: 'German (Deutsch)',
ApiGui1: 'Das Script beinhaltet verschiedene Funktionen um den Alltag bei The West zu vereinfachen.<br><br>Weitere Informationen: ',
ApiGui2: 'Skriptfenster öffnen',
FeatLogout: 'Erstellt einen Logout-Button rechts in der Menüleiste',
FeatStatusbar: 'Entfernt die Fensterleiste mit den verschiedenen Tabs im unteren Teil',
FeatShowAP: 'Zeige die Arbeitspunkte im Job-Fenster',
FeatChangeCity: 'Tausche Titel und Spielername in der Stadthalle',
FeatDuellMap: 'Füge im Duellfenster einen Tab hinzu, der eine Duellkarte zeigt',
FeatMarkDaily: 'Markiere Täglicher Loginbonus am Tag 5 besonders, um ihn nicht zu übersehen',
FeatMarketTown: 'Zeige im Marktfenster, zu welcher Stadt es gehört',
FeatMarketMessage: 'Wenn du an einem Markt stehst, wo etwas abgeholt werden kann, erscheint eine Meldung',
FeatAchievHide: 'Verstecke alle abgeschlossenen Erfolge im Erfolgsfenster für eine bessere Übersicht',
FeatRecipeMarket: 'Verbessert den Kauf von Rezepten im Markt',
FeatMoveJobs: 'Verschiebe eingestellte Arbeiten ein wenig nach links',
FeatBlinkEvents: 'Das Blinken der Event-, Wanderzirkus-Buttons usw. am linken Rand entfernen',
FeatFortTracker: 'Fortkampftracker abschalten',
FeatFriendsPop: '"Freund online" Pop-ups deaktivieren',
FeatInstantQuest: 'Schliesse die Quest sofort ab, wenn die Voraussetzungen bereits erfüllt sind',
FeatQuestWiki: 'Füge im Questfenster einen Link hinzu, der die Quest im Wiki zeigt',
FeatCityTravel: 'Zeige die Reisezeit zu den Städten im Blackboard-Fenster',
FeatBetterSheriff: 'Erweitere den Sheriff um einen Tab, welcher alle Kopfgelder auflistet',
FeatChatProfessions: 'Zeige den Handwerksberuf der Spieler in der Chatliste',
FeatQuestBookSearch: 'Suche im Questbuch nach abgeschlossenen Quests',
FeatMarketRights: 'Zeige ob Marktangebote öffenltich oder nur für Allianz-/Stadtmitglieder sind',
FeatEquipManagerPlus: 'Erweitere den Ausrüstungsmanager im Inventar',
FeatShortPopups: 'Mache die Item-Popups kompakter',
FeatHideNotis: 'Blende Arbeits-Benachrichtigungen am linken Rand mit einem Klick aus',
FeatJobProducts: 'Zeige bei den Arbeiten, wie viele Produkte du bereits besitzt',
FeatMapDistance: 'Zeige die Entfernung in Meilen neben der Reisezeit',
FeatTraderSell: 'Ermöglicht dem Fahrenden Händler mehrere Gegenstände auf einmal zu verkaufen',
FeatTouchControl: 'Aktiviere Touchsteuerung im mobilen Browser',
settings1: 'Einstellungen öffnen',
settings2: 'Öffnet das Informations- und Einstellungsfenster',
ghosttown1: 'Gehe zur Geisterstadt ',
ghosttown2: 'Öffne Geisterstadt',
ghosttown3: 'Öffnet das Fenster der Geisterstadt und zentriert es auf der Map',
indiantown1: 'Gehe zum Indianerdorf ',
indiantown2: 'Öffne Indianerdorf',
indiantown3: 'Öffnet das Fenster des Indianerdorfes und zentriert es auf der Map',
openmarket: 'Öffne Marktfenster',
forum: 'Öffne Stadtforum',
newsets: 'Dem Script wurden neue Sets hinzugefügt',
chooseItems: 'Wähle die Gegenstände aus',
remindHover: 'Wenn die Gegenstände bereit zum Einsammeln sind, bekommst du einen Hinweis. Hier kannst du diese Items auswählen.',
remindReady: 'Bereit zum Einsammeln',
skipHover: 'Überspringe die Bestätigungs- und Resultatsmeldung beim Öffnen bestimmter Taschen. Hier kannst du diese Taschen auswählen.',
skipDone: 'Du bekommst',
info: 'Info',
contact: 'Kontakt',
chooseLang: 'Sprache auswählen',
features: 'Features',
name: 'Name',
author: 'Autor',
version: 'Version',
gameversion: 'Gameversionen',
website: 'Webseite',
weblink: 'Link',
save: 'Speichern',
saveMessage: 'Einstellungen gespeichert. Manche Änderungen werden erst nach Neuladen des Spiels sichtbar.',
setbonus2: 'Lass dir die Boni aller Sets anzeigen',
frame2: 'Hilfreiche Webseiten',
choose: 'Klicke auf den Hut und wähle aus',
items: 'Gegenstände',
parts: 'Teile',
showItems: 'Zeige die Setgegenstände in deinem Inventar',
noItems: 'Keine Gegenstände im Inventar gefunden. Klicke erneut mit CTRL um sie auf TW-Calc anzuzeigen.',
ownSets: 'Nur eigene Sets',
switchWeapon: 'Wähle Schuss- oder Schlagwaffe',
selectBonus: 'Boni auswählen',
resetB: 'Zurücksetzen',
body: 'Kleidung',
right_arm: 'Waffen',
animal: 'Pferd & Produkt',
rest: 'Andere',
buff: 'Buffs',
refresh: 'Aktualisieren',
noFriends: 'Keine Freunde',
reward: 'Belohnung',
allprofessions: 'Alle Berufe',
market1: 'Gegenstände auf dem Markt',
market2: 'Es sind noch Gegenstände/Geld auf diesem Markt. Was soll abgeholt werden?',
all: 'Alles',
onlyBids: 'Nur Gebote',
nothing: 'Nichts',
worldwide: 'Weltweit',
alliance: 'Allianz',
town: 'Stadt',
level: 'Stufe',
duelLevel: 'Duellstufe',
exp: 'EP',
distance: 'Distanz',
startduel: 'Starte Duell',
centerMap: 'Zentriere Map',
popup: 'Fertigkeitenbonus des Gegners',
damage: 'Schaden',
duelmap: 'Duellkarte',
duelradius: 'Duellradius',
minutes: 'Minuten',
hour: '1 Stunde',
hours: 'Stunden',
searchOpp: 'Duellgegner suchen',
amount: 'Tot',
not_dead_amount: 'Lebendig',
duellevel: 'Lvl',
status: 'Status',
sortBy: 'Sortiere nach',
tooLow: 'Zu tiefe Duellstufe des Gegners',
tooHigh: 'Zu hohe Duellstufe des Gegners',
ownTown: 'Mitbürger deiner Stadt',
attackable: 'Zeige nur duellierbare Spieler',
logout: 'Logout',
accNfin: 'Quest annehmen & abschließen',
onWiki: 'Zeige die Quest im Wiki',
longerName: 'Name muss länger als 2 Zeichen sein',
loading: 'Lädt...',
rename: 'Umbenennen',
newName: 'Neuer Set-Name',
used: 'Benutzt',
renameWarning: 'Du ziehst das Set beim Umbenennen an und wieder aus.<br>Möglicherweise verlierst du deswegen Lebenspunkte!',
sellItems: 'Items dem Händler verkaufen?',
removeWorkNotis: 'Entferne die Arbeits-Benachrichtigungen',
compInv: 'Klicke auf "Abbrechen, um nur auktionierbare Items anzuzeigen\n oder\nFüge andere Inventar-URL ein, um zu vergleichen',
loginAll1: 'Alle einloggen',
loginAll2: 'Lade all deine aktiven Welten mit einem Klick',
custom1: 'Eigene',
custom2: 'Deine eigene Login-Liste',
edit: 'Bearbeiten',
saveMessage2: 'Speichern erfolgreich',
},
pl: {
language: 'Polish (polski)',
ApiGui1: 'Skrypt ten zawiera wiele funkcji, aby uprościć codzienne życie na Zachodzie.<br><br>Więcej informacji: ',
ApiGui2: 'Otwórz w nowej karcie',
FeatLogout: 'Dodanie przycisku po prawej stronie, wyloguj się.',
FeatStatusbar: 'Usuwa pasek z oknami w dolnej części gry.',
FeatShowAP: 'Pokazuje Punkty Pracy (PP) w oknie danej pracy.',
FeatChangeCity: 'Zamienia tytuł gracza na początku, w karcie graczy w ratuszu.',
FeatDuellMap: 'Dodaje dodatkową zakładkę pojedynków, w pojedynkach.',
FeatMarkDaily: 'Oznacza dodatkową ramką 5 dzień logowania.',
FeatMarketTown: 'Dodaje nazwę miasta w karcie targu.',
FeatMarketMessage: 'Jeżeli znajdujesz się w mieście gdzie coś jest do odebrania. Pojawia się komunikat.',
FeatAchievHide: 'Ukrywa zaliczone osiągnięcia.',
FeatRecipeMarket: 'Dodaje dodatkowe przyciski z receptami w karcie targ.',
FeatMoveJobs: 'Przenieś zadania w kolejce trochę na lewo',
FeatBlinkEvents: 'Zatrzymaj pulsowanie przycisków (zdarzenie, pomoce, ostrzeżenia itp) po lewej stronie',
FeatFortTracker: 'Wyłącz przypomnienie o bitwie',
FeatFriendsPop: 'Ukryj "Przyjaciel on-line" pop-ups',
FeatInstantQuest: 'Wykonaj zadanie natychmiast, gdyby wszystkie wymagania zostały wykonane',
FeatQuestWiki: 'Add a link in the quest window to show the quest on the wiki page',
FeatCityTravel: 'Show the travel time to the towns in the blackboard',
FeatBetterSheriff: 'Add a new tab in the sheriff window to see all possible bounties',
FeatChatProfessions: 'Show the crafting profession of the players in the chat list',
FeatQuestBookSearch: 'Search for solved quests in the quest book',
FeatMarketRights: 'Show if market offers are public or only for alliance/town members',
FeatEquipManagerPlus: 'Improve the equipment manager in the inventory',
FeatShortPopups: 'Make the item pop-ups shorter',
FeatHideNotis: 'Add a button to hide the job notifications on the left side',
FeatJobProducts: 'Show in the job pop-up how many products you already have in your inventory',
FeatMapDistance: ' Show the number of miles next to the travel time',
FeatTraderSell: 'Sell multiple items at once to the trader',
FeatTouchControl: 'Enable touch control for map and scrollbar on your mobile',
settings1: 'Otwórz ustawienia',
settings2: 'Otwiera okno ustawień oraz informacji o skrypcie.',
ghosttown1: 'Idź do Miasta Widmo, dojście ',
ghosttown2: 'Otwórz zadania w Mieście Widmo',
ghosttown3: 'Otwiera okno z zadaniami w Mieście Widmo',
indiantown1: 'Idź do Wioski Indiańskiej, dojście ',
indiantown2: 'Otwórz zadania w Wiosce Indiańskiej',
indiantown3: 'Otwiera okno z zadaniami w Wiosce Indiańskiej.',
openmarket: 'Otwórz targ',
forum: 'Otwórz forum',
newsets: 'Nowe zestawy są dodawane do skryptu',
chooseItems: 'Choose the items',
remindHover: 'You get a notification when an item can be used again. Here you can choose these items.',
remindReady: 'Ready to collect',
skipHover: 'Skip the confirmation and result messages when you open some bags. Here you can choose these bags',
skipDone: 'You get',
info: 'Informacja',
contact: 'Kontakt',
chooseLang: 'Wybierz język',
features: 'Ustawienia',
name: 'Nazwa',
author: 'Autor',
version: 'Wersja',
gameversion: 'Wersja gry',
website: 'Strona',
weblink: 'Dyskusja',
save: 'Zapisz',
saveMessage: 'Ustawienia zapisane. Niektóre zmiany potrzebują odświeżenia okna gry.',
setbonus2: 'Informacje o ustawionych premie',
frame2: 'Pomocna stron internetowych',
choose: 'Kliknij na kapelusz i wybierz',
items: 'przedmioty',
parts: 'parts',
showItems: 'Show the set items in your Bag',
noItems: 'No items in your inventory found. Click again with CTRL to show it on TW-Calc.',
ownSets: 'Only own sets',
switchWeapon: 'Switch between firearm and melee weapon',
selectBonus: 'Select bonuses',
resetB: 'Reset',
body: 'Clothing',
right_arm: 'Weapons',
animal: 'Horse & Yield',
rest: 'Other',
buff: 'Buffs',
refresh: 'Odświeżać',
noFriends: 'Brak przyjaciół',
reward: 'Nagroda',
allprofessions: 'Wszystko',
market1: 'Przedmioty na targu',
market2: 'Na tym targu znajdują się przedmioty/kasa, odebrać?',
all: 'Wszystko',
onlyBids: 'Tylko oferty',
nothing: 'Nic',
worldwide: 'Worldwide',
alliance: 'Alliance',
town: 'Miasto',
level: 'Poziom',
duelLevel: 'Poziom pojedynków',
exp: 'Exp',
distance: 'Odległość',
startduel: 'Akcja',
centerMap: 'Wyśrodkowanie',
popup: 'Bonusy umiejętności przeciwnika',
damage: 'Obrażenia',
duelmap: 'Mapa pojedynków',
duelradius: 'Zasięg',
minutes: 'Minut',
hour: '1 Godzina',
hours: 'Godzin',
searchOpp: 'Szukaj przeciwników',
amount: 'Dead',
not_dead_amount: 'Alive',
duellevel: 'Lvl',
status: 'Status',
sortBy: 'Sort by',
tooLow: 'Too low duelling level of opponent',
tooHigh: 'Too high duelling level of opponent',
ownTown: 'Member of your town',
attackable: 'Show only attackable players',
logout: 'Logout',
accNfin: 'Przyjmij & zakończ zadanie',
onWiki: 'Show the quest on the wiki',
longerName: 'Name must be longer than 2 characters',
loading: 'Loading...',
rename: 'Rename',
newName: 'Choose a new set name',
used: 'Used',
renameWarning: 'When you rename a set, you will wear it and undress it again.<br>You may loose health points during the process!',
sellItems: 'Sell items to the trader?',
removeWorkNotis: 'Hide all job notifications',
compInv: 'Click on "cancel" to just show only auctionable items\n or\nEnter other inventory URL to compare',
loginAll1: 'Login all worlds',
loginAll2: 'Załaduj wszystkie aktywne światów za pomocą jednego kliknięcia',
custom1: 'Custom',
custom2: 'Your custom login list',
edit: 'Edit',
saveMessage2: 'Saved successfully',
},
es: {
language: 'Spanish (español)',
ApiGui1: 'El script incluye varias funciones que simplifican la vida cotidiana en The West.<br><br>Más información: ',
ApiGui2: 'Abrir ventana del script',
FeatLogout: 'Crea un botón de cierre de sesión a la derecha en la barra de menús',
FeatStatusbar: 'Oculta la barra inferior de las ventanas',
FeatShowAP: 'Ver los puntos de trabajo en la ventana de trabajo',
FeatChangeCity: 'Cambiar título y nombre del jugador en el ayuntamiento',
FeatDuellMap: 'Completar la ventana de duelos con una pestaña que muestra el mapa de duelos',
FeatMarkDaily: 'Marcar el Bonus-Conexión-5 Días especialmente para que no te lo pierdas',
FeatMarketTown: 'Mostrar en la ventana de mercado, la ciudad al que pertenece',
FeatMarketMessage: 'Si llegas a un mercado donde tienes algo que puede ser recogido, aparece un mensaj',
FeatAchievHide: 'Ocultar logros completados en la ventana de logros para una mejor visión',
FeatRecipeMarket: 'Mejorar la compra de recetas en el mercado',
FeatMoveJobs: 'Mover los trabajos en cola un poco a la izquierda',
FeatBlinkEvents: 'Detener el parpadeo de los botones de Evento y Feria de Condado en el lado izquierdo',
FeatFortTracker: 'Apagar el recordatorio de Batalla de fuerte',
FeatFriendsPop: 'Esconder ventana emergente de "Amigo conectado"',
FeatInstantQuest: 'Completar la misión al instante si se cumplen todos los requisitos',
FeatQuestWiki: 'Agregar un enlace en la ventana de búsqueda para mostrar la búsqueda en la Wiki',
FeatCityTravel: 'Mostrar el tiempo de viaje a las ciudades en la pizarra',
FeatBetterSheriff: 'Añadir una nueva pestaña en la ventana del sheriff para ver todas las recompensas posibles',
FeatChatProfessions: 'Mostrar el oficio de los jugadores en la lista del chat',
FeatQuestBookSearch: 'Buscar misiones terminadas en libro de misiones',
FeatMarketRights: 'Mostrar si las ofertas de mercado son públicas o solo para los miembros de la Alianza/Ciudad',
FeatEquipManagerPlus: 'Mejorar el administrador de equipos en el inventario',
FeatShortPopups: 'Hacer los pop-ups de articulos más cortos',
FeatHideNotis: 'Agregar un botón para ocultar las notificaciones de trabajo en el lado izquierdo',
FeatJobProducts: 'Mostrar en la ventana emergente de trabajo cuántos productos tienes en tu inventario',
FeatMapDistance: 'Mostrar la cantidad de millas al lado del tiempo de viaje',
FeatTraderSell: 'Vender varios artículos a la vez al comerciante',
FeatTouchControl: 'Habilitar el control táctil para el mapa y la barra de desplazamiento en su dispositivo móvil',
settings1: 'Abrir preferencias',
settings2: 'Abrir la ventana de información y ajustes',
ghosttown1: 'Ir a la Ciudad Fantasma ',
ghosttown2: 'Abrir Ciudad Fantasma',
ghosttown3: 'Abrir la ventana de la Ciudad Fantasma y centrarla en el mapa',
indiantown1: 'Ir al Pueblo Indio Waupee ',
indiantown2: 'Abrir Pueblo Indio Waupee',
indiantown3: 'Abrir la ventana del Pueblo Indio Waupee y centrarla en el mapa',
openmarket: 'Abrir Mercado',
forum: 'Abrir el foro de la ciudad',
newsets: 'Nuevos conjuntos añadidos al script',
chooseItems: 'Elegir los artículos',
remindHover: 'Recibir una notificación cuando un artículo puede volverse a usar. Aquí puedes elegir estos artículos.',
remindReady: 'Listo para recoger',
skipHover: 'Omitir los mensajes de confirmación y resultado cuando abres algunas bolsas. Aquí puedes elegir estas bolsas',
skipDone: 'Obtienes',
info: 'Información',
contact: 'Contacto',
chooseLang: 'Elige idioma',
features: 'Funciones',
name: 'Nombre',
author: 'Autor',
version: 'Versión',
gameversion: 'Versión Juego',
website: 'Web',
weblink: 'Weblink',
save: 'Guardar',
saveMessage: 'Ajustes guardados. Algunos cambios necesitan una actualización de la ventana de juego.',
setbonus2: 'Información acerca de los bonus de conjunto',
frame2: 'Páginas web votos',
choose: 'Haga clic en el sombrero y elegir',
items: 'artículos',
parts: 'partes',
showItems: 'Mostrar los artículos del conjunto en tu bolsa',
noItems: '¡No se han encontrado artículos de este conjunto!',
ownSets: 'Solo conjuntos propios',
switchWeapon: 'Cambiar entre arma de fuego y arma contundente',
selectBonus: 'Seleccionas bonus',
resetB: 'Reiniciar',
body: 'Ropa',
right_arm: 'Armas',
animal: 'Montura y Producto',
rest: 'Otros',
refresh: 'Actualizar',
noFriends: 'Sin Amigos',
reward: 'Recompensa',
allprofessions: 'Todos Oficios',
market1: 'Productos en el Mercado',
market2: 'Todavía hay productos/dinero en el Mercado. ¿Desea recogerlos?',
all: 'Todos',
onlyBids: 'Solo Ofertas',
nothing: 'Ninguno',
worldwide: 'Mundo',
alliance: 'Alianza',
town: 'Ciudad',
level: 'Nivel',
duelLevel: 'Nivel Duelo',
exp: 'Exp',
distance: 'Distancia',
startduel: 'Iniciar Duelo',
centerMap: 'Centrar Mapa',
popup: 'El bonus de habilidad del oponente',
damage: 'Daño',
duelmap: 'Mapa Duelos',
duelradius: 'Radio duelos',
minutes: 'Minutos',
hour: '1 Hora',
hours: 'Horas',
searchOpp: 'Buscar Duelo',
amount: 'Muerto',
not_dead_amount: 'Vivo',
duellevel: 'Niv',
status: 'Estado',
sortBy: 'Ordenar por',
tooLow: 'Nivel de duelo del oponente demasiado bajo',
tooHigh: 'Nivel de duelo del oponente demasiado alto',
ownTown: 'Miembro de tu ciudad',
attackable: 'Mostrar solo jugadores atacables',
logout: 'Cerrar sesión',
accNfin: 'Aceptar & concluir búsqueda',
onWiki: 'Mostrar la búsqueda en la Wiki',
longerName: 'El nombre debe tener más de 2 caracteres',
loading: 'Cargando...',
rename: 'Renombrar',
newName: 'Elige un nuevo nombre de conjunto',
used: 'Usado',
renameWarning: 'Cuando renombre un conjunto, se lo pondrá y se lo quitará de nuevo.<br>¡Puede perder puntos de vida durante el proceso!',
sellItems: '¿Vender artículos al comerciante?',
removeWorkNotis: 'Ocultar todas las notificaciones de trabajo',
compInv: 'Haga clic en "cancelar" para mostrar solo los artículos subastables \n o \n Ingrese otra URL de inventario para comparar',
loginAll1: 'Conectarse a todos los mundos',
loginAll2: 'Cargar todos los mundos activos con un solo click',
custom1: 'Personalizar',
custom2: 'Tu lista de conexión personalizada',
edit: 'Editar',
saveMessage2: 'Grabado con éxito',
},
nl: {
language: 'Dutch (Nederlands)',
ApiGui1: 'Dit script bevat veel mogelijkheden om het dagelijks leven in The West te vergemakkelijken.<br><br>Voor meer informatie: ',
ApiGui2: 'Open script pagina',
FeatLogout: 'Voeg een afmeldknop toe aan de rechterzijde van het scherm',
FeatStatusbar: 'Verwijder het dagelijkse taken icoon',
FeatShowAP: 'Toon je vaardigheidspunten in werkzaamheidsscherm windows',
FeatChangeCity: 'Verwissel de titel en de spelersnaam in het stadhuis',
FeatDuellMap: 'Voeg een duelkaart toe aan de duel tab',
FeatMarkDaily: 'Markeer de dagelijkse inlogbonus op de 5e dag zodat je hem niet mist',
FeatMarketTown: 'Toon stadsnaam in marktscherm',
FeatMarketMessage: 'Krijg een bericht wanneer er voorwerpen of geld beschikbaar zijn om op te halen',
FeatAchievHide: 'Verberg voltooide prestaties in prestatiescherm',
FeatRecipeMarket: 'Verbeter overzicht voor recepten kopen.',
FeatMoveJobs: 'Verschuif de werkzaamheden in de wachtrij een stukje naar links',
FeatBlinkEvents: 'Stop het knipperen van event of circus knop aan linkerkant',
FeatFortTracker: 'Schakel de fortgevecht herinnering uit',
FeatFriendsPop: 'Verberg “uw vriend logt in” pop-ups',
FeatInstantQuest: 'Voltooi de quest direct als aan alle vereisten is gedaan',
FeatQuestWiki: 'Add a link in the quest window to show the quest on the wiki page',
FeatCityTravel: 'Show the travel time to the towns in the blackboard',
FeatBetterSheriff: 'Add a new tab in the sheriff window to see all possible bounties',
FeatChatProfessions: 'Show the crafting profession of the players in the chat list',
FeatQuestBookSearch: 'Search for solved quests in the quest book',
FeatMarketRights: 'Show if market offers are public or only for alliance/town members',
FeatEquipManagerPlus: 'Improve the equipment manager in the inventory',
FeatShortPopups: 'Make the item pop-ups shorter',
FeatHideNotis: 'Add a button to hide the job notifications on the left side',
FeatJobProducts: 'Show in the job pop-up how many products you already have in your inventory',
FeatMapDistance: ' Show the number of miles next to the travel time',
FeatTraderSell: 'Sell multiple items at once to the trader',
FeatTouchControl: 'Enable touch control for map and scrollbar on your mobile',
settings1: 'Instellingen openen',
settings2: 'Instellingen en informatiescherm openen',
ghosttown1: 'Ga naar de Spookstad ',
ghosttown2: 'Open Spookstad',
ghosttown3: 'Open Spookstad en centreer het op de kaart',
indiantown1: 'Ga naar Waupees indianendorp ',
indiantown2: 'Open Waupees indianendorp',
indiantown3: 'Open Waupees indianendorp en centreer het op de kaart',
openmarket: 'Open markt',
forum: 'Open stadsforum',
newsets: 'Nieuwe sets worden toegevoegd aan het script',
chooseItems: 'Choose the items',
remindHover: 'You get a notification when an item can be used again. Here you can choose these items.',
remindReady: 'Ready to collect',
skipHover: 'Skip the confirmation and result messages when you open some bags. Here you can choose these bags',
skipDone: 'You get',
info: 'Informatie',
contact: 'Contact',
chooseLang: 'Kies een taal',
features: 'Features',
name: 'Naam',
author: 'Auteur',
version: 'Versie',
gameversion: 'Spelversies',
website: 'Website',
weblink: 'Link',
save: 'Opslaan',
saveMessage: 'Instellingen toegevoegd. Sommige veranderingen hebben behoefte aan een refresh van het spel venster.',
setbonus2: 'Informatie over de set bonusen',
frame2: 'Nuttige websites',
choose: 'Klik op de hoed en kies',
items: 'Voorwerpen',
parts: 'parts',
showItems: 'Show the set items in your Bag',
noItems: 'No items in your inventory found. Click again with CTRL to show it on TW-Calc.',
ownSets: 'Only own sets',
switchWeapon: 'Switch between firearm and melee weapon',
selectBonus: 'Select bonuses',
resetB: 'Reset',
body: 'Clothing',
right_arm: 'Weapons',
animal: 'Horse & Yield',
rest: 'Other',
buff: 'Buffs',
refresh: 'Verversen',
noFriends: 'Geen vrienden',
reward: 'Beloning',
allprofessions: 'Alle Beroepen',
market1: 'Voorwerpen op de markt',
market2: 'Er zijn voorpen/geld op de markt. Wat wil je eraf halen?',
all: 'Alles',
onlyBids: 'Alleen biedingen',
nothing: 'Niets',
worldwide: 'Worldwide',
alliance: 'Alliance',
town: 'Stad',
level: 'Level',
duelLevel: 'Duel level',
exp: 'Ervaring',
distance: 'Afstand',
startduel: 'Duelleren',
centerMap: 'Centreer kaart',
popup: 'Vaardigheden-Bonus van de tegenstander',
damage: 'Schade',
duelmap: 'Duelkaart',
duelradius: 'Duel radius',
minutes: 'minuten',
hour: '1 uur',
hours: 'uren',
searchOpp: 'Zoek naar tegenstanders',
amount: 'Dead',
not_dead_amount: 'Alive',
duellevel: 'Lvl',
status: 'Status',
sortBy: 'Sort by',
tooLow: 'Too low duelling level of opponent',
tooHigh: 'Too high duelling level of opponent',
ownTown: 'Member of your town',
attackable: 'Show only attackable players',
logout: 'Afmelden',
accNfin: 'Opdracht aannemen & afsluiten',
onWiki: 'Show the quest on the wiki',
longerName: 'Name must be longer than 2 characters',
loading: 'Loading...',
rename: 'Rename',
newName: 'Choose a new set name',
used: 'Used',
renameWarning: 'When you rename a set, you will wear it and undress it again.<br>You may loose health points during the process!',
sellItems: 'Sell items to the trader?',
removeWorkNotis: 'Hide all job notifications',
compInv: 'Click on "cancel" to just show only auctionable items\n or\nEnter other inventory URL to compare',
loginAll1: 'Login all worlds',
loginAll2: 'Laad al uw actieve werelden met één klik',
custom1: 'Custom',
custom2: 'Your custom login list',
edit: 'Edit',
saveMessage2: 'Saved successfully',
},
hu: {
language: 'Hungarian (Magyar)',
ApiGui1: 'Ez a szkript több olyan funkciót tartalmaz ami megkönnyíti a mindennapjaidat a vadnyugaton.<br><br>Több információ: ',
ApiGui2: 'Szkript oldalának megnyitása',
FeatLogout: 'Kilépés gomb a jobb oldalra',
FeatStatusbar: 'Tálca eltüntetése',
FeatShowAP: 'Valódi képességpontok a munkaablakokban',
FeatChangeCity: 'Cím és játékosnév felcserélése a városházánál',
FeatDuellMap: 'Párbajtérkép a párbaj ablakban',
FeatMarkDaily: 'Az 5. napi belépés bónusz bekeretezése, hogy nehogy kihagyd',
FeatMarketTown: 'Városnév megjelenítése a piac ablakban',
FeatMarketMessage: 'Felugró ablak amikor tárgyak vagy pénz felvétele lehetséges az aktuális piacnál',
FeatAchievHide: 'Befejezett események elrejtése az esemény ablakban',
FeatRecipeMarket: 'Receptvásárlás megkönnyítése, rendezése a piacon',
FeatMoveJobs: 'Mozgassa el a munka várólistát kissé balra hogy elférjenek az ikonok',
FeatBlinkEvents: 'Események, eladás és piaci vásár gomb villogás kikapcsolása',
FeatFortTracker: 'Kapcsolja ki az erődharc emlékeztetőt',
FeatFriendsPop: 'Rejtse el a "barátod bejelentkezett" felugró ablakokat',
FeatInstantQuest: 'Befejezni a küldetést, azonnal, ha minden feltétel kész',
FeatQuestWiki: 'Link hozzáadása a kalandablakban, amin elérhető a kaland wikioldala',
FeatCityTravel: 'Távolság a várostól mutatása a hirdetőtáblán',
FeatBetterSheriff: 'Új lap hozzáadása a Seriff ablakban, láthatóvá téve az összes körözöttet',
FeatChatProfessions: 'Mesterségek mutatása a játékosoknál a chat partnerlistánál',
FeatQuestBookSearch: 'Keresés a befejezett kalandoknál a kalandkönyvben',
FeatMarketRights: 'Piaci ajánlatoknál mutatása, hogy bárki számára elérhető vagy csak szövetség/város tagok számára',
FeatEquipManagerPlus: 'Felszerelés kezelő ablak fejlesztése',
FeatShortPopups: 'Tárgy felugró menüjének rövidítése',
FeatHideNotis: 'Bal oldalon lévő munkaértesítéseket eltüntető gomb hozzáadása',
FeatJobProducts: 'Munkáknál felugró menüben mutassa, mennyi terméked van már a felszerelésedben, ami az adott munkánál található',
FeatMapDistance: ' Show the number of miles next to the travel time',
FeatTraderSell: 'Sell multiple items at once to the trader',
FeatTouchControl: 'Enable touch control for map and scrollbar on your mobile',
settings1: 'Beállítások megnyitása',
settings2: 'Beállítások és információk',
ghosttown1: 'Menj el a Szellemvárosba ',
ghosttown2: 'Szellemváros megnyitása',
ghosttown3: 'Szellemváros megnyitása és ráközelítés térképen',
indiantown1: 'Menj Waupee Indián falujába ',
indiantown2: 'Indián falu megnyitása',
indiantown3: 'Indián falu megnyitása és ráközelítés térképen',
openmarket: 'Piac megnyitása',
forum: 'Városfórum megnyitása',
newsets: 'Új szett(ek) lettek hozzáadva a szkripthez',
chooseItems: 'Válasz tárgyat',
remindHover: 'Értesítést kapsz, amint egy tárgy ismét használható. Itt tudod kiválasztani melyik tárgyakról szeretnél értesítést kapni.',
remindReady: 'Begyűjtésre készen áll',
skipHover: 'Táskák nyitásánál megerősítő és jutalom üzenet figyelem kívül hagyása. Itt tudod kiválasztani melyik táska nyitásról ne kapj üzenetet.',
skipDone: 'Ezt kapod',
info: 'Információk',
contact: 'Elérhetőségek',
chooseLang: 'Válasszon nyelvet',
features: 'Funkciók',
name: 'Név',
author: 'Szerző',
version: 'Verzió',
gameversion: 'Játékverzió',
website: 'Weboldal',
weblink: 'Webcím',
save: 'Mentés',
saveMessage: 'Beállítások elmentve. Néhány változás életbe lépéséhez frissítse a játék ablakát.',
setbonus2: 'Információk a szettbónuszokról',
frame2: 'Hasznos weboldalak',
choose: 'Kattints a kalapra a kezdéshez, választáshoz',
items: 'tárgyak',
parts: 'darabok',
showItems: 'Mutassa a szett tárgyakat a felszerelésedben',
noItems: 'Nem található tárgy(ak) a felszerelésedben',
ownSets: 'Csak a megszerzett szettek',
switchWeapon: 'Váltás lőfegyver és ütőfegyver közt',
selectBonus: 'Válasz bónuszt',
resetB: 'Visszaállítás',
body: 'Ruházat',
right_arm: 'Párbajfegyver',
animal: 'Állat',
rest: 'Egyéb',
buff: 'Buffs',
refresh: 'Újratöltés',
noFriends: 'Nincsenek barátok',
reward: 'Díjak',
allprofessions: 'Minden szakma',
market1: 'Áruk a piacon',
market2: 'Vannak Áruk/Pénz ezen a piacon. Mit szeretnél átvenni? ',
all: 'Mindent',
onlyBids: 'Árukat',
nothing: 'Semmit',
worldwide: 'Világ',
alliance: 'Szövetség',
town: 'Város',
level: 'Szint',
duelLevel: 'Párbajszint',
exp: 'Tp',
distance: 'Távolság',
startduel: 'Párbaj kezdése',
centerMap: 'Térkép közepére',
popup: 'Az ellenfél bónusza',
damage: 'Sebzés',
duelmap: 'Párbajtérkép',
duelradius: 'Párbaj sugár',
minutes: 'perc',
hour: '1 óra',
hours: 'óra',
searchOpp: 'Ellenfél keresése',
amount: 'Halva',
not_dead_amount: 'Élve',
duellevel: 'Szint',
status: 'Státusz',
sortBy: 'Rendezés',
tooLow: 'Túl alacsony a párbajszintje az ellenfélnek',
tooHigh: 'Túl magas a párbajszintje az ellenfélnek',
ownTown: 'Városod tagja',
attackable: 'Csak a kihívható ellenfeleket mutassa',
logout: 'Kijelentkezés',
accNfin: 'Kaland elfogadása & lezárása',
onWiki: 'Kaland mutatása a wikin',
longerName: 'Névnek két karakternél hosszabbnak kell lennie',
loading: 'Töltés...',
rename: 'Átnevezés',
newName: 'Válasz új nevet a szettnek',
used: 'Használt',
renameWarning: 'When you rename a set, you will wear it and undress it again.<br>You may loose health points during the process!',
sellItems: 'Sell items to the trader?',
removeWorkNotis: 'Összes munkaértesítés elrejtése',
compInv: 'Kattints a "mégse" gombra hogy csak az árverezhető tárgyakat mutassa\n vagy\nHozzáadd egy másik táska URL címét összehasonlításként',
loginAll1: 'Összes világba bejelentkezés',
loginAll2: 'Betölti az összes aktív világok egyetlen kattintással',
custom1: 'Egyedi',
custom2: 'Egyedi bejelentkezési listád',
edit: 'Szerkesztés',
saveMessage2: 'Sikeres mentés',
},
el: {
language: 'Greek (ελληνικά)',
ApiGui1: 'Αυτό το script περιέχει πολλά χαρακτηριστικά για να απλοποιήσετε την ζωή σας στο The West.<br><br>Περισσότερες πληροφορίες: ',
ApiGui2: 'Ρυθμίσεις του script',
FeatLogout: 'Προσθέστε ένα κουμπί αποσύνδεσης στη δεξιά πλευρά',
FeatStatusbar: 'Αφαιρέστε τη γραμμή εργασιών',
FeatShowAP: 'Εμφάνιση των συνολικών πόντων εργασίας στα παράθυρα εργασίας',
FeatChangeCity: 'Βάλτε τον τίτλο πριν από το όνομα του παίκτη στην καρτέλα του Δημαρχείου',
FeatDuellMap: 'Προσθήκη καρτέλας Duelmap στην καρτέλα μονομαχιών',
FeatMarkDaily: 'Επισημάνετε το καθημερινό μπόνους σύνδεσης την 5η ημέρα για να μην το χάσετε',
FeatMarketTown: 'Εμφάνιση ονόματος πόλης στο παράθυρο της αγοράς',
FeatMarketMessage: 'Εμφάνιση μηνύματος όταν υπάρχουν αντικείμενα ή χρήματα στην αγορά της πόλης που μόλις ταξιδέψατε',
FeatAchievHide: 'Απόκρυψη ολοκληρωμένων επιτευγμάτων στο παράθυρο επιτευγμάτων',
FeatRecipeMarket: 'Βελτιώστε την αγορά συνταγών στην αγορά',
FeatMoveJobs: 'Μετακινήστε την καρτέλα των τρέχουσων εργασιών λίγο προς τα αριστερά',
FeatBlinkEvents: 'Σταματήστε την αναλαμπή των Εκδηλώσεων και του Λούνα Παρκ στην αριστερή πλευρά',
FeatFortTracker: 'Απενεργοποιήστε την υπενθύμιση μάχης οχυρού',
FeatFriendsPop: 'Απόκρυψη αναδυόμενων παραθύρων "Συνδεδεμένοι φίλοι"',
FeatInstantQuest: 'Ολοκληρώστε μια αποστολή αμέσως αν πληρούνται όλες οι απαιτήσεις',
FeatQuestWiki: 'Προσθήκη ενός κουμπιού στις αποστολές για την εμφάνισή τους στην σελίδα "Βοήθειας"',
FeatCityTravel: 'Εμφάνιση του χρόνου ταξιδιού στις πόλεις του μαυροπίνακα',
FeatBetterSheriff: 'Προσθήκη μιας νέας καρτέλας στο παράθυρο του "Σερίφη" για να δείτε όλες τις πιθανές επικυρήξεις',
FeatChatProfessions: 'Προσθήκη του εικονιδίου επαγγέλματος των παικτών στη λίστα συνομιλίας (τσατ)',
FeatQuestBookSearch: 'Αναζήτηση για επιλυμένες αποστολές στο βιβλίο αποστολών',
FeatMarketRights: 'Προσθήκη εικονιδίου για το εάν οι προσφορές της αγοράς είναι δημόσιες ή μόνο για μέλη της συμμαχίας / πόλης',
FeatEquipManagerPlus: 'Βελτιώστε τον υπεύθυνο εξοπλισμού στα αποθέματα',
FeatShortPopups: 'Εμφάνιση μικρότερης περιγραφής αντικειμένων στα αποθέματα',
FeatHideNotis: 'Προσθήκη ενός κουμπιού για την απόκρυψη των ειδοποιήσεων εργασίας στην αριστερή πλευρά',
FeatJobProducts: 'Εμφανίστε στο αναδυόμενο παράθυρο εργασίας πόσα προϊόντα έχετε ήδη στα αποθέματά σας',
FeatMapDistance: 'Εμφάνιση της απόστασης του ταξιδιού σας σε Μίλια',
FeatTraderSell: 'Πώληση πολλαπλών αντικειμένων στον Έμπορο',
FeatTouchControl: 'Enable touch control for map and scrollbar on your mobile',
settings1: 'Ρυθμίσεις',
settings2: 'Ανοίξτε τις ρυθμίσεις και το παράθυρο πληροφοριών',
ghosttown1: 'Προς την Πόλη Φάντασμα ➔ ',
ghosttown2: 'Άνοιγμα της Πόλης Φάντασμα',
ghosttown3: 'Άνοιγμα και κεντράρισμα του χάρτη στην Πόλη Φάντασμα',
indiantown1: 'Προς το Ινδιάνικο χωριό ➔ ',
indiantown2: 'Άνοιγμα του Ινδιάνικου χωριού',
indiantown3: 'Άνοιγμα και κεντράρισμα του χάρτη στο Ινδιάνικο χωριό',
openmarket: 'Άνοιγμα της Αγοράς',
forum: 'Άνοιγμα του Φόρουμ Πόλης',
newsets: 'Νέα Σετ προσθέθηκαν στο script',
chooseItems: 'Επιλέξτε τα αντικείμενα',
remindHover: 'Λαμβάνετε μια ειδοποίηση όταν ένα αντικείμενο μπορεί να χρησιμοποιηθεί ξανά. Εδώ μπορείτε να επιλέξετε αυτά τα αντικείμενα.',
remindReady: 'Έτοιμο για συλλογή',
skipHover: 'Απενεργοποιήστε τα μηνύματα επιβεβαίωσης και τα αποτελέσματα όταν ανοίγετε κάποιες τσάντες. Εδώ μπορείτε να επιλέξετε αυτές τις τσάντες',
skipDone: 'Παίρνετε',
info: 'Πληροφορίες',
contact: 'Επικοινωνία',
chooseLang: 'Επιλογή γλώσσας',
features: 'Χαρακτηριστικά',
name: ' Όνομα παίκτη',
author: 'Συντάκτης',
version: 'Έκδοση',
gameversion: 'Έκδοση παιχνιδιού',
website: 'Ιστοσελίδα',
weblink: 'Σύνδεσμος',
save: 'Αποθήκευση',
saveMessage: 'Οι ρυθμίσεις αποθηκεύτηκαν. Ορισμένες αλλαγές χρειάζονται μια ανανέωση του παραθύρου του παιχνιδιού.',
setbonus2: 'Πληροφορίες σχετικά με τα μπόνους των Σετ',
frame2: 'Χρήσιμες ιστοσελίδες',
choose: 'Κάντε κλικ στο καπέλο για να ξεκινήσετε',
items: 'Αντικείμενα',
parts: 'Τεμάχια',
showItems: 'Εμφάνιση των αντικειμένων που υπάρχουν στα αποθέματά σας',
noItems: 'Δεν βρέθηκαν αντικείμενα στα αποθέματά σας!',
ownSets: 'Δικά σου Σετ',
switchWeapon: 'Εναλλαγή μεταξύ πυροβόλου όπλου και ξίφους όπλου',
selectBonus: 'Επιλέξτε Μπόνους',
resetB: 'Επαναφορά',
body: 'Ένδυση',
right_arm: 'Όπλο μονομαχίας',
animal: 'Άλογο & σέλα',
rest: 'Άλλο',
buff: 'Buffs',
refresh: 'Ανανέωση',
noFriends: 'Δεν υπάρχουν φίλοι',
reward: 'Ανταμοιβή',
allprofessions: 'Όλα τα επαγγέλματα',
market1: 'Αντικείμενα στην Αγορά',
market2: 'Υπάρχουν αντικείμενα / χρήματα σε αυτήν την αγορά. Τι θέλετε να σηκώσετε;',
all: 'Όλα',
onlyBids: 'Μόνο προσφορές',
nothing: 'Τίποτα',
worldwide: 'Οποιονδήποτε',
alliance: 'Συμμαχία',
town: 'Πόλη',
level: 'Επίπεδο',
duelLevel: ' Επίπεδο μονομαχίας ',
exp: ' Εμπειρία ',
distance: ' Απόσταση ',
startduel: ' Μονομαχήστε ',
centerMap: 'Κεντράρισμα στον χάρτη',
popup: 'Το μπόνους δεξιοτήτων των αντιπάλων',
damage: 'Ζημιά',
duelmap: 'Χάρτης μονομαχιών',
duelradius: 'Ακτίνα μονομαχιών',
minutes: 'λεπτά',
hour: '1 ώρα',
hours: 'ώρες',
searchOpp: 'Αναζήτηση για αντιπάλους',
amount: 'Νεκρός/ή',
not_dead_amount: 'Ζωντανός/ή',
duellevel: 'Επίπεδο',
status: 'Κατάσταση',
sortBy: 'Ταξινόμηση κατά',
tooLow: 'Χαμηλό επίπεδο μονομαχίας του αντιπάλου',
tooHigh: 'Υψηλό επίπεδο μονομαχίας του αντιπάλου',
ownTown: 'Μέλος της πόλης σου',
attackable: 'Εμφάνιση μόνο παίκτες που μπορείτε να μονομαχήσετε',
logout: 'Αποσύνδεση',
accNfin: 'Αποδοχή & Ολοκλήρωση αποστολής',
onWiki: 'Εμφάνισε την αποστολή στο Wiki',
longerName: 'Το όνομα πρέπει να είναι μεγαλύτερο από 2 χαρακτήρες',
loading: 'Φόρτωση...',
rename: 'Μετονομασία',
newName: 'Επιλέξτε ένα νέο όνομα Σετ',
used: 'Χρησιμοποιείται',
renameWarning: 'Όταν μετονομάζετε ένα Σετ, θα το φορέσετε και θα το ξαναβγάλετε.<br>Μπορεί να χάσετε κάποιους πόντους υγείας κατά τη διάρκεια της διαδικασίας!',
sellItems: 'Πώληση αντικειμένων στον Έμπορο;',
removeWorkNotis: 'Απόκρυψη όλων των ειδοποιήσεων εργασιών',
compInv: 'Κάντε κλικ στην επιλογή "ακύρωση" για να προβάλλετε μόνο αντικείμενα που μπορούν να πουληθούν με πλειστηριασμό\n ή\nΠροσθέστε άλλη διεύθυνση URL αποθέματος για σύγκριση',
loginAll1: 'Είσοδος σε όλους',
loginAll2: 'Φορτώστε όλους τους ενεργούς κόσμους σας με ένα κλικ',
custom1: 'Προσαρμοσμένο',
custom2: 'Η προσαρμοσμένη λίστα σας σύνδεσης',
edit: 'Επεξεργασία',
saveMessage2: 'Αποθηκεύτηκε με επιτυχία',
},
pt: {
language: 'Portuguese (português)',
ApiGui1: 'Esse script foi feito para facilitar sua vida no Velho Oeste: ',
ApiGui2: 'Abrir página do Script',
FeatLogout: 'Adicionar botão de sair no fim dos scripts',
FeatStatusbar: 'Remover a barra de tarefas',
FeatShowAP: 'Mostrar seus pontos de habilidade na janela de trabalho.',
FeatChangeCity: 'Mude o título e nome do jogador na cidade.',
FeatDuellMap: 'Adicionar mapa de duelos na janela duelos.',
FeatMarkDaily: 'Destacar bônus de login diário.',
FeatMarketTown: 'Mostrar nome da cidade no mercado.',
FeatMarketMessage: 'Receber notificação de itens comprados ou vendidos no mercado atual.',
FeatAchievHide: 'Ocultar conquistas realizadas na janela de conquistas.',
FeatRecipeMarket: 'Melhorar a compra de receitas no mercado.',
FeatMoveJobs: 'Mover os trabalhos enfileirados a esquerda.',
FeatBlinkEvents: 'Não piscar botões de evento ao lado esquerdo.',
FeatFortTracker: 'Ocultar botão da batalha de forte.',
FeatFriendsPop: 'Ocultar janela de amigos online.',
FeatInstantQuest: 'Completar aventura instantâneamente quando tiver os requisitos.',
FeatQuestWiki: 'Adicionar link para abrir a aventura no wiki.',
FeatCityTravel: 'MOstrar o tempo de distância nas cidades do quadro.',
FeatBetterSheriff: 'Adicionar aba no Xerife para ver todas as recompensas possíveis.',
FeatChatProfessions: 'MOstrar a profissão dos jogadores na lista do chat.',
FeatQuestBookSearch: 'Pesquisar por aventuras resolvidas no livro de aventuras',
FeatMarketRights: 'Diferenciar itens no mercado entre cidade, aliança, e público.',
FeatEquipManagerPlus: 'Mostre o gerenciamento de equipamento no inventário.',
FeatShortPopups: 'Tornar janelas pop-up mais curtas.',
FeatHideNotis: 'Adicionar botão para ocultar as notificações do trabalho ao lado esquerdo.',
FeatJobProducts: 'Mostrar na janela de trabalho quantos produtos você já tem no inventário.',
FeatMapDistance: ' Mostrar o número de milhas ao lado do tempo de viagem.',
FeatTraderSell: 'Vender vários itens de uma só vez ao comerciante.',
FeatTouchControl: 'Enable touch control for map and scrollbar on your mobile',
settings1: 'Configurações',
settings2: 'Configurações e Janela de Informações',
ghosttown1: 'Ir para Cidade Fantasma ',
ghosttown2: 'Abrir Cidade Fantasma',
ghosttown3: 'Abrir Cidade Fantasma e Centralizar no Mapa',
indiantown1: 'Ir para Vila Indígena ',
indiantown2: 'Abrir Vila Ingígena',
indiantown3: 'Abrir Vila Indígena e Centralizar no Mapa',
openmarket: 'Mercado',
forum: 'Fórum da Cidade',
newsets: 'Novos Sets Adicionados ao Script',
chooseItems: 'Escolha os Itens',
remindHover: 'Receber notificação quando um item puder ser usado novamente.',
remindReady: 'Pronto para recolher.',
skipHover: 'Pular janelas de confirmação ao abrir algumas caixas e itens.',
skipDone: 'Você ganhou:',
info: 'Informação',
contact: 'Contato:',
chooseLang: 'Escolher Idioma',
features: 'Características',
name: 'Nome',
author: 'Autor',
version: 'Versão',
gameversion: 'Versão do Game',
website: 'Website',
weblink: 'Weblink',
save: 'Salvar',
saveMessage: 'Configurações salvas. Algumas mudanças só apareceram quando atualizar a janela.',
setbonus2: 'Informações sobre o bônus do set',
frame2: 'Páginas da Web Úteis',
choose: 'Clique no Chapéu para começar.',
items: 'Itens',
parts: 'Partes',
showItems: 'Mostrar os itens definidos no seu saco.',
noItems: 'Nenhum item no seu inventário foi encontrado. Clique novamente com a tecla CTRL para mostrar no TW-Calc.',
ownSets: 'Apenas possui conjuntos.',
switchWeapon: 'Alternar entre arma de fogo e arma de vigor.',
selectBonus: 'Selecionar bônus',
resetB: 'Resetar',
body: 'Roupas',
right_arm: 'Armas',
animal: 'Cavalo & Sela',
rest: 'Outros',
buff: 'Buffs',
refresh: 'Atualizar',
noFriends: 'Sem Amigos',
reward: 'Recompensa',
allprofessions: 'Todas as Profissões',
market1: 'Itens no Mercado',
market2: 'Há itens e dinheiro no mercado, o que você quer recolher?',
all: 'Os dois',
onlyBids: 'Apenas Lance',
nothing: 'Nada',
worldwide: 'No mundo todo',
alliance: 'Aliança',
town: 'Cidade',
level: 'Nível',
duelLevel: 'Nivel de Duelo',
exp: 'Experiência',
distance: 'Distância',
startduel: 'Desafiar num Duelo',
centerMap: 'Centralizar Mapa',
popup: 'Bônus de Habilidade do Oponente',
damage: 'Danificar',
duelmap: 'Mapa de Duelo',
duelradius: 'Raio de Duelo',
minutes: 'Minutos',
hour: '1 hora',
hours: 'horas',
searchOpp: 'Pesquisar Oponentes',
amount: 'Morto',
not_dead_amount: 'Vivo',
duellevel: 'Nível',
status: 'Status',
sortBy: 'Ordenar por:',
tooLow: 'Nível de duelo muito baixo.',
tooHigh: 'Nível de duelo muito alto',
ownTown: 'Membro da sua Cidade',
attackable: 'Mostrar apenas jogadores atacáveis',
logout: 'Sair',
accNfin: 'Aceitar e completar quest.',
onWiki: 'Abrir quest na janela wi-ki',
longerName: 'O nome deve ter mais de 2 caracteres.',
loading: 'Carregando...',
rename: 'Renomear',
newName: 'Escolha um novo nome de conjunto',
used: 'Usado',
renameWarning: 'Quando você renomeia um conjunto, você vai usá-lo e despir-lo novamente.<br>Você pode perder pontos de saúde durante o processo!',
sellItems: 'Vender itens para o comerciante?',
removeWorkNotis: 'Ocultar todas as notificações de Jobs',
compInv: 'Clique em "cancelar" para mostrar apenas itens leiloáveis\n ou\nIntroduza outro URL de inventário para comparar',
loginAll1: 'Login em todos os mundos',
loginAll2: 'Carregue todos os seus mundos ativos em um clique',
custom1: 'Personalizado',
custom2: 'Sua lista de login persnalizada',
edit: 'Editar',
saveMessage2: 'Salvo com sucesso!',
},
it: {
language: 'Italian (italiano)',
ApiGui1: 'Questo script raccoglie molte funzionalità utili a semplificarti la vita in The West.<br><br>Ulteriori informazioni: ',
ApiGui2: 'Apri la pagina dello script',
FeatLogout: 'Aggiungi sul lato destro dello schermo un pulsante disconnetti',
FeatStatusbar: 'Nascondi la barra degli incarichi',
FeatShowAP: 'Mostra i tuoi attuali punti abilità nelle finestre dei lavori',
FeatChangeCity: 'Nel municipio, inverti il titolo e il nome del giocatore',
FeatDuellMap: 'Aggiungi la scheda Mappa duelli nella finestra Duelli',
FeatMarkDaily: 'Evidenzia il bonus login del 5° giorno per non dimenticarlo',
FeatMarketTown: 'Mostra il nome della città nella finestra del mercato',
FeatMarketMessage: 'Ricevi una notifica quando ci sono oggetti o soldi da ritirare al mercato della città dove ti trovi in quel momento',
FeatAchievHide: 'Nascondi i Successi completati nella rispettiva finestra di gioco',
FeatRecipeMarket: 'Migliora l\'organizzazione delle ricette al mercato',
FeatMoveJobs: 'Sposta la coda dei lavori leggermente più a sinistra',
FeatBlinkEvents: 'Termina il lampeggiamento delle icone degli eventi e della fiera nella barra delle notifiche',
FeatFortTracker: 'Disattiva l\'icona di notifica della battaglia al forte',
FeatFriendsPop: 'Nascondi i pop-up "Amico online"',
FeatInstantQuest: 'Se tutti i requisiti sono soddisfatti, permetti di concludere le missioni istantaneamente',
FeatQuestWiki: 'Aggiungi un link alla wiki italiana (ove disponibile) nelle finestre delle missioni',
FeatCityTravel: 'Mostra la distanza verso le città nella lavagna',
FeatBetterSheriff: 'Aggiungi una nuova scheda nella finestra dello sceriffo per vedere tutte le possibili taglie',
FeatChatProfessions: 'Mostra la professione a fianco del nome dei giocatori nella lista della chat',
FeatQuestBookSearch: 'Aggiungi una casella di ricerca nella scheda "Completate" del libro missioni',
FeatMarketRights: 'Mostra se le offerte del mercato sono pubbliche oppure per alleati\concittadini',
FeatEquipManagerPlus: 'Migliora la finestra "Gestione equipaggiamento" nell\'inventario',
FeatShortPopups: 'Rendi i tooltip degli oggetti più corti',
FeatHideNotis: 'Aggiungi un pulsante per nascondere le notifiche dei lavori nella relativa barra',
FeatJobProducts: 'Nel tooltip dei prodotti mostra quanti se ne possiede in inventario',
FeatMapDistance: 'Mostra la distanza in miglia accanto al tempo di viaggio',
FeatTraderSell: 'Consenti di vendere oggetti in quantità multipla ai negozi\mercante ambulante',
FeatTouchControl: 'Abilità il controllo touch nel browser mobile',
settings1: 'Apri le impostazioni',
settings2: 'Apri le impostazioni e la finestra di informazioni',
ghosttown1: 'Vai alla Città fantasma',
ghosttown2: 'Apri la Città Fantasma',
ghosttown3: 'Apri la Città Fantasma e centra la mappa',
indiantown1: 'Vai al Villaggio Indiano',
indiantown2: 'Apri il Villaggio Indiano',
indiantown3: 'Apri il Villaggio Indiano e centra la mappa',
openmarket: 'Apri il mercato',
forum: 'Apri il forum città',
newsets: 'Nuovi set sono stati aggiunti allo script',
chooseItems: 'Scegli gli oggetti',
remindHover: 'Ricevi una notifica quando un oggetto può essere di nuovo utilizzato. Scegli qui gli oggetti di interesse.',
remindReady: 'Pronto per essere collezionato',
skipHover: 'Salta i messaggi di conferma e risultato quando apri alcuni oggetti. Scegli qui gli oggetti di interesse',
skipDone: 'Ottieni',
info: 'Informazioni',
contact: 'Contatti',
chooseLang: 'Scegli lingua',
features: 'Caratteristiche',
name: 'Nome',
author: 'Autore',
version: 'Versione',
gameversion: 'Versione di gioco',
website: 'Sito internet',
weblink: 'Link al sito',
save: 'Salva',
saveMessage: 'Impostazioni salvate. Aggiorna la pagina per renderle effettive.',
setbonus2: 'Informazioni sui bonus set',
frame2: 'Pagine internet di aiuto',
choose: 'Clicca sul cappello per iniziare',
items: 'oggetti',
parts: 'parti',
showItems: 'Mostra i set oggetti nel tuo inventario',
noItems: 'Nessun oggetto trovato nel tuo inventario. Cliccaci nuovamente tenendo premuto CTRL per mostrarlo su TW-Calc.',
ownSets: 'Solo propri set',
switchWeapon: 'Inverti armi da fuoco e da contusione',
selectBonus: 'Scegli i bonus',
resetB: 'Reset',
body: 'Abiti',
right_arm: 'Armi',
animal: 'Cavallo e oggetto',
rest: 'Altro',
buff: 'Buffs',
refresh: 'Aggiorna',
noFriends: 'Nessun amico',
reward: 'Ricompensa',
allprofessions: 'Tutte le professioni',
market1: 'Oggetti al mercato',
market2: 'Ci sono oggetti/soldi da ritirare in questo mercato. Vuoi farlo?',
all: 'Tutto',
onlyBids: 'Solo aste',
nothing: 'Niente',
worldwide: 'Mondiale',
alliance: 'Alleanza',
town: 'Città',
level: 'Livello',
duelLevel: 'Livello duello',
exp: 'Esperienza',
distance: 'Distanza',
startduel: 'Inizia duello',
centerMap: 'Centra mappa',
popup: 'Abilità bonus dell\'avversario',
damage: 'Danno',
duelmap: 'Mappa duelli',
duelradius: 'Raggio duelli',
minutes: 'minuti',
hour: '1 ora',
hours: 'ore',
searchOpp: 'Cerca avversari',
amount: 'Morto',
not_dead_amount: 'Vivo',
duellevel: 'Liv',
status: 'Stato',
sortBy: 'Ordina per',
tooLow: 'Livello duello avversario troppo basso',
tooHigh: 'Livello duello avversario troppo alto',
ownTown: 'Membro della tua città',
attackable: 'Mostra solo i giocatori duellabili',
logout: 'Disconneti',
accNfin: 'Accetta e completa missione',
onWiki: 'Mostra la missione nella Wiki',
longerName: 'Il nome deve essere più lungo di 2 caratteri',
loading: 'Caricamento...',
rename: 'Rinomina',
newName: 'Scegli un nuovo nome set',
used: 'Usato',
renameWarning: 'Quando rinomini un set lo indosserai e svestirai di nuovo.<br>In questo processo potresti perdere dei punti vita!',
sellItems: 'Vuoi vendere questi oggetti?',
removeWorkNotis: 'Nascondi tutte le notifiche dei lavori',
compInv: 'Clicca su "cancella" per mostrare solo gli oggetti vendibili all\'asta\n oppure\nInserisci altro URL di inventari per confrontare',
loginAll1: 'Fai login in tutti i mondi',
loginAll2: 'Carica tutti i mondi in cui sei attivo con un clic',
custom1: 'Personalizza',
custom2: 'La tua lista login personalizzata',
edit: 'Modifica',
saveMessage2: 'Salvato con successo',
},
},
Images: function (img, file) {
return 'https://tomrobert.safe-ws.de/' + img + (file ? '.jpg' : '.png');
},
};
if (location.href.includes('game.php')) {
LT = {
name: 'TWLeoTools',
author: 'Leotas (updated by Tom Robert)',
minGame: '2.04',
maxGame: Game.version.toString(),
website: 'https://greasyfork.org/scripts/7238',
SPEC: [
'speed', 'luck', 'dollar', 'experience', 'regen', 'drop',
],
list: null,
currSetBonus: 0,
currBonusSearch: '',
lvlToggle: 0,
setAbc: false,
onlyOwnSets: false,
chooseBonus: {
subWeapon: 'hand'
},
Data: {},
loaded: [],
Features: {
Logout: false,
Statusbar: false,
ShowAP: false,
ChangeCity: false,
DuellMap: true,
MarkDaily: true,
MarketMessage: true,
MarketTown: true,
AchievHide: true,
RecipeMarket: true,
MoveJobs: true,
BlinkEvents: false,
FortTracker: false,
FriendsPop: false,
InstantQuest: true,
QuestWiki: true,
CityTravel: true,
BetterSheriff: true,
ChatProfessions: true,
QuestBookSearch: true,
MarketRights: true,
EquipManagerPlus: true,
ShortPopups: true,
HideNotis: true,
JobProducts: true,
MapDistance: true,
TraderSell: true,
TouchControl: true,
},
cooldown: {
2482: 1,
2484: 1,
2485: 1,
2557: 1,
2558: 1,
2665: 1,
2666: 1,
2698: 1,
50691: 1,
51482: 1,
51483: 1,
},
cooldownTimer: {},
cooldownSetTime: function (y, res, sec) {
LT.cooldownTimer[y] = setTimeout(function () {
var imgs = $('<span></span>');
for (var z = 0; z < res.length; z++) {
var itemDiv = new tw2widget.JobItem(res[z].obj).getMainDiv();
imgs.append(itemDiv);
}
var cooldownMsg = new west.gui.Dialog(LTlang.remindReady, imgs, 'ok').addButton('ok', function () {
Wear.open();
Inventory.showSearchResult(res);
cooldownMsg.hide();
LT.cooldownTimer[y] = 0;
}).addButton('cancel').show();
}, sec);
},
skipOpen: {
1975: 1,
2561: 0.5,
2562: 0.5,
2675: 0.5,
},
addStyle: function (css) {
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
document.body.appendChild(style);
},
updateLang: function () {
var lg = LTstart.langs;
LT.lang = lg[localStorage.getItem('scriptsLang')] ? localStorage.getItem('scriptsLang') : lg[Game.locale.substr(0, 2)] ? Game.locale.substr(0, 2) : 'en';
LTlang = lg[LT.lang];
},
};
LT.updateLang();
LT.Skript = {
init: function () {
TheWestApi.register('LeoTools', LT.name, LT.minGame, LT.maxGame, LT.author, LT.website).setGui('<br>' + LTlang.ApiGui1 + '<a href="javascript:LT.GUI.open(\'openKontakt\');LT.GUI.makeList();" title="' + LTlang.ApiGui2 + '">' + LTlang.ApiGui2 + '</a><br><br><i>' + LT.name + ' v' + LTstart.version + '</i>');
var menuContainer = $('<div id="LT-menu" class="menulink" onclick="LT.GUI.openSelectbox();" title="' + LT.name + '" />').css('background-image', 'url(' + LTstart.Images('LT_settings') + ')').css('background-position', '0px 0px').mouseenter(function () {
$(this).css('background-position', '-25px 0px');
}).mouseleave(function () {
$(this).css('background-position', '0px 0px');
});
$('#ui_menubar').append($('<div class="ui_menucontainer" />').append(menuContainer).append('<div class="menucontainer_bottom" />'));
LT.Skript.updateFeat();
LT.SkipOpen();
},
updateFeat: function () {
var saved = localStorage.getItem('TWLT');
LT.Data = saved && saved.indexOf('{') === 0 && JSON.parse(saved) || {};
for (var k in LT.Features) {
if (LT.Skript.getFeature(k) && !LT.loaded.includes(k)) {
try {
LT.loaded.push(k);
LT[k].init();
} catch (e) {}
}
}
LT.CollectReminder();
},
getFeature: function (name) {
return (LT.Data[name] !== undefined) ? LT.Data[name] : LT.Features[name];
},
};
Map.getLastQueuePosition = function () {
var posx = Character.position.x;
var posy = Character.position.y;
if (TaskQueue.queue.length >= 1) {
var data = TaskQueue.queue[TaskQueue.queue.length - 1].wayData;
if (data.x) {
posx = data.x;
posy = data.y;
}
}
return {
x: posx,
y: posy
};
};
var EvName = Object.keys(Game.sesData)[0],
set1 = west.storage.ItemSetManager._setList;
if (EvName)
var sendGift = Game.sesData[EvName].friendsbar;
LT.GUI = {
openSelectbox: function () {
LT.GUI.makeList();
var selectbox = new west.gui.Selectbox();
$(selectbox.getMainDiv()).append('<div class="LTselbox"/>');
selectbox.setHeader(LT.name);
selectbox.setWidth(300);
selectbox.addItem(0, LTlang.settings1, LTlang.settings2);
selectbox.addItem(1, 'SetBonus', LTlang.setbonus2);
selectbox.addItem(2, 'BonusSearch', LTlang.setbonus2);
selectbox.addItem(3, 'WebCenter', LTlang.frame2);
selectbox.addItem(4, LTlang.ghosttown1 + Map.calcWayTime(Map.getLastQueuePosition(), {
x: 1728,
y: 2081
}).formatDuration(), LTlang.ghosttown1);
selectbox.addItem(5, LTlang.ghosttown2, LTlang.ghosttown3);
selectbox.addItem(6, LTlang.indiantown1 + Map.calcWayTime(Map.getLastQueuePosition(), {
x: 28002,
y: 16658
}).formatDuration(), LTlang.indiantown1);
selectbox.addItem(7, LTlang.indiantown2, LTlang.indiantown3);
selectbox.addItem(8, LTlang.openmarket, LTlang.openmarket);
selectbox.addItem(9, LTlang.forum, LTlang.forum);
if (EvName) {
selectbox.addItem(10, '<div style="text-overflow:ellipsis; white-space:nowrap; overflow:hidden;"><b>' + sendGift.label + '</b></div>', sendGift.label);
}
selectbox.addListener(function (e) {
switch (e) {
case 0:
LT.GUI.open('openFeatures');
break;
case 1:
LT.GUI.open('openSetsWindow', 0, 'SetBonus');
break;
case 2:
LT.GUI.open('openSetsWindow', 0, 'BonusSearch');
break;
case 3:
LT.GUI.open('openFrame');
break;
case 4:
QuestEmployerWindow.startWalk({
key: 'ghosttown',
x: '1728',
y: '2081'
});
break;
case 5:
Map.center(1728, 2081);
QuestEmployerWindow.showEmployer('ghosttown', '1728', '2081');
break;
case 6:
QuestEmployerWindow.startWalk({
key: 'indianvillage',
x: '28002',
y: '16658'
});
break;
case 7:
Map.center(28002, 16658);
QuestEmployerWindow.showEmployer('indianvillage', '28002', '16658');
break;
case 8:
MarketWindow.open(Character.homeTown.town_id);
break;
case 9:
ForumWindow.open();
break;
case 10:
LT.GUI.open('openSender');
break;
}
});
var pos = $('div#LT-menu').offset();
pos = {
clientX: pos.left,
clientY: pos.top
};
selectbox.show(pos);
},
window: {},
checkbox: {},
open: function (tab, data, id) {
LT.GUI.window = wman.open('LT', 'TheWest - LeoTools', 'noreload').setMiniTitle(LT.name).setMaxSize(1268, 838).addTab(LTlang.info + ' & ' + LTlang.contact, 'LTContact', LT.GUI.openKontakt).addTab(LTlang.features, 'LTFeatures', LT.GUI.openFeatures).addTab('SetBonus', 'SetBonus', LT.GUI.openSetsWindow).addTab('BonusSearch', 'BonusSearch', LT.GUI.openSetsWindow).addTab('WebCenter', 'LTFrame', LT.GUI.openFrame);
if (EvName)
LT.GUI.window.addTab('Event', 'LTSender', LT.GUI.openSender);
LT.GUI[tab](data, id);
$('.tw2gui_window_inset', LT.GUI.window.getMainDiv()).css('background-image', 'url(' + LTstart.Images('LT_backGr', 1) + ')');
},
getDefault: function (tab) {
LT.GUI.window.setResizeable(false).setSize(748, 471).clearContentPane().removeClass('nocloseall').setTitle('TheWest - LeoTools');
LT.GUI.window.dontCloseAll = false;
$(LT.GUI.window.getContentPane()).css('margin-top', '0px');
var wnd = LT.GUI.window.getMainDiv();
$('.textart_title', wnd).css('display', '');
LT.GUI.window.activateTab(tab);
},
openKontakt: function () {
LT.GUI.getDefault('LTContact');
var fmfb = function (l) {
return 'https://forum.the-west.' + l + '/index.php?conversations/add&to=Tom Robert';
},
content = $('<br><h1>' + LTlang.info + '</h1><ul style="list-style-type:none;line-height:18px;margin-left:5px;"><li><b>' + LTlang.name + ': </b>' + LT.name + '</li><li><b>' + LTlang.author + ': </b>' + LT.author + '</li><li><b>' + LTlang.version + ': </b>' + LTstart.version + '</li><li><b>' + LTlang.gameversion + ': </b>' + LT.minGame + ' - ' + LT.maxGame + '</li><li><b>' + LTlang.website + ': </b>' + '<a href="' + LT.website + '" target="_blank">' + LTlang.weblink + '</a></li></ul>' +
'<br><h1>' + LTlang.contact + '</h1><ul style="margin-left:15px;line-height:18px;"><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>' +
'<li>Contact me on <a target=\'_blanck\' href="https://greasyfork.org/forum/messages/add/Tom Robert">Greasy Fork</a></li>' +
'<li>Message me on one of these The West Forum:<br>/ <a target=\'_blanck\' href="' + fmfb('de') + '">deutsches Forum</a> / ' +
'<a target=\'_blanck\' href="' + fmfb('net') + '">English forum</a> / <a target=\'_blanck\' href="' + fmfb('pl') + '">forum polski</a> / ' +
'<a target=\'_blanck\' href="' + fmfb('es') + '">foro español</a> /<br>/ <a target=\'_blanck\' href="' + fmfb('ru') + '">Русский форум</a> / ' +
'<a target=\'_blanck\' href="' + fmfb('fr') + '">forum français</a> / <a target=\'_blanck\' href="' + fmfb('it') + '">forum italiano</a> / ' +
'<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>');
LT.GUI.window.appendToContentPane(content);
},
openFeatures: function () {
LT.GUI.getDefault('LTFeatures');
var featScroll = new west.gui.Scrollpane().appendContent('<h2>' + LTlang.chooseLang + '</h2>'),
langBox = new west.gui.Combobox().appendTo(featScroll.getContentPane());
for (var j in LTstart.langs)
langBox.addItem(j, LTstart.langs[j].language);
langBox.select(LT.lang);
LT.cdTemp = LT.Data.cooldown ? $.extend({}, LT.Data.cooldown) : $.extend({}, LT.cooldown);
$('<span title="' + LTlang.remindHover + '" style="background-image: url(images/items/yield/low_heart_container.png); cursor: pointer; position: absolute; height: 73px; width: 73px; right: 0px; top: 0px;"/>').appendTo(featScroll.getContentPane()).click(function () {
var cont = $('<span>');
for (var x in LT.cooldown) {
var productDiv = new tw2widget.JobItem(ItemManager.getByBaseId(x)).getMainDiv();
$(productDiv).css('opacity', LT.cdTemp[x] || LT.cooldown[x]).attr('onclick', 'LT.cdTemp[' + x + ']=$(this).css("opacity")==1?0.5:1;$(this).css("opacity",LT.cdTemp[' + x + ']);');
cont.append(productDiv);
}
new west.gui.Dialog(LTlang.chooseItems, cont).addButton('ok').show();
});
LT.skipTemp = LT.Data.skipOpen ? $.extend({}, LT.Data.skipOpen) : $.extend({}, LT.skipOpen);
var openSkipList = function () {
var cont2 = $('<span></span>');
for (var x in LT.skipTemp) {
var productDiv2 = new tw2widget.JobItem(ItemManager.getByBaseId(x)).getMainDiv(),
productDel = new west.gui.Icon('abort ' + x).getMainDiv().click(function (e) {
e.stopPropagation();
e.target.parentElement.remove();
delete LT.skipTemp[e.target.classList[2]];
});
$(productDel).css({
'display': 'inline-block',
'position': 'absolute',
'right': '0px'
});
$(productDiv2).css('opacity', LT.skipTemp[x]).attr('onclick', 'LT.skipTemp[' + x + ']=$(this).css("opacity")==1?0.5:1;$(this).css("opacity",LT.skipTemp[' + x + ']);').append(productDel);
cont2.append(productDiv2);
}
var itemPrew = $('<div id="LT_add_chest_prew" style="height:73px;width:73px;border:1px solid;border-radius:10px;float:left"/><br>');
var textFP = new west.gui.Textfield('add_skipOpen_chest').maxlength(6).setPlaceholder('item_base_id').addKeyUpListener(function (e) {
$('#LT_add_chest_prew').empty();
iconP.disable();
var val = e.target.value;
if (!isNaN(val) && val < forbid.maxID) {
var item = ItemManager.getByBaseId(val);
if (item) {
$('#LT_add_chest_prew').append(new tw2widget.JobItem(item).getMainDiv());
if (item.usebonus && item.usebonus.length == 1 && item.action.split(',')[2] == "'yield');" && !LT.skipTemp[val])
iconP.enable();
}
}
}),
iconP = new west.gui.Iconbutton(new west.gui.Icon('plus'), function () {
LT.skipTemp[textFP.getValue()] = 1;
skipList.hide();
openSkipList();
}).disable(),
iconA = new west.gui.Icon('abort').getMainDiv().click(function () {
textFP.setValue('');
$('#LT_add_chest_prew').empty();
iconP.disable();
});
cont2.append(itemPrew, textFP.getMainDiv(), iconP.getMainDiv(), iconA);
var skipList = new west.gui.Dialog(LTlang.chooseItems, cont2).setBlockGame(false).setDraggable(true).addButton('ok').show();
};
$('<span title="' + LTlang.skipHover + '" style="background-image: url(images/items/yield/productchest_1.png); cursor: pointer; position: absolute; height: 73px; width: 73px; right: 0px; top: 73px;"/>').appendTo(featScroll.getContentPane()).click(openSkipList);
featScroll.appendContent('<br><br><h2>' + LTlang.features + '</h2>');
for (var k in LT.Features) {
LT.GUI.checkbox[k] = new west.gui.Checkbox().setLabel(LTlang['Feat' + k]).setSelected(LT.Skript.getFeature(k)).appendTo(featScroll.getContentPane());
featScroll.appendContent('<br><div style="height:5px;" />');
}
featScroll.appendContent('<br>');
$(featScroll.getMainDiv()).css({
'height': '330px',
'margin-top': '10px'
});
var button = new west.gui.Button(LTlang.save, function () {
localStorage.setItem('scriptsLang', langBox.getValue());
LT.updateLang();
for (var k in LT.GUI.checkbox)
LT.Data[k] = LT.GUI.checkbox[k].isSelected();
LT.Data.cooldown = LT.cdTemp;
LT.Data.skipOpen = LT.skipTemp;
localStorage.setItem('TWLT', JSON.stringify(LT.Data));
LT.Skript.updateFeat();
new UserMessage(LTlang.saveMessage, 'success').show();
});
$(LT.GUI.window.getContentPane()).append(featScroll.getMainDiv()).append(button.getMainDiv());
},
makeList: function () {
if (!LT.list)
$.getScript('https://tomrobert.safe-ws.de/forbidN.js').done(function () {
LT.list = west.storage.ItemSetManager._setArray.slice(0);
LT.setListAll = {};
LT.setListOwn = {};
LT.itemListAll = {};
LT.itemListOwn = {};
var slot = {
2: ['animal', 'yield'],
3: ['right_arm', 'left_arm'],
6: ['body', 'pants', 'neck', 'head', 'foot', 'belt']
};
var i = LT.list.length;
while (i--) {
var si = LT.list[i];
if (!forbid.sets.includes(si.key) && si.items[0] && !ItemManager.getByBaseId(si.items[0]).short.includes('friendset_') && !si.key.includes('friendship_set_'))
LT.setListAll[si.key] = si;
else
LT.list.splice(i, 1);
}
LT.setLength = Object.keys(LT.setListAll).length;
for (var j in LT.setListAll) {
var sa = LT.setListAll[j];
//sa.items.sort((a, b) => a - b);
var sil = sa.items.length;
sa.slots = slot[sil] && slot[sil].includes(ItemManager.getByBaseId(sa.items[1]).type) ? slot[sil][0] : 'rest';
var items = sa.getAvailableItems();
if (items.length) {
var bon = {},
oneType = [];
for (var o = 0; o < items.length; o++) {
var igt = ItemManager.get(items[o]);
items[o] = igt.item_base_id;
if (sa.bonus[o + 1] && !oneType.includes(igt.type))
bon[o + 1] = sa.bonus[o + 1];
oneType.push(igt.type);
}
LT.setListOwn[j] = {
items: items.reverse(),
bonus: bon,
name: sa.name,
slots: sa.slots,
};
}
}
var replUml = function (str) {
return str.toUpperCase().replace(/"/g, '').replace(/Á/g, 'A').replace(/É/g, 'E').replace(/Ő/g, 'O').replace(/Ú|Ü|Ű/g, 'U').replace(/Ś/g, 'S');
};
LT.list.sort(function (a, b) {
var a1 = replUml(a.name),
b1 = replUml(b.name);
return (a1 == b1) ? 0 : (a1 > b1) ? 1 : -1;
});
var buffDesc = function (umt) {
return umt.match(/[^%-:]+/)[0].trim();
},
useboni = {},
ammobelt = 2741,
ghostmusic = 2732,
lantern = 2734,
moneyboost = 2468,
ratatou = 51127,
cocktail = 51579,
getBuff = function (itm, num) {
return buffDesc(ItemManager.getByBaseId(itm).usebonus[num]);
};
useboni[getBuff(ammobelt, 2)] = 'offense';
useboni[getBuff(ammobelt, 1)] = 'defense';
useboni[getBuff(ghostmusic, 0)] = 'experience';
useboni[getBuff(moneyboost, 0)] = 'dollar';
useboni[getBuff(ratatou, 0)] = 'luck';
useboni[getBuff(ratatou, 1)] = 'drop';
useboni[getBuff(ghostmusic, 1)] = 'joball';
useboni[getBuff(lantern, 0)] = 'speed';
useboni[getBuff(cocktail, 0)] = 'regen';
for (var kn in CharacterSkills.keyNames)
useboni[CharacterSkills.keyNames[kn]] = kn;
var addItems = function (obj, state) {
var ob = obj.bonus,
boni = {
1: ob.item.slice()
},
slot = 'item';
if (obj.usebonus) {
slot = 'buff';
for (var oub of obj.usebonus) {
if (!oub)
continue;
var desc = buffDesc(oub);
if (useboni[desc])
boni[1].push({
name: useboni[desc],
value: oub.match(/\d+/)[0],
});
}
} else
for (var cat in ob) {
if (cat == 'item')
continue;
for (var type in ob[cat]) {
var ct = ob[cat][type];
if (ct > 0) {
boni[1].push({
name: type,
value: ct,
isSector: cat == 'fortbattlesector',
leveled: obj.item_level > 0
});
}
}
}
LT['itemList' + state][obj.item_base_id] = {
bonus: boni,
name: obj.name,
slots: slot,
pos: obj.type,
item_level: obj.item_level,
};
};
var allItems = ItemManager.getAll();
for (var k in allItems)
if (k > 9 && k < forbid.maxID && !forbid.IDs.includes(k) && !(allItems[k].set && !LT.setListAll[allItems[k].set]))
addItems(allItems[k], 'All');
for (var l in Bag.items_by_id)
if (!forbid.IDs.includes(k))
addItems(Bag.items_by_id[l].obj, 'Own');
for (var m in Wear.wear)
addItems(Wear.wear[m].obj, 'Own');
var collect = set1.collector_set.bonus[9], //pray
pilg = set1.set_pilgrim_male.bonus[2], //build
lee = set1.set_oktoberfest_2016_1.bonus[6], //offenstrue
hero = set1.independance_event_set7.bonus[2], //drop
delChar = function (list) {
return list.desc.replace(/[0-9]|\+|\.|\%/g, '').substring(1);
};
LT.searchObj = {
offense: [delChar(collect[5]), 'fort/battle/button_attack'],
offensetrue: [delChar(lee[4]), 'fort/battle/help01'],
defense: [delChar(hero[13]), 'fort/battle/button_defend'],
defensetrue: [delChar(collect[6]), 'fort/battle/help02'],
resistance: [delChar(hero[15]), 'fort/battle/resistance'],
//damage: ['weapon damage', 'items/left_arm/golden_rifle'],
damagetrue: [delChar(collect[7]), 'items/left_arm/golden_rifle'],
experience: [delChar(hero[10]), 'items/yield/xp_boost', '<br>'],
dollar: [delChar(hero[11]), 'items/yield/dollar_boost'],
luck: [delChar(collect[2]), 'items/yield/luck_boost'],
drop: [delChar(hero[9]), 'items/yield/product_boost'],
joball: [delChar(collect[0]), 'window/job/jobstar_small_gold'],
speed: [delChar(collect[1]), 'jobs/walk'],
regen: [delChar(collect[3]), 'jobs/sleep'],
pray: [delChar(collect[4]), 'jobs/pray'],
job1000: [delChar(pilg[0]), 'jobs/build'],
};
for (var ca = 0; ca < CharacterSkills.allSkillKeys.length; ca++) {
if (ca % 5 === 0) {
var attr = CharacterSkills.allAttrKeys[ca / 5];
LT.searchObj[attr] = [CharacterSkills.keyNames[attr], 'window/skills/circle_' + attr, ca % 10 === 0 ? '<br>' : ''];
}
var skill = CharacterSkills.allSkillKeys[ca];
LT.searchObj[skill] = [CharacterSkills.keyNames[skill], 'window/skills/skillicon_' + skill];
}
if (!localStorage.getItem('TWLTdate') || Date.parse(forbid.date) > Date.parse(localStorage.getItem('TWLTdate'))) {
var setNames = '',
nSets = forbid.unlock;
for (var h of nSets)
setNames += LT.GUI.getSetOrItem(h, set1[h]) + '<br>';
new west.gui.Dialog(LT.name, '<span><b>' + forbid.date.toDateString() + '</b><br>' + LTlang.newsets + ':<br><br>' + setNames + '</span>', west.gui.Dialog.SYS_OK).setBlockGame(false).setDraggable(true).addButton('ok').show();
localStorage.setItem('TWLTdate', forbid.date);
}
});
},
itemsInInv: function (id) {
var upgrade = isNaN(id) ? LT.currList[id].items : [id],
items = [];
for (var g of upgrade) {
for (var h = 0; h <= 5; h++) {
items.push(g * 1000 + h);
}
}
var invItems = Bag.getItemsByItemIds(items);
if (invItems.length > 0) {
Wear.open();
Inventory.showCustomItems(invItems);
} else
new UserMessage(LTlang.noItems, 'hint').show();
},
getSetOrItem: function (id, obj, nolink) {
if (!obj)
return id;
var isItem = !isNaN(id),
nNew = window.forbid && (isItem && id >= forbid.unlockID || !isItem && forbid.unlock.includes(id)) ? '<img src="' + LTstart.Images('new') + '">' : '',
nLvl = obj.item_level ? '<img src="images/items/item_level.png"><span style="font-size: 11px;color:#ffffff;text-shadow:black -1px 0 1px,black 0 1px 1px,black 1px 0 1px,black 0 -1px 1px;">' + obj.item_level + '</span>' : '',
options = {
show_alreadyown: true
};
if (LT.lvlToggle)
options.character = {
level: LT.lvlToggle
};
var nPopup = 'data-setkey="' + id + '"',
click = 'onclick="LT.GUI.itemsInInv(\'' + id + '\')"',
img = '';
if (isItem) {
var itemId = id + '00' + obj.item_level,
item = ItemManager.get(itemId);
nPopup = 'data-itemid="' + itemId + '" title="' + (new ItemPopup(item, options).getXHTML().escapeHTML()) + '"';
img = '<img src="' + item.image + '" width="25">';
} else if (LT.GUI.window.currentActiveTabId == 'SetBonus')
nPopup += 'title="' + LTlang.showItems + '" style="color:#FFE7B1;"';
else
click = 'onclick="LT.GUI.open(\'openSetsWindow\',\'' + id + '\',\'SetBonus\')"';
if (nolink)
click = '';
return '<b><span class="linklike" ' + nPopup + click + '>' + nNew + img + nLvl + obj.name + '</span></b>';
},
newState: '',
html: {},
openSetsWindow: function (st, tab) {
LT.GUI.getDefault(tab);
LT.GUI.window.setTitle(tab);
var newSet = false;
if (typeof st === 'string') {
newSet = true;
LT['curr' + tab] = st;
}
var scrollpane = new west.gui.Scrollpane('LTSetsWindow');
$(scrollpane.getMainDiv()).css({
'margin-left': '120px',
'margin-top': '10px',
'width': '578px'
});
var lvlUp = function (level, value) {
var ret = !level ? 0 : value < 1 ? Math.round(Math.max(1, value * 1000 * level)) / 10000 : Math.round(Math.max(1, value * 0.1 * level));
return value + ret;
},
charLvl = Character.level,
getBonImg = function (n, w) {
var son = LT.searchObj[n] || JobList.getJobById(n.slice(3));
return '<img src="images/' + (son[1] || 'jobs/' + son.shortname) + '.png" width="' + w + '" title="' + (son[0] || son.name) + '">';
},
types = {},
perL = set1.instance_set_1.bonus[2][0].desc.match(/\(.*?\)/)[0],
compare = function (sets, id) {
for (var i in sets) {
var si = sets[i];
for (var k in si.bonus)
for (var ID of si.bonus[k]) {
var ib = ID.bonus || ID;
var NAM = (ib.name || ib.type) + (ib.job || ib.isSector || '');
if (id[NAM]) {
if (!types[i]) {
types[i] = {
desc: (LT.SPEC.includes(NAM) ? '% ' : ' ') + (ID.key && !LT.lvlToggle ? perL : ''),
value: {},
values: {},
compVal: {
sum: 0
},
slots: si.slots,
name: si.name,
item_level: si.item_level,
items: si.items,
};
}
if (!types[i].value[NAM])
types[i].value[NAM] = 0;
types[i].value[NAM] += ib.value;
var NUM = types[i].value[NAM] * (LT.SPEC.includes(NAM) && types[i].slots != 'buff' ? 100 : 1);
var VAL = LT.lvlToggle && ID.key ? Math.ceil(NUM * LT.lvlToggle) : NUM;
var lvl = ib.leveled ? 0 : si.item_level;
var LVL = lvlUp(lvl, VAL) * id[NAM];
if (!types[i].values[k])
types[i].values[k] = $.extend({
sum: 0
}, types[i].values[k - 1]);
types[i].values[k][NAM] = Math.round(LVL * 1000) / 1000;
types[i].compVal[NAM] = !LT.lvlToggle && ID.key ? lvlUp(lvl, Math.ceil(NUM * Character.level)) * id[NAM] : LVL;
types[i].parts = k;
}
}
if (types[i]) {
for (var cv in types[i].compVal) {
types[i].compVal.sum += types[i].compVal[cv];
for (var nv in types[i].values)
types[i].values[nv].sum += types[i].values[nv][cv] || 0;
}
if (si.items) {
for (var is of si.items)
if (ItemManager.getByBaseId(is).sub_type != id.subWeapon)
types[i].compVal.sum += types[is] ? types[is].compVal.sum : 0;
}
}
}
},
reloadLvl = 0,
showbonus = {
'SetBonus': function (id) {
LT.currSetBonus = id;
scrollpane.contentPane.empty();
var types = {},
sets = LT.currList[id];
if (!sets)
return;
LT.GUI.window.setTitle(LT.GUI.getSetOrItem(id, sets));
var spCont = '<span style="width:60%;position:absolute;">';
for (var k in sets.bonus) {
spCont += '<b>' + k + ' ' + LTlang.items + ':</b><br>';
for (var ID of sets.bonus[k]) {
var ib = ID.bonus || ID;
var NAM = (ib.name || ib.type) + (ib.job || ib.isSector || '');
if (!types[NAM]) {
var DESC = ID.desc && (LT.lvlToggle && ID.key && ID.desc.replace(/[0-9]|\+|\.|\([^)]+\)$/g, '') || ID.desc.replace(/[0-9]|\+|\./g, '')) || CharacterSkills.keyNames[NAM];
types[NAM] = {
key: (ID.key || 0),
desc: DESC,
value: 0
};
}
types[NAM].value += ib.value;
}
for (var m in types) {
var n = types[m];
var NUM = n.value * (LT.SPEC.includes(m) ? 100 : 1);
var VAL = LT.lvlToggle && n.key ? Math.ceil(NUM * LT.lvlToggle) : Math.round(NUM * 100) / 100;
spCont += getBonImg(m, 23) + ' + ' + VAL + ' ' + n.desc + '<br>';
}
}
spCont += '</span><span style="width:40%;left:60%;position:absolute;">';
for (var o of LT.currList[id].items)
spCont += LT.GUI.getSetOrItem(o, LT['itemList' + LT.currState][o]) + '<br>';
scrollpane.appendContent(spCont);
setTimeout(function () {
var cont = $('div.LTSetsWindow div.tw2gui_scrollpane_clipper_contentpane > span');
cont.parent().height(cont.height() + 10);
}, 100);
},
'BonusSearch': function (idString) {
var id = JSON.parse(idString);
if (Object.keys(id).length > 2 && !LT.lvlToggle) {
if (!LT.currBonusSearch) {
LT.currBonusSearch = idString;
reloadLvl = 1;
}
return lvlBox.select(charLvl);
}
scrollpane.contentPane.empty();
types = {};
var title = '';
for (var oi in LT.searchObj)
if (id[oi])
title += getBonImg(oi, 35) + ' ';
LT.GUI.window.setTitle(title);
var ns = '' + LT.lvlToggle + LT.onlyOwnSets;
if (idString != LT.currBonusSearch || ns != LT.GUI.newState || reloadLvl) {
LT.currBonusSearch = idString;
LT.GUI.newState = ns;
reloadLvl = 0;
compare(LT['itemList' + LT.currState], id);
compare(LT.currList, id);
var types2 = Object.keys(types).sort(function (a, b) {
return types[b].compVal.sum / types[b].parts - types[a].compVal.sum / types[a].parts;
}),
ic = 0;
LT.GUI.html = {
body: '',
right_arm: '',
animal: '',
rest: '',
item: '',
buff: '',
};
for (var type of types2) {
var n = types[type],
nsi = n.slots == 'item';
if (nsi && ic++ > 200)
continue;
var setval = 0;
LT.GUI.html[n.slots] += '<br>' + LT.GUI.getSetOrItem(type, n) + '<br>';
for (var o in n.values) {
if (o == 'sum')
continue;
var pre = (nsi ? '' : o + ' ' + LTlang.parts + ':');
LT.GUI.html[n.slots] += pre + ' +' + n.values[o].sum + n.desc + '<br>';
setval = n.values[o].sum;
}
if (n.items) {
var ibs = 0;
for (var ib of n.items)
if (ItemManager.getByBaseId(ib).sub_type != id.subWeapon)
ibs += types[ib] ? types[ib].values[1].sum : 0;
LT.GUI.html[n.slots] += '& ' + LTlang.items + ': +' + (ibs + setval) + '<br>';
}
}
}
scrollpane.appendContent('<span class="LTBonusS body" style="width:16%;position:absolute;"><h4>' + LTlang.body + '</h4></span><span class="LTBonusS right_arm" style="width:16%;left:17%;position:absolute;"><h4>' + LTlang.right_arm + '</h4></span><span class="LTBonusS animal" style="width:16%;left:34%;position:absolute;"><h4>' + LTlang.animal + '</h4></span><span class="LTBonusS rest" style="width:16%;left:51%;position:absolute;"><h4>' + LTlang.rest + '</h4></span><span class="LTBonusS item" style="width:16%;left:68%;position:absolute;"><h4>' + LTlang.items + '</h4></span><span class="LTBonusS buff" style="width:16%;right:0;position:absolute;"><h4>' + LTlang.buff + '</h4></span>');
for (var hs in LT.GUI.html)
$('.LTBonusS.' + hs).append(LT.GUI.html[hs]);
setTimeout(function () {
var maxHeight = 0;
for (var h of $('div.LTSetsWindow span.LTBonusS'))
if (h.clientHeight > maxHeight)
maxHeight = h.clientHeight;
$('div.LTSetsWindow div.tw2gui_scrollpane_clipper_contentpane').height(maxHeight + 10);
}, 200);
},
},
loadResult = function () {
if (LT.setLength <= forbid.max || LT.onlyOwnSets || newSet) {
if (LT['curr' + tab])
showbonus[tab](LT['curr' + tab]);
newSet = false;
}
},
selbox,
loadSelbox = function () {
LT.currState = LT.onlyOwnSets ? 'Own' : 'All';
LT.currList = LT['setList' + LT.currState];
selbox = new west.gui.Selectbox().setWidth(250);
LT.GUI.window.setTitle(tab);
scrollpane.contentPane.empty();
if (LT.setLength <= forbid.max || LT.onlyOwnSets) {
if (tab == 'SetBonus') {
selbox.addListener(showbonus.SetBonus);
var sbaI = function (j) {
var sj = LT.currList[j];
selbox.addItem(j, '<img src=' + (forbid.unlock.includes(j) ? LTstart.Images('new') : ItemManager.getByBaseId(sj.items[0]).image) + ' height="20" width="20">' + '<div style="padding-right: 20px; text-overflow:ellipsis; white-space:nowrap; overflow:hidden;">' + sj.name + '</div>', sj.name);
};
if (LT.setAbc) {
for (var h of LT.list)
if (LT.currList[h.key])
sbaI(h.key);
} else
for (var i in LT.currList)
sbaI(i);
}
scrollpane.appendContent('<h1>' + LTlang.choose + '!</h1>');
} else
scrollpane.appendContent('<p style="color: #a31919;">ERROR: There are new sets added to the game.<br>Please <a href="javascript:LT.GUI.open(\'openKontakt\');" title="Open contact tab">contact me</a> so I can add the sets to the script.</p>');
},
img = {
SetBonus: 'dayofthedead_2014_hat3',
BonusSearch: 'st_patrick_head',
shot: 'goldensable',
hand: 'golden_gun',
},
buttonLogic = function (ev, d, b) {
var butObj = b || ev.data.obj,
id = butObj.id,
val = 1;
if ($(ev.currentTarget).hasClass('butPlus') || d > 0) {
if (butObj.current_value + 1 > butObj.max_value)
return false;
} else {
if (butObj.current_value - 1 < butObj.min_value)
return false;
val = -1;
}
butObj.current_value += val;
if (CharacterSkills.skills[id]) {
var attr = CharacterSkills.skills[id].attr_key;
if (!LT.chooseBonus[attr])
LT.chooseBonus[attr] = 0;
LT.chooseBonus[attr] += val;
$('.chooseBonus #' + attr + ' span.displayValue').text(LT.chooseBonus[attr]);
if (LT.chooseBonus[attr] === 0)
delete LT.chooseBonus[attr];
}
if (butObj.current_value === 0)
delete LT.chooseBonus[id];
else
LT.chooseBonus[id] = butObj.current_value;
$('.chooseBonus #' + id + ' span.displayValue').text(butObj.current_value);
return true;
},
cont,
getCB = function (id) {
if (LT.searchObj[id][2])
cont.append(LT.searchObj[id][2]);
var div = $('<div class="chooseBonus" style="display:inline-block;">' + getBonImg(id, 45)).appendTo(cont);
new west.gui.Plusminusfield(id, LT.chooseBonus[id] || 0, -100, 100, 0, buttonLogic, buttonLogic, buttonLogic).setWidth(45).appendTo(div);
},
chooseWindow = function () {
cont = $('<span>').append('<div style="width:92px;display:inline-block;vertical-align:top;background-color:#A47F5B;border-radius:5px;">' +
'<img id="switchWeapon" style="cursor:pointer;" src="https://wiki.the-west.de/images/1/1a/Switch_weapons_icon.png" title="' + LTlang.switchWeapon + '" width="45">' +
'<img id="subWeapon" src="images/items/right_arm/' + img[LT.chooseBonus.subWeapon] + '.png" width="45"></div>');
for (var so in LT.searchObj) {
getCB(so);
}
new west.gui.Dialog(LTlang.selectBonus, cont).setBlockGame(false).setDraggable(true).addButton('ok', function () {
if (Object.keys(LT.chooseBonus).length > 1)
showbonus.BonusSearch(JSON.stringify(LT.chooseBonus));
else {
LT.currBonusSearch = '';
loadSelbox();
}
}).addButton(LTlang.resetB, function () {
LT.chooseBonus = {
subWeapon: 'hand'
};
chooseWindow();
}).addButton('cancel').show();
$('#switchWeapon').click(function () {
LT.chooseBonus.subWeapon = LT.chooseBonus.subWeapon == 'shot' ? 'hand' : 'shot';
$("#subWeapon").attr('src', 'images/items/right_arm/' + img[LT.chooseBonus.subWeapon] + '.png');
});
$('div.chooseBonus .tw2gui_plusminus').width('auto');
$('div.chooseBonus').css('margin-left', '2px');
};
setbutton = $('<span title="' + LTlang.choose + '" style="background-image:url(images/items/head/' + img[tab] + '.png); cursor:pointer; position:absolute; height:73px; width:73px; margin:4px;" />');
setbutton.click(function () {
if (tab == 'SetBonus') {
var pos = $(setbutton).offset();
selbox.setPosition(pos.left + 35, pos.top + 50);
selbox.show();
} else if (tab == 'BonusSearch' && (LT.setLength <= forbid.max || LT.onlyOwnSets))
chooseWindow();
});
var content = $('<div>');
content.css({
'margin-top': '90px',
'width': '110px',
'position': 'absolute',
});
$(LT.GUI.window.getContentPane()).append(setbutton, content, scrollpane.getMainDiv());
var maxLvl = 150,
setsSort = tab == 'SetBonus' ? new west.gui.Checkbox('ABC', null, function (state) {
LT.setAbc = state;
loadSelbox();
}).setSelected(LT.setAbc, true).getMainDiv() : '',
lvlBox = new west.gui.Combobox().setWidth(77).addItem(0, '0').addItem(charLvl, '' + charLvl),
onlyOwn = new west.gui.Checkbox(LTlang.ownSets, null, function (state) {
LT.onlyOwnSets = state;
loadSelbox();
loadResult();
}).setSelected(LT.onlyOwnSets);
if (charLvl != maxLvl)
lvlBox.addItem(maxLvl, '' + maxLvl);
lvlBox.select(LT.lvlToggle).addListener(function (lvl) {
LT.lvlToggle = lvl;
loadResult();
});
content.append(setsSort, '<br><br><b>' + LTlang.level + ':</b>', lvlBox.getMainDiv(), onlyOwn.getMainDiv());
$('div.tw2gui_window.LT.active_tab_id_BonusSearch').width(1060);
$('div.tw2gui_window.LT.active_tab_id_BonusSearch div.tw2gui_scrollpane.LTSetsWindow').width(900);
},
openFrame: function (iframe, size) {
LT.GUI.window.setResizeable(true).addClass('nocloseall').clearContentPane().activateTab('LTFrame');
LT.GUI.window.dontCloseAll = true;
if (Array.isArray(size))
LT.GUI.window.setSize(size[0], size[1]);
var wnd = LT.GUI.window.getMainDiv();
$('.tw2gui_window_inset', wnd).css('background-image', 'url(' + LTstart.Images('LT_backGr', 1) + ')');
$('.textart_title', wnd).css('display', 'none');
var contPan = $(LT.GUI.window.getContentPane());
contPan.css('margin-top', '-30px');
new west.gui.Button('QuakeNet Webchat').appendTo(contPan).click(function () {
var iframe = 'https://webchat.quakenet.org';
LT.GUI.openFrame(iframe);
});
new west.gui.Button('Wiki The-West').appendTo(contPan).click(function () {
var iframe = Game.helpURL.replace('http:', 'https:');
LT.GUI.openFrame(iframe);
});
new west.gui.Button('TW-DB.info').appendTo(contPan).click(function () {
var iframe = 'https://tw-db.info';
LT.GUI.openFrame(iframe);
});
if (typeof iframe === 'string')
contPan.append($('<iframe src="' + iframe + '" style="width:100%; height:94%; border:0; margin-bottom:1px; ">'));
},
openSender: function () {
LT.GUI.getDefault('LTSender');
var EvImg = EvName == 'Octoberfest' ? 'window/events/octoberfest/pretzels_icon' : 'interface/friendsbar/events/' + EvName;
LT.GUI.window.setTitle(sendGift.label + ' <img src="images/' + EvImg + '.png">');
if (!isDefined(WestUi.FriendsBar.friendsBarUi)) {
WestUi.FriendsBar.toggle();
}
setTimeout((function () {
var e = [],
t = Chat.Friendslist.getFriends(),
r = WestUi.FriendsBar.friendsBarUi.friendsBar.eventActivations,
i,
s,
u,
a;
for (s = 0; s < t.length; s++) {
i = typeof r[t[s].playerId] !== 'undefined' && r[t[s].playerId][EvName] !== 'undefined' ? r[t[s].playerId][EvName] : 0;
e.push({
n: t[s].pname,
i: t[s].playerId,
t: i
});
}
e.sort(Sort.create('asc', function (e) {
return e.t;
}));
i = $('<table align="center" border="1" cellpadding="2px" border="1">');
for (s = 0; s < e.length; s++) {
u = e[s].t + parseInt(sendGift.cooldown, 10) - new ServerDate().getTime() / 1000;
if (u > 0) {
a = $('<td>(' + u.formatDurationBuffWay() + ')</td>');
} else {
a = $('<td><a href="#">' + sendGift.label + '</a></td>').click(e[s].i, function (e) {
$(this).parent().remove();
Ajax.remoteCall('friendsbar', 'event', {
player_id: e.handleObj.data,
event: EvName
}, function (t) {
if (t.error)
return MessageError(t.msg).show();
MessageSuccess(t.msg).show();
var n = e.handleObj.data;
r[n] = r[n] || {};
r[n][EvName] = t.activationTime;
});
});
}
i.append($('<tr>)').append($('<td>' + e[s].n + '</td>'), a));
}
var scrollpane = new west.gui.Scrollpane();
$(scrollpane.getMainDiv()).css({
'margin-top': '10px',
'width': '340px',
'position': 'absolute',
});
scrollpane.appendContent(i);
if (t.length === 0)
scrollpane.appendContent('<h2 style="text-align: center; color: #a31919; margin-top: 50px;">' + LTlang.noFriends + '</h2>');
var scrollP = new west.gui.Scrollpane();
$(scrollP.getMainDiv()).css({
'margin-top': '10px',
'margin-left': '345px',
'width': '353px', //698-345
});
if (EvName == 'Hearts' || EvName == 'DayOfDead') {
var name = '',
weMmd = west.events.Manager.model._data.events;
if (EvName == 'Hearts')
name = weMmd.valentine.model._data.name;
else
name = weMmd.DayOfDead.model._l10n.ui.mouseover + ' ' + new Date().getFullYear();
scrollP.appendContent('<h3>' + name + '</h3>');
//west.events.Manager.getRunningEvents()
var rew = Game.sesData[EvName].rewards;
for (var r in rew) {
var div = $('<div />');
div.append('<img src="images/' + EvImg + '.png"> <b>' + r + '</b><br>' + rew[r].desc + '<br>');
var id = rew[r].id;
if (isNaN(id)) {
div.append('<i>' + LTlang.reward + ': ' + id + '</i><br><br>');
} else {
var invItem = new tw2widget.JobItem(ItemManager.get(id));
div.append(invItem.getMainDiv()).append('<br><br><br><br><br>');
}
scrollP.appendContent(div);
}
}
$(LT.GUI.window.getContentPane()).append(scrollpane.getMainDiv()).append(scrollP.getMainDiv());
}), 500);
},
};
LT.RecipeMarket = {
init: function () {
var inject = function (category, data) {
$('.LTFind').remove();
var gLS4P = Game.InfoHandler.getLocalString4ProfessionId;
var buttons_recipe = $('<div class="LTFind"><a href=\'javascript:LT.RecipeMarket.filterRecipe(0);\'><img title="' + LTlang.allprofessions + '" alt="allprofessions" src="' + LTstart.Images('LT_recipes') + '" /></a><a href=\'javascript:LT.RecipeMarket.filterRecipe(1);\'><img title="' + gLS4P(1) + '" alt="fieldcook" style="width: 30px;" src="images/items/recipe/recipe_cook.png" /></a><a href=\'javascript:LT.RecipeMarket.filterRecipe(2);\'><img title="' + gLS4P(2) + '" alt="tonicpeddler" style="width: 30px;" src="images/items/recipe/recipe_quack.png" /></a><a href=\'javascript:LT.RecipeMarket.filterRecipe(3);\'><img title="' + gLS4P(3) + '" alt="blacksmith" style="width: 30px;" src="images/items/recipe/recipe_smith.png" /></a><a href=\'javascript:LT.RecipeMarket.filterRecipe(4);\'><img title="' + gLS4P(4) + '" alt="mastersaddler" style="width: 30px;" src="images/items/recipe/recipe_sattle.png" /></a></div>');
if (category == 'recipe') {
$('.searchbox').before(buttons_recipe);
$('.searchbox').css('margin-bottom', '0');
var items = [];
for (var i = 0; i < data.length; i++)
items[i] = ItemManager.get(data[i]);
items.sort(function (a, b) {
return a.min_level - b.min_level;
});
LT.RecipeMarket.Recipe = items;
for (var h = 0; h < items.length; h++)
data[h] = items[h].item_id;
return data;
}
$('.searchbox').css('margin-bottom', '18px');
return data;
};
MarketWindow.Buy.twlt_updateCategory = MarketWindow.Buy.updateCategory;
MarketWindow.Buy.updateCategory = function (category, data) {
data = inject(category, data);
MarketWindow.Buy.twlt_updateCategory.call(this, category, data);
};
MarketWindow.getClearName = function (obj) {
if (obj.type == 'recipe') {
var name = ItemManager.get(obj.craftitem).name;
return isDefined(name) ? name : obj.name;
}
return obj.name;
};
},
filterRecipe: function (profession_id) {
var data = $('#mpb_recipe_content p');
data.show();
if (profession_id === 0)
return;
for (var i = 0; i < LT.RecipeMarket.Recipe.length; i++)
if (profession_id != LT.RecipeMarket.Recipe[i].profession_id)
$(data[i]).hide();
}
};
LT.AchievHide = {
init: function () {
var hideUnErfolge = function () {
$('.playerachievement-' + Character.playerId + ' .achievement').hide();
$('.playerachievement-' + Character.playerId + ' .achievement .achievement_unachieved').parent().show();
};
AchievementExplorer.prototype.twlt_updateContent = AchievementExplorer.prototype.updateContent;
AchievementExplorer.prototype.updateContent = function (data) {
var tmp = AchievementExplorer.prototype.twlt_updateContent.call(this, data);
if (data.folder.id != 'overall' && data.folder.id != 'heroics')
hideUnErfolge();
return tmp;
};
}
};
LT.MarketMessage = {
Towns: {},
init: function () {
Ajax.get('map', 'get_minimap', {}, function (json) {
if (json.error)
return new UserMessage(json.msg).show();
LT.MarketMessage.Towns = json.towns;
EventHandler.listen('position_change', function () {
LT.MarketMessage.check();
});
var setVal2 = setInterval(function () {
if (Character.position.x) {
clearInterval(setVal2);
LT.MarketMessage.check();
}
}, 1000);
});
},
check: function () {
var town_id,
offers,
bids,
fetch = function (action) {
Ajax.remoteCall('building_market', action, {}, function (resp) {
if (resp.error)
return new UserMessage(resp.msg).show();
Character.setDeposit(resp.deposit);
Character.setMoney(resp.cash);
return new MessageSuccess(resp.msg).show();
});
};
var fetchAll = function (what) {
if (what == 1)
fetch('fetch_town_offers');
fetch('fetch_town_bids');
EventHandler.signal('inventory_changed');
};
var showDialog = function () {
new west.gui.Dialog(LTlang.market1, LTlang.market2, west.gui.Dialog.SYS_QUESTION).addButton(LTlang.all, function () {
fetchAll(1);
}).addButton(LTlang.onlyBids, function () {
fetchAll(0);
}).addButton(LTlang.nothing).show();
};
var checkItems = function () {
for (var g = 0; g < bids.length; g++) {
var bgs = bids[g];
if (bgs.market_town_id == town_id && (bgs.auction_ends_in < 0 || bgs.current_bid == bgs.max_price)) {
showDialog();
return;
}
}
for (var f = 0; f < offers.length; f++) {
var ofs = offers[f];
if (ofs.market_town_id == town_id && (ofs.auction_ends_in < 0 || ofs.current_bid == ofs.max_price)) {
showDialog();
return;
}
}
};
var get_offers = function () {
Ajax.remoteCall('building_market', 'fetch_offers', {
page: 0
}, function (json) {
offers = json.msg.search_result;
checkItems();
});
};
var get_bids = function () {
Ajax.remoteCall('building_market', 'fetch_bids', {}, function (json) {
bids = json.msg.search_result;
get_offers();
});
};
var towns = LT.MarketMessage.Towns;
for (var k in towns)
if (towns[k].x == Character.position.x && towns[k].y == Character.position.y) {
town_id = towns[k].town_id;
var wait = Character.health < 6 ? Character.playerId.toString().substr(-4) : 1;
setTimeout(function () {
get_bids();
}, wait);
}
}
};
LT.MarketTown = {
init: function () {
if (!LT.Skript.getFeature('MarketMessage'))
Ajax.get('map', 'get_minimap', {}, function (json) {
if (json.error)
return new UserMessage(json.msg).show();
LT.MarketMessage.Towns = json.towns;
});
MarketWindow.twlt_showTab = MarketWindow.showTab;
MarketWindow.showTab = function () {
MarketWindow.twlt_showTab.apply(this, arguments);
if (MarketWindow.townId > -1)
MarketWindow.window.setTitle(MarketWindow.window.titler.text + " - " + LT.MarketMessage.Towns[MarketWindow.townId].name);
};
}
};
LT.MarkDaily = {
init: function () {
var addBorder = function () {
var rows = $('.reward-row');
var row = $(rows[4]);
if (row.hasClass('today'))
row.css('border', '20px solid red');
};
west.player.LoginBonus.prototype.twlt_show = west.player.LoginBonus.prototype.show;
west.player.LoginBonus.prototype.show = function () {
var tmp = west.player.LoginBonus.prototype.twlt_show.call(this);
if (tmp !== undefined)
return tmp;
addBorder();
};
}
};
LT.DuellMap = {
init: function () {
var generateNpcPopup = function (data) {
var weapon = ItemManager.get(data.weaponId),
damage = weapon.getDamage(data),
npcData = data.bonus;
return '<table class="dln_npcskill_popup"><tr><td colspan="5" class="text_bold">' + LTlang.popup + '<br> </td></tr><tr><td><img src="/images/window/duels/npcskill_shot.jpg" /></td><td><img src="/images/window/duels/npcskill_punch.jpg" /></td><td><img src="/images/window/duels/npcskill_aim.jpg" /></td><td><img src="/images/window/duels/npcskill_appearance.jpg" /></td><td></td></tr><tr><td class="text_bold">' + (npcData.shot || 0) + '</td><td class="text_bold">' + (npcData.punch || 0) + '</td>' + '<td class="text_bold">' + (npcData.aim || 0) + '</td><td class="text_bold">' + (npcData.appearance || 0) + '</td><td></td></tr>' + '<tr><td><img src="/images/window/duels/npcskill_tactic.jpg" /></td><td><img src="/images/window/duels/npcskill_reflex.jpg" /></td><td><img src="/images/window/duels/npcskill_dodge.jpg" /></td><td><img src="/images/window/duels/npcskill_tough.jpg" /></td><td><img src="/images/window/duels/npcskill_health.jpg" /></td></tr><tr><td class="text_bold">' + (npcData.tactic || 0) + '</td><td class="text_bold">' + (npcData.reflex || 0) + '</td><td class="text_bold">' + (npcData.dodge || 0) + '</td><td class="text_bold">' + (npcData.tough || 0) + '</td><td class="text_bold">' + (npcData.health || 0) + '</td></tr><tr><td colspan="2" class="text_bold"><img src="' + weapon.image + '" /></td><td colspan="3" class="text_bold"><br>' + weapon.name + '<br>(' + LTlang.damage + ': ' + damage.min + ' - ' + damage.max + ')</td></tr></table>';
};
Ajax.remoteCallMode('character', 'get_info', {}, function (resp) {
Character.setDuelLevel(resp.duelLevel);
});
var progB = new west.gui.Progressbar(0, 100);
progB.setTextOnly(true);
$(progB.getMainDiv()).css('width', '772px');
var fillPage = function () {
$('#LTDuellMapTable').empty();
$('#LTDuellMapPlayers').empty();
$('#LTDuellMapTable').append('<tr><th>' + LTlang.name + '</th><th>' + LTlang.town + '</th><th>' + LTlang.level + '</th><th>' + LTlang.duelLevel + '</th><th>' + LTlang.exp + '</th><th>' + LTlang.distance + '</th><th>' + LTlang.startduel + '</th><th>' + LTlang.centerMap + '</th></tr>');
for (var k in LT.DuellMap.Player) {
var data = LT.DuellMap.Player[k];
var content = $('<tr></tr>');
content.append('<td><a href="javascript:void(PlayerProfileWindow.open(' + data.player_id + '));" title="' + (Character.charClass == 'duelist' ? generateNpcPopup(data).escapeHTML() : '') + '">' + data.player_name + '</a></td>',
'<td><a href="javascript:void(TownWindow.open(' + data.town_x + ',' + data.town_y + '));">' + data.town_name + '</a></td>',
'<td>' + data.level + '</td>',
'<td>' + data.duellevel + '</td>',
'<td>' + Math.round((7 * data.duellevel - 5 * Character.duelLevel + 5) * Character.duelMotivation * 3) + '</td>',
'<td>' + window.Map.calcWayTime(Map.getLastQueuePosition(), {
x: data.character_x,
y: data.character_y
}).formatDuration() + '</td>',
'<td><a href="#" onclick="SaloonWindow.startDuel(' + data.player_id + ', ' + data.alliance_id + ', false, DuelsWindow);">' + LTlang.startduel + '</a></td>',
'<td><a href="#" onclick="Map.center(' + data.character_x + ', ' + data.character_y + ');">' + LTlang.centerMap + '</a></td>');
$('#LTDuellMapTable').append(content);
content = $('<div style="position:absolute;border:1px solid black;background:#FF0000;width:4px;height:4px;left:' + (data.character_x / 46592 * 770 - 2) + 'px;top:' + (data.character_y / 20480 * 338 - 2) + 'px;" />');
eval('content.click(function () { SaloonWindow.startDuel(' + data.player_id + ', ' + data.alliance_id + ', false, DuelsWindow); });');
content.addMousePopup('<b>' + data.player_name + '</b> ' + window.Map.calcWayTime(Map.getLastQueuePosition(), {
x: data.character_x,
y: data.character_y
}).formatDuration());
$('#LTDuellMapPlayers').append(content);
}
$('<div style="position:absolute;border:1px solid black;background:#00CCFF;width:4px;height:4px;left:' + (Character.position.x / 46592 * 770 - 2) + 'px;top:' + (Character.position.y / 20480 * 338 - 2) + 'px;" />').addMousePopup('Deine Position').appendTo('#LTDuellMapPlayers');
};
var getPlayer = function (i, distance) {
if (i == -1) {
progB.setValue(0);
LT.DuellMap.Player = {};
i++;
}
Ajax.remoteCall('duel', 'search_op', {
next: true,
order_by: 'ASC',
sort: 'range',
page: i,
distance: distance * 60
}, function (json) {
var l = json.oplist.pclist.length;
for (var j = 0; j < l; j++) {
var plyr = json.oplist.pclist[j].player_name;
if (!LT.DuellMap.Player[plyr]) {
LT.DuellMap.Player[plyr] = json.oplist.pclist[j];
progB.increase(1);
}
}
if (json.oplist.next && i < 40) {
getPlayer(++i, distance);
return;
}
LT.DuellMap.progBVal = progB.getValue();
fillPage();
});
};
var showTab = function (win, id) {
DuelsWindow.window.setSize(840, 655).addClass('premium-buy');
DuelsWindow.window.activateTab(id).$('div.tw2gui_window_content_pane > *').each(function (i, e) {
if ($(e).hasClass('duels-' + id)) {
$(e).children().fadeIn();
$(e).show();
} else {
$(e).children().fadeOut();
$(e).hide();
}
});
DuelsWindow.window.setTitle(LTlang.duelmap);
if (Object.keys(LT.DuellMap.Player).length === 0) {
LT.DuellMap.progBVal = 0;
getPlayer(-1, 15);
} else
progB.setValue(LT.DuellMap.progBVal);
};
var initDuellmap = function () {
DuelsWindow.window.addTab(LTlang.duelmap, 'LTDuellmap', showTab);
LT.DuellMap.Player = {};
var area = $('<div class="duels-LTDuellmap" style="display:none;"></div>').appendTo(DuelsWindow.window.getContentPane()),
content = $('<div style="height:350px;top:10px;position:relative"></div>'),
left = 0,
top = 0;
for (var i = 1; i <= 15; i++) {
var img = $('<img style="position:absolute;border:1px solid #000;width:110px;height:169px;left:' + left + 'px;top:' + top + 'px;" src="images/map/minimap/county_' + i + '.jpg" />');
left += 110;
if (i === 7) {
left = 0;
top = 169;
}
if (i === 4 || i === 11) {
img.css('height', '114px');
}
if (i === 11) {
img.css('top', top + 55 + 'px');
}
if (i === 15) {
img.css({
height: '110px',
left: '330px',
top: '114px'
});
}
content.append(img);
}
content.append('<div id="LTDuellMapPlayers"></div>');
content.appendTo(area);
area.append(progB.getMainDiv());
var scrollpane = new west.gui.Scrollpane().appendTo(area);
$(scrollpane.getMainDiv()).css('height', '185px');
scrollpane.appendContent(LTlang.duelradius + ' ');
var combobox = new west.gui.Combobox().setWidth(120).addItem('15', '15 ' + LTlang.minutes).addItem('30', '30 ' + LTlang.minutes).addItem('60', LTlang.hour).addItem('120', '2 ' + LTlang.hours).addItem('240', '4 ' + LTlang.hours).addItem('360', '6 ' + LTlang.hours).select('15').appendTo(scrollpane.getContentPane());
new west.gui.Button(LTlang.searchOpp).appendTo(scrollpane.getContentPane()).click(function () {
getPlayer(-1, combobox.getValue());
});
scrollpane.appendContent('<table border="1" id="LTDuellMapTable"></table>');
};
DuelsWindow.twlt_open = DuelsWindow.open;
DuelsWindow.open = function () {
var tmp = DuelsWindow.twlt_open.call(this);
if (tmp !== undefined)
return tmp;
initDuellmap();
};
DuelsWindow.twlt_showTab = DuelsWindow.showTab;
DuelsWindow.showTab = function (id) {
var tmp = DuelsWindow.twlt_showTab.call(this, id);
if (tmp !== undefined)
return tmp;
DuelsWindow.window.removeClass('premium-buy').setSize(748, 472);
};
}
};
LT.ChangeCity = {
init: function () {
var swap = function (that) {
var rows = $('.' + that.window.id + ' .row .cell.cell_2.name,.' + that.window.id + ' .row .cell.cell_2.name_foreign');
rows.empty();
for (var i = 0; i <= that.data.length; i++) {
var player = that.data[i];
$(rows[i]).append('<span> ' + (player.title !== undefined ? player.title : '') + '</span><a href="#" onClick="PlayerProfileWindow.open(' + player.player_id + ')">' + player.name + '</a>');
}
};
CityhallWindow.Residents.twlt_fillContent = CityhallWindow.Residents.fillContent;
CityhallWindow.Residents.fillContent = function () {
var tmp = CityhallWindow.Residents.twlt_fillContent.call(this);
if (tmp !== undefined)
return tmp;
swap(this);
};
}
};
LT.ShowAP = {
init: function () {
var addAP = function (that) {
var job = that.job;
var getJobFeaturedCls = function () {
if (LinearQuestHandler.hasTutorialQuest())
return '';
if (job.is_gold)
return 'gold';
if (job.is_silver)
return 'silver';
return '';
};
var aps = that.currSkillpoints - that.job.workpoints;
var jobicon = '<div class="job" title="' + job.get('description').escapeHTML().cutIt(150) + '"><div class="featured ' + getJobFeaturedCls() + '"></div>' + '<img src="images/jobs/' + job.get('shortname') + '.png" class="job_icon" /></div>';
that.window.setTitle(jobicon + ' ' + job.get('name').escapeHTML() + ' (' + aps + ' AP)');
};
JobWindow.twlt_initView = JobWindow.initView;
JobWindow.initView = function () {
var tmp = JobWindow.twlt_initView.call(this);
if (tmp !== undefined)
return tmp;
addAP(this);
};
}
};
LT.Statusbar = {
init: function () {
$('div#ui_windowbar').hide();
$('div#ui_windowbar_state').hide();
}
};
LT.Logout = {
init: function () {
var menu = $('<div class="menulink" onclick="LT.Logout.logout();" title="' + LTlang.logout + '" />').css('background-image', 'url(' + LTstart.Images('logout') + ')').css('background-position', '0px 0px').mouseenter(function () {
$(this).css('background-position', '-25px 0px');
}).mouseleave(function () {
$(this).css('background-position', '0px 0px');
});
$('#LT-menu').after(menu);
},
logout: function () {
location.href = 'game.php?window=logout&action=logout&h=' + Player.h;
},
};
LT.MoveJobs = {
init: function () {
var st = $('.menulink.lscript')[0].title;
$('div#ui_bottomright').css('right', '35px');
$('div.ui_menucontainer').css('margin-bottom', '7px');
$('div#ui_scripts').remove();
EscapeWindow.twlt_open = EscapeWindow.twlt_open || EscapeWindow.open;
EscapeWindow.open = function () {
EscapeWindow.twlt_open.apply(this, arguments);
wman.getById('escape').setSize(240, 326);
$('div.tw2gui_win2.escape div.content div.tw2gui_button')[3].after(new west.gui.Button(st, function () {
TheWestApi.open();
wman.getById('escape').destroy();
}).setMinWidth(175).getMainDiv());
};
}
};
LT.BlinkEvents = {
init: function () {
var setVal7 = setInterval(function () {
if ($('.border.highlight').length) {
clearInterval(setVal7);
$('.border.highlight').remove();
LT.addStyle('.border.highlight {display:none;}');
}
}, 3000);
}
};
LT.FortTracker = {
init: function () {
LT.addStyle('.fort_battle_notification {display:none!important;}');
}
};
LT.FriendsPop = {
init: function () {
west.notification.ToastOnlineNotification.prototype.show = function () {};
}
};
LT.InstantQuest = {
init: function () {
var setVal1 = setInterval(function () {
if (QuestEmployerView.showQuest) {
clearInterval(setVal1);
QuestEmployerView.twlt_showQuest = QuestEmployerView.showQuest;
QuestEmployerView.showQuest = function (e) {
QuestEmployerView.twlt_showQuest(e);
if (e.accepted === false) {
var req = e.requirements,
solvCnt = 0;
for (var f = 0; f < req.length; f++)
if (req[f].solved === true)
solvCnt += 1;
if (req.length == solvCnt)
$('div.quest_button_area_' + e.id + '').empty().append(new west.gui.Button(LTlang.accNfin, function () {
QuestWindow.acceptQuest(e.id);
var siVal = setInterval(function () {
if (QuestLog.quests[e.id]) {
clearInterval(siVal);
QuestWindow.finishQuest(e.id);
}
}, 200);
}).getMainDiv());
}
};
}
}, 2000);
}
};
LT.QuestWiki = {
init: function () {
$.getScript('https://tomrobert.safe-ws.de/repGroups.js').done(function () {
QuestLog.solvedGroups = {};
Ajax.remoteCallMode('building_quest', 'get_solved_groups', {}, function (json) {
for (var sg in json.solved)
QuestLog.solvedGroups[sg] = json.solved[sg].title;
QuestLog.twlt_addSolvedQuestGroup = QuestLog.addSolvedQuestGroup;
QuestLog.addSolvedQuestGroup = function (groupId, questGroup) {
QuestLog.twlt_addSolvedQuestGroup.apply(this, arguments);
QuestLog.solvedGroups[groupId] = questGroup.title;
};
var lang = Game.locale.substr(0, 2),
repText = {
de: ' (Wiederholbare Feiertagsquestreihe)',
hu: ' (Ismételhető)',
it: ' (Ripetibile)',
pt: ' repetível',
ru: ' - Снова праздник',
};
Quest.twlt_render = Quest.render;
Quest.render = function () {
Quest.twlt_render.apply(this, arguments);
var wiki = 'https://wiki.the' + Game.masterURL.match(/the(.*)/)[1] + '/wiki/',
gid = LT.repGroups[this.id],
qGroup = QuestLog.solvedGroups[gid] || lang == 'de' && isNaN(gid) && gid,
groupName = [69, 34].includes(this.group) && qGroup ? qGroup + repText[lang] || '' : this.groupTitle,
questName = encodeURIComponent((lang == 'pl' ? 'Zadania: ' : '') + groupName + '#' + (lang == 'de' ? this.id : this.soloTitle));
this.el.find('.quest_description_container .strong').append('<a class="questWiki" style="float:right;" title="' + LTlang.onWiki + '" href="' + wiki + questName + '" target="_blank"><img src="' + LTstart.Images('wiki') + '"/></a>');
};
});
});
}
};
LT.CityTravel = {
init: function () {
var setVal3 = setInterval(function () {
if (west.window.Blackboard.cities.show) {
clearInterval(setVal3);
var wwBc = west.window.Blackboard.cities;
wwBc.twlt_show = wwBc.show;
wwBc.show = function () {
for (var c = 0; c < this.cities_.length; c++)
this.cities_[c].member += '<br>' +
Map.calcWayTime(Map.getLastQueuePosition(), {
x: this.cities_[c].x,
y: this.cities_[c].y
}).formatDuration();
wwBc.twlt_show.apply(this, arguments);
$('.cities .city.inlineblock .popup-title').css('margin-top', '-10px');
};
}
}, 2000);
}
};
LT.BetterSheriff = {
onlyAttackable: false,
init: function () {
var columns = [
'name" style="width:100px;',
'distance" style="width:70px;',
'amount" style="width:70px;',
'not_dead_amount" style="width:70px;',
'duellevel" style="width:50px;',
'status" style="width:192px;'
], //max 552px
wanted = [
'Gesucht', 'Wanted', 'Poszukiwany', 'Gezocht', 'Efterlyst', 'Căutat', 'Procurado', 'Hledán', 'Buscado', 'В розыске', 'Aranıyor', 'Körözött', 'Καταζητείται', 'Eftersøgt', 'Odmena za ulovenie', 'Recherché', 'Ricercato',
],
sortByObj,
myPos,
lvl,
players,
loadedIDs,
counter,
maxCount,
updateTable = function (data) {
LT.BetterSheriff.table.clearBody();
var tmpCells = {};
for (var i = 0; i < data.length; i++) {
var rd = data[i];
if (LT.BetterSheriff.onlyAttackable && !rd.status.includes('.startDuel'))
continue;
tmpCells[columns[0]] = '<a title="' + SheriffWindow.createWantedTooltip(rd).escapeHTML() + '" href="javascript:void(PlayerProfileWindow.open(' + rd.player_id + '));"> ' + rd.name + '</a>';
tmpCells[columns[1]] = rd.distance.formatDuration();
tmpCells[columns[2]] = format_number(rd.amount);
tmpCells[columns[3]] = format_number(rd.not_dead_amount);
tmpCells[columns[4]] = rd.duellevel;
tmpCells[columns[5]] = '<span title=\'' + rd.status + '\'>' + rd.status + '</span>';
LT.BetterSheriff.table.buildRow('" style="padding-left:5px;', tmpCells);
}
},
startSortDispatcher = function (ev) {
var sortBy = ev && (ev.target.tagName == 'SPAN' && ev.target.parentElement.classList[2] || ev.target.classList[2]) || 'distance';
if (sortByObj == sortBy)
players.reverse();
else {
sortByObj = sortBy;
switch (sortBy) {
case 'name':
case 'status':
players.sort(function (a, b) {
return a[sortBy].toUpperCase().replace(/^Ä/, 'A').replace(/^Ö/, 'O').replace(/^Ü/, 'U').replace(/^É/, 'E').replace(/\(.*?\)/, '') > b[sortBy].toUpperCase().replace(/^Ä/, 'A').replace(/^Ö/, 'O').replace(/^Ü/, 'U').replace(/^É/, 'E').replace(/\(.*?\)/, '') ? 1 : -1;
});
break;
case 'distance':
players.sort(function (a, b) {
return a[sortBy] - b[sortBy];
});
break;
default:
players.sort(function (a, b) {
return b[sortBy] - a[sortBy];
});
break;
}
}
updateTable(players);
},
setStatus = function (player, string) {
if (player) {
player.status = string;
players.push(player);
}
counter++;
LT.BetterSheriff.progB.increase(1);
if (counter == maxCount) {
startSortDispatcher();
$('div.sheriff-LTSheriff .fancytable .row_head').css('cursor', 'pointer').click(startSortDispatcher);
$('div.sheriff-LTSheriff', SheriffWindow.DOM).append(LT.BetterSheriff.checkB.getMainDiv());
}
},
loadPlayer = function (arr) {
if (loadedIDs[arr.player_id])
setStatus(arr, SaloonWindow.playerStat(loadedIDs[arr.player_id]));
else
Ajax.remoteCallMode('profile', 'init', {
playerId: arr.player_id
}, function (resp) {
if (resp.error)
return new UserMessage(resp.message).show();
if (!wanted.includes(resp.status))
setStatus(arr, resp.status);
else if (resp.town) {
if (resp.town.town_id == Character.homeTown.town_id)
setStatus(arr, LTlang.ownTown);
else
Ajax.remoteCallMode('building_saloon', 'get_data', {
town_id: resp.town.town_id
}, function (data) {
if (data.error)
return new UserMessage(data.msg).show();
for (var l = 0; l < data.players.length; l++)
loadedIDs[data.players[l].player_id] = data.players[l];
setStatus(arr, SaloonWindow.playerStat(loadedIDs[arr.player_id]));
});
} else
Ajax.remoteCall('task', 'add', {
'tasks': {
'0': {
'player_id': arr.player_id,
'taskType': 'duel'
}
}
}, function (data) {
if (data.tasks[0].error)
setStatus(arr, data.tasks[0].msg);
else {
setStatus(arr, SaloonWindow.playerStat({
player_id: arr.player_id,
holiday_duel: true,
}));
Ajax.remoteCall('task', 'cancel', {
'tasks': {
'0': {
'queueId': data.tasks[0].task.queue_id,
'type': 'duel'
}
}
});
}
});
});
},
initData = function (pg) {
Ajax.remoteCall('building_sheriff', 'load_page', {
page: pg,
}, function (json) {
if (json.error) {
new UserMessage(json.msg).show();
return null;
}
if (pg === 0) {
maxCount = json.count * 10;
LT.BetterSheriff.progB.setMaxValue(maxCount);
}
for (var j = 0; j < 10; j++) {
if (json.result[j]) {
var res = json.result[j];
res.distance = Map.calcWayTime(myPos, {
x: res.x,
y: res.y
});
res.not_dead_amount = res.not_dead_amount || 0;
if (lvl.min > res.duellevel)
setStatus(res, LTlang.tooLow);
else if (lvl.max < res.duellevel)
setStatus(res, LTlang.tooHigh);
else
loadPlayer(res);
} else {
setStatus();
}
}
if (pg < json.count - 1)
initData(++pg);
});
},
tabclick = function (win, id) {
if (!SheriffWindow.window)
return;
SheriffWindow.window.activateTab(id).setTitle('BetterSheriff').$('div.tw2gui_window_content_pane > *', SheriffWindow.DOM).each(function (i, e) {
if ($(e).hasClass('sheriff-' + id)) {
$(e).children().fadeIn();
$(e).show();
} else {
$(e).children().fadeOut();
$(e).hide();
}
});
if (LT.loadedSheriff)
return;
LT.loadedSheriff = true;
myPos = Map.getLastQueuePosition();
lvl = {
min: Math.ceil(Character.duelLevel / 1.4),
max: Math.floor(Character.duelLevel * 1.4 - 0.01)
};
players = [];
loadedIDs = {};
counter = 0;
sortByObj = '';
initData(0);
},
initBetterSheriff = function () {
LT.loadedSheriff = false;
SheriffWindow.window.addTab('BetterSheriff', 'LTSheriff', tabclick).appendToContentPane($('<div class="sheriff-LTSheriff" style="display:none;width:590px;position:relative;left:50px;"/>'));
LT.BetterSheriff.table = new west.gui.Table().removeFooter();
for (var k = 0; k < columns.length; k++)
LT.BetterSheriff.table.addColumn(columns[k]).appendToThCell('head', columns[k], LTlang.sortBy + ' ' + LTlang[columns[k].split('"')[0]], LTlang[columns[k].split('"')[0]]);
LT.BetterSheriff.progB = new west.gui.Progressbar(0, null);
$(LT.BetterSheriff.progB.getMainDiv()).css('width', '587px');
LT.BetterSheriff.checkB = new west.gui.Checkbox().setLabel('<img src="/images/window/dailyactivity/tasks_icon.png">').setTooltip(LTlang.attackable).setCallback(function (state) {
LT.BetterSheriff.onlyAttackable = state;
updateTable(players);
}).setSelected(LT.BetterSheriff.onlyAttackable, true);
$(LT.BetterSheriff.checkB.getMainDiv()).css({
'position': 'absolute',
'top': '35px',
'right': '-65px'
});
$('div.sheriff-LTSheriff', SheriffWindow.DOM).empty().append(LT.BetterSheriff.table.getMainDiv()).append(LT.BetterSheriff.progB.getMainDiv());
$('div.sheriff-LTSheriff .fancytable .tw2gui_scrollpane').css('height', '293px');
Ajax.remoteCallMode('building_saloon', 'get_data', {
town_id: Character.homeTown.town_id
}, function (data) {
if (data.error)
return new UserMessage(data.msg).show();
SaloonWindow.self = data.self;
});
};
SheriffWindow.twlt_open = SheriffWindow.open;
SheriffWindow.open = function (townId, tabId, wanted) {
SheriffWindow.twlt_open.call(this, townId, tabId, wanted);
if (townId === Character.homeTown.town_id) {
initBetterSheriff();
}
};
}
};
LT.ChatProfessions = {
init: function () {
Chat.Formatter.twlt_formatContactClient = Chat.Formatter.formatContactClient;
Chat.Formatter.formatContactClient = function (client, room) {
var cClient = Chat.Formatter.twlt_formatContactClient.call(this, client, room);
if (client.professionId > -1)
$(cClient[0].lastChild).prepend($(Chat.Formatter.getProfessionImage(client.professionId)).css('background-color', '#D5C6A2')[0]);
return cClient;
};
}
};
LT.QuestBookSearch = {
init: function () {
QuestWindowView.clearSearch = function () {
$('.window-quest_solved .employer_description .questlog_entrie').show();
$('.window-quest_solved .solved_container .tw2gui_scrollpane_clipper_contentpane').empty();
};
QuestWindowView.searchQuest = function (txt) {
if (txt) {
txt = txt.toLowerCase();
var questGroup = new QuestGroup('searchResult', {});
for (var q in QuestLog.solved_group) {
var Qq = QuestLog.solved_group[q];
if (Qq.title.toLowerCase().includes(txt))
$('#solved_questgroup_' + q).show();
else
$('#solved_questgroup_' + q).hide();
for (var r in Qq.quests)
if (Qq.quests.hasOwnProperty(r)) {
var Qr = Qq.quests[r],
idMatch = r == txt;
if (Qr.toLowerCase().includes(txt) || idMatch)
questGroup.el.append($('<div>').prop({
id: 'solved_questgroup_quest_' + r,
className: 'questlog_entrie finish'
}).append($('<a>').attr({
href: '#',
className: 'shorten',
onclick: s('QuestGroupWindow.open(%1, %2);', q, r)
}).text((idMatch ? '#ID ' : '') + Qr)));
}
}
QuestWindowView.showSolvedGroup(questGroup);
} else
QuestWindowView.clearSearch();
};
QuestWindowView.twlt_renderGroupSolved = QuestWindowView.renderGroupSolved;
QuestWindowView.renderGroupSolved = function () {
QuestWindowView.twlt_renderGroupSolved.apply(this, arguments);
var textF = new west.gui.Textfield('questbook_search').addListener(QuestWindowView.searchQuest),
iconB = new west.gui.Iconbutton(new west.gui.Icon('search'), function () {
QuestWindowView.searchQuest(textF.getValue());
}),
icon = new west.gui.Icon('abort').getMainDiv().click(function () {
textF.setValue('');
QuestWindowView.clearSearch();
});
$('.window-quest_solved .employer_description .quest_splitter').after($('<div id=QuestBookSearch>').append(textF.getMainDiv(), iconB.getMainDiv(), icon));
};
}
};
LT.MarketRights = {
init: function () {
MarketWindow.sellRights = [{
i: 'town_new',
t: LTlang.town
}, {
i: 'friends',
t: LTlang.alliance
}, {
i: 'welt',
t: LTlang.worldwide
}
];
MarketWindow.Sell.twlt_updateTable = MarketWindow.Sell.updateTable;
MarketWindow.Sell.updateTable = function () {
MarketWindow.Sell.twlt_updateTable.apply(this, arguments);
if (Character.homeTown.town_id)
Ajax.remoteCall('building_market', 'search', {
visibility: 0
}, function (json) {
for (var i = 0; i < json.msg.search_result.length; i++) {
var jsr = json.msg.search_result[i];
if (jsr.seller_name == Character.name)
$('.marketSellsData_' + jsr.market_offer_id + ' .mps_pickup').prepend('<img src="images/icons/' + MarketWindow.sellRights[jsr.sell_rights].i + '.png" title="' + MarketWindow.sellRights[jsr.sell_rights].t + '">');
}
});
};
MarketWindow.Buy.twlt_updateTable = MarketWindow.Buy.updateTable;
MarketWindow.Buy.updateTable = function (data) {
MarketWindow.Buy.twlt_updateTable.call(this, data);
if (Character.homeTown.town_id)
for (var i = 0; i < data.length; i++)
$('#mpb_vendor_' + data[i].market_offer_id).before('<img src="images/icons/' + MarketWindow.sellRights[data[i].sell_rights].i + '.png" title="' + MarketWindow.sellRights[data[i].sell_rights].t + '">');
};
}
};
LT.EquipManagerPlus = {
init: function () {
var current = {};
var changeSlot = function (slot) {
var ws = Wear.slots;
if (slot == ws.length) {
$('#equip_manager_list').html(EquipManager.buildEquipList());
new UserMessage(LTlang.saveMessage2, 'success').show();
} else if (current[ws[slot]])
Ajax.remoteCall('inventory', 'carry', {
item_id: current[ws[slot]].obj.item_id,
last_inv_id: Bag.getLastInvId()
}, function () {
changeSlot(++slot);
});
else
Ajax.remoteCall('inventory', 'uncarry', {
last_inv_id: Bag.getLastInvId(),
type: ws[slot]
}, function () {
changeSlot(++slot);
});
};
var rename = function (equipId, nr, name) {
if (name.length < 3)
return new UserMessage(LTlang.longerName).show();
new UserMessage(LTlang.loading, 'hint').show();
current = $.extend({}, Wear.wear);
Ajax.remoteCall('inventory', 'switch_equip', {
id: equipId,
last_inv_id: Bag.getLastInvId()
}, function () {
Ajax.remoteCall('inventory', 'delete_equip', {
id: equipId
}, function () {
EquipManager.list.splice(nr, 1);
Ajax.remoteCall('inventory', 'save_equip', {
name: name
}, function (data) {
if (data.error)
new UserMessage(data.msg).show();
else
EquipManager.list.unshift(data.data);
changeSlot(0);
});
});
});
};
EquipManager.renameEquip = function (equipId, nr) {
var cont = $('<span>');
var textF = new west.gui.Textfield('equip_rename').maxlength(25).setValue(EquipManager.list[nr].name).getMainDiv();
cont.append(LTlang.newName + ': ', textF, '<p style="margin-top:10px;color:red;">' + LTlang.renameWarning + '</p>');
new west.gui.Dialog(LTlang.rename + ': ' + EquipManager.list[nr].name, cont).addButton('ok', function () {
rename(equipId, nr, $('#equip_rename').val());
}).addButton('cancel').show();
};
EquipManager.twlt_showPopup = EquipManager.showPopup;
EquipManager.showPopup = function () {
EquipManager.twlt_showPopup.apply(this, arguments);
setTimeout(function () {
$('#max_equip_count').append(' | ' + LTlang.used + ': <span id="equip_used">' + EquipManager.list.length);
}, 100);
};
EquipManager.twlt_buildEquipList = EquipManager.buildEquipList;
EquipManager.buildEquipList = function () {
if ($('#equip_used').length > 0)
$('#equip_used')[0].innerHTML = EquipManager.list.length;
EquipManager.list.sort(function (a, b) {
var a1 = a.name.toUpperCase(),
b1 = b.name.toUpperCase();
return (a1 == b1) ? 0 : (a1 > b1) ? 1 : -1;
});
var html = EquipManager.twlt_buildEquipList().replace(/60%/g, '40%').replace(/20%/g, '15%');
for (var i = 0; EquipManager.list.length > i; i++) {
var id = EquipManager.list[i].equip_manager_id;
html = html.replace('deleteEquip(' + id, 'renameEquip(' + id + ',' + i + ');\'>' + LTlang.rename + ' </a></td><td width=\'15%\'><a href=\'javascript:EquipManager.deleteEquip(' + id);
}
return html;
};
}
};
LT.ShortPopups = {
init: function () {
ItemPopup.twlt_getXHTML = ItemPopup.twlt_getXHTML || ItemPopup.getXHTML;
ItemPopup.getXHTML = function () {
var end = '';
var html = ItemPopup.twlt_getXHTML.call(this).replace(/<br><span class="inventory_popup_requirement_text(.*?)>$/, function (str) {
end = str;
return '';
}).replace('<div class="invPopup_body">', '').replace('inventory_popup"', 'invPopup_body $& style="max-width:385px;"><table><td').replace(/bonus_attr tw_green"/g, '$& style="white-space:nowrap;"').replace('<br><br><div class="item_set_bonus">', end + '</td><td style="padding-left:5px;">');
if (!html.includes(end))
html += end;
return html;
};
}
};
LT.HideNotis = {
init: function () {
var setVal5 = setInterval(function () {
var WNw = WestUi.NotiBar.work;
if (WNw) {
clearInterval(setVal5);
WNw.setMaxSize(999);
$('<div class="tw2gui_window_buttons_close" style="position:absolute;left:40px;z-index:2;" title="' + LTlang.removeWorkNotis + '" />').prependTo(WNw.element).click(function () {
var l = WNw.list.length;
while (l--)
if (WNw.list[l].tooltip.includes('job/danger.png'))
WNw.removeEntry(WNw.list[l]);
});
}
}, 1000);
}
};
LT.JobProducts = {
init: function () {
Map.PopupHandler.twlt_getJobPopup = Map.PopupHandler.twlt_getJobPopup || Map.PopupHandler.getJobPopup;
Map.PopupHandler.getJobPopup = function (d) {
var html = Map.PopupHandler.twlt_getJobPopup.apply(this, arguments);
for (var i in d.yields) {
var m = ItemManager.get(i);
html = html.replace('<img src="' + Game.cdnURL + '/images/items/yield/' + m['short'] + '.', '<div class="item"><span class="count" style="display:block;top:29px;left:0px">' + Bag.getItemCount(i) + '</span></div>$&');
}
return html;
};
}
};
LT.MapDistance = {
init: function () {
LT.addStyle('div.job_way {left:61px;width:170px;}\n .mpb_distance, .wih_distance, .mpo_distance, .mpw_distance, .mps_distance {width:45px;}\n div.tw2gui_window.marketplace div.fancytable .row > div {text-overflow:unset;}');
Map.twlt_calcWayTime = Map.twlt_calcWayTime || Map.calcWayTime;
Map.calcWayTime = function () {
var time = Map.twlt_calcWayTime.apply(this, arguments);
this.newDist = time / Game.travelSpeed / Character.speed;
return time;
};
Number.prototype.twlt_formatDuration = Number.prototype.twlt_formatDuration || Number.prototype.formatDuration;
Number.prototype.formatDuration = function () {
var dist = '';
if (Map.newDist)
dist = ' <small>' + (Math.floor(Map.newDist) / 1000).toFixed(3) + 'mi</small>';
Map.newDist = 0;
return Number.prototype.twlt_formatDuration.apply(this, arguments) + dist;
};
String.prototype.replaceAll = function () {
return this.replace(/\D/g, '');
};
}
};
LT.TraderSell = {
init: function () {
var setVal8 = setInterval(function () {
var wws = west.window.shop;
if (wws) {
clearInterval(setVal8);
LT.addStyle('.focused_new_item_shop .sellIt, .focused_marketplace .auctIt {filter: grayscale(90%)}\n .focused_tailor .not_sellable::after, .focused_gunsmith .not_sellable::after, .focused_general .not_sellable::after, .focused_marketplace .not_auctionable::after {content:"";position:absolute;width:28px;height:28px;right:0;background:url("images/window/shop/shop_icons_sprite.png")no-repeat -167px 0;} .focused_tailor .not_sellable, .focused_gunsmith .not_sellable, .focused_general .not_sellable, .focused_marketplace .not_auctionable {opacity:0.5}');
var mt = -1,
itemsToSell = [null, null],
attr = ['sellable', 'auctionable'],
className = ['sellIt', 'auctIt'],
sellItem = function (item) {
if (!item.obj[attr[mt]])
return this;
var inv_id = item.inv_id;
if (!itemsToSell[mt][inv_id]) {
itemsToSell[mt][inv_id] = item.count;
item.divMain[0].classList.add(className[mt]);
} else {
delete itemsToSell[mt][inv_id];
item.divMain[0].classList.remove(className[mt]);
}
},
setClickH = function () {
Inventory.setClickHandler({
callback: mt ? MarketWindow.onInventoryClick : wws.handleInventoryClick,
context: mt ? MarketWindow : wws,
window: mt ? MarketWindow.window : wws.getWindow()
});
},
exitSell = function (destroy) {
if (mt)
MarketWindow.onInventoryClick = MarketWindow.twlt_onInventoryClick || MarketWindow.onInventoryClick;
else
wws.handleInventoryClick = wws.twlt_handleInventoryClick || wws.handleInventoryClick;
$.each(itemsToSell[mt], function (invId) {
var bgbi = Bag.getItemIdByInvId(invId);
if (!bgbi)
return delete itemsToSell[mt][invId];
Bag.getItemByItemId(bgbi).divMain[0].classList.remove(className[mt]);
});
itemsToSell[mt] = null;
if (destroy)
return;
setClickH();
$(sellButton[mt]).css('filter', 'grayscale(90%)');
},
repItems = [
3, 201, 302, 325, 603, 802, 10003, 11003,
],
initSell = function () {
if (!itemsToSell[mt]) {
if (mt) {
MarketWindow.twlt_onInventoryClick = MarketWindow.twlt_onInventoryClick || MarketWindow.onInventoryClick;
MarketWindow.onInventoryClick = function (item) {
if (this.window.currentActiveTabId != 'sell')
return false;
sellItem(item);
return true;
};
} else {
wws.twlt_handleInventoryClick = wws.twlt_handleInventoryClick || wws.handleInventoryClick;
wws.handleInventoryClick = function (item) {
sellItem(item);
return true;
};
}
setClickH();
$(sellButton[mt]).css('filter', 'grayscale(0%)');
itemsToSell[mt] = {};
} else {
if (Object.keys(itemsToSell[mt]).length) {
var cont = '<div>',
money = 0;
$.each(itemsToSell[mt], function (invId, count) {
var bgbi = Bag.getItemIdByInvId(invId);
if (!bgbi)
return delete itemsToSell[mt][invId];
var bgo = Bag.getItemByItemId(bgbi).obj,
bi = bgo.item_base_id;
cont += count + 'x ' + LT.GUI.getSetOrItem(bi, bgo, true) + (repItems.includes(bi) ? ' (repeatable quest!)' : '') + '<br>';
money += bgo.sell_price * count;
});
cont += '<br><span class="invPopup_sellicon"/> $' + money + '</span></div>';
new west.gui.Dialog(LTlang.sellItems, cont).setDraggable(true).addButton('yes', function () {
$.each(itemsToSell[mt], function (inv_id, amount) {
if (mt) {
var item = Bag.getItemByInvId(inv_id).obj;
var params = MarketWindow.Offer.getOfferObject(item.item_id, 0, (item.sell_price || Math.round(item.price / 2)) * amount, amount, 1, 0, 3, '');
Ajax.remoteCall('building_market', 'putup', params, function (resp) {
if (resp.error)
return new UserMessage(resp.msg).show();
Character.setMoney(resp.msg.money);
Character.setDeposit(resp.msg.deposit);
new UserMessage(s('Die Ware wird zum Kauf angeboten, die Gebühr beträgt $ %1', resp.msg.costs), 'success').show();
}, MarketWindow);
} else
wws.requestSell({
inv_id: inv_id,
count: amount
});
});
itemsToSell[mt] = {};
if (mt) {
EventHandler.signal('inventory_changed');
MarketWindow.Sell.initData();
}
exitSell();
}).addButton('cancel').show();
} else
exitSell();
}
},
sellButton = [null, null],
icon = ['dollar', 'box'],
addMtButton = function (winmt) {
mt = winmt;
if (!$('.LT_' + attr[mt] + '_button').length) {
sellButton[mt] = new west.gui.Iconbutton(new west.gui.Icon(icon[mt]), initSell).addClass('LT_' + attr[mt] + '_button').getMainDiv();
$(sellButton[mt]).css({
'position': 'absolute',
'left': 0,
'z-index': 1,
'filter': 'grayscale(90%)'
});
Inventory.DOM.children('.actions').prepend(sellButton[mt]);
}
};
wws.twlt_openSellInventory = wws.twlt_openSellInventory || wws.openSellInventory;
wws.openSellInventory = function () {
exitSell(true);
wws.twlt_openSellInventory.apply(this, arguments);
addMtButton(0);
};
/*MarketWindow.twlt_open = MarketWindow.twlt_open || MarketWindow.open;
MarketWindow.open = function () {
exitSell(true);
MarketWindow.twlt_open.apply(this, arguments);
addMtButton(1);
};*/
Inventory.twlt_setClickHandler = Inventory.twlt_setClickHandler || Inventory.setClickHandler;
Inventory.setClickHandler = function (h) {
if (sellButton[mt])
$(sellButton[mt]).hide();
var win = h && h.window.id,
winmt = ['new_item_shop', 'marketplace'].indexOf(win);
if (winmt > -1) {
mt = winmt;
h.callback = mt ? MarketWindow.onInventoryClick : wws.handleInventoryClick;
if (sellButton[mt])
$(sellButton[mt]).show();
}
Inventory.twlt_setClickHandler.apply(this, arguments);
};
Inventory.twlt_undock = Inventory.twlt_undock || Inventory.undock;
Inventory.undock = function () {
if (itemsToSell[mt])
exitSell(true);
if (sellButton[mt])
sellButton[mt].remove();
return Inventory.twlt_undock.apply(this, arguments);
};
var tIp = tw2widget.InventoryItem.prototype;
tIp.twlt_initDisplay = tIp.twlt_initDisplay || tIp.initDisplay;
tIp.initDisplay = function () {
this.twlt_initDisplay.apply(this, arguments);
if (!this.obj.auctionable)
this.addClass('not_auctionable');
};
west.window.shop.trackBuyItem = function () {};
}
}, 1000);
}
};
LT.TouchControl = {
init: function () {
var fingers = 0,
wgSbp = west.gui.Scrollbar.prototype;
wgSbp.twlt_init = wgSbp.twlt_init || wgSbp.init;
wgSbp.init = function () {
this.twlt_init.apply(this, arguments);
var start,
that = this;
$(this.divMain).on('touchstart', function (e) {
start = e.originalEvent.touches[0].clientY;
}).on('touchmove', function (e) {
e.stopPropagation();
e.preventDefault();
var move = e.originalEvent.changedTouches[0].clientY;
that.move(move - start);
start = move;
});
};
var wgSpp = west.gui.Scrollpane.prototype;
wgSpp.twlt_init = wgSpp.twlt_init || wgSpp.init;
wgSpp.init = function () {
this.twlt_init.apply(this, arguments);
var start,
coP = this.contentPane,
clP = this.clipPane,
vB = this.verticalBar,
ratio;
$(this.divMain).on('touchstart', function (e) {
fingers++;
start = e.originalEvent.touches[0].clientY;
ratio = (vB._divPullArea.height() - vB._divPulley.height()) / (clP.height() - coP.height());
}).on('touchmove', function (e) {
if (fingers != 1)
return;
e.preventDefault();
var move = e.originalEvent.changedTouches[0].clientY,
topPos = move - start;
vB.move(ratio * topPos);
start = move;
}).on('touchend', function (e) {
fingers = 0;
});
};
var start,
currZoom = 1;
$('#ui_minimap').on('touchstart', function (e) {
fingers++;
start = e.originalEvent.touches[0].clientY;
}).on('touchmove', function (e) {
if (fingers != 1)
return;
e.preventDefault();
var move = e.originalEvent.changedTouches[0].clientY,
cZmb = currZoom + (move - start) / 100;
if (cZmb >= 0.65 && cZmb <= 5)
document.getElementById('map').style.zoom = cZmb;
}).on('touchend', function (e) {
fingers = 0;
currZoom = $('#map').css('zoom') * 1;
Map.resize();
});
Map.twlt_getCurrentMid = Map.twlt_getCurrentMid || Map.getCurrentMid;
Map.getCurrentMid = function () {
var xy = this.twlt_getCurrentMid.apply(this, arguments);
return {
x: xy.x / currZoom,
y: xy.y / currZoom
};
};
Map.twlt_resize = Map.twlt_resize || Map.resize;
Map.resize = function () {
if (!Map.initialized)
return;
this.twlt_resize.apply(this, arguments);
this.width /= currZoom;
this.height /= currZoom;
};
var start2;
$('#map').on('touchstart', function (e) {
fingers++;
var eoEt = e.originalEvent.touches[0];
start2 = [eoEt.clientX, eoEt.clientY];
}).on('touchmove', function (e) {
if (fingers != 1)
return;
e.preventDefault();
var eoEcT = e.originalEvent.changedTouches[0],
move = [eoEcT.clientX, eoEcT.clientY];
Map.Drag.scrollby((start2[0] - move[0]) / currZoom, (start2[1] - move[1]) / currZoom);
start2 = move;
}).on('touchend', function (e) {
fingers = 0;
});
var wgWp = west.gui.Window.prototype;
wgWp.twlt_init = wgWp.twlt_init || wgWp.init;
wgWp.init = function () {
this.twlt_init.apply(this, arguments);
var start,
that = this,
tdM = that.divMain,
currPos;
$('div.tw2gui_inner_window_title', tdM).on('touchstart', function (e) {
fingers++;
var eoEt = e.originalEvent.touches[0];
start = [eoEt.clientX, eoEt.clientY];
that.bringToTop();
}).on('touchmove', function (e) {
if (fingers != 1)
return;
e.preventDefault();
currPos = [tdM.offsetLeft, tdM.offsetTop];
var eoEcT = e.originalEvent.changedTouches[0],
move = [eoEcT.clientX, eoEcT.clientY],
res = [currPos[0] + move[0] - start[0], currPos[1] + move[1] - start[1]];
if (res[0] > -1) {
tdM.style.left = res[0] + 'px';
currPos[0] = res[0];
}
if (res[1] > -1) {
tdM.style.top = res[1] + 'px';
currPos[1] = res[1];
}
start = move;
}).on('touchend', function (e) {
fingers = 0;
});
};
LT.addStyle('img {-webkit-touch-callout:none;}');
var timer,
timer2,
wph = west.popup.handler;
$(document).on('touchstart', function (e) {
timer = setTimeout(function () {
wph.handleMouseMove.call(wph, e);
}, 500);
timer2 = setTimeout(function () {
e.ctrlKey = 1;
LT.CalcTwdb.show(e);
}, 2000);
}).on('touchend', function (e) {
clearTimeout(timer);
clearTimeout(timer2);
});
}
};
LT.CalcTwdb = {
show: function (e) {
if (!e.ctrlKey && !e.altKey)
return;
var t = $(e.target).data();
var tdi = t.itemId || t.itemid || t.setkey;
if (!tdi)
return;
var add;
if (e.altKey) {
add = isNaN(tdi) ? 'supravy&set=' : 'item&id=';
LT.GUI.open('openFrame', 'https://tw-db.info/?strana=' + add + tdi, [1000, 630]);
LT.GUI.makeList();
} else {
add = isNaN(tdi) ? 'sets/' : 'item/';
window.open('https://tw-calc.net/' + add + tdi);
}
},
init: function () {
$(document).click(function (e) {
LT.CalcTwdb.show(e);
});
Inventory.clickHandler = function (item_id, e) {
var item = Bag.getItemByItemId(item_id);
if (e.shiftKey || e.ctrlKey || e.altKey)
return;
if (this.click && this.click.callback.apply(this.click.context, [item]))
return;
if (item.obj.action) {
$.globalEval(item.obj.action);
return;
}
if (wman.getById(Wear.uid)) {
Wear.carry(item);
return;
}
return;
};
}
(),
};
LT.CollectReminder = function () {
var setVal4 = setInterval(function () {
if (window.Bag && Bag.loaded) {
clearInterval(setVal4);
var nulls = [];
for (var y in LT.cooldown) {
var cdwn = LT.Data.cooldown && LT.Data.cooldown[y] || LT.cooldown[y];
var item = Bag.getItemsByBaseItemId(y)[0];
if (cdwn == 1 && item) {
var coold = BuffList.cooldowns[item.obj.item_id] && BuffList.cooldowns[item.obj.item_id].time || item.cooldown;
var sec = coold * 1000 - new ServerDate().getTime();
if (!(sec > 0))
nulls.push(item);
else if (!LT.cooldownTimer[y])
LT.cooldownSetTime(y, [item], sec);
} else if (cdwn == 0.5 && LT.cooldownTimer[y]) {
clearTimeout(LT.cooldownTimer[y]);
LT.cooldownTimer[y] = 0;
}
}
if (nulls.length)
LT.cooldownSetTime(0, nulls, 0);
}
}, 2000);
};
LT.SkipOpen = function () {
ItemUse.twlt_use = ItemUse.use;
ItemUse.use = function (itemId) {
var baseId = itemId / 1000,
skips = LT.Data.skipOpen && LT.Data.skipOpen[baseId] || LT.skipOpen[baseId];
if (skips == 1)
Ajax.remoteCall('itemuse', 'use_item', {
item_id: itemId,
lastInvId: Bag.getLastInvId()
}, function (res) {
if (res.error)
return new UserMessage(res.msg).show();
var m = res.msg.effects[0],
widget;
switch (m.type) {
case 'lottery':
case 'content':
var mi = m.items[0],
cont = {};
cont[mi.item_id] = mi.count;
widget = new tw2widget.Item(ItemManager.get(mi.item_id)).setCount(mi.count).getMainDiv();
$.get('https://tw-calc.net/service/chest-export', {
chest: itemId,
count: 1,
content: cont,
version: Game.version
}, function () {}, 'jsonp');
if (ItemUse.twdb)
ItemUse.twdb(itemId, res);
break;
case 'ses':
widget = ' <img src="images/icons/' + m.event + '.png" title="' + m.name.escapeHTML() + '" /> ' + m.amount;
break;
}
var mess = $('<div>' + LTlang.skipDone + ':<br></div>').append(widget);
new UserMessage(mess, 'success').show();
Bag.updateChanges(res.msg.changes);
EventHandler.signal('item_used', [itemId]);
});
else
ItemUse.twlt_use.apply(this, arguments);
};
};
LT.Skript.init();
} else if (location.href.includes('?strana=invent&x=')) {
var lg = LTstart.langs,
lang = /lang=([a-z]+)/.exec(document.cookie),
LTlang = lang && lg.hasOwnProperty(lang[1]) ? lg[lang[1]] : lg.en,
done = false,
i = document.getElementsByClassName('bag_empty'),
wrld = document.getElementById('char_server').textContent,
saveCounts = {},
sameWorld = false,
hide = function (it) {
saveCounts = {};
var sameItem = false;
for (var j of i) {
var m = j.children[1].innerHTML.match(/,\d,\d,\d,(\d),\d/),
auct = m ? m[1] == 1 : true,
id = j.id.slice(1),
level = id.slice(-1) > 0;
if (it)
sameItem = sameWorld ? it[id] : !it[id];
if (!auct || level || sameItem)
j.style.display = 'none';
else if (it && it[id]) {
var count = j.firstChild.firstChild;
if (count.textContent > it[id]) {
saveCounts[j.id] = count.textContent;
count.textContent = it[id];
}
}
}
$('.inputV2')[0].style.display = 'none';
};
LTstart.compInv = function () {
if (done) {
done = false;
for (var h of i) {
h.style.display = 'inline-block';
if (saveCounts[h.id])
h.firstChild.firstChild.textContent = saveCounts[h.id];
}
$('.inputV2')[0].style.display = 'inline-block';
} else {
done = true;
var url = prompt(LTlang.compInv + ': ');
if (url && url.includes('?strana=invent&x='))
$.ajax({
url: url
}).done(function (data) {
var regex = /<div id='i(\d+)' class='bag_empty'><span class="pocetx"><span class="pocet_cislox">(\d+)<\/span>/g,
t,
items = {},
world = /id="char_server">(.*?)</.exec(data);
if (!world) {
alert('invalid inventory');
done = false;
}
sameWorld = wrld == world[1];
while (t = regex.exec(data)) {
var u = sameWorld ? t[1].slice(0, -3) + '000' : t[1];
items[u] = t[2];
}
hide(items);
}).fail(function () {
alert(arguments[1] + arguments[2]);
done = false;
});
else {
sameWorld = false;
hide();
}
}
};
$('.inputV2').after('<img src="https://westzz.innogamescdn.com/images/items/yield/pick.png" width="25" style="position:absolute;right:0px;cursor:pointer;" onclick="LTstart.compInv();"/>');
} else {
window.onload = function () {
var lg = LTstart.langs,
LTlang = lg.hasOwnProperty(location.href.substr(21, 2)) ? lg[location.href.substr(21, 2)] : lg.en;
Worlds.show = (function () {
Worlds.twlt_show = Worlds.show;
return function () {
Worlds.twlt_show.apply(this, arguments);
var first = true;
var plyWrl = Worlds.playerWorlds,
state = (JSON.parse(localStorage.getItem('TWLTcustom1')) || {}),
t1 = [],
t2 = [];
for (var a in plyWrl) {
if (plyWrl[a][1] !== null) {
t1.push(a);
if (!state[a])
state[a] = false;
else if (state[a] == true)
t2.push(a);
}
}
var loginNow = function (t) {
for (var x = 0; x < t.length; x++) {
if (first)
Auth.login(plyWrl[t[x]]);
else
window.open(location.origin + '#loginWorld' + t[x], '_blank');
first = false;
}
};
$('#worldsWrapper').append('<div id="loginMore" />');
$('#loginMore').append('<a id="loginAll" title="' + LTlang.loginAll2 + '" href="#" >' + LTlang.loginAll1 + '</a>').append('<a id="custom" title="' + LTlang.custom2 + '" href="#" >' + LTlang.custom1 + '</a>').append('<img id="cust1" title="' + LTlang.edit + '" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuOWwzfk4AAAFOSURBVDhPY6A6KKnL4j60a2Xf1jWz/6PjQ5unbIUqww3WLpr0Hx0/vXXq/9e39/5fPL4VzAdZAlVOGFw6s9t49sQGsAF/f30GGwLiQ6UJA5Dio7tW/X/z6AIYgwxaNKPr7/1rh6ShSnADkJ/banPB/r9z+QDYIBAfRE9oKf7f2Vz8BKoUE+ydEfj/5Orm/88vb/1fVxwHdjZI88p5zc0gevemRWBxqHJUANP86+Wu/9f3TPu/Y1Yh2NbCskQWkPyiOTmiIM0gw8AakAFI88FFVWCbQYasn5iBVeG0SWWeUCYCLKl1B9sG0gwyZFl73P+99d79UGn8AKQZZBtIM8iQ2XXh2J2IDYA0g2x7cGwZ2JDJpf7E2zwnwwxsG0gzyJCuXC/iNYMAsubGFDvSNIMAyEaQFxoiDf93Vgb3QIWJBwtb3NJANoNoqBAJgIEBAEbiFXTTZGcSAAAAAElFTkSuQmCC"/>');
$('#selectWorldText').css('margin-bottom', '20px');
$('#loginAll').css({
'background-image': 'url("' + LTstart.Images('LT_login') + '")',
'height': '45px',
'width': '180px',
'line-height': '40px',
'font-weight': 'bold',
'font-size': '12px',
'margin-left': '10px',
'top': '35px',
'z-index': '1',
'position': 'absolute',
'cursor': 'pointer',
}).mouseenter(function () {
$(this).css('background-position', '0px -45px');
}).mouseleave(function () {
$(this).css('background-position', '0px 0px');
}).click(function () {
loginNow(t1);
});
$('#custom').css({
'background-image': 'url("' + LTstart.Images('LT_loginC') + '")',
'background-repeat': 'no-repeat',
'height': '36px',
'width': '144px',
'text-align': 'left',
'padding-left': '15px',
'line-height': '32px',
'font-weight': 'bold',
'font-size': '11px',
'margin-left': '45px',
'top': '70px',
'z-index': '1',
'position': 'absolute',
'cursor': 'pointer',
}).mouseenter(function () {
$(this).css('background-position', '0px -36px');
}).mouseleave(function () {
$(this).css('background-position', '0px 0px');
}).click(function () {
loginNow(t2);
});
$('#cust1').css({
'margin-left': '160px',
'top': '78px',
'z-index': '2',
'position': 'absolute',
'cursor': 'pointer',
}).click(function () {
var checkB = {},
checkD = {};
$('#loginMore').hide();
$('#allWorlds').empty();
$('#allWorlds').css('text-align', 'left');
for (var k = 0; k < t1.length; k++) {
checkB[t1[k]] = new west.gui.Checkbox().setLabel(Worlds.data[t1[k]].name).setSelected(state[t1[k]]).appendTo($('#allWorlds'));
$('#allWorlds').append('<br><div style="height:5px;" />');
}
var butB = new west.gui.Button(LTlang.save, function () {
for (var l in checkB) {
checkD[l] = checkB[l].isSelected();
localStorage.setItem('TWLTcustom1', JSON.stringify(checkD));
}
new UserMessage(LTlang.saveMessage2, 'success').show();
});
butB.appendTo($('#allWorlds'));
});
};
})();
};
if (location.hash.includes('loginWorld')) {
setTimeout(function () {
$('#loginButton').click();
var val = setInterval(function () {
var u = Worlds.playerWorlds;
if (Object.keys(u).length !== 0) {
clearInterval(val);
Auth.login(u[parseFloat(location.hash.replace(/\D/g, ''))]);
}
}, 500);
}, 1000);
}
}
}
});