1. http://rmrk.net/index.php/topic,20446.0.html (http://rmrk.net/index.php/topic,20446.0.html)
Can someone help? I've tried editing it to have a maximum of 3, not 4, but I've failed repeatedly!!!
I open the forum back to you guys.
2. Can anyone direct me to, or create a Blue Magic script?
I have edited this script and created a newer version. Here:
#===================================
# Party Changing System by Leon_Westbrooke
# -v 1.1
#----------------------------------------------------------------------
# Instructions: Place above main, but below all other default scripts.
#
# Features:
# -Allows the player to make a party from the minimum to maximum size.
# -Extra members are limitless.
# -You can remove a person from the party and put it into reserve using:
# $game_party.remove_actor_to_party(actor_id)
# -You can remove a person from the reserve if they exist, and them into
# the party:
# $game_party.add_actor_to_party(actor_id)
# -You can lock a character in reserve or active party by using:
# $game_party.locked.push(actor_id)
# -You can set the maximum and minimum number of the party in-game using:
# $game_party.min_size = x
# $game_party.max_size = x
# (NOTE: Do NOT make the max size lower than the minimum size.)
# -Allows you to use the default add/remove actors command.
# (NOTE: If you remove an actor with this method, he is gone from both
# the party and the reserve members.)
#
# Credits:
# This setup uses SephirothSpawn's coding to simplify the cursor's position.
#
#
# Command Quick-list:
# $game_party.remove_actor_from_party(actor_id)
# -Removes an actor from the party, and puts them in reserve.
# $game_party.add_actor_to_party(actor_id)
# -Replaces the last actor in the party with the actor in reserve.
# $game_party.locked.push(actor_id)
# -Locks the actor in place.
# $game_party.min_size = x
# $game_party.max_size = x
# -Sets the minimum and maximum party size.
#
#
# Notes:
# This script rewrites these methods from Game_Party:
# add_actor
# remove_actor
#===================================
#==================================================
# Game_Party
#==================================================
class Game_Party
attr_accessor :party_members
attr_accessor :move
attr_accessor :locked
attr_accessor :min_size
attr_accessor :max_size
alias leon_partyswitch_gameactor_initialize initialize
def initialize
leon_partyswitch_gameactor_initialize
@party_members = []
# Edit :This is to change if an actor is locked or not. To lock them, add
# their id to the array below.
@locked = [1]
@min_size = 1
@max_size = 4
end
def add_actor(actor_id)
actor = $game_actors[actor_id]
if @actors.size < @max_size
unless @actors.include?(actor)
unless @party_members.include?(actor.id)
@actors.push(actor)
$game_player.refresh
end
end
else
unless @party_members.include?(actor.id)
unless @actors.include?(actor)
@party_members.push(actor.id)
$game_player.refresh
end
end
end
end
def remove_actor(actor_id)
@actors.delete($game_actors[actor_id])
@party_members.delete(actor_id)
$game_player.refresh
end
def remove_actor_from_party(actor_id)
if @actors.include?($game_actors[actor_id])
unless @party_members.include?(actor_id)
@party_members.push(actor_id)
@party_members.sort!
end
end
@actors.delete($game_actors[actor_id])
$game_player.refresh
end
def add_actor_to_party(actor_id)
if @party_members.include?(actor_id)
if @actors[@max_size - 1] != nil
@party_members.push(@actors[@max_size - 1].id)
@actors.delete_at(@max_size - 1)
end
@actors.push($game_actors[actor_id])
@party_members.delete(actor_id)
end
end
end
#==================================================
# END Game_Party
#==================================================
#==============================================================================
# ** Window_Selectable
#==============================================================================
class Window_Selectable < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :cursor_height
#--------------------------------------------------------------------------
# * Alias Initialization
#--------------------------------------------------------------------------
alias custom_int initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
custom_int(x, y, width, height)
@cursor_height = 32
end
#--------------------------------------------------------------------------
# * Get Top Row
#--------------------------------------------------------------------------
def top_row
# Divide y-coordinate of window contents transfer origin by 1 row
# height of @cursor_height
return self.oy / @cursor_height
end
#--------------------------------------------------------------------------
# * Set Top Row
# row : row shown on top
#--------------------------------------------------------------------------
def top_row=(row)
# If row is less than 0, change it to 0
if row < 0
row = 0
end
# If row exceeds row_max - 1, change it to row_max - 1
if row > row_max - 1
row = row_max - 1
end
# Multiply 1 row height by 32 for y-coordinate of window contents
# transfer origin
self.oy = row * @cursor_height
end
#--------------------------------------------------------------------------
# * Get Number of Rows Displayable on 1 Page
#--------------------------------------------------------------------------
def page_row_max
# Subtract a frame height of 32 from the window height, and divide it by
# 1 row height of @cursor_height
return (self.height - 32) / @cursor_height
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max - 32
# Calculate cursor coordinates
x = @index % @column_max * (cursor_width + 32)
y = @index / @column_max * @cursor_height - self.oy
if self.active == true
# Update cursor rectangle
self.cursor_rect.set(x, y, cursor_width, @cursor_height)
end
end
end
#==============================================================================
# ** Window_Command
#==============================================================================
class Window_Command < Window_Selectable
#--------------------------------------------------------------------------
# * Unisable Item
# index : item number
#--------------------------------------------------------------------------
def undisable_item(index)
draw_item(index, normal_color)
end
end
#============================================================
#==================================================
# Window_Party_Info
#==================================================
class Window_Party_Info < Window_Base
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0, 0, 614, 32, "Please make a party of #{$game_party.min_size.to_s} to #{$game_party.max_size.to_s} members.", 1)
end
end
#==================================================
# END Window_Party_Info
#==================================================
#==================================================
# Window_Party_Slots
#==================================================
class Window_Party_Slots < Window_Selectable
def initialize
super(0, 64, 320, 416)
@item_max = 4
self.contents = Bitmap.new(width - 32, height - 32)
self.index = 0
self.active = true
refresh
end
def actors
if @data[index] != nil
return @data[index]
end
end
def refresh
@data = []
if self.contents != nil
self.contents.dispose
self.contents = nil
end
for i in 0...$game_party.actors.size
@data.push($game_party.actors[i])
end
@item_max = (@data.size + 1)
if @item_max > 0
if @item_max > 4
@item_max = 4
end
self.contents = Bitmap.new(width - 32, row_max * 96)
for i in 0...@item_max
draw_item(i)
end
end
end
def draw_item(index)
@actor = @data[index]
y = index * 96
x = 4
if $game_party.locked.include?(@actor.id)
self.contents.font.color = disabled_color
opacity = 128
else
self.contents.font.color = normal_color
opacity = 255
end
if @actor != nil
self.contents.draw_text(x + 100, y, 192, 32, @actor.name)
draw_actor_hp(@actor, x + 100, y + 32)
draw_actor_sp(@actor, x + 100, y + 64)
bitmap = RPG::Cache.character(@actor.character_name, @actor.character_hue)
cw = bitmap.width / 4
ch = bitmap.height / 4
facing = 0
src_rect = Rect.new(0, facing * ch, cw, ch)
self.contents.blt(x + 24, y + 32, bitmap, src_rect, opacity)
end
end
def update_cursor_rect
if @index > -1
x = 0
y = index * 96
self.cursor_rect.set(x, y, (self.width - 32), 96)
else
self.cursor_rect.empty
end
end
end
#==================================================
# END Window_Party_Slots
#==================================================
#==================================================
# Window_Party_Extras
#==================================================
class Window_Party_Extras < Window_Selectable
def initialize
super(320, 64, 320, 416)
self.cursor_height = 96
self.contents = Bitmap.new(width - 32, height - 32)
self.index = -1
self.active = false
refresh
end
def actors
if @data != nil
return @data[index]
end
end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...$game_party.party_members.size
@data.push($game_actors[$game_party.party_members[i]])
end
@data.push(nil)
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 96)
for i in 0...@item_max
draw_item(i)
end
end
end
def draw_item(index)
@actor = @data[index]
y = index * 96
x = 4
if $game_party.locked.include?(@actor.id)
self.contents.font.color = disabled_color
opacity = 128
else
self.contents.font.color = normal_color
opacity = 255
end
if @actor != nil
self.contents.draw_text(x + 100, y, 192, 32, @actor.name)
draw_actor_hp(@actor, x + 100, y + 32)
draw_actor_sp(@actor, x + 100, y + 64)
bitmap = RPG::Cache.character(@actor.character_name, @actor.character_hue)
cw = bitmap.width / 4
ch = bitmap.height / 4
facing = 0
src_rect = Rect.new(0, facing * ch, cw, ch)
self.contents.blt(x + 24, y + 32, bitmap, src_rect, opacity)
end
end
end
#===================================
# END Window_Party_Extras
#===================================
#===================================
# Scene_Party_Change
#===================================
class Scene_Party_Change
def main
@info_window = Window_Party_Info.new
@slot_window = Window_Party_Slots.new
@extra_window = Window_Party_Extras.new
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@info_window.dispose
@slot_window.dispose
@extra_window.dispose
end
def update
@slot_window.update
if @slot_window.active
update_slot
return
end
if @extra_window.active
update_extra
return
end
end
def update_slot
if Input.trigger?(Input::B)
if $game_party.actors.size >= $game_party.min_size and $game_party.actors.size <= $game_party.max_size
$game_player.refresh
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
else
$game_system.se_play($data_system.buzzer_se)
end
end
if Input.trigger?(Input::C)
if $game_party.locked.include?(@slot_window.actors.id) == true
if @slot_window.index != 0
$game_system.se_play($data_system.decision_se)
@slot_window.active = false
@extra_window.active = true
@extra_window.index = 0
else
$game_system.se_play($data_system.buzzer_se)
end
else
$game_system.se_play($data_system.decision_se)
@slot_window.active = false
@extra_window.active = true
@extra_window.index = 0
end
end
end
def update_extra
@extra_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@slot_window.active = true
@extra_window.active = false
@extra_window.index = -1
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
if $game_party.locked.include?(@extra_window.actors.id)
$game_system.se_play($data_system.buzzer_se)
return
end
if @extra_window.actors == nil
if $game_party.actors[@slot_window.index] != nil
$game_party.party_members.push($game_party.actors[@slot_window.index].id)
$game_party.remove_actor_from_party($game_party.actors[@slot_window.index].id)
$game_party.party_members.sort!
@slot_window.refresh
@extra_window.refresh
@slot_window.active = true
@extra_window.active = false
@extra_window.index = -1
else
@slot_window.active = true
@extra_window.active = false
@extra_window.index = -1
end
else
if $game_party.actors[@slot_window.index] != nil
hold = @extra_window.actors
$game_party.party_members.push($game_party.actors[@slot_window.index].id)
$game_party.actors[@slot_window.index] = hold
$game_party.party_members.delete_at(@extra_window.index)
$game_party.party_members.sort!
@slot_window.refresh
@extra_window.refresh
@slot_window.active = true
@extra_window.active = false
@extra_window.index = -1
else
$game_party.actors[@slot_window.index] = @extra_window.actors
$game_party.party_members.delete_at(@extra_window.index)
$game_party.party_members.sort!
@slot_window.refresh
@extra_window.refresh
@slot_window.active = true
@extra_window.active = false
@extra_window.index = -1
end
end
end
end
end
As to the other, I don't even know what blue magic is. Remember, if you want someone to help you, don't make them do work that you can do yourself. It makes people who might help pass this topic by. In any case, check Blizzard's Tons of Addons on chaosproject.co.nr. I seem to recall there being something of that name there.
Blue Magic is the one where you learns skill from them being used on ya.
I think I saw Fomar(Some sequence of numbers) over at hbgames.org make one.
No worries about #2, I'll have a look myself. Thanks for the help guys, mucho appreciated.
I found this while browsing.
http://www.atelier-rgss.com/RGSS/Battle/XP_Bat22.html