Ir para conteúdo
  • 0

Simple Task System Do Vodkart


oktober15

Pergunta

Posts Recomendados

  • 0

entendi, já fiz algo parecido usando storages, mas ao invés de passar no tile foi usado a storage para checar o rank (:

ambas tem múltiplas funções, então é isso? uma storage para todos os monstros, porém só vai passar no tile quem completou "X" task.

Link para o comentário
Compartilhar em outros sites

  • 0

nao faz isso nao Vordkat deixa eu fazer para ele.

 

ja to ate quase terminado e claro sem erros

Tranquilo, é uma modificação bem fácil, só fazer pelo npc (:

Link para o comentário
Compartilhar em outros sites

  • 0

eu sei ai e depois e so colocar uma verificaçao de storage no movemets e manda o script para ele.

 

 

E que deu vontade de fazer uma coisa mais simples sei la coisas de coisas gostasas de fazer.

Link para o comentário
Compartilhar em outros sites

  • 0

@VodKart

 

Vc pode fazer um task pro poketibia ou caso vc ja tenha post aki presiso mt mt

 

se posta agradeço desde ja e valendo rep +

 

não é só mudar o nome dos monstro? tipo

 

pikachu

ratata

geodude

 

tal?

Link para o comentário
Compartilhar em outros sites

  • 0

O npc do task apaga e coloca isso:

 

 

 

 

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

if (msgcontains(msg, 'task') or msgcontains(msg, 'TASK'))then

npcHandler:say("Me diga o nome do monstro que você deseja fazer a task!", cid)

talkState[talkUser] = 1

elseif talkState[talkUser] == 1 then

local msg = string.lower(msg)

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!', cid)

end

elseif (msgcontains(msg, 'receber') or msgcontains(msg, 'RECEBER')) then

if CheckTask(cid) then

for k, v in pairs(tasktabble) do

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

doPlayerAddExp(cid, v.exp)

doAddItemsFromList(cid,v.reward)

setPlayerStorageValue(cid , 41260, 1)

setPlayerStorageValue(cid, v.storage, "Finished")

setPlayerStorageValue(cid, v.storage_start, 0)

npcHandler:say('Obrigado pela sua ajuda, você recebeu: '..getItemsFromList(v.reward)..' por ter completado a task do '..k, cid)

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 (msgcontains(msg, 'sair') or msgcontains(msg, 'SAIR')) then

if CheckTask(cid) then

talkState[talkUser] = 2

for k, v in pairs(tasktabble) do

if getPlayerStorageValue(cid,v.storage_start) >= 1 then

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

for k, v in pairs(tasktabble) do

if getPlayerStorageValue(cid,v.storage_start) >= 1 then

setPlayerStorageValue(cid, v.storage_start, 0)

end

end

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())

 

 

 

Este script ja tinha no xtibia eu so adaptei para verificar uma storage e algumas coisinhas a mais.

 

 

Crie um arquivo chamado tptask.lua

 

 

function onUse(cid, item, frompos, item2, topos)

local tp = {z=1200, y=1200, z=9} -- Local onde esta o TP.
local pos = {z=1000, y=1000, z=9} -- Para onde o player será teletransportado quando entrar no TP (nesse caso ele será teletransportado diretamnte para o temple).

if item.uid == 2678 then ------mude se precisar-----
if getPlayerStorageValue(cid, 41260) == 1 then
doTeleportThing(cid,pos)
doSendMagicEffect(pos,10)
doPlayerSendTextMessage(cid,22,"Parabens voce chego ao seu destino")
end
return 1
end

 

agr adicione isso no action.xml

 

 

 

<action uniqueid="2678" script="tptask.lua" />

 

Agora va no seu rme e va no tp que queria clika duas vezes e coloca o unique id como nosso exemplo e 2678

 

 

flw

Editado por caotic
Link para o comentário
Compartilhar em outros sites

  • 0

poderia usar ao invés de "setPlayerStorageValue(cid , 41260, 1)" que limita o código usar:

 

setPlayerStorageValue(cid , 41260, (getPlayerStorageValue(cid, 41260)+1))

 

Ou seja, da para saber quantas task ele já terminou, e digamos que eu quero que só passe pelo piso quem já terminou umas 10 task, logo poderia usar

 

 

if getPlayerStorageValue(cid, 41260) >= 10 then
--bloco
end

Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 0

eu tbm queri fazer diferente vodkart tava bem facil eu queria tipo que limitasse o tp que conssumie a storage a cada pisada seria mais ou menos assim:

 

setPlayerStorageValue(cid, 2222, getPlayerStorageValue -1)

 

Assim comeria sempre um storage a cada passo ai exibia uma mensagem dizendo quanto resta.

 

Mais isso depende e do dono do pedido vamos ver o que ele acha

 

A Vodkart voce nao precisa usar todas aquelas Storage neste script para cada monstro.

Link para o comentário
Compartilhar em outros sites

  • 0

Pelo que eu vi na lib tem uma storage paa cada monstro

 

Mais nao precisa disso dava para vc usar metodolos menos vulgar

 

Mais nao tenho nada contra seu script fico perfect

Link para o comentário
Compartilhar em outros sites

  • 0

Pelo que eu vi na lib tem uma storage paa cada monstro

 

Mais nao precisa disso dava para vc usar metodolos menos vulgar

 

Mais nao tenho nada contra seu script fico perfect

 

poderia me dar um exemplo do que seria "metodolos"?

não me importo com críticas desde que elas sejam construtivas, e me parece ser interessante, desejo saber mais xD

de qual maneira ficaria melhor... como devo prosseguir, poderia me dar um help?

Link para o comentário
Compartilhar em outros sites

  • 0

Ta perfect

 

Eu que eu vo construir uma lib que melhora a storage para guardar esse tipo de arquivo mais ainda to pensando.

 

Brunoo deixa de preguissa kkk

Bem se sobrar um tempinho quem sabe eu nao faço umas funçoes interrasantes de pokemon e edito tu la na task

 

Claro se o Vodkart deixar....

Link para o comentário
Compartilhar em outros sites

  • 0

Ta perfect

 

Eu que eu vo construir uma lib que melhora a storage para guardar esse tipo de arquivo mais ainda to pensando.

 

Brunoo deixa de preguissa kkk

Bem se sobrar um tempinho quem sabe eu nao faço umas funçoes interrasantes de pokemon e edito tu la na task

 

Claro se o Vodkart deixar....

não precisa nem pedir :p

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...