O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

[RGSS1] Ajuda para transformar um evento comum em um script!

Iniciado por NumPaD, 15/12/2012 às 14:48

15/12/2012 às 14:48 Última edição: 15/12/2012 às 15:32 por MayLeone
Bom, eu to fazendo um sistema de tempo, e gostaria de fazer o que o Evento Comum faz, mas via Script. Queria que as variáveis fossem processadas do update do Scene_Map, ou seja, quando o mapa atualiza, a hora atualiza também. Fazendo assim, que na hora que esteja em menus, a hora pare.
Abaixo uma screen do evento:
Bom, alguém poderia fazer a 'base' desse código, e me explicar os métodos, para depois eu sozinho fazer a parte de "dias, semanas, meses e anos".
Grato.

Bom assim, nesse caso tem 3 lugares que atualizam no mapa constantemente.

Game_Map, Game_Player e Scene_Map, porém nesse caso especifico, eu colocaria no Scene_Base, porque como é relógio, ele atualizaria até dentro de menus saves e coisas do tipo.

Sabe usar o alias?
alias é para renomear um método assim eu posso adicionar coisas no método sem ter que "modifica-lo".

então ficaria assim.

class Scene_Base
alias inumpad_update update
  def update
  inumpad_update
  
end
end


Dentro desse método você vai precisar do seguinte.
if[code]
[code]$game_variables[n]

aonde n é o número da variável.

Acho que com isso conseguirá fazer, se tem algo que não entendeu, ou se falta algo só pedir ^^.

15/12/2012 às 15:09 #2 Última edição: 15/12/2012 às 15:20 por iNumPad
Opa Raizen. Bom, primeiro que não existe Scene_Base no RPG Maker XP, que usa o RGSS1. xD
E nos menus, eu quero sim que a hora pare de contar. Por isso escolhi o Scene_Map, eu sei usar alias, o problema é que eu quero que esperar 2 segundos, e aumentar a variável "Segundos", fazendo isso constantemente. Intende?
E isso eu não sei fazer.
Ex lógico que eu imagino o script:



loop do
wait 2 seconds
  $game_variables[26] += 1 # aumenta 1 segundo!

if $game_variables[26] == 60 # se for 60 segundos...
  $game_variables[26] = 0 # zera os segundos.
  $game_variables[27] += 1 # aumenta 1 minuto.
end

if $scene != self
break
end



Isso que eu quero. Mas ali no evento comum, envolve: segundos, minutos e horas.

Ah sim, aah desculpa do Scene_Base, não tenho o RMXP aqui e esqueci disso kk... D:
Sobre o esperar o tempo é o seguinte.

Graphics.frame_count

essa variável tem a quantidade de frames rodados, acredito que tenha no RMXP xD, me desculpe se não tiver, e então para passar 2 frames você poderia fazer assim.

$game_variables[26] += 1 if Graphics.frame_count % 2 == 1


ou seja, aumento 1 na variável 26 se o resto da divisão dos frames totais do game divididos por 2 é 1, o que seria metade das vezes, então aconteceria a cada 2 frames.

Citação de: Raizen online 15/12/2012 às 15:20
Ah sim, aah desculpa do Scene_Base, não tenho o RMXP aqui e esqueci disso kk... D:
Sobre o esperar o tempo é o seguinte.

Graphics.frame_count

essa variável tem a quantidade de frames rodados, acredito que tenha no RMXP xD, me desculpe se não tiver, e então para passar 2 frames você poderia fazer assim.

$game_variables[26] += 1 if Graphics.frame_count % 2 == 1


ou seja, aumento 1 na variável 26 se o resto da divisão dos frames totais do game divididos por 2 é 1, o que seria metade das vezes, então aconteceria a cada 2 frames.
Véi, tu é um genio! Funciono direitinho. Era isso mesmo. Se eu terminar o sistema, você está nos créditos! +Ouro (Like a MRM noob) para você.