• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

OTClient 1.0

A lot of things have changed since last time 10 years ago when in was active in the ot scene.

I’m mostly back because of nostalgia and I miss the times, but everyone is more or less divided and split.

Was so shocked to see a 5k tibia client....... on an era where games like Tibia is dead, thought it was a joke and people actually paid for it.

Stuff like this wouldn’t have happened if only people came together.

I can’t do much codes, but I’d rather contribute with funds, small or big to people like you Mehah, who works for free, and i will keep on doing it.
 
I come to present the new lighting system that is still under development, some adjustments are missing.

as i don't know opengl and i don't intend to learn for now, i remade the light system using the same algorithm that uses bubble textures and yes the performance is ok.

light.png
light2.png
light3.png


Bonus (Performance Test)
otclient.exe = new light system
otclient8x6.exe = old light system
perforamance.png
 
Last edited:
the new light system is already on github.

Version 1 = Old light system
Version 2 = New Light System

- Versions to be made
Version 3 = Multiple lights in the same SQM
Version 4 = Light system with lock, the lights do not pass through the walls.

light1.png

Note: there are some visual defects that I already know and that I will correct in the future.
 
Anyone run into issues trying to compile using this


I think that compiling guide is outdated (you need 2019 now to compile mehans) + getting missing includes errors
 
Last edited:
Anyone run into issues trying to compile using this


I think that compiling guide is outdated (you need 2019 now to compile mehans) + getting missing includes errors
Can u screen the errors? perhaps i have run into similar problems, but i have managed to compile it.
 
Can u screen the errors? perhaps i have run into similar problems, but i have managed to compile it.
Im a retard, i figured it out. Heres my little personal guide maybe it helps someone. I was following the guide so well i was compiling edubarts client instead of mehans by mistake haha. Its written for me for the future so dont expect great detail.


Create folder in C drive - Call it What ever - You need MSV2019 (not 2017)
1. Open Git Bash here in the created folder and paste "git clone microsoft/vcpkg (https://github.com/Microsoft/vcpkg)"
2. Open directory vcpkg in file explorer
3. In directory vcpkg open power shell (type power shell in adress bar)
4. paste .\bootstrap-vcpkg.bat - wait for install to finish
5. paste .\vcpkg integrate install - wait for install to finish (anti virus prob go ape shit)
6. open directory vcpkg if not already inand git bash here "git clone --recursive mehah/otclient (https://github.com/mehah/otclient.git)" (this will create otlcient directory with sources)
7. in the same directory vcpkg open power shell and paste this command (for 64 bit client) " .\vcpkg install boost-iostreams:x64-windows boost-asio:x64-windows boost-system:x64-windows boost-variant:x64-windows boost-lockfree:x64-windows luajit:x64-windows glew:x64-windows boost-filesystem:x64-windows boost-uuid:x64-windows physfs:x64-windows openal-soft:x64-windows libogg:x64-windows libvorbis:x64-windows zlib:x64-windows opengl:x64-windows"
8. Step 7 takes a while go watch netflix or something Gyazo (https://gyazo.com/3baf4b0e75d4673cdcbf7dc4294c01b7)
9. Open vc14/otclient.vcxproj. This should launch Visual Studio.
10. Choose build configuration from the drop downs Release and x64. For best performance choose Release & x64.
11. Menu > Build > Build
12. Cry tears of joys its now all over
 
Last edited:
News:

[Anti-Aliasing Option]
OFF:
1615519897192.png
ON:
1615519933833.png

[Render Scale System + Anti-Aliasing ON]
50%:
1615520097296.png
100%:
1615519983148.png

200%
1615520004954.png

note: the rendering scale system is a fake, it is not the real one (upscaling / downscale), but at 200% it gives a slight improvement in the visual.

 
Last edited:
how to compile this on debian?
 
First of all I apologize for the delay, I have been very busy lately and starting next week I will be even more, but as promised, I will show you version 3 of the Lighting system, some adjustments are missing, like the border and with some minimal visual bugs .


Version 3 is on this branch for testing:
 
The new light system is now in the cache-for-all branch, with some improvements, but some adjustments are still missing, I decided to hurry even with some minor defects, but it is better than the previous versions.


[3.0 vs 3.1]
1616542131905.png1616542039069.png

1616542194079.png1616542212999.png


v1.png
1616542260490.png
 
couldn't compile your sources:
Code:
In file included from /home/strikker/otclient/src/client/thing.h:26:0,
                 from /home/strikker/otclient/src/client/animatedtext.h:29,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:23:
/home/strikker/otclient/src/framework/../framework/graphics/framebuffer.h:67:26: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const bool canUpdate();
                          ^
/home/strikker/otclient/src/framework/../framework/graphics/framebuffer.h:78:29: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const uint8_t flushTime();
                             ^
In file included from /home/strikker/otclient/src/client/global.h:30:0,
                 from /home/strikker/otclient/src/client/declarations.h:28,
                 from /home/strikker/otclient/src/client/thing.h:28,
                 from /home/strikker/otclient/src/client/animatedtext.h:29,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:23:
/home/strikker/otclient/src/client/position.h: In constructor ‘Position::Position()’:
/home/strikker/otclient/src/client/position.h:36:20: error: ‘_UI16_MAX’ was not declared in this scope
     Position() : x(_UI16_MAX), y(_UI16_MAX), z(_UI8_MAX) {}
                    ^~~~~~~~~
/home/strikker/otclient/src/client/position.h:36:48: error: ‘_UI8_MAX’ was not declared in this scope
     Position() : x(_UI16_MAX), y(_UI16_MAX), z(_UI8_MAX) {}
                                                ^~~~~~~~
In file included from /home/strikker/otclient/src/client/global.h:30:0,
                 from /home/strikker/otclient/src/client/declarations.h:28,
                 from /home/strikker/otclient/src/client/thing.h:28,
                 from /home/strikker/otclient/src/client/animatedtext.h:29,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:23:
/home/strikker/otclient/src/client/position.h: In member function ‘bool Position::isMapPosition() const’:
/home/strikker/otclient/src/client/position.h:195:63: warning: comparison is always true due to limited range of data type [-Wtype-limits]
     bool isMapPosition() const { return x >= 0 && y >= 0 && z >= 0 && x < _UI16_MAX&& y < _UI16_MAX&& z <= Otc::MAX_Z; }
                                                             ~~^~~~
/home/strikker/otclient/src/client/position.h:195:75: error: ‘_UI16_MAX’ was not declared in this scope
     bool isMapPosition() const { return x >= 0 && y >= 0 && z >= 0 && x < _UI16_MAX&& y < _UI16_MAX&& z <= Otc::MAX_Z; }
                                                                           ^~~~~~~~~
/home/strikker/otclient/src/client/position.h: In member function ‘bool Position::isValid() const’:
/home/strikker/otclient/src/client/position.h:196:42: error: ‘_UI16_MAX’ was not declared in this scope
     bool isValid() const { return !(x == _UI16_MAX && y == _UI16_MAX && z == _UI8_MAX); }
                                          ^~~~~~~~~
/home/strikker/otclient/src/client/position.h:196:78: error: ‘_UI8_MAX’ was not declared in this scope
     bool isValid() const { return !(x == _UI16_MAX && y == _UI16_MAX && z == _UI8_MAX); }
                                                                              ^~~~~~~~
/home/strikker/otclient/src/client/position.h: In member function ‘bool Position::coveredUp(int8)’:
/home/strikker/otclient/src/client/position.h:269:29: error: ‘_UI16_MAX’ was not declared in this scope
         if(nx >= 0 && nx <= _UI16_MAX && ny >= 0 && ny <= _UI16_MAX && nz >= 0 && nz <= Otc::MAX_Z) {
                             ^~~~~~~~~
/home/strikker/otclient/src/client/position.h: In member function ‘bool Position::coveredDown(int8)’:
/home/strikker/otclient/src/client/position.h:281:29: error: ‘_UI16_MAX’ was not declared in this scope
         if(nx >= 0 && nx <= _UI16_MAX && ny >= 0 && ny <= _UI16_MAX && nz >= 0 && nz <= Otc::MAX_Z) {
                             ^~~~~~~~~
In file included from /home/strikker/otclient/src/client/thing.h:29:0,
                 from /home/strikker/otclient/src/client/animatedtext.h:29,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:23:
/home/strikker/otclient/src/client/thingtype.h: In member function ‘bool ThingType::isOpaque()’:
/home/strikker/otclient/src/client/thingtype.h:211:61: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
     bool isOpaque() { return isFullGround() || hasTexture() && getTexture(0)->isOpaque(); }
                                                ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/strikker/otclient/src/client/mapview.h:31:0,
                 from /home/strikker/otclient/src/client/creature.h:31,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:26:
/home/strikker/otclient/src/client/lightview.h: At global scope:
/home/strikker/otclient/src/client/lightview.h:34:35: error: ‘_UI8_MAX’ was not declared in this scope
     MAX_AMBIENT_LIGHT_INTENSITY = _UI8_MAX
                                   ^~~~~~~~
/home/strikker/otclient/src/client/lightview.h: In constructor ‘PositionLight::PositionLight(int8, int8, float)’:
/home/strikker/otclient/src/client/lightview.h:45:47: error: ‘_UI8_MAX’ was not declared in this scope
         Position::x = x, Position::y = y, z = _UI8_MAX;
                                               ^~~~~~~~
In file included from /home/strikker/otclient/src/client/creature.h:34:0,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:26:
/home/strikker/otclient/src/client/tile.h: At global scope:
/home/strikker/otclient/src/client/tile.h:93:32: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const int getDrawElevation() { return m_drawElevation; }
                                ^
/home/strikker/otclient/src/client/tile.h:155:37: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const bool hasBorderShadowColor() { return m_borderShadowColor != Color::white; }
                                     ^
/home/strikker/otclient/src/client/tile.h:157:26: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const bool isCovered() { return m_covered; };
                          ^
/home/strikker/otclient/src/client/tile.h:158:27: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const bool blockLight() { return m_countFlag.hasNoWalkableEdge && !hasGround(); };
                           ^
/home/strikker/otclient/src/client/tile.h:159:26: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const bool hasGround() { return getGround() != nullptr; };
                          ^
CMakeFiles/otclient.dir/build.make:2534: recipe for target 'CMakeFiles/otclient.dir/src/client/luafunctions.cpp.o' failed
make[2]: *** [CMakeFiles/otclient.dir/src/client/luafunctions.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/otclient.dir/all' failed
make[1]: *** [CMakeFiles/otclient.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
 
couldn't compile your sources:
Code:
In file included from /home/strikker/otclient/src/client/thing.h:26:0,
                 from /home/strikker/otclient/src/client/animatedtext.h:29,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:23:
/home/strikker/otclient/src/framework/../framework/graphics/framebuffer.h:67:26: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const bool canUpdate();
                          ^
/home/strikker/otclient/src/framework/../framework/graphics/framebuffer.h:78:29: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const uint8_t flushTime();
                             ^
In file included from /home/strikker/otclient/src/client/global.h:30:0,
                 from /home/strikker/otclient/src/client/declarations.h:28,
                 from /home/strikker/otclient/src/client/thing.h:28,
                 from /home/strikker/otclient/src/client/animatedtext.h:29,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:23:
/home/strikker/otclient/src/client/position.h: In constructor ‘Position::Position()’:
/home/strikker/otclient/src/client/position.h:36:20: error: ‘_UI16_MAX’ was not declared in this scope
     Position() : x(_UI16_MAX), y(_UI16_MAX), z(_UI8_MAX) {}
                    ^~~~~~~~~
/home/strikker/otclient/src/client/position.h:36:48: error: ‘_UI8_MAX’ was not declared in this scope
     Position() : x(_UI16_MAX), y(_UI16_MAX), z(_UI8_MAX) {}
                                                ^~~~~~~~
In file included from /home/strikker/otclient/src/client/global.h:30:0,
                 from /home/strikker/otclient/src/client/declarations.h:28,
                 from /home/strikker/otclient/src/client/thing.h:28,
                 from /home/strikker/otclient/src/client/animatedtext.h:29,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:23:
/home/strikker/otclient/src/client/position.h: In member function ‘bool Position::isMapPosition() const’:
/home/strikker/otclient/src/client/position.h:195:63: warning: comparison is always true due to limited range of data type [-Wtype-limits]
     bool isMapPosition() const { return x >= 0 && y >= 0 && z >= 0 && x < _UI16_MAX&& y < _UI16_MAX&& z <= Otc::MAX_Z; }
                                                             ~~^~~~
/home/strikker/otclient/src/client/position.h:195:75: error: ‘_UI16_MAX’ was not declared in this scope
     bool isMapPosition() const { return x >= 0 && y >= 0 && z >= 0 && x < _UI16_MAX&& y < _UI16_MAX&& z <= Otc::MAX_Z; }
                                                                           ^~~~~~~~~
/home/strikker/otclient/src/client/position.h: In member function ‘bool Position::isValid() const’:
/home/strikker/otclient/src/client/position.h:196:42: error: ‘_UI16_MAX’ was not declared in this scope
     bool isValid() const { return !(x == _UI16_MAX && y == _UI16_MAX && z == _UI8_MAX); }
                                          ^~~~~~~~~
/home/strikker/otclient/src/client/position.h:196:78: error: ‘_UI8_MAX’ was not declared in this scope
     bool isValid() const { return !(x == _UI16_MAX && y == _UI16_MAX && z == _UI8_MAX); }
                                                                              ^~~~~~~~
/home/strikker/otclient/src/client/position.h: In member function ‘bool Position::coveredUp(int8)’:
/home/strikker/otclient/src/client/position.h:269:29: error: ‘_UI16_MAX’ was not declared in this scope
         if(nx >= 0 && nx <= _UI16_MAX && ny >= 0 && ny <= _UI16_MAX && nz >= 0 && nz <= Otc::MAX_Z) {
                             ^~~~~~~~~
/home/strikker/otclient/src/client/position.h: In member function ‘bool Position::coveredDown(int8)’:
/home/strikker/otclient/src/client/position.h:281:29: error: ‘_UI16_MAX’ was not declared in this scope
         if(nx >= 0 && nx <= _UI16_MAX && ny >= 0 && ny <= _UI16_MAX && nz >= 0 && nz <= Otc::MAX_Z) {
                             ^~~~~~~~~
In file included from /home/strikker/otclient/src/client/thing.h:29:0,
                 from /home/strikker/otclient/src/client/animatedtext.h:29,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:23:
/home/strikker/otclient/src/client/thingtype.h: In member function ‘bool ThingType::isOpaque()’:
/home/strikker/otclient/src/client/thingtype.h:211:61: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
     bool isOpaque() { return isFullGround() || hasTexture() && getTexture(0)->isOpaque(); }
                                                ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/strikker/otclient/src/client/mapview.h:31:0,
                 from /home/strikker/otclient/src/client/creature.h:31,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:26:
/home/strikker/otclient/src/client/lightview.h: At global scope:
/home/strikker/otclient/src/client/lightview.h:34:35: error: ‘_UI8_MAX’ was not declared in this scope
     MAX_AMBIENT_LIGHT_INTENSITY = _UI8_MAX
                                   ^~~~~~~~
/home/strikker/otclient/src/client/lightview.h: In constructor ‘PositionLight::PositionLight(int8, int8, float)’:
/home/strikker/otclient/src/client/lightview.h:45:47: error: ‘_UI8_MAX’ was not declared in this scope
         Position::x = x, Position::y = y, z = _UI8_MAX;
                                               ^~~~~~~~
In file included from /home/strikker/otclient/src/client/creature.h:34:0,
                 from /home/strikker/otclient/src/client/luafunctions.cpp:26:
/home/strikker/otclient/src/client/tile.h: At global scope:
/home/strikker/otclient/src/client/tile.h:93:32: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const int getDrawElevation() { return m_drawElevation; }
                                ^
/home/strikker/otclient/src/client/tile.h:155:37: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const bool hasBorderShadowColor() { return m_borderShadowColor != Color::white; }
                                     ^
/home/strikker/otclient/src/client/tile.h:157:26: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const bool isCovered() { return m_covered; };
                          ^
/home/strikker/otclient/src/client/tile.h:158:27: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const bool blockLight() { return m_countFlag.hasNoWalkableEdge && !hasGround(); };
                           ^
/home/strikker/otclient/src/client/tile.h:159:26: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
     const bool hasGround() { return getGround() != nullptr; };
                          ^
CMakeFiles/otclient.dir/build.make:2534: recipe for target 'CMakeFiles/otclient.dir/src/client/luafunctions.cpp.o' failed
make[2]: *** [CMakeFiles/otclient.dir/src/client/luafunctions.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/otclient.dir/all' failed
make[1]: *** [CMakeFiles/otclient.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
Use VS With vcpkg
 
Use VS With vcpkg

I'm not using VS (visual studio?)

I'm using linux

I just running:
Code:
rm -rf build && mkdir -p build && cd build && cmake .. && make

How to do it on linux?
 
I like alot, i have a little question, there will be any protection method in the future to encrypt files? and some updater module?

Grettings!
 
I'm not using VS (visual studio?)

I'm using linux

I just running:
Code:
rm -rf build && mkdir -p build && cd build && cmake .. && make

How to do it on linux?
I imagined, I do not use Linux, but I will soon correct these errors pointed out by you.

I like alot, i have a little question, there will be any protection method in the future to encrypt files? and some updater module?

Grettings!
not on my part, the community has to start moving.
 
I imagined, I do not use Linux, but I will soon correct these errors pointed out by you.


not on my part, the community has to start moving.

Okey :(

Post here when u fix ;)

---

What about:
Code:
3- Possible True OTML, using HTML and CSS writing. (Maybe I won't have time for this)

Is it done? Did u start?

I think its so important ^^
 
Okey :(

Post here when u fix ;)

---

What about:
Code:
3- Possible True OTML, using HTML and CSS writing. (Maybe I won't have time for this)

Is it done? Did u start?

I think its so important ^^
I think, that's stupid idea, whole widget management would be changed and we will have web browser instead of otclient. Current approach is a way better than Css+HTML
 
I think, that's stupid idea, whole widget management would be changed and we will have web browser instead of otclient. Current approach is a way better than Css+HTML

A lot of people know web tecs, with this feature a lot of web front ends could make a lot of stuff for otc
 
Back
Top