Refactor modules, closes #223
* All modules are sandboxed now * All images,sounds,fonts,translations and styles were moved to "data" folder * Reorganize image files folders * Remove unmaintained modules: client_particles, client_shaders * Implement new automatic way to load styles and fonts * Add hide/show offline option in VipList * Add invite/exclude to/from private channel in players menus * Many other minor changes
@@ -1,4 +1,4 @@
|
||||
local musicFilename = "startup"
|
||||
local musicFilename = "/sounds/startup"
|
||||
local musicChannel = g_sounds.getChannel(1)
|
||||
|
||||
function setMusic(filename)
|
||||
@@ -75,7 +75,7 @@ function init()
|
||||
end
|
||||
|
||||
g_window.setTitle(g_app.getName())
|
||||
g_window.setIcon(resolvepath('clienticon'))
|
||||
g_window.setIcon('/images/clienticon')
|
||||
|
||||
-- poll resize events
|
||||
g_window.poll()
|
||||
|
@@ -10,7 +10,7 @@ Module
|
||||
@onUnload: terminate()
|
||||
|
||||
load-later:
|
||||
- client_skins
|
||||
- client_styles
|
||||
- client_locales
|
||||
//- client_particles
|
||||
- client_topmenu
|
||||
|
Before Width: | Height: | Size: 518 B |
@@ -1,15 +1,13 @@
|
||||
Background = { }
|
||||
|
||||
-- private variables
|
||||
local background
|
||||
|
||||
-- public functions
|
||||
function Background.init()
|
||||
background = g_ui.displayUI('background.otui')
|
||||
function init()
|
||||
background = g_ui.displayUI('background')
|
||||
background:lower()
|
||||
|
||||
local clientVersionLabel = background:getChildById('clientVersionLabel')
|
||||
clientVersionLabel:setText('OTClient ' .. g_app.getVersion() .. '\n' ..
|
||||
clientVersionLabel:setText(g_app.getName() .. ' ' .. g_app.getVersion() .. '\n' ..
|
||||
'Rev ' .. g_app.getBuildRevision() .. ' ('.. g_app.getBuildCommit() .. ')\n' ..
|
||||
'Built on ' .. g_app.getBuildDate())
|
||||
|
||||
@@ -17,13 +15,13 @@ function Background.init()
|
||||
g_effects.fadeIn(clientVersionLabel, 1500)
|
||||
end
|
||||
|
||||
connect(g_game, { onGameStart = Background.hide })
|
||||
connect(g_game, { onGameEnd = Background.show })
|
||||
connect(g_game, { onGameStart = hide })
|
||||
connect(g_game, { onGameEnd = show })
|
||||
end
|
||||
|
||||
function Background.terminate()
|
||||
disconnect(g_game, { onGameStart = Background.hide })
|
||||
disconnect(g_game, { onGameEnd = Background.show })
|
||||
function terminate()
|
||||
disconnect(g_game, { onGameStart = hide })
|
||||
disconnect(g_game, { onGameEnd = show })
|
||||
|
||||
g_effects.cancelFade(background:getChildById('clientVersionLabel'))
|
||||
background:destroy()
|
||||
@@ -32,14 +30,14 @@ function Background.terminate()
|
||||
Background = nil
|
||||
end
|
||||
|
||||
function Background.hide()
|
||||
function hide()
|
||||
background:hide()
|
||||
end
|
||||
|
||||
function Background.show()
|
||||
function show()
|
||||
background:show()
|
||||
end
|
||||
|
||||
function Background.hideVersionLabel()
|
||||
function hideVersionLabel()
|
||||
background:getChildById('clientVersionLabel'):hide()
|
||||
end
|
||||
|
@@ -3,13 +3,8 @@ Module
|
||||
description: Handles the background of the login screen
|
||||
author: edubart
|
||||
website: www.otclient.info
|
||||
|
||||
dependencies:
|
||||
- client_topmenu
|
||||
|
||||
@onLoad: |
|
||||
dofile 'background'
|
||||
Background.init()
|
||||
|
||||
@onUnload: |
|
||||
Background.terminate()
|
||||
sandboxed: true
|
||||
scripts: [ background ]
|
||||
dependencies: [ client_topmenu ]
|
||||
@onLoad: init()
|
||||
@onUnload: terminate()
|
||||
|
@@ -1,6 +1,6 @@
|
||||
Panel
|
||||
id: background
|
||||
image-source: /client_background/background.png
|
||||
image-source: /images/background
|
||||
image-smooth: true
|
||||
image-fixed-ratio: true
|
||||
anchors.top: topMenu.bottom
|
||||
|
Before Width: | Height: | Size: 1.3 MiB |
@@ -92,7 +92,7 @@ end
|
||||
local function onLoginWait(message, time)
|
||||
CharacterList.destroyLoadBox()
|
||||
|
||||
waitingWindow = g_ui.displayUI('waitinglist.otui')
|
||||
waitingWindow = g_ui.displayUI('waitinglist')
|
||||
|
||||
local label = waitingWindow:getChildById('infoLabel')
|
||||
label:setText(message)
|
||||
@@ -170,7 +170,7 @@ function CharacterList.terminate()
|
||||
end
|
||||
|
||||
function CharacterList.create(characters, account, otui)
|
||||
if not otui then otui = 'characterlist.otui' end
|
||||
if not otui then otui = 'characterlist' end
|
||||
|
||||
if charactersWindow then
|
||||
charactersWindow:destroy()
|
||||
|
@@ -60,9 +60,9 @@ end
|
||||
|
||||
-- public functions
|
||||
function EnterGame.init()
|
||||
enterGame = g_ui.displayUI('entergame.otui')
|
||||
enterGameButton = TopMenu.addLeftButton('enterGameButton', tr('Login') .. ' (Ctrl + G)', 'login.png', EnterGame.openWindow)
|
||||
motdButton = TopMenu.addLeftButton('motdButton', tr('Message of the day'), 'motd.png', EnterGame.displayMotd)
|
||||
enterGame = g_ui.displayUI('entergame')
|
||||
enterGameButton = modules.client_topmenu.addLeftButton('enterGameButton', tr('Login') .. ' (Ctrl + G)', '/images/topbuttons/login', EnterGame.openWindow)
|
||||
motdButton = modules.client_topmenu.addLeftButton('motdButton', tr('Message of the day'), '/images/topbuttons/motd', EnterGame.displayMotd)
|
||||
motdButton:hide()
|
||||
g_keyboard.bindKeyDown('Ctrl+G', EnterGame.openWindow)
|
||||
|
||||
|
Before Width: | Height: | Size: 962 B |
Before Width: | Height: | Size: 331 B |
@@ -1,58 +0,0 @@
|
||||
Extended = {}
|
||||
|
||||
-- private variables
|
||||
local callbacks = {}
|
||||
|
||||
-- hooked functions
|
||||
local function onExtendedOpcode(protocol, opcode, buffer)
|
||||
local callback = callbacks[opcode]
|
||||
if callback then
|
||||
callback(protocol, opcode, buffer)
|
||||
end
|
||||
end
|
||||
|
||||
-- public functions
|
||||
function Extended.init()
|
||||
connect(ProtocolGame, { onExtendedOpcode = onExtendedOpcode } )
|
||||
end
|
||||
|
||||
function Extended.terminate()
|
||||
disconnect(ProtocolGame, { onExtendedOpcode = onExtendedOpcode } )
|
||||
callbacks = nil
|
||||
Extended = nil
|
||||
end
|
||||
|
||||
function Extended.register(opcode, callback)
|
||||
if not callback or type(callback) ~= 'function' then
|
||||
error('Invalid callback.')
|
||||
return false
|
||||
end
|
||||
|
||||
if opcode < 0 or opcode > 255 then
|
||||
error('Invalid opcode. Range: 0-255')
|
||||
return false
|
||||
end
|
||||
|
||||
if callbacks[opcode] then
|
||||
error('Opcode is already taken.')
|
||||
return false
|
||||
end
|
||||
|
||||
callbacks[opcode] = callback
|
||||
return true
|
||||
end
|
||||
|
||||
function Extended.unregister(opcode)
|
||||
if opcode < 0 or opcode > 255 then
|
||||
error('Invalid opcode. Range: 0-255')
|
||||
return false
|
||||
end
|
||||
|
||||
if not callbacks[opcode] then
|
||||
error('Opcode is not registered.')
|
||||
return false
|
||||
end
|
||||
|
||||
callbacks[opcode] = nil
|
||||
return true
|
||||
end
|
@@ -1,12 +0,0 @@
|
||||
Module
|
||||
name: client_extended
|
||||
description: Manage client extended messages callbacks
|
||||
author: baxnie
|
||||
website: www.otclient.info
|
||||
|
||||
@onLoad: |
|
||||
dofile 'extended'
|
||||
Extended.init()
|
||||
|
||||
@onUnload: |
|
||||
Extended.terminate()
|
@@ -1,88 +1,86 @@
|
||||
Locales = { }
|
||||
|
||||
dofile 'neededtranslations.lua'
|
||||
dofile 'neededtranslations'
|
||||
|
||||
-- private variables
|
||||
local defaultLocaleName = 'en'
|
||||
local installedLocales
|
||||
local currentLocale
|
||||
local localeComboBox
|
||||
|
||||
-- private functions
|
||||
local function sendLocale(localeName)
|
||||
LocaleExtendedId = 1
|
||||
|
||||
function sendLocale(localeName)
|
||||
local protocolGame = g_game.getProtocolGame()
|
||||
if protocolGame then
|
||||
protocolGame:sendExtendedOpcode(ExtendedLocales, localeName)
|
||||
protocolGame:sendExtendedOpcode(LocaleExtendedId, localeName)
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function onLocaleComboBoxOptionChange(self, optionText, optionData)
|
||||
if Locales.setLocale(optionData) then
|
||||
g_settings.set('locale', optionData)
|
||||
sendLocale(currentLocale.name)
|
||||
function createWindow()
|
||||
localesWindow = g_ui.displayUI('locales')
|
||||
local localesPanel = localesWindow:getChildById('localesPanel')
|
||||
|
||||
for name,locale in pairs(installedLocales) do
|
||||
local widget = g_ui.createWidget('LocalesButton', localesPanel)
|
||||
widget:setImageSource('/images/flags/' .. name .. '')
|
||||
widget:setText(locale.languageName)
|
||||
widget.onClick = function() selectFirstLocale(name) end
|
||||
end
|
||||
|
||||
addEvent(function() addEvent(function() localesWindow:raise() localesWindow:focus() end) end)
|
||||
end
|
||||
|
||||
function selectFirstLocale(name)
|
||||
if localesWindow then
|
||||
localesWindow:destroy()
|
||||
localesWindow = nil
|
||||
end
|
||||
if setLocale(name) then
|
||||
g_modules.reloadModules()
|
||||
end
|
||||
end
|
||||
|
||||
-- hooked functions
|
||||
local function onGameStart()
|
||||
function onGameStart()
|
||||
sendLocale(currentLocale.name)
|
||||
end
|
||||
|
||||
local function onExtendedLocales(protocol, opcode, buffer)
|
||||
function onExtendedLocales(protocol, opcode, buffer)
|
||||
local locale = installedLocales[buffer]
|
||||
if locale then
|
||||
localeComboBox:setCurrentOption(locale.languageName)
|
||||
if locale and setLocale(locale.name) then
|
||||
g_modules.reloadModules()
|
||||
end
|
||||
end
|
||||
|
||||
-- public functions
|
||||
function Locales.init()
|
||||
function init()
|
||||
installedLocales = {}
|
||||
|
||||
Locales.installLocales('locales')
|
||||
installLocales('/locales')
|
||||
|
||||
local userLocaleName = g_settings.get('locale', 'false')
|
||||
if userLocaleName ~= 'false' and Locales.setLocale(userLocaleName) then
|
||||
if userLocaleName ~= 'false' and setLocale(userLocaleName) then
|
||||
pdebug('Using configured locale: ' .. userLocaleName)
|
||||
else
|
||||
pdebug('Using default locale: ' .. defaultLocaleName)
|
||||
Locales.setLocale(defaultLocaleName)
|
||||
g_settings.set('locale', defaultLocaleName)
|
||||
setLocale(defaultLocaleName)
|
||||
connect(g_app, {onRun = createWindow})
|
||||
end
|
||||
|
||||
addEvent( function()
|
||||
localeComboBox = g_ui.createWidget('ComboBoxRounded', rootWidget:recursiveGetChildById('rightButtonsPanel'))
|
||||
localeComboBox:setFixedSize(true)
|
||||
for key,value in pairs(installedLocales) do
|
||||
localeComboBox:addOption(value.languageName, value.name)
|
||||
end
|
||||
localeComboBox:setCurrentOption(currentLocale.languageName)
|
||||
localeComboBox.onOptionChange = onLocaleComboBoxOptionChange
|
||||
end, false)
|
||||
|
||||
Extended.register(ExtendedLocales, onExtendedLocales)
|
||||
ProtocolGame.registerExtendedOpcode(LocaleExtendedId, onExtendedLocales)
|
||||
connect(g_game, { onGameStart = onGameStart })
|
||||
end
|
||||
|
||||
function Locales.terminate()
|
||||
function terminate()
|
||||
installedLocales = nil
|
||||
currentLocale = nil
|
||||
|
||||
if localeComboBox then
|
||||
localeComboBox:destroy()
|
||||
localeComboBox = nil
|
||||
end
|
||||
|
||||
Extended.unregister(ExtendedLocales)
|
||||
ProtocolGame.unregisterExtendedOpcode(LocaleExtendedId)
|
||||
disconnect(g_game, { onGameStart = onGameStart })
|
||||
end
|
||||
|
||||
function generateNewTranslationTable(localename)
|
||||
local locale = installedLocales[localename]
|
||||
for _i,k in pairs(Locales.neededTranslations) do
|
||||
for _i,k in pairs(neededTranslations) do
|
||||
local trans = locale.translation[k]
|
||||
k = k:gsub('\n','\\n')
|
||||
k = k:gsub('\t','\\t')
|
||||
@@ -100,15 +98,16 @@ function generateNewTranslationTable(localename)
|
||||
end
|
||||
end
|
||||
|
||||
function Locales.installLocale(locale)
|
||||
function installLocale(locale)
|
||||
if not locale or not locale.name then
|
||||
error('Unable to install locale.')
|
||||
end
|
||||
|
||||
if locale.name ~= defaultLocaleName then
|
||||
for _i,k in pairs(Locales.neededTranslations) do
|
||||
for _i,k in pairs(neededTranslations) do
|
||||
if locale.translation[k] == nil then
|
||||
pwarning('Translation for locale \'' .. locale.name .. '\' not found: \"' .. k.. '\"')
|
||||
local ktext = string.gsub(k, "\n", "\\n")
|
||||
pwarning('Translation for locale \'' .. locale.name .. '\' not found: \"' .. ktext .. '\"')
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -120,35 +119,35 @@ function Locales.installLocale(locale)
|
||||
end
|
||||
else
|
||||
installedLocales[locale.name] = locale
|
||||
if localeComboBox then
|
||||
localeComboBox.onOptionChange = nil
|
||||
localeComboBox:addOption(locale.languageName, locale.name)
|
||||
localeComboBox.onOptionChange = onLocaleComboBoxOptionChange
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Locales.installLocales(directory)
|
||||
function installLocales(directory)
|
||||
dofiles(directory)
|
||||
end
|
||||
|
||||
function Locales.setLocale(name)
|
||||
function setLocale(name)
|
||||
local locale = installedLocales[name]
|
||||
if not locale then
|
||||
pwarning("Locale " .. name .. ' does not exist.')
|
||||
return false
|
||||
end
|
||||
currentLocale = locale
|
||||
if Locales.onLocaleChanged then Locales.onLocaleChanged(name) end
|
||||
g_settings.set('locale', name)
|
||||
if onLocaleChanged then onLocaleChanged(name) end
|
||||
return true
|
||||
end
|
||||
|
||||
function Locales.getComboBox()
|
||||
return localeComboBox
|
||||
function getInstalledLocales()
|
||||
return installedLocales
|
||||
end
|
||||
|
||||
function getCurrentLocale()
|
||||
return currentLocale
|
||||
end
|
||||
|
||||
-- global function used to translate texts
|
||||
function tr(text, ...)
|
||||
function _G.tr(text, ...)
|
||||
if currentLocale then
|
||||
if tonumber(text) then
|
||||
-- todo: use locale information to calculate this. also detect floating numbers
|
||||
@@ -164,8 +163,10 @@ function tr(text, ...)
|
||||
elseif tostring(text) then
|
||||
local translation = currentLocale.translation[text]
|
||||
if not translation then
|
||||
if currentLocale.name ~= defaultLocaleName then
|
||||
pwarning('Unable to translate: \"' .. text .. '\"')
|
||||
if translation == nil then
|
||||
if currentLocale.name ~= defaultLocaleName then
|
||||
pwarning('Unable to translate: \"' .. text .. '\"')
|
||||
end
|
||||
end
|
||||
translation = text
|
||||
end
|
||||
|
@@ -1,16 +1,10 @@
|
||||
Module
|
||||
name: client_locales
|
||||
description: Translates texts to selected language
|
||||
author: baxnie
|
||||
author: baxnie, edubart
|
||||
website: www.otclient.info
|
||||
|
||||
dependencies:
|
||||
- client_extended
|
||||
- client_topmenu
|
||||
|
||||
@onLoad: |
|
||||
dofile 'locales'
|
||||
Locales.init()
|
||||
|
||||
@onUnload: |
|
||||
Locales.terminate()
|
||||
sandboxed: true
|
||||
scripts: [ locales ]
|
||||
dependencies: [ client_topmenu ]
|
||||
@onLoad: init()
|
||||
@onUnload: terminate()
|
||||
|
37
modules/client_locales/locales.otui
Normal file
@@ -0,0 +1,37 @@
|
||||
LocalesMainLabel < Label
|
||||
font: sans-bold-16px
|
||||
|
||||
LocalesButton < UIWidget
|
||||
size: 96 96
|
||||
image-size: 96 96
|
||||
image-smooth: true
|
||||
text-offset: 0 96
|
||||
font: verdana-11px-antialised
|
||||
|
||||
UIWindow
|
||||
id: localesWindow
|
||||
background-color: #000000
|
||||
opacity: 0.90
|
||||
clipping: true
|
||||
anchors.fill: parent
|
||||
|
||||
LocalesMainLabel
|
||||
!text: tr('Select your language')
|
||||
text-auto-resize: true
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
margin-top: -100
|
||||
|
||||
Panel
|
||||
id: localesPanel
|
||||
!width: 96*3 + 32*3
|
||||
margin-left: 16
|
||||
margin-top: 50
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.top: prev.bottom
|
||||
anchors.bottom: parent.bottom
|
||||
layout:
|
||||
type: grid
|
||||
cell-size: 96 128
|
||||
cell-spacing: 32
|
||||
flow: true
|
@@ -1,10 +0,0 @@
|
||||
locale = {
|
||||
name = "en",
|
||||
charset = "cp1252",
|
||||
languageName = "English",
|
||||
|
||||
-- translations are not needed because everything is already in english
|
||||
translation = {}
|
||||
}
|
||||
|
||||
Locales.installLocale(locale)
|
@@ -1,326 +0,0 @@
|
||||
-- special thanks for Shaday, who made these translations
|
||||
|
||||
locale = {
|
||||
name = "es",
|
||||
charset = "cp1252",
|
||||
languageName = "Espa<EFBFBD>ol",
|
||||
|
||||
translation = {
|
||||
["1a) Offensive Name"] = false,
|
||||
["1b) Invalid Name Format"] = false,
|
||||
["1c) Unsuitable Name"] = false,
|
||||
["1d) Name Inciting Rule Violation"] = false,
|
||||
["2a) Offensive Statement"] = false,
|
||||
["2b) Spamming"] = false,
|
||||
["2c) Illegal Advertising"] = false,
|
||||
["2d) Off-Topic Public Statement"] = false,
|
||||
["2e) Non-English Public Statement"] = false,
|
||||
["2f) Inciting Rule Violation"] = false,
|
||||
["3a) Bug Abuse"] = false,
|
||||
["3b) Game Weakness Abuse"] = false,
|
||||
["3c) Using Unofficial Software to Play"] = false,
|
||||
["3d) Hacking"] = false,
|
||||
["3e) Multi-Clienting"] = false,
|
||||
["3f) Account Trading or Sharing"] = false,
|
||||
["4a) Threatening Gamemaster"] = false,
|
||||
["4b) Pretending to Have Influence on Rule Enforcement"] = false,
|
||||
["4c) False Report to Gamemaster"] = false,
|
||||
["Accept"] = false,
|
||||
["Account name"] = "Nombre de la cuenta",
|
||||
["Account Status:\nFree Account"] = "Estado de la cuenta:\nGratis",
|
||||
["Account Status:\nPremium Account (%s) days left"] = "Estado de la cuenta:\nCuenta premium (%s) d<>as restantes",
|
||||
["Action:"] = false,
|
||||
["Add"] = "A<EFBFBD>adir",
|
||||
["Add new VIP"] = "A<EFBFBD>adir nuevo VIP",
|
||||
["Addon 1"] = "Addon 1",
|
||||
["Addon 2"] = "Addon 2",
|
||||
["Addon 3"] = "Addon 3",
|
||||
["Add to VIP list"] = "A<EFBFBD>adir a lista VIP",
|
||||
["Adjust volume"] = "Ajustar vol<6F>men",
|
||||
["Alas! Brave adventurer, you have met a sad fate.\nBut do not despair, for the gods will bring you back\ninto this world in exchange for a small sacrifice\n\nSimply click on Ok to resume your journeys!"] = false,
|
||||
["All modules and scripts were reloaded."] = "Todos los m<>dulos y scripts han sido reiniciados",
|
||||
["Allow auto chase override"] = false,
|
||||
["Amount:"] = "Cantidad:",
|
||||
["Amount"] = false,
|
||||
["Anonymous"] = false,
|
||||
["Are you sure you want to logout?"] = false,
|
||||
["Attack"] = "Atacar",
|
||||
["Author"] = "Autor",
|
||||
["Autoload"] = "Cargar autom<6F>ticamente",
|
||||
["Autoload priority"] = "Prioridad de carga",
|
||||
["Auto login"] = "Entrar autom<6F>ticamente",
|
||||
["Auto login selected character on next charlist load"] = "Entrar autom<6F>ticamente con un personage cuando se vuelva a abrir la lista de personajes",
|
||||
["Axe Fighting"] = "Combate con Hacha",
|
||||
["Balance:"] = false,
|
||||
["Banishment"] = false,
|
||||
["Banishment + Final Warning"] = false,
|
||||
["Battle"] = "Batalla",
|
||||
["Browse"] = false,
|
||||
["Bug report sent."] = false,
|
||||
["Button Assign"] = "Seleccionar Bot<6F>n",
|
||||
["Buy"] = "Comprar",
|
||||
["Buy Now"] = false,
|
||||
["Buy Offers"] = false,
|
||||
["Buy with backpack"] = "Comprar con mochila",
|
||||
["Cancel"] = "Cancelar",
|
||||
["Cannot login while already in game."] = false,
|
||||
["Cap"] = false,
|
||||
["Capacity"] = "Capacidad",
|
||||
["Center"] = false,
|
||||
["Channels"] = "Canales",
|
||||
["Character List"] = "Lista de personajes",
|
||||
["Classic control"] = "Control cl<63>sico",
|
||||
["Clear current message window"] = false,
|
||||
["Clear object"] = "Limpiar objeto",
|
||||
["Client needs update."] = false,
|
||||
["Close"] = "Cerrar",
|
||||
["Close this channel"] = "Cerrar este canal",
|
||||
["Club Fighting"] = "Combate con Maza",
|
||||
["Combat Controls"] = "Controles de combate",
|
||||
["Comment:"] = false,
|
||||
["Connecting to game server..."] = "Conectando al servidor de juego...",
|
||||
["Connecting to login server..."] = "Conectando al servidor de autentificaci<63>n...",
|
||||
["Copy message"] = false,
|
||||
["Copy name"] = false,
|
||||
["Copy Name"] = "Copiar Nombre",
|
||||
["Create New Offer"] = false,
|
||||
["Create Offer"] = false,
|
||||
["Current hotkeys:"] = "Atajos actuales",
|
||||
["Current hotkey to add: %s"] = "Atajo actual para a<>adir: %s",
|
||||
["Current Offers"] = false,
|
||||
["Default"] = "Principal",
|
||||
["Description"] = "Descripci<EFBFBD>n",
|
||||
["Destructive Behaviour"] = false,
|
||||
["Detail"] = "Detalle",
|
||||
["Details"] = false,
|
||||
["Disable Shared Experience"] = "Desactivar experiencia compartida",
|
||||
["Distance Fighting"] = "Combate a Distancia",
|
||||
["Edit hotkey text:"] = "Editar texto del atajo",
|
||||
["Edit List"] = false,
|
||||
["Edit Text"] = "Editar Texto",
|
||||
["Enable music"] = false,
|
||||
["Enable Shared Experience"] = "Activar experiencia compartida",
|
||||
["Enable vertical synchronization"] = "Activar sincronizaci<63>n vertical",
|
||||
["Enter Game"] = "Entrar al juego",
|
||||
["Enter one name per line."] = false,
|
||||
["Error"] = "Error",
|
||||
["Error"] = "Error",
|
||||
["Excessive Unjustified Player Killing"] = false,
|
||||
["Exclude from private chat"] = "Excluir del canal privado",
|
||||
["Exit"] = false,
|
||||
["Experience"] = "Experiencia",
|
||||
["Filter list to match your level"] = false,
|
||||
["Filter list to match your vocation"] = false,
|
||||
["Fishing"] = "Pesca",
|
||||
["Fist Fighting"] = "Combate con Pu<50>os",
|
||||
["Follow"] = "Seguir",
|
||||
["Fullscreen"] = "Pantalla Completa",
|
||||
["Game framerate limit: %s"] = false,
|
||||
["General"] = "General",
|
||||
["Graphics"] = "Gr<EFBFBD>ficos",
|
||||
["Graphics Engine:"] = false,
|
||||
["Head"] = "Cabeza",
|
||||
["Health Info"] = false,
|
||||
["Health Information"] = false,
|
||||
["Hide monsters"] = "Esconder monstruos",
|
||||
["Hide non-skull players"] = "Esconder jugadores sin calavera",
|
||||
["Hide Npcs"] = "Esconder NPCs",
|
||||
["Hide party members"] = "Esconder miembros del grupo",
|
||||
["Hide players"] = "Esconder jugadores",
|
||||
["Hit Points"] = "Puntos de Vida",
|
||||
["Hold right mouse button to navigate\nScroll mouse middle button to zoom"] = false,
|
||||
["Hotkeys"] = "Atajos",
|
||||
["If you shut down the program, your character might stay in the game.\nClick on 'Logout' to ensure that you character leaves the game properly.\nClick on 'Exit' if you want to exit the program without logging out your character."] = false,
|
||||
["Ignore capacity"] = "Ignorar capacidad",
|
||||
["Ignore equipped"] = "Ignorar equipado",
|
||||
["Interface framerate limit: %s"] = false,
|
||||
["Inventory"] = "Inventario",
|
||||
["Invite to Party"] = "Invitar al grupo",
|
||||
["Invite to private chat"] = "Invitar al canal privado",
|
||||
["IP Address Banishment"] = false,
|
||||
["Item Offers"] = false,
|
||||
["It is empty.\n"] = false,
|
||||
["Join %s's Party"] = false,
|
||||
["Leave Party"] = "Salir del grupo",
|
||||
["Level"] = "Nivel",
|
||||
["Limits FPS to 60"] = "Limita los FPS a 60",
|
||||
["List of items that you're able to buy"] = "Lista de objetos que usted puede comprar",
|
||||
["List of items that you're able to sell"] = "Lista de objetos que usted puede vender",
|
||||
["Load"] = "Cargar",
|
||||
["Location"] = false,
|
||||
["Logging out..."] = false,
|
||||
["Login"] = "Entrar",
|
||||
["Login Error"] = "Error de Autentificaci<63>n",
|
||||
["Login Error"] = "Error de Autentificaci<63>n",
|
||||
["Logout"] = false,
|
||||
["Look"] = "Ver",
|
||||
["Magic Level"] = "Nivel M<>gico",
|
||||
["Make sure that your client uses\nthe correct game protocol version"] = "Compruebe que tu cliente use\nuse el mismo protocolo que el servidor de juego",
|
||||
["Mana"] = "Mana",
|
||||
["Manage hotkeys:"] = "Configurar atajos:",
|
||||
["Market"] = false,
|
||||
["Market Offers"] = false,
|
||||
["Message of the day"] = "Mensaje del d<>a",
|
||||
["Message to "] = false,
|
||||
["Message to %s"] = "Mandar mensaje a %s",
|
||||
["Minimap"] = "Minimapa",
|
||||
["Module Manager"] = "Administrador de M<>dulos",
|
||||
["Module name"] = "Nombre del m<>dulo",
|
||||
["Move Stackable Item"] = "Mover objeto contable",
|
||||
["Move up"] = "Mover arriba",
|
||||
["My Offers"] = false,
|
||||
["Name:"] = "Nombre:",
|
||||
["Name"] = false,
|
||||
["Name Report"] = false,
|
||||
["Name Report + Banishment"] = false,
|
||||
["Name Report + Banishment + Final Warning"] = false,
|
||||
["No"] = false,
|
||||
["No item selected."] = false,
|
||||
["No Mount"] = false,
|
||||
["No Outfit"] = false,
|
||||
["No statement has been selected."] = false,
|
||||
["Notation"] = false,
|
||||
["NPC Trade"] = "Comercia con NPC",
|
||||
["Offer History"] = false,
|
||||
["Offers"] = false,
|
||||
["Offer Type:"] = false,
|
||||
["Ok"] = "Ok",
|
||||
["Okay"] = false,
|
||||
["on %s.\n"] = false,
|
||||
["Open"] = "Abrir",
|
||||
["Open a private message channel:"] = "Abrir un canal privado:",
|
||||
["Open charlist automatically when starting otclient"] = "Abrir lista de personajes",
|
||||
["Open in new window"] = "Abrir en una nueva ventana",
|
||||
["Open new channel"] = "Abrir novo canal",
|
||||
["Options"] = "Opciones",
|
||||
["Particles Manager"] = false,
|
||||
["Pass Leadership to %s"] = "Pasar el liderazgo a %s",
|
||||
["Password"] = "Contrase<EFBFBD>a",
|
||||
["Pause"] = false,
|
||||
["Piece Price:"] = false,
|
||||
["Please enter a character name:"] = "Por favor, introduce el nombre de un personaje:",
|
||||
["Please, press the key you wish to add onto your hotkeys manager"] = "Por favor, presione la tecla que desee para\na<EFBFBD>adir a tu administrador de atajos",
|
||||
["Please Select"] = false,
|
||||
["Please use this dialog to only report bugs. Do not report rule violations here!"] = false,
|
||||
["Please wait"] = "Por favor, espere",
|
||||
["Port"] = "Puerto",
|
||||
["Preview"] = false,
|
||||
["Price:"] = "Precio",
|
||||
["Primary"] = "Primario",
|
||||
["Protocol"] = false,
|
||||
["Quantity:"] = "Cantidad:",
|
||||
["Quest Log"] = false,
|
||||
["Randomize"] = false,
|
||||
["Randomize characters outfit"] = false,
|
||||
["Reason:"] = false,
|
||||
["Refresh"] = "Actualizar",
|
||||
["Reject"] = false,
|
||||
["Reload"] = false,
|
||||
["Reload All"] = "Recargar Todos",
|
||||
["Remember account and password when starts otclient"] = "Recordar cuenta y contrase<73>a cuando inicie otclient",
|
||||
["Remember password"] = "Recordar contrase<73>a",
|
||||
["Remove"] = "Quitar",
|
||||
["Remove %s"] = "Quitar %s",
|
||||
["Report Bug"] = false,
|
||||
["Revoke %s's Invitation"] = false,
|
||||
["Rotate"] = "Girar",
|
||||
["Rule Violation"] = false,
|
||||
["Search:"] = "Buscar:",
|
||||
["Search"] = false,
|
||||
["Secondary"] = "Secundario",
|
||||
["Select object"] = "Seleccionar objeto",
|
||||
["Select Outfit"] = "Selecionar Traje",
|
||||
["Sell"] = "Vender",
|
||||
["Sell Now"] = false,
|
||||
["Sell Offers"] = false,
|
||||
["Send"] = false,
|
||||
["Send automatically"] = "Enviar autom<6F>ticamente",
|
||||
["Server"] = "Servidor",
|
||||
["Server Log"] = "Registro del servidor",
|
||||
["Set Outfit"] = "Escoger Traje",
|
||||
["Shielding"] = "Defensa",
|
||||
["Show all items"] = "Mostrar todos los objetos",
|
||||
["Show Depot Only"] = false,
|
||||
["Show event messages in console"] = "Mostrar los mensajes de eventos en la consola",
|
||||
["Show frame rate"] = "Mostrar FPS",
|
||||
["Show info messages in console"] = "Mostrar los mensajes informativos en la consola",
|
||||
["Show left panel"] = false,
|
||||
["Show levels in console"] = "Mostrar los niveles en la consola",
|
||||
["Show private messages in console"] = "Mostrar los mensajes privados en la consola",
|
||||
["Show private messages on screen"] = false,
|
||||
["Show status messages in console"] = "Mostrar los mensajes de estado en la consola",
|
||||
["Show Text"] = false,
|
||||
["Show timestamps in console"] = "Mostrar la hora en la consola",
|
||||
["Show your depot items only"] = false,
|
||||
["Skills"] = "Habilidades",
|
||||
["Soul"] = false,
|
||||
["Soul Points"] = "Puntos del Alma",
|
||||
["Stamina"] = "Vigor",
|
||||
["Start"] = false,
|
||||
["Statement:"] = false,
|
||||
["Statement Report"] = false,
|
||||
["Statistics"] = false,
|
||||
["Stop Attack"] = "Detener el Ataque",
|
||||
["Stop Follow"] = "Detener el Seguimiento",
|
||||
["%s: (use object)"] = "%s: (usar objeto)",
|
||||
["%s: (use object on target)"] = "%s: (usar objeto en objetivo)",
|
||||
["%s: (use object on yourself)"] = "%s: (usar objeto en ti mismo)",
|
||||
["%s: (use object with crosshair)"] = "%s: (usar objeto con mirilla)",
|
||||
["Sword Fighting"] = "Combate con Espada",
|
||||
["Terminal"] = "Terminal",
|
||||
["There is no way."] = "No hay ruta.",
|
||||
["Total Price:"] = false,
|
||||
["Trade"] = "Comercial",
|
||||
["Trade with ..."] = "Comercial con ...",
|
||||
["Trying to reconnect in %s seconds."] = false,
|
||||
["Unable to load dat file, please place a valid dat in '%s'"] = false,
|
||||
["Unable to load spr file, please place a valid spr in '%s'"] = false,
|
||||
["Unable to logout."] = "No es posible salir.",
|
||||
["Unload"] = "Descarga",
|
||||
["Use"] = "Usar",
|
||||
["Use on target"] = "Usar en objetivo",
|
||||
["Use on yourself"] = "Usar en ti mismo",
|
||||
["Use with ..."] = "Usar en ...",
|
||||
["Version"] = "Versi<EFBFBD>n",
|
||||
["VIP list"] = "Lista VIP",
|
||||
["VIP List"] = "Lista VIP",
|
||||
["Voc."] = false,
|
||||
["Waiting List"] = false,
|
||||
["Website"] = "Sitio Web",
|
||||
["Weight:"] = "Peso",
|
||||
["With crosshair"] = "Con mirilla",
|
||||
["Yes"] = false,
|
||||
["You are bleeding"] = false,
|
||||
["You are burning"] = "Est<EFBFBD>s quemando",
|
||||
["You are cursed"] = "Est<EFBFBD>s maldito",
|
||||
["You are dazzled"] = "Est<EFBFBD>s deslumbrado",
|
||||
["You are dead."] = "Has muerto.",
|
||||
["You are dead"] = false,
|
||||
["You are drowing"] = "Te est<73>s ahogando",
|
||||
["You are drunk"] = false,
|
||||
["You are electrified"] = "Est<EFBFBD>s electrocutado",
|
||||
["You are freezing"] = "Est<EFBFBD>s congelado",
|
||||
["You are hasted"] = "Vas con prisa",
|
||||
["You are hungry"] = false,
|
||||
["You are paralysed"] = "Est<EFBFBD>s paralizado",
|
||||
["You are poisoned"] = "Est<EFBFBD>s envenenado",
|
||||
["You are protected by a magic shield"] = "Est<EFBFBD>s protegido por un escudo m<>gico",
|
||||
["You are strengthened"] = "Est<EFBFBD>s reforzado",
|
||||
["You are within a protection zone"] = "Est<EFBFBD>s en una zona de protecci<63>n",
|
||||
["You can enter new text."] = false,
|
||||
["You have %s percent"] = "Tienes %s por ciento",
|
||||
["You have %s percent to go"] = "Te falta %s por ciento para avanzar",
|
||||
["You may not logout during a fight"] = "No puedes salir mientras est<73>s en un combate",
|
||||
["You may not logout or enter a protection zone"] = "No puedes salir o entrar en una zona de protecci<63>n",
|
||||
["You must enter a comment."] = false,
|
||||
["You must enter an account name and password."] = false,
|
||||
["You must enter a valid server address and port."] = false,
|
||||
["You must select a character to login!"] = "Debes seleccionar un personaje para entrar!",
|
||||
["Your Capacity:"] = false,
|
||||
["You read the following, written by \n%s\n"] = false,
|
||||
["You read the following, written on %s.\n"] = false,
|
||||
["Your Money:"] = false,
|
||||
}
|
||||
}
|
||||
|
||||
Locales.installLocale(locale)
|
@@ -1,329 +0,0 @@
|
||||
-- by Don Daniello
|
||||
-- 09 June 2012
|
||||
-- http://DonDaniello.com
|
||||
-- http://otland.net/members/Don+Daniello
|
||||
|
||||
locale = {
|
||||
name = "pl",
|
||||
charset = "cp1250",
|
||||
languageName = "Polski",
|
||||
|
||||
translation = {
|
||||
["1a) Offensive Name"] = false,
|
||||
["1b) Invalid Name Format"] = false,
|
||||
["1c) Unsuitable Name"] = false,
|
||||
["1d) Name Inciting Rule Violation"] = false,
|
||||
["2a) Offensive Statement"] = false,
|
||||
["2b) Spamming"] = false,
|
||||
["2c) Illegal Advertising"] = false,
|
||||
["2d) Off-Topic Public Statement"] = false,
|
||||
["2e) Non-English Public Statement"] = false,
|
||||
["2f) Inciting Rule Violation"] = false,
|
||||
["3a) Bug Abuse"] = false,
|
||||
["3b) Game Weakness Abuse"] = false,
|
||||
["3c) Using Unofficial Software to Play"] = false,
|
||||
["3d) Hacking"] = false,
|
||||
["3e) Multi-Clienting"] = false,
|
||||
["3f) Account Trading or Sharing"] = false,
|
||||
["4a) Threatening Gamemaster"] = false,
|
||||
["4b) Pretending to Have Influence on Rule Enforcement"] = false,
|
||||
["4c) False Report to Gamemaster"] = false,
|
||||
["Accept"] = false,
|
||||
["Account name"] = "Nombre de la cuenta",
|
||||
["Account Status:\nFree Account"] = "Estado de la cuenta:\nGratis",
|
||||
["Account Status:\nPremium Account (%s) days left"] = "Estado de la cuenta:\nCuenta premium (%s) días restantes",
|
||||
["Action:"] = false,
|
||||
["Add"] = "Añadir",
|
||||
["Add new VIP"] = "Añadir nuevo VIP",
|
||||
["Addon 1"] = "Addon 1",
|
||||
["Addon 2"] = "Addon 2",
|
||||
["Addon 3"] = "Addon 3",
|
||||
["Add to VIP list"] = "Añadir a lista VIP",
|
||||
["Adjust volume"] = "Ajustar volúmen",
|
||||
["Alas! Brave adventurer, you have met a sad fate.\nBut do not despair, for the gods will bring you back\ninto this world in exchange for a small sacrifice\n\nSimply click on Ok to resume your journeys!"] = false,
|
||||
["All modules and scripts were reloaded."] = "Todos los módulos y scripts han sido reiniciados",
|
||||
["Allow auto chase override"] = false,
|
||||
["Amount:"] = "Cantidad:",
|
||||
["Amount"] = false,
|
||||
["Anonymous"] = false,
|
||||
["Are you sure you want to logout?"] = false,
|
||||
["Attack"] = "Atacar",
|
||||
["Author"] = "Autor",
|
||||
["Autoload"] = "Cargar automáticamente",
|
||||
["Autoload priority"] = "Prioridad de carga",
|
||||
["Auto login"] = "Entrar automáticamente",
|
||||
["Auto login selected character on next charlist load"] = "Entrar automáticamente con un personage cuando se vuelva a abrir la lista de personajes",
|
||||
["Axe Fighting"] = "Combate con Hacha",
|
||||
["Balance:"] = false,
|
||||
["Banishment"] = false,
|
||||
["Banishment + Final Warning"] = false,
|
||||
["Battle"] = "Batalla",
|
||||
["Browse"] = false,
|
||||
["Bug report sent."] = false,
|
||||
["Button Assign"] = "Seleccionar Botón",
|
||||
["Buy"] = "Comprar",
|
||||
["Buy Now"] = false,
|
||||
["Buy Offers"] = false,
|
||||
["Buy with backpack"] = "Comprar con mochila",
|
||||
["Cancel"] = "Cancelar",
|
||||
["Cannot login while already in game."] = false,
|
||||
["Cap"] = false,
|
||||
["Capacity"] = "Capacidad",
|
||||
["Center"] = false,
|
||||
["Channels"] = "Canales",
|
||||
["Character List"] = "Lista de personajes",
|
||||
["Classic control"] = "Control clásico",
|
||||
["Clear current message window"] = false,
|
||||
["Clear object"] = "Limpiar objeto",
|
||||
["Client needs update."] = false,
|
||||
["Close"] = "Cerrar",
|
||||
["Close this channel"] = "Cerrar este canal",
|
||||
["Club Fighting"] = "Combate con Maza",
|
||||
["Combat Controls"] = "Controles de combate",
|
||||
["Comment:"] = false,
|
||||
["Connecting to game server..."] = "Conectando al servidor de juego...",
|
||||
["Connecting to login server..."] = "Conectando al servidor de autentificación...",
|
||||
["Copy message"] = false,
|
||||
["Copy name"] = false,
|
||||
["Copy Name"] = "Copiar Nombre",
|
||||
["Create New Offer"] = false,
|
||||
["Create Offer"] = false,
|
||||
["Current hotkeys:"] = "Atajos actuales",
|
||||
["Current hotkey to add: %s"] = "Atajo actual para añadir: %s",
|
||||
["Current Offers"] = false,
|
||||
["Default"] = "Principal",
|
||||
["Description"] = "Descripción",
|
||||
["Destructive Behaviour"] = false,
|
||||
["Detail"] = "Detalle",
|
||||
["Details"] = false,
|
||||
["Disable Shared Experience"] = "Desactivar experiencia compartida",
|
||||
["Distance Fighting"] = "Combate a Distancia",
|
||||
["Edit hotkey text:"] = "Editar texto del atajo",
|
||||
["Edit List"] = false,
|
||||
["Edit Text"] = "Editar Texto",
|
||||
["Enable music"] = false,
|
||||
["Enable Shared Experience"] = "Activar experiencia compartida",
|
||||
["Enable vertical synchronization"] = "Activar sincronización vertical",
|
||||
["Enter Game"] = "Entrar al juego",
|
||||
["Enter one name per line."] = false,
|
||||
["Error"] = "Error",
|
||||
["Error"] = "Error",
|
||||
["Excessive Unjustified Player Killing"] = false,
|
||||
["Exclude from private chat"] = "Excluir del canal privado",
|
||||
["Exit"] = false,
|
||||
["Experience"] = "Experiencia",
|
||||
["Filter list to match your level"] = false,
|
||||
["Filter list to match your vocation"] = false,
|
||||
["Fishing"] = "Pesca",
|
||||
["Fist Fighting"] = "Combate con Puños",
|
||||
["Follow"] = "Seguir",
|
||||
["Fullscreen"] = "Pantalla Completa",
|
||||
["Game framerate limit: %s"] = false,
|
||||
["General"] = "General",
|
||||
["Graphics"] = "Gráficos",
|
||||
["Graphics Engine:"] = false,
|
||||
["Head"] = "Cabeza",
|
||||
["Health Info"] = false,
|
||||
["Health Information"] = false,
|
||||
["Hide monsters"] = "Esconder monstruos",
|
||||
["Hide non-skull players"] = "Esconder jugadores sin calavera",
|
||||
["Hide Npcs"] = "Esconder NPCs",
|
||||
["Hide party members"] = "Esconder miembros del grupo",
|
||||
["Hide players"] = "Esconder jugadores",
|
||||
["Hit Points"] = "Puntos de Vida",
|
||||
["Hold right mouse button to navigate\nScroll mouse middle button to zoom"] = false,
|
||||
["Hotkeys"] = "Atajos",
|
||||
["If you shut down the program, your character might stay in the game.\nClick on 'Logout' to ensure that you character leaves the game properly.\nClick on 'Exit' if you want to exit the program without logging out your character."] = false,
|
||||
["Ignore capacity"] = "Ignorar capacidad",
|
||||
["Ignore equipped"] = "Ignorar equipado",
|
||||
["Interface framerate limit: %s"] = false,
|
||||
["Inventory"] = "Inventario",
|
||||
["Invite to Party"] = "Invitar al grupo",
|
||||
["Invite to private chat"] = "Invitar al canal privado",
|
||||
["IP Address Banishment"] = false,
|
||||
["Item Offers"] = false,
|
||||
["It is empty.\n"] = false,
|
||||
["Join %s's Party"] = false,
|
||||
["Leave Party"] = "Salir del grupo",
|
||||
["Level"] = "Nivel",
|
||||
["Limits FPS to 60"] = "Limita los FPS a 60",
|
||||
["List of items that you're able to buy"] = "Lista de objetos que usted puede comprar",
|
||||
["List of items that you're able to sell"] = "Lista de objetos que usted puede vender",
|
||||
["Load"] = "Cargar",
|
||||
["Location"] = false,
|
||||
["Logging out..."] = false,
|
||||
["Login"] = "Entrar",
|
||||
["Login Error"] = "Error de Autentificación",
|
||||
["Login Error"] = "Error de Autentificación",
|
||||
["Logout"] = false,
|
||||
["Look"] = "Ver",
|
||||
["Magic Level"] = "Nivel Mágico",
|
||||
["Make sure that your client uses\nthe correct game protocol version"] = "Compruebe que tu cliente use\nuse el mismo protocolo que el servidor de juego",
|
||||
["Mana"] = "Mana",
|
||||
["Manage hotkeys:"] = "Configurar atajos:",
|
||||
["Market"] = false,
|
||||
["Market Offers"] = false,
|
||||
["Message of the day"] = "Mensaje del día",
|
||||
["Message to "] = false,
|
||||
["Message to %s"] = "Mandar mensaje a %s",
|
||||
["Minimap"] = "Minimapa",
|
||||
["Module Manager"] = "Administrador de Módulos",
|
||||
["Module name"] = "Nombre del módulo",
|
||||
["Move Stackable Item"] = "Mover objeto contable",
|
||||
["Move up"] = "Mover arriba",
|
||||
["My Offers"] = false,
|
||||
["Name:"] = "Nombre:",
|
||||
["Name"] = false,
|
||||
["Name Report"] = false,
|
||||
["Name Report + Banishment"] = false,
|
||||
["Name Report + Banishment + Final Warning"] = false,
|
||||
["No"] = false,
|
||||
["No item selected."] = false,
|
||||
["No Mount"] = false,
|
||||
["No Outfit"] = false,
|
||||
["No statement has been selected."] = false,
|
||||
["Notation"] = false,
|
||||
["NPC Trade"] = "Comercia con NPC",
|
||||
["Offer History"] = false,
|
||||
["Offers"] = false,
|
||||
["Offer Type:"] = false,
|
||||
["Ok"] = "Ok",
|
||||
["Okay"] = false,
|
||||
["on %s.\n"] = false,
|
||||
["Open"] = "Abrir",
|
||||
["Open a private message channel:"] = "Abrir un canal privado:",
|
||||
["Open charlist automatically when starting otclient"] = "Abrir lista de personajes",
|
||||
["Open in new window"] = "Abrir en una nueva ventana",
|
||||
["Open new channel"] = "Abrir novo canal",
|
||||
["Options"] = "Opciones",
|
||||
["Particles Manager"] = false,
|
||||
["Pass Leadership to %s"] = "Pasar el liderazgo a %s",
|
||||
["Password"] = "Contraseña",
|
||||
["Pause"] = false,
|
||||
["Piece Price:"] = false,
|
||||
["Please enter a character name:"] = "Por favor, introduce el nombre de un personaje:",
|
||||
["Please, press the key you wish to add onto your hotkeys manager"] = "Por favor, presione la tecla que desee para\nañadir a tu administrador de atajos",
|
||||
["Please Select"] = false,
|
||||
["Please use this dialog to only report bugs. Do not report rule violations here!"] = false,
|
||||
["Please wait"] = "Por favor, espere",
|
||||
["Port"] = "Puerto",
|
||||
["Preview"] = false,
|
||||
["Price:"] = "Precio",
|
||||
["Primary"] = "Primario",
|
||||
["Protocol"] = false,
|
||||
["Quantity:"] = "Cantidad:",
|
||||
["Quest Log"] = false,
|
||||
["Randomize"] = false,
|
||||
["Randomize characters outfit"] = false,
|
||||
["Reason:"] = false,
|
||||
["Refresh"] = "Actualizar",
|
||||
["Reject"] = false,
|
||||
["Reload"] = false,
|
||||
["Reload All"] = "Recargar Todos",
|
||||
["Remember account and password when starts otclient"] = "Recordar cuenta y contraseña cuando inicie otclient",
|
||||
["Remember password"] = "Recordar contraseña",
|
||||
["Remove"] = "Quitar",
|
||||
["Remove %s"] = "Quitar %s",
|
||||
["Report Bug"] = false,
|
||||
["Revoke %s's Invitation"] = false,
|
||||
["Rotate"] = "Girar",
|
||||
["Rule Violation"] = false,
|
||||
["Search:"] = "Buscar:",
|
||||
["Search"] = false,
|
||||
["Secondary"] = "Secundario",
|
||||
["Select object"] = "Seleccionar objeto",
|
||||
["Select Outfit"] = "Selecionar Traje",
|
||||
["Sell"] = "Vender",
|
||||
["Sell Now"] = false,
|
||||
["Sell Offers"] = false,
|
||||
["Send"] = false,
|
||||
["Send automatically"] = "Enviar automáticamente",
|
||||
["Server"] = "Servidor",
|
||||
["Server Log"] = "Registro del servidor",
|
||||
["Set Outfit"] = "Escoger Traje",
|
||||
["Shielding"] = "Defensa",
|
||||
["Show all items"] = "Mostrar todos los objetos",
|
||||
["Show Depot Only"] = false,
|
||||
["Show event messages in console"] = "Mostrar los mensajes de eventos en la consola",
|
||||
["Show frame rate"] = "Mostrar FPS",
|
||||
["Show info messages in console"] = "Mostrar los mensajes informativos en la consola",
|
||||
["Show left panel"] = false,
|
||||
["Show levels in console"] = "Mostrar los niveles en la consola",
|
||||
["Show private messages in console"] = "Mostrar los mensajes privados en la consola",
|
||||
["Show private messages on screen"] = false,
|
||||
["Show status messages in console"] = "Mostrar los mensajes de estado en la consola",
|
||||
["Show Text"] = false,
|
||||
["Show timestamps in console"] = "Mostrar la hora en la consola",
|
||||
["Show your depot items only"] = false,
|
||||
["Skills"] = "Habilidades",
|
||||
["Soul"] = false,
|
||||
["Soul Points"] = "Puntos del Alma",
|
||||
["Stamina"] = "Vigor",
|
||||
["Start"] = false,
|
||||
["Statement:"] = false,
|
||||
["Statement Report"] = false,
|
||||
["Statistics"] = false,
|
||||
["Stop Attack"] = "Detener el Ataque",
|
||||
["Stop Follow"] = "Detener el Seguimiento",
|
||||
["%s: (use object)"] = "%s: (usar objeto)",
|
||||
["%s: (use object on target)"] = "%s: (usar objeto en objetivo)",
|
||||
["%s: (use object on yourself)"] = "%s: (usar objeto en ti mismo)",
|
||||
["%s: (use object with crosshair)"] = "%s: (usar objeto con mirilla)",
|
||||
["Sword Fighting"] = "Combate con Espada",
|
||||
["Terminal"] = "Terminal",
|
||||
["There is no way."] = "No hay ruta.",
|
||||
["Total Price:"] = false,
|
||||
["Trade"] = "Comercial",
|
||||
["Trade with ..."] = "Comercial con ...",
|
||||
["Trying to reconnect in %s seconds."] = false,
|
||||
["Unable to load dat file, please place a valid dat in '%s'"] = false,
|
||||
["Unable to load spr file, please place a valid spr in '%s'"] = false,
|
||||
["Unable to logout."] = "No es posible salir.",
|
||||
["Unload"] = "Descarga",
|
||||
["Use"] = "Usar",
|
||||
["Use on target"] = "Usar en objetivo",
|
||||
["Use on yourself"] = "Usar en ti mismo",
|
||||
["Use with ..."] = "Usar en ...",
|
||||
["Version"] = "Versión",
|
||||
["VIP list"] = "Lista VIP",
|
||||
["VIP List"] = "Lista VIP",
|
||||
["Voc."] = false,
|
||||
["Waiting List"] = false,
|
||||
["Website"] = "Sitio Web",
|
||||
["Weight:"] = "Peso",
|
||||
["With crosshair"] = "Con mirilla",
|
||||
["Yes"] = false,
|
||||
["You are bleeding"] = false,
|
||||
["You are burning"] = "Estás quemando",
|
||||
["You are cursed"] = "Estás maldito",
|
||||
["You are dazzled"] = "Estás deslumbrado",
|
||||
["You are dead."] = "Has muerto.",
|
||||
["You are dead"] = false,
|
||||
["You are drowing"] = "Te estás ahogando",
|
||||
["You are drunk"] = false,
|
||||
["You are electrified"] = "Estás electrocutado",
|
||||
["You are freezing"] = "Estás congelado",
|
||||
["You are hasted"] = "Vas con prisa",
|
||||
["You are hungry"] = false,
|
||||
["You are paralysed"] = "Estás paralizado",
|
||||
["You are poisoned"] = "Estás envenenado",
|
||||
["You are protected by a magic shield"] = "Estás protegido por un escudo mágico",
|
||||
["You are strengthened"] = "Estás reforzado",
|
||||
["You are within a protection zone"] = "Estás en una zona de protección",
|
||||
["You can enter new text."] = false,
|
||||
["You have %s percent"] = "Tienes %s por ciento",
|
||||
["You have %s percent to go"] = "Te falta %s por ciento para avanzar",
|
||||
["You may not logout during a fight"] = "No puedes salir mientras estás en un combate",
|
||||
["You may not logout or enter a protection zone"] = "No puedes salir o entrar en una zona de protección",
|
||||
["You must enter a comment."] = false,
|
||||
["You must enter an account name and password."] = false,
|
||||
["You must enter a valid server address and port."] = false,
|
||||
["You must select a character to login!"] = "Debes seleccionar un personaje para entrar!",
|
||||
["Your Capacity:"] = false,
|
||||
["You read the following, written by \n%s\n"] = false,
|
||||
["You read the following, written on %s.\n"] = false,
|
||||
["Your Money:"] = false,
|
||||
}
|
||||
}
|
||||
|
||||
Locales.installLocale(locale)
|
@@ -1,349 +0,0 @@
|
||||
locale = {
|
||||
name = "pt",
|
||||
charset = "cp1252",
|
||||
languageName = "Portugu<EFBFBD>s",
|
||||
|
||||
-- As tradu<64><75>es devem vir sempre em ordem alfab<61>tica.
|
||||
translation = {
|
||||
["1a) Offensive Name"] = "1a) Nome ofensivo",
|
||||
["1b) Invalid Name Format"] = "1b) Nome com formato inv<6E>lido",
|
||||
["1c) Unsuitable Name"] = "1c) Nome n<>o adequado",
|
||||
["1d) Name Inciting Rule Violation"] = "1d) Nome estimulando viola<6C><61>o de regra",
|
||||
["2a) Offensive Statement"] = "2a) Afirma<6D><61>o ofensiva",
|
||||
["2b) Spamming"] = "2b) Spamming",
|
||||
["2c) Illegal Advertising"] = "2c) An<41>ncio ilegal",
|
||||
["2d) Off-Topic Public Statement"] = "2d) Afirma<6D><61>o p<>blica fora de contexto",
|
||||
["2e) Non-English Public Statement"] = "2e) Afirma<6D><61>o p<>blica em lingua n<>o inglesa",
|
||||
["2f) Inciting Rule Violation"] = "2f) Estimulando viola<6C><61>o de regra",
|
||||
["3a) Bug Abuse"] = "3a) Abuso de falhas",
|
||||
["3b) Game Weakness Abuse"] = "3b) Abuso de falhas no jogo",
|
||||
["3c) Using Unofficial Software to Play"] = "3c) Uso de programas ilegais para jogar",
|
||||
["3d) Hacking"] = "3d) Hacking",
|
||||
["3e) Multi-Clienting"] = "3e) Uso de mais de um cliente para jogar",
|
||||
["3f) Account Trading or Sharing"] = "3f) Troca de contas ou compartilhamento",
|
||||
["4a) Threatening Gamemaster"] = "4a) Amea<65>ar Gamemaster",
|
||||
["4b) Pretending to Have Influence on Rule Enforcement"] = "4b) Fingir ter influencia sobre a execu<63><75>o de regras",
|
||||
["4c) False Report to Gamemaster"] = "4c) Relat<61>rio falso para Gamemaster",
|
||||
["Abilities"] = "Abilidades",
|
||||
["Accept"] = "Aceitar",
|
||||
["Account name"] = "Nome da conta",
|
||||
["Account Status:\nFree Account"] = "Estado da conta:\nGr<EFBFBD>tis",
|
||||
["Account Status:\nPremium Account (%s) days left"] = "Estado da conta:\nConta premium (%s) dias faltando",
|
||||
["Action:"] = "A<EFBFBD><EFBFBD>o:",
|
||||
["Add"] = "Adicionar",
|
||||
["Add new VIP"] = "Adicionar nova VIP",
|
||||
["Addon 1"] = "Addon 1",
|
||||
["Addon 2"] = "Addon 2",
|
||||
["Addon 3"] = "Addon 3",
|
||||
["Add to VIP list"] = "Adicionar a lista VIP",
|
||||
["Adjust volume"] = "Ajustar volume",
|
||||
["Alas! Brave adventurer, you have met a sad fate.\nBut do not despair, for the gods will bring you back\ninto this world in exchange for a small sacrifice\n\nSimply click on Ok to resume your journeys!"] = false,
|
||||
["All"] = "Todos",
|
||||
["All modules and scripts were reloaded."] = "Todos m<>dulos e scripts foram recarregados.",
|
||||
["Allow auto chase override"] = "Permitir sobrescrever o modo de persegui<75><69>o",
|
||||
["Also known as dash in tibia community, recommended\nfor playing characters with high speed"] = "Tamb<EFBFBD>m conhecido como dash na comunidade tibiana, recomendado\npara jogar com personagem que possuam velocidade alta",
|
||||
["Amount:"] = "Quantidade:",
|
||||
["Amount"] = "Quantidade",
|
||||
["Anonymous"] = "An<EFBFBD>nimo",
|
||||
["Are you sure you want to logout?"] = "Voc<EFBFBD> tem certeza que quer sair?",
|
||||
["Attack"] = "Atacar",
|
||||
["Author"] = "Autor",
|
||||
["Autoload"] = "Carregar automaticamente",
|
||||
["Autoload priority"] = "Prioridade de carregamento",
|
||||
["Auto login"] = "Entrar automaticamente",
|
||||
["Auto login selected character on next charlist load"] = "Entrar automaticamente com o personagem quando reabrir a lista de personagens",
|
||||
["Axe Fighting"] = "Combate com Machado",
|
||||
["Balance:"] = "Saldo:",
|
||||
["Banishment"] = "Banimento",
|
||||
["Banishment + Final Warning"] = "Banimento + Aviso final",
|
||||
["Battle"] = "Batalha",
|
||||
["Browse"] = "Navegar",
|
||||
["Bug report sent."] = "Reporte de bug enviado.",
|
||||
["Button Assign"] = "Selecionar bot<6F>o",
|
||||
["Buy"] = "Comprar",
|
||||
["Buy Now"] = "Comparar agora",
|
||||
["Buy Offers"] = "Ofertas de compra",
|
||||
["Buy with backpack"] = "Comprar com mochila",
|
||||
["Cancel"] = "Cancelar",
|
||||
["Cannot login while already in game."] = "N<EFBFBD>o <20> possivel logar enquanto j<> estiver jogando.",
|
||||
["Cap"] = "Cap",
|
||||
["Capacity"] = "Capacidade",
|
||||
["Center"] = "Centro",
|
||||
["Channels"] = "Canais",
|
||||
["Character List"] = "Lista de personagens",
|
||||
["Classic control"] = "Controle cl<63>ssico",
|
||||
["Clear current message window"] = "Apagar mensagens",
|
||||
["Clear object"] = "Limpar objeto",
|
||||
["Client needs update."] = "O client do jogo precisa ser atualizado",
|
||||
["Close"] = "Fechar",
|
||||
["Close this channel"] = "Fechar esse canal",
|
||||
["Club Fighting"] = "Combate com Porrete",
|
||||
["Combat Controls"] = "Controles de combate",
|
||||
["Comment:"] = "Coment<EFBFBD>rio:",
|
||||
["Connecting to game server..."] = "Conectando no servidor do jogo...",
|
||||
["Connecting to login server..."] = "Conectando no servidor de autentica<63><61>o...",
|
||||
["Console"] = "Console",
|
||||
["Copy message"] = "Copiar mensagem",
|
||||
["Copy name"] = "Copiar nome",
|
||||
["Copy Name"] = "Copiar Nome",
|
||||
["Create"] = "Criar",
|
||||
["Create New Offer"] = "Criar nova oferta",
|
||||
["Create Offer"] = "Criar oferta",
|
||||
["Current hotkeys:"] = "Atalhos atuais",
|
||||
["Current hotkey to add: %s"] = "Atalho atual para adicionar: %s",
|
||||
["Current Offers"] = "Ofertas atuais",
|
||||
["Default"] = "Padr<EFBFBD>o",
|
||||
["Description"] = "Descri<EFBFBD><EFBFBD>o",
|
||||
["Destructive Behaviour"] = "Comportamento destrutivo",
|
||||
["Detail"] = "Detalhe",
|
||||
["Details"] = "Detalhes",
|
||||
["Disable Shared Experience"] = "Desativar experi<72>ncia compartilhada",
|
||||
["Display connection speed to the server (milliseconds)"] = "Exibir a velocidade de conex<65>o com o servidor (milisegundos)",
|
||||
["Distance Fighting"] = "Combate a Dist<73>ncia",
|
||||
["Edit hotkey text:"] = "Editar texto do atalho",
|
||||
["Edit List"] = "Editar lista",
|
||||
["Edit Text"] = "Editar Texto",
|
||||
["Enable music"] = "Ativar musica",
|
||||
["Enable smart walking"] = "Ativar andar inteligente",
|
||||
["Enable Shared Experience"] = "Ativar experi<72>ncia compartilhada",
|
||||
["Enable vertical synchronization"] = "Ativar sincroniza<7A><61>o vertical",
|
||||
["Enable walk booster"] = "Ativar andar intensificado",
|
||||
["Enter Game"] = "Entrar no jogo",
|
||||
["Enter one name per line."] = "Entre somente um nome por linha.",
|
||||
["Error"] = "Erro",
|
||||
["Error"] = "Erro",
|
||||
["Excessive Unjustified Player Killing"] = "Assassinato em excesso, sem justificativa, de jogadores",
|
||||
["Exclude from private chat"] = "Excluir do canal privado",
|
||||
["Exit"] = "Sair",
|
||||
["Experience"] = "Experi<EFBFBD>ncia",
|
||||
["Filter list to match your level"] = "Filtrar a lista para o seu level",
|
||||
["Filter list to match your vocation"] = "Filtrar a lista para a sua voca<63><61>o",
|
||||
["Find:"] = "Procurar",
|
||||
["Fishing"] = "Pesca",
|
||||
["Fist Fighting"] = "Porrada",
|
||||
["Follow"] = "Seguir",
|
||||
["Force Exit"] = "For<EFBFBD>ar Saida",
|
||||
["Fullscreen"] = "Tela cheia",
|
||||
["Game"] = "Jogo",
|
||||
["Game framerate limit: %s"] = "Limite da taxa de quadros do jogo: %s",
|
||||
["General"] = "Geral",
|
||||
["Graphics"] = "Gr<EFBFBD>ficos",
|
||||
["Graphics Engine:"] = "Motor Gr<47>fico:",
|
||||
["Head"] = "Cabe<EFBFBD>a",
|
||||
["Health Info"] = "Barra de Vida",
|
||||
["Health Information"] = "Informa<EFBFBD><EFBFBD>o de vida",
|
||||
["Hide monsters"] = "Esconder montros",
|
||||
["Hide non-skull players"] = "Esconder jogadores sem caveira",
|
||||
["Hide Npcs"] = "Esconder NPCs",
|
||||
["Hide party members"] = "Esconder membros do grupo",
|
||||
["Hide players"] = "Esconder jogadores",
|
||||
["Hit Points"] = "Pontos de Vida",
|
||||
["Hold right mouse button to navigate\nScroll mouse middle button to zoom"] = "Segure o bot<6F>o direito do mouse para navegar\nRole o bot<6F>o central do mouse para mudar o zoom",
|
||||
["Hotkeys"] = "Atalhos",
|
||||
["If you shut down the program, your character might stay in the game.\nClick on 'Logout' to ensure that you character leaves the game properly.\nClick on 'Exit' if you want to exit the program without logging out your character."] = "Se voc<6F> desligar o programa o seu personagem pode continuar no jogo.\nClique em 'Sair' para assegurar que seu personagem saia do jogo adequadamente.\nClique em 'For<6F>ar Saida' para fechar o programa sem desconectar seu personagem.",
|
||||
["Ignore capacity"] = "Ignorar capacidade",
|
||||
["Ignore equipped"] = "Ignorar equipado",
|
||||
["Interface framerate limit: %s"] = "Limite da taxa de quadros da interface: %s",
|
||||
["Inventory"] = "Invent<EFBFBD>rio",
|
||||
["Invite to Party"] = "Convidar para o grupo",
|
||||
["Invite to private chat"] = "Convidar para o canal privado",
|
||||
["IP Address Banishment"] = "Banimento de endere<72>o IP",
|
||||
["Item Offers"] = "Ofertas de items",
|
||||
["It is empty.\n"] = "Est<EFBFBD> vazio\n",
|
||||
["Join %s's Party"] = "Entrar na party do %s",
|
||||
["Leave Party"] = "Sair do grupo",
|
||||
["Level"] = "N<EFBFBD>vel",
|
||||
["Limits FPS to 60"] = "Limita o FPS para 60",
|
||||
["List of items that you're able to buy"] = "Lista de itens que voc<6F> pode comprar",
|
||||
["List of items that you're able to sell"] = "Lista de itens que voc<6F> pode vender",
|
||||
["Load"] = "Carregar",
|
||||
["Location"] = "Local",
|
||||
["Logging out..."] = "Saindo...",
|
||||
["Login"] = "Entrar",
|
||||
["Login Error"] = "Erro de Autentica<63><61>o",
|
||||
["Login Error"] = "Erro de Autentica<63><61>o",
|
||||
["Logout"] = "Sair",
|
||||
["Look"] = "Olhar",
|
||||
["Magic Level"] = "N<EFBFBD>vel M<>gico",
|
||||
["Make sure that your client uses\nthe correct game protocol version"] = "Tenha certeza que o seu cliente use\no mesmo protocolo do servidor do jogo",
|
||||
["Mana"] = "Mana",
|
||||
["Manage hotkeys:"] = "Configurar atalhos:",
|
||||
["Market"] = "Mercado",
|
||||
["Market Offers"] = "Ofertas do mercado",
|
||||
["Message of the day"] = "Mensagem do dia",
|
||||
["Message to "] = "Mensagem para ",
|
||||
["Message to %s"] = "Mandar mensagem para %s",
|
||||
["Minimap"] = "Minimapa",
|
||||
["Module Manager"] = "Gerenciador de M<>dulos",
|
||||
["Module name"] = "Nome do m<>dulo",
|
||||
["Move Stackable Item"] = "Mover item cont<6E>vel",
|
||||
["Move up"] = "Mover para cima",
|
||||
["Moves"] = "Movimentos",
|
||||
["My Offers"] = "Minhas ofertas",
|
||||
["Name:"] = "Nome:",
|
||||
["Name"] = "Nome",
|
||||
["Name Report"] = "Reportar Nome",
|
||||
["Name Report + Banishment"] = "Reportar Nome + Banimento",
|
||||
["Name Report + Banishment + Final Warning"] = "Reportar Nome + Banimento + Aviso Final",
|
||||
["No"] = "N<EFBFBD>o",
|
||||
["No item selected."] = "Nenhum item selecionado",
|
||||
["No Mount"] = "Sem montaria",
|
||||
["No Outfit"] = "Sem roupa",
|
||||
["No statement has been selected."] = "Nenhuma afirma<6D><61>o foi selecionada.",
|
||||
["Notation"] = "Nota<EFBFBD><EFBFBD>o",
|
||||
["NPC Trade"] = "Troca com NPC",
|
||||
["Offer History"] = "Hist<EFBFBD>rico de ofertas",
|
||||
["Offers"] = "Ofertas",
|
||||
["Offer Type:"] = "Tipo de oferta:",
|
||||
["Offline Training"] = "Treino Offline",
|
||||
["Ok"] = "Ok",
|
||||
["Okay"] = "Okay",
|
||||
["on %s.\n"] = "em %s.\n",
|
||||
["Open"] = "Abrir",
|
||||
["Open a private message channel:"] = "Abrir um canal privado:",
|
||||
["Open charlist automatically when starting otclient"] = "Abrir lista de personagens",
|
||||
["Open in new window"] = "Abrir em nova janela",
|
||||
["Open new channel"] = "Abrir novo canal",
|
||||
["Options"] = "Op<EFBFBD><EFBFBD>es",
|
||||
["Overview"] = "Vis<EFBFBD>o geral",
|
||||
["Particles Manager"] = "Gerenciador de part<72>culas",
|
||||
["Pass Leadership to %s"] = "Passar lideran<61>a para %s",
|
||||
["Password"] = "Senha",
|
||||
["Pause"] = "Pausar",
|
||||
["Piece Price:"] = "Pre<EFBFBD>o por pe<70>a:",
|
||||
["Please enter a character name:"] = "Por favor, entre com o nome do personagem:",
|
||||
["Please, press the key you wish to add onto your hotkeys manager"] = "Por favor, pressione a tecla que voc<6F> deseja\nadicionar no gerenciador de atalhos",
|
||||
["Please Select"] = "Por favor, selecione algo",
|
||||
["Please use this dialog to only report bugs. Do not report rule violations here!"] = "Por favor, use este campo apenas para reportar defeitos. N<>o reporte viola<6C><61>o de regras aqui!",
|
||||
["Please wait"] = "Por favor, espere",
|
||||
["Port"] = "Porta",
|
||||
["Preview"] = "Prever",
|
||||
["Price:"] = "Pre<EFBFBD>o",
|
||||
["Primary"] = "Prim<EFBFBD>rio",
|
||||
["Protocol"] = "Protocolo",
|
||||
["Quantity:"] = "Quantidade:",
|
||||
["Quest Log"] = "Registro de Quest",
|
||||
["Randomize"] = "Embaralhar",
|
||||
["Randomize characters outfit"] = "Gerar roupa aleat<61>ria",
|
||||
["Reason:"] = "Motivo:",
|
||||
["Refresh"] = "Atualizar",
|
||||
["Refresh Offers"] = "Atualizar Ofertas",
|
||||
["Regeneration Time"] = "Tempo de Regenera<72><61>o",
|
||||
["Reject"] = "Rejeitar",
|
||||
["Reload"] = "Recarregar",
|
||||
["Reload All"] = "Recarregar Todos",
|
||||
["Remember account and password when starts otclient"] = "Lembrar conta e senha quando o cliente iniciar",
|
||||
["Remember password"] = "Lembrar senha",
|
||||
["Remove"] = "Remover",
|
||||
["Remove %s"] = "Remover %s",
|
||||
["Report Bug"] = "Reportar defeito",
|
||||
["Reserved for more functionality later."] = "Reservado para futura maior funcionalidade.",
|
||||
["Reset Market"] = "Resetar Mercado",
|
||||
["Revoke %s's Invitation"] = "N<EFBFBD>o aceitar o convite do %s",
|
||||
["Rotate"] = "Girar",
|
||||
["Rule Violation"] = "Viola<EFBFBD><EFBFBD>o de regra",
|
||||
["Search:"] = "Procurar:",
|
||||
["Search"] = "Procurar",
|
||||
["Search all items"] = "Procurar todos os items",
|
||||
["Secondary"] = "Secund<EFBFBD>rio",
|
||||
["Select object"] = "Selecionar objeto",
|
||||
["Select Outfit"] = "Selecionar Roupa",
|
||||
["Sell"] = "Vender",
|
||||
["Sell Now"] = "Vender agora",
|
||||
["Sell Offers"] = "Ofertas de venda",
|
||||
["Send"] = "Enviar",
|
||||
["Send automatically"] = "Enviar automaticamente",
|
||||
["Server"] = "Servidor",
|
||||
["Server Log"] = "Registro do servidor",
|
||||
["Set Outfit"] = "Escolher Roupa",
|
||||
["Shielding"] = "Defesa",
|
||||
["Show all items"] = "Exibir todos os itens",
|
||||
["Show connection ping"] = "Mostrar lat<61>ncia de conex<65>o",
|
||||
["Show Depot Only"] = "Mostrar somente o dep<65>sito",
|
||||
["Show event messages in console"] = "Exibir mensagens de eventos no console",
|
||||
["Show frame rate"] = "Exibir FPS",
|
||||
["Show info messages in console"] = "Exibir mensagens informativas no console",
|
||||
["Show left panel"] = "Mostrar barra lateral esquerda",
|
||||
["Show levels in console"] = "Exibir n<>veis no console",
|
||||
["Show private messages in console"] = "Exibir mensagens privadas no console",
|
||||
["Show private messages on screen"] = "Exibir mensagens na tela",
|
||||
["Show status messages in console"] = "Exibir mensagens de estado no console",
|
||||
["Show Text"] = "Mostrar texto",
|
||||
["Show timestamps in console"] = "Exibir o hor<6F>rio no console",
|
||||
["Show your depot items only"] = "Mostrar os itens somentedo dep<65>sito",
|
||||
["Skills"] = "Habilidades",
|
||||
["Soul"] = "Alma",
|
||||
["Soul Points"] = "Pontos de Alma",
|
||||
["Speed"] = "Velocidade",
|
||||
["Stamina"] = "Vigor",
|
||||
["Start"] = "Come<EFBFBD>ar",
|
||||
["Statement:"] = "Afirma<EFBFBD><EFBFBD>o:",
|
||||
["Statement Report"] = "Afirmar Relato",
|
||||
["Statistics"] = "Estat<EFBFBD>sticas",
|
||||
["Stop Attack"] = "Parar de Atacar",
|
||||
["Stop Follow"] = "Parar de Seguir",
|
||||
["%s: (use object)"] = "%s: (usar objeto)",
|
||||
["%s: (use object on target)"] = "%s: (usar objeto no alvo)",
|
||||
["%s: (use object on yourself)"] = "%s: (usar objeto em si)",
|
||||
["%s: (use object with crosshair)"] = "%s: (usar objeto com mira)",
|
||||
["Sword Fighting"] = "Combate com Espada",
|
||||
["Terminal"] = "Terminal",
|
||||
["There is no way."] = "N<EFBFBD>o h<> rota",
|
||||
["Total Price:"] = "Pre<EFBFBD>o total:",
|
||||
["Trade"] = "Trocar",
|
||||
["Trade with ..."] = "Trocar com ...",
|
||||
["Trying to reconnect in %s seconds."] = "Tentando reconectar em %s segundos.",
|
||||
["Type"] = "Tipo",
|
||||
["Unable to load dat file, please place a valid dat in '%s'"] = "N<EFBFBD>o foi poss<73>vel carregar o arquivo dat, por favor coloque um arquivo v<>lido em %s",
|
||||
["Unable to load spr file, please place a valid spr in '%s'"] = "N<EFBFBD>o foi poss<73>vel carregar o arquivo spr, por favor coloque um arquivo v<>lido em %s",
|
||||
["Unable to logout."] = "N<EFBFBD>o <20> possivel sair",
|
||||
["Unload"] = "Descarregar",
|
||||
["Use"] = "Usar",
|
||||
["Use on target"] = "Usar no alvo",
|
||||
["Use on yourself"] = "Usar em si",
|
||||
["Use with ..."] = "Usar com ...",
|
||||
["Version"] = "Vers<EFBFBD>o",
|
||||
["VIP list"] = "Lista VIP",
|
||||
["VIP List"] = "Lista VIP",
|
||||
["Voc."] = "Voc.",
|
||||
["Waiting List"] = "Lista de espera",
|
||||
["Website"] = "Website",
|
||||
["Weight:"] = "Peso",
|
||||
["Will detect when to use diagonal step based on the\nkeys you are pressing"] = "Detectar quando usar o passo diagonal\nbaseado nas teclas pressionadas",
|
||||
["With crosshair"] = "Com mira",
|
||||
["World"] = "Mundo",
|
||||
["Yes"] = "Sim",
|
||||
["You are bleeding"] = "Voc<EFBFBD> est<73> sangrando",
|
||||
["You are burning"] = "Voc<EFBFBD> est<73> queimando",
|
||||
["You are cursed"] = "Voc<EFBFBD> est<73> amaldi<64>oado",
|
||||
["You are dazzled"] = "Voc<EFBFBD> est<73> deslumbrado",
|
||||
["You are dead."] = "Voc<EFBFBD> est<73> morto.",
|
||||
["You are dead"] = "Voc<EFBFBD> est<73> morto",
|
||||
["You are drowing"] = "Voc<EFBFBD> est<73> se afogando",
|
||||
["You are drunk"] = "Voc<EFBFBD> est<73> b<>bado",
|
||||
["You are electrified"] = "Voc<EFBFBD> est<73> eletrificado",
|
||||
["You are freezing"] = "Voc<EFBFBD> est<73> congelando",
|
||||
["You are hasted"] = "Voc<EFBFBD> est<73> com pressa",
|
||||
["You are hungry"] = "Voc<EFBFBD> est<73> faminto",
|
||||
["You are paralysed"] = "Voc<EFBFBD> est<73> paralizado",
|
||||
["You are poisoned"] = "Voc<EFBFBD> est<73> envenenado",
|
||||
["You are protected by a magic shield"] = "Voc<EFBFBD> est<73> protegido com um escudo m<>gico",
|
||||
["You are strengthened"] = "Voc<EFBFBD> est<73> refor<6F>ado",
|
||||
["You are within a protection zone"] = "Voc<EFBFBD> est<73> dentro de uma zona de prote<74><65>o",
|
||||
["You can enter new text."] = "Voc<EFBFBD> pode entrar com um novo texto.",
|
||||
["You have %s percent"] = "Voc<EFBFBD> tem %s porcento",
|
||||
["You have %s percent to go"] = "Voc<EFBFBD> tem %s porcento para avan<61>ar",
|
||||
["You may not logout during a fight"] = "Voc<EFBFBD> n<>o pode sair durante um combate",
|
||||
["You may not logout or enter a protection zone"] = "Voc<EFBFBD> n<>o pode sair ou entrar em uma zona de prote<74><65>o",
|
||||
["You must enter a comment."] = "Voc<EFBFBD> precisa entrar com um coment<6E>rio",
|
||||
["You must enter an account name and password."] = "Voc<EFBFBD> precisa entrar com uma conta e senha.",
|
||||
["You must enter a valid server address and port."] = "Voc<EFBFBD> precisa colocar um endere<72>o e uma porta do servidor v<>lidos.",
|
||||
["You must select a character to login!"] = "Voc<EFBFBD> deve selecionar um personagem para entrar!",
|
||||
["Your Capacity:"] = "Sua capacidade:",
|
||||
["You read the following, written by \n%s\n"] = "Voc<EFBFBD> l<> o seguinte, escrito por \n%s\n",
|
||||
["You read the following, written on %s.\n"] = "Voc<EFBFBD> l<> o seguinte, escrito em %s\n",
|
||||
["Your Money:"] = "Seu dinheiro:",
|
||||
}
|
||||
}
|
||||
|
||||
Locales.installLocale(locale)
|
@@ -1,326 +0,0 @@
|
||||
-- thanks cometangel, who made these translations
|
||||
|
||||
locale = {
|
||||
name = "sv",
|
||||
charset = "cp1252",
|
||||
languageName = "Svenska",
|
||||
|
||||
translation = {
|
||||
["1a) Offensive Name"] = "1a) Offensivt Namn",
|
||||
["1b) Invalid Name Format"] = "1b) Ogiltigt Namnformat",
|
||||
["1c) Unsuitable Name"] = "1c) Opassande Namn",
|
||||
["1d) Name Inciting Rule Violation"] = "1d) Namn anstiftar regelbrott.",
|
||||
["2a) Offensive Statement"] = "2a) Offensivt Uttryck",
|
||||
["2b) Spamming"] = "2b) Spammning",
|
||||
["2c) Illegal Advertising"] = "2c) Olaglig Reklamf<6D>ring",
|
||||
["2d) Off-Topic Public Statement"] = "2d) Icke-<2D>mnef<65>rh<72>llande publiskt uttryck",
|
||||
["2e) Non-English Public Statement"] = "2e) Icke-Engelskt publiskt uttryck",
|
||||
["2f) Inciting Rule Violation"] = "2f) Antyder regelbrytande",
|
||||
["3a) Bug Abuse"] = "3a) Missbrukande av bugg",
|
||||
["3b) Game Weakness Abuse"] = "3b) Spelsvaghetsmissbruk",
|
||||
["3c) Using Unofficial Software to Play"] = "3c) Anv<6E>nder Icke-officiel mjukvara f<>r att spela",
|
||||
["3d) Hacking"] = "3d) Hackar",
|
||||
["3e) Multi-Clienting"] = "3e) Multi-klient",
|
||||
["3f) Account Trading or Sharing"] = "3f) Kontohandel",
|
||||
["4a) Threatening Gamemaster"] = "4a) Hotar gamemaster",
|
||||
["4b) Pretending to Have Influence on Rule Enforcement"] = "4b) L<>tsas ha inflytande p<> Regelsystem",
|
||||
["4c) False Report to Gamemaster"] = "4c) Falsk rapport till gamemaster",
|
||||
["Accept"] = "Acceptera",
|
||||
["Account name"] = "Konto namn",
|
||||
["Account Status:\nFree Account"] = "Kontostatus:\nGratis",
|
||||
["Account Status:\nPremium Account (%s) days left"] = "Kontostatus:\nPremium Konto",
|
||||
["Action:"] = "Handling:",
|
||||
["Add"] = "L<EFBFBD>gg till",
|
||||
["Add new VIP"] = "Ny VIP",
|
||||
["Addon 1"] = "Till<EFBFBD>gg 1",
|
||||
["Addon 2"] = "Till<EFBFBD>gg 2",
|
||||
["Addon 3"] = "Till<EFBFBD>gg 3",
|
||||
["Add to VIP list"] = "L<EFBFBD>gg till p<> VIP Listan",
|
||||
["Adjust volume"] = "Justera Volym",
|
||||
["Alas! Brave adventurer, you have met a sad fate.\nBut do not despair, for the gods will bring you back\ninto this world in exchange for a small sacrifice\n\nSimply click on Ok to resume your journeys!"] = false,
|
||||
["All modules and scripts were reloaded."] = "Alla moduler och skript laddades om",
|
||||
["Allow auto chase override"] = "Till<EFBFBD>t Jaktstyrning",
|
||||
["Amount:"] = "Antal:",
|
||||
["Amount"] = "Antal",
|
||||
["Anonymous"] = "Anonym",
|
||||
["Are you sure you want to logout?"] = "<EFBFBD>r du s<>ker att du vill logga ut?",
|
||||
["Attack"] = "Attackera",
|
||||
["Author"] = "<EFBFBD>vers<EFBFBD>ttare",
|
||||
["Autoload"] = "Automatisk Laddning",
|
||||
["Autoload priority"] = "Laddningsprioritet",
|
||||
["Auto login"] = "Autoinloggning",
|
||||
["Auto login selected character on next charlist load"] = "Logga in N<>st laddad karakt<6B>r automatisk n<>sta g<>ng karakt<6B>rlistan laddar",
|
||||
["Axe Fighting"] = "Yx Stridande",
|
||||
["Balance:"] = "Balans:",
|
||||
["Banishment"] = "Bannlysning",
|
||||
["Banishment + Final Warning"] = "Bannlysning + Sista varning",
|
||||
["Battle"] = "Strid",
|
||||
["Browse"] = "Bl<EFBFBD>ddra",
|
||||
["Bug report sent."] = "Buggrapport Skickad.",
|
||||
["Button Assign"] = "Assignera Knapp",
|
||||
["Buy"] = "K<EFBFBD>p",
|
||||
["Buy Now"] = "K<EFBFBD>p Nu",
|
||||
["Buy Offers"] = "K<EFBFBD>p Offerter",
|
||||
["Buy with backpack"] = "K<EFBFBD>p med ryggs<67>ck",
|
||||
["Cancel"] = "Avbryt",
|
||||
["Cannot login while already in game."] = "Kan ej logga in medan du redan <20>r i spelet.",
|
||||
["Cap"] = "Kap",
|
||||
["Capacity"] = "Kapacitet",
|
||||
["Center"] = "Centrera",
|
||||
["Channels"] = "Kanaler",
|
||||
["Character List"] = "Karakt<EFBFBD>r lista",
|
||||
["Classic control"] = "Klassisk kontroll",
|
||||
["Clear current message window"] = "Rensa nuvarande meddelanderuta",
|
||||
["Clear object"] = "Rensa objekt",
|
||||
["Client needs update."] = "Klienten beh<65>ver uppdateras.",
|
||||
["Close"] = "St<EFBFBD>ng",
|
||||
["Close this channel"] = "St<EFBFBD>ng Denna Kanal",
|
||||
["Club Fighting"] = "Klubb Stridande",
|
||||
["Combat Controls"] = "Krigs Kontroller",
|
||||
["Comment:"] = "Kommentar:",
|
||||
["Connecting to game server..."] = "Kopplar upp till spelserver...",
|
||||
["Connecting to login server..."] = "Kopplar upp till autentiseringserver...",
|
||||
["Copy message"] = "Kopiera meddelande",
|
||||
["Copy name"] = "Kopiera namn",
|
||||
["Copy Name"] = "Kopiera Namn",
|
||||
["Create New Offer"] = "Skapa ny offert.",
|
||||
["Create Offer"] = "Skapa Offert",
|
||||
["Current hotkeys:"] = "Aktuella snabbtangenter",
|
||||
["Current hotkey to add: %s"] = "Ny Snabbtangent: %s",
|
||||
["Current Offers"] = "Nuvarande Offerter",
|
||||
["Default"] = "Standard",
|
||||
["Description"] = "Beskrivning",
|
||||
["Destructive Behaviour"] = "Destruktivt beteende",
|
||||
["Detail"] = "Detalj",
|
||||
["Details"] = "Detaljer",
|
||||
["Disable Shared Experience"] = "Avaktivera delad erfarenhet",
|
||||
["Distance Fighting"] = "Distans Stridande",
|
||||
["Edit hotkey text:"] = "<EFBFBD>ndra Snabbtangent:",
|
||||
["Edit List"] = "<EFBFBD>ndra Lista",
|
||||
["Edit Text"] = "<EFBFBD>ndra text",
|
||||
["Enable music"] = "Aktivera musik",
|
||||
["Enable Shared Experience"] = "Aktivera delad erfarenhet",
|
||||
["Enable vertical synchronization"] = "Aktivera vertikal synkronisering",
|
||||
["Enter Game"] = "G<EFBFBD> in i Spelet",
|
||||
["Enter one name per line."] = "Skriv ett namn per linje.",
|
||||
["Error"] = "Fel",
|
||||
["Error"] = "Fel",
|
||||
["Excessive Unjustified Player Killing"] = "<EFBFBD>verdrivet ober<65>ttigat d<>dande av spelare",
|
||||
["Exclude from private chat"] = "Exkludera fr<66>n privat chat",
|
||||
["Exit"] = "Avsluta",
|
||||
["Experience"] = "Erfarenhet",
|
||||
["Filter list to match your level"] = "Filtrera efter niv<69>",
|
||||
["Filter list to match your vocation"] = "Filtrera efter kallelse",
|
||||
["Fishing"] = "Fiske",
|
||||
["Fist Fighting"] = "Hand Stridande",
|
||||
["Follow"] = "F<EFBFBD>lj",
|
||||
["Fullscreen"] = "Helsk<EFBFBD>rm",
|
||||
["Game framerate limit: %s"] = "Spelets FPS gr<67>ns: %s",
|
||||
["General"] = "Allm<EFBFBD>nt",
|
||||
["Graphics"] = "Grafik",
|
||||
["Graphics Engine:"] = "Grafikmotor:",
|
||||
["Head"] = "Huvud",
|
||||
["Health Info"] = "Livsinfo",
|
||||
["Health Information"] = "Livsinformation",
|
||||
["Hide monsters"] = "G<EFBFBD>m Monster",
|
||||
["Hide non-skull players"] = "G<EFBFBD>m icke-skullad spelare",
|
||||
["Hide Npcs"] = "G<EFBFBD>m NPCs",
|
||||
["Hide party members"] = "G<EFBFBD>m gruppmedlemmar",
|
||||
["Hide players"] = "G<EFBFBD>m spelare",
|
||||
["Hit Points"] = "Livspo<EFBFBD>ng",
|
||||
["Hold right mouse button to navigate\nScroll mouse middle button to zoom"] = "H<EFBFBD>ll in H<>ger musknapp f<>r att navigera\nScrolla mitten musknapp f<>r att zooma",
|
||||
["Hotkeys"] = "Snabbtangenter",
|
||||
["If you shut down the program, your character might stay in the game.\nClick on 'Logout' to ensure that you character leaves the game properly.\nClick on 'Exit' if you want to exit the program without logging out your character."] = "Om du st<73>nger av programmet kan din karakt<6B>r stanna i spelet.\nKlicka p<> 'Logga ut' f<>r att s<>kerst<73>lla att din karakt<6B>r l<>mnar spelet korrekt.\nKlicka p<> 'Avsluta' om du vill avsluta programmet utan att logga ut din karakt<6B>r.",
|
||||
["Ignore capacity"] = "Ignorera kapacitet",
|
||||
["Ignore equipped"] = "Ignorera utrustning",
|
||||
["Interface framerate limit: %s"] = "Gr<EFBFBD>nssnitt FPS gr<67>ns: %s",
|
||||
["Inventory"] = "Utrustning",
|
||||
["Invite to Party"] = "Bjud till grupp",
|
||||
["Invite to private chat"] = "Bjud in i privat chat",
|
||||
["IP Address Banishment"] = "Bannlysning av IP",
|
||||
["Item Offers"] = "Objekt offert",
|
||||
["It is empty.\n"] = "Den <20>r tom.\n",
|
||||
["Join %s's Party"] = "G<EFBFBD> med i %s's Grupp",
|
||||
["Leave Party"] = "L<EFBFBD>mna Grupp",
|
||||
["Level"] = "Niv<EFBFBD>",
|
||||
["Limits FPS to 60"] = "Stoppa FPS vid 60",
|
||||
["List of items that you're able to buy"] = "Lista av saker du kan k<>pa",
|
||||
["List of items that you're able to sell"] = "Lista av saker du kan s<>lja",
|
||||
["Load"] = "Ladda",
|
||||
["Location"] = "plats",
|
||||
["Logging out..."] = "Loggar ut...",
|
||||
["Login"] = "Logga in",
|
||||
["Login Error"] = "Autentifikations fel",
|
||||
["Login Error"] = "Autentifikations fel",
|
||||
["Logout"] = "Logga ut",
|
||||
["Look"] = "Kolla",
|
||||
["Magic Level"] = "Magisk Niv<69>",
|
||||
["Make sure that your client uses\nthe correct game protocol version"] = "Var s<>ker p<> att din client\n andv<64>nder r<>tt protokol version",
|
||||
["Mana"] = "Mana",
|
||||
["Manage hotkeys:"] = "<EFBFBD>ndra snabbtangenten:",
|
||||
["Market"] = "Marknad",
|
||||
["Market Offers"] = "Marknadsofferter",
|
||||
["Message of the day"] = "Dagens meddelande",
|
||||
["Message to "] = "Meddelande till ",
|
||||
["Message to %s"] = "Meddelande till %s",
|
||||
["Minimap"] = "Minikarta",
|
||||
["Module Manager"] = "Modul Manager",
|
||||
["Module name"] = "Modul namn",
|
||||
["Move Stackable Item"] = "Flytta stapelbart f<>rem<65>l",
|
||||
["Move up"] = "Flytta upp",
|
||||
["My Offers"] = "Mina offerter",
|
||||
["Name:"] = "Namn:",
|
||||
["Name"] = "Namn",
|
||||
["Name Report"] = "Namn Rapport",
|
||||
["Name Report + Banishment"] = "Namn rapport + Bannlysning",
|
||||
["Name Report + Banishment + Final Warning"] = "Namn rapport + Bannlysning + Sista varning",
|
||||
["No"] = "Nej",
|
||||
["No item selected."] = "Ingen sak vald.",
|
||||
["No Mount"] = "Ingen Mount",
|
||||
["No Outfit"] = "Ingen Utstyrsel",
|
||||
["No statement has been selected."] = "Inget p<>st<73>ende <20>r valt.",
|
||||
["Notation"] = "Notering",
|
||||
["NPC Trade"] = "Handel NPC",
|
||||
["Offer History"] = "Offert Historia",
|
||||
["Offers"] = "Offerter",
|
||||
["Offer Type:"] = "Offert typ:",
|
||||
["Ok"] = "Ok",
|
||||
["Okay"] = "okej",
|
||||
["on %s.\n"] = "p<EFBFBD> %s.\n",
|
||||
["Open"] = "<EFBFBD>ppna",
|
||||
["Open a private message channel:"] = "<EFBFBD>ppna en privat meddelandekanal:",
|
||||
["Open charlist automatically when starting otclient"] = "<EFBFBD>ppna karakt<6B>rlistan automatisk vid start",
|
||||
["Open in new window"] = "<EFBFBD>ppna i nytt f<>nster",
|
||||
["Open new channel"] = "<EFBFBD>ppna ny kanal",
|
||||
["Options"] = "Inst<EFBFBD>llningar",
|
||||
["Particles Manager"] = "Partikel manager",
|
||||
["Pass Leadership to %s"] = "Ge ledarskap till %s",
|
||||
["Password"] = "L<EFBFBD>senord",
|
||||
["Pause"] = "Pause",
|
||||
["Piece Price:"] = "Per Styck:",
|
||||
["Please enter a character name:"] = "Skriv in ett karakt<6B>rsnamn:",
|
||||
["Please, press the key you wish to add onto your hotkeys manager"] = "Tryck p<> knappen som du\nvill l<>gga till som snabbtangent",
|
||||
["Please Select"] = "V<EFBFBD>lj",
|
||||
["Please use this dialog to only report bugs. Do not report rule violations here!"] = "Anv<EFBFBD>nd den h<>r dialogrutan endast f<>r att rapportera buggar. Rapportera inte regelbrott h<>r!",
|
||||
["Please wait"] = "Var God V<>nta",
|
||||
["Port"] = "Port",
|
||||
["Preview"] = "F<EFBFBD>rhandsvisning",
|
||||
["Price:"] = "Pris",
|
||||
["Primary"] = "Prim<EFBFBD>r",
|
||||
["Protocol"] = "Protokoll",
|
||||
["Quantity:"] = "Antal:",
|
||||
["Quest Log"] = "Uppdragslog",
|
||||
["Randomize"] = "Slumpa",
|
||||
["Randomize characters outfit"] = "Slumpa karakt<6B>rs utstyrsel",
|
||||
["Reason:"] = "Anledning:",
|
||||
["Refresh"] = "Uppdatera",
|
||||
["Reject"] = "Avvisa",
|
||||
["Reload"] = "Ladda om",
|
||||
["Reload All"] = "Ladda om allt",
|
||||
["Remember account and password when starts otclient"] = "Kom ih<69>g konto och l<>sen n<>r OTClient startar",
|
||||
["Remember password"] = "Kom ih<69>g l<>senord",
|
||||
["Remove"] = "Ta bort",
|
||||
["Remove %s"] = "Ta bort %s",
|
||||
["Report Bug"] = "Rapportera Bugg",
|
||||
["Revoke %s's Invitation"] = "Annulera %s's Inbjudan",
|
||||
["Rotate"] = "Rotera",
|
||||
["Rule Violation"] = "Regel Brott",
|
||||
["Search:"] = "S<EFBFBD>k:",
|
||||
["Search"] = "S<EFBFBD>k",
|
||||
["Secondary"] = "Sekund<EFBFBD>r",
|
||||
["Select object"] = "V<EFBFBD>lj Objekt",
|
||||
["Select Outfit"] = "V<EFBFBD>lj Utstyrsel",
|
||||
["Sell"] = "S<EFBFBD>lj",
|
||||
["Sell Now"] = "S<EFBFBD>lj Nu",
|
||||
["Sell Offers"] = "S<EFBFBD>lj Offerter",
|
||||
["Send"] = "Skicka",
|
||||
["Send automatically"] = "Skicka automatiskt",
|
||||
["Server"] = "Server",
|
||||
["Server Log"] = "Server Log",
|
||||
["Set Outfit"] = "Best<EFBFBD>m Utstyrsel",
|
||||
["Shielding"] = "Sk<EFBFBD>ld",
|
||||
["Show all items"] = "Visa alla saker",
|
||||
["Show Depot Only"] = "Visa bara f<>rr<72>d",
|
||||
["Show event messages in console"] = "Visa event meddelanden i konsol",
|
||||
["Show frame rate"] = "Visa FPS",
|
||||
["Show info messages in console"] = "Visa info meddelanden i konsol",
|
||||
["Show left panel"] = "Visa v<>nster panel",
|
||||
["Show levels in console"] = "Visa niv<69>er i konsol",
|
||||
["Show private messages in console"] = "Visa privata meddelanden i konsol",
|
||||
["Show private messages on screen"] = "Visa privata meddelanden p<> sk<73>rmen",
|
||||
["Show status messages in console"] = "Visa statusmeddelanden i konsol",
|
||||
["Show Text"] = "Visa Text",
|
||||
["Show timestamps in console"] = "Visa tidst<73>mpel i konsol",
|
||||
["Show your depot items only"] = "Visa mitt f<>rr<72>d endast",
|
||||
["Skills"] = "F<EFBFBD>rm<EFBFBD>gor",
|
||||
["Soul"] = "Sj<EFBFBD>l",
|
||||
["Soul Points"] = "Sj<EFBFBD>lpo<EFBFBD>ng",
|
||||
["Stamina"] = "Uth<EFBFBD>llighet",
|
||||
["Start"] = "Starta",
|
||||
["Statement:"] = "P<EFBFBD>st<EFBFBD>ende:",
|
||||
["Statement Report"] = "P<EFBFBD>st<EFBFBD>enderapport",
|
||||
["Statistics"] = "Statistik",
|
||||
["Stop Attack"] = "Sluta Attackera",
|
||||
["Stop Follow"] = "Sluta F<>lja",
|
||||
["%s: (use object)"] = "%s: (Anv<6E>nd objekt)",
|
||||
["%s: (use object on target)"] = "%s: (Anv<6E>nd objekt p<> m<>l)",
|
||||
["%s: (use object on yourself)"] = "%s: (Anv<6E>nd objekt p<> mig)",
|
||||
["%s: (use object with crosshair)"] = "%s: (Anv<6E>nd objekt med sikte)",
|
||||
["Sword Fighting"] = "Sv<EFBFBD>rd Stridning",
|
||||
["Terminal"] = "Terminal",
|
||||
["There is no way."] = "Det finns ingen v<>g.",
|
||||
["Total Price:"] = "Totalt Pris:",
|
||||
["Trade"] = "Handel",
|
||||
["Trade with ..."] = "Handla med ...",
|
||||
["Trying to reconnect in %s seconds."] = "F<EFBFBD>rs<EFBFBD>ker koppla upp igen om %s sekunder.",
|
||||
["Unable to load dat file, please place a valid dat in '%s'"] = "kan ej ladda dat filen, l<>gg en giltig dat fil i '%s'",
|
||||
["Unable to load spr file, please place a valid spr in '%s'"] = "kan ej ladda spr filen, l<>gg en giltig spr fil i '%s'",
|
||||
["Unable to logout."] = "Kan ej logga ut.",
|
||||
["Unload"] = "Avladda",
|
||||
["Use"] = "Anv<EFBFBD>nd",
|
||||
["Use on target"] = "Anv<EFBFBD>nd p<> m<>l",
|
||||
["Use on yourself"] = "Anv<EFBFBD>nd p<> mig",
|
||||
["Use with ..."] = "Anv<EFBFBD>nd med ...",
|
||||
["Version"] = "Version",
|
||||
["VIP list"] = "VIP Lista",
|
||||
["VIP List"] = "VIP Lista",
|
||||
["Voc."] = "Kallelse",
|
||||
["Waiting List"] = "K<EFBFBD>lista",
|
||||
["Website"] = "Websida",
|
||||
["Weight:"] = "Vikt:",
|
||||
["With crosshair"] = "Med sikte",
|
||||
["Yes"] = "Ja",
|
||||
["You are bleeding"] = "Du Bl<42>der",
|
||||
["You are burning"] = "Du brinner",
|
||||
["You are cursed"] = "Du <20>r f<>rd<72>md",
|
||||
["You are dazzled"] = "Du <20>r chockad",
|
||||
["You are dead."] = "Du <20>r d<>d.",
|
||||
["You are dead"] = "Du <20>r d<>d",
|
||||
["You are drowing"] = "Du drunknar",
|
||||
["You are drunk"] = "Du <20>r full.",
|
||||
["You are electrified"] = "Du <20>r elektrifierad",
|
||||
["You are freezing"] = "Du Fryser",
|
||||
["You are hasted"] = "Du <20>r i hast",
|
||||
["You are hungry"] = "Du <20>r hungrig",
|
||||
["You are paralysed"] = "Du <20>r paralyserad",
|
||||
["You are poisoned"] = "Du <20>r f<>rgiftad",
|
||||
["You are protected by a magic shield"] = "Du <20>r skyddad av en magisk sk<73>ld",
|
||||
["You are strengthened"] = "Du <20>r f<>rst<73>rkt",
|
||||
["You are within a protection zone"] = "Du <20>r inom en skyddszon",
|
||||
["You can enter new text."] = "Du kan skriva i ny text.",
|
||||
["You have %s percent"] = "Du har %s procent",
|
||||
["You have %s percent to go"] = "Du har %s procent kvar",
|
||||
["You may not logout during a fight"] = "Du kan ej logga ut i strid",
|
||||
["You may not logout or enter a protection zone"] = "Du kan ej logga ut eller g<> in i en skyddszon",
|
||||
["You must enter a comment."] = "Du m<>ste skriva en kommentar",
|
||||
["You must enter an account name and password."] = "Du m<>ste fylla i ett kontonamn och l<>snord.",
|
||||
["You must enter a valid server address and port."] = "Du m<>ste fylla i en giltig server adress och port",
|
||||
["You must select a character to login!"] = "Du m<>ste v<>lja en karakt<6B>r f<>r att logga in!",
|
||||
["Your Capacity:"] = "Din Kapacitet:",
|
||||
["You read the following, written by \n%s\n"] = "Du l<>ser f<>ljande, Skrivet av \n%s\n",
|
||||
["You read the following, written on %s.\n"] = "Du l<>ser f<>ljande, Skrivet den %s.\n",
|
||||
["Your Money:"] = "Dina Pengar:",
|
||||
}
|
||||
}
|
||||
|
||||
Locales.installLocale(locale)
|
@@ -1,5 +1,5 @@
|
||||
-- generated by ./tools/gen_needed_translations.sh
|
||||
Locales.neededTranslations = {
|
||||
modules.client_locales.neededTranslations = {
|
||||
"1a) Offensive Name",
|
||||
"1b) Invalid Name Format",
|
||||
"1c) Unsuitable Name",
|
||||
|
@@ -1,60 +1,61 @@
|
||||
ModuleManager = {}
|
||||
|
||||
local moduleManagerWindow
|
||||
local moduleManagerButton
|
||||
local moduleList
|
||||
|
||||
function ModuleManager.init()
|
||||
moduleManagerWindow = g_ui.displayUI('modulemanager.otui')
|
||||
function init()
|
||||
moduleManagerWindow = g_ui.displayUI('modulemanager')
|
||||
moduleManagerWindow:hide()
|
||||
moduleList = moduleManagerWindow:getChildById('moduleList')
|
||||
connect(moduleList, { onChildFocusChange = function(self, focusedChild)
|
||||
if focusedChild == nil then return end
|
||||
ModuleManager.updateModuleInfo(focusedChild:getText())
|
||||
updateModuleInfo(focusedChild:getText())
|
||||
end })
|
||||
|
||||
g_keyboard.bindKeyPress('Up', function() moduleList:focusPreviousChild(KeyboardFocusReason) end, moduleManagerWindow)
|
||||
g_keyboard.bindKeyPress('Down', function() moduleList:focusNextChild(KeyboardFocusReason) end, moduleManagerWindow)
|
||||
|
||||
moduleManagerButton = TopMenu.addLeftButton('moduleManagerButton', tr('Module Manager'), 'modulemanager.png', ModuleManager.toggle)
|
||||
moduleManagerButton = modules.client_topmenu.addLeftButton('moduleManagerButton', tr('Module Manager'), '/images/topbuttons/modulemanager', toggle)
|
||||
|
||||
-- refresh modules only after all modules are loaded
|
||||
addEvent(ModuleManager.listModules)
|
||||
addEvent(listModules)
|
||||
end
|
||||
|
||||
function ModuleManager.terminate()
|
||||
function hideButton()
|
||||
moduleManagerButton:hide()
|
||||
end
|
||||
|
||||
function terminate()
|
||||
moduleManagerWindow:destroy()
|
||||
moduleManagerWindow = nil
|
||||
moduleManagerButton:destroy()
|
||||
moduleManagerButton = nil
|
||||
moduleList = nil
|
||||
ModuleManager = nil
|
||||
end
|
||||
|
||||
function ModuleManager.hide()
|
||||
function hide()
|
||||
moduleManagerWindow:hide()
|
||||
end
|
||||
|
||||
function ModuleManager.show()
|
||||
function show()
|
||||
moduleManagerWindow:show()
|
||||
moduleManagerWindow:raise()
|
||||
moduleManagerWindow:focus()
|
||||
end
|
||||
|
||||
function ModuleManager.toggle()
|
||||
function toggle()
|
||||
if moduleManagerWindow:isVisible() then
|
||||
ModuleManager.hide()
|
||||
hide()
|
||||
else
|
||||
ModuleManager.show()
|
||||
show()
|
||||
end
|
||||
end
|
||||
|
||||
function ModuleManager.refreshModules()
|
||||
function refreshModules()
|
||||
g_modules.discoverModules()
|
||||
ModuleManager.listModules()
|
||||
listModules()
|
||||
end
|
||||
|
||||
function ModuleManager.listModules()
|
||||
function listModules()
|
||||
if not moduleManagerWindow then return end
|
||||
|
||||
moduleList:destroyChildren()
|
||||
@@ -69,7 +70,7 @@ function ModuleManager.listModules()
|
||||
moduleList:focusChild(moduleList:getFirstChild(), ActiveFocusReason)
|
||||
end
|
||||
|
||||
function ModuleManager.refreshLoadedModules()
|
||||
function refreshLoadedModules()
|
||||
if not moduleManagerWindow then return end
|
||||
|
||||
for i,child in ipairs(moduleList:getChildren()) do
|
||||
@@ -78,7 +79,7 @@ function ModuleManager.refreshLoadedModules()
|
||||
end
|
||||
end
|
||||
|
||||
function ModuleManager.updateModuleInfo(moduleName)
|
||||
function updateModuleInfo(moduleName)
|
||||
if not moduleManagerWindow then return end
|
||||
|
||||
local name = ''
|
||||
@@ -118,36 +119,36 @@ function ModuleManager.updateModuleInfo(moduleName)
|
||||
unloadButton:setEnabled(canUnload)
|
||||
end
|
||||
|
||||
function ModuleManager.reloadCurrentModule()
|
||||
function reloadCurrentModule()
|
||||
local focusedChild = moduleList:getFocusedChild()
|
||||
if focusedChild then
|
||||
local module = g_modules.getModule(focusedChild:getText())
|
||||
if module then
|
||||
module:reload()
|
||||
if ModuleManager == nil then return end
|
||||
ModuleManager.updateModuleInfo(module:getName())
|
||||
ModuleManager.refreshLoadedModules()
|
||||
ModuleManager.show()
|
||||
if modules.client_modulemanager == nil then return end
|
||||
updateModuleInfo(module:getName())
|
||||
refreshLoadedModules()
|
||||
show()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ModuleManager.unloadCurrentModule()
|
||||
function unloadCurrentModule()
|
||||
local focusedChild = moduleList:getFocusedChild()
|
||||
if focusedChild then
|
||||
local module = g_modules.getModule(focusedChild:getText())
|
||||
if module then
|
||||
module:unload()
|
||||
if ModuleManager == nil then return end
|
||||
ModuleManager.updateModuleInfo(module:getName())
|
||||
ModuleManager.refreshLoadedModules()
|
||||
updateModuleInfo(module:getName())
|
||||
refreshLoadedModules()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ModuleManager.reloadAllModules()
|
||||
function reloadAllModules()
|
||||
g_modules.reloadModules()
|
||||
ModuleManager.refreshLoadedModules()
|
||||
ModuleManager.show()
|
||||
refreshLoadedModules()
|
||||
show()
|
||||
end
|
||||
|
||||
|
@@ -3,13 +3,8 @@ Module
|
||||
description: Manage other modules
|
||||
author: edubart
|
||||
website: www.otclient.info
|
||||
|
||||
dependencies:
|
||||
- client_topmenu
|
||||
|
||||
@onLoad: |
|
||||
dofile 'modulemanager'
|
||||
ModuleManager.init()
|
||||
|
||||
@onUnload: |
|
||||
ModuleManager.terminate()
|
||||
sandboxed: true
|
||||
scripts: [ modulemanager ]
|
||||
dependencies: [ client_topmenu ]
|
||||
@onLoad: init()
|
||||
@onUnload: terminate()
|
||||
|
@@ -35,7 +35,7 @@ MainWindow
|
||||
size: 450 450
|
||||
!text: tr('Module Manager')
|
||||
|
||||
@onEscape: ModuleManager.hide()
|
||||
@onEscape: modules.client_modulemanager.hide()
|
||||
|
||||
TextList
|
||||
id: moduleList
|
||||
@@ -63,7 +63,7 @@ MainWindow
|
||||
margin-top: 8
|
||||
!text: tr('Refresh')
|
||||
text-auto-resize: true
|
||||
@onClick: ModuleManager.refreshModules()
|
||||
@onClick: modules.client_modulemanager.refreshModules()
|
||||
|
||||
Button
|
||||
id: reloadAllModulesButton
|
||||
@@ -72,7 +72,7 @@ MainWindow
|
||||
margin-top: 8
|
||||
!text: tr('Reload All')
|
||||
text-auto-resize: true
|
||||
@onClick: ModuleManager.reloadAllModules()
|
||||
@onClick: modules.client_modulemanager.reloadAllModules()
|
||||
|
||||
Panel
|
||||
id: moduleInfo
|
||||
@@ -131,7 +131,7 @@ MainWindow
|
||||
!text: tr('Load')
|
||||
enabled: false
|
||||
width: 90
|
||||
@onClick: ModuleManager.reloadCurrentModule()
|
||||
@onClick: modules.client_modulemanager.reloadCurrentModule()
|
||||
|
||||
Button
|
||||
id: moduleUnloadButton
|
||||
@@ -142,7 +142,7 @@ MainWindow
|
||||
!text: tr('Unload')
|
||||
enabled: false
|
||||
width: 90
|
||||
@onClick: ModuleManager.unloadCurrentModule()
|
||||
@onClick: modules.client_modulemanager.unloadCurrentModule()
|
||||
|
||||
Button
|
||||
id: closeButton
|
||||
@@ -150,5 +150,5 @@ MainWindow
|
||||
anchors.right: parent.right
|
||||
!text: tr('Close')
|
||||
width: 90
|
||||
@onClick: ModuleManager.hide()
|
||||
@onClick: modules.client_modulemanager.hide()
|
||||
|
||||
|
Before Width: | Height: | Size: 952 B |
@@ -1,9 +1,9 @@
|
||||
FrameRateScrollbar < HorizontalScrollBar
|
||||
step: 1
|
||||
@onValueChange: Options.setOption(self:getId(), self:getValue())
|
||||
@onValueChange: modules.client_options.setOption(self:getId(), self:getValue())
|
||||
@onSetup: |
|
||||
UIScrollBar.onSetup(self)
|
||||
local value = Options.getOption(self:getId())
|
||||
local value = modules.client_options.getOption(self:getId())
|
||||
if value == 0 then value = self:getMaximum() end
|
||||
self:setValue(value)
|
||||
|
||||
@@ -54,7 +54,7 @@ Panel
|
||||
anchors.top: prev.bottom
|
||||
margin-top: 16
|
||||
@onSetup: |
|
||||
local value = Options.getOption('backgroundFrameRate')
|
||||
local value = modules.client_options.getOption('backgroundFrameRate')
|
||||
local text = value
|
||||
if value <= 0 or value >= 201 then
|
||||
text = 'max'
|
||||
@@ -78,7 +78,7 @@ Panel
|
||||
anchors.top: prev.bottom
|
||||
margin-top: 6
|
||||
@onSetup: |
|
||||
local value = Options.getOption('foregroundFrameRate')
|
||||
local value = modules.client_options.getOption('foregroundFrameRate')
|
||||
local text = value
|
||||
if value <= 0 or value >= 61 then
|
||||
text = 'max'
|
||||
@@ -102,7 +102,7 @@ Panel
|
||||
anchors.top: prev.bottom
|
||||
margin-top: 6
|
||||
@onSetup: |
|
||||
local value = Options.getOption('ambientLight')
|
||||
local value = modules.client_options.getOption('ambientLight')
|
||||
self:setText(tr('Ambient light: %s%%', value))
|
||||
|
||||
FrameRateScrollbar
|
||||
|
@@ -1,5 +1,3 @@
|
||||
Options = {}
|
||||
|
||||
local defaultOptions = {
|
||||
vsync = false,
|
||||
showFps = true,
|
||||
@@ -52,9 +50,9 @@ local function setupGraphicsEngines()
|
||||
|
||||
enginesRadioGroup.onSelectionChange = function(self, selected)
|
||||
if selected == ogl1 then
|
||||
Options.setOption('painterEngine', 1)
|
||||
setOption('painterEngine', 1)
|
||||
elseif selected == ogl2 then
|
||||
Options.setOption('painterEngine', 2)
|
||||
setOption('painterEngine', 2)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -79,49 +77,49 @@ function displayWarning(widget, warning)
|
||||
end
|
||||
end
|
||||
|
||||
function Options.init()
|
||||
function init()
|
||||
-- load options
|
||||
for k,v in pairs(defaultOptions) do
|
||||
g_settings.setDefault(k, v)
|
||||
if type(v) == 'boolean' then
|
||||
Options.setOption(k, g_settings.getBoolean(k))
|
||||
setOption(k, g_settings.getBoolean(k))
|
||||
elseif type(v) == 'number' then
|
||||
Options.setOption(k, g_settings.getNumber(k))
|
||||
setOption(k, g_settings.getNumber(k))
|
||||
end
|
||||
end
|
||||
|
||||
g_keyboard.bindKeyDown('Ctrl+D', function() Options.toggle() end)
|
||||
g_keyboard.bindKeyDown('Ctrl+F', function() Options.toggleOption('fullscreen') end)
|
||||
g_keyboard.bindKeyDown('Ctrl+Shift+D', function() Options.toggleOption('walkBooster') end)
|
||||
g_keyboard.bindKeyDown('Ctrl+D', function() toggle() end)
|
||||
g_keyboard.bindKeyDown('Ctrl+F', function() toggleOption('fullscreen') end)
|
||||
g_keyboard.bindKeyDown('Ctrl+Shift+D', function() toggleOption('walkBooster') end)
|
||||
|
||||
optionsWindow = g_ui.displayUI('options.otui')
|
||||
optionsWindow = g_ui.displayUI('options')
|
||||
optionsWindow:hide()
|
||||
optionsButton = TopMenu.addLeftButton('optionsButton', tr('Options') .. ' (Ctrl+D)', 'options.png', Options.toggle)
|
||||
optionsButton = modules.client_topmenu.addLeftButton('optionsButton', tr('Options') .. ' (Ctrl+D)', '/images/topbuttons/options', toggle)
|
||||
|
||||
optionsTabBar = optionsWindow:getChildById('optionsTabBar')
|
||||
optionsTabBar:setContentWidget(optionsWindow:getChildById('optionsTabContent'))
|
||||
|
||||
gamePanel = g_ui.loadUI('game.otui')
|
||||
gamePanel = g_ui.loadUI('game')
|
||||
optionsTabBar:addTab(tr('Game'), gamePanel)
|
||||
|
||||
consolePanel = g_ui.loadUI('console.otui')
|
||||
consolePanel = g_ui.loadUI('console')
|
||||
optionsTabBar:addTab(tr('Console'), consolePanel)
|
||||
|
||||
graphicsPanel = g_ui.loadUI('graphics.otui')
|
||||
graphicsPanel = g_ui.loadUI('graphics')
|
||||
optionsTabBar:addTab(tr('Graphics'), graphicsPanel)
|
||||
|
||||
if g_game.isOfficialTibia() then
|
||||
local optionWalkBooster = gamePanel:getChildById('walkBooster')
|
||||
optionWalkBooster.onCheckChange = function(widget)
|
||||
displayWarning(widget, "This feature could be detectable by official Tibia servers. Would like to continue?")
|
||||
Options.setOption(widget:getId(), widget:isChecked())
|
||||
setOption(widget:getId(), widget:isChecked())
|
||||
end
|
||||
end
|
||||
|
||||
setupGraphicsEngines()
|
||||
end
|
||||
|
||||
function Options.terminate()
|
||||
function terminate()
|
||||
g_keyboard.unbindKeyDown('Ctrl+D')
|
||||
g_keyboard.unbindKeyDown('Ctrl+F')
|
||||
g_keyboard.unbindKeyDown('Ctrl+Shift+D')
|
||||
@@ -133,37 +131,36 @@ function Options.terminate()
|
||||
gamePanel = nil
|
||||
consolePanel = nil
|
||||
graphicsPanel = nil
|
||||
Options = nil
|
||||
end
|
||||
|
||||
function Options.toggle()
|
||||
function toggle()
|
||||
if optionsWindow:isVisible() then
|
||||
Options.hide()
|
||||
hide()
|
||||
else
|
||||
Options.show()
|
||||
show()
|
||||
end
|
||||
end
|
||||
|
||||
function Options.show()
|
||||
function show()
|
||||
optionsWindow:show()
|
||||
optionsWindow:raise()
|
||||
optionsWindow:focus()
|
||||
end
|
||||
|
||||
function Options.hide()
|
||||
function hide()
|
||||
optionsWindow:hide()
|
||||
end
|
||||
|
||||
function Options.toggleOption(key)
|
||||
function toggleOption(key)
|
||||
local optionWidget = optionsWindow:recursiveGetChildById(key)
|
||||
if optionWidget then
|
||||
optionWidget:setChecked(not Options.getOption(key))
|
||||
optionWidget:setChecked(not getOption(key))
|
||||
else
|
||||
Options.setOption(key, not Options.getOption(key))
|
||||
setOption(key, not getOption(key))
|
||||
end
|
||||
end
|
||||
|
||||
function Options.setOption(key, value)
|
||||
function setOption(key, value)
|
||||
if options[key] == value then return end
|
||||
if key == 'vsync' then
|
||||
g_window.setVerticalSync(value)
|
||||
@@ -229,7 +226,7 @@ function Options.setOption(key, value)
|
||||
options[key] = value
|
||||
end
|
||||
|
||||
function Options.getOption(key)
|
||||
function getOption(key)
|
||||
return options[key]
|
||||
end
|
||||
|
||||
|
@@ -3,13 +3,8 @@ Module
|
||||
description: Create the options window
|
||||
author: edubart, BeniS
|
||||
website: www.otclient.info
|
||||
|
||||
dependencies:
|
||||
- client_topmenu
|
||||
|
||||
@onLoad: |
|
||||
dofile 'options'
|
||||
Options.init()
|
||||
|
||||
@onUnload: |
|
||||
Options.terminate()
|
||||
sandboxed: true
|
||||
dependencies: [ client_topmenu ]
|
||||
scripts: [ options ]
|
||||
@onLoad: init()
|
||||
@onUnload: terminate()
|
||||
|
@@ -1,6 +1,6 @@
|
||||
OptionCheckBox < CheckBox
|
||||
@onCheckChange: Options.setOption(self:getId(), self:isChecked())
|
||||
@onSetup: self:setChecked(Options.getOption(self:getId()))
|
||||
@onCheckChange: modules.client_options.setOption(self:getId(), self:isChecked())
|
||||
@onSetup: self:setChecked(modules.client_options.getOption(self:getId()))
|
||||
height: 16
|
||||
|
||||
$first:
|
||||
@@ -19,8 +19,8 @@ MainWindow
|
||||
!text: tr('Options')
|
||||
size: 350 310
|
||||
|
||||
@onEnter: Options.hide()
|
||||
@onEscape: Options.hide()
|
||||
@onEnter: modules.client_options.hide()
|
||||
@onEscape: modules.client_options.hide()
|
||||
|
||||
TabBarRounded
|
||||
id: optionsTabBar
|
||||
@@ -41,4 +41,4 @@ MainWindow
|
||||
width: 64
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
@onClick: Options.hide()
|
||||
@onClick: modules.client_options.hide()
|
||||
|
Before Width: | Height: | Size: 660 B |
@@ -1,95 +0,0 @@
|
||||
Particles = { }
|
||||
|
||||
-- private variables
|
||||
local particlesWindow
|
||||
local particlesButton
|
||||
|
||||
-- private functions
|
||||
local function onExtendedParticles(protocol, opcode, buffer)
|
||||
|
||||
end
|
||||
|
||||
-- public functions
|
||||
function Particles.init()
|
||||
particlesWindow = g_ui.displayUI('particles.otui')
|
||||
particlesButton = TopMenu.addLeftButton('particlesButton', tr('Particles Manager'), 'particles.png', Particles.toggle)
|
||||
|
||||
local particlesList = particlesWindow:getChildById('particlesList')
|
||||
g_keyboard.bindKeyPress('Up', function() particlesList:focusPreviousChild(KeyboardFocusReason) end, particlesWindow)
|
||||
g_keyboard.bindKeyPress('Down', function() particlesList:focusNextChild(KeyboardFocusReason) end, particlesWindow)
|
||||
|
||||
Extended.register(ExtendedParticles, onExtendedParticles)
|
||||
end
|
||||
|
||||
function Particles.terminate()
|
||||
particlesWindow:destroy()
|
||||
particlesWindow = nil
|
||||
|
||||
particlesButton:destroy()
|
||||
particlesButton = nil
|
||||
|
||||
Extended.unregister(ExtendedParticles)
|
||||
end
|
||||
|
||||
function Particles.show()
|
||||
Particles.refreshList()
|
||||
particlesWindow:show()
|
||||
particlesWindow:raise()
|
||||
particlesWindow:focus()
|
||||
end
|
||||
|
||||
function Particles.hide()
|
||||
particlesWindow:hide()
|
||||
end
|
||||
|
||||
function Particles.toggle()
|
||||
if particlesWindow:isVisible() then
|
||||
Particles.hide()
|
||||
else
|
||||
Particles.show()
|
||||
end
|
||||
end
|
||||
|
||||
function Particles.refreshInfo()
|
||||
local particlesList = particlesWindow:getChildById('particlesList')
|
||||
local widget = particlesList:getFocusedChild()
|
||||
|
||||
local name = particlesWindow:getChildById('name')
|
||||
name:setText(widget.effect:getName())
|
||||
|
||||
local location = particlesWindow:getChildById('location')
|
||||
location:setText(widget.effect:getFile())
|
||||
|
||||
local description = particlesWindow:getChildById('description')
|
||||
description:setText(widget.effect:getDescription())
|
||||
end
|
||||
|
||||
function Particles.refreshList()
|
||||
local particlesList = particlesWindow:getChildById('particlesList')
|
||||
particlesList.onChildFocusChange = nil
|
||||
particlesList:destroyChildren()
|
||||
|
||||
local firstChild = nil
|
||||
local effects = g_particles.getEffectsTypes()
|
||||
for name,effect in pairs(effects) do
|
||||
local label = g_ui.createWidget('ParticlesListLabel', particlesList)
|
||||
label:setText(name)
|
||||
label.effect = effect
|
||||
|
||||
if not firstChild then
|
||||
firstChild = label
|
||||
end
|
||||
end
|
||||
|
||||
particlesList.onChildFocusChange = Particles.refreshInfo
|
||||
if firstChild then
|
||||
firstChild:focus()
|
||||
end
|
||||
end
|
||||
|
||||
function Particles.start()
|
||||
local particlesList = particlesWindow:getChildById('particlesList')
|
||||
local focusedEffect = particlesList:getFocusedChild()
|
||||
local preview = particlesWindow:getChildById('preview')
|
||||
preview:addEffect(focusedEffect:getText())
|
||||
end
|
@@ -1,17 +0,0 @@
|
||||
Module
|
||||
name: client_particles
|
||||
description: Manages particles systems
|
||||
author: baxnie
|
||||
website: www.otclient.info
|
||||
|
||||
dependencies:
|
||||
- client_extended
|
||||
- client_locales
|
||||
- client_topmenu
|
||||
|
||||
@onLoad: |
|
||||
dofile 'particles'
|
||||
Particles.init()
|
||||
|
||||
@onUnload: |
|
||||
Particles.terminate()
|
@@ -1,130 +0,0 @@
|
||||
ParticlesListLabel < Label
|
||||
font: verdana-11px-monochrome
|
||||
background-color: alpha
|
||||
text-offset: 2 0
|
||||
focusable: true
|
||||
|
||||
$focus:
|
||||
background-color: #ffffff22
|
||||
color: #ffffff
|
||||
|
||||
MainWindow
|
||||
id: particlesWindow
|
||||
!text: tr('Particles Manager')
|
||||
size: 450 450
|
||||
visible: false
|
||||
@onEscape: Particles.hide()
|
||||
|
||||
TextList
|
||||
id: particlesList
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
anchors.bottom: separator.top
|
||||
width: 128
|
||||
padding: 1
|
||||
focusable: false
|
||||
margin-bottom: 10
|
||||
vertical-scrollbar: particlesListScrollBar
|
||||
|
||||
VerticalScrollBar
|
||||
id: particlesListScrollBar
|
||||
anchors.top: particlesList.top
|
||||
anchors.bottom: particlesList.bottom
|
||||
anchors.left: particlesList.right
|
||||
step: 14
|
||||
pixels-scroll: true
|
||||
|
||||
Label
|
||||
!text: tr('Name')
|
||||
anchors.top: parent.top
|
||||
anchors.left: prev.right
|
||||
margin-left: 10
|
||||
|
||||
FlatLabel
|
||||
id: name
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
anchors.right: parent.right
|
||||
margin-top: 3
|
||||
|
||||
Label
|
||||
!text: tr('Location')
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
margin-top: 10
|
||||
|
||||
FlatLabel
|
||||
id: location
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
anchors.right: parent.right
|
||||
margin-top: 3
|
||||
|
||||
Label
|
||||
!text: tr('Description')
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
margin-top: 10
|
||||
|
||||
FlatLabel
|
||||
id: description
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
anchors.right: parent.right
|
||||
margin-top: 3
|
||||
|
||||
Label
|
||||
!text: tr('Preview')
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
margin-top: 10
|
||||
|
||||
ParticlesFlatPanel
|
||||
id: preview
|
||||
margin-top: 3
|
||||
margin-bottom: 10
|
||||
anchors.top: prev.bottom
|
||||
anchors.bottom: next.top
|
||||
anchors.left: prev.left
|
||||
anchors.right: parent.right
|
||||
|
||||
reference: 10 10
|
||||
|
||||
Button
|
||||
id: startButton
|
||||
!text: tr('Start')
|
||||
width: 64
|
||||
anchors.bottom: separator.top
|
||||
anchors.left: location.left
|
||||
margin-bottom: 10
|
||||
|
||||
Button
|
||||
id: pauseButton
|
||||
!text: tr('Pause')
|
||||
width: 64
|
||||
anchors.bottom: prev.bottom
|
||||
anchors.left: prev.right
|
||||
margin-left: 5
|
||||
|
||||
Button
|
||||
id: reloadButton
|
||||
!text: tr('Reload')
|
||||
width: 64
|
||||
anchors.bottom: separator.top
|
||||
anchors.right: parent.right
|
||||
margin-bottom: 10
|
||||
|
||||
HorizontalSeparator
|
||||
id: separator
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: next.top
|
||||
margin-bottom: 10
|
||||
|
||||
Button
|
||||
id: closeButton
|
||||
!text: tr('Close')
|
||||
width: 64
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
@onClick: Particles.hide()
|
Before Width: | Height: | Size: 571 B |
@@ -1,144 +0,0 @@
|
||||
Skins = { }
|
||||
|
||||
-- private variables
|
||||
local defaultSkinName = 'Default'
|
||||
local installedSkins
|
||||
local currentSkin
|
||||
local skinComboBox
|
||||
|
||||
-- private functions
|
||||
local function onSkinComboBoxOptionChange(self, optionText, optionData)
|
||||
if Skins.setSkin(optionText) then
|
||||
g_settings.set('skin', optionText)
|
||||
g_textures.clearTexturesCache()
|
||||
g_modules.reloadModules()
|
||||
end
|
||||
end
|
||||
|
||||
local function getSkinPath(name)
|
||||
return getfsrcpath() .. '/skins/' .. string.lower(name)
|
||||
end
|
||||
|
||||
-- public functions
|
||||
function Skins.init()
|
||||
installedSkins = {}
|
||||
|
||||
Skins.installSkins('skins')
|
||||
|
||||
if installedSkins[defaultSkinName] then
|
||||
g_resources.addSearchPath(getSkinPath(defaultSkinName), true)
|
||||
end
|
||||
|
||||
local userSkinName = g_settings.get('skin', 'false')
|
||||
if userSkinName ~= 'false' and Skins.setSkin(userSkinName) then
|
||||
pdebug('Using configured skin: ' .. userSkinName)
|
||||
else
|
||||
pdebug('Using default skin: ' .. defaultSkinName)
|
||||
Skins.setSkin(defaultSkinName)
|
||||
g_settings.set('skin', defaultSkinName)
|
||||
end
|
||||
|
||||
addEvent( function()
|
||||
skinComboBox = g_ui.createWidget('ComboBoxRounded', rootWidget:recursiveGetChildById('rightButtonsPanel'))
|
||||
skinComboBox:setFixedSize(true)
|
||||
for key,value in pairs(installedSkins) do
|
||||
skinComboBox:addOption(value.name)
|
||||
end
|
||||
skinComboBox:setCurrentOption(currentSkin.name)
|
||||
skinComboBox.onOptionChange = onSkinComboBoxOptionChange
|
||||
end, false)
|
||||
end
|
||||
|
||||
function Skins.terminate()
|
||||
g_resources.removeSearchPath(getSkinPath(defaultSkinName))
|
||||
if currentSkin then
|
||||
g_resources.removeSearchPath(getSkinPath(currentSkin.name))
|
||||
end
|
||||
|
||||
installedSkins = nil
|
||||
currentSkin = nil
|
||||
skinComboBox = nil
|
||||
end
|
||||
|
||||
function Skins.installSkin(skin)
|
||||
if not skin or not skin.name or not skin.styles then
|
||||
error('Unable to install skin.')
|
||||
return false
|
||||
end
|
||||
|
||||
if installedSkins[skin.name] then
|
||||
pwarning(skin.name .. ' has been replaced.')
|
||||
end
|
||||
|
||||
installedSkins[skin.name] = skin
|
||||
return true
|
||||
end
|
||||
|
||||
function Skins.installSkins(directory)
|
||||
dofiles(directory)
|
||||
end
|
||||
|
||||
function Skins.setSkin(name)
|
||||
local skin = installedSkins[name]
|
||||
if not skin then
|
||||
pwarning("Skin " .. name .. ' does not exist.')
|
||||
return false
|
||||
end
|
||||
|
||||
g_fonts.clearFonts()
|
||||
g_ui.clearStyles()
|
||||
|
||||
if currentSkin and currentSkin.name ~= defaultSkinName then
|
||||
g_resources.removeSearchPath(getSkinPath(currentSkin.name))
|
||||
end
|
||||
|
||||
if skin.name ~= defaultSkinName then
|
||||
g_resources.addSearchPath(getSkinPath(skin.name), true)
|
||||
Skins.loadSkin(skin)
|
||||
end
|
||||
|
||||
local defaultSkin = installedSkins[defaultSkinName]
|
||||
if not defaultSkin then
|
||||
error("Default skin is not installed.")
|
||||
return false
|
||||
end
|
||||
Skins.loadSkin(defaultSkin)
|
||||
|
||||
currentSkin = skin
|
||||
return true
|
||||
end
|
||||
|
||||
function Skins.loadSkin(skin)
|
||||
local lowerName = string.lower(skin.name)
|
||||
|
||||
if skin.fonts then
|
||||
for i=1,#skin.fonts do
|
||||
g_fonts.importFont('skins/' .. lowerName .. '/fonts/' .. skin.fonts[i])
|
||||
end
|
||||
end
|
||||
|
||||
if skin.defaultFont then
|
||||
g_fonts.setDefaultFont(skin.defaultFont)
|
||||
end
|
||||
|
||||
if skin.styles then
|
||||
for i=1,#skin.styles do
|
||||
g_ui.importStyle('skins/' .. lowerName .. '/styles/' .. skin.styles[i])
|
||||
end
|
||||
end
|
||||
|
||||
if skin.particles then
|
||||
for i=1,#skin.particles do
|
||||
g_particles.importParticle('skins/' .. lowerName .. '/particles/' .. skin.particles[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Skins.hideComboBox()
|
||||
if not skinComboBox then
|
||||
addEvent(Skins.hideComboBox)
|
||||
else
|
||||
skinComboBox:hide()
|
||||
skinComboBox:setWidth(0)
|
||||
end
|
||||
end
|
@@ -1,12 +0,0 @@
|
||||
Module
|
||||
name: client_skins
|
||||
description: Changes modules styles
|
||||
author: baxnie
|
||||
website: www.otclient.info
|
||||
|
||||
@onLoad: |
|
||||
dofile 'skins'
|
||||
Skins.init()
|
||||
|
||||
@onUnload: |
|
||||
Skins.terminate()
|
@@ -1,42 +0,0 @@
|
||||
local skin = {
|
||||
name = 'Default',
|
||||
|
||||
-- first font is default
|
||||
fonts = {
|
||||
'verdana-11px-antialised',
|
||||
'verdana-11px-monochrome',
|
||||
'verdana-11px-rounded',
|
||||
'terminus-14px-bold'
|
||||
},
|
||||
defaultFont = 'verdana-11px-antialised',
|
||||
|
||||
styles = {
|
||||
'buttons.otui',
|
||||
'creaturebuttons.otui',
|
||||
'labels.otui',
|
||||
'panels.otui',
|
||||
'separators.otui',
|
||||
'textedits.otui',
|
||||
'checkboxes.otui',
|
||||
'progressbars.otui',
|
||||
'tabbars.otui',
|
||||
'windows.otui',
|
||||
'listboxes.otui',
|
||||
'popupmenus.otui',
|
||||
'comboboxes.otui',
|
||||
'spinboxes.otui',
|
||||
'messageboxes.otui',
|
||||
'scrollbars.otui',
|
||||
'splitters.otui',
|
||||
'miniwindow.otui',
|
||||
'items.otui',
|
||||
'creatures.otui',
|
||||
'tables.otui'
|
||||
},
|
||||
|
||||
particles = {
|
||||
'shiny.otps'
|
||||
}
|
||||
}
|
||||
|
||||
Skins.installSkin(skin)
|
Before Width: | Height: | Size: 230 B |
Before Width: | Height: | Size: 266 B |
Before Width: | Height: | Size: 198 B |
Before Width: | Height: | Size: 238 B |
@@ -1,8 +0,0 @@
|
||||
Font
|
||||
name: terminus-14px-bold
|
||||
texture: terminus-14px-bold.png
|
||||
height: 16
|
||||
y-offset: 2
|
||||
glyph-size: 16 16
|
||||
fixed-glyph-width: 8
|
||||
space-width: 8
|
Before Width: | Height: | Size: 3.8 KiB |
@@ -1,6 +0,0 @@
|
||||
Font
|
||||
name: verdana-11px-antialised
|
||||
texture: verdana-11px-antialised_cp1252.png
|
||||
height: 14
|
||||
glyph-size: 16 16
|
||||
space-width: 4
|
Before Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 9.8 KiB |
@@ -1,6 +0,0 @@
|
||||
Font
|
||||
name: verdana-11px-monochrome
|
||||
texture: verdana-11px-monochrome_cp1252.png
|
||||
height: 14
|
||||
glyph-size: 16 16
|
||||
space-width: 3
|
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.6 KiB |
@@ -1,8 +0,0 @@
|
||||
Font
|
||||
name: verdana-11px-rounded
|
||||
texture: verdana-11px-rounded_cp1252.png
|
||||
height: 16
|
||||
glyph-size: 16 16
|
||||
y-offset: -2
|
||||
spacing: -1 -3
|
||||
space-width: 4
|
Before Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 833 B |
Before Width: | Height: | Size: 859 B |
Before Width: | Height: | Size: 409 B |
Before Width: | Height: | Size: 281 B |
Before Width: | Height: | Size: 548 B |
Before Width: | Height: | Size: 262 B |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 457 B |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 139 B |
Before Width: | Height: | Size: 152 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 381 B |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 262 B |
Before Width: | Height: | Size: 241 B |
Before Width: | Height: | Size: 315 B |
Before Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 197 B |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 400 B |
Before Width: | Height: | Size: 661 B |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 673 B |
Before Width: | Height: | Size: 696 B |
Before Width: | Height: | Size: 415 B |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 197 B |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 34 KiB |
@@ -1,52 +0,0 @@
|
||||
Particle
|
||||
name: shiny_star
|
||||
|
||||
min-position-radius: 0
|
||||
max-position-radius: 8
|
||||
min-position-angle: 0
|
||||
max-position-angle: 360
|
||||
velocity: 4
|
||||
min-velocity-angle: 0
|
||||
max-velocity-angle: 360
|
||||
|
||||
particle-size: 4 4
|
||||
texture: shiny_star.png
|
||||
composition-mode: addition
|
||||
|
||||
Effect
|
||||
name: Shiny3
|
||||
description: 3 Shiny stars derping aroud
|
||||
|
||||
System
|
||||
position: 0 0
|
||||
|
||||
Emitter
|
||||
position: 0 0
|
||||
delay: 0
|
||||
duration: 0
|
||||
burstRate: 0
|
||||
burstCount: 3
|
||||
particle-type: shiny_star
|
||||
|
||||
AttractionAffector
|
||||
position: 0 0
|
||||
acceleration: 2
|
||||
|
||||
Effect
|
||||
name: Shiny5
|
||||
description: 5 Shiny stars derping aroud
|
||||
|
||||
System
|
||||
position: 0 0
|
||||
|
||||
Emitter
|
||||
position: 0 0
|
||||
delay: 0
|
||||
duration: 0
|
||||
burstRate: 0
|
||||
burstCount: 5
|
||||
particle-type: shiny_star
|
||||
|
||||
AttractionAffector
|
||||
position: 0 0
|
||||
acceleration: 2
|
@@ -1,61 +0,0 @@
|
||||
Button < UIButton
|
||||
font: verdana-11px-antialised
|
||||
color: #f0ad4dff
|
||||
size: 106 22
|
||||
text-offset: 0 0
|
||||
image-source: /images/button_rounded.png
|
||||
image-color: white
|
||||
image-clip: 0 0 20 20
|
||||
image-border: 2
|
||||
padding: 5 10 5 10
|
||||
|
||||
$hover !disabled:
|
||||
image-clip: 0 20 20 20
|
||||
|
||||
$pressed:
|
||||
image-clip: 0 40 20 20
|
||||
text-offset: 1 1
|
||||
|
||||
$disabled:
|
||||
color: #f0ad4d88
|
||||
|
||||
TabButton < UIButton
|
||||
size: 20 20
|
||||
image-source: /images/tabbutton_rounded.png
|
||||
image-color: white
|
||||
image-clip: 0 0 20 20
|
||||
image-border: 2
|
||||
icon-color: white
|
||||
color: #aaaaaa
|
||||
|
||||
$hover !on:
|
||||
image-clip: 0 20 20 20
|
||||
color: white
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff66
|
||||
icon-color: #888888
|
||||
|
||||
$on:
|
||||
image-clip: 0 40 20 20
|
||||
color: #80c7f8
|
||||
|
||||
BrowseButton < Button
|
||||
size: 20 29
|
||||
icon-clip: 0 0 12 21
|
||||
|
||||
$hover !disabled:
|
||||
icon-clip: 0 21 12 21
|
||||
|
||||
$pressed:
|
||||
icon-clip: 0 22 12 21
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff55
|
||||
icon-color: #ffffff55
|
||||
|
||||
NextButton < BrowseButton
|
||||
icon-source: /images/arrow_right.png
|
||||
|
||||
PreviousButton < BrowseButton
|
||||
icon-source: /images/arrow_left.png
|
@@ -1,66 +0,0 @@
|
||||
CheckBox < UICheckBox
|
||||
size: 16 16
|
||||
text-align: left
|
||||
text: aa
|
||||
text-offset: 16 0
|
||||
color: #aaaaaa
|
||||
image-color: #ffffffff
|
||||
image-rect: 0 0 12 12
|
||||
image-offset: 0 2
|
||||
image-source: /images/checkbox.png
|
||||
|
||||
$hover !disabled:
|
||||
color: #cccccc
|
||||
|
||||
$!checked:
|
||||
image-clip: 0 0 12 12
|
||||
|
||||
$hover !checked:
|
||||
image-clip: 0 12 12 12
|
||||
|
||||
$checked:
|
||||
image-clip: 0 24 12 12
|
||||
|
||||
$hover checked:
|
||||
image-clip: 0 36 12 12
|
||||
|
||||
$disabled:
|
||||
image-color: #ffffff88
|
||||
color: #aaaaaa88
|
||||
|
||||
ColorBox < UICheckBox
|
||||
size: 16 16
|
||||
image-color: #ffffffff
|
||||
image-source: /images/colorbox.png
|
||||
|
||||
$checked:
|
||||
image-clip: 16 0 16 16
|
||||
|
||||
$!checked:
|
||||
image-clip: 0 0 16 16
|
||||
|
||||
ButtonBox < UICheckBox
|
||||
font: verdana-11px-antialised
|
||||
color: #ffffffff
|
||||
size: 106 22
|
||||
text-offset: 0 0
|
||||
text-align: center
|
||||
image-source: /images/tabbutton_rounded.png
|
||||
image-color: white
|
||||
image-clip: 0 0 20 20
|
||||
image-border: 2
|
||||
|
||||
$hover !disabled:
|
||||
image-clip: 0 20 20 20
|
||||
|
||||
$checked:
|
||||
image-clip: 0 40 20 20
|
||||
color: #80c7f8
|
||||
|
||||
$disabled:
|
||||
color: #666666ff
|
||||
image-color: #ffffff88
|
||||
|
||||
ButtonBoxRounded < ButtonBox
|
||||
image-source: /images/tabbutton_rounded.png
|
||||
image-border: 2
|
@@ -1,62 +0,0 @@
|
||||
ComboBoxPopupMenuButton < UIButton
|
||||
height: 20
|
||||
font: verdana-11px-antialised
|
||||
text-align: left
|
||||
text-offset: 4 0
|
||||
color: #aaaaaa
|
||||
background-color: alpha
|
||||
|
||||
$hover !disabled:
|
||||
color: #ffffff
|
||||
background-color: #ffffff44
|
||||
|
||||
$disabled:
|
||||
color: #555555
|
||||
|
||||
ComboBoxPopupMenu < UIPopupMenu
|
||||
image-source: /images/combobox_square.png
|
||||
image-clip: 0 60 89 20
|
||||
image-border-left: 1
|
||||
image-border-right: 1
|
||||
|
||||
ComboBox < UIComboBox
|
||||
font: verdana-11px-antialised
|
||||
color: #aaaaaa
|
||||
size: 89 20
|
||||
text-offset: 3 0
|
||||
text-align: left
|
||||
image-source: /images/combobox_square.png
|
||||
image-border: 1
|
||||
image-border-right: 17
|
||||
image-clip: 0 0 89 20
|
||||
|
||||
$hover !disabled:
|
||||
image-clip: 0 20 89 20
|
||||
|
||||
$on:
|
||||
image-clip: 0 40 89 20
|
||||
|
||||
ComboBoxRoundedPopupMenuButton < UIButton
|
||||
height: 20
|
||||
font: verdana-11px-antialised
|
||||
text-align: left
|
||||
text-offset: 4 0
|
||||
color: #aaaaaa
|
||||
background-color: alpha
|
||||
|
||||
$hover !disabled:
|
||||
color: #ffffff
|
||||
background-color: #ffffff44
|
||||
|
||||
$disabled:
|
||||
color: #555555
|
||||
|
||||
ComboBoxRoundedPopupMenu < UIPopupMenu
|
||||
image-source: /images/combobox_rounded.png
|
||||
image-clip: 0 60 89 20
|
||||
image-border-left: 1
|
||||
image-border-right: 1
|
||||
|
||||
ComboBoxRounded < ComboBox
|
||||
image-source: /images/combobox_rounded.png
|
||||
image-border: 2
|
@@ -1,48 +0,0 @@
|
||||
CreatureButton < UICreatureButton
|
||||
height: 20
|
||||
margin-bottom: 5
|
||||
|
||||
UICreature
|
||||
id: creature
|
||||
size: 20 20
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.top
|
||||
phantom: true
|
||||
|
||||
UIWidget
|
||||
id: spacer
|
||||
width: 5
|
||||
anchors.left: creature.right
|
||||
anchors.top: creature.top
|
||||
phantom: true
|
||||
|
||||
UIWidget
|
||||
id: skull
|
||||
height: 11
|
||||
anchors.left: spacer.right
|
||||
anchors.top: spacer.top
|
||||
phantom: true
|
||||
|
||||
UIWidget
|
||||
id: emblem
|
||||
height: 11
|
||||
anchors.left: skull.right
|
||||
anchors.top: creature.top
|
||||
phantom: true
|
||||
|
||||
Label
|
||||
id: label
|
||||
anchors.left: emblem.right
|
||||
anchors.top: creature.top
|
||||
color: #888888
|
||||
margin-left: 2
|
||||
phantom: true
|
||||
|
||||
ProgressBar
|
||||
id: lifeBar
|
||||
height: 5
|
||||
anchors.left: spacer.right
|
||||
anchors.right: parent.right
|
||||
anchors.top: label.bottom
|
||||
margin-top: 2
|
||||
phantom: true
|
@@ -1,5 +0,0 @@
|
||||
Creature < UICreature
|
||||
size: 80 80
|
||||
padding: 1
|
||||
image-source: /images/panel_flat.png
|
||||
image-border: 1
|
@@ -1,6 +0,0 @@
|
||||
Item < UIItem
|
||||
size: 34 34
|
||||
padding: 1
|
||||
image-source: /images/item.png
|
||||
font: verdana-11px-rounded
|
||||
border-color: white
|
@@ -1,65 +0,0 @@
|
||||
Label < UILabel
|
||||
font: verdana-11px-antialised
|
||||
color: #bbbbbb
|
||||
|
||||
$disabled:
|
||||
color: #bbbbbb88
|
||||
|
||||
FlatLabel < UILabel
|
||||
font: verdana-11px-antialised
|
||||
color: #aaaaaa
|
||||
size: 86 20
|
||||
text-offset: 3 3
|
||||
image-source: /images/panel_flat.png
|
||||
image-border: 1
|
||||
|
||||
$disabled:
|
||||
color: #aaaaaa88
|
||||
|
||||
MenuLabel < Label
|
||||
|
||||
GameLabel < UILabel
|
||||
font: verdana-11px-antialised
|
||||
color: #bbbbbb
|
||||
|
||||
FrameCounterLabel < Label
|
||||
font: verdana-11px-rounded
|
||||
@onSetup: |
|
||||
self.updateEvent = cycleEvent(function()
|
||||
local text = 'FPS: ' .. g_app.getBackgroundPaneFps()
|
||||
self:setText(text)
|
||||
end, 1000)
|
||||
@onDestroy: self.updateEvent:cancel()
|
||||
|
||||
PingLabel < Label
|
||||
font: verdana-11px-rounded
|
||||
@onSetup: |
|
||||
self.updateEvent = cycleEvent(function()
|
||||
if g_game.isOnline() and Options.getOption('showPing') then
|
||||
local ping = -1
|
||||
if g_game.getFeature(GameClientPing) then
|
||||
ping = g_game.getPing()
|
||||
else
|
||||
ping = g_game.getLocalPlayer():getWalkPing()
|
||||
end
|
||||
local text = 'Ping: '
|
||||
if ping < 0 then
|
||||
text = text .. "??"
|
||||
self:setColor('yellow')
|
||||
else
|
||||
text = text .. ping .. ' ms'
|
||||
if ping >= 500 then
|
||||
self:setColor('red')
|
||||
elseif ping >= 250 then
|
||||
self:setColor('yellow')
|
||||
else
|
||||
self:setColor('green')
|
||||
end
|
||||
end
|
||||
self:setText(text)
|
||||
self:show()
|
||||
else
|
||||
self:hide()
|
||||
end
|
||||
end, 1000)
|
||||
@onDestroy: self.updateEvent:cancel()
|
@@ -1,11 +0,0 @@
|
||||
TextList < UIScrollArea
|
||||
layout: verticalBox
|
||||
border-width: 1
|
||||
border-color: #1d222b
|
||||
background-color: #222833
|
||||
|
||||
HorizontalList < UIScrollArea
|
||||
layout: horizontalBox
|
||||
border-width: 1
|
||||
border-color: #1d222b
|
||||
background-color: #222833
|