13 Commits

Author SHA1 Message Date
Eduardo Bart
8f0ad27735 Minor SDL improvements 2013-03-11 14:43:42 -03:00
Eduardo Bart
d60413f7d6 Progress in SDL platform 2013-03-08 15:36:32 -03:00
Eduardo Bart
e6ee88af43 Changes to compile on android 2013-03-08 15:35:40 -03:00
Henrique Santiago
b3b849000d Add texture abstract class 2013-03-08 15:35:40 -03:00
Henrique
ab9351196c EGL and WGL working 2013-03-08 15:32:21 -03:00
Henrique Santiago
96bbe20588 EGL and GLX working 2013-03-08 15:32:21 -03:00
Henrique Santiago
77995a2e88 Compiling on linux again 2013-03-08 15:32:20 -03:00
Eduardo Bart
adf51f1852 Use SDL 2.0 2013-03-08 15:32:20 -03:00
Henrique
45eda6c573 Now drawing on windows again 2013-03-08 15:32:20 -03:00
Henrique Santiago
c3c951ebbb More changes to context 2013-03-08 15:32:20 -03:00
Henrique
a989ceb10c Add graphics context 2013-03-08 15:32:20 -03:00
Eduardo Bart
fb8552d142 Very basic rendering with SDL1.2 + OGL 2013-03-08 15:32:20 -03:00
Eduardo Bart
65b32d283b Add first SDL files 2013-03-08 15:32:20 -03:00
510 changed files with 4856 additions and 10416 deletions

71
.gitignore vendored
View File

@@ -1,3 +1,4 @@
/modules/.project
build* build*
CMakeCache.txt CMakeCache.txt
CMakeFiles CMakeFiles
@@ -38,73 +39,3 @@ tags
Thumbs.db Thumbs.db
.directory .directory
src/framework/graphics/dx/ src/framework/graphics/dx/
modules/.project/modules.sublime-workspace
#################
## Visual Studio
#################
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.log
*.scc
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper

View File

@@ -1,8 +1,7 @@
cmake_minimum_required(VERSION 2.6) cmake_minimum_required(VERSION 2.6)
project(otclient) project(otclient)
set(VERSION "0.6.6") set(VERSION "0.6.2")
set(LIB_NAME "otc_framework")
option(FRAMEWORK_SOUND "Use SOUND " ON) option(FRAMEWORK_SOUND "Use SOUND " ON)
option(FRAMEWORK_GRAPHICS "Use GRAPHICS " ON) option(FRAMEWORK_GRAPHICS "Use GRAPHICS " ON)
@@ -36,20 +35,11 @@ endif()
add_definitions(-D"VERSION=\\"${VERSION}\\"") add_definitions(-D"VERSION=\\"${VERSION}\\"")
# we want framework to be a library for faster compilation/linking
if(USE_STATIC_LIBS)
add_library(${LIB_NAME} ${framework_SOURCES})
else()
add_library(${LIB_NAME} SHARED ${framework_SOURCES})
message(STATUS "Linking to shared ${LIB_NAME}, make sure you copy the DLL/SO/dylib with the executable!")
endif()
target_link_libraries(${LIB_NAME} ${framework_LIBRARIES})
# add client executable # add client executable
add_executable(${PROJECT_NAME} ${client_SOURCES} ${executable_SOURCES}) add_executable(${PROJECT_NAME} ${framework_SOURCES} ${client_SOURCES} ${executable_SOURCES})
# target link libraries # target link libraries
target_link_libraries(${PROJECT_NAME} ${LIB_NAME}) target_link_libraries(${PROJECT_NAME} ${framework_LIBRARIES})
if(USE_PCH) if(USE_PCH)
include(cotire) include(cotire)
@@ -61,10 +51,7 @@ endif()
# installation # installation
set(DATA_INSTALL_DIR share/${PROJECT_NAME}) set(DATA_INSTALL_DIR share/${PROJECT_NAME})
install(TARGETS ${PROJECT_NAME} ${LIB_NAME} install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
install(FILES README.md BUGS LICENSE AUTHORS init.lua ${PROJECT_NAME}rc.lua DESTINATION ${DATA_INSTALL_DIR}) install(FILES README.md BUGS LICENSE AUTHORS init.lua ${PROJECT_NAME}rc.lua DESTINATION ${DATA_INSTALL_DIR})
install(DIRECTORY data modules DESTINATION ${DATA_INSTALL_DIR} PATTERN ".git" EXCLUDE) install(DIRECTORY data modules DESTINATION ${DATA_INSTALL_DIR} PATTERN ".git" EXCLUDE)

View File

@@ -1,4 +1,4 @@
[![Build Status](https://secure.travis-ci.org/edubart/otclient.svg?branch=master)](http://travis-ci.org/edubart/otclient) [![Build Status](https://secure.travis-ci.org/edubart/otclient.png?branch=master)](http://travis-ci.org/edubart/otclient)
### What is otclient? ### What is otclient?
Otclient is an alternative Tibia client for usage with otserv. It aims to be complete and flexible, Otclient is an alternative Tibia client for usage with otserv. It aims to be complete and flexible,
@@ -8,20 +8,6 @@ that each functionality is a separated module, giving the possibility to users m
anything easily. Users can also create new mods and extend game interface for their own purposes. anything easily. Users can also create new mods and extend game interface for their own purposes.
Otclient is written in C++2011, the upcoming C++ standard and heavily scripted in lua. Otclient is written in C++2011, the upcoming C++ standard and heavily scripted in lua.
### Where do I download?
The latest commits compiled for Windows can be found here.
* [Windows Builds](http://otland.net/threads/otclient-builds-windows.217977/)
Here is the latest v0.6.5 release compiled for both i686(32 bit) and x86_64(64 bit) machines, with OpenGL renderer.
This release is compatible with protocols ranges from 7.60 up to 10.31.
* [For Windows](https://www.dropbox.com/sh/se1okacemoqzjve/XFqFoSKLCg/otclient-win-0.6.5.zip)
* [For Linux](https://www.dropbox.com/sh/se1okacemoqzjve/xKJL7j6vEo/otclient-linux-0.6.5.tar.gz)
**NOTE:** You will need to download spr/dat files on your own and place them in `data/things/VERSION/` (i.e: `data/things/1041/Tibia.spr`)
Older releases can be downloaded from [here](https://www.dropbox.com/sh/se1okacemoqzjve/-oWK4YFm03)
### Features ### Features
Beyond of it's flexibility with scripts, otclient comes with tons of other features that make possible Beyond of it's flexibility with scripts, otclient comes with tons of other features that make possible
@@ -32,18 +18,17 @@ to port to mobile platforms. Otclient is also flexible enough to
create tibia tools like map editors just using scripts, because it wasn't designed to be just a create tibia tools like map editors just using scripts, because it wasn't designed to be just a
client, instead otclient was designed to be a combination of a framework and tibia APIs. client, instead otclient was designed to be a combination of a framework and tibia APIs.
### Compiling ### Download
A package with all required libraries for compiling OTClient on Windows can be found here: Stable versions of otclient master branch compiled for Windows and Linux is available
* [For MSVC 2013](https://www.dropbox.com/sh/se1okacemoqzjve/dI4ODbq7OT/otclient-msvc13-libs.zip) in the [downloads section](https://github.com/edubart/otclient/downloads) of the project's github page.
* [For MingW32](https://www.dropbox.com/sh/se1okacemoqzjve/UAkRCiGXXR/otclient-libs_mingw32-dwarf2.zip)
### Compiling
In short, if you need to compile OTClient, follow these tutorials: In short, if you need to compile OTClient, follow these tutorials:
* [Compiling on Windows](https://github.com/edubart/otclient/wiki/Compiling-on-Windows) * [Compiling on Windows](https://github.com/edubart/otclient/wiki/Compiling-on-Windows)
* [Compiling on Linux](https://github.com/edubart/otclient/wiki/Compiling-on-Linux) * [Compiling on Linux](https://github.com/edubart/otclient/wiki/Compiling-on-Linux)
### Need help? ### Need help?
Try to ask questions in [otland](http://otland.net/f494/), now we have a board for the project there, Try to ask questions in [otland](http://otland.net/f494/), now we have a board for the project there,
@@ -65,3 +50,4 @@ Talk directly with us at #otclient irc.freenode.net or send an email directly to
Otclient is made available under the MIT License, thus this means that you are free Otclient is made available under the MIT License, thus this means that you are free
to do whatever you want, commercial, non-commercial, closed or open. to do whatever you want, commercial, non-commercial, closed or open.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 795 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 548 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -1,28 +1,26 @@
-- special thanks for Shaday, who made these translations -- special thanks for Shaday, who made these translations
--Dominique120 edits: I made some statements to sound more formal and appropriate as well as correcting a few words that were not translated. I also added a few notes for future translators to keep in mind.
locale = { locale = {
name = "es", name = "es",
charset = "cp1252", charset = "cp1252",
languageName = "Espa<EFBFBD>ol", languageName = "Espa<EFBFBD>ol",
translation = { translation = {
["1a) Offensive Name"] = "1a) Nombre ofensivo", ["1a) Offensive Name"] = "1a) Nombre ofensivo",
["1b) Invalid Name Format"] = "1b) Formato invalido para nombre", ["1b) Invalid Name Format"] = "1b) Formato invalido para nombre",
["1c) Unsuitable Name"] = "1c) Nombre no adecuado", ["1c) Unsuitable Name"] = "1c) Nombre no adecuado",
["1d) Name Inciting Rule Violation"] = "1d) Nombre que incita una violaci<EFBFBD>n al reglamento", ["1d) Name Inciting Rule Violation"] = "1d) Nombre que incita una violacion al reglamento",
["2a) Offensive Statement"] = "2a) Comentario ofensivo", ["2a) Offensive Statement"] = "2a) Comentario ofensivo",
["2b) Spamming"] = "2b) Spamming", ["2b) Spamming"] = "2b) Spamming",
["2c) Illegal Advertising"] = "2c) Publicidad il<EFBFBD>cita", ["2c) Illegal Advertising"] = "2c) Publicidad ilicita",
["2d) Off-Topic Public Statement"] = "2d) Publicaci<EFBFBD>n fuera de lugar", ["2d) Off-Topic Public Statement"] = "2d) Publicacion fuera de lugar",
["2e) Non-English Public Statement"] = "2e) Publicaci<EFBFBD>n fuera del ingles", ["2e) Non-English Public Statement"] = "2e) Publicacion fuera del ingles",
["2f) Inciting Rule Violation"] = "2f) Incitar a una violaci<EFBFBD>n al reglamento", ["2f) Inciting Rule Violation"] = "2f) Incitar a una violacion al reglamento",
["3a) Bug Abuse"] = "3a) Abuso de error", ["3a) Bug Abuse"] = "3a) Abuso de error",
["3b) Game Weakness Abuse"] = "3b) Abuso de debilidad del juego", ["3b) Game Weakness Abuse"] = "3b) Abuso de debilidad del juego",
["3c) Using Unofficial Software to Play"] = "3c) Usando software ilegal para jugar", ["3c) Using Unofficial Software to Play"] = "3c) Usando software ilegal para jugar",
["3d) Hacking"] = "3d) Hackeo", ["3d) Hacking"] = "3d) Hackeo",
["3e) Multi-Clienting"] = "3e) Uso de m<>ltiples clientes", ["3e) Multi-Clienting"] = "3e) Multiple Cliente",
["3f) Account Trading or Sharing"] = "3f) Intercambio de cuenta", ["3f) Account Trading or Sharing"] = "3f) Intercambio de cuenta",
["4a) Threatening Gamemaster"] = "4a) Amenzar a un Gamemaster", ["4a) Threatening Gamemaster"] = "4a) Amenzar a un Gamemaster",
["4b) Pretending to Have Influence on Rule Enforcement"] = "4b) Pretender tener influencia en una parte del reglamento", ["4b) Pretending to Have Influence on Rule Enforcement"] = "4b) Pretender tener influencia en una parte del reglamento",
@@ -30,54 +28,54 @@ locale = {
["Accept"] = "Aceptar", ["Accept"] = "Aceptar",
["Account name"] = "Nombre de cuenta", ["Account name"] = "Nombre de cuenta",
["Account Status:"] = "Estado de cuenta:", ["Account Status:"] = "Estado de cuenta:",
["Action:"] = "Acci<EFBFBD>n:", ["Action:"] = "Accion:",
["Add"] = "A<EFBFBD>adir", ["Add"] = "A<EFBFBD>adir",
["Add new VIP"] = "A<EFBFBD>adir nuevo VIP", ["Add new VIP"] = "A<EFBFBD>adir nuevo VIP",
["Addon 1"] = "Addon 1", ["Addon 1"] = "Addon 1",
["Addon 2"] = "Addon 2", ["Addon 2"] = "Addon 1",
["Addon 3"] = "Addon 3", ["Addon 3"] = "Addon 1",
["Add to VIP list"] = "A<EFBFBD>adir a lista VIP", ["Add to VIP list"] = "A<EFBFBD>adir a lista VIP",
["Adjust volume"] = "Ajustar volumen", ["Adjust volume"] = "Ajustar volumen",
["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!"] = "<EFBFBD>Ay! Aventurero valiente, has conocido un triste destino. \nPero no se desespere, porque los dioses te llevar<61>n de vuelta \na este mundo a cambio de un peque<75>o sacrificio \n\nSimplemente haga clic en Aceptar para continuar con sus viajes!", ["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!"] = "<EFBFBD>Ay! Aventurero valiente, que ha conocido a un triste destino. \nPero no se desespere, porque los dioses le llevar<61> de vuelta \na este mundo a cambio de un peque<75>o sacrificio \n\nSimply haga clic en Aceptar para continuar con sus viajes!",
["All"] = "Todo", ["All"] = "Todo",
["All modules and scripts were reloaded."] = "Todos los m<>dulos y scripts se vuelven a cargar.", ["All modules and scripts were reloaded."] = "Todos los m<>dulos y scripts se vuelven a cargar.",
["Allow auto chase override"] = "Permitur auto persecuci<63>n override", ["Allow auto chase override"] = "Permitur auto persecuci<63>n override",
["Also known as dash in tibia community, recommended\nfor playing characters with high speed"] = "Conocido por la comunidad de tibia como dash.\nRecomenada para jugadores de alto nivel.", ["Also known as dash in tibia community, recommended\nfor playing characters with high speed"] = "Conocido por la comunidad de tibia como dash.\nRecomenada para players de alto nivel.",
["Ambient light: %s%%"] = "Ambiente de luz: %s%%", ["Ambient light: %s%%"] = "Ambiente de luz: %s%%",
["Amount:"] = "Cantidad:", ["Amount:"] = "Cantidad:",
["Amount"] = "Cantidad", ["Amount"] = "Cantidad",
["Anonymous"] = "An<EFBFBD>nimo", ["Anonymous"] = "An<EFBFBD>nimo",
["Are you sure you want to logout?"] = "<EFBFBD>Estas seguro de que deseas salir?", ["Are you sure you want to logout?"] = "<EFBFBD>Estas seguro de que quieres salir?",
["Attack"] = "Atacar", ["Attack"] = "Atacar",
["Author"] = "Autor", ["Author"] = "Autor",
["Autoload"] = "Auto carga", ["Autoload"] = "Auto carga",
["Autoload priority"] = "Auto carga prioritaria", ["Autoload priority"] = "Auto carga prioritaria",
["Auto login"] = "Auto ingresar", ["Auto login"] = "Auto iniciar",
["Auto login selected character on next charlist load"] = "Ingresar la siguiente vez que aparece el charlist con el personaje seleccionado", ["Auto login selected character on next charlist load"] = "Auto cargar car<61>cter seleccionado en la carga charlist siguiente",
["Axe Fighting"] = "Combate con hacha", ["Axe Fighting"] = "Combate con acha",
["Balance:"] = "Saldo:", ["Balance:"] = "Saldo:",
["Banishment"] = "Banishment", ["Banishment"] = "Banishment",
["Banishment + Final Warning"] = "Banishment + Final Warning", ["Banishment + Final Warning"] = "Banishment + Final Warning",
["Battle"] = "Batalla", ["Battle"] = "Batalla",
["Browse"] = "Navegar", ["Browse"] = "Navegar",
["Bug report sent."] = "Reporte de error enviado.", ["Bug report sent."] = "Reporte de error enviado.",
["Button Assign"] = "Bot<EFBFBD>n asignado", ["Button Assign"] = "Boton asignado",
["Buy"] = "Compra", ["Buy"] = "Compra",
["Buy Now"] = "Compra ahora", ["Buy Now"] = "Compra ahora",
["Buy Offers"] = "Comprar oferta", ["Buy Offers"] = "Comprar oferta",
["Buy with backpack"] = "Comprar con mochila", ["Buy with backpack"] = "Comprar con backpack",
["Cancel"] = "Cancelar", ["Cancel"] = "Cancelar",
["Cannot login while already in game."] = "No se puede iniciar sesi<73>n, mientras que est<EFBFBD>s en el juego.", ["Cannot login while already in game."] = "No se puede iniciar sesi<73>n, mientras que estes en el juego.",
["Cap"] = "Cap", ["Cap"] = "Cap",
["Capacity"] = "Capacidad", ["Capacity"] = "Capacidad",
["Center"] = "Centrar", ["Center"] = "Centrar",
["Channels"] = "Canales", ["Channels"] = "Canales",
["Character List"] = "Lista de car<61>cter", ["Character List"] = "Lista de car<61>cter",
["Classic control"] = "Controles Cl<EFBFBD>sicos", ["Classic control"] = "Control Clasico",
["Clear current message window"] = "Limpiar mensaje actual en ventana", ["Clear current message window"] = "Limpiar mensaje actual en ventana",
["Clear Messages"] = "Limpiar mensaje", ["Clear Messages"] = "Limpiar mensaje",
["Clear object"] = "Limpiar objeto", ["Clear object"] = "Limpiar objeto",
["Client needs update."] = "El cliente necesita una actualizaci<EFBFBD>n.", ["Client needs update."] = "El cliente necesita actualizacion.",
["Close"] = "Cerrar", ["Close"] = "Cerrar",
["Close this channel"] = "Cerrar este canal", ["Close this channel"] = "Cerrar este canal",
["Club Fighting"] = "Combate con mazo", ["Club Fighting"] = "Combate con mazo",
@@ -101,28 +99,28 @@ locale = {
["Delete mark"] = "Borrar Marca", ["Delete mark"] = "Borrar Marca",
["Description:"] = "Descripci<EFBFBD>n:", ["Description:"] = "Descripci<EFBFBD>n:",
["Description"] = "Descripci<EFBFBD>n", ["Description"] = "Descripci<EFBFBD>n",
["Destructive Behaviour"] = "Comportamiento destructivo", ["Destructive Behaviour"] = "Comportamiento agresivo",
["Detail"] = "Detalle", ["Detail"] = "Detalle",
["Details"] = "Detalles", ["Details"] = "Detalles",
["Disable Shared Experience"] = "Desactivar experiencia compartida", ["Disable Shared Experience"] = "Desactivar experiencia compartida",
["Dismount"] = "Desmontar", ["Dismount"] = "Desmontar",
["Display connection speed to the server (milliseconds)"] = "Mostrar velocidad de conexi<EFBFBD>n en el servidor (millisegundos)", ["Display connection speed to the server (milliseconds)"] = "Mostrar velocidad de conexion en el servidor (millisegundos)",
["Distance Fighting"] = "Combate a distancia", ["Distance Fighting"] = "Combate a distancia",
["Don\'t stretch/shrink Game Window"] = "No estirar ni reducir el tama<6D>o de ventana", ["Don\'t stretch/shrink Game Window"] = "No estirar ni reducir el tama<6D>o de ventana",
["Edit hotkey text:"] = "Editar texto de hotkey:", ["Edit hotkey text:"] = "Editar texto de hotkey:",
["Edit List"] = "Editar lista", ["Edit List"] = "Editar lista",
["Edit Text"] = "Editar texto", ["Edit Text"] = "Editar texto",
["Enable music"] = "Habilitar m<EFBFBD>sica", ["Enable music"] = "Habilitar musica",
["Enable Shared Experience"] = "Habilitar experiencia compartida", ["Enable Shared Experience"] = "Habilitar experiencia compartida",
["Enable smart walking"] = "Habilitar caminado inteligente", ["Enable smart walking"] = "Habilitar caminado inteligente",
["Enable vertical synchronization"] = "Habilitar sincronizaci<63>n vertical", ["Enable vertical synchronization"] = "Habilitar sincronizaci<63>n vertical",
["Enable walk booster"] = "Habilitar caminado turbo", ["Enable walk booster"] = "Habilitar caminado turbo",
["Enter Game"] = "Entrar al juego", ["Enter Game"] = "Entrar al juego",
["Enter one name per line."] = "Introducir un nombre por linea.", ["Enter one name per line."] = "Introducir un nombre por linea.",
["Enter with your account again to update your client."] = "Ingrese con su cuenta nuevamente para actualizar el cliente.", ["Enter with your account again to update your client."] = "",
["Error"] = "Error", ["Error"] = "Error",
["Error"] = "Error", ["Error"] = "Error",
["Excessive Unjustified Player Killing"] = "Asesinato excesivo injustificado de jugadores", ["Excessive Unjustified Player Killing"] = "Asesinato excesivo injustivicado de players",
["Exclude from private chat"] = "Ejecutar desde un canal privado", ["Exclude from private chat"] = "Ejecutar desde un canal privado",
["Exit"] = "Salir", ["Exit"] = "Salir",
["Experience"] = "Experiencia", ["Experience"] = "Experiencia",
@@ -134,71 +132,71 @@ locale = {
["Follow"] = "Seguir", ["Follow"] = "Seguir",
["Force Exit"] = "Forzar salida", ["Force Exit"] = "Forzar salida",
["For Your Information"] = "Para tu informaci<63>n", ["For Your Information"] = "Para tu informaci<63>n",
["Free Account"] = "Cuenta gratis", ["Free Account"] = "Account gratis",
["Fullscreen"] = "Pantalla completa", ["Fullscreen"] = "Pantalla completa",
["Game"] = "Juego", ["Game"] = "Juego",
["Game framerate limit: %s"] = "Limite de cuadros por segundo en el juego: %s", ["Game framerate limit: %s"] = "Imagenes por segundo en juego: %s",
["Graphics"] = "Gr<EFBFBD>ficos", ["Graphics"] = "Gr<EFBFBD>ficos",
["Graphics card driver not detected"] = "Controlador de tarjeta gr<67>fica de video no detectado", ["Graphics card driver not detected"] = "Controlador de tarjeta gr<67>fica de video no detectado",
["Graphics Engine:"] = "Motor Gr<EFBFBD>fico:", ["Graphics Engine:"] = "Motor Grafico:",
["Head"] = "Cabeza", ["Head"] = "Cabeza",
["Healing"] = "Curaci<EFBFBD>n", ["Healing"] = "Curacion",
["Health Info"] = "HP Info",--This can be better ["Health Info"] = "HP Info",
["Health Information"] = "HP Informaci<63>n",--This can be better ["Health Information"] = "HP Informaci<63>n",
["Hide monsters"] = "Ocultar monstruos", ["Hide monsters"] = "Ocultar monsters",
["Hide non-skull players"] = "Ocultar jugadores sin skull", ["Hide non-skull players"] = "Ocultar no-skull players",
["Hide Npcs"] = "Ocultar NPCs", ["Hide Npcs"] = "Ocultar NPCs",
["Hide Offline"] = "Ocultar fuera de linea", ["Hide Offline"] = "Ocultar fuera de linea",
["Hide party members"] = "Ocultar miembros del party", ["Hide party members"] = "Ocultar miembros de party",
["Hide players"] = "Ocultar players", ["Hide players"] = "Ocultar players",
["Hide spells for higher exp. levels"] = "Ocultar hechizos para niveles mas altos que tu experiencia.", ["Hide spells for higher exp. levels"] = "Ocultar spells para niveles mas altos que tu experiencia.",
["Hide spells for other vocations"] = "Ocultar hechizos que sean para otra vocaci<63>n", ["Hide spells for other vocations"] = "Ocultar spells que sean para otra vocaci<63>n",
["Hit Points"] = "Puntos de vida", ["Hit Points"] = "Puntos de vida",
["Hold left mouse button to navigate\nScroll mouse middle button to zoom\nRight mouse button to create map marks"] = "Mantenga presionado el bot<6F>n derecho del rat<61>n para navegar\nDezplaze la rueda central del rat<61>n para ampliar\nbot<EFBFBD>n derecho del mouse para crear marcas del mapa", ["Hold left mouse button to navigate\nScroll mouse middle button to zoom\nRight mouse button to create map marks"] = "Mantenga pulsado el bot<6F>n derecho del rat<61>n para navegar\nScroll bot<6F>n central del rat<61>n para ampliar\nbot<EFBFBD>n derecho del mouse para crear marcas del mapa",
["Hotkeys"] = "Hotkeys", ["Hotkeys"] = "Hotkeys",
["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."] = "Si se cierra el programa, tu personaje puede permanecer en el juego.\nHaga clic en 'Salir' para asegurarse de que personaje deja el juego correctamente.\nHaga click en 'Salir' si desea salir del programa sin tener que salir de tu personaje.", ["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."] = "Si se cierra el programa, tu personaje puede permanecer en el juego.\nHaga clic en 'Salir' para asegurarse de que personaje deja el juego correctamente.\nClick en 'Salir' si desea salir del programa sin tener que salir de tu personaje.",
["Ignore"] = "Ignorar", ["Ignore"] = "Ignorar",
["Ignore capacity"] = "Ignorar Capacidad", ["Ignore capacity"] = "Ignorar Capacidad",
["Ignored players:"] = "Jugadores ignorados:", ["Ignored players:"] = "Players ignorados:",
["Ignore equipped"] = "Ignorar lo equipado", ["Ignore equipped"] = "Ignorar lo equipodo",
["Ignore List"] = "Ignorar lista", ["Ignore List"] = "Ignorar lista",
["Ignore players"] = "Ignorar jugadores", ["Ignore players"] = "Ignorar players",
["Ignore Private Messages"] = "Ignorar mensajes privados", ["Ignore Private Messages"] = "Ignorar mensajes privados",
["Ignore Yelling"] = "Ignorar gritos", ["Ignore Yelling"] = "Ignorar gritos",
["Interface framerate limit: %s"] = "Interface de cuadros por segundo: %s", ["Interface framerate limit: %s"] = "Interface de imagenes por segundo: %s",
["Inventory"] = "Inventario", ["Inventory"] = "Inventario",
["Invite to Party"] = "Ivitar al party", ["Invite to Party"] = "Ivitar a party",
["Invite to private chat"] = "Invitar a canal privado", ["Invite to private chat"] = "Invitar a canal privado",
["IP Address Banishment"] = "Banishment - Direcci<EFBFBD>n IP", ["IP Address Banishment"] = "Banishment - Direccion IP",
["Item Offers"] = "Ofertas de objetos", ["Item Offers"] = "Ofertas de objetos",
["It is empty."] = "Est<EFBFBD> vaci<EFBFBD>.", ["It is empty."] = "Est<EFBFBD> vasio.",
["Join %s\'s Party"] = "Unirse al party de %s ", ["Join %s\'s Party"] = "Unir %s\'s party",
["Leave Party"] = "Dejar el party", ["Leave Party"] = "Dejar party",
["Level"] = "Nivel", ["Level"] = "Nivel",
["Lifetime Premium Account"] = "Tiempo de Premium Account infinito", ["Lifetime Premium Account"] = "Tiempo de Premium Account",
["Limits FPS to 60"] = "Limites FPS a 60", ["Limits FPS to 60"] = "Limites FPS a 60",
["List of items that you're able to buy"] = "Lista de objetos que puedes de comprar", ["List of items that you're able to buy"] = "Lista de objetos que puedes de comprar",
["List of items that you're able to sell"] = "Lista de objetos que puedes de vender", ["List of items that you're able to sell"] = "Lista de objetos que puedes de vender",
["Load"] = "Cargar", ["Load"] = "Cargar",
["Logging out..."] = "Cerrando sesi<EFBFBD>n...", ["Logging out..."] = "Cerrando sesion...",
["Login"] = "Ingresar", ["Login"] = "Ingresar",
["Login Error"] = "Error de ingreso", ["Login Error"] = "Error de ingreso",
["Login Error"] = "Error de ingreso", ["Login Error"] = "Error de ingreso",
["Logout"] = "Salir", ["Logout"] = "Salir",
["Look"] = "Mirar", ["Look"] = "Mirar",
["Magic Level"] = "Nivel m<>gico", ["Magic Level"] = "Nivel m<>gico",
["Make sure that your client uses\nthe correct game protocol version"] = "Aseg<EFBFBD>rese de que el cliente este utilizando\nes el versi<73>n del protocolo adecuado", ["Make sure that your client uses\nthe correct game protocol version"] = "Aseg<EFBFBD>rese de que el cliente utiliza\nes el correcto de versi<EFBFBD>n del protocolo",
["Mana"] = "Mana", ["Mana"] = "Mana",
["Manage hotkeys:"] = "Administrador de hotkeys:", ["Manage hotkeys:"] = "Administrador de hotkeys:",
["Market"] = "Mercado", ["Market"] = "Mercado",
["Market Offers"] = "Ofertas en mercado", ["Market Offers"] = "Ofertas en mercado",
["Message of the day"] = "Mensaje del d<EFBFBD>a", ["Message of the day"] = "Mensaje del dia",
["Message to "] = "Mensaje a", ["Message to "] = "Mensaje a",
["Message to %s"] = "Mensaje a %s", ["Message to %s"] = "Mensaje a %s",
["Minimap"] = "Minimapa", ["Minimap"] = "Minimapa",
["Module Manager"] = "Administrador de m<EFBFBD>dulos", ["Module Manager"] = "Administrador de modulos",
["Module name"] = "Nombre del modulo", ["Module name"] = "Nombre de modulo",
["Mount"] = "Montar", --Unique name? ["Mount"] = "Montura",
["Move Stackable Item"] = "Mover objeto apilable", ["Move Stackable Item"] = "Mover objeto apilable",
["Move up"] = "Mover arriba", ["Move up"] = "Mover arriba",
["My Offers"] = "Mis ofertas", ["My Offers"] = "Mis ofertas",
@@ -207,7 +205,7 @@ locale = {
["Name Report + Banishment"] = "Name Report + Banishment", ["Name Report + Banishment"] = "Name Report + Banishment",
["Name Report + Banishment + Final Warning"] = "Name Report + Banishment + Final Warning", ["Name Report + Banishment + Final Warning"] = "Name Report + Banishment + Final Warning",
["No"] = "No", ["No"] = "No",
["No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance."] = "No se ha detectado una tarjeta gr<67>fica y todo sera procesado por tu procesador,\npor lo tanto el rendimiento va a ser muy malo.\nPor favor, actualice su controlador de gr<67>ficos para tener un rendimiento optimo.", ["No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance."] = "No graphics card detected, everything will be drawn using the CPU,\npor lo tanto el rendimiento va a ser muy malo.\nPor favor, actualice su controlador de gr<67>ficos para tener un mejor rendimiento.",
["No item selected."] = "No hay elemento seleccionado.", ["No item selected."] = "No hay elemento seleccionado.",
["No Mount"] = "No montura", ["No Mount"] = "No montura",
["No Outfit"] = "No outfit", ["No Outfit"] = "No outfit",
@@ -222,30 +220,30 @@ locale = {
["on %s.\n"] = "en %s.\n", ["on %s.\n"] = "en %s.\n",
["Open"] = "Abierto", ["Open"] = "Abierto",
["Open a private message channel:"] = "Abrir mensaje en canal privado:", ["Open a private message channel:"] = "Abrir mensaje en canal privado:",
["Open charlist automatically when starting client"] = "Abrir lista de jugadores autom<EFBFBD>ticamente al iniciar el cliente", ["Open charlist automatically when starting client"] = "Abrir lista de players automaticamente al iniciar el cliente",
["Open in new window"] = "Abrir en nueva ventana", ["Open in new window"] = "Abrir en nueva ventana",
["Open new channel"] = "Abrir nuevo canal", ["Open new channel"] = "Abrir nuevo canal",
["Options"] = "Opciones", ["Options"] = "Opciones",
["Overview"] = "Descripci<EFBFBD>n", ["Overview"] = "Descripcion",
["Pass Leadership to %s"] = "Pasar liderazgo a %s", ["Pass Leadership to %s"] = "Pasar liderazgo a %s",
["Password"] = "Contrase<EFBFBD>a", ["Password"] = "Contrase<EFBFBD>a",
["Piece Price:"] = "Precio por pieza:", ["Piece Price:"] = "Precio por pieza:",
["Please enter a character name:"] = "Por favor ingresar nombre del jugador:", ["Please enter a character name:"] = "Por favor ingresar nombre del player:",
["Please, press the key you wish to add onto your hotkeys manager"] = "Por favor, presiona la tecla que desees para que sea registrada en\nel administrador de hotkeys", ["Please, press the key you wish to add onto your hotkeys manager"] = "Por favor, presiona la tecla que desees para que sea registrada en\nel administrador de hotkeys",
["Please Select"] = "Por favor seleccione", ["Please Select"] = "Por favor selecciona",
["Please use this dialog to only report bugs. Do not report rule violations here!"] = "Por favor usa este di<EFBFBD>logo solo para reportar errores.\n<EFBFBD>No reportar violaciones del reglamento aqu<71>!", ["Please use this dialog to only report bugs. Do not report rule violations here!"] = "Por favor usa estos dialogos solo para reportar errores.\n<EFBFBD>No reportar violaciones al reglamento aqu<71>!",
["Please wait"] = "Por favor espere", ["Please wait"] = "Por favor espera",
["Port"] = "Puerto", ["Port"] = "Puerto",
["Position:"] = "Posici<EFBFBD>n:", ["Position:"] = "Posici<EFBFBD>n:",
["Position: %i %i %i"] = "Posici<EFBFBD>n: %i %i %i", ["Position: %i %i %i"] = "Posici<EFBFBD>n: %i %i %i",
["Premium Account (%s) days left"] = "Tienes (%s) d<>as de Premium Account restantes", ["Premium Account (%s) days left"] = "Premium Accoun restan dias (%s)",
["Price:"] = "Precio:", ["Price:"] = "Precio:",
["Primary"] = "Primario", ["Primary"] = "Primario",
["Protocol"] = "Protocolo", ["Protocol"] = "Protocolo",
["Quest Log"] = "Quest Log", --Unique name ["Quest Log"] = "Quest Log",
["Randomize"] = "Combinar", ["Randomize"] = "Combinar",
["Randomize characters outfit"] = "Combinar vestimenta del jugador", ["Randomize characters outfit"] = "Combinar oufit del jugador",
["Reason:"] = "Raz<EFBFBD>n:", ["Reason:"] = "Reason:",
["Refresh"] = "Refrescar", ["Refresh"] = "Refrescar",
["Refresh Offers"] = "Refrescar ofertas", ["Refresh Offers"] = "Refrescar ofertas",
["Regeneration Time"] = "Tiempo de regeneraci<63>n", ["Regeneration Time"] = "Tiempo de regeneraci<63>n",
@@ -256,13 +254,13 @@ locale = {
["Remove"] = "Remover", ["Remove"] = "Remover",
["Remove %s"] = "Remover %s", ["Remove %s"] = "Remover %s",
["Report Bug"] = "Reportar error", ["Report Bug"] = "Reportar error",
["Reserved for more functionality later."] = "Reservado para una funci<EFBFBD>n futura.", ["Reserved for more functionality later."] = "eservado para una funcion futura.",
["Reset Market"] = "Reiniciar mercado", ["Reset Market"] = "Reiniciar mercado",
["Revoke %s\'s Invitation"] = "Anular %s\'s invitaci<63>n", ["Revoke %s\'s Invitation"] = "Anular %s\'s invitaci<63>n",
["Rotate"] = "Rotar", ["Rotate"] = "Rotar",
["Rule Violation"] = "Violaci<EFBFBD>n del reglamento", ["Rule Violation"] = "Violacion de regla",
["Save"] = "Guardar", ["Save"] = "Salvar",
["Save Messages"] = "Guardar mensaje", ["Save Messages"] = "Salvar mensaje",
["Search:"] = "Buscar:", ["Search:"] = "Buscar:",
["Search all items"] = "Buscar todos los objetos", ["Search all items"] = "Buscar todos los objetos",
["Secondary"] = "Secundario", ["Secondary"] = "Secundario",
@@ -270,24 +268,24 @@ locale = {
["Select Outfit"] = "Seleccionar outfit", ["Select Outfit"] = "Seleccionar outfit",
["Select your language"] = "Selectionar tu lenguaje", ["Select your language"] = "Selectionar tu lenguaje",
["Sell"] = "Vender", ["Sell"] = "Vender",
["Sell Now"] = "Vender ahora", ["Sell Now"] = "Vender ya",
["Sell Offers"] = "Ofertas de venta", ["Sell Offers"] = "Ofertas de venta",
["Send"] = "Enviar", ["Send"] = "Enviar",
["Send automatically"] = "Enviar autom<EFBFBD>ticamente", ["Send automatically"] = "Enviar automaticamente",
["Send Message"] = "Enviar mensaje", ["Send Message"] = "Enviar mensaje",
["Server"] = "Server", --Unique name ["Server"] = "Server",
["Server Log"] = "Server Log", --Unique name ["Server Log"] = "Server Log",
["Set Outfit"] = "Escoger vestimenta", ["Set Outfit"] = "Fijar outfit",
["Shielding"] = "Escudo", ["Shielding"] = "Escudo",
["Show all items"] = "Mostrar todos los objetos", ["Show all items"] = "Mostrar todos los objetos",
["Show connection ping"] = "Mostrar ping de conexi<78>n", ["Show connection ping"] = "Mostrar ping de conexi<78>n",
["Show Depot Only"] = "Mostrar solo el Depot", ["Show Depot Only"] = "Mostrar solo el Depot",
["Show event messages in console"] = "Mostrar mensajes de evento en consola", ["Show event messages in console"] = "Mostrar mensajes de evento en consola",
["Show frame rate"] = "Mostrar informaci<EFBFBD>n de cuadros por secundo", ["Show frame rate"] = "Mostrar velocidad por cuadro",
["Show info messages in console"] = "Mostrar mensajes de informaci<63>n en consola", ["Show info messages in console"] = "Mostrar mensajes de informaci<63>n en consola",
["Show left panel"] = "Mostrar panel izquierdo", ["Show left panel"] = "Mostrar panel izquierdo",
["Show levels in console"] = "Mostrar niveles en consola", ["Show levels in console"] = "Mostrar niveles en consola",
["Show Offline"] = "Mostrar Desconectados", ["Show Offline"] = "Mostrar offLine",
["Show private messages in console"] = "Mostrar mensajes privados en consola", ["Show private messages in console"] = "Mostrar mensajes privados en consola",
["Show private messages on screen"] = "Mostrar mensajes privados en pantalla", ["Show private messages on screen"] = "Mostrar mensajes privados en pantalla",
["Show Server Messages"] = "Mostrar mensajes del servidor", ["Show Server Messages"] = "Mostrar mensajes del servidor",
@@ -297,26 +295,26 @@ locale = {
["Show your depot items only"] = "Mostrar solo tus objetos en depot", ["Show your depot items only"] = "Mostrar solo tus objetos en depot",
["Skills"] = "Habilidades", ["Skills"] = "Habilidades",
["Soul"] = "Soul", ["Soul"] = "Soul",
["Soul Points"] = "Puntos de Soul", --I'm leaving these as is because its a unique name, if you want to change it it can be "Alma" or "Esp<73>ritu" ["Soul Points"] = "Puntos de Soul",
["Special"] = "Especial", ["Special"] = "Especial",
["Speed"] = "Velocidad", ["Speed"] = "Velocidad",
["Spell Cooldowns"] = "Spells Cooldowns", --Could be "Tiempo de recarga para los hechizos". ["Spell Cooldowns"] = "Spells Cooldowns",
["Spell List"] = "Lista de hechizos", ["Spell List"] = "Lista de spells",
["Stamina"] = "Resistencia", ["Stamina"] = "Stamina",
["Statement:"] = "Comentario:", ["Statement:"] = "Comentario:",
["Statement Report"] = "Statement Report", --Could be "reporte del comentario" ["Statement Report"] = "Statement Report",
["Statistics"] = "Estad<EFBFBD>sticas", ["Statistics"] = "Estadisticas",
["Stop Attack"] = "Detener ataque", ["Stop Attack"] = "Detener ataque",
["Stop Follow"] = "Detener persecuci<EFBFBD>n", ["Stop Follow"] = "Detener persecucion",
["Support"] = "Soporte", ["Support"] = "Soporte",
["%s: (use object)"] = "%s: (usar objeto)", ["%s: (use object)"] = "%s: (usar objeto)",
["%s: (use object on target)"] = "%s: (usar objeto en un objetivo)", ["%s: (use object on target)"] = "%s: (usar objeto en un objetivo)",
["%s: (use object on yourself)"] = "%s: (usar objeto en mi mismo)", ["%s: (use object on yourself)"] = "%s: (usar objeto en mi mismo)",
["%s: (use object with crosshair)"] = "%s: (usar objeto con punto de mira)", ["%s: (use object with crosshair)"] = "%s: (usar objeto en aire)",
["Sword Fighting"] = "Combate de espada", ["Sword Fighting"] = "Combate de espada",
["Terminal"] = "Terminal", ["Terminal"] = "Terminal",
["There is no way."] = "No hay ninguna manera.", ["There is no way."] = "No hay ninguna manera.",
["Title"] = "Titulo", ["Title"] = "T<EFBFBD>tulo",
["Total Price:"] = "Total total:", ["Total Price:"] = "Total total:",
["Trade"] = "Intercambio", ["Trade"] = "Intercambio",
["Trade with ..."] = "Intercambiar con ...", ["Trade with ..."] = "Intercambiar con ...",
@@ -324,55 +322,55 @@ locale = {
["Unable to load dat file, please place a valid dat in '%s'"] = "No se puede cargar el archivo dat, por favor coloque un dat v<>lido en '%s'", ["Unable to load dat file, please place a valid dat in '%s'"] = "No se puede cargar el archivo dat, por favor coloque un dat v<>lido en '%s'",
["Unable to load spr file, please place a valid spr in '%s'"] = "No se puede cargar el archivo spr, por favor coloque un spr v<>lido en '%s'", ["Unable to load spr file, please place a valid spr in '%s'"] = "No se puede cargar el archivo spr, por favor coloque un spr v<>lido en '%s'",
["Unable to logout."] = "No se puede cerrar sesi<73>n-", ["Unable to logout."] = "No se puede cerrar sesi<73>n-",
["Unignore"] = "Dejar de ignorar", ["Unignore"] = "Desactivar ignorado",
["Unload"] = "No cargado", ["Unload"] = "No cargado",
["Update needed"] = "Es necesario actualizar", ["Update needed"] = "Es necesario actualizar",
["Use"] = "Uso", ["Use"] = "Uso",
["Use on target"] = "Usar en un objetivo", ["Use on target"] = "Usar en un objetivo",
["Use on yourself"] = "Usar en mi mismo", ["Use on yourself"] = "Usar en mi mismo",
["Use with ..."] = "Usar en ...", ["Use with ..."] = "Usar en ...",
["Version"] = "Versi<EFBFBD>n", ["Version"] = "Version",
["VIP List"] = "Lista Vip", ["VIP List"] = "Lista Vip",
["Voc."] = "Voc.", ["Voc."] = "Voc.",
["Vocation"] = "Vocaci<EFBFBD>n", ["Vocation"] = "Vocaci<EFBFBD>n",
["Waiting List"] = "Lista de espera", ["Waiting List"] = "Lista de espera",
["Website"] = "Sitio Web", ["Website"] = "Sitio WEB",
["Weight:"] = "Peso:", ["Weight:"] = "Peso:",
["Will detect when to use diagonal step based on the\nkeys you are pressing"] = "Detectara cuando se camina en diagonal usando las flechas", ["Will detect when to use diagonal step based on the\nkeys you are pressing"] = "Detectar cuando se camina en diagonal usando las flechas",
["With crosshair"] = "Con punto de mira", ["With crosshair"] = "Con punto de mira",
["Yes"] = "Si", ["Yes"] = "Si",
["You are bleeding"] = "Te estas desangrando", ["You are bleeding"] = "Tu estas sangrado",
["You are burning"] = "Te estas quemando", ["You are burning"] = "Tu estas quemado",
["You are cursed"] = "Tu estas maldecido", ["You are cursed"] = "Tu estas maldecido",
["You are dazzled"] = "Tu estas deslumbrado", ["You are dazzled"] = "Tu estas deslumbrado",
["You are dead."] = "Tu estas muerto.", ["You are dead."] = "Tu estas muerto.",
["You are dead"] = "Tu estas muerto", ["You are dead"] = "Tu estas muerto",
["You are drowning"] = "Te estas ahogando", ["You are drowning"] = "Tu estas ahotado",
["You are drunk"] = "Tu estas ebrio", ["You are drunk"] = "Tu estas borracho",
["You are electrified"] = "Tu estas electrocutado", ["You are electrified"] = "Tu estas electrificado",
["You are freezing"] = "Te estas congelando", ["You are freezing"] = "Tu estas congelado",
["You are hasted"] = "Tu estas r<EFBFBD>pido", --I dont know what is the best way to translate this so I'm leaving it as I found it. ["You are hasted"] = "Tu estas rapido",
["You are hungry"] = "Tu estas hambriento", ["You are hungry"] = "Tu estas hambriento",
["You are paralysed"] = "Tu estas paralizado", ["You are paralysed"] = "Tu estas paralizado",
["You are poisoned"] = "Tu estas envenedado", ["You are poisoned"] = "Tu estas envenedado",
["You are protected by a magic shield"] = "Tu estas protegido por un escudo m<EFBFBD>gico", ["You are protected by a magic shield"] = "Tu estas protegido por un campo magico",
["You are strengthened"] = "Tu estas reforzado", ["You are strengthened"] = "Tu estas reforzado",
["You are within a protection zone"] = "Tu estas dentro de una zona de protecci<63>n", ["You are within a protection zone"] = "Tu estas dentro de una zona segura",
["You can enter new text."] = "Tu puedes ingresar un texto nuevo.", ["You can enter new text."] = "Tu puedes introducir un texto nuevo.",
["You have %s percent"] = "Tu tienes %s por ciento", ["You have %s percent"] = "Tu tienes %s porciento",
["You have %s percent to go"] = "Tu tienes %s por ciento para ir", ["You have %s percent to go"] = "Tu tienes %s porciento para ir",
["You may not logout during a fight"] = "No puedes salir durante una pelea", ["You may not logout during a fight"] = "No puedes salir durante una pelea",
["You may not logout or enter a protection zone"] = "No puedes salir o entrar en una zona de protecci<63>n", ["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."] = "Debes ingresar un comentario.", ["You must enter a comment."] = "Debes introducir un comentario.",
["You must enter a valid server address and port."] = "Debes ingresar una direcci<63>n v<>lida de servidor y el puerto.", ["You must enter a valid server address and port."] = "Debes introducir una direcci<63>n v<>lida de servidor y el puerto.",
["You must select a character to login!"] = "<EFBFBD>Debes seleccionar un personaje para ingresar!", ["You must select a character to login!"] = "<EFBFBD>Debes seleccionar un personaje para ingresar!",
["Your Capacity:"] = "Tu capacidad:", ["Your Capacity:"] = "Tu capacidad:",
["You read the following, written by \n%s\n"] = "Lees lo siguiente, escrito por \n%s\n", ["You read the following, written by \n%s\n"] = "Uno lee lo siguiente, escrito por \n%s\n",
["You read the following, written on \n%s.\n"] = "Lees lo siguiente, escrito en \n%s\n", ["You read the following, written on \n%s.\n"] = "Uno lee lo siguiente, escrito en \n%s\n",
["Your Money:"] = "Tu dinero:", ["Your Money:"] = "Tu dinero:",
["Change language"] = "Cambiar idioma", ["Change language"] = "Cambiar idioma",
["Don't stretch or shrink Game Window"] = "No estirar o encoger Ventana de Juego" ["Don't stretch or shrink Game Window"] = "No estirar o encoger Ventana de Juego"
} }
} }
modules.client_locales.installLocale(locale) modules.client_locales.installLocale(locale)

View File

@@ -1,31 +1,36 @@
-- by Don Daniello
-- 09 June 2012
-- http://DonDaniello.com
-- http://otland.net/members/Don+Daniello
locale = { locale = {
name = "pl", name = "pl",
languageName = "Polski", languageName = "Polski",
translation = { translation = {
["1a) Offensive Name"] = "1a) Obrazliwe Imie", ["1a) Offensive Name"] = false,
["1b) Invalid Name Format"] = "1b) Niepoprawny Format Imienia", ["1b) Invalid Name Format"] = false,
["1c) Unsuitable Name"] = "1c) Nieodpowiednie Imie", ["1c) Unsuitable Name"] = false,
["1d) Name Inciting Rule Violation"] = "1d) Imie Nawolujace Do Lamania Regulaminu", ["1d) Name Inciting Rule Violation"] = false,
["2a) Offensive Statement"] = "2a) Obrazliwa wypowiedz", ["2a) Offensive Statement"] = false,
["2b) Spamming"] = "2b) Spamowanie", ["2b) Spamming"] = false,
["2c) Illegal Advertising"] = "2c) Nielegalne Reklamy", ["2c) Illegal Advertising"] = false,
["2d) Off-Topic Public Statement"] = "2d) Publiczne Wypowiadanie Sie Nie Na Temat", ["2d) Off-Topic Public Statement"] = false,
["2e) Non-English Public Statement"] = "2e) Publiczne wypowiadanie Sie W Jezyku Innym Niz Angielski", ["2e) Non-English Public Statement"] = false,
["2f) Inciting Rule Violation"] = "2f) Nawolywanie Do Lamania Regulaminu ", ["2f) Inciting Rule Violation"] = false,
["3a) Bug Abuse"] = "3a) Wykorzystywanie Bledow", ["3a) Bug Abuse"] = false,
["3b) Game Weakness Abuse"] = "3b) Wykorzystanie Slabosci Gry", ["3b) Game Weakness Abuse"] = false,
["3c) Using Unofficial Software to Play"] = "3c) Gra Przy Uzyciu Nieoficjalnego Oprogramowania", ["3c) Using Unofficial Software to Play"] = false,
["3d) Hacking"] = "3d) Wlamywanie Sie", ["3d) Hacking"] = false,
["3e) Multi-Clienting"] = "3e) Uzycie Multi-Klienta", ["3e) Multi-Clienting"] = false,
["3f) Account Trading or Sharing"] = "3f) Handel Lub Udostepnianie Kont", ["3f) Account Trading or Sharing"] = false,
["4a) Threatening Gamemaster"] = "4a) Grozby Pod Adresem Mistrza Gry", ["4a) Threatening Gamemaster"] = false,
["4b) Pretending to Have Influence on Rule Enforcement"] = "4b) Udawanie Wplywu na Ustanawianie Regul Gry", ["4b) Pretending to Have Influence on Rule Enforcement"] = false,
["4c) False Report to Gamemaster"] = "4c) Wyslanie Falszywego Raportu Mistrzowi Gry", ["4c) False Report to Gamemaster"] = false,
["Accept"] = "Akceptuj", ["Accept"] = false,
["Account name"] = "Numer konta", ["Account name"] = "Numer konta",
["Account Status:"] = "Status Konta:", ["Account Status:"] = false,
["Action:"] = "Akcja:", ["Action:"] = false,
["Add"] = "Dodaj", ["Add"] = "Dodaj",
["Add new VIP"] = "Nowy VIP", ["Add new VIP"] = "Nowy VIP",
["Addon 1"] = "Addon 1", ["Addon 1"] = "Addon 1",
@@ -34,15 +39,15 @@ locale = {
["Add to VIP list"] = "Dodaj do VIPow", ["Add to VIP list"] = "Dodaj do VIPow",
["Adjust volume"] = "Zmien glosnosc", ["Adjust volume"] = "Zmien glosnosc",
["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, ["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"] = "Wszystkie", ["All"] = false,
["All modules and scripts were reloaded."] = "Wszystkie moduly ", ["All modules and scripts were reloaded."] = "Wszystkie moduly ",
["Allow auto chase override"] = false, ["Allow auto chase override"] = false,
["Also known as dash in tibia community, recommended\nfor playing characters with high speed"] = false, ["Also known as dash in tibia community, recommended\nfor playing characters with high speed"] = false,
["Ambient light: %s%%"] = "Swiatlo tla: %s%%", ["Ambient light: %s%%"] = false,
["Amount:"] = "Ilosc:", ["Amount:"] = "Ilosc:",
["Amount"] = "Ilosc", ["Amount"] = false,
["Anonymous"] = "Anonimowy", ["Anonymous"] = false,
["Are you sure you want to logout?"] = "Czy jestes pewien, ze sie chcesz wylogowac?", ["Are you sure you want to logout?"] = false,
["Attack"] = "Atak", ["Attack"] = "Atak",
["Author"] = "Autor", ["Author"] = "Autor",
["Autoload"] = "Autoladowanie", ["Autoload"] = "Autoladowanie",
@@ -54,255 +59,256 @@ locale = {
["Banishment"] = false, ["Banishment"] = false,
["Banishment + Final Warning"] = false, ["Banishment + Final Warning"] = false,
["Battle"] = "Bitwa", ["Battle"] = "Bitwa",
["Browse"] = "Przegladaj", ["Browse"] = false,
["Bug report sent."] = "Raport o bledzie zostal wyslany.", ["Bug report sent."] = false,
["Button Assign"] = "Przypisanie Klawisza", ["Button Assign"] = "Przypisanie Klawisza",
["Buy"] = "Kup", ["Buy"] = "Kup",
["Buy Now"] = "Kup Teraz", ["Buy Now"] = false,
["Buy Offers"] = "Oferty Kupna", ["Buy Offers"] = false,
["Buy with backpack"] = "Kupuj z plecakami", ["Buy with backpack"] = "Kupuj z plecakami",
["Cancel"] = "Anuluj", ["Cancel"] = "Anuluj",
["Cannot login while already in game."] = "Nie mozna zalogowac gdy juz w grze", ["Cannot login while already in game."] = false,
["Cap"] = "Ladownosc", ["Cap"] = false,
["Capacity"] = "Ladownosc", ["Capacity"] = "Capacidad",
["Center"] = "Wysrodkuj", ["Center"] = false,
["Channels"] = "Kanaly", ["Channels"] = "Kanaly",
["Character List"] = "Lista postaci", ["Character List"] = "Lista postaci",
["Classic control"] = "Klasyczne sterowaie", ["Classic control"] = "Klasyczne sterowaie",
["Clear current message window"] = "Wyczysc bierzace okno", ["Clear current message window"] = false,
["Clear Messages"] = "Wyczysc wiadomosci", ["Clear Messages"] = false,
["Clear object"] = "Wyczysc obiekt", ["Clear object"] = "Wyczysc obiekt",
["Client needs update."] = "Klient wymaga aktalizacji", ["Client needs update."] = false,
["Close"] = "Zamknij", ["Close"] = "Zamknij",
["Close this channel"] = "Zamknij kanal", ["Close this channel"] = "Zamknij kanal",
["Club Fighting"] = "Walka obuchem", ["Club Fighting"] = "Walka obuchem",
["Combat Controls"] = "Kontrola walki", ["Combat Controls"] = "Kontrola walki",
["Comment:"] = "Komentarz:", ["Comment:"] = false,
["Connecting to game server..."] = "Laczenie z serwerem gry...", ["Connecting to game server..."] = "Laczenie z serwerem gry...",
["Connecting to login server..."] = "Laczenie z serwerem logowania...", ["Connecting to login server..."] = "Laczenie z serwerem logowania...",
["Console"] = "Konsola", ["Console"] = false,
["Cooldowns"] = "Czasy odnowienia", ["Cooldowns"] = false,
["Copy message"] = "Kopiuj wiadomosc", ["Copy message"] = false,
["Copy name"] = "Kopiuj imie", ["Copy name"] = false,
["Copy Name"] = "Kopiuj Imie", ["Copy Name"] = "Kopiuj Nick",
["Create Map Mark"] = "Utworz Znacznik na Mapie", ["Create Map Mark"] = false,
["Create mark"] = "Utworz znacznik", ["Create mark"] = false,
["Create New Offer"] = "Utworz Nowa Oferte", ["Create New Offer"] = false,
["Create Offer"] = "Utworz Oferte", ["Create Offer"] = false,
["Current hotkeys:"] = "Aktualny hotkey:", ["Current hotkeys:"] = "Aktualny hotkey:",
["Current hotkey to add: %s"] = "Aktualny hotkey do dodania: %s", ["Current hotkey to add: %s"] = "Aktualny hotkey do dodania: %s",
["Current Offers"] = "Obecne Oferty", ["Current Offers"] = false,
["Default"] = "Domyslny", ["Default"] = "Domyslny",
["Delete mark"] = "Usun znacznik", ["Delete mark"] = false,
["Description:"] = "Opis:", ["Description:"] = false,
["Description"] = "Opis", ["Description"] = "Opis",
["Destructive Behaviour"] = "Destrukcyjne Zachowanie", ["Destructive Behaviour"] = false,
["Detail"] = "Szczegoly", ["Detail"] = "Szczegoly",
["Details"] = "Szczegoly", ["Details"] = false,
["Disable Shared Experience"] = "Wylacz Dzielenie Doswiadczenia", ["Disable Shared Experience"] = "Wylacz Dzielenie Doswiadczenia",
["Dismount"] = "Zejdz z wierzchowca", ["Dismount"] = false,
["Display connection speed to the server (milliseconds)"] = "Wyswietl ping do serwera (ms)", ["Display connection speed to the server (milliseconds)"] = false,
["Distance Fighting"] = "Walka na odleglosc", ["Distance Fighting"] = "Walka na odleglosc",
["Don't stretch/shrink Game Window"] = "Nie rozszerzaj/zwezaj Okna Gry", ["Don't stretch/shrink Game Window"] = false,
["Edit hotkey text:"] = "Edytuj tresc hotkeya:", ["Edit hotkey text:"] = "Edytuj tresc hotkeya:",
["Edit List"] = "Lista Edycji", ["Edit List"] = false,
["Edit Text"] = "Edytuj tekst", ["Edit Text"] = "Edytuj tekst",
["Enable music"] = "Odtwarzaj muzyke", ["Enable music"] = false,
["Enable Shared Experience"] = "Wlacz dzielenie doswiadczenia", ["Enable Shared Experience"] = "Wlacz dzielenie doswiadczenia",
["Enable smart walking"] = "Wlacz inteligentne chodzenie", ["Enable smart walking"] = false,
["Enable vertical synchronization"] = "Wlacz synchronizacje pionowa", ["Enable vertical synchronization"] = "Wlacz synchronizacje pionowa",
["Enable walk booster"] = false, ["Enable walk booster"] = false,
["Enter Game"] = "Wejdz do gry", ["Enter Game"] = "Wejdz do gry",
["Enter one name per line."] = "Wprowadz jedno imie na linie", ["Enter one name per line."] = false,
["Enter with your account again to update your client."] = "Zaloguj sie ponownie by zaktualizowac klienta", ["Enter with your account again to update your client."] = false,
["Error"] = "Blad", ["Error"] = "Blad",
["Excessive Unjustified Player Killing"] = "Nadmierne Nieusprawiedliwione Zabijanie Graczy", ["Error"] = "Blad",
["Excessive Unjustified Player Killing"] = false,
["Exclude from private chat"] = "Wyrzuc w prywatnej konwersacji", ["Exclude from private chat"] = "Wyrzuc w prywatnej konwersacji",
["Exit"] = "Wyjdz", ["Exit"] = false,
["Experience"] = "Doswiadczenie", ["Experience"] = "Doswiadczenie",
["Filter list to match your level"] = "Wyswietl tylko odpowiednie dla mojego poziomu", ["Filter list to match your level"] = false,
["Filter list to match your vocation"] = "Wyswietl tylko odpowiednie dla mojej klasy", ["Filter list to match your vocation"] = false,
["Find:"] = "Szukaj:", ["Find:"] = false,
["Fishing"] = "Wedkarstwo", ["Fishing"] = "Wedkarstwo",
["Fist Fighting"] = "Walka wrecz", ["Fist Fighting"] = "Walka wrecz",
["Follow"] = "Podazaj", ["Follow"] = "Podazaj",
["Force Exit"] = "Wymus Zamkniecie", ["Force Exit"] = false,
["For Your Information"] = "Dla twojej informacji", ["For Your Information"] = false,
["Free Account"] = "Darmowe Konto", ["Free Account"] = false,
["Fullscreen"] = "Pelen ekran", ["Fullscreen"] = "Pelen ekran",
["Game"] = "Gra", ["Game"] = false,
["Game framerate limit: %s"] = "Limit FPS: %s", ["Game framerate limit: %s"] = false,
["Graphics"] = "Grafika", ["Graphics"] = "Grafika",
["Graphics card driver not detected"] = "Nie wykryto karty graficznej", ["Graphics card driver not detected"] = false,
["Graphics Engine:"] = "Silnik graficzny:", ["Graphics Engine:"] = false,
["Head"] = "Glowa", ["Head"] = "Glowa",
["Healing"] = "Leczenie", ["Healing"] = false,
["Health Info"] = "Info o zyciu", ["Health Info"] = false,
["Health Information"] = "Informacje o zyciu", ["Health Information"] = false,
["Hide monsters"] = "Ukryj potwory", ["Hide monsters"] = "Ukryj potwory",
["Hide non-skull players"] = "Ukryj graczy bez skulla", ["Hide non-skull players"] = "Ukryj graczy bez skulla",
["Hide Npcs"] = "Ukryj NPCe", ["Hide Npcs"] = "Ukryj NPCe",
["Hide Offline"] = "Ukryj Niedostepnych", ["Hide Offline"] = false,
["Hide party members"] = "Ukryj czlonkow druzyny", ["Hide party members"] = "Ukryj czlonkow zabawy",
["Hide players"] = "Ukryj graczy", ["Hide players"] = "Ukryj graczy",
["Hide spells for higher exp. levels"] = "Ukryj zaklecia wyzszych poziomow postaci", ["Hide spells for higher exp. levels"] = false,
["Hide spells for other vocations"] = "Ukryj zaklecia innych klas", ["Hide spells for other vocations"] = false,
["Hit Points"] = "Punkty uderzen", ["Hit Points"] = "Punkty uderzen",
["Hold left mouse button to navigate\nScroll mouse middle button to zoom\nRight mouse button to create map marks"] = false, ["Hold left mouse button to navigate\nScroll mouse middle button to zoom\nRight mouse button to create map marks"] = false,
["Hotkeys"] = "Hotkeye", ["Hotkeys"] = "Hotkeye",
["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, ["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"] = "Ignoruj", ["Ignore"] = false,
["Ignore capacity"] = "Ignoruj pojemnosc", ["Ignore capacity"] = "Ignoruj pojemnosc",
["Ignored players:"] = "Ignorowani gracze:", ["Ignored players:"] = false,
["Ignore equipped"] = "Ignoruj ekwipunek", ["Ignore equipped"] = "Ignoruj ekwipunek",
["Ignore List"] = "Lista Ignorowanych", ["Ignore List"] = false,
["Ignore players"] = "Ignoruj graczy", ["Ignore players"] = false,
["Ignore Private Messages"] = "Ignoruj Prywatne Wiadomosci", ["Ignore Private Messages"] = false,
["Ignore Yelling"] = "Ignoruj Krzyki", ["Ignore Yelling"] = false,
["Interface framerate limit: %s"] = "Limit FPS interfejsu: %s", ["Interface framerate limit: %s"] = false,
["Inventory"] = "Ekwipunek", ["Inventory"] = "Inwentarz",
["Invite to Party"] = "Zapros do druzyny", ["Invite to Party"] = "Zapros do zabawy",
["Invite to private chat"] = "Zapros do prywatnej konwersacji", ["Invite to private chat"] = "Zapros do prywatnej konwersacji",
["IP Address Banishment"] = "Blokada adresu IP", ["IP Address Banishment"] = false,
["Item Offers"] = "Oferty Przedmiotow", ["Item Offers"] = false,
["It is empty."] = "To jest puste.", ["It is empty."] = false,
["Join %s's Party"] = "Dolacz do druzyny gracza %s", ["Join %s's Party"] = false,
["Leave Party"] = "Opusc druzyne", ["Leave Party"] = "Opusc zabawe",
["Level"] = "Poziom", ["Level"] = "Poziom",
["Lifetime Premium Account"] = "Konto Premium na Stale", ["Lifetime Premium Account"] = false,
["Limits FPS to 60"] = "Ogranicz FPS do 60", ["Limits FPS to 60"] = "Ogranicz FPS do 60",
["List of items that you're able to buy"] = "Lista przedmiotow, ktore mozesz kupic", ["List of items that you're able to buy"] = "Lista przedmiotow, ktore mozesz kupic",
["List of items that you're able to sell"] = "Lista przedmiotow, ktore mozesz sprzedac", ["List of items that you're able to sell"] = "Lista przedmiotow, ktore mozesz sprzedac",
["Load"] = "Wczytaj", ["Load"] = "Wczytaj",
["Logging out..."] = "Wylogowuje...", ["Logging out..."] = false,
["Login"] = "Zaloguj", ["Login"] = "Zaloguj",
["Login Error"] = "Blad Logowania", ["Login Error"] = "Blad Logowania",
["Login Error"] = "Blad Logowania", ["Login Error"] = "Blad Logowania",
["Logout"] = "Wyloguj", ["Logout"] = false,
["Look"] = "Spojrz", ["Look"] = "Spojrz",
["Magic Level"] = "Poziom Magiczny", ["Magic Level"] = "Poziom Magiczny",
["Make sure that your client uses\nthe correct game protocol version"] = "Upewnij sie, ze twoj klient\nuzywa wlasciwego protokolu gry.", ["Make sure that your client uses\nthe correct game protocol version"] = "Upewnij sie, ze twoj klient\nuzywa wlasciwego protokolu gry.",
["Mana"] = "Mana", ["Mana"] = "Mana",
["Manage hotkeys:"] = "Zarzadzaj hotkeyami:", ["Manage hotkeys:"] = "Skonfiguruj hotkeye:",
["Market"] = false, ["Market"] = false,
["Market Offers"] = "Oferty", ["Market Offers"] = false,
["Message of the day"] = "Wiadomosc dnia", ["Message of the day"] = "Wiadomosc dnia",
["Message to "] = "Wiadomosc do ", ["Message to "] = false,
["Message to %s"] = "Wiadomosc do %s", ["Message to %s"] = "Wiadomosc do %s",
["Minimap"] = "Minimapa", ["Minimap"] = "Minimapa",
["Module Manager"] = "Menedzer modulow", ["Module Manager"] = "Menedzer modulow",
["Module name"] = "Nazwa modulu", ["Module name"] = "Nazwa modulu",
["Mount"] = "Wierzchowiec", ["Mount"] = false,
["Move Stackable Item"] = "Przenies przedmiot", ["Move Stackable Item"] = "Przenies przedmiot",
["Move up"] = "Przenies wyzej", ["Move up"] = "Przenies wyzej",
["My Offers"] = "Moje Oferty", ["My Offers"] = false,
["Name:"] = "Nazwa:", ["Name:"] = "Nazwa:",
["Name Report"] = false, ["Name Report"] = false,
["Name Report + Banishment"] = false, ["Name Report + Banishment"] = false,
["Name Report + Banishment + Final Warning"] = false, ["Name Report + Banishment + Final Warning"] = false,
["No"] = "Nie", ["No"] = false,
["No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance."] = false, ["No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance."] = false,
["No item selected."] = "Nie wybrano przedmiotu.", ["No item selected."] = false,
["No Mount"] = "Brak wierzchowca", ["No Mount"] = false,
["No Outfit"] = "Brak stroju", ["No Outfit"] = false,
["No statement has been selected."] = false, ["No statement has been selected."] = false,
["Notation"] = false, ["Notation"] = false,
["NPC Trade"] = "Handel NPC", ["NPC Trade"] = "Handel NPC",
["Offer History"] = "Historia Ofert", ["Offer History"] = false,
["Offers"] = "Oferty", ["Offers"] = false,
["Offer Type:"] = "Typ Oferty:", ["Offer Type:"] = false,
["Offline Training"] = "Trening Offline", ["Offline Training"] = false,
["Ok"] = "Ok", ["Ok"] = "Ok",
["on %s.\n"] = false, ["on %s.\n"] = false,
["Open"] = "Otworz", ["Open"] = "Otworz",
["Open a private message channel:"] = "Otworz prywatny kanal:", ["Open a private message channel:"] = "Otworz prywatny kanal:",
["Open charlist automatically when starting client"] = "Automatycznie otworz liste postaci przy starcie gry", ["Open charlist automatically when starting client"] = false,
["Open in new window"] = "Otworz w nowym oknie", ["Open in new window"] = "Otworz w nowym oknie",
["Open new channel"] = "Otworz nowy kanal", ["Open new channel"] = "Otworz nowy kanal",
["Options"] = "Opcje", ["Options"] = "Opcje",
["Overview"] = "Podsumowanie", ["Overview"] = false,
["Pass Leadership to %s"] = "Oddaj przywodztwo %s", ["Pass Leadership to %s"] = "Przekaz przywodztwo %s",
["Password"] = "Haslo", ["Password"] = "Haslo",
["Piece Price:"] = "Cena jednego przedmiotu", ["Piece Price:"] = false,
["Please enter a character name:"] = "Podaj nazwe postaci:", ["Please enter a character name:"] = "Podaj nazwe postaci:",
["Please, press the key you wish to add onto your hotkeys manager"] = "Nacisnij klawisz, ktory chcesz dodac do menedzera skrotow klawiszowych", ["Please, press the key you wish to add onto your hotkeys manager"] = "Nacisnij klawisz, ktory chcesz dodac do menedzera skrotow klawiszowych",
["Please Select"] = "Prosze wybrac", ["Please Select"] = false,
["Please use this dialog to only report bugs. Do not report rule violations here!"] = "Zglaszaj tylko bledy gry, nie lamanie zasad", ["Please use this dialog to only report bugs. Do not report rule violations here!"] = false,
["Please wait"] = "Prosze czekac", ["Please wait"] = "Prosze czekac",
["Port"] = "Port", ["Port"] = "Port",
["Position:"] = "Pozycja:", ["Position:"] = false,
["Position: %i %i %i"] = "Pozycja: %i %i %i", ["Position: %i %i %i"] = false,
["Premium Account (%s) days left"] = "Konto Premium (%s) dni", ["Premium Account (%s) days left"] = false,
["Price:"] = "Cena:", ["Price:"] = "Cena:",
["Primary"] = "Podstawowy", ["Primary"] = "Podstawowy",
["Protocol"] = "Protokol", ["Protocol"] = false,
["Quest Log"] = "Dziennik Misji", ["Quest Log"] = false,
["Randomize"] = "Losuj", ["Randomize"] = false,
["Randomize characters outfit"] = "Ustaw losowy wyglad", ["Randomize characters outfit"] = false,
["Reason:"] = "Powod:", ["Reason:"] = false,
["Refresh"] = "Odswiez", ["Refresh"] = "Odswiez",
["Refresh Offers"] = "Odswiez Oferty", ["Refresh Offers"] = false,
["Regeneration Time"] = "Czas Regeneracji", ["Regeneration Time"] = false,
["Reject"] = "Odrzuc", ["Reject"] = false,
["Reload All"] = "Zaladuj ponownie wszystko", ["Reload All"] = "Przeladuj Wszystko",
["Remember account and password when starts client"] = "Zapamietaj identyfikator konta oraz haslo", ["Remember account and password when starts client"] = false,
["Remember password"] = "Zapamietaj haslo", ["Remember password"] = "Zapamietaj haslo",
["Remove"] = "Usun", ["Remove"] = "Usun",
["Remove %s"] = "Usun %s", ["Remove %s"] = "Usun %s",
["Report Bug"] = "Zglos Blad", ["Report Bug"] = false,
["Reserved for more functionality later."] = "Zarezerowane dla przyszlych funkcjonalnosci.", ["Reserved for more functionality later."] = false,
["Reset Market"] = "Zaladuj market ponownie", ["Reset Market"] = false,
["Revoke %s's Invitation"] = "Odmow na zaproszenie gracza %s", ["Revoke %s's Invitation"] = false,
["Rotate"] = "Obroc", ["Rotate"] = "Obroc",
["Rule Violation"] = "Zlamanie Regul", ["Rule Violation"] = false,
["Save"] = "Zapisz", ["Save"] = false,
["Save Messages"] = "Zapisz Wiadomosci", ["Save Messages"] = false,
["Search:"] = "Szukaj:", ["Search:"] = "Szukaj:",
["Search all items"] = "Znajdz wszystkie przedmioty", ["Search all items"] = false,
["Secondary"] = "Drugorzedny", ["Secondary"] = "Drugorzedny",
["Select object"] = "Wybierz obiekt", ["Select object"] = "Wybierz obiekt",
["Select Outfit"] = "Wybierz outfit", ["Select Outfit"] = "Wybierz outfit",
["Select your language"] = "Wybierz jezyk", ["Select your language"] = false,
["Sell"] = "Sprzedaj", ["Sell"] = "Sprzedaj",
["Sell Now"] = "Sprzedaj Teraz", ["Sell Now"] = false,
["Sell Offers"] = "Oferty Sprzedazy", ["Sell Offers"] = false,
["Send"] = "Wyslij", ["Send"] = false,
["Send automatically"] = "Wyslij automatycznie", ["Send automatically"] = "Wyslij automatycznie",
["Send Message"] = "Wyslij Wiadomosc", ["Send Message"] = false,
["Server"] = "Serwer", ["Server"] = "Serwer",
["Server Log"] = "Log Serwera", ["Server Log"] = "Log Serwera",
["Set Outfit"] = "Ustaw outfit", ["Set Outfit"] = "Ustaw outfit",
["Shielding"] = "Obrona tarcza", ["Shielding"] = "Obrona tarcza",
["Show all items"] = "Pokaz wszystkie przedmioty", ["Show all items"] = "Pokaz wszystkie przedmioty",
["Show connection ping"] = "Wyswietl ping", ["Show connection ping"] = false,
["Show Depot Only"] = "Pokaz tylko przedmioty z depozytu", ["Show Depot Only"] = false,
["Show event messages in console"] = "Pokaz wydarzenia w konsoli", ["Show event messages in console"] = "Pokaz wydarzenia w konsoli",
["Show frame rate"] = "Pokaz FPS", ["Show frame rate"] = "Pokaz ilosc FPS",
["Show info messages in console"] = "Pokaz informacje w konsoli", ["Show info messages in console"] = "Pokaz informacje w konsoli",
["Show left panel"] = "Pokaz lewy panel", ["Show left panel"] = false,
["Show levels in console"] = "Pokaz poziomy w konsoli", ["Show levels in console"] = "Pokaz poziomy w konsoli",
["Show Offline"] = "Pokaz Niedostepnych", ["Show Offline"] = false,
["Show private messages in console"] = "Pokaz prywatne wiadomosci w konsoli", ["Show private messages in console"] = "Pokaz prywatne wiadomosci w konsoli",
["Show private messages on screen"] = "Pokaz prywatne wiadomosci na ekranie", ["Show private messages on screen"] = false,
["Show Server Messages"] = "Pokaz Wiadomosci Serwera", ["Show Server Messages"] = false,
["Show status messages in console"] = "Pokaz status w konsoli", ["Show status messages in console"] = "Pokaz status w konsoli",
["Show Text"] = "Pokaz Tekst", ["Show Text"] = false,
["Show timestamps in console"] = "Pokaz znaczniki czasu w konsoli", ["Show timestamps in console"] = "Pokaz znaczniki czasu w konsoli",
["Show your depot items only"] = "Pokaz tylko przedmioty z depozytu", ["Show your depot items only"] = false,
["Skills"] = "Umiejetnosci", ["Skills"] = "Umiejetnosci",
["Soul"] = "Dusze", ["Soul"] = false,
["Soul Points"] = "Punktey Duszy", ["Soul Points"] = "Punkty Duszy",
["Special"] = "Specialne", ["Special"] = false,
["Speed"] = "Predkosc", ["Speed"] = false,
["Spell Cooldowns"] = "Czas odnowienia czaru", ["Spell Cooldowns"] = false,
["Spell List"] = "Lista Zaklec", ["Spell List"] = false,
["Stamina"] = "Wytrzymalosc", ["Stamina"] = "Wytrzymalosc",
["Statement:"] = "Wyrazenie", ["Statement:"] = false,
["Statement Report"] = "Reportuj wyrazenie", ["Statement Report"] = false,
["Statistics"] = "Statystki", ["Statistics"] = false,
["Stop Attack"] = "Anuluj atak", ["Stop Attack"] = "Zatrzymaj atak",
["Stop Follow"] = "Przestan podazac", ["Stop Follow"] = "Zatrzymaj podazanie",
["Support"] = "Wsparcie", ["Support"] = false,
["%s: (use object)"] = "%s: (uzyj obiekt)", ["%s: (use object)"] = "%s: (uzyj obiekt)",
["%s: (use object on target)"] = "%s: (uzyj obiektu na celu)", ["%s: (use object on target)"] = "%s: (uzyj obiektu na celu)",
["%s: (use object on yourself)"] = "%s: (uzyj obiektu na sobie)", ["%s: (use object on yourself)"] = "%s: (uzyj obiektu na sobie)",
@@ -310,105 +316,60 @@ locale = {
["Sword Fighting"] = "Atak mieczem", ["Sword Fighting"] = "Atak mieczem",
["Terminal"] = "Terminal", ["Terminal"] = "Terminal",
["There is no way."] = "Nie ma drogi.", ["There is no way."] = "Nie ma drogi.",
["Title"] = "Tytul", ["Title"] = false,
["Total Price"] = "Cena calosci", ["Total Price:"] = false,
["Trade"] = "Handel", ["Trade"] = "Handel",
["Trade with ..."] = "Handluj z ...", ["Trade with ..."] = "Handluj z ...",
["Trying to reconnect in %s seconds."] = "Ponowna proba laczenia za %s sekund.", ["Trying to reconnect in %s seconds."] = false,
["Unable to load dat file, please place a valid dat in '%s'"] = "Nie mozna zaladowac pliku .dat z '%s'", ["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'"] = "Nie mozna zaladowac pliku .spr z '%s'", ["Unable to load spr file, please place a valid spr in '%s'"] = false,
["Unable to logout."] = "Nie mozna sie wylogowac.", ["Unable to logout."] = "Nie mozna sie wylogowac.",
["Unignore"] = "Anuluj Ignorowanie", ["Unignore"] = false,
["Unload"] = "Wylacz", ["Unload"] = "Wylacz",
["Update needed"] = "Wymagana aktualizacja", ["Update needed"] = false,
["Use"] = "Uzyj", ["Use"] = "Uzyj",
["Use on target"] = "Uzyj na celu", ["Use on target"] = "Uzyj na celu",
["Use on yourself"] = "Uzyj na sobie", ["Use on yourself"] = "Uzyj na sobie",
["Use with ..."] = "Uzyj z ...", ["Use with ..."] = "Uzyj z ...",
["Version"] = "Wersja", ["Version"] = "Wersja",
["VIP List"] = "Lista VIP", ["VIP List"] = "Lista VIP",
["Voc."] = "Profesja", ["Voc."] = false,
["Vocation"] = "Profesja", ["Vocation"] = false,
["Waiting List"] = "Lista Oczekujacych", ["Waiting List"] = false,
["Website"] = "Strona:", ["Website"] = "Strona:",
["Weight:"] = "Waga:", ["Weight:"] = "Waga:",
["Will detect when to use diagonal step based on the\nkeys you are pressing"] = false, ["Will detect when to use diagonal step based on the\nkeys you are pressing"] = false,
["With crosshair"] = "Z celownikiem", ["With crosshair"] = "Z celownikiem",
["Yes"] = "Tak", ["Yes"] = false,
["You are bleeding"] = "Krwawisz", ["You are bleeding"] = false,
["You are burning"] = "Palisz sie", ["You are burning"] = "Palisz sie",
["You are cursed"] = "Jestes przeklety", ["You are cursed"] = "Jestes przeklety",
["You are dazzled"] = "Jestes oslepiony", ["You are dazzled"] = "Jestes oslepiony",
["You are dead."] = "Jestes martwy.", ["You are dead."] = "Zginales marnie.",
["You are dead"] = "Jestes martwy", ["You are dead"] = false,
["You are drowning"] = "Topisz sie", ["You are drowning"] = "Topisz sie",
["You are drunk"] = "Jestes pijany", ["You are drunk"] = false,
["You are electrified"] = "Jestes porazony pradem", ["You are electrified"] = "Jestes porazony pradem",
["You are freezing"] = "Zamarzasz", ["You are freezing"] = "Marzniesz",
["You are hasted"] = "Masz zwiekszona predkosc ruchu", ["You are hasted"] = "Zapieprzasz",
["You are hungry"] = "Jestes glodny", ["You are hungry"] = false,
["You are paralysed"] = "Jestes sparalizowany", ["You are paralysed"] = "Jestes sparalizowany",
["You are poisoned"] = "Jestes zatruty", ["You are poisoned"] = "Jestes zatruty",
["You are protected by a magic shield"] = "Jestes chroniony magiczna tarcza", ["You are protected by a magic shield"] = "Jestes chroniony magiczna tarcza",
["You are strengthened"] = "Jestes wzmocniony", ["You are strengthened"] = "Jestes wzmocniony",
["You are within a protection zone"] = "Jestes w strefie ochronnej", ["You are within a protection zone"] = "Jestes w strefie ochronnej",
["You can enter new text."] = "Mozesz wprowadzic nowy tekst.", ["You can enter new text."] = false,
["You have %s percent"] = "Masz %s procent", ["You have %s percent"] = "Masz %s procent",
["You have %s percent to go"] = "Brakuje Ci %s procent", ["You have %s percent to go"] = "Brakuje Ci %s procent",
["You may not logout during a fight"] = "Nie mozesz sie wylogowac w trakcie walki", ["You may not logout during a fight"] = "Nie mozesz sie wylogowac w trakcie walki",
["You may not logout or enter a protection zone"] = "Nie mozesz sie wylogowac ani wejsc do strefy ochronnej", ["You may not logout or enter a protection zone"] = "Nie mozesz sie wylogowac ani wejsc do strefy ochronnej",
["You must enter a comment."] = "Prosze wprowadzic komentarz", ["You must enter a comment."] = false,
["You must enter a valid server address and port."] = "Prosze wprowadzic poprawny adres i port.", ["You must enter a valid server address and port."] = false,
["You must select a character to login!"] = "Musisz wybrac postac aby sie zalogowac!", ["You must select a character to login!"] = "Musisz wybrac postac aby sie zalogowac!",
["Your Capacity:"] = "Twoja Ladownosc:", ["Your Capacity:"] = false,
["You read the following, written by \n%s\n"] = false, ["You read the following, written by \n%s\n"] = false,
["You read the following, written on \n%s.\n"] = false, ["You read the following, written on \n%s.\n"] = false,
["Your Money:"] = "Twoje pieniadze", ["Your Money:"] = false,
["Enable dash walking"] = "Wlacz szybsze chodzenie (dash walking)",
["Will boost your walk on high speed characters"] = "Przyspieszy poruszanie sie postaci o wysokiej predkosci",
["Display creature names"] = "Wyswietlaj nazwy potworow",
["Display creature health bars"] = "Wyswietlaj paski zycia potworow",
["Display text messages"] = "Wyswietlaj wiadomosci tekstowe",
["Change language"] = "Zmien jezyk",
["Enable lights"] = "Wlacz oswietlenie",
["Enable audio"] = "Wlacz dzwiek",
["Enable music sound"] = "Wlacz muzyke",
["Music volume: %d"] = "Glosnosc muzyki: %d",
["Audio"] = "Dzwiek",
["Server List"] = "Lista serwerow",
["Server list"] = "Lista serwerow",
["Client Version"] = "Wersja klienta",
["Add new server"] = "Dodaj nowy serwer",
["Select"] = "Wybierz",
["New Server"] = "Nowy serwer",
["Host"] = false,
["Reset All"] = "Ustaw domyslne",
["Disable chat mode, allow to walk using ASDW"] = "Zablokuj tryb rozmow, zezwol na poruszanie sie za pomoca klawiszy ADSW",
["Name"] = "Imie",
["Price"] = "Cena",
["Your Money"] = "Twoje fundusze",
["Weight"] = "Waga",
["Your Capacity"] = "Twoj udzwig",
["Search"] = "Szukaj",
["Sell All"] = "Sprzedaj wszystko",
["Statement"] = "Stanowisko",
["Reason"] = "Powod",
["Action"] = "Akcja",
["Comment"] = "Komentarz",
["Balance"] = "Stan konta",
["Offer Type"] = "Typ oferty",
["Piece Price"] = "Cena jednego",
["Find"] = "Szukaj",
["Formula"] = "Formula",
["Group"] = "Groupa",
["Type"] = "Typ",
["Cooldown"] = "Czas odnowienia",
["Premium"] = false,
["Any"] = "Dowolny",
["Sorcerer"] = "Czarodziej",
["Druid"] = false,
["Paladin"] = "Paladyn",
["Knight"] = "Rycerz"
} }
} }

View File

@@ -1,45 +1,44 @@
Button < UIButton Button < UIButton
font: verdana-11px-antialised font: verdana-11px-antialised
color: #dfdfdfff color: #f0ad4dff
size: 106 23 size: 106 22
text-offset: 0 0 text-offset: 0 0
image-source: /images/ui/button image-source: /images/ui/button_rounded
image-color: #dfdfdf image-color: white
image-clip: 0 0 22 23 image-clip: 0 0 20 20
image-border: 3 image-border: 3
padding: 5 10 5 10 padding: 5 10 5 10
$hover !disabled: $hover !disabled:
image-clip: 0 23 22 23 image-clip: 0 20 20 20
$pressed: $pressed:
image-clip: 0 46 22 23 image-clip: 0 40 20 20
text-offset: 1 1 text-offset: 1 1
$disabled: $disabled:
color: #dfdfdf88 color: #f0ad4d88
opacity: 0.8
TabButton < UIButton TabButton < UIButton
size: 22 23 size: 20 20
image-source: /images/ui/tabbutton_rounded image-source: /images/ui/tabbutton_rounded
image-color: #dfdfdf image-color: white
image-clip: 0 0 22 23 image-clip: 0 0 20 20
image-border: 3 image-border: 3
icon-color: #dfdfdf icon-color: white
color: #dfdfdf color: #aaaaaa
$hover !on: $hover !on:
image-clip: 0 23 22 23 image-clip: 0 20 20 20
color: #dfdfdf color: white
$disabled: $disabled:
image-color: #dfdfdf66 image-color: #ffffff66
icon-color: #dfdfdf icon-color: #888888
$on: $on:
image-clip: 0 46 22 23 image-clip: 0 40 20 20
color: #dfdfdf color: #80c7f8
NextButton < UIButton NextButton < UIButton
size: 12 21 size: 12 21
@@ -53,7 +52,7 @@ NextButton < UIButton
image-clip: 12 21 12 21 image-clip: 12 21 12 21
$disabled: $disabled:
image-color: #dfdfdf55 image-color: #ffffff55
PreviousButton < UIButton PreviousButton < UIButton
size: 12 21 size: 12 21
@@ -67,18 +66,18 @@ PreviousButton < UIButton
image-clip: 0 21 12 21 image-clip: 0 21 12 21
$disabled: $disabled:
image-color: #dfdfdf55 image-color: #ffffff55
AddButton < UIButton AddButton < UIButton
size: 20 20 size: 20 20
image-source: /images/ui/icon_add image-source: /images/ui/icon_add
image-color: #dfdfdfff image-color: #ffffffff
$hover !disabled: $hover !disabled:
image-color: #dfdfdf99 image-color: #ffffff99
$pressed: $pressed:
image-color: #dfdfdf44 image-color: #ffffff44
$disabled: $disabled:
image-color: #dfdfdf55 image-color: #ffffff55

View File

@@ -1,35 +1,36 @@
CheckBox < UICheckBox CheckBox < UICheckBox
size: 16 16 size: 16 16
text-align: left text-align: left
text-offset: 18 1 text: aa
color: #dfdfdf text-offset: 16 0
image-color: #dfdfdfff color: #aaaaaa
image-rect: 0 0 15 15 image-color: #ffffffff
image-rect: 0 0 12 12
image-offset: 0 2
image-source: /images/ui/checkbox image-source: /images/ui/checkbox
$hover !disabled: $hover !disabled:
color: #ffffff color: #cccccc
$!checked: $!checked:
image-clip: 0 0 15 15 image-clip: 0 0 12 12
$hover !checked: $hover !checked:
image-clip: 0 15 15 15 image-clip: 0 12 12 12
$checked: $checked:
image-clip: 0 30 15 15 image-clip: 0 24 12 12
$hover checked: $hover checked:
image-clip: 0 45 15 15 image-clip: 0 36 12 12
$disabled: $disabled:
image-color: #dfdfdf88 image-color: #ffffff88
color: #dfdfdf88 color: #aaaaaa88
opacity: 0.8
ColorBox < UICheckBox ColorBox < UICheckBox
size: 16 16 size: 16 16
image-color: #dfdfdfff image-color: #ffffffff
image-source: /images/ui/colorbox image-source: /images/ui/colorbox
$checked: $checked:
@@ -40,25 +41,26 @@ ColorBox < UICheckBox
ButtonBox < UICheckBox ButtonBox < UICheckBox
font: verdana-11px-antialised font: verdana-11px-antialised
color: #dfdfdfff color: #ffffffff
size: 106 23 size: 106 22
text-offset: 0 0 text-offset: 0 0
text-align: center text-align: center
image-source: /images/ui/button image-source: /images/ui/tabbutton_rounded
image-color: #dfdfdf image-color: white
image-clip: 0 0 22 23 image-clip: 0 0 20 20
image-border: 3 image-border: 3
$hover !disabled: $hover !disabled:
image-clip: 0 23 22 23 image-clip: 0 20 20 20
$checked: $checked:
image-clip: 0 46 22 23 image-clip: 0 40 20 20
color: #dfdfdf color: #80c7f8
$disabled: $disabled:
color: #dfdfdf88 color: #666666ff
image-color: #dfdfdf88 image-color: #ffffff88
ButtonBoxRounded < ButtonBox ButtonBoxRounded < ButtonBox
image-source: /images/ui/button_rounded image-source: /images/ui/tabbutton_rounded
image-border: 2

View File

@@ -1,106 +1,62 @@
ComboBoxPopupScrollMenuButton < UIButton
height: 23
font: verdana-11px-antialised
text-align: left
text-offset: 4 0
color: #dfdfdf
background-color: alpha
margin: 1
$hover !disabled:
color: #dfdfdf
background-color: #355d89
$disabled:
color: #dfdfdf88
ComboBoxPopupScrollMenu < UIPopupScrollMenu
image-source: /images/ui/combobox_square
image-clip: 0 69 91 23
image-border: 1
ComboBoxPopupMenuButton < UIButton ComboBoxPopupMenuButton < UIButton
height: 23 height: 20
font: verdana-11px-antialised font: verdana-11px-antialised
text-align: left text-align: left
text-offset: 4 0 text-offset: 4 0
color: #dfdfdf color: #aaaaaa
background-color: alpha background-color: alpha
margin: 1
$hover !disabled: $hover !disabled:
color: #dfdfdf color: #ffffff
background-color: #355d89 background-color: #ffffff44
$disabled: $disabled:
color: #dfdfdf88 color: #555555
ComboBoxPopupMenu < UIPopupMenu ComboBoxPopupMenu < UIPopupMenu
image-source: /images/ui/combobox_square image-source: /images/ui/combobox_square
image-clip: 0 69 91 23 image-clip: 0 60 89 20
image-border: 1 image-border-left: 1
image-border-right: 1
ComboBox < UIComboBox ComboBox < UIComboBox
font: verdana-11px-antialised font: verdana-11px-antialised
color: #dfdfdf color: #aaaaaa
size: 91 23 size: 89 20
text-offset: 3 0 text-offset: 3 0
text-align: left text-align: left
image-source: /images/ui/combobox_square image-source: /images/ui/combobox_square
image-border: 3 image-border: 1
image-border-right: 19 image-border-right: 17
image-clip: 0 0 91 23 image-clip: 0 0 89 20
$hover !disabled: $hover !disabled:
image-clip: 0 23 91 23 image-clip: 0 20 89 20
$on: $on:
image-clip: 0 46 91 23 image-clip: 0 40 89 20
$disabled:
color: #dfdfdf88
opacity: 0.8
ComboBoxRoundedPopupScrollMenuButton < UIButton
height: 23
font: verdana-11px-antialised
text-align: left
text-offset: 4 0
color: #dfdfdf
background-color: alpha
$hover !disabled:
color: #ffffff
background-color: #355d89
$disabled:
color: #dfdfdf88
ComboBoxRoundedPopupScrollMenu < UIPopupScrollMenu
image-source: /images/ui/combobox_rounded
image-clip: 0 69 91 23
image-border: 3
ComboBoxRoundedPopupMenuButton < UIButton ComboBoxRoundedPopupMenuButton < UIButton
height: 23 height: 20
font: verdana-11px-antialised font: verdana-11px-antialised
text-align: left text-align: left
text-offset: 4 0 text-offset: 4 0
color: #dfdfdf color: #aaaaaa
background-color: alpha background-color: alpha
$hover !disabled: $hover !disabled:
color: #ffffff color: #ffffff
background-color: #355d89 background-color: #ffffff44
$disabled: $disabled:
color: #dfdfdf88 color: #555555
ComboBoxRoundedPopupMenu < UIPopupMenu ComboBoxRoundedPopupMenu < UIPopupMenu
image-source: /images/ui/combobox_rounded image-source: /images/ui/combobox_rounded
image-clip: 0 69 91 23 image-clip: 0 60 89 20
image-border: 3 image-border-left: 1
image-border-right: 1
ComboBoxRounded < ComboBox ComboBoxRounded < ComboBox
image-source: /images/ui/combobox_rounded image-source: /images/ui/combobox_rounded
image-border: 3 image-border: 2

View File

@@ -1,23 +1,23 @@
Label < UILabel Label < UILabel
font: verdana-11px-antialised font: verdana-11px-antialised
color: #dfdfdf color: #bbbbbb
$disabled: $disabled:
color: #dfdfdf88 color: #bbbbbb88
FlatLabel < UILabel FlatLabel < UILabel
font: verdana-11px-antialised font: verdana-11px-antialised
color: #dfdfdf color: #aaaaaa
size: 86 20 size: 86 20
text-offset: 3 3 text-offset: 3 3
image-source: /images/ui/panel_flat image-source: /images/ui/panel_flat
image-border: 1 image-border: 1
$disabled: $disabled:
color: #dfdfdf88 color: #aaaaaa88
MenuLabel < Label MenuLabel < Label
GameLabel < UILabel GameLabel < UILabel
font: verdana-11px-antialised font: verdana-11px-antialised
color: #dfdfdf color: #bbbbbb

View File

@@ -1,19 +1,13 @@
TextList < UIScrollArea TextList < UIScrollArea
layout: verticalBox layout: verticalBox
border-width: 1 border-width: 1
border-color: #272727 border-color: #1d222b
background-color: #636363 background-color: #222833
padding: 1 padding: 1
auto-focus: none auto-focus: none
HorizontalList < UIScrollArea HorizontalList < UIScrollArea
layout: horizontalBox layout: horizontalBox
border-width: 1 border-width: 1
border-color: #272727 border-color: #1d222b
background-color: #636363 background-color: #222833
VerticalList < UIScrollArea
layout: verticalBox
border-width: 1
border-color: #272727
background-color: #636363

View File

@@ -10,6 +10,7 @@ ScrollBarSlider < UIButton
image-clip: 13 26 13 13 image-clip: 13 26 13 13
$pressed: $pressed:
image-clip: 26 26 13 13 image-clip: 26 26 13 13
image-color: #ffffff99
$disabled: $disabled:
image-color: #ffffff66 image-color: #ffffff66

View File

@@ -1,13 +1,13 @@
HorizontalSeparator < UIWidget HorizontalSeparator < UIWidget
image-source: /images/ui/separator_horizontal image-source: /images/ui/separator_horizontal
image-border: 1 image-border-top: 2
height: 2 height: 2
phantom: true phantom: true
focusable: false focusable: false
VerticalSeparator < UIWidget VerticalSeparator < UIWidget
image-source: /images/ui/separator_vertical image-source: /images/ui/separator_vertical
image-border: 1 image-border-left: 2
width: 2 width: 2
phantom: true phantom: true
focusable: false focusable: false

View File

@@ -1,17 +1,15 @@
TextEdit < UITextEdit TextEdit < UITextEdit
font: verdana-11px-antialised font: verdana-11px-antialised
color: #272727 color: #aaaaaa
size: 86 22 size: 86 20
text-offset: 0 4 text-offset: 0 3
opacity: 1 padding: 3
padding: 4
image-source: /images/ui/textedit image-source: /images/ui/textedit
image-border: 1 image-border: 1
selection-color: #272727 selection-color: #111416
selection-background-color: #cccccc selection-background-color: #999999
$disabled: $disabled:
color: #27272788 color: #aaaaaa88
opacity: 0.5
PasswordTextEdit < TextEdit PasswordTextEdit < TextEdit
text-hidden: true text-hidden: true

View File

@@ -2,19 +2,20 @@ Window < UIWindow
font: verdana-11px-antialised font: verdana-11px-antialised
size: 200 200 size: 200 200
opacity: 1 opacity: 1
color: #dfdfdf color: white
text-offset: 0 6 text-offset: 0 4
text-align: top text-align: top
image-source: /images/ui/window image-source: /images/ui/window
image-border: 6 image-border: 5
image-border-top: 27 image-border-top: 22
padding-top: 36 opacity: 1
padding-top: 30
padding-left: 16 padding-left: 16
padding-right: 16 padding-right: 16
padding-bottom: 16 padding-bottom: 16
$disabled: $disabled:
color: #dfdfdf88 color: #aaaaaa88
$dragging: $dragging:
opacity: 0.8 opacity: 0.8

View File

@@ -39,45 +39,3 @@ PopupMenu < UIPopupMenu
image-source: /images/ui/menubox image-source: /images/ui/menubox
image-border: 3 image-border: 3
padding: 3 padding: 3
PopupScrollMenuButton < UIButton
height: 18
size: 0 21
text-offset: 4 0
text-align: left
font: verdana-11px-antialised
color: #aaaaaa
background-color: alpha
$hover !disabled:
color: #ffffff
background-color: #ffffff44
image-clip: 0 40 20 20
$disabled:
color: #555555
PopupScrollMenuShortcutLabel < Label
font: verdana-11px-antialised
text-align: right
anchors.fill: parent
margin-right: 2
margin-left: 5
PopupScrollMenuSeparator < UIWidget
margin-left: 2
margin-right: 2
margin-bottom: 1
image-source: /images/ui/menubox
image-border-left: 1
image-border-right: 1
image-clip: 0 0 32 2
height: 2
phantom: true
PopupScrollMenu < UIPopupScrollMenu
width: 50
image-source: /images/ui/menubox
image-border: 3
padding: 3

View File

@@ -1,13 +1,13 @@
SpinBox < TextEdit SpinBox < TextEdit
__class: UISpinBox __class: UISpinBox
text-align: left text-align: left
size: 86 22 size: 86 20
padding: 0 padding: 0
padding-left: 2 padding-left: 2
Button Button
id: up id: up
size: 11 11 size: 10 10
image-source: /images/ui/spinbox_up image-source: /images/ui/spinbox_up
image-border: 1 image-border: 1
image-clip: 0 0 10 10 image-clip: 0 0 10 10
@@ -21,7 +21,7 @@ SpinBox < TextEdit
Button Button
id: down id: down
size: 11 11 size: 10 10
image-source: /images/ui/spinbox_down image-source: /images/ui/spinbox_down
image-border: 1 image-border: 1
image-clip: 0 0 10 10 image-clip: 0 0 10 10

View File

@@ -1,49 +1,47 @@
MoveableTabBar < UIMoveableTabBar MoveableTabBar < UIMoveableTabBar
size: 80 21 size: 80 20
MoveableTabBarPanel < Panel MoveableTabBarPanel < Panel
MoveableTabBarButton < UIButton MoveableTabBarButton < UIButton
size: 20 21 size: 20 20
image-source: /images/ui/tabbutton_square image-source: /images/ui/tabbutton_square
image-color: #dfdfdf image-color: white
image-clip: 0 0 20 21 image-clip: 0 0 20 20
image-border: 3 image-border: 3
image-border-bottom: 0 icon-color: white
icon-color: #dfdfdf color: #aaaaaa
color: #dfdfdf
anchors.top: parent.top anchors.top: parent.top
anchors.left: parent.left anchors.left: parent.left
padding: 5 padding: 5
$hover !checked: $hover !checked:
image-clip: 0 21 20 21 image-clip: 0 20 20 20
color: #dfdfdf color: white
$disabled: $disabled:
image-color: #dfdfdf88 image-color: #ffffff66
icon-color: #dfdfdf icon-color: #888888
$checked: $checked:
image-clip: 0 42 20 21 image-clip: 0 40 20 20
color: #dfdfdf color: #D8E7F0
$on !checked: $on !checked:
color: #dfdfdf color: #F55E5E
TabBar < UITabBar TabBar < UITabBar
size: 80 21 size: 80 20
Panel Panel
id: buttonsPanel id: buttonsPanel
anchors.fill: parent anchors.fill: parent
TabBarPanel < Panel TabBarPanel < Panel
TabBarButton < UIButton TabBarButton < UIButton
size: 22 23 size: 20 20
image-source: /images/ui/tabbutton_square image-source: /images/ui/tabbutton_square
image-color: #dfdfdf image-color: white
image-clip: 0 0 22 23 image-clip: 0 0 20 20
image-border: 3 image-border: 3
image-border-bottom: 0 icon-color: white
icon-color: #dfdfdf color: #aaaaaa
color: #dfdfdf
anchors.top: parent.top anchors.top: parent.top
padding: 5 padding: 5
@@ -55,19 +53,19 @@ TabBarButton < UIButton
margin-left: 5 margin-left: 5
$hover !checked: $hover !checked:
image-clip: 0 23 22 23 image-clip: 0 20 20 20
color: #dfdfdf color: white
$disabled: $disabled:
image-color: #dfdfdf88 image-color: #ffffff66
icon-color: #dfdfdf icon-color: #888888
$checked: $checked:
image-clip: 0 46 22 23 image-clip: 0 40 20 20
color: #dfdfdf color: #80c7f8
$on !checked: $on !checked:
color: #dfdfdf color: #F55E5E
TabBarRounded < TabBar TabBarRounded < TabBar
TabBarRoundedPanel < TabBarPanel TabBarRoundedPanel < TabBarPanel
@@ -109,7 +107,7 @@ TabBarVerticalButton < UIButton
margin-top: 10 margin-top: 10
$hover !checked: $hover !checked:
color: white color: white
icon-color: #dfdfdf icon-color: #cccccc
$disabled: $disabled:
icon-color: #333333 icon-color: #333333
$checked: $checked:

View File

@@ -27,8 +27,8 @@ g_resources.setupUserWriteDir(g_app.getCompactName())
-- search all packages -- search all packages
g_resources.searchAndAddPackages('/', '.otpkg', true) g_resources.searchAndAddPackages('/', '.otpkg', true)
-- load settings -- load configurations
g_configs.loadSettings("/config.otml") g_configs.load("/config.otml")
g_modules.discoverModules() g_modules.discoverModules()

View File

@@ -1,10 +0,0 @@
{
"folders":
[
{
"path": "..",
"folder_exclude_patterns": [".*", "*.*~"],
"file_exclude_patterns": [".*", "*.*~"]
}
]
}

View File

@@ -1,5 +1,5 @@
local musicFilename = "/sounds/startup" local musicFilename = "/sounds/startup"
local musicChannel = g_sounds.getChannel(1) local musicChannel = nil
function setMusic(filename) function setMusic(filename)
musicFilename = filename musicFilename = filename
@@ -14,7 +14,7 @@ function reloadScripts()
g_textures.clearCache() g_textures.clearCache()
g_modules.reloadModules() g_modules.reloadModules()
local script = '/' .. g_app.getCompactName() .. 'rc.lua' local script = '/' .. g_app.getCompactName() .. 'rc'
if g_resources.fileExists(script) then if g_resources.fileExists(script) then
dofile(script) dofile(script)
end end
@@ -53,15 +53,18 @@ function startup()
end end
function init() function init()
connect(g_app, { onRun = startup, connect(g_app, { onRun = startup,
onExit = exit }) onExit = exit })
g_window.setMinimumSize({ width = 600, height = 480 }) g_window.setMinimumSize({ width = 600, height = 480 })
musicChannel = g_sounds.getChannel(1)
g_sounds.preload(musicFilename) g_sounds.preload(musicFilename)
-- initialize in fullscreen mode on mobile devices -- initialize in fullscreen mode on mobile devices
if g_window.getPlatformType() == "X11-EGL" then if g_app.getOs() == "android" then
g_window.setFullscreen(true) g_window.maximize()
--g_window.setFullscreen(true)
else else
-- window size -- window size
local size = { width = 800, height = 600 } local size = { width = 800, height = 600 }
@@ -91,19 +94,24 @@ function init()
g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts) g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts)
-- generate machine uuid, this is a security measure for storing passwords -- generate machine uuid, this is a security measure for storing passwords
if not g_crypt.setMachineUUID(g_settings.get('uuid')) then if not g_crypt.setMachineUUID(g_configs.get('uuid')) then
g_settings.set('uuid', g_crypt.getMachineUUID()) g_configs.set('uuid', g_crypt.getMachineUUID())
g_settings.save() g_configs.save()
end end
end end
function terminate() function terminate()
disconnect(g_app, { onRun = startup, disconnect(g_app, { onRun = startup,
onExit = exit }) onExit = exit })
-- save window configs -- save window configs
g_settings.set('window-size', g_window.getUnmaximizedSize()) g_settings.set('window-size', g_window.getUnmaximizedSize())
g_settings.set('window-pos', g_window.getUnmaximizedPos()) g_settings.set('window-pos', g_window.getUnmaximizedPos())
g_settings.set('window-maximized', g_window.isMaximized()) g_settings.set('window-maximized', g_window.isMaximized())
local protocolVersion = g_game.getProtocolVersion()
if protocolVersion ~= 0 then
g_settings.set('protocol-version', protocolVersion)
end
end end
function exit() function exit()

View File

@@ -19,4 +19,4 @@ Module
- client_terminal - client_terminal
- client_modulemanager - client_modulemanager
- client_serverlist - client_serverlist
- client_stats //- client_stats

View File

@@ -243,7 +243,7 @@ function CharacterList.create(characters, account, otui)
else else
accountStatusLabel:setText(tr('Free Account')) accountStatusLabel:setText(tr('Free Account'))
end end
if account.premDays > 0 and account.premDays <= 7 then if account.premDays > 0 and account.premDays <= 7 then
accountStatusLabel:setOn(true) accountStatusLabel:setOn(true)
else else

View File

@@ -81,7 +81,7 @@ MainWindow
anchors.right: parent.right anchors.right: parent.right
anchors.bottom: next.top anchors.bottom: next.top
margin-bottom: 1 margin-bottom: 1
Label Label
id: accountStatusLabel id: accountStatusLabel
!text: tr('Free Account') !text: tr('Free Account')

View File

@@ -6,7 +6,7 @@ local enterGame
local motdWindow local motdWindow
local motdButton local motdButton
local enterGameButton local enterGameButton
local clientBox local protocolBox
local protocolLogin local protocolLogin
local motdEnabled = true local motdEnabled = true
@@ -35,7 +35,7 @@ end
local function onCharacterList(protocol, characters, account, otui) local function onCharacterList(protocol, characters, account, otui)
-- Try add server to the server list -- Try add server to the server list
ServerList.add(G.host, G.port, g_game.getClientVersion()) ServerList.add(G.host, G.port, g_game.getProtocolVersion())
if enterGame:getChildById('rememberPasswordBox'):isChecked() then if enterGame:getChildById('rememberPasswordBox'):isChecked() then
local account = g_crypt.encrypt(G.account) local account = g_crypt.encrypt(G.account)
@@ -73,6 +73,11 @@ local function onCharacterList(protocol, characters, account, otui)
end end
end end
local function onChangeProtocol(combobox, option)
local clients = g_game.getSupportedClients(option)
protocolBox:setTooltip("Supports Client" .. (#clients > 1 and "s" or "") .. ": " .. table.tostring(clients))
end
local function onUpdateNeeded(protocol, signature) local function onUpdateNeeded(protocol, signature)
loadBox:destroy() loadBox:destroy()
loadBox = nil loadBox = nil
@@ -82,7 +87,7 @@ local function onUpdateNeeded(protocol, signature)
local cancelFunc = EnterGame.show local cancelFunc = EnterGame.show
EnterGame.updateFunc(signature, continueFunc, cancelFunc) EnterGame.updateFunc(signature, continueFunc, cancelFunc)
else else
local errorBox = displayErrorBox(tr('Update needed'), tr('Your client needs updating, try redownloading it.')) local errorBox = displayErrorBox(tr('Update needed'), tr('Your client needs update, try redownloading it.'))
connect(errorBox, { onOk = EnterGame.show }) connect(errorBox, { onOk = EnterGame.show })
end end
end end
@@ -104,8 +109,7 @@ function EnterGame.init()
local host = g_settings.get('host') local host = g_settings.get('host')
local port = g_settings.get('port') local port = g_settings.get('port')
local autologin = g_settings.getBoolean('autologin') local autologin = g_settings.getBoolean('autologin')
local clientVersion = g_settings.getInteger('client-version') local protocolVersion = g_settings.getInteger('protocol-version')
if clientVersion == 0 then clientVersion = 860 end
if port == nil or port == 0 then port = 7171 end if port == nil or port == 0 then port = 7171 end
@@ -116,11 +120,11 @@ function EnterGame.init()
enterGame:getChildById('serverPortTextEdit'):setText(port) enterGame:getChildById('serverPortTextEdit'):setText(port)
enterGame:getChildById('autoLoginBox'):setChecked(autologin) enterGame:getChildById('autoLoginBox'):setChecked(autologin)
clientBox = enterGame:getChildById('clientComboBox') protocolBox = enterGame:getChildById('protocolComboBox')
for _, proto in pairs(g_game.getSupportedClients()) do protocolBox.onOptionChange = onChangeProtocol
clientBox:addOption(proto) if protocolVersion then
protocolBox:setCurrentOption(protocolVersion)
end end
clientBox:setCurrentOption(clientVersion)
enterGame:hide() enterGame:hide()
@@ -150,7 +154,7 @@ function EnterGame.terminate()
enterGame = nil enterGame = nil
enterGameButton:destroy() enterGameButton:destroy()
enterGameButton = nil enterGameButton = nil
clientBox = nil protocolBox = nil
if motdWindow then if motdWindow then
motdWindow:destroy() motdWindow:destroy()
motdWindow = nil motdWindow = nil
@@ -214,7 +218,8 @@ function EnterGame.doLogin()
G.password = enterGame:getChildById('accountPasswordTextEdit'):getText() G.password = enterGame:getChildById('accountPasswordTextEdit'):getText()
G.host = enterGame:getChildById('serverHostTextEdit'):getText() G.host = enterGame:getChildById('serverHostTextEdit'):getText()
G.port = tonumber(enterGame:getChildById('serverPortTextEdit'):getText()) G.port = tonumber(enterGame:getChildById('serverPortTextEdit'):getText())
local clientVersion = tonumber(clientBox:getText()) local protocolVersion = tonumber(protocolBox:getText())
local clientVersions = g_game.getSupportedClients(protocolVersion)
EnterGame.hide() EnterGame.hide()
if g_game.isOnline() then if g_game.isOnline() then
@@ -225,7 +230,6 @@ function EnterGame.doLogin()
g_settings.set('host', G.host) g_settings.set('host', G.host)
g_settings.set('port', G.port) g_settings.set('port', G.port)
g_settings.set('client-version', clientVersion)
protocolLogin = ProtocolLogin.create() protocolLogin = ProtocolLogin.create()
protocolLogin.onLoginError = onError protocolLogin.onLoginError = onError
@@ -241,8 +245,10 @@ function EnterGame.doLogin()
end }) end })
g_game.chooseRsa(G.host) g_game.chooseRsa(G.host)
g_game.setClientVersion(clientVersion) g_game.setProtocolVersion(protocolVersion)
g_game.setProtocolVersion(g_game.getClientProtocolVersion(clientVersion)) if #clientVersions > 0 then
g_game.setClientVersion(clientVersions[#clientVersions])
end
if modules.game_things.isLoaded() then if modules.game_things.isLoaded() then
protocolLogin:login(G.host, G.port, G.account, G.password) protocolLogin:login(G.host, G.port, G.account, G.password)
@@ -263,14 +269,14 @@ end
function EnterGame.setDefaultServer(host, port, protocol) function EnterGame.setDefaultServer(host, port, protocol)
local hostTextEdit = enterGame:getChildById('serverHostTextEdit') local hostTextEdit = enterGame:getChildById('serverHostTextEdit')
local portTextEdit = enterGame:getChildById('serverPortTextEdit') local portTextEdit = enterGame:getChildById('serverPortTextEdit')
local clientLabel = enterGame:getChildById('clientLabel') local protocolLabel = enterGame:getChildById('protocolLabel')
local accountTextEdit = enterGame:getChildById('accountNameTextEdit') local accountTextEdit = enterGame:getChildById('accountNameTextEdit')
local passwordTextEdit = enterGame:getChildById('accountPasswordTextEdit') local passwordTextEdit = enterGame:getChildById('accountPasswordTextEdit')
if hostTextEdit:getText() ~= host then if hostTextEdit:getText() ~= host then
hostTextEdit:setText(host) hostTextEdit:setText(host)
portTextEdit:setText(port) portTextEdit:setText(port)
clientBox:setCurrentOption(protocol) protocolBox:setCurrentOption(protocol)
accountTextEdit:setText('') accountTextEdit:setText('')
passwordTextEdit:setText('') passwordTextEdit:setText('')
end end
@@ -286,9 +292,9 @@ function EnterGame.setUniqueServer(host, port, protocol, windowWidth, windowHeig
portTextEdit:setVisible(false) portTextEdit:setVisible(false)
portTextEdit:setHeight(0) portTextEdit:setHeight(0)
clientBox:setCurrentOption(protocol) protocolBox:setCurrentOption(protocol)
clientBox:setVisible(false) protocolBox:setVisible(false)
clientBox:setHeight(0) protocolBox:setHeight(0)
local serverLabel = enterGame:getChildById('serverLabel') local serverLabel = enterGame:getChildById('serverLabel')
serverLabel:setVisible(false) serverLabel:setVisible(false)
@@ -296,9 +302,9 @@ function EnterGame.setUniqueServer(host, port, protocol, windowWidth, windowHeig
local portLabel = enterGame:getChildById('portLabel') local portLabel = enterGame:getChildById('portLabel')
portLabel:setVisible(false) portLabel:setVisible(false)
portLabel:setHeight(0) portLabel:setHeight(0)
local clientLabel = enterGame:getChildById('clientLabel') local protocolLabel = enterGame:getChildById('protocolLabel')
clientLabel:setVisible(false) protocolLabel:setVisible(false)
clientLabel:setHeight(0) protocolLabel:setHeight(0)
local serverListButton = enterGame:getChildById('serverListButton') local serverListButton = enterGame:getChildById('serverListButton')
serverListButton:setVisible(false) serverListButton:setVisible(false)

View File

@@ -68,7 +68,7 @@ EnterGameWindow
TextEdit TextEdit
id: serverHostTextEdit id: serverHostTextEdit
!tooltip: tr('Make sure that your client uses\nthe correct game client version') !tooltip: tr('Make sure that your client uses\nthe correct game protocol version')
anchors.left: parent.left anchors.left: parent.left
anchors.right: serverListButton.left anchors.right: serverListButton.left
anchors.top: serverLabel.bottom anchors.top: serverLabel.bottom
@@ -76,8 +76,8 @@ EnterGameWindow
margin-right: 4 margin-right: 4
MenuLabel MenuLabel
id: clientLabel id: protocolLabel
!text: tr('Client Version') !text: tr('Protocol')
anchors.left: parent.left anchors.left: parent.left
anchors.top: serverHostTextEdit.bottom anchors.top: serverHostTextEdit.bottom
text-auto-resize: true text-auto-resize: true
@@ -85,16 +85,17 @@ EnterGameWindow
margin-top: 8 margin-top: 8
ComboBox ComboBox
id: clientComboBox id: protocolComboBox
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.horizontalCenter anchors.right: parent.horizontalCenter
anchors.top: clientLabel.bottom anchors.top: protocolLabel.bottom
margin-top: 2 margin-top: 2
margin-right: 3 margin-right: 3
width: 90 width: 90
menu-scroll: true @onSetup: |
menu-height: 125 for _, proto in pairs(g_game.getSupportedProtocols()) do
menu-scroll-step: 25 self:addOption(proto)
end
MenuLabel MenuLabel
id: portLabel id: portLabel
@@ -109,7 +110,7 @@ EnterGameWindow
text: 7171 text: 7171
anchors.right: parent.right anchors.right: parent.right
anchors.left: parent.horizontalCenter anchors.left: parent.horizontalCenter
anchors.top: clientComboBox.top anchors.top: protocolComboBox.top
margin-left: 3 margin-left: 3
CheckBox CheckBox

View File

@@ -14,8 +14,7 @@ function init()
g_keyboard.bindKeyPress('Up', function() moduleList:focusPreviousChild(KeyboardFocusReason) end, moduleManagerWindow) g_keyboard.bindKeyPress('Up', function() moduleList:focusPreviousChild(KeyboardFocusReason) end, moduleManagerWindow)
g_keyboard.bindKeyPress('Down', function() moduleList:focusNextChild(KeyboardFocusReason) end, moduleManagerWindow) g_keyboard.bindKeyPress('Down', function() moduleList:focusNextChild(KeyboardFocusReason) end, moduleManagerWindow)
moduleManagerButton = modules.client_topmenu.addLeftButton('moduleManagerButton', moduleManagerButton = modules.client_topmenu.addLeftButton('moduleManagerButton', tr('Module Manager'), '/images/topbuttons/modulemanager', toggle)
tr('Module Manager'), '/images/topbuttons/modulemanager', toggle)
-- refresh modules only after all modules are loaded -- refresh modules only after all modules are loaded
addEvent(listModules) addEvent(listModules)
@@ -138,7 +137,7 @@ function unloadCurrentModule()
local module = g_modules.getModule(focusedChild:getText()) local module = g_modules.getModule(focusedChild:getText())
if module then if module then
module:unload() module:unload()
if modules.client_modulemanager == nil then return end if ModuleManager == nil then return end
updateModuleInfo(module:getName()) updateModuleInfo(module:getName())
refreshLoadedModules() refreshLoadedModules()
end end

View File

@@ -40,17 +40,13 @@ Panel
!text: tr('Fullscreen') !text: tr('Fullscreen')
tooltip: Ctrl+Shift+F tooltip: Ctrl+Shift+F
OptionCheckBox
id: dontStretchShrink
!text: tr('Don\'t stretch/shrink Game Window')
Label Label
id: backgroundFrameRateLabel id: backgroundFrameRateLabel
!text: tr('Game framerate limit: %s', 'max') !text: tr('Game framerate limit: %s', 'max')
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
anchors.top: prev.bottom anchors.top: prev.bottom
margin-top: 12 margin-top: 6
@onSetup: | @onSetup: |
local value = modules.client_options.getOption('backgroundFrameRate') local value = modules.client_options.getOption('backgroundFrameRate')
local text = value local text = value

View File

@@ -25,8 +25,7 @@ local defaultOptions = {
ambientLight = 25, ambientLight = 25,
displayNames = true, displayNames = true,
displayHealth = true, displayHealth = true,
displayText = true, displayText = true
dontStretchShrink = false
} }
local optionsWindow local optionsWindow
@@ -224,10 +223,6 @@ function setOption(key, value, force)
gameMapPanel:setDrawHealthBars(value) gameMapPanel:setDrawHealthBars(value)
elseif key == 'displayText' then elseif key == 'displayText' then
gameMapPanel:setDrawTexts(value) gameMapPanel:setDrawTexts(value)
elseif key == 'dontStretchShrink' then
addEvent(function()
modules.game_interface.updateStretchShrink()
end)
end end
-- change value for keybind updates -- change value for keybind updates

View File

@@ -1,7 +1,7 @@
MainWindow MainWindow
id: addServerWindow id: addServerWindow
!text: tr('New Server') !text: tr('New Server')
size: 180 195 size: 180 180
visible: false visible: false
@onEscape: AddServer.hide() @onEscape: AddServer.hide()
@onEnter: AddServer.add() @onEnter: AddServer.add()
@@ -48,11 +48,8 @@ MainWindow
anchors.top: protocolLabel.bottom anchors.top: protocolLabel.bottom
anchors.left: protocolLabel.left anchors.left: protocolLabel.left
anchors.right: port.right anchors.right: port.right
menu-scroll: true
menu-height: 125
menu-scroll-step: 25
@onSetup: | @onSetup: |
for _, proto in pairs(g_game.getSupportedClients()) do for _, proto in pairs(g_game.getSupportedProtocols()) do
self:addOption(proto) self:addOption(proto)
end end

View File

@@ -50,7 +50,7 @@ function ServerList.add(host, port, protocol, load)
end end
local widget = g_ui.createWidget('ServerWidget', serverTextList) local widget = g_ui.createWidget('ServerWidget', serverTextList)
widget:setId(host) widget:setId(host)
if not load then if not load then
servers[host] = { servers[host] = {
port = port, port = port,

View File

@@ -79,10 +79,6 @@ function onConnect(protocol)
post = post .. '&window_height=' .. g_window.getHeight() post = post .. '&window_height=' .. g_window.getHeight()
post = post .. '&player_name=' .. g_game.getCharacterName() post = post .. '&player_name=' .. g_game.getCharacterName()
post = post .. '&world_name=' .. g_game.getWorldName() post = post .. '&world_name=' .. g_game.getWorldName()
post = post .. '&otserv_host=' .. G.host
post = post .. '&otserv_port=' .. G.port
post = post .. '&otserv_protocol=' .. g_game.getProtocolVersion()
post = post .. '&otserv_client=' .. g_game.getClientVersion()
post = post .. '&build_version=' .. g_app.getVersion() post = post .. '&build_version=' .. g_app.getVersion()
post = post .. '&build_revision=' .. g_app.getBuildRevision() post = post .. '&build_revision=' .. g_app.getBuildRevision()
post = post .. '&build_commit=' .. g_app.getBuildCommit() post = post .. '&build_commit=' .. g_app.getBuildCommit()

View File

@@ -131,11 +131,11 @@ function init()
commandTextEdit = terminalWindow:getChildById('commandTextEdit') commandTextEdit = terminalWindow:getChildById('commandTextEdit')
g_keyboard.bindKeyPress('Up', function() navigateCommand(1) end, commandTextEdit) g_keyboard.bindKeyPress('Up', function() navigateCommand(1) end, commandTextEdit)
g_keyboard.bindKeyPress('Down', function() navigateCommand(-1) end, commandTextEdit) g_keyboard.bindKeyPress('Down', function() navigateCommand(-1) end, commandTextEdit)
g_keyboard.bindKeyPress('Ctrl+C', g_keyboard.bindKeyPress('Ctrl+C',
function() function()
if commandTextEdit:hasSelection() or not terminalSelectText:hasSelection() then return false end if commandTextEdit:hasSelection() or not terminalSelectText:hasSelection() then return false end
g_window.setClipboardText(terminalSelectText:getSelection()) g_window.setClipboardText(terminalSelectText:getSelection())
return true return true
end, commandTextEdit) end, commandTextEdit)
g_keyboard.bindKeyDown('Tab', completeCommand, commandTextEdit) g_keyboard.bindKeyDown('Tab', completeCommand, commandTextEdit)
g_keyboard.bindKeyDown('Enter', doCommand, commandTextEdit) g_keyboard.bindKeyDown('Enter', doCommand, commandTextEdit)
@@ -202,9 +202,9 @@ function popWindow()
else else
terminalWindow:breakAnchors() terminalWindow:breakAnchors()
terminalWindow:setOn(true) terminalWindow:setOn(true)
local size = oldSize or { width = g_window.getWidth()/2.5, height = g_window.getHeight()/4 } local size = oldSize or { width = g_window.getWidth()/2, height = g_window.getHeight()/2 }
terminalWindow:setSize(size) terminalWindow:setSize(size)
local pos = oldPos or { x = 0, y = g_window.getHeight() } local pos = oldPos or { x = (g_window.getWidth() - terminalWindow:getWidth())/2, y = (g_window.getHeight() - terminalWindow:getHeight())/2 }
terminalWindow:setPosition(pos) terminalWindow:setPosition(pos)
terminalWindow:getChildById('bottomResizeBorder'):enable() terminalWindow:getChildById('bottomResizeBorder'):enable()
terminalWindow:getChildById('rightResizeBorder'):enable() terminalWindow:getChildById('rightResizeBorder'):enable()
@@ -221,10 +221,10 @@ function toggle()
if terminalWindow:isVisible() then if terminalWindow:isVisible() then
hide() hide()
else else
if not firstShown then if not firstShow then
local settings = g_settings.getNode('terminal-window') local settings = g_settings.getNode('terminal-window')
if settings then if settings then
if settings.size then oldSize = settings.size end if settings.size then oldSize = size end
if settings.pos then oldPos = settings.pos end if settings.pos then oldPos = settings.pos end
if settings.poped then popWindow() end if settings.poped then popWindow() end
end end
@@ -257,13 +257,10 @@ function flushLines()
for _,line in pairs(cachedLines) do for _,line in pairs(cachedLines) do
-- delete old lines if needed -- delete old lines if needed
if numLines > MaxLogLines then if numLines > MaxLogLines then
local firstChild = terminalBuffer:getChildByIndex(1) local len = #terminalBuffer:getChildByIndex(1):getText()
if firstChild then terminalBuffer:getChildByIndex(1):destroy()
local len = #firstChild:getText() table.remove(allLines, 1)
firstChild:destroy() fulltext = string.sub(fulltext, len)
table.remove(allLines, 1)
fulltext = string.sub(fulltext, len)
end
end end
local label = g_ui.createWidget('TerminalLabel', terminalBuffer) local label = g_ui.createWidget('TerminalLabel', terminalBuffer)
@@ -288,7 +285,6 @@ function addLine(text, color)
flushEvent = scheduleEvent(flushLines, 10) flushEvent = scheduleEvent(flushLines, 10)
end end
text = string.gsub(text, '\t', ' ')
table.insert(cachedLines, {text=text, color=color}) table.insert(cachedLines, {text=text, color=color})
end end

View File

@@ -27,7 +27,7 @@ local function addButton(id, description, icon, callback, panel, toggle, front)
button:setTooltip(description) button:setTooltip(description)
button:setIcon(resolvepath(icon, 3)) button:setIcon(resolvepath(icon, 3))
button.onMouseRelease = function(widget, mousePos, mouseButton) button.onMouseRelease = function(widget, mousePos, mouseButton)
if widget:containsPoint(mousePos) and mouseButton ~= MouseMidButton then if widget:containsPoint(mousePos) and mouseButton ~= MouseMiddleButton then
callback() callback()
return true return true
end end

View File

@@ -1,73 +0,0 @@
-- @docclass
local function convertSettingValue(value)
if type(value) == 'table' then
if value.x and value.width then
return recttostring(value)
elseif value.x then
return pointtostring(value)
elseif value.width then
return sizetostring(value)
elseif value.r then
return colortostring(value)
else
return value
end
elseif value == nil then
return ''
else
return tostring(value)
end
end
function Config:set(key, value)
self:setValue(key, convertSettingValue(value))
end
function Config:setDefault(key, value)
if self:exists(key) then return false end
self:set(key, value)
return true
end
function Config:get(key, default)
if not self:exists(key) and default ~= nil then
self:set(key, default)
end
return self:getValue(key)
end
function Config:getString(key, default)
return self:get(key, default)
end
function Config:getInteger(key, default)
local v = tonumber(self:get(key, default)) or 0
return v
end
function Config:getNumber(key, default)
local v = tonumber(self:get(key, default)) or 0
return v
end
function Config:getBoolean(key, default)
return toboolean(self:get(key, default))
end
function Config:getPoint(key, default)
return topoint(self:get(key, default))
end
function Config:getRect(key, default)
return torect(self:get(key, default))
end
function Config:getSize(key, default)
return tosize(self:get(key, default))
end
function Config:getColor(key, default)
return tocolor(self:get(key, default))
end

View File

@@ -14,14 +14,12 @@ Module
dofile 'const' dofile 'const'
dofile 'util' dofile 'util'
dofile 'globals' dofile 'globals'
dofile 'config'
dofile 'settings' dofile 'settings'
dofile 'keyboard' dofile 'keyboard'
dofile 'mouse' dofile 'mouse'
dofile 'net' dofile 'net'
dofiles 'classes'
dofiles 'ui' dofiles 'ui'
dofile 'inputmessage' dofile 'inputmessage'
dofile 'outputmessage' dofile 'outputmessage'

View File

@@ -157,14 +157,14 @@ function g_keyboard.unbindKeyDown(keyComboDesc, arg1, arg2)
disconnect(widget.boundKeyDownCombos, keyComboDesc, callback) disconnect(widget.boundKeyDownCombos, keyComboDesc, callback)
end end
function g_keyboard.unbindKeyUp(keyComboDesc, arg1, arg2) function g_keyboard.unbindKeyUp(keyComboDesc, widget)
local callback, widget = getUnbindArgs(arg1, arg2) local callback, widget = getUnbindArgs(arg1, arg2)
if widget.boundKeyUpCombos == nil then return end if widget.boundKeyUpCombos == nil then return end
local keyComboDesc = retranslateKeyComboDesc(keyComboDesc) local keyComboDesc = retranslateKeyComboDesc(keyComboDesc)
disconnect(widget.boundKeyUpCombos, keyComboDesc, callback) disconnect(widget.boundKeyUpCombos, keyComboDesc, callback)
end end
function g_keyboard.unbindKeyPress(keyComboDesc, arg1, arg2) function g_keyboard.unbindKeyPress(keyComboDesc, widget, callback)
local callback, widget = getUnbindArgs(arg1, arg2) local callback, widget = getUnbindArgs(arg1, arg2)
if widget.boundKeyPressCombos == nil then return end if widget.boundKeyPressCombos == nil then return end
local keyComboDesc = retranslateKeyComboDesc(keyComboDesc) local keyComboDesc = retranslateKeyComboDesc(keyComboDesc)

View File

@@ -1,3 +1,86 @@
g_settings = makesingleton(g_configs.getSettings()) -- @docclass
g_settings = {}
-- Reserved for future functionality g_settings.exists = g_configs.exists
g_settings.setNode = g_configs.setNode
g_settings.mergeNode = g_configs.mergeNode
g_settings.getNode = g_configs.getNode
g_settings.remove = g_configs.remove
g_settings.setList = g_configs.setList
g_settings.getList = g_configs.getList
g_settings.save = g_configs.save
local function convertSettingValue(value)
if type(value) == 'table' then
if value.x and value.width then
return recttostring(value)
elseif value.x then
return pointtostring(value)
elseif value.width then
return sizetostring(value)
elseif value.r then
return colortostring(value)
else
return value
end
elseif value == nil then
return ''
else
return tostring(value)
end
end
function g_settings.set(key, value)
g_configs.set(key, convertSettingValue(value))
end
function g_settings.setDefault(key, value)
if g_settings.exists(key) then return false end
g_settings.set(key, value)
return true
end
function g_settings.get(key, default)
if not g_settings.exists(key) and default ~= nil then
g_settings.set(key, default)
end
return g_configs.get(key)
end
function g_settings.getString(key, default)
return g_settings.get(key, default)
end
function g_settings.getInteger(key, default)
local v = tonumber(g_settings.get(key, default)) or 0
return v
end
function g_settings.getNumber(key, default)
local v = tonumber(g_settings.get(key, default)) or 0
return v
end
function g_settings.getBoolean(key, default)
return toboolean(g_settings.get(key, default))
end
function g_settings.getPoint(key, default)
return topoint(g_settings.get(key, default))
end
function g_settings.getRect(key, default)
return torect(g_settings.get(key, default))
end
function g_settings.getSize(key, default)
return tosize(g_settings.get(key, default))
end
function g_settings.getColor(key, default)
return tocolor(g_settings.get(key, default))
end
function g_settings.getColor(key, default)
return tocolor(g_settings.get(key, default))
end

View File

@@ -20,8 +20,8 @@ function string:starts(start)
return string.sub(self, 1, #start) == start return string.sub(self, 1, #start) == start
end end
function string:ends(test) function string.ends(s, test)
return test =='' or string.sub(self,-string.len(test)) == test return test =='' or string.sub(s,-string.len(test)) == test
end end
function string:trim() function string:trim()
@@ -49,11 +49,3 @@ function string:explode(sep, limit)
table.insert(t, tmp) table.insert(t, tmp)
return t return t
end end
function string:contains(str, checkCase, start, plain)
if(not checkCase) then
self = self:lower()
str = str:lower()
end
return string.find(self, str, start and start or 1, plain == nil and true or false)
end

View File

@@ -55,7 +55,7 @@ end
function table.find(t, value, lowercase) function table.find(t, value, lowercase)
for k,v in pairs(t) do for k,v in pairs(t) do
if lowercase and type(value) == 'string' and type(v) == 'string' then if lowercase and type(value) == 'string' and type(v) == 'string' then
if v:lower() == value:lower() then return k end if v:lower() == value:lower() then return k end
end end
if v == value then return k end if v == value then return k end
@@ -64,7 +64,7 @@ end
function table.findbykey(t, key, lowercase) function table.findbykey(t, key, lowercase)
for k,v in pairs(t) do for k,v in pairs(t) do
if lowercase and type(key) == 'string' and type(k) == 'string' then if lowercase and type(key) == 'string' and type(k) == 'string' then
if k:lower() == key:lower() then return v end if k:lower() == key:lower() then return v end
end end
if k == key then return v end if k == key then return v end
@@ -149,7 +149,7 @@ function table.size(t)
for i, n in pairs(t) do for i, n in pairs(t) do
size = size + 1 size = size + 1
end end
return size return size
end end
@@ -157,7 +157,6 @@ function table.tostring(t)
local maxn = #t local maxn = #t
local str = "" local str = ""
for k,v in pairs(t) do for k,v in pairs(t) do
v = tostring(v)
if k == maxn and k ~= 1 then if k == maxn and k ~= 1 then
str = str .. " and " .. v str = str .. " and " .. v
elseif maxn > 1 and k ~= 1 then elseif maxn > 1 and k ~= 1 then
@@ -182,11 +181,3 @@ function table.collect(t, func)
return res return res
end end
function table.equals(t, comp)
if type(t) == "table" and type(comp) == "table" then
for k,v in pairs(t) do
if v ~= comp[k] then return false end
end
end
return true
end

View File

@@ -1,5 +1,5 @@
-- @docclass -- @docclass
UIButton = extends(UIWidget, "UIButton") UIButton = extends(UIWidget)
function UIButton.create() function UIButton.create()
local button = UIButton.internalCreate() local button = UIButton.internalCreate()

View File

@@ -1,5 +1,5 @@
-- @docclass -- @docclass
UICheckBox = extends(UIWidget, "UICheckBox") UICheckBox = extends(UIWidget)
function UICheckBox.create() function UICheckBox.create()
local checkbox = UICheckBox.internalCreate() local checkbox = UICheckBox.internalCreate()

View File

@@ -1,5 +1,5 @@
-- @docclass -- @docclass
UIComboBox = extends(UIWidget, "UIComboBox") UIComboBox = extends(UIWidget)
function UIComboBox.create() function UIComboBox.create()
local combobox = UIComboBox.internalCreate() local combobox = UIComboBox.internalCreate()
@@ -7,9 +7,6 @@ function UIComboBox.create()
combobox.options = {} combobox.options = {}
combobox.currentIndex = -1 combobox.currentIndex = -1
combobox.mouseScroll = true combobox.mouseScroll = true
combobox.menuScroll = false
combobox.menuHeight = 100
combobox.menuScrollStep = 0
return combobox return combobox
end end
@@ -28,33 +25,25 @@ function UIComboBox:getOption(text)
end end
end end
function UIComboBox:setOption(text, dontSignal) function UIComboBox:setCurrentOption(text)
self:setCurrentOption(text, dontSignal)
end
function UIComboBox:setCurrentOption(text, dontSignal)
if not self.options then return end if not self.options then return end
for i,v in ipairs(self.options) do for i,v in ipairs(self.options) do
if v.text == text and self.currentIndex ~= i then if v.text == text and self.currentIndex ~= i then
self.currentIndex = i self.currentIndex = i
self:setText(text) self:setText(text)
if not dontSignal then signalcall(self.onOptionChange, self, text, v.data)
signalcall(self.onOptionChange, self, text, v.data)
end
return return
end end
end end
end end
function UIComboBox:setCurrentOptionByData(data, dontSignal) function UIComboBox:setCurrentOptionByData(data)
if not self.options then return end if not self.options then return end
for i,v in ipairs(self.options) do for i,v in ipairs(self.options) do
if v.data == data and self.currentIndex ~= i then if v.data == data and self.currentIndex ~= i then
self.currentIndex = i self.currentIndex = i
self:setText(v.text) self:setText(v.text)
if not dontSignal then signalcall(self.onOptionChange, self, v.text, v.data)
signalcall(self.onOptionChange, self, v.text, v.data)
end
return return
end end
end end
@@ -97,16 +86,7 @@ function UIComboBox:removeOption(text)
end end
function UIComboBox:onMousePress(mousePos, mouseButton) function UIComboBox:onMousePress(mousePos, mouseButton)
local menu local menu = g_ui.createWidget(self:getStyleName() .. 'PopupMenu')
if self.menuScroll then
menu = g_ui.createWidget(self:getStyleName() .. 'PopupScrollMenu')
menu:setHeight(self.menuHeight)
if self.menuScrollStep > 0 then
menu:setScrollbarStep(self.menuScrollStep)
end
else
menu = g_ui.createWidget(self:getStyleName() .. 'PopupMenu')
end
menu:setId(self:getId() .. 'PopupMenu') menu:setId(self:getId() .. 'PopupMenu')
for i,v in ipairs(self.options) do for i,v in ipairs(self.options) do
menu:addOption(v.text, function() self:setCurrentOption(v.text) end) menu:addOption(v.text, function() self:setCurrentOption(v.text) end)
@@ -149,12 +129,6 @@ function UIComboBox:onStyleApply(styleName, styleNode)
for name,value in pairs(styleNode) do for name,value in pairs(styleNode) do
if name == 'mouse-scroll' then if name == 'mouse-scroll' then
self.mouseScroll = value self.mouseScroll = value
elseif name == 'menu-scroll' then
self.menuScroll = value
elseif name == 'menu-height' then
self.menuHeight = value
elseif name == 'menu-scroll-step' then
self.menuScrollStep = value
end end
end end
end end

View File

@@ -1,5 +1,5 @@
-- @docclass -- @docclass
UIImageView = extends(UIWidget, "UIImageView") UIImageView = extends(UIWidget)
function UIImageView.create() function UIImageView.create()
local imageView = UIImageView.internalCreate() local imageView = UIImageView.internalCreate()

View File

@@ -1,7 +1,7 @@
if not UIWindow then dofile 'uiwindow' end if not UIWindow then dofile 'uiwindow' end
-- @docclass -- @docclass
UIInputBox = extends(UIWindow, "UIInputBox") UIInputBox = extends(UIWindow)
function UIInputBox.create(title, okCallback, cancelCallback) function UIInputBox.create(title, okCallback, cancelCallback)
local inputBox = UIInputBox.internalCreate() local inputBox = UIInputBox.internalCreate()

View File

@@ -1,5 +1,5 @@
-- @docclass -- @docclass
UILabel = extends(UIWidget, "UILabel") UILabel = extends(UIWidget)
function UILabel.create() function UILabel.create()
local label = UILabel.internalCreate() local label = UILabel.internalCreate()

View File

@@ -1,7 +1,7 @@
if not UIWindow then dofile 'uiwindow' end if not UIWindow then dofile 'uiwindow' end
-- @docclass -- @docclass
UIMessageBox = extends(UIWindow, "UIMessageBox") UIMessageBox = extends(UIWindow)
-- messagebox cannot be created from otui files -- messagebox cannot be created from otui files
UIMessageBox.create = nil UIMessageBox.create = nil

View File

@@ -1,11 +1,15 @@
-- @docclass -- @docclass
UIMiniWindow = extends(UIWindow, "UIMiniWindow") UIMiniWindow = extends(UIWindow)
function UIMiniWindow.create() function UIMiniWindow.create()
local miniwindow = UIMiniWindow.internalCreate() local miniwindow = UIMiniWindow.internalCreate()
return miniwindow return miniwindow
end end
function UIMiniWindow:getClassName()
return 'UIMiniWindow'
end
function UIMiniWindow:open(dontSave) function UIMiniWindow:open(dontSave)
self:setVisible(true) self:setVisible(true)
@@ -77,7 +81,7 @@ function UIMiniWindow:setup()
self:minimize() self:minimize()
end end
end end
self:getChildById('miniwindowTopBar').onDoubleClick = self:getChildById('miniwindowTopBar').onDoubleClick =
function() function()
if self:isOn() then if self:isOn() then

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