Olá Galera esse é meu primeiro tutorial, e como o própio titulo diz, é para a Killing in the name of .. quest, ou seja as TASKS !
Vi muitos tutoriais aqui no xtibia e em outros sites, mais todos com problema, e eu vou postar um aqui que pode te ajudar bem.
Lembrando que é um Sistema de Task só para os principais bosses, e uma criação minha também.
OBS: Futuras Task podem ser adicionadas por você mesmo, por isso eu deixei o data/creaturescripts/scripts da maneira "original".
São só 4 tasks na seguinte ordem: Carniphila, Minotaurs, Necromancer/Priestess e Dragon Lord/Frost Dragon.
Em data/creaturescripts/scripts Crie killinginthenameof.lua e adicione:
local questCreatures = { ["troll"] = {questStarted = 1510, questStorage = 65000, creatureStorage = 15000, killsRequired = 100, raceName = "Trolls"}, ["frost troll"] = {questStarted = 1510, questStorage = 65000, creatureStorage = 15001, killsRequired = 100, raceName = "Trolls"}, ["furious troll"] = {questStarted = 1510, questStorage = 65000, creatureStorage = 15002, killsRequired = 100, raceName = "Trolls"}, ["island troll"] = {questStarted = 1510, questStorage = 65000, creatureStorage = 15003, killsRequired = 100, raceName = "Trolls"}, ["swamp troll"] = {questStarted = 1510, questStorage = 65000, creatureStorage = 15004, killsRequired = 100, raceName = "Trolls"}, ["troll champion"] = {questStarted = 1510, questStorage = 65000, creatureStorage = 15005, killsRequired = 100, raceName = "Trolls"}, ["troll legionnaire"] = {questStarted = 1510, questStorage = 65000, creatureStorage = 15006, killsRequired = 100, raceName = "Trolls"}, ["goblin"] = {questStarted = 1511, questStorage = 65001, creatureStorage = 15007, killsRequired = 150, raceName = "Goblins"}, ["goblin assassin"] = {questStarted = 1511, questStorage = 65001, creatureStorage = 15008, killsRequired = 150, raceName = "Goblins"}, ["goblin leader"] = {questStarted = 1511, questStorage = 65001, creatureStorage = 15009, killsRequired = 150, raceName = "Goblins"}, ["goblin scavenger"] = {questStarted = 1511, questStorage = 65001, creatureStorage = 15010, killsRequired = 150, raceName = "Goblins"}, ["rotworm"] = {questStarted = 1512, questStorage = 65002, creatureStorage = 15011, killsRequired = 300, raceName = "Rotworms"}, ["carriom worm"] = {questStarted = 1512, questStorage = 65002, creatureStorage = 15012, killsRequired = 300, raceName = "Rotworms"}, ["cyclops"] = {questStarted = 1513, questStorage = 65003, creatureStorage = 15013, killsRequired = 500, raceName = "Cyclops"}, ["cyclops smith"] = {questStarted = 1513, questStorage = 65003, creatureStorage = 15014, killsRequired = 500, raceName = "Cyclops"}, ["cyclops drone"] = {questStarted = 1513, questStorage = 65003, creatureStorage = 15015, killsRequired = 500, raceName = "Cyclops"}, ["crocodile"] = {questStarted = 1514, questStorage = 65004, creatureStorage = 15016, killsRequired = 300, raceName = "Crocodiles"}, ["tarantula"] = {questStarted = 1515, questStorage = 65005, creatureStorage = 15017, killsRequired = 300, raceName = "Tarantulas"}, ["carniphila"] = {questStarted = 1516, questStorage = 65006, creatureStorage = 15018, killsRequired = 10, raceName = "Carniphilas"}, ["stone golem"] = {questStarted = 1517, questStorage = 65007, creatureStorage = 15019, killsRequired = 200, raceName = "Stone Golems"}, ["mammoth"] = {questStarted = 1518, questStorage = 65008, creatureStorage = 15020, killsRequired = 300, raceName = "Mammoths"}, ["ice golem"] = {questStarted = 1519, questStorage = 65009, creatureStorage = 15021, killsRequired = 300, raceName = "Ice Golems"}, ["quara predator scout"] = {questStarted = 1520, questStorage = 65010, creatureStorage = 15022, killsRequired = 300, raceName = "Quaras Scout"}, ["quara constrictor scout"] = {questStarted = 1520, questStorage = 65010, creatureStorage = 15023, killsRequired = 300, raceName = "Quaras Scout"}, ["quara hydromancer scout"] = {questStarted = 1520, questStorage = 65010, creatureStorage = 15024, killsRequired = 300, raceName = "Quaras Scout"}, ["quara mantassin scout"] = {questStarted = 1520, questStorage = 65010, creatureStorage = 15025, killsRequired = 300, raceName = "Quaras Scout"}, ["quara pincher scout"] = {questStarted = 1520, questStorage = 65010, creatureStorage = 15026, killsRequired = 300, raceName = "Quaras Scout"}, ["quara predator"] = {questStarted = 1521, questStorage = 65011, creatureStorage = 15027, killsRequired = 300, raceName = "Quaras"}, ["quara constrictor"] = {questStarted = 1521, questStorage = 65011, creatureStorage = 15028, killsRequired = 300, raceName = "Quaras"}, ["quara hydromancer"] = {questStarted = 1521, questStorage = 65011, creatureStorage = 15029, killsRequired = 300, raceName = "Quaras"}, ["quara mantassin"] = {questStarted = 1521, questStorage = 65011, creatureStorage = 15030, killsRequired = 300, raceName = "Quaras"}, ["quara pincher"] = {questStarted = 1521, questStorage = 65011, creatureStorage = 15031, killsRequired = 300, raceName = "Quaras"}, ["water elemental"] = {questStarted = 1522, questStorage = 65012, creatureStorage = 15032, killsRequired = 70, raceName = "Water Elementals"}, ["roaring water elemental"] = {questStarted = 1522, questStorage = 65012, creatureStorage = 15033, killsRequired = 70, raceName = "Water Elementals"}, ["slick water elemental"] = {questStarted = 1522, questStorage = 65012, creatureStorage = 15034, killsRequired = 70, raceName = "Water Elementals"}, ["massive water elemental"] = {questStarted = 1522, questStorage = 65012, creatureStorage = 15035, killsRequired = 70, raceName = "Water Elementals"}, ["earth elemental"] = {questStarted = 1523, questStorage = 65013, creatureStorage = 15036, killsRequired = 70, raceName = "Earth Elementals"}, ["jagged earth elemental"] = {questStarted = 1523, questStorage = 65013, creatureStorage = 15037, killsRequired = 70, raceName = "Earth Elementals"}, ["massive earth elemental"] = {questStarted = 1523, questStorage = 65013, creatureStorage = 15038, killsRequired = 70, raceName = "Earth Elementals"}, ["muddy earth elemental"] = {questStarted = 1523, questStorage = 65013, creatureStorage = 15039, killsRequired = 70, raceName = "Earth Elementals"}, ["energy elemental"] = {questStarted = 1524, questStorage = 65014, creatureStorage = 15040, killsRequired = 70, raceName = "Energy Elementals"}, ["charged energy elemental"] = {questStarted = 1524, questStorage = 65014, creatureStorage = 15041, killsRequired = 70, raceName = "Energy Elementals"}, ["massive energy elemental"] = {questStarted = 1524, questStorage = 65014, creatureStorage = 15042, killsRequired = 70, raceName = "Energy Elementals"}, ["overcharged energy elemental"] = {questStarted = 1524, questStorage = 65014, creatureStorage = 15043, killsRequired = 70, raceName = "Energy Elementals"}, ["fire elemental"] = {questStarted = 1525, questStorage = 65015, creatureStorage = 15044, killsRequired = 70, raceName = "Fire Elementals"}, ["blazing fire elemental"] = {questStarted = 1525, questStorage = 65015, creatureStorage = 15045, killsRequired = 70, raceName = "Fire Elementals"}, ["blistering fire elemental"] = {questStarted = 1525, questStorage = 65015, creatureStorage = 15046, killsRequired = 70, raceName = "Fire Elementals"}, ["massive fire elemental"] = {questStarted = 1525, questStorage = 65015, creatureStorage = 15047, killsRequired = 70, raceName = "Fire Elementals"}, ["mutated rat"] = {questStarted = 1526, questStorage = 65016, creatureStorage = 15048, killsRequired = 200, raceName = "Mutated Rats"}, ["giant spider"] = {questStarted = 1527, questStorage = 65017, creatureStorage = 15049, killsRequired = 500, raceName = "Giant Spiders"}, ["hydra"] = {questStarted = 1528, questStorage = 65018, creatureStorage = 15050, killsRequired = 2000, raceName = "Hydras"}, ["sea serpent"] = {questStarted = 1529, questStorage = 65019, creatureStorage = 15051, killsRequired = 2000, raceName = "Sea Serpents"}, ["behemoth"] = {questStarted = 1530, questStorage = 65020, creatureStorage = 15052, killsRequired = 2000, raceName = "Behemoths"}, ["serpent spawn"] = {questStarted = 1531, questStorage = 65021, creatureStorage = 15053, killsRequired = 1500, raceName = "Serpents Spawn"}, ["green djinn"] = {questStarted = 1532, questStorage = 65022, creatureStorage = 15054, killsRequired = 500, raceName = "Green Djinns"}, ["efreet"] = {questStarted = 1532, questStorage = 65022, creatureStorage = 15055, killsRequired = 500, raceName = "Green Djinns"}, ["blue djinn"] = {questStarted = 1533, questStorage = 65023, creatureStorage = 15056, killsRequired = 500, raceName = "Blue Djinns"}, ["marid"] = {questStarted = 1533, questStorage = 65023, creatureStorage = 15057, killsRequired = 500, raceName = "Blue Djinns"}, ["pirate buccaneer"] = {questStarted = 1534, questStorage = 65024, creatureStorage = 15058, killsRequired = 3000, raceName = "Pirates"}, ["pirate corsair"] = {questStarted = 1534, questStorage = 65024, creatureStorage = 15059, killsRequired = 3000, raceName = "Pirates"}, ["pirate cutthroat"] = {questStarted = 1534, questStorage = 65024, creatureStorage = 15060, killsRequired = 3000, raceName = "Pirates"}, ["pirate ghost"] = {questStarted = 1534, questStorage = 65024, creatureStorage = 15061, killsRequired = 3000, raceName = "Pirates"}, ["pirate marauder"] = {questStarted = 1534, questStorage = 65024, creatureStorage = 15062, killsRequired = 3000, raceName = "Pirates"}, ["pirate skeleton"] = {questStarted = 1534, questStorage = 65024, creatureStorage = 15063, killsRequired = 3000, raceName = "Pirates"}, ["pirate buccaneer"] = {questStarted = 1535, questStorage = 65025, creatureStorage = 15064, killsRequired = 3000, raceName = "Pirates"}, ["pirate corsair"] = {questStarted = 1535, questStorage = 65025, creatureStorage = 15065, killsRequired = 3000, raceName = "Pirates"}, ["pirate cutthroat"] = {questStarted = 1535, questStorage = 65025, creatureStorage = 15066, killsRequired = 3000, raceName = "Pirates"}, ["pirate ghost"] = {questStarted = 1535, questStorage = 65025, creatureStorage = 15067, killsRequired = 3000, raceName = "Pirates"}, ["pirate marauder"] = {questStarted = 1535, questStorage = 65025, creatureStorage = 15068, killsRequired = 3000, raceName = "Pirates"}, ["pirate skeleton"] = {questStarted = 1535, questStorage = 65025, creatureStorage = 15069, killsRequired = 3000, raceName = "Pirates"}, ["minotaur"] = {questStarted = 1536, questStorage = 65026, creatureStorage = 15070, killsRequired = 10, raceName = "Minotaurs"}, ["minotaur archer"] = {questStarted = 1536, questStorage = 65026, creatureStorage = 15076, killsRequired = 10, raceName = "Minotaurs"}, ["minotaur mage"] = {questStarted = 1536, questStorage = 65026, creatureStorage = 15077, killsRequired = 10, raceName = "Minotaurs"}, ["minotaur guard"] = {questStarted = 1536, questStorage = 65026, creatureStorage = 15078, killsRequired = 10, raceName = "Minotaurs"}, ["necromancer"] = {questStarted = 1537, questStorage = 65027, creatureStorage = 15071, killsRequired = 10, raceName = "Magicians"}, ["priestess"] = {questStarted = 1537, questStorage = 65027, creatureStorage = 15072, killsRequired = 10, raceName = "Magicians"}, ["dragon lord"] = {questStarted = 1538, questStorage = 65028, creatureStorage = 15073, killsRequired = 10, raceName = "Dragons"}, ["frost dragon"] = {questStarted = 1538, questStorage = 65028, creatureStorage = 15074, killsRequired = 10, raceName = "Dragons"}, ["demon"] = {questStarted = 1539, questStorage = 65029, creatureStorage = 15075, killsRequired = 6666, raceName = "Demons"} } local msgType = MESSAGE_STATUS_CONSOLE_ORANGE function onKill(cid, target, lastHit) local creature = questCreatures[getCreatureName(target):lower()] if creature then if isPlayer(target) or isSummon(target) then return true end if getCreatureStorage(cid, creature.questStarted) > 0 then if getCreatureStorage(cid, creature.questStorage) < creature.killsRequired then if getCreatureStorage(cid, creature.questStorage) < 0 then doCreatureSetStorage(cid, creature.questStorage, 0) end if getCreatureStorage(cid, creature.creatureStorage) < 0 then doCreatureSetStorage(cid, creature.creatureStorage, 0) end doCreatureSetStorage(cid, creature.questStorage, getCreatureStorage(cid, creature.questStorage) + 1) doCreatureSetStorage(cid, creature.creatureStorage, getCreatureStorage(cid, creature.creatureStorage) + 1) doPlayerSendTextMessage(cid, msgType, getCreatureStorage(cid, creature.creatureStorage) .. " " .. getCreatureName(target) .. " defeated. Total [" .. getCreatureStorage(cid, creature.questStorage) .. "/" .. creature.killsRequired .. "] " .. creature.raceName .. ".") end end end return true end
em login.lua adicione
registerCreatureEvent(cid, "KillingInTheNameOf")
em creaturescript.xml adicione
<event type="kill" name="KillingInTheNameOf" event="script" value="killinginthenameof.lua"/>
Agora em data/npc adicione Grizzly Adams.xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Grizzly Adams" script="data/npc/scripts/killinginthenameof.lua" access="3" walkinterval="2000" lookdir="2"> <mana now="800" max="800"/> <health now="200" max="200"/> <look type="144" head="97" body="97" legs="94" feet="97" addons="3"/> <parameters> <parameter key="module_keywords" value="1" /> <parameter key="message_farewell" value="Boa sorte, |PLAYERNAME|!"/> <parameter key="message_walkaway" value="Ate mais tarde." /> <parameter key="module_shop" value="1" /> <parameter key="message_sendtrade" value="Eu nao vendo nada, apenas lhe oferco {Tasks}" /> <parameter key="message_greet" value="Ola |PLAYERNAME|, posso lhe oferecer as tasks na ordem de dificuldade, diga {task}, e {task} e comece agora mesmo!, quando terminar basta dizer {report}." /> <parameter key="shop_buyable" value="" /> </parameters> </npc>
e em npc/scripts adicione killinginthenameof.lua
local CARNI_POSITION = {x = 32000, y = 32000, z = 7} local THEHORNEDFOX_POSITION = {x = 32000, y = 32000, z = 8} local NECROPHARUS_POSITION = {x = 32000, y = 32000, z = 9} local DEMODRAS_POSITION = {x = 32000, y = 32000, z = 10} local tasks = { [1] = {questStarted = 1516, questStorage = 65006, killsRequired = 10, raceName = "Carniphilas", rewards = {first = {enable = true, type = "boss", values = CARNI_POSITION}, second = {enable = false, type = nil, values = {nil, nil}}, third = {enable = false, type = nil, values = {nil, nil}}}}, [2] = {questStarted = 1536, questStorage = 65026, killsRequired = 10, raceName = "Minotaurs", rewards = {first = {enable = true, type = "boss", values = THEHORNEDFOX_POSITION}, second = {enable = false, type = nil, values = {nil, nil}}, third = {enable = false, type = nil, values = {nil, nil}}}}, [3] = {questStarted = 1537, questStorage = 65027, killsRequired = 10, raceName = "Magicians", rewards = {first = {enable = true, type = "boss", values = NECROPHARUS_POSITION}, second = {enable = false, type = nil, values = {nil, nil}}, third = {enable = false, type = nil, values = {nil, nil}}}}, [4] = {questStarted = 1538, questStorage = 65028, killsRequired = 10, raceName = "Dragons", rewards = {first = {enable = true, type = "boss", values = DEMODRAS_POSITION}, second = {enable = false, type = nil, values = {nil, nil}}, third = {enable = false, type = nil, values = {nil, nil}}}}, } local storage = 64521 local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local voc = {} 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) local s = getPlayerStorageValue(cid, storage) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE and 0 or cid if msgcontains(msg, 'task') then if(s < 1) then doPlayerSetStorageValue(cid, storage, 1) end if tasks[s] then if(getPlayerStorageValue(cid, tasks[s].questStarted) < 1) then if(getPlayerStorageValue(cid, tasks[s].creatureStorage) < 0) then doPlayerSetStorageValue(cid, tasks[s].creatureStorage, 0) end if(getPlayerStorageValue(cid, tasks[s].questStorage) < 0) then doPlayerSetStorageValue(cid, tasks[s].questStorage, 0) end doPlayerSetStorageValue(cid, tasks[s].questStarted, 1) selfSay('voce comecou a task numero ' .. getPlayerStorageValue(cid, storage) .. ', nessa task voce deve matar ' .. tasks[s].killsRequired .. ' ' .. tasks[s].raceName .. '.', cid) else selfSay('Voce esta no meio da task sobre ' .. tasks[s].raceName .. '.', cid) end else print("[Warning - Error::Killing in the name of::Tasks config] Something is wrong.") end elseif msgcontains(msg, 'report') then if tasks[s] and tasks[s].questStarted > 0 then if(getPlayerStorageValue(cid, tasks[s].creatureStorage) < 0) then doPlayerSetStorageValue(cid, tasks[s].creatureStorage, 0) end if(getPlayerStorageValue(cid, tasks[s].questStorage) < 0) then doPlayerSetStorageValue(cid, tasks[s].questStorage, 0) end if(getPlayerStorageValue(cid, tasks[s].questStorage) >= tasks[s].killsRequired) then selfSay('Otimo!... voce terminou a task numero ' .. s .. '. Bom Trabalho.', cid) doPlayerSetStorageValue(cid, storage, s + 1) if(tasks[s].rewards.first.enable) then if(tasks[s].rewards.first.type == "boss") then doTeleportThing(cid, tasks[s].rewards.first.values) elseif(tasks[s].rewards.first.type == "exp") then doPlayerAddExperience(cid, tasks[s].rewards.first.values) elseif(tasks[s].rewards.first.type == "item") then doPlayerAddItem(cid, tasks[s].rewards.first.values[1], tasks[s].rewards.first.values[2]) elseif(tasks[s].rewards.first.type == "money") then doPlayerAddMoney(cid, tasks[s].rewards.first.values) elseif(tasks[s].rewards.first.type == "storage") then doPlayerSetStorageValue(cid, tasks[s].rewards.first.values[1], tasks[s].rewards.first.values[2]) end end if(tasks[s].rewards.second.enable) then if(tasks[s].rewards.second.type == "boss") then doTeleportThing(cid, tasks[s].rewards.second.values) elseif(tasks[s].rewards.second.type == "exp") then doPlayerAddExperience(cid, tasks[s].rewards.second.values) elseif(tasks[s].rewards.second.type == "item") then doPlayerAddItem(cid, tasks[s].rewards.second.values[1], tasks[s].rewards.second.values[2]) elseif(tasks[s].rewards.second.type == "money") then doPlayerAddMoney(cid, tasks[s].rewards.second.values) elseif(tasks[s].rewards.second.type == "storage") then doPlayerSetStorageValue(cid, tasks[s].rewards.second.values[1], tasks[s].rewards.second.values[2]) end end if(tasks[s].rewards.third.enable) then if(tasks[s].rewards.third.type == "boss") then doTeleportThing(cid, tasks[s].rewards.third.values) elseif(tasks[s].rewards.third.type == "exp") then doPlayerAddExperience(cid, tasks[s].rewards.third.values) elseif(tasks[s].rewards.third.type == "item") then doPlayerAddItem(cid, tasks[s].rewards.third.values[1], tasks[s].rewards.third.values[2]) elseif(tasks[s].rewards.third.type == "money") then doPlayerAddMoney(cid, tasks[s].rewards.third.values) elseif(tasks[s].rewards.third.type == "storage") then doPlayerSetStorageValue(cid, tasks[s].rewards.third.values[1], tasks[s].rewards.third.values[2]) end end else selfSay('Atualmente ' .. getPlayerStorageValue(cid, tasks[s].questStorage) .. ' ' .. tasks[s].raceName .. ' mortos, voce precisa matar ' .. tasks[s].killsRequired .. '.', cid) end else selfSay('Voce nao tem nenhuma Task comecada.', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
Nota: Quando o Player termina a Task e dizer Report ele sera teleportado para o Boss, que você ajusta na seguinte posição do script
local CARNI_POSITION = {x = 32000, y = 32000, z = 7} //posição da tiquandas revenge local THEHORNEDFOX_POSITION = {x = 32000, y = 32000, z = 8}//posiçao do the horned fox local NECROPHARUS_POSITION = {x = 32000, y = 32000, z = 9}//posição do necropharus local DEMODRAS_POSITION = {x = 32000, y = 32000, z = 10}//posição do demodras
Se não tiverem alguns ou todos os respaws dos bixos (o que aconteceu no meu caso) basta você criar uma pequena ilha no map editor(tem que ser poucos sqm's para nenhum ligerinho querer esperar o respaw do boss dar novamente, colocar o determinado boss como respaw, e por as posições como eu expliquei ali emcima, Não se esqueça de por NOLOGOUT ZONE (Para ninguen deslogar e voltar para matar o boss denovo) e Claro um teleport para a pessoa sair apos matar o Boss, um pouco de criatividade vai bem também na decoração do lugar ;D
Agora adicione essa tag em todos os montros que terão task:
<script> <event name="KillingInTheNameOf"/> </script>
PS: Todos os monstros da Task estão para 10, agora basta você ajustar da maneira que quiser, exemplo 4000 necros, 5000 minos, etc... mude o killsRequired = xx do data/creaturescripts/scripts e também o killsRequired = xx do npc/scripts lembrando que xx é o numero que você deseja exemplo : killsRequired = 4000.
Créditos pelo script inicial: tibiaa4e
Créditos por modifiações: Lolxd123
Se alguem souber uma Action que depois de 5 minutos kick o player da sala/ilhae outra action para o NPC nao teleportar, se ja estiver alguem lá eu agradeço e dou REP+ hauhahua
REP+ ;D