Jump to content
Close
poko360

Scripting como abrir quantas tasks quiser? script do vodkart

Recommended Posts

eu queria liberar pro player abrir quantas tasks ele quiser em vez de 1 por 1, alguem pode me ajudar ples?

script do @Vodkart

NPC

Spoiler

domodlib('task_func')
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
local msg = string.lower(msg)
if isInArray({"task","tasks","missao","mission"}, msg) then
npcHandler:say("Escolha sua task falando [{!task}] e veja qual task voce falta terminar!              [EXEMPLO:  {easy hunts} ||| {medium hunts} ||| {hard hunts}  etc...]", cid)
talkState[talkUser] = 1
elseif talkState[talkUser] == 1 then
if tasktabble[msg] then
if CheckTask(cid) ~= true then
local contagem = getPlayerStorageValue(cid, tasktabble[msg].storage)
if (contagem == -1) then contagem = 1 end
if not tonumber(contagem) then npcHandler:say('Desculpe, mas você já terminou a task do '..msg, cid) return true end
setPlayerStorageValue(cid, tasktabble[msg].storage_start, 1)
npcHandler:say("Parabéns, agora você está participando da missão task do "..msg..",se desejar sair da task, fale {sair} que voce nao perdera os monstros que ja matou. falta matar "..string.sub(((contagem)-1)-tasktabble[msg].count, 2).." "..msg, cid)
talkState[talkUser] = 0
else
npcHandler:say('Desculpe, mas você já faz parte de uma task!', cid)
talkState[talkUser] = 0
end
else
npcHandler:say('digite o nome correto da missão task! para mais informações digite {!task}', cid)
talkState[talkUser] = 1
end
elseif isInArray({"receber","reward","recompensa","report","reportar"}, msg) then
if CheckTask(cid) then
for k, v in pairs(tasktabble) do
racetype = k
if getPlayerStorageValue(cid,v.storage_start) >= 1 then
local contagem = getPlayerStorageValue(cid, v.storage)
if (contagem == -1) then contagem = 1 end
if not tonumber(contagem) then npcHandler:say('você só pode receber os items uma única vez!', cid) return true end
if (((contagem)-1) >= v.count) then
for _, check in pairs(configbosses_task) do
if string.lower(check.race) == string.lower(racetype) then
local on = getPlayersOnline()
for i=1, #on do
if HavePlayerPosition(on, check.FromPosToPos[1],check.FromPosToPos[2]) then
selfSay('aguarde alguns instantes, tem pessoas fazendo a task.', cid) return true
end
end
doTeleportThing(cid, check.Playerpos)
local function checkArea(cid)
if not isCreature(cid) then return LUA_ERROR end
if HavePlayerPosition(cid, check.FromPosToPos[1],check.FromPosToPos[2]) then
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
end
end
addEvent(checkArea, check.time*60*1000, cid)
end
end
local str = ""
if v.exp ~= nil then doPlayerAddExp(cid, v.exp ) str = str.."".. (str == "" and "" or ",") .." "..v.exp.." de exp" end
if v.money ~= nil then doPlayerAddMoney(cid, v.money) str = str.."".. (str == "" and "" or ",") ..""..v.money.." gps" end
if v.reward ~= nil then doAddItemsFromList(cid,v.reward) str = str.."".. (str == "" and "" or ",") ..""..getItemsFromList(v.reward) end
npcHandler:say("Obrigado pela sua ajuda Recompensas: "..(str == "" and "nenhuma" or ""..str.."").." por ter completado a task do "..k, cid)
setPlayerStorageValue(cid, v.storage, "Finished")
setPlayerStorageValue(cid, v.storage_start, 0)
setPlayerStorageValue(cid, 521456, getPlayerStorageValue(cid, 521456) == -1 and 1 or getPlayerStorageValue(cid, 521456)+1)
finisheAllTask(cid)
else
npcHandler:say('Desculpe,mas você só matou '..((contagem)-1)..' de '..v.count..' '..k, cid)
end
end
end
else
npcHandler:say("você não está em nenhuma missão task", cid)
end
elseif isInArray({"sair","leave","exit"}, msg) then
if CheckTask(cid) then
talkState[talkUser] = 2
for k, v in pairs(tasktabble) do
if getPlayerStorageValue(cid,v.storage_start) >= 1 then
storagesair = v.storage_start
local contagem = getPlayerStorageValue(cid, v.storage)
if (contagem == -1) then contagem = 1 end
npcHandler:say('você está participando de uma missão task do '..k..' e já tem '..((contagem)-1)..' '..k..' mortos, deseja mesmo sair?', cid)
end
end
else
npcHandler:say("você não está em nenhuma missão task", cid)
end
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
setPlayerStorageValue(cid, storagesair, 0)
npcHandler:say("Você foi retirado da task com sucesso!", cid)
elseif msg == "no" then
selfSay("Tudo bem então", cid)
talkState[talkUser] = 0
npcHandler:releaseFocus(cid)
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())


MOD

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<mod name="Simple Task" version="3.0" author="Vodkart" contact="#####.com" enabled="yes">
<config name="task_func"><![CDATA[

tasktabble = {
["easy hunts"] = {monster_race={"cyclops","cyclops smith"}, storage_start = 200235, storage = 91035,count = 100, reward = {{2160,100}}},
["medium hunts"] = {monster_race={"dragon","dragon lord"}, storage_start = 200236, storage = 91036,count = 500, reward = {{2157,10}}},
["hard hunts"] = {monster_race={"hydra","serpent spawn"}, storage_start = 200240, storage = 91040,count = 1500, reward = {{2157,25}}},
["insane hunts"] = {monster_race={"wild snow","midnight asura","nature djinn","storm djinn"}, storage_start = 200245, storage = 91045,count = 2500, reward = {{2157,50}}},
["ultimate hunts"] = {monster_race={"wizard","blackfrost","marauder","ferumbras"}, storage_start = 200250, storage = 91050,count = 5000, reward = {{2157,75}}},
["red hunts"] = {monster_race={"red wizard","red blackfrost","red marauder","red ferumbras"}, storage_start = 200251, storage = 91051,count = 10000, reward = {{2157,100}}},
["boss apolo"] = {monster_race={"apolo"}, storage_start = 200252, storage = 91052,count = 50, reward = {{6543,15},{8981,1}}},
["boss lyre"] = {monster_race={"lyre"}, storage_start = 200253, storage = 91053,count = 50, reward = {{10309,1},{2198,1}}},
["boss blue"] = {monster_race={"blue"}, storage_start = 200254, storage = 91054,count = 7, reward = {{10530,1},{12524,1}}},
["boss vip coin"] = {monster_race={"vip coin"}, storage_start = 200255, storage = 91055,count = 10, reward = {{11192,10}}},
["boss runes"] = {monster_race={"runes"}, storage_start = 200256, storage = 91056,count = 50, reward = {{2348,1}}},
["boss baby"] = {monster_race={"baby"}, storage_start = 200257, storage = 91057,count = 50, reward = {{4863,1}}},
["boss pingu"] = {monster_race={"pingu"}, storage_start = 200259, storage = 91059,count = 50, reward = {{6544,1}}},
["boss kayn"] = {monster_race={"kayn"}, storage_start = 200260, storage = 91060,count = 50, reward = {{10503,1}}},
["boss money"] = {monster_race={"money"}, storage_start = 200261, storage = 91061,count = 50, reward = {{2157,300}}},
["oof hunts"] = {monster_race={"oof"}, storage_start = 200258, storage = 91058,count = 25000, reward = {{8977,1}}}
}


configbosses_task = {
{race = "minotaur",Playerpos = {x = 189, y = 57, z = 7}, FromPosToPos = {{x = 186, y = 54, z = 7},{x = 193, y = 60, z = 7}},time = 5},
{race = "necromancedr",Playerpos = {x = 196, y = 39, z = 7}, FromPosToPos = {{x = 195, y = 37, z = 7},{x = 198, y = 41, z = 7}}, time = 5},
{race = "dragonsd",Playerpos = {x = 208, y = 59, z = 7}, FromPosToPos = {{x = 206, y = 56, z = 7},{x = 209, y = 65, z = 7}}, time = 5}
}

function CheckTask(cid)
for k, v in pairs(tasktabble) do
if getPlayerStorageValue(cid,v.storage_start) >= 1 then return true end
end
return false
end
function finisheAllTask(cid)
local config = {
exp = {false,100000},
money = {false,8000000},
items ={false,{{7443,2},{2160,100}}},
premium ={false,1}
}
local x = true
for k, v in pairs(tasktabble) do
if tonumber(getPlayerStorageValue(cid,v.storage)) then
x = false
end
end
if x == true then
setPlayerStorageValue(cid, 521456, 0)
local b = getGlobalStorageValue(63005) if b == -1 then b = 1 end
if b < 11 then
setGlobalStorageValue(63005,b+1)
doBroadcastMessage('[Task Mission Complete] '..getCreatureName(cid)..' was the '..b..' to finish the task!.')
doPlayerAddPremiumDays(cid, config.premium[1] == true and config.premium[2] or 0)
doPlayerAddExp(cid, config.exp[1] == true and config.exp[2] or 0)
doPlayerAddMoney(cid, config.money[1] == true and config.money[2] or 0)
if config.items[1] == true then doAddItemsFromList(cid,config.items[2]) end
doItemSetAttribute(doPlayerAddItem(cid, 7369), "name", "trophy "..getCreatureName(cid).." completed all the task.")
end
end
end
function HavePlayerPosition(cid, from, to)
return isInRange(getPlayerPosition(cid), from, to) and true or false
end
function getRankStorage(cid, value, max, RankName) -- by vodka
local str =""
str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"
local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > max then break end
str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str)
end
function getItemsInContainerById(container, itemid) -- Function By Kydrai
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getItemsInContainerById(item.uid, itemid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
else
if itemid == item.itemid then
table.insert(items, item.uid)
end
end
end
end
return items
end
function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo
local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)
local piles = 0
if #item > 0 then
for i,x in pairs(item) do
if getThing(x).type < 100 then
local it = getThing(x)
doTransformItem(it.uid, itemid, it.type+quant)
if it.type+quant > 100 then
doPlayerAddItem(cid, itemid, it.type+quant-100)
end
else
piles = piles+1
end
end
else
return doPlayerAddItem(cid, itemid, quant)
end
if piles == #item then
doPlayerAddItem(cid, itemid, quant)
end
end
function getItemsFromList(items) -- by vodka
local str = ''
if table.maxn(items) > 0 then
for i = 1, table.maxn(items) do
str = str .. items[2] .. ' ' .. getItemNameById(items[1])
if i ~= table.maxn(items) then str = str .. ', ' end end end
return str
end
function doAddItemsFromList(cid,items) -- by vodka
if table.maxn(items) > 0 then
for i = 1, table.maxn(items) do
local count = items[2]
while count > 0 do
if isItemStackable(items[1]) then
doPlayerAddItemStacking(cid, items[1], 1)
else
doPlayerAddItem(cid, items[1],1)
end
count = count - 1
end
end
end
end
function pairsByKeys(t, f)
local a = {}
for n in pairs(t) do table.insert(a, n) end
table.sort(a, f)
local i = 0
local iter = function ()
i = i + 1
if a == nil then return nil
else return a, t[a]
end
end
return iter
end
]]></config>
<event type="login" name="TaskLogin" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "KillTask")
return true
end]]></event>
<talkaction words="/task;!task" event="buffer"><![CDATA[
domodlib('task_func')
local param = string.lower(param)
if param == "rank" then
getRankStorage(cid, 521456, 20, "Task Rank Finalizadas") return true
end
local str = ""
str = str .. "Task Completed :\n\n"
for k, v in pairsByKeys(tasktabble) do
local contagem = getPlayerStorageValue(cid, v.storage)
if (contagem == -1) then contagem = 1 end
str = str..k.." = ".. (not tonumber(contagem) and "["..contagem.."]" or "["..((contagem)-1).."/"..v.count.."]") .."\n"
end
str = str .. ""
return doShowTextDialog(cid, 8983, str)
]]></talkaction>
<event type="kill" name="KillTask" event="script"><![CDATA[
domodlib('task_func')
function onKill(cid, target, lastHit)
if(isMonster(target) == true) then
local n = string.lower(getCreatureName(target))
for race, mob in pairs(tasktabble) do
if getPlayerStorageValue(cid,mob .storage_start) >= 1 then
for i = 1,#mob.monster_race do
if n == mob.monster_race then
local contagem = getPlayerStorageValue(cid, mob.storage)
if (contagem == -1) then contagem = 1 end
if not tonumber(contagem) then return true end
if contagem > mob.count then return true end
if contagem > mob.count then return true end
setPlayerStorageValue(cid, mob.storage, contagem+1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == mob.count and "Congratulations! You finished the task of "..race.."." or "defeated. Total [" .. contagem .. "/" .. mob.count .. "] " .. race .. ".").."")
end
end
end
end
end
return true
end]]></event>
</mod>


 


