• 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!

Moving towards OTC

What should we do


  • Total voters
    57
  • Poll closed .
Status
Not open for further replies.
Maybe i ask where the client will get the mana value? TFS send the health every time it change, should send the mana too. This is a server-side feature.
I don't know how Flash Client works, but this should get the value from the server too.

Mana is already sent. You have the mana bar in the right panel, you use the same value for the bar in the game window.
 
Humm, but the mana bar is updated just like the health bar, so the client does in some way keep track of the mana.
The code is so messy so would take me some time to check, but most likely it gets updated when the server sends damage messages etc
I hope you mean what I say the mana bar that already exists, the one to the right above the EQ and below the hp bar.
Indeed. Maybe you can do some hack to it work right now, but the best way of achieving it is sending the amount of percent on the TFS to client know how much the player have atm.
 
Indeed. Maybe you can do some hack to it work right now, but the best way of achieving it is sending the amount of % on the TFS to client know how much the player have atm.

The client already knows current mana and maximum mana. No need for any other information.
 
You guys are right, is possible getting the percent value from the mana which the client already know.
I just did that way because i need monster to have mana too. I mixed things a little :p
 
Indeed. Maybe you can do some hack to it work right now, but the best way of achieving it is sending the amount of percent on the TFS to client know how much the player have atm.

And the same thing goes for that :p
We already have the percetage, that I know is the modules? healthinfo? something like that, that or manainfo?

Edit;
Starting to make some progress with learning OTC atleast haha
https://github.com/WibbenZ/otclient/blob/master/modules/game_healthinfo/healthinfo.lua#L195
 
Humm, but the mana bar is updated just like the health bar, so the client does in some way keep track of the mana.
The code is so messy so would take me some time to check, but most likely it gets updated when the server sends damage messages etc
I hope you mean what I say the mana bar that already exists, the one to the right above the EQ and below the hp bar.
I have Health/Mana, and 2 other Bars that update and you can keep on screen for your own player. and you can add any of these for any creature on screen easily.

If you want Mana Bars on screen, that is VERY simple. I've already done it.
 
I think if we wish to popularize the OT Client we need to make a list of what needs to be done to improve the client, and what features are missing from real tibia.
*A note must be made, that all features added shouldn't conflict with how real tibia itself operates.

Performance Based:
Optimizing the way the OTC draws light.
Compile the client to use DirectX 9. Should increase performance for most people.

OT Client Based:
Create an UI system that loads all the files needed to change the UI display/skin.
Allow an option in the options to set the hotkey bindings used for the OTC itself.
Example: Crtl-G for bringing up character list. I should be able to change the keybinding to whatever I want.

This has been a big issue with players not knowing all the features, or the keybinding themselves.
This is a feature that allows you to save hotkeys to a 'set'.

You should be able to name the set anything you want.
You should be able to set what characters load what hotkey.

The set should actually be a 'file', so that players can share their hotkey lay outs by giving them their hotkey set file.
The minimap should have a different map file for each IP/server it connects to.
The OT Client should pick the mini-map based off of what IP is connected too.
This is to make it so maps don't get drawn over.

Furthermore, players should be able to load different map file, and save map files, so they can easily be shared.
Save log features should save the logs to a folder of the servers IP name, so they don't just save to one file.

This is an organizational issue.
The player should be able to set the amount of time different text messages show on the game window.

Feature Based:
Make a mana bar, similar to the health bar, visually on characters in the game window.
When hovering your mouse over an item, or a character, it should make a clear box with all the onlook info.
The mouse should have to hover for a few seconds before it makes the box.
A window, similar to the VIP window, that lists all the members of the party, and a symbol for the leader.
A window, similar to the VIP window, that lists all the guild members, green/red for who is online, and markers for leaders and vice leaders.
Basically make elfbot to be inside of the OTC.

Bug Based:
At some point, character sprites are shown mid-step while standing still.

Feel free to add to what you think is needed or missing for the OTC.
 
Last edited:
I added a counter for whenever the OTClient created a new light source.
Here is a video of the results:

Just standing still in an area with NOTHING changes creates about a thousand new light sources in 30 seconds.
So that is about 30 light sources per second (with nothing happening on the screen).

I'm sure if I go into a battle where animations are playing, it would be hundreds or thousands of light sources per second.

Would be interesting to see if I could simply make it not re-draw ANYTHING unless it needs to be re-drawn.
 
I added a counter for whenever the OTClient created a new light source.
Here is a video of the results:

I know it's not relevant to discussion, but I lol'd at "Help For Pussies" :D

Red
 
I am not getting what the video shows me. :(
 
I am not getting what the video shows me. :(

Maybe I am wrong, but I am assuming that every "frame" the otclient draws, it constantly re-draws the lighting on the screen.
There are 3 light sources on my screen and with all the errors my client went down to about 10 frames per second. So it draws the 3 light sources 10 times per second (30 light sources per second).

I don't know much about drawing graphics. But I would assume I could have it draw the entire screen, including lighting. and then only re-draw things when you move, or when a tile has a change made to it.

**EDIT**
If it is possible to be 100% efficient. First you would only re-draw things that change (or are animated).
So for example, on my video, the only tiles that would be being re-drawn, are the ones with animations (the portals and the sparkles). Then lighting would not be re-drawn at all, since there are no changes. Then animations and text of course would draw when they are sent to the client.
 
Last edited:
First glance on github files:
> init.lua

File what loads up other files I guess.
I guess I can compare it with dofile() function we use in LUA.
what does each of these "things" do? no clue
Code:
g_logger
g_resources
g_configs
g_modules

> rest of the files not inside any folder.

seems nothing useful more, either just general project related text or compiling files.

> data folder
I assume this is folder for UI properties and images and whatever required construct the visual UI for players.

-> things

Seems pretty random folder to me. Nothing inside it.

-> cursors
don't know what does these hot-spots means in the .otml file, but its pretty clear you put all cursor changing pictures here.

-> fonts
don't understand these files. I guess will come clear related when we want some specific style text to be used somewhere.

-> images
Seems to store pictures for everything. I like the way its organized.
Unclear to me how some pictures will be cut (some pictures hold more than 1 picture), but once again I believe we will see how its done later.
background.png - picture for the client offline screen.
clienticon.png - picture for the .exe file icon
etc.

-> locales
Each file translates string to different language
not sure how does it translate but my guess is:
when it finds a full string what matches with the translator key then it changes the string if value given.

-> particles
Don't get it.
particles.png - no clue what am I seeing here.
particles.otps - something to do with cooldowns. However no idea what, when and how it does whatever it suppose to do.

-> sounds
holds a sound files.
currently only see one which only works on the login screen?

-> styles
Seems to be file what uses and coordinates the images where will be shown and when will they be shown.

some lines I tried to understand:
Button < UIButton

I guess button means a regular button and inside a group called UIButton.

font: verdana-11px-antialised
text font. Noticed that these fonts called here are taken from the folder fonts.

color: #dfdfdfff
I believe these were called hex colors. not too sure though xD

size: 106 23
seems like the client will split the values from spaces everywhere.
However what does these numbers mean? no clue.
I don't see any position. Maybe there are x and y pos for the image?
Or this simply means how far stretched the button area will be and the position is given elsewhere?
Hopefully will understand later.

text-offset: 0 0
Not sure why has to be mentioned in first place if no values given.
and what it suppose to anyway? move the image itself or the so called clickable area or both?

image-source: /images/ui/button
location for the image. Note that the image is holding 3 images in row 1 darker than another.

image-color: #dfdfdf
color again. Maybe it gives the color for the image border because pictures has these edges where there is no color

image-clip: 0 0 22 23
Ok seems we have our answer how the images are cut.
But what does each of these values mean separately. no idea.
I guess this clipping takes image between pixel 0 and 22 and 0 and 23

image-border: 3
gives the image a border?
and maybe the border is like 3 pixels wide?
border color either black or the image color mentioned before.

padding: 5 10 5 10
uh.. wth is that suppose to be xD

opacity: 1.0
well by the looks of it seems number 1.0 means no opacity and the smaller value is the more is shows trough.
and I guess shows trough the image. (does it include the image color or not, yet to be known)

$hover !disabled:
I guess when mouse is over the image then it does something. in this case: image-clip: 0 23 22 23
clips the main image from different spot

$pressed:
So buttons can have 2 values, pressed or not pressed, seems like no holding down option.

$disabled:
That seems random?
How does 1 disable a button? like no button at all? or wut? and how xD

------------
TabButton < UIButton

I guess TabButton is a name given to button and inside a group called UIButton.

$hover !on:
Eeh, why make it confusing.. we already had hover !diabled and now we have this.
What hower does what now?

$disabled:
Again this unknown disabled thing.

$on:
we have this $pressed
why we need $on? aren't they the same thing?

---------
TopMenuButtonsPanel < Panel

a button inside group panel

layout:
type: horizontalBox
spacing: 4
fit-children: true

O boy, i think it has to do something with the group it came from. (in this case it was panel)

------------
TopMenuFrameCounterLabel < Label

a specific picture inside group label

color: white
seems we can use keywords for colors too. not just hex values.

margin-top: 4

no idea what is this

margin-left: 5

no idea what is this

---------
some more lines:
icon-color: #ffffffff

icon what? there is image and there background and there is border. Where we take this icon from?
and what does it do for our images.

focusable: false
uhm? no mouse hover?

height: 36
Height of what?

width: 50

Width of what?

phantom: true
the what?
I will look into another files tomorrow or so, looking just these files took quite some time.
 
First glance on github files:
> init.lua

File what loads up other files I guess.
I guess I can compare it with dofile() function we use in LUA.
what does each of these "things" do? no clue
Code:
g_logger
g_resources
g_configs
g_modules

> rest of the files not inside any folder.

seems nothing useful more, either just general project related text or compiling files.

> data folder
I assume this is folder for UI properties and images and whatever required construct the visual UI for players.

-> things

Seems pretty random folder to me. Nothing inside it.

-> cursors
don't know what does these hot-spots means in the .otml file, but its pretty clear you put all cursor changing pictures here.

-> fonts
don't understand these files. I guess will come clear related when we want some specific style text to be used somewhere.

-> images
Seems to store pictures for everything. I like the way its organized.
Unclear to me how some pictures will be cut (some pictures hold more than 1 picture), but once again I believe we will see how its done later.
background.png - picture for the client offline screen.
clienticon.png - picture for the .exe file icon
etc.

-> locales
Each file translates string to different language
not sure how does it translate but my guess is:
when it finds a full string what matches with the translator key then it changes the string if value given.

-> particles
Don't get it.
particles.png - no clue what am I seeing here.
particles.otps - something to do with cooldowns. However no idea what, when and how it does whatever it suppose to do.

-> sounds
holds a sound files.
currently only see one which only works on the login screen?

-> styles
Seems to be file what uses and coordinates the images where will be shown and when will they be shown.

some lines I tried to understand:
Button < UIButton

I guess button means a regular button and inside a group called UIButton.

font: verdana-11px-antialised
text font. Noticed that these fonts called here are taken from the folder fonts.

color: #dfdfdfff
I believe these were called hex colors. not too sure though xD

size: 106 23
seems like the client will split the values from spaces everywhere.
However what does these numbers mean? no clue.
I don't see any position. Maybe there are x and y pos for the image?
Or this simply means how far stretched the button area will be and the position is given elsewhere?
Hopefully will understand later.

text-offset: 0 0
Not sure why has to be mentioned in first place if no values given.
and what it suppose to anyway? move the image itself or the so called clickable area or both?

image-source: /images/ui/button
location for the image. Note that the image is holding 3 images in row 1 darker than another.

image-color: #dfdfdf
color again. Maybe it gives the color for the image border because pictures has these edges where there is no color

image-clip: 0 0 22 23
Ok seems we have our answer how the images are cut.
But what does each of these values mean separately. no idea.
I guess this clipping takes image between pixel 0 and 22 and 0 and 23

image-border: 3
gives the image a border?
and maybe the border is like 3 pixels wide?
border color either black or the image color mentioned before.

padding: 5 10 5 10
uh.. wth is that suppose to be xD

opacity: 1.0
well by the looks of it seems number 1.0 means no opacity and the smaller value is the more is shows trough.
and I guess shows trough the image. (does it include the image color or not, yet to be known)

$hover !disabled:
I guess when mouse is over the image then it does something. in this case: image-clip: 0 23 22 23
clips the main image from different spot

$pressed:
So buttons can have 2 values, pressed or not pressed, seems like no holding down option.

$disabled:
That seems random?
How does 1 disable a button? like no button at all? or wut? and how xD

------------
TabButton < UIButton

I guess TabButton is a name given to button and inside a group called UIButton.

$hover !on:
Eeh, why make it confusing.. we already had hover !diabled and now we have this.
What hower does what now?

$disabled:
Again this unknown disabled thing.

$on:
we have this $pressed
why we need $on? aren't they the same thing?

---------
TopMenuButtonsPanel < Panel

a button inside group panel

layout:
type: horizontalBox
spacing: 4
fit-children: true

O boy, i think it has to do something with the group it came from. (in this case it was panel)

------------
TopMenuFrameCounterLabel < Label

a specific picture inside group label

color: white
seems we can use keywords for colors too. not just hex values.

margin-top: 4

no idea what is this

margin-left: 5

no idea what is this

---------
some more lines:
icon-color: #ffffffff

icon what? there is image and there background and there is border. Where we take this icon from?
and what does it do for our images.

focusable: false
uhm? no mouse hover?

height: 36
Height of what?

width: 50

Width of what?

phantom: true
the what?
I will look into another files tomorrow or so, looking just these files took quite some time.

Most of the things you wrote about are CSS coding, you can read about it here: https://github.com/edubart/otclient/wiki/Module-Tutorial#otui
But it will take some time before the "new" people will fully understand the layout of OTC.
 
Last edited:
First glance on github files:
> init.lua

File what loads up other files I guess.
I guess I can compare it with dofile() function we use in LUA.
what does each of these "things" do? no clue
Code:
g_logger
g_resources
g_configs
g_modules

> rest of the files not inside any folder.

seems nothing useful more, either just general project related text or compiling files.

> data folder
I assume this is folder for UI properties and images and whatever required construct the visual UI for players.

-> things

Seems pretty random folder to me. Nothing inside it.

-> cursors
don't know what does these hot-spots means in the .otml file, but its pretty clear you put all cursor changing pictures here.

-> fonts
don't understand these files. I guess will come clear related when we want some specific style text to be used somewhere.

-> images
Seems to store pictures for everything. I like the way its organized.
Unclear to me how some pictures will be cut (some pictures hold more than 1 picture), but once again I believe we will see how its done later.
background.png - picture for the client offline screen.
clienticon.png - picture for the .exe file icon
etc.

-> locales
Each file translates string to different language
not sure how does it translate but my guess is:
when it finds a full string what matches with the translator key then it changes the string if value given.

-> particles
Don't get it.
particles.png - no clue what am I seeing here.
particles.otps - something to do with cooldowns. However no idea what, when and how it does whatever it suppose to do.

-> sounds
holds a sound files.
currently only see one which only works on the login screen?

-> styles
Seems to be file what uses and coordinates the images where will be shown and when will they be shown.

some lines I tried to understand:
Button < UIButton

I guess button means a regular button and inside a group called UIButton.

font: verdana-11px-antialised
text font. Noticed that these fonts called here are taken from the folder fonts.

color: #dfdfdfff
I believe these were called hex colors. not too sure though xD

size: 106 23
seems like the client will split the values from spaces everywhere.
However what does these numbers mean? no clue.
I don't see any position. Maybe there are x and y pos for the image?
Or this simply means how far stretched the button area will be and the position is given elsewhere?
Hopefully will understand later.

text-offset: 0 0
Not sure why has to be mentioned in first place if no values given.
and what it suppose to anyway? move the image itself or the so called clickable area or both?

image-source: /images/ui/button
location for the image. Note that the image is holding 3 images in row 1 darker than another.

image-color: #dfdfdf
color again. Maybe it gives the color for the image border because pictures has these edges where there is no color

image-clip: 0 0 22 23
Ok seems we have our answer how the images are cut.
But what does each of these values mean separately. no idea.
I guess this clipping takes image between pixel 0 and 22 and 0 and 23

image-border: 3
gives the image a border?
and maybe the border is like 3 pixels wide?
border color either black or the image color mentioned before.

padding: 5 10 5 10
uh.. wth is that suppose to be xD

opacity: 1.0
well by the looks of it seems number 1.0 means no opacity and the smaller value is the more is shows trough.
and I guess shows trough the image. (does it include the image color or not, yet to be known)

$hover !disabled:
I guess when mouse is over the image then it does something. in this case: image-clip: 0 23 22 23
clips the main image from different spot

$pressed:
So buttons can have 2 values, pressed or not pressed, seems like no holding down option.

$disabled:
That seems random?
How does 1 disable a button? like no button at all? or wut? and how xD

------------
TabButton < UIButton

I guess TabButton is a name given to button and inside a group called UIButton.

$hover !on:
Eeh, why make it confusing.. we already had hover !diabled and now we have this.
What hower does what now?

$disabled:
Again this unknown disabled thing.

$on:
we have this $pressed
why we need $on? aren't they the same thing?

---------
TopMenuButtonsPanel < Panel

a button inside group panel

layout:
type: horizontalBox
spacing: 4
fit-children: true

O boy, i think it has to do something with the group it came from. (in this case it was panel)

------------
TopMenuFrameCounterLabel < Label

a specific picture inside group label

color: white
seems we can use keywords for colors too. not just hex values.

margin-top: 4

no idea what is this

margin-left: 5

no idea what is this

---------
some more lines:
icon-color: #ffffffff

icon what? there is image and there background and there is border. Where we take this icon from?
and what does it do for our images.

focusable: false
uhm? no mouse hover?

height: 36
Height of what?

width: 50

Width of what?

phantom: true
the what?
I will look into another files tomorrow or so, looking just these files took quite some time.

I had trouble with this too, but it is actually VERY simple.

I think it was INCREDIBLY interesting to see how you thought "size 106 23" might mean Position?
What the actual fuck are you thinking. It SAYS size. means it is probably the size. And since everything is done by pixels, what SIZE is it? 106 pixels by 23 pixels.
Anyone knows this, I think even you knew this. I feel you are purposely making things sound harder than they really are to pretend that the OTClient is IMPOSSIBLE to use.

Its easy, a retarded monkey with autism can use the OTClient and do edits to it. Hell my friend Sportacus, who IS NOT very good at coding, at all does more edits to the OTClient than he does to TFS.

**EDIT**
Then you look at the line stating "text-offset: 0 0"
Then say "HMM I wonder if TEXT OFFSET moves the entire button? Or maybe only the clickable portion of the button?

No sorry, Text Offset, offsets the text. That is why it is labeled "text-offset" so even people who do not know what they are doing, can know what they are doing.
 
The problem with OTClient is that no servers/players using it.
Because the OTClient does not have a bot that can compete with other Bots.
...
Lags it could be because not everyone has a strong computer.
But I think there is some other reason then the lack of bots.

Im sorry for commenting here without proper knowledge.
Maybe it's just me. But last years I see more old school ots.
Bots are really not wanted by the majority of these users. Most opt for fast exp so there's no need for cave bots whatsoever.
And those who choose slow pace do so specifically because they like it and realise from first hand experience how bots can destroy everything and are without a doubt responsible for most part of Tibia's downfall.
The belief that more bot development will benefit open tibia and otclient the most is kind of disgusting lol.

Allow me to tell you why I personally don't play it yet. At first some years ago I was excited about the client and saw it as a huge improvement. But playing it does not at all compare. There's a long list of details, too many to start now, that make how Tibia is played and why it's fun is completely missing and replaced by new ways that make less sense and don't add to much. Most important, Pvp feels way off and despite a huge amount of higher fps it plays more poorly.
No, nothing about lag.

What otc needs in my eyes is an in depth, detailed gameplay like original clients offer. Imagine all the general improvements that were done on ot servers during the years to make it what it is today, to get an idea of the workload and slow progress to expect. That's why for the time being, otc is still too big of a step back in game quality for me. The only way I suggest to improve it is by keeping both clients available on as much ots as possible for as long as it takes. Try to assist but also wait it out and hope for the best. Because it's really going to take a lot more copying and doing changes before it can start to compare.
 
I don't believe the focus should be the fact there is not a really good bot for OTC.
OTC main target should be custom servers, and bot always ruins those games/servers, as it ruined Tibia.

I think the main objective should be OTClient being able to be a really good(or even full) replacement for current Tibia C++ Client. Custom things, launcher, server list, they are add on and not really necessary. Developers should have the best client base and work on it and build awesome custom clients to their games/servers.

The main issue now is performance, interface issues that really make OTClient worst to play than C++ Client.
@Iryont has been working for more than 1 year in making otclient usable for Medivia/Tibianic, so i don't believe it will take years and years to make it usable as C++ Client. @Iryont worked on performance too of course, and i hope he could share with us atleast the path and issues we need to work on to have a better OTClient.

There is always need for software developers to extended a project or make it suitable to certain objective so there is no way we can make OTClient one size fits all for all servers and such, we need a good base that people can work on. Currently if i wish to use OTClient i need to do so much things about performance, basic interface and things that it just make me give up. Some time ago i had a issue or miss feature on npc chat, which is a basic thing that should works perfect and as the player/user expects.

About Cipsoft new client, i'm not worrying, yet. Cipsoft needs to deal with their depency on boting, how it will affect their business as a whole. This move for a new client will make OTserver a bot paradise, for a while.

With reverse enginering it will be possible to make the new client to connect to ours servers and such, its not impossible.

Still, there is a need for OTClient, i believe. Why?
Its needed for a full OpenTibia developement plataform/stack. Thats all.
 
Last edited:
I don't believe the focus should be the fact there is not a really good bot for OTC.
OTC main target should be custom servers, and bot always ruins those games/servers, as it ruined Tibia.

I think the main objective should be OTClient being able to be a really good(or even full) replacement for current Tibia C++ Client. Custom things, launcher, server list, they are add on and not really necessary. Developers should have the best client base and work on it and build awesome custom clients to their games/servers.

The main issue now is performance, interface issues that really make OTClient worst to play than C++ Client.
@Iryont has been working for more than 1 year in making otclient usable for Medivia/Tibianic, so i don't believe it will take years and years to make it usable as C++ Client. @Iryont worked on performance too of course, and i hope he could share with us atleast the path and issues we need to work on to have a better OTClient.

There is always need for software developers to extended a project or make it suitable to certain objective so there is no way we can make OTClient one size fits all for all servers and such, we need a good base that people can work on. Currently if i wish to use OTClient i need to do so much things about performance, basic interface and things that it just make me give up. Some time ago i had a issue or miss feature on npc chat, which is a basic thing that should works perfect and as the player/user expects.

About Cipsoft new client, i'm not worrying, yet. Cipsoft needs to deal with their depency on boting, how it will affect their business as a whole. This move for a new client will make OTserver a bot paradise, for a while.

With reverse enginering it will be possible to make the new client to connect to ours servers and such, its not impossible.

Still, there is a need for OTClient, i believe. Why?
Its needed for a full OpenTibia developement plataform/stack. Thats all.

Well, if you read my post about what needs to be done, most of it is base features, that can be easily applied to any server, or any game really.

The major point of this thread is to draw attention to the baseline problems of the OTC, and attempt to fix them.
We want to remove base performance issue problems so developers can focus on making THEIR specific games and rules, and not spend months working on problems like lava sprites causing lag.

The comment about bots was in reference on to why people currently aren't using the OTC; they disregard it because they have a way to bot in an other place.
To get more eyes on the project, a decent bot attached to it would attract more people to use it.

This would allow more people to test the client and find faults in it. It also helps with getting people with massively different computer setups to use the OTC.

It must be noted too, that on the admins side, it is easy to compile the OTC to NOT allow the bot to work, so ultimately it is up to the hoster to pick if they want it to work or not.

Furthermore, we can't lie that the average person wants to bot, and at this point we need as many people as possible interested in working on the OTC, and making a decent bot for it will bring in more people. If people would see there was an Elfbot level bot for -any- basic tibia server version through the OTC, people would be more willing to bring up the baseline faults of the client, just so they could use it (the bot) without any problems.

Also, learning how a bot works, and exploits the client, is the best way to make it LESS bottable in the end.

Lastly, the OTC is mostly used for custom projects, and allows developers to pretty much do anything want with it.


But to create a community of 'custom games' it would be better if there was a base OT client that when connecting to an IP, it would load the specific files for that server, and apply them when connecting to it.

Most custom servers need to check with a server to see if there needs to be any patches applied to it, all we would need to do is expand on that set up.
 
Last edited:
Status
Not open for further replies.
Back
Top