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

Server save every 1 sec

naod123456

Wazzaap
Joined
Mar 28, 2013
Messages
242
Reaction score
4
i got a problem finally when i fixed Everything this shows up its like server save every 1 sec look the screenshot
http://prntscr.com/3vrc9i its just keep going how do i change it.. :/ this is my save.lua

Code:
nction executeSaveServer()
 doSaveServer()
 doBroadcastMessage("Server saved, next save in 30 minutes.")
 return true
end
function onThink(interval, lastExecution, thinkInterval)
  doBroadcastMessage("Automatic Serversave in 10seconds!")
 addEvent(executeSaveServer, 10000)
 return true
end
 
Make the interval higher in globalevents.xml, your server is probable using milliseconds and it's added as seconds, so add 000 then to the intervals.
 
Make the interval higher in globalevents.xml, your server is probable using milliseconds and it's added as seconds, so add 000 then to the intervals.
ok thx, but now i get this error i dont know why i got 0.4 tfs in my war.lua in line 53 this is the rror http://prntscr.com/3vriix
Code:
 function onSay(cid, words, param, channel)
 local guild = getPlayerGuildId(cid)
 if(not guild or getPlayerGuildLevel(cid) < GUILDLEVEL_LEADER) then
 doPlayerSendChannelMessage(cid, "", "You cannot execute this talkaction.", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 local t = string.explode(param, ",")
 if(not t[2]) then
 doPlayerSendChannelMessage(cid, "", "Not enough param(s).", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 local enemy = getGuildId(t[2])
 if(not enemy) then
 doPlayerSendChannelMessage(cid, "", "Guild \"" .. t[2] .. "\" does not exists.", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 if(enemy == guild) then
 doPlayerSendChannelMessage(cid, "", "You cannot perform war action on your own guild.", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 local enemyName, tmp = "", db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. enemy)
 if(tmp:getID() ~= -1) then
 enemyName = tmp:getDataString("name")
 tmp:free()
 end
 if(isInArray({"accept", "reject", "cancel"}, t[1])) then
 local query = "`guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild
 if(t[1] == "cancel") then
 query = "`guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy
 end
 tmp = db.getResult("SELECT `id`, `begin`, `end`, `payment` FROM `guild_wars` WHERE " .. query .. " AND `status` = 0")
 if(tmp:getID() == -1) then
 doPlayerSendChannelMessage(cid, "", "Currently there's no pending invitation for a war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 if(t[1] == "accept") then
 local _tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild)
 local state = _tmp:getID() < 0 or _tmp:getDataInt("balance") < tmp:getDataInt("payment")
 _tmp:free()
 if(state) then
 doPlayerSendChannelMessage(cid, "", "Your guild balance is too low to accept this invitation.", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 db.executeQuery("UPDATE `guilds` SET `balance` = `balance` - " .. tmp:getDataInt("payment") .. " WHERE `id` = " .. guild)
 end
 query = "UPDATE `guild_wars` SET "
 local msg = "accepted " .. enemyName .. " invitation to war."
 if(t[1] == "reject") then
 query = query .. "`end` = " .. os.time() .. ", `status` = 2"
 msg = "rejected " .. enemyName .. " invitation to war."
 elseif(t[1] == "cancel") then
 query = query .. "`end` = " .. os.time() .. ", `status` = 3"
 msg = "canceled invitation to a war with " .. enemyName .. "."
 else
 query = query .. "`begin` = " .. os.time() .. ", `end` = " .. (tmp:getDataInt("end") > 0 and (os.time() + ((tmp:getDataInt("begin") - tmp:getDataInt("end")) / 86400)) or 0) .. ", `status` = 1"
 end
 query = query .. " WHERE `id` = " .. tmp:getDataInt("id")
 if(t[1] == "accept") then
 doGuildAddEnemy(guild, enemy, tmp:getDataInt("id"), WAR_GUILD)
 doGuildAddEnemy(enemy, guild, tmp:getDataInt("id"), WAR_ENEMY)
 end
 tmp:free()
 db.executeQuery(query)
 doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. msg, MESSAGE_EVENT_ADVANCE)
 return true
 end
 if(t[1] == "invite") then
 local str = ""
 tmp = db.getResult("SELECT `guild_id`, `status` FROM `guild_wars` WHERE `guild_id` IN (" .. guild .. "," .. enemy .. ") AND `enemy_id` IN (" .. enemy .. "," .. guild .. ") AND `status` IN (0, 1)")
 if(tmp:getID() ~= -1) then
 if(tmp:getDataInt("status") == 0) then
 if(tmp:getDataInt("guild_id") == guild) then
 str = "You have already invited " .. enemyName .. " to war."
 else
 str = enemyName .. " have already invited you to war."
 end
 else
 str = "You are already on a war with " .. enemyName .. "."
 end
 tmp:free()
 end
 if(str ~= "") then
 doPlayerSendChannelMessage(cid, "", str, TALKTYPE_CHANNEL_W, 0)
 return true
 end
 local members = db.getResult("SELECT COUNT(`gr`.`id`) AS `total` FROM `players` AS `p` LEFT JOIN `guild_ranks` AS `gr` ON `gr`.`id` = `p`.`rank_id` WHERE `gr`.`guild_id` = ".. guild .. ";")
 if members:getID() ~= LUA_ERROR then
 if(members:getDataInt("total") < 5) then
 doPlayerSendChannelMessage(cid, "", "Your guild need to have at least 5 players to invite to war.", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 members:free()
 end
 local enemys = db.getResult("SELECT COUNT(`gr`.`id`) AS `total` FROM `players` AS `p` LEFT JOIN `guild_ranks` AS `gr` ON `gr`.`id` = `p`.`rank_id` WHERE `gr`.`guild_id` = ".. enemy .. ";")
 if enemys:getID() ~= LUA_ERROR then
 if(enemys:getDataInt("total") < 5) then
 doPlayerSendChannelMessage(cid, "", "Enemy guild needs to have at least 5 players to be invited to war.", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 enemys:free()
 end
 local frags = tonumber(t[3])
 if(frags ~= nil) then
 frags = math.max(10, math.min(1000, frags))
 else
 frags = 100
 end
 local payment = tonumber(t[4])
 if(payment ~= nil) then
 payment = math.max(100000, math.min(1000000000, payment))
 tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild)
 local state = tmp:getID() < 0 or tmp:getDataInt("balance") < payment
 tmp:free()
 if(state) then
 doPlayerSendChannelMessage(cid, "", "Your guild balance is too low for such payment.", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 db.executeQuery("UPDATE `guilds` SET `balance` = `balance` - " .. payment .. " WHERE `id` = " .. guild)
 else
 payment = 0
 end
 local begining, ending = os.time(), tonumber(t[5])
 if(ending ~= nil and ending ~= 0) then
 ending = begining + (ending * 86400)
 else
 ending = 0
 end
 db.executeQuery("INSERT INTO `guild_wars` (`guild_id`, `enemy_id`, `begin`, `end`, `frags`, `payment`) VALUES (" .. guild .. ", " .. enemy .. ", " .. begining .. ", " .. ending .. ", " .. frags .. ", " .. payment .. ");")
 doBroadcastMessage(getPlayerGuildName(cid) .. " has invited " .. enemyName .. " to war till " .. frags .. " frags.", MESSAGE_EVENT_ADVANCE)
 return true
 end
 if(not isInArray({"end", "finish"}, t[1])) then
 return false
 end
 local status = (t[1] == "end" and 1 or 4)
 tmp = db.getResult("SELECT `id` FROM `guild_wars` WHERE `guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy .. " AND `status` = " .. status)
 if(tmp:getID() ~= -1) then
 local query = "UPDATE `guild_wars` SET `end` = " .. os.time() .. ", `status` = 5 WHERE `id` = " .. tmp:getDataInt("id")
 tmp:free()
 doGuildRemoveEnemy(guild, enemy)
 doGuildRemoveEnemy(enemy, guild)
 db.executeQuery(query)
 doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. (status == 4 and "mend fences" or "ended up a war") .. " with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE)
 return true
 end
 if(status == 4) then
 doPlayerSendChannelMessage(cid, "", "Currently there's no pending war truce from " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 tmp = db.getResult("SELECT `id`, `end` FROM `guild_wars` WHERE `guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild .. " AND `status` = 1")
 if(tmp:getID() ~= -1) then
 if(tmp:getDataInt("end") > 0) then
 tmp:free()
 doPlayerSendChannelMessage(cid, "", "You cannot request ending for war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 local query = "UPDATE `guild_wars` SET `status` = 4, `end` = " .. os.time() .. " WHERE `id` = " .. tmp:getDataInt("id")
 tmp:free()
 db.executeQuery(query)
 doBroadcastMessage(getPlayerGuildName(cid) .. " has signed an armstice declaration on a war with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE)
 return true
 end
 doPlayerSendChannelMessage(cid, "", "Currently there's no active war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
 return true
 end
 
TFS 0.4 uses db.query instead of db.executeQuery, so change that line in 100-compat.lua again.
Code:
db.executeQuery = db.query
It should be like this for TFS 0.4.
 
TFS 0.4 uses db.query instead of db.executeQuery, so change that line in 100-compat.lua again.
Code:
db.executeQuery = db.query
It should be like this for TFS 0.4.
Thx the war system works now, how do i take down hits from a spell example its a spell in my server namd exori gran ico and it hits to much it hits like 900-1000 i whanna take down the hit and make theam wait untill they can use it again, how do i do that? (sry for noob questions)
+
 
Go to spells.xml, ctrl f and then type the words of the spell. Then you find the spells.xml line for that spell and at the end you find the lua script it is using and in which folder that is.
Open that script and then you see numbers for the damage, you can just make them lower.
 
Go to spells.xml, ctrl f and then type the words of the spell. Then you find the spells.xml line for that spell and at the end you find the lua script it is using and in which folder that is.
Open that script and then you see numbers for the damage, you can just make them lower.
This the spell script but i dont find the numbers

Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)
function onGetFormulaValues(cid, level, skill, attack, factor)
 local skillTotal, levelTotal = skill + attack * 30, level / 1
 return -(skillTotal / 3 + levelTotal), -(skillTotal + levelTotal)
end
setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
 
You can make the 30 lower.
Atm the calculation is like this.
skill + attack x 30 = the damage from skill and weapon.

You can also do level / 5 if you want level to have less influence on the damage.
Atm if someone is for example lvl 200, it wil add 200 extra damage to the spell.
 
You can make the 30 lower.
Atm the calculation is like this.
skill + attack x 30 = the damage from skill and weapon.

You can also do level / 5 if you want level to have less influence on the damage.
Atm if someone is for example lvl 200, it wil add 200 extra damage to the spell.
Oke how do i do that
 
Code:
local skillTotal, levelTotal = skill + attack * 30, level / 1
Make 30 lower to let skill and attack give less damage, make the 1 higher to let level give less damage.
 
Back
Top