1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
| #début du script
#=======================================================
# Lune Ultimate Anti-Lag
# Author: Raizen
# Compatible with: RMVXAce
# Comunity: centrorpg.com
# This script allows a very well balanced anti-lag, in which
# considers the own PC of the player, using a smart frame-skipper
# to slow lags,
#========================================================
#To update constantly the event, put a commentary on the first
# command of the script written :update:
module Anti_conf
#==============================================================================
# ** Configurations
#------------------------------------------------------------------------------
# Configure what is necessary for a better performance.
#==============================================================================
# Choose how the script will act.
# <=====Quality============================Performance=====>
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
# Default = 10
Fr = 10
# Configure the FPS rate (default = 60)
Fps = 60
# Configure the minimum FPS rate (default = 25)
Mini = 25
# Quantity of frames the anti-lag will study,
# the higher the time, the more precise the script,
# but will take longer to load the anti-lag
Time = 60
end
=begin
Functions on this Anti-Lag
* Common event positioning bug fixed
* Smart Frame Skipper
* updates what is only necessary
* helps to lower lags from visual system/scripts
* Changes its behavior according to the players PC
* Increases the RPG Maker priority over other programs
=end
#=================================================================#
#=================================================================#
#==================== Alias methods =============================#
# command_203 => Game_Interpreter
# start => Scene_Map
# update => Scene_Map
# perform_transfer => Scene_Map
#=================================================================#
#==================== Rewrite methods ===========================#
# update_events => Game_Map
# update_one_event => Spriteset_Map
#=================================================================#
#======================== New methods ===========================#
# need_to_update? => Game_Event
# near_the_screen? => Sprite_Character
# call_position_event => Scene_Map
# skip_calculate => Scene_Map
# update_one_event => Spriteset_Map
#=================================================================#
#=================================================================#
#==============================================================================
#============================ Início do Script! =============================
#==============================================================================
#==============================================================================
# ** Scene_Map
#------------------------------------------------------------------------------
# Esta classe executa o processamento da tela de mapa.
#==============================================================================
class Scene_Map < Scene_Base
alias lune_skip_start start
alias lune_skip_update update
alias lune_perform perform_transfer
#--------------------------------------------------------------------------
# * Inicialização do processo
#--------------------------------------------------------------------------
def start
Graphics.frame_rate = Anti_conf::Fps
@update_skip = false
@count_up = 0
lune_skip_start
end
#--------------------------------------------------------------------------
# * Execução da transferência
#--------------------------------------------------------------------------
def perform_transfer
$get_new_ids = Array.new
Graphics.frame_rate = Anti_conf::Fps
lune_perform
@count_up = 0
@update_skip = false
end
#--------------------------------------------------------------------------
# * Atualização da tela
#--------------------------------------------------------------------------
def update
@update_skip ? lune_skip_update : skip_calculate
end
#--------------------------------------------------------------------------
# * Atualização de um personagem especifico
#--------------------------------------------------------------------------
def call_position_event(id)
@spriteset.update_one_event(id)
end
#--------------------------------------------------------------------------
# * Calcula o tempo necessário para rodar o update do Scene_Map
#--------------------------------------------------------------------------
def skip_calculate
@count_up += 1
return unless @count_up >= Anti_conf::Time
auto_skip = Time.now
lune_skip_update
old_skip = Time.now
get_skip = old_skip - auto_skip
Graphics.frame_rate -= (get_skip * Graphics.frame_rate * 2 * Anti_conf::Fr - 1).to_i
Graphics.frame_rate = [Graphics.frame_rate, Anti_conf::Mini].max
@update_skip = true
end
end
#==============================================================================
# ** Scene_Base
#------------------------------------------------------------------------------
# Esta é a superclasse de todas as cenas do jogo.
#==============================================================================
class Scene_Base
alias skipper_main main
#--------------------------------------------------------------------------
# * Processamento principal
#--------------------------------------------------------------------------
def main
@fr_cont = 0
skipper_main
end
#--------------------------------------------------------------------------
# * Execução da transição
#--------------------------------------------------------------------------
def perform_transition
Graphics.transition(transition_speed * Graphics.frame_rate / 60)
end
#--------------------------------------------------------------------------
# * Atualização da tela (básico)
#--------------------------------------------------------------------------
def update_basic
if @fr_cont >= 60
Graphics.update
@fr_cont -= 60
end
@fr_cont += Graphics.frame_rate
update_all_windows
Input.update
end
end
#==============================================================================
# ** Aumento da prioridade do rpg maker
#------------------------------------------------------------------------------
Lune_high = Win32API.new("kernel32", "SetPriorityClass", "pi", "i")
Lune_high.call(-1, 0x90)
#==============================================================================
#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
# Esta classe gerencia os eventos. Ela controla funções incluindo a mudança
# de páginas de event por condições determinadas, e processos paralelos.
# Esta classe é usada internamente pela classe Game_Map.
#==============================================================================
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# * necessário atualizar?
#--------------------------------------------------------------------------
def need_to_update?
return false unless @list
ax = $game_map.adjust_x(@real_x) - 8
ay = $game_map.adjust_y(@real_y) - 6
ax.between?(-9, 9) && ay.between?(-7, 7) || @list[0].parameters.include?(':update:')
end
end
#==============================================================================
# ** Sprite_Character
#------------------------------------------------------------------------------
# Este sprite é usado para mostrar personagens. Ele observa uma instância
# da classe Game_Character e automaticamente muda as condições do sprite.
#==============================================================================
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# * Evento próximo a tela?
#--------------------------------------------------------------------------
def near_the_screen?
ax = $game_map.adjust_x(@character.x) - 8
ay = $game_map.adjust_y(@character.y) - 6
ax.between?(-11, 11) && ay.between?(-8, 8)
end
end
#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
# Esta classe gerencia os eventos. Ela controla funções incluindo a mudança
# de páginas de event por condições determinadas, e processos paralelos.
# Esta classe é usada internamente pela classe Game_Map.
#==============================================================================
class Game_Event < Game_Character
alias lune_ant_initialize initialize
#--------------------------------------------------------------------------
# * Inicialização do objeto
# event : RPG::Event
#--------------------------------------------------------------------------
def initialize(*args, &block)
lune_ant_initialize(*args, &block)
$get_new_ids.push(@event.id)
end
end
#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
# Um interpretador para executar os comandos de evento. Esta classe é usada
# internamente pelas classes Game_Map, Game_Troop e Game_Event.
#==============================================================================
class Game_Interpreter
alias lune_lag_command_203 command_203
#--------------------------------------------------------------------------
# Definir posição do evento
#--------------------------------------------------------------------------
def command_203
lune_lag_command_203
SceneManager.scene.call_position_event($get_new_ids.index(@event_id))
end
end
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
# Esta classe gerencia o mapa. Inclui funções de rolagem e definição de
# passagens. A instância desta classe é referenciada por $game_map.
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# * Atualização dos comandos dos eventos
#--------------------------------------------------------------------------
def update_events
@events.each_value {|event| event.update if event.need_to_update?}
@common_events.each {|event| event.update}
end
end
$get_new_ids = Array.new
#==============================================================================
# ** Spriteset_Map
#------------------------------------------------------------------------------
# Esta classe reune os sprites da tela de mapa e tilesets. Esta classe é
# usada internamente pela classe Scene_Map.
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# * Atualização dos personagens
#--------------------------------------------------------------------------
def update_characters
refresh_characters if @map_id != $game_map.map_id
@character_sprites.each {|sprite| sprite.update if sprite.near_the_screen? }
end
#--------------------------------------------------------------------------
# * Atualização de algum personagem remoto
#--------------------------------------------------------------------------
def update_one_event(id)
@character_sprites[id].update
end
end
#Fin du script |