Ir para conteúdo
  • Cadastre-se

Posts Recomendados

.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)
Link para o post
Compartilhar em outros 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.

                                                                                                               destinyshield.gif.9f031b59b026058f32a1c50da92ebe2a.gif  mídias sociais  destinyshield.gif.02fca81ab0615e050b2bcefd8a73a2e8.gif

                                                                                                                            talk to me              

                                                                                                                               vídeos           

                                                                                             

                                                                                                            LOGONORMAL.png.815b40b04ec583be88d8a1e2626fe430.png

                                                                                                           

                               

Link para o post
Compartilhar em outros 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 para o post
Compartilhar em outros 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.

                                                                                                               destinyshield.gif.9f031b59b026058f32a1c50da92ebe2a.gif  mídias sociais  destinyshield.gif.02fca81ab0615e050b2bcefd8a73a2e8.gif

                                                                                                                            talk to me              

                                                                                                                               vídeos           

                                                                                             

                                                                                                            LOGONORMAL.png.815b40b04ec583be88d8a1e2626fe430.png

                                                                                                           

                               

Link para o post
Compartilhar em outros sites

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 LasseXeterno
      Então, estou tentando adicionar uma nova "race" no meu Ot de base Cyan, tentei seguir 3 tutoriais aqui do tibiaking, um sobre race, porém nos códigos do meu servidor não tem o constant.h e nem o monster.cpp. E o outro tutorial, eu fiz tudo que ele pediu e quando entrei no game para testar, funcionava os golpes e as imunidades, porém não aparecia o número do dano e nem a cor.  Usei esse tutorial como base: 
      Pois ele é derivado. E o outro tutorial que usei foi: 
      Porém nesse, não consegui achar a const.h, e quando fui nos arquivos do creaturescript e adicionei uma cor nova a "COLOR_FAIRY", quando abro o jogo, os pokemons que seriam teoricamente "fada", o que eu usei de teste foi a Clefable. A Clefable tomava IK e dava IK no seu atk do tipo fada. 
      Além de que, o meu erro principal é esse: Warning - Monsters::loadMonster] Unknown race type fairy. (data/monster/pokes/geracao 1/Clefable.xml)
       Pois como eu já disse, não consigo achar onde adicionar uma nova race.

    • Por yuriowns
      Salve rapazes, tranquilo? Preciso de ajuda pra colocar para os npc's que vendem pots verificarem quantos itens possuem no tile em que o player está e se tiver com +80 itens no sqm, o npc avisa e não vende nada até o player ir em um sqm com menos de 80 itens no chão.
       
    • Por A.Mokk
      .Qual servidor ou website você utiliza como base? 
      TFS 0.4
      Qual o motivo deste tópico? 
      Bom pessoal, a algumas semanas atras eu joguei um servidor que havia sistema de imbuimento sendo 8.60, no servidor se utilizava a spellwand para encantar as armas, os comandos eram dado no canal Imbuiment... Gostaria de saber se alguém teria como disponibilizar algum sistema de imbuimento, já procurei pra caramba aqui no fórum mas tudo que encontro é pra versões acima da que eu uso.
       
    • Por Mateus Robeerto
      Não sei se aqui é a área ou algum local para solicitar a alteração do email antigo... Não lembro mais a senha dele, nem a resposta secreta para acessar. Peço a algum administrador ou moderador para, por favor, alterar o email para o novo.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo