|
  |
Teaching myself of scripts and have a few questions. |
|
|
|
|
Jul 29 2011, 03:28 PM
|

Level 5

Group: Member
Posts: 69
Type: Mapper
RM Skill: Beginner

|
I'm looking around in the basic default scripts of RPGXP And I'm wondering a few things. First, is it possible to Edit default the Menu scripts to accommodate a single Player character rather then a Party? Now, I've looked up single Party scripts already (such as Taiine's Solo Player though most of them are either far more complex then I'm looking for (Mind you, I'm not doing a project only playing with the default scripts to learn how they work, and only reading other scripts for reference) Or they require a great deal of Icons and Graphic alterations that I'm not interested in. Actually, that pretty much covers most of my questions. Can you do simple Edist to the default Scripts to make simple Menu redesigns rather then using 3rd party Scripts? I was able to redo the Status Screen to make it look better though that wasn't much more the shifting the Placements around. I also added in the FF7 Menu while I was playing around so I do have that one. But I'm trying to figure out how to make "Cosmetic" changes. Oh, that another question. How do you change the Names of existing Parameters and/or Edit them out where Superfluous. Did that make any sense? EDIT: I've been reading more of the Tutorials and realized I should of reworded my question. I should of asked Should I use custom scripts over editing the default scripts and why? I now see why 3rd party scripts are used more regularly then editing the Default scripts.
This post has been edited by TheCableGuy: Jul 30 2011, 09:22 AM
|
|
|
|
|
|
|
|
|
Jul 30 2011, 11:54 AM
|

Level 5

Group: Member
Posts: 69
Type: Mapper
RM Skill: Beginner

|
Ok. I have a few more Specific Questions. First, am I Correct in assuming that Custom Scripts override the Default scripts where they differ? From what I can read, this is what i gather though I can't seam to find anything in any of the Tutorials regarding that. Second, This is the 'Updating Status Screen' code snippet from "Final Fantasy VII menu" That I'm currently using (don't ask me why there's gibberish in the commented out sections. Was like that when I copied it.) CODE #-------------------------------------------------------------------------- # 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 # 锟解€™X锟解€™L锟解€™锟解‚拷 # 锟解‚★拷锟解‚★拷拧锟解€™A锟解€™N锟解€™^锟[锟解‚★拷拧扭s锟解‚“锟斤拷锟斤拷拧锟解€濓拷‚★拷啪 2 锟解€狅拷’殴锟狡’锟解‚★拷拧殴锟解„⑴わ拷‚拷 if $game_party.actors[@status_window.index].restriction >= 2 # 锟解€™u锟解€™U锟[ SE 锟解‚★拷€˜锟解‚拷锟解‚拷锟解‚œt $game_system.se_play($data_system.buzzer_se) return end # 锟脚★拷€狅拷‚„⒛ SE 锟解‚★拷€˜锟解‚拷锟解‚拷锟解‚œt $game_system.se_play($data_system.decision_se) # 锟解€™X锟解€™L锟解€™锟解‚拷锟解‚拷锟解€★拷‚€œ锟剿œ锟解‚∩愶拷œ锟解‚ ∧嶏拷‚œ锟斤拷‚★拷 $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 end
; What I was wanting to do was, when Choosing to view the Status window of the main character, it would skip over the Character Selection (since I only have one character) and go directly to the status screen. Now, What I'm assuming is that the code: CODE $scene = Scene_Status.new(@status_window.index) calls for the Scene_Status function which processes the Selection process and once the character is selected, it then calls for the Window_Status.... The question. Is there a way to Skip the Scene_Status call in the Main Menu script and jump directly to the Window_Status Call? Is it as simple as Replacing CODE $scene = Scene_Status.new(@status_window.index) with CODE @status_window = Window_Status.new(@actor) Or am I over simplifying it again? EDIT: no wait. Nevermind. I was way off. That's just silly.What if I put a Call to the Status Screen in CODE when 3 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true @status_window.index = 0 Of the "# Updating the Command Selection" Section? Oh and don't everyone come running all at once to respond to my posts. It's not like I need some form of answer to let me know I'm not talking to empty space.  Honestly, even someone telling me I'm an Idiot is better then silence.
This post has been edited by TheCableGuy: Jul 30 2011, 06:41 PM
|
|
|
|
|
|
|
|
|
Aug 3 2011, 11:37 PM
|

Level 3

Group: Member
Posts: 35
Type: Artist
RM Skill: Advanced

|
well if it isn't theCableGuy I hear ya man, sometimes a bad response is better than no response. So I'll do my best to make this a good one.  I gather by your posts that you are trying to get your RGSS on. Warning! "the more you learn about scripting ~ the more you will have to learn about scripting" I've learned a lot through reverse engineering code as well, I have no regrets but I've realized that I could of also been here at R3 taking advantage of the RGSS Script Reference http://www.rpgrevolution.com/rgss-script-ref/never the less I picked up some of the rookie level coding and stuck with it. I got to know the structure/object orientation, making a Class, defining methods, variables, arguments, and my personal favorite = modules and constants. As you will find there's so much stuff in syntax that will make your head pop. This is why I hold a high respect for those who program well (and still have a friendly personality.) Custom scripts don't always override the default scripts, some will simply add more to the game while others will reuse existing code. There's no rule against editing a default script to have it do what you want. But it is more efficient to use existing code verses script one: do this script two: don't do this, instead do that script three: don't do this and don't do that, do me when you can avoid useless code by make an edit script one: do this do me though I am an artist/musician, I'm going to strengthen my programming skills to bring that music and art alive. Still I have a long ways to go when it comes to programming, but it's the journey right? Oh and since you only have one character try this: CODE $scene = Scene_Status.new(0) ^,^
__________________________
|
|
|
|
|
|
|
|
|
Aug 4 2011, 03:09 PM
|

Level 5

Group: Member
Posts: 69
Type: Mapper
RM Skill: Beginner

|
Much Appreciated. While I have read the Tutorials, I found that I'm not getting everything in the correct context. Basically, I have trouble figuring out what each command is suppose to do, at least "when" I need to know it. I often reread the same block of code 20 times before I get the syntax being used then I have to look up it's use. And that's only for the simplest scripts. I got so frustrated that I took a break from Scripting to work on doing the Graphical Work in the Tilesets. Found I have a bit of a knack for it much more then I do for Scripting. Not saying I don't still what to figure out the Scripting though. CODE $scene = Scene_Status.new(0) Where does this go? I found CODE $scene = Scene_Status.new(@status_window.index) But changing "(@status_window.index)" to (0) doesn't seam to do anything. Still Brings up the Character selector.
|
|
|
|
|
|
|
|
|
Aug 4 2011, 04:30 PM
|

Level 3

Group: Member
Posts: 35
Type: Artist
RM Skill: Advanced

|
so you need the FF7 menu edited for one person? why didn't you say so :-P (my edits have a ^,^ so you can study what was edited) CODE #********************************************************* #Final Fantasy VII menu setup // # 1 person edit by G@MeF@Ce for the Cable Guy @R3 script support #********************************************************* #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 = "Arial" self.contents.font.size = 18 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 + 144, y) draw_actor_state(actor, x + 280, 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 = "Arial" self.contents.font.size = 18 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, 44) self.contents = Bitmap.new(width - 60, height - 32) self.contents.font.name = "Arial" self.contents.font.size = 17 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 attr_reader :window_status #edit ^,^ #/--------------------------- 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 = "Save" s6 = "Quit"
#--------------------------- edit------------------------------- # Command menu @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,]) @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 @actor = $game_party.actors[0] #edit ^,^ @status_window = Window_Status.new(@actor) #edit ^,^ @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 #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 #item $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 #skill $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true $scene = Scene_Skill.new(0)#edit #@status_window.index = 0 #------------------------------------------------------------------------------- when 2 #equip $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true $scene = Scene_Equip.new(0)#edit ^,^ #@status_window.index = 0 #------------------------------------------------------------------------------- when 3 #status $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true $scene = Scene_Status.new(0)#edit ^,^ #@status_window.index = 0 #------------------------------------------------------------------------------- when 4 #save 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 5 #quit $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 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 # ’X’L’€ # €š锟解€šš’A’N’^锟[€šš扭s€œ锟斤拷锟脚š”€šž 2 †Œ殴ƒ€šš殴™扭€ if $game_party.actors[@status_window.index].restriction >= 2 # ’u’U锟[ SE €š‘€扳€扳€˜t $game_system.se_play($data_system.buzzer_se) return end # š†€™膷 SE €š‘€扳€扳€˜t $game_system.se_play($data_system.decision_se) # ’X’L’€光€澳‡€“˜€š蓯˜€š膷€˜锟解€š锟 $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) $scene = Scene_Status.new(0)# edit ^,^ end return end end end end take a look at lines 376-398 if you are looking to make the windows slide when selecting skill, equip, and status...
This post has been edited by gameface101: Aug 4 2011, 04:32 PM
__________________________
|
|
|
|
|
|
|
|
|
Aug 4 2011, 08:56 PM
|

Level 5

Group: Member
Posts: 69
Type: Mapper
RM Skill: Beginner

|
That's interesting. I'll have to study it more to know exactly what it's doing but maybe I should of posted the Script I currently have as I must have since edited it more then I thought. Your edits seam to throw my menu into chaos. It's still displaying the Base Menu window and Displaying the New one over it. It also crashes trying to open any sub window. I tried in is a fresh project and it works properly. FYI. Because this isn't actually a game but rather just an exercise in experimentation, I guess I really don't have much direction in what I'm trying to achieve. Really, I'm trying to figure out which block of code displays which menu screen. To some extent, I have figured out how to edit Window_Status a bit to get a nice looking status screen.. I may have edited other scripts too. Tell me if something's not right with one of them. This is my script with your Edits. I believe I got them all. CODE #********************************************************* #Final Fantasy VII menu setup #********************************************************* #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 Main MENU BG #-------------------------------------------------------------------------- def initialize super(0, 0, 560, 454) #Main Menu window self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = "Arial" self.contents.font.size = 18 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 = 2 y = i * 110 actor = $game_party.actors[i] draw_actor_face(actor, 2, y + 400) #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 + 32) draw_actor_state(actor, x , y + 60) draw_actor_hp(actor, x + 290, y ) draw_actor_sp(actor, x +300, y +20) draw_actor_exp(actor, x + 310, y +40)
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
#=======================================# # 锟剿嘩indow_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 = "Arial" self.contents.font.size = 18 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 # Time Played display #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, 44) self.contents = Bitmap.new(width - 60, height - 32) self.contents.font.name = "Arial" self.contents.font.size = 17 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 attr_reader :window_status #/--------------------------- 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 = "Save" s6 = "Quit"
#--------------------------- edit------------------------------- # Command menu @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,]) @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 @actor = $game_party.actors[0] #edit ^,^ @status_window = Window_Status.new(@actor) #edit ^,^ @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 #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 pushed 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 # Select Item Screen 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 # Select Skill Screen when 1 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true $scene = Scene_Skill.new(0)#edit @status_window.index = 0 # Select Equip Screen when 2 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true $scene = Scene_Equip.new(0)#edit ^, @status_window.index = 0 # Select Status Screen when 3 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true $scene = Scene_Status.new(0)#edit ^,^ @status_window.index = 0 # Select Save screen when 4 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 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_End.new 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) $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) $scene = Scene_Status.new(0)# edit ^,^ end return end end end end
;
|
|
|
|
|
|
|
|
|
Aug 4 2011, 11:07 PM
|

Level 3

Group: Member
Posts: 35
Type: Artist
RM Skill: Advanced

|
there were a few lines of code that needed to be commented out for they were no longer needed, the '#' was used to do this. also to comment a chunk of code you can use =begin the chunk of code you want to comment out =end Study the beginning on the script, I've started proper indent for you to see how classes, defining methods, cases, if statements... end for example: CODE Class Example_Test
def example_method if example == 0 example = 0 else example = 1 end #end if statement end # end defining method end #end class the script: CODE #********************************************************* #Final Fantasy VII menu setup // # 1 person edit by G@MeF@Ce for the Cable Guy @R3 script support #********************************************************* #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.pictures(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 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 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 Main MENU BG #-------------------------------------------------------------------------- def initialize super(0, 0, 560, 454) #Main Menu window self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = "Arial" self.contents.font.size = 18 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 = 2 y = i * 110 actor = $game_party.actors[i] draw_actor_face(actor, 2, y + 400) #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 + 32) draw_actor_state(actor, x , y + 60) draw_actor_hp(actor, x + 290, y ) draw_actor_sp(actor, x +300, y +20) draw_actor_exp(actor, x + 310, y +40) 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 #end class
#=======================================# # 锟剿‡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 = "Arial" self.contents.font.size = 18 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 # Time Played display #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 # end of indent example #============================================================================== # 锟剿‡ Window_Mapname #------------------------------------------------------------------------------ # 锟紷Draws the Map name #==============================================================================
class Window_Mapname < Window_Base #-------------------------------------------------------------------------- # Set up #-------------------------------------------------------------------------- def initialize super(0, 0, 320, 44) self.contents = Bitmap.new(width - 60, height - 32) self.contents.font.name = "Arial" self.contents.font.size = 17 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 attr_reader :window_status #/--------------------------- 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 = "Save" s6 = "Quit"
#--------------------------- edit------------------------------- # Command menu @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,]) @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 # commented no longer needed @actor = $game_party.actors[0] #edit ^,^ @status_window = Window_Status.new(@actor) #edit ^,^ @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 #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 pushed 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 # Select Item Screen 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 # Select Skill Screen when 1 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true $scene = Scene_Skill.new(0)#edit #@status_window.index = 0 # no longer needed # Select Equip Screen when 2 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true $scene = Scene_Equip.new(0)#edit ^, #@status_window.index = 0 # no longer needed # Select Status Screen when 3 $game_system.se_play($data_system.decision_se) @command_window.active = false @status_window.active = true $scene = Scene_Status.new(0)#edit ^,^ #@status_window.index = 0 #no longer needed # Select Save screen when 4 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 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_End.new 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) $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) #no longer needed $scene = Scene_Status.new(0)# edit ^,^ end return end end end end hope this helps, maybe I'll make more scripting basics on my site and share what I 've learned as I learn....
This post has been edited by gameface101: Aug 4 2011, 11:11 PM
__________________________
|
|
|
|
|
|
|
|
|
Aug 6 2011, 06:51 PM
|

Level 5

Group: Member
Posts: 69
Type: Mapper
RM Skill: Beginner

|
Thank you very much. I'm starting to understand it now. Question. Suppose someone would like to have 2 Status Screens... Or 2 pages of the status screen. From what I can gather is that the edits you posted draw the Data from the regular Status Screen and Displays it on the main Menu screen. Is there a Way to add a 2nd page (or edit the Menu Screen to display as the Primary Status and page 2 for secondary status? Tell me if I'm on the right track. My first thought is to make a Second "window_status" Script (renamed, of course) and make the Menu script call to that one when you select "Status" from the menu. Am I close? Edit: Or maybe reuse the Window_MenuStatus Script as we are now bypassing that one? What would of happened if you were to change CODE class Window_MenuStatus < Window_Selectable To CODE class Window_MenuStatus < Window_base in the Window_MenuStatus Script? Would that just removed the Cursor Selector from the menu? Would probably need to do re-overhaul of the referring Scripts though.
This post has been edited by TheCableGuy: Aug 6 2011, 07:05 PM
|
|
|
|
|
|
|
|
  |
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:
RPG RPG Revolution is an Privacy
Policy and Legal
|
|