Ir para conteúdo
  • Cadastre-se

Posts Recomendados

@KotZletY Sim, já arrumei aqui é que eu dei /reload e precisa relogar  o char ai começou a contar kk. Valeu maninho ótimo sistema!!

Uma coisa, teria como o sistema sortear a task diária? em vez de o cara poder escolher... tipo são 4 tasks diárias mas a cada 24hrs ele sorteia uma automatico, tem como fazer isso?

Link para o post
Compartilhar em outros sites
  • KotZletY mudou o título para Task System 1.2+
  • Respostas 82
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Salve geral, recentemente fiz um Task System para meu servidor, então gostaria de compartilha ele com vocês, assim como outros scripts que fiz e gostaria de compartilhar. Bom, vamos ao que interessa.

@Jobs hehehe, nice, nice, nice, não mexo com modalwindow, meu servidor é 8.60, usando OTX 1.3, então como não tem diferença os scripts para as versões 1.x, então resolvi postar, vai pegar em todos, se

ja tô usando seu lindão!  mais pra frente, seria muito foda se você fizesse modal window! beijos, otimo sistema *-*    

Posted Images

@vine96 tem sim, mas eu particularmente prefiro deixa de livre escolha, para você fazer isso será necessário uma alteração na parte em que a pessoa escolhe uma task diaria, fique a vontade para tentar alterar, huasahsfuohasd, não é difícil.

 

 

@Sistema Atualizado: Agora o sistema está mais limpo, otimizado, melhorado, mais organizado e simples. Agora com os extras melhorados, para deixa o sistema ainda melhor e expansível na utilização, tais como quests que só podem ser acessadas se tiver certa quantidade de pontos ou também caso tenha certo rank, exatamente, caso tenha certa quantidade de pontos ou um certo rank. Agora também não há necessidade de matar apenas um monstro para contar a task, como por exemplo, Minotaur, sabemos que existe vários tipos de Minotaurs, então caso deseje basta adicionar a sub-lista de monstros o nome deles, Minotaur Archer, Minotarur Guard, Minotaur Mage e quantos minotaurs de merda tiver, fhaoushd, saporra repete monstro pra krl. HFuoahsd

 

Bom uso do sistema, perdoe-me por usar palavrões hahahaha, qualquer sugestão, erro, algo incorreto basta comentar, críticas construtivas serão bem vindas!!

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
6 horas atrás, KotZletY disse:

@vine96 tem sim, mas eu particularmente prefiro deixa de livre escolha, para você fazer isso será necessário uma alteração na parte em que a pessoa escolhe uma task diaria, fique a vontade para tentar alterar, huasahsfuohasd, não é difícil.

 

 

@Sistema Atualizado: Agora o sistema está mais limpo, otimizado, melhorado, mais organizado e simples. Agora com os extras melhorados, para deixa o sistema ainda melhor e expansível na utilização, tais como quests que só podem ser acessadas se tiver certa quantidade de pontos ou também caso tenha certo rank, exatamente, caso tenha certa quantidade de pontos ou um certo rank. Agora também não há necessidade de matar apenas um monstro para contar a task, como por exemplo, Minotaur, sabemos que existe vários tipos de Minotaurs, então caso deseje basta adicionar a sub-lista de monstros o nome deles, Minotaur Archer, Minotarur Guard, Minotaur Mage e quantos minotaurs de merda tiver, fhaoushd, saporra repete monstro pra krl. HFuoahsd

 

Bom uso do sistema, perdoe-me por usar palavrões hahahaha, qualquer sugestão, erro, algo incorreto basta comentar, críticas construtivas serão bem vindas!!

 

Adotou minhas sugestões né gato rs 

Tá maneirinho, tá maneirinho. Você poderia por as recompensas essas coisas no channel ao invés de modal 

Link para o post
Compartilhar em outros sites
4 minutos atrás, Jobs disse:

Adotou minhas sugestões né gato

Não, é porquê a servidores de tibia tem isso de monstros semelhantes, então ao matar um minotaur archer, não deixa de estar matando um minotaur, então pela lógica deve contar.

 

6 minutos atrás, Jobs disse:

Tá maneirinho, tá maneirinho. Você poderia por as recompensas essas coisas no channel ao invés de modal 

Não conheço o modal system, não trabalho com ele, meu servidor é um derivado 8.60 em otx 1.3. HFouahsd

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
13 minutos atrás, KotZletY disse:

Não, é porquê a servidores de tibia tem isso de monstros semelhantes, então ao matar um minotaur archer, não deixa de estar matando um minotaur, então pela lógica deve contar.

 

Não conheço o modal system, não trabalho com ele, meu servidor é um derivado 8.60 em otx 1.3. HFouahsd

ah sim, eu tinha dito isso já, na epoca que usei até comentei aqui e não continuei usando por causa disso, minotaur,cyclops, dragons, tem vários derivados.

Eu digo, tu usa 

		return false,  player:popupFYI(text)

Na minha opinião fica feio, ficaria mais maneirinho se fosse tudo pelo channel, com umas cores azuis fortes nos monstros, leveis, recompensas etc.

 

Editado por Jobs (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

07:03 Almighty'kris [324]: daily task list
07:03 Captain Falcon: Here is the daily tasks list.
07:04 Almighty'kris [324]: daily
07:04 Captain Falcon: Remember, it is of great importance that the daily tasks are done. Now tell me, which monster task would you like to do? 
07:04 Almighty'kris [324]: Hydra
07:04 Captain Falcon: Sorry we don't have this daily task.

 

fiz tudo certinho lá sem erros, dai na hora de pedir a task acontece isso.

Link para o post
Compartilhar em outros sites

@KotZletY vi que você tem um Task System tambem, sera que poderia me ajudar com um negocio que esta me dando dor de cabeça, que eu acho que você resolve em 1 minuto.

Queria tirar o TaskLook, não quero que apareça nada quando do look, porque ta dando conflito com outro script que to usando de QUEST LOOK, que é seu, eu to removendo essas partes aqui, mas fica dando erro quando do look no char.

 

function GetRankTask(cid)
	local ranks = {
		[{1, 40}] = "Leite com Pera", 
		[{41, 80}] = "Iniciante",
		[{81, 120}] = "Intermediario",
		[{121, 200}] = "Fodao",		
		[{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 getDeathsAndKills(cid, type) -- by vodka
  local query,d = db.getResult("SELECT `player_id` FROM "..(tostring(type) == "kill" and "`player_killers`" or "`player_deaths`").." WHERE `player_id` = "..getPlayerGUID(cid)),0
  if (query:getID() ~= -1) then
    repeat
      d = d+1
    until not query:next()
    query:free()
  end
  return d
end

 

</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").. " has Killed: ["..getDeathsAndKills(thing.uid, "kill").."] Players.\n"..(getPlayerSex(thing.uid) == 0 and "She" or "He").." has Died: ["..getDeathsAndKills(thing.uid, "death").."] Times.\n"..(getPlayerSex(thing.uid) == 0 and "She" or "He").." is a "..GetRankTask(thing.uid))
	end	
	return true
end]]>
Spoiler

<?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 = "Trolls", start = 176201, monsters_list = {"Troll","Troll champion"}, level = 8, count = 120, points = 2, items = {{2448,1}}, reward = {{2645,1}}, exp = 100000, money = 20000},
	[2] = {name = "rotworms", start = 176202, monsters_list = {"rotworm","carrion worm","Rotworm Queen"}, level = 8, count = 150, points = 2, items = {{2530,1}}, reward = {{2520,1}}, exp = 100000, money = 30000},
	[3] = {name = "cyclops", start = 176203, monsters_list = {"cyclops","cyclops smith","cyclops drone"}, level = 8, count = 130, points = 2, items = {{2490,1}}, reward = {{2466,1}}, exp = 100000, money = 40000},
	[4] = {name = "Dragon", start = 176204, monsters_list = {"dragon"}, level = 8, count = 150, points = 3, items = {{2397,1}}, reward = {{2195,1}}, exp = 150000, money = 50000},
	[5] = {name = "Dragon Lord", start = 176205, monsters_list = {"Dragon Lord"}, level = 300, count = 200, points = 3, items = {{2528,3}}, reward = {{2470,1}}, exp = 150000, money = 60000},
	[6] = {name = "Behemoth", start = 176206, monsters_list = {"Behemoth"}, level = 8, count = 150, points = 3, items = {{5930,3}}, reward = {{8889,1}}, exp = 150000, money = 70000},
	[7] = {name = "Lizard Dragons" ,start = 176220, monsters_list = {"Lizard Chosen","Lizard Dragon Priest","Lizard High Guard","Lizard Legionnaire", "Lizard Zaogun"}, level = 8, count = 350, points = 3, items = {{11297,3}}, reward = {{2493,1}}, exp = 150000, money = 80000},
	[8] = {name = "Defiler", start = 176208, monsters_list = {"Defiler"}, level = 8, count = 300, points = 3, items = {{6500,4}}, reward = {{2494,1}}, exp = 150000, money = 90000},
	[9] = {name = "Hellfire Fighter", start = 176209, monsters_list = {"Hellfire Fighter"}, level = 8, count = 350, points = 4, items = {{2136,4}}, reward = {{2538,1}}, exp = 250000, money = 100000},
	[10] = {name = "Hydra", start = 176210, monsters_list = {"Hydra"}, level = 100, count = 600, points = 4, items = {{4850,5}}, reward = {{6391,1}}, exp = 250000, money = 100000},
	[11] = {name = "Medusa", start = 176211, monsters_list = {"Medusa"}, level = 100, count = 650, points = 5, items = {{2536,5}}, reward = {{2517,1}}, exp = 250000, money = 150000},
	[12] = {name = "Frost Dragon", start = 176212, monsters_list = {"Frost Dragon"}, level = 100, count = 800, points = 5, items = {{1976,7}}, reward = {{1992,1}}, exp = 250000, money = 150000},
	[13] = {name = "Warlock" ,start = 176213, monsters_list = {"Warlock"}, level = 200, count = 800, points = 5, items = {{2656,7}}, reward = {{2343,1}}, exp = 350000, money = 200000},
	[14] = {name = "Grim Reaper" ,start = 176214, monsters_list = {"Grim Reaper"}, level = 250, count = 700, points = 6, items = {{2521,9}}, reward = {{2499,1}}, exp = 350000, money = 200000},
	[15] = {name = "Demon" ,start = 176215, monsters_list = {"Demon"}, level = 300, count = 1000, points = 6, items = {{5954,9}}, reward = {{2644,1}}, exp = 450000, money = 300000},
	[16] = {name = "Medusa Vip" ,start = 176216, monsters_list = {"Medusa Vip"}, level = 350, count = 1200, points = 6, items = {{7887,11}}, reward = {{6132,1}}, exp = 450000, money = 300000},
	[17] = {name = "Hydra Vip" ,start = 176217, monsters_list = {"Hydra Vip"}, level = 350, count = 1200, points = 6, items = {{2498,11}}, reward = {{2527,1}}, exp = 550000, money = 400000},
	[18] = {name = "Grim Reaper Vip" ,start = 176218, monsters_list = {"Grim Reaper Vip"}, level = 350, count = 1200, points = 8, items = {{6300,15}}, reward = {{2518,1}}, exp = 550000, money = 400000},
	[19] = {name = "Warlock Vip" ,start = 176219, monsters_list = {"Warlock Vip"}, level = 350, count = 1200, points = 8, items = {{2466,15}}, reward = {{2519,1}}, exp = 650000, money = 500000},
	[20] = {name = "Frost Dragon Vip" ,start = 176220, monsters_list = {"Frost Dragon Vip"}, level = 350, count = 1200, points = 8, items = {{2492,19}}, reward = {{8932,1}}, exp = 650000, money = 500000},
	[21] = {name = "Demon Vip" ,start = 176221, monsters_list = {"Demon Vip"}, level = 350, count = 2000, points = 10, items = {{2418,19}}, reward = {{8926,1}}, exp = 750000, money = 600000},
	[22] = {name = "Dragon Lord Vip II" ,start = 176222, monsters_list = {"Dragon Lord Vip II"}, level = 450, count = 1500, points = 10, items = {{2414,25}}, reward = {{2444,1}}, exp = 750000, money = 600000},
	[23] = {name = "Frost Dragon Vip II" ,start = 176223, monsters_list = {"Frost Dragon Vip II"}, level = 450, count = 1500, points = 10, items = {{7290,25}}, reward = {{7367,1}}, exp = 850000, money = 700000},
	[24] = {name = "Grim Reaper Vip II" ,start = 176224, monsters_list = {"Grim Reaper Vip II"}, level = 450, count = 1500, points = 10, items = {{5909,30}}, reward = {{7367,1}}, exp = 850000, money = 700000},
	[25] = {name = "Hydra Vip II" ,start = 176225, monsters_list = {"Hydra Vip II"}, level = 450, count = 1500, points = 10, items = {{2476,30}}, reward = {{7414,1}}, exp = 2500000, money = 1000000},
	[26] = {name = "Medusa Vip II" ,start = 176226, monsters_list = {"Medusa Vip II"}, level = 450, count = 1500, points = 10, items = {{2143,75}}, reward = {{2495,1},{2471,1}}, exp = 2500000, money = 1000000},
	[27] = {name = "Lord Of Demon" ,start = 176227, monsters_list = {"Lord Of Demon"}, level = 500, count = 6666, points = 10, items = {{2462,120}}, reward = {{9969,5},{2366,1}}, exp = 10000000, money = 1000000},
	[28] = {name = "Bossing Of Baiak" ,start = 176228, monsters_list = {"Bossing Of Baiak"}, level = 500, count = 30, points = 10, items = {{5903,5}}, reward = {{9969,5},{2366,1}}, exp = 20000000, money = 3000000},
	[29] = {name = "Arabian" ,start = 176229, monsters_list = {"Arabian"}, level = 500, count = 30, points = 10, items = {{10521,10}}, reward = {{2523,1},{2263,1}}, exp = 20000000, money = 3000000},
	[30] = {name = "Shadow Warrior" ,start = 176230, monsters_list = {"Shadow Warrior"}, level = 500, count = 70, points = 10, items = {{5875,25}}, reward = {{2298,1},{11114,1}}, exp = 20000000, money = 3000000},
	[31] = {name = "Castle Guardian" ,start = 176231, monsters_list = {"Castle Guardian"}, level = 600, count = 25, points = 25, items = {{2520,100}}, reward = {{9969,15},{2366,2}}, exp = 20000000, money = 5000000}
}
daily_task = {
	[1] = {name = "Hydra Vip" ,monsters_list = {"Hydra Vip"}, count = 700, points = 4, reward = {{9969,1}}, exp = 3000000, money = 3000000},
	[2] = {name = "Grim Reaper Vip" ,monsters_list = {"Grim Reaper Vip"}, count = 700, points = 4, reward = {{9969,1}}, exp = 3000000, money = 3000000},
	[3] = {name = "Grim Reaper Vip II" ,monsters_list = {"Grim Reaper Vip II"}, count = 700, points = 4, reward = {{9969,1}}, exp = 3000000, money = 3000000},
	[4] = {name = "Frost Dragon Vip" ,monsters_list = {"Frost Dragon Vip"}, count = 750, points = 4, reward = {{9969,1}}, exp = 3000000, money = 3000000},
	[5] = {name = "Dragon Lord Vip II" ,monsters_list = {"Dragon Lord Vip II"}, count = 700, points = 4, reward = {{9969,1}}, exp = 3000000, money = 3000000},
	[6] = {name = "Frost Dragon Vip II" ,monsters_list = {"Frost Dragon Vip II"}, count = 700, points = 4, reward = {{9969,1}}, exp = 3000000, money = 3000000},
	[7] = {name = "Frost Dragon" ,monsters_list = {"Frost Dragon"}, count = 300, points = 4, reward = {{9969,1}}, exp = 3000000, money = 3000000},
	[8] = {name = "Hydra" ,monsters_list = {"Hydra"}, count = 700, points = 3, reward = {{9969,1}}, exp = 3000000, money = 3000000},
	[9] = {name = "Demon Vip" ,monsters_list = {"Demon Vip"}, count = 700, points = 4, reward = {{9969,1}}, exp = 3000000, money = 3000000},
	[10] = {name = "Hydra Vip II" ,monsters_list = {"Hydra Vip II"}, count = 700, points = 4, reward = {{9969,1}}, exp = 3000000, money = 3000000},
	[11] = {name = "Medusa Vip" ,monsters_list = {"Medusa Vip"}, count = 700, points = 4, reward = {{9969,1}}, exp = 3000000, money = 3000000},
	[12] = {name = "Warlock Vip" ,monsters_list = {"Warlock Vip"}, count = 700, points = 4, reward = {{9969,1}}, exp = 3000000, money = 3000000}
}
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,100}] = {1,3},
		[{101,200}] = {4,6},
		[{201,300}] = {7,9},
		[{301,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, 40}] = "Leite com Pera", 
		[{41, 80}] = "Iniciante",
		[{81, 120}] = "Intermediario",
		[{121, 200}] = "Fodao",		
		[{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
function getDeathsAndKills(cid, type) -- by vodka
  local query,d = db.getResult("SELECT `player_id` FROM "..(tostring(type) == "kill" and "`player_killers`" or "`player_deaths`").." WHERE `player_id` = "..getPlayerGUID(cid)),0
  if (query:getID() ~= -1) then
    repeat
      d = d+1
    until not query:next()
    query:free()
  end
  return d
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").. " has Killed: ["..getDeathsAndKills(thing.uid, "kill").."] Players.\n"..(getPlayerSex(thing.uid) == 0 and "She" or "He").." has Died: ["..getDeathsAndKills(thing.uid, "death").."] Times.\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) 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>
<action actionid="60001;60002;60003;60004" event="script"><![CDATA[
domodlib('task_func')
function onUse(cid, item, frompos, item2, topos)
local t = {[60001] = 20, [60002] = 40, [60003] = 100, [60004] = 200}
if not t[item.actionid] then return true end
if getTaskPoints(cid) < t[item.actionid] then
return doPlayerSendTextMessage(cid,22,"Você só pode passar se tiver " .. t[item.actionid] .. " Task Points.") 
end
doTransformItem(item.uid, item.itemid + 1)
doTeleportThing(cid, topos, true)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Welcome, Task Hunter!")
return true
end]]></action>
</mod>

 

 

       112674.gif

 

 

 

Link para o post
Compartilhar em outros sites
Em 02/10/2017 em 00:44, KotZletY disse:

adicione:


	if thing:isCreature() then
		if thing:isPlayer() then
			description = string.format("%s\nTask Rank: "..getRankTask(thing), description)
		end
	end

 

 

@Zzyzx para não aparecer o task rank basta não adicionar/remover essa parte, ou você está tentando remover o outro e não o meu ?

 

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
16 horas atrás, KotZletY disse:

@Yassuo adicionou o hydra na tabela ?

Fiz assim apenas 

task_monsters = {
   [1] = {name = "Orc", mons_list = {"Orc Berserker", "Orc Shaman"},  storage = 30000, amount = 5000, exp = 700000, pointsTask = {1, 1}, items = {{id = 2503, count = 1}, {id = 25377, count = 6}}},
   [2] = {name = "Barbarian Skullhunter", mons_list = {"Barbarian Headsplitter", "Barbarian Brutetamer"}, storage = 30001, amount = 6000, exp = 800000, pointsTask = {1, 1}, items = {{id = 2646, count = 1}, {id = 25377, count = 5}}},
   [3] = {name = "Pixie", mons_list = {"dark faun", "boogy"}, storage = 30002, amount = 1000, exp = 580000, pointsTask = {1, 1}, items = {{id = 29079, count = 1}, {id = 25377, count = 6}}},
   [4] = {name = "sparkion", mons_list = {"breach brood", "dread intruder"}, storage = 30003, amount = 7000, exp = 800000, pointsTask = {1, 1}, items = {{id = 26227, count = 1}, {id = 25377, count = 8}}}
}

task_daily = {
   [1] = {name = "Wailing Widow", mons_list = {"Tarantula", "Spider"}, storage = 40000, amount = 750, exp = 500000, pointsTask = {1, 1}, items = {{id = 25377, count = 1}, {id = 25172, count = 2}}},
   [2] = {name = "Vampire Bride", mons_list = {"Vampire", "Vampire Viscount"}, storage = 40001, amount = 850, exp = 500000, pointsTask = {1, 1}, items = {{id = 25377, count = 1}, {id = 25172, count = 3}}},
   [3] = {name = "Dragon", mons_list = {"Dragon Lord", "Frost Dragon"}, storage = 40002, amount = 1150, exp = 580000, pointsTask = {1, 1}, items = {{id = 25377, count = 1}, {id = 25172, count = 4}}},
   [4] = {name = "Ancient Scarab", mons_list = {"Fleshcrawler", "Ancient Spawn of Morgathla"}, storage = 40003, amount = 1250, exp = 500000, pointsTask = {1, 1}, items = {{id = 25377, count = 1}, {id = 2160, count = 5}}}
}

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

Muito bom o sistema xD, estou usando no meu pbot que estou a criar em OTX 1.3, mas estou com um pequeno problema, aparentemente não tem ' player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE ' e mesmo que eu remova o MESSAGE_STATUS_CONSOLE_ORANGE, ele não mostra em chat algum, poderia me dar uma ajuda?

 

desde já, obrigado, em breve vou estar aprimorando também, esse vai ser o sistema que mais vou usar no servidor xD

1 hora atrás, LG KyoGron disse:

Muito bom o sistema xD, estou usando no meu pbot que estou a criar em OTX 1.3, mas estou com um pequeno problema, aparentemente não tem ' player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE ' e mesmo que eu remova o MESSAGE_STATUS_CONSOLE_ORANGE, ele não mostra em chat algum, poderia me dar uma ajuda?

 

desde já, obrigado, em breve vou estar aprimorando também, esse vai ser o sistema que mais vou usar no servidor xD

Consegui resolver cliente versão 11.49 não tem orange ou blue .-. que bosta uhausas

Link para o post
Compartilhar em outros sites

@LG KyoGron fhuaoshduasd, fico feliz que tenha gostado do sistema.

 

15 horas atrás, LG KyoGron disse:

versão 11.49 não tem orange ou blue

Sure ? Eu hein! ._. 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
14 horas atrás, KotZletY disse:

@LG KyoGron fhuaoshduasd, fico feliz que tenha gostado do sistema.

 

Sure ? Eu hein! ._. 

Parece que sim, quando eu tento usar o BLUE ou Orange não sai nada no Local..

agora qualquer outra mensagem que eu use para sair no Server Log, aparece a contagem normal, estranho o.O kkkkk mas obrigado, estou a utilizar esse sistema no meu server, Sistema será responsável pelo Embuent e os trainers :P 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Bagon
      Bom, hoje venho trazer á vocês um sistema de Pet System DIFERENCIADO de alguns presentes no fórum. Este sistema tem diversos comandos diferenciados, como: 
       
      !pet nomedopet este comando irá sumonar o pet. 
      !remove irá remover o pet.
      !fale eu sou lindo o pet falará "eu sou lindo"
      !conversar o pet irá conversar com vc. 
       
      Então sem mais delongas vamos ao script.
       
      OBS: SCRIPT TESTADO SOMENTE EM TFS 0.4/0.3, e este script foi feito com a intenção de ser vendido no site do ot ou em poderá usar como quest usando o item selecionado como premio. fique ao seu critério.
       
      Primeiro vá até a pasta talkaction/script e crie um arquivo chamado petsystem.lua, depois coloque o seguinte script:
       
       
      Agora em talkactions/talkactions.xml adicione a seguinte tag:
       
      <talkaction words="!pet;!remove;!fale;!conversar" event="script" value="petsystem.lua" />  
      EXPLICAÇÂO:
      As partes em Negrito, são os pets. Você pode alterar ou criar monstros para fazer eles como pets. (Recomendo criar um monstro para que seja somente pet.)
       
      Exemplo: ["dog"]= {stor=78552},      
       
       
      Lembrando que é necessário mudar esta parte no script do monstro colocado a cima.
       
      <flag attackable="1" /> para :
       
      <flag attackable="0" />  
      agora vá em action/script e crie um arquivo chamado pet com o seguinte script:
       
       
      e vá em action.xml e adiciona a seguinte tag:
       
      <action itemid="10063" script="pet.lua"/> Explicação: Na tag da action o itemid é o item que deverá ser usado para ganhar a storage 78552, e assim podera sumonar o monstro com esta storage.
       
                                              
                                                         CRIE UMA ACTION COM A TAG A CIMA PARA CADA MONSTRO COLOCADO NA TALKACTION,
                                                         BASTA VC ALTERAR A STORAGE DO SCRIPT DA ACTION
                                                         EXEMPLO: em action altere as storage que estão em vermelho, como mostra abaixo
       
                                                              if getPlayerStorageValue(cid, 78552) < 1 then
                                                              setPlayerStorageValue(cid, 78552, 1)
       
                                                         aonde tem 78552 altere para 78553 que no caso é a storage do cyclops escolhido lá no script da talkaction
                                                         e assim susecivelmente.
       
       
       
      CREDITOS:
      Mulizeu
      Smartbox
      Bagon 
       
    • Por ambrozii0
      Gostaria de fazer um pedido de um NPC de Task progressiva,

      Ele iniciaria dando missões para level 8 para caçar Troll, Rotworm e Ghoul.
       
      No level 30 liberaria: Cyclops, Dragon e Wyrm... e assim em diante se puder deixar comentado eu faço as criaturas na sequencia dos leveis seguintes.
       
      O jogador pode fazer as tasks dos leveis anteriores mesmo que já tenha ultrapassado o level do próximo nível de task.
       
      E o jogador ao terminar a missão poderia escolher a recompensa em gold ou experiência. As tasks podem se repetir sem problema, mas apenas pode pegar uma de cada vez.
       
      Ao finalizar todas as tasks o jogador ganha uma montaria.
       
      Minha versão de cliente é 12.91
      Versão da Canary 2.6.1
      Não sei qual o TFS do meu servidor.
    • Por Imperius
      Olá, pessoal! Acabei encontrando um script que tinha feito a um tempo atrás. Estou compartilhando aqui para quem quiser usar ou melhorar.
       
      É bem parecido com os outros sistemas de roleta, igual deste tópico: https://tibiaking.com/forums/topic/101557-action-cassino-roleta-de-items/
       
      Como funciona?
       
      O "Treasure Chest" é um item custom, onde o jogador têm a possibilidade de ganhar itens raros ou bem meia boca. Tudo dependerá da sorte.
       
      O jogador precisa tacar o treasure chest na bancada e acionar a alavanca. O treasure chest irá se transformar em vários itens de forma randômica no qual o jogador poderá ou não ganhar. No final, apenas um item é entregue ao jogador.
       
      Para entender melhor o seu funcionamento, segue o GIF abaixo:
       

       
       
      em data > actions > actions.xml
       
       
      em data > actions > scripts > crie um arquivo chamado leverTreasureChest.lua
       
       
      no banco de dados do servidor, adicione o seguinte código em "SQL":
       
       
       

      Também estou disponibilizando uma página PHP, para quem quiser usar no site do servidor. Na página tem informações sobre o funcionamento, quais são os possíveis prêmios e a lista de jogadores que ganharam os itens raros.
       

       
       
      Espero ter ajudado de alguma forma! : )
       
      treasure_chest.php
    • Por luanluciano93
      Olá pessoal, estou desenvolvendo esse sistema vip para TFS 1.x, se precisarem de alguma função nova é só comentar, criei para usar em um servidor meu e resolvi postar, bom proveito a todos.
       
      É só ir no arquivo data/lib/core/player.lua e adicionar esse código no começo do script:
      -- ALTER TABLE `accounts` ADD `vip_time` BIGINT(20) NOT NULL DEFAULT 0; -- player:getVipTime() function Player.getVipTime(self) local resultId = db.storeQuery("SELECT `vip_time` FROM `accounts` WHERE `id` = '".. self:getAccountId() .."';") local time = resultId ~= false and result.getNumber(resultId, "vip_time") or 0 result.free(resultId) return time end -- player:isVip() function Player.isVip(self) return self:getVipTime() > os.time() and true or false end -- player:addVipDays(days) function Player.addVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() + (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVipDays(days) function Player.removeVipDays(self, days) return(self:isVip() and tonumber((days * 86400))) and db.query("UPDATE `accounts` SET `vip_time` = '".. (self:getVipTime() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") or db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:setVipDays(days) function Player.setVipDays(self, days) return db.query("UPDATE `accounts` SET `vip_time` = '".. (os.time() - (days * 86400)) .."' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:removeVip() function Player.removeVip(self) db.query("UPDATE `accounts` SET `vip_time` = '0' WHERE `id` ='".. self:getAccountId() .."' LIMIT 1 ;") end -- player:sendVipDaysMessage() function Player.sendVipDaysMessage(self) if self:isVip() then local vipTime = self:getVipTime() - os.time() local vipDays = 1 + (math.floor(vipTime / 86400)) return self:getVipTime() ~= false and self:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'You have '.. vipDays .. ' vip day(s) in your account.') end end -- player:checkVipLogin() function Player.checkVipLogin(self) if self:getVipTime() > 0 and not self:isVip() then return self:removeVip() and self:teleportTo(self:getTown():getTemplePosition()) end end  
       
      As funções são:
      • player:getVipTime() - Retorna o valor da tabela vip_time (igual esta na database).
      • player:isVip() - Retorna se o player é vip ou não.
      • player:addVipDays(days) - Usa-se em algum script para para adicionar dias de vip ao player (parâmetro de entrada "days").
      • player:removeVipDays(days) - Usa-se em algum script para para remover dias de vip do player (parâmetro de entrada "days").
      • player:setVipDays(days) - Usa-se em algum script para para mudar os dias de vip do player (parâmetro de entrada "days").
      • player:removeVip() - Usa-se em algum script para para remover todo tempo de vip do player.
      • player:sendVipDaysMessage() - Retorna uma mensagem no player mostrando os dias de vip que ainda restam ao player.
      • player:checkVipLogin() - Checa se a vip do player acabou, se sim teleporta ele para o templo.
       

      Qualquer dúvida ou erro/bug poste aqui.
    • Por Linus
      Você  pode configurar se quer que o preço aumente a cada reset, se quer que o level pra resetar aumente e se vc quer que a vida resete junto (e quanto % da vida atual será a vida após resetar).
       
       
      Testado em tfs 1.1, Versão 10.77
       
       
       
       
      Vá em data/npc/lib/ crie npc_resets.lua :
       



       
      Você pode editar mexendo aqui. no script acima :
      config = { minlevel = 150, --- Level inical para resetar price = 10000, --- Preço inicial para resetar newlevel = 20, --- Level após reset priceByReset = 0, --- Preço acrescentado por reset percent = 30, ---- Porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) maxresets = 50, ---- Maximo de resets levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset } agora em data/npc/ crie reseter.XML :
       



       
       
       
      Agora em data/npc/scripts crie reseter.lua :
       



       
       
       
      Img : 
       


×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo