Ir para conteúdo
  • 0

[Resolvido] Npc que da item e depois teleporta.


eliaspalermo

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
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
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...