Accueil du SiteAccueil du Site  AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  ConnexionConnexion  S'enregistrerS'enregistrer  



Le deal à ne pas rater :
Jeux, jouets et Lego : le deuxième à -50% (large sélection)
Voir le deal

Partagez
 

 [XP] Sauter au dessus de terrains

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Elekami
Fondateur
Fondateur
Elekami

Masculin
Messages postés : 19071
Date d'inscription : 19/07/2008
Jauge LPC :
[XP] Sauter au dessus de terrains 8915271400100 / 100100 / 100[XP] Sauter au dessus de terrains 8915271400

[XP] Sauter au dessus de terrains Pater_10
[XP] Sauter au dessus de terrains Staffe10
[XP] Sauter au dessus de terrains Mythe_10
[XP] Sauter au dessus de terrains Membre11
[XP] Sauter au dessus de terrains Doyen10
[XP] Sauter au dessus de terrains Scanar10
[XP] Sauter au dessus de terrains Compos10
[XP] Sauter au dessus de terrains Testeu10
[XP] Sauter au dessus de terrains Membre15
[XP] Sauter au dessus de terrains Partag10
[XP] Sauter au dessus de terrains Projet10
[XP] Sauter au dessus de terrains Projet16
[XP] Sauter au dessus de terrains Riche_10
[XP] Sauter au dessus de terrains Travai10
[XP] Sauter au dessus de terrains Collec10
[XP] Sauter au dessus de terrains Collec11
[XP] Sauter au dessus de terrains Collec12
[XP] Sauter au dessus de terrains Collec13
[XP] Sauter au dessus de terrains Connar10


[XP] Sauter au dessus de terrains Empty
MessageSujet: [XP] Sauter au dessus de terrains   [XP] Sauter au dessus de terrains EmptyVen 10 Fév 2012 - 0:54

Avec ce script, vous pouvez sauter par dessus une case de terrain, en appuyant sur [ESPACE]. Il est configurable, voir fin du post...


Créez un script au dessus de Main apellé "walljump" avec :


Code:
#==============================================================================
# ? WallJump Script
#------------------------------------------------------------------------------
#==============================================================================

#==============================================================================
# ? Customisation
#==============================================================================
JumpID  = 1 # The terrain ID of the tiles which can be jumped over
MaxJump  = 2 # The longest jump that can be made by the player
#==============================================================================
# ? Game_Player
#==============================================================================

class Game_Player < Game_Character
 
  # forces Game_Character's passable method to be used, so CTRL no longer makes
  # the hero able to walk through walls
  def passable?(x, y, d)
    super(x, y, d)
  end
 
  def leap
    # finds the increases to x & y for the current direction
    xdir = (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
    ydir = (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
   
    # Ow!
    unless $game_map.terrain_tag(@x + xdir, @y + ydir) == JumpID or
                    $game_map.passable?(@x + xdir, @y + ydir, @direction, self)
      # make the player jump
      route = RPG::MoveRoute.new
      route.list.clear
      route.list.push(RPG::MoveCommand.new(37))
      route.list.push(RPG::MoveCommand.new(14, [0, 0]))
      route.list.push(RPG::MoveCommand.new(38))
      route.list.push(RPG::MoveCommand.new(0))
      route.repeat = false
      $game_player.force_move_route(route)
     
      # shake the screen
      $game_screen.start_shake(7, 7, 5)
     
      # display an "Ouch!" message
      $game_temp.message_text = "Ouch!"
      return
    end
   
    # finds the jumpable distance
    dist = jumpable_distance
   
    # wall jump
    if dist.between?(1, MaxJump - 1) and
      !$game_map.passable?(@x + (dist + 1) * xdir, @y + (dist + 1) * ydir, @direction, self) and
      !($game_map.terrain_tag(@x + (dist + 1) * xdir, @y + (dist + 1) * ydir) == JumpID)
      # finds the reverse direction
      bounce_dir = @direction == 2 ? 8 : (@direction == 4 ? 6 : (@direction == 6 ? 4 : 2))
     
      # finds the wall-jump distance
      b_dist = jumpable_distance(bounce_dir, MaxJump + 2, @x + dist * xdir, @y + dist * ydir)
     
      # finds the additions to x and y made by the reverse direction
      b_xdir = (bounce_dir == 6 ? 1 : bounce_dir == 4 ? -1 : 0)
      b_ydir = (bounce_dir == 2 ? 1 : bounce_dir == 8 ? -1 : 0)
     
      # create the move_route
      route = RPG::MoveRoute.new
      route.list.clear
      route.list.push(RPG::MoveCommand.new(37))
      # add the normal jump
      route.list.push(RPG::MoveCommand.new(14, [xdir * dist, ydir * dist]))
      # add the wall jump
      route.list.push(RPG::MoveCommand.new(14, [b_xdir * b_dist, b_ydir * b_dist]))
      route.list.push(RPG::MoveCommand.new(38))
      route.list.push(RPG::MoveCommand.new(0))
      route.repeat = false
     
      $game_player.force_move_route(route)
     
      return
    end
   
    # creates a route for a normal jump and forces the player to follow it
    route = RPG::MoveRoute.new
    route.list.clear
    route.list.push(RPG::MoveCommand.new(37))
    route.list.push(RPG::MoveCommand.new(14, [xdir * dist, ydir * dist]))
    route.list.push(RPG::MoveCommand.new(38))
    route.list.push(RPG::MoveCommand.new(0))
    route.repeat = false
   
    $game_player.force_move_route(route)
  end
 
  alias update_primary update
  def update
    # calls the normal update method
    update_primary
   
    # locks the facing if CTRL is pressed, else unlocks it
    @direction_fix = Input.press?(Input::CTRL)
   
    # leaps if Input::A is triggered
    leap if Input.trigger?(Input::A) && !moving?
  end
 
  def jumpable_distance(dir = @direction, max_dist = MaxJump, x = @x, y = @y)
    xdir = (dir == 6 ? 1 : dir == 4 ? -1 : 0)
    ydir = (dir == 2 ? 1 : dir == 8 ? -1 : 0)
   
    jumpable_tiles = []
   
    for i in 0..max_dist
      check_x = x + i * xdir
      check_y = y + i * ydir
     
      e = $game_map.events[$game_map.check_event(check_x, check_y)]
      if e
        if e.list[0].parameters[0] =~ "\Tall"
          break
        end
        if not e.through
          next
        end
      end
     
      if $game_map.passable?(check_x, check_y, dir, self) or
                              $game_map.terrain_tag(check_x, check_y) == JumpID
        jumpable_tiles.push(i)
      end
    end
   
    jumpable_tiles.reverse.each do |i|
      check_x = x + i * xdir
      check_y = y + i * ydir
     
      return i if $game_map.passable?(check_x, check_y, dir, self)
    end
   
    return 0
  end
 
end



Paramètres du script :
JumpID = 1 # Le numéro de terrain au-dessus du quel on peut sauter.
MaxJump = 2 # Le maximum de cases que l'on peut sauter.
Il faut en jeu appuyer sur [ESPACE] pour sauter.
Revenir en haut Aller en bas
https://www.ledijonshow.fr https://twitter.com/EleKoptes
Jin
Ancien staffeux
Ancien staffeux
Jin

Masculin
Messages postés : 8557
Date d'inscription : 08/12/2010
Jauge LPC :
[XP] Sauter au dessus de terrains 891527140069 / 10069 / 100[XP] Sauter au dessus de terrains 8915271400

G 1 petit zizi Very Happy
Nn C pa vré Sad
[XP] Sauter au dessus de terrains Membre15
[XP] Sauter au dessus de terrains Partag10
[XP] Sauter au dessus de terrains Travai10
[XP] Sauter au dessus de terrains Event-10
[XP] Sauter au dessus de terrains Altrui10
[XP] Sauter au dessus de terrains Riche_10
[XP] Sauter au dessus de terrains Couhil10
[XP] Sauter au dessus de terrains Nain_p11
[XP] Sauter au dessus de terrains Connar10


[XP] Sauter au dessus de terrains Empty
MessageSujet: Re: [XP] Sauter au dessus de terrains   [XP] Sauter au dessus de terrains EmptyVen 10 Fév 2012 - 13:06

C'est facilement faisable en event ca ... tiens ... bah je vais poster ca en event ^^
Revenir en haut Aller en bas
 
[XP] Sauter au dessus de terrains
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» RMVXace / Sauter
» [VX] Faire sauter le personnage
» [Résolu] RMXP - Tag des terrains
» !$%*@# de vue RM (ou les problèmes de la vue de dessus) !
» [Rpg Maker VX] Passer au-dessus des 9999 HP

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Le Palais Créatif :: ~ PARTAGE ~ :: Scripts et plugins :: RPG Maker XP :: Autres-
Sauter vers: