Mog Hunter's Pickup and Throw help.

WinglessRM

Villager
Member
Joined
Sep 20, 2013
Messages
28
Reaction score
3
Primarily Uses
http://www.atelier-rgss.com/RGSS/System/ACE_SYS05.html

#==============================================================================# +++ 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 :pickup_lockattr_accessor :pickup_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
(\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?
 
Last edited by a moderator:

Susan

Veteran
Veteran
Joined
Sep 1, 2014
Messages
2,748
Reaction score
8,346
First Language
No idea...
Primarily Uses
RMMV
Mog's Pick-up & Throw script is functional as is.

Did you add other scripts besides the ones from his set?
 

WinglessRM

Villager
Member
Joined
Sep 20, 2013
Messages
28
Reaction score
3
Primarily Uses
Mog's Pick-up & Throw script is functional as is.

Did you add other scripts besides the ones from his set?
Yeah it turns out that victors pixel movement is conflicting with the script in some way.

I'll try to see if it's possible to have the rock set to through when i pick it up and disable it when i throw it down.

Edit: Any suggestions would be nice (withut having to remove victors script).
 
Last edited by a moderator:

Susan

Veteran
Veteran
Joined
Sep 1, 2014
Messages
2,748
Reaction score
8,346
First Language
No idea...
Primarily Uses
RMMV
If pixel movement is important to you, perhaps you can try Khas's Pixel Movement script.
 

WinglessRM

Villager
Member
Joined
Sep 20, 2013
Messages
28
Reaction score
3
Primarily Uses
If pixel movement is important to you, perhaps you can try Khas's Pixel Movement script.
I did and it had its own share of issues.

Honestly i was having other problems with pixel movement so perhaps the best option would be to drop it all together (its hard to design around the grid in the grid based engine).

Thanks for the help Susan.

Mods,go ahead and lock this up like Jeffrey Dahmer.
 
Last edited by a moderator:

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

Couple hours of work. Might use in my game as a secret find or something. Not sure. Fancy though no? :D
Holy stink, where have I been? Well, I started my temporary job this week. So less time to spend on game design... :(
Cartoonier cloud cover that better fits the art style, as well as (slightly) improved blending/fading... fading clouds when there are larger patterns is still somewhat abrupt for some reason.
Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD
How many parameters is 'too many'??

Forum statistics

Threads
105,863
Messages
1,017,053
Members
137,571
Latest member
grr
Top