Ir para conteúdo
  • Cadastre-se

(Resolvido)[Pedido] Npc que para quest


Ir para solução Resolvido por SoulSarti,

Posts Recomendados

Tfs 0.4

Boa Tarde, estou com esse script de npc para uma quest, onde gostaria que esse npc só teleportasse as vocations [1,2,3,4] pagando uma quantia [100kk] e proibisse as [5,6,7,8] e é possivel tambem adicionar uma "storage" para aquelas pessoas que ja completaram a quest que esse npc vai levar, não poder ir denovo? obs: [Se ele não completou a quest .. pode continuar indo, caso ele complete o npc não permite] .. Desde já agradeço a atenção :D

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
 
 
 
-- OTServ event handling functions start
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
-- OTServ event handling functions end
 
 
-- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions!
local travelNode = keywordHandler:addKeyword({'Quest Promotion'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Eu posso te levar para a Quest Promotion. Diga Quest Promotion. Eu cobrarei 30kk para a sua morte chegar!'})
    travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 0, cost = 0, destination = {x=1553, y=1825, z=4} })
    travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'Ok Obrigado Boa Escolha HAHA.'})
keywordHandler:addKeyword({'Quest Promotion'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Você quer ir para a Quest Promotion? Eu irei cobrar 30kk'})
 
-- Makes sure the npc reacts when you say hi, bye etc.
npcHandler:addModule(FocusModule:new())

if getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 2 or getPlayerVocation(cid) == 5 or getPlayerVocation(cid) == 6 then  
end

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.

Editado por Kyllini (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

@Kyllini segue o script do npc. Espero que esteja funcional! Abraços!

 

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 config = {
destino = {x=1553, y=1825, z=4}, -- para onde o player vai ser teleportado
storage = 1111, -- storage da quest. lembre-se de por o mesmo storage da quest que voce fez
permitir = {1,2,3,4},  --id das vocações que podem ir
money = 100000000 -- dinheiro (aqui está custando 100kk)
}
playerVocInfo = getVocationInfo(getPlayerVocation(cid))
    
    if msgcontains(msg, 'quest') or msgcontains(msg, 'promotion') then
        if(getPlayerStorageValue(cid, config.storage) ~= 1) and (isInArray(config.permitir, playerVocInfo.id)) then
            npcHandler:say("Eu posso te levar para a Quest Promotion. Eu cobrarei 100kk para a sua morte chegar! Diga {sim} caso queira desafiar seu destino, ou {nao}, se voce for um covarde!", cid)
            talkState[talkUser] = 1
        elseif getPlayerStorageValue(cid, config.storage) >= 1 then   -- caso ja tenha a quest feita
            npcHandler:say("Desculpe voce ja fez a Quest Promotion. Nao posso permitir que voce pise naquelas terras novamente.", cid)
            return true
        elseif not isInArray(config.permitir, playerVocInfo.id) then -- caso nao tenha a vocação permitida
            npcHandler:say("Desculpe, nao posso permitir que players com a sua voca\çao pisem nessas terras.", cid)
            return true
        end
    elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then
        if doPlayerRemoveMoney(cid, config.money) then
            npcHandler:say("HAHAHA Ja vou preparando o seu caixao, entao!", cid)
            doTeleportThing(cid, config.destino)
            talkState[talkUser] = 0
        else
            npcHandler:say("HAHAHAH! Quer enfrentar desafios mas nao tem nem um centavo no bolso? Saia daqui, charlatao!", cid)
            talkState[talkUser] = 0
        end
    elseif(msgcontains(msg, 'no') or msgcontains(msg, 'nao')) and talkState[talkUser] > 0 then
        npcHandler:say("La nao \é lugar para covardes, mesmo! HAHAH", cid)
        talkState[talkUser] = 0
    end
    

    return TRUE    
end

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

 

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo