RPG maker VX
Últimos temas
» Script de menu
por maxi Jue 04 Dic 2014, 1:44 pm

» Ayuda intro animado!!!
por maxi Miér 03 Dic 2014, 9:41 pm

» ayuda con este engin
por maxi Miér 03 Dic 2014, 8:42 am

» Hud de Vida 100% Personalizable - Engine Sencillo! Sin Scripts :)
por davidaikago Jue 20 Nov 2014, 10:58 am

» Ultimate parallax control by:GDS [ace]
por arellano Miér 08 Oct 2014, 8:28 pm

» Script Touhou (animated) Map name (v1.4)
por davidaikago Miér 08 Oct 2014, 2:09 pm

» tutorial puerta nueva
por davidaikago Miér 08 Oct 2014, 9:08 am

» cámara de fotos
por davidaikago Miér 08 Oct 2014, 9:05 am

» Imperial Action System II Demo
por davidaikago Miér 08 Oct 2014, 8:47 am

» VE Batalla animada [ACE]
por FhierusIV Jue 18 Sep 2014, 10:57 am

» Nuevo Reglamento del Foro [Vigente desde Septiembre 2014]
por maxi Miér 17 Sep 2014, 8:37 am

» MOG|Animated Title
por Souta21 Mar 09 Sep 2014, 7:24 pm

» Tutorial Engine - Cambiar Character al Equipar Objeto
por maxi Lun 21 Jul 2014, 10:19 am

» Script de climas
por gambasoxd Sáb 19 Jul 2014, 8:58 am

» Script de contraseña(codigo) para abrir un cofre
por rpgame Jue 03 Jul 2014, 6:03 pm

¿Quién está en línea?
En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado

Ninguno

[ Ver toda la lista ]


La mayor cantidad de usuarios en línea fue 117 el Mar 09 Ago 2011, 3:39 pm.

Sistema de Mouse

Ver el tema anterior Ver el tema siguiente Ir abajo

Sistema de Mouse

Mensaje por tami_smiles el Dom 03 Jun 2012, 1:22 pm

Script que hace que se pueda jugar con el mouse. (No lo probe asi que no estoy segura de su funcionamiento)

Código:
#===============================================================================
# Mouse System (RGSS3)
# By Jet10985(Jet)
# Some Code by: Woratana, Berka
# Uses: ListRA-92's Path Finding
# Super Heavy Testing/Debug Help/Requested By: Nathanial(Beleren)
#===============================================================================
# This script will allow full use of the mouse inside of rmvx for various
# purposes.
# This script has: 7 customization options.
#===============================================================================
# Overwritten Methods:
# Game_Player: move_by_input
#-------------------------------------------------------------------------------
# Aliased methods:
# Scene_Map: update, terminate, update_transfer_player
# Input: update, trigger?, press?, repeat?, dir4, dir8
# Window_Selectable: update, top_row=
# Scene_File: update
# Window_NameInput: update
# Game_Temp: initialize
# Game_Event: initialize, update
#===============================================================================

=begin
Showing text above event when mouse hovers:

If you want a message to appear over an event's head if the mouse is hovering
over the event, put this comment in the event:

MOUSE TEXT MESSAGE HERE

everything after TEXT will be the hovering display.
--------------------------------------------------------------------------------
Change mouse picture above event when mouse hovers:

If you want the mouse's picture to temporarily change whne over an event, put
this comment in the event

MOUSE PIC NAME/NUMBER

if you put a name, the mouse will become that picture, but if you put a number
then the mouse will become the icon that is the id number
--------------------------------------------------------------------------------
Specific mouse click movement routes:

If you want the player to land specifically in a square around an event when
they click to move on the event, put one of these comments in the event:

MOUSE MOVE UP/LEFT/RIGHT/DOWN

only put the direction that you want the player to land on.
--------------------------------------------------------------------------------
Click to activate:

If you want an event to automatically start when it is clicked on, place
this in an event comment:

MOUSE CLICK
--------------------------------------------------------------------------------
Don't stop the player when walking over a touch event:

By default, this script will stop a mouse-caused movement if the player walks
over/under a player touch/event touch event. If you want the event to activate,
but for the player to keep walking to their destination, put this comment in the
event:

MOUSE NOSTOP
--------------------------------------------------------------------------------
Ignore Events:

To have an event be ignored when the mouse makes it's movement path(as if the
event isn't there), put this comment in the event:

MOUSE THROUGH
--------------------------------------------------------------------------------
Extra Notes:

In selectable windows that have more items than what's shown, players can
either put the mouse below the window to scroll down, OR use the mouse's
scroll wheel to scroll up/down.

You can activate action button events by standing next to the event and clicking
on it with the mouse.
=end
module JetMouse
 
  # If you are using a graphic, this is it.
  # It must be in the Graphics/System folder.
  CURSOR_PICTURE = "cursor-mouse"
 
  # If you aren't using a graphic, this icon will be the mouse.
  # To use the icon, just put a non-existant picture as the above config
  ICON_INDEX = 387
 
  # Do you want the player to be able to move by clicking the mouse?
  ALLOW_MOUSE_MOVEMENT = true
 
  # Do you want mouse movement to do 8-dir walking?
  # Requires 8-Dir Walking by Jet.
  DO_8DIR_WALKING = false
 
  # Turning this switch on will make the mouse invisible and unusuable until
  # the switch is turned off
  TURN_MOUSE_OFF_SWITCH = 20
 
  # Do you want the mouse to check for mouse wheel scrolling in selectbale
  # windows? Not using this may reduce some rare cases of lag.
  USE_WHEEL_DETECTION = false
 
  # Do you want to use the Dijkstra formula for pathfinding?
  # This is more accurate, but slower.
  USE_DIJKSTRA = true
 
end

#===============================================================================
# DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
#===============================================================================
module Mouse
 
  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.new('user32', 'FindWindowA', 'pp', 'l')
  GetClientRect = Win32API.new('user32', 'GetClientRect', 'lp', 'i')
  GetWindowRect = Win32API.new('user32', 'GetWindowRect', 'lp', 'i')
  contents = File.open('Game.ini', 'r') { |f| f.read }
  q = contents[/Title=(.+)/].nil? ? "cccc" : $1
  @handle = FindWindowA.call('RGSS Player', q)
  module_function
 
  Point = Struct.new(:x, :y)
 
  Message = Struct.new(:message, :wparam, :lparam, :pt)
 
  Param = Struct.new(:x, :y, :scroll)
 
  Scroll = 0x0000020A
 
  def hiword(dword); return((dword&0xffff0000) >> 16)&0x0000ffff; end
  def loword(dword); return dword&0x0000ffff; end
   
  def word2signed_short(value)
    return value if (value&0x8000) == 0
    return -1 *((~value&0x7fff) + 1)
  end
 
  def unpack_dword(buffer, offset = 0)
    ret = buffer[offset + 0]&0x000000ff
    ret |=(buffer[offset + 1] <<(8 * 1))&0x0000ff00
    ret |=(buffer[offset + 2] <<(8 * 2))&0x00ff0000
    ret |=(buffer[offset + 3] <<(8 * 3))&0xff000000
    return ret
  end
 
  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(buffer,4*3)
    msg.pt.x = unpack_dword(buffer, 4 * 5)
    msg.pt.y = unpack_dword(buffer, 4 * 6)
    return msg
  end
 
  def wmcallback(msg)
    return unless msg.message == Scroll
    param = Param.new
    param.x = word2signed_short(loword(msg.lparam))
    param.y = word2signed_short(hiword(msg.lparam))
    param.scroll = word2signed_short(hiword(msg.wparam))
    return [param.x, param.y, param.scroll]
  end
 
  def click?(button)
    return false if $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH]
    return true if @keys.include?(button)
    return false
  end
 
  def press?(button)
    return false if $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH]
    return true if @press.include?(button)
    return false
  end
 
  def set_pos(x_pos = 0, y_pos = 0)
    width,height = client_size
    if (x_pos.between?(0, width) && y_pos.between?(0, height))
      SetCursorPos.call(client_pos[0] + x_pos,client_pos[1] + y_pos)
    end
  end
 
  def update
    return if $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH]
    @pos = Mouse.pos
    @keys, @press = [], []
    @keys.push(1) if GetAsyncKeyState.call(1)&0x01==1
    @keys.push(2) if GetAsyncKeyState.call(2)&0x01==1
    @keys.push(3) if GetAsyncKeyState.call(4)&0x01==1
    @press.push(1) if pressed?(1)
    @press.push(2) if pressed?(2)
    @press.push(3) if pressed?(4)
  end
 
  def pressed?(key)
    return true unless GetKeyState.call(key).between?(0, 1)
    return false
  end
 
  def global_pos
    pos = [0, 0].pack('ll')
    GetCursorPo.call(pos) != 0 ?(return pos.unpack('ll')):(return [0, 0])
  end
 
  def pos
    return 0, 0 if $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH]
    x, y = screen_to_client(*global_pos)
    width, height = client_size
    begin
      x = 0 if x <= 0; y = 0 if y <= 0
      x = width if x >= width; y = height if y >= height
      return x, y
    end
  end
 
  def screen_to_client(x, y)
    return nil unless x && y
    pos = [x, y].pack('ll')
    ScreenToClient.call(@handle, pos) != 0 ?(return pos.unpack('ll')):(return [0, 0])
  end
 
  def client_size
    rect = [0, 0, 0, 0].pack('l4')
    GetClientRect.call(@handle, rect)
    right,bottom = rect.unpack('l4')[2..3]
    return right, bottom
  end
 
  def client_pos
    rect=[0, 0, 0, 0].pack('l4')
    GetWindowRect.call(@handle, rect)
    left, upper = rect.unpack('l4')[0..1]
    return left + 4, upper + 30
  end
 
  def grid
    return [-1, -1] if $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH]
    return [-1, -1] if @pos.nil?
    return [(@pos[0]/32),(@pos[1]/32)]
  end
 
  def true_grid
    return [grid[0] + $game_map.display_x / 256, grid[1] + $game_map.display_y / 256]
  end
 
  def area?(x, y, width, height)
    return false if $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH]
    return false if @pos.nil?
    return @pos[0].between?(x, width + x) && @pos[1].between?(y, height + y)
  end
 
  def scroll
    msg="\0"*32;Get_Message.call(msg,0,0,0);r=wmcallback(unpack_msg(msg))
    return r if !r.nil?
  end
end

class Sprite_Cursor < Sprite_Base
 
  attr_accessor :current_cursor, :not_default
 
  include JetMouse
 
  def initialize
    super
    @current_cursor = ""
    @not_default = false
    Win32API.new('user32', 'ShowCursor', 'i', 'i').call(0)
    self.z = 5004
    create_cursor(CURSOR_PICTURE)
    $game_switches = []
    update
  end
 
  def create_cursor(cursor = "")
    self.bitmap.dispose unless self.bitmap.nil?
    self.bitmap = nil
    begin
      self.bitmap = Cache.system(cursor)
      @current_cursor = cursor
    rescue
      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
    end
    @not_default = false
  end
 
  def change_cursor(cursor)
    self.bitmap.dispose unless self.bitmap.nil?
    self.bitmap = nil
    begin
      self.bitmap = Cache.system(cursor)
      @current_cursor = cursor
      @not_default = true
    rescue
      begin
        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
      rescue
        create_cursor(CURSOR_PICTURE)
      end
    end
  end

  def update
    return if self.disposed?
    if $game_switches[TURN_MOUSE_OFF_SWITCH]
      self.opacity = 0 unless self.opacity == 0
    end
    self.opacity = 255 unless self.opacity == 255
    super
    x = self.x
    y = self.y
    self.x, self.y = Mouse.pos
    self.x -= 8 if @not_default
    self.y -= 8 if @not_default
  end
end

$cursor = Sprite_Cursor.new

module Input
 
  class << self
   
    alias jet5888_press? press? unless $@
    def press?(arg)
      if arg == Input::C
        return true if Mouse.press?(1)
      elsif arg == Input::B
        return true if Mouse.press?(2)
      end
      jet5888_press?(arg)
    end
   
    alias jet5888_repeat? repeat? unless $@
    def repeat?(arg)
      if arg == Input::C
        return true if Mouse.click?(1)
      elsif arg == Input::B
        return true if Mouse.click?(2)
      end
      jet5888_repeat?(arg)
    end
   
    alias jet5888_trigger? trigger? unless $@
    def trigger?(arg)
      if arg == Input::C
        return true if Mouse.click?(1)
      elsif arg == Input::B
        return true if Mouse.click?(2)
      end
      jet5888_trigger?(arg)
    end
   
    alias jet8432_update update unless $@
    def update(*args, &block)
      jet8432_update(*args, &block)
      if $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH] && $cursor.opacity != 0
        $cursor.opacity = 0
      end
      $cursor.update unless $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH]
      Mouse.update unless $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH]
    end
 
    alias jet1626_dir4 dir4 unless $@
    def dir4(*args, &block)
      if !$game_temp.nil?
        if $game_temp.move_because_of_mouse
          if !$game_temp.mouse_path.empty? && $game_player.movable? &&
              !$game_map.interpreter.running? && SceneManager.scene_is?(Scene_Map) &&
              jet1626_dir4(*args, &block) == 0
            f = $game_temp.mouse_path.reverse!.pop
            $game_temp.mouse_path.reverse!
            return f * 2
          else
            $game_temp.move_because_of_mouse = false
            $game_temp.mouse_path = []
          end
        end
      end
      jet1626_dir4(*args, &block)
    end
   
    alias jet1626_dir8 dir8 unless $@
    def dir8(*args, &block)
      if !$game_temp.nil?
        if $game_temp.move_because_of_mouse
          if !$game_temp.mouse_path.empty? && $game_player.movable? &&
              !$game_map.interpreter.running? && SceneManager.scene_is?(Scene_Map) &&
              jet1626_dir8(*args, &block) == 0
            f = $game_temp.mouse_path.reverse!.pop
            $game_temp.mouse_path.reverse!
            if [1, 2, 3, 4].include?(f)
              return f * 2
            else
              case f
              when 5
                return 1
              when 6
                return 3
              when 7
                return 7
              when 8
                return 9
              end
            end
          else
            $game_temp.move_because_of_mouse = false
            $game_temp.mouse_path = []
          end
        end
      end
      jet1626_dir8(*args, &block)
    end
  end
end

class Game_Player
 
  def move_by_input
    return if !movable? || $game_map.interpreter.running?
    move = Input.dir4
    move_straight(move) if move > 0
  end
end

class 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)
    until fake_char.x == trgt_x && fake_char.y == trgt_y
      if JetMouse::USE_DIJKSTRA
        path.push(g.Dijkstra(fake_char.x, fake_char.y, trgt_x, trgt_y))
      else
        path.push(g.AStar(fake_char.x, fake_char.y, trgt_x, trgt_y))
      end
      if path[-1] != 0
        fake_char.move_straight(path[-1] * 2)
      else
        path = []
        break
      end
    end
    Graphics.frame_reset
    return path.reverse
  end
end

class PQueue < Array

  def addEl(ii)
    iii = 0
    while iii < self.length && self[iii] < ii
      iii += 1
    end
    self.insert(iii,ii)
  end

  def remEl(ii)
    iii = 0
    while iii < self.length && self[iii] < ii
      iii += 1
    end
    self.delete_at(iii)
  end

  def found?(ii)
    i = 0
    j = self.length-1
    ff = false
    while (not ff) && i <= j
      mid = (i+j)/2
      if self[mid] == ii
        ff = true
      else
        if self[mid] < ii
          i = mid+1
        else
          j = mid-1
        end
      end
    end
    return ff
  end
end

class MGraph

  attr_accessor :w, :h
  attr_accessor :neighbors
  attr_accessor :passage_table

  def initialize(nh, char = $game_player)
    @w = $game_map.width
    @h = $game_map.height
    @neighbors = nh
    @passage_table = Table.new(@w,@h,nh)
    for i in 0..@w
      for j in 0..@h
        for k in 1..nh
          @passage_table[i,j,k-1] = char.passable?(i, j, k * 2) ? 1 : 0
          if not neighborExist?(nodeOf(i, j), k)
            @passage_table[i, j, k - 1] = 0
          end
        end
      end
    end
  end

  def nodeOf(x,y)
    return y*@w+x+1
  end

  def xNode(idxNode)
    return (idxNode-1) % @w
  end
 
  def yNode(idxNode)
    return (idxNode-1)/@w
  end

  def neighborOf(idxNode,dir)
    case dir
      when 1
        return (idxNode+@w)
      when 2
        return (idxNode-1)
      when 3
        return (idxNode+1)
      when 4
        return (idxNode-@w)
    end
  end

  def neighborExist?(idxNode,dir)
    case dir
      when 1
        return (yNode(idxNode)<@h-1)
      when 2
        return (xNode(idxNode)>0)
      when 3
        return (xNode(idxNode)<@w-1)
      when 4
        return (yNode(idxNode)>0)
    end
  end

  def reconstruct_path(s,t,vertices_prev)
    u=t
    while vertices_prev[u] != s && vertices_prev[u] != 0
      u = vertices_prev[u]
    end
    case u
      when s+@w
        return 1
      when s-1
        return 2
      when s+1
        return 3
      when s-@w
        return 4
    end
    return 0
  end

  def heuristic_dist(u,v)
    dx = xNode(v)-xNode(u)
    dy = yNode(v)-yNode(u)
    return (dx.abs+dy.abs)
  end
 
  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
    while q.length > 1
      d = vertices_dist[q[1]]
      u = q[1]
      if q.length > 2
        for ii in 2..q.length-1
          if vertices_dist[q[ii]] < d
            d = vertices_dist[q[ii]]
            u = q[ii]
          end
        end
      end
      if u == t
        return reconstruct_path(s,t,vertices_prev)
      end
      q.remEl(u)
      for i in 1..@neighbors
        if @passage_table[xNode(u), yNode(u), i - 1] == 1
          v = neighborOf(u, i)
          alt = vertices_dist[u] + 1
          if alt < vertices_dist[v]
            q.addEl(v)
            vertices_dist[v] = alt
            vertices_prev[v] = u
          end
        end
      end
    end
    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)
    f_score = Array.new(@w * @h + 1, 9999)
    vertices_dist[s] = 0
    h_score[s] = heuristic_dist(s, t)
    f_score[s] = h_score[s]
    while q.length > 1
      d = f_score[q[1]]
      u = q[1]
      if q.length > 2
        for ii in 2..q.length-1
          if f_score[q[ii]] < d
            d = f_score[q[ii]]
            u = q[ii]
          end
        end
      end
      if u == t
        return reconstruct_path(s, t, vertices_prev)
      end
      q.remEl(u)
      q1[u] = true
      for i in 1..@neighbors
        if @passage_table[xNode(u), yNode(u), i - 1] == 1
          v = neighborOf(u, i)
          if !q1[v]
            tentative_g_score = vertices_dist[u] + 1
            if !q.found?(v)
              q.addEl(v)
              tentative_is_better = true
            elsif tentative_g_score < vertices_dist[v]
              tentative_is_better = true
            else
              tentative_is_better = false
            end
            if tentative_is_better
              if vertices_prev[v] != 0
                if f_score[u] < f_score[vertices_prev[v]]
                  vertices_prev[v] = u
                end
              else
                vertices_prev[v] = u
              end
              vertices_dist[v] = tentative_g_score
              h_score[v] = heuristic_dist(v, t)
              f_score[v] = vertices_dist[v] + h_score[v]
            end
          end
        end
      end
    end
    return 0
  end
end

class 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
 
  alias jet6742_initialize initialize unless $@
  def initialize(*args, &block)
    jet6742_initialize(*args, &block)
    @move_because_of_mouse = false
    @making_path = false
    @mouse_path = []
  end
end

class Window_Selectable
 
  alias jet6742_update update unless $@
  def update(*args, &block)
    jet6742_update(*args, &block)
    update_mouse if self.active && self.visible
  end
 
  alias jet7222_top_row top_row= unless $@
  def top_row=(*args, &block)
    @last_cursor_move = 0 if @last_cursor_move.nil?
    @last_cursor_move -= 1
    return if @in_rect_loop || @last_cursor_move > 0
    jet7222_top_row(*args, &block)
    @last_cursor_move = 10
  end
 
  def update_mouse
    if JetMouse::USE_WHEEL_DETECTION
      f = Mouse.scroll
      if !f.nil?
        if f[2] < 0
          if contents.height > self.height && self.oy - contents.height < -self.height + 32
            self.top_row = self.top_row + 1
          end
        else
          self.top_row = self.top_row - 1 if contents.height > self.height
        end
      end
    end
    original_index = @index
    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)
      if Mouse.area?(self.x - self.ox + rect.x + 16 + add_x, self.y - self.oy + rect.y + 16 + add_y, rect.width, rect.height)
        fake_index = i
      end
    }
    @index = fake_index == -2 ? original_index : fake_index
    update_cursor
  end
end

class Scene_File
 
  alias wor_scefil_upd_mouse update unless $@
  def update(*args, &block)
    (0..self.item_max - 1).each do |i|
      ix = @savefile_windows[i].x
      iy = @savefile_windows[i].y + 48
      iw = @savefile_windows[i].width
      ih = @savefile_windows[i].height
      if Mouse.area?(ix, iy, iw, ih)
        @savefile_windows[@index].selected = false
        @savefile_windows[i].selected = true
        @index = i
      end
    end
    wor_scefil_upd_mouse(*args, &block)
  end
end

class Window_NameInput
 
  alias wor_winnam_upd_mouse update unless $@
  def update(*args, &block)
    wor_winnam_upd_mouse(*args, &block)
    if self.active and self.visible
      (0..self.table[@page].size - 1).each do |i|
      irect = item_rect(i)
      irx = self.x + 16 + irect.x - self.ox
      iry = self.y + 16 + irect.y - self.oy
      @index = i if Mouse.area?(irx, iry, irect.width, irect.height)
      end
    end
  end
end

class Window_PartyCommand
 
  def update_mouse
    (0..self.item_max - 1).each do |i|
    irect = item_rect(i)
    irx = self.viewport.ox + 16 + irect.x - self.ox
    iry = 288 + 16 + irect.y - self.oy + 64
    self.index = i if Mouse.area?(irx, iry, irect.width, irect.height)
    end
  end
end

class Window_ActorCommand
 
  def update_mouse
    (0..self.item_max - 1).each do |i|
    irect = item_rect(i)
    irx = self.viewport.ox + 288 + 16 + irect.x + 96
    iry = 288 + 16 + irect.y + 64
    self.index = i if Mouse.area?(irx, iry, irect.width, irect.height)
    end
  end
end

class Window_EventPopUp < Window_Base
 
  def initialize(x, y, width, height, text)
    super(x, y, width, height)
    self.opacity = 0
    @text = text
    refresh
  end
 
  def refresh
    self.contents.clear
    self.contents.draw_text(0, 0, self.width, 24, @text)
  end
end

class Game_Event
 
  attr_accessor :popup_window, :page
 
  def check_for_comment(regexp)
    return false if @list.nil?
    for item in @list
      if item.code == 108 or item.code == 408
        if !item.parameters[0][regexp].nil?
          return $1.nil? ? true : $1
        end
      end
    end
    return false
  end
 
  def through
    return true if check_for_comment(/MOUSE THROUGH/i) && $game_temp.making_path
    return @through
  end
 
  alias jet2734_update update unless $@
  def update(*args, &block)
    jet2734_update(*args, &block)
    update_mouse_popup
    update_mouse_change
  end
 
  def update_mouse_popup
    switch = $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH]
    if Mouse.true_grid == [self.x, self.y] && !switch && !@erased
      f = self.check_for_comment(/MOUSE TEXT(.+)/i)
      if f != false
        q = Bitmap.new(1, 1)
        size = q.text_size(f)
        x = self.screen_x - 16 - size.width / 2
        y = self.screen_y - 52 - size.height / 2
        if self.popup_window != nil
          self.popup_window.dispose
          self.popup_window = nil
        end
        self.popup_window = Window_EventPopUp.new(x, y,
          size.width + 34, size.height + 34, f)
        q.dispose
        q = nil
      end
    else
      if self.popup_window != nil
        self.popup_window.dispose
        self.popup_window = nil
      end
    end
  end
 
  def update_mouse_change
    if Mouse.true_grid == [self.x, self.y]
      f =(self.check_for_comment(/MOUSE PIC(.+)/i) rescue false)
      if f != false
        if f.to_i != 0
          $cursor.change_cursor(f.to_i) unless $cursor.current_cursor == f.to_i
        else
          $cursor.change_cursor(f) unless $cursor.current_cursor == f
        end
        $game_temp.did_mouse_change = true
      end
    end
  end
end


class Scene_Map
 
  alias jet6742_update update unless $@
  def update(*args, &block)
    if !$game_message.visible
      update_mouse_left_click
    end
    jet6742_update(*args, &block)
    check_mouse_change
  end
 
  alias jet7811_terminate terminate unless $@
  def terminate(*args, &block)
    for event in $game_map.events.values
      next if event.popup_window.nil?
      event.popup_window.dispose unless event.popup_window.disposed?
      event.popup_window = nil
    end
    $cursor.create_cursor(JetMouse::CURSOR_PICTURE) if ![JetMouse::CURSOR_PICTURE,
      JetMouse::ICON_INDEX].include?($cursor.current_cursor)
    $cursor.opacity = 0
    jet7811_terminate(*args, &block)
    $cursor.opacity = 255 unless $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH]
  end
 
  alias jet8887_update_transfer_player update_transfer_player unless $@
  def update_transfer_player(*args, &block)
    if $game_player.transfer?
      $cursor.create_cursor(JetMouse::CURSOR_PICTURE) if ![JetMouse::CURSOR_PICTURE,
        JetMouse::ICON_INDEX].include?($cursor.current_cursor)
    end
    jet8887_update_transfer_player(*args, &block)
  end
 
  def check_mouse_change
    return if $game_switches[JetMouseTURN_MOUSE_OFF_SWITCH]
    if $game_message.visible || $game_player.transfer?
      $cursor.create_cursor(JetMouse::CURSOR_PICTURE) if ![JetMouse::CURSOR_PICTURE,
        JetMouse::ICON_INDEX].include?($cursor.current_cursor)
      return
    end
    $cursor.create_cursor(JetMouse::CURSOR_PICTURE) if $game_temp.did_mouse_change.nil? &&
      ![JetMouse::CURSOR_PICTURE, JetMouse::ICON_INDEX].include?($cursor.current_cursor)
    $game_temp.did_mouse_change = nil
  end

  def update_mouse_left_click
    return if $game_map.interpreter.running? || $game_player.transfer?
    if Mouse.click?(1)
      event_activated = false
      for event in $game_map.events_xy(*Mouse.true_grid)
        if event.check_for_comment(/MOUSE CLICK/i)
          event.start
          event_activated = true
        elsif (event.x - $game_player.x).abs + (event.y - $game_player.y).abs == 1
          if ![3, 4].include?(event.trigger) &&
              (![0, 2].include?(event.priority_type) || event.trigger == 0) &&
                  ![0, 1].include?(event.page.list.size)
            if (event.y - $game_player.y).abs >
              (event.x - $game_player.x).abs
              if event.y - $game_player.y > 0
                $game_player.set_direction(2)
              else
                $game_player.set_direction(8)
              end
            else
              if event.x - $game_player.x > 0
                $game_player.set_direction(6)
              else
                $game_player.set_direction(4)
              end
            end
            event.start
            event_activated = true
            break
          end
        end
        if !event_activated
          for i in ["UP", "DOWN", "RIGHT", "LEFT"]
            if event.check_for_comment(/MOUSE MOVE #{i}/i)
              event_activated = true
              case i
              when "UP"
                x, y = event.x, event.y - 1
              when "DOWN"
                x, y = event.x, event.y + 1
              when "LEFT"
                x, y = event.x - 1, event.y
              when "RIGHT"
                x, y = event.x + 1, event.y
              end
              break
            end
          end
        end
      end
      if !event_activated
        x, y = *Mouse.true_grid
      end
      if !x.nil?
        $game_temp.move_because_of_mouse = true
        g = $game_player.find_mouse_path(x, y)
        $game_temp.mouse_path = g
      end
    end
  end
end


Última edición por tami_smiles el Dom 03 Jun 2012, 1:32 pm, editado 1 vez
avatar
tami_smiles
50
50

Femenino

Edad 24

Cantidad de envíos 80

Maker Cash 150

Reputación 24


Volver arriba Ir abajo

Re: Sistema de Mouse

Mensaje por blah24 el Dom 03 Jun 2012, 1:25 pm

[Tienes que estar registrado y conectado para ver este vínculo]
avatar
blah24
300
300

Masculino

Edad 18

Cantidad de envíos 475

Maker Cash 1203

Reputación 64


Extras
Sobre mí:: Tengo 15 años, el maldito perfil no me deja cambiar la edad :okay :(:

Volver arriba Ir abajo

Re: Sistema de Mouse

Mensaje por tami_smiles el Dom 03 Jun 2012, 1:33 pm

Que ocurre? Que hice mal? T_T
avatar
tami_smiles
50
50

Femenino

Edad 24

Cantidad de envíos 80

Maker Cash 150

Reputación 24


Volver arriba Ir abajo

Re: Sistema de Mouse

Mensaje por Healing_wind el Lun 04 Jun 2012, 9:37 am

creo que se refiere a que los scripts deben estar entre el comando [code] y no entre [spoiler], echale un ojo a las razones en este link y luego editalo para evitar mas inconvenientes:
[Tienes que estar registrado y conectado para ver este vínculo]
avatar
Healing_wind
220
220

Masculino

Edad 27

Cantidad de envíos 250

Maker Cash 328

Reputación 42


Volver arriba Ir abajo

Re: Sistema de Mouse

Mensaje por Arquebuss el Lun 04 Jun 2012, 10:40 pm

Lo de las reglas es importante, pero no le pueden dar solo la amenaza por el dia de hoy.

*Referencia a la regla de la publicacion de scripts



Me parece que la razon mas que nada es devido a que en spontier acepta los emoticonos, por tal motivo cuando se publica algunas sintaxis del script se consideran emoticones, como por ejemplo el script que se publico aca tiene un emoticone...
Con code no pasa eso.
avatar
Arquebuss
130
130

Masculino

Edad 24

Cantidad de envíos 151

Maker Cash 222

Reputación 39


Extras
Sobre mí::

Volver arriba Ir abajo

Re: Sistema de Mouse

Mensaje por Mike_182 el Mar 05 Jun 2012, 12:40 am

Exacto arquebuss, pero tami, no te preocupes, ya he editado casi todos los post de scripts poniendo [code] en los temas, ya se me hizo costumbre XD
No es para enojarse ni llamar fuerte la atencion, es un error de codigo nada mas, error de 4 letritas, a nadie jamas le he llamado la atención por eso.
Esta vez lo he editado yo, pero eso si tami, ponle algo mas info al post como imágenes y créditos... algo como [Tienes que estar registrado y conectado para ver este vínculo].
Y no te preocupes, es un error mínimo porque igual yo les edito el post, los que si se deben de llamar la atención son los que saben que lo hacen a propósito como doble post y necropost.

Saludos !


[Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]
avatar
Mike_182
Super Moderador
Super Moderador

Masculino

Edad 22

Cantidad de envíos 814

Maker Cash 1043

Reputación 150


Extras
Sobre mí::

Volver arriba Ir abajo

Re: Sistema de Mouse

Mensaje por Healing_wind el Mar 05 Jun 2012, 11:54 am

Bueno volviendo al tema, me tiro un error el script algo con una constante creo, no me acuerdo bien creo que era algo de "pointer" y "mad" algo asi (me olvide de traer las screens luego las posteo)
avatar
Healing_wind
220
220

Masculino

Edad 27

Cantidad de envíos 250

Maker Cash 328

Reputación 42


Volver arriba Ir abajo

Re: Sistema de Mouse

Mensaje por tami_smiles el Miér 06 Jun 2012, 3:51 pm

Lo sientoo! Es que no pude probarlo y poner imagenes nipex
Gracias por editar mikee Wink
avatar
tami_smiles
50
50

Femenino

Edad 24

Cantidad de envíos 80

Maker Cash 150

Reputación 24


Volver arriba Ir abajo

Re: Sistema de Mouse

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.