- Joined
- Sep 20, 2013
- Messages
- 28
- Reaction score
- 3
- Primarily Uses
http://www.atelier-rgss.com/RGSS/System/ACE_SYS05.html
(\d+)>
Yeah so my only problem with this script is that i cannot seem to figure out how to walk around with the object after i pick it up.
If i set the object to "Through" then i can pick it up but i can also walk through it and it cannot collide with other object properly.
Does anyone know how to fix this?
#==============================================================================# +++ MOG - PICKUP AND THROW (v1.2) +++#==============================================================================# By Moghunter# http://www.atelier-rgss.com#==============================================================================# Sistema de carregar e arremessar eventos, útil para criar puzzles.#==============================================================================# Para definir quais os eventos serão arremessáveis basta nomear o evento# da seguinte forma.## ## X é a distância que o evento pode ser arremessado.## Exemplo## Event01##==============================================================================# Sprite do personagem carregando o Objeto (Opcional)#==============================================================================# É preciso ter uma imagem do personagem em posição de carregar objeto e# nomear a imagem da sequinte forma.## Character_Name + _Pickup## Exemplo## Actor1_Pickup.png#==============================================================================#==============================================================================# ● Histórico (Version History)#==============================================================================# v 1.2 - Melhor codificação.# v 1.1 - Melhor compatibilidade com scripts de terceiros.#==============================================================================module MOG_PICK_THROW#Altura do sprite do objeto carregado.SPRITE_POSITION = 20#Definição do Som quando o objeto é arremessado.THROW_SE = "Jump2"#Definição do Som quando o objeto é carregado.PICK_UP_SE = "Jump1"#ID da Switch que desativa o sistema de carregar.DISABLE_PICKUP_SWITCH_ID = 100# Definição do botão de carregar(Arremeçar) objetos.PICKUP_BUTTON = Input::Cend#==============================================================================# ■ Game_Temp#==============================================================================class Game_Tempattr_accessor
ickup_lockattr_accessor
ickup_lock_timeattr_accessor :character_pre_nameattr_accessor :can_throwattr_accessor :throw_position#--------------------------------------------------------------------------# ● initialize#--------------------------------------------------------------------------alias mog_pick_initialize initializedef initialize@pickup_lock = false@pickup_lock_time = 0@character_pre_name = ""@can_throw = true@throw_position = []mog_pick_initializeendend#==============================================================================# ■ Game_Event#==============================================================================class Game_Event < Game_Characterattr_reader :jump_countattr_accessor :xattr_accessor :yattr_accessor :bush_depthattr_accessor :direction#--------------------------------------------------------------------------# ● initialize#--------------------------------------------------------------------------alias mog_pickup_initialize initializedef initialize(map_id, event)mog_pickup_initialize(map_id, event)@throw_active = falseif event.name =~ //i@throw = $1.to_iendendend#==============================================================================# ■ Game_CharacterBase#==============================================================================class Game_CharacterBaseattr_accessor :throw_activeattr_accessor :throw#--------------------------------------------------------------------------# ● initialize#--------------------------------------------------------------------------alias x_pickup_initialize initializedef initialize@throw_active = false@throw = 0x_pickup_initializeendend#==============================================================================# ■ Game_Character#==============================================================================class Game_Character < Game_CharacterBase#--------------------------------------------------------------------------# ● Throw Action#--------------------------------------------------------------------------def throw_action(range)moveto($game_player.x,$game_player.y)jump_range = rangemoveto($game_player.x,$game_player.y)range.times dounless jumping?case $game_player.directionwhen 6jump(jump_range,0) if throw_range?(jump_range,0,jump_range)when 4jump(-jump_range,0) if throw_range?(-jump_range,0,jump_range)when 2jump(0,jump_range) if throw_range?(0,jump_range,jump_range)when 8jump(0,-jump_range) if throw_range?(0,-jump_range,jump_range)endif @x == $game_player.x and @y == $game_player.y and jump_range == 1$game_temp.can_throw = falseendjump_range -= 1endendend#--------------------------------------------------------------------------# ● Throw Range?#--------------------------------------------------------------------------def throw_range?(x, y,range )x = $game_player.xy = $game_player.ycase $game_player.directionwhen 2y += rangewhen 6x += rangewhen 4x -= rangewhen 8y -= rangeendreturn false if collide_with_characters?(x, y)return false unless map_passable?(x, y,$game_player.direction)return trueendend#==============================================================================# ■ Game_Player#==============================================================================class Game_Player < Game_Characterinclude MOG_PICK_THROW#--------------------------------------------------------------------------# ● Update Player Before Movement#--------------------------------------------------------------------------alias pickup_update updatedef updatepickup_updateupdate_pickup_commandend#--------------------------------------------------------------------------# ● Update Pickup Command#--------------------------------------------------------------------------def update_pickup_command$game_temp.pickup_lock_time -= 1 if $game_temp.pickup_lock_time > 0return if $game_temp.pickup_lock_time > 0if Input.trigger?(PICKUP_BUTTON)throw_event if can_check_throw_event?check_event_pickup([0,1,2]) if can_check_pickup_event?endend#--------------------------------------------------------------------------# ● Check Action Event#--------------------------------------------------------------------------alias mog_pickup_check_action_event check_action_eventdef check_action_eventreturn if $game_temp.pickup_lock_time > 0 or $game_temp.pickup_lockmog_pickup_check_action_eventend#--------------------------------------------------------------------------# ● Can Check Pickup Event#--------------------------------------------------------------------------def can_check_pickup_event?return false if $game_temp.pickup_lockreturn false if $game_temp.pickup_lock_time > 0return false if $game_map.interpreter.running?return false if $game_message.visiblereturn false if $game_switches[DISABLE_PICKUP_SWITCH_ID]return trueend#--------------------------------------------------------------------------# ● Can Check Throw Event#--------------------------------------------------------------------------def can_check_throw_event?return false if $game_temp.pickup_lock == falsereturn false if $game_temp.pickup_lock_time > 0return false if $game_map.interpreter.running?return false if $game_message.visiblereturn false if $game_switches[DISABLE_PICKUP_SWITCH_ID]return trueend#--------------------------------------------------------------------------# ● Reserve Transfer#--------------------------------------------------------------------------alias mog_pickup_reserve_transfer reserve_transferdef reserve_transfer(map_id, x, y, direction)if $game_temp.pickup_lock == truefor event in $game_map.events.valuesif event.throw_active == trueevent.throw_active = falseevent.moveto(@x,@y)case @directionwhen 2event.jump(0,-1)when 4event.jump(1,0)when 6event.jump(-1,0)when 8event.jump(0,1)endendend$game_temp.pickup_lock = false$game_temp.pickup_lock_time = 0@character_name = $game_temp.character_pre_nameendmog_pickup_reserve_transfer(map_id, x, y, direction)end#--------------------------------------------------------------------------# ● Movable?#--------------------------------------------------------------------------alias mog_pickup_movable movable?def movable?return false if $game_temp.pickup_lock_time > 0mog_pickup_movableend#--------------------------------------------------------------------------# ● Throw Event#--------------------------------------------------------------------------def throw_eventfor event in $game_map.events.valuesif event.throw_active and not jumping?$game_temp.can_throw = trueevent.throw_action(event.throw)return if $game_temp.can_throw == false$game_temp.pickup_lock_time = event.jump_count$game_temp.throw_position[0] = event.x$game_temp.throw_position[1] = event.yevent.throw_active = false$game_temp.pickup_lock = falseAudio.se_play("Audio/SE/" + THROW_SE, 100, 100)@character_name = $game_temp.character_pre_namebreakendendif event == nil$game_map.reset_pickupendend#--------------------------------------------------------------------------# ● Check Event Pickup#--------------------------------------------------------------------------def check_event_pickup(triggers)front_x = $game_map.x_with_direction(@x, @direction)front_y = $game_map.y_with_direction(@y, @direction)for event in $game_map.events_xy(front_x, front_y)if event.throw > 0 and not jumping?event.throw_active = true$game_temp.pickup_lock = trueevent.jump(0,0)$game_temp.pickup_lock_time = event.jump_countevent.x = $game_player.xevent.y = $game_player.yAudio.se_play("Audio/SE/" + PICK_UP_SE, 100, 100)$game_temp.character_pre_name = @character_namemake_pickup_posebreakendendend#--------------------------------------------------------------------------# ● Img Pickup Exist?#--------------------------------------------------------------------------def img_pickup_exist?Cache.character(@character_name + "_Pickup") rescue return falseend#--------------------------------------------------------------------------# ● Make Pickup Pose#--------------------------------------------------------------------------def make_pickup_pose@character_name = @character_name + "_Pickup" if img_pickup_exist?endend#==============================================================================# ■ Sprite_Character#==============================================================================class Sprite_Character < Sprite_Baseinclude MOG_PICK_THROW#--------------------------------------------------------------------------# ● Update X Effects#--------------------------------------------------------------------------alias mog_pickup_update_position update_positiondef update_positionmog_pickup_update_positionupdate_pickup_position if can_pickup_position?end#--------------------------------------------------------------------------# ● Can Pickup Position#--------------------------------------------------------------------------def can_pickup_position?return false if $game_temp.pickup_lock_time > 0return false if $game_temp.pickup_lock == falsereturn false if @character.throw_active == falsereturn false if @character.is_a?(Game_Player)return false if @character.jumping?return trueend#--------------------------------------------------------------------------# ● Update Pickup Position#--------------------------------------------------------------------------def update_pickup_position@character.x = $game_player.x@character.y = $game_player.y@character.bush_depth = 0unless @character.direction_fix@character.direction = $game_player.directionendself.x = $game_player.screen_xself.y = $game_player.screen_y - SPRITE_POSITIONself.z = $game_player.screen_z + 1endend#==============================================================================# ■ Scene_Map#==============================================================================class Scene_Map < Scene_Base#--------------------------------------------------------------------------# ● Call Menu#--------------------------------------------------------------------------alias mog_pickup_call_menu call_menudef call_menureturn if $game_temp.pickup_lock == truemog_pickup_call_menuendend#==============================================================================# ■ Game Interpreter#==============================================================================class Game_Interpreter#--------------------------------------------------------------------------# ● Command 352#--------------------------------------------------------------------------alias mog_pickup_command_352 command_352def command_352return if $game_temp.pickup_lock == truemog_pickup_command_352endend#==============================================================================# ■ Game_Map#==============================================================================class Game_Map#--------------------------------------------------------------------------# ● Setup#--------------------------------------------------------------------------alias mog_pickup_setup setupdef setup(map_id)mog_pickup_setup(map_id)reset_pickupend#--------------------------------------------------------------------------# ● Reset Pickup#--------------------------------------------------------------------------def reset_pickupfor i in $game_map.events.valuesif i.throw_activei.throw_active = falsei.moveto($game_player.x,$game_player.y)i.jump(0,0)i.move_backward$game_player.character_name = $game_temp.character_pre_nameendend$game_temp.pickup_lock_time = 0$game_temp.pickup_lock = falseendend$mog_rgss3_pickup_and_throw = true
Yeah so my only problem with this script is that i cannot seem to figure out how to walk around with the object after i pick it up.
If i set the object to "Through" then i can pick it up but i can also walk through it and it cannot collide with other object properly.
Does anyone know how to fix this?
Last edited by a moderator:

