Ir para conteúdo
  • 0

Npcs de quest(Drop e Kill) Diárias


Elias Palermo

Pergunta

Ola boa tarde. Tenho aqui dois npcs de quest, sendo um de Drop e um de Kill.
Eu uso eles para fazer as quests da historia pois assim só poderão ser concluídas apenas uma vez, porém estou precisando de sub quests também que seriam as diárias, alguém poderia tornar esses scripts para que sejam feitas novamente após 24 horas da ultima vez que completou?

 

Kill

Citar

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 task = {
["Sr Cartter"] = {{"Pidgey", 20}, {"Rattata", 15}},
}

if msgcontains(msg, 'Sim senhor') or msgcontains(msg, 'por que') then
if isMyTaskComplete(cid, getNpcCid()) then
selfSay("Logo voce sabera como esta berry pode te ajudar. Ate mais garoto!", cid)
doPlayerAddItem(cid, 11448, 1) --premio
local sto = getMyTaskSto(cid, getNpcCid())
setPlayerStorageValue(cid, sto, -1)
talkState[talkUser] = 0
return true
else
selfSay("Isso e normal, acontece com todos! O que te falta e confianca e coragem assim como todos os outros jovens treinadores, aqui tenho uma rarissima berry que podera ajudar seu Pokemon, mas para que eu possa te da-la voce tera que provar que a merece... Derrote {20 Pidgeys e 15 Rattatas}, voce pode fazer isto?", cid)
talkState[talkUser] = 2
end
elseif (msgcontains(msg, 'sim') or msgcontains(msg, 'Sim')) and talkState[talkUser] == 2 then
if getMyTaskSto(cid, getNpcCid()) ~= -1 then
selfSay("Ja terminou o que te mandei fazer?", cid)
talkState[talkUser] = 0
return true
end
local sto = getFreeTaskStorage(cid)
if sto == -1 then
selfSay("Voce nao pode pegar mais quests! sua lista de tarefas esta cheia com "..(maxTasks).." quests!", cid)
talkState[talkUser] = 0
return true
end

selfSay("Faca o seu melhor!", cid)
setStorageArray(cid, sto, task)
talkState[talkUser] = 0
return true
end

return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Drop

 

 

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 stg = 17760 -- storage para falar com o npc
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

if msgcontains(msg, 'quest') then
if getPlayerStorageValue(cid, stg) >= 12194 then
selfSay("Voce ja e um fez minha quest hoje!!", cid)
talkState[talkUser] = 0
else
selfSay("Consiga um egg de Caterpie para mim", cid)
talkState[talkUser] = 1
end
end
---------------------------------------------------------
if (msgcontains(msg, "yes") or msgcontains(msg, "sim")) and talkState[talkUser] == 1 then
if doPlayerRemoveItem(cid, 26778, 1) == TRUE then
selfSay("Obrigado, leve isso pra voce!", cid)
setPlayerStorageValue(cid, stg, 12194) -- para ele nao fazer a missao novamente
doPlayerAddExperience(cid,15000) -- experiencia
local bags = getPlayerSlotItem(cid, 3)
doAddContainerItem(bags.uid, 26777, 1) -- premio
else
selfSay("Voce ja tem o egg de Caterpie?.", cid)
talkState[talkUser] = 0
end
elseif (msgcontains(msg, "no") or msgcontains(msg, "nao")) and talkState[talkUser] == 1 then
selfSay("Entao va busca-lo", cid)
talkState[talkUser] = 0
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

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

7 respostass a esta questão

Posts Recomendados

  • 0

Ta bem confuso esse script ai, mas posso tentar te ajudar, para voce conseguir fazer sozinho os outros depois: (essa eh a parte que esta o problema)

 

 

 

if msgcontains(msg, 'quest') then
if getPlayerStorageValue(cid, stg) >= 12194 then
selfSay("Voce ja e um fez minha quest hoje!!", cid)
talkState[talkUser] = 0
else
selfSay("Consiga um egg de Caterpie para mim", cid)
talkState[talkUser] = 1
end
end
---------------------------------------------------------
if (msgcontains(msg, "yes") or msgcontains(msg, "sim")) and talkState[talkUser] == 1 then
if doPlayerRemoveItem(cid, 26778, 1) == TRUE then
selfSay("Obrigado, leve isso pra voce!", cid)
setPlayerStorageValue(cid, stg, 12194) -- para ele nao fazer a missao novamente
doPlayerAddExperience(cid,15000) -- experiencia
local bags = getPlayerSlotItem(cid, 3)
doAddContainerItem(bags.uid, 26777, 1) -- premio
else
selfSay("Voce ja tem o egg de Caterpie?.", cid)
talkState[talkUser] = 0
end
elseif (msgcontains(msg, "no") or msgcontains(msg, "nao")) and talkState[talkUser] == 1 then
selfSay("Entao va busca-lo", cid)
talkState[talkUser] = 0
end
end

 

Ali em azul, coloque > os.time()

Ali em amarelo, coloque os.time() + 1*24*60*60

 

Ou seja, to colocando um valor padrao(os.time()) e adicionando o tempo(em segundos) de um dia. Se ainda tiver tempo, fala q a quest ja ta feita. Se tiver só o valor, eh pq o tempo ja passou e voce pode fazer de novo.

 

 

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

  • 0
Em 13/04/2016 at 21:25, miguel223 disse:

Ta bem confuso esse script ai, mas posso tentar te ajudar, para voce conseguir fazer sozinho os outros depois: (essa eh a parte que esta o problema)

 

 

  Mostrar conteúdo oculto

if msgcontains(msg, 'quest') then
if getPlayerStorageValue(cid, stg) >= 12194 then
selfSay("Voce ja e um fez minha quest hoje!!", cid)
talkState[talkUser] = 0
else
selfSay("Consiga um egg de Caterpie para mim", cid)
talkState[talkUser] = 1
end
end
---------------------------------------------------------
if (msgcontains(msg, "yes") or msgcontains(msg, "sim")) and talkState[talkUser] == 1 then
if doPlayerRemoveItem(cid, 26778, 1) == TRUE then
selfSay("Obrigado, leve isso pra voce!", cid)
setPlayerStorageValue(cid, stg, 12194) -- para ele nao fazer a missao novamente
doPlayerAddExperience(cid,15000) -- experiencia
local bags = getPlayerSlotItem(cid, 3)
doAddContainerItem(bags.uid, 26777, 1) -- premio
else
selfSay("Voce ja tem o egg de Caterpie?.", cid)
talkState[talkUser] = 0
end
elseif (msgcontains(msg, "no") or msgcontains(msg, "nao")) and talkState[talkUser] == 1 then
selfSay("Entao va busca-lo", cid)
talkState[talkUser] = 0
end
end

 

Ali em azul, coloque > os.time()

Ali em amarelo, coloque os.time() + 1*24*60*60

 

Ou seja, to colocando um valor padrao(os.time()) e adicionando o tempo(em segundos) de um dia. Se ainda tiver tempo, fala q a quest ja ta feita. Se tiver só o valor, eh pq o tempo ja passou e voce pode fazer de novo.

 

 

Vey só um probleminha, quando eu faço outro npc com o mesmo script ele fica como se tivesse codificado na mesma quest e então eu não consigo fazer a quest do outro npc. Uma coisa que percebi no primeiro script no de quest kill é que não tem storage e então não tem função pra por o tempo também, tem como adicionar ambos para fazer um sistema de cada? Um de storage e um de tempo.

 

O de quest de drop já está funcionando de boa, só o de kill mesmo que ta com esse probleminha.

Editado por Elias Palermo
Achei o bug depois.
Link para o comentário
Compartilhar em outros sites

  • 0
Em 16/4/2016 at 10:08, Elias Palermo disse:

Esquece, já resolvi kkkk

 

amigo poderia me ajudar? to a mt tempo procurando essa script mas sempre fica bugada no meu pda...

ele manda matar tudo bem, ate fica contando os pokes mas quando vc vai falar com ele pra reportar ai ele n fala nada... se voltar a falar a mesma coisa q no começo nesse caso "Sim senhor ou por que" ele só manda denovo pra matar os bixos sem pegar o premio nem nada... teria como compartilhar o seu script feito? pq ja testei tds e sempre acontece o mesmo erro

Link para o comentário
Compartilhar em outros sites

  • 0
Em 17/04/2016 at 15:16, Josegvb disse:

 

amigo poderia me ajudar? to a mt tempo procurando essa script mas sempre fica bugada no meu pda...

ele manda matar tudo bem, ate fica contando os pokes mas quando vc vai falar com ele pra reportar ai ele n fala nada... se voltar a falar a mesma coisa q no começo nesse caso "Sim senhor ou por que" ele só manda denovo pra matar os bixos sem pegar o premio nem nada... teria como compartilhar o seu script feito? pq ja testei tds e sempre acontece o mesmo erro

O que eu consegui resolver foi a questão do npc de quest de drop, que era só mudar o storage de falar com npc.

Eu também estou com problema do de task, não consigo resolver por nada :(

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...