CA
creatureevent

New System Register Event

Por caotic, 27 de dez. de 2012 em Globalevents e Spells

script
11
2.6k
caoticC
27 de dezembro de 2012 às 21:23

Todo mundo já sabe que quando queremos "colocar" algum script em creaturescripts alguns precisam ser registrado.

 

O registro e para que o evento inicie quando o player logar.

Mais muitas vezes o cadastramento consome linhas e tempo.

 

Pensando nisso desenvolvi um código para que o próprio usuário registre o evento na tag

 

Vamos a instalação.

 

Crie um arquivo lua chamado de register em lib e coloque este código:

 

 

function getEventRegisterName()
local x = {}
local events = io.open("data/creaturescripts/creaturescripts.xml", "r")
for i in events:read("*a"):gmatch('name="(.-)"') do
table.insert(x, i)
end
return x or nil
end

function getEventRegisterTrueByName(name)
local x = {}
local events = io.open("data/creaturescripts/creaturescripts.xml", "r")
for i in events:read("*a"):gmatch('name="'..tostring(name)..'" register = "(.-)"') do
table.insert(x, tonumber(i))
end
return x[1] or nil
end

function registerEvents(cid)
for y = 1, #getEventRegisterName() do
local x = getEventRegisterName()[y]
if getEventRegisterTrueByName(x) == 1 then
registerCreatureEvent(cid, x)
end
end
end

 

Agora vá em creaturescripts em login.lua antes do ultimo return true

Exclua todos os registro de evento:

Eles são estarão assim:

registerCreatureEvent(cid, "event")

 

Depois no mesmo lugar coloque isto:

 

registerEvents(cid)

 

Agora em TODAS AS SUAS TAGS isto entre name e event.

 

register = "1"

 

(Sendo que 1 e ativado e 0 Desativado)

 

Ela ficara assim:

 

<event type="joinchannel" name="mens" register = "1" event="script" value="mensagens.lua"/>

 

Pronto sistema instalado

 

Para usar e simples.

E so colocar na tag

E colocar a 1(verdadeiro ativado) ou o(false desativado)

Editado Dezembro 28 por caotic

LuckOakeL
27 de dezembro de 2012 às 21:28

Todo mundo já sabe que quando queremos "colocar" algum script em creaturescripts alguns precisam ser registrado.

 

O registro e para que o evento inicie quando o player logar.

Mais muitas vezes o cadastramento consome linhas e tempo.

 

Pensando nisso desenvolvi um código para que o próprio usuário registre o evento na tag

 

Vamos a instalação.

 

Crie um arquivo lua chamado de register em lib e coloque este código:

 

 

function getEventRegisterName()
local x = {}
local events = io.open("data/creaturescripts/creaturescripts.xml", "r")
for i in events:read("*a"):gmatch('name="(.-)"') do
table.insert(x, i)
end
return x or nil
end

function getEventRegisterTrueByName(name)
local x = {}
local events = io.open("data/creaturescripts/creaturescripts.xml", "r")
for i in events:read("*a"):gmatch('name="'..tostring(name)..'" register = "(.-)"') do
table.insert(x, tonumber(i))
end
return x[1] or nil
end

function registerEvents(cid)
for y = 1, #getEventRegisterName() do
local x = getEventRegisterName()[y]
if getEventTrueRegisterByName(x) == 1 then
registerCreatureEvent(cid, x)
end
end
end

 

Agora vá em creaturescripts em login.lua antes do ultimo return true

Exclua todos os registro de evento:

Eles são estarão assim:

registerCreatureEvent(cid, "event")

 

Depois no mesmo lugar coloque isto:

 

registerEvents(cid)

 

Agora em TODAS AS SUAS TAGS isto entre name e event.

 

register = "1"

 

(Sendo que 1 e ativado e 0 Desativado)

 

Ela ficara assim:

 

<event type="joinchannel" name="mens" register = "1" event="script" value="mensagens.lua"/>

 

Pronto sistema instalado

 

Para usar e simples.

E so colocar na tag

E colocar a 1(verdadeiro ativado) ou o(false desativado)

 

Caramba, maneira sua função, gostei.

 

REP+.

SlicerS
27 de dezembro de 2012 às 21:51

ui boas funçoes ms.. tenhu q aprender a usar esse gmatch kk REP+

caoticC
28 de dezembro de 2012 às 09:19

ui boas funçoes ms.. tenhu q aprender a usar esse gmatch kk REP+

 

Gmatch da para fazer muita coisa.

Isto e só um pouco dela.

 

E não precisa ser necessariamente usada para arquivos remotos.

DinoAdminD
28 de dezembro de 2012 às 09:41

Parabens caotic, isso é realmente intereçante para Nois usuarios.

REP+

caoticC
28 de dezembro de 2012 às 14:10

Outro detalhe importante.

 

Não e necessário colocar só 0(como ativo) pode ser qualquer outro numero diferente de 1.

OneshotO
28 de dezembro de 2012 às 14:53

Finalmente posso te parabenizar, você realmente fez algo útil dessa vez e soube usar bem as funções Lua, caotic. Tá progredindo hein, rapaz.

 

Já planeje uma nova versão que leia o campo register, e pegue dois valores, player e monster, caso o valor seja monster, corra por todos os arquivos XML dos monstros e registre o creaturescript nele desse jeito:

 

<script>
  <event name=""/>
</script>

 

Parabéns mesmo.

caoticC
28 de dezembro de 2012 às 15:12

Finalmente posso te parabenizar, você realmente fez algo útil dessa vez e soube usar bem as funções Lua, caotic. Tá progredindo hein, rapaz.

 

Já planeje uma nova versão que leia o campo register, e pegue dois valores, player e monster, caso o valor seja monster, corra por todos os arquivos XML dos monstros e registre o creaturescript nele desse jeito:

 

<script>
  <event name=""/>
</script>

 

Parabéns mesmo.

 

Sim sim.

Estou dando uma revisada no sistema.

Pensando bem cara poderia ser usado "onSpawn".

Estava conversando com o iunux e a melhor maneira para registrar um monstro especifico.

 

Mais sera melhorado

Editado Dezembro 28 por caotic

VodkartV
28 de dezembro de 2012 às 19:21

Finalmente posso te parabenizar, você realmente fez algo útil dessa vez e soube usar bem as funções Lua, caotic. Tá progredindo hein, rapaz.

 

Já planeje uma nova versão que leia o campo register, e pegue dois valores, player e monster, caso o valor seja monster, corra por todos os arquivos XML dos monstros e registre o creaturescript nele desse jeito:

 

<script>
  <event name=""/>
</script>

 

Parabéns mesmo.

 

 

sem mais, ótimo trabalho caotic.

2 meses depois...
15 de fevereiro de 2013 às 16:03

Seria Bom Para Ots Serios.

2 anos depois...
Luga03L
22 de dezembro de 2015 às 16:00

Manin! Desculpa ai reviver o tópico, mais... está mt foda e 100% funcional! vlw ae Vai me ajudar mt! Sou seu fã kk