• Vote in February Mapping Competition to select a winner!
    Prize includes Premium Time on Otland!
  • 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!

What is new about otservers?

Joined
Dec 13, 2009
Messages
21
Reaction score
18
Hello. I am not sure if a lot of people will still remember me, but I used to be quite active at otfans many years ago. I even became an official developer of otserv engine and, due to the lack of active developers, for some time I was the main developer of the project (even if I was obviously not skilled enough for such a position).
I don't play with OTs since a very long time ago. It is nice to see that the community is still alive, but a lot of things have changed. Otserv engine has been archived by Remere, TFS engine is now based at revscriptsys and otfans doesn't even exist anymore. I've tried to run TFS and get lost with so many new things: key.perm, SQL Database (doesn't TFS support SQLite anymore?!) and other things. Weird that I couldn't find many tutorials for a quick start in ubuntu (which is a way to atract new users for the community). [BTW, who the hell thought that it was a good idea to make tutorials in videos? Stop that, it sucks!!!]. Everything is very different. So, what else changed that I should be aware of? Do people still use otserverlist? Most otservers are still just ugly copies of real tibia with xp x9999999? How is the community working nowadays?
I am considering to restart my personal project from many years ago. Even if it was only for the pleasure of doing it (I don't have illusions of a server focused on RPG and puzzles - closer to rogue style game like the olders versions of tibia - getting enough players to actually get online). I am unsure if I should move to TFS or keep using the old otserv engine. TFS has the advantage of being currently updated. And it also would allow me to use items and monsters from recent versions of tibia. In the other hand, I would have to rewrite/adapt most of my code (and I am LITERALLY talking about thousands of lines of code in Lua and C++). How good and powerful is revscriptsys?
Well, that is it. I've written a lot. Thoughts?

Cheers,

Assassina Mutante.
 
Last edited:

Evil Puncker

prolonged absenteeism
TFS Developer
Joined
May 30, 2009
Messages
7,389
Solutions
156
Reaction score
3,182
doesn't TFS support SQLite anymore?!
nope, only SQL now

Weird that I couldn't find many tutorials for a quick start in ubuntu
otland/forgottenserver (https://github.com/otland/forgottenserver/wiki/Compiling-on-Ubuntu) and otland/forgottenserver (https://github.com/otland/forgottenserver/wiki)

BTW, who hell thought that it was a good idea to make tutorials in videos? Stop that, it sucks!!!
+1

Do people still use otserverlist?
yes, despite everything

Most otservers are still just ugly copies of real tibia with xp x9999999?
yes and the so called "baiak" servers (an edited yurots map with a plenty of tps and bad mapping)

How is the community working nowadays?
idk, maybe same thing as always, but older and busier

I am unsure if I should move to TFS
do it, you won't regret

(and I am LITERALLY talking about thousands of lines of code in Lua and C++)
don't worry, with our current state its possible that you will be able to port them with no problem or even better

How good and powerful is revscriptsys?
I think @Evil Hero can talk about this one 😁

So, what else changed that I should be aware of?

well, here are some points to be aware of:
  • latest tfs is at tibia version 10.98
  • most ots are still either using 8.6 version (yes, they use old and outdated engines most likely) or trying to mimic latest tibia using the OTServBR engine and datapack
  • we "dropped" "support" to real tibia, I mean, we focused on OTClient and are going to update tfs supported version in the future once OTClient gets update
  • OTClient have two main repositories, that you can check in the menu above
  • RME is still being developed from time to time by the community, mignari and @Elime
  • about AAC there are mainly two options that are mainly active: my-aac by @slawkens and znote-aac by @Znote
  • this one worth a reading [TFS 1.x] List of missing TFS features from Cipbia
  • mostly everyone is using discord nowadays to communicate, but there is no official otland discord tho
  • there is also a nice project to improve tfs performance (and also multi-protocol) that surely worth taking a look: SaiyansKing/optimized_forgottenserver (https://github.com/SaiyansKing/optimized_forgottenserver)
  • and last but not least, there is a client called OTClient V8, but its pretty controversial to talk about it xDDDD
 
OP
MutantAssassin
Joined
Dec 13, 2009
Messages
21
Reaction score
18
nope, only SQL now
Isn't it a bad thing? Isn't it preventing new members to enter into our community? I am speaking for myself, even I never setup a SQL system. A few days ago, just after log in here after so much time, I've decided to give TFS a try. So I've downloaded and compiled TFS quite easily. It took me a while to search where should be config.lua and what was this key.perm. But then I find out that I had to configure SQL, which would take some time of research, so I give up. If it happened to me, I wonder how many newbies didn't give up TFS at this point. A quick start is important.
I remember when I first ran an OT server in my computer. I downloaded one of those popular otserv distributions for windows (I guess it was yurots) and ran in a virtual machine (linux user here). The setup was really quick. My first modifications were just funny ones, like turning poison dagger into a super weapon and other things which can be done simply changing parameters at the files. It was only very much later that I started scripting and even later when I started playing around with the source code. To see the engine working in my computer is what hooked me into this world. It has to allow a quick setup, otherwise I would probably give up and wouldn't be here today.
Just a thought.

do it, you won't regret
don't worry, with our current state its possible that you will be able to port them with no problem or even better
To be honest, right now I have serious doubts about that. I have to learn revscriptsys to see how much of my original code can be adapted in Lua and how much still will require source code editon. I am not talking about small changes in the code, there are many deep changes. To mention just one, I had implemented distance attacks being partially blocked by solid objects, so someone behind a parcel would be a lot harder to hit than someone in an open field. There are many other things like this one. To port this won't be easy, for now I will keep using my old code while getting familiar with TFS and see what it can do. Not sure yet if all the advantages of TFS (and there are many) outcome the huge work of redoing all my code.

I think @Evil Hero can talk about this one 😁
I guess he is shy and doesn't want post in this thread lol.

well, here are some points to be aware of:
  • latest tfs is at tibia version 10.98
Is there any reason to pick this particular version? Or just that Tibia has changed a lot and too quickly recently, so there was no time enough to introduce all the new features in a stable engine?

  • most ots are still either using 8.6 version (yes, they use old and outdated engines most likely) or trying to mimic latest tibia using the OTServBR engine and datapack
I didn't even know that there was a fork of TFS still using the old Lua code. Nice to know, it might be also an option for migrating my code into a more recent version of Tibia. Is it a good/stable engine? Is it developed by anyone that I might happen to know from here or otfans?

  • we "dropped" "support" to real tibia, I mean, we focused on OTClient and are going to update tfs supported version in the future once OTClient gets update
  • OTClient have two main repositories, that you can check in the menu above
I was already aware of OTClient. An amazing work. Just didn't get what is the point of the fork. What is the difference between the two versions of OTClient?

  • RME is still being developed from time to time by the community, mignari and @Elime
Nice to know that. Is Remere still active in opentibia development? I think that I've lost contact with him. Does he still logs in here once in a while to see how are things going on?

  • about AAC there are mainly two options that are mainly active: my-aac by @slawkens and znote-aac by @Znote
I never worked with any AAC even while I was active here. My project never get into a point in which to think about those things were required. Does TFS still have that "Account Manager" meant for not that serious otservers?

Ok.
  • mostly everyone is using discord nowadays to communicate, but there is no official otland discord tho
I hate talking through voice lol.

Interesting.
  • and last but not least, there is a client called OTClient V8, but its pretty controversial to talk about it xDDDD
Ok, you made me curious. Now I will have to google and find out why is it so controversial. I bet that there is an interesting story behind it.
And thank you a lot for writing such a long reply, I was afraid of being completely ignored lol.

Really amazing and with EventCallback it's a perfect combination to create anything from a single file if necessary.
I remember Remere trying to convince to migrate to revscriptsys when he was just beginning the project lol. But it will be useful to get familiar with it, even if I decide to keep using my old code.

Might be useful, data from around 1PM CET.
otservlist.org:
View attachment 52021
View attachment 52023
Interesting information. Thank you.
of course they're botters. Literally only reason why 8.6 is still relevant is elfbot.
It is something to taken in consideration when deciding things. Thank you.
 

Silba

7.6+ is not oldschool
Premium User
Joined
Aug 22, 2013
Messages
158
Solutions
1
Reaction score
82
Isn't it a bad thing? Isn't it preventing new members to enter into our community? I am speaking for myself, even I never setup a SQL system. A few days ago, just after log in here after so much time, I've decided to give TFS a try. So I've downloaded and compiled TFS quite easily. It took me a while to search where should be config.lua and what was this key.perm. But then I find out that I had to configure SQL, which would take some time of research, so I give up. If it happened to me, I wonder how many newbies didn't give up TFS at this point. A quick start is important.
I remember when I first ran an OT server in my computer. I downloaded one of those popular otserv distributions for windows (I guess it was yurots) and ran in a virtual machine (linux user here). The setup was really quick. My first modifications were just funny ones, like turning poison dagger into a super weapon and other things which can be done simply changing parameters at the files. It was only very much later that I started scripting and even later when I started playing around with the source code. To see the engine working in my computer is what hooked me into this world. It has to allow a quick setup, otherwise I would probably give up and wouldn't be here today.
Just a thought.
Setting up TFS 1.x with Znote AAC only takes a few minutes to "see the engine working in my computer". Nearly every issue with SQL has an answer on the forum, almost no SQL knowledge is needed just as no sqlite/mysql/xml knowledge was required back in the day to run and have fun editing a 1/1 server.

The OTS Guide is seamless and flawless. You are looking at the community from an old timer perspective, not as a new person. New people seek out these kinds of things and don't miss old things they don't know exist, so your problem is your own and not related to newcomers.

However, as soon as you try to run anything other than the few working distros such as truly oldschool stuff, then it all falls apart and is quite sad and accurate to what you've said, but honestly we as a community should be focused on things such as supporting the downgrading of TFS 1.3 to 7.7-8.6 etc so we can update the old maps and run them properly without all the bugs and virus warnings. Such as this oldschool exodus map converted to 8.6 and running on TFS 1.3 downgraded to 8.6.
 

Evil Puncker

prolonged absenteeism
TFS Developer
Joined
May 30, 2009
Messages
7,389
Solutions
156
Reaction score
3,182
I have to learn revscriptsys
that is not really mandatory at all, since the old Lua is still supported, the only difference is that we use metatable now (take a look at compat.lua)

Is there any reason to pick this particular version?
because that is the latest one that OTClient has been updated to, and as I said we are "following" OTC and not Tibia anymore

I didn't even know that there was a fork of TFS still using the old Lua code.
there is no fork for that, revscriptsys was implemented along with the form Lua system, they co-exist

Is it a good/stable engine? Is it developed by anyone that I might happen to know from here or otfans?
well... its the only "working" option, and no, it is developed mostly by Brazilians

What is the difference between the two versions of OTClient?
sorry but I lack the answer to that one

Is Remere still active in opentibia development? I think that I've lost contact with him. Does he still logs in here once in a while to see how are things going on?
no he isn't, and no, his last login was on 2015

Does TFS still have that "Account Manager" meant for not that serious otservers?
nope, that was dropped, but there were an interesting project about it here

I hate talking through voice lol.
don't worry, that was my first though too, but then you will find out that almost nobody use voice on it, only text (think of it as an improved IRC)

Ok, you made me curious.

Isn't it a bad thing? Isn't it preventing new members to enter into our community?
not really, I'm kinda new so I don't know why sqlite was removed in the first place, but I bet @Mark had a good reason (it was done on 1.0), and IMO it isn't preventing new members because the years have passed and now almost every newbie know how to setup a WAMP (Apache + MySQL + PHP) server and the forum is filled with tutorials (for both windows and linux), if you follow them you can have a server running within minutes... or they can just download and run an old distro as they are still doing nowadays
 

Evil Hero

Legacy Member
TFS Developer
Joined
Dec 12, 2007
Messages
1,225
Solutions
24
Reaction score
625
Location
Germany
I'm not shy I just didn't have the time yet to do a worthwhile post and explain a few things :D
Just to clear up some misunderstandings, revscriptsys of TFS is not the same as from OTServ Master.

I liked the idea of what Remere tried to achieve with it but since it lacked quite some documentation I've decided to take a different approach but out of respect/dignity towards people like Remere I kept the name as "Revscriptsys" because the idea behind it came from that.

There is basic documentation about it yet which you can find here or already made scripts all around the forum :D
You shouldn't have any bigger problems to either port stuff easily to revscriptsys or to learn to work with it, since it's really easy to understand.
Some projects like OTServBr rely as an example completly on it and don't really use the classic interface anymore.

I hope that I could bring a bit light into the darkness and if you by any means need help adapting, then feel free to contact me ^^
 
OP
MutantAssassin
Joined
Dec 13, 2009
Messages
21
Reaction score
18
Setting up TFS 1.x with Znote AAC only takes a few minutes to "see the engine working in my computer". Nearly every issue with SQL has an answer on the forum, almost no SQL knowledge is needed just as no sqlite/mysql/xml knowledge was required back in the day to run and have fun editing a 1/1 server.

The OTS Guide is seamless and flawless. You are looking at the community from an old timer perspective, not as a new person. New people seek out these kinds of things and don't miss old things they don't know exist, so your problem is your own and not related to newcomers.
What an amazing guide. I can't believe that I didn't find this, it is in the main menu lol.

However, as soon as you try to run anything other than the few working distros such as truly oldschool stuff, then it all falls apart and is quite sad and accurate to what you've said, but honestly we as a community should be focused on things such as supporting the downgrading of TFS 1.3 to 7.7-8.6 etc so we can update the old maps and run them properly without all the bugs and virus warnings. Such as this oldschool exodus map converted to 8.6 and running on TFS 1.3 downgraded to 8.6.
It is nice to see people trying to adapt all the old material, so it won't get lost.

that is not really mandatory at all, since the old Lua is still supported, the only difference is that we use metatable now (take a look at compat.lua)
I see. Still, even if I don't have to change most of the old Lua code, the revscriptsys allows things that would require source code edition, right? So I will have to learn it anyway, as at least some of my changes in source code might be replaced by Lua code.

well... its the only "working" option, and no, it is developed mostly by Brazilians
Probably, the simple fact of not being anymore in a hurry to implement all the new features of very recent versions of Tibia makes TFS more reliable. But I better also check this otservbr machine. For now, I will work on my project still at the old engine until I get familiar with everything around here and become able to make a wise decision.

nope, that was dropped, but there were an interesting project about it here
Nice.

don't worry, that was my first though too, but then you will find out that almost nobody use voice on it, only text (think of it as an improved IRC)
Good. Also, my English already sucks while I am writing (you've certainly noticed that). If I have to speak or listen, it would be realllyyyy harder.

o_O

not really, I'm kinda new so I don't know why sqlite was removed in the first place, but I bet @Mark had a good reason (it was done on 1.0), and IMO it isn't preventing new members because the years have passed and now almost every newbie know how to setup a WAMP (Apache + MySQL + PHP) server and the forum is filled with tutorials (for both windows and linux), if you follow them you can have a server running within minutes... or they can just download and run an old distro as they are still doing nowadays
Mark obviously had his reason. I was just saying my first impression. The fact that I didn't notice OTS Guide at first (I just looked for threads at the forum) made it harder for me than it should be. I will try it later, for the moment I still feel that the usage of sqlite (with sqlitestudio) at the old days was simpler and quicker than the long procedure required now.

I'm not shy I just didn't have the time yet to do a worthwhile post and explain a few things :D
Just to clear up some misunderstandings, revscriptsys of TFS is not the same as from OTServ Master.
I didn't know that.

I liked the idea of what Remere tried to achieve with it but since it lacked quite some documentation I've decided to take a different approach but out of respect/dignity towards people like Remere I kept the name as "Revscriptsys" because the idea behind it came from that.
I undestand. And let's face it, Remere was one of the most skilled programmers that otserv community has ever had.

There is basic documentation about it yet which you can find here or already made scripts all around the forum :D
I've already noticed that most functions are similar to the old ones, just using a class (simulated) approach. I am still wondering about the new resources. Remere tried to convince me to adopt his new system claiming that his revscriptsys would allow me easily to do things that I would take a long time to do source editing. Those new resources are the ones that will probably take longer to learn.

I hope that I could bring a bit light into the darkness and if you by any means need help adapting, then feel free to contact me ^^
Thank you, Evil Hero. You are not that evil after all =p.

Cheers,

Assassina Mutante.
 

Znote

<?php echo $title; ?>
Staff member
Global Moderator
Premium User
Joined
Feb 14, 2008
Messages
6,837
Solutions
241
Reaction score
1,641
Location
Norway
GitHub
Znote
Could you give a sample on something you need to keep in the source? The Lua scripting interface is getting very flexible now, I can barely think of any scenario which would require C++ modifications. And I cannot think of any lua code that cannot be converted.

For more revscriptsys sample codes, have a look at:
Scroll down to "Thread Accomplishments" in main post to see released Revscriptsys sample files posted throughout the thread. It has an amazing community effort to make stuff for revscriptsys.

I like to consider revscriptsys as mod files, the main difference compared to old lua system, is that:
old lua: function specific files. (if your system touches 6 different functions (globalevent, talkaction, movement, action etc...), then expect 6-12 separate file modifications to be required)
revscriptsys: purpose specific files. (if your system touches 6 different functions, its all bundlet up in this 1 lua file!).
 
OP
MutantAssassin
Joined
Dec 13, 2009
Messages
21
Reaction score
18
Could you give a sample on something you need to keep in the source? The Lua scripting interface is getting very flexible now, I can barely think of any scenario which would require C++ modifications.
Well I've got thousands of C++ code lines (and it is not a hyperbole, I am being literal) added/modified to otserv source code. I don't want spoil all my ideas, but I can give you one example that probably will require heavy source edition even at revscriptsys.
I've heavily changed the Creature::blockHit method. Now it uses a completely different formula for reducing damage. Among other things it increases damages taken from behind and in situations when the creature is being attacked by several targets at once. It all depending on several parameters to deal with a big range of situations. For example, some lighter shields are more capable than others of dealing efficiently with several attackers at once. Some creatures receive small penalties (or no penalty at all) when attacked from behind. Attacks might ignore armor and shield defense (like magical ones in Cip's Tibia) or consider it (like weapon attacks in Cip's Tibia), but you can also adjust it to use like 30% of armor and 70% of shielding defense (or any other value). Things like that.
Can it be currently done using revscriptsys? My code is filled with many deep modifications like this one.
Anyway, as I expect revscriptsys to be a lot more powerful than legacy Lua code, I am certain that there are other parts of my source code editions which could be done in Lua now. But which ones? Also I worry how different is the structure of current TFS source code compared to otserv legacy code. How hard will it be to port the source code editions which can't be turned into Lua scripts? Will be really worthy to migrate to TFS?
Those are questions which I will only be able to reply after getting really familiar with all the new features of revscripts and the current source code of TFS.

And I cannot think of any lua code that cannot be converted.
As far as I know, revscriptsys is more powerful than the old Lua system, so I am not worried about my Lua scripts.
I am quite sure that they can be easily ported.

For more revscriptsys sample codes, have a look at:
Scroll down to "Thread Accomplishments" in main post to see released Revscriptsys sample files posted throughout the thread. It has an amazing community effort to make stuff for revscriptsys.
Quite interesting. Thank you for point me out this thread.

Cheers,

Assassina Mutante.
 
Last edited:

Znote

<?php echo $title; ?>
Staff member
Global Moderator
Premium User
Joined
Feb 14, 2008
Messages
6,837
Solutions
241
Reaction score
1,641
Location
Norway
GitHub
Znote
Among other things it increases damages taken from behind and in situations when it is being attacked by several creatures at once. It all depending on several parameters to deal with a big range of situations. For example, some lighter shields are more capable than other of dealing efficiently with more creatures at once. Some creatures receive small penalties (or no penalty at all) when attacked from behind. Attacks might ignore armor and shield defense (like magical ones in Cip's Tibia) or consider it (like weapon attacks in Cip's Tibia), but you can also adjust it to use like 30% of armor and 70% of shielding defense (or any other value). Things like that.
Can it be currently done using revscriptsys? My code is filled with many deep modifications like this one.
Very good sample! And yes, this is a good scenario where source edits are currently more suited than Lua. I don't think we have any callbacks that lets us intercept the default blocking behavior, and while we have a creature event for onHealthChange and onPrepareDeath, we don't have anything for onPrepareHit/attack that lets us modify values right before a hit occurs and the damage is calculated. (I think).

Presuming we retain default blocking behavior, we can go pretty far using Lua, you can use onHealthChange creatureevent to modify the damage based on offender and victims orientation to each other (etc identify hits from the side or behind target) and reduce or increase the damage. You can also check against equipped shields and weapons of both attacker and victim and apply custom rules to them. (e.g how much if any damage is absorbed from the attack, or add critical hits that deal more than the normal amount).

If we had some sort of onPrepareHit/attack, we could identify these different scenarios you explained, and for that hit temporarily adjust the attributes of our equipped items to simulate such scenarios. But even this wouldn't quite reach your description, as it also sounds like you would like to change the amount of etc how many creatures you can block at the same time based on what shield and opponent your facing. Which I think is currently hard-coded for (1 creature without shield, 2 creatures with shield).

Anyway, as I expect revscriptsys to be a lot more powerful than legacy Lua code, I am certain that there are other parts of my source code editions which could be done in Lua now. But which ones? Also I worry how different is the structure of current TFS source code compared to otserv legacy code.

I recommend you to look into which events and callbacks you can hook into, to get a feel for what might be done in Lua now. These events are unfortunately not well documented yet, we have a pretty decent list on our wiki, but for sample code the forum search might still be your best bet. Nonethless, here are some lists:
Metatables are similar to classes,
The Creature metatable contains all of the methods that handle/require creatures.
This metatable is also inherited by the Player, Monster and Npc metatables, therefore they can use these Creature methods.

Script-Interface for a list of global functions and metatables. The search bar in the wiki also works to lookup metatable names.

Many old functions from etc otserv, avesta, TFS 0.2 and TFS 0.3/4 are added to compat.lua. And they mostly just initialize and invoke functions from the metatable counterpart.

Even if you decide to not use our TFS repo, most of the servers that are actively maintained is a fork of TFS in some fashion or another, and they all fallback to the core functionality of TFS and its wiki. The otservbr repo effectively works as a bleeding edge version of TFS, and they often patch up their repo with PRs submitted to us.

Other distros that are active: (I would argue none of these are as stable as us, but they do bring other cool stuff to the table).
otservbr - Our BR community's effort of making a ciptibia clone, based on and trying to keep up with our TFS repo, this repo is targeted against users who wants to host a replica of the cip experience. They stay up to date on client protocol, and has the most active community base. I don't particularly recommend this engine if you don't want to host a rlmap server. But if this is what your after, I see no better alternative.
This repo aims to exclusively support revscriptsys, and has removed lots of obsolete methods. Probably because this allows them to organize the functionality of their data pack much better, and they don't have to teach and maintain two separate systems to new users.

OTX server - spanish/br community's effort of supporting multiple client protocols. Based on and trying to keep up with our TFS repo, this repo has a more clean datapack suited for custom built servers, and support a variety of different client protocols.
OTX 4 - protocol supports client 10 and 12. Based on and trying to keep up with our TFS repo, supports revscriptsys.
OTX 3 - Based on an earlier version of TFS 1.3 (from 2016), before revscriptsys was implemented. But has huge protocol variety support. (7.6 / 7.72, 8.54/58, 8.6, 8.70/71, 10.98/99, 11.00)
OTX 2 - Based on an obsolete old version of TFS 0.3.7, but contains the old Lua script system (before metatables, more akin to what you are used too on old otserv with "cid" in every function) This is still maintained and used today because of huge protocol variety support and users stubborn to learn metatables. For clients (7.4 - 7.6 - 7.70/72, 8.54/57, 8.60, 8.70/71, 10.35).

SaiyansKing's fork of TFS - (I disagree with the suggested name "optimized forgottenserver"), there are many issues with this fork. But it seems to be a more vanilla representation of our TFS repo, with code changes intended to enhance the performance of the game server, as well as supporting the latest client protocol. It may be more stable than OTX 4, so a custom OT server based on 12+ client protocols this might be the best option. It keeps up pretty well with TFS, and in some cases merges in pending PR's before passing our git review QA control. They also have some performance related PR's that originated here, and got merged to us. So despite some issues and disagreements, they do some good things here. (I wish they would make this a linked fork, so they are properly in our git network). It is (at least was at the time) relatively easy to fix. The developer of this fork is just not good enough with git.
 
Last edited:
OP
MutantAssassin
Joined
Dec 13, 2009
Messages
21
Reaction score
18
Very good sample! And yes, this is a good scenario where source edits are currently more suited than Lua. I don't think we have any callbacks that lets us intercept the default blocking behavior, and while we have a creature event for onHealthChange and onPrepareDeath, we don't have anything for onPrepareHit/attack that lets us modify values right before a hit occurs and the damage is calculated. (I think).

Presuming we retain default blocking behavior, we can go pretty far using Lua, you can use onHealthChange creatureevent to modify the damage based on offender and victims orientation to each other (etc identify hits from the side or behind target) and reduce or increase the damage. You can also check against equipped shields and weapons of both attacker and victim and apply custom rules to them. (e.g how much if any damage is absorbed from the attack, or add critical hits that deal more than the normal amount).

If we had some sort of onPrepareHit/attack, we could identify these different scenarios you explained, and for that hit temporarily adjust the attributes of our equipped items to simulate such scenarios. But even this wouldn't quite reach your description, as it also sounds like you would like to change the amount of etc how many creatures you can block at the same time based on what shield and opponent your facing. Which I think is currently hard-coded for (1 creature without shield, 2 creatures with shield).
Pretty nice new resources. Even if some of the things would certainly require source code edition, I like the idea of keeping source code edition as small as possible. Everything that can be done in Lua should be done that way.

I recommend you to look into which events and callbacks you can hook into, to get a feel for what might be done in Lua now. These events are unfortunately not well documented yet, we have a pretty decent list on our wiki, but for sample code the forum search might still be your best bet.
I am used to that. In otserv, the best documention about Lua functions often was the source code lol.

Metatables are similar to classes,
I am aware, I only use source code edition as a last resource. I've got plenty experience in Lua (even if it is probably kind of rusty right now).

The Creature metatable contains all of the methods that handle/require creatures.
This metatable is also inherited by the Player, Monster and Npc metatables, therefore they can use these Creature methods.

Script-Interface for a list of global functions and metatables. The search bar in the wiki also works to lookup metatable names.

Many old functions from etc otserv, avesta, TFS 0.2 and TFS 0.3/4 are added to compat.lua. And they mostly just initialize and invoke functions from the metatable counterpart.

Even if you decide to not use our TFS repo, most of the servers that are actively maintained is a fork of TFS in some fashion or another, and they all fallback to the core functionality of TFS and its wiki. The otservbr repo effectively works as a bleeding edge version of TFS, and they often patch up their repo with PRs submitted to us.

Other distros that are active: (I would argue none of these are as stable as us, but they do bring other cool stuff to the table).
otservbr - Our BR community's effort of making a ciptibia clone, based on and trying to keep up with our TFS repo, this repo is targeted against users who wants to host a replica of the cip experience. They stay up to date on client protocol, and has the most active community base. I don't particularly recommend this engine if you don't want to host a rlmap server. But if this is what your after, I see no better alternative.
This repo aims to exclusively support revscriptsys, and has removed lots of obsolete methods. Probably because this allows them to organize the functionality of their data pack much better, and they don't have to teach and maintain two separate systems to new users.

OTX server - spanish/br community's effort of supporting multiple client protocols. Based on and trying to keep up with our TFS repo, this repo has a more clean datapack suited for custom built servers, and support a variety of different client protocols.
OTX 4 - protocol supports client 10 and 12. Based on and trying to keep up with our TFS repo, supports revscriptsys.
OTX 3 - Based on an earlier version of TFS 1.3 (from 2016), before revscriptsys was implemented. But has huge protocol variety support. (7.6 / 7.72, 8.54/58, 8.6, 8.70/71, 10.98/99, 11.00)
OTX 2 - Based on an obsolete old version of TFS 0.3.7, but contains the old Lua script system (before metatables, more akin to what you are used too on old otserv with "cid" in every function) This is still maintained and used today because of huge protocol variety support and users stubborn to learn metatables. For clients (7.4 - 7.6 - 7.70/72, 8.54/57, 8.60, 8.70/71, 10.35).
Nice. And it is even easier for me as I am able to comunicate in all of those languages.

@Znote, I really appreciate your detailed explanation. I am really feeling welcomed here in otland. I don't intend to abuse the "hospitality", but where do I get the tibia.dat and tibia.spr of the 10.98 version? It is required for RME and OTClient. I've found a link in otservbr, but it is an EXE file and I don't intend to run it (not even with wine and with a user without sudo rights).

Cheers,

Assassina Mutante.
 

zbizu

Legendary OT User
Joined
Nov 22, 2010
Messages
2,839
Solutions
10
Reaction score
1,893
Location
Poland
As far as I know there is no onHit/onReceiveHit function so if it's a blocked normal attack or a miss, you can't a attach script to it. There is also no function to increase attackspeed/hit chance/attack/def/armor/range without applying these on items.

Edit: there is onUseWeapon but I'm not sure if it's what on-hit is
 
Last edited:
Top