Rpg maker xp
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Rpg maker xp

forum pour rpg maker :
 
AccueilRechercherDernières imagesS'enregistrerConnexion
Le deal à ne pas rater :
Display Star Wars Unlimited Ombres de la Galaxie : où l’acheter ?
Voir le deal

 

 Faire des plateformes mouvantes (on est dessus)

Aller en bas 
AuteurMessage
Soroshiya
Modérateur
Modérateur
Soroshiya


Masculin
Nombre de messages : 124
Age : 32
Date d'inscription : 16/11/2007

Feuille personnelle
PAs (Points d'Aide):
Faire des plateformes mouvantes (on est dessus) Left_bar_bleue0/130Faire des plateformes mouvantes (on est dessus) Empty_bar_bleue  (0/130)
Permis à Points:
Faire des plateformes mouvantes (on est dessus) Left_bar_bleue40/40Faire des plateformes mouvantes (on est dessus) Empty_bar_bleue  (40/40)

Faire des plateformes mouvantes (on est dessus) Empty
MessageSujet: Faire des plateformes mouvantes (on est dessus)   Faire des plateformes mouvantes (on est dessus) Icon_minitimeSam 17 Nov - 6:23

Nom du script : Faire des plateformes mouvantes (on est dessus)
Auteur : MGCaladtogel
Fonction : Ce script permet de créér des plateformes mouvantes (ex : Il y a un ravin, on peut pas passer sauf avec la plateforme qui bouge d'un côté à l'autre ! On monte dessus !)
Image(s) : Aucune
Ressource(s) : Aucune
Remarque : Fonctionnel
Installation : Allez dans l'éditeur de script ( F11 ) et suivez les instructions ci-dessous .

Bon il suffit de créer une nouvelle classe au-dessus de Main, appelée comme vous voulez, et d'y coller ce qui suit :

Code:
#PFv1, script créé par MGCaladtogel
class Game_Map
attr_accessor :map
end
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
class Game_Character
attr_accessor :surPF
attr_accessor :numPF
attr_accessor :x_sol
attr_accessor :y_sol
attr_accessor :vers_PF
#--------------------------------------------------------------------------
def initialize
@id = 0
@x = 0.0
@y = 0.0
@real_x = 0
@real_y = 0
@tile_id = 0
@character_name = ""
@character_hue = 0
@opacity = 255
@blend_type = 0
@direction = 2
@pattern = 0
@move_route_forcing = false
@through = false
@animation_id = 0
@transparent = false
@original_direction = 2
@original_pattern = 0
@move_type = 0
@move_speed = 4
@move_frequency = 6
@move_route = nil
@move_route_index = 0
@original_move_route = nil
@original_move_route_index = 0
@walk_anime = true
@step_anime = false
@direction_fix = false
@always_on_top = false
@anime_count = 0
@stop_count = 0
@jump_count = 0
@jump_peak = 0
@wait_count = 0
@locked = false
@prelock_direction = 0
@surPF = false
@numPF = 0
@x_sol = 0
@y_sol = 0
@vers_PF = false
end
#--------------------------------------------------------------------------
def passable?(x, y, d)
new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
unless $game_map.valid?(new_x, new_y)
return false
end
if @through
return true
end
unless $game_map.passable?(x, y, d, self) or @surPF
return false
end
unless $game_map.passable?(new_x, new_y, 10 - d)
return false
end
for event in $game_map.events.values
if event.x == new_x and event.y == new_y
unless event.through
if self != $game_player
return false
end
if event.character_name != ""
return false
end
end
end
end
if $game_player.x == new_x and $game_player.y == new_y
unless $game_player.through
if @character_name != ""
return false
end
end
end
return true
end
#--------------------------------------------------------------------------
def screen_z(height = 0)
if @always_on_top
return 999
end
z = (@real_y - $game_map.display_y + 3) / 4 + 32
z += 32 if (@surPF or @vers_PF)
if @tile_id > 0
return z + $game_map.priorities[@tile_id] * 32
else
return z + ((height > 32) ? 31 : 0)
end
end
#--------------------------------------------------------------------------
def check_surPF(x, y)
i = 0
for event in $game_map.events.values
if (event.real_x - 63 <= x) and (event.real_x + 63>= x) and (event.real_y - 95 <= y) and
(event.real_y + 31 >= y) and event.est_PF?
@surPF = true
i = event.id
end
end
if i == 0 and [email]!@versPF[/email]
@surPF = false
end
return i
end
#--------------------------------------------------------------------------
def check_depl_surPF(x, y)
for event in $game_map.events.values
if (event.real_x - 63 <= x) and (event.real_x + 63>= x) and (event.real_y - 95 <= y) and
(event.real_y + 31 >= y) and event.est_PF?
return true
end
end
return false
end
#--------------------------------------------------------------------------
def check_depl_surPF2(x0,y0,x, y)
if [email]!@surPF[/email] and !$game_map.valid?(x0, y0)
return false
end
for event in $game_map.events.values
if (event.real_x - 63 <= x) and (event.real_x + 63>= x) and (event.real_y - 95 <= y) and
(event.real_y + 31 >= y) and event.est_PF?
return true
end
end
return false
end
#--------------------------------------------------------------------------
def check_vide(x, y)
if $game_map.terrain_tag(x, y) == 1
return true
end
return false
end
#--------------------------------------------------------------------------
def move_down(turn_enabled = true)
if turn_enabled
turn_down
end
if passable?((@x+0.5).to_i, (@y+0.5).to_i, 2) or
check_depl_surPF2(@x,@y,@x*128,@y*128+128) or
$game_map.terrain_tag((@x+0.5).to_i, (@y+0.5).to_i+1) == 1
turn_down
if [email]!@surPF[/email]
if check_depl_surPF(@x*128,@y*128+128) or check_vide(@x,@y+1)
@y_sol = @y
@x_sol = @x
@vers_PF = true if check_depl_surPF(@x*128,@y*128+128)
end
@y += 1
elsif !check_depl_surPF(@x*128,@y*128+128)
@vers_PF = false
@y = ((@real_y.to_f/128)+0.5).to_i + 1
@x = ((@real_x.to_f/128)+0.5).to_i
@move_speed = 4
else
@vers_PF = true
@y += 1.0
@move_speed = 4
end
increase_steps
else
check_event_trigger_touch(@x, @y+1)
end
end
#--------------------------------------------------------------------------
def move_left(turn_enabled = true)
if turn_enabled
turn_left
end
if passable?((@x+0.5).to_i, (@y+0.5).to_i, 4) or
check_depl_surPF2(@x*128,@y*128,@x*128-128,@y*128) or
$game_map.terrain_tag((@x+0.5).to_i-1, (@y+0.5).to_i) == 1
turn_left
if [email]!@surPF[/email]
if check_depl_surPF(@x*128-128,@y*128) or check_vide(@x-1,@y)
@y_sol = @y
@x_sol = @x
@vers_PF = true if check_depl_surPF(@x*128-128,@y*128)
end
@x -= 1
elsif !check_depl_surPF(@x*128-128,@y*128)
@vers_PF = false
@y = ((@real_y.to_f/128)+0.5).to_i
@x = ((@real_x.to_f/128)+0.5).to_i - 1
@move_speed = 4
else
@vers_PF = true
@x -= 1.0
@move_speed = 4
end
increase_steps
else
check_event_trigger_touch(@x-1, @y)
end
end
#--------------------------------------------------------------------------
def move_right(turn_enabled = true)
if turn_enabled
turn_right
end
if passable?((@x+0.5).to_i, (@y+0.5).to_i, 6) or
check_depl_surPF2(@x*128,@y*128,@x*128+128,@y*128) or
$game_map.terrain_tag((@x+0.5).to_i+1, (@y+0.5).to_i) == 1
turn_right
if [email]!@surPF[/email]
if check_depl_surPF(@x*128+128,@y*128) or check_vide(@x+1,@y)
@y_sol = @y
@x_sol = @x
@vers_PF = true if check_depl_surPF(@x*128+128,@y*128)
end
@x += 1
elsif !check_depl_surPF(@x*128+128,@y*128)
@vers_PF = false
@y = ((@real_y.to_f/128)+0.5).to_i
@x = ((@real_x.to_f/128)+0.5).to_i + 1
@move_speed = 4
else
@vers_PF = true
@x+= 1.0
@move_speed = 4
end
increase_steps
else
check_event_trigger_touch(@x+1, @y)
end
end
#--------------------------------------------------------------------------
def move_up(turn_enabled = true)
if turn_enabled
turn_up
end
if passable?((@x+0.5).to_i, (@y+0.5).to_i, 8) or
check_depl_surPF2(@x*128,@y*128,@x*128,@y*128-128) or
$game_map.terrain_tag((@x+0.5).to_i, (@y+0.5).to_i-1) == 1
turn_up
if [email]!@surPF[/email]
if check_depl_surPF(@x*128,@y*128-128) or check_vide(@x,@y-1)
@y_sol = @y
@x_sol = @x
@vers_PF = true if check_depl_surPF(@x*128,@y*128-128)
end
@y -= 1
elsif !check_depl_surPF(@x*128,@y*128-128)
@vers_PF = false
@y = ((@real_y.to_f/128)+0.5).to_i - 1
@x = ((@real_x.to_f/128)+0.5).to_i
@move_speed = 4
else
@vers_PF = true
@y -= 1.0
@move_speed = 4
end
increase_steps
else
check_event_trigger_touch(@x, @y-1)
end
end
end
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
class Game_Event < Game_Character
attr_accessor :temps_pause
attr_accessor :liste_x
attr_accessor :liste_y
attr_accessor :liste_p
attr_accessor :nom
attr_accessor :num_phase
attr_accessor :phase_en_cours
attr_accessor :x_cible
attr_accessor :y_cible
attr_accessor :cmpt_temps
attr_accessor :PF_active
attr_accessor :etape_simple
attr_accessor :aller_simple
attr_accessor :num_dest_aller_simple
attr_accessor :boucle_simple
#--------------------------------------------------------------------------
def initialize(map_id, event)
super()
@map_id = map_id
@event = event
@id = @event.id
@erased = false
@starting = false
@through = true
@temps_pause = 0
@cmpt_temps = 0
@liste_x = []
@liste_y = []
@liste_p = []
@num_phase = 0
@phase_en_cours = false
@x_cible = 0
@y_cible = 0
@nom = $game_map.map.events[@id].name
if est_PF?
@move_speed = ""
val = ""
liste_caracteres = nom.scan(/./)
i = liste_caracteres.index("+") + 1
@etape_simple = false
@aller_simple = false
@num_dest_aller_simple = 0
@boucle_simple = false
case liste_caracteres[i]
when "E"
i+=2
@etape_simple = true
when "A"
i+=1
while liste_caracteres[i] != "V"
@num_dest_aller_simple = ""
@num_dest_aller_simple = @num_dest_aller_simple + liste_caracteres[i]
i += 1
end
@num_dest_aller_simple = @num_dest_aller_simple.to_i
i+=1
@aller_simple = true
when "B"
i+=2
@boucle_simple = true
else
i+=1
end
while liste_caracteres[i] != "/"
@move_speed = @move_speed + liste_caracteres[i]
i += 1
end
@move_speed = @move_speed.to_i
i += 1
while i < liste_caracteres.length
if liste_caracteres[i] == "P"
@temps_pause = ""
i+=1
while liste_caracteres[i] != "/" and i < liste_caracteres.length
@temps_pause = @temps_pause + liste_caracteres[i]
i += 1
end
@temps_pause = @temps_pause.to_i
i += 1
else
@temps_pause = 0
end
@liste_p.push(@temps_pause)
break if i >= liste_caracteres.length
while liste_caracteres[i] != "_" and i < liste_caracteres.length
val = val + liste_caracteres[i]
i += 1
end
@liste_x.push(val.to_i)
val = ""
i += 1
while liste_caracteres[i] != "/" and i < liste_caracteres.length
val = val + liste_caracteres[i]
i += 1
end
@liste_y.push(val.to_i)
val = ""
i += 1
end
tot = 0
for nb in @liste_x
tot = tot + nb
end
@liste_x.push(-tot)
tot = 0
for nb in @liste_y
tot = tot + nb
end
@liste_y.push(-tot)
@liste_p.push(0) if @liste_x.length != @liste_p.length
end
@temps_pause = @liste_p[1]
@PF_active = false
moveto(@event.x, @event.y)
refresh
end
Revenir en haut Aller en bas
Soroshiya
Modérateur
Modérateur
Soroshiya


Masculin
Nombre de messages : 124
Age : 32
Date d'inscription : 16/11/2007

Feuille personnelle
PAs (Points d'Aide):
Faire des plateformes mouvantes (on est dessus) Left_bar_bleue0/130Faire des plateformes mouvantes (on est dessus) Empty_bar_bleue  (0/130)
Permis à Points:
Faire des plateformes mouvantes (on est dessus) Left_bar_bleue40/40Faire des plateformes mouvantes (on est dessus) Empty_bar_bleue  (40/40)

Faire des plateformes mouvantes (on est dessus) Empty
MessageSujet: Re: Faire des plateformes mouvantes (on est dessus)   Faire des plateformes mouvantes (on est dessus) Icon_minitimeSam 17 Nov - 6:23

Code:
#--------------------------------------------------------------------------
  def est_PF?
    return nom.include?("+")
  end
  #--------------------------------------------------------------------------
  def refresh
    new_page = nil
    unless @erased
      for page in @event.pages.reverse
        c = page.condition
        if c.switch1_valid and !est_PF?
          if $game_switches[c.switch1_id] == false
            next
          end
        end
        if c.switch2_valid and !est_PF?
          if $game_switches[c.switch2_id] == false
            next
          end
        end
        if c.variable_valid and !est_PF?
          if $game_variables[c.variable_id] < c.variable_value
            next
          end
        end
        if c.self_switch_valid and !est_PF?
          key = [@map_id, @event.id, c.self_switch_ch]
          if $game_self_switches[key] != true
            next
          end
        end
        new_page = page
        break
      end
    end
    if new_page == @page
      return
    end
    @page = new_page
    clear_starting
    if @page == nil
      @tile_id = 0
      @character_name = ""
      @character_hue = 0
      @move_type = 0
      @through = true
      @trigger = nil
      @list = nil
      @interpreter = nil
      return
    end
    @tile_id = @page.graphic.tile_id
    @character_name = @page.graphic.character_name
    @character_hue = @page.graphic.character_hue
    if @original_direction != @page.graphic.direction
      @direction = @page.graphic.direction
      @original_direction = @direction
      @prelock_direction = 0
    end
    if @original_pattern != @page.graphic.pattern
      @pattern = @page.graphic.pattern
      @original_pattern = @pattern
    end
    @opacity = @page.graphic.opacity
    @blend_type = @page.graphic.blend_type
    @move_type = @page.move_type
    if !est_PF?
      @move_speed = @page.move_speed
    end
    @move_frequency = @page.move_frequency
    @move_route = @page.move_route
    @move_route_index = 0
    @move_route_forcing = false
    @walk_anime = @page.walk_anime
    @step_anime = @page.step_anime
    @direction_fix = @page.direction_fix
    @through = @page.through
    @always_on_top = @page.always_on_top
    @trigger = @page.trigger
    @list = @page.list
    @interpreter = nil
    if @trigger == 4
      @interpreter = Interpreter.new
    end
    check_event_trigger_auto
  end
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    if $game_system.map_interpreter.running?
      return
    end
    if @trigger == 2 and @x == ($game_player.x+0.5).to_i and @y == ($game_player.y+0.5).to_i
      if not jumping? and not over_trigger?
        start
      end
    end
  end
  #--------------------------------------------------------------------------
  def check_event_trigger_auto
    if @trigger == 2 and @x == ($game_player.x+0.5).to_i and @y == ($game_player.y+0.5).to_i
      if not jumping? and over_trigger?
        start
      end
    end
    if @trigger == 3
      start
    end
  end
  #--------------------------------------------------------------------------
  def update
    super
    check_event_trigger_auto
    if @interpreter != nil
      unless @interpreter.running?
        @interpreter.setup(@list, @event.id)
      end
      @interpreter.update
    end
    @PF_active = check_active_PF
    if @liste_x != [] and [email]!@phase_en_cours[/email] and @PF_active
        @x_cible = @x + @liste_x[@num_phase]
        @y_cible = @y + @liste_y[@num_phase]
        @x += @liste_x[@num_phase]
        @y += @liste_y[@num_phase]
        @phase_en_cours = true
    end
    if @PF_active and @x_cible*128 == @real_x and @y_cible*128 == @real_y
      if @temps_pause != 0 and @cmpt_temps != @temps_pause
        @cmpt_temps += 1
      else
        @phase_en_cours = false
        @cmpt_temps = 0
        @num_phase += 1
        @num_phase = 0 if @num_phase == @liste_x.length
        @temps_pause = @liste_p[0]
        @temps_pause = @liste_p[@num_phase+1]  if @num_phase < (@liste_x.length) - 1
        if @etape_simple
          desactiver_PF
          @PF_active = false
        end
        if @aller_simple and (@num_phase == @num_dest_aller_simple or @num_phase == 0)
          desactiver_PF
          @PF_active = false
        end
        if @boucle_simple and @num_phase == 0
          desactiver_PF
          @PF_active = false
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def screen_z(height = 0)
      z = super()
      if est_PF?
        z += 32
      end
      return z
    end
    #--------------------------------------------------------------------------
    def check_active_PF
      unless @erased
        page = @event.pages[0]
        c = page.condition
        if c.switch1_valid
          if $game_switches[c.switch1_id] == false
            return false
          end
        end
        if c.switch2_valid
          if $game_switches[c.switch2_id] == false
            return false
          end
        end
        if c.variable_valid
          if $game_variables[c.variable_id] < c.variable_value
            return false
          end
        end
        if c.self_switch_valid
          key = [@map_id, @event.id, c.self_switch_ch]
          if $game_self_switches[key] != true
            return false
          end
        end
        return true
      end
    end
    #--------------------------------------------------------------------------   
    def desactiver_PF
      unless @erased
        page = @event.pages[0]
        c = page.condition
        if c.switch1_valid
          if $game_switches[c.switch1_id]
            $game_switches[c.switch1_id] = false
          end
        end
        if c.switch2_valid
          if $game_switches[c.switch2_id]
            $game_switches[c.switch2_id] = false
          end
        end
        if c.variable_valid
          if $game_variables[c.variable_id] >= c.variable_value
            $game_variables[c.variable_id] = 0
          end
        end
        if c.self_switch_valid
          key = [@map_id, @event.id, c.self_switch_ch]
          if $game_self_switches[key]
              $game_self_switches[key] = false
          end
        end
      end
    end
end
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
class Game_Player < Game_Character
  def check_event_trigger_here(triggers)
    result = false
    if $game_system.map_interpreter.running?
      return result
    end
    for event in $game_map.events.values
      if event.x == (@x+0.5).to_i and event.y == (@y+0.5).to_i and triggers.include?(event.trigger)
        if not event.jumping? and event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  def check_event_trigger_there(triggers)
    result = false
    if $game_system.map_interpreter.running?
      return result
    end
    new_x = (@x+0.5).to_i + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
    new_y = (@y+0.5).to_i + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
    for event in $game_map.events.values
      if event.x == new_x and event.y == new_y.to_i and
        triggers.include?(event.trigger)
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    if result == false
      if $game_map.counter?(new_x, new_y)
        new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
        new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
        for event in $game_map.events.values
          if event.x == new_x and event.y == new_y and
            triggers.include?(event.trigger)
            if not event.jumping? and not event.over_trigger?
              event.start
              result = true
            end
          end
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    result = false
    if $game_system.map_interpreter.running?
      return result
    end
    for event in $game_map.events.values
      if event.x == (x+0.5).to_i and event.y == (y+0.5).to_i and [1,2].include?(event.trigger)
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  def update
    @numPF= check_surPF(@real_x,@real_y)
    if @surPF and $game_map.events[@numPF].PF_active
      distance = 2 ** $game_map.events[@numPF].move_speed
      distance_x = @real_x - $game_map.events[@numPF].real_x
      distance_y = @real_y - $game_map.events[@numPF].real_y
      if $game_map.events[@numPF].y_cible * 128  + distance_y > @real_y
        @real_y = [@real_y + distance, $game_map.events[@numPF].y_cible * 128+distance_y].min
        @y = [(@y + distance.to_f/128), $game_map.events[@numPF].y_cible+distance_y.to_f/128].min
      end
      if $game_map.events[@numPF].x_cible * 128 + distance_x < @real_x
        @real_x = [@real_x - distance, $game_map.events[@numPF].x_cible * 128+distance_x].max
        @x = [(@x - distance.to_f/128), $game_map.events[@numPF].x_cible+distance_x.to_f/128].max
      end
      if $game_map.events[@numPF].x_cible* 128 + distance_x > @real_x
        @real_x = [@real_x + distance, $game_map.events[@numPF].x_cible* 128+distance_x].min
        @x = [(@x + distance.to_f/128), $game_map.events[@numPF].x_cible+distance_x.to_f/128].min
      end
      if $game_map.events[@numPF].y_cible * 128 + distance_y < @real_y
        @real_y = [@real_y - distance, $game_map.events[@numPF].y_cible * 128+distance_y].max
        @y = [(@y - distance.to_f/128), $game_map.events[@numPF].y_cible+distance_y.to_f/128].max
      end
    else @x = ((@x+0.5).to_i).to_f if ([email]!@vers_PF[/email] and moving?)
      @y = ((@y+0.5).to_i).to_f if ([email]!@vers_PF[/email] and moving?)
      if !moving? and [email]!@surPF[/email] and !check_vide(@x,@y)
      @x_sol = @x
      @y_sol = @y
      end
      if check_vide(@x,@y) and (([email]!@vers_PF[/email] and moving?) or (!moving? and [email]!@surPF[/email]))
        $game_switches[10] = true
        $game_variables[2] = @x_sol
        $game_variables[3] = @y_sol
      end
    end
    last_moving = moving?
    unless moving? or $game_system.map_interpreter.running? or
          @move_route_forcing or $game_temp.message_window_showing
      case Input.dir4
      when 2
        move_down
      when 4
        move_left
      when 6
        move_right
      when 8
        move_up
      end
    end
    last_real_x = @real_x
    last_real_y = @real_y
    super
    if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
      $game_map.scroll_down(@real_y - last_real_y)
    end
    if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
      $game_map.scroll_left(last_real_x - @real_x)
    end
    if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
      $game_map.scroll_right(@real_x - last_real_x)
    end
    if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
      $game_map.scroll_up(last_real_y - @real_y)
    end
    unless moving?
      if last_moving
        result = check_event_trigger_here([1,2])
        if result == false
          unless $DEBUG and Input.press?(Input::CTRL)
            if @encounter_count > 0
              @encounter_count -= 1
            end
          end
        end
      end
      if Input.trigger?(Input::C)
        check_event_trigger_here([0])
        check_event_trigger_there([0,1,2])
      end
    end
  end
end
Revenir en haut Aller en bas
Soroshiya
Modérateur
Modérateur
Soroshiya


Masculin
Nombre de messages : 124
Age : 32
Date d'inscription : 16/11/2007

Feuille personnelle
PAs (Points d'Aide):
Faire des plateformes mouvantes (on est dessus) Left_bar_bleue0/130Faire des plateformes mouvantes (on est dessus) Empty_bar_bleue  (0/130)
Permis à Points:
Faire des plateformes mouvantes (on est dessus) Left_bar_bleue40/40Faire des plateformes mouvantes (on est dessus) Empty_bar_bleue  (40/40)

Faire des plateformes mouvantes (on est dessus) Empty
MessageSujet: Re: Faire des plateformes mouvantes (on est dessus)   Faire des plateformes mouvantes (on est dessus) Icon_minitimeSam 17 Nov - 6:24

MODE D'EMPLOI
I Créer une plate-forme
Créez un évènement à l’endroit de départ de la plate-forme
Choisissez votre image . ATTENTION : ça doit être du 32*32 pixels.
Pour des plates-formes plus grandes, il suffit juste d’en mettre plusieurs côte-à-côte qui suivent les mêmes trajectoires.
Activer le mode fantôme
Après toutes les informations doivent être rajoutées dans le nom.
Faire des plateformes mouvantes (on est dessus) 110
Tout d’abord, après EV***, ajouter un « + » qui indiquera que c’est une plate-forme
Ensuite ajouter « V » et le nombre représentant la vitesse de déplacement souhaitée : de 1 (lent) à 4 (rapide) ou plus mais je n’ai pas testé.
Ajouter une barre de séparation « / »
Rentrer ensuite les déplacements qui donnent les différents points de passage sous la forme :
Déplacement x + « _ » + Déplacement y
Et mettre « / » entre deux déplacements.
Exemple
EV001+V2/0_3/-2_8
A partir de sa position d’origine, la plate-forme se déplacera de 3 cases vers le bas, puis de 2 cases vers la gauche et 8 cases vers le bas, et ensuite reviendra à sa position de départ pour recommencer la boucle, tout ça à vitesse 2.
Pour ajouter des temps d’attente à chaque point de passage :
Après les données de déplacement, mettre « /P » + le temps d’attente souhaité en frames
Pour la position initiale, l’insérer avant le premier déplacement.
Exemple
EV001+V3/P30/-2_-3/5_-9/P10/1_0/P50
La plate-forme attendra 30 frames sur son point de départ, n’attendra pas sur son deuxième point, attendra 10 frames sur son troisième et 50 frames son son quatrième.
Activation de la plate-forme :
La plate-forme peut être activée (se met en mouvement) ou désactivée par des interrupteurs, variables, ou interrupteurs locaux et ceci se fait via la fenêtre « conditions de l’évenement ».
Lors d’une désactivation, la plate-forme s’arrête une fois parvenue à son prochain point de passage.
Par défaut, quand rien n’est coché dans « conditions de l’évenement », la plate-forme est automatiquement en mouvement (activée).
Faire des plateformes mouvantes (on est dessus) 210
Pour que la plate-forme s’active lorsque le héros monte dessus :
Dans la fenêtre « condition de déclenchement », cocher « Au contact du héros » et ajouter le commande d’activation dans la fenêtre « commandes de l’évènement ».
Pour que la plate-forme reste activée tant que héros est dessus (a son utilité avec les modes de déplacements E/A/B expliqués après) :
Dans la fenêtre « condition de déclenchement », cocher « Contact Evènement/Héros » et ajouter le commande d’activation dans la fenêtre « commandes de l’évènement » (oh le joli copier/coller !)
Faire des plateformes mouvantes (on est dessus) 310
Les différents modes de déplacement :
Par défaut une fois la plate-forme activée celle-ci va effectuer ses déplacements en boucle.
Il y a d’autres modes :
Par étape : la plate-forme, une fois activée, effectue son prochain déplacement puis se désactive toute seule.
Si la condition que la plate-forme reste activée tant que héros est dessus a été choisie, la plate-forme continuera ses déplacements et dès que le héros n’est plus dessus, se désactivera au terme de son déplacement.
Pour indiquer ce mode, devant le « V » pour la vitesse dans le nom, il faut rajouter « E ».
Exemple :
EV001+EV1/P5/-2_0
Par aller simple : on considère qu’il y a deux points principaux, celui de départ et un autre dont on relève le numéro. Si c’est le troisième point après le point de départ, il faut retenir « 3 ».
La plate-forme va effectuer ses déplacements et se désactivera une fois arrivée au deuxième point principal. Une fois réactivée, elle finira ses déplacements pour retourner à son point de départ et à nouveau se désactiver.
Devant le « V » dans le nom, il faut rajouter « A » et le numéro relevé.
Exemple :
EV001+A3V3/-2_0/P20/0_2/2_3/4_-1
Une fois qu’elle aura fait son déplacement de 2 cases vers la droite et 3 vers le bas, la plate-forme se désactivera.
Par boucle : la plate-forme fera ses déplacements une fois activée et se désactivera une fois revenue à son point de départ.
Devant le « V » rajouter « B »
Exemple :
EV001+BV2/-2_0/P20
II Gérer le vide
Bon alors tout d’abord il faut aller dans la gestion des chipsets et rendre le vide praticable et avec les 4 sens de déplacement.
Faire des plateformes mouvantes (on est dessus) 410
Ensuite lui attribuer le numéro de terrain « 1 ».
Pour prendre un autre numéro, il faut changer dans les scripts :
Dans Game_Character 3, dans chaque méthode « def move_*** », remplacer la valeur 1 des 4 lignes du genre $game_map.terrain_tag((@x+0.5).to_i, (@y+0.5).to_i+1) == 1.
Dans Game_Character 2, dans la méthode « def check_vide », il faut également changer le 1.
Pour pouvoir mettre des ponts au-dessus du vide sans que le héros ne passe au travers, il faut aussi attribuer un numéro différents de 0 et de celui du vide, quelconque.
Faire des plateformes mouvantes (on est dessus) 510
Vers la ligne 240 du script Game_Player, dans « def update », il devrait y avoir ça :


Code:
if check_vide(@x,@y) and (([email]!@vers_PF[/email] and moving?) or (!moving? and [email]!@surPF[/email]))
$game_switches[10] = true
$game_variables[2] = @x_sol
$game_variables[3] = @y_sol
end
Ce sont les variables réquisitionnées par le script. Vous pouvez choisir ici les numéros de l’interrupteur et des deux variables à utiliser.
L’interrupteur est activé quand le héros tombe.
Les deux variables sont respectivement les coordonnées x et y du dernier endroit « sûr » où est passé le héros.
Après il suffit tout simplement de créer un évènement commun activé par l’interrupteur qui indique ce qui se passe quand le héros est sensé tomber. A vous de voir ! Peut-être va-t-il être récupéré par une soucoupe volante qui passait par là et être emmené sur une autre planète, ou peut-être est-ce le game over (là c’est méchant) ?
Pour mes tests j’ai fait une petite animation avec Arshes qui gesticule, puis j’ai tout simplement mis un message pour décrire la scène, et j’ai téléporté Arshes au dernier endroit sûr (en le faisant clignoter un peu, parce que ça se fait souvent dans les jeux).
Faire des plateformes mouvantes (on est dessus) 610
Voilà c'est fini !
Revenir en haut Aller en bas
Contenu sponsorisé





Faire des plateformes mouvantes (on est dessus) Empty
MessageSujet: Re: Faire des plateformes mouvantes (on est dessus)   Faire des plateformes mouvantes (on est dessus) Icon_minitime

Revenir en haut Aller en bas
 
Faire des plateformes mouvantes (on est dessus)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Rpg maker xp :: rpg maker xp :: Scripts :: Scripts Map-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser