Tópico Movido
Este tópico foi movido de "OTServ → Scripting → Downloads Scripts → NPCs, monsters e raids"
para "OTServ → Scripting → Suporte Scripting".
info
Grupo: Administrador
Registrado: 08/07/05
Posts: 5.8k
Reputação: +1.4k
Gênero: Outro

Tópico Movido
Este tópico foi movido de "OTServ → Scripting → Downloads Scripts → NPCs, monsters e raids"
para "OTServ → Scripting → Suporte Scripting".
info
Grupo: Campones
Registrado: 03/05/15
Posts: 98
Reputação: +4

up
info
Grupo: Visconde
Registrado: 03/02/10
Posts: 322
Reputação: +98
Gênero: Masculino
Char no Tibia: Miguel Absy

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 Abril 12 por miguel223
info
Grupo: Campones
Registrado: 03/05/15
Posts: 98
Reputação: +4

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)
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 Abril 16 por Elias Palermo
Achei o bug depois.
info
Grupo: Campones
Registrado: 03/05/15
Posts: 98
Reputação: +4

Esquece, já resolvi kkkk
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
info
Grupo: Campones
Registrado: 03/05/15
Posts: 98
Reputação: +4

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 ![]()
info
Grupo: Campones
Registrado: 03/05/15
Posts: 98
Reputação: +4
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
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 Abril 15 por Elias Palermo