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

TFS 1.0 or 0.3, 0.2...

Which TFS version best suits your needs?

  • 1.0

    Votes: 41 53.9%
  • 0.3.x

    Votes: 28 36.8%
  • 0.2.x

    Votes: 6 7.9%
  • Other TFS(legacy)

    Votes: 1 1.3%
  • Other Distro(OTServ, Classic, etc.)

    Votes: 0 0.0%

  • Total voters
    76
Personally, I have thought many times of switching my Customized TFS to use TFS 1.0. (I'm currently using 0.3.6).

But the amount of time it would take to get TFS 1.0 to where my current Customized 0.3.6 is would set my project back at least a year. Which is not something I am willing to do.

**EDIT**
I do know anything before 1.0 is terrible, there is basically thousands of lines of useless code, or badly written code, and it really is a problem. But I'd rather deal with stability issues and bad coding than not have an interesting server.
 
Last edited:
I woulden't agree on 0.3 with 8.6. I would say 0.4 is better 3777 on linux otherwise 3884 on windows.
TFS 1.0 is alot better then the others ofc. The thing is that is, as you said is lacking features.
But none of the things users miss is on that list.

  • Cast system (Summs was released and you can buy Elfs system etc.)
  • The function mayNotMove was removed and what I understood from you is that it was just the name? Why not do as I did and use Player.allowMovement(boolean) insted?
  • The function mayNotLogout is not there.
  • Item attributes.
  • Ability to use more compat files, ex. events used onStatsChange(parameters) that has now been renamed? to onHealthChange and onManaChange - But still brings the problem with compatability.
  • Mods - I get that this isen't an importent things since its a thing anyone can fix by knowing the locations of the script files, but still if we are talking about compability features.
  • Some functions are not listed in the compat.lua file and when I added them you responded with "We are trying to remove them, not make it easier to use them" ~.
  • Animated text - This is not a problem due to the scripters, but a problem with the client version. If 1.0 was designed to work with all client versions alot more users would use it, without losing things like that.
Those are some of the things I just tought of.
But just a note to those who wanna use 1.0: You will have a hard time the first days, but tbh after you get a hang of the new script system you won't wanna go back. Trust me.

I consider 0.3/0.4 the same version, there wasn't any official 0.4 release, we were just calling trunk in the private subversion 0.4 to distinguish it from the 0.3 releases. Whatever floats your boat. To address your concerns:
  • Cast system isn't added because no one has contributed a good enough system yet, there is one in the works as an open pull request at the moment. You can apply it to your codebase if you are eager to have a cast system.
  • mayNotMove wasn't only removed because of the function name, but also because of the way it was implemented. I think I've written about it on GitHub and I don't feel like repeating the reasons. To put it short: it wasn't bulletproof, it was added in a hackish way. mayNotLogout has similar reasons, but can be achieved through no-logout tiles or the onLogout creature event. mayNotMove will be possible to use by different means in 1.1, until then you can use onStepIn and teleport back.
  • The lack of item attributes is for memory and performance reasons, but will be reconsidered in 1.1.
  • Compat is only designed to cover 0.2, if you are switching from 0.3, it's not my concern as I was never supporting it.
  • You can still do the same things without mods, it's more like a bunch of related scripts packed into one XML file. Despite what others may think about it, I don't think mods are bad. It's much easier to manage (e.g. find the script you're looking for or disable a feature) related scripts with them, and they might make it into the 1.x series at some point. It just hasn't been a priority.
  • Animated text has nothing to do with the server, it was removed at some point in a client and if that's your only argument for 8.6 you're not seeing the big picture (mounts, market, new graphics, inbox, etc.).
How can I deal with •Item attributes; •combat options and pvp retro-style; •old/custom sprites?

Item attributes, by using: item:setAttribute and item:getAttribute. See the script reference on GitHub.
Combat options isn't as customizable as we want it to be yet, but I think the default is retro-style.
Sprites are on the client side, so whatever you did with any other TFS version should apply here too.

If you ask me 1.0 isen't easier to compile. Lets take 0.4 as an example: download tfs dev cpp and install open gl and hit compile.
Dev cpp dosen't require alot of hdd space, compared to visual studio. I run an ssd with a 1tb sata drive...
The problem with that is when I try to install visual studio it dosen't wanna install on my other harddrive, that makes it imposible to keep on the hdd due to the low space left.

The reason why you're having a hard time compiling 1.0 is because you're being stubborn. Dev-Cpp is ancient software, it seems to fit your idea of using 8.6 and 0.3 so it's probably the appropriate choice for you, but here's some news from 2014: Dev-Cpp hasn't been updated for 10 years. Dev-Cpp is insanely slow. It's Windows only. It isn't a compiler, it's an IDE that is packaged with MinGW (like Code::Blocks), and you can compile TFS 1.0 using MinGW too, just use CMake and it will take care of most stuff for you.

Installing OpenGL to be able to compile any version of TFS is the most ridiculous thing I've heard today.

It seems as if only Mark and Fallen is allowed to make major changes to the source code, since the rest seems to get shutdown.
And I get that they wanna keep the code clean but still..

Anyone is welcome to make major changes, just submit a pull request which complies with our code guidelines and it will be reviewed and merged if it's good enough. Fallen hasn't even made any major change so I don't even know why you brought up his name, nor does he have access to commit to the repository. To put it short: know what you are doing if you want to contribute, because we try to maintain high quality code and don't want to deal with copy & paste code that you want to force into the project just because it suits your needs, compiles and works for you. Understand why it works and if it is the most optimal solution for everyone. If you don't like that, you are welcome to maintain your own fork.
 
@WibbenZ
I can say that I've never tried to compile on a Windows machine. All the compiling work seems a lot easier on a linux based OS, that I preffer due to OS memory usage, and Cloud Hosting prices.
@Mark
It's all clear now, thank you very much.
 
I consider 0.3/0.4 the same version, there wasn't any official 0.4 release, we were just calling trunk in the private subversion 0.4 to distinguish it from the 0.3 releases. Whatever floats your boat. To address your concerns:
  • Cast system isn't added because no one has contributed a good enough system yet, there is one in the works as an open pull request at the moment. You can apply it to your codebase if you are eager to have a cast system.
  • mayNotMove wasn't only removed because of the function name, but also because of the way it was implemented. I think I've written about it on GitHub and I don't feel like repeating the reasons. To put it short: it wasn't bulletproof, it was added in a hackish way. mayNotLogout has similar reasons, but can be achieved through no-logout tiles or the onLogout creature event. mayNotMove will be possible to use by different means in 1.1, until then you can use onStepIn and teleport back.
  • The lack of item attributes is for memory and performance reasons, but will be reconsidered in 1.1.
  • Compat is only designed to cover 0.2, if you are switching from 0.3, it's not my concern as I was never supporting it.
  • You can still do the same things without mods, it's more like a bunch of related scripts packed into one XML file. Despite what others may think about it, I don't think mods are bad. It's much easier to manage (e.g. find the script you're looking for or disable a feature) related scripts with them, and they might make it into the 1.x series at some point. It just hasn't been a priority.
  • Animated text has nothing to do with the server, it was removed at some point in a client and if that's your only argument for 8.6 you're not seeing the big picture (mounts, market, new graphics, inbox, etc.).


Item attributes, by using: item:setAttribute and item:getAttribute. See the script reference on GitHub.
Combat options isn't as customizable as we want it to be yet, but I think the default is retro-style.
Sprites are on the client side, so whatever you did with any other TFS version should apply here too.



The reason why you're having a hard time compiling 1.0 is because you're being stubborn. Dev-Cpp is ancient software, it seems to fit your idea of using 8.6 and 0.3 so it's probably the appropriate choice for you, but here's some news from 2014: Dev-Cpp hasn't been updated for 10 years. Dev-Cpp is insanely slow. It's Windows only. It isn't a compiler, it's an IDE that is packaged with MinGW (like Code::Blocks), and you can compile TFS 1.0 using MinGW too, just use CMake and it will take care of most stuff for you.

Installing OpenGL to be able to compile any version of TFS is the most ridiculous thing I've heard today.



Anyone is welcome to make major changes, just submit a pull request which complies with our code guidelines and it will be reviewed and merged if it's good enough. Fallen hasn't even made any major change so I don't even know why you brought up his name, nor does he have access to commit to the repository. To put it short: know what you are doing if you want to contribute, because we try to maintain high quality code and don't want to deal with copy & paste code that you want to force into the project just because it suits your needs, compiles and works for you. Understand why it works and if it is the most optimal solution for everyone. If you don't like that, you are welcome to maintain your own fork.

About mayNotMove:
Well I get that you might not have liked the way it was added, but its still a thing that some want to have. Why not do as Elf did with his war system; require a compilation flag to use that code - till there is one that works better.

Cast system, I know about that and was just a point I was making that the things you listed isen't the major things of what users wants.

Great to hear!

But if you think about it; Most users where using 0.3 / 0.4 before, since it had alot more features.

Well I know about that, ive had time to convert plenty of servers to 1.0 by now. But as you said it youself its a great thing to have everything in one file; if its tabbed.
The only bad thing with mods is that the server usually seem to crash / throw a weird error rather then what a normal lua script would.

I know, it was removed at 9.86 I think, but that is also a reason for why users wanna keep versions below that.
If you check around there aren't alot of servers that only have support for a custom client like OTC or some major modified cip client.
That is why a server that supports more then 1 version would be cool, like Znote aac where I guess all versions work.
 
But you said that its the script system that is the problem, I woulden't rly say that. I love the new system and that is the reason im working on an 1.0 server but with 8.60.
The old system is really bad with some functions named doPlayer and some doCreature etc.

so it's my fault i wasn't clear with you :)
i never meant script system case the problem .. never .. i know and i prefer the new system
but i mean the missing features .. you can find them on old revs but you can't add them to tfs 1.0 because tfs 1.0 has another coding system <3
 
Its simple, TFS 1.0 is the future of Open Tibia.
The only thing that they need to do to make it the best ever is to add the missing functions while keeping it stable. Its currently "ment" to be a "tibia copy" for real tibia servers, they just keep "forgetting" that it is open tibia and not tibia, we don't want to stay at the limits of Tibia and these boring real map servers. :)

Kind Regards,
Eldin.
 
Its simple, TFS 1.0 is the future of Open Tibia.
The only thing that they need to do to make it the best ever is to add the missing functions while keeping it stable. Its currently "ment" to be a "tibia copy" for real tibia servers, they just keep "forgetting" that it is open tibia and not tibia, we don't want to stay at the limits of Tibia and these boring real map servers. :)

Kind Regards,
Eldin.
Well the purpose of TFS 1.0 is to be VERY "bare bones".
And I can see where they are coming from. The less you have, the more stable, fast, and easily manageable something is.

If the goal of 1.0 is to make the fastest and most reliable tibia cloning server then it would be hard to do any better than what is being done now.
 
so it's my fault i wasn't clear with you :)
i never meant script system case the problem .. never .. i know and i prefer the new system
but i mean the missing features .. you can find them on old revs but you can't add them to tfs 1.0 because tfs 1.0 has another coding system <3

Oh now I get you, but the systems dosen't differ much if you just wanna add them as is.
But at the same time it dosen't take more then 30sec to get the function name changed and working with userdata.
 
TFS 1.0! Why? It's still being developed. Then there is alot of other reasons, you can compare tfs 1.0 codes with 0.2 or 0.3 codes. And you will see a big difference. Such as shorter codes, cleanups and optimizations. Also 1.0 has alot of new features than 0.2 and there is features that 0.3 don't have. But 0.3 has features that, 1.0 or 0.2 don't have. Then we have the developers such as @Mark, @Dalkon and etc... Which are professionals on what they are doing and also i trust @Mark with his decisions.
 
Last edited:
TFS 1.0! Why? It's still being developed. Then there is alot of other reasons, you can compare tfs 1.0 codes with 0.2 or 0.3 codes. And you will see a big difference. Such as shorter codes, cleanups and optimizations. Also 1.0 has new alot of new features than 0.2 and there is features that 0.3 don't have. But 0.3 has features that, 1.0 or 0.2 don't have. Then we have the developers such as @Mark, @Dalkon and etc... Which are professionals on what they are doing and also trust @Mark with his decisions.
@Mark for king! :oops:
 
Well the purpose of TFS 1.0 is to be VERY "bare bones".
And I can see where they are coming from. The less you have, the more stable, fast, and easily manageable something is.

If the goal of 1.0 is to make the fastest and most reliable tibia cloning server then it would be hard to do any better than what is being done now.

Flatlander is right. It would be hard to do any better than they are doing now at making a tibia server clone... But also I believe Eldin to have a very valid point. I understand that they are working on making it a copy and that's the priority, everything else is enhancements.

Many of us want people to leave the 0.3 era and step up with the rest of us to 1.0 however we aren't giving them motivation.

Mark said it himself, if there is something you want in TFS 1.0 and can make yourself, just generate a pull request and if the code isn't sloppy or buggy then they may add it.

You can already find on github EvilHero90/forgottenserver with many of the codes I was trying to make for my own version of tfs 1.0. Such as the extra attributes of armor, attack, defense, hitchance, ect. for item:setattribute and item:getattribute. They also already have many of other custom things and the same goes for their fork of tfs 1.0, if there is something you wish to see in the source that isn't there, just request it!!!! If mark turns you down, find another fork, request there, or find a friend, make your own fork and start working on making the code yourselves!

Printer reiterated on my original point, TFS 1.0 has best support team out there!
 
Flatlander is right. It would be hard to do any better than they are doing now at making a tibia server clone... But also I believe Eldin to have a very valid point. I understand that they are working on making it a copy and that's the priority, everything else is enhancements.

Many of us want people to leave the 0.3 era and step up with the rest of us to 1.0 however we aren't giving them motivation.

Mark said it himself, if there is something you want in TFS 1.0 and can make yourself, just generate a pull request and if the code isn't sloppy or buggy then they may add it.

You can already find on github EvilHero90/forgottenserver with many of the codes I was trying to make for my own version of tfs 1.0. Such as the extra attributes of armor, attack, defense, hitchance, ect. for item:setattribute and item:getattribute. They also already have many of other custom things and the same goes for their fork of tfs 1.0, if there is something you wish to see in the source that isn't there, just request it!!!! If mark turns you down, find another fork, request there, or find a friend, make your own fork and start working on making the code yourselves!

Printer reiterated on my original point, TFS 1.0 has best support team out there!

It isn't just about sloppy code, it is that Optimization is more important than features with TFS 1.0.

I could create over 50 Pull Requests right now adding an insane amount of features, but no matter how well scripted the features are, they do add many lines of codes, that will never be used by Real Life Map servers.

If you think I'm exaggerating just go to my signature. Adding in the options for hundreds of features, making it so NPCs can be attacked and fight back. Making patrol routes for monsters, an Aggro system, give control of World Light, make it so you can choose how armor, defense, criticals, and dodge chance works in LUA so you can more easily make custom content. Be able to change EVERY item attribute and even create your own. I can go on and on, but these will never be added to TFS 1.0 or TFS 1.1 or 1.3 or 2.9 since they add a TON more lines of code, which makes it slower, and it will no longer be the best possible Real Tibia Clone.
 
like Znote aac where I guess all versions work.

ZnoteAAC could be way better if he dropped previous versions support. A lot of features are kept simple to include support for the 3 branches at same time, like ban management, that I myself would have faced already if it does not demmand writing everything 3 times from scratch (for each database structure) and then the 4th time to put everything together. Or are just bad like managing player groups/account access, that actually are kinda broken, since, again, databases structures handle it in totally different ways.

I don't know anything about C++ or TFS code structure, but I guess the same problem would be faced.
 
ZnoteAAC could be way better if he dropped previous versions support. A lot of features are kept simple to include support for the 3 branches at same time, like ban management, that I myself would have faced already if it does not demmand writing everything 3 times from scratch (for each database structure) and then the 4th time to put everything together. Or are just bad like managing player groups/account access, that actually are kinda broken, since, again, databases structures handle it in totally different ways.

I don't know anything about C++ or TFS code structure, but I guess the same problem would be faced.

But that dosen't affect things
Code:
return getVersion() == TFS_VERSION_10 ? query1 : query2;
 
But that dosen't affect things
Code:
return getVersion() == TFS_VERSION_10 ? query1 : query2;

Try that with both exemples I presented you. It won't work, it is not that simple, and my analogy is valid to TFS.
 
Try that with both exemples I presented you. It won't work, it is not that simple, and my analogy is valid to TFS.

Well if its more then one you can just use if / elseif / else statments - ofc with X amount of diffrent .sql files depending on the amount of supported databases.
Code:
if(getVersion() == ..) {
    ...
} else if(getVersion() == ...) {
    ...
} else if(getVersion() == ...) {
    ...
} else {
    throws error
}
 
Well if its more then one you can just use if / elseif / else statments - ofc with X amount of diffrent .sql files depending on the amount of supported databases.
Code:
if(getVersion() == ..) {
    ...
} else if(getVersion() == ...) {
    ...
} else if(getVersion() == ...) {
    ...
} else {
    throws error
}
No dude. You still assuming it's simple, like skills tables, that you just runs different queries, where you can fetch it from players table at TFS 1.0, or players_skills at older versions. Bans for exemple, do take a look what each TFS branch can do in that regard, it's not that they have different tables and names only, they don't work following the same logic, check here and amuse yourself. What you can do with ZnoteAAC? Ban someone in an arbitraty way imposed by the admin UI, neglecting each version capabilities, nor the admin nor the player has any control after that, you can't know who is banned nor how, namelocked players can do nothing. Wanna solve the issue? The problem now is that you need knowlegde about all 3 branches, you should also be able to test it for all 3 branches, and willing to do the effort of write/code it neaby four times.

Imagine someone wanting to help Mark with TFS and now he face the problem of implementing a code that work regardless the protocol users want TFS 1.0 to work with. That should be tested at innumerous protocols before being commited to the repository. All that because new protocol don't has "animated text". Wanting TFS 1.0 to work with 8.6 or 7.4, is like wanting it to work with Word of Warcraft: Wrath of the Lich King also.

Not that I completely disregards your points, I wanted to implement Gesior staged skill script, but I couldn't since 1.0 deprecated the need lua functions, and I think it would be cool if things like that and other missing features you pointed are implemented. Mark does work with that in mind, it's just not fast, nor priority.
 
No dude. You still assuming it's simple, like skills tables, that you just runs different queries, where you can fetch it from players table at TFS 1.0, or players_skills at older versions. Bans for exemple, do take a look what each TFS branch can do in that regard, it's not that they have different tables and names only, they don't work following the same logic, check here and amuse yourself. What you can do with ZnoteAAC? Ban someone in an arbitraty way imposed by the admin UI, neglecting each version capabilities, nor the admin nor the player has any control after that, you can't know who is banned nor how, namelocked players can do nothing. Wanna solve the issue? The problem now is that you need knowlegde about all 3 branches, you should also be able to test it for all 3 branches, and willing to do the effort of write/code it neaby four times.

Imagine someone wanting to help Mark with TFS and now he face the problem of implementing a code that work regardless the protocol users want TFS 1.0 to work with. That should be tested at innumerous protocols before being commited to the repository. All that because new protocol don't has "animated text". Wanting TFS 1.0 to work with 8.6 or 7.4, is like wanting it to work with Word of Warcraft: Wrath of the Lich King also.

Not that I completely disregards your points, I wanted to implement Gesior staged skill script, but I couldn't since 1.0 deprecated the need lua functions, and I think it would be cool if things like that and other missing features you pointed are implemented. Mark does work with that in mind, it's just not fast, nor priority.


But its still posible with if / else if / else statments.
The "functions that can be handled" will be loaded if the client version variable is correct.
The rest won't be loaded since the statment is false.

The testing with all versions isen't needed. It has to be tested with the version that the if statment askes for, the old code will still be in one of the other if / else if / else statments and will only be loaded if the version variable is ex. 10.41.
 
Back
Top