[8.60] The Forgotten Server 0.4

Eclipso

Mapper
Joined
Apr 12, 2017
Messages
94
Reaction score
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 :(
 

arti1194

Member
Joined
Jun 6, 2009
Messages
96
Reaction score
3
  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
 

arti1194

Member
Joined
Jun 6, 2009
Messages
96
Reaction score
3
Has anyone used this distribution with 30 + players on the server?
 

Kung San

New Member
Joined
Aug 2, 2014
Messages
2
Reaction score
0
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..
 

Sooh

New Member
Joined
Nov 20, 2016
Messages
8
Reaction score
6
doPlayerSetCastState
Files in libs are missing?
 
OP
Fir3element

Fir3element

Member
Joined
Dec 31, 2015
Messages
21
Reaction score
25
Location
Brazil
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)
 

Xenoriano

New Member
Joined
May 9, 2018
Messages
19
Reaction score
0
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?
 
OP
Fir3element

Fir3element

Member
Joined
Dec 31, 2015
Messages
21
Reaction score
25
Location
Brazil
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=/
 

Xenoriano

New Member
Joined
May 9, 2018
Messages
19
Reaction score
0
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?
 
OP
Fir3element

Fir3element

Member
Joined
Dec 31, 2015
Messages
21
Reaction score
25
Location
Brazil
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
 

Xenoriano

New Member
Joined
May 9, 2018
Messages
19
Reaction score
0
-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
 
OP
Fir3element

Fir3element

Member
Joined
Dec 31, 2015
Messages
21
Reaction score
25
Location
Brazil
-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)
 

Xenoriano

New Member
Joined
May 9, 2018
Messages
19
Reaction score
0
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:
Top