Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Options to a CMS(ff7) and Junction system.(more simple version)

Hello, everybody, i'm Megadeth, and i'm here to seek you help..and i'll respect all rules.

So firstly, i have a Final Fantasy VII CMS, created by AccedentProne. I got a GF system and got the option 'GF'(summons) added in the CMS by request. Now i got some more scripts recently and i want to access them directly in the menu itself and not by the call script command.

So firstly, the FF7 Menu with my GF system.(i didn't post the GF Script, only the ff7 menu with the GF option added to it.)

Code:
#*********************************************************
#Final Fantasy VII menu setup by AcedentProne
#*********************************************************
#To use:
#If you do not want Faces, go to line 94
#and change delete the # of draw_actor_graphic
#and put a # infront of draw_actor_face
#
#Create a new folder in the Characters folder, and call it Faces
#Adding faces: add a 80x80 picture with the same name as the characterset it
#corrosponds with in the Faces folder


#========================================
#â–  Window_Base
#--------------------------------------------------------------------------------
# Setting functions for the "Base"
#========================================


#-------------------

class Window_Base < Window

def draw_actor_face(actor, x, y)
face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
fw = face.width
fh = face.height
src_rect = Rect.new(0, 0, fw, fh)
self.contents.blt(x - fw / 23, y - fh, face, src_rect)
end
end
def draw_actor_battler_graphic(actor, x, y)
bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
cw = bitmap.width
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end

#========================================
#â–  Game_Map
#--------------------------------------------------------------------------------
# Setting functions for the Map
#========================================
class Game_Map

def name
$map_infos[@map_id]
end
end

#========================================
#â–  Window_Title
#--------------------------------------------------------------------------------
# Setting functions for the Title
#========================================
class Scene_Title
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
end




#==============================================================================
# â–  Window_MenuStatus
#------------------------------------------------------------------------------
# Sets up the Choosing.
#==============================================================================

class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# Set up
#--------------------------------------------------------------------------
def initialize
super(0, 0, 560, 454)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $defaultfonttype
self.contents.font.size = $defaultfontsize
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# Drawing Info on Screen
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 94
y = i * 110
actor = $game_party.actors[i]
draw_actor_face(actor, 12, y + 90) #To get rid of the Face, put a "#" before the draw_ of this line
#draw_actor_graphic(actor, 48, y + 65) #and delete the "#" infront of draw of this line
draw_actor_name(actor, x, y)

draw_actor_level(actor, x, y + 18)
draw_actor_state(actor, x + 80, y)
draw_actor_exp(actor, x+ 144, y + 38)
draw_actor_hp(actor, x, y + 38)
draw_actor_sp(actor, x, y + 58)
end
end
#--------------------------------------------------------------------------
# Update of Cursor
#--------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(0, @index * 110, self.width - 32, 96)
end
end
end

#=======================================#
# â– Window_GameStats #
# written by AcedentProne #
#------------------------------------------------------------------------------#

class Window_GameStats < Window_Base
def initialize
super(0, 0, 160, 60)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $defaultfonttype
self.contents.font.size = $defaultfontsize
refresh
end

def refresh
self.contents.clear
#Drawing gold into separate commas by Dubealex
case $game_party.gold
when 0..9999
gold = $game_party.gold
when 10000..99999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+array[1].to_s+","+array[2].to_s+array[3].to_s+array[4].to_s
when 100000..999999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+array[1].to_s+array[2].to_s+","+array[3].to_s+array[4].to_s+array[5].to_s
when 1000000..9999999
gold = $game_party.gold.to_s
array = gold.split(//)
gold = array[0].to_s+","+array[1].to_s+array[2].to_s+array[3].to_s+","+array[4].to_s+array[5].to_s+array[6].to_s
end
#Draw Gold
self.contents.font.color = system_color
gold_word = $data_system.words.gold.to_s
cx = contents.text_size(gold_word).width
cx2=contents.text_size(gold.to_s).width
self.contents.draw_text(4, 4, 120-cx-2, 32, gold_word)
self.contents.font.color = normal_color
self.contents.draw_text(124-cx2+1, 4, cx2, 32, gold.to_s, 2)
self.contents.font.color = system_color
# Draw "Time"
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.font.color = normal_color
self.contents.draw_text(4, -10, 120, 32, text, 2)
self.contents.font.color = system_color
self.contents.draw_text(4, -10, 120, 32, "Time")
end
#--------------------------------------------------------------------------
# Update of The count
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end

#==============================================================================
# â–  Window_Mapname
#------------------------------------------------------------------------------
#  Draws the Map name
#==============================================================================

class Window_Mapname < Window_Base
#--------------------------------------------------------------------------
# Set up
#--------------------------------------------------------------------------
def initialize
super(0, 0, 320, 48)
self.contents = Bitmap.new(width - 52, height - 32)
self.contents.font.name = $defaultfonttype
self.contents.font.size = $defaultfontsize
refresh
end
#--------------------------------------------------------------------------
# Draws info on screen
#--------------------------------------------------------------------------
def refresh
self.contents.clear

# Map Name
#map = $game_map.name
self.contents.font.color = system_color
self.contents.draw_text(4, -10, 220, 32, "Location")
self.contents.font.color = normal_color
self.contents.draw_text(175, -10, 80, 32, $game_map.name)
end
end

#==============================================================================
# â–  Scene_Menu
#------------------------------------------------------------------------------
# FF7 menu layout as requested by AcedentProne.
#==============================================================================

class Scene_Menu
#--------------------------- edit-------------------------------
attr_reader :status_window
#/--------------------------- edit-------------------------------

def initialize(menu_index = 0)
@menu_index = menu_index
end
def main

s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = "Status"
s5 = "GF"
s6 = "Save"
s7 = "Exit"





#--------------------------- edit-------------------------------
# Command menu
@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
@command_window.x = 640 - @command_window.width
@command_window.y = 480
@command_window.z = 110
@command_window.index = @menu_index
#If certain options are avaliable
if $game_party.actors.size == 0
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
if $game_system.save_disabled
@command_window.disable_item(4)
end
#Showing location window
@map = Window_Mapname.new
@map.x = 640 - @map.width
@map.y = 0 - @map.height - 1
@map.z = 110
#Showing the game stats
@game_stats_window = Window_GameStats.new
@game_stats_window.x = 0 - @game_stats_window.width
@game_stats_window.y = 480 - @map.height - @game_stats_window.height
@game_stats_window.z =110

#Showing the Menu Status window
@status_window = Window_MenuStatus.new
@status_window.x = 640
@status_window.y = 8
@status_window.z = 100


Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@game_stats_window.dispose
@status_window.dispose
@map.dispose
end
#--------------------------------------------------------------------------
#Defining the delay
#--------------------------------------------------------------------------
def delay(seconds)
for i in 0...(seconds * 1)
sleep 0.01
Graphics.update
end
end
#--------------------------------------------------------------------------
# Updating
#--------------------------------------------------------------------------
def update
@command_window.update
@game_stats_window.update
@status_window.update
@map.update
@map.update
#Moving Windows inplace
gamepos = 640 - @game_stats_window.width
mappos = 480 - @map.height - 1
if @command_window.y > 0
@command_window.y -= 60
end
if @game_stats_window.x < gamepos
@game_stats_window.x += 80
end
if @map.y < mappos
@map.y += 80
end
if @status_window.x > 0
@status_window.x -= 80
end
#Saying if options are active
if @command_window.active
update_command
return
end
if @status_window.active
update_status
return
end
end
#--------------------------------------------------------------------------
# Updating the Command Selection
#--------------------------------------------------------------------------
def update_command
# If B button is pushed
if Input.trigger?(Input::B)
# Plays assigned SE
$game_system.se_play($data_system.cancel_se)
#Looping for moving windows out
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
# Go to Map
$scene = Scene_Map.new
return
end
# If C button is pused
if Input.trigger?(Input::C)
# Checks actor size
if $game_party.actors.size == 0 and @command_window.index < 4
# plays SE
$game_system.se_play($data_system.buzzer_se)
return
end
case @command_window.index
when 0
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_Item.new
when 1
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 4
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
  $scene = Scene_Esper.new
when 5
if $game_system.save_disabled
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_Save.new
when 6
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_End.new



end
return
end
end
#--------------------------------------------------------------------------
# Updating Status Screen
#--------------------------------------------------------------------------
def update_status
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
if Input.trigger?(Input::C)
case @command_window.index
when 1
if $game_party.actors[@status_window.index].restriction >= 2
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_Skill.new(@status_window.index)
when 2
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_Equip.new(@status_window.index)
when 3
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_Status.new(@status_window.index)
end
return
end
end
end


And here is the first script which i want the option in my CMS.
It is a Party Switcher, i want it below the 'GF' option. So it is 'Switch' below 'GF'


Code:
#==============================================================================
# Easy Party Switcher by Blizzard
# Version 1.2b
# Date: 21.05.2006
# Date v1.1: 25.05.2006
# Date v1.2b: 27.05.2006
#
#
# This is the official Party Switcher of:
# Chaos Project - The Three Moonsâ„¢
#
#
# Special Thanks to:
# Zeriab for pointing out a few glitches and shortening the code. =D
#
#
# IMPORTANT NOTE:
#
# Be sure to set the $party_max_size to the maximum size of your party.
# There is already a preconfiguration of 4.
#
#
# Compatibility:
#
# 99% chance of full compatibility with SDK, not tested altough. Can cause
# incompatibility with Party Change Systems. WILL corrupt your old savegames.
#
#
# Features:
#
# - Set party members for "not _available" (shown transparent in the reserve)
# - Remove party members from the reserve list ("disabled_for_party")
# - Set party members, who MUST be in the party (shown transparent in the
# current party, "must_be_in_party")
# - option either to wipe the party (for multi-party use) or only remove every
# member (except 1) from the party.
# - Easy to use and easy to switch party members
# - also supports small parties (2 or 3 members) and large parties (5 or more)
#
#
# How to use:
#
# To call this script, make a "Call script" command in an event. The syntax is:
#
# $scene = Scene_PartySwitcher.new
# or
# $scene = Scene_PartySwitcher.new(XXX)
# or
# $scene = Scene_PartySwitcher.new(XXX, 1)
# or
# $scene = Scene_PartySwitcher.new(XXX, YYY, ZZZ)
#
# - If you use the first syntax, no extra feature will be applied and you can
# switch the party as you wish.
# - If you use the second syntax, you can replace XXX for 1 to remove all party
# members except one (either one, who must be in the party or a random one), or
# replace XXX with 2, to cause a wipe party. Wiping a party will disable the
# of the current members and a NEW party of the remaining members must be
# formed. If you replace it with 3, the current party configuration will be
# stored for a later fast switch-back.
# - If you use the third sytnax, you can use the XXX as described above or just
# set it to 0 to disable it. Also the "1" in the syntax will reset any
# disabled_for_party and is made to be used after multi-party use.
# - If you use the fourth syntax you can replace ZZZ with 1 to replace the
# party with a stored one AND store the current or replace it with 2 to replace
# the party with a stored one, but without storing the current. USE THIS ONLY
# IF YOU ASSUME TO HAVE A STORED PARTY READY! This syntax will not open the
# Party Switcher and it will override the commands XXX and YYY, so you can
# replace these with any number.
#
# - Character faces go into a "Faces" folder in "Characters" and they have the
# same name as the character spritesets have.
#
#
# Other syntaxes:
# $game_actors[XXX].not_available = true/false
# $game_actors[XXX].disabled_for_party = true/false
# $game_actors[XXX].must_be_in_party = true/false
#
# - not_available will disable the possibility of an already unlocked character
# to be in th current party.
# - disabled for party will cause the character NOT to appear in the party
# switch screen.
# - must_be_in_party will cause the character to be automatically moved into
# the current party, while switching parties and also he cannot be put in the
# reserve.
#
#
# Additional note:
#
# For your own sake, do not apply the attribute "must_be_in_party" to a
# character at the same time with "not_available" or "disabled_for_party" as
# this WILL disrupt your party and party switch system.
#
#==============================================================================

$party_max_size = 4

#==============================================================================
# Game_Actor
#==============================================================================

class Game_Actor < Game_Battler

attr_accessor   :must_be_in_party
attr_accessor   :disabled_for_party
attr_accessor   :not_available

alias setup_eps_later setup
def setup(actor_id)
   @must_be_in_party = false
   @disabled_for_party = false
   @not_available = false
   setup_eps_later(actor_id)
end

end

#==============================================================================
# Game_Party
#==============================================================================

class Game_Party

def actors=(actors)
   @actors = actors
end

end

#==============================================================================
# Window_Base
#==============================================================================

class Window_Base

def draw_actor_face(actor, x, y)
   if actor != nil
     bitmap = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
     cw = 80
     ch = 80
     src_rect = Rect.new(0, 0, cw, ch)
     if actor.not_available or actor.must_be_in_party
       self.contents.blt(x, y, bitmap, src_rect, 128)
     else
       self.contents.blt(x, y, bitmap, src_rect)
     end
   end
end

end

#==============================================================================
# Window_Current
#==============================================================================

class Window_Current < Window_Selectable

def initialize
   if $party_max_size > 4
     super(0, 0, 240 + 32, 480)
   else
     super(0, 0, 240 + 32, $party_max_size * 120)
   end
   @item_max = $party_max_size
   self.contents = Bitmap.new(width - 32, 480 - 32 + (@item_max - 4) * 120)
   if $fontface != nil
     self.contents.font.name = $fontface
   elsif $defaultfonttype != nil
     self.contents.font.name = $defaultfonttype
   end
   self.contents.font.size = 24
   refresh
   self.active = false
   self.index = -1
end

def refresh
   self.contents.clear
   for i in 0...$game_party.actors.size
     x = 0
     y = i * 120 - 4
     actor = $game_party.actors[i]
     self.contents.font.color = normal_color
     if actor != nil
       draw_actor_face(actor, x, y + 8)
       draw_actor_name(actor, x + 160, y)
       draw_actor_level(actor, x + 96, y)
       draw_actor_hp(actor, x + 96, y + 32)
       draw_actor_sp(actor, x + 96, y + 64)
     end
   end
end

def setactor(index_1, index_2)
   temp = $game_party.actors[index_1]
   $game_party.actors[index_1] = $game_party.actors[index_2]
   $game_party.actors[index_2] = temp
   refresh
end

def getactor(index)
   return $game_actors[$game_party.actors[index].id]
end

def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
     return
   end
   row = @index / @column_max
   if row < self.top_row
     self.top_row = row
   end
   if row > self.top_row + (self.page_row_max - 1)
     self.top_row = row - (self.page_row_max - 1)
   end
   x = 0
   y = (@index / @column_max) * 120 - self.oy
   self.cursor_rect.set(x, y, self.width - 32, 88)
end

def clone_cursor
   row = @index / @column_max
   if row < self.top_row
     self.top_row = row
   end
   if row > self.top_row + (self.page_row_max - 1)
     self.top_row = row - (self.page_row_max - 1)
   end
   x = 0
   y = (@index / @column_max) * 120
   src_rect = Rect.new(0, 0, self.width, 88)
   bitmap = RPG::Cache.windowskin("Cursor_Current")
   self.contents.blt(x, y, bitmap, src_rect, 192)
end

def top_row
   return self.oy / 116
end

def top_row=(row)
   row = row % row_max
   self.oy = row * 120
end

def page_row_max
   return (self.height / 120)
end

end

#==============================================================================
# Window_Reserve
#==============================================================================

class Window_Reserve < Window_Selectable

def initialize
   super(0, 0, 400 - 32, 320)
   setup
   @column_max = 3
   if (@item_max / @column_max) >= 3
     self.contents = Bitmap.new(width - 32, @item_max / @column_max * 96)
   else
     self.contents = Bitmap.new(width - 32, height - 32)
   end
   if $fontface != nil
     self.contents.font.name = $fontface
   elsif $defaultfonttype != nil
     self.contents.font.name = $defaultfonttype
   end
   self.contents.font.size = 24
   self.active = false
   self.index = -1
   refresh
end

def setup
   @actors = []
   for i in 0...$data_actors.size
     flag = false
     for j in 0...$game_party.actors.size
       if $game_actors[i] == $game_party.actors[j]
         flag = true
       end
     end
     if flag == false
       unless $game_actors[i] == nil or $game_actors[i].disabled_for_party
         @actors.push($game_actors[i])
       end
     end
   end
   @item_max = (@actors.size + $game_party.actors.size + 3) / 3 * 3
end

def refresh
   self.contents.clear
   for i in 0... @actors.size
     drawing(@actors[i], i)
   end
end

def drawing(actor, i)
   x = (i % 3) * 112 + 16
   y = (i / 3) * 96 - 8
   self.contents.font.color = normal_color
   draw_actor_face(actor, x, y + 18)
end
  
def getactor(index)
   return @actors[index]
end

def setactor(index_1, index_2)
   temp = @actors[index_1]
   @actors[index_1] = @actors[index_2]
   @actors[index_2] = temp
   refresh
end

def setparty(index_1, index_2)
   temp = @actors[index_1]
   @actors[index_1] = $game_party.actors[index_2]
   $game_party.actors[index_2] = temp
   refresh
end

def update_cursor_rect
   if @index < 0
     self.cursor_rect.empty
     return
   end
   row = @index / @column_max
   if row < self.top_row
     self.top_row = row
   end
   if row > self.top_row + (self.page_row_max - 1)
     self.top_row = row - (self.page_row_max - 1)
   end
   x = (@index % @column_max) * 112 + 8
   y = (@index / @column_max) * 96 - self.oy
   self.cursor_rect.set(x, y, 96, 96)
end

def clone_cursor
   row = @index / @column_max
   if row < self.top_row
     self.top_row = row
   end
   if row > self.top_row + (self.page_row_max - 1)
     self.top_row = row - (self.page_row_max - 1)
   end
   x = (@index % @column_max) * 112 + 8
   y = (@index / @column_max) * 96
   src_rect = Rect.new(0, 0, 96, 96)
   bitmap = RPG::Cache.windowskin("Cursor_Reserve")
   self.contents.blt(x, y, bitmap, src_rect, 192)
end

def top_row
   return self.oy / 96
end

def top_row=(row)
   row = row % row_max
   self.oy = row * 96
end

def page_row_max
   return (self.height - 32) / 96
end

end

#==============================================================================
# Window_HelpStatus
#==============================================================================

class Window_HelpStatus < Window_Base

def initialize(gotactor)
   super(0, 0, 400 - 32, 160)
   self.contents = Bitmap.new(width - 32, height - 32)
   if $fontface != nil
     self.contents.font.name = $fontface
   elsif $defaultfonttype != nil
     self.contents.font.name = $defaultfonttype
   end
   self.contents.font.size = 24
   refresh(gotactor)
   self.active = false
end

def refresh(actor)
   self.contents.clear
   if actor != nil
     x = 0
     y = 0
     self.contents.font.color = normal_color
     if actor.not_available
       self.contents.draw_text(x + 8, y, 160, 32, "not available", 0)
     end
     draw_actor_face(actor, x, y + 40)
     draw_actor_name(actor, x + 160, y + 32)
     draw_actor_level(actor, x + 96, y + 32)
     draw_actor_hp(actor, x + 96, y + 64)
     draw_actor_sp(actor, x + 96, y + 96)
   end
end

end

#==============================================================================
# Window_Warning
#==============================================================================

class Window_Warning < Window_Base

def initialize
   super(0, 0, 320, 96)
   self.visible = false
   self.contents = Bitmap.new(width - 32, height - 32)
   if $fontface != nil
     self.contents.font.name = $fontface
   elsif $defaultfonttype != nil
     self.contents.font.name = $defaultfonttype
   end
   self.contents.font.size = 24
   self.x = 320 - (width / 2)
   self.y = 240 - (height / 2)
   self.z = 9999
   self.contents.font.color = normal_color
   self.contents.draw_text(0, 0, 288, 32, "You cannot remove", 1)
   self.contents.draw_text(0, 32, 288, 32, "the last party member!", 1)
end

end

#==============================================================================
# Scene_PartySwitcher
#==============================================================================

class Scene_PartySwitcher

def initialize(wipe_party = 0, reset = 0, store = 0)
   @wipe_party = wipe_party
   @store = store
   @reset = reset
   @current_window_temp = 0
   @reserve_window_temp = 0
   @canceler = false
   @temp_window = ""
end

def main
   if @store == 0
     if @wipe_party == 1
       setup_forced_party
     elsif @wipe_party == 2
       wipe_party
     elsif @wipe_party == 3
       store_party
       wipe_party
     end
     @current_window = Window_Current.new
     @current_window.index = 0
     @current_window.active = true
     @reserve_window = Window_Reserve.new
     @reserve_window.x = 240 + 32
     @reserve_window.y = 160
     @warning_window = Window_Warning.new
     actor = @reserve_window.getactor(0)
     @help_window = Window_HelpStatus.new(actor)
     @help_window.x = 240 + 32
     if @reset == 1
       actor.not_available = false
     end
     Graphics.transition
     loop do
       Graphics.update
       Input.update
       update
       if $scene != self
         break
       end
     end
     Graphics.freeze
     @current_window.dispose
     @reserve_window.dispose
     @help_window.dispose
   else
     swap_parties(@store)
     $scene = Scene_Map.new
   end
   sort_party
   $game_player.refresh
   Graphics.transition
end

def update
   check = @reserve_window.index
   if @reserve_window.active
     reserve_update
     @reserve_window.update
   end
   if check != @reserve_window.index
     if @reserve_window.active
       actor = @reserve_window.getactor(@reserve_window.index)
     elsif @current_window.active
       actor = @reserve_window.getactor(@reserve_window_temp)
     end
     if @temp_window == "Current" or @temp_window == ""
       @help_window.refresh(actor)
     end
   end
   if @current_window.active
     current_update
     @current_window.update
   end
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     if @canceler == false
       $scene = Scene_Map.new
     elsif @canceler == true
       @temp_window = ""
       @canceler = false
       if @reserve_window.active
         actor = @reserve_window.getactor(@reserve_window.index)
       elsif @current_window.active
         actor = @reserve_window.getactor(@reserve_window_temp)
       end
       if @temp_window == "Current" or @temp_window == ""
         @help_window.refresh(actor)
       end
       @current_window.refresh
       @reserve_window.refresh
     end
     return
   end
   if Input.trigger?(Input::A)
     sort_party
     @current_window.refresh
   end
end
  
def current_update
   if Input.trigger?(Input::C)
     if @canceler == false
       $game_system.se_play($data_system.decision_se)
       @canceler = true
       @temp_actor_index = @current_window.index
       @temp_window = "Current"
       @current_window.clone_cursor
     elsif @canceler == true
       switch_members
     end
     return
   end
   if Input.trigger?(Input::RIGHT)
     $game_system.se_play($data_system.cursor_se)
     @current_window.active = false
     @reserve_window.active = true
     @current_window_temp = @current_window.index
     actor = @reserve_window.getactor(@reserve_window_temp)
     @current_window.index = -1
     @reserve_window.index = @reserve_window_temp
     if @canceler == false
       @help_window.refresh(actor)
     end
     return
   end
end

def reserve_update
   if Input.trigger?(Input::C)
     if @canceler == false
       $game_system.se_play($data_system.decision_se)
       @canceler = true
       @temp_actor_index = @reserve_window.index
       @temp_window = "Reserve"
       @reserve_window.clone_cursor
     elsif @canceler == true
       switch_members
     end
     return
   end
   if (@reserve_window.index % 3) == 0
     if Input.repeat?(Input::LEFT)
       $game_system.se_play($data_system.cursor_se)
       @reserve_window.active = false
       @current_window.active = true
       @reserve_window_temp = @reserve_window.index
       @reserve_window.index = -1
       @current_window.index = @current_window_temp
     end
     return
   end
end

def switch_members
   if @temp_window == "Reserve" and @reserve_window.active
     @reserve_window.setactor(@temp_actor_index, @reserve_window.index)
     actor = @reserve_window.getactor(@reserve_window.index)
     @help_window.refresh(actor)
   end
   if @temp_window == "Current" and @current_window.active
     @current_window.setactor(@temp_actor_index, @current_window.index)
   end
   if @temp_window == "Reserve" and @current_window.active
     actor1 = @current_window.getactor(@current_window.index)
     actor2 = @reserve_window.getactor(@temp_actor_index)
     if call_warning(@current_window.index, actor2)
       if actor1 != nil and actor1.must_be_in_party
         $game_system.se_play($data_system.buzzer_se)
         @canceler = false
         @temp_window = ""
         actor = @reserve_window.getactor(@reserve_window_temp)
         @current_window.refresh
         @reserve_window.refresh
         @help_window.refresh(actor)
         return
       end
       if actor2 != nil and actor2.not_available
         $game_system.se_play($data_system.buzzer_se)
         @canceler = false
         @temp_window = ""
         actor = @reserve_window.getactor(@reserve_window_temp)
         @current_window.refresh
         @reserve_window.refresh
         @help_window.refresh(actor)
         return
       end
       @reserve_window.setparty(@temp_actor_index, @current_window.index)
       @current_window.refresh
       actor = @reserve_window.getactor(@reserve_window_temp)
       @help_window.refresh(actor)
     else
       warning
     end
   end
   if @temp_window == "Current" and @reserve_window.active
     actor1 = @current_window.getactor(@temp_actor_index)
     actor2 = @reserve_window.getactor(@reserve_window.index)
     if call_warning(@temp_actor_index, actor2)
       if actor1 != nil and actor1.must_be_in_party
         $game_system.se_play($data_system.buzzer_se)
         @canceler = false
         @temp_window = ""
         actor = @reserve_window.getactor(@reserve_window.index)
         @current_window.refresh
         @reserve_window.refresh
         @help_window.refresh(actor)
         return
       end
       if actor2 != nil and actor2.not_available
         $game_system.se_play($data_system.buzzer_se)
         @canceler = false
         @temp_window = ""
         actor = @reserve_window.getactor(@reserve_window.index)
         @current_window.refresh
         @reserve_window.refresh
         @help_window.refresh(actor)
         return
       end
       @reserve_window.setparty(@reserve_window.index, @temp_actor_index)
       @current_window.refresh
       actor = @reserve_window.getactor(@reserve_window.index)
       @help_window.refresh(actor)
     else
       warning
     end
   end
   $game_system.se_play($data_system.decision_se)
   @canceler = false
   @temp_window = ""
   return
end
  
def sort_party
   actors = []
   for i in 0...$game_party.actors.size
     actor = $game_party.actors[i]
     if actor != nil
       actors.push($game_actors[actor.id])
     end
   end
   $game_party.actors = actors
   for i in 0...$data_actors.size
     actor = $game_actors[i]
     if actor != nil
       actor.must_be_in_party = false
     end
   end
end
  
def wipe_party
   for i in 0...$game_party.actors.size
     actor = $game_party.actors[i]
     if actor != nil
       actor.not_available = true
     end
   end
   actors = []
   $game_party.actors = actors
   for i in 0...$data_actors.size
     actor = $game_actors[i]
     if actor != nil and actor.must_be_in_party and not actor.not_available
       $game_party.add_actor(actor.id)
     end
   end
   if $game_party.actors.size == 0
     for i in 0...$data_actors.size
       actor = $game_actors[i]
       unless actor == nil or actor.not_available or actor.disabled_for_party
         $game_party.add_actor(actor.id)
         return
       end
     end
   end
end

def setup_forced_party
   actors = []
   $game_party.actors = actors
   for i in 0...$data_actors.size
     actor = $game_actors[i]
     if actor != nil and actor.must_be_in_party and
           not actor.disabled_for_party and not actor.not_available
       $game_party.add_actor(actor.id)
     end
   end
end  

def store_party
   $stored_party = $game_party.actors
end

def swap_parties(swap)
   temp = $game_party.actors
   for i in 0...temp.size
     if temp[i] != nil
       temp[i].not_available = true
     end
   end
   for i in 0...$stored_party.size
     if $stored_party[i] != nil
       $stored_party[i].not_available = false
     end
   end
   $game_party.actors = $stored_party
   if swap == 1
     $stored_party = temp
   else
     $stored_party = nil
   end
end

def call_warning(index, actor2)
   actor1 = $game_party.actors[index]
   if actor1 != nil and actor2 == nil
     count = 0
     for i in $game_party.actors
       if i != nil
         count += 1
       end
     end
     if count <= 1
       return false
     end
   end
   return true
end

def warning
   $game_system.se_play($data_system.buzzer_se)
   @warning_window.visible = true
   loop do
     Graphics.update
     Input.update
     if Input.trigger?(Input::C)
       @warning_window.visible = false
       @current_window.refresh
       @reserve_window.refresh
       break
     end
   end
   return
end

end


The next one, i want it created, it must be easy for the one who's accepting this.
It is a Menu where you can view the Tutorial of how to play the game you created. You can insert pictures
too in it. Like the Final Fantasy 8 tutorial.
The example of my tutorial script is in the attached image.
Add the 'Tutorial' option below the 'Switch' option. It's very easy indeed, just add a picture and select what you wan to add..


Now the next one, the Junction system. The famous Junction system of FF8.
The junction system, is a system that allows you to equip skills to your characters and for example when you equip skill
X to hero X, Stat X will increase and/or Stat Z will decrease/increase.
I think there was a script like this before too but dunno where it is.(but it must be lesser than this for sure..)
IF you cannot find any 'Equip skill and increase stats' script then please create one as in the attached
picture named Junction. And when you make the script, please add the 'Junction' option to my CMS but
as the first option instead of 'Item' option. And the item option below Junction.


And if you find anything cool on quests, please add the 'quest' option below the 'Switch' and "tutorial' option.
And call the quest menu when you enter the 'Quest' option in the FF7 CMS.

Remember that all the options must be placed in the FF7 CMS.

I hope this newbie is helped about this over-great idea...

Thank you RMXP.org users.

~Megadeth~
 
I took SDK version and found it is easier to add something..... Anyway, OK, here I go:
Code:
....
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = "Status"
s5 = "GF"
s6 = 'Switch'
s7 = 'Tutorial'
s8 = 'Junction'
s9 = 'Quest'
s10 = "Save"
s11 = "Exit"

@command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11])
....


#--------------------------------------------------------------------------
# Updating the Command Selection
#--------------------------------------------------------------------------
def update_command
....
when 5
  $game_system.se_play($data_system.decision_se)
  loop do
    if @command_window.y < 480
      @command_window.y += 40
    end
    if @game_stats_window.x > 0 - @game_stats_window.width
      @game_stats_window.x -= 40
    end
    if @map.y > 0 - @map.height
      @map.y -= 40
    end
    if @status_window.x < 640
      @status_window.x += 40
    end
    delay(0.5)
    if @status_window.x >= 640
      break
    end
  end
$scene = Scene_PartySwitcher.new
when 6
  $game_system.se_play($data_system.decision_se)
  loop do
    if @command_window.y < 480
      @command_window.y += 40
    end
    if @game_stats_window.x > 0 - @game_stats_window.width
      @game_stats_window.x -= 40
    end
    if @map.y > 0 - @map.height
      @map.y -= 40
    end
    if @status_window.x < 640
      @status_window.x += 40
    end
    delay(0.5)
    if @status_window.x >= 640
      break
    end
  end
  #Put your Tutorial Scene
when 7
  $game_system.se_play($data_system.decision_se)
  loop do
    if @command_window.y < 480
      @command_window.y += 40
    end
    if @game_stats_window.x > 0 - @game_stats_window.width
      @game_stats_window.x -= 40
    end
    if @map.y > 0 - @map.height
      @map.y -= 40
    end
    if @status_window.x < 640
      @status_window.x += 40
    end
    delay(0.5)
    if @status_window.x >= 640
      break
    end
  end
  #Put your Junction Scene
when 8
  $game_system.se_play($data_system.decision_se)
  loop do
    if @command_window.y < 480
      @command_window.y += 40
    end
    if @game_stats_window.x > 0 - @game_stats_window.width
      @game_stats_window.x -= 40
    end
    if @map.y > 0 - @map.height
      @map.y -= 40
    end
    if @status_window.x < 640
      @status_window.x += 40
    end
    delay(0.5)
    if @status_window.x >= 640
      break
    end
  end
  #Put your Quest Scene
when 9
if $game_system.save_disabled
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_Save.new
when 10
$game_system.se_play($data_system.decision_se)
loop do
if @command_window.y < 480
@command_window.y += 40
end
if @game_stats_window.x > 0 - @game_stats_window.width
@game_stats_window.x -= 40
end
if @map.y > 0 - @map.height
@map.y -= 40
end
if @status_window.x < 640
@status_window.x += 40
end
delay(0.5)
if @status_window.x >= 640
break
end
end
$scene = Scene_End.new
You can edit your menu like above. However, it's not that looking good when command window gets long. See the screenshot below:
http://img153.imageshack.us/img153/3228/rmxpff7cms01yn0.th.png[/IMG]
 
Thanks a lot! But can you make my Junction Scene, and my Tutorial scene? Or get it made?
If you still can't then i thank you very much for atleast helping me!

Anybody wanna try this great challenging request?
 
Yeah, Seph's idea is okay but, i always wanted it in my CMS options.
In anyways, i'm waiting for a scripter for that..
Um, if you can find scripts about equipping skills to acquire stats or gain more, then post their link in here, please..
Thank you.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top