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

[8.60] The Forgotten Server 0.4

no i didn't invite players yet and yellow skull works well but igot problem that i doesn't know how to compiling :( i edit sources but i doesn't know how to compile and i saw alot of vedios and i still doesn't know how to do that :(
 
  1. Compile on linux:
    • apt-get install autoconf build-essential pkg-config automake libboost-all-dev libgmp3-dev libxml2-dev liblua5.1-0-dev libmysqlclient-dev libssl-dev libsqlite3-dev
    • cd /3777-master
    • chmod -R 777 src
    • cd src
    • ./autogen.sh && ./configure --enable-sqlite --enable-mysql --enable-root-permission --enable-server-diag && ./build.sh
 
there are some bugs.. players are going through each other.. newtypes arent saving.. it is a little strange lol.. But overall it is pretty cool. Ima search for another, tho..
 
The formula works very bad, even the min value does not work as intended for healing spells. I did some experimenting with this and comparing it with the formulae that is used in real tibia and I managed to get the results somewhat close to eachother and it seems to scale pretty ok.
What I found out is that you want to add about 65% from the default values. So take the default values * 1.65 and it shouldn't be too bad. I just switched the whole datapack and everything because this one was so bad and too many issues. But that's what I came up with whilst I was still using this.
I don't know if I understand right (my english is bad), but my focus isn't the datapack (spells, monsters, etc)
all bugfixes are in source

Hi I use this TFS
problem is when i restart server with /shutdown or global save
most of accounts changed vocations and some charachters get like 58967 distance or 3294 sword , etc
so when these players login the server get crash and no one can login
but really i dont know where is the error
this is mysql problem, if you use db included on my pack I think works well

Has anyone used this distribution with 30 + players on the server?
Yes, I have.
500+ players
uptime ± 3 months
windows server 2003

Can i compile with mvs2015?
I think so, with correct libs

What is the difference between this versions and the published version tfs 0.4 3777 by luciano @Fir3element
See the changelog

there are some bugs.. players are going through each other.. newtypes arent saving.. it is a little strange lol.. But overall it is pretty cool. Ima search for another, tho..
going through each other depends on the level and if it is in pz zone

doPlayerSetCastState
Files in libs are missing?
doPlayerSetCastState it's a src function (see luascript.cpp)
 
I've found a few problems may be just in my computer, I dont know, but, when you kill a character or you try to create a guild,this errors appears in console:

1- [22:37:40.737] sqlite3_step(): SQLITE ERROR: guilds.checkdata may not be NULL

This appears when I try to create a guild

2- [22:47:12.160] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such column: k.war (SELECT "pd"."date" FROM "player_killers" pk LEFT JOIN "killers" k ON "pk"."kill_id" = "k"."id"LEFT JOIN "player_deaths" pd ON "k"."death_id" = "pd"."id" WHERE "pk"."player_id" = 3 AND "k"."unjustified" = 1 AND "pd"."date" >= 1523306832 AND "k"."war" = 0)
[22:47:12.175] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: table killers has no column named war (INSERT INTO "killers" ("death_id", "final_hit", "unjustified", "war") VALUES (1, 1, 1, 0))

I know that there's a problem of missing columns in mysql, but someone who shows how to solve it?
 
I've found a few problems may be just in my computer, I dont know, but, when you kill a character or you try to create a guild,this errors appears in console:

1- [22:37:40.737] sqlite3_step(): SQLITE ERROR: guilds.checkdata may not be NULL

This appears when I try to create a guild

2- [22:47:12.160] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such column: k.war (SELECT "pd"."date" FROM "player_killers" pk LEFT JOIN "killers" k ON "pk"."kill_id" = "k"."id"LEFT JOIN "player_deaths" pd ON "k"."death_id" = "pd"."id" WHERE "pk"."player_id" = 3 AND "k"."unjustified" = 1 AND "pd"."date" >= 1523306832 AND "k"."war" = 0)
[22:47:12.175] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: table killers has no column named war (INSERT INTO "killers" ("death_id", "final_hit", "unjustified", "war") VALUES (1, 1, 1, 0))

I know that there's a problem of missing columns in mysql, but someone who shows how to solve it?
Please, use MySQL!!!
I didn't test SQLite=/
 
Sorry I copied the wrong text, I am already using Mysql, using Znote Aac, all is good when I import mysql, and all works good when I import Znote tables. I can create an account from Znote, but I cant login and create a character.
The error in console what I said in the post before: [14:3:06.775] mysql_real_query(): SELECT * FROM z_ots_comunication WHERE `type` = 'login'; - MYSQL ERROR: Table 'xenoria.z_ots_comunication' doesn't exist (1146), I know that I've to create a table named 'xenoria.z_ots_comunication', but I dont know how to do it. Can you help me?
 
Sorry I copied the wrong text, I am already using Mysql, using Znote Aac, all is good when I import mysql, and all works good when I import Znote tables. I can create an account from Znote, but I cant login and create a character.
The error in console what I said in the post before: [14:3:06.775] mysql_real_query(): SELECT * FROM z_ots_comunication WHERE `type` = 'login'; - MYSQL ERROR: Table 'xenoria.z_ots_comunication' doesn't exist (1146), I know that I've to create a table named 'xenoria.z_ots_comunication', but I dont know how to do it. Can you help me?
z_ots_comunication is from Gesior acc maker (i think)
maybe your login.lua (creaturescripts/scripts) is pushing this query
 
-Login.lua script-

local config = {
loginMessage = getConfigValue('loginMessage'),
useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}

function onLogin(cid)
accountManager = "Account Manager"
managerCounter = 0

for i, player in ipairs(getOnlinePlayers()) do
if accountManager:lower() == player:lower() then
managerCounter = managerCounter + 1
end
end

if managerCounter >= 3 then
return false
end
local loss = getConfigValue('deathLostPercent')
if(loss ~= nil) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
end

local accountManager = getPlayerAccountManager(cid)
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
str = str .. " Please choose your outfit."
doPlayerSendOutfitWindow(cid)
end

doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
elseif(accountManager == MANAGER_NAMELOCK) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
elseif(accountManager == MANAGER_ACCOUNT) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
end

if(not isPlayerGhost(cid)) then
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
end

registerCreatureEvent(cid, "Mail")
registerCreatureEvent(cid, "GuildMotd")

registerCreatureEvent(cid, "Idle")
if(config.useFragHandler) then
registerCreatureEvent(cid, "SkullCheck")
end

registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, "AdvanceSave")
registerCreatureEvent(cid, "attackguild")
registerCreatureEvent(cid, "advance")
registerCreatureEvent(cid, "FimVip")
registerCreatureEvent(cid, "SkullCheck")
registerCreatureEvent(cid, "demonOakLogout")
registerCreatureEvent(cid, "demonOakDeath")
registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, VipReceive)
registerCreatureEvent(cid, "FirstItems")
registerCreatureEvent(cid, "Promot")
registerCreatureEvent(cid, "PlayerKill")
registerCreatureEvent(cid, "KillingInTheNameOf")
registerCreatureEvent(cid, "PythiusDead")

if (InitArenaScript ~= 0) then
InitArenaScript = 1

for i = 42300, 42309 do
setGlobalStorageValue(i, 0)
setGlobalStorageValue(i+100, 0)
end
end

if getPlayerStorageValue(cid, 42309) < 1 then
for i = 42300, 42309 do
setPlayerStorageValue(cid, i, 0)
end
end

if getPlayerStorageValue(cid, 42319) < 1 then
for i = 42310, 42319 do
setPlayerStorageValue(cid, i, 0)
end
end

if getPlayerStorageValue(cid, 42329) < 1 then
for i = 42320, 42329 do
setPlayerStorageValue(cid, i, 0)
end
end
if getPlayerStorageValue(cid, 42355) == -1 then
setPlayerStorageValue(cid, 42355, 0)
end
setPlayerStorageValue(cid, 42350, 0)
setPlayerStorageValue(cid, 42352, 0)
return true
end
 
-Login.lua script-

local config = {
loginMessage = getConfigValue('loginMessage'),
useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}

function onLogin(cid)
accountManager = "Account Manager"
managerCounter = 0

for i, player in ipairs(getOnlinePlayers()) do
if accountManager:lower() == player:lower() then
managerCounter = managerCounter + 1
end
end

if managerCounter >= 3 then
return false
end
local loss = getConfigValue('deathLostPercent')
if(loss ~= nil) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
end

local accountManager = getPlayerAccountManager(cid)
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
str = str .. " Please choose your outfit."
doPlayerSendOutfitWindow(cid)
end

doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
elseif(accountManager == MANAGER_NAMELOCK) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
elseif(accountManager == MANAGER_ACCOUNT) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
end

if(not isPlayerGhost(cid)) then
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
end

registerCreatureEvent(cid, "Mail")
registerCreatureEvent(cid, "GuildMotd")

registerCreatureEvent(cid, "Idle")
if(config.useFragHandler) then
registerCreatureEvent(cid, "SkullCheck")
end

registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, "AdvanceSave")
registerCreatureEvent(cid, "attackguild")
registerCreatureEvent(cid, "advance")
registerCreatureEvent(cid, "FimVip")
registerCreatureEvent(cid, "SkullCheck")
registerCreatureEvent(cid, "demonOakLogout")
registerCreatureEvent(cid, "demonOakDeath")
registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, VipReceive)
registerCreatureEvent(cid, "FirstItems")
registerCreatureEvent(cid, "Promot")
registerCreatureEvent(cid, "PlayerKill")
registerCreatureEvent(cid, "KillingInTheNameOf")
registerCreatureEvent(cid, "PythiusDead")

if (InitArenaScript ~= 0) then
InitArenaScript = 1

for i = 42300, 42309 do
setGlobalStorageValue(i, 0)
setGlobalStorageValue(i+100, 0)
end
end

if getPlayerStorageValue(cid, 42309) < 1 then
for i = 42300, 42309 do
setPlayerStorageValue(cid, i, 0)
end
end

if getPlayerStorageValue(cid, 42319) < 1 then
for i = 42310, 42319 do
setPlayerStorageValue(cid, i, 0)
end
end

if getPlayerStorageValue(cid, 42329) < 1 then
for i = 42320, 42329 do
setPlayerStorageValue(cid, i, 0)
end
end
if getPlayerStorageValue(cid, 42355) == -1 then
setPlayerStorageValue(cid, 42355, 0)
end
setPlayerStorageValue(cid, 42350, 0)
setPlayerStorageValue(cid, 42352, 0)
return true
end
registerCreatureEvent(cid, VipReceive)
 
nice it's solved. Thanks @Fir3element

The last thing, which gesior you recommend to use?

@Fir3element forget my last post. There's all working fine, anyways I cant find the command of the cast, which is it?
 
Last edited by a moderator:
Back
Top