じ☆ve冰风 发表于 2026-8-1 12:19:01

Party Movement Controller

Made this script for a request here.


        Sharing this here since this seems to have quite the demand.


Introduction:


        This script covers the Party Leader/Followers movement/balloon icon/animation that can't be done by eventing.


        Can easily set up cut-scene/story telling simply by moving the followers around without having to make events for each of them.


Features:


        Instant Gather: Instantly Gather all party members.


        Party Jump: All party members jump one by one


        Party Move: All party members move together


         Party Face: All party members face the same direction


        Party Balloon: Pop up balloons for all party members


        Party Animation: Play animation for all party members


        Member Move: Move a single member in line


        Leader only move: Using Member Move will allow Leader only move without followers moving.


         Member Face: Change the facing direction of a single member in line


        Member Jump: Make a single member in line Jumps


        Member Balloon: Pop up a balloon on a single member in line


        Member Animation: Play animation on a single member in line


How to Use:


        Script is plug & play, copy and paste it below Material and above Main in your script editor


        To activate the party functions, simply use the script calls as instructed in the script.


Example Usage:


        http://s11.postimg.org/v4lhxsj6b/sampleusage.png


        p/s: adding ;wait(60) behind a line pauses for 1 second after the action.


        To make all followers line up behind the leader: (works for all directions)


        http://s15.postimg.org/ibdv87z57/partyformation.png


Movement Commands:

SpoilerSpoiler



                         "DOWN" = Move Down
                         "LEFT" = Move Left
                         "RIGHT" = Move Right
                         "UP" = Move Up
                         "LOWER_L" = Move diagonally to Lower Left
                         "LOWER_R" = Move diagonally to Lower Right
                         "UPPER_L" = Move diagonally to Upper Left
                         "UPPER_R" = Move diagonally to Upper Right
                         "FORWARD" = Move one step Forward
                         "BACKWARD" = Move one step Backward
                         "TURN_R" = Turn 90 degree Right
                         "TURN_L" = Turn 90 degree Left
                         "TURN_B" = Turn 180 degree Back






Facing Commands:

SpoilerSpoiler



                         "DOWN" = Face Down
                         "LEFT" = Face Left


                         "RIGHT" = Face Right
                         "UP" = Face Up
                         "PLAYER" = Face the same direction as the Party Leader






Compatibility:


        This script uses new & alias methods so there shouldn't be any conflict with this script unless, coincidentally, you have another custom script using the new method names as this script does. 


Terms of Use:


        Free to use for both commercial and non-commercial games


Script:

SpoilerSpoiler



                Code:       
#==============================================================================
# ■ Meow Face Party Controller
#------------------------------------------------------------------------------
# Control Party Leader and Followers
#==============================================================================
# How to Use:
# Plug & Play, Put this script below Material and above Main
# Terms of Use:
# Free for both commercial/non-commercial
#==============================================================================
=begin
==============================================================================
Use these script calls below in event's script box
==============================================================================
------------------------------------------------------------------------------
To gather all party members instantly:
------------------------------------------------------------------------------
instant_gather

------------------------------------------------------------------------------
To have all party jump together:
------------------------------------------------------------------------------
party_jump(x, y)
where x/y is the position to jump

eg. 3 tiles to the left, use:
party_jump(-3, 0)

------------------------------------------------------------------------------
To have all party pop up balloon:
------------------------------------------------------------------------------
party_balloon(id)
where id is the balloon id

------------------------------------------------------------------------------
To have all party pop up animation:
------------------------------------------------------------------------------
party_anim(id)
where id is the animation id

------------------------------------------------------------------------------
To have the whole party move around:
------------------------------------------------------------------------------
party_move(command)
command =
"DOWN"
"LEFT"
"RIGHT"
"UP"
"LOWER_L"
"LOWER_R"
"UPPER_L"
"UPPER_R"
"FORWARD"
"BACKWARD"
"TURN_R"
"TURN_L"
"TURN_B"

------------------------------------------------------------------------------
To have the whole party face a direction:
------------------------------------------------------------------------------
party_face(command)
command =
"DOWN"
"LEFT"
"RIGHT"
"UP"
"PLAYER"

------------------------------------------------------------------------------
To have one party member face a direction:
------------------------------------------------------------------------------
member_face(n, command)
n = party member in line (0 = leader, 1 = 2nd in line etc)
command =
"DOWN"
"LEFT"
"RIGHT"
"UP"
"PLAYER"

------------------------------------------------------------------------------
To have one party member jump:
------------------------------------------------------------------------------
member_jump(n, x, y)
n = party member in line (0 = leader, 1 = 2nd in line etc)
x/y is the position to jump

eg. 3 tiles to the right, use:
party_jump(3, 0)

------------------------------------------------------------------------------
To have one party member move around:
------------------------------------------------------------------------------
member_move(n, command)
n = party member in line (0 = leader, 1 = 2nd in line etc)
command =
"DOWN"
"LEFT"
"RIGHT"
"UP"
"LOWER_L"
"LOWER_R"
"UPPER_L"
"UPPER_R"
"FORWARD"
"BACKWARD"
"TURN_R"
"TURN_L"
"TURN_B"

eg. to have 2nd member in line move lower right
member_move(1, "LOWER_R")

------------------------------------------------------------------------------
To have a party member pop up balloon:
------------------------------------------------------------------------------
member_balloon(n, id)
n = party member in line (0 = leader, 1 = 2nd in line etc)
where id is the balloon id

------------------------------------------------------------------------------
To have a party member pop up animation:
------------------------------------------------------------------------------
member_anim(n, id)
n = party member in line (0 = leader, 1 = 2nd in line etc)
where id is the animation id

=end
#==============================================================================
class Game_Character < Game_CharacterBase
def face_player
    set_direction($game_player.direction)
end
end
class Game_Player < Game_Character
attr_accessor :through
end
class Game_Follower < Game_Character
alias meow_init initialize
def initialize(member_index, preceding_character)
    meow_init(member_index, preceding_character)
    $meowchase = false
end
alias meow_chase chase_preceding_character
def chase_preceding_character
    return if $meowchase
    meow_chase
end
end
class Game_Interpreter
def meow_party
    @meowparty = [$game_player] + $game_player.followers.visible_folloers
end
def instant_gather
    meow_party
    @meowparty.each do |meow|
      meow.moveto($game_player.x, $game_player.y)
    end
end
def party_jump(x, y)
    meow_party
    start_x, start_y = $game_player.x, $game_player.y
    @meowparty.each do |meow|
      meow.moveto(start_x, start_y)
      meow.jump(x, y)
      Fiber.yield while meow.jumping?
    end
end
def member_jump(n, x, y)
    meow_party
    @meowparty.jump(x, y) if @meowparty != nil
end
def turn_face
    case @meowturn
    when "DOWN"; @mew.set_direction(2)
    when "LEFT"; @mew.set_direction(4)
    when "RIGHT"; @mew.set_direction(6)
    when "UP"; @mew.set_direction(8)
    when "PLAYER"; @mew.face_player
    end
end
def party_face(meowcommand)
    meow_party
    @meowturn = meowcommand
    @meowparty.each do |m|
      @mew = m
      turn_face
    end
end
def member_face(n, meowcommand)
    meow_party
    @meowturn = meowcommand
    @mew = @meowparty
    if @mew != nil
      turn_face
    end   
end
def run_member_move
    case @meowmove
    when "DOWN"; @mew.move_straight(2)
    when "LEFT"; @mew.move_straight(4)
    when "RIGHT"; @mew.move_straight(6)
    when "UP"; @mew.move_straight(8)
    when "LOWER_L"; @mew.move_diagonal(4, 2)
    when "LOWER_R"; @mew.move_diagonal(6, 2)
    when "UPPER_L"; @mew.move_diagonal(4, 8)
    when "UPPER_R"; @mew.move_diagonal(6, 8)
    when "FORWARD"; @mew.move_forward
    when "BACKWARD"; @mew.move_backward
    when "TURN_R"; @mew.turn_right_90
    when "TURN_L"; @mew.turn_left_90
    when "TURN_B"; @mew.turn_180
    end
end
def party_move(meowcommand)
    meow_party
    $game_player.through = true
    $meowchase = true
    @meowmove = meowcommand
    @meowparty.each do |m|
      @mew = m
      run_member_move
    end
    Fiber.yield while @mew.moving?
    $game_player.through = false
    $meowchase = false
end
def member_move(n, meowcommand)
    meow_party
    $meowchase = true
    $game_player.through = true
    @meowmove = meowcommand
    @mew = @meowparty
    if @mew != nil
      run_member_move
      Fiber.yield while @mew.moving?
    end
    $meowchase = false
    $game_player.through = false
end
def member_balloon(n, m)
    meow_party
    @meowparty.balloon_id = m if @meowparty != nil
end
def member_anim(n, m)
    meow_party
    @meowparty.animation_id = m if @meowparty != nil
end
def party_balloon(m)
    meow_party
    @meowparty.each do |meow|
      meow.balloon_id = m
    end
end
def party_anim(m)
    meow_party
    @meowparty.each do |meow|
      meow.animation_id = m
    end
end
end








本贴来自国际rpgmaker官方论坛作者:MeowFace处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/party-movement-controller.45165/
页: [1]
查看完整版本: Party Movement Controller