Ir para conteúdo
  • 0

[Pedido] Npc


pablothadeu

Pergunta

salve salve galera do xtibia ;D

preciso duma ajuda aqui

nunca intendi como cria npc ja vi milhares de topicos mais sou burro =/

intão peço que alguem faça o seguinte npc

Nome= Campones

conversa.

player= hi

campones=Ola |PLAYERNAME| estou presisando muito de {ajuda}

player=ajuda

npc=Preciso que voce procure a cup que perdi...foi um presente do meu pai,aceita me {ajudar}? (este item19:05 You see a cup. It is empty.

ItemID: [3942].)

 

player=sim

npc=obrigado procure ne casas abondonadas e outras contruções do tipo..não sei onde botei.

 

ai o kra vai procura e quando achar da pro npc e ele fala (muito obrigado) e dah 1kk pro lek :D

 

yourots/8.5/se puder botar passo a passo como botalo no meu serv tipo pra qual pasta vai tal arquivo)

 

vlw desdeja (se me ensinar passo a passo de como fazer seria melhor ainda)

Editado por pablothadeu
Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Acho que é isso:

 

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)    end
function onThink()                npcHandler:onThink()                end

function creatureSayCallback(cid, type, msg)

   if(not npcHandler:isFocused(cid)) then
       return false
   end

local config = {
itemid = 3942,
reward = {{item = 2160, count = 100}}, -- Pode adicionar mais se quiser.
removeItem = "yes",
storage = 6598
}

if msgcontains(msg:lower(), "ajuda") then
if getPlayerStorageValue(cid,config.storage) <= 0 then
	selfSay("Preciso que voce procure a cup que perdi...foi um presente do meu pai,aceita me {ajudar}?", cid)
	talk_state =  1
else
	selfSay("Muito obrigado pela sua ajuda companheiro...", cid)
	talk_state = 0
end

elseif msgcontains(msg:lower(), "sim") and talk_state == 1 then
	selfSay("obrigado procure ne casas abondonadas e outras contruções do tipo..não sei onde botei.", cid)
	setPlayerStorageValue(cid, config.storage, 1)
	talk_state = 0

elseif msgcontains(msg:lower(), "pronto") and getPlayerStorageValue(cid, config.storage) == 1 then
selfSay("Você trouxe o cup?", cid)
talk_state = 2

elseif msgcontains(msg:lower(), "sim") and talk_state == 2 then
if getPlayerItemCount(cid, config.itemid) >= 1 then
	selfSay("Nossa, muito obrigado... Aqui está sua recompensa.", cid)
	setPlayerStorageValue(cid, config.storage, 2)
		for k,v in pairs(config.reward) do
			doPlayerAddItem(cid, v.item, v.count or 1)
		end
	if config.removeItem == "yes" then
		doPlayerRemoveItem(cid, config.itemId, 1)
	end
	talk_state = 0
else
	selfSay("Que pena, voce ainda não achou...", cid)	
	talk_state = 0
end

elseif msg:lower() == "no" and talk_state >= 1 then
selfSay("Obrigado mesmo assim...", cid)
talk_state = 0
npcHandler:resetNpc()

end
return true
end


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

 

Fiz na biblioteca do curso. Se tiver algo errado, ja ta explicado...

 

flw

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que é isso:

 

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)    end
function onThink()                npcHandler:onThink()                end

function creatureSayCallback(cid, type, msg)

   if(not npcHandler:isFocused(cid)) then
       return false
   end

local config = {
itemid = 3942,
reward = {{item = 2160, count = 100}}, -- Pode adicionar mais se quiser.
removeItem = "yes",
storage = 6598
}

if msgcontains(msg:lower(), "ajuda") then
if getPlayerStorageValue(cid,config.storage) <= 0 then
	selfSay("Preciso que voce procure a cup que perdi...foi um presente do meu pai,aceita me {ajudar}?", cid)
	talk_state =  1
else
	selfSay("Muito obrigado pela sua ajuda companheiro...", cid)
	talk_state = 0
end

elseif msgcontains(msg:lower(), "sim") and talk_state == 1 then
	selfSay("obrigado procure ne casas abondonadas e outras contruções do tipo..não sei onde botei.", cid)
	setPlayerStorageValue(cid, config.storage, 1)
	talk_state = 0

elseif msgcontains(msg:lower(), "pronto") and getPlayerStorageValue(cid, config.storage) == 1 then
selfSay("Você trouxe o cup?", cid)
talk_state = 2

elseif msgcontains(msg:lower(), "sim") and talk_state == 2 then
if getPlayerItemCount(cid, config.itemid) >= 1 then
	selfSay("Nossa, muito obrigado... Aqui está sua recompensa.", cid)
	setPlayerStorageValue(cid, config.storage, 2)
		for k,v in pairs(config.reward) do
			doPlayerAddItem(cid, v.item, v.count or 1)
		end
	if config.removeItem == "yes" then
		doPlayerRemoveItem(cid, config.itemId, 1)
	end
	talk_state = 0
else
	selfSay("Que pena, voce ainda não achou...", cid)	
	talk_state = 0
end

elseif msg:lower() == "no" and talk_state >= 1 then
selfSay("Obrigado mesmo assim...", cid)
talk_state = 0
npcHandler:resetNpc()

end
return true
end


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

 

Fiz na biblioteca do curso. Se tiver algo errado, ja ta explicado...

 

flw

 

jogo isso tudo no xml tenho q por isso no lua e configura o xml(e como configurar o xml?

Link para o comentário
Compartilhar em outros sites

  • 0

Esse ae é o arquivo lua do npc. O xml está abaixo:

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Campones" script="data/npc/scripts/campones.lua" walkinterval="5000" floorchange="0">
   <health now="100" max="100"/>
   <look type="128" head="100" body="100" legs="114" feet="114" addons="2"/>
   <parameters>
	<parameter key="message_greet" value="Ola |PLAYERNAME|! Estou presisando muito de {ajuda}" />
   </parameters>
</npc>

 

 

flw

Link para o comentário
Compartilhar em outros sites

  • 0

como faço pro npc remover o item do player e mudar o item q ele dara pq tipo

kiria por um item aqui so q esse item n cabe + de 1 no mesmo sloot(n sei se é assim q fala)

mais tipo crystal coins da pra por os 99em cima de 1 e ficar100 e o q eu kero so da um por espaço na bp..como boto ele?(e pro npc remover tbm ;D)vlw desdeja

Editado por pablothadeu
Link para o comentário
Compartilhar em outros sites

  • 0

Exemplo:

 

local config = {
       itemid = 3942, -- Item que será removido
       reward = {{item = 2160, count = 100}, {item = 2173, count = 1}, -- Aqui vai adicionar 100 crystal e 1 aol 
       removeItem = "yes", -- aqui voce deixa "yes" se for remover e "no" para n remover
       storage = 6598
}

 

flw

Link para o comentário
Compartilhar em outros sites

  • 0

THANKS

 

o npc n quer pega o item =/

 

gostaria q fizese algumas modificações tipo..

conversa entre eles;

player=Hi

npc=Ola |PLAYERNAME| preciso de {ajuda}.

player=Ajuda

npc=roubaram minha machet mágica foi um presente do meu pai, voce deseja me {ajudar}?

player=ajudar

npc=obrigado, acho que ela está com os anões das cavernas de Narineia, lhe {recompensaria} se fosse la buscar para min.

player=recompensaria

npc=sim tenho algo aqui que lhe intereça, mais cuidado os anões das cavernas de narineia contruiram robos de cristal muito fortes,vejo voce mais tarde.

 

:thumbsupsmiley:

se puder desse geitinho q ta na conversa(so que se tiver algum erro ortográfico agradeçeria se voce ageitasse)...e deixa um espaço com algo azul pro id do q o player tem q da em um espaço com algo em vermelho pro luga onde vou por o id da recompensa....

vlw ;D

(styler yourots/8.5/medio(acho) )

a ropa dele pod deixar do geito q vc boto (bota o arquivo lua e xml)

vlw

Editado por pablothadeu
Link para o comentário
Compartilhar em outros sites

  • 0

Erro meu o npc não retirar o 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)    end
function onThink()                npcHandler:onThink()                end

function creatureSayCallback(cid, type, msg)

   if(not npcHandler:isFocused(cid)) then
       return false
   end

local config = {
       itemid = 3942,
       reward = {{item = 2160, count = 100}}, -- Pode adicionar mais se quiser.
       removeItem = "yes",
       storage = 6598
}

if msgcontains(msg:lower(), "ajuda") then
       if getPlayerStorageValue(cid,config.storage) <= 0 then
               selfSay("Preciso que voce procure a cup que perdi...foi um presente do meu pai,aceita me {ajudar}?", cid)
               talk_state =  1
       else
               selfSay("Muito obrigado pela sua ajuda companheiro...", cid)
               talk_state = 0
       end

elseif msgcontains(msg:lower(), "sim") and talk_state == 1 then
               selfSay("obrigado procure ne casas abondonadas e outras contruções do tipo..não sei onde botei.", cid)
               setPlayerStorageValue(cid, config.storage, 1)
               talk_state = 0

elseif msgcontains(msg:lower(), "pronto") and getPlayerStorageValue(cid, config.storage) == 1 then
       selfSay("Você trouxe o cup?", cid)
       talk_state = 2

elseif msgcontains(msg:lower(), "sim") and talk_state == 2 then
       if getPlayerItemCount(cid, config.itemid) >= 1 then
               selfSay("Nossa, muito obrigado... Aqui está sua recompensa.", cid)
               setPlayerStorageValue(cid, config.storage, 2)
                       for k,v in pairs(config.reward) do
                               doPlayerAddItem(cid, v.item, v.count or 1)
                       end
               if config.removeItem == "yes" then
                       doPlayerRemoveItem(cid, config.itemid, 1)
               end
               talk_state = 0
       else
               selfSay("Que pena, voce ainda não achou...", cid)       
               talk_state = 0
       end

elseif msg:lower() == "no" and talk_state >= 1 then
       selfSay("Obrigado mesmo assim...", cid)
       talk_state = 0
       npcHandler:resetNpc()

end
return true
end

 

 

As falas voce muda aí...

 

flw

 

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...