travelnpc.xml
<?xml version="1.0"?>
<npc name="Travel NPC" script="data/npc/scripts/travelnpc.lua" walkinterval="1000" floorchange="0">
<health now="100" max="100"/>
<look type="155" head="115" body="76" legs="76" feet="83" addons="3"/>
<parameters>
<parameter key="message_greet" value="Ola |PLAYERNAME|. Posso levar voce para {carlin} ou {thais}!" />
</parameters>
</npc>
travelnpc.lua
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 a = {
levelcidade1 = 30, -- Level que necessita para ir na cidade 1
levelcidade2 = 60, -- Level que necessita para ir na cidade 2
itemcidade1 = 2392, -- Item que necessita para viajar para cidade 1
itemcidade2 = 2190, -- Item que necessita para viajar para cidade 2
goldcidade1 = 1000, -- Gold que precisa para viajar para cidade 1
goldcidade2 = 2000, -- Gold que precisa para viajar para cidade 2
poscidade1 = {x = 168, y = 57, z = 7}, -- Posição da cidade 1
poscidade2 = {x = 168, y = 58, z = 7}, -- Posição da cidade 2
}
if msgcontains(msg, 'carlin') then
if getPlayerItemCount(cid, a.itemcidade1) >= 1 then
if getPlayerLevel(cid) >= a.levelcidade1 then
if getPlayerMoney(cid) >= a.goldcidade1 then
doTeleportThing(cid, a.poscidade1)
doPlayerRemoveMoney(cid, a.goldcidade1)
selfSay('Você foi teleportado para carlin!', cid)
else
selfSay('Você precisa de '..a.goldcidade1..' gold coins para viajar para {carlin}.', cid)
end
else
selfSay('Você precisa ser '..a.levelcidade1..' para viajar para {carlin}.', cid)
end
else
selfSay('Você precisa de uma '..getItemNameById(a.itemcidade1)..' para ir até {carlin}!', cid)
end
end
if msgcontains(msg, 'thais') then
if getPlayerItemCount(cid, a.itemcidade2) >= 1 then
if getPlayerLevel(cid) >= a.levelcidade2 then
if getPlayerMoney(cid) >= a.goldcidade2 then
doTeleportThing(cid, a.poscidade2)
doPlayerRemoveMoney(cid, a.goldcidade2)
selfSay('Você foi teleportado para thais!', cid)
else
selfSay('Você precisa de '..a.goldcidade2..' gold coins para viajar para {thais}.', cid)
end
else
selfSay('Você precisa ser '..a.levelcidade2..' para viajar para {thais}.', cid)
end
else
selfSay('Você precisa de uma '..getItemNameById(a.itemcidade2)..' para ir até {thais}!', cid)
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Eu testei e funcionou, caso algum erro basta avisar ![]()






info
Grupo: Campones
Registrado: 13/12/13
Posts: 19
Reputação: +6
Olá.
Andei tentando aqui um sistema de NPC para o barco do meu projeto, tentei pegar alguns scripts que encontrei pelo fórum e editar adicionando o que eu queria, mas acabei falhando completamente, então estou aqui pedindo á alguém que me ajude, se for possível.
Seguinte, gostaria de um NPC da seguinte forma :
1. Ele dá várias opções de locais que você pode teleportar.
Ex: Olá, posso te levar á diversos lugares. Diga travel.
*PLAYER DIZ TRAVEL*
Posso te levar á Cidade1 e Cidade2. Escolha seu destino.
2. O player irá escolher o local, porém o NPC só irá teleportá-lo caso ele tenha :
Um certo item.
(CADA DESTIDO TERÁ UM CERTO ITEM PARA PODER TELEPORTAR.)
(ex: CIDADE1 = Fire Sword, CIDADE2 = Wand of Vortex.)
Um certo nível.
(CADA DESTINO TERÁ UM CERTO NÍVEL PARA PODER TELEPORTAR.)
(ex: CIDADE1 = Lv.30, CIDADE2 = Lv.60)
Uma certa quantidade de gold.
(CADA DESTINO TERÁ UM CERTO VALOR PARA PODER TELEPORTAR.)
(ex: CIDADE1 = 1000 gold, CIDADE2 = 2000 gold.)
~
É basicamente isso, lembrando de uma coisa:
APÓS TELEPORTAR, O ITEM NÃO É CONSUMIDO, ELE CONTINUA NA BP.
(O gold é consumido, claro.)