@NdboHakai
Nada, só mudei pra necessitar falar o "viajar" que você quer, já que no outro, apesar de ter o "viajar", tinha a condição 'elseif', dai, se falasse um ou outro ia da no mesmo.
Só disse pra mudar todo o script porque antes eu tinha mandado só uma parte e agora mandei ele todo, alterando o que o outro usuário tinha mandado.
- Fórum
- OTServ
- Suporte
- Resolvidos
- [Resolvido] [Pedido] 3 Npcs [Acredito Médio]
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

info
Grupo: Campones
Registrado: 23/01/19
Posts: 37
Reputação: 0
Gênero: Masculino

5 minutos atrás, gabriel28 disse:@NdboHakai
Nada, só mudei pra necessitar falar o "viajar" que você quer, já que no outro, apesar de ter o "viajar", tinha a condição 'elseif', dai, se falasse um ou outro ia da no mesmo.
Só disse pra mudar todo o script porque antes eu tinha mandado só uma parte e agora mandei ele todo, alterando o que o outro usuário tinha mandado.
Atá, irei substituir e testar.
=======================
Não funcionou, deu no mesmo
Eu digitando [hi/hakai city] o meu personagem é teleportado.
Editado Março 3 por NdboHakai
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

13 minutos atrás, NdboHakai disse:Atá, irei substituir e testar.
=======================
Não funcionou, deu no mesmo
Eu digitando [hi/hakai city] o meu personagem é teleportado.
EDITADO (Reparei que do jeito que estava, o NPC não iria dizer ao jogador que precisaria ser premium pra ir pra cidade?
Ficaria assim:
elseif msgcontains(msg, "desert city") then if isPremium(cid) selfSay("OK!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO2) doSendMagicEffect(DESTINO2, 10) else selfSay("precisa ser premium", cid) end
Editado Março 3 por gabriel28
info
Grupo: Campones
Registrado: 23/01/19
Posts: 37
Reputação: 0
Gênero: Masculino

33 minutos atrás, gabriel28 disse:EDITADO (Reparei que do jeito que estava, o NPC não iria dizer ao jogador que precisaria ser premium pra ir pra cidade?
Ficaria assim:elseif msgcontains(msg, "desert city") then if isPremium(cid) selfSay("OK!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO2) doSendMagicEffect(DESTINO2, 10) else selfSay("precisa ser premium", cid) end
Não existe uma forma mais facil?, nessa forma se eu quisesse que todas as cidades fossem premium e se também eu tivesse vontade de por alguma free eu não conseguiria.
info
Grupo: Diretor
Registrado: 12/05/12
Posts: 818
Reputação: +578
Gênero: Masculino
Char no Tibia: [ADM] Night

Fiz como pediu, teste ai:
local DESTINO = {x=1024, y=1026, z=7} -- POS local DESTINO2 = {x=1358, y=669, z=6} -- POS local DESTINO3 = {x=592, y=829, z=7} -- POS local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} 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 getCreatureCondition(cid, CONDITION_INFIGHT) == false then if msgcontains(msg, "viajar") then selfSay("Posso te levar para: {Hakai City}, {Desert City}, {Ice City}.", cid) talkState[talkUser] = 1 end if talkState[talkUser] == 1 then if msgcontains(msg, "hakai city") then if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium. selfSay("OK!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) talkState[talkUser] = 0 else selfSay("Você não é premium account!", cid) end end if msgcontains(msg, "desert city") then if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium. selfSay("OK!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO2) doSendMagicEffect(DESTINO2, 10) talkState[talkUser] = 0 else selfSay("Você não é premium account!", cid) end end if msgcontains(msg, "ice city") then if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium. selfSay("OK!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO3) doSendMagicEffect(DESTINO3, 10) talkState[talkUser] = 0 else selfSay("Você não é premium account!", cid) end end end else selfSay("Desculpe, mas você está em batalha.", cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
info
Grupo: Visconde
Registrado: 26/08/10
Posts: 431
Reputação: +60
Gênero: Masculino
Char no Tibia: Gabriel Rookgaardian

@NdboHakai
Conseguiria, só você comparar como ta no script e como ta a forma que mandei, dai veria as diferenças e como adicionar uma nova cidade premium ou free.
info
Grupo: Campones
Registrado: 23/01/19
Posts: 37
Reputação: 0
Gênero: Masculino

5 minutos atrás, Yan Liima disse:Fiz como pediu, teste ai:
local DESTINO = {x=1024, y=1026, z=7} -- POS local DESTINO2 = {x=1358, y=669, z=6} -- POS local DESTINO3 = {x=592, y=829, z=7} -- POS local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} 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 getCreatureCondition(cid, CONDITION_INFIGHT) == false then if msgcontains(msg, "viajar") then selfSay("Posso te levar para: {Hakai City}, {Desert City}, {Ice City}.", cid) talkState[talkUser] = 1 end if talkState[talkUser] == 1 then if msgcontains(msg, "hakai city") then if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium. selfSay("OK!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) talkState[talkUser] = 0 else selfSay("Você não é premium account!", cid) end end if msgcontains(msg, "desert city") then if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium. selfSay("OK!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO2) doSendMagicEffect(DESTINO2, 10) talkState[talkUser] = 0 else selfSay("Você não é premium account!", cid) end end if msgcontains(msg, "ice city") then if isPremium(cid) == false then -- Altere o "false" para "true" caso precise de premium. selfSay("OK!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO3) doSendMagicEffect(DESTINO3, 10) talkState[talkUser] = 0 else selfSay("Você não é premium account!", cid) end end end else selfSay("Desculpe, mas você está em batalha.", cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
Nice, funcionou perfeitamente.
Estou na espera caso for ajudar, do npc 2
[Tem condições de desenvolver o npc 1 ou adicionar a função de quantidade do npc que o @Kuro o Shiniga fez?
info
Grupo: Colaborador
Registrado: 27/12/10
Posts: 271
Reputação: +87
Gênero: Masculino

Desculpa a demora brother, tava ocupado, aqui o script :
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 str = 192537 --- STORAGE QUE VAI GANHAR local temitens = {{id = 2160, count = 100}, {id = 8306, count = 3}, {id = 2400, count = 2}, {id = 5878, count = 100}, {id = 2494, count = 2}, {id = 2486, count = 2}, {id = 2491, count = 2}} --- ID DOS ITENS QUE PRECISA PRA TROCAR PELA STORAGE! function onItemPlayer(cid, itemid) for i = 1, #temitens do if getPlayerItemCount(cid, temitens[i].id) < temitens[i].count then return false end end return true end function removeItem(cid) for i in ipairs (temitens) do doPlayerRemoveItem(cid, temitens[i].id, temitens[i].count) end end if msgcontains(msg, "trocar") and onItemPlayer(cid, temitens) and getPlayerStorageValue(cid, str) < 1 then removeItem(cid) setPlayerStorageValue(cid, str, 1) doSendMagicEffect(getThingPos(cid), 12) selfSay("Storage Adicionada !", cid) else selfSay("Voce nao tem os itens necessarios ou ja tem a storage!", cid) end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
Aqui você muda a quantidade e o item que vai ser entregue ao NPC :
local temitens = {{id = 2160, count = 100}
Em "ID" é o id do item e em "COUNT" a quantidade !
info
Grupo: Campones
Registrado: 23/01/19
Posts: 37
Reputação: 0
Gênero: Masculino

2 minutos atrás, Kuro o Shiniga disse:Desculpa a demora brother, tava ocupado, aqui o script :
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 str = 192537 --- STORAGE QUE VAI GANHAR local temitens = {{id = 2160, count = 100}, {id = 8306, count = 3}, {id = 2400, count = 2}, {id = 5878, count = 100}, {id = 2494, count = 2}, {id = 2486, count = 2}, {id = 2491, count = 2}} --- ID DOS ITENS QUE PRECISA PRA TROCAR PELA STORAGE! function onItemPlayer(cid, itemid) for i = 1, #temitens do if getPlayerItemCount(cid, temitens[i].id) < temitens[i].count then return false end end return true end function removeItem(cid) for i in ipairs (temitens) do doPlayerRemoveItem(cid, temitens[i].id, temitens[i].count) end end if msgcontains(msg, "trocar") and onItemPlayer(cid, temitens) and getPlayerStorageValue(cid, str) < 1 then removeItem(cid) setPlayerStorageValue(cid, str, 1) doSendMagicEffect(getThingPos(cid), 12) selfSay("Storage Adicionada !", cid) else selfSay("Voce nao tem os itens necessarios ou ja tem a storage!", cid) end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
Aqui você muda a quantidade e o item que vai ser entregue ao NPC :
local temitens = {{id = 2160, count = 100}Em "ID" é o id do item e em "COUNT" a quantidade !
Irei testar, você poderia fazer o npc 2?
info
Grupo: Colaborador
Registrado: 27/12/10
Posts: 271
Reputação: +87
Gênero: Masculino

Npc 2 :
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 itenscoleta = {{id =5878 , count =100}, {id =5876 , count =100}, {id =5880 , count =100}} --- ITEMS QUE O NPC VAI PEDIR E A QUANTIDADE local str = { {mission1 = 58321, recompensa = 2160}, {mission2 = 58322, recompensa = 5922}, {mission3 = 58323, recompensa = 2400} } -- STORAGE QUE VAI GANHAR DEPOIS DE COMPLETAR A QUEST E A RECOMPENSA EM ITEM name = getCreatureName(cid) strstart = 998292 if msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) < 1 then selfSay("Ola" ..name.. ", tenho algumas missoes interessantes para voce, deseja saber quais sao?", cid) talkState[talkUser] = 1 elseif msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) == 1 then selfSay("Voce esta em missao, ou falta entregar os itens para mim!", cid) elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then selfSay("Tenho 5 missoes, voce tem que coletar a quatidade de 100 itens em cada missao, digite (primeira missao, segunda missao ou terceira missao) e escolha qual deseja!", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "primeira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[1].mission1) < 1 then selfSay("Colete 100 minotaur leather!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Start!") setPlayerStorageValue(cid, strstart, 1) elseif msgcontains(msg, "segunda missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[2].mission2) < 1 then selfSay("Colete 100 lizard leather!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Start!") setPlayerStorageValue(cid, strstart, 1) elseif msgcontains(msg, "terceira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[3].mission3) < 1 then selfSay("Colete 100 iron ore!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Start!") setPlayerStorageValue(cid, strstart, 1) end if msgcontains(msg, "primeira missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[1].id) >= itenscoleta[1].count then doPlayerRemoveItem(cid, itenscoleta[1].id, itenscoleta[1].count) selfSay("Que assim seja!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Completed!") setPlayerStorageValue(cid, strstart, -1) setPlayerStorageValue(cid, str.misson1, 1) doPlayerAddItem(cid, str[1].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA talkstate[talkUser] = 0 elseif msgcontains(msg, "segunda missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[2].id) >= itenscoleta[2].count then doPlayerRemoveItem(cid, itenscoleta[2].id, itenscoleta[2].count) selfSay("Que assim seja!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Completed!") setPlayerStorageValue(cid, strstart, -1) setPlayerStorageValue(cid, str.misson2, 1) doPlayerAddItem(cid, str[2].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA talkstate[talkUser] = 0 elseif msgcontains(msg, "terceira missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[3].id) >= itenscoleta[3].count then doPlayerRemoveItem(cid, itenscoleta[3].id, itenscoleta[3].count) selfSay("Que assim seja!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Completed!") setPlayerStorageValue(cid, strstart, -1) setPlayerStorageValue(cid, str.misson3, 1) doPlayerAddItem(cid, str[3].recompensa, 1) --- O VALOR 1 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA talkstate[talkUser] = 0 end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
O script esta todo comentado, leia os comentarios que você vai entender como configurar !
Não esqueça de marcar melhor resposta, para o post ser fechado!
abraço
Editado Março 3 por Kuro o Shiniga
info
Grupo: Campones
Registrado: 23/01/19
Posts: 37
Reputação: 0
Gênero: Masculino

30 minutos atrás, Kuro o Shiniga disse:Npc 2 :
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 itenscoleta = {{id =5878 , count =100}, {id =5876 , count =100}, {id =5880 , count =100}} --- ITEMS QUE O NPC VAI PEDIR E A QUANTIDADE local str = { {mission1 = 58321, recompensa = 2160}, {mission2 = 58322, recompensa = 5922}, {mission3 = 58323, recompensa = 2400} } -- STORAGE QUE VAI GANHAR DEPOIS DE COMPLETAR A QUEST E A RECOMPENSA EM ITEM name = getCreatureName(cid) strstart = 998292 if msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) < 1 then selfSay("Ola" ..name.. ", tenho algumas missoes interessantes para voce, deseja saber quais sao?", cid) talkState[talkUser] = 1 elseif msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) == 1 then selfSay("Voce esta em missao, ou falta entregar os itens para mim!", cid) elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then selfSay("Tenho 5 missoes, voce tem que coletar a quatidade de 100 itens em cada missao, digite (primeira missao, segunda missao ou terceira missao) e escolha qual deseja!", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "primeira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[1].mission1) < 1 then selfSay("Colete 100 minotaur leather!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Start!") setPlayerStorageValue(cid, strstart, 1) elseif msgcontains(msg, "segunda missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[2].mission2) < 1 then selfSay("Colete 100 lizard leather!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Start!") setPlayerStorageValue(cid, strstart, 1) elseif msgcontains(msg, "terceira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[3].mission3) < 1 then selfSay("Colete 100 iron ore!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Start!") setPlayerStorageValue(cid, strstart, 1) end if msgcontains(msg, "primeira missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[1].id) >= itenscoleta[1].count then doPlayerRemoveItem(cid, itenscoleta[1].id, itenscoleta[1].count) selfSay("Que assim seja!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Completed!") setPlayerStorageValue(cid, strstart, -1) setPlayerStorageValue(cid, str.misson1, 1) doPlayerAddItem(cid, str[1].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA talkstate[talkUser] = 0 elseif msgcontains(msg, "segunda missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[2].id) >= itenscoleta[2].count then doPlayerRemoveItem(cid, itenscoleta[2].id, itenscoleta[2].count) selfSay("Que assim seja!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Completed!") setPlayerStorageValue(cid, strstart, -1) setPlayerStorageValue(cid, str.misson2, 1) doPlayerAddItem(cid, str[2].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA talkstate[talkUser] = 0 elseif msgcontains(msg, "terceira missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[3].id) >= itenscoleta[3].count then doPlayerRemoveItem(cid, itenscoleta[3].id, itenscoleta[3].count) selfSay("Que assim seja!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Completed!") setPlayerStorageValue(cid, strstart, -1) setPlayerStorageValue(cid, str.misson3, 1) doPlayerAddItem(cid, str[3].recompensa, 1) --- O VALOR 1 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA talkstate[talkUser] = 0 end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())O script esta todo comentado, leia os comentarios que você vai entender como configurar !
Não esqueça de marcar melhor resposta, para o post ser fechado!
abraço
Irei testar
========================
Tem 2 problemas, o jogador pode fazer a mesma missão quantas vezes quiser.
E outro problema é que se o jogador digitar : hi/primeira missão , e não tiver os items não volta sinal de error, falando que ele ainda não está com os items da missão.
Editado Março 3 por NdboHakai
info
Grupo: Colaborador
Registrado: 27/12/10
Posts: 271
Reputação: +87
Gênero: Masculino

52 minutos atrás, NdboHakai disse:Irei testar
========================
Tem 2 problemas, o jogador pode fazer a mesma missão quantas vezes quiser.
E outro problema é que se o jogador digitar : hi/primeira missão , e não tiver os items não volta sinal de error, falando que ele ainda não está com os items da missão.
Desculpa, erro bobo, segue o script :
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 itenscoleta = {{id =5878 , count =100}, {id =5876 , count =100}, {id =5880 , count =100}} --- ITEMS QUE O NPC VAI PEDIR E A QUANTIDADE local str = { {mission1 = 58321, recompensa = 2160}, {mission2 = 58322, recompensa = 5922}, {mission3 = 58323, recompensa = 2400} } -- STORAGE QUE VAI GANHAR DEPOIS DE COMPLETAR A QUEST E A RECOMPENSA EM ITEM name = getCreatureName(cid) strstart = 988223 if msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) < 1 then selfSay("Ola" ..name.. ", tenho algumas missoes interessantes para voce, deseja saber quais sao?", cid) talkState[talkUser] = 1 elseif msgcontains(msg, "mission") and getPlayerStorageValue(cid, strstart) == 1 then selfSay("Voce esta em missao, ou falta entregar os itens para mim!", cid) elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then selfSay("Tenho 3 missoes, voce tem que coletar a quatidade de 100 itens em cada missao, digite (primeira missao, segunda missao ou terceira missao) e escolha qual deseja!", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "primeira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[1].mission1) < 1 then selfSay("Colete 100 minotaur leather!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Start!") setPlayerStorageValue(cid, strstart, 1) elseif msgcontains(msg, "segunda missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[2].mission2) < 1 then selfSay("Colete 100 lizard leather!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Start!") setPlayerStorageValue(cid, strstart, 1) elseif msgcontains(msg, "terceira missao") and talkState[talkUser] == 2 and getPlayerStorageValue(cid, strstart) < 1 and getPlayerStorageValue(cid, str[3].mission3) < 1 then selfSay("Colete 100 iron ore!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Start!") setPlayerStorageValue(cid, strstart, 1) elseif msgcontains(msg, "primeira missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[1].id) >= itenscoleta[1].count and getPlayerStorageValue(cid, str[1].mission1) < 1 then setPlayerStorageValue(cid, str[1].mission1, 1) doPlayerRemoveItem(cid, itenscoleta[1].id, itenscoleta[1].count) selfSay("Que assim seja!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Completed!") setPlayerStorageValue(cid, strstart, -1) doPlayerAddItem(cid, str[1].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA talkstate[talkUser] = 0 elseif msgcontains(msg, "segunda missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[2].id) >= itenscoleta[2].count and getPlayerStorageValue(cid, str[2].mission2) < 1 then doPlayerRemoveItem(cid, itenscoleta[2].id, itenscoleta[2].count) selfSay("Que assim seja!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Completed!") setPlayerStorageValue(cid, strstart, -1) setPlayerStorageValue(cid, str[2].mission2, 1) doPlayerAddItem(cid, str[2].recompensa, 100) --- O VALOR 100 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA talkstate[talkUser] = 0 elseif msgcontains(msg, "terceira missao") and getPlayerStorageValue(cid, strstart) == 1 and getPlayerItemCount(cid, itenscoleta[3].id) >= itenscoleta[3].count and getPlayerStorageValue(cid, str[3].mission3) < 1 then doPlayerRemoveItem(cid, itenscoleta[3].id, itenscoleta[3].count) selfSay("Que assim seja!", cid) doSendMagicEffect(getThingPos(cid), 12) doPlayerSendTextMessage(cid, 22, "Mission Completed!") setPlayerStorageValue(cid, strstart, -1) setPlayerStorageValue(cid, str[3].mission3, 1) doPlayerAddItem(cid, str[3].recompensa, 1) --- O VALOR 1 E O TANTO DE ITEM QUE VAI GANHAR NA RECOMPENSA talkstate[talkUser] = 0 else selfSay("voce ja completou essa missao!", cid) end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
info
Grupo: Diretor
Registrado: 12/05/12
Posts: 818
Reputação: +578
Gênero: Masculino
Char no Tibia: [ADM] Night





info
Grupo: Campones
Registrado: 23/01/19
Posts: 37
Reputação: 0
Gênero: Masculino
Desculpe, mas gostaria de saber oque você fez no npc? [Obs: o npc só precisava de 2 funções = Premium em cidade escolhida e Se possivel proibir viajar para alguma cidade sem falar "viajar" antes.
Editado Março 3 por NdboHakai