Ir para conteúdo

Featured Replies

Postado

NPC:

 

Boat.xml

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Dederin" script="boat.lua" walkinterval="0">
    <health now="100" max="100"/>
    <look type="459"/>
    <parameters>
        <parameter key="module_shop" value="1"/>
        <parameter key="message_greet" value="Olá, |PLAYERNAME|! Eu posso te levar para {Assassin Tower}."/>
    </parameters>
</npc>

Boat.lua

Spoiler

local assassintower = {x=1015, y=885, z=7}
local itemid = 2144
local quantidade = 1
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 msgcontains(msg, "assassin tower") then
        selfSay("Voce tem certeza que deseja ir ate Assassin Tower?", cid)
        talkState[talkUser] = 1
    elseif (msgcontains(msg, "yes") and talkState[talkUser] == 1) and (getPlayerItemCount(cid, itemid) >= quantidade) then
        doPlayerRemoveItem(cid, itemid, quantidade)
        doTeleportThing(cid, assassintower)
        selfSay("Ate mais!", cid)
        talkState[talkUser] = 0
    elseif (msgcontains(msg, "yes") and talkState[talkUser] == 1) and (getPlayerItemCount(cid, itemid) <= quantidade) then
        selfSay("Desculpe, voce precisa ter nomeitem para passar.", cid)
        talkState[talkUser] = 0
    end
   return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Editado por So volto tarde
correção npc, retirando a citação (veja o histórico de edições)

  • Respostas 8
  • Visualizações 1.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • 2- Da para fazer da seguinte forma e que eu consegui fazer foi:  O player passa pelo tile perde o item, porém não é teleportado, da para você colocar um portal logo na frente do tile para o playe

Postado
33 minutos atrás, So volto tarde disse:

NPC:

 

Boat.xml

  Mostrar conteúdo oculto

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Dederin" script="boat.lua" walkinterval="0">
    <health now="100" max="100"/>
    <look type="459"/>
    <parameters>
        <parameter key="module_shop" value="1"/>
        <parameter key="message_greet" value="Olá, |PLAYERNAME|! Eu posso te levar para {Assassin Tower}."/>
    </parameters>
</npc>

Boat.lua

  Mostrar conteúdo oculto

 -- Adicione a posição dos locais aqui, seguindo o modelo abaixo:
local assassintower = {x=254, y=393, z=7}
local itemid = 2144 -- id do item
 
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 msgcontains(msg, "travel") then
        selfSay("Eu posso te levar para {Assassin Tower}, {exemplo1} e {exemplo2}.", cid) -- ao colocar as palavras entre chaves "{}", as mesmas sairão na cor azul dentro do jogo
    end
    
    if msgcontains(msg, "assassin tower") then
        selfSay("Voce realmente quer viajar para {Assassin Tower}? Eu te cobrarei o item """, cid)
        talkState[talkUser] = 9
    elseif msgcontains(msg, "yes") and talkState[talkUser] == 9 then
        if not isPlayerPzLocked(cid) then
            doPlayerRemoveItem(cid, itemid, 1) -- o "1" é a quantidade caso queira mudar
            doSendMagicEffect(getThingPos(cid), 10) -- efeito no player no boat atual
            npcHandler:releaseFocus(cid)
            doTeleportThing(cid, assassintower)
            doSendMagicEffect(assassintower, 10) -- efeito no player ao chegar no destino
        else
            selfSay("Voce deve estar sem pz locked!", cid)
        end
        elseif getPlayerItemCount(cid, itemid) == 0 then -- caso queira adicionar uma quantia ao item necessário para viajar, uma alteração terá de ser feita aqui
            selfSay("Desculpe, voce nao tem o item!", cid)
        end
    talkState[talkUser] = 0
    end
    
   return true
end
 
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

  Mostrar conteúdo oculto

function onStepIn(cid, item, position, fromPosition)

    local id,amount = 2419,1 -- id, quantidade para poder passar pelo tile

    local lugar = {x=0, y=0, z=0}
    
    if not doPlayerRemoveItem(cid, id, amount) then
    
        doTeleportThing(cid, lugar)
        
        doPlayerSendTextMessage(cid, 25, "Você só pode passar se tiver " .. amount .. " " .. getItemNameById(id) .. ".")
        
        doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
        
        return true
        
    end
    
    return true
    
end

 

Ele vai teleportar com esse script ai seu mas não vai pedir item e nem remover brother ^^ 

Postado
42 minutos atrás, Nysman disse:

Ele vai teleportar com esse script ai seu mas não vai pedir item e nem remover brother ^^ 

NPC corrigido, reformulação movement:

Spoiler

local posic = {x=1017, y=884, z=7} --- posição de teleporte
local itemid = 2144
local quantidade = 1
function onStepIn(cid, item, position, fromPosition, toPosition)
    if (getPlayerItemCount(cid, itemid) >= quantidade) then
        doPlayerRemoveItem(cid, itemid, quantidade)
        doTeleportThing(cid, posic)
        doSendMagicEffect(posic,10)
    else
        doTeleportThing(cid, fromPosition)
        doPlayerSendCancel(cid, "Você não tem o item.")
end
return true
end

 

Postado
  • Autor
Agora, Thony D. Serv disse:

Mantém 0 que ele não irá cobrar nada

é q eu n queria q fosse tipo barco, o cara iria entregar o item de surpresa e seria teleportado, com o price, alem da frase doq o npc pede, aparece tipo a mensagem "0 golds" algo assim

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 520k

Informação Importante

Confirmação de Termo