375 Commits

Author SHA1 Message Date
BenDol
dbed09cb55 Update to 0.6.6 2014-11-03 12:57:19 +13:00
BenDol
9f3ebb0036 Fix #577 dash will now fire onWalk (with isDash parameter).
Also added missing client versions.
2014-11-03 12:23:00 +13:00
BenDol
ddb5e58057 Fix #569 finally had some free time. 2014-11-03 08:51:01 +13:00
Sam
4e5707720b Merge pull request #574 from diath/patch-console
Support upper and lower case letters for hotkeys starting with #s, #y and #w
2014-10-05 20:50:29 +02:00
Sam
e9628187f2 Merge pull request #573 from diath/patch-textwindow
Hide item image box when editing house lists
2014-10-05 20:50:03 +02:00
Kamil Chojnowski
c8f9cdd6fa Support upper and lower case letters for hotkeys starting with #s, #y and #w 2014-10-05 19:27:02 +02:00
Kamil Chojnowski
7cfa9c38e0 Hide item image box when editing house lists 2014-10-05 19:24:34 +02:00
Ben Dol
7cc368305f Merge pull request #571 from dominique120/master
Fix compilation problem when compiling without FW_SOUND flag.
2014-09-30 09:12:24 +13:00
Dominique Verellen
682694cc07 Update graphicalapplication.cpp 2014-09-29 11:28:13 -05:00
Konrad Kuśnierz
12c4677912 indentations fix 2014-09-15 16:28:25 +02:00
Konrad Kuśnierz
0e0ae6c083 Merge pull request #566 from cymruu/master
Corrected polish locales a bit
2014-09-15 16:24:42 +02:00
Filip Bachul
49d62b8225 corrected polish locales a bit 2014-09-15 14:42:10 +02:00
Eduardo Bart
0909e186a1 Merge pull request #559 from osmarjunior/master
Fix bug when drawing mounts while walking
2014-08-22 09:48:31 -03:00
osmarjunior
3557879361 Fix bug when drawing mounts while walking 2014-08-22 08:36:55 -03:00
Ben Dol
fa317c534d Merge pull request #548 from Shawak/master
string:contains()
2014-08-10 16:55:51 +12:00
Sam
119abec1cf Fix locales/es.lua, fixes #553 2014-08-08 16:46:35 +02:00
Sam
92beee10d3 Revert "Update locales/es.lua, fixes #533"
This reverts commit c110f32993.
2014-08-08 16:45:08 +02:00
Sam
c110f32993 Update locales/es.lua, fixes #533 2014-08-08 16:41:36 +02:00
Ben Dol
a18970dceb Merge pull request #549 from edubart/1050_impl
1050 Implementation and Fixes (excluding new animation features)
Can now login to Cipservers no problem.
2014-08-07 08:27:03 +12:00
BenDol
d3d3294277 Added missing premium trigger opcode. 2014-08-07 07:17:16 +12:00
BenDol
ef7f94ac76 Some minor changes/additions. 2014-08-07 06:40:56 +12:00
Sam
9fcc4c7355 Fix typo in gameinterface.lua 2014-08-05 19:37:09 +02:00
BenDol
751cb0ca8b Fix for #545 2014-08-06 02:40:13 +12:00
BenDol
3343919c92 Added GameEnhancedAnimations to lua 2014-08-04 00:13:23 +12:00
BenDol
4eb7668922 Can now login to official tibia servers. 2014-08-03 23:46:07 +12:00
BenDol
c706dc12fe Update PIC_SIGNATURE can now access the character list. 2014-08-03 23:38:25 +12:00
BenDol
1f272b7aba Added preview state packet. 2014-08-03 23:22:06 +12:00
BenDol
09d830d02e Fix build error 2014-08-03 10:10:33 +12:00
BenDol
d7429c201c Started 1050 implementation and fix ups:
* Dat now loads (new animations aren't yet functional).
* Fixed the way we reference client versions.

TODO: Write new animation functionality & find out protocol changes.
2014-08-03 10:02:28 +12:00
Shawak
939e16c59a string:contains() 2014-07-31 20:25:31 +02:00
Sam
fe585d27d8 Cleanup dat loading, fix version 8.6+ 2014-07-30 17:06:40 +02:00
Sam
e9352fe811 Update README.md 2014-07-30 16:43:46 +02:00
BenDol
a52c938fef Added missing protocol versions & made some style fixes. 2014-07-30 19:58:34 +12:00
Sam
153cf3e859 Container fix 2014-07-29 21:11:56 +02:00
Sam
6b46370d1a 7.4 .dat support, playing an actual server might not work yet 2014-07-29 21:11:17 +02:00
BenDol
c2ff89b2cf Some style fixes & menu-scroll to add server. 2014-07-26 21:56:51 +12:00
Sam
2a57a5f7d0 Browse field, locked & paginated container support 2014-07-15 23:27:44 +02:00
Henrique Santiago
32d1ed5c6a Merge pull request #542 from mathiasbynens/patch-1
README: Use SVG badge for Travis
2014-07-14 18:03:34 -03:00
Mathias Bynens
6d8d319557 README: Use SVG badge for Travis 2014-07-14 21:34:03 +02:00
BenDol
9e0ddb08e3 More debug prints and avoid null pointer. 2014-07-14 01:56:17 +12:00
BenDol
74979ca16a Remove debug print and redundant checks. 2014-07-13 23:12:56 +12:00
BenDol
0c77179c46 Should check the menu category before creating a separator. 2014-07-13 22:57:45 +12:00
BenDol
935b9e4cd6 Forgot removeMenuHook function. 2014-07-13 22:39:56 +12:00
BenDol
0f362f80e3 Added easy menu hooking, fixed terminal default size/pos & more:
* Added autowalk style option to Minimap style.
* Added onCreate for setting up variables before styling is applied etc.
2014-07-13 22:27:09 +12:00
BenDol
0b5654f870 Style fixes and added dontSignal to UIRadioGroup. 2014-07-13 07:38:44 +12:00
Sam
4ec5048730 Remove test statement 2014-07-12 18:47:35 +02:00
Sam
6b8e810466 Merge branch 'master' of https://github.com/edubart/otclient 2014-07-12 18:44:15 +02:00
Sam
9b3e0a324c Color adjustments and fixes 2014-07-12 18:44:02 +02:00
BenDol
f7531383f3 Fix an issue with the spinbox buttons. 2014-07-13 03:57:38 +12:00
BenDol
7724b8059d Forgot this from previous commit. 2014-07-13 02:10:30 +12:00
BenDol
2ada93db9c Should use the set minimum for these! 2014-07-13 02:08:33 +12:00
BenDol
d070711409 When reaching max or min scroll allow other scroll areas to scroll. 2014-07-13 02:06:36 +12:00
BenDol
5909634837 Avoid ending mouse scroll chain when scroll bar is 'off'.
Also added mouse-scroll style to UISpinBox.
2014-07-13 01:46:47 +12:00
BenDol
07ac5c27ca Added some missing lua functions. 2014-07-12 01:03:21 +12:00
BenDol
9f7aafac0b Fix a crash issue when attempting to draw invalid item.
This can happen when using UIItem as interfaces etc.
2014-07-11 16:19:30 +12:00
BenDol
12b3bd4ee0 Fix table.equals 2014-07-09 17:00:10 +12:00
BenDol
9e30c39035 Pointless storing a reference to super. 2014-07-09 05:51:17 +12:00
BenDol
3dbcb1daee Added basic table.equals, dontSignal param to combobox calls & spell methods. 2014-07-09 04:07:02 +12:00
Sam
a9d4fd5e1e Scrollmenu for Comboboxes, fixes #480 2014-07-03 18:15:38 +02:00
Eduardo Bart
07f8e6fca9 New skin from https://github.com/Mignari/otc-gray-skin 2014-07-02 13:20:02 -03:00
Henrique Santiago
f0ed0bad13 Merge pull request #538 from djayk1/master
Fix premium expiration protocol version
2014-06-29 13:43:56 -03:00
djayk1
8fccc1eb63 Little fix 2014-06-29 11:25:01 -03:00
Sam
62d2a22ab8 Merge pull request #537 from djayk1/master
1041 Login Support
2014-06-23 18:22:55 +02:00
djayk1
10438c21ff Update game.cpp 2014-06-23 12:20:12 -03:00
djayk1
ec99d35cee Update game.cpp 2014-06-23 12:19:12 -03:00
djayk1
85fe5867f3 Update protocolgameparse.cpp 2014-06-23 12:07:38 -03:00
djayk1
1a77473e13 Update const.h 2014-06-23 12:05:35 -03:00
djayk1
cc483fba5a Update game.cpp 2014-06-23 12:04:30 -03:00
djayk1
94686d3fe8 Update protocolgameparse.cpp 2014-06-23 11:39:43 -03:00
djayk1
468ac9cbd2 Update game.cpp 2014-06-23 11:38:15 -03:00
djayk1
9f8293a5a0 Update game.lua 2014-06-23 11:35:52 -03:00
BenDol
ce9e443c60 Remove redundant classes & added some Position methods. 2014-06-10 01:44:03 +12:00
BenDol
99b1ddf44c Must change UIMap class checks to UIGameMap. 2014-06-07 05:05:57 +12:00
BenDol
c083d02bef Some fixes for class names and queue (added base class). 2014-06-07 04:10:14 +12:00
BenDol
00253e46b3 Added Queue class for event queuing (see CandyBot for examples of this). 2014-06-04 02:17:49 +12:00
BenDol
d2b7de3801 Will stick to basic isInRange check function. 2014-06-02 11:43:29 +12:00
BenDol
adcf258551 Forgot to add this. 2014-06-02 10:05:26 +12:00
BenDol
2df51622ba Some improvements to some things. 2014-06-02 10:04:56 +12:00
BenDol
a7d7667491 Added gamelib for Position functions. 2014-06-01 18:11:52 +12:00
BenDol
0ad45d6826 Added 2 global functions for Position & g_map.getTiles(). 2014-05-31 15:47:18 +12:00
Sam
f23e70ff08 Fix battlelist square bug / Cleanup 2014-05-29 03:17:48 +02:00
Sam
b96be291bb Fix use-with issue #508 2014-05-10 17:10:07 +02:00
Henrique Santiago
72b3403728 Fix filestream read 2014-05-09 18:56:15 -03:00
Henrique Santiago
b1964a1c10 Merge pull request #522 from Mignari/master
Fix calculate patterns, closes #520
2014-04-21 00:24:22 -03:00
Nail
25fb3113fa Fix calculate patterns. 2014-04-20 23:58:26 -03:00
BenDol
24acf8855f Now possible to create effects and missiles via lua. 2014-04-20 13:26:05 +12:00
BenDol
06855dd1de Added subType for Player:getItem/getItems. 2014-04-20 07:45:10 +12:00
BenDol
65d556ef4e Fixed issue with isAttacking and isFollowing on older protocols.
Some protocols don't send a cancel attack/follow packet to the client when a creature dies.
2014-04-20 04:36:52 +12:00
BenDol
54b8e362d5 Fix missing reference for VS project. 2014-04-10 19:14:08 +12:00
BenDol
45b41b88bd Merge branch 'master' of https://github.com/edubart/otclient 2014-04-06 15:29:23 +12:00
BenDol
1baad726ae Just use g_configs.unload(config) to unload config files.
Avoids concurrent modification errors.
2014-04-06 15:29:02 +12:00
Henrique Santiago
b19fb22146 Merge pull request #514 from Mignari/master
Fix alpha at color key.
2014-04-04 16:54:37 -03:00
Nail
8dec9cd835 Fix alpha at color key. 2014-04-04 16:28:56 -03:00
Henrique Santiago
50d3f83fce Merge pull request #513 from Mignari/master
Per-pixel transparency, fix image blit.
2014-04-04 14:30:09 -03:00
Nail
41b2f9b911 Per-pixel transparency. 2014-04-04 12:58:12 -03:00
BenDol
a02c091376 Fix stop crashing with UIWidget::moveChildToIndex. 2014-04-04 11:33:17 +13:00
BenDol
01e6169cfb Fix to setText method. 2014-04-04 04:49:44 +13:00
BenDol
1074b6b787 Provide the option to suppress lua call in setText 2014-04-03 05:20:35 +13:00
BenDol
d45fbcb10f Fixed terminal size bug 2014-04-02 20:50:36 +13:00
Henrique Santiago
f334a03397 Merge pull request #510 from edubart/configs_impl
Implementing ability to load custom config files
2014-04-01 13:23:56 -03:00
BenDol
3ce37dacbd Removed onUnload from corelib and added more lua bindings for resources. 2014-04-02 05:20:18 +13:00
BenDol
166eb7614f Fix accidental cmake changes. 2014-04-02 03:04:10 +13:00
BenDol
8b3f3b11f0 Can now unload a Config by config:unload() 2014-04-02 02:34:12 +13:00
BenDol
2d84fae2c8 Can now create new configs on the fly using: local config = g_configs.create(file) 2014-04-02 01:54:13 +13:00
BenDol
5204e3ac03 Proper termination and initialization of the ConfigManager. 2014-04-02 00:30:17 +13:00
BenDol
547b18db9a Update copyright for 2014 2014-04-01 18:36:42 +13:00
BenDol
37f9d3e200 Fix building issues. 2014-04-01 18:09:25 +13:00
BenDol
4b24c78f0f Fix to the makesingleton function. 2014-04-01 17:22:00 +13:00
BenDol
994f49b3c1 Better implementation for forming the singleton wrapper. 2014-04-01 17:08:07 +13:00
BenDol
79ee0e34ea Keep g_settings as a 'static' variable rather than a direct object. 2014-04-01 16:51:38 +13:00
BenDol
b295053662 Finished stable implementation (as far as tested), still requires more testing. 2014-04-01 16:27:33 +13:00
BenDol
61059e66ec Started implementing ability to load custom config files (currently unstable).
Feel free to help out with this if you like :)
2014-04-01 05:43:31 +13:00
Eduardo Bart
f4de000646 Merge pull request #504 from Shawak/master
Ability to get buffer from inputmessage
2014-03-22 18:38:40 -03:00
Shawak
d20c263912 Ability to get buffer from inputmessage 2014-03-22 18:09:11 +01:00
Shawak
07e40afa3d Ability to get buffer from inputmessage 2014-03-22 18:07:13 +01:00
Shawak
8179915e06 Ability to get buffer from inputmessage 2014-03-22 18:05:32 +01:00
Sam
4f79a30689 Remove print from purse code 2014-03-13 00:13:39 +01:00
Sam
a58a3e90c8 Implement purse slot (closes #208), add version 10.37 (could not find protocol changes) 2014-03-12 15:46:35 +01:00
Sam
8d8f32b081 Partial 10.36 support, also fix #499 2014-03-12 06:39:20 +01:00
Sam
9d866a3616 Merge pull request #501 from conde2/master
Fix protocol erros and try to fix walk delay
2014-03-11 21:56:07 +01:00
conde2
0fbba70003 Fix protocol erros and try to fix walk delay
Not implemented CreaturesType, just fixed the protocol error reported in
#493, also try to fix #499 and #461
2014-03-11 17:18:50 -03:00
Henrique Santiago
598a7edf6b Merge pull request #497 from Faith2531/patch-1
Update game.cpp
2014-03-03 12:04:09 -03:00
Sam
b415b73b4a Fix creature marks. Thanks to @dalkon 2014-03-03 15:54:58 +01:00
Faith2531
b6d8ede854 Update game.cpp
changed max supported protocol to 10.35
2014-03-03 11:50:47 +01:00
Sam
d64a682e74 Merge pull request #490 from conde2/master
Support for newer versions and light draw fix
2014-02-24 19:44:57 +01:00
conde2
d080432e14 Support for newer versions and light draw fix
Avoid drawing light under covered tiles.
2014-02-24 15:33:29 -03:00
Sam
8bd1293be7 Tiny topmenu fix 2014-02-22 02:21:09 +01:00
Sam
ce411ec871 Merge pull request #484 from LordHepipud/patch-3
Fix Tile::getTopUseThing()
2014-02-18 16:34:21 +01:00
LordHepipud
82a5989f5c Fix Tile::getTopLookThing()
Fixing an issue which returned splash items instead of real usable items.
In case a blood splash is inside an open door, you are unable to close it. This patch will ignore splash items and return the real usable item correctly.

~~~~Lord Hepipud~~~~
2014-02-17 22:51:59 +01:00
Eduardo Bart
bb514d3acb Optimize path finding upto 100x performance again 2014-02-16 13:58:26 -03:00
Ahmed Samy
c96b717273 Fix library installation 2014-02-16 16:02:46 +02:00
Ahmed Samy
d245b7fb29 Revert "Build framework dynamically by default"
This reverts commit edde71fc09.
2014-02-13 17:43:03 +02:00
Ahmed Samy
edde71fc09 Build framework dynamically by default 2014-02-13 14:35:02 +02:00
Henrique Santiago
b7b8fdfd0c Fix BinaryTree skip, small otb changes 2014-02-13 00:42:06 -02:00
Ahmed Samy
8dc831088e CMake: Optional static/shared linkage for the framework lib 2014-02-12 22:31:18 +02:00
Ahmed Samy
c07d448aac CMake: Build framework independently from OTClient then link OTC against
it.

Now framework is built as a static library which should hopefully speed up
the build (in terms of compiling and linking).
2014-02-12 21:09:40 +02:00
Eduardo Bart
57a330e589 Fix path finding issue introduced by PR #470 2014-02-11 19:28:01 -02:00
Eduardo Bart
64437e4e1a Fix #476 2014-02-11 18:16:50 -02:00
Ahmed Samy
96f3bcb42b Merge https://github.com/shirayukikitsune/otclient
* https://github.com/shirayukikitsune/otclient:
  And do not delete curly brackets.
  Meh, spacing.
  Even more fixes
  Optimizations in Map::findPath
  More fixes in Map::findPath
  Fixes heap corruption in Map::findPath
2014-02-11 15:55:23 +02:00
Ahmed Samy
c8b4566194 TextEdit: If cursor pos reaches end, move to start, and the opposite 2014-02-10 08:05:45 +02:00
Sam
d30ff220f6 Fix market anchoring, closes #464 2014-02-06 14:04:22 +01:00
sakagushi
f0fbd4790f And do not delete curly brackets. 2014-02-06 04:36:39 -02:00
sakagushi
cb1f28a3a3 Meh, spacing. 2014-02-06 04:34:54 -02:00
sakagushi
cc1e3c534e Even more fixes
Forgot to clean the garbage generated in the last commit.
2014-02-06 04:34:04 -02:00
sakagushi
f4f79f47bd Optimizations in Map::findPath 2014-02-06 03:57:17 -02:00
sakagushi
ff617c3fab More fixes in Map::findPath
Fixed the styling, std::unique and removed the priority_queue comment
2014-02-06 03:36:19 -02:00
sakagushi
43524a9127 Fixes heap corruption in Map::findPath 2014-02-06 02:08:10 -02:00
Sam
48ff67dc06 Fix useWith issue 2014-01-25 22:14:01 +01:00
Sam
8bd154b604 Merge pull request #452 from conde2/master
Temporary fix for async
2014-01-24 10:26:28 -08:00
conde2
9da018fdff Temporary fix for async
This should be fixed in server side, until that we just don't need to
use.
2014-01-24 00:19:08 -02:00
Sam
4f4788c1c3 Fix WritableDate to correct version (at least I hope so), fixes #446 2014-01-21 23:13:07 +01:00
Sam
d0d8c9a081 Bind adjustments, some fixes 2014-01-21 22:12:50 +01:00
Henrique Santiago
f3b5adbf40 Merge pull request #447 from conde2/master
Fix compilation under MSVC, bind some fucntions
2014-01-21 13:01:56 -08:00
Sam
38c9b6b0b2 Luacasts for Light 2014-01-21 22:01:11 +01:00
conde2
79be0eca73 Fix compilation under MSVC, bind some fucntions 2014-01-21 18:33:22 -02:00
Sam
9bd02ca8ba Added method to export a ThingType as png :exportImage(fileName) 2014-01-21 12:11:19 +01:00
Sam
f12ecd8404 Implemented a function to save .dat file 2014-01-21 11:10:02 +01:00
Sam
53803b2218 Implemented a function to save .spr file 2014-01-20 23:51:15 +01:00
Sam
67c2453c82 savePNG method for Image 2014-01-20 23:04:49 +01:00
Sam
455000c02d Fix save_png definition / New UISprite function 2014-01-20 22:48:50 +01:00
Sam
a2684cce7c Update gamelib 2014-01-20 22:27:20 +01:00
Sam
27ae54d7d6 Lua call for loading .spr, .dat, .otb 2014-01-18 18:38:13 +01:00
Sam
aec577a4b4 Merge pull request #442 from d33tah/master
Get rid of trailing whitespace.
2014-01-18 08:11:03 -08:00
Ahmed Samy
6f467d5a1b Sort town/house names 2014-01-18 17:57:42 +02:00
Jacek Wielemborek
e6c9e78935 Get rid of trailing whitespace.
Commit generated by command:

find -type f ! -path '*.git*' ! -path '*.png' ! -path '*.ico' ! -path \
    '*.ogg' | xargs -I '{}' sed -i '{}' -e 's/\t*$//g' -e 's/ *$//g'
2014-01-18 15:09:26 +01:00
Sam
3750a85c5f Fix for version 8.40 2014-01-17 22:41:58 +01:00
Sam
03de13d618 Duplicate lua function removed 2014-01-16 22:11:42 +01:00
Eduardo Bart
1588bc4cae Merge pull request #436 from diath/patch-tabs
Make tab navigation more intuitive
2014-01-15 05:48:07 -08:00
Kamil Chojnowski
b718ae0423 Update tabs navigation to take offscreen tabs into account 2014-01-15 04:56:42 +01:00
Eduardo Bart
a8f540cf29 Merge pull request #437 from diath/patch-hotkeys
Update hotkeys behavior
2014-01-14 18:16:54 -08:00
Kamil Chojnowski
e6a1fabdd3 Update hotkeys behavior 2014-01-15 02:54:50 +01:00
Kamil Chojnowski
291960d159 Make tab navigation more intuitive 2014-01-15 02:32:02 +01:00
Sam
20b68c6a42 Vip functionality, closes #83 2014-01-14 23:15:01 +01:00
Ahmed Samy
e4ba805e00 deleteSpawn() 2014-01-14 11:04:48 +02:00
Ahmed Samy
93be0f975f getCreatures / getSpawns 2014-01-14 01:47:43 +02:00
Sam
cbfeef39bc Effects now use x and y pattern, fixes #433 2014-01-13 16:03:42 +01:00
Sam
d7dfa2220e GMAction fix 2014-01-08 17:25:05 +01:00
Eduardo Bart
59c3e4467a Update v0.6.5 download link in README 2014-01-06 19:16:50 -02:00
Eduardo Bart
117833addc Update to version 0.6.5 2014-01-06 19:02:45 -02:00
Ahmed Samy
edf17a44ca Code cleanup 2014-01-06 14:35:57 +02:00
Sam
6db2458c1d Adding 10.31 to version list 2014-01-01 15:47:51 +01:00
Ahmed Samy
2556bfcbf2 Tab -> space 2013-12-30 18:13:49 +02:00
Ahmed Samy
9bdce800d8 Bind Container item code to lua 2013-12-30 18:10:45 +02:00
Ahmed Samy
9adab5f9bf Item serialization: Write description & text 2013-12-27 12:59:50 +02:00
Ahmed Samy
a6f998d406 Fix typo & bind ItemType::isWritable 2013-12-27 11:32:19 +02:00
Ahmed Samy
ab21558c47 Do not test for TILESTATE_NONE
This flag is ALWAYS set, cause it's always 0 i put there by mistake.
It causes an issue by simplying drawing everything dark, cause of
the opacity...
2013-12-27 05:10:00 +02:00
Sam
17c4d59b15 Enabling versions 7.8 to 8.0 2013-12-26 23:20:34 +01:00
Sam
d53f4dfa1e Merge pull request #419 from dominique120/master
Spanish translation improvement.
2013-12-26 13:46:08 -08:00
Sam
da959aca28 Support for protocol 7.7/7.72 / Tiny fix 2013-12-26 21:31:55 +01:00
Sam
91c182d93d Tiny typo fix :) 2013-12-26 19:39:40 +01:00
dominique120@live.com
6ecd49abe1 Fix recommended by @Bahamuntxd 2013-12-26 12:17:57 -05:00
Ahmed Samy
6745bff132 Introduce g_resources.getDirectoryFiles
This can recursively find files in a directory that's not in physfs search
path, this is needed for mapeditor needs, esp the file browser.

We do not want to limit users to the application run directory
so we have to use this.

This function uses boost filesystem.
Prototype:
	g_resources.getDirectoryFiles(directory STRING, filenameOnly BOOL,
	recursive BOOL)

filenameOnly is there if we want to just get the filenames in the
directory.
recursive if we want to loop directories in the directory.
2013-12-25 21:32:49 +02:00
Sam
27db78567b Fix writables in 7.6, fixes #416 2013-12-25 15:11:12 +01:00
Sam
83dd92cfec Merge pull request #417 from ronpetit/master
fixed outfit for 7.6 fix #415
2013-12-24 16:01:10 -08:00
dominique120@live.com
5605061435 fixed a little typo. 2013-12-24 17:47:08 -05:00
dominique120@live.com
241b178ebc Improved the Spanish translation by making some statements sound more formal and correcting a few other ones that where incorrect or that missed a few words. 2013-12-24 17:39:51 -05:00
Ron
d0288e23d8 Update outfit.lua
Fixed outfits for 7.6
2013-12-24 14:07:52 -04:30
Sam
9d8cf33acc Fix 7.60 login protocol 2013-12-23 23:45:49 +01:00
Sam
6a4868f2b5 Merge pull request #412 from LordHepipud/patch-1
Fix 7.70 RSA / XTEA encryption
2013-12-23 14:45:17 -08:00
LordHepipud
aa84ee4362 Fix 7.70 RSA / XTEA encryption
RSA / XTEA encryption was implemented with Client 7.70

~~~~Lord Hepipud~~~~
2013-12-23 23:31:59 +01:00
Henrique Santiago
1e17919a26 Use of createTable on containers 2013-12-22 17:36:43 -02:00
Ahmed Samy
df3546b073 lua: now we have a function to static allocate an array
lua_newtable() definition:
	#define lua_newtable(L) 	lua_createtable(L, 0, 0)

This simply allocates space for 0 fields, meaning, if we push any
values into this array, it will re-allocate the array, which is bad.

This function statically allocates an array, so it's ready to have
X fields into it.

Performance tests:

lua_newtable
1428161
1426992
1413513

lua_createtable
2004544
1974117
1957533

These tests were done on an AMD 8350fx CPU, single thread used.

narr: This is for fields that just have an index, e.g. arr[0] etc.
nrec: For fields which needs like arr.a, arr.b etc.

This is how many times each of the functions can run per second, as
you can see about 1.7x the calls to lua_newtable.

All credits goes to @dalkon, he was too lazy to do it by himself, and
asked me to do it for him.
2013-12-21 16:13:24 +02:00
Ahmed Samy
24e26e190b Also unbind g_minimap.updateTile 2013-12-18 04:40:53 +02:00
Ahmed Samy
ad7cda534d Fix minimap tile update for item removal 2013-12-18 04:40:52 +02:00
Sam
863bece70b VC12 fixes by @dalkon 2013-12-15 19:09:03 +01:00
Ahmed Samy
22f97aa00b More binds to lua 2013-12-15 04:59:45 +02:00
Ahmed Samy
e32607b05c Tiny fixes 2013-12-15 04:33:43 +02:00
Ahmed Samy
1790eee1c6 Add selection to tile 2013-12-14 23:06:52 +02:00
Ahmed Samy
ec2518525a Add more tile flags to be checked for 2013-12-14 19:44:54 +02:00
Ahmed Samy
eb4fb4ff41 Animations are now optional
The default behaviour is still there though.
2013-12-14 18:48:18 +02:00
Ahmed Samy
4f997a3826 Only request tile cache to be updated once for both x & y 2013-12-12 16:24:50 +02:00
Ahmed Samy
c54015a60d Fixup movePixels a little bit
Thanks to @dalkon for dis.
2013-12-12 16:21:22 +02:00
Ahmed Samy
57c432d3ea Increase maximum move offset to be 64 instead of 32 2013-12-12 03:23:13 +02:00
Ahmed Samy
bd8c883e13 Take out debug message 2013-12-12 02:53:57 +02:00
Ahmed Samy
b5c3b37b3c Tiny fix for movePixels 2013-12-12 02:46:20 +02:00
Ahmed Samy
ece6507df2 Bind g_minimap.updateTile to lua
This is needed to update tile removals from minimap widget.
2013-12-11 19:08:12 +02:00
Ahmed Samy
04515ffbb8 Fix map move pixels function
Thanks to @dalkon for this.
2013-12-11 18:36:31 +02:00
Ahmed Samy
ed24a0735a Bind {un,}lockVisibleFloor to lua 2013-12-09 20:15:39 +02:00
Ahmed Samy
2498129ff3 mapio: don't add saved with line in description 2013-12-07 02:52:51 +02:00
Ahmed Samy
066638e7c0 mapio: don't add description twice 2013-12-07 02:27:21 +02:00
Ahmed Samy
95610de5f3 bind set{Width,Height} of g_map to lua 2013-12-07 02:00:31 +02:00
Ahmed Samy
9154c0a678 mapio: fix load on new maps 2013-12-06 23:08:08 +02:00
Ahmed Samy
772ec208c0 don't throw error on fail 2013-12-05 22:23:46 +02:00
Eduardo Bart
7914832be9 Update readme 2013-12-04 14:00:09 -02:00
Sam
99500c9c91 Protocol 8.40-.42 fixes, closes #272 2013-12-04 16:02:51 +01:00
Ahmed Samy
b9b9a32b83 Spawns: add function to find a spawn to place a creature on 2013-12-04 14:30:26 +02:00
Sam
f615b80fbc Navigation for large tab amounts, closes #211 2013-12-03 20:25:56 +01:00
Henrique Santiago
319f32cdaa Merge pull request #387 from conde2/master
Fix compilation under MSVC
2013-11-30 19:52:57 -08:00
conde2
ba091c9f5b Indentation 2013-12-01 01:30:48 -02:00
conde2
3288711d16 Mistake 2013-12-01 01:25:34 -02:00
conde2
8b0509a5c3 Try to fix compilation 2013-12-01 01:19:29 -02:00
conde2
d7612e9304 Little mistake 2013-12-01 01:12:06 -02:00
conde2
4dcb30110f Use of clamp 2013-12-01 00:48:36 -02:00
conde2
7ff73d1064 Fix indentation 2013-11-30 23:34:21 -02:00
conde2
ca2fe9cf45 Fix compilation under MSVC
Use template for std::min and std::max
2013-11-30 23:08:43 -02:00
Sam
b61f509755 Checkboxes fix 2013-11-19 14:54:17 +01:00
Sam
ec012cb137 Fix 7.6 protocol issue / Typo 2013-11-19 01:09:31 +01:00
Sam
69ae324676 Tiny setPVPMode fix 2013-11-19 00:55:42 +01:00
Sam
4d656f8bd1 New pvp modes to combat controls 2013-11-19 00:50:00 +01:00
Sam
c98439ae65 onOutfitChange fix 2013-11-18 23:18:48 +01:00
Sam
4f9f04206d Added enter / escape button to minimap flag window 2013-11-18 20:57:50 +01:00
Sam
fc54a6e418 Full modal dialog functionality 2013-11-18 18:58:15 +01:00
Ahmed Samy
25d3019d1a force use of template version of std::min/max 2013-11-14 00:02:47 +02:00
Ahmed Samy
1711d8bdaf Revert "replace all std::min/std::max with just min/max"
This reverts commit 28d967ccce.
2013-11-13 23:53:54 +02:00
Ahmed Samy
28d967ccce replace all std::min/std::max with just min/max
This errors out in MSVC since the inclusion of winsock2.h, CL uses the
macro not the template version.
2013-11-13 23:48:10 +02:00
Ahmed Samy
f02d5e7975 Merge https://github.com/BrunoDCC/otclient
# By BrunoDCC
# Via BrunoDCC
* https://github.com/BrunoDCC/otclient:
  Fix houses and monsters
2013-11-13 22:51:00 +02:00
BrunoDCC
4bfe9b640e Fix houses and monsters 2013-11-13 18:48:37 -02:00
Eduardo Bart
ab1cc8c890 Update download links 2013-11-13 15:25:23 -02:00
Eduardo Bart
d657a0482a Add download links to README 2013-11-13 15:17:38 -02:00
Eduardo Bart
8562d38ca4 Update make_snapshop.sh [2] 2013-11-13 15:09:33 -02:00
Eduardo Bart
28786a3570 Update make_snapshop.sh 2013-11-13 14:33:29 -02:00
Eduardo Bart
b07a77f705 Changes to compile for Win64 2013-11-13 13:55:34 -02:00
Eduardo Bart
0d44942e8e Version 0.6.4 2013-11-13 13:07:37 -02:00
Eduardo Bart
dd829395e3 Merge pull request #376 from dalkon/master
Item phases & Fix party "bug" & Additions
2013-11-12 15:56:54 -08:00
dalkon
18fa54181a Format fix 2013-11-13 00:50:46 +01:00
dalkon
5b8ff29fa3 Fix party "bug" & Additions 2013-11-13 00:48:41 +01:00
dalkon
59e90e8f1e Item phases 2013-11-13 00:18:15 +01:00
Sam
5db37857bf Fix game zoom issue 2013-11-12 23:35:19 +01:00
Eduardo Bart
fc0297d6db Fix compile errors in ubuntu 2013-11-12 20:07:46 -02:00
Eduardo Bart
1060c6f78c Compilation for MSVC2013, thanks @dalkon
OTclient now compiles in "Microsoft Visual Studio 2013 Express for Windows Desktop"
All the needed libraries you can download at https://www.dropbox.com/s/2yfb1c763io8efy/otclient-msvc13-libs.zip
NOTE: You have to change VC++ Directories to the properly directories
NOTE: Latested MSVC 2013 or greated is required
2013-11-12 16:32:39 -02:00
dalkon
c9597d6682 Visual Studio 2013 Compatibility 2013-11-12 16:32:39 -02:00
dalkon
d3e97d33c7 Update .gitignore 2013-11-12 16:32:39 -02:00
Ahmed Samy
2b015d49d7 don't set bits twice 2013-11-12 20:06:59 +02:00
Ahmed Samy
f04b4a0b42 small fix 2013-11-12 20:02:24 +02:00
Ahmed Samy
ff5c22d4c0 Tiny fix
Saving newly made houses by the map editor is not even supported, so this
is not a bug
2013-11-12 17:15:09 +02:00
Sam
d6105a98d1 Fixed issue with deathwindow 2013-11-12 15:21:10 +01:00
Eduardo Bart
0938e22eb9 Fixes in stdext::format 2013-11-11 23:07:25 -02:00
Eduardo Bart
1868b235cb Implement creature marks 2013-11-11 01:45:18 -02:00
Eduardo Bart
9a30050340 Fix typo 2013-11-10 23:40:29 -02:00
Eduardo Bart
9d689f0c43 Add missing changes for protocol > 1000 2013-11-10 23:31:59 -02:00
Eduardo Bart
2b34c0ea0a Fix #337
The sound buffer was not being fully preloaded because it's size was incorrect
2013-11-10 20:35:00 -02:00
Eduardo Bart
d32f71c2b9 Partial support for protocol 1020 and minimize lag
I am able to login in global Tibia however there are game protocol errors
* there is a new opcode 167, which I dont know what it is
* there are changes in opcode 147 which handles text messages that I don't know too

Connection writing was optimized, playing "lag" should improve by 10ms,
and improve much more in systems with low fps
2013-11-10 20:10:04 -02:00
Eduardo Bart
3cff331723 Merge github.com:BrunoDCC/otclient 2013-11-10 19:36:06 -02:00
Eduardo Bart
9894f0c0b9 Merge github.com:conde2/otclient 2013-11-10 19:31:24 -02:00
conde2
e60372fdea A little fix! 2013-11-10 03:17:49 -02:00
conde2
d2473fd424 Login support for 10.21 ~ 10.22
Please someone test more it !
Not tested in real Tibia !
2013-11-10 03:13:51 -02:00
BrunoDCC
7d7bd00a63 minor fix :3 2013-11-09 22:48:29 -02:00
BrunoDCC
c81a623c43 Fixes for creatures name
fixes on save houses (Now open most generate some error)
First 10.22 commit (open dat to edit)
Add server id for new versions
2013-11-09 20:04:48 -02:00
Eduardo Bart
8b165b95fd non relevant change 2013-11-05 21:32:27 -02:00
Sam
6f9436dd60 UISprite widget added
Display single sprites
2013-10-30 21:35:29 +01:00
Henrique Santiago
ae95f51346 Merge pull request #367 from shdpl/patch-1
Polish locale update
2013-10-26 09:46:15 -07:00
shdpl
9b84570372 Polish locale update
UTF-8 or UTF-16 pls
2013-10-25 19:27:19 +02:00
Eduardo Bart
38dec168ee Fix boost::asio misuse that would cause lag
io_service::reset was not called before io_service::poll, meaning that new events would be really polled in the next Connection::poll call, this could lead to network lag in computers with low framerate (ie: a user with 10 fps would have 100ms lag just because of that)
2013-10-22 21:42:35 -02:00
Henrique Santiago
84b722f8c7 Merge pull request #365 from conde2/master
Fix - Writeable / Readable items Issues: #362 and #364
2013-10-21 17:29:13 -07:00
Joao Pasqualini Costa
b3717ceb93 Fix - Writeable / Readable items 2013-10-21 22:25:12 -02:00
Henrique Santiago
3340e06da6 Merge pull request #363 from conde2/master
Fix protocol error #362
2013-10-20 17:24:19 -07:00
Joao Pasqualini Costa
084ee45650 A little mistake 2013-10-20 20:33:44 -02:00
Joao Pasqualini Costa
7290ec3334 Some work on container pagination
Bind lua functions for containers
Update onAddItem now it have the pagination slot
Note: getSize as i see is equal to getItemsCount, but not sure thats why
I've added !
2013-10-20 20:21:20 -02:00
Joao Pasqualini Costa
971d90a596 Fix protocol error #362
TODO:
Handle the helpers in LUA, it could be added into Battle Window i think,
if someone know where should this be comment here !
2013-10-20 18:31:20 -02:00
Sam
8230bf2af4 Merge branch 'master' of https://github.com/edubart/otclient 2013-10-20 17:15:30 +02:00
Sam
241b54262a Updated lua consts 2013-10-20 17:15:24 +02:00
Ahmed Samy
63ce68b449 mapio: make sure we read the house tile flag 2013-10-12 11:38:30 +02:00
Ahmed Samy
f47ea05abc Merge https://github.com/BrunoDCC/otclient
# By BrunoDCC
# Via BrunoDCC
* https://github.com/BrunoDCC/otclient:
  Save houses and spawns fix
2013-10-11 11:38:03 +02:00
BrunoDCC
de3160c90d Save houses and spawns fix 2013-10-11 02:35:31 -03:00
Sam
67bd00556d Re-added "Don't stretch/shrink" option
Closes #345
2013-10-09 18:17:50 +02:00
Sam
778559c7b9 Protocol 10.10 fixed containers 2013-10-09 17:58:58 +02:00
Sam
3aac0ac0ec Reverting mapio.cpp change
Should not have been commited.
2013-10-07 21:38:55 +02:00
Sam
4adfafc67e Fix for Client 8.5 2013-10-07 21:32:13 +02:00
Sam
1b27a095a9 Hotkeys for Fluid Containers
Hotkeys now save subType for fluid containers instead of always trying
to use item with subType 0.
2013-10-05 18:08:49 +02:00
Sam
e6977b1b43 Improvement / Fix hotkeys
- Hotkeys now check items in inventory
- Fixed USEONETARGET hotkey bug
2013-10-05 02:31:44 +02:00
Sam
5843b78e87 Support for client version 7.6
Tell me if there are parts which I should change.

- Not everything is tested yet, feel free to report bugs in 7.6
- the data send in between login opcode and account data might not be
correct, but I could not find any documents showing the right protocol
yet
- Hotkeys working
2013-10-04 04:09:54 +02:00
Ahmed Samy
7cf645e715 Woops, fix operator less than 2013-09-02 19:12:12 +00:00
Ahmed Samy
537508021e Make g_map.findItemsById return a map instead of a vector 2013-09-02 17:53:32 +00:00
Ahmed Samy
e741a62ce9 g_map.findItemsByid 2013-08-31 01:18:17 +00:00
Ahmed Samy
56d6ef6642 Introduce 4 new functions:
- g_map.beginGhostMode(float opacity)
- g_map.endGhostMode()
- UIMap::movePixels(int x, int y)
- MapView::move(int x, int y)
2013-08-30 01:54:36 +00:00
Ahmed Samy
3db8f54aa9 Introduce 2 new functions to g_things
- g_things.findItemTypesByName
- g_things.findItemTypesByString
2013-08-29 17:53:21 +00:00
Ahmed Samy
9234030c1b Zone colors: add more tile flags to be checked for 2013-08-27 15:49:48 +00:00
Ahmed Samy
520baa28ea Move "getNPC" that was introduced in commit
00729bbc2e
from Spawn to CreatureType

I didn't have a closer look at how his code was structured, what he
basically did
is that he set all creatures in a spawn as NPC's even if it's a monster
which is
so erroneous.

Highlights:
- Add branch prediction macros
- Minor code style fixes & some others

Hopefully the branch prediction thing will speed up OTB since it's
awfully slow.
2013-08-27 03:40:18 +02:00
Ben Dol
bbdeac2e33 Merge pull request #353 from KnopersPL/master
Fix for protocol 850 errors, thanks @KnopersPL
2013-08-25 03:54:39 -07:00
KnopersPL
1f914351bb Update protocolcodes.cpp
Fix for server messages on 850
2013-08-25 12:24:18 +02:00
KnopersPL
eb68504dc1 Update protocolgameparse.cpp
Fix the slow animation move effect, some opcodes error and logging in as GM
2013-08-25 12:20:54 +02:00
Ahmed Samy
32647f11bf Introduce 2 new functions to Map
- g_map.colorizeThing
- g_map.removeThingColor
2013-08-24 00:09:56 +02:00
Ahmed Samy
644d4daeea More cleanups 2013-08-23 02:12:36 +02:00
Ahmed Samy
b27352c321 Merge branch 'master' of https://github.com/BrunoDCC/otclient
* 'master' of https://github.com/BrunoDCC/otclient:
  Add full npc read (it not cause bug)
  Fixed a npcs save Fixed a spawns and npcs load
2013-08-23 02:03:40 +02:00
BrunoDCC
a6be9ae525 Add full npc read (it not cause bug) 2013-08-22 21:00:48 -03:00
Ahmed Samy
5df3ec8cf2 More cleanups
Also, bind map descriptions auxiliar functions
2013-08-23 01:55:15 +02:00
BrunoDCC
00729bbc2e Fixed a npcs save
Fixed a spawns and npcs load
2013-08-22 20:54:09 -03:00
Ahmed Samy
3b2d8a2b5e Fix build 2013-08-22 23:20:44 +02:00
Ahmed Samy
d5298c1011 Cleanups 2013-08-22 21:15:17 +02:00
Allan Ference
aaad8ab8a0 Fix spawn loading and saving, thanks to @BrunoDCC 2013-08-20 12:14:52 +02:00
Allan Ference
efbd9ab693 Attempt to fix spawn loader 2013-08-19 18:57:25 +02:00
Allan Ference
092209c0bb Attempt to fix houses and spawns save 2013-08-19 10:38:22 +02:00
Allan Ference
05f7f6a4cf Introduce Item::getName() 2013-08-18 18:29:20 +02:00
Ben Dol
2c36ca7215 Merge pull request #350 from conde2/master
Fix Keyboard unbind, WASD walk, Mount Frames, Fix #349, #344, #304, #253 Thanks @conde2!
2013-08-17 19:23:06 -07:00
Joao Pasqualini Costa
926eb9f01e Fix #253
Message Mode 12
2013-08-17 22:57:38 -03:00
Joao Pasqualini Costa
96bb28e806 Fix Mount frame issue
This will fix mount for all protocols
2013-08-17 22:19:24 -03:00
Joao Pasqualini Costa
e15995e1eb Fix walk with WASD
This should be an alone bind, so any other control will not affect the
keys.
2013-08-17 21:56:37 -03:00
Joao Pasqualini Costa
719debfeae Fix keyboard unbind
Now this will unbind the right widget
2013-08-17 21:54:16 -03:00
Allan Ference
e7137c2535 Rework NPCs loader with g_resources (Untested) 2013-08-17 23:36:44 +02:00
Allan Ference
5eabf6f518 Optional and configurable zone colors 2013-08-17 23:06:58 +02:00
Allan Ference
5849136526 Introduce g_things.findItemTypeByName 2013-08-17 15:09:10 +02:00
Allan Ference
0451fd6b58 OTBM saver: don't escape version check for waypoints 2013-08-15 11:20:22 +02:00
Allan Ference
9cf878335a Minor changes
Mainly code style
2013-08-14 18:58:53 +02:00
BeniS
529b646316 Forgot to provide the widget for walk key bind, thanks conde2! 2013-08-13 10:22:34 +12:00
Allan Ference
1ea2b380ca Disregard progressbar 2013-08-09 17:35:56 +02:00
Allan Ference
914fe249ab Merge branch 'master' of https://github.com/BrunoDCC/otclient
* 'master' of https://github.com/BrunoDCC/otclient:
  Fix OTBM save Remove if(version > 1) { (it causes bug)
2013-08-09 14:54:09 +02:00
BrunoDCC
4d498ed0d8 Fix OTBM save
Remove if(version > 1) { (it causes bug)
2013-08-07 20:04:21 -03:00
Allan Ference
9aa667da26 MapEditor: more changes for ease of use 2013-08-04 14:21:12 +02:00
Allan Ference
e6db43ac3a MapEditor specific: Use colors for tile states 2013-08-04 14:19:10 +02:00
Eduardo Bart
b5911cf1de Use client version instead of entergame 2013-08-03 19:26:38 -03:00
BeniS
5fbb71157d Added enable/disable chat mode (allows for alphabetical key controls), battle window anchoring fixed (thank you River) & more:
* Added better walk key binding (for other uses, like the sample given WASD).
* Made string.ends part of the string meta table rather than parameter based.
2013-07-29 10:42:18 +12:00
Allan Ference
0ff36a1a0a Merge https://github.com/marksamman/otclient
* https://github.com/marksamman/otclient:
  Fix login with 9.83-10.10
2013-07-28 07:10:44 +02:00
Mark Samman
4a04a18835 Fix login with 9.83-10.10
This only adds protocol compatibility, the features aren't actually
implemented yet
2013-07-28 07:05:46 +02:00
Allan Ference
6fa9631d6a Merge https://github.com/marksamman/otclient
* https://github.com/marksamman/otclient:
  Fix compiling on OS X
2013-07-28 04:42:31 +02:00
Mark Samman
261642190b Fix compiling on OS X 2013-07-28 04:30:52 +02:00
BeniS
95abf2a1d2 Fix a bug with autowalking & add prompt param for tryLogout.
(We don't want to be prompted when pressing Ctrl + Q or  Ctrl + L).
2013-07-07 05:36:56 +12:00
Sam
c4adf2d817 Added whitelist
- Checkboxes to turn ignore/whitelist off
- Allow VIP messages
2013-07-04 18:03:21 +02:00
Sam
c7c259ef80 Game Menu / Attacking fixes
- No more "Attack" / "Follow" for creatures on different floor
- No rule violation for monsters, only players now
- Alt + Click to target works through roofs -> fixes #203
- Fixed battle list issue (check position when trying to attack)
2013-07-03 14:25:18 +02:00
Sam
987c6d6c91 Mount display issue
fixes #275
Not really needed but enables some cool stuff
2013-07-02 23:16:11 +02:00
Sam
c8185474de Implements battlelist sorting
Features:
Sort by age, name, health or distance
Sort ascending or descending
Button to toggle filters and sort options
http://i.imgur.com/cSCBwr4.png

closes 213
2013-07-02 22:43:52 +02:00
Sam
be071c7103 Fix deathwindow issue 2013-07-02 22:40:19 +02:00
Sam
2f9e2c3e33 Sorting VIP list by name
@ #209
What should sorting by type do?
2013-07-01 22:59:51 +02:00
Sam
b81590f297 Fixed Alt + F4 keycombo on Windows 2013-06-29 16:53:15 +02:00
BeniS
e062562888 Added sublime text 2 project file.
* Changed the order of the dofiles params.
2013-05-12 21:16:43 +12:00
BeniS
18d23653c4 Added some control params to dofiles lua method.
* File name contains string.
* Recursive file checking for deep searches.
2013-05-12 17:00:52 +12:00
Henrique Santiago
6c119627bb Merge pull request #330 from conde2/master
Improvement on styles
2013-04-30 13:26:56 -07:00
Joao Pasqualini Costa
d847a78a4d Improvement on styles
Added VerticalList
2013-04-30 17:21:04 -03:00
Eduardo Bart
0dccc870b5 Merge pull request #324 from TiagoTdA/master
Update/Refresh modules on unload
2013-04-13 18:11:47 -07:00
Tiago T. de Araujo
e4c7ca604b Fix update on unload module 2013-04-12 21:27:10 -03:00
Sam
d427560b98 Countwindow Fix [YAH]
Fixed typing amount in count window. Should be hidden again.
2013-04-12 19:15:28 +02:00
Sam
cc12db0d1f Reverted getTopMultiUseThing() change 2013-04-09 23:54:10 +02:00
Henrique Santiago
1ce6df99ac Merge pull request #318 from conde2/master
Fix #316
2013-04-09 14:21:15 -07:00
Joao Pasqualini Costa
57bb6ff974 Fix #315 by @pacmanis
Credits go to @pacmanis
2013-04-09 18:02:43 -03:00
Joao Pasqualini Costa
9bae1b9e25 Fix #316
It still have a bug when using string like this:

" teste {{}} teste"
2013-04-09 17:54:57 -03:00
Sam
1415de222c Merge pull request #313 from sn3ejk/sn3ejk
Fix extended opcodes for forgottenserver.
2013-04-05 18:50:02 -07:00
Kamil W
34ceb3c95e Fix extended opcodes for forgottenserver. 2013-04-05 22:03:17 +02:00
Eduardo Bart
b43a196eac Minor fixes and add auto resize for images 2013-03-15 21:59:22 -03:00
Eduardo Bart
a3a65d40ce Merge pull request #303 from conde2/master
Properly Fix #301
2013-03-15 08:35:04 -07:00
Joao Pasqualini Costa
6ef3508362 Properly Fix #301 2013-03-14 20:57:02 -03:00
Eduardo Bart
a71e07f063 Restore walk optimization 2013-03-14 00:16:57 -03:00
Eduardo Bart
4bdd1e79fd Fix compile error for win32 2013-03-13 21:18:17 -03:00
Eduardo Bart
e9e4dcd71b Improve walk when lagging 2013-03-13 20:55:20 -03:00
Eduardo Bart
0891e2b30a Add C++ traceback to errors 2013-03-12 01:36:36 -03:00
Eduardo Bart
24664714bd Fix rare but serious bug in Connection
* Implement output pooling for writing data in connection,
this should fix rare cases where sending would fail
2013-03-12 00:18:47 -03:00
Eduardo Bart
da51dd467e Minor fix 2013-03-11 15:00:31 -03:00
510 changed files with 10393 additions and 4833 deletions

71
.gitignore vendored
View File

@@ -1,4 +1,3 @@
/modules/.project
build*
CMakeCache.txt
CMakeFiles
@@ -39,3 +38,73 @@ tags
Thumbs.db
.directory
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,7 +1,8 @@
cmake_minimum_required(VERSION 2.6)
project(otclient)
set(VERSION "0.6.2")
set(VERSION "0.6.6")
set(LIB_NAME "otc_framework")
option(FRAMEWORK_SOUND "Use SOUND " ON)
option(FRAMEWORK_GRAPHICS "Use GRAPHICS " ON)
@@ -35,11 +36,20 @@ endif()
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_executable(${PROJECT_NAME} ${framework_SOURCES} ${client_SOURCES} ${executable_SOURCES})
add_executable(${PROJECT_NAME} ${client_SOURCES} ${executable_SOURCES})
# target link libraries
target_link_libraries(${PROJECT_NAME} ${framework_LIBRARIES})
target_link_libraries(${PROJECT_NAME} ${LIB_NAME})
if(USE_PCH)
include(cotire)
@@ -51,7 +61,10 @@ endif()
# installation
set(DATA_INSTALL_DIR share/${PROJECT_NAME})
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
install(TARGETS ${PROJECT_NAME} ${LIB_NAME}
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(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.png?branch=master)](http://travis-ci.org/edubart/otclient)
[![Build Status](https://secure.travis-ci.org/edubart/otclient.svg?branch=master)](http://travis-ci.org/edubart/otclient)
### What is otclient?
Otclient is an alternative Tibia client for usage with otserv. It aims to be complete and flexible,
@@ -8,6 +8,20 @@ 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.
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
Beyond of it's flexibility with scripts, otclient comes with tons of other features that make possible
@@ -18,17 +32,18 @@ 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
client, instead otclient was designed to be a combination of a framework and tibia APIs.
### Download
Stable versions of otclient master branch compiled for Windows and Linux is available
in the [downloads section](https://github.com/edubart/otclient/downloads) of the project's github page.
### Compiling
A package with all required libraries for compiling OTClient on Windows can be found here:
* [For MSVC 2013](https://www.dropbox.com/sh/se1okacemoqzjve/dI4ODbq7OT/otclient-msvc13-libs.zip)
* [For MingW32](https://www.dropbox.com/sh/se1okacemoqzjve/UAkRCiGXXR/otclient-libs_mingw32-dwarf2.zip)
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 Linux](https://github.com/edubart/otclient/wiki/Compiling-on-Linux)
### Need help?
Try to ask questions in [otland](http://otland.net/f494/), now we have a board for the project there,
@@ -50,4 +65,3 @@ 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
to do whatever you want, commercial, non-commercial, closed or open.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 795 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 B

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 B

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 B

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 548 B

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 B

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 241 B

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 B

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 B

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 673 B

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 696 B

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 B

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 B

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,26 +1,28 @@
-- 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 = {
name = "es",
charset = "cp1252",
languageName = "Espa<EFBFBD>ol",
translation = {
["1a) Offensive Name"] = "1a) Nombre ofensivo",
["1b) Invalid Name Format"] = "1b) Formato invalido para nombre",
["1c) Unsuitable Name"] = "1c) Nombre no adecuado",
["1d) Name Inciting Rule Violation"] = "1d) Nombre que incita una violacion al reglamento",
["1d) Name Inciting Rule Violation"] = "1d) Nombre que incita una violaci<EFBFBD>n al reglamento",
["2a) Offensive Statement"] = "2a) Comentario ofensivo",
["2b) Spamming"] = "2b) Spamming",
["2c) Illegal Advertising"] = "2c) Publicidad ilicita",
["2d) Off-Topic Public Statement"] = "2d) Publicacion fuera de lugar",
["2e) Non-English Public Statement"] = "2e) Publicacion fuera del ingles",
["2f) Inciting Rule Violation"] = "2f) Incitar a una violacion al reglamento",
["2c) Illegal Advertising"] = "2c) Publicidad il<EFBFBD>cita",
["2d) Off-Topic Public Statement"] = "2d) Publicaci<EFBFBD>n fuera de lugar",
["2e) Non-English Public Statement"] = "2e) Publicaci<EFBFBD>n fuera del ingles",
["2f) Inciting Rule Violation"] = "2f) Incitar a una violaci<EFBFBD>n al reglamento",
["3a) Bug Abuse"] = "3a) Abuso de error",
["3b) Game Weakness Abuse"] = "3b) Abuso de debilidad del juego",
["3c) Using Unofficial Software to Play"] = "3c) Usando software ilegal para jugar",
["3d) Hacking"] = "3d) Hackeo",
["3e) Multi-Clienting"] = "3e) Multiple Cliente",
["3e) Multi-Clienting"] = "3e) Uso de m<>ltiples clientes",
["3f) Account Trading or Sharing"] = "3f) Intercambio de cuenta",
["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",
@@ -28,54 +30,54 @@ locale = {
["Accept"] = "Aceptar",
["Account name"] = "Nombre de cuenta",
["Account Status:"] = "Estado de cuenta:",
["Action:"] = "Accion:",
["Action:"] = "Acci<EFBFBD>n:",
["Add"] = "A<EFBFBD>adir",
["Add new VIP"] = "A<EFBFBD>adir nuevo VIP",
["Addon 1"] = "Addon 1",
["Addon 2"] = "Addon 1",
["Addon 3"] = "Addon 1",
["Addon 2"] = "Addon 2",
["Addon 3"] = "Addon 3",
["Add to VIP list"] = "A<EFBFBD>adir a lista VIP",
["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, 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!",
["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!",
["All"] = "Todo",
["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",
["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.",
["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.",
["Ambient light: %s%%"] = "Ambiente de luz: %s%%",
["Amount:"] = "Cantidad:",
["Amount"] = "Cantidad",
["Anonymous"] = "An<EFBFBD>nimo",
["Are you sure you want to logout?"] = "<EFBFBD>Estas seguro de que quieres salir?",
["Are you sure you want to logout?"] = "<EFBFBD>Estas seguro de que deseas salir?",
["Attack"] = "Atacar",
["Author"] = "Autor",
["Autoload"] = "Auto carga",
["Autoload priority"] = "Auto carga prioritaria",
["Auto login"] = "Auto iniciar",
["Auto login selected character on next charlist load"] = "Auto cargar car<61>cter seleccionado en la carga charlist siguiente",
["Axe Fighting"] = "Combate con acha",
["Auto login"] = "Auto ingresar",
["Auto login selected character on next charlist load"] = "Ingresar la siguiente vez que aparece el charlist con el personaje seleccionado",
["Axe Fighting"] = "Combate con hacha",
["Balance:"] = "Saldo:",
["Banishment"] = "Banishment",
["Banishment + Final Warning"] = "Banishment + Final Warning",
["Battle"] = "Batalla",
["Browse"] = "Navegar",
["Bug report sent."] = "Reporte de error enviado.",
["Button Assign"] = "Boton asignado",
["Button Assign"] = "Bot<EFBFBD>n asignado",
["Buy"] = "Compra",
["Buy Now"] = "Compra ahora",
["Buy Offers"] = "Comprar oferta",
["Buy with backpack"] = "Comprar con backpack",
["Buy with backpack"] = "Comprar con mochila",
["Cancel"] = "Cancelar",
["Cannot login while already in game."] = "No se puede iniciar sesi<73>n, mientras que estes en el juego.",
["Cannot login while already in game."] = "No se puede iniciar sesi<73>n, mientras que est<EFBFBD>s en el juego.",
["Cap"] = "Cap",
["Capacity"] = "Capacidad",
["Center"] = "Centrar",
["Channels"] = "Canales",
["Character List"] = "Lista de car<61>cter",
["Classic control"] = "Control Clasico",
["Classic control"] = "Controles Cl<EFBFBD>sicos",
["Clear current message window"] = "Limpiar mensaje actual en ventana",
["Clear Messages"] = "Limpiar mensaje",
["Clear object"] = "Limpiar objeto",
["Client needs update."] = "El cliente necesita actualizacion.",
["Client needs update."] = "El cliente necesita una actualizaci<EFBFBD>n.",
["Close"] = "Cerrar",
["Close this channel"] = "Cerrar este canal",
["Club Fighting"] = "Combate con mazo",
@@ -99,28 +101,28 @@ locale = {
["Delete mark"] = "Borrar Marca",
["Description:"] = "Descripci<EFBFBD>n:",
["Description"] = "Descripci<EFBFBD>n",
["Destructive Behaviour"] = "Comportamiento agresivo",
["Destructive Behaviour"] = "Comportamiento destructivo",
["Detail"] = "Detalle",
["Details"] = "Detalles",
["Disable Shared Experience"] = "Desactivar experiencia compartida",
["Dismount"] = "Desmontar",
["Display connection speed to the server (milliseconds)"] = "Mostrar velocidad de conexion en el servidor (millisegundos)",
["Display connection speed to the server (milliseconds)"] = "Mostrar velocidad de conexi<EFBFBD>n en el servidor (millisegundos)",
["Distance Fighting"] = "Combate a distancia",
["Don\'t stretch/shrink Game Window"] = "No estirar ni reducir el tama<6D>o de ventana",
["Edit hotkey text:"] = "Editar texto de hotkey:",
["Edit List"] = "Editar lista",
["Edit Text"] = "Editar texto",
["Enable music"] = "Habilitar musica",
["Enable music"] = "Habilitar m<EFBFBD>sica",
["Enable Shared Experience"] = "Habilitar experiencia compartida",
["Enable smart walking"] = "Habilitar caminado inteligente",
["Enable vertical synchronization"] = "Habilitar sincronizaci<63>n vertical",
["Enable walk booster"] = "Habilitar caminado turbo",
["Enter Game"] = "Entrar al juego",
["Enter one name per line."] = "Introducir un nombre por linea.",
["Enter with your account again to update your client."] = "",
["Enter with your account again to update your client."] = "Ingrese con su cuenta nuevamente para actualizar el cliente.",
["Error"] = "Error",
["Error"] = "Error",
["Excessive Unjustified Player Killing"] = "Asesinato excesivo injustivicado de players",
["Excessive Unjustified Player Killing"] = "Asesinato excesivo injustificado de jugadores",
["Exclude from private chat"] = "Ejecutar desde un canal privado",
["Exit"] = "Salir",
["Experience"] = "Experiencia",
@@ -132,71 +134,71 @@ locale = {
["Follow"] = "Seguir",
["Force Exit"] = "Forzar salida",
["For Your Information"] = "Para tu informaci<63>n",
["Free Account"] = "Account gratis",
["Free Account"] = "Cuenta gratis",
["Fullscreen"] = "Pantalla completa",
["Game"] = "Juego",
["Game framerate limit: %s"] = "Imagenes por segundo en juego: %s",
["Game framerate limit: %s"] = "Limite de cuadros por segundo en el juego: %s",
["Graphics"] = "Gr<EFBFBD>ficos",
["Graphics card driver not detected"] = "Controlador de tarjeta gr<67>fica de video no detectado",
["Graphics Engine:"] = "Motor Grafico:",
["Graphics Engine:"] = "Motor Gr<EFBFBD>fico:",
["Head"] = "Cabeza",
["Healing"] = "Curacion",
["Health Info"] = "HP Info",
["Health Information"] = "HP Informaci<63>n",
["Hide monsters"] = "Ocultar monsters",
["Hide non-skull players"] = "Ocultar no-skull players",
["Healing"] = "Curaci<EFBFBD>n",
["Health Info"] = "HP Info",--This can be better
["Health Information"] = "HP Informaci<63>n",--This can be better
["Hide monsters"] = "Ocultar monstruos",
["Hide non-skull players"] = "Ocultar jugadores sin skull",
["Hide Npcs"] = "Ocultar NPCs",
["Hide Offline"] = "Ocultar fuera de linea",
["Hide party members"] = "Ocultar miembros de party",
["Hide party members"] = "Ocultar miembros del party",
["Hide players"] = "Ocultar players",
["Hide spells for higher exp. levels"] = "Ocultar spells para niveles mas altos que tu experiencia.",
["Hide spells for other vocations"] = "Ocultar spells que sean para otra vocaci<63>n",
["Hide spells for higher exp. levels"] = "Ocultar hechizos para niveles mas altos que tu experiencia.",
["Hide spells for other vocations"] = "Ocultar hechizos que sean para otra vocaci<63>n",
["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 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",
["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",
["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.\nClick 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.\nHaga click en 'Salir' si desea salir del programa sin tener que salir de tu personaje.",
["Ignore"] = "Ignorar",
["Ignore capacity"] = "Ignorar Capacidad",
["Ignored players:"] = "Players ignorados:",
["Ignore equipped"] = "Ignorar lo equipodo",
["Ignored players:"] = "Jugadores ignorados:",
["Ignore equipped"] = "Ignorar lo equipado",
["Ignore List"] = "Ignorar lista",
["Ignore players"] = "Ignorar players",
["Ignore players"] = "Ignorar jugadores",
["Ignore Private Messages"] = "Ignorar mensajes privados",
["Ignore Yelling"] = "Ignorar gritos",
["Interface framerate limit: %s"] = "Interface de imagenes por segundo: %s",
["Interface framerate limit: %s"] = "Interface de cuadros por segundo: %s",
["Inventory"] = "Inventario",
["Invite to Party"] = "Ivitar a party",
["Invite to Party"] = "Ivitar al party",
["Invite to private chat"] = "Invitar a canal privado",
["IP Address Banishment"] = "Banishment - Direccion IP",
["IP Address Banishment"] = "Banishment - Direcci<EFBFBD>n IP",
["Item Offers"] = "Ofertas de objetos",
["It is empty."] = "Est<EFBFBD> vasio.",
["Join %s\'s Party"] = "Unir %s\'s party",
["Leave Party"] = "Dejar party",
["It is empty."] = "Est<EFBFBD> vaci<EFBFBD>.",
["Join %s\'s Party"] = "Unirse al party de %s ",
["Leave Party"] = "Dejar el party",
["Level"] = "Nivel",
["Lifetime Premium Account"] = "Tiempo de Premium Account",
["Lifetime Premium Account"] = "Tiempo de Premium Account infinito",
["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 sell"] = "Lista de objetos que puedes de vender",
["Load"] = "Cargar",
["Logging out..."] = "Cerrando sesion...",
["Logging out..."] = "Cerrando sesi<EFBFBD>n...",
["Login"] = "Ingresar",
["Login Error"] = "Error de ingreso",
["Login Error"] = "Error de ingreso",
["Logout"] = "Salir",
["Look"] = "Mirar",
["Magic Level"] = "Nivel m<>gico",
["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",
["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",
["Mana"] = "Mana",
["Manage hotkeys:"] = "Administrador de hotkeys:",
["Market"] = "Mercado",
["Market Offers"] = "Ofertas en mercado",
["Message of the day"] = "Mensaje del dia",
["Message of the day"] = "Mensaje del d<EFBFBD>a",
["Message to "] = "Mensaje a",
["Message to %s"] = "Mensaje a %s",
["Minimap"] = "Minimapa",
["Module Manager"] = "Administrador de modulos",
["Module name"] = "Nombre de modulo",
["Mount"] = "Montura",
["Module Manager"] = "Administrador de m<EFBFBD>dulos",
["Module name"] = "Nombre del modulo",
["Mount"] = "Montar", --Unique name?
["Move Stackable Item"] = "Mover objeto apilable",
["Move up"] = "Mover arriba",
["My Offers"] = "Mis ofertas",
@@ -205,7 +207,7 @@ locale = {
["Name Report + Banishment"] = "Name Report + Banishment",
["Name Report + Banishment + Final Warning"] = "Name Report + Banishment + Final Warning",
["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 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 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 item selected."] = "No hay elemento seleccionado.",
["No Mount"] = "No montura",
["No Outfit"] = "No outfit",
@@ -220,30 +222,30 @@ locale = {
["on %s.\n"] = "en %s.\n",
["Open"] = "Abierto",
["Open a private message channel:"] = "Abrir mensaje en canal privado:",
["Open charlist automatically when starting client"] = "Abrir lista de players automaticamente al iniciar el cliente",
["Open charlist automatically when starting client"] = "Abrir lista de jugadores autom<EFBFBD>ticamente al iniciar el cliente",
["Open in new window"] = "Abrir en nueva ventana",
["Open new channel"] = "Abrir nuevo canal",
["Options"] = "Opciones",
["Overview"] = "Descripcion",
["Overview"] = "Descripci<EFBFBD>n",
["Pass Leadership to %s"] = "Pasar liderazgo a %s",
["Password"] = "Contrase<EFBFBD>a",
["Piece Price:"] = "Precio por pieza:",
["Please enter a character name:"] = "Por favor ingresar nombre del player:",
["Please enter a character name:"] = "Por favor ingresar nombre del jugador:",
["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 selecciona",
["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 espera",
["Please Select"] = "Por favor seleccione",
["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 wait"] = "Por favor espere",
["Port"] = "Puerto",
["Position:"] = "Posici<EFBFBD>n:",
["Position: %i %i %i"] = "Posici<EFBFBD>n: %i %i %i",
["Premium Account (%s) days left"] = "Premium Accoun restan dias (%s)",
["Premium Account (%s) days left"] = "Tienes (%s) d<>as de Premium Account restantes",
["Price:"] = "Precio:",
["Primary"] = "Primario",
["Protocol"] = "Protocolo",
["Quest Log"] = "Quest Log",
["Quest Log"] = "Quest Log", --Unique name
["Randomize"] = "Combinar",
["Randomize characters outfit"] = "Combinar oufit del jugador",
["Reason:"] = "Reason:",
["Randomize characters outfit"] = "Combinar vestimenta del jugador",
["Reason:"] = "Raz<EFBFBD>n:",
["Refresh"] = "Refrescar",
["Refresh Offers"] = "Refrescar ofertas",
["Regeneration Time"] = "Tiempo de regeneraci<63>n",
@@ -254,13 +256,13 @@ locale = {
["Remove"] = "Remover",
["Remove %s"] = "Remover %s",
["Report Bug"] = "Reportar error",
["Reserved for more functionality later."] = "eservado para una funcion futura.",
["Reserved for more functionality later."] = "Reservado para una funci<EFBFBD>n futura.",
["Reset Market"] = "Reiniciar mercado",
["Revoke %s\'s Invitation"] = "Anular %s\'s invitaci<63>n",
["Rotate"] = "Rotar",
["Rule Violation"] = "Violacion de regla",
["Save"] = "Salvar",
["Save Messages"] = "Salvar mensaje",
["Rule Violation"] = "Violaci<EFBFBD>n del reglamento",
["Save"] = "Guardar",
["Save Messages"] = "Guardar mensaje",
["Search:"] = "Buscar:",
["Search all items"] = "Buscar todos los objetos",
["Secondary"] = "Secundario",
@@ -268,24 +270,24 @@ locale = {
["Select Outfit"] = "Seleccionar outfit",
["Select your language"] = "Selectionar tu lenguaje",
["Sell"] = "Vender",
["Sell Now"] = "Vender ya",
["Sell Now"] = "Vender ahora",
["Sell Offers"] = "Ofertas de venta",
["Send"] = "Enviar",
["Send automatically"] = "Enviar automaticamente",
["Send automatically"] = "Enviar autom<EFBFBD>ticamente",
["Send Message"] = "Enviar mensaje",
["Server"] = "Server",
["Server Log"] = "Server Log",
["Set Outfit"] = "Fijar outfit",
["Server"] = "Server", --Unique name
["Server Log"] = "Server Log", --Unique name
["Set Outfit"] = "Escoger vestimenta",
["Shielding"] = "Escudo",
["Show all items"] = "Mostrar todos los objetos",
["Show connection ping"] = "Mostrar ping de conexi<78>n",
["Show Depot Only"] = "Mostrar solo el Depot",
["Show event messages in console"] = "Mostrar mensajes de evento en consola",
["Show frame rate"] = "Mostrar velocidad por cuadro",
["Show frame rate"] = "Mostrar informaci<EFBFBD>n de cuadros por secundo",
["Show info messages in console"] = "Mostrar mensajes de informaci<63>n en consola",
["Show left panel"] = "Mostrar panel izquierdo",
["Show levels in console"] = "Mostrar niveles en consola",
["Show Offline"] = "Mostrar offLine",
["Show Offline"] = "Mostrar Desconectados",
["Show private messages in console"] = "Mostrar mensajes privados en consola",
["Show private messages on screen"] = "Mostrar mensajes privados en pantalla",
["Show Server Messages"] = "Mostrar mensajes del servidor",
@@ -295,26 +297,26 @@ locale = {
["Show your depot items only"] = "Mostrar solo tus objetos en depot",
["Skills"] = "Habilidades",
["Soul"] = "Soul",
["Soul Points"] = "Puntos de 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"
["Special"] = "Especial",
["Speed"] = "Velocidad",
["Spell Cooldowns"] = "Spells Cooldowns",
["Spell List"] = "Lista de spells",
["Stamina"] = "Stamina",
["Spell Cooldowns"] = "Spells Cooldowns", --Could be "Tiempo de recarga para los hechizos".
["Spell List"] = "Lista de hechizos",
["Stamina"] = "Resistencia",
["Statement:"] = "Comentario:",
["Statement Report"] = "Statement Report",
["Statistics"] = "Estadisticas",
["Statement Report"] = "Statement Report", --Could be "reporte del comentario"
["Statistics"] = "Estad<EFBFBD>sticas",
["Stop Attack"] = "Detener ataque",
["Stop Follow"] = "Detener persecucion",
["Stop Follow"] = "Detener persecuci<EFBFBD>n",
["Support"] = "Soporte",
["%s: (use object)"] = "%s: (usar objeto)",
["%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 with crosshair)"] = "%s: (usar objeto en aire)",
["%s: (use object with crosshair)"] = "%s: (usar objeto con punto de mira)",
["Sword Fighting"] = "Combate de espada",
["Terminal"] = "Terminal",
["There is no way."] = "No hay ninguna manera.",
["Title"] = "T<EFBFBD>tulo",
["Title"] = "Titulo",
["Total Price:"] = "Total total:",
["Trade"] = "Intercambio",
["Trade with ..."] = "Intercambiar con ...",
@@ -322,55 +324,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 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-",
["Unignore"] = "Desactivar ignorado",
["Unignore"] = "Dejar de ignorar",
["Unload"] = "No cargado",
["Update needed"] = "Es necesario actualizar",
["Use"] = "Uso",
["Use on target"] = "Usar en un objetivo",
["Use on yourself"] = "Usar en mi mismo",
["Use with ..."] = "Usar en ...",
["Version"] = "Version",
["Version"] = "Versi<EFBFBD>n",
["VIP List"] = "Lista Vip",
["Voc."] = "Voc.",
["Vocation"] = "Vocaci<EFBFBD>n",
["Waiting List"] = "Lista de espera",
["Website"] = "Sitio WEB",
["Website"] = "Sitio Web",
["Weight:"] = "Peso:",
["Will detect when to use diagonal step based on the\nkeys you are pressing"] = "Detectar cuando se camina en diagonal usando las flechas",
["Will detect when to use diagonal step based on the\nkeys you are pressing"] = "Detectara cuando se camina en diagonal usando las flechas",
["With crosshair"] = "Con punto de mira",
["Yes"] = "Si",
["You are bleeding"] = "Tu estas sangrado",
["You are burning"] = "Tu estas quemado",
["You are bleeding"] = "Te estas desangrando",
["You are burning"] = "Te estas quemando",
["You are cursed"] = "Tu estas maldecido",
["You are dazzled"] = "Tu estas deslumbrado",
["You are dead."] = "Tu estas muerto.",
["You are dead"] = "Tu estas muerto",
["You are drowning"] = "Tu estas ahotado",
["You are drunk"] = "Tu estas borracho",
["You are electrified"] = "Tu estas electrificado",
["You are freezing"] = "Tu estas congelado",
["You are hasted"] = "Tu estas rapido",
["You are drowning"] = "Te estas ahogando",
["You are drunk"] = "Tu estas ebrio",
["You are electrified"] = "Tu estas electrocutado",
["You are freezing"] = "Te estas congelando",
["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 hungry"] = "Tu estas hambriento",
["You are paralysed"] = "Tu estas paralizado",
["You are poisoned"] = "Tu estas envenedado",
["You are protected by a magic shield"] = "Tu estas protegido por un campo magico",
["You are protected by a magic shield"] = "Tu estas protegido por un escudo m<EFBFBD>gico",
["You are strengthened"] = "Tu estas reforzado",
["You are within a protection zone"] = "Tu estas dentro de una zona segura",
["You can enter new text."] = "Tu puedes introducir un texto nuevo.",
["You have %s percent"] = "Tu tienes %s porciento",
["You have %s percent to go"] = "Tu tienes %s porciento para ir",
["You are within a protection zone"] = "Tu estas dentro de una zona de protecci<63>n",
["You can enter new text."] = "Tu puedes ingresar un texto nuevo.",
["You have %s percent"] = "Tu tienes %s por ciento",
["You have %s percent to go"] = "Tu tienes %s por ciento para ir",
["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 must enter a comment."] = "Debes introducir un comentario.",
["You must enter a valid server address and port."] = "Debes introducir una direcci<63>n v<>lida de servidor y el puerto.",
["You must enter a comment."] = "Debes ingresar 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 select a character to login!"] = "<EFBFBD>Debes seleccionar un personaje para ingresar!",
["Your Capacity:"] = "Tu capacidad:",
["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"] = "Uno lee lo siguiente, escrito en \n%s\n",
["You read the following, written by \n%s\n"] = "Lees lo siguiente, escrito por \n%s\n",
["You read the following, written on \n%s.\n"] = "Lees lo siguiente, escrito en \n%s\n",
["Your Money:"] = "Tu dinero:",
["Change language"] = "Cambiar idioma",
["Don't stretch or shrink Game Window"] = "No estirar o encoger Ventana de Juego"
}
}
modules.client_locales.installLocale(locale)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -39,3 +39,45 @@ PopupMenu < UIPopupMenu
image-source: /images/ui/menubox
image-border: 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
__class: UISpinBox
text-align: left
size: 86 20
size: 86 22
padding: 0
padding-left: 2
Button
id: up
size: 10 10
size: 11 11
image-source: /images/ui/spinbox_up
image-border: 1
image-clip: 0 0 10 10
@@ -21,7 +21,7 @@ SpinBox < TextEdit
Button
id: down
size: 10 10
size: 11 11
image-source: /images/ui/spinbox_down
image-border: 1
image-clip: 0 0 10 10

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -79,6 +79,10 @@ function onConnect(protocol)
post = post .. '&window_height=' .. g_window.getHeight()
post = post .. '&player_name=' .. g_game.getCharacterName()
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_revision=' .. g_app.getBuildRevision()
post = post .. '&build_commit=' .. g_app.getBuildCommit()

View File

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

View File

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

View File

@@ -0,0 +1,73 @@
-- @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,12 +14,14 @@ Module
dofile 'const'
dofile 'util'
dofile 'globals'
dofile 'config'
dofile 'settings'
dofile 'keyboard'
dofile 'mouse'
dofile 'net'
dofiles 'classes'
dofiles 'ui'
dofile 'inputmessage'
dofile 'outputmessage'
dofile 'outputmessage'

View File

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

View File

@@ -1,86 +1,3 @@
-- @docclass
g_settings = {}
g_settings = makesingleton(g_configs.getSettings())
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
-- Reserved for future functionality

View File

@@ -20,8 +20,8 @@ function string:starts(start)
return string.sub(self, 1, #start) == start
end
function string.ends(s, test)
return test =='' or string.sub(s,-string.len(test)) == test
function string:ends(test)
return test =='' or string.sub(self,-string.len(test)) == test
end
function string:trim()
@@ -49,3 +49,11 @@ function string:explode(sep, limit)
table.insert(t, tmp)
return t
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)
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
end
if v == value then return k end
@@ -64,7 +64,7 @@ end
function table.findbykey(t, key, lowercase)
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
end
if k == key then return v end
@@ -149,7 +149,7 @@ function table.size(t)
for i, n in pairs(t) do
size = size + 1
end
return size
end
@@ -157,6 +157,7 @@ function table.tostring(t)
local maxn = #t
local str = ""
for k,v in pairs(t) do
v = tostring(v)
if k == maxn and k ~= 1 then
str = str .. " and " .. v
elseif maxn > 1 and k ~= 1 then
@@ -181,3 +182,11 @@ function table.collect(t, func)
return res
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
UIButton = extends(UIWidget)
UIButton = extends(UIWidget, "UIButton")
function UIButton.create()
local button = UIButton.internalCreate()

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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