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