Ir para conteúdo
  • Cadastre-se

(Resolvido)Npc que da montaria por item


Ir para solução Resolvido por Wakon,

Posts Recomendados

Bom, queria um npc que da uma montaria por um item.


Ao player falar hi, o npc ira dizer
Npc: Olá Player, bem-vindo a minha casa. Em que posso ajudar?
caso o player souber algo a respeito, ele ira falar isso abaixo.
Player: kevnan
Então o npc ira dizer para o player.
Npc: Ah você conhece meu filho Kevnan? Que ótimo conhecer você. A vários dias ele saiu em uma jornada perigosa e até então não tenho notícias dele, você sabe algo a respeito?
Então se ele souber algo a respeito, ira dizer
Player: Eu te amo mae, desculpe minha teimosia..
Então o npc ira dizer para o player.
Npc: Você Quer algo aqui? Meu filho usava lindas botas, A vários dias ele saiu em uma jornada perigosa e até então não tenho notícias dele.
Então o player ira dizer.
Player: cavalo
Se o player tiver o item de id: 11367 ganha a montaria de id: 23, e o npc ira falar
Npc: Nossa, você é realmente um guerreiro muito forte. Muito obrigado por vingar a morte do meu filho, como prometido aqui está a recompensa, o cavalo de fogo, este cavalo pertencia ao meu filho, sem dúvidas o melhor cavalo já visto, você merece. Caso você perda o cavalo, você poderá recuperar com um novo coração de ethershreck.
Mas caso ele não tenha o item de id: 11367, o npc ira dizer.
Npc: Traga-me o coração do monstro que derrotou meu filho que irei dar um brinde que meu filho gostava muito.
Bom, é isso.
obrigado !!

Link para o post
Compartilhar em outros sites

Script em "Data/npc/scripts":


local t = {
itemneed = 11367, -- Item necessário.
mount = 23 -- MountID.
}

local storage = 55501 -- Storage, só mexa se necessário.

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)
    player = Player(cid)
    if(not npcHandler:isFocused(cid)) then
        return false
    end
    msg = msg:lower();
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    if msgcontains(msg, 'kevnan') then
       if player:getStorageValue(storage) < 1 then
          npcHandler:say("Ah você conhece meu filho Kevnan? Que ótimo conhecer você. A vários dias ele saiu em uma jornada perigosa e até então não tenho notícias dele, você sabe algo a respeito?", cid)
          talkState[talkUser] = 1
       else
          npcHandler:say("Você por aqui novamente? Você já me ajudou vingando meu filho e sou muito grato por isso.", cid)
          talkState[talkUser] = 0
       end
    elseif msgcontains(msg, 'yes') then
       if talkState[talkUser] == 1 then
          npcHandler:say('Você quer algo aqui? Meu filho usava lindas botas, a vários dias ele saiu em uma jornada perigosa e até então não tenho notícias dele.', cid)
          talkState[talkUser] = 2
       end
    elseif msgcontains(msg, 'cavalo') then
       if talkState[talkUser] == 2 then
          if player:getItemCount(t.itemneed) >= 1 then
             npcHandler:say('Nossa, você é realmente um guerreiro muito forte. Muito obrigado por vingar a morte do meu filho, como prometido aqui está a recompensa, o cavalo de fogo, este cavalo pertencia ao meu filho, sem dúvidas o melhor cavalo já visto, você merece. Caso você perda o cavalo, você poderá recuperar com um novo coração de ethershreck.', cid)
             doSendMagicEffect(getPlayerPosition(cid), 13)
             player:addMount(t.mount)
             player:setStorageValue(storage, 1)
             doPlayerRemoveItem(cid, t.itemneed, 1)
             talkState[talkUser] = 0
          else
             npcHandler:say('Traga-me o coração do monstro que derrotou meu filho que irei dar um brinde que meu filho gostava muito.', cid)
             talkState[talkUser] = 0
          end
       end
    end
end    

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


XML:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Npc_name" script="nome_do_script.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="9" head="20" body="30" legs="40" feet="50" corpse="6080"/>
    <parameters>
        <parameter key="message_greet" value="Ola |PLAYERNAME|, bem-vindo a minha casa. Em que posso ajudar?"/>
        <parameter key="message_farewell" value="Good bye."/>
    </parameters>
</npc>

Se tiver algum erro ou faltar algo, me avise :).

Link para o post
Compartilhar em outros sites
  • Solução

TFS 0.4

Como tem mount achei que fosse TFS 1.0, kk.

Troquei as funções do script, testa ai:

local t = {

itemneed = 11367, -- Item necessário.

mount = 23 -- MountID.

}

local storage = 55501 -- Storage, só mexa se necessário.

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

    msg = msg:lower();

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    if msgcontains(msg, 'kevnan') then

       if getPlayerStorageValue(cid, storage) < 1 then

          npcHandler:say("Ah você conhece meu filho Kevnan? Que ótimo conhecer você. A vários dias ele saiu em uma jornada perigosa e até então não tenho notícias dele, você sabe algo a respeito?", cid)

          talkState[talkUser] = 1

       else

          npcHandler:say("Você por aqui novamente? Você já me ajudou vingando meu filho e sou muito grato por isso.", cid)

          talkState[talkUser] = 0

       end

    elseif msgcontains(msg, 'yes') then

       if talkState[talkUser] == 1 then

          npcHandler:say('Você quer algo aqui? Meu filho usava lindas botas, a vários dias ele saiu em uma jornada perigosa e até então não tenho notícias dele.', cid)

          talkState[talkUser] = 2

       end

    elseif msgcontains(msg, 'cavalo') then

       if talkState[talkUser] == 2 then

          if doPlayerRemoveItem(cid, t.itemneed, 1) then

             npcHandler:say('Nossa, você é realmente um guerreiro muito forte. Muito obrigado por vingar a morte do meu filho, como prometido aqui está a recompensa, o cavalo de fogo, este cavalo pertencia ao meu filho, sem dúvidas o melhor cavalo já visto, você merece. Caso você perda o cavalo, você poderá recuperar com um novo coração de ethershreck.', cid)

             doSendMagicEffect(getPlayerPosition(cid), 13)

             doPlayerAddMount(cid, t.mount)

             setPlayerStorageValue(cid, storage, 1)

             talkState[talkUser] = 0

          else

             npcHandler:say('Traga-me o coração do monstro que derrotou meu filho que irei dar um brinde que meu filho gostava muito.', cid)

             talkState[talkUser] = 0

          end

       end

    end

end    

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Link para o post
Compartilhar em outros sites
  • 2 months later...

Olá, eu adicionei o script, mas quando eu vou falar com ele, ele só fala a primeira mensagem "Ola Otin, bem-vindo a minha casa. Em que posso ajudar?

 

Já alterei a fala para "    if msgcontains(msg, 'help') then" e também não fala nada..

 

Agradeço

 

TFS 0.4 8.71

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