Jump to content

Recommended Posts

.Qual servidor ou website você utiliza como base? 

TFS 0.4 8.6

Qual o motivo deste tópico? 

Olá boa noite, tenho um script de NPC de Task funciona porem esta com alguns erro, e precisa fazer algumas modificações.

 

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

n ta contando a task e tem outra coisa quando vai fazer a task so ta dando pra pegar 1 task por semana era pra poder pegar todas elas exemplo se eu quiser pegar todas as task dragon,dragon,lord etc eu poderia porem dps de terminha exemplo a de dragon so dps de 1 semana que eu posso fazer a de dragons denovo más se eu não tive feito a de dragon guardian eu posso fazer ou seja cada task teria o seu devido prazo pra fazer separadamente.
edit pra pode pegar todas as task se quiser acho que voce vai ter que colocar pra cada task ter uma storage propria exemplo o dragon ter a sua storage e a do dragon lord outra e pah dai não haveria problema se o player quise-se fazer varias task

 

Você tem o código disponível? Se tiver publique-o aqui: 

1* creaturescripts/scripts/DragonsTask.lua

 

  Ocultar conteúdo

local function isSummon(cid)

if getCreatureMaster(cid) ~= cid then

return true

end

return false

end

 

function onDeath(cid, corpse, deathList)

 

local stoTime = 96588

local stoKill = 96589

local stoName = 96590

local task = {

["dragon"] = {kill = "Dragon", qnt = 1500, exp = 1000000},

["dragon lord"] = {kill = "Dragon Lord", qnt = 1000, exp = 800000},

["hydra"] = {kill = "Hydra", qnt = 800, exp = 700000},

["frost dragon"] = {kill = "Frost Dragon", qnt = 600, exp = 500000},

["dragon guardian"] = {kill = "Dragon Guardian", qnt = 500, exp = 400000},

["thunder dragon"] = {kill = "Thunder Dragon", qnt = 400, exp = 300000},

["demodras"] = {kill = "Demodras", qnt = 300, exp = 200000},

}

 

for a = 1, #deathList do

local pk = deathList[a]

local myTask = task[string.lower(getPlayerStorageValue(pk, stoName))]

local left = math.ceil((getPlayerStorageValue(pk, stoTime) - os.time())/(24 * 60 * 60))

 

if myTask and getCreatureName(cid) == getPlayerStorageValue(pk, stoName) and not isSummon(cid) then

if left > 0 and getPlayerStorageValue(pk, stoKill) > 0 then

setPlayerStorageValue(pk, stoKill, getPlayerStorageValue(pk, stoKill) - 1)

local sto = getPlayerStorageValue(pk, stoKill)

local jaMatou = math.abs(getPlayerStorageValue(pk, stoKill)-myTask.qnt)

 

if sto == 0 then

doPlayerSendTextMessage(pk, 20, "["..myTask.kill.." Task Finalizada] ("..myTask.qnt.."/"..myTask.qnt..")")

else

doPlayerSendTextMessage(pk, 20, "["..myTask.kill.." Task] ("..jaMatou.."/"..myTask.qnt..")")

end

end

end

end

return true

end

 

 

creaturescripts/scripts/login.lua

 

registerCreatureEvent(cid, "DragonsTask")
 

 

 

creaturescripts/creaturescripts.xml

 

<event type="death" name="DragonsTask" event="script" value="DragonsTask.lua"/>
 

 

 

monster/ em todos os dragoes da quest...

 

<script>
<event name="DragonsTask"/>
</script>
 

 

 

npc/scripts/NpcDragonsTask.lua

 

  Ocultar conteúdo

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 stoTime = 96588

local stoKill = 96589

local stoName = 96590

----

local msg = string.lower(msg)

local left = math.ceil((getPlayerStorageValue(cid, stoTime) - os.time())/(24 * 60 * 60)) --nao mexe!

local task = {

["dragon"] = {kill = "Dragon", qnt = 1500, exp = 1000000},

["dragon lord"] = {kill = "Dragon Lord", qnt = 1000, exp = 800000},

["hydra"] = {kill = "Hydra", qnt = 800, exp = 700000},

["frost dragon"] = {kill = "Frost Dragon", qnt = 600, exp = 500000},

["dragon guardian"] = {kill = "Dragon Guardian", qnt = 500, exp = 400000},

["thunder dragon"] = {kill = "Thunder Dragon", qnt = 400, exp = 300000},

["demodras"] = {kill = "Demodras", qnt = 300, exp = 200000},

}

local myTask = task[string.lower(getPlayerStorageValue(cid, stoName))] or {}

 

 

if (msgcontains(msg, 'dragoes') or msgcontains(msg, 'missao')) then

if getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) > 0 then

local faltaMatar = getPlayerStorageValue(cid, stoKill)

local jaMatou = math.abs(getPlayerStorageValue(cid, stoKill)-myTask.qnt)

local prazo = os.date("%d/%m/%y %X", getPlayerStorageValue(cid, stoTime))

selfSay("Você ainda não matou os "..myTask.qnt.." "..myTask.kill..", atualmente você matou ".. (jaMatou)..", resta "..faltaMatar..". Seu prazo é de até "..prazo..".", cid)

talkState[talkUser] = 0

return true

elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left <= 0 and getPlayerStorageValue(cid, stoKill) ~= -1 then

selfSay("Infelismente você não matou os "..myTask.qnt.." "..myTask.kill.." a tempo. Se você quiser, você pode tentar fazer denovo a missao.", cid)

setPlayerStorageValue(cid, stoTime, -1)

setPlayerStorageValue(cid, stoKill, -1)

setPlayerStorageValue(cid, stoName, -1)

talkState[talkUser] = 0

return true

elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) == -1 then

local prazo = os.date("%d/%m/%y %X", getPlayerStorageValue(cid, stoTime))

selfSay("Você tem que esperar pelo menos 1 semana para poder pegar essa tarefa denovo. O prazo acaba dia ".. prazo..".", cid)

talkState[talkUser] = 0

return true

elseif getPlayerStorageValue(cid, stoTime) ~= -1 and left > 0 and getPlayerStorageValue(cid, stoKill) == 0 then

selfSay("Obrigado! você matou os "..myTask.qnt.." "..myTask.kill.." em menos de 1 semana. Aqui esta sua recompensa! Lembre-se que você pode fazer esta task quantas vezes quiser,desde que tenha concluído 1 semana contado a partir do dia de inicio.", cid)

doPlayerAddExp(cid, myTask.exp) --premio

setPlayerStorageValue(cid, stoKill, -1)

setPlayerStorageValue(cid, stoName, -1)

talkState[talkUser] = 0

return true

else

if getPlayerStorageValue(cid, stoTime) ~= -1 and getPlayerStorageValue(cid, stoKill) == -1 then

setPlayerStorageValue(cid, stoTime, -1) --soh pra evitar problemas...

end

selfSay("Eu caço vários tipos, como dragon, dragon lord, hydra, frost dragon, dragon guardian, thunder dragon e demodras. Você quer me ajudar a caçar um deles? Qual?", cid)

talkState[talkUser] = 1

end

 

elseif task[msg] and talkState[talkUser] == 1 then

setPlayerStorageValue(cid, stoName, task[msg].kill)

myTask = task[string.lower(getPlayerStorageValue(cid, stoName))]

selfSay("Ótimo! Você precisa matar pelo menos "..myTask.qnt.." "..myTask.kill.." em um prazo de 1 semana para te dar recompensa. Aceita?", cid)

talkState[talkUser] = 2

 

elseif (msgcontains(msg, 'no') or msgcontains(msg, 'nao')) and talkState[talkUser] == 2 then

selfSay("Ok então, fale comigo denovo quando você quiser me ajudar a matar esses malditos dragões!", cid)

talkState[talkUser] = 0

 

elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 2 then

local semana = 7 * 24 * 60 * 60

setPlayerStorageValue(cid, stoTime, os.time()+semana)

setPlayerStorageValue(cid, stoKill, myTask.qnt)

setPlayerStorageValue(cid, stoName, myTask.kill)

local sto = getPlayerStorageValue(cid, stoTime)

selfSay("Você já pode começar a matar os ".. (myTask.kill) ..", mas cuidado! É uma criatura muito forte. Volte aqui quando matar ".. (myTask.qnt) .." ".. (myTask.kill) .." para ser recompensado. O prazo é até ".. os.date("%d/%m/%y %X", sto) ..".", cid)

 

end

 

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

npc/Arthas.xml

 

  Ocultar conteúdo

<?xml version="1.0" encoding="UTF-8"?>

 

<npc name="Arthas" script="NpcDragonsTask.lua" walkinterval="350000" floorchange="0" speed="0" lookdir="2">

 

<health now="150" max="150"/>

 

