Eventers Lab & G+ Games (ELG+)
Olá, se você já é cadastrado no nosso fórum, faça seu login, se ainda não é, não perca tempo! Cadastre-se já!

Participe do fórum, é rápido e fácil

Eventers Lab & G+ Games (ELG+)
Olá, se você já é cadastrado no nosso fórum, faça seu login, se ainda não é, não perca tempo! Cadastre-se já!
Eventers Lab & G+ Games (ELG+)
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» 2 Players no jogo (Backup RMB)
Andar para oito direções!!! EmptyDom Jul 31, 2011 5:39 pm por Rodrigo Vernaschi

» Chamar Bote
Andar para oito direções!!! EmptyDom Jul 31, 2011 5:16 pm por Rodrigo Vernaschi

» Caixa de Texto Acima do Personagem
Andar para oito direções!!! EmptyDom Jul 31, 2011 4:56 pm por Rodrigo Vernaschi

» Auto-Tile Speed
Andar para oito direções!!! EmptyDom Jul 31, 2011 4:49 pm por Rodrigo Vernaschi

» Apresentação Antes do Title
Andar para oito direções!!! EmptyDom Jul 31, 2011 4:35 pm por Rodrigo Vernaschi

» Anti-Hack System (Silver Link/Gold Link)
Andar para oito direções!!! EmptyDom Jul 31, 2011 4:26 pm por Rodrigo Vernaschi

» Anti Hack (AMIGO X)
Andar para oito direções!!! EmptyDom Jul 31, 2011 4:19 pm por Rodrigo Vernaschi

» Ajustar Volume Durante o Jogo
Andar para oito direções!!! EmptyDom Jul 31, 2011 3:58 pm por Rodrigo Vernaschi

» Músicas e poemas
Andar para oito direções!!! EmptyQua Out 20, 2010 8:19 pm por Memories


Andar para oito direções!!!

Ir para baixo

Andar para oito direções!!! Empty Andar para oito direções!!!

Mensagem por Vingador Ter Jan 05, 2010 12:56 am

Permite ao herói andar em oito direções.

Código:

==============================================================================
# ? Game_Player
#------------------------------------------------------------------------------
# ??????????????????????????????????????
# ??????????????????????? $game_player ????????
# Post Na ReinoRPG.com: D.
#==============================================================================

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # ? ??
  #--------------------------------------------------------------------------
  CENTER_X = (544 / 2 - 16) * 8    # ????? X ?? * 8
  CENTER_Y = (416 / 2 - 16) * 8    # ????? Y ?? * 8
  #--------------------------------------------------------------------------
  # ? ??????????
  #--------------------------------------------------------------------------
  attr_reader  :vehicle_type      # ????????????? (-1:??)
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  def initialize
    super
    @vehicle_type = -1
    @vehicle_getting_on = false    # ??????????
    @vehicle_getting_off = false    # ???????????
    @transferring = false          # ???????
    @new_map_id = 0                # ??? ??? ID
    @new_x = 0                      # ??? X ??
    @new_y = 0                      # ??? Y ??
    @new_direction = 0              # ??????
    @walking_bgm = nil              # ???? BGM ???
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  def stopping?
    return false if @vehicle_getting_on
    return false if @vehicle_getting_off
    return super
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #    map_id    : ??? ID
  #    x        : X ??
  #    y        : Y ??
  #    direction : ??????
  #--------------------------------------------------------------------------
  def reserve_transfer(map_id, x, y, direction)
    @transferring = true
    @new_map_id = map_id
    @new_x = x
    @new_y = y
    @new_direction = direction
  end
  #--------------------------------------------------------------------------
  # ? ??????????
  #--------------------------------------------------------------------------
  def transfer?
    return @transferring
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #--------------------------------------------------------------------------
  def perform_transfer
    return unless @transferring
    @transferring = false
    set_direction(@new_direction)
    if $game_map.map_id != @new_map_id
      $game_map.setup(@new_map_id)    # ???????
    end
    moveto(@new_x, @new_y)
  end
  #--------------------------------------------------------------------------
  # ? ?????????
  #    x : X ??
  #    y : Y ??
  #--------------------------------------------------------------------------
  def map_passable?(x, y)
    case @vehicle_type
    when 0  # ???
      return $game_map.boat_passable?(x, y)
    when 1  # ???
      return $game_map.ship_passable?(x, y)
    when 2  # ???
      return true
    else    # ??
      return $game_map.passable?(x, y)
    end
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #    x : X ??
  #    y : Y ??
  #--------------------------------------------------------------------------
  def can_walk?(x, y)
    last_vehicle_type = @vehicle_type  # ?????????
    @vehicle_type = -1                  # ?????????
    result = passable?(x, y)            # ??????
    @vehicle_type = last_vehicle_type  # ?????????
    return result
  end
  #--------------------------------------------------------------------------
  # ? ??????????
  #    x : X ??
  #    y : Y ??
  #--------------------------------------------------------------------------
  def airship_land_ok?(x, y)
    unless $game_map.airship_land_ok?(x, y)
      return false    # ?????????????
    end
    unless $game_map.events_xy(x, y).empty?
      return false    # ????????????????????
    end
    return true      # ???
  end
  #--------------------------------------------------------------------------
  # ? ?????????????????
  #--------------------------------------------------------------------------
  def in_vehicle?
    return @vehicle_type >= 0
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #--------------------------------------------------------------------------
  def in_airship?
    return @vehicle_type == 2
  end
  #--------------------------------------------------------------------------
  # ? ????????
  #--------------------------------------------------------------------------
  def dash?
    return false if @move_route_forcing
    return false if $game_map.disable_dash?
    return false if in_vehicle?
    return Input.press?(Input::A)
  end
  #--------------------------------------------------------------------------
  # ? ????????????
  #--------------------------------------------------------------------------
  def debug_through?
    return false unless $TEST
    return Input.press?(Input::CTRL)
  end
  #--------------------------------------------------------------------------
  # ? ?????????????????????
  #    x : X ??
  #    y : Y ??
  #--------------------------------------------------------------------------
  def center(x, y)
    display_x = x * 256 - CENTER_X                    # ?????
    unless $game_map.loop_horizontal?                # ?????????
      max_x = ($game_map.width - 17) * 256            # ??????
      display_x = [0, [display_x, max_x].min].max    # ?????
    end
    display_y = y * 256 - CENTER_Y                    # ?????
    unless $game_map.loop_vertical?                  # ?????????
      max_y = ($game_map.height - 13) * 256          # ??????
      display_y = [0, [display_y, max_y].min].max    # ?????
    end
    $game_map.set_display_pos(display_x, display_y)  # ??????
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #    x : X ??
  #    y : Y ??
  #--------------------------------------------------------------------------
  def moveto(x, y)
    super
    center(x, y)                                      # ??????
    make_encounter_count                              # ?????????
    if in_vehicle?                                    # ?????????
      vehicle = $game_map.vehicles[@vehicle_type]    # ??????
      vehicle.refresh                                # ??????
    end
  end
  #--------------------------------------------------------------------------
  # ? ????
  #--------------------------------------------------------------------------
  def increase_steps
    super
    return if @move_route_forcing
    return if in_vehicle?
    $game_party.increase_steps
    $game_party.on_player_walk
  end
  #--------------------------------------------------------------------------
  # ? ?????? ??????
  #--------------------------------------------------------------------------
  def encounter_count
    return @encounter_count
  end
  #--------------------------------------------------------------------------
  # ? ?????? ??????
  #--------------------------------------------------------------------------
  def make_encounter_count
    if $game_map.map_id != 0
      n = $game_map.encounter_step
      @encounter_count = rand(n) + rand(n) + 1  # ????? 2 ???????
    end
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #    area : ?????? (RPG::Area)
  #--------------------------------------------------------------------------
  def in_area?(area)
    return false if area == nil
    return false if $game_map.map_id != area.map_id
    return false if @x < area.rect.x
    return false if @y < area.rect.y
    return false if @x >= area.rect.x + area.rect.width
    return false if @y >= area.rect.y + area.rect.height
    return true
  end
  #--------------------------------------------------------------------------
  # ? ?????????????? ID ???
  #--------------------------------------------------------------------------
  def make_encounter_troop_id
    encounter_list = $game_map.encounter_list.clone
    for area in $data_areas.values
      encounter_list += area.encounter_list if in_area?(area)
    end
    if encounter_list.empty?
      make_encounter_count
      return 0
    end
    return encounter_list[rand(encounter_list.size)]
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def refresh
    if $game_party.members.size == 0
      @character_name = ""
      @character_index = 0
    else
      actor = $game_party.members[0]  # ??????????
      @character_name = actor.character_name
      @character_index = actor.character_index
    end
  end
  #--------------------------------------------------------------------------
  # ? ????????????
  #    triggers : ???????
  #--------------------------------------------------------------------------
  def check_event_trigger_here(triggers)
    return false if $game_map.interpreter.running?
    result = false
    for event in $game_map.events_xy(@x, @y)
      if triggers.include?(event.trigger) and event.priority_type != 1
        event.start
        result = true if event.starting
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ? ???????????
  #    triggers : ???????
  #--------------------------------------------------------------------------
  def check_event_trigger_there(triggers)
    return false if $game_map.interpreter.running?
    result = false
    front_x = $game_map.x_with_direction(@x, @direction)
    front_y = $game_map.y_with_direction(@y, @direction)
    for event in $game_map.events_xy(front_x, front_y)
      if triggers.include?(event.trigger) and event.priority_type == 1
        event.start
        result = true
      end
    end
    if result == false and $game_map.counter?(front_x, front_y)
      front_x = $game_map.x_with_direction(front_x, @direction)
      front_y = $game_map.y_with_direction(front_y, @direction)
      for event in $game_map.events_xy(front_x, front_y)
        if triggers.include?(event.trigger) and event.priority_type == 1
          event.start
          result = true
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ? ???????????
  #    x : X ??
  #    y : Y ??
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    return false if $game_map.interpreter.running?
    result = false
    for event in $game_map.events_xy(x, y)
      if [1,2].include?(event.trigger) and event.priority_type == 1
        event.start
        result = true
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # ? ??????????????
  #--------------------------------------------------------------------------
  def move_by_input
    return unless movable?
    return if $game_map.interpreter.running?
    case Input.dir8
when 1
move_lower_left
when 2
move_down
when 3
move_lower_right
when 4
move_left
when 6
move_right
when 7
move_upper_left
when 8
move_up
when 9
move_upper_right
    end
  end  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def movable?
    return false if moving?                    # ???
    return false if @move_route_forcing        # ????????
    return false if @vehicle_getting_on        # ???????
    return false if @vehicle_getting_off        # ????????
    return false if $game_message.visible      # ????????
    return false if in_airship? and not $game_map.airship.movable?
    return true
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def update
    last_real_x = @real_x
    last_real_y = @real_y
    last_moving = moving?
    move_by_input
    super
    update_scroll(last_real_x, last_real_y)
    update_vehicle
    update_nonmoving(last_moving)
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #--------------------------------------------------------------------------
  def update_scroll(last_real_x, last_real_y)
    ax1 = $game_map.adjust_x(last_real_x)
    ay1 = $game_map.adjust_y(last_real_y)
    ax2 = $game_map.adjust_x(@real_x)
    ay2 = $game_map.adjust_y(@real_y)
    if ay2 > ay1 and ay2 > CENTER_Y
      $game_map.scroll_down(ay2 - ay1)
    end
    if ax2 < ax1 and ax2 < CENTER_X
      $game_map.scroll_left(ax1 - ax2)
    end
    if ax2 > ax1 and ax2 > CENTER_X
      $game_map.scroll_right(ax2 - ax1)
    end
    if ay2 < ay1 and ay2 < CENTER_Y
      $game_map.scroll_up(ay1 - ay2)
    end
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def update_vehicle
    return unless in_vehicle?
    vehicle = $game_map.vehicles[@vehicle_type]
    if @vehicle_getting_on                    # ?????
      if not moving?
        @direction = vehicle.direction        # ?????
        @move_speed = vehicle.speed          # ???????
        @vehicle_getting_on = false          # ??????
        @transparent = true                  # ???
      end
    elsif @vehicle_getting_off                # ??????
      if not moving? and vehicle.altitude == 0
        @vehicle_getting_off = false          # ???????
        @vehicle_type = -1                    # ????????
        @transparent = false                  # ?????
      end
    else                                      # ?????????
      vehicle.sync_with_player                # ????????????
    end
  end
  #--------------------------------------------------------------------------
  # ? ???????????
  #    last_moving : ??????????
  #--------------------------------------------------------------------------
  def update_nonmoving(last_moving)
    return if $game_map.interpreter.running?
    return if moving?
    return if check_touch_event if last_moving
    if not $game_message.visible and Input.trigger?(Input::C)
      return if get_on_off_vehicle
      return if check_action_event
    end
    update_encounter if last_moving
  end
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  def update_encounter
    return if $TEST and Input.press?(Input::CTRL)  # ????????
    return if in_vehicle?                          # ??????????
    if $game_map.bush?(@x, @y)                      # ????
      @encounter_count -= 2                        # ????? 2 ???
    else                                            # ??????
      @encounter_count -= 1                        # ????? 1 ???
    end
  end
  #--------------------------------------------------------------------------
  # ? ??????????????????
  #--------------------------------------------------------------------------
  def check_touch_event
    return false if in_airship?
    return check_event_trigger_here([1,2])
  end
  #--------------------------------------------------------------------------
  # ? ????????????????
  #--------------------------------------------------------------------------
  def check_action_event
    return false if in_airship?
    return true if check_event_trigger_here([0])
    return check_event_trigger_there([0,1,2])
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def get_on_off_vehicle
    return false unless movable?
    if in_vehicle?
      return get_off_vehicle
    else
      return get_on_vehicle
    end
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #    ??????????????????
  #--------------------------------------------------------------------------
  def get_on_vehicle
    front_x = $game_map.x_with_direction(@x, @direction)
    front_y = $game_map.y_with_direction(@y, @direction)
    if $game_map.airship.pos?(@x, @y)            # ???????????
      get_on_airship
      return true
    elsif $game_map.ship.pos?(front_x, front_y)  # ??????????
      get_on_ship
      return true
    elsif $game_map.boat.pos?(front_x, front_y)  # ??????????
      get_on_boat
      return true
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def get_on_boat
    @vehicle_getting_on = true        # ????????
    @vehicle_type = 0                # ????????
    force_move_forward                # ????
    @walking_bgm = RPG::BGM::last    # ???? BGM ??
    $game_map.boat.get_on            # ??????
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def get_on_ship
    @vehicle_getting_on = true        # ??
    @vehicle_type = 1                # ????????
    force_move_forward                # ????
    @walking_bgm = RPG::BGM::last    # ???? BGM ??
    $game_map.ship.get_on            # ??????
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def get_on_airship
    @vehicle_getting_on = true        # ???????
    @vehicle_type = 2                # ????????
    @through = true                  # ???? ON
    @walking_bgm = RPG::BGM::last    # ???? BGM ??
    $game_map.airship.get_on          # ??????
  end
  #--------------------------------------------------------------------------
  # ? ????????
  #    ?????????????????
  #--------------------------------------------------------------------------
  def get_off_vehicle
    if in_airship?                                # ???
      return unless airship_land_ok?(@x, @y)      # ???????
    else                                          # ???????
      front_x = $game_map.x_with_direction(@x, @direction)
      front_y = $game_map.y_with_direction(@y, @direction)
      return unless can_walk?(front_x, front_y)  # ???????
    end
    $game_map.vehicles[@vehicle_type].get_off    # ?????
    if in_airship?                                # ???
      @direction = 2                              # ????
    else                                          # ???????
      force_move_forward                          # ????
      @transparent = false                        # ?????
    end
    @vehicle_getting_off = true                  # ????????
    @move_speed = 4                              # ???????
    @through = false                              # ???? OFF
    @walking_bgm.play                            # ???? BGM ??
    make_encounter_count                          # ?????????
  end
  #--------------------------------------------------------------------------
  # ? ????????
  #--------------------------------------------------------------------------
  def force_move_forward
    @through = true        # ???? ON
    move_forward            # ????
    @through = false        # ???? OFF
  end
end
Vingador
Vingador
Iniciante
Iniciante

Número de Mensagens : 16
Idade : 35
Localização : Araguari
Premios : <br>Andar para oito direções!!! Medal_gold_3: 0 Andar para oito direções!!! Medal_silver_3: 0 Andar para oito direções!!! Medal_bronze_3: 0
Reputação : 13
Pontos : 90
Data de inscrição : 04/01/2010

Ficha do personagem
Raça: Lich
Nível Maker: Mestre
Mensagem Pessoal: Me dê as suas armas mágicas!!!

http://www.orkut.com.br/Main#Profile?uid=4395857722134662547

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos