Jump to content

Simple Task 3.0


Vodkart

Recommended Posts

uheuheuheuehueue faz tempo q n atualizo esse sistema, última vez que mexi nele ainda tava no 8.60...

 

tenta colocar "javali" no sistema.

 

se n der certo eu vou configurar o sistema de novo...

 

qual versão do seu ot?

serio que o Deus do scripter ainda existe ?, poxa preciso muito de uma atualização nele pra 8.70 Edited by Dbko
Link to comment
Share on other sites

  • 1 month later...

Quests Tasks do meu ot (Queria que você coloca-se esses monstros e recompensas ai abaixo no seu Sistema e mandar ai na resposta

pra mim usar seu sistema, REP+ Forever ^^

 

 

[1] = {questStarted = 1510, questStorage = 65000, killsRequired = 100, raceName = "Dragons", rewards = {{enable = true, type = "exp", values = 4000000}, {enable = true, type = "money", values = 160000}}},
[2] = {questStarted = 1511, questStorage = 65001, killsRequired = 600, raceName = "Demons", rewards = {{enable = true, type = "exp", values = 5000000}, {enable = true, type = "money", values = 200000}}},
[3] = {questStarted = 1512, questStorage = 65002, killsRequired = 300, raceName = "Orshabaal", rewards = {{enable = true, type = "exp", values = 6000000}, {enable = true, type = "money", values = 250000}}},
[4] = {questStarted = 1513, questStorage = 65003, killsRequired = 500, raceName = "Ferumbras", rewards = {{enable = true, type = "exp", values = 7000000}, {enable = true, type = "money", values = 280000}}},
[5] = {questStarted = 1514, questStorage = 65004, killsRequired = 600, raceName = "Medusas", rewards = {{enable = true, type = "exp", values = 8000000}, {enable = true, type = "money", values = 300000}}},
[6] = {questStarted = 1515, questStorage = 65005, killsRequired = 700, raceName = "Lizard Chosen", rewards = {{enable = true, type = "exp", values = 9000000}, {enable = true, type = "money", values = 320000}}},
[7] = {questStarted = 1516, questStorage = 65006, killsRequired = 500, raceName = "Apocalypses", rewards = {{enable = true, type = "exp", values = 10000000}, {enable = true, type = "money", values = 350000}}},
[8] = {questStarted = 1517, questStorage = 65007, killsRequired = 480, raceName = "Terramite", rewards = {{enable = true, type = "exp", values = 110000000}, {enable = true, type = "money", values = 400000}}},
[9] = {questStarted = 1518, questStorage = 65008, killsRequired = 300, raceName = "Baby Hades", rewards = {{enable = true, type = "exp", values = 120000000}, {enable = true, type = "boss", values = {x=457,y=276,z=5}},{enable = true, type = "item", values = {12702,1} }}}
}

Edited by oFrog
Link to comment
Share on other sites

  • 4 months later...
  • 1 month later...
  • 4 months later...

como faço parra colocar a task em grupo Ex: tem quue matar extamente a quanttidade de bixos que e escolher EX: 200 DRAGON LORD + 300 DRAGON + 500 DEMODRAS .. ae ele completa a task em como fazer?

Link to comment
Share on other sites

  • 3 years later...
Em 14/02/2011 em 17:25, Vodkart disse:

 

 

 

Mods:

 

  Ocultar conteúdo

 

 

Simple Task.xml

 



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

tasktabble = {
["troll"] = {monster_race={"troll","frost troll","furious troll","island troll","swamp troll","troll champion","troll legionnaire"}, storage_start = 200201, storage = 91001,count = 150,exp = 200,money = 250},
["globin"] = {monster_race={"goblin","goblin assassin","goblin leader"}, storage_start = 200202, storage = 91002,count = 150,exp = 300,money = 300},
["rotworm"] = {monster_race={"rotworm","carrion worm"}, storage_start = 200203, storage = 91003,count = 300,exp = 1000,money = 800},
["cyclops"] = {monster_race={"cyclops","cyclops smith","cyclops drone"}, storage_start = 200204, storage = 91004,count = 500,exp = 3000,money = 800},
["green djinn"] = {monster_race={"green djinn","efreet"}, storage_start = 200205, storage = 91005,count = 500,exp = 10000,money = 5000},
["blue djinn"] = {monster_race={"blue djinn","marid"}, storage_start = 200206, storage = 91006,count = 500,exp = 10000,money = 5000},
["pirate one"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200207, storage = 91007,count = 300,exp = 10000,money = 5000},
["pirate two"] = {monster_race={"pirate buccaneer","pirate corsair","pirate cutthroat","pirate ghost","pirate marauder","pirate skeleton"}, storage_start = 200208, storage = 91008,count = 300,exp = 10000,money = 5000},
["minotaur"] = {monster_race={"minotaur","minotaur archer","minotaur mage","minotaur guard"}, storage_start = 200209, storage = 91009,count = 20},
["necromancer"] = {monster_race={"necromancer","priestess"}, storage_start = 200210, storage = 91010,count= 400},
["carniphila"] = {monster_race={"carniphila"}, storage_start = 200211, storage = 91011,count= 150, exp = 2500},
["stone golem"] = {monster_race={"stone golem"}, storage_start = 200212, storage = 91012,count= 220, exp = 2000},
["ice golem"] = {monster_race={"ice golem"}, storage_start = 200213, storage = 91013,count= 300, exp = 12000},
["dragon"] = {monster_race={"dragon","dragon lord","frost dragon"}, storage_start = 200214, storage = 91014,count= 250, exp = 50000},
["mutated rat"] = {monster_race={"mutated rat"}, storage_start = 200215, storage = 91015,count = 210, exp = 25000, money = 10000},
["giant spider"] = {monster_race={"giant spider"}, storage_start = 200215, storage = 91016,count = 500, exp = 50000, money = 15000},
["hydra"] = {monster_race={"hydra"}, storage_start = 200217, storage = 91017,count = 5000, exp = 2000, money = 15000, reward = {{6433,1},{7434,1},{2197,1},{2476,1}}},
["sea serpent"] = {monster_race={"sea serpent"}, storage_start = 200218, storage = 91018,count = 1500, exp = 70000, money = 30000},
["behemoth"] = {monster_race={"behemoth"}, storage_start = 200219, storage = 91019,count = 1800, exp = 50000, money = 30000, reward = {{6391,1},{5741,1}}},
["serpent spawn"] = {monster_race={"serpent spawn"}, storage_start = 200220, storage = 91020,count = 1400, exp = 70000, money = 30000},
["demon"] = {monster_race={"demon"}, storage_start = 200221, storage = 91021,count = 6666, exp = 70000, money = 200000, reward = {{2495,1},{2496,1},{2520,1},{2472,1}}},
["quara"] = {monster_race={"quara predator","quara constrictor","quara hydromancer","quara mantassin","quara pincher"}, storage_start = 200222, storage = 91022,count = 300, exp = 40000, money = 50000},
["quara scout"] = {monster_race={"quara predator scout","quara constrictor scout","quara hydromancer scout","quara mantassin scout","quara pincher scout"}, storage_start = 200223, storage = 91023,count = 300, exp = 50000, money = 60000}
}


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 = "necromancer",Playerpos = {x = 196, y = 39, z = 7}, FromPosToPos = {{x = 195, y = 37, z = 7},{x = 198, y = 41, z = 7}}, time = 5},
{race = "dragon",Playerpos = {x = 208, y = 59, z = 7}, FromPosToPos = {{x = 206, y = 56, z = 7},{x = 209, y = 65, z = 7}}, time = 5}
}


function isSummon(uid)
return uid ~= getCreatureMaster(uid) or false
end
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 = {true,100000},
money = {true,200000},
items ={false,{{2124,2},{2173,1}}},
premium ={true,5}
}
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[i])
														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[i][2] .. ' ' .. getItemNameById(items[i][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[i][2]
while count > 0 do
if isItemStackable(items[i][1]) then
doPlayerAddItemStacking(cid, items[i][1], 1)
else
doPlayerAddItem(cid, items[i][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[i] == nil then return nil
			else return a[i], t[a[i]]
			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) and not isSummon(target) 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[i] then
local contagem = getPlayerStorageValue(cid, mob.storage)
if not tonumber(contagem) then return true end
if (contagem == -1) then contagem = 1 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>
 

 

 

 

 

 

NPC

 

  Mostrar conteúdo oculto

 

NPC/SCRIPT

 

simple_task.lua

 



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("Me diga o nome do monstro que você deseja fazer a task!", 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..", 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[i], 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())
 

 

 

NPC

 

Ludger.xml

 



<?xml version="1.0"?>
<npc name="Ludger" script="data/npc/scripts/simple_task.lua" walkinterval="50000" floorchange="0">
<health now="100" max="100"/>
<look type="129" head="95" body="116" legs="121" feet="115" addons="3"/>
<parameters>
<parameter key="message_greet" value="Ola |PLAYERNAME|. quer fazer uma {task}? ou {sair} de uma? tambem pode {receber} premios se terminou ela!" />
</parameters>
</npc>
 

 

 

 

 

Como configurar?

 

  Mostrar conteúdo oculto

 

-- configuração task monstros --

 

para configurar você vai ali no Mods

 

lá tem uma tabela chamada 'tasktabble' que funciona da seguinte maneira:

 

 

["nome da task"] -- aqui você coloca o nome da task

 

monster_race={"nome dos monstro"} -- aqui você coloca o nome dos monstro que vão contar na task

 

exemplo:

 

 



monster_race={"cyclops","cyclops smith","cyclops drone"}
 

 

 

ou seja vai contar nessa task tanto se eu matar um 'cyclops' como matar tbm um 'cyclops drone'

 

storage_start -- n mexa, é para checar se ele está com a task

storage -- é o valor da storage para fazer a contagem. obs: não edite

count -- é o total de monstro que tem que matar

money -- é qnto de dinheiro ele vai receber ao terminar a task, se n quiser colocar pra receber money só remover essa parte

exp -- é quanto ele vai ganhar de exp ao terminar a task, se n quiser colocar pra receber exp só remover essa parte

reward -- é a lista dos items que ele vai ganhar ao terminar a task, caso não queira que ele receba items só remover essa parte

 

 

-- configuração bosses --

 

em mods tem uma tabela chamada 'configbosses_task'

 

 



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 = "necromancer",Playerpos = {x = 196, y = 39, z = 7}, FromPosToPos = {{x = 195, y = 37, z = 7},{x = 198, y = 41, z = 7}}, time = 5},
{race = "dragon",Playerpos = {x = 208, y = 59, z = 7}, FromPosToPos = {{x = 206, y = 56, z = 7},{x = 209, y = 65, z = 7}}, time = 5}
}
 

 

 

 

race -- é o nome da task que vai ter boss, só olhar dentro dos [""] que vc editou a tabela dos monstros

Playerpos -- é pra onde o jogador vai ao entrar no boss

FromPosToPos -- nessa parte são duas pos, é o começo da área e o final da área do boss

time -- é o limite de tempo em minutos que o jogador vai poder ficar na sala do boss

 

 

-- configuração recompensas top 10 jogadores terminar todas as TASKS --

 

ali em mods tem essa tabela:

 

 



local config = {
exp = {true,100000}, -- vai ganhar exp? se true edite a exp
money = {true,200000}, -- vai ganhar money? se true edite a qntidade de dinheiro
items ={false,{{2124,2},{2173,1}}}, -- vai receber items? se true edite os items dentro da tabela
premium ={false,5} -- vai receber premium days? se true edite os dias q vai receber
}
 

 

 

 

no meu ot ele não conta os monstros - tfs 0.3.7

ja tentei varias formas e nao deu certo

Link to comment
Share on other sites

  • 1 month later...
  • 2 months later...
×
×
  • Create New...