<look type="640" head="91" body="114" legs="86" feet="0"/>

 

<parameters>

 

<parameter key="message_greet" value="Ola |PLAYERNAME|. Meu nome é Arthas, sou caçador de {dragoes}."/>

 

</parameters>

 

</npc>

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 

 

Edited by Vitorelias (see edit history)
Link to post
Share on other sites

  • 4 weeks later...

Eu recomendo você usar o sistema de task do Vodkart, eu testei em tfs 0.4 e foi perfeitamente funcional. O sistema conta com uma janela pop-up para as tasks, você acompanha em tempo real no seu default o andamento da task atual, há um rank de players das tasks falando !task rank e ainda há um prêmio para o player que completar todas as tasks (tudo configurável). Sinceramente, não consigo imaginar um sistema de task melhor que este. Caso queira dar uma olhada, clique aqui.

1233333 - Copia.png

Link to post
Share on other sites

2 horas atrás, Rogex Joyz disse:

Eu recomendo você usar o sistema de task do Vodkart, eu testei em tfs 0.4 e foi perfeitamente funcional. O sistema conta com uma janela pop-up para as tasks, você acompanha em tempo real no seu default o andamento da task atual, há um rank de players das tasks falando !task rank e ainda há um prêmio para o player que completar todas as tasks (tudo configurável). Sinceramente, não consigo imaginar um sistema de task melhor que este. Caso queira dar uma olhada, clique aqui.

Podem fechar o topico, já foi resolvido :) Vodkart já me ajudo.

Link to post
Share on other sites

1 hora atrás, Vitorelias disse:

Podem fechar o topico, já foi resolvido :) Vodkart já me ajudo.

Se possível, posta a solução e marque ela como melhor resposta para que os outros possam achar e ver caso tenham o mesmo problema.

1233333 - Copia.png

Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

  • Similar Content

    • By louco3626
      Qual o motivo deste tópico? 
       
      Bom galera , eu queria saber se tem alguma maneira de trava isso aqui na Souce?
       

       
      isso mesmo... travar! 
      Tipo para que [Ativar luzes] fique sempre ativo, porem o play não possa tira de 10%.
      já tentei trava no mod porem tem alguns que conhece e tira...
    • By Narguileiroo
      .Qual servidor ou website você utiliza como base? 
       
      Qual o motivo deste tópico? 
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • By math0182
      Boa noite galera do TK.
      Não sei se estou certo no local estou postando mas vamos lá...
      Eu estou precisando de algumas imagens para colocar na store do meu server. 
      Porém no tibia 12 tem que ser em 64x64 e formato PNG
      Eu queria a imagem de alguns itens como Soft Boots, 100 Crystal Coin e todos os itens da SOUL WAR QUEST...
      se alguem puder dar uma luz eu ficaria grato.
      valeu galera tmj
       
    • By leomacedin
      Fala pessoal beleza? Queria um script onde um bixo morre e nasce o boss em um local X da sala, alguém pode me ajudar. Utilizo a tfs 1.3,l servidor 12x
       
      Qual o motivo deste tópico? 
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • By XGaduX
      local positions = { {x = 1000, y = 1000, z = 7}, {x = 1000, y = 999, z = 7}, {x = 1001, y = 1001, z = 7} } function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) doTeleportThing(cid, positions[math.random(1, #positions)]) return true end  
      Esse script serve para teletransportar o player a determinadas positions com determinada AID em itens/pisos, seria possível deixa um script compacto para várias ocasiões? exemplo 
      <movevent type="StepIn" actionid="999" event="script" value="pvp"/>  
      <movevent type="StepIn" actionid="1000" event="script" value="food"/>  
      <movevent type="StepIn" actionid="1001" event="script" value="ice"/>  
       
       
       
      local pvp = {
      {x = 1020, y = 1200, z = 7},
      {x = 1200, y = 929, z = 7},
      {x = 1201, y = 1201, z = 7}
      }
       
      local food= {
      {x = 1000, y = 1000, z = 7},
      {x = 1000, y = 999, z = 7},
      {x = 1001, y = 1001, z = 7}
      }
       
      local ice= {
      {x = 1230, y = 1000, z = 7},
      {x = 1230, y = 999, z = 7},
      {x = 1001, y = 1001, z = 7}
      }
       
      -- "" function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
      doTeleportThing(cid, positions[math.random(1, #positions)])
      return true
      end ""
       
       
       
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo