Ir para conteúdo

[8.6] Task System 4.0! (Task system + Daily Task System)

Featured Replies

  • Respostas 296
  • Visualizações 45.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • tenta deixar essa linha: if isPlayer(cid) and isMonster(target) and not isSummon(target) then assim if isPlayer(cid) and isMonster(target) then   e testa

  • gostei dessa ideia, então estou num projeto e estou meio sem tempo, já passei parto do simple task pra tfs 1.2 e tal. terminando esse projeto e de passar o sistema pra tfs 1.2 eu começo a editar o sis

Posted Images

Postado
  • Autor
  Em 29/01/2017 em 13:22, Zzyzx disse:

OBRIGADOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO !!!!!!!!!!!!

@Vodkart esta dando esse erro no distro tem como ver oque é ?


<?xml version="1.0" encoding="ISO-8859-1"?> 
<mod name="Simple Task" version="4.0" author="Vodkart" contact="tibiaking.com" enabled="yes"> 
<config name="task_func"><![CDATA[
task_sys = {
	[1] = {name = "rotworms", start = 176202, monsters_list = {"rotworm","carrion worm","Rotworm Queen"}, level = 8, count = 50, points = 0, items = {}, reward = {}, exp = 100000, money = 20000},
	[2] = {name = "Slime", start = 176203, monsters_list = {"Slime"}, level = 8, count = 100, points = 0, items = {}, reward = {}, exp = 250000, money = 50000},
	[3] = {name = "cyclops", start = 176204, monsters_list = {"cyclops","cyclops smith","cyclops drone"}, level = 8, count = 150, points = 0, items = {}, reward = {}, exp = 350000, money = 70000},
	[4] = {name = "Hellfire Fighter" ,start = 17625, monsters_list = {"Hellfire Fighter"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[5] = {name = "Ghastly Dragon" ,start = 176206, monsters_list = {"Ghastly Dragon"}, level = 8, count = 500, points = 2, items = {}, reward = {{2173,1}}, exp = 300000, money = 300000},
	[6] = {name = "Behemoth" ,start = 176207, monsters_list = {"Behemoth"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[7] = {name = "Lizard Chosen" ,start = 176208, monsters_list = {"Lizard Chosen"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[8] = {name = "Medusa" ,start = 176209, monsters_list = {"Medusa"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[9] = {name = "Grim Reaper" ,start = 176210, monsters_list = {"Grim Reaper"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[10] = {name = "Frost Dragon" ,start = 176211, monsters_list = {"Frost Dragon"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[11] = {name = "Hydras" ,start = 176212, monsters_list = {"Hydra"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[12] = {name = "Serpent Spawn" ,start = 176213, monsters_list = {"Serpent Spawn"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[13] = {name = "Hellhounds" ,start = 176214, monsters_list = {"Hellhound"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[14] = {name = "Demons" ,start = 176215, monsters_list = {"Demon"}, level = 8, count = 500, points = 2, items = {}, reward = {}, exp = 300000, money = 300000},
	[15] = {name = "Grim Reaper Vip" ,start = 176216, monsters_list = {"Grim Reaper Vip"}, level = 300, count = 800, points = 3, items = {}, reward = {}, exp = 500000, money = 500000},
	[16] = {name = "Demon Vip" ,start = 176217, monsters_list = {"Demon Vip"}, level = 300, count = 800, points = 3, items = {}, reward = {}, exp = 500000, money = 500000},
	[17] = {name = "Medusa Vip" ,start = 176218, monsters_list = {"Medusa Vip"}, level = 300, count = 800, points = 3, items = {}, reward = {}, exp = 500000, money = 500000},
	[18] = {name = "Hydra Vip" ,start = 176219, monsters_list = {"Hydra Vip"}, level = 300, count = 800, points = 3, items = {}, reward = {}, exp = 500000, money = 500000},
	[19] = {name = "Frost Dragon Vip" ,start = 176220, monsters_list = {"Frost Dragon Vip"}, level = 300, count = 800, points = 3, items = {}, reward = {}, exp = 500000, money = 500000},
	[20] = {name = "Hydra Vip II" ,start = 176221, monsters_list = {"Hydra Vip II"}, level = 400, count = 1000, points = 4, items = {}, reward = {}, exp = 1000000, money = 1000000},
	[21] = {name = "Grim Reaper Vip II" ,start = 176222, monsters_list = {"Grim Reaper Vip II"}, level = 400, count = 1000, points = 4, items = {}, reward = {}, exp = 1000000, money = 1000000},
	[22] = {name = "Dragon Lord Vip II" ,start = 176223, monsters_list = {"Dragon Lord Vip II"}, level = 400, count = 1000, points = 4, items = {}, reward = {}, exp = 1000000, money = 1000000},
	[23] = {name = "Medusa Vip II" ,start = 176224, monsters_list = {"Medusa Vip II"}, level = 400, count = 1000, points = 4, items = {}, reward = {}, exp = 1000000, money = 1000000},
	[24] = {name = "Frost Dragon Vip II" ,start = 176225, monsters_list = {"Frost Dragon Vip II"}, level = 400, count = 1000, points = 4, items = {}, reward = {}, exp = 1000000, money = 1000000},
	[25] = {name = "VIP DRAGON LORD" ,start = 176226, monsters_list = {"VIP DRAGON LORD"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[26] = {name = "VIP FROST" ,start = 176227, monsters_list = {"VIP FROST"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[27] = {name = "VIP HYDRA" ,start = 176228, monsters_list = {"VIP HYDRA"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[28] = {name = "VIP MEDUSA" ,start = 176229, monsters_list = {"VIP MEDUSA"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[29] = {name = "VIP GRIM REAPER" ,start = 176230, monsters_list = {"VIP GRIM REAPER"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[30] = {name = "VIP DEMON" ,start = 176231, monsters_list = {"VIP DEMON"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = exp = 3000000, money = 3000000},
	[31] = {name = "VIP  WARLOCK" ,start = 176232, monsters_list = {"VIP  WARLOCK"}, level = 8, count = 700, points = 6, items = {}, reward = {}, exp = 3000000, money = 3000000},
	[32] = {name = "Fury" ,start = 176233, monsters_list = {"Fury"}, level = 300, count = 500, points = 2, items = {}, reward = {}, exp = 66600, money = 66000}
}
daily_task = {
	[1] = {name = "Orcs" ,monsters_list = {"Orc Berserker","Orc Rider","Orc Leader","Orc Warlord"}, count = 100, points = 0, reward = {}, exp = 5000, money = 10000},
	[2] = {name = "TarantulaS" ,monsters_list = {"Tarantula"}, count = 120, points = 1, reward = {}, exp = 9000, money = 12000},
	[3] = {name = "Wyvern" ,monsters_list = {"Wyvern"}, count = 125, points = 2, reward = {}, exp = 9000, money = 15000},
	[4] = {name = "Dragons" ,monsters_list = {"Dragon","Dragon Hatchling"}, count = 150, points = 0, reward = {}, exp = 2000, money = 10000},
	[5] = {name = "Wailing Widows" ,monsters_list = {"Wailing Widows"}, count = 200, points = 1, reward = {}, exp = 20000, money = 25000},
	[6] = {name = "Ancient Scarabs" ,monsters_list = {"Ancient Scarab"}, count = 180, points = 5, reward = {}, exp = 22000, money = 18000},
	[7] = {name = "High Class Lizards" ,monsters_list = {"Corrupted Soul","Eternal Guardian","Lizard Chosen","Lizard Dragon Priest","Lizard High Guard","Lizard Legionnaire","Lizard Magistratus","Lizard Noble","Lizard Zaogun"}, count = 300, points = 3, reward = {}, exp = 50000, money = 60000},
	[8] = {name = "Mutated BatS" ,monsters_list = {"Mutated Bat"}, count = 260, points = 2, reward = {}, exp = 40000, money = 55000},
	[9] = {name = "Giant Spiders" ,monsters_list = {"Giant Spider"}, count = 350, points = 3, reward = {}, exp = 60000, money = 70000},
	[10] = {name = "Frost Dragon" ,monsters_list = {"Frost Dragon"}, count = 500, points = 3, reward = {{2173,1}}, exp = 90000, money = 120000},
	[11] = {name = "HydraS" ,monsters_list = {"Hydra"}, count = 600, points = 3, reward = {{2173,1}}, exp = 100000, money = 160000},
	[12] = {name = "Demon" ,monsters_list = {"Demon"}, count = 700, points = 3, reward = {{2173,1}}, exp = 130000, money = 200000}
}
task_sys_storages = {176601, 176602, 176603, 176604, 176605, 176606, 176607, 176608} -- task, points, count, daily task, daily count, daily time , daily start, contador
function getTaskMission(cid)
	return getPlayerStorageValue(cid,task_sys_storages[1]) < 0 and 1 or getPlayerStorageValue(cid,task_sys_storages[1])
end
function getDailyTaskMission(cid)
	return getPlayerStorageValue(cid,task_sys_storages[4]) < 0 and 1 or getPlayerStorageValue(cid,task_sys_storages[4])
end
function getTaskPoints(cid)
	return getPlayerStorageValue(cid,task_sys_storages[2]) < 0 and 0 or getPlayerStorageValue(cid,task_sys_storages[2])
end
function doRandomDailyTask(cid)
	local t = {
		[{6,150}] = {1,3},
		[{151,250}] = {4,6},
		[{251,450}] = {7,9},
		[{451,math.huge}] = {10,12}
	}
	for a , b in pairs(t) do
		if getPlayerLevel(cid) >= a[1] and getPlayerLevel(cid) <= a[2] then
			return math.random(b[1], b[2])
		end
	end
	return 0
end
function GetRankTask(cid)
	local ranks = {
		[{1, 20}] = "Leite com Pera", 
		[{21, 50}] = "Iniciante",
		[{51, 100}] = "Fodinha",
		[{101, 200}] = "Zika do Bagulho",		
		[{201, math.huge}] = "Supremo Lord"
	}
	for v , r in pairs(ranks) do
		if getTaskPoints(cid) >= v[1] and getTaskPoints(cid) <= v[2] then
			return r
		end
	end
	return 0
end
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 doRemoveItemsFromList(cid,items)
	local count = 0
	if table.maxn(items) > 0 then
		for i = 1, table.maxn(items) do
			if getPlayerItemCount(cid,items[i][1]) >= items[i][2] then
			count = count + 1 end 
		end 
	end
	if count == table.maxn(items) then
		for i = 1, table.maxn(items) do doPlayerRemoveItem(cid,items[i][1],items[i][2]) end
	else 
		return false 
	end
	return true 
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
function isSummon(cid)
	if(not isCreature(cid)) then
		return false
	end
	return getCreatureMaster(cid) ~= cid
end
]]></config>
<event type="login" name="TaskLogin" event="script"><![CDATA[
function onLogin(cid)
	registerCreatureEvent(cid, "KillTask")
	registerCreatureEvent(cid, "TaskLook")
	return true
end]]></event>
<talkaction words="/task;!task" event="buffer"><![CDATA[
domodlib('task_func')
param,task,daily = param:lower(), getTaskMission(cid), getDailyTaskMission(cid)
if isInArray({"counter","contador"},param) then
	setPlayerStorageValue(cid, task_sys_storages[8], getPlayerStorageValue(cid, task_sys_storages[8]) <= 0 and 1 or 0)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"[Task System] O contador foi "..(getPlayerStorageValue(cid, task_sys_storages[8]) <= 0 and "ativado" or "desativado")..".") return true
elseif isInArray({"daily","diaria"},param) then
	if not daily_task[daily] or getPlayerStorageValue(cid, task_sys_storages[7]) <= 0 then
		doPlayerSendCancel(cid, "Desculpe, Mas você não está em nenhuma Daily Task.") return true
	elseif getPlayerStorageValue(cid, task_sys_storages[6]) - os.time() <= 0 and getPlayerStorageValue(cid, task_sys_storages[5]) < daily_task[daily].count then
		doPlayerSendCancel(cid,"Desculpe, Mas Você não terminou a Daily Task a tempo! Por favor volte ao npc e comece uma nova Daily Task!") return true
	end
	return doShowTextDialog(cid, 8983, "[->] CURRENT DAILY TASK INFO [<-]\n\nNome: "..daily_task[daily].name.."\nProgresso: ["..(getPlayerStorageValue(cid, task_sys_storages[5]) < 0 and 0 or getPlayerStorageValue(cid, task_sys_storages[5])).."/"..daily_task[daily].count.."]\nPrazo para entrega: "..os.date("%d %B %Y %X ", getPlayerStorageValue(cid,task_sys_storages[6])).."\nMonstros para caçar: "..getMonsterFromList(daily_task[daily].monsters_list).."\n\n[->] CURRENT TASK REWARDS [<-]\n\nMoney: "..(daily_task[daily].money > 0 and daily_task[daily].money or 0).."\nExperiencia: "..(daily_task[daily].exp > 0 and daily_task[daily].exp or 0).."\nTask Points: "..daily_task[daily].points.."\nItems: "..(#daily_task[daily].reward > 0 and getItemsFromList(daily_task[daily].reward) or "Nenhum item de recompensa")..".")
end
if not task_sys[task] or getPlayerStorageValue(cid, task_sys[task].start) <= 0 then
	doPlayerSendCancel(cid, "você não está em nenhuma task.") return true
end 
return doShowTextDialog(cid, 8983, "-> CURRENT TASK ["..getTaskMission(cid).."/"..#task_sys.."] <-\n\nTask Name: "..task_sys[task].name.."\nTask Level: "..task_sys[task].level.."\nTask Progress: ["..(getPlayerStorageValue(cid, task_sys_storages[3]) < 0 and 0 or getPlayerStorageValue(cid, task_sys_storages[3])).."/"..task_sys[task].count.."]\nMonster To Hunt: "..getMonsterFromList(task_sys[task].monsters_list)..".\nItens Para Entrega: "..(#task_sys[task].items > 0 and getItemsFromList(task_sys[task].items) or "Nenhum")..".\n\n[->] CURRENT TASK REWARDS [<-]\n\nReward Money: "..(task_sys[task].money > 0 and task_sys[task].money or 0).."\nReward Experiencia: "..(task_sys[task].exp > 0 and task_sys[task].exp or 0).."\nReward Points: "..task_sys[task].points.."\nRedward Items: "..(#task_sys[task].reward > 0 and getItemsFromList(task_sys[task].reward) or "Nenhum item de recompensa")..".")
]]></talkaction>
<event type="look" name="TaskLook" event="script"><![CDATA[
domodlib('task_func')
function onLook(cid, thing, position, lookDistance)
	if isPlayer(thing.uid) and getTaskPoints(thing.uid) > 0 then
		doPlayerSetSpecialDescription(thing.uid, "\n"..(getPlayerSex(thing.uid) == 0 and "She" or "He").. " is a "..GetRankTask(thing.uid))
	end	
	return true
end]]></event> 
<event type="kill" name="KillTask" event="script"><![CDATA[
domodlib('task_func')
function onKill(cid, target)
	if isPlayer(cid) and isMonster(target) and not isSummon(target) then
		local t,daily = task_sys[getTaskMission(cid)], daily_task[getDailyTaskMission(cid)]
		if t and getPlayerStorageValue(cid, t.start) > 0 and isInArray(t.monsters_list, getCreatureName(target):lower()) and getPlayerStorageValue(cid, task_sys_storages[3]) < t.count then
			setPlayerStorageValue(cid, task_sys_storages[3], getPlayerStorageValue(cid, task_sys_storages[3]) < 0 and 1 or (getPlayerStorageValue(cid, task_sys_storages[3])+1))
			if getPlayerStorageValue(cid, task_sys_storages[8]) <= 0 and getPlayerStorageValue(cid, task_sys_storages[3]) < t.count then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Task System] defeated Total [" .. getPlayerStorageValue(cid, task_sys_storages[3]) .. "/" .. t.count .. "] da Task do " .. t.name .. ".")
			end
			if getPlayerStorageValue(cid, task_sys_storages[3]) >= t.count then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Task System] Parabéns! Você terminou a Task do "..t.name..", volte ao npc parece receber sua recompensa.")
			end
		end
		if daily and getPlayerStorageValue(cid, task_sys_storages[7]) > 0 and getPlayerStorageValue(cid, task_sys_storages[6]) - os.time() >= 0 and isInArray(daily.monsters_list, getCreatureName(target):lower()) and getPlayerStorageValue(cid, task_sys_storages[5]) < daily.count then
			setPlayerStorageValue(cid, task_sys_storages[5], getPlayerStorageValue(cid, task_sys_storages[5]) < 0 and 1 or (getPlayerStorageValue(cid, task_sys_storages[5])+1))
			if getPlayerStorageValue(cid, task_sys_storages[8]) <= 0 and getPlayerStorageValue(cid, task_sys_storages[5]) < daily.count then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"[Daily Task System] defeated Total [" .. getPlayerStorageValue(cid, task_sys_storages[5]) .. "/" .. daily.count .. "] da Task do " .. daily.name .. ".")
			end
			if getPlayerStorageValue(cid, task_sys_storages[5]) >= daily.count then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Daily Task System] Parabéns! Você terminou a Task do "..daily.name..", volte ao npc parece receber sua recompensa.")
			end
		end 
	end
	return true
end]]></event>
</mod>

 

erro.png

 

erro resolvido via PM

 

era a task [8] com um problema no "["

vodkart_logo.png

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

 

DISCORDvodkart#6090

 

Postado

@Vodkart

Para quem está com problemas de monstros não serem contados como eu estava e tem servidor derivado, basta substituir duas line do script.

No meu servidor de Narutibia o script não contava as mortes dos monstros, então eu modifiquei duas linhas e o script passou a funcionar...

 

Substitua essa parte

function onKill(cid, target)
	if isPlayer(cid) and isMonster(target) and not isSummon(target) then

por Essa

function onKill(cid, target, lastHit)
	if(isMonster(target) == true) then

 

Postado
  • Autor
  Em 04/02/2017 em 19:24, r0bert0lol disse:

@Vodkart

Para quem está com problemas de monstros não serem contados como eu estava e tem servidor derivado, basta substituir duas line do script.

No meu servidor de Narutibia o script não contava as mortes dos monstros, então eu modifiquei duas linhas e o script passou a funcionar...

 

Substitua essa parte


function onKill(cid, target)
	if isPlayer(cid) and isMonster(target) and not isSummon(target) then

por Essa


function onKill(cid, target, lastHit)
	if(isMonster(target) == true) then

 

 

eu sei disso amigo, mas obrigado!!

Eu até aconselhei na primeira página a fazer uma alteração parecida com a sua! 

<3

  Em 01/02/2017 em 01:33, wougoplex disse:

@Vodkart Eu uso o 0.3 pq acho melhor tem como botar pro player poder repitir a task la plz n gostei mt desse sem sequencia 

 

 

vou dar um update nela e colocar ela para 5.0, o @KotZletY deu umas ideias bem boas pro sistema.

ai o player vai poder escolher as task normal e as diarias, além de poder repetir, etc.

Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

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

 

DISCORDvodkart#6090

 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo