LiTTleDRAgo Senior
Posts : 712 Thanked : 27 Engine : RMXP Skill : Skilled Type : Scripter
Trophies
Awards: | Subyek: [XP] Caterpillar 2011-06-23, 14:25 | |
| Caterpillar Versi: 1.00 Tipe: ??? PengenalanIseng-iseng ngoprek skrip ternyata hasilnya jadi caterpillar, yauda deh gw lanjutin Fitur
- Caterpillar
- Bisa ngerubah max actor di party (cuma di map, kalo di battle tetep)
Screenshots Demo--- Scripts - Code:
-
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:= # [Xp] Caterpillar # Version: 1.00 # Author : LiTTleDRAgo #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:
module Caterpillar ACTOR_MAX_PARTY = 4 PARTY_SPEED = 4
end
#------------------------------------------------------------------------------ # SDK Check #------------------------------------------------------------------------------ if Object.const_defined?('SDK') SDK.log('Caterpillar', 'LiTTleDRAgo', 2, '22.06.11') @drg_caterpillar_disabled = !SDK.enabled?('Caterpillar') end
if !@drg_caterpillar_disabled #============================================================================== # ** Game_Map #------------------------------------------------------------------------------ # This class handles the map. It includes scrolling and passable determining # functions. Refer to "$game_map" for the instance of this class. #==============================================================================
class Game_Map #-------------------------------------------------------------------------- # * Alias Listing #-------------------------------------------------------------------------- alias cater_game_map_setup setup #-------------------------------------------------------------------------- # * Setup #-------------------------------------------------------------------------- def setup(map_id) cater_game_map_setup(map_id) setup_caterpillar end #-------------------------------------------------------------------------- # * Setup Train Actors #-------------------------------------------------------------------------- def setup_caterpillar map_event = RPG::Event.new(0, 0) size = (2000+Caterpillar::ACTOR_MAX_PARTY)-1 for i in 2001..size map_event.id = i @events[i] = Game_Event.new(0, map_event) @events[i].move_speed = Caterpillar::PARTY_SPEED @events[i].move_frequency = 6 @events[i].follow_event_id = 0 @events[i].uncensor = true end $game_party.caterpillar($game_party.caterpillar_visible) end end #============================================================================== # ** Game_Party #------------------------------------------------------------------------------ # This class handles the party. It includes information on amount of gold # and items. Refer to "$game_party" for the instance of this class. #==============================================================================
class Game_Party #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :caterpillar_visible #-------------------------------------------------------------------------- # * Train Actors #-------------------------------------------------------------------------- def caterpillar(visible) @caterpillar_visible = visible.nil? ? false : visible size = (2000+Caterpillar::ACTOR_MAX_PARTY)-1 for i in 2001..size actor = $game_party.actors[i-2000] next if $game_map.events[i].nil? if $game_party.caterpillar_visible and actor $game_map.events[i].move_type = 5 $game_map.events[i].moveto($game_player.x,$game_player.y) $game_map.events[i].character_name = actor.character_name $game_map.events[i].character_hue = actor.character_hue else $game_map.events[i].move_type = 4 end end end #-------------------------------------------------------------------------- # * Add an Actor # actor_id : actor ID #-------------------------------------------------------------------------- def add_actor(actor_id) actor = $game_actors[actor_id] if @actors.size < Caterpillar::ACTOR_MAX_PARTY && !@actors.include?(actor) @actors.push(actor) $game_player.refresh end end end #============================================================================== # ** Game_Character #------------------------------------------------------------------------------ # This class deals with characters. It's used as a superclass for the # Game_Player and Game_Event classes. #============================================================================== class Game_Character #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :character_name,:character_hue, :through, :move_speed, :move_frequency, :move_type, :follow_event_id, :uncensor, :x2, :y2 #-------------------------------------------------------------------------- # * Alias Listing #-------------------------------------------------------------------------- alias init_cater_fusion initialize alias update_cater_fusion update #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize init_cater_fusion setup_caterpillar end #-------------------------------------------------------------------------- # * Setup Caterpillar #-------------------------------------------------------------------------- def setup_caterpillar @follow_event_id = 0 @x2 = @y2 = 0 end #-------------------------------------------------------------------------- # * Fusion with Event #-------------------------------------------------------------------------- def move_type_fusion_with_event event = (@follow_event_id == 0) ? $game_player : $game_map.events[@follow_event_id] return unless event @x, @y, @x2, @y2 = event.x, event.y, event.x2, event.y2 unless @character_name.empty? sx, sy = (@real_x - event.real_x).abs, (@real_y - event.real_y).abs speed = 7 if Math.hypot(sx, sy) < 2**speed * 2 self.character_name = "" if sx == 0 && sy == 0 else turn_toward_event(@follow_event_id) end else# @real_x, @real_y = @x2, @y2 end end #-------------------------------------------------------------------------- # * Move to Party Leader #-------------------------------------------------------------------------- def move_type_to_leader sx, sy = (@x - $game_player.x), (@y - $game_player.y) return if $xrxs_xas && self.throw_active return (sx == 0 && sy == 0) ? move_random : move_toward_player turn_toward_event if (sx <= 1 && sx >= -1) && (sy <= 1 && sy >= -1) method_defined?(:move_to_me) ? move_to_me : unless moving? || @direction_fix x = @direction == 4 ? -1 : @direction == 6 ? 1 : 0 y = @direction == 2 ? 1 : @direction == 8 ? -1 : 0 passable?(@x+x, @y+y, @direction) && !(x == 0 && y == 0) ? jump(x*2,y*2) : move_toward_player end @wait_count = 30 * 2 - 1 if !moving? end #-------------------------------------------------------------------------- # * Turn Toward Event #-------------------------------------------------------------------------- $noupperleft = true if !method_defined?(:turn_upper_left) def turn_toward_event(event_id = 0) event = (event_id == 0) ? $game_player : $game_map.events[event_id] return unless event sx, sy = @x - event.x, @y - event.y return if sx == 0 and sy == 0 if sx.abs == sy.abs return if $noupperleft sy > 0 ? (sx > 0 ? turn_upper_left : turn_upper_right) : (sx > 0 ? turn_lower_left : turn_lower_right) else sx.abs > sy.abs ? (sx > 0 ? turn_left : turn_right) : (sy > 0 ? turn_up : turn_down) end end #-------------------------------------------------------------------------- # * Turn Away From Event #-------------------------------------------------------------------------- def turn_away_from_event(event_id = 0) event = (event_id == 0) ? $game_player : $game_map.events[event_id] return unless event sx, sy = @x - event.x, @y - event.y return if sx == 0 and sy == 0 if sx.abs == sy.abs return if $noupperleft sy > 0 ? (sx > 0 ? turn_lower_right : turn_lower_left) : (sx > 0 ? turn_upper_right : turn_upper_left) else sx.abs > sy.abs ? (sx > 0 ? turn_right : turn_left) : (sy > 0 ? turn_down : turn_up) end end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update update_cater_fusion return if @wait_count > 0 or @move_route_forcing or @starting or lock? if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency) case @move_type when 4 then move_type_fusion_with_event when 5 then move_type_to_leader end end end end #============================================================================== # ** 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 #-------------------------------------------------------------------------- # * Alias Listing #-------------------------------------------------------------------------- alias cater_game_player_moveto moveto alias cater_game_player_refresh refresh alias passable_cater passable? #-------------------------------------------------------------------------- # * Moveto #-------------------------------------------------------------------------- def moveto(x, y) cater_game_player_moveto(x, y) size = (2000+Caterpillar::ACTOR_MAX_PARTY)-1 (2001..size).each {|i| $game_map.events[i].moveto(x, y)} end #-------------------------------------------------------------------------- # * Move to Designated Position # x : x-coordinate # y : y-coordinate #-------------------------------------------------------------------------- def originmoveto(x, y) @x,@y = x % $game_map.width, y % $game_map.height @real_x,@real_y = @x * 128, @y * 128 @prelock_direction = 0 end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh cater_game_player_refresh self.character_name = @character_name $game_party.caterpillar($game_party.caterpillar_visible) end #-------------------------------------------------------------------------- # * Passable #-------------------------------------------------------------------------- def passablecater?(x, y, d) result = passable_cater(x,y,d) new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0) new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0) return true if $xrxs_xas && self.is_a?(Game_Player) && $game_system.fly return false unless $game_map.valid?(new_x, new_y) return result if @through return false unless $game_map.passable?(x, y, d, self) && $game_map.passable?(new_x, new_y, 10 - d) $game_map.events.each_value {|event| if event.x == new_x && event.y == new_y unless event.through return true if event.name =~ /<Tembus>/i or event.id > 2000 return false if self != $game_player return false if event.character_name != "" end end } if $game_player.x == new_x and $game_player.y == new_y unless $game_player.through return false if @character_name != "" end end return result end #-------------------------------------------------------------------------- # * Passable #-------------------------------------------------------------------------- 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) return true if $DEBUG and Input.press?(Input::CTRL) return false unless $game_map.valid?(new_x, new_y) return passablecater?(x, y, d) end end #=============================================================================== # â– Patch for XAS #=============================================================================== if $xrxs_xas module XRXS_EnemySensor #-------------------------------------------------------------------------- # â—Ź Update Sensor #-------------------------------------------------------------------------- alias update_sensor_uncensor update_sensor def update_sensor update_sensor_uncensor if !self.uncensor end end end #-------------------------------------------------------------------------- # SDK Check End #-------------------------------------------------------------------------- end #-------------------------------------------------------------------------- # END OF SCRIPT #-------------------------------------------------------------------------- Credits | |
|