Evento De Natal

LordVinny
em Scripts
  • 1
  • 2

LordVinny

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/11/08Posts: 36

É o seguinte como todos sabem obviamente o natal está para chegar e eu queria implantar uma coisa bem legal no meu ot para o divertimento dos players, eu vi um sistema no ot radbr e queria colocar no meu ot é assim > o script seria assim

 

todos os monstros do jogo dropariam um santa claus doll (o boneco do papai noel) depois levasse ate um npc com roupa de papai noel onde o player poderia trocar o doll por uma caixa de presente e depois o player poderia abrir está caixa de presentes onde viria um premio aleatório.

GuhPk

Rep+ ai se ajudei? asusah'
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 18/10/12Posts: 757

Para o item, no arquivo data/actions/actions.xml, adicione está tag:

 

<action itemid="ID-DA-BOX" event="script" value="RandomBox"/>

 

E depois vá em data/actions/scripts, crie um arquivo RandomBox.lua e coloque isto dentro dele:

 

local item_id = {12938, 12941, 12943, 12944} -- itens que podem vir
function onUse(cid, item, frompos, item2, topos)
local level = 10 -- level
if item.itemid == 12778 then -- id da box
if getPlayerLevel(cid) >= level then
local w = math.random (1,#item_id)
doPlayerAddItem(cid, item_id[w])
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você abriu a random box, e ganhou ["..getItemNameById(item_id[w]).."]")
doRemoveItem(item.uid, 1)
else
doPlayerSendCancel(cid,"Somente level "..level.." ou mais pode abrir.")
end
return true
end
end

 

Já está explicadinho no próprio script como editar... =]

 

 

separador%20blog.jpgseparador%20blog.jpg

 

 

Creio que o drop do item só pode ser editado mesmo nos monster's um por um!!!

 

 

separador%20blog.jpgseparador%20blog.jpg

 

1º Passo - Copie 1 arquivo.xml da sua pasta data/npc e mude o nome para o nome que você, depois cole isso dentro dele:

 

 

 

 

-- Script Npc Task BY GuhPk

 

<?xml version="1.0" encoding="UTF-8"?>

<npc name="nomedonpc" script="arquivo.lua" walkinterval="350000" floorchange="0" speed="0">

<health now="150" max="150"/>

<look type="255" head="91" body="114" legs="86" feet="0"/>

 

 

Azul = nome do script.lua que você vai colocar na pasta data/npc/script.

Vermelho = nome do Npc.

Verde = roupa do seu npc, vou ver se tem tópico explicando como fazer, se tiver eu posto aqui, se não eu crio aqui posto.

 

http://www.xtibia.co...pcs-e-monstros/

 

 

 

==========================================================================================================================

 

 

 

 

2º Passo - Agora vai em data/npc/script copia qualquer arquivo.lua de la coloca o nome que você quizer (este nome vai colocar onde esta de azul no script acima) e cola isso dentro:

 

 

 

 

 

-- Script Npc Task By GuhPk --

 

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {20}

local focus = 0

local talk_start = 0

local target = 0

local following = false

local attacking = false

 

 

storage = 1 -- storage id

item = 1 -- coloca aqui o id do item que vai ter que ir buscar

quantiitem = 1 -- quantidade do item acima que precisa pegar

item2 = 1 -- id da box

quantiitem2 = 1 -- quantas box ganha

 

 

 

 

 

 

function msgcontains(txt, str)

return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))

end

 

 

 

 

function onThingMove(creature, thing, oldpos, oldstackpos, item, itemEx)

 

end

 

function onCreatureAppear(creature)

 

end

 

 

function onCreatureDisappear(cid, pos)

if focus == cid then

selfSay('Tchau.',cid)

focus = 0

talk_start = 0

talkState[talkUser] = 0

end

end

function onCreatureTurn(creature)

 

end

 

function msgcontains(txt, str)

return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))

end

 

 

function onCreatureSay(cid, type, msg)

 

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

 

if getDistanceToCreature(cid) > 4 then

return false

end

 

if talkState[talkUser] ~= 3 then

msg = string.lower(msg)

end

 

if (msgcontains(msg, 'hi')) then

 

fala = "Hey, eu estou precisando urgentemente de x itens. Será que você poderia me ajudar?"

 

selfSay(fala,cid)

talkState[talkUser] = 1

elseif ( ( msgcontains(msg,"yes") or (msgcontains(msg,"sim") ) ) and talkState[talkUser] == 1 ) then

 

quest1 = getPlayerStorageValue(cid,storage)

if quest1 == 2 then

selfSay('Cara, você já me ajudou!',cid)

else

 

if quest1 ==1 then

selfSay('Bom! Então vc trouxe os meus itens? Deixe-me ver.',cid)

if doPlayerRemoveItem(cid, item, quantiitem) == true then

selfSay('Obrigado! Agora poderei fazer meu projeto. Aqui esta sua recompença!',cid)

doPlayerAddItem(cid,premio1,quant1)

talkState[talkUser] = 0

else

selfSay('Voce não trouxe os meus itens... Volte quando tive-los.',cid)

talkState[talkUser] = 0

end

 

else

selfSay('Me traga os itens para o meu projeto.',cid)

setPlayerStorageValue(cid,storage, 1)

end

end

 

elseif(msgcontains(msg, 'no')) then

talkState[talkUser] = 0

selfSay('Okay, obrigado mesmo assim.', cid)

elseif(msgcontains(msg, 'bye')) then

selfSay('Até mais!', cid)

talkState[talkUser] = 0

end

 

end

 

 

function onCreatureChangeOutfit(creature)

 

end

 

 

Oi, eu sou o GuhPk!

Quer ver meus trabalhinhos e outras coisas? Só clicar aqui !!!

Olha meu ShowOff do Mapa de OtPokemon aqui. Caso tenha uma dúvida ou dica comenta lá!

 

Aprendendo mais... Sempre mais...

fredpadua

Eu sou o Rei ?! ...
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 13/10/11Posts: 411

GuhPk, oque tem a ver seu script com oque ele pediu ?

semefeito.png



 

↓ Gosta de mim ? Use a FanBar ↓

 

anigif2mo.gif

Skymagnum

Hamburguer
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 02/08/12Posts: 1025Char no Tibia: Maurolkit

É o seguinte como todos sabem obviamente o natal está para chegar e eu queria implantar uma coisa bem legal no meu ot para o divertimento dos players, eu vi um sistema no ot radbr e queria colocar no meu ot é assim > o script seria assim

 

todos os monstros do jogo dropariam um santa claus doll (o boneco do papai noel) depois levasse ate um npc com roupa de papai noel onde o player poderia trocar o doll por uma caixa de presente e depois o player poderia abrir está caixa de presentes onde viria um premio aleatório.

jeoz.png

GuhPk

Rep+ ai se ajudei? asusah'
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 18/10/12Posts: 757

GuhPk, oque tem a ver seu script com oque ele pediu ?

 

Cara, se você leu todo o tópico, e com atenção você saberia!! ¬¬'

 

"todos os monstros do jogo dropariam um santa claus doll (o boneco do papai noel) depois levasse ate um npc com roupa de papai noel onde o player poderia trocar o doll por uma caixa de presente e depois o player poderia abrir está caixa de presentes onde viria um premio aleatório."

Oi, eu sou o GuhPk!

Quer ver meus trabalhinhos e outras coisas? Só clicar aqui !!!

Olha meu ShowOff do Mapa de OtPokemon aqui. Caso tenha uma dúvida ou dica comenta lá!

 

Aprendendo mais... Sempre mais...

LordVinny

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/11/08Posts: 36

Foi mal GuhPk, não mexo muito com scripts, só tem uma coisa que eu não entendi aqui pra edita "storage = 1 -- storage id" o que eu faço aqui?

SmiX

SlashX
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 25/01/12Posts: 963

Actions:

 

itensRandom = { }   -- Id dos itens aleatórios
quantidade = 1 -- Aqui a quantidade de itens que irão vir para o player
function onUse(cid, item)
	 doPlayerAddItem(cid, math.random(1, #itensRandom), quantidade)
	 doSendMagicEffect(getThingPos(cid), math.random(28, 30))
	 doPlayerSendTextMessage(cid, 27, "Marry Crystimas "..getCreatureName(cid).."!!!")
        doPlayerRemoveItem(cid, item.uid, 1)
end

 

Npc:

 

idDoDoll = 2 -- Id do boneco(doll)
idDaCaixa = 2-- Id da caixa que da itens

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
if(msgcontains(msg, 'change doll')) then
if doPlayerRemoveItem(cid, idDoDoll, 1) then
doPlayerAddItem(cid, idDaCaixa, 1)
SelfSay('Marry Crystimas!!')
else
return selfSay('Sorry, you need a "..getItemNameById(idDoDoll)..".')
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Fale, hi-change doll e pronto..

LordVinny

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/11/08Posts: 36

SmiX seu script tem um bug, quando eu abro a caixa de presentes aparece um sqm estranho em baixo do player, a box não some depois de ser usada , quando eu tento "sumonar" o npc não pega.

 

Olha ai :

 

 

[03/12/2012 19:44:08] [Warning - Npc::loadFromXml] Cannot load npc file (data/npc/papai noel.xml).

[03/12/2012 19:44:08] Line: 4, Info: Premature end of data in tag npc line 2

 

Então galerinha, está dando esse erro aqui:

 

E o script está assim

 

NPC

 

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Papai Noel" script="papainoel.lua" walkinterval="350000" floorchange="0" speed="0">

<health now="150" max="150"/>

<look type="160" head="0" body="112" legs="93" feet="95"/>

 

idDoDoll = 6512 -- Id do boneco(doll)

idDaCaixa = 6497-- Id da caixa que da itens

 

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

if(msgcontains(msg, 'change doll')) then

if doPlayerRemoveItem(cid, 6512, 1) then

doPlayerAddItem(cid, 6497, 1)

SelfSay('Marry Crystimas!!')

else

return selfSay('Sorry, you need a "..getItemNameById(idDoDoll)..".')

end

end

return true

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

GuhPk

Rep+ ai se ajudei? asusah'
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 18/10/12Posts: 757

Lord, o npc funciona assim, você coloca isso aqui:

 

?xml version="1.0" encoding="UTF-8"?>
<npc name="Papai Noel" script="papainoel.lua" walkinterval="350000" floorchange="0" speed="0">
<health now="150" max="150"/>
<look type="160" head="0" body="112" legs="93" feet="95"/>

 

Em data/npcs, só fazer um arquivo lá Papai Noel.xml e colocar isso...

 

Depois vá em data/npcs/scripts cria um arquivo papainoel.lua e cole isso:

 

idDoDoll = 6512 -- Id do boneco(doll)
idDaCaixa = 6497-- Id da caixa que da itens
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
if(msgcontains(msg, 'change doll')) then
if doPlayerRemoveItem(cid, 6512, 1) then
doPlayerAddItem(cid, 6497, 1)
SelfSay('Marry Crystimas!!')
else
return selfSay('Sorry, you need a "..getItemNameById(idDoDoll)..".')
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Você estava colocando tudo junto... Por isso estava dando erro!! '-'

Oi, eu sou o GuhPk!

Quer ver meus trabalhinhos e outras coisas? Só clicar aqui !!!

Olha meu ShowOff do Mapa de OtPokemon aqui. Caso tenha uma dúvida ou dica comenta lá!

 

Aprendendo mais... Sempre mais...

DinoAdmin

Ex Estagiário de Scripting
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 27/07/12Posts: 757Char no Tibia: [ADM] Bhoris
  • 1
  • 2