Ir para conteúdo
  • Cadastre-se

Monster/NPC NPC Santa Claus (Papai Noel)


Posts Recomendados

  • Administrador

Bom galera, estava procurando por este NPC aqui no fórum e não encontrei, portanto estou disponibilizando o código do NPS de natal Santa Claus, o famoso Papai Noel, como todos devem saber, ele dá presentes aleatórios aos jogadores.

 

Crie um arquivo com o nome santa.xml em data/npc e bote isto:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Santa Claus" script="data/npc/scripts/santa.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="251" head="94" body="94" legs="113" feet="114" addons="0"/>
<parameters />
</npc>

Agora crie um arquivo com o nome santa.lua em data/npc/scripts e bote isto:

random_items = {
{5,2112,1}, -- 0.5% to get teddy bear
{20,6512,1}, -- 2% to get santa doll
{40,2114,1}, -- 4% to get piggy bank
{80,2111,5}, -- 8% to get 5 snowballs
{80,2688,8}, -- 8% to get 8 candy canes
{80,2110,1}, -- 8% to get doll
{400,2674,15}, -- 40% to get 15 red apples
{450,2675,10}, -- 45% to get 10 oranges
{1000,2687,8} -- 100% to get 8 cookies
}
PRESENT_STORAGE = 54163 -- storage ID

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 santaNPC(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end
if (parameters.present == true) then
if (getPlayerStorageValue(cid, PRESENT_STORAGE) < 1) then
local item = {}
local reward = 0
local count = ""
for i = 1, #random_items do
item = random_items[i]
if (math.random(0,999) < item[1]) then
reward = item[2]
subType = item[3]
if subType > 1 then
count = subType .. " "
end
break
end
end
doPlayerAddItem(cid, reward, subType)
setPlayerStorageValue(cid, PRESENT_STORAGE, 1)
npcHandler:say('HO HO HO por ser bueno este año te dare ' .. count .. getItemNameById(reward) .. ' para ti.', cid)
else
npcHandler:say('yo ya te di tu regalo.', cid)
end
else
npcHandler:say('regresa cuando seas bueno.', cid)
end
npcHandler:resetNpc()
return true
end

npcHandler:setMessage(MESSAGE_GREET, "Feliz Navidad |PLAYERNAME|.HO HO HO Yo soy Santa Claus. Y te dare un regalo por ser un buen niño.")

local noNode = KeywordNode:new({'no'}, santaNPC, {present = false})
local yesNode = KeywordNode:new({'yes'}, santaNPC, {present = true})

local node = keywordHandler:addKeyword({'pre'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'fuistes bueno este año?'})
node:addChildKeywordNode(yesNode)
node:addChildKeywordNode(noNode)
npcHandler:addModule(FocusModule:new())

Pronto, é isso ai pessoal, espero que façam bom proveito!

 

Créditos: God Maya

TibiaKing Team- KingTópicos
www.tibiaking.com

Link para o post
Compartilhar em outros sites
  • 6 months later...
  • 7 months later...

sera que alguém poderia remover a storage do script e colocar pra ele dar o itens se ele tiver um santa doll na backpack e que remora o santa doll quando ele entregar um dos itens aleatório ?

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

sera que alguém poderia remover a storage do script e colocar pra ele dar o itens se ele tiver um santa doll na backpack e que remora o santa doll quando ele entregar um dos itens aleatório ?

santaDoll = -- aqui voce coloca o itemId do Santa Doll

random_items = {
{5,2112,1}, -- 0.5% to get teddy bear
{20,6512,1}, -- 2% to get santa doll
{40,2114,1}, -- 4% to get piggy bank
{80,2111,5}, -- 8% to get 5 snowballs
{80,2688,8}, -- 8% to get 8 candy canes
{80,2110,1}, -- 8% to get doll
{400,2674,15}, -- 40% to get 15 red apples
{450,2675,10}, -- 45% to get 10 oranges
{1000,2687,8} -- 100% to get 8 cookies
}
PRESENT_STORAGE = 54163 -- storage ID

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 santaNPC(cid, message, keywords, parameters, node)
	
	if(not npcHandler:isFocused(cid)) then
	return false
	end
	
	if (parameters.present == true) then
		if getPlayerItemCount(cid, santaDoll) >= 1 then 
			doPlayerRemoveItem(cid, santaDoll, 1)   
			local item = {}
			local reward = 0
			local count = ""
			
			for i = 1, #random_items do
				item = random_items[i]
				if (math.random(0,999) < item[1]) then
					reward = item[2]
					subType = item[3]
					if subType > 1 then
					count = subType .. " "
					end
				  break
				end
			end
			doPlayerAddItem(cid, reward, subType)
			setPlayerStorageValue(cid, PRESENT_STORAGE, 1)
			npcHandler:say('HO HO HO por ser bueno este año te dare ' .. count .. getItemNameById(reward) .. ' para ti.', cid)
			
		else
			npcHandler:say('Voce nao tem a Santa Doll', cid)
		end
	else
		npcHandler:say('regresa cuando seas bueno.', cid)
	end
	
	npcHandler:resetNpc()
	return true
end

npcHandler:setMessage(MESSAGE_GREET, "Feliz Navidad |PLAYERNAME|.HO HO HO Yo soy Santa Claus. Y te dare un regalo por ser un buen niño.")

local noNode = KeywordNode:new({'no'}, santaNPC, {present = false})
local yesNode = KeywordNode:new({'yes'}, santaNPC, {present = true})

local node = keywordHandler:addKeyword({'pre'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'fuistes bueno este año?'})
node:addChildKeywordNode(yesNode)
node:addChildKeywordNode(noNode)
npcHandler:addModule(FocusModule:new())

Na primeira linha você coloca o id do santa doll, que o resto já configurei para dar o presente se ele tiver o santa doll e remover quando ganhar o presente.

Link para o post
Compartilhar em outros sites
Em 21/05/2017 em 14:52, Boush disse:

tem como arrumar ele pra dar presentes a cada 20h?

local config = {
  time = 20,	-- Tempo em que ele dara o premio ou seja a cada 20 horas.
  timeStorage = 68774
}
tempo = 20 

random_items = {
{5,2112,1}, -- 0.5% to get teddy bear
{20,6512,1}, -- 2% to get santa doll
{40,2114,1}, -- 4% to get piggy bank
{80,2111,5}, -- 8% to get 5 snowballs
{80,2688,8}, -- 8% to get 8 candy canes
{80,2110,1}, -- 8% to get doll
{400,2674,15}, -- 40% to get 15 red apples
{450,2675,10}, -- 45% to get 10 oranges
{1000,2687,8} -- 100% to get 8 cookies
}
PRESENT_STORAGE = 54163 -- storage ID

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 santaNPC(cid, message, keywords, parameters, node)
	
	if(not npcHandler:isFocused(cid)) then
	return false
	end
	
	if (parameters.present == true) then
		if getPlayerStorageValue(cid, config.time) <= os.time() then  
      		setPlayerStorageValue (cid, config.timeStorage, config.time * 60 * 60 + os.time())
			local item = {}
			local reward = 0
			local count = ""
			
			for i = 1, #random_items do
				item = random_items[i]
				if (math.random(0,999) < item[1]) then
					reward = item[2]
					subType = item[3]
					if subType > 1 then
					count = subType .. " "
					end
				  break
				end
			end
			doPlayerAddItem(cid, reward, subType)
			setPlayerStorageValue(cid, PRESENT_STORAGE, 1)
			npcHandler:say('HO HO HO por ser bueno este año te dare ' .. count .. getItemNameById(reward) .. ' para ti.', cid)
			
		else
			npcHandler:say('Voce nao tem a Santa Doll', cid)
		end
	else
		npcHandler:say('regresa cuando seas bueno.', cid)
	end
	
	npcHandler:resetNpc()
	return true
end

npcHandler:setMessage(MESSAGE_GREET, "Feliz Navidad |PLAYERNAME|.HO HO HO Yo soy Santa Claus. Y te dare un regalo por ser un buen niño.")

local noNode = KeywordNode:new({'no'}, santaNPC, {present = false})
local yesNode = KeywordNode:new({'yes'}, santaNPC, {present = true})

local node = keywordHandler:addKeyword({'pre'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'fuistes bueno este año?'})
node:addChildKeywordNode(yesNode)
node:addChildKeywordNode(noNode)
npcHandler:addModule(FocusModule:new())

Opa segue ai,  uma adaptação no que você precisa.

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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Henrique Gaudard
      Olá pessoal, primeiramente quero dizer que acho muito complicado mecher em monsters, poís qualquer erro, é fatal!! não sei porque quando fasso algumas modficações nos monsters/npcs que é quando eu modfico algumas coisas.., não entendo, só edito os nomes tipo assim;
      name "sfdsdfds" eu ponho "dhfudshgusopofkpsdakfgjid" (obs: não é no nome do arquivo lua mais sim o nome do monster mesmo já na edição) e dá erro. Se eu meche-se nas parada lá nos código todo doido de scripting tudo bem mais eu só quero editar e quando eu vou colocá-lo no mapa acontece o seguinte:
       
      Quando ligo aparece: "[Spawn : : addMonster] Cannot find "Ninja Star"" (ele está no presente no mapa e é um script obviamente). Falo!!
       
      Sistema Operacional: Windows 10

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo