quarta-feira, 3 de abril de 2013

RPGMAKERVXACE - Sistema Mouse


# ================================================= ==============================
# Sistema Mouse (RGSS3)
# Por Jet10985 (Jet)
# Código Alguns por: Woratana, Berka
# Usa: Caminho listra-92 de encontrar
# Super Teste Ajuda / Debug Heavy / Solicitado por: Nathaniel (Beleren)
# ========================== ================================================== ===
# Este script irá permitir a plena utilização do rato dentro de RMVX para vários
fins #.
# Este script tem:. 7 opções de personalização
# =================== ================================================== ==========
# Métodos sobrescritos:
# Game_Player: move_by_input
# ------------------------------- ------------------------------------------------
# alias métodos:
# Scene_Map: atualização, terminar, update_transfer_player
# Entrada:? atualização, gatilho, de imprensa, de repetição, dir4, dir8?
# Window_Selectable: atualização, top_row =
# Scene_File: update
# Window_NameInput: update
# Game_Temp: inicializar
# Game_Event: inicializar , atualização
# =============================================== ================================ = começar Mostrando texto acima evento quando mouse passa: Se você quer uma mensagem para aparecer mais cabeça de um evento quando o mouse está pairando sobre o evento, colocar este comentário no evento: MENSAGEM DE TEXTO mouse aqui tudo depois do texto será a exibição pairando. ------------------ -------------------------------------------------- ------------ imagem do mouse Alterar acima evento quando mouse passa: Se você quiser que a imagem do mouse para alterar temporariamente whne sobre um evento, coloque este comentário em caso MOUSE PIC nome / número , se você colocar um nome, o mouse torna-se esse quadro, mas se você colocar um número em seguida, o rato vai se tornar o ícone que é o número de identificação ----------------------- -------------------------------------------------- ------- específicos do mouse clique em vias de movimento: Se você quiser que o jogador pousar especificamente em um quadrado em torno de um evento quando eles clique para mover sobre o evento, coloque um desses comentários no evento: Mova o mouse para cima / esquerda / direita / baixo só colocar a direção que você quer que o jogador pousar. --------------------------------- ----------------------------------------------- Clique para ativar : Se você quiser que um evento para iniciar automaticamente quando é clicado, coloque isso em um comentário evento: clique do mouse -------------------------- -------------------------------------------------- ---- Não pare o jogador ao caminhar sobre um evento de toque: Por padrão, este script vai parar um rato causou movimento se o jogador anda acima / abaixo um evento de toque jogador touch / evento. Se você deseja que o evento para ativar, mas para o jogador a continuar caminhando ao seu destino, colocar este comentário no evento: MOUSE nostop ---------------------- -------------------------------------------------- -------- Ignorar Eventos: Para ter um evento ser ignorado quando o mouse faz seu caminho de movimento (como se o evento não está lá), colocar este comentário no evento: mouse através ------ -------------------------------------------------- ------------------------ Notas extras: Em janelas selecionáveis ​​que têm mais itens do que o que é mostrado, os jogadores podem ou colocar o mouse abaixo da janela para rolar para baixo , ou usar o mouse de roda de rolagem para rolar para cima / para baixo. Você pode ativar eventos de botão de ação por estar ao lado do evento e clicando sobre ele com o mouse. = fim JetMouse módulo   # Se você estiver usando um gráfico, é isso.   # Deve ser no Gráficos / pasta System.   CURSOR_PICTURE = "cursor do mouse"   # Se você não estiver usando um gráfico, este ícone será o mouse.   # Para usar o ícone, basta colocar uma imagem inexistente como o acima configuração   ICON_INDEX = 387   # Você quer que o jogador seja capaz de se mover, clicando o mouse?   ALLOW_MOUSE_MOVEMENT = true   # Você quer o movimento do mouse para fazer 8-dir a pé?   # Requer 8-Dir Walking pelo Jet.   DO_8DIR_WALKING = false   # Girar esta chave vai fazer o mouse invisível e unusuable até   # o interruptor estiver desligado   TURN_MOUSE_OFF_SWITCH = 20   # Você quer o mouse para verificar a rolagem da roda do mouse em selectbale   # windows? Não usar isso pode reduzir alguns raros casos de defasagem.   USE_WHEEL_DETECTION = false   # Você quer usar a fórmula de Dijkstra para pathfinding?   # Este é mais preciso, mas mais lento.   USE_DIJKSTRA = true end # ========== ================================================== =================== # NÃO edite mais se você não sabe o que fazer. # ================= ================================================== ============ módulo Rato   Get_Message = Win32API.new ('user32', 'GetMessage', 'plll', 'l')   GetAsyncKeyState = Win32API.new ("user32", "GetAsyncKeyState", 'i', 'i')   = GetKeyState Win32API.new ("user32", "GetKeyState", 'i', 'i')   = SetCursorPos Win32API.new ('user32', 'SetCursorPos', 'nn', 'n ')   = GetCursorPo Win32API.new ('user32', 'GetCursorPos', 'p', 'i')   = ScreenToClient Win32API.new ('user32', 'ScreenToClient', 'lp', 'i')   = FindWindowA Win32API. novo ('user32', 'FindWindowA', 'PP', 'l')   GetClientRect = Win32API.new ('user32', 'GetClientRect', 'lp', 'i')   = GetWindowRect Win32API.new ('user32', 'GetWindowRect', 'lp', 'i')   = conteúdo File.open ('Game.ini', 'r') {| f | f.read}   q = conteúdo [Título / = (+) /.]. nulo? ? "Cccc": US $ 1   = @ alça FindWindowA.call ('RGSS jogador', q)   module_function   Ponto = Struct.new (: x,: y)   = Mensagem Struct.new (: mensagem,: wparam,: lparam,: pt)   Param = Struct.new (: x,: y,: scroll)   Scroll = 0x0000020A   def HIWORD (dword); retorno ((dword & 0xFFFF0000) >> 16) &0x0000ffff; final   def LOWORD (dword); dword retorno &0x0000ffff; final   def word2signed_short (valor )     valor de retorno if (value & 0x8000) == 0     retorno -1 * ((valor ~ & 0x7fff) + 1)   end   def unpack_dword (buffer, offset = 0)     ret = buffer [deslocamento + 0] & 0x000000FF     ret | = buffer ([deslocamento + 1 ] << (8 * 1)) & 0x0000ff00     ret | = (buffer [deslocamento + 2] << (8 * 2)) & 0x00ff0000     ret | = (buffer [deslocamento + 3] << (8 * 3)) & 0xff000000     ret retorno   final   def unpack_msg (buffer)     msg = Message.new; msg.pt = Point.new     msg.message = unpack_dword (buffer, 4 * 1)     = msg.wparam unpack_dword (buffer, 4 * 2)     = msg.lparam unpack_dword (tampão , 4 * 3)     = msg.pt.x unpack_dword (buffer, 4 * 5)     = msg.pt.y unpack_dword (buffer, 4 * 6)     retorno msg   final   def wmcallback (msg)     o retorno a menos msg.message == Vá     param = Param.new     param.x = word2signed_short (LOWORD (msg.lparam))     = param.y word2signed_short (HIWORD (msg.lparam))     = param.scroll word2signed_short (HIWORD (msg.wparam))     retorno param [param.x, . y, param.scroll]   final   clique def? (botão)     return false se $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH]     verdadeiro retorno if@keys.include? (botão)     return false   end   def imprensa? (botão)     return false se $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH]     retorno if@press.include verdade? (botão)     return false   end   def set_pos (x_pos = 0, y_pos = 0)     largura, altura = client_size     if (x_pos.between? (0, largura) && y_pos. entre? (0, altura))       SetCursorPos.call (client_pos [0] + x_pos, client_pos [1] + y_pos)     final   final   de atualização def     retorno se $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH]     @ pos = Mouse.pos     @ chaves, @ pressione = [], []     @ keys.push (1) se GetAsyncKeyState.call (1) & 0x01 == 1     @ keys.push (2) se GetAsyncKeyState.call (2) & 0x01 == 1     @ keys.push (3) se GetAsyncKeyState.call (4) & 0x01 == 1     @ press.push (1) se pressionado? (1)     @ press.push (2) se pressionado? (2)     @ press.push (3) se pressionado? (4)   final   def pressionado? (key)     return true menos GetKeyState.call (chave). entre? (0, 1)     return false   end   def global_pos     pos = [0, 0] embalagem. ('ll')     GetCursorPo.call (pos)! ? = 0 (retorno pos.unpack ('ll')): (retorno [0, 0])   end   def pos     retorno 0, 0 se $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH]     x, y = screen_to_client (* global_pos)     , largura height = client_size     começam       x = 0 se x <= 0, y = 0 se y <= 0       x = largura if x> = largura; y = altura se y> = altura       retorno x, y     final   fim   def screen_to_client (x, y )     retornar zero, a menos que x && y     pos = [x, y] embalagem. ('ll')     ) ScreenToClient.call (@ punho, pos) = 0 (retorno pos.unpack ('ll'!?): (retorno [0 , 0])   end   def client_size     rect = [0, 0, 0, 0]. pack ('l4')     GetClientRect.call (@ alça, rect)     inferior direito, rect.unpack = ('l4') [2 .. 3]     retorne para a direita, de baixo   final   def client_pos     rect = [0, 0, 0, 0]. pack ('l4')     GetWindowRect.call (@ alça, rect)     à esquerda, superior = rect.unpack ('l4') [0 .. 1]     retorno deixaram + 4, superior + 30   final   grade def     retorno [-1, -1] se $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH]     retorno [-1, -1] if@pos.nil?     retorno [(@ pos [0] / 32), (@ pos [1] / 32)]   end   def true_grid     retorno [grid [0] + $ game_map.display_x / 256, grade [1] + $ game_map.display_y / 256]   final   área def ? (x, y, largura, altura)     return false se $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH]     voltar if@pos.nil falso?     retorno @ pos [0]. entre? (x, x + largura) && @ pos [1 .?] entre (y, altura + y)   end   def rolagem     msg = "\ 0" * 32; Get_Message.call (msg, 0,0,0), r = wmcallback (unpack_msg (msg))     r retorno se r! . nulo?   final final Sprite_Cursor classe <Sprite_Base   attr_accessor: current_cursor,: not_default   incluem JetMouse   def initialize     super-     current_cursor @ = ""     @ not_default = false     Win32API.new ('user32', 'ShowCursor', 'i', 'i'). chamar (0)     self.z = 5004     create_cursor (CURSOR_PICTURE)     $ game_switches = []     atualização   final   create_cursor def (cursor = "")     self.bitmap.dispose menos self.bitmap.nil?     self.bitmap = nil     começar       self.bitmap = Cache.system (cursor)       @ = current_cursor cursor     salvamento       self.bitmap Bitmap.new = (24, 24)       = bitmap Cache.system ("Iconset")       = rect Rect.new (ICON_INDEX% 16 * 24, ICON_INDEX / 16 * 24 , 24, 24)       self.bitmap.blt (0, 0 bitmap, rect)       @ current_cursor = ICON_INDEX     final     @ not_default = false   final   change_cursor def (cursor)     self.bitmap.dispose menos self.bitmap.nil?     self.bitmap = nil     começar       self.bitmap = Cache.system (cursor)       @ current_cursor = cursor       @ not_default = true     resgate       começar         self.bitmap = Bitmap.new (24, 24)         = bitmap Cache.system ("Iconset")         rect = Rect.new ( cursor 16% * 24 cursor, / 16 * 24, 24, 24)         self.bitmap.blt (0, 0 bitmap, rect)         @ current_cursor = cursor         @ not_default = true       resgate         create_cursor (CURSOR_PICTURE)       final     final   final   de atualização def      retorno se self.disposed?     se $ game_switches [TURN_MOUSE_OFF_SWITCH]       self.opacity = 0 a menos self.opacity == 0     final     self.opacity = 255 a menos self.opacity == 255     Super     x = self.x     y = self.y     self.x, self.y = Mouse.pos     self.x - = 8 se @ not_default     self.y - = 8 se @ not_default   final fim $ cursor = Sprite_Cursor.new módulo de entrada   classe << auto     jet5888_press alias? pressionar? unless $ @     def imprensa? (arg)       Se arg == Input :: C         return true se Mouse.press? (1)       elsif arg == Entrada B ::         return true se Mouse.press? (2)       final       jet5888_press? (arg )     final     jet5888_repeat alias? repetir? unless $ @     def repetição? (arg)       Se arg == Input :: C         return true se Mouse.click? (1)       elsif arg == Entrada B ::         return true se Mouse.click? (2)       final       jet5888_repeat? (arg )     final     jet5888_trigger alias? gatilho? unless $ @     def gatilho? (arg)       Se arg == Input :: C         return true se Mouse.click? (1)       elsif arg == Entrada B ::         return true se Mouse.click? (2)       final       jet5888_trigger? (arg )     final     apelido atualização jet8432_update unless $ @     def update (* args, bloco &)       jet8432_update (* args, bloco &)       se $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH] && $ cursor.opacity! = 0         = 0 $ cursor.opacity       final       cursor $. atualizar a menos que $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH]       Mouse.update a menos que $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH]     finais     apelido jet1626_dir4 dir4 unless $ @     def dir4 (* args, bloco &)       se! $ game_temp.nil?         se game_temp.move_because_of_mouse $           se ! $ game_temp.mouse_path.empty? && $ Game_player.movable? &&               ! $ game_map.interpreter.running? && SceneManager.scene_is? (Scene_Map) &&               jet1626_dir4 (* args, bloco e) == 0             f = $ game_temp.mouse_path.reverse!. pop             $ game_temp.mouse_path.reverse!             retorno f * 2           mais             game_temp.move_because_of_mouse $ = false             $ game_temp . mouse_path = []           end         end       end       jet1626_dir4 (* args, bloco &)     end     apelido jet1626_dir8 dir8 unless $ @     def dir8 (* args, bloco &)       se! $ game_temp.nil?         se $ game_temp.move_because_of_mouse           se! $ game_temp.mouse_path.empty ? && $ Game_player.movable? &&               ! $ game_map.interpreter.running? && SceneManager.scene_is? (Scene_Map) &&               jet1626_dir8 (* args, bloco e) == 0             f = $ game_temp.mouse_path.reverse!. pop             $ game_temp.mouse_path.reverse!             se [1, 2, 3, 4]. incluir? (f)               de retorno f * 2             mais               f caso               quando 5                 return 1               quando seis                 retorno 3               , quando sete                 retorno 7               quando 8                 9 retorno               final             final           mais             game_temp.move_because_of_mouse $ = false             $ game_temp.mouse_path = []           final         final       final       jet1626_dir8 (* args, & bloco)     final   final final classe Game_Player    def move_by_input     retornar se! móvel? | Game_map.interpreter.running $ |?     move = Input.dir4     move_straight (movimento) se movimento> 0   final final classe Game_Character   def find_mouse_path (trgt_x, trgt_y)      fake_char = Game_Character.new      fake_char.moveto (self.x, self.y)       fake_char.set_direction (self.direction)      path = []      g = MGraph.new (JetMouse :: DO_8DIR_WALKING 8: 4)     até fake_char.x == && trgt_x fake_char.y == trgt_y       se JetMouse :: USE_DIJKSTRA         path.push ( g.Dijkstra (fake_char.x, fake_char.y, trgt_x, trgt_y))       mais         path.push (g.AStar (fake_char.x, fake_char.y, trgt_x, trgt_y))       final       se o caminho [-1]! = 0         fake_char . move_straight (caminho [-1] * 2)       mais         path = []         pausa       final     final     Graphics.frame_reset     retorno path.reverse   final final classe PQueue <Matriz   def addEl (ii)     iii = 0     enquanto iii <auto && self.comprimento [iii ] <ii       iii + = 1     fim     self.insert (III, II)   final   def REMEL (ii)     iii = 0     enquanto iii <auto && self.comprimento [iii] <ii       iii + = 1     fim     self.delete_at (iii)   final   def encontrado? (ii)     i = 0     j = self.comprimento-1     ss = false     enquanto (não ss) && i <= j       mid = (i + j) / 2       se auto [meados] == ii         ff = true       mais         se auto [meados] <ii           i = meio uma         outra           j = meio-1         final       final     final     retorno ff   final final classe MGraph   attr_accessor: w,: h   attr_accessor: vizinhos   attr_accessor: passage_table   def initialize (nh, char = $ game_player)     @ w = $ game_map.width     @ h = $ game_map.height     @ vizinhos = nh     @ passage_table = Table.new (@ w @ h, nh)     for i in 0 .. @ w       para j em 0 .. @ h         para k em 1 .. nh           @ passage_table [i, j, k-1] = char.passable? (i, j, k * 2)? 1: 0           se não neighborExist (nodeOf (i, j), k)?             @ passage_table [i, j, k - 1] = 0           final         final       final     final   final   def nodeOf (x, y)     retorno y * @ w + x + um   fim   def XNode (idxNode)     retorno (idxNode-1)% @ w   final   def yNode (idxNode)     retorno (idxNode-1) / @ w   final   def neighborOf (idxNode, dir)     caso dir       quando um         retorno (idxNode + @ w)       quando 2         retorno (idxNode-1)       , quando três         de retorno (idxNode +1)       quando 4         retorno (idxNode-@ w)     final   final   neighborExist def? (idxNode, dir)     caso dir       quando um         retorno (yNode (idxNode) <@ h-1)       quando 2         retorno (XNode (idxNode)> 0)       quando 3         retorno (XNode (idxNode) <@ w-1)       , quando quatro         retorno (yNode (idxNode)> 0)     end   end   def reconstruct_path (s, t, vertices_prev)     u = t     enquanto vertices_prev [u]! = s && vertices_prev [u]! = 0       u = vertices_prev [u]     final     caso u       quando s + w @         return 1       quando s-1         return 2       s quando um         retorno 3       quando s-w @         retorno 4     acabar     retornar 0   final   def heuristic_dist (u, v)     dx = XNode (v)-XNode (u)     dy = yNode (v)-yNode (u)     retorno (dx.abs + dy.abs)   final   def Dijkstra (x1, y1 , x2, y2)     s = nodeOf (x1, y1)     = t nodeOf (x2, y2)     q = PQueue.new (1, 0)     q.addEl (s)     = vertices_dist Array.new (@ w * @ h + 1 , 9999)     vertices_prev = Array.new (@ w * @ h + 1, 0)     vertices_dist [s] = 0     , enquanto q.length> 1       d = vertices_dist [q [1]]       u = q [1]       se q.length > 2         para ii em 2 .. q.length-1           se vertices_dist [q [ii]] <d             d = vertices_dist [q [ii]]             u = q [ii]           final         final       final       se u == t         retorno reconstruct_path (s , t, vertices_prev)       final       q.remEl (u)       for i in 1 .. @ vizinhos         se @ passage_table [XNode (u), yNode (u), i - 1] == 1           v = neighborOf (u, i)           alt = vertices_dist [u] + 1           se alt <vertices_dist [v]             q.addEl (v)             vertices_dist [v] = alt             vertices_prev [v] = u           final         final       final     final     return 0   end   def AStar (x1, y1, x2, y2)     s = nodeOf (x1, y1)     = t nodeOf (x2, y2)     q = PQueue.new (1, 0)     q.addEl (s)     q1 = Array.new (@ w * @ h + 1, false)     vertices_prev = Array.new (@ w * @ h + 1, 0)     = vertices_dist Array.new (@ w * @ h + 1, 9999)     = h_score Array.new (@ w * @ h + 1, 0)     = Array f_score. novo (@ w * @ h + 1, 9999)     vertices_dist [s] = 0     h_score [s] = heuristic_dist (s, t)     f_score [s] = h_score [s]     enquanto q.length> 1       d = f_score [q [ 1]]       u = q [1]       se q.length> 2         para ii em 2 .. q.length-1           se f_score [q [ii]] <d             d = f_score [q [ii]]             u = q [ii ]           final         final       final       se u == t         retorno reconstruct_path (s, t, vertices_prev)       final       q.remEl (u)       q1 [u] = true       for i in 1 .. @ vizinhos         se @ passage_table [XNode (u), yNode ( u), i - 1] == 1           v = neighborOf (u, i)           ! se q1 [v]             = tentative_g_score vertices_dist [u] + 1             !? se q.found (v)               q.addEl (v)               tentative_is_better = true             elsif tentative_g_score <vertices_dist [v]               = true tentative_is_better             mais               tentative_is_better = false             final             se tentative_is_better               se vertices_prev [v]! = 0                 se f_score [u] <f_score [vertices_prev [v]]                   vertices_prev [v] = u                 final               mais                 vertices_prev [v] = u               final               vertices_dist [v] = tentative_g_score               h_score [v] = heuristic_dist (v, t)               f_score [v] = vertices_dist [v] + h_score [v]             final           final         final       final     final     return 0   end end classe Game_Temp   attr_accessor: move_because_of_mouse   attr_accessor: mouse_controlled_object   attr_accessor: making_path   attr_accessor: mouse_path   attr_accessor: did_mouse_change   apelido jet6742_initialize inicializar a menos que $ @   def initialize (* args, bloco &)     jet6742_initialize (* args, bloco &)     @ move_because_of_mouse = false     @ making_path = false     @ mouse_path = []   end final classe Window_Selectable   apelido jet6742_update atualizar a menos que $ @   def update (* args, bloco &)     jet6742_update (* args, bloco &)     && update_mouse se self.active self.visible   finais   apelido jet7222_top_row top_row = unless $ @   def top_row = (* args, bloco &)     @ last_cursor_move = 0 se @ last_cursor_move.nil?     @ last_cursor_move - = 1     retorno se in_rect_loop @ | | @ last_cursor_move> 0     jet7222_top_row (* args, bloco &)     @ = 10 last_cursor_move   final   update_mouse def     se JetMouse USE_WHEEL_DETECTION ::       f = Mouse.scroll       ! se f.nil?         se f [2] <0           se contents.height> self.oy && self.height - contents.height <-self.height + 32             = self.top_row self.top_row + 1           final         mais           self.top_row = self.top_row - 1 se contents.height> self.height         final       final     final     original_index = @ índice     fake_index = -2     add_x = self.viewport.nil? ? 0: self.viewport.ox     add_y = self.viewport.nil? ? 0: self.viewport.oy     self.item_max.times {| i |       rect = item_rect (i)       ? se Mouse.area (self.x - self.ox + rect.x + 16 + add_x, self.y - auto. oy + rect.y + 16 + add_y, rect.width, rect.height)         fake_index = i       final     }     @ index = fake_index == -2? original_index: fake_index     update_cursor   final final classe Scene_File   atualização wor_scefil_upd_mouse apelido unless $ @   def update (* args, bloco &)     (0 .. self.item_max - 1) cada um do | i |.       ix = @ savefile_windows [i] x.       iy = @ savefile_windows [i]. y + 48       = iw @ savefile_windows [i] largura.       ih = @ savefile_windows [i] altura.       Mouse.area se? (ix, iy, iw, ih)         @ savefile_windows [@ index]. selecionado = false         @ savefile_windows [i]. selecionado = true         @ index = i       final     final     wor_scefil_upd_mouse (* args, bloco &)   final final classe Window_NameInput   atualização wor_winnam_upd_mouse apelido unless $ @   def update (* args, bloco &)     wor_winnam_upd_mouse (* args, bloco &)     se auto. ativo e self.visible       (0 .. self.table [@ page] tamanho - 1). cada um fazer |. i |       espirre = item_rect (i)       = IRX self.x + 16 + irect.x - self.ox       Iry = self.y + 16 + irect.y - self.oy       @ index = i se Mouse.area (IRX, Iry, irect.width, irect.height)?       final     final   final final classe Window_PartyCommand   def update_mouse     (0 .. self.item_max - 1) cada um fazer | i |.     espirre = item_rect (i)     = IRX self.viewport.ox + 16 + irect.x - auto.

    IRX = self.viewport.ox + 288 + 16 + 96 + irect.x
    Iry = 288 + 16 + 64 + irect.y
    self.index = i se Mouse.area? (IRX, Iry, irect.width, irect.height )
    final
  final
final classe Window_EventPopUp <Window_Base   def initialize (x, y, largura, altura, texto)     super (x, y, largura, altura)     self.opacity = 0     @ texto = texto     atualização   final   def refresh     self.contents.clear     auto . contents.draw_text (0, 0, self.width, 24, @ texto)   final final classe Game_Event   attr_accessor: popup_window,: Página   def check_for_comment (regexp)     retornar if@list.nil falso?     para o item na lista @       se item.code == 108 ou 408 item.code ==         se! item.parameters [0] [regexp]. nulo?           retornar $ 1.nil? ? verdade: $ 1         final       final     final     return false   end   def através     verdadeiro retorno se check_for_comment (Rato / POR / i) && $ game_temp.making_path     @ return através   final   de atualização jet2734_update apelido unless $ @   def update (* args, & bloco)     jet2734_update (* args, & bloco)     update_mouse_popup     update_mouse_change   final   def update_mouse_popup     interruptor = $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH]     se Mouse.true_grid == [self.x, self.y] &&! && interruptor! @ apagados       f self.check_for_comment = (/ MOUSE texto (. +) / i)       , se f = falso!         Bitmap.new q = (1, 1)         = tamanho q.text_size (f)         x = self.screen_x - 16 - Size.Width / 2         tamanho - y = self.screen_y - 52 . altura / 2         se self.popup_window! = nil           self.popup_window.dispose           self.popup_window = nil         final         self.popup_window Window_EventPopUp.new = (x, y,           Size.Width + 34, Size.Height + 34, f)         q. dispor         q = nil       final     mais       se self.popup_window! = nil         self.popup_window.dispose         self.popup_window = nil       final     final   final   update_mouse_change def     se Mouse.true_grid == [self.x, self.y]       f = self.check_for_comment (( / salvamento MOUSE PIC (. +) / i) falso)       se f! = false         se f.to_i! = 0           $ cursor.change_cursor (f.to_i) a menos $ cursor.current_cursor == f.to_i         mais           $ cursor.change_cursor ( f) a menos que $ cursor.current_cursor == f         final         game_temp.did_mouse_change $ = true       final     final   final final classe Scene_Map   apelido atualização jet6742_update unless $ @   def update (* args, bloco &)     se! $ game_message.visible       update_mouse_left_click     final     jet6742_update (* args, & bloco)     check_mouse_change   finais   apelido jet7811_terminate encerrar a menos que $ @   def encerrar (* args, bloco &)     para o evento em $ game_map.events.values       ​​próximos se event.popup_window.nil?       event.popup_window.dispose menos event.popup_window.disposed?       event.popup_window = nil     end     $ cursor.create_cursor (JetMouse CURSOR_PICTURE ::) se! [JetMouse :: CURSOR_PICTURE,       JetMouse :: ICON_INDEX]. incluir? (cursor.current_cursor $)     $ cursor.opacity = 0     jet7811_terminate (* args, bloco &)     $ cursor . opacidade = 255 a menos que $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH]   final   update_transfer_player jet8887_update_transfer_player apelido unless $ @   def update_transfer_player (* args, bloco &)     se $ game_player.transfer?       $ cursor.create_cursor (JetMouse CURSOR_PICTURE ::) se     & Bloco)   final   check_mouse_change def     retorno se $ game_switches [JetMouse :: TURN_MOUSE_OFF_SWITCH]     se $ game_message.visible | |? $ game_player.transfer       cursor.create_cursor $ (JetMouse CURSOR_PICTURE ::) se     se $ game_temp.did_mouse_change.nil? &&       ! [JetMouse :: CURSOR_PICTURE, JetMouse :: ICON_INDEX]. incluir? (cursor.current_cursor $)     $ game_temp.did_mouse_change = nil   end   def update_mouse_left_click     retorno se $ game_map.interpreter.running? | Game_player.transfer $ |?     se Mouse.click (1)?       event_activated = false       para o evento em $ game_map.events_xy (* Mouse.true_grid)         se event.check_for_comment (CLIQUE / MOUSE / i)           event.start           event_activated = true         elsif ( event.x -. $ game_player.x) ABS + (event.y -. $ game_player.y) abs == 1           !.? se [3, 4] incluem (event.trigger) &&                ! ​​([0, 2] . include (event.priority_type) | | event.trigger == 0) &&?                   [0, 1] incluem (event.page.list.size)!.?             se (event.y - $ game_player.y) abs>.                (event.x - $ game_player.x). abs               se event.y - $ game_player.y> 0                 game_player.set_direction $ (2)               mais                 game_player.set_direction $ (8)               fim             mais               se event.x - $ game_player.x> 0                 game_player.set_direction $ (6)               mais                 game_player.set_direction $ (4)               fim             fim             event.start             event_activated = true             pausa           final         final         se! event_activated           for i in ["UP", "DOWN", "direita", "LEFT"]             if (MOVE / MOUSE # {i} / i) event.check_for_comment               event_activated = true               caso eu               quando "UP"                 x, y = event.x, event.y - 1               quando "DOWN"                 x, y = event.x evento, . y + 1               quando "LEFT"                 x, y = event.x - 1, event.y               quando "DIREITO"                 x, y = event.x + 1, event.y               final               pausa             final           final         final       final       ! se event_activated         x, y = * Mouse.true_grid       final       se! x.nil?         $ game_temp.move_because_of_mouse = true         g = $ game_player.find_mouse_path (x, y)         = g $ game_temp.mouse_path       final     final   final final

Nenhum comentário:

Postar um comentário