Ir para conteúdo
  • 0

Maldito Rain System ! '-'


TheGODMaX

Pergunta

Rain System

tipo, eu queria fazer um sistema de chuva, pra isso eu adicionei os sprites da chuva ao meu ot e criei o magic effect com ele...

Aí eu precisava que em um certo horario ( no jogo ), ou á partir de um certo tempo em que o ot estivese online, começa-se á chover, apenas fazendo os magic effects nos sqms escolhidos, o problema é que:

 

eu não consigo e nao sei algum geito de fazer o script ficar se repetindo, pois se nao fosse por isso, o script iria ter que ser GIGANTESCO para o tempo da chuva ser razoável...

 

O script poderia ser também por meio de talkactions que só GOD poderia usar, aí teria uma para começar a chuva, e uma para para-la.

Se alguem souber oque eu uso para um script ficar se repetindo, ficaria grato...

Ou se alguem puder montar um script pra mim, explicando como eu faço pra adicionar os sqms q o magic effect vai sair (caso isso seja mt complexo)...

 

Quanto á talkaction, globalevent, etc...

Seria melhor o script de um modo que n desse Laag no server :x

 

Ty ~ MaX.

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Chuva no mapa inteiro?? Se for vai dar um lag bruto. Mas quanto à dúvida, você pode usar um "while" pra ficar se repetindo. Tenta usar isso (nem sei se funciona):

 

function chuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos)
for chuvaX = Xpos1, Xpos2 do
   for chuvaY = Ypos1, Ypos2 do
   chuvaArea = {x=chuvaX, y=chuvaY, z=Zpos}
   doSendMagicEffect(chuvaArea, 12)
   end
   end
   return TRUE
   end


function onSay(cid, words)
local tempo = 10*1000 -- 10 minutos

local i = 0
      while i < tempo do
      chuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos) -- edite aqui as pos
      i = i + 1
      end
      return TRUE
      end

 

Ve se deu e me fala. Não esqueça de editar as posições e o efeito.

 

flw

Link para o comentário
Compartilhar em outros sites

  • 0

Chuva no mapa inteiro?? Se for vai dar um lag bruto. Mas quanto à dúvida, você pode usar um "while" pra ficar se repetindo. Tenta usar isso (nem sei se funciona):

 

function chuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos)
for chuvaX = Xpos1, Xpos2 do
   for chuvaY = Ypos1, Ypos2 do
   chuvaArea = {x=chuvaX, y=chuvaY, z=Zpos}
   doSendMagicEffect(chuvaArea, 12)
   end
   end
   return TRUE
   end


function onSay(cid, words)
local tempo = 10*1000 -- 10 minutos

local i = 0
      while i < tempo do
      chuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos) -- edite aqui as pos
      i = i + 1
      end
      return TRUE
      end

 

Ve se deu e me fala. Não esqueça de editar as posições e o efeito.

 

flw

 

N intendi, editar aonde ? :x

só alí no

chuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos)

 

Ou no

 

for chuvaX = Xpos1, Xpos2 do

for chuvaY = Ypos1, Ypos2 do

chuvaArea = {x=chuvaX, y=chuvaY, z=Zpos}

 

Explica melhor aew plx, fiquei meio confuso... :S

 

PS: o script é pra cobrir apenas UMA PARTE do mapa... menos de 300 sqms...

Link para o comentário
Compartilhar em outros sites

  • 0

É para editar somente onde está escrito "chuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos) -- edite aqui as pos". Exemplo:

 

Minha area tem 16 sqm assim:

 

X X X X

X X X X

X X X X

X X X X

 

Eu vou pegar as posições do 1º Sqm esquerdo de cima e do ultimo Sqm direito de baixo. Supondo que sejam respectivamente:

 

x=10, y=20, z=7

x=11, y=21, z=7

 

eu editaria assim:

 

chuva(10, 11, 20, 21, 7) -- edite aqui as pos

 

 

 

Pronto.

 

flw

Link para o comentário
Compartilhar em outros sites

  • 0

Chuva no mapa inteiro?? Se for vai dar um lag bruto. Mas quanto à dúvida, você pode usar um "while" pra ficar se repetindo. Tenta usar isso (nem sei se funciona):

 

function chuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos)
for chuvaX = Xpos1, Xpos2 do
   for chuvaY = Ypos1, Ypos2 do
   chuvaArea = {x=chuvaX, y=chuvaY, z=Zpos}
   doSendMagicEffect(chuvaArea, 12)
   end
   end
   return TRUE
   end


function onSay(cid, words)
local tempo = 10*1000 -- 10 minutos

local i = 0
      while i < tempo do
      chuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos) -- edite aqui as pos
      i = i + 1
      end
      return TRUE
      end

 

Ve se deu e me fala. Não esqueça de editar as posições e o efeito.

 

flw

while i < tempo do

chuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos) -- edite aqui as pos

i = i + 1

você é doido?

isso vai dar um trava no servidor.

Link para o comentário
Compartilhar em outros sites

  • 0

@Marcryzius

Foi o que pensei... mas tentei fazer algo com o while, já que nunca vi ninguem usar.

 

@Topic

Refiz com menos lag e em forma de global event:

 

function onThink(cid, interval, lastExecution)
return addEvent(executeChuva, 200, 373, 375, 136, 138, 6, 36) -- edite os numeros, seguindo as variaveis da função
end

function executeChuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos, effect)
for Xchuva = Xpos1, Xpos2 do
            for Ychuva = Ypos1, Ypos2 do
                chuvaArea = {x=Xchuva, y=Ychuva, z=Zpos}
                doSendMagicEffect(chuvaArea, effect)
end
end
return TRUE
end

 

e em globalevents.xml:

 

Com intervalo de 2 em 2 horas

<globalevent name="chuva" interval="7200" event="script" value="chuva.lua"/>

 

Com horário marcado para acontecer:

<globalevent name="chuva" time="24:00" event="script" value="chuva.lua"/>

 

Flw

Link para o comentário
Compartilhar em outros sites

  • 0

@Marcryzius

Foi o que pensei... mas tentei fazer algo com o while, já que nunca vi ninguem usar.

 

@Topic

Refiz com menos lag e em forma de global event:

 

function onThink(cid, interval, lastExecution)
return addEvent(executeChuva, 200, 373, 375, 136, 138, 6, 36) -- edite os numeros, seguindo as variaveis da função
end

function executeChuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos, effect)
for Xchuva = Xpos1, Xpos2 do
            for Ychuva = Ypos1, Ypos2 do
                chuvaArea = {x=Xchuva, y=Ychuva, z=Zpos}
                doSendMagicEffect(chuvaArea, effect)
end
end
return TRUE
end

 

e em globalevents.xml:

 

Com intervalo de 2 em 2 horas

<globalevent name="chuva" interval="7200" event="script" value="chuva.lua"/>

 

Com horário marcado para acontecer:

<globalevent name="chuva" time="24:00" event="script" value="chuva.lua"/>

 

Flw

 

 

com apenas 1 parâmetro na função você faz a área dos efeitos.

seria melhor não ter criado a função executechuva(), poderia ter feito dentro do escopo da função onthink() mesmo.

 

dica: adicione um segundo parâmetro da função uma variável contendo o radius da área criada para os efeitos.

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, dava pra fazer dentro da propria função, porém, achei mais fácil e configurável fazer uma função adicional com várias váriaveis, visto que nem todos sabem interpretar scripts complexos ou de difícil configuração.

 

flw

Link para o comentário
Compartilhar em outros sites

  • 0

N deu nao... pelo menos o do tempo n deu certo...

Q vc escolhe a hora pra chove e tals...

fiz um espaço bem pekeno, 3x3 sqms...

 

Quando chegou na tal hora apareceu um erro:

[19/02/2010 18:26:52] [Warning - Event::loadScript] Event onTimer not found (data/globalevents/scripts/chuva.lua)

 

E nao acontece nada :s

 

Dava pra arrumar ? .-. queria q fosse por horario no jogo msm, e n de tanto em tanto tempo...

ty

Link para o comentário
Compartilhar em outros sites

  • 0

Demorei mas achei a solução:

 

Executado de X em X minutos:

function onThink(cid, interval, lastExecution)
return addEvent(executeChuva, 200, 373, 375, 136, 138, 6, 36) -- edite os numeros, seguindo as variaveis da função
end

function executeChuva(Xpos1, Xpos2, Ypos1, Ypos2, Zpos, effect)
for Xchuva = Xpos1, Xpos2 do
            for Ychuva = Ypos1, Ypos2 do
                chuvaArea = {x=Xchuva, y=Ychuva, z=Zpos}
                doSendMagicEffect(chuvaArea, effect)
end
end
return TRUE
end

 

E em globalevents.xml:

<globalevent name="chuva" interval="7200" event="script" value="chuva.lua"/>

 

 

Agora com hora marcada:

function executeChuva(pos1, pos2, pos3, pos4)
        for Xchuva1 = pos1, pos2 do
            for Ychuva1 = pos3, pos4 do
                areaChuva = {x=Xchuva1, y=Ychuva1, z=0}

                local efeito = { -- aqui voce coloca os efeitos que quer que mande
                25,
                40
                }

local sorte = math.random(1, #efeito)                 

           doSendMagicEffect(areaChuva, efeito[sorte])


end
end
return TRUE
end

function onTimer(time, lastExecution)
return addEvent(executeChuva, 1000, 5084, 5098, 5047, 5063) -- edite as variáveis seguindo a função. Note que o "1000" é o tempo de execução 

end

 

E em globalevents.xml:

<globalevent name="chuva" time="24:00" event="script" value="chuva.lua"/>

 

 

Acho que agora sim.

 

flw

Link para o comentário
Compartilhar em outros sites

  • 0

vlw ai vou fazer a sprites agora =D. mais vc sabe adi elas como magic effect, no da editor eu sei por no effect mais precisa fazer algum script pra ela poder se usada no serve?

valendo rep+ xd

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...