Sujet n°4892
Posté par Rbzproject le 22 Aoû - 11:31 (2009)
Titre : Bump lorsqu'on tape une case non praticable.
Salut :D .

Alors ce script vous serviras a avoir un effet sonore bump quande vous vous cognez
contre une case non praticable comme les vraie Pokémon.^^
Alors voila l'effet sonore:
http://www.sendspace.com/file/hzbweg

Maintenant le script,il faut remplaçer Le script Game player par celui-çi.:

 
Code:


 #==============================================================================
# ** Game_Player
#------------------------------------------------------------------------------
#  This class handles the player. Its functions include event starting
#  determinants and map scrolling. Refer to "$game_player" for the one
#  instance of this class.
#==============================================================================

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # * Invariables
  #--------------------------------------------------------------------------
  CENTER_X = (320 - 16) * 4   # Center screen x-coordinate * 4
  CENTER_Y = (240 - 16) * 4   # Center screen y-coordinate * 4
  def initialize(*arg)
    super(*arg)
    @lastdir=0
    @lastdirframe=0
  end
  def pbHasDependentEvents?
    return $PokemonGlobal.dependentEvents.length>0   
  end
  def move_down(turn_enabled = true)
    if turn_enabled
     turn_down
    end
    if passable?(@x, @y, 2)
      turn_down
      @y += 1
      increase_steps
    else
      if !check_event_trigger_touch(@x, @y+1)
        Audio.se_play("Audio/SE/bump.wav")
      end
    end
  end
  def move_left(turn_enabled = true)
    if turn_enabled
      turn_left
    end
    if passable?(@x, @y, 4)
      turn_left
      @x -= 1
      increase_steps
    else
      if !check_event_trigger_touch(@x-1, @y)
        Audio.se_play("Audio/SE/bump.wav")
      end
    end
  end
  def move_right(turn_enabled = true)
    if turn_enabled
      turn_right
    end
    if passable?(@x, @y, 6)
      turn_right
      @x += 1
      increase_steps
    else
      if !check_event_trigger_touch(@x+1, @y)
        Audio.se_play("Audio/SE/bump.wav")
      end
    end
  end
  def move_up(turn_enabled = true)
    if turn_enabled
      turn_up
    end
    if passable?(@x, @y,   8)  
      turn_up
      @y -= 1
      increase_steps
    else
      if !check_event_trigger_touch(@x, @y-1)
        Audio.se_play("Audio/SE/bump.wav")
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Passable Determinants
  #     x : x-coordinate
  #     y : y-coordinate
  #     d : direction (0,2,4,6,  8)  
  #         * 0 = Determines if all directions are impassable (for jumping)
  #--------------------------------------------------------------------------
  def passable?(x, y, d)
    # Get new coordinates
    new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
    new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
    # If coordinates are outside of map
    unless $game_map.valid?(new_x, new_y)
      # Impassable
      return false
    end
    # If debug mode is ON and ctrl key was pressed
    if $DEBUG and Input.press?(Input::CTRL)
      # Passable
      return true
    end
    super
  end
  #--------------------------------------------------------------------------
  # * Set Map Display Position to Center of Screen
  #--------------------------------------------------------------------------
  def center(x, y)
    max_x = ($game_map.width - 20) * 128
    max_y = ($game_map.height - 15) * 128
    $game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max
    $game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max
  end
  #--------------------------------------------------------------------------
  # * Move to Designated Position
  #     x : x-coordinate
  #     y : y-coordinate
  #--------------------------------------------------------------------------
  def moveto(x, y)
    super
    # Centering
    center(x, y)
    # Make encounter count
    make_encounter_count
  end
  #--------------------------------------------------------------------------
  # * Increaase Steps
  #--------------------------------------------------------------------------
  def increase_steps
    super
    # If move route is not forcing
    unless @move_route_forcing
      # Increase steps
      $game_party.increase_steps
      # Number of steps are an even number
      if $game_party.steps % 2 == 0
        # Slip damage check
        $game_party.check_map_slip_damage
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Get Encounter Count
  #--------------------------------------------------------------------------
  def encounter_count
    return @encounter_count
  end
  #--------------------------------------------------------------------------
  # * Make Encounter Count
  #--------------------------------------------------------------------------
  def make_encounter_count
    # Image of two dice rolling
    if $game_map.map_id != 0
      n = $game_map.encounter_step
      @encounter_count = rand(n) + rand(n) + 1
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    # If party members = 0
    if $game_party.actors.size == 0
      # Clear character file name and hue
      @character_name = ""
      @character_hue = 0
      # End method
      return
    end
    # Get lead actor
    actor = $game_party.actors[0]
    # Set character file name and hue
    @character_name = actor.character_name
    @character_hue = actor.character_hue
    # Initialize opacity level and blending method
    @opacity = 255
    @blend_type = 0
  end
  #--------------------------------------------------------------------------
  # * Same Position Starting Determinant
  #--------------------------------------------------------------------------
  def check_event_trigger_here(triggers)
    result = false
    # If event is running
    if $game_system.map_interpreter.running?
      return result
    end
    # All event loops
    for event in $game_map.events.values
      # If event coordinates and triggers are consistent
      if event.x == @x and event.y == @y and triggers.include?(event.trigger)
        # If starting determinant is same position event (other than jumping)
        if not event.jumping? and event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # * Front Envent Starting Determinant
  #--------------------------------------------------------------------------
  def check_event_trigger_there(triggers)
    result = false
    # If event is running
    if $game_system.map_interpreter.running?
      return result
    end
    # Calculate front event coordinates
    new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
    new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
    # All event loops
    for event in $game_map.events.values
      # If event coordinates and triggers are consistent
      if event.x == new_x and event.y == new_y and
         triggers.include?(event.trigger)
        # If starting determinant is front event (other than jumping)
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    # If fitting event is not found
    if result == false
      # If front tile is a counter
      if $game_map.counter?(new_x, new_y)
        # Calculate 1 tile inside coordinates
        new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
        new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
        # All event loops
        for event in $game_map.events.values
          # If event coordinates and triggers are consistent
          if event.x == new_x and event.y == new_y and
             triggers.include?(event.trigger)
            # If starting determinant is front event (other than jumping)
            if not event.jumping? and not event.over_trigger?
              event.start
              result = true
            end
          end
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # * Touch Event Starting Determinant
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    result = false
    # If event is running
    if $game_system.map_interpreter.running?
      return result
    end
    # All event loops
    for event in $game_map.events.values
      # If event coordinates and triggers are consistent
      if event.x == x and event.y == y and [1,2].include?(event.trigger)
        # If starting determinant is front event (other than jumping)
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Remember whether or not moving in local variables
    last_moving = moving?
    # If moving, event running, move route forcing, and message window
    # display are all not occurring
    unless moving? or $game_system.map_interpreter.running? or
           @move_route_forcing or $game_temp.message_window_showing
      # Move player in the direction the directional button is being pressed
      case Input.dir4
      when 2
        move_down
      when 4
        move_left
      when 6
        move_right
      when 8
        move_up
      end
    end
    # Remember coordinates in local variables
    last_real_x = @real_x
    last_real_y = @real_y
    super
    # If character moves down and is positioned lower than the center
    # of the screen
    if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
      # Scroll map down
      $game_map.scroll_down(@real_y - last_real_y)
    end
    # If character moves left and is positioned more let on-screen than
    # center
    if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
      # Scroll map left
      $game_map.scroll_left(last_real_x - @real_x)
    end
    # If character moves right and is positioned more right on-screen than
    # center
    if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
      # Scroll map right
      $game_map.scroll_right(@real_x - last_real_x)
    end
    # If character moves up and is positioned higher than the center
    # of the screen
    if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
      # Scroll map up
      $game_map.scroll_up(last_real_y - @real_y)
    end
    # If not moving
    unless moving?
      # If player was moving last time
      if last_moving
        # Event determinant is via touch of same position event
        result = check_event_trigger_here([1,2])
        # If event which started does not exist
        if result == false
          # Disregard if debug mode is ON and ctrl key was pressed
          unless $DEBUG and Input.press?(Input::CTRL)
            # Encounter countdown
            if @encounter_count > 0
              @encounter_count -= 1
            end
          end
        end
      end
      # If C button was pressed
      if Input.trigger?(Input::C)
        # Same position and front event determinant
        check_event_trigger_here([0])
        check_event_trigger_there([0,1,2])
      end
    end
  end
end




Et voila maintenant vous serez encore plus proche d'un véritable Pokémon^^.

Posté par Mini' le 22 Aoû - 11:44 (2009)
Merci beaucoup Rabzuz.
Je teste tout de suite, et j'édite. =)

(PS : mettre ce son "Bump" dans le fichier Audio dans SE. Clin d'œil foireux )

Edit : Hum ... Un imperfection tout de même. Chez moi, le son se répète deux-trois fois quasiment en même temps. De plus, quand on continue d'avancer contre un mur le son continue, or il serait mieux de le mettre qu'une seule fois à chaque fois qu'on se cogne.

Posté par Rbzproject le 22 Aoû - 12:11 (2009)
oui eh bien justement je n'y arrive pas.Peut etre en ajoutant
la commande
Code:
wait(?)

a chaque effet sonore comme sa le son ne se répétera pas en meme temps.
Je vais essayer de le modifier et je renvoie quelque chose.^^

Posté par Angi-MK le 28 Aoû - 15:52 (2009)
up ?

Posté par Rbzproject le 28 Aoû - 16:59 (2009)
non pas pour l'instant jais essayer de chercher pour que le son soit syncro au mouvement du héro mais malhereusement je n'y arrive pas.
J'ais juste ajouter la commande attendre dans le script apres chaque sons éffectué .(C'est mieux mais c'est pas encore syncro.)^^

Posté par Mini' le 28 Aoû - 17:25 (2009)
Rabzuz a écrit:
non pas pour l'instant jais essayer de chercher pour que le son soit syncro au mouvement du héro mais malhereusement je n'y arrive pas. J'ais juste ajouter la commande attendre dans le script apres chaque sons éffectué .(C'est mieux mais c'est pas encore syncro.)^^


Tu pourrais l'envoyer également stp ? Ca m'saoule un peu quand je fonce sur qqch et que j'entends trente fois le même son. '^^

Posté par Kosuke Kyuu le 2 Aoû - 00:43 (2011)
Bonjour, pourrait-on uploder le son s'il vous plait ? le lien est mort... ^^'
Merci beaucoup.

Posté par Guigui28240 le 29 Aoû - 12:19 (2011)
Désolé du necroposte mais Ayumi Kyuu le lien est mort si quelqu'un voudrait bien les passer^^.

Posté par Oli-link le 5 Sep - 17:44 (2011)
Désolé de t'annoncer ca, mais ce topic n'est plus vivant. Et tu as fait un nécropost.

Posté par Pαlвσlѕку le 5 Sep - 17:56 (2011)
C'est le nécroflood qui est sanctionné, pas le nécropost.

Posté par Guigui28240 le 5 Sep - 22:54 (2011)
Ok mais quelqu'un pourrait passer un nouveau lien svp car j'en ai besoin merci

Posté par Oli-link le 6 Sep - 22:35 (2011)
Tiens : http://www.megaupload.com/?d=BDPVOW7V

Posté par Kosuke Kyuu le 6 Sep - 23:28 (2011)
Oh, merci beaucoup Oli-Link, et désolé d'avoir remonté le sujet,
Ayumi Kyuu.

Posté par Guigui28240 le 7 Sep - 12:06 (2011)
Merci beaucoup et encore desolé

Posté par Angi-MK le 8 Mar - 22:23 (2012)
Qui pour réuploader le fichier wav SVP?

Posté par The_Doctor le 28 Aoû - 08:42 (2012)
lien mort plize reuploadez

Posté par Silver le 28 Aoû - 08:45 (2012)
Ceci a été posté il y a quelques heures par Solfay . ./11972.html?theme=test

Posté par Ku'rei le 12 Sep - 09:06 (2013)
Pardon pour le nécropost. J'ai modifié le script, il fonctionne parfaitement et est maintenant plus facilement personnalisable.

Le lien vers le Bump ne marche pas (en tout cas pour moi) :
En voici un autre

Bref, voici le script
Script
Code:
 #============================================================================== 
# ** Game_Player 
#------------------------------------------------------------------------------ 
#  This class handles the <b style="color:#D0D1D1">player</b>. Its functions include event starting 
#  determinants and map scrolling. Refer to "$game_player" for the one 
#  instance of this class. 
#============================================================================== 
 
class Game_Player < Game_Character 
  # BUMPER USERS
  BUMP_SOUND      = "Audio/SE/bump.wav" # Chemin et nom du fichier son à jouer (SE Obligatoirement)
  SILENCE_LENGTH  = 40                  # Nombre frames de pause entre chaque"bump !"
  def try_play_bump(x, y)
    if !check_event_trigger_touch(x, y) and @silence_count == 0
        Audio.se_play(BUMP_SOUND)
        @silence_count = SILENCE_LENGTH
    end
  end
 
  #-------------------------------------------------------------------------- 
  # * Invariables 
  #-------------------------------------------------------------------------- 
  CENTER_X = (320 - 16) * 4   # Center screen x-coordinate * 4 
  CENTER_Y = (240 - 16) * 4   # Center screen y-coordinate * 4 
  def initialize(*arg) 
    super(*arg) 
    @lastdir=0 
    @lastdirframe=0
    @silence_count  = 0 # Compteur de silence. 0 => on peut jouer sinon non
  end 
  def pbHasDependentEvents? 
    return $PokemonGlobal.dependentEvents.length>0     
  end 
  def move_down(turn_enabled = true) 
    if turn_enabled 
     turn_down 
    end 
    if passable?(@x, @y, 2) 
      turn_down 
      @y += 1 
      increase_steps 
    else 
      try_play_bump(@x, @y+1)
    end 
  end 
  def move_left(turn_enabled = true) 
    if turn_enabled 
      turn_left 
    end 
    if passable?(@x, @y, 4) 
      turn_left 
      @x -= 1 
      increase_steps 
    else 
      try_play_bump(@x-1, @y)

    end 
  end 
  def move_right(turn_enabled = true) 
    if turn_enabled 
      turn_right 
    end 
    if passable?(@x, @y, 6) 
      turn_right 
      @x += 1 
      increase_steps 
    else 
      try_play_bump(@x+1, @y)
    end 
  end 
  def move_up(turn_enabled = true) 
    if turn_enabled 
      turn_up 
    end 
    if passable?(@x, @y,   8)   
      turn_up 
      @y -= 1 
      increase_steps 
    else 
      try_play_bump(@x, @y-1)
    end 
  end 
  #-------------------------------------------------------------------------- 
  # * Passable Determinants 
  #     x : x-coordinate 
  #     y : y-coordinate 
  #     d : <b style="color:#D0D1D1">direction</b> (0,2,4,6,  8)   
  #         * 0 = Determines if all directions are impassable (for jumping) 
  #-------------------------------------------------------------------------- 
  def passable?(x, y, d) 
    # Get new coordinates 
    new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0) 
    new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0) 
    # If coordinates are outside of map 
    unless $game_map.valid?(new_x, new_y) 
      # Impassable 
      return false 
    end 
    # If debug mode is ON and ctrl key was pressed 
    if $DEBUG and Input.press?(Input::CTRL) 
      # Passable 
      return true 
    end 
    super 
  end 
  #-------------------------------------------------------------------------- 
  # * Set Map Display Position to Center of Screen 
  #-------------------------------------------------------------------------- 
  def center(x, y) 
    max_x = ($game_map.width - 20) * 128 
    max_y = ($game_map.height - 15) * 128 
    $game_map.display_x = [0, [x * 128 - CENTER_X, max_x].min].max 
    $game_map.display_y = [0, [y * 128 - CENTER_Y, max_y].min].max 
  end 
  #-------------------------------------------------------------------------- 
  # * Move to Designated Position 
  #     x : x-coordinate 
  #     y : y-coordinate 
  #-------------------------------------------------------------------------- 
  def moveto(x, y) 
    super 
    # Centering 
    center(x, y) 
    # Make encounter count 
    make_encounter_count 
  end 
  #-------------------------------------------------------------------------- 
  # * Increaase Steps 
  #-------------------------------------------------------------------------- 
  def increase_steps 
    super 
    # If move route is not forcing 
    unless @move_route_forcing 
      # Increase steps 
      $game_party.increase_steps 
      # Number of steps are an even number 
      if $game_party.steps % 2 == 0 
        # Slip damage check 
        $game_party.check_map_slip_damage 
      end 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # * Get Encounter Count 
  #-------------------------------------------------------------------------- 
  def encounter_count 
    return @encounter_count 
  end 
  #-------------------------------------------------------------------------- 
  # * Make Encounter Count 
  #-------------------------------------------------------------------------- 
  def make_encounter_count 
    # Image of two dice rolling 
    if $game_map.map_id != 0 
      n = $game_map.encounter_step 
      @encounter_count = rand(n) + rand(n) + 1 
    end 
  end 
  #-------------------------------------------------------------------------- 
  # * Refresh 
  #-------------------------------------------------------------------------- 
  def refresh 
    # If party members = 0 
    if $game_party.actors.size == 0 
      # Clear character file name and hue 
      @character_name = "" 
      @character_hue = 0 
      # End method 
      return 
    end 
    # Get lead actor 
    actor = $game_party.actors[0] 
    # Set character file name and hue 
    @character_name = actor.character_name 
    @character_hue = actor.character_hue 
    # Initialize opacity level and blending method 
    @opacity = 255 
    @blend_type = 0 
  end 
  #-------------------------------------------------------------------------- 
  # * Same Position Starting Determinant 
  #-------------------------------------------------------------------------- 
  def check_event_trigger_here(triggers) 
    result = false 
    # If event is running 
    if $game_system.map_interpreter.running? 
      return result 
    end 
    # All event loops 
    for event in $game_map.events.values 
      # If event coordinates and triggers are consistent 
      if event.x == @x and event.y == @y and triggers.include?(event.trigger) 
        # If starting determinant is same position event (other than jumping) 
        if not event.jumping? and event.over_trigger? 
          event.start 
          result = true 
        end 
      end 
    end 
    return result 
  end 
  #-------------------------------------------------------------------------- 
  # * Front Envent Starting Determinant 
  #-------------------------------------------------------------------------- 
  def check_event_trigger_there(triggers) 
    result = false 
    # If event is running 
    if $game_system.map_interpreter.running? 
      return result 
    end 
    # Calculate front event coordinates 
    new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0) 
    new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0) 
    # All event loops 
    for event in $game_map.events.values 
      # If event coordinates and triggers are consistent 
      if event.x == new_x and event.y == new_y and 
         triggers.include?(event.trigger) 
        # If starting determinant is front event (other than jumping) 
        if not event.jumping? and not event.over_trigger? 
          event.start 
          result = true 
        end 
      end 
    end 
    # If fitting event is not found 
    if result == false 
      # If front tile is a counter 
      if $game_map.counter?(new_x, new_y) 
        # Calculate 1 tile inside coordinates 
        new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0) 
        new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0) 
        # All event loops 
        for event in $game_map.events.values 
          # If event coordinates and triggers are consistent 
          if event.x == new_x and event.y == new_y and 
             triggers.include?(event.trigger) 
            # If starting determinant is front event (other than jumping) 
            if not event.jumping? and not event.over_trigger? 
              event.start 
              result = true 
            end 
          end 
        end 
      end 
    end 
    return result 
  end 
  #-------------------------------------------------------------------------- 
  # * Touch Event Starting Determinant 
  #-------------------------------------------------------------------------- 
  def check_event_trigger_touch(x, y) 
    result = false 
    # If event is running 
    if $game_system.map_interpreter.running? 
      return result 
    end 
    # All event loops 
    for event in $game_map.events.values 
      # If event coordinates and triggers are consistent 
      if event.x == x and event.y == y and [1,2].include?(event.trigger) 
        # If starting determinant is front event (other than jumping) 
        if not event.jumping? and not event.over_trigger? 
          event.start 
          result = true 
        end 
      end 
    end 
    return result 
  end 
  #-------------------------------------------------------------------------- 
  # * Frame Update 
  #-------------------------------------------------------------------------- 
  def update 
    # Remember whether or not moving in local variables 
    last_moving = moving? 
    # If moving, event running, move route forcing, and message window 
    # display are all not occurring 
    unless moving? or $game_system.map_interpreter.running? or 
           @move_route_forcing or $game_temp.message_window_showing 
      # Move <b style="color:#D0D1D1">player</b> in the <b style="color:#D0D1D1">direction</b> the directional button is being pressed 
      case Input.dir4 
      when 2 
        move_down 
      when 4 
        move_left 
      when 6 
        move_right 
      when 8 
        move_up 
      end 
    end 
    # Remember coordinates in local variables 
    last_real_x = @real_x 
    last_real_y = @real_y 
    super 
    # If character moves down and is positioned lower than the center 
    # of the screen 
    if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y 
      # Scroll map down 
      $game_map.scroll_down(@real_y - last_real_y) 
    end 
    # If character moves left and is positioned more let on-screen than 
    # center 
    if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X 
      # Scroll map left 
      $game_map.scroll_left(last_real_x - @real_x) 
    end 
    # If character moves right and is positioned more right on-screen than 
    # center 
    if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X 
      # Scroll map right 
      $game_map.scroll_right(@real_x - last_real_x) 
    end 
    # If character moves up and is positioned higher than the center 
    # of the screen 
    if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y 
      # Scroll map up 
      $game_map.scroll_up(last_real_y - @real_y) 
    end 
    # If not moving 
    unless moving? 
      # If <b style="color:#D0D1D1">player</b> was moving last time 
      if last_moving 
        # Event determinant is via touch of same position event 
        result = check_event_trigger_here([1,2]) 
        # If event which started does not exist 
        if result == false 
          # Disregard if debug mode is ON and ctrl key was pressed 
          unless $DEBUG and Input.press?(Input::CTRL) 
            # Encounter countdown 
            if @encounter_count > 0 
              @encounter_count -= 1 
            end 
          end 
        end 
      end 
      # If C button was pressed 
      if Input.trigger?(Input::C) 
        # Same position and front event determinant 
        check_event_trigger_here([0]) 
        check_event_trigger_there([0,1,2]) 
      end 
    end
   
    # Update du compteur de silence
    if @silence_count > 0
      @silence_count -= 1
    end
  end 
end