Suporte ao desenvolvimento de jogos!


    VxA pick up

    Compartilhe
    avatar
    Link
    Membro Ativo
    Membro Ativo

    Mensagens : 307
    Créditos : 35

    VxA pick up

    Mensagem por Link em Sab Jun 16, 2012 4:48 pm

    Sistema de carregar e arremessar eventos, útil para criar puzzles.
    By Moghunter

    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


    É 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


    Código:
    ==============================================================================
    # ■ +++ MOG - PICKUP AND THROW (v1.0) +++
    #==============================================================================
    # 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.
    #
    # <ThrowX>
    #
    # X é a distância que o evento pode ser arremessado.
    #
    # Exemplo
    #
    # Event01<Throw4>
    #
    #==============================================================================
    # 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
    #==============================================================================
    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 = 20
    # Definição do botão de carregar(Arremeçar) objetos.
    PICKUP_BUTTON = Input::C
    end

    #==============================================================================
    # ■ Game_Temp
    #==============================================================================
    class Game_Temp

    attr_accessor :pickup_lock
    attr_accessor :pickup_lock_time
    attr_accessor :character_pre_name
    attr_accessor :can_throw
    attr_accessor :throw_position

    #--------------------------------------------------------------------------
    # ● initialize
    #--------------------------------------------------------------------------
    alias mog_pick_initialize initialize
    def initialize
    @pickup_lock = false
    @pickup_lock_time = 0
    @character_pre_name = ""
    @can_throw = true
    @throw_position = []
    mog_pick_initialize
    end
    end

    #==============================================================================
    # ■ Game_Event
    #==============================================================================
    class Game_Event < Game_Character
    attr_reader :jump_count
    attr_accessor :x
    attr_accessor :y
    attr_accessor :bush_depth
    attr_accessor :direction

    #--------------------------------------------------------------------------
    # ● initialize
    #--------------------------------------------------------------------------
    alias mog_pickup_initialize initialize
    def initialize(map_id, event)
    mog_pickup_initialize(map_id, event)
    @throw_active = false
    if event.name =~ /<Throw(\d+)>/i
    @throw = $1.to_i
    end
    end
    end

    #==============================================================================
    # ■ Game_Character
    #==============================================================================
    class Game_Character < Game_CharacterBase

    attr_accessor :throw_active
    attr_accessor :throw

    #--------------------------------------------------------------------------
    # ● initialize
    #--------------------------------------------------------------------------
    alias x_pickup_initialize initialize
    def initialize
    @throw_active = false
    @throw = 0
    x_pickup_initialize
    end

    #--------------------------------------------------------------------------
    # ● Throw Action
    #--------------------------------------------------------------------------
    def throw_action(range)
    moveto($game_player.x,$game_player.y)
    jump_range = range
    #@x = $game_player.x
    #@y = $game_player.y
    moveto($game_player.x,$game_player.y)
    range.times do
    unless jumping?
    case $game_player.direction
    when 6
    jump(jump_range,0) if throw_range?(jump_range,0,jump_range)
    when 4
    jump(-jump_range,0) if throw_range?(-jump_range,0,jump_range)
    when 2
    jump(0,jump_range) if throw_range?(0,jump_range,jump_range)
    when 8
    jump(0,-jump_range) if throw_range?(0,-jump_range,jump_range)
    end
    if @x == $game_player.x and @y == $game_player.y and jump_range == 1
    $game_temp.can_throw = false
    end
    jump_range -= 1
    end
    end
    end

    #--------------------------------------------------------------------------
    # ● Throw Range?
    #--------------------------------------------------------------------------
    def throw_range?(x, y,range )
    x = $game_player.x
    y = $game_player.y
    case $game_player.direction
    when 2
    y += range
    when 6
    x += range
    when 4
    x -= range
    when 8
    y -= range
    end
    return false if collide_with_characters?(x, y)
    return false unless map_passable?(x, y,$game_player.direction)
    return true
    end

    end

    #==============================================================================
    # ■ Game_Player
    #==============================================================================
    class Game_Player < Game_Character
    include MOG_PICK_THROW

    #--------------------------------------------------------------------------
    # ● Update Player Before Movement
    #--------------------------------------------------------------------------
    alias pickup_update update
    def update
    pickup_update
    update_pickup_command
    end

    #--------------------------------------------------------------------------
    # ● Update Pickup Command
    #--------------------------------------------------------------------------
    def update_pickup_command
    $game_temp.pickup_lock_time -= 1 if $game_temp.pickup_lock_time > 0
    return if $game_temp.pickup_lock_time > 0
    if Input.trigger?(PICKUP_BUTTON)
    throw_event if can_check_throw_event?
    check_event_pickup([0,1,2]) if can_check_pickup_event?
    end
    end

    #--------------------------------------------------------------------------
    # ● Check Action Event
    #--------------------------------------------------------------------------
    alias mog_pickup_check_action_event check_action_event
    def check_action_event
    return if $game_temp.pickup_lock_time > 0 or $game_temp.pickup_lock
    mog_pickup_check_action_event
    end

    #--------------------------------------------------------------------------
    # ● Can Check Pickup Event
    #--------------------------------------------------------------------------
    def can_check_pickup_event?
    return false if $game_temp.pickup_lock
    return false if $game_temp.pickup_lock_time > 0
    return false if $game_map.interpreter.running?
    return false if $game_message.visible
    return false if $game_switches[DISABLE_PICKUP_SWITCH_ID]
    return true
    end

    #--------------------------------------------------------------------------
    # ● Can Check Throw Event
    #--------------------------------------------------------------------------
    def can_check_throw_event?
    return false if $game_temp.pickup_lock == false
    return false if $game_temp.pickup_lock_time > 0
    return false if $game_map.interpreter.running?
    return false if $game_message.visible
    return false if $game_switches[DISABLE_PICKUP_SWITCH_ID]
    return true
    end

    #--------------------------------------------------------------------------
    # ● Reserve Transfer
    #--------------------------------------------------------------------------
    alias mog_pickup_reserve_transfer reserve_transfer
    def reserve_transfer(map_id, x, y, direction)
    if $game_temp.pickup_lock == true
    for event in $game_map.events.values
    if event.throw_active == true
    event.throw_active = false
    event.moveto(@x,@y)
    case @direction
    when 2
    event.jump(0,-1)
    when 4
    event.jump(1,0)
    when 6
    event.jump(-1,0)
    when 8
    event.jump(0,1)
    end
    end
    end
    $game_temp.pickup_lock = false
    $game_temp.pickup_lock_time = 0
    @character_name = $game_temp.character_pre_name
    end
    mog_pickup_reserve_transfer(map_id, x, y, direction)
    end

    #--------------------------------------------------------------------------
    # ● Move By Input
    #--------------------------------------------------------------------------
    alias mog_pickup_move_by_input move_by_input
    def move_by_input
    return if $game_temp.pickup_lock_time > 0
    mog_pickup_move_by_input
    end

    #--------------------------------------------------------------------------
    # ● Throw Event
    #--------------------------------------------------------------------------
    def throw_event
    for event in $game_map.events.values
    if event.throw_active and not jumping?
    $game_temp.can_throw = true
    event.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.y
    event.throw_active = false
    $game_temp.pickup_lock = false
    Audio.se_play("Audio/SE/" + THROW_SE, 100, 100)
    @character_name = $game_temp.character_pre_name
    break
    end
    end
    if event == nil
    $game_map.reset_pickup
    end
    end

    #--------------------------------------------------------------------------
    # ● 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 = true
    event.jump(0,0)
    $game_temp.pickup_lock_time = event.jump_count
    event.x = $game_player.x
    event.y = $game_player.y
    Audio.se_play("Audio/SE/" + PICK_UP_SE, 100, 100)
    $game_temp.character_pre_name = @character_name
    make_pickup_pose
    break
    end
    end
    end

    #--------------------------------------------------------------------------
    # ● Img Pickup Exist?
    #--------------------------------------------------------------------------
    def img_pickup_exist?
    Cache.character(@character_name + "_Pickup") rescue return false
    end

    #--------------------------------------------------------------------------
    # ● Make Pickup Pose
    #--------------------------------------------------------------------------
    def make_pickup_pose
    @character_name = @character_name + "_Pickup" if img_pickup_exist?
    end

    end

    #==============================================================================
    # ■ Sprite_Character
    #==============================================================================
    class Sprite_Character < Sprite_Base
    include MOG_PICK_THROW

    #--------------------------------------------------------------------------
    # ● Update X Effects
    #--------------------------------------------------------------------------
    alias mog_pickup_update_position update_position
    def update_position
    mog_pickup_update_position
    update_pickup_position if can_pickup_position?
    end

    #--------------------------------------------------------------------------
    # ● Can Pickup Position
    #--------------------------------------------------------------------------
    def can_pickup_position?
    return false if $game_temp.pickup_lock_time > 0
    return false if $game_temp.pickup_lock == false
    return false if @character.throw_active == false
    return false if @character.is_a?(Game_Player)
    return false if @character.jumping?
    return true
    end

    #--------------------------------------------------------------------------
    # ● Update Pickup Position
    #--------------------------------------------------------------------------
    def update_pickup_position
    @character.x = $game_player.x
    @character.y = $game_player.y
    @character.bush_depth = 0
    unless @character.direction_fix
    @character.direction = $game_player.direction
    end
    self.x = $game_player.screen_x
    self.y = $game_player.screen_y - SPRITE_POSITION
    self.z = $game_player.screen_z + 1
    end
    end

    #==============================================================================
    # ■ Scene_Map
    #==============================================================================
    class Scene_Map < Scene_Base

    #--------------------------------------------------------------------------
    # ● Call Menu
    #--------------------------------------------------------------------------
    alias mog_pickup_call_menu call_menu
    def call_menu
    return if $game_temp.pickup_lock == true
    mog_pickup_call_menu
    end

    end

    #==============================================================================
    # ■ Game Interpreter
    #==============================================================================
    class Game_Interpreter

    #--------------------------------------------------------------------------
    # ● Command 352
    #--------------------------------------------------------------------------
    alias mog_pickup_command_352 command_352
    def command_352
    return if $game_temp.pickup_lock == true
    mog_pickup_command_352
    end

    end

    #==============================================================================
    # ■ Game_Map
    #==============================================================================
    class Game_Map

    #--------------------------------------------------------------------------
    # ● XAS Initial Setup
    #--------------------------------------------------------------------------
    alias mog_pickup_setup setup
    def setup(map_id)
    mog_pickup_setup(map_id)
    reset_pickup
    end

    #--------------------------------------------------------------------------
    # ● Reset Pickup
    #--------------------------------------------------------------------------
    def reset_pickup
    for i in $game_map.events.values
    if i.throw_active
    i.throw_active = false
    i.moveto($game_player.x,$game_player.y)
    i.jump(0,0)
    i.move_backward
    $game_player.character_name = $game_temp.character_pre_name
    end
    end
    $game_temp.pickup_lock_time = 0
    $game_temp.pickup_lock = false
    end
    end

    $mog_rgss3_pickup_and_throw = true


    _________________
    Zelda eu irei te salvar
    avatar
    Hatsurugi
    Diva
    Diva

    Mensagens : 236
    Créditos : 125

    Re: VxA pick up

    Mensagem por Hatsurugi em Sab Jun 16, 2012 6:34 pm

    Eu já havia visto este script, fico agradecida que tenha postado na aldeia.
    +1cred.

    De sua atiradora

    Hatsurugi


    _________________
    Fanbars:

    Guild:

    Project:





    Minha deusa:



    avatar
    DeaN
    Colaborador
    Colaborador

    Mensagens : 1284
    Créditos : 48

    Re: VxA pick up

    Mensagem por DeaN em Dom Jun 17, 2012 10:55 am

    Bem legal cara já tive uma ideia aqui... Muito bom vlw 1+


    _________________
    Dean, Programador Geral :)

    Contato: Skype:matucarvalho e Facebook
    The Enze - Vulzt

    Shield Block
    Anti-Cheat para jogos de FPS, agora vou adaptar para jogos de RPG principalmente para o RMXP.
    www.shieldblock.net
    fb.com/shieldblockoficial

    avatar
    Link
    Membro Ativo
    Membro Ativo

    Mensagens : 307
    Créditos : 35

    Re: VxA pick up

    Mensagem por Link em Seg Jun 18, 2012 2:22 pm

    Obrigado pelos +1, vlw

    Até+


    _________________
    Zelda eu irei te salvar
    avatar
    Komuro Takashi
    Moderador Local
    Moderador Local

    Mensagens : 1051
    Créditos : 131

    Re: VxA pick up

    Mensagem por Komuro Takashi em Seg Jun 18, 2012 4:30 pm

    Bom script +1


    _________________

    Conteúdo patrocinado

    Re: VxA pick up

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Seg Ago 20, 2018 9:59 am