Ir para conteúdo
  • 0

[Resolvido] Npc que da item e depois teleporta.


Pergunta

Boa tarde!

Tenho uma ideia de npcs que preciso implementar no meu servidor para que eu possa prosseguir nas edições da história.

Ele funcionaria da seguinte forma:

 

Primeiro Npc.

Ao falar com esse npc ele me da 3 opções de companhias que existem dentro do meu servidor (Blue Falcon, Gold Hawk e Black Sword).

E o player tem que escolher uma dessas pra prosseguir, após escolher ele seria transportado para a companhia que escolheu, então seriam 3 locais diferentes. E com isso ele também ganharia um item(Esse item não pode ser retirado da bag, seria como o id card da companhia dele)

 

Blue Falcon: Local = X + Blue Falcon Card

Gold Hawk: Local = Y + Gold Hawk Card

Black Sword: Local = Z + Black Sword Card

 

Segundo Npc.

Ao falar com esse npc ele vai pedir o ID card que o player ganhou no outro npc para que ele possa transportar o jogador para uma area.

E lembrando que esse item não pode sair da bag, então o npc não vai remove-lo.

Obs: A minha intenção é criar vários desse segundo npc para que haja uma variedade de missões diferentes para cada companhia, então seria melhor um script aonde eu pudesse apenas trocar o id do item que pede e o local que vai transportar.

 

Se servir de base tenho aqui um npc de teleport comum. (No xml a ideia já está implementada na fala do npc)

 

Account Clerk.xml

Citar

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Account Clerk" script="Account Clerk.lua" walkinterval="0" floorchange="0" speed="0" lookdir="0">
  <health now="100" max="100" />
  <look type="1960" head="58" body="43" legs="38" feet="76" addons="0" />
  <parameters>


    <parameter key="message_greet" value="Bem vindo ao centro online Digimon World |PLAYERNAME|, esse servico e para aqueles que viajam para o mundo digital. Vejo que e a sua primeira vez aqui, entao para que eu possa fazer o seu registro preciso que voce escolha uma entre nossas 3 companhias que existem dentro do Digimundo. Sao elas:[Blue Falcon] especializada em Digimon do tipo DATA, [Gold Hawk] especializada em Digimon do tipo VACCINA e por ultimo [Black Sword] especializada em Digimon do tipo VIRUS. Qual a sua escolha?" />


    <parameter key="message_farewell" value="Que falta de educacao, volte aqui e termine seu registro!" />
    <parameter key="message_walkaway" value="Que falta de educacao, volte aqui e termine seu registro!" />
  </parameters>
</npc>

 

Account Clerk.lua

Citar

local DESTINO = {x = 1027, y = 1001, z = 6} -- POSIÇÃO DE DESTINO

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, "sim") or msgcontains(msg, "yes") then
      selfSay("Boa sorte, ate logo!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO)
      doSendMagicEffect(DESTINO, 10)
   elseif msgcontains(msg, "nao") or msgcontains(msg, "no") then
      selfSay("Tem certeza?", cid)
   end
   return true
end
 
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 Preciso muito disso, se alguém puder me ajudar ficarei muito grato!

-Base PDA 8.54

Editado por eliaspalermo
Link para o comentário
https://xtibia.com/forum/topic/249097-resolvido-npc-que-da-item-e-depois-teleporta/
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Primeiro npc :

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 

strBlueFalcon = 189860 -- não mexer
strGoldHawk = 189861 -- não mexer
strBlackSword = 189862 -- não mexer

posBlueFalcon = {x=80, y=348, z=7} -- posição Blue Falcon
posGoldHawk = {x=75, y=340, z=7} --- posição gold hawk
posBlackSword = {x=84, y=339, z=7} --- posição black sword


iditemfalcon = 2160 -- id do item que ganha quando escolhe a companhias falcon
iditemhawk = 2160  -- id do item que ganha quando escolhe a companhias hawk
iditemsword = 2160 -- id do item que ganha quando escolhe a companhias sword

if msgcontains(msg, "mission") then
selfSay("Ola aventureiro, tenho 3 companhias que voce pode escolher, (Blue Falcon, Gold Hawk e Black Sword) qual voce deseja?", cid)
talkState[talkUser] = 1

elseif msgcontains(msg, "blue falcon") and talkState[talkUser] == 1 and getPlayerStorageValue(cid, strBlueFalcon) < 1 and getPlayerStorageValue(cid, strGoldHawk) < 1 and getPlayerStorageValue(cid, strBlackSword) < 1 then
setPlayerStorageValue(cid, strBlueFalcon, 1)
doTeleportThing(cid, posBlueFalcon)
doSendMagicEffect(getThingPos(cid), 10)
doPlayerAddItem(cid, iditemfalcon, 1)
selfSay("Que assim seja!", cid)


elseif msgcontains(msg, "gold hawk") and talkState[talkUser] == 1 and getPlayerStorageValue(cid, strBlueFalcon) < 1 and getPlayerStorageValue(cid, strGoldHawk) < 1 and getPlayerStorageValue(cid, strBlackSword) < 1 then
setPlayerStorageValue(cid, strGoldHawk, 1)
doTeleportThing(cid, posGoldHawk)
doSendMagicEffect(getThingPos(cid), 10)
doPlayerAddItem(cid, iditemhawk, 1)
selfSay("Que assim seja!", cid)

elseif msgcontains(msg, "black sword") and talkState[talkUser] == 1 and getPlayerStorageValue(cid, strBlueFalcon) < 1 and getPlayerStorageValue(cid, strGoldHawk) < 1 and getPlayerStorageValue(cid, strBlackSword) < 1 then
setPlayerStorageValue(cid, strBlackSword, 1)
doTeleportThing(cid, posBlackSword)
doSendMagicEffect(getThingPos(cid), 10)
doPlayerAddItem(cid, iditemsword, 1)
selfSay("Que assim seja!", cid)

else

selfSay("Voce ja escolheu seu destino", cid)

end
return true
end





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

 

Segundo npc

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 

strBlueFalcon = 189860 -- não mexer
strGoldHawk = 189861 -- não mexer
strBlackSword = 189862 -- não mexer

posBlueFalcon = {x=80, y=348, z=7} -- posição Blue Falcon
posGoldHawk = {x=75, y=340, z=7} --- posição gold hawk
posBlackSword = {x=84, y=339, z=7} --- posição black sword


iditemfalcon = 2160 -- id do item que precisa para companhias falcon
iditemhawk = 2160  -- id do item que precisa para companhias hawk
iditemsword = 2160 -- id do item que precisa para companhias sword

if msgcontains(msg, "mission") and getPlayerStorageValue(cid, strBlueFalcon) == 1 and getPlayerItemCount(cid, iditemfalcon) == 1 then
selfSay("voce e da companhia Blue falcon, deseja ir para a ilha?", cid)
talkState[talkUser] = 1


elseif msgcontains(msg, "yes") and getPlayerStorageValue(cid, strBlueFalcon) == 1 and talkState[talkUser] == 1 then
selfSay("que assim seja", cid)
doTeleportThing(cid, posBlueFalcon)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0

elseif msgcontains(msg, "mission") and getPlayerStorageValue(cid, strGoldHawk) == 1 and getPlayerItemCount(cid, iditemhawk) == 1 then
selfSay("voce e da companhia Gold Hawk, deseja ir para a ilha?", cid)
talkState[talkUser] = 1

elseif msgcontains(msg, "yes") and getPlayerStorageValue(cid, strGoldHawk) == 1 and talkState[talkUser] == 1 then
selfSay("que assim seja", cid)
doTeleportThing(cid, posGoldHawk)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0

elseif msgcontains(msg, "mission") and getPlayerStorageValue(cid, strBlackSword) == 1 and getPlayerItemCount(cid, iditemsword) == 1 then
selfSay("voce e da companhia Black Sword, deseja ir para a ilha?", cid)
talkState[talkUser] = 1

elseif msgcontains(msg, "yes") and getPlayerStorageValue(cid, strBlackSword) == 1 and talkState[talkUser] == 1 then
selfSay("que assim seja", cid)
doTeleportThing(cid, posBlackSword)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0

else

selfSay("Preciso que voce tenha o card em maos", cid)







end
return true
end





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

 

Link para o comentário
https://xtibia.com/forum/topic/249097-resolvido-npc-que-da-item-e-depois-teleporta/#findComment-1747780
Compartilhar em outros sites

  • 0
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
Link para o comentário
https://xtibia.com/forum/topic/249097-resolvido-npc-que-da-item-e-depois-teleporta/#findComment-1747792
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...