Edited by poko360
error1 (see edit history)

Share this post


Link to post
Share on other sites

E ai man, até dá para fazer isso, mas teria que "refazer" o npc, e digamos que o player vai fazer 5 task de uma vez só por exemplo, quando ele chegar no npc, ele vai receber as 5 premiações tudo de uma vez tbm?



vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

@Vodkart teria como tipo, quando o player ja logar no server, ele abrisse as tasks automaticamente? sem precisar do NPC?
ai quando terminasse a contagem, ele recebia o premio por creaturescript automaticamente e dava a storage "Finished"

teria que refazer o script totalmente no caso?


Share this post


Link to post
Share on other sites

@poko360 Uma dica é desenvolver um sistema de Achievements.
Ao iniciar o jogo você terá suas devidas missões para serem completadas automaticamente. Sem uso de qualquer NPC.
E ao finalizar, você receberá uma premiação. :) 


Share this post


Link to post
Share on other sites

esse é o problema =S, eu queria q ja iniciasse do primeiro monstro que matasse, quaqndo atingisse ja receberia a premiação, o problema  q nsei fazer isso


Share this post


Link to post
Share on other sites

Essa task automatica é até mais fácil e simples de fazer. 

Se eu tiver eu tempo de sobra eu faço, é digamos 70% mais simple fazer essa task normal do que uma com npc e por ordem ou "escolha"



vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

belezinha, mas tem como por do mesmo modo?

tipo, eu mato dragon, ai conta so pros de dragon


eu mato demon... só conta pros de demon etc...


Share this post


Link to post
Share on other sites

Está aqui:

 

https://pastebin.com/raw/Z7KtXhXT

 

Obrigado pela sua ajuda!

 

OBS: Não esqueça de excluir a outra task, para não dar conflito com a talkactions !task e task

 

 

Features da Automatic Task:

 

 

[+] Comando que mostra as tasks disponiveis pelo level. ( se já feita, ela não mostra mais)

[+] Contador de monstros mortos

[+] Talkactions para ativar e desativar o contador

[+] Script de onAdvance que mostra qual task foi aberta quando pegar um level necessario da task.

[+] Configuração para colocar se poderá ou não repetir a task.



vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

mt obrigado @Vodkart

 

so queria tirar mais uma duvida:
se eu quiser criar 2 mods da mesma auto task
(tipo um pra boss que nao vai poder repetir)
e outro pra monstro normal (que pode repetir)

oq eu teria que mudar? ou nao da certo?


Share this post


Link to post
Share on other sites

@poko360 entendi, então eu fiz de forma individual, para colocar na propria tabela...:

 

 

<?xml version="1.0" encoding="ISO-8859-1"?> 
<mod name="Automatic Simple Task" version="1.0" author="Vodkart" contact="tibiaking.com" enabled="yes"> 
<config name="auto_stask"><![CDATA[

automatic_task = {
	[1] = {name = "Trolls", storage = 761000, monsters_list = {"Troll","Troll champion"}, can_repeat = true, level_min = 10, count = 5, reward = {{2173,1}}, exp = 2000, money = 2000},
	[2] = {name = "rotworms", storage = 761001, monsters_list = {"rotworm","carrion worm","Rotworm Queen"}, can_repeat = true, level_min = 11, count = 6, reward = {{2173,1},{2159,10}}, exp = 2500, money = 3000},
	[3] = {name = "cyclops", storage = 761002, monsters_list = {"cyclops","cyclops smith","cyclops drone"}, can_repeat = true, level_min = 12, count = 7, reward = {{2173,2},{2159,50}}, exp = 3000, money = 3000},
	[4] = {name = "ORSHABAAL BOSS", storage = 761003, monsters_list = {"orshabaal"}, can_repeat = false, level_min = 15, count = 1, reward = {{2173,2},{2159,100}}, exp = 10000, money = 10000}
}

automatic_task_config = {
	reward_type = MESSAGE_STATUS_CONSOLE_BLUE,
	defeat_type = MESSAGE_STATUS_CONSOLE_ORANGE,
	defeat_storage = 963850,
	lvl_advance_control = 963851
}

function getItemsFromList(items)
	local str = ''
	if table.maxn(items) > 0 then
		for i = 1, table.maxn(items) do
			str = str .. items[i][2] .. ' ' .. getItemNameById(items[i][1])
			if i ~= table.maxn(items) then str = str .. ', ' 
			end 
		end 
	end
	return str
end
function getMonsterFromList(monster)
	local str = ''
	if #monster > 0 then
		for i = 1, #monster do
			str = str .. monster[i]
			if i ~= #monster then str = str .. ', ' end
		end 
	end
	return str
end
function GiveRewardsTask(cid, items)
	local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID
	for _, i_i in ipairs(items) do
		local item, amount = i_i[1],i_i[2]
		if isItemStackable(item) or amount == 1 then
			doAddContainerItem(backpack, item, amount)
		else
			for i = 1, amount do
				doAddContainerItem(backpack, item, 1)
			end
		end
	end
end
]]></config>
<event type="advance" name="TaskAutAdvance" event="script"><![CDATA[
domodlib('auto_stask')
function onAdvance(cid, skill, oldLevel, newLevel)
	if (skill == SKILL__LEVEL) then
		if getPlayerStorageValue(cid, automatic_task_config.lvl_advance_control) < newLevel then
			for k, v in pairs(automatic_task) do
				if v.level_min == newLevel then
					doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Task System] Voce Desbloqueou a "..v.name.." Task! Parabéns!")
				end
			end
			setPlayerStorageValue(cid, automatic_task_config.lvl_advance_control, newLevel)
		end
	end
	return true
end]]></event>
<talkaction words="/task;!task" event="buffer"><![CDATA[
domodlib('auto_stask')
param, str = param:lower(),"Task(s) Disponiveis:\n\n"
if isInArray({"counter","contador","count"},param) then
	setPlayerStorageValue(cid, automatic_task_config.defeat_storage, getPlayerStorageValue(cid, automatic_task_config.defeat_storage) <= 0 and 1 or 0)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"[Task System] O contador foi "..(getPlayerStorageValue(cid, automatic_task_config.defeat_storage) <= 0 and "ativado" or "desativado")..".") return true
end
for k, v in pairs(automatic_task) do
	if getPlayerLevel(cid) >= v.level_min and getPlayerStorageValue(cid, v.storage) < v.count then
	local amount = getPlayerStorageValue(cid, v.storage) <= 0 and 0 or getPlayerStorageValue(cid, v.storage)
		str = str.."[+] "..v.name .." Task [+]\n\nMonster Count: ["..amount.."/"..v.count.."]\n\nMonsters Killing: "..getMonsterFromList(v.monsters_list)..".\n\nLevel: "..v.level_min.." or More.\n\nCan repeat: ".. ( v.can_repeat == true and "yes" or "no" )..".\n\nRewards: ".. (table.maxn(v.reward) > 0 and getItemsFromList(v.reward) or "Nothing") ..".\n\nExp: ".. (v.exp > 0 and v.exp or 0) ..".\n\nMoney: ".. (v.money > 0 and v.money or 0) ..".\n\n"
	end
end
return doShowTextDialog(cid, 8983, str)
]]></talkaction>
<event type="login" name="TaskAutLogin" event="script"><![CDATA[
function onLogin(cid)
	registerCreatureEvent(cid, "KillAutTask")
	registerCreatureEvent(cid, "TaskAutAdvance")
	return true
end]]></event>
<event type="kill" name="KillAutTask" event="script"><![CDATA[
domodlib('auto_stask')
function onKill(cid, target)
	local str = ""
	if isPlayer(cid) and isMonster(target) then
		for task , info in pairs(automatic_task) do
			if isInArray(info.monsters_list, getCreatureName(target):lower()) and getPlayerLevel(cid) >= info.level_min then
				local ret = getPlayerStorageValue(cid, info.storage) <= 0 and 0 or getPlayerStorageValue(cid, info.storage)
				if ret < info.count then
					setPlayerStorageValue(cid, info.storage, getPlayerStorageValue(cid, info.storage) <= 0 and 1 or (getPlayerStorageValue(cid, info.storage)+1))
					if getPlayerStorageValue(cid, automatic_task_config.defeat_storage) <= 0 and getPlayerStorageValue(cid, info.storage) < info.count then
						doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Task System] defeated Total [" .. getPlayerStorageValue(cid, info.storage) .. "/" .. info.count .. "] da Task do " .. info.name .. ".")
					end
					if getPlayerStorageValue(cid, info.storage) >= info.count then
						if info.exp > 0 then doPlayerAddExp(cid, info.exp) str = str.."".. (str == "" and "" or ", ") .." "..info.exp.." de exp" end
						if info.money > 0 then doPlayerAddMoney(cid, info.money) str = str.."".. (str == "" and "" or ", ") ..""..info.money.." gps" end
						if table.maxn(info.reward) > 0 then GiveRewardsTask(cid, info.reward) str = str.."".. (str == "" and "" or ", ") ..""..getItemsFromList(info.reward) end
						doPlayerSendTextMessage(cid, automatic_task_config.reward_type, "[Task System] Voce completou a "..info.name.." Task. Obrigado pela sua ajuda!! Suas Recompensas: "..(str == "" and "nenhuma" or str))
						if info.can_repeat == true then
							setPlayerStorageValue(cid, info.storage, 0)
						end
					end
				end
			end
		end
	end
	return true
end]]></event>
</mod>

 



vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

opa @Vodkart, surgiu um bugzinho que ta fazendo travar o servidor

 

segue a foto abaixo:

Spoiler

image.thumb.png.9c894ece44281dedf429ba1b3c47ecd4.png

 


Share this post


Link to post
Share on other sites

@poko360 é qndo termina a task? ou em algum monstro especifico? testei aqui e não apareceu esse erro... vc não está usando as mesmas storages da task antiga né?



vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

@Vodkart

nao, nao estou usando as mesmas storages das tasks antigas

tipo, funcionou 100% desde que daquele dia que te dei rep +, so que hoje começou a dar esse error, algum player tentou burlar (nao sei)
tipo, n tem como eu saber oq ocorreu, o server so começou a travar e ficava spammando essa msg da foto varias vezes


Share this post


Link to post
Share on other sites

@poko360 vou refazer de outra forma hoje e testar ai posto aqui.

 

mas é mto estranho

tenta assim:

 

 

https://pastebin.com/raw/WC7ADAYs

 

se não der, eu pesquisei um pouco e um cara da OTLand disse o seguinte:

 

"Change the database to use INT instead of var for storage values."

 

 

aqui está o tópico dele:

 

https://otland.net/threads/attempt-to-compare-number-with-string.266160/



vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

@Vodkart opa vodkart, eu percebi agora, o comando !task parou de funcionar
mas o problema do lag ,vc conseguiu arrumar (nao deu lag ate agr)

tens como ver? 

 

quando dou !task aparece esse error

image.thumb.png.991bd4baa6b754481a860c2f8c1fd80a.png


Share this post


Link to post
Share on other sites

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...