Ir para conteúdo

Featured Replies

Postado

.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. 

 

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

  • 4 weeks later...
Postado

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.

Postado
  • Autor
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.

Postado
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.

Participe da conversa

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

Visitante
Responder

Quem Está Navegando 0

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

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo