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

The Forgotten Tibia (no vocations, new skills, skills by points, dual wield, auto loot, quiver, etc)

There are some known issues cause I stopped working on it in the middle of a big change on the system (I was transfering the skill points system from lua to c++), this issue is better explained on the github repository
 
Does someone compiled it on Linux/Ubuntu?

I'm receiving an old error took from the original forgottenserver:
Code:
$ cmake ..
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- cotire 1.7.6 loaded.
-- Performing Test COMPILER_KNOWS_CXX11
-- Performing Test COMPILER_KNOWS_CXX11 - Success
-- Performing Test COMPILER_KNOWS_STDLIB
-- Performing Test COMPILER_KNOWS_STDLIB - Failed
-- Performing Test COMPILER_KNOWS_LTO
-- Performing Test COMPILER_KNOWS_LTO - Success
-- Found GMP: /usr/include/x86_64-linux-gnu
-- Found PugiXML: /usr/include
-- MySQL Include dir: /usr/include/mysql  library dir: /usr/lib/x86_64-linux-gnu
-- MySQL client libraries: /usr/lib/x86_64-linux-gnu/libmysqlclient.so
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Could NOT find LuaJIT (missing: LUA_INCLUDE_DIR)
-- Found Lua: /usr/lib/x86_64-linux-gnu/libluajit-5.1.so;/usr/lib/x86_64-linux-gnu/libm.so (found version "")
-- Boost version: 1.65.1
-- Found the following Boost libraries:
--   system
--   iostreams
--   regex
-- CXX target tfs cotired without unity build.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/gustavocontreiras/Downloads/TheForgottenTibia/Server/build

Code:
$ make
[  1%] Generating CXX prefix source cotire/tfs_CXX_prefix.cxx
[  2%] Generating CXX prefix header cotire/tfs_CXX_prefix.hxx
[  3%] Building CXX precompiled header cotire/tfs_CXX_prefix.hxx.gch
Scanning dependencies of target tfs
[  5%] Building CXX object CMakeFiles/tfs.dir/src/otpch.cpp.o
[  6%] Building CXX object CMakeFiles/tfs.dir/src/actions.cpp.o
[  7%] Building CXX object CMakeFiles/tfs.dir/src/ban.cpp.o
[  8%] Building CXX object CMakeFiles/tfs.dir/src/baseevents.cpp.o
[ 10%] Building CXX object CMakeFiles/tfs.dir/src/bed.cpp.o
[ 11%] Building CXX object CMakeFiles/tfs.dir/src/chat.cpp.o
[ 12%] Building CXX object CMakeFiles/tfs.dir/src/combat.cpp.o
[ 13%] Building CXX object CMakeFiles/tfs.dir/src/condition.cpp.o
[ 15%] Building CXX object CMakeFiles/tfs.dir/src/configmanager.cpp.o
[ 16%] Building CXX object CMakeFiles/tfs.dir/src/connection.cpp.o
[ 17%] Building CXX object CMakeFiles/tfs.dir/src/container.cpp.o
[ 18%] Building CXX object CMakeFiles/tfs.dir/src/creature.cpp.o
[ 20%] Building CXX object CMakeFiles/tfs.dir/src/creatureevent.cpp.o
[ 21%] Building CXX object CMakeFiles/tfs.dir/src/cylinder.cpp.o
[ 22%] Building CXX object CMakeFiles/tfs.dir/src/database.cpp.o
[ 23%] Building CXX object CMakeFiles/tfs.dir/src/databasemanager.cpp.o
[ 25%] Building CXX object CMakeFiles/tfs.dir/src/databasetasks.cpp.o
[ 26%] Building CXX object CMakeFiles/tfs.dir/src/depotchest.cpp.o
[ 27%] Building CXX object CMakeFiles/tfs.dir/src/depotlocker.cpp.o
[ 28%] Building CXX object CMakeFiles/tfs.dir/src/events.cpp.o
[ 30%] Building CXX object CMakeFiles/tfs.dir/src/fileloader.cpp.o
[ 31%] Building CXX object CMakeFiles/tfs.dir/src/game.cpp.o
[ 32%] Building CXX object CMakeFiles/tfs.dir/src/globalevent.cpp.o
[ 33%] Building CXX object CMakeFiles/tfs.dir/src/guild.cpp.o
[ 35%] Building CXX object CMakeFiles/tfs.dir/src/groups.cpp.o
[ 36%] Building CXX object CMakeFiles/tfs.dir/src/house.cpp.o
[ 37%] Building CXX object CMakeFiles/tfs.dir/src/housetile.cpp.o
[ 38%] Building CXX object CMakeFiles/tfs.dir/src/inbox.cpp.o
[ 40%] Building CXX object CMakeFiles/tfs.dir/src/ioguild.cpp.o
[ 41%] Building CXX object CMakeFiles/tfs.dir/src/iologindata.cpp.o
[ 42%] Building CXX object CMakeFiles/tfs.dir/src/iomap.cpp.o
[ 43%] Building CXX object CMakeFiles/tfs.dir/src/iomapserialize.cpp.o
[ 45%] Building CXX object CMakeFiles/tfs.dir/src/iomarket.cpp.o
[ 46%] Building CXX object CMakeFiles/tfs.dir/src/item.cpp.o
[ 47%] Building CXX object CMakeFiles/tfs.dir/src/items.cpp.o
[ 48%] Building CXX object CMakeFiles/tfs.dir/src/luascript.cpp.o
[ 50%] Building CXX object CMakeFiles/tfs.dir/src/mailbox.cpp.o
[ 51%] Building CXX object CMakeFiles/tfs.dir/src/map.cpp.o
[ 52%] Building CXX object CMakeFiles/tfs.dir/src/monster.cpp.o
[ 53%] Building CXX object CMakeFiles/tfs.dir/src/monsters.cpp.o
[ 55%] Building CXX object CMakeFiles/tfs.dir/src/mounts.cpp.o
[ 56%] Building CXX object CMakeFiles/tfs.dir/src/movement.cpp.o
[ 57%] Building CXX object CMakeFiles/tfs.dir/src/networkmessage.cpp.o
[ 58%] Building CXX object CMakeFiles/tfs.dir/src/npc.cpp.o
[ 60%] Building CXX object CMakeFiles/tfs.dir/src/otserv.cpp.o
[ 61%] Building CXX object CMakeFiles/tfs.dir/src/outfit.cpp.o
[ 62%] Building CXX object CMakeFiles/tfs.dir/src/outputmessage.cpp.o
[ 63%] Building CXX object CMakeFiles/tfs.dir/src/party.cpp.o
[ 65%] Building CXX object CMakeFiles/tfs.dir/src/player.cpp.o
/home/gustavocontreiras/Downloads/TheForgottenTibia/Server/src/player.cpp: In member function ‘void Player::setSkills(uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t)’:
/home/gustavocontreiras/Downloads/TheForgottenTibia/Server/src/player.cpp:547:10: warning: variable ‘soulGain’ set but not used [-Wunused-but-set-variable]
  uint8_t soulGain;
          ^~~~~~~~
/home/gustavocontreiras/Downloads/TheForgottenTibia/Server/src/player.cpp:548:10: warning: variable ‘capGain’ set but not used [-Wunused-but-set-variable]
  uint8_t capGain;
          ^~~~~~~
/home/gustavocontreiras/Downloads/TheForgottenTibia/Server/src/player.cpp:549:10: warning: variable ‘walkSpeedGain’ set but not used [-Wunused-but-set-variable]
  uint8_t walkSpeedGain;
          ^~~~~~~~~~~~~
/home/gustavocontreiras/Downloads/TheForgottenTibia/Server/src/player.cpp:550:10: warning: variable ‘attackSpeedGain’ set but not used [-Wunused-but-set-variable]
  uint8_t attackSpeedGain;
          ^~~~~~~~~~~~~~~
/home/gustavocontreiras/Downloads/TheForgottenTibia/Server/src/player.cpp:712:7: warning: variable ‘saved’ set but not used [-Wunused-but-set-variable]
  bool saved = false;
       ^~~~~
[ 66%] Building CXX object CMakeFiles/tfs.dir/src/position.cpp.o
[ 67%] Building CXX object CMakeFiles/tfs.dir/src/protocol.cpp.o
[ 68%] Building CXX object CMakeFiles/tfs.dir/src/protocolgame.cpp.o
[ 70%] Building CXX object CMakeFiles/tfs.dir/src/protocollogin.cpp.o
[ 71%] Building CXX object CMakeFiles/tfs.dir/src/protocolold.cpp.o
[ 72%] Building CXX object CMakeFiles/tfs.dir/src/protocolstatus.cpp.o
[ 73%] Building CXX object CMakeFiles/tfs.dir/src/quests.cpp.o
[ 75%] Building CXX object CMakeFiles/tfs.dir/src/raids.cpp.o
[ 76%] Building CXX object CMakeFiles/tfs.dir/src/rsa.cpp.o
[ 77%] Building CXX object CMakeFiles/tfs.dir/src/scheduler.cpp.o
[ 78%] Building CXX object CMakeFiles/tfs.dir/src/scriptmanager.cpp.o
[ 80%] Building CXX object CMakeFiles/tfs.dir/src/server.cpp.o
[ 81%] Building CXX object CMakeFiles/tfs.dir/src/signals.cpp.o
[ 82%] Building CXX object CMakeFiles/tfs.dir/src/spawn.cpp.o
[ 83%] Building CXX object CMakeFiles/tfs.dir/src/spells.cpp.o
[ 85%] Building CXX object CMakeFiles/tfs.dir/src/talkaction.cpp.o
[ 86%] Building CXX object CMakeFiles/tfs.dir/src/tasks.cpp.o
[ 87%] Building CXX object CMakeFiles/tfs.dir/src/teleport.cpp.o
[ 88%] Building CXX object CMakeFiles/tfs.dir/src/thing.cpp.o
[ 90%] Building CXX object CMakeFiles/tfs.dir/src/tile.cpp.o
[ 91%] Building CXX object CMakeFiles/tfs.dir/src/tools.cpp.o
[ 92%] Building CXX object CMakeFiles/tfs.dir/src/trashholder.cpp.o
[ 93%] Building CXX object CMakeFiles/tfs.dir/src/vocation.cpp.o
[ 95%] Building CXX object CMakeFiles/tfs.dir/src/waitlist.cpp.o
[ 96%] Building CXX object CMakeFiles/tfs.dir/src/weapons.cpp.o
[ 97%] Building CXX object CMakeFiles/tfs.dir/src/wildcardtree.cpp.o
[ 98%] Building CXX object CMakeFiles/tfs.dir/src/xtea.cpp.o
[100%] Linking CXX executable tfs
/tmp/ccRfpthu.ltrans7.ltrans.o: In function `NpcScriptInterface::registerFunctions()':
<artificial>:(.text+0x27c9): undefined reference to `lua_setglobal'
<artificial>:(.text+0x27fc): undefined reference to `lua_setglobal'
<artificial>:(.text+0x282f): undefined reference to `lua_setglobal'
<artificial>:(.text+0x2862): undefined reference to `lua_setglobal'
<artificial>:(.text+0x2895): undefined reference to `lua_setglobal'
/tmp/ccRfpthu.ltrans7.ltrans.o:<artificial>:(.text+0x28c8): more undefined references to `lua_setglobal' follow
/tmp/ccRfpthu.ltrans11.ltrans.o: In function `LuaScriptInterface::luaAddEvent(lua_State*)':
<artificial>:(.text+0x20f1): undefined reference to `lua_getglobal'
<artificial>:(.text+0x2124): undefined reference to `lua_getglobal'
<artificial>:(.text+0x2191): undefined reference to `lua_callk'
/tmp/ccRfpthu.ltrans12.ltrans.o: In function `LuaScriptInterface::registerClass(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int (*)(lua_State*))':
<artificial>:(.text+0x74): undefined reference to `lua_setglobal'
<artificial>:(.text+0x133): undefined reference to `lua_getglobal'
/tmp/ccRfpthu.ltrans12.ltrans.o: In function `LuaScriptInterface::registerTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
<artificial>:(.text+0x534): undefined reference to `lua_setglobal'
/tmp/ccRfpthu.ltrans12.ltrans.o: In function `LuaScriptInterface::registerMethod(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int (*)(lua_State*))':
<artificial>:(.text+0x570): undefined reference to `lua_getglobal'
/tmp/ccRfpthu.ltrans12.ltrans.o: In function `LuaScriptInterface::registerGlobalMethod(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int (*)(lua_State*))':
<artificial>:(.text+0x6ae): undefined reference to `lua_setglobal'
/tmp/ccRfpthu.ltrans12.ltrans.o: In function `LuaScriptInterface::registerVariable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double)':
<artificial>:(.text+0x6eb): undefined reference to `lua_getglobal'
/tmp/ccRfpthu.ltrans12.ltrans.o: In function `LuaScriptInterface::registerGlobalVariable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double)':
<artificial>:(.text+0x786): undefined reference to `lua_setglobal'
/tmp/ccRfpthu.ltrans12.ltrans.o: In function `LuaScriptInterface::registerGlobalBoolean(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)':
<artificial>:(.text+0x7d5): undefined reference to `lua_setglobal'
/tmp/ccRfpthu.ltrans13.ltrans.o: In function `LuaScriptInterface::registerFunctions()':
<artificial>:(.text+0x57): undefined reference to `lua_setglobal'
<artificial>:(.text+0x90): undefined reference to `lua_setglobal'
<artificial>:(.text+0xc9): undefined reference to `lua_setglobal'
/tmp/ccRfpthu.ltrans13.ltrans.o:<artificial>:(.text+0x102): more undefined references to `lua_setglobal' follow
/tmp/ccRfpthu.ltrans14.ltrans.o: In function `LuaScriptInterface::protectedCall(lua_State*, int, int)':
<artificial>:(.text+0xd2e8): undefined reference to `lua_pcallk'
/tmp/ccRfpthu.ltrans14.ltrans.o: In function `LuaScriptInterface::getEvent(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
<artificial>:(.text+0xd563): undefined reference to `lua_getglobal'
<artificial>:(.text+0xd616): undefined reference to `lua_setglobal'
/tmp/ccRfpthu.ltrans14.ltrans.o: In function `LuaScriptInterface::getMetaEvent(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
<artificial>:(.text+0xd7a7): undefined reference to `lua_getglobal'
/tmp/ccRfpthu.ltrans14.ltrans.o: In function `LuaScriptInterface::getStackTrace(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
<artificial>:(.text+0xdbd4): undefined reference to `lua_getglobal'
<artificial>:(.text+0xdcd0): undefined reference to `lua_callk'
/tmp/ccRfpthu.ltrans23.ltrans.o: In function `DatabaseManager::updateDatabase()':
<artificial>:(.text+0x9d8c): undefined reference to `lua_setglobal'
<artificial>:(.text+0x9dea): undefined reference to `lua_setglobal'
<artificial>:(.text+0x9e48): undefined reference to `lua_setglobal'
<artificial>:(.text+0x9f19): undefined reference to `lua_pcallk'
<artificial>:(.text+0x9fea): undefined reference to `lua_getglobal'
<artificial>:(.text+0xa014): undefined reference to `lua_pcallk'
/tmp/ccRfpthu.ltrans26.ltrans.o: In function `ValueCallback::getMinMaxValues(Player*, CombatDamage&, bool) const':
<artificial>:(.text+0x281d): undefined reference to `lua_pcallk'
/tmp/ccRfpthu.ltrans26.ltrans.o: In function `TargetCallback::onTargetCombat(Creature*, Creature*) const':
<artificial>:(.text+0x2c43): undefined reference to `lua_pcallk'
/tmp/ccRfpthu.ltrans26.ltrans.o: In function `(anonymous namespace)::getGlobalString(lua_State*, char const*, char const*)':
<artificial>:(.text+0x1273c): undefined reference to `lua_getglobal'
<artificial>:(.text+0x127ac): undefined reference to `lua_rawlen'
/tmp/ccRfpthu.ltrans26.ltrans.o: In function `(anonymous namespace)::getGlobalNumber(lua_State*, char const*, int)':
<artificial>:(.text+0x128ba): undefined reference to `lua_getglobal'
/tmp/ccRfpthu.ltrans26.ltrans.o: In function `(anonymous namespace)::getGlobalBoolean(lua_State*, char const*, bool)':
<artificial>:(.text+0x12955): undefined reference to `lua_getglobal'
<artificial>:(.text+0x129b9): undefined reference to `lua_rawlen'
/tmp/ccRfpthu.ltrans26.ltrans.o: In function `ConfigManager::load()':
<artificial>:(.text+0x12b60): undefined reference to `lua_pcallk'
collect2: error: ld returned 1 exit status
CMakeFiles/tfs.dir/build.make:2141: recipe for target 'tfs' failed
make[2]: *** [tfs] Error 1
CMakeFiles/Makefile2:99: recipe for target 'CMakeFiles/tfs.dir/all' failed
make[1]: *** [CMakeFiles/tfs.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Edit: Nevermind, just solved it by changing 2.0 to 2.1 in FindLuaJIT.cmake file "PATH_SUFFIXES include/luajit-2.0 include"
Gonna work on solve the last bugs and upload a stable version.
 
Last edited:
Last edited:
nice to hear that im develeping my server and still using your first distribution of this as a base. i changed a lot tho but it could be nice seeing a finished versión of this with the UI you were working with.
 
Just made 2 big fixes that leads to the stable version in case anybody want to test it:

Gotta test a little more.
 
new aditions in mind to add or fix @Togu ?
Map fixes, make more tasks, make addon itens, make outfit itens, make mount itens, improve tutorial at the beginning, change skills name in database, show blessings count on skills window, make hotkeys clickable through buttons on top... but i dont think these things are urgent and i dont know when im going to do that

obs: server is on and there are some people having a lot of fun on it hahaha, 4 players on at the moment (3 polak hunting together) kkk
 
togu where can I change the amount of skillpoints players get each level?
and the amount of hp, mana attk speed etc they give with each point?
 
togu where can I change the amount of skillpoints players get each level?
and the amount of hp, mana attk speed etc they give with each point?

SERVER: data/XML/skills.xml and data/XML/stages.xml
CLIENT: modules/game_skills/skill.lua and modules/gamelib/const.lua (SkillDescription)

But attention to walk and attack speed, I think that will need changes on sources.
And you will probably need to change more things on client too, for that I recommend notepad++ and ctrl + shift + f searching on entire client folder
and always remember to check console on client with ctrl + t to see if you introduced news bugs and warnings.

Currently I'm working on removing the bugs on skill window (skillpoints were not refreshing - sending the value to the client - when leveling up and when seting skills/reseting skills)

Added mounts on mounts npc
Added yasir
Fixed obsidian knife and light shovel
Removed map bugs
Renamed skills name on client lua files
 
Last edited:
Accidentally I commited a sensitive data so I have to figure out how to delete it from the commits history, soon I will fix that and will set it as a public repository.
 
Hell bro dont scare me like that
Thought u were quiting or something🤣
 
Accidentally I commited a sensitive data so I have to figure out how to delete it from the commits history, soon I will fix that and will set it as a public repository.
Did you figure it out or do you want some help?
 
I figured out but I lost all my stars on GitHub repository :(
I think I lost it at the moment it went private

I'll probably put the in-game account maker back to let people test the project, cause preparing an AAC website will give me many headache

Anyway, it's public again
 
Awesome! I was just thinking of making something like this more based on SAO this will save me some time :)
Great work!
 
Receiving this error when trying to make a character

string(741) "INSERT INTO players(name, group_id, account_id, level, vocation, health, healthmax, experience, lookbody, lookfeet, lookhead, looklegs, looktype, lookaddons, maglevel, mana, manamax, manaspent, soul, town_id, posx, posy, posz, conditions, cap, sex, lastlogin, lastip, save, skull, skulltime, lastlogout, blessings, balance, skill_fist, skill_club, skill_sword, skill_axe, skill_dist, skill_shielding, skill_fishing) VALUES ('Test', '1', '2', '8', '1', '185', '185', '4200', '68', '76', '78', '58', '128', '0', '0', '40', '40', '0', '100', '1', '5', '5', '2', '', '470', '1', '0', '0', '1', '0', '0', '0', '0', '0', '10', '10', '10', '10', '10', '10', '10');"
(query - SQL error)
Type: voidQuery (voidQuery is used for update, insert or delete from database)

Unknown column 'manaspent' in 'field list
@Delusion
 
Back
Top