Ir para conteúdo
  • Cadastre-se

(Resolvido)Npc de vocacao


Ir para solução Resolvido por Storm,

Posts Recomendados

Gente por favor, eu estou precisando de um npc de vocacao, vasculhei aqui o fórum, e não achei o que eu exatamente procura o que seria: 

 

Um npc que apenas level 50 pudesse fala com ele, caso for level menor ele vai pedir pra vc ser mais forte e voltar depois, aí quando vc for lvl 50 voltar até ele, aí ele te dará uma missão onde vc terá que catar uma quantia de bat wings uns 50 por ex. Feito isso quando vc voltar até ele, o mesmo irá retirar os itens de vc e te dará uma outifit que vc não pode tirar, no caso eu terei a só a outifit da vocação que me tornei, a que eu estava antes de virar a vocação nova não dará mais pra eu usar, e somente essa nova roupa aparecer no inventário de outifit.

Caso alguém consiga me ajudar, ficarei grato. Valendo Rep++.


 

 

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

@Luzetti Voce explicou muito mal no tópico , mas eu tentei fazer :

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 config = {
      level = 50, -- Level necessario
      storage = 234123, -- Storage
      item = 2150, -- Id do item 
      count = 50, -- Count do item
      new = 15, -- ID da nova outfit
      old = 10 -- ID da outfit antiga
} 

local outfit = {lookType = config.new}

   if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
      if getPlayerLevel(cid) >= config.level then
         if getCreatureStorage(cid, config.storage) == -1 then
            if doPlayerRemoveItem(cid, config.item, config.count) then
               doCreatureSetStorage(cid, config.storage, 1)     
               doPlayerRemoveOutfitId(cid, config.old) 
               doPlayerAddOutfitId(cid, config.new, 0)
               doCreatureChangeOutfit(cid, outfit)
               selfSay("Parabens , voce completou a missão", cid)                     
            else
                selfSay("Traga para mim ".. config.count .." ".. getItemInfo(config.item).name .." para completar essa missao", cid)
            end
         else
             selfSay("voce ja completou essa missão", cid)
         end
      else
          selfSay("Voce precisa ser level ".. config.level .." para iniciar essa missão.", cid)
      end
   
   
   end
return true
end
            
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Link para o post
Compartilhar em outros sites

Obg, atende a quase tudo que pedi, mas eu não vi se ele tá dando a nova vocação,  ele tá dando a roupa nova n é? Que nem a vocação que eu tenho é Hunter, o Hunter vai deixar de ser Hunter e passará a ser vampiro.

Link para o post
Compartilhar em outros sites

@Luzetti

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 config = {
      level = 50, -- Level necessario
      storage = 234123, -- Storage
      item = 2150, -- Id do item 
      count = 50, -- Count do item
      new = 15, -- ID da nova outfit
      old = 10, -- ID da outfit antiga
      voc = 4 -- ID da nova voc
} 

local outfit = {lookType = config.new}

   if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
      if getPlayerLevel(cid) >= config.level then
         if getCreatureStorage(cid, config.storage) == -1 then
            if doPlayerRemoveItem(cid, config.item, config.count) then
               doCreatureSetStorage(cid, config.storage, 1)     
               doPlayerRemoveOutfitId(cid, config.old) 
               doPlayerAddOutfitId(cid, config.new, 0)
               doCreatureChangeOutfit(cid, outfit)
               doPlayerSetVocation(cid, config.voc)
               selfSay("Parabens , voce completou a missão", cid)                     
            else
                selfSay("Traga para mim ".. config.count .." ".. getItemInfo(config.item).name .." para completar essa missao", cid)
            end
         else
             selfSay("voce ja completou essa missão", cid)
         end
      else
          selfSay("Voce precisa ser level ".. config.level .." para iniciar essa missão.", cid)
      end
   
   
   end
return true
end
            
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Link para o post
Compartilhar em outros sites
1 hora atrás, Sttorm disse:

@Luzetti


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 config = {
      level = 50, -- Level necessario
      storage = 234123, -- Storage
      item = 2150, -- Id do item 
      count = 50, -- Count do item
      new = 15, -- ID da nova outfit
      old = 10, -- ID da outfit antiga
      voc = 4 -- ID da nova voc
} 

local outfit = {lookType = config.new}

   if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
      if getPlayerLevel(cid) >= config.level then
         if getCreatureStorage(cid, config.storage) == -1 then
            if doPlayerRemoveItem(cid, config.item, config.count) then
               doCreatureSetStorage(cid, config.storage, 1)     
               doPlayerRemoveOutfitId(cid, config.old) 
               doPlayerAddOutfitId(cid, config.new, 0)
               doCreatureChangeOutfit(cid, outfit)
               doPlayerSetVocation(cid, config.voc)
               selfSay("Parabens , voce completou a missão", cid)                     
            else
                selfSay("Traga para mim ".. config.count .." ".. getItemInfo(config.item).name .." para completar essa missao", cid)
            end
         else
             selfSay("voce ja completou essa missão", cid)
         end
      else
          selfSay("Voce precisa ser level ".. config.level .." para iniciar essa missão.", cid)
      end
   
   
   end
return true
end
            
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

creio que esteja quase 100%, porem ele nao pede pro player trazer o item até ele, no caso assim...

 


 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Vampiro" script="data/npc/scripts/vampiro.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="312" head="76" body="43" legs="38" feet="76" addons="0"/>

<parameters>

<parameter key="message_greet" value="Eu sou um Vampiro, estou em busca de sangue e vingança, por algum acaso esta interessado meu caro |PLAYERNAME|?"/>

</parameters>
</npc>

 

 

OBS 1

aqui ele ja fala se vc quer se juntar a ele, blza se eu nao tiver o item ele vai manda buscar okay, porem se eu ja tiver o item ele vai remover sem ao menos perguntar se eu tenho.

 

OBS2 foto

 

image.thumb.png.d12fbfeb317dfeba84d4ee523086d3b1.png

 

ele ta dando voc de hunter, sendo que ja sou hunter, e na descrição aparece no look, vampire...

 

 

 

 

"BLZA JA SEI OQ ERA A QUESTAO DA ROUPA E DA VOC ESTAREM ERRADAS ARRUMEI JA"  OK GG

 

PODERIA POR PRA ELE LEVAR UM KICK? EM 5 SEGUNDOS?

E VER PRA MESMO EU TENDO O ITEM ELE PERGUNTAR SE EU TENHO O ITEM AI QUANDO EU DER A ELE, AI SIM ELE TROCA MINHA VOC?

Link para o post
Compartilhar em outros sites

@Luzetti

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 config = {
      level = 50, -- Level necessario
      storage = 234123, -- Storage
      item = 2150, -- Id do item 
      count = 50, -- Count do item
      new = 15, -- ID da nova outfit
      old = 10, -- ID da outfit antiga
      voc = 4 -- ID da nova voc
} 

local outfit = {lookType = config.new}

if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
   selfSay("Traga para mim ".. config.count .." ".. getItemInfo(config.item).name .." para completar essa missao", cid)
   talkState[talkUser] = 1
end
   if msgcontains(msg, 'itens') or msgcontains(msg, 'items') and talkState[talkUser] == 1 then
      if getPlayerLevel(cid) >= config.level then
         if getCreatureStorage(cid, config.storage) == -1 then
            if doPlayerRemoveItem(cid, config.item, config.count) then
               doCreatureSetStorage(cid, config.storage, 1)     
               doPlayerRemoveOutfitId(cid, config.old) 
               doPlayerAddOutfitId(cid, config.new, 0)
               doCreatureChangeOutfit(cid, outfit)
               doPlayerSetVocation(cid, config.voc)
          	   addEvent(doRemoveCreature, 5000, cid)
               selfSay("Parabens , voce completou a missão", cid)                     
            else
                selfSay("Traga para mim ".. config.count .." ".. getItemInfo(config.item).name .." para completar essa missao", cid)
                talkState[talkUser] = 0
            end
         else
             selfSay("voce ja completou essa missão", cid)
             talkState[talkUser] = 0
         end
      else
          selfSay("Voce precisa ser level ".. config.level .." para iniciar essa missão.", cid)
          talkState[talkUser] = 0
      end
   
   
   end
return true
end
            
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Editado por Sttorm (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
1 minuto atrás, Sttorm disse:

@Luzetti


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 config = {
      level = 50, -- Level necessario
      storage = 234123, -- Storage
      item = 2150, -- Id do item 
      count = 50, -- Count do item
      new = 15, -- ID da nova outfit
      old = 10, -- ID da outfit antiga
      voc = 4 -- ID da nova voc
} 

local outfit = {lookType = config.new}

if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
   selfSay("Traga para mim ".. config.count .." ".. getItemInfo(config.item).name .." para completar essa missao", cid)
   talkState[talkUser] = 1
end
   if msgcontains(msg, 'itens') or msgcontains(msg, 'items') and talkState[talkUser] == 1 then
      if getPlayerLevel(cid) >= config.level then
         if getCreatureStorage(cid, config.storage) == -1 then
            if doPlayerRemoveItem(cid, config.item, config.count) then
               doCreatureSetStorage(cid, config.storage, 1)     
               doPlayerRemoveOutfitId(cid, config.old) 
               doPlayerAddOutfitId(cid, config.new, 0)
               doCreatureChangeOutfit(cid, outfit)
               doPlayerSetVocation(cid, config.voc)
               selfSay("Parabens , voce completou a missão", cid)                     
            else
                selfSay("Traga para mim ".. config.count .." ".. getItemInfo(config.item).name .." para completar essa missao", cid)
                talkState[talkUser] = 0
            end
         else
             selfSay("voce ja completou essa missão", cid)
             talkState[talkUser] = 0
         end
      else
          selfSay("Voce precisa ser level ".. config.level .." para iniciar essa missão.", cid)
          talkState[talkUser] = 0
      end
   
   
   end
return true
end
            
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

ta pra kikar com 5 segundos? após dar a vocacao?

5 minutos atrás, Sttorm disse:

@Luzetti


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 config = {
      level = 50, -- Level necessario
      storage = 234123, -- Storage
      item = 2150, -- Id do item 
      count = 50, -- Count do item
      new = 15, -- ID da nova outfit
      old = 10, -- ID da outfit antiga
      voc = 4 -- ID da nova voc
} 

local outfit = {lookType = config.new}

if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
   selfSay("Traga para mim ".. config.count .." ".. getItemInfo(config.item).name .." para completar essa missao", cid)
   talkState[talkUser] = 1
end
   if msgcontains(msg, 'itens') or msgcontains(msg, 'items') and talkState[talkUser] == 1 then
      if getPlayerLevel(cid) >= config.level then
         if getCreatureStorage(cid, config.storage) == -1 then
            if doPlayerRemoveItem(cid, config.item, config.count) then
               doCreatureSetStorage(cid, config.storage, 1)     
               doPlayerRemoveOutfitId(cid, config.old) 
               doPlayerAddOutfitId(cid, config.new, 0)
               doCreatureChangeOutfit(cid, outfit)
               doPlayerSetVocation(cid, config.voc)
               selfSay("Parabens , voce completou a missão", cid)                     
            else
                selfSay("Traga para mim ".. config.count .." ".. getItemInfo(config.item).name .." para completar essa missao", cid)
                talkState[talkUser] = 0
            end
         else
             selfSay("voce ja completou essa missão", cid)
             talkState[talkUser] = 0
         end
      else
          selfSay("Voce precisa ser level ".. config.level .." para iniciar essa missão.", cid)
          talkState[talkUser] = 0
      end
   
   
   end
return true
end
            
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

[30/05/2018 16:26:57] [Error - LuaScriptInterface::loadFile] data/npc/scripts/vampiro.lua:44: unexpected symbol near 'ï'
[30/05/2018 16:26:57] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/vampiro.lua
[30/05/2018 16:26:57] data/npc/scripts/vampiro.lua:44: unexpected symbol near 'ï'

Link para o post
Compartilhar em outros sites
6 minutos atrás, Sttorm disse:


Esqueci , código editado.

nao tem como a parte de entrega ser mais pratica? Blza ele mando eu buscar os itens, ai na volta...eu vou ter que fala itens? nao tem algum jeito mais facil? em vez de fala itens?  ele perguntar de novo? 

 

NPC, CONSEGUIU OQ LHE PEDI?

PLR: SIM

OKAY VEJO QUE É DIGNO DE SER ESSE GUERREIRO. 

 

nao tem como ser assim?

Link para o post
Compartilhar em outros sites
34 minutos atrás, Sttorm disse:

@Luzetti Você pode configurar a mensagem que o player terá que falar nessa linha


  if msgcontains(msg, 'itens') or msgcontains(msg, 'items') and talkState[talkUser] == 1 then

 

+1 coisa desculpa, haha tem como se fosse ele o npc, após ir catando os itens ele falar, muito bem faltam tantos e quando faltar apenas 1 ele falar, huum interessante.

1 hora atrás, Luzetti disse:

+1 coisa desculpa, haha tem como se fosse ele o npc, após ir catando os itens ele falar, muito bem faltam tantos e quando faltar apenas 1 ele falar, huum interessante.

@Sttorm seria possivel?

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo