How to work: In Script Sphere Grid Config has everything
Script: To the scripts work you need to have the right events & graphics so you better download the demo
[ADD ON] Sphere Grid in the Main Menu
Spoiler
CODE
class Scene_Menu < Scene_Base def create_command_window s1 = Vocab::item s2 = Vocab::skill s3 = Vocab::equip s4 = Vocab::status s5 = Vocab::save s6 = Vocab::game_end sg = "Sphere Grid" @command_window = Window_Command.new(160, [s1, sg, s2, s3, s4, s5, s6]) @command_window.index = @menu_index if $game_party.members.size == 0 # If number of party members is 0 @command_window.draw_item(0, false) # Disable item @command_window.draw_item(1, false) # Disable skill @command_window.draw_item(2, false) # Disable equipment @command_window.draw_item(3, false) # Disable status end if $game_system.save_disabled # If save is forbidden @command_window.draw_item(4, false) # Disable save end end
def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) if $game_party.members.size == 0 and @command_window.index < 4 Sound.play_buzzer return elsif $game_system.save_disabled and @command_window.index == 4 Sound.play_buzzer return end Sound.play_decision case @command_window.index when 0 # Item $scene = Scene_Item.new when 1,2,3, 4 # Skill, equipment, status start_actor_selection when 5 # Save $scene = Scene_File.new(true, false, false) when 6 # End Game $scene = Scene_End.new end end end
def update_actor_selection if Input.trigger?(Input::B) Sound.play_cancel end_actor_selection elsif Input.trigger?(Input::C) $game_party.last_actor_index = @status_window.index Sound.play_decision case @command_window.index when 1 # Sphere Grid Sphere_Grid_Processes::to_sg(@status_window.index) when 2 # skill $scene = Scene_Skill.new(@status_window.index) when 3 # equipment $scene = Scene_Equip.new(@status_window.index) when 4 # status $scene = Scene_Status.new(@status_window.index) end end end end
[ADD ON] Gain Slvl when level up
CODE
VALUE = 1 # Nš of sphere grids that the party will receive class Game_Actor < Game_Battler def level_up @level += 1 $sphere_grid.add_sphere("Slvl", VALUE) for learning in self.class.learnings learn_skill(learning.skill_id) if learning.level == @level end end end
Sphere Grid Config
Spoiler
CODE
module Sphere_Grid_Config MAX_SPHERE_LEVEL = 9999 # Max number of Sphere Levels MAX_SPHERES = 100 # Max number of spheres WS = "FFXSGW" # Windowskin in the menu of the Sphere Grid SPHERE_GRID_MAP_ID = [] X = [] Y = [] CHARACTER_NAME_TO_SG = [] CHARACTER_INDEX_TO_SG = [] CHARACTER_NAME_TO_MAP = [] CHARACTER_INDEX_TO_MAP = []
=begin #---------------------------------------------------------------------------# To add a new actor in the sphere grid add this below "CHARACTERS BELOW HERE" ------------------------------------ SPHERE_GRID_MAP_ID[x] = y # Maps of the sphere grid for each actor X[x] = y # x coordinate for each actor sphere grid Y[x] = y # y coordinate for each actor sphere grid CHARACTER_NAME_TO_SG[x] = y # Graphic that have the Sphere Grid actor graphic CHARACTER_INDEX_TO_SG[x] = y # Color of the actor sphere for Sphere Grid CHARACTER_NAME_TO_MAP[x] = y # Graphic that have the Map actor graphic CHARACTER_INDEX_TO_MAP[x] = y # Index of the actor in the graphic for the Map ------------------------------------- x = New Actor id y = value for the new actor
Color numbers for the actor color (CHARACTER_INDEX_TO_SG) for Sphere Grid:
*COLORS*: 0 = Light Blue 1 = White 2 = Green 3 = Red 4 = Purple 5 = Blue 6 = Orange 7 = Black
WARNING if you dont do this , if that new actor go to the Sphere Grid it shows an error be careful
#---------------------------------------------------------------------------# To add/remove a sphere use this -------------------------------------------- $sphere_grid.add_sphere("sphere", value) $sphere_grid.remove_sphere("sphere", value) -------------------------------------------- "sphere" is the sphere you want to add value is how many do you want to add
*SPHERES*: "Slvl" = Sphere Level "health" = Health Spheres "magic" = Magic Spheres "ability" = Ability Spheres "power" = Power Spheres "defense" = Defense Spheres "speed" = Speed Spheres "winsdom" = Winsdom Spheres "level 1" = Level 1 Lock Spheres "level 2" = Level 2 Lock Spheres "level 3" = Level 3 Lock Spheres "level 4" = Level 4 Lock Spheres #---------------------------------------------------------------------------# To add a status in the sphere grid: why dont add via events? via events you can only guive status to a certain actor (by normal way) right? soooo insted of that use this: (with this code it gives the status to the current char in the sphere grid instead of a certain actor) ------------------------------------------ $sphere_grid.add_status("stat", value) ------------------------------------------ "stat" is the stat that you want to add value is how many, like 5 or 20 *STATS*: "maxhp" = Max HP (Health Spheres)(it auto-recovers the hp so you dont need to heal) "maxmp" = Max MP (Magic Spheres)(it auto-recovers the mp so you dont need to use "Ethers") "atk" = Attack (Power Spheres) "def" = Defense (Defense Spheres) "agi" = Agility (Speed Spheres) "spi" = Spirit (Winsdom Spheres) #---------------------------------------------------------------------------# To learn a skill: why dont learn via events? same reason as the above
use this: --------------------------------------- $sphere_grid.learn_skill(skill_id) --------------------------------------- skill_id = ID of the skill you want to the char in he sphere grid to learn like: $sphere_grid.learn_skill(33) the actor will learn heal #---------------------------------------------------------------------------# If you have more questions contact me mail/msn: paulinho_chicha@hotmail.com Skype: Chicheater #---------------------------------------------------------------------------#
def learn_skill(skll) id = $game_party.members[0].id actor = $game_actors[id] actor.learn_skill(skll) end
def add_status(status, value) id = $game_party.members[0].id actor = $game_actors[id] if status == "maxhp" actor.maxhp += value actor.hp += value end if status == "maxmp" actor.maxmp += value actor.mp += value end if status == "atk" actor.atk += value end if status == "def" actor.def += value end if status == "agi" actor.agi += value end if status == "spi" actor.spi += value end end
def remove_sphere(sphere, value) s = $sphere_grid if value > 0 if sphere == "Slvl" s.sphere_level -= value end end if value > 0 if sphere == "health" s.health_spheres -= value end if sphere == "magic" s.magic_spheres -= value end if sphere == "ability" s.ability_spheres -= value end if sphere == "power" s.power_spheres -= value end if sphere == "defense" s.defense_spheres -= value end if sphere == "speed" s.speed_spheres -= value end if sphere == "winsdom" s.winsdom_spheres -= value end if sphere == "level 1" s.lock_level_1_spheres -= value end if sphere == "level 2" s.lock_level_2_spheres -= value end if sphere == "level 3" s.lock_level_3_spheres -= value end if sphere == "level 4" s.lock_level_4_spheres -= value end end end
def add_sphere(sphere, value) s = $sphere_grid if value <= Sphere_Grid_Config::MAX_SPHERE_LEVEL if sphere == "Slvl" s.sphere_level += value end end if value <= Sphere_Grid_Config::MAX_SPHERES if sphere == "health" s.health_spheres += value end if sphere == "magic" s.magic_spheres += value end if sphere == "ability" s.ability_spheres += value end if sphere == "power" s.power_spheres += value end if sphere == "defense" s.defense_spheres += value end if sphere == "speed" s.speed_spheres += value end if sphere == "winsdom" s.winsdom_spheres += value end if sphere == "Level 1" s.lock_level_1_spheres += value end if sphere == "Level 2" s.lock_level_2_spheres += value end if sphere == "Level 3" s.lock_level_3_spheres += value end if sphere == "Level 4" s.lock_level_4_spheres += value end end spheres_fix end
def spheres_fix s = $sphere_grid if s.sphere_level > Sphere_Grid_Config::MAX_SPHERE_LEVEL s.sphere_level = Sphere_Grid_Config::MAX_SPHERE_LEVEL end if s.health_spheres > Sphere_Grid_Config::MAX_SPHERES s.health_spheres = Sphere_Grid_Config::MAX_SPHERES end if s.magic_spheres > Sphere_Grid_Config::MAX_SPHERES s.magic_spheres = Sphere_Grid_Config::MAX_SPHERES end if s.ability_spheres > Sphere_Grid_Config::MAX_SPHERES s.ability_spheres = Sphere_Grid_Config::MAX_SPHERES end if s.power_spheres > Sphere_Grid_Config::MAX_SPHERES s.power_spheres = Sphere_Grid_Config::MAX_SPHERES end if s.defense_spheres > Sphere_Grid_Config::MAX_SPHERES s.defense_spheres = Sphere_Grid_Config::MAX_SPHERES end if s.speed_spheres > Sphere_Grid_Config::MAX_SPHERES s.speed_spheres = Sphere_Grid_Config::MAX_SPHERES end if s.winsdom_spheres > Sphere_Grid_Config::MAX_SPHERES s.winsdom_spheres = Sphere_Grid_Config::MAX_SPHERES end if s.lock_level_1_spheres > Sphere_Grid_Config::MAX_SPHERES s.lock_level_1_spheres = Sphere_Grid_Config::MAX_SPHERES end if s.lock_level_2_spheres > Sphere_Grid_Config::MAX_SPHERES s.lock_level_2_spheres = Sphere_Grid_Config::MAX_SPHERES end if s.lock_level_3_spheres > Sphere_Grid_Config::MAX_SPHERES s.lock_level_3_spheres = Sphere_Grid_Config::MAX_SPHERES end if s.lock_level_4_spheres > Sphere_Grid_Config::MAX_SPHERES s.lock_level_4_spheres = Sphere_Grid_Config::MAX_SPHERES end end end $sphere_grid = Sphere_Grid.new module Sphere_Grid_Processes
#Sphere_Grid_Processes::to_sg(actor) def self.to_sg(actor) $sphere_grid.rm = $game_map.map_id $sphere_grid.rx = $game_player.x $sphere_grid.ry = $game_player.y if $game_party.members[0] != nil $sphere_grid.member0 = $game_party.members[0].id end if $game_party.members[1] != nil $sphere_grid.member1 = $game_party.members[1].id else $sphere_grid.member1 = $sphere_grid.member0 end if $game_party.members[2] != nil $sphere_grid.member2 = $game_party.members[2].id else $sphere_grid.member2 = $sphere_grid.member0 end if $game_party.members[3] != nil $sphere_grid.member3 = $game_party.members[3].id else $sphere_grid.member3 = $sphere_grid.member0 end if actor == 0 @id = $sphere_grid.member0 end if actor == 1 @id = $sphere_grid.member1 end if actor == 2 @id = $sphere_grid.member2 end if actor == 3 @id = $sphere_grid.member3 end m = $sphere_grid.sg_map[@id] x = $sphere_grid.x[@id] y = $sphere_grid.y[@id] Sphere_Grid_Processes::change_party_member("remove", $sphere_grid.member0) Sphere_Grid_Processes::change_party_member("remove", $sphere_grid.member1) Sphere_Grid_Processes::change_party_member("remove", $sphere_grid.member2) Sphere_Grid_Processes::change_party_member("remove", $sphere_grid.member3) Sphere_Grid_Processes::change_party_member("add", @id) name = Sphere_Grid_Config::CHARACTER_NAME_TO_SG[@id] act = Sphere_Grid_Config::CHARACTER_INDEX_TO_SG[@id] Sphere_Grid_Processes::change_character_graphic(@id, name, act) Graphics.fadeout(60) Sphere_Grid_Processes::teleport(m, x, y) $scene = Scene_Sphere_Grid.new end
#Sphere_Grid_Processes::to_map(actor) def self.to_map(actor) id = $game_party.members[0].id name = Sphere_Grid_Config::CHARACTER_NAME_TO_MAP[id] act = Sphere_Grid_Config::CHARACTER_INDEX_TO_MAP[id] Sphere_Grid_Processes::change_character_graphic(id, name, act) Sphere_Grid_Processes::change_party_member("remove", $game_party.members[0].id) Sphere_Grid_Processes::change_party_member("add", $sphere_grid.member0) Sphere_Grid_Processes::change_party_member("add", $sphere_grid.member1) Sphere_Grid_Processes::change_party_member("add", $sphere_grid.member2) Sphere_Grid_Processes::change_party_member("add", $sphere_grid.member3) if actor == $sphere_grid.member0 i = $sphere_grid.member0 end if actor == $sphere_grid.member1 i = $sphere_grid.member1 end if actor == $sphere_grid.member2 i = $sphere_grid.member2 end if actor == $sphere_grid.member3 i = $sphere_grid.member3 end $sphere_grid.x[i] = $game_player.x $sphere_grid.y[i] = $game_player.y id = $game_party.members[0].id name = Sphere_Grid_Config::CHARACTER_NAME_TO_MAP[id] act = Sphere_Grid_Config::CHARACTER_INDEX_TO_MAP[id] m = $sphere_grid.rm x = $sphere_grid.rx y = $sphere_grid.ry Sphere_Grid_Processes::change_character_graphic(id, name, act) Graphics.fadeout(60) Sphere_Grid_Processes::teleport(m, x, y) $scene = Scene_Map.new end
#Sphere_Grid_Processes::change_party_member(op, actor) def self.change_party_member(op, actor) if actor != nil prty = $game_party if op == "add" prty.add_actor(actor) end if op == "remove" prty.remove_actor(actor) end end end
#Sphere_Grid_Processes::change_character_graphic(id, name, index) def self.change_character_graphic(id, name, index) $game_actors[id].character_name = name $game_actors[id].character_index = index end
class Scene_File < Scene_Base #-------------------------------------------------------------------------- # * Write Save Data # file : write file object (opened) #-------------------------------------------------------------------------- def write_save_data(file) characters = [] for actor in $game_party.members characters.push([actor.character_name, actor.character_index]) end $game_system.save_count += 1 $game_system.version_id = $data_system.version_id @last_bgm = RPG::BGM::last @last_bgs = RPG::BGS::last Marshal.dump(characters, file) Marshal.dump(Graphics.frame_count, file) Marshal.dump(@last_bgm, file) Marshal.dump(@last_bgs, file) Marshal.dump($game_system, file) Marshal.dump($game_message, file) Marshal.dump($game_switches, file) Marshal.dump($game_variables, file) Marshal.dump($game_self_switches, file) Marshal.dump($game_actors, file) Marshal.dump($game_party, file) Marshal.dump($game_troop, file) Marshal.dump($game_map, file) Marshal.dump($game_player, file) Marshal.dump($sphere_grid, file) end #-------------------------------------------------------------------------- # * Read Save Data # file : file object for reading (opened) #-------------------------------------------------------------------------- def read_save_data(file) characters = Marshal.load(file) Graphics.frame_count = Marshal.load(file) @last_bgm = Marshal.load(file) @last_bgs = Marshal.load(file) $game_system = Marshal.load(file) $game_message = Marshal.load(file) $game_switches = Marshal.load(file) $game_variables = Marshal.load(file) $game_self_switches = Marshal.load(file) $game_actors = Marshal.load(file) $game_party = Marshal.load(file) $game_troop = Marshal.load(file) $game_map = Marshal.load(file) $game_player = Marshal.load(file) $sphere_grid = Marshal.load(file) if $game_system.version_id != $data_system.version_id $game_map.setup($game_map.map_id) $game_player.center($game_player.x, $game_player.y) end end end
Scene Sphere Grid
Spoiler
CODE
#============================================================================== # ** Scene Sphere Grid #------------------------------------------------------------------------------ # This class performs the map screen processing. #============================================================================== class Scene_Sphere_Grid < Scene_Base #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- def start super $game_map.refresh @spriteset = Spriteset_Map.new @message_window = Window_Message.new end #-------------------------------------------------------------------------- # * Execute Transition #-------------------------------------------------------------------------- def perform_transition if Graphics.brightness == 0 # After battle or loading, etc. fadein(30) else # Restoration from menu, etc. Graphics.transition(15) end end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- def terminate super if $scene.is_a?(Scene_Battle) # If switching to battle screen @spriteset.dispose_characters # Hide characters for background creation end snapshot_for_background @spriteset.dispose @message_window.dispose if $scene.is_a?(Scene_Battle) # If switching to battle screen perform_battle_transition # Execute pre-battle transition end end #-------------------------------------------------------------------------- # * Basic Update Processing #-------------------------------------------------------------------------- def update_basic Graphics.update # Update game screen Input.update # Update input information $game_map.update # Update map @spriteset.update # Update sprite set end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super $game_map.interpreter.update # Update interpreter $game_map.update # Update map $game_player.update # Update player $game_system.update # Update timer @spriteset.update # Update sprite set @message_window.update # Update message window unless $game_message.visible # Unless displaying a message update_transfer_player update_encounter update_call_menu update_call_debug update_scene_change end end #-------------------------------------------------------------------------- # * Fade In Screen # duration : time # If you use Graphics.fadeout directly on the map screen, a number of # problems can occur, such as weather effects and parallax scrolling # being stopped. So instead, perform a dynamic fade-in. #-------------------------------------------------------------------------- def fadein(duration) Graphics.transition(0) for i in 0..duration-1 Graphics.brightness = 255 * i / duration update_basic end Graphics.brightness = 255 end #-------------------------------------------------------------------------- # * Fade Out Screen # duration : time # As with the fadein above, Graphics.fadein is not used directly. #-------------------------------------------------------------------------- def fadeout(duration) Graphics.transition(0) for i in 0..duration-1 Graphics.brightness = 255 - 255 * i / duration update_basic end Graphics.brightness = 0 end #-------------------------------------------------------------------------- # * Player Transfer Processing #-------------------------------------------------------------------------- def update_transfer_player return unless $game_player.transfer? fade = (Graphics.brightness > 0) fadeout(30) if fade @spriteset.dispose # Dispose of sprite set $game_player.perform_transfer # Execute player transfer $game_map.autoplay # Automatically switch BGM and BGS $game_map.update Graphics.wait(15) @spriteset = Spriteset_Map.new # Recreate sprite set fadein(30) if fade Input.update end #-------------------------------------------------------------------------- # * Encounter Processing #-------------------------------------------------------------------------- def update_encounter return if $game_player.encounter_count > 0 # Check steps return if $game_map.interpreter.running? # Event being executed? return if $game_system.encounter_disabled # Encounters forbidden? troop_id = $game_player.make_encounter_troop_id # Determine troop return if $data_troops[troop_id] == nil # Troop is invalid? $game_troop.setup(troop_id) $game_troop.can_escape = true $game_temp.battle_proc = nil $game_temp.next_scene = "battle" preemptive_or_surprise end #-------------------------------------------------------------------------- # * Determine Preemptive Strike and Surprise Attack Chance #-------------------------------------------------------------------------- def preemptive_or_surprise actors_agi = $game_party.average_agi enemies_agi = $game_troop.average_agi if actors_agi >= enemies_agi percent_preemptive = 5 percent_surprise = 3 else percent_preemptive = 3 percent_surprise = 5 end if rand(100) < percent_preemptive $game_troop.preemptive = true elsif rand(100) < percent_surprise $game_troop.surprise = true end end #-------------------------------------------------------------------------- # * Determine if Menu is Called due to Cancel Button #-------------------------------------------------------------------------- def update_call_menu if Input.trigger?(Input::B) return if $game_map.interpreter.running? # Event being executed? return if $game_system.menu_disabled # Menu forbidden? $game_temp.menu_beep = true # Set SE play flag $game_temp.next_scene = "menu" end end #-------------------------------------------------------------------------- # * Determine Bug Call Due to F9 key #-------------------------------------------------------------------------- def update_call_debug if $TEST and Input.press?(Input::F9) # F9 key during test play $game_temp.next_scene = "debug" end end #-------------------------------------------------------------------------- # * Execute Screen Switch #-------------------------------------------------------------------------- def update_scene_change return if $game_player.moving? # Is player moving? case $game_temp.next_scene when "battle" call_battle when "shop" call_shop when "name" call_name when "menu" call_menu when "save" call_save when "debug" call_debug when "gameover" call_gameover when "title" call_title else $game_temp.next_scene = nil end end #-------------------------------------------------------------------------- # * Switch to Battle Screen #-------------------------------------------------------------------------- def call_battle @spriteset.update Graphics.update $game_player.make_encounter_count $game_player.straighten $game_temp.map_bgm = RPG::BGM.last $game_temp.map_bgs = RPG::BGS.last RPG::BGM.stop RPG::BGS.stop Sound.play_battle_start $game_system.battle_bgm.play $game_temp.next_scene = nil $scene = Scene_Battle.new end #-------------------------------------------------------------------------- # * Switch to Shop Screen #-------------------------------------------------------------------------- def call_shop $game_temp.next_scene = nil $scene = Scene_Shop.new end #-------------------------------------------------------------------------- # * Switch to Name Input Screen #-------------------------------------------------------------------------- def call_name $game_temp.next_scene = nil $scene = Scene_Name.new end #-------------------------------------------------------------------------- # * Switch to Menu Screen #-------------------------------------------------------------------------- def call_menu if $game_temp.menu_beep Sound.play_decision $game_temp.menu_beep = false end $game_temp.next_scene = nil $scene = Sphere_Grid_Menu.new end #-------------------------------------------------------------------------- # * Switch to Save Screen #-------------------------------------------------------------------------- def call_save $game_temp.next_scene = nil $scene = Scene_File.new(true, false, true) end #-------------------------------------------------------------------------- # * Switch to Debug Screen #-------------------------------------------------------------------------- def call_debug Sound.play_decision $game_temp.next_scene = nil $scene = Scene_Debug.new end #-------------------------------------------------------------------------- # * Switch to Game Over Screen #-------------------------------------------------------------------------- def call_gameover $game_temp.next_scene = nil $scene = Scene_Gameover.new end #-------------------------------------------------------------------------- # * Switch to Title Screen #-------------------------------------------------------------------------- def call_title $game_temp.next_scene = nil $scene = Scene_Title.new fadeout(60) end #-------------------------------------------------------------------------- # * Execute Pre-battle Transition #-------------------------------------------------------------------------- def perform_battle_transition Graphics.transition(80, "Graphics/System/BattleStart", 80) Graphics.freeze end end
class Game_Actor < Game_Battler attr_accessor :character_name # character graphic filename attr_accessor :character_index # character graphic index end
Sphere Grid Menu
Spoiler
CODE
class Sphere_Grid_Menu < Scene_Base #-------------------------------------------------------------------------- # * Object Initialization # menu_index : command cursor's initial position #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index end #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- def start super id = $game_party.members[0].id @actor = $game_actors[id] create_menu_background create_command_window @gold_window = Window_Sphere_Level.new(0, 360) @gold_window.windowskin = Cache.system(Sphere_Grid_Config::WS) @stats_window = Window_Status_Sphere_Grid.new(@actor, 160, 0) @stats_window.windowskin = Cache.system(Sphere_Grid_Config::WS) end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- def terminate super dispose_menu_background @command_window.dispose @gold_window.dispose @stats_window.dispose end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update super update_menu_background @command_window.update @gold_window.update @stats_window.update if @command_window.active update_command_selection elsif @status_window.active update_actor_selection end end #-------------------------------------------------------------------------- # * Create Command Window #-------------------------------------------------------------------------- def create_command_window s1 = "Spheres" s2 = "Back to Map" @command_window = Window_Command.new(160, [s1, s2]) @command_window.windowskin = Cache.system(Sphere_Grid_Config::WS) @command_window.index = @menu_index if $game_party.members.size == 0 # If number of party members is 0 @command_window.draw_item(0, false) # Disable item @command_window.draw_item(1, false) # Disable skill @command_window.draw_item(2, false) # Disable equipment @command_window.draw_item(3, false) # Disable status end if $game_system.save_disabled # If save is forbidden @command_window.draw_item(4, false) # Disable save end end #-------------------------------------------------------------------------- # * Update Command Selection #-------------------------------------------------------------------------- def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Sphere_Grid.new elsif Input.trigger?(Input::C) if $game_party.members.size == 0 and @command_window.index < 4 Sound.play_buzzer return elsif $game_system.save_disabled and @command_window.index == 4 Sound.play_buzzer return end Sound.play_decision case @command_window.index when 0 $scene = Scene_Spheres.new when 1 Sphere_Grid_Processes::to_map($game_party.members[0].id) end end end #-------------------------------------------------------------------------- # * Start Actor Selection #-------------------------------------------------------------------------- def start_actor_selection @command_window.active = false @status_window.active = true if $game_party.last_actor_index < @status_window.item_max @status_window.index = $game_party.last_actor_index else @status_window.index = 0 end end #-------------------------------------------------------------------------- # * End Actor Selection #-------------------------------------------------------------------------- def end_actor_selection @command_window.active = true @status_window.active = false @status_window.index = -1 end #-------------------------------------------------------------------------- # * Update Actor Selection #-------------------------------------------------------------------------- def update_actor_selection if Input.trigger?(Input::B) Sound.play_cancel end_actor_selection elsif Input.trigger?(Input::C) $game_party.last_actor_index = @status_window.index Sound.play_decision case @command_window.index when 1 # skill $scene = Scene_Skill.new(@status_window.index) when 2 # equipment $scene = Scene_Equip.new(@status_window.index) when 3 # status $scene = Scene_Status.new(@status_window.index) end end end end
class Window_Sphere_Level < Window_Base #-------------------------------------------------------------------------- # * Object Initialization # x : window X coordinate # y : window Y coordinate #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, 160, WLH + 32) refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear draw_sphere_level_value($sphere_grid.sphere_level, 4, 0, 120) end
def draw_sphere_level_value(value, x, y, width) cx = contents.text_size("Slvl").width self.contents.font.color = normal_color self.contents.draw_text(x, y, width-cx-2, WLH, value, 2) self.contents.font.color = system_color self.contents.draw_text(x, y, width, WLH, "Slvl", 2) end end class Window_Status_Sphere_Grid < Window_Base #-------------------------------------------------------------------------- # * Object Initialization # actor : actor #-------------------------------------------------------------------------- def initialize(actor, x = 0, y = 0) super(x, y, 544 - x, 416 - y) @actor = actor refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_name(@actor, 4, 0) draw_actor_class(@actor, 128, 0) draw_actor_face(@actor, 8, 32) draw_basic_info(128, 32) draw_parameters(32, 160) end #-------------------------------------------------------------------------- # * Draw Basic Information # x : Draw spot X coordinate # y : Draw spot Y coordinate #-------------------------------------------------------------------------- def draw_basic_info(x, y) draw_actor_level(@actor, x, y + WLH * 0) draw_actor_state(@actor, x, y + WLH * 1) draw_actor_hp(@actor, x, y + WLH * 2) draw_actor_mp(@actor, x, y + WLH * 3) end #-------------------------------------------------------------------------- # * Draw Parameters # x : Draw spot X coordinate # y : Draw spot Y coordinate #-------------------------------------------------------------------------- def draw_parameters(x, y) draw_actor_parameter(@actor, x, y + WLH * 0, 0) draw_actor_parameter(@actor, x, y + WLH * 1, 1) draw_actor_parameter(@actor, x, y + WLH * 2, 2) draw_actor_parameter(@actor, x, y + WLH * 3, 3) end end
class Scene_Spheres < Scene_Base #-------------------------------------------------------------------------- # * Object Initialization # actor_index : actor index #-------------------------------------------------------------------------- def initialize(actor_index = 0) @actor_index = actor_index end #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- def start super create_menu_background @actor = $game_party.members[@actor_index] @status_window = Window_Spheres.new(@actor) @status_window.windowskin = Cache.system(Sphere_Grid_Config::WS) end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- def terminate super dispose_menu_background @status_window.dispose end #-------------------------------------------------------------------------- # * Return to Original Screen #-------------------------------------------------------------------------- def return_scene $scene = Sphere_Grid_Menu.new(0) end #-------------------------------------------------------------------------- # * Frame Update #-------------------------------------------------------------------------- def update update_menu_background @status_window.update if Input.trigger?(Input::B) Sound.play_cancel return_scene end super end end
Group: +Gold Member
Posts: 4,136
Type: Scripter
RM Skill: Undisclosed
Approved, but I strongly suggest you to put an non-encrypted demo. There are a lot of parts in your script and leaving the demo encrypted defeats the point of providing a demo altogether.
__________________________
FRACTURE - a SMT inspired game (demo) made by Rhyme, Karsuman and me. Weep and ragequit.
Approved, but I strongly suggest you to put an non-encrypted demo. There are a lot of parts in your script and leaving the demo encrypted defeats the point of providing a demo altogether.
I agree. I would like to use this, but since the demo is encrypted, we cannot get the necessary stuff out of it. You should definitely decrypt this demo.
Group: Global Mod
Posts: 1,311
Type: Developer
RM Skill: Intermediate
Rev Points: 45
I have just discovered that it is NOT currently compatible with Battle Engine Melody, would be great if you could make it compatible Well done though It looks awesome so far just the compatibility that is the problem
Group: Global Mod
Posts: 1,311
Type: Developer
RM Skill: Intermediate
Rev Points: 45
Terribly sorry, it was late when I posted it
Basically it works with the exception that when you open up the SG maps the cursor doesn't move, you do not step forward onto the next sphere! Unfortunately it is a HUGE amount of scripts not just one Although as Yanflys site has been taken down permanently click here to download Melody that holds all of the scripts
Group: Member
Posts: 24
Type: None
RM Skill: Undisclosed
That is freaking awesome. FFX's Sphere Grid may be my favorite way to level up (other than my ideas of course! XD), so it so super pimp that you made this! XD
Group: Member
Posts: 4
Type: None
RM Skill: Undisclosed
Hello! great script! i would use this in my project,but i have a question: it's possible when i do a step.. make a personal consume of slvl (ap in ffx) for every step?
This post has been edited by Lionheart84: Jun 1 2011, 07:29 AM
Sorry, but what do you mean by "addon levelup"? Activating sphere node removes one S.LVL? If so, Paulinho didn't make that exact copy of the Sphere Grid.
Group: Member
Posts: 4
Type: None
RM Skill: Undisclosed
Ehm.. on the first post there a scrip call "addon:gain s. when level up". i try to put in my project but i have an error when i insert this scrit on game interpreter. so,where i must put this script? for this motive i request a demo.. i don't understand this addon.
Group: Member
Posts: 9
Type: Scripter
RM Skill: Intermediate
QUOTE (Lionheart84 @ Jun 3 2011, 11:16 PM)
Ehm.. on the first post there a scrip call "addon:gain s. when level up". i try to put in my project but i have an error when i insert this scrit on game interpreter. so,where i must put this script? for this motive i request a demo.. i don't understand this addon.
Ok
Here is the sequence of the scripts TESTED BY ME it fully works at 100%
Group: Member
Posts: 22
Type: Writer
RM Skill: Beginner
Salute!
The script seems nice. The only thing I disliked about Omega7's Grid is the fact that the characters had their one unique grid, instead of sharing the same. Good job!
Just one question: will this script crash if I use it with FFXIII Battle System? (because thhis one already adds "Optima Change" to the Menu)
Group: Member
Posts: 9
Type: Scripter
RM Skill: Intermediate
QUOTE (69HotStuff96 @ Jul 7 2011, 03:24 PM)
Salute!
The script seems nice. The only thing I disliked about Omega7's Grid is the fact that the characters had their one unique grid, instead of sharing the same. Good job!
Just one question: will this script crash if I use it with FFXIII Battle System? (because thhis one already adds "Optima Change" to the Menu)
Thanks
Yes it is Compatible just use this instead of the normal "[ADD ON] Sphere Grid in Menu":
ADD ON Sphere Grid in Menu *Modified*
CODE
class Scene_Menu < Scene_Base def create_command_window s1 = Vocab::item s2 = Vocab::skill s3 = Vocab::equip s4 = Vocab::status s5 = Vocab::save s6 = Vocab::game_end sg = "Sphere Grid" s7 = "Optima change" @command_window = Window_Command.new(160, [s1, sg, s2, s3, s4, s7, s5, s6]) @command_window.index = @menu_index if $game_party.members.size == 0 # If number of party members is 0 @command_window.draw_item(0, false) # Disable item @command_window.draw_item(1, false) # Disable skill @command_window.draw_item(2, false) # Disable equipment @command_window.draw_item(3, false) # Disable status end if $game_system.save_disabled # If save is forbidden @command_window.draw_item(4, false) # Disable save end end
def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) if $game_party.members.size == 0 and @command_window.index < 4 Sound.play_buzzer return elsif $game_system.save_disabled and @command_window.index == 4 Sound.play_buzzer return end Sound.play_decision case @command_window.index when 0 # Item $scene = Scene_Item.new when 1,2,3, 4 # Skill, equipment, status start_actor_selection when 5 # Optima Change $scene = Scene_Optima.new when 6 # Save $scene = Scene_File.new(true, false, false) when 7 # End Game $scene = Scene_End.new end end end
def update_actor_selection if Input.trigger?(Input::B) Sound.play_cancel end_actor_selection elsif Input.trigger?(Input::C) $game_party.last_actor_index = @status_window.index Sound.play_decision case @command_window.index when 1 # Sphere Grid Sphere_Grid_Processes::to_sg(@status_window.index) when 2 # skill $scene = Scene_Skill.new(@status_window.index) when 3 # equipment $scene = Scene_Equip.new(@status_window.index) when 4 # status $scene = Scene_Status.new(@status_window.index) end end end end
QUOTE (ChrisStarry @ Jul 7 2011, 03:33 PM)
This script is neat and all, but as soon as I hit "Back to map" on the sphere grid, the character's sprite changes.. I have no idea how to fix this..
You have to set that in the Sphere_Grid_Config script.
QUOTE (WarriorOfLightX @ Dec 23 2011, 12:20 AM)
Does anyone know how to do this with KCG Large party script it glitches up on me.
Ofcourse it glitches, the script only accepts 4 characters in the party, remember?