Sire Modrateur de l'ombre
Nombre de messages : 67 Age : 32 Niveau RPG Maker : Noob de 1er classe -_- Date d'inscription : 01/04/2007
Feuille de personnage Karma: (70/100) Light points: (70/100) Dark points: (0/100)
| Sujet: Dplacement faon Kingdom Hearts Chain Of Memories Dim 1 Avr - 2:36 | |
| Ce script permet au personnage de bouger dans 8 directions au lieu de 4 et permet de courir sur la map en maintenant la touche "Espace" du Clavier. C'est une runion de plusieurs scripts de dplacements diffrents, c'est le script ultime ( Pour Moi ) ! <1> Crez un script au-dessus de "Main" portant le nom de "Game_Player2". <1> <2> Collez le code ultime l'intrieur! <2> - Code:
-
class Game_Player < Game_Character #-------------------------------------------------------------------------- # 萔 #-------------------------------------------------------------------------- UP = 48 # ̗]T(0 < UP < 63) DOWN = 16 # ̗]T(0 < DOWN <63) SIDE = 32 # E̗]T(0 < SIDE <63) SLANT = false # ړ[g̎߈ړAxC #-------------------------------------------------------------------------- # JCX^Xϐ #-------------------------------------------------------------------------- attr_reader :event # Cxgړx attr_accessor :move_speed # ړx #-------------------------------------------------------------------------- # t[XV #-------------------------------------------------------------------------- alias :update_original :update def update # @walk:sx @dash:_bVړx # @event:Cxgړxi0̎́ACxgɑxύXȂj @walk = 4 @dash = 5 @event = 4 @dot_m = true #_bV@BG^[L[ĂԁAړxύXB unless moving? or $game_system.map_interpreter.running? or @move_route_forcing or $game_temp.message_window_showing if @walk != @dash if Input.press?(Input::C) if @move_speed != @dash @move_speed = @dash end else if @move_speed != @walk @move_speed = @walk end end end end if @revise_x == nil and @revise_y == nil @revise_x = 0 @revise_y = 0 end unless @dot_m update_original return end if @move_route_forcing # [JϐɈړǂL last_moving = moving? # [JϐɍWL last_real_x = @real_x last_real_y = @real_y # WĂꍇ if (@revise_x != 0 or @revise_y != 0) and not jumping? and @move == true if @revise_x != @real_x - @x * 128 or @revise_y != @real_y - @y * 128 @revise_x = @real_x - @x * 128 @revise_y = @real_y - @y * 128 end # ړdistance1ƖڕWdistance2ݒ distance1 = 2 ** @move_speed distance2 = Math.sqrt(@revise_x ** 2 + @revise_y ** 2) # ړڕWzꍇ if distance1 > distance2 # IɕWɂ @real_x = @real_x - @revise_x @real_y = @real_y - @revise_y @revise_x = 0 @revise_y = 0 anime_update # ړڕWɒBȂꍇ else # ړڕWɋ߂Â @real_x -= (distance1 * @revise_x / distance2).round @real_y -= (distance1 * @revise_y / distance2).round @revise_x = @real_x - @x * 128 @revise_y = @real_y - @y * 128 anime_update end else super end else @move = false # ړACxgsAړ[gA # bZ[WEBhÊłȂꍇ unless moving? or $game_system.map_interpreter.running? or @move_route_forcing or $game_temp.message_window_showing @event_run = false # {^ĂA̕փvC[ړ case Input.dir8
when 1 move_lower_left_p when 2 move_down_p when 3 move_lower_right_p when 4 move_left_p when 6 move_right_p when 7 move_upper_left_p when 8 move_up_p when 9 move_upper_right_p end end # [JϐɍWL last_real_x = @real_x last_real_y = @real_y # ړ @real_x = @x * 128 + @revise_x @real_y = @y * 128 + @revise_y # [JϐɈړǂL last_moving = moving? # WXV move_on # ݂̍WƈȑO̍WقȂꍇ if (last_real_x != @real_x or last_real_y != @real_y) @move_distance = 0 if @move_distance == nil @move_distance += Math.sqrt((last_real_x - @real_x) ** 2 + (last_real_y - @real_y) ** 2) if @move_distance >= 128 @move_distance %= 128 increase_steps end # Aj[VXV anime_update else @pattern = 0 end end # LN^[ɈړAʏ̈ʒu艺̏ꍇ if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y # }bvɃXN[ $game_map.scroll_down(@real_y - last_real_y) end # LN^[ɈړAʏ̈ʒu荶̏ꍇ if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X # }bvɃXN[ $game_map.scroll_left(last_real_x - @real_x) end # LN^[EɈړAʏ̈ʒuȄꍇ if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X # }bvEɃXN[ $game_map.scroll_right(@real_x - last_real_x) end # LN^[ɈړAʏ̈ʒȕꍇ if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y # }bvɃXN[ $game_map.scroll_up(last_real_y - @real_y) end # OvC[ړꍇ if last_moving # ʒũCxgƂ̐ڐGɂCxgN result = check_event_trigger_here([1,2]) # NCxgȂꍇ if result == false # fobO[h ON CTRL L[Ăꍇ unless $DEBUG and Input.press?(Input::CTRL) # GJEg JEg_E if @encounter_count > 0 @encounter_count -= 1 end end end end # C {^ꂽꍇ if Input.trigger?(Input::C) # ʒuѐʂ̃CxgN check_event_trigger_here([0]) check_event_trigger_there([0,1,2]) end end #-------------------------------------------------------------------------- # IuWFNg
#-------------------------------------------------------------------------- def initialize @revise_x = 0 @revise_y = 0 @move == false super end #-------------------------------------------------------------------------- # ړ #-------------------------------------------------------------------------- def moving? unless @dot_m result = super return result end # ړ̏ꍇIWi̔ if @move_route_forcing if @move == false return false end super # ʏ펞͌WWƈقȂꍇ݈̂ړƔ else return (@x != (@real_x / 128.0).round or @y != (@real_y / 128.0).round) end end #-------------------------------------------------------------------------- # ړ #-------------------------------------------------------------------------- def moving_a? if @move == false if (@move_route.list[@move_route_index].code <= 14 or @move_route.list[@move_route_index].code == 25) @move = true end return false end moving? end #-------------------------------------------------------------------------- # t[XV (Wv) #-------------------------------------------------------------------------- def update_jump # WvJEg 1 炷 @jump_count -= 1 # VWvZ @real_x = (@real_x * @jump_count + @x * 128) / (@jump_count + 1) @real_y = (@real_y * @jump_count + @y * 128) / (@jump_count + 1) if @jump_count == 0 @revise_x = 0 @revise_y = 0 end end #-------------------------------------------------------------------------- # ړ^Cv : JX^ #-------------------------------------------------------------------------- def move_type_custom unless @dot_m super return end # ~łȂΒf if jumping? or moving_a? return end # ړR}h̃Xg̍ŌɓB܂Ń[v while @move_route_index < @move_route.list.size # ړR}h擾 command = @move_route.list[@move_route_index] # R}hR[h 0 (Xg̍Ō) ̏ꍇ if command.code == 0 # IvV [JԂ] ON ̏ꍇ if @move_route.repeat # ړ[g̃CfbNXŏɖ߂ @move_route_index = 0 end # IvV [JԂ] OFF ̏ꍇ unless @move_route.repeat # ړ[g̏ꍇ if @move_route_forcing and not @move_route.repeat # ړ[g̋ @move_route_forcing = false # IWïړ[gA @move_route = @original_move_route @move_route_index = @original_move_route_index @original_move_route = nil end # ~JEgNA @stop_count = 0 end return end # ړnR}h (Ɉړ`Wv) ̏ꍇ if command.code <= 14 # R}hR[hŕ case command.code when 1 # Ɉړ move_down when 2 # Ɉړ move_left when 3 # EɈړ move_right when 4 # Ɉړ move_up when 5 # Ɉړ move_lower_left when 6 # EɈړ move_lower_right when 7 # Ɉړ move_upper_left when 8 # EɈړ move_upper_right when 9 # _Ɉړ move_random when 10 # vC[ɋ߂ move_toward_player when 11 # vC[牓 move_away_from_player when 12 # Oi move_forward when 13 # move_backward when 14 # Wv jump(command.parameters[0], command.parameters[1]) end # IvV [ړłȂꍇ͖] OFF ŁAړs̏ꍇ if not @move_route.skippable and not moving? and not jumping? return end @move_route_index += 1 return end # EFCg̏ꍇ if command.code == 15 # EFCgJEgݒ @wait_count = command.parameters[0] * 2 - 1 @move_route_index += 1 return end # ύXñR}h̏ꍇ if command.code >= 16 and command.code <= 26 # R}hR[hŕ case command.code when 16 # turn_down when 17 # turn_left when 18 # E turn_right when 19 # turn_up when 20 # E 90 x] turn_right_90 when 21 # 90 x] turn_left_90 when 22 # 180 x] turn_180 when 23 # E 90 x] turn_right_or_left_90 when 24 # _ɕ] turn_random when 25 # vC[̕ turn_toward_player when 26 # vC[̋t turn_away_from_player end @move_route_index += 1 return end # ̑̃R}h̏ꍇ if command.code >= 27 # R}hR[hŕ case command.code when 27 # XCb` ON $game_switches[command.parameters[0]] = true $game_map.need_refresh = true when 28 # XCb` OFF $game_switches[command.parameters[0]] = false $game_map.need_refresh = true when 29 # ړx̕ύX @move_speed = command.parameters[0] when 30 # ړpx̕ύX @move_frequency = command.parameters[0] when 31 # ړAj ON @walk_anime = true when 32 # ړAj OFF @walk_anime = false when 33 # ~Aj ON @step_anime = true when 34 # ~Aj OFF @step_anime = false when 35 # Œ ON @direction_fix = true when 36 # Œ OFF @direction_fix = false when 37 # 蔲 ON @through = true when 38 # 蔲 OFF @through = false when 39 # őOʂɕ ON @always_on_top = true when 40 # őOʂɕ OFF @always_on_top = false when 41 # OtBbNύX @tile_id = 0 @character_name = command.parameters[0] @character_hue = command.parameters[1] if @original_direction != command.parameters[2] @direction = command.parameters[2] @original_direction = @direction @prelock_direction = 0 end if @original_pattern != command.parameters[3] @pattern = command.parameters[3] @original_pattern = @pattern end when 42 # sx̕ύX @opacity = command.parameters[0] when 43 # @̕ύX @blend_type = command.parameters[0] when 44 # SE ̉t $game_system.se_play(command.parameters[0]) when 45 # XNvg result = eval(command.parameters[0]) end @move_route_index += 1 return end end end #-------------------------------------------------------------------------- # Ɉړ #-------------------------------------------------------------------------- def move_down_p # turn_down # ړZo distance = 2 ** @move_speed down1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance, true) end #-------------------------------------------------------------------------- # Ɉړǂ̔P #-------------------------------------------------------------------------- def down1(x, y, distance, down = false) result = down2(x, y, distance) if result == false @event_run = check_event_trigger_touch(x, y+1) return result end if @revise_x < -SIDE result = down2(x, y + 1, distance, 4) result &= down2(x - 1, y, distance) if result == false if down move_lower_right_p if @revise_x > SIDE @revise_x = SIDE end end return result end elsif @revise_x > SIDE result = down2(x, y + 1, distance, 6) result &= down2(x + 1, y, distance) if result == false if down move_lower_left_p if @revise_x < -SIDE @revise_x = -SIDE end end return result end end # ɈړȂړ @revise_y += distance return result end #-------------------------------------------------------------------------- # Ɉړǂ̔Q #-------------------------------------------------------------------------- def down2(x, y, distance, d = 2) if @revise_y + distance > DOWN unless passable?(x, y, d) if @revise_y < DOWN @revise_y = DOWN end return false end end return true end #-------------------------------------------------------------------------- # Ɉړ #-------------------------------------------------------------------------- def move_left_p # turn_left distance = 2 ** @move_speed left1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance, true) end #-------------------------------------------------------------------------- # Ɉړǂ̔P #-------------------------------------------------------------------------- def left1(x, y, distance, left = false) result = left2(x, y, distance) if result == false @event_run = check_event_trigger_touch(x-1, y) return result end if @revise_y < -UP result = left2(x - 1, y, distance, 8) result &= left2(x, y - 1, distance) if result == false if left move_lower_left_p if @revise_y > DOWN @revise_y = DOWN end end return result end elsif @revise_y > DOWN result = left2(x - 1, y, distance, 2) result &= left2(x, y + 1, distance) if result == false if left move_upper_left_p if @revise_y < -UP @revise_y = -UP end end return result end end @revise_x -= distance return result end #-------------------------------------------------------------------------- # Ɉړǂ̔Q #-------------------------------------------------------------------------- def left2(x, y, distance, d = 4) if @revise_x - distance < -SIDE unless passable?(x, y, d) if @revise_x > -SIDE @revise_x = -SIDE end return false end end return true end #-------------------------------------------------------------------------- # EɈړ #-------------------------------------------------------------------------- def move_right_p # E turn_right distance = 2 ** @move_speed right1(((@x * 128 + @revise_x) / 128.0).round, ((@y * 128 + @revise_y) / 128.0).round, distance, true) end
| |
|
Daxter Porteur de la Keyblade
Nombre de messages : 122 Date d'inscription : 28/03/2007
Feuille de personnage Karma: (100/100) Light points: (0/100) Dark points: (0/100)
| Sujet: Re: Dplacement faon Kingdom Hearts Chain Of Memories Dim 1 Avr - 2:43 | |
| Bon script, il faut encore que je regarde a de plus prs mais premire vue, c'est tout bon, comme d'habitude mon Sire | |
|