Jump to content

Recommended Posts

Im sorry wrong post..... Really sorry....

Sorrrrrrrrryyy... Im in day dream nevermind thi post....

Edited by markme

Share this post


Link to post
Share on other sites

Great Script!

 

Question though. How to explain...

 

Say I have 3 Achievements set up based on steps taken in game.

 

First one has a 10 step goal

Second one has a 20 step goal

Third one has a 30 step goal

 

I now have three achievements that i have to scroll through, cluttering up my achievements window.

 

How can I turn the three into one progressive achievement? As in, when first is completed, second takes its place with 10/20 steps completed.

 

Also, what does "CSCA_Item.new" mean in the newest version?

 

Thanks!

Share this post


Link to post
Share on other sites

Is it possible to unlock an achievement by turning a switch on?

Share this post


Link to post
Share on other sites

Is it possible to unlock an achievement by turning a switch on?

 

Sure, you can just use a common event that is triggered by your desired switch and put the achievement call in there.

Edited by Caveras

Share this post


Link to post
Share on other sites

sir can you make it compatible with yanfly or modern algebras main menu? if it`s possible only?

 

It is already compatible with Yanfly's menu engine. I hate people continually asking this, but almost every script is compatible with Yanfly Menu Engine. I should know, I put them all in it for my project (like 13 different additions).

 

I'll give you a hint, as you should be able to figure this out fairly easily. Here's a tip for everyone having problems trying to figure out really simply stuff: look at how someone else already did it, and then try and copy it.

 

 

Look at the Tactics Ogre Crafting Script, for similar code (it turns out I modified it for CSCA - Encyclopedia already):

 

#==============================================================================

# ++ Scene_Menu

#==============================================================================

class Scene_Menu < Scene_MenuBase

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

# compatibility method : command_encyclo

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

def command_encyclo(*args)

SceneManager.call(Scene_CSCA_Encyclopedia)

 

end

end # class Scene_Menu

[/code]

 

Now, you can easily modify this to apply to your Achievements scene, and then add the code to the bottom of the Achievements script. Then you go into Yanfly Menu Engine, and figure out how to add in :command_achievements (or whatever you named it). It should be straightforward.

Edited by ekomega

Share this post


Link to post
Share on other sites

Say I have 3 Achievements set up based on steps taken in game.

 

First one has a 10 step goal

Second one has a 20 step goal

Third one has a 30 step goal

 

I now have three achievements that i have to scroll through, cluttering up my achievements window.

How can I turn the three into one progressive achievement? As in, when first is completed, second takes its place with 10/20 steps completed.

Currently there is no way to have progressive achievements that take the place of previous achievements.

 

@markme Those menu systems should already be compatible with this script and provide instructions for you to add custom scripts in.

Share this post


Link to post
Share on other sites

where you have

 

i don't know the script call,

but if you manually checked for achievement completeness in a common event

couldn't you do something like

 

//Original achievement

ACHIEVEMENTS[0] = ["Treasure Hunter","???",DESCRIPTION[0],DESCRIPTION[1],

PROGRESS[0],REWARDS[0],nil]

(check if achivement x is complete)

if yes:

ACHIEVEMENTS[0] = ["Treasure Hunter II","Open 20 Chests",DESCRIPTION[2],DESCRIPTION[3],

PROGRESS[1],REWARDS[1],nil]

 

if no:

//nothing

 

 

Not sure if it will work because not sure if it keeps re-initializing or not,

but if it's a parallel process, that shouldn't be a problem,

it'l just keep changing lol

 

If i did something like this in Java I would use

 

ACHIEVEMENTS[0] = ACHIEVEMENTS[1]

The same concept should be possible in a way in RGSS3 right?

 

//Java Programmer so slashes sorry

//Let me know if I'm wrong.

Edited by Ethan Heary

Share this post


Link to post
Share on other sites

Hello all, Im kind of a noob at this so im reaching out for a little help. I put this script in a brand new game no other scripts but the core and whenever i try to start it up i get this error message:

 

Script 'Ach' line 774: NoMethodError occured.

 

undefined method '[]' for nil:NilClass

 

i tried adding in an achievement but only copy pasted ones already there and just changed the numbers. I just need to know what to do change this!

 

Thanks in advance.

 

 

NM Fixed it

Edited by Zerberious

Share this post


Link to post
Share on other sites

Well im back. I need help making an achievement from gathering certain items or a set of items. Im trying to learn variables but it doesnt seem to help. Does anyone know the best way to approach this?

 

Here is what i mean.

 

In my game i want, lets say, marbles to be a mundane item, but still one to collect. How would i go about making this item and whenever the hero gets one it counts toward the achievement goal. These marbles dont do anything they are just there to collect.

 

Thanks !

Share this post


Link to post
Share on other sites

In my game i want, lets say, marbles to be a mundane item, but still one to collect. How would i go about making this item and whenever the hero gets one it counts toward the achievement goal. These marbles dont do anything they are just there to collect.

 

Make an achievement, and then for the PROGRESS array linked to that achievement you'd do something like this:

PROGRESS[0] = [item_id_for_marbles_here, 10, "marbles", :item]

Share this post


Link to post
Share on other sites

Any chance of implementing Gamerscore into this script, allowing us to assign a point value to each achievement and display the total points acquired next to where it says "Total Achievements Unlocked: x/x"?

Share this post


Link to post
Share on other sites

Shouldn't take too long to do, I guess.

 

Okay, gamerscore system is in the script. it's pretty basic though.

Edited by casper667

Share this post


Link to post
Share on other sites

I don't know if you missed my request, or not but, but since you seem to be back posting, could you have a look at this casper? :D

 

Hello. I'm going for 'trophies' over 'achievements,' and I'd like the icons for the trophies to be specific. (I.E. Unlocking a bronze/silver/gold trophy). Is there any way you can add that feature? Or is that possible already? Since I've only found the one option for "Icon when unlocked" and "Icon when not unlocked."

 

Share this post


Link to post
Share on other sites

Awesome thanks for the quick response, however, now i am having a different problem.

 

Ive added the ach. but when i go to look at it under the menu it says that class not found for size. I havent changed anything in the script other than adding the progress and ach.

 

 

 

=begin CSCA Achievements version: 1.2.1 Created by: Casper Gaming (http://www.caspergaming.com/) Compatibility: Made for RPGVXAce IMPORTANT: ALL CSCA Scripts should be compatible with each other unless otherwise noted. REQUIRES CSCA Core Script. ================================================================================ UPDATES: version 1.1(September 6th, 2012): - Optimized & Made more compatible version 1.2(September 19th, 2012): - Added support for encyclopedia completion % achievements version 1.2.1(November 25th, 2012): - Added score to achievements. ================================================================================ INTRODUCTION: This script creates an achievement system in your game. FEATURES: -Achievements! -Score system similar to gamerscore. -Can assign a reward for each achievement -Can display a progress bar for each achievement -Automatically earn achievements when progress bar gets to 100%. -Can play an SE when achievement is unlocked -Popup window when achievement is earned -Able to use custom graphic in place of achievement window(size is 248x72), image will be resized if bigger or smaller. SETUP Setup required. Instructions below. To set an achievement as true, use the following script call: $game_achievements[achievement_id] = true where achievement_id would be the same number as ACHIEVEMENTS[achievement_id] CREDIT: Free to use in noncommercial games if credit is given to: Casper Gaming (http://www.caspergaming.com/) To use in a commercial game, please purchase a license here: http://www.caspergaming.com/licenses.html TERMS: http://www.caspergaming.com/terms_of_use.html =end module CSCA # Don't touch module ACHIEVEMENTS # Don't touch #=======================================================================# # Declaring arrays, do not touch # #=======================================================================# ACHIEVEMENTS = [] # Don't touch DESCRIPTION = [] # Don't touch PROGRESS = [] # Don't touch REWARDS = [] # Don't touch #=======================================================================# # Description Setup # #=======================================================================# #DESCRIPTION[x] = ["Descriptive Text","Seperate lines with commas!"] DESCRIPTION[0] = ["Open 10 Treasure Chests","to unlock."] DESCRIPTION[1] = ["You opened 10 Treasure","Chests!"] DESCRIPTION[2] = ["Obtain a sword."] #=======================================================================# # Progress Setup # #=======================================================================# #PROGRESS[x] = [id, upper bound, "describe numbers", :type] # The type can be either: # :var = amount stored in $game_variables[id] # :item = amount of $data_items[id] # :weapon = amount of $data_weapons[id] # :armor = amount of $data_armors[id] # :gold = amount of gold, ignores id value # :step = amount of steps, ignores id value # :save = amount of saves, ignores id value # :battle = amount of battles, ignores id value # :playtime = playtime, ignores id value # * :loot = amount of gold looted, ignores id value # * :dtake = amount of damage taken, ignores id value # * :ddeal = amount of damage dealt, ignores id value # * :gspend = amount of gold spent at shops, ignores id value # * :gearn = amount of gold earned from selling to shops, ignores id value # * :iuse = amount of items used, ignores id value # * :ibuy = amount of items bought from shops, ignores id value # * :isell = amount of items sold to shops, ignores id value # ** :ebes = % of bestiary completed, ignores id value # ** :eitm = % of items completed, ignores id value # ** :ewep = % of weapons completed, ignores id value # ** :earm = % of armors completed, ignores id value # ** :eskl = % of skills completed, ignores id value # ** :esta = % of states completed, ignores id value # ** :etot = % of total encyclopedia completed, ignores id value # ** :ecst = % of custom encyclopedia category completed, use id value for # the custom category's key value. # * Requires CSCA Extra Stats(1.1+) Get it here: # http://www.rpgmakervxace.net/topic/2030-csca-extra-stats/ # ** Requires CSCA Encyclopedia(3.0+) Get it here: # http://www.rpgmakervxace.net/topic/2775-csca-encyclopedia-w-bestiary/ PROGRESS[0] = [5, 10, "Treasures Opened", :var] # 10 max, tracks variable ID5. PROGRESS[1] = [0, 100, "Total Gold", :gold] # 100 max, tracks party's gold. PROGRESS[2] = [17, 5, "Marbles", :item] #=======================================================================# # Rewards Setup # #=======================================================================# #REWARDS[x] = [amount, id, type] # The type can be either: # :item = amount of $data_items[id] # :weapon = amount of $data_weapons[id] # :armor = amount of $data_armors[id] # :gold = amount of gold, ignores id value REWARDS[0] = CSCA_Item.new(100, 0, :gold) # 100 gold. REWARDS[1] = CSCA_Item.new(5, 1, :item) # 5 of item ID 1. #=======================================================================# # Achievement Setup # #=======================================================================# #ACHIEVEMENT[x] = ["Name After Unlock","Name Before Unlock"(optional), #Description, Description after unlock(optional),progress tracking(optional), #reward(optional),popup graphic(optional), points worth] # If you are not using an optional feature, write: nil ACHIEVEMENTS[0] = ["Treasure Hunter","???",DESCRIPTION[0],DESCRIPTION[1], PROGRESS[0],REWARDS[0],nil, 5] ACHIEVEMENTS[1] = ["Treasure Hunter II",nil,DESCRIPTION[2],nil,nil,nil, "DarkSpace1", 10] ACHIEVEMENTS[2] = ["Marble Collector",nil,nil,nil,PROGRESS[2],REWARDS[0], nil,5] #=======================================================================# # Misc. Setup # #=======================================================================# HEADER = "Achievements" # Text shown in the head window. TOTAL = "Total Achievements Unlocked: " # Text shown before total numbers. SCORE = "Score: " # Text shown before score numbers. USE_SCORE = true # Use the score system? PROGRESS = "Progress:" # Text above progress bar REWARD = "Reward: " # Text shown before the reward amount/name. UNLOCKED = "Achievement Unlocked!" # Text shown when achievement unlocked. EARNED_ICON = 621 # Icon to display if achievement is earned. UNEARNED_ICON = 622 # Icon to display if achievement is unearned. NUMBERED = false # If true, numbers achieve list. If false, uses icons. CENTER = false # Center the description text ? True/false STOP_TRACK = false # Stop tracking achievement progress after earned? COLOR1 = 20 # Color1 of the progress gauge. COLOR2 = 21 # Color2 of the progress gauge. SOUND = "Applause1" # SE Played when an achievement is earned. Set to nil to disable. POP_ALIGN = :top # Alignment of Popup on map when achievement is earned. # :bottom = bottom center, :middle = middle of screen, :top = top center # Set to nil to disable the Popup Window. #-----------------------------------------------------------------------# # END SETUP! DO NOT EDIT BELOW UNLESS YOU KNOW WHAT YOU ARE DOING # #-----------------------------------------------------------------------# end end $imported = {} if $imported.nil? $imported["CSCA-Achievements"] = true msgbox('Missing Script: CSCA Core Script! CSCA Achievements requires this script to work properly.') if !$imported["CSCA-Core"] #============================================================================== # ** DataManager #------------------------------------------------------------------------------ # Handles achievement data. # Aliases: make_save_contents, create_game_objects, extract_save_contents #============================================================================== module DataManager #--------------------------------------------------------------------------# # alias method. # #--------------------------------------------------------------------------# class <= 0 ? @data[index] : nil end #--------------------------------------------------------------------------# # Populate item list # #--------------------------------------------------------------------------# def make_item_list @data = CSCA::ACHIEVEMENTS::ACHIEVEMENTS end #--------------------------------------------------------------------------# # Draw Items # #--------------------------------------------------------------------------# def draw_item(index) item = @data[index] if item rect = item_rect(index) CSCA::ACHIEVEMENTS::NUMBERED ? draw_item_id(rect, index) : draw_ach_icon(rect, index) if $game_achievements[index] || CSCA::ACHIEVEMENTS::ACHIEVEMENTS[index][1].nil? name = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[index][0] else name = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[index][1] end draw_text(rect.x + 32, rect.y, contents.width - 40, line_height, name) end end #--------------------------------------------------------------------------# # Draw Numbers # #--------------------------------------------------------------------------# def draw_item_id(rect, index) draw_text(rect, sprintf("%2d.", index + 1)) end #--------------------------------------------------------------------------# # Draw Icons # #--------------------------------------------------------------------------# def draw_ach_icon(rect, index) $game_achievements[index] ? draw_icon(CSCA::ACHIEVEMENTS::EARNED_ICON,rect.x+5,rect.y) : draw_icon(CSCA::ACHIEVEMENTS::UNEARNED_ICON,rect.x+5,rect.y) end #--------------------------------------------------------------------------# # Refresh # #--------------------------------------------------------------------------# def refresh make_item_list create_contents draw_all_items end #--------------------------------------------------------------------------# # Update Help Window # #--------------------------------------------------------------------------# def update_help @help_window.set_item(index) end end #============================================================================== # ** CSCA_Window_AchievementTotals #------------------------------------------------------------------------------ # This window displays the achievement header window. #============================================================================== class CSCA_Window_AchievementTotals < Window_Base #--------------------------------------------------------------------------# # Object Initialization # #--------------------------------------------------------------------------# def initialize(x, y, w, h) super(x, y, w, h) refresh end #--------------------------------------------------------------------------# # Refresh # #--------------------------------------------------------------------------# def refresh contents.clear total_achieves = CSCA::ACHIEVEMENTS::ACHIEVEMENTS.size total_points = 0 points = 0 unlocked = 0 for i in 0...CSCA::ACHIEVEMENTS::ACHIEVEMENTS.size if $game_achievements unlocked += 1 points += CSCA::ACHIEVEMENTS::ACHIEVEMENTS[7] end total_points += CSCA::ACHIEVEMENTS::ACHIEVEMENTS[7] end string1 = CSCA::ACHIEVEMENTS::TOTAL + unlocked.to_s + "/" + total_achieves.to_s string2 = CSCA::ACHIEVEMENTS::SCORE + points.to_s + "/" + total_points.to_s string = CSCA::ACHIEVEMENTS::USE_SCORE ? string1 + " " + string2 : string1 draw_text(0,0,contents.width,line_height,string,1) end end #============================================================================== # ** CSCA_Window_AchievementDisplay #------------------------------------------------------------------------------ # This window displays the achievement descriptions. #============================================================================== class CSCA_Window_AchievementDisplay < Window_Base #--------------------------------------------------------------------------# # Object Initialization # #--------------------------------------------------------------------------# def initialize(x,y,w,h) super(x,y,w,h) end #--------------------------------------------------------------------------# # Draw all info # #--------------------------------------------------------------------------# def set_item(achievement_id) contents.clear draw_description(0,contents.width,line_height,achievement_id) draw_progress(0,line_height*8,contents.width,line_height,achievement_id) unless CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement_id][4].nil? draw_reward(0,line_height*11,contents.width,line_height,achievement_id) unless CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement_id][5].nil? end #--------------------------------------------------------------------------# # Draw description # #--------------------------------------------------------------------------# def draw_description(x,w,h,achievement) if !$game_achievements[achievement] || CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][3].nil? description = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][2] else description = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][3] end for i in 0...description.size draw_text(x,h*i,w,h,description.to_s, centered_text?) end end #--------------------------------------------------------------------------# # Get centered option # #--------------------------------------------------------------------------# def centered_text? CSCA::ACHIEVEMENTS::CENTER ? 1 : 0 end #--------------------------------------------------------------------------# # Draw Progress bar # #--------------------------------------------------------------------------# def draw_progress(x,y,w,h,achievement) color1 = text_color(CSCA::ACHIEVEMENTS::COLOR1) color2 = text_color(CSCA::ACHIEVEMENTS::COLOR2) contents.font.size = 20 draw_text(x,y,w,h,CSCA::ACHIEVEMENTS::PROGRESS,1) if $game_achievements[achievement] && CSCA::ACHIEVEMENTS::STOP_TRACK draw_gauge(x,y+line_height-8,w,1/1,color1,color2) string = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][4][1].to_s draw_text(x,y+line_height-4,w,h,string+"/"+string,1) else draw_gauge(x,y+line_height-8,w,csca_get_rate(achievement),color1,color2) draw_gauge_numbers(x,y+line_height-4,w,h,achievement) end draw_text(x,y+line_height*2-12,w,h,CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][4][2],1) contents.font.size = 24 end #--------------------------------------------------------------------------# # Calculate Rate # #--------------------------------------------------------------------------# def csca_get_rate(achievement) csca_get_numerator(achievement).to_f/csca_get_denominator(achievement).to_f end #--------------------------------------------------------------------------# # Get Numerator # #--------------------------------------------------------------------------# def csca_get_numerator(achievement) case CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][4][3] when :var return $game_variables[CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][4][0]] when :item return $game_party.item_number($data_items[CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][4][0]]) when :weapon return $game_party.item_number($data_weapons[CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][4][0]]) when :armor return $game_party.item_number($data_armors[CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][4][0]]) when :gold return $game_party.gold when :step return $game_party.steps when :save return $game_system.save_count when :battle return $game_system.battle_count when :playtime return Graphics.frame_count / Graphics.frame_rate when :loot return $game_variables[CSCA_EXTRA_STATS::LOOTED] when :dtake return $game_variables[CSCA_EXTRA_STATS::DAMAGE_TAKEN] when :ddeal return $game_variables[CSCA_EXTRA_STATS::DAMAGE_DEALT] when :gspend return $game_variables[CSCA_EXTRA_STATS::GOLDSPENT] when :gearn return $game_variables[CSCA_EXTRA_STATS::GOLDGAINED] when :iuse return $game_variables[CSCA_EXTRA_STATS::ITEMS_USED] when :ibuy return $game_variables[CSCA_EXTRA_STATS::ITEMSBOUGHT] when :isell return $game_variables[CSCA_EXTRA_STATS::ITEMSSOLD] when :ebes string = sprintf("%1.2f%%",$game_party.csca_completion_percentage_bestiary*100.00) return string when :eitm string = sprintf("%1.2f%%",$game_party.csca_completion_percentage_items*100.00) return string when :ewep string = sprintf("%1.2f%%",$game_party.csca_completion_percentage_weapons*100.00) return string when :earm string = sprintf("%1.2f%%",$game_party.csca_completion_percentage_armors*100.00) return string when :eskl string = sprintf("%1.2f%%",$game_party.csca_completion_percentage_skills*100.00) return string when :esta string = sprintf("%1.2f%%",$game_party.csca_completion_percentage_states*100.00) return string when :ecst string = sprintf("%1.2f%%",$game_party.completion_percentage_cust(CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][4][0])*100.00) return string when :etot string = sprintf("%1.2f%%",$game_party.csca_completion_percentage*100.00) return string end return 0 end #--------------------------------------------------------------------------# # Get Denominator # #--------------------------------------------------------------------------# def csca_get_denominator(achievement) return CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][4][1] end #--------------------------------------------------------------------------# # Draw Gauge Values # #--------------------------------------------------------------------------# def draw_gauge_numbers(x,y,w,h,achievement) draw_text(x,y,w,h,csca_get_numerator(achievement).to_s+"/"+csca_get_denominator(achievement).to_s,1) end #--------------------------------------------------------------------------# # Draw Reward # #--------------------------------------------------------------------------# def draw_reward(x,y,w,h,achievement) reward = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][5] case reward.type when :gold; reward_s = Vocab::currency_unit when :item; reward_s = " " + $data_items[reward.id].name when :weapon; reward_s = " " + $data_weapons[reward.id].name when :armor; reward_s = " " + $data_armors[reward.id].name end draw_text(x,y,w,h,CSCA::ACHIEVEMENTS::REWARD+reward.amount.to_s+reward_s) end end #============================================================================== # ** CSCA_Window_AchievementPop #------------------------------------------------------------------------------ # This window displays when an achievement is unlocked if no custom graphic # is available. #============================================================================== class CSCA_Window_AchievementPop < Window_Base #--------------------------------------------------------------------------# # Object Initialization # #--------------------------------------------------------------------------# def initialize case CSCA::ACHIEVEMENTS::POP_ALIGN when :bottom super(Graphics.width/4,Graphics.height-fitting_height(3),window_width,fitting_height(3)) when :middle super(Graphics.width/4,Graphics.height/2-fitting_height(1),window_width,fitting_height(3)) when :top super(Graphics.width/4,0,window_width,fitting_height(3)) end self.opacity = 0 self.contents_opacity = 0 @show_count = 0 refresh end #--------------------------------------------------------------------------# # Get Window Width # #--------------------------------------------------------------------------# def window_width return 272 end #--------------------------------------------------------------------------# # Frame Update # #--------------------------------------------------------------------------# def update super if @show_count > 0 update_fadein @show_count -= 1 else update_fadeout end end #--------------------------------------------------------------------------# # Update Fadein # #--------------------------------------------------------------------------# def update_fadein unless $game_map.achievement_id.nil? self.opacity += 16 if CSCA::ACHIEVEMENTS::ACHIEVEMENTS[$game_map.achievement_id][6].nil? end self.contents_opacity += 16 end #--------------------------------------------------------------------------# # Update Fadeout # #--------------------------------------------------------------------------# def update_fadeout unless $game_map.achievement_id.nil? self.opacity -= 16 if CSCA::ACHIEVEMENTS::ACHIEVEMENTS[$game_map.achievement_id][6].nil? end self.contents_opacity -= 16 end #--------------------------------------------------------------------------# # Open Window # #--------------------------------------------------------------------------# def open refresh @show_count = 150 self.contents_opacity = 0 self.opacity = 0 self end #--------------------------------------------------------------------------# # Close Window # #--------------------------------------------------------------------------# def close @show_count = 0 self end #--------------------------------------------------------------------------# # Refresh # #--------------------------------------------------------------------------# def refresh contents.clear unless $game_map.achievement_id.nil? if CSCA::ACHIEVEMENTS::ACHIEVEMENTS[$game_map.achievement_id][6].nil? contents.font.bold = true draw_text(0,0,contents.width,line_height,CSCA::ACHIEVEMENTS::UNLOCKED,1) contents.font.bold = false draw_text(0,line_height,contents.width,line_height,CSCA::ACHIEVEMENTS::ACHIEVEMENTS[$game_map.achievement_id][0],1) draw_reward($game_map.achievement_id) unless CSCA::ACHIEVEMENTS::ACHIEVEMENTS[$game_map.achievement_id][5].nil? else draw_custom_image end end end #--------------------------------------------------------------------------# # Draw Reward if Exist # #--------------------------------------------------------------------------# def draw_reward(achievement) reward = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][5] case reward.type when :gold; reward_s = Vocab::currency_unit when :item; reward_s = " " + $data_items[reward.id].name when :weapon; reward_s = " " + $data_weapons[reward.id].name when :armor; reward_s = " " + $data_armors[reward.id].name end draw_text(0,line_height*2,contents.width,line_height, CSCA::ACHIEVEMENTS::REWARD+reward.amount.to_s+reward_s,1) end #--------------------------------------------------------------------------# # Draw Popup Graphic if Exist # #--------------------------------------------------------------------------# def draw_custom_image bitmap = Cache.picture(CSCA::ACHIEVEMENTS::ACHIEVEMENTS[$game_map.achievement_id][6]) rect = Rect.new(0,0,bitmap.width,bitmap.height) target = Rect.new(0,0,contents.width,contents.height) contents.stretch_blt(target, bitmap, rect, 255) end end #============================================================================== # ** Scene_Map #------------------------------------------------------------------------------ # Overwrites: none # Aliases: create_all_windows, update, pre_transfer #============================================================================== class Scene_Map < Scene_Base #--------------------------------------------------------------------------# # alias method. # #--------------------------------------------------------------------------# alias csca_create_all_windows create_all_windows def create_all_windows csca_create_all_windows csca_create_achievement_window unless CSCA::ACHIEVEMENTS::POP_ALIGN.nil? end #--------------------------------------------------------------------------# # new method; create achievement window # #--------------------------------------------------------------------------# def csca_create_achievement_window @achievement_window = CSCA_Window_AchievementPop.new @achievement_window.viewport = @viewport end #--------------------------------------------------------------------------# # alias method. # #--------------------------------------------------------------------------# alias csca_ach_pre_transfer pre_transfer def pre_transfer @achievement_window.close unless CSCA::ACHIEVEMENTS::POP_ALIGN.nil? csca_ach_pre_transfer end #--------------------------------------------------------------------------# # alias method. # #--------------------------------------------------------------------------# alias csca_ach_update update def update csca_ach_update if $game_map.achievement_earned @achievement_window.open unless CSCA::ACHIEVEMENTS::POP_ALIGN.nil? $game_map.achievement_earned = false end end end #============================================================================== # ** Game_Party #------------------------------------------------------------------------------ # Overwrites: none # Aliases: none #============================================================================== class Game_Party < Game_Unit #--------------------------------------------------------------------------# # new method; Gives Reward # #--------------------------------------------------------------------------# def csca_achievement_reward(reward) case reward.type when :gold; gain_gold(reward.amount) when :item; gain_item($data_items[reward.id], reward.amount) when :weapon; gain_item($data_weapons[reward.id], reward.amount) when :armor; gain_item($data_armors[reward.id], reward.amount) end end end #============================================================================== # ** Game_Map #------------------------------------------------------------------------------ # Overwrites: none # Aliases: initialize, update #============================================================================== class Game_Map attr_accessor :achievement_earned attr_accessor :achievement_id #--------------------------------------------------------------------------# # alias method. # #--------------------------------------------------------------------------# alias csca_ach_initialize initialize def initialize csca_ach_initialize @achievement_earned = false @achievement_id = 0 end #--------------------------------------------------------------------------# # alias method. # #--------------------------------------------------------------------------# alias csca_ach_update update def update(main) csca_update_achievements csca_ach_update(main) end #--------------------------------------------------------------------------# # new method; automatically earn achievement if progress 100% # #--------------------------------------------------------------------------# def csca_update_achievements data = CSCA::ACHIEVEMENTS::ACHIEVEMENTS for i in 0...data.size unless $game_achievements if csca_get_progress_completion(data) $game_achievements = true end end end end #--------------------------------------------------------------------------# # new method; determine progress completion # #--------------------------------------------------------------------------# def csca_get_progress_completion(achievement) return false if achievement[4].nil? return csca_ach_numerator(achievement)/csca_ach_denominator(achievement) >= 1 end #--------------------------------------------------------------------------# # new method; determine rate numerator # #--------------------------------------------------------------------------# def csca_ach_numerator(achievement) case achievement[4][3] when :var return $game_variables[achievement[4][0]] when :item return $game_party.item_number(achievement[4][0]) when :weapon return $game_party.item_number(achievement[4][0]) when :armor return $game_party.item_number(achievement[4][0]) when :gold return $game_party.gold when :step return $game_party.steps when :save return $game_system.save_count when :battle return $game_system.battle_count when :playtime return Graphics.frame_count / Graphics.frame_rate when :loot return $game_variables[CSCA_EXTRA_STATS::LOOTED] when :dtake return $game_variables[CSCA_EXTRA_STATS::DAMAGE_TAKEN] when :ddeal return $game_variables[CSCA_EXTRA_STATS::DAMAGE_DEALT] when :gspend return $game_variables[CSCA_EXTRA_STATS::GOLDSPENT] when :gearn return $game_variables[CSCA_EXTRA_STATS::GOLDGAINED] when :iuse return $game_variables[CSCA_EXTRA_STATS::ITEMS_USED] when :ibuy return $game_variables[CSCA_EXTRA_STATS::ITEMSBOUGHT] when :isell return $game_variables[CSCA_EXTRA_STATS::ITEMSSOLD] when :ebes return $game_party.csca_completion_percentage_bestiary*100.00 when :eitm return $game_party.csca_completion_percentage_items*100.00 when :ewep return $game_party.csca_completion_percentage_weapons*100.00 when :earm return $game_party.csca_completion_percentage_armors*100.00 when :eskl return $game_party.csca_completion_percentage_skills*100.00 when :esta return $game_party.csca_completion_percentage_states*100.00 when :ecst return $game_party.completion_percentage_cust(achievement[4][0])*100.00 when :etot return $game_party.csca_completion_percentage*100.00 end return 0 end #--------------------------------------------------------------------------# # new method; determine rate denominator # #--------------------------------------------------------------------------# def csca_ach_denominator(achievement) return achievement[4][1] end end

 

 

 

Literally that is the script im running. I have nothing else besides the rest of your scripts in the game right now. I feel really stupid because its probably something simple but any help is greatly appreciated.

 

 

 

Once again, Ive figured it out, i wasnt putting a description and it kept crashing. lol now i just have to figure out why its not saying i got the ach when ive collected the correct amount of marbles... ugh...

Edited by Zerberious

Share this post


Link to post
Share on other sites

@ashern so you just want to have different icons for different achievements in the menu? That shouldn't be too hard to do.

 

@Zerberious the formatting is all messed up in the spoiler so I didn't really look through it. In the achievement window, is the progress bar completely filled?

Share this post


Link to post
Share on other sites

Yep. I have a bronze, silver, and gold trophy icon, and I just wanted to be able to categorize the achievements based on the type of trophy it is. But since as it currently stands, I could only choose one icon xD.

Share this post


Link to post
Share on other sites
@Zerberious the formatting is all messed up in the spoiler so I didn't really look through it. In the achievement window, is the progress bar completely filled?

 

Yes, everything is correct the only difference between the Treasure Chest Ach you made and mine is that im dealing with :item not :var. When i get a chance ill put just the strings i added for you to look at.

 

 

EDITED: Here are the strings that i put in:

 

PROGRESS[2] = [6, 5, "Marbles", :item]

 

ACHIEVEMENTS[1] = ["Marble Collector","???",DESCRIPTION[3],DESCRIPTION[4],

PROGRESS[2],REWARDS[0],nil, 5]

 

 

The only thing i didnt put in here was the description and the reward. Both of which dont have anything that changes what should happen. The reward is 100g i just used the pre-made reward and my desc is just a single word to show up in the box.

 

Any help is wonderful thanks again.

 

Edited by Zerberious

Share this post


Link to post
Share on other sites

@Zerberious Argh! I found the problem. It's fixed in the newest version.

 

@Ashern The script has been updated to let you use different complete/incomplete icons for each achievement.

Share this post


Link to post
Share on other sites

Hey thanks for the fix! I bet it works great now.

 

But, once again Im your bugtester lol

 

So, when trying to view the Achievement menu, i get a crash with :

 

Script 'Window_Base' line 373:NoMethodError occurred

 

undefined method '%' for nil:NilClass

 

I hate that i keep bothering you about this script and i do appreciate your continued help.

 

 

EDITED:

 

After futzing with it for a while i figured out that i was to blame for this one. Under the ach i made i didnt put a nil for one of the optional things, everything works great now.

 

Thanks!!!

 

EDITED:

 

So, the way i fixed it was this. When making the actual ach make sure you only put nil for optional things (Rewards Desc 2 ect.) Make sure you fill in everything else. If you dont youll get my error. Any more questions ask away i might be able to help.

Edited by Zerberious

Share this post


Link to post
Share on other sites

Hey thanks for the fix! I bet it works great now.

 

But, once again Im your bugtester lol

 

So, when trying to view the Achievement menu, i get a crash with :

 

Script 'Window_Base' line 373:NoMethodError occurred

 

undefined method '%' for nil:NilClass

Untitled.png

 

I hate that i keep bothering you about this script and i do appreciate your continued help.

 

 

EDITED:

 

After futzing with it for a while i figured out that i was to blame for this one. Under the ach i made i didnt put a nil for one of the optional things, everything works great now.

 

Thanks!!!

 

Thank you Zerberious, this post actually helped me out before i went to post my picture of the problem. Just somewhat edit your post encase others get the same problem

Share this post


Link to post
Share on other sites

Okay I am using your Encyclopedia and Achievements plus I am using Yanfly's New Game +. I was wanting to know if the player finishes the game with a part of the Encyclopedia completed and a few Achievements and then starts a New Game using New Game + will the Achievements and the Encyclopedia stay the same or will they be reset. I have included Yanfly's New Game + scripts so that you can find out if it does or does not.

Yanfly's Save System

 


#==============================================================================

# ?\ Yanfly Engine Ace - Ace Save Engine v1.03
# -- Last Updated: 2012.07.22
# -- Level: Normal
# -- Requires: n/a

#==============================================================================

$imported = {} if $imported.nil?
$imported["YEA-SaveEngine"] = true

#==============================================================================
# ?\ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.07.22 - Fixed: Location Drawing.
# 2012.01.23 - Anti-crash method added for removed maps.
# 2011.12.26 - Compatibility Update: New Game+
# 2011.12.26 - Started Script and Finished.

#==============================================================================
# ?\ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script provides a new save interface for the player. Along with a new
# interface, the player can also load and delete saves straight from the menu
# itself. This will in turn make the save command from the Main Menu always
# available, but the save option within the new save menu will be enabled
# depending on whether or not it is allowed or disallowed. From the interface,
# the player is given more information regarding the save file including the
# the location the player saved at, the amount of gold available, and any
# variables that you want to show the player as well.

#==============================================================================
# ?\ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ?\ Materials/ef?T but above ?\ Main. Remember to save.

# For first time installers, be warned that loading this script the first time
# may not display all information in the status window for save files made
# before the installation of this script. To remedy this, just load up the save
# and save the file again.

#==============================================================================
# ?\ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.

#==============================================================================

module YEA
module SAVE

#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Slot Window Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# This section adjusts how the slot window appears on the left side of the
# screen. This also adjusts the maximum number of saves a player can make,
# the way the slot names appear, and the icons used.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
MAX_FILES = 24 # Maximum saves a player can make. Default: 16
SLOT_NAME = "File %s" # How the file slots will be named.

# These are the icons
SAVE_ICON = 2846 # Icon used to indicate a save is present.
EMPTY_ICON = 375 # Icon used to indicate an empty file.

#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Action Window Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# This section adjusts how the action window appears, the sound effect
# played when deleting files, and what appears in the help window above.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
ACTION_LOAD = "Load" # Text used for loading games.
ACTION_SAVE = "Save" # Text used for saving games.
ACTION_DELETE = "Delete" # Text used for deleting games.
DELETE_SOUND = RPG::SE.new("Collapse3", 100, 100) # Sound for deleting.

# These text settings adjust what displays in the help window.
SELECT_HELP = "Please select a file slot."
LOAD_HELP = "Loads the data from the saved game."
SAVE_HELP = "Saves the current progress in your game."
DELETE_HELP = "Deletes all data from this save file."

#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Status Window Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# This section adjusts how the status window appears in the middle of the
# screen (that displays the game's data) such as the total playtime, total
# times saved, total gold, the party's current location, and the variables
# to be displayed.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
EMPTY_TEXT = "No Save Data" # Text used when no save data is present.
PLAYTIME = "Playtime" # Text used for total playtime.
TOTAL_SAVE = "Total Saves: " # Text used to indicate total saves.
TOTAL_GOLD = "Total Gold: " # Text used to indicate total gold.
LOCATION = "Location: " # Text used to indicate current location.

# These variables will be shown in each of the two columns for those who
# would want to display more information than just what's shown. Input the
# variables into the arrays below to designate what data will be shown.
COLUMN1_VARIABLES = [1, 2, 3]
COLUMN2_VARIABLES = [4, 5, 6]

end # SAVE
end # YEA

#==============================================================================
# ?\ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================

#==============================================================================
# ?! Icon
#==============================================================================

module Icon

#--------------------------------------------------------------------------
# self.save_icon
#--------------------------------------------------------------------------
def self.save_icon; return YEA::SAVE::SAVE_ICON; end

#--------------------------------------------------------------------------
# self.empty_icon
#--------------------------------------------------------------------------
def self.empty_icon; return YEA::SAVE::EMPTY_ICON; end

end # Icon

#==============================================================================
# ?! Numeric
#==============================================================================

class Numeric

#--------------------------------------------------------------------------
# new method: group_digits
#--------------------------------------------------------------------------
unless $imported["YEA-CoreEngine"]
def group; return self.to_s; end
end # $imported["YEA-CoreEngine"]

end # Numeric

#==============================================================================
# ?! DataManager
#==============================================================================

module DataManager

#--------------------------------------------------------------------------
# overwrite method: savefile_max
#--------------------------------------------------------------------------
def self.savefile_max
return YEA::SAVE::MAX_FILES
end

#--------------------------------------------------------------------------
# overwrite method: self.make_save_header
#--------------------------------------------------------------------------
def self.make_save_header
header = {}
header[:characters] = $game_party.characters_for_savefile
header[:playtime_s] = $game_system.playtime_s
header[:system] = Marshal.load(Marshal.dump($game_system))
header[:timer] = Marshal.load(Marshal.dump($game_timer))
header[:message] = Marshal.load(Marshal.dump($game_message))
header[:switches] = Marshal.load(Marshal.dump($game_switches))
header[:variables] = Marshal.load(Marshal.dump($game_variables))
header[:self_switches] = Marshal.load(Marshal.dump($game_self_switches))
header[:actors] = Marshal.load(Marshal.dump($game_actors))
header[:party] = Marshal.load(Marshal.dump($game_party))
header[:troop] = Marshal.load(Marshal.dump($game_troop))
header[:map] = Marshal.load(Marshal.dump($game_map))
header[:player] = Marshal.load(Marshal.dump($game_player))
header
end

end # DataManager

#==============================================================================
# ?! Window_MenuCommand
#==============================================================================

class Window_MenuCommand < Window_Command

#--------------------------------------------------------------------------
# overwrite method: save_enabled
#--------------------------------------------------------------------------
def save_enabled; return true; end

end # Window_MenuCommand

#==============================================================================
# ?! Window_FileList
#==============================================================================

class Window_FileList < Window_Selectable

#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(dx, dy)
super(dx, dy, 128, Graphics.height - dy)
refresh
activate
select(SceneManager.scene.first_savefile_index)
end

#--------------------------------------------------------------------------
# item_max
#--------------------------------------------------------------------------
def item_max; return DataManager.savefile_max; end

#--------------------------------------------------------------------------
# current_item_enabled?
#--------------------------------------------------------------------------
def current_item_enabled?
header = DataManager.load_header(index)
return false if header.nil? && SceneManager.scene_is?(Scene_Load)
return true
end

#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
create_contents
draw_all_items
end

#--------------------------------------------------------------------------
# draw_item
#--------------------------------------------------------------------------
def draw_item(index)
header = DataManager.load_header(index)
enabled = !header.nil?
rect = item_rect(index)
rect.width -= 4
draw_icon(save_icon?(header), rect.x, rect.y, enabled)
change_color(normal_color, enabled)
text = sprintf(YEA::SAVE::SLOT_NAME, (index + 1).group)
draw_text(rect.x+24, rect.y, rect.width-24, line_height, text)
end

#--------------------------------------------------------------------------
# save_icon?
#--------------------------------------------------------------------------
def save_icon?(header)
return Icon.empty_icon if header.nil?
return Icon.save_icon
end

end # Window_FileList

#==============================================================================
# ?! Window_FileStatus
#==============================================================================

class Window_FileStatus < Window_Base

#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(dx, dy, file_window)
super(dx, dy, Graphics.width - dx, Graphics.height - dy)
@file_window = file_window
@current_index = @file_window.index
refresh
end

#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
super
return if @file_window.index < 0
return if @current_index == @file_window.index
@current_index = @file_window.index
refresh
end

#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
contents.clear
reset_font_settings
@header = DataManager.load_header(@file_window.index)
if @header.nil?
draw_empty
else
draw_save_contents
end
end

#--------------------------------------------------------------------------
# draw_empty
#--------------------------------------------------------------------------
def draw_empty
colour = Color.new(0, 0, 0, translucent_alpha/2)
rect = Rect.new(0, 0, contents.width, contents.height)
contents.fill_rect(rect, colour)
text = YEA::SAVE::EMPTY_TEXT
change_color(system_color)
draw_text(rect, text, 1)
end

#--------------------------------------------------------------------------
# draw_save_slot
#--------------------------------------------------------------------------
def draw_save_slot(dx, dy, dw)
reset_font_settings
change_color(system_color)
text = sprintf(YEA::SAVE::SLOT_NAME, "")
draw_text(dx, dy, dw, line_height, text)
cx = text_size(text).width
change_color(normal_color)
draw_text(dx+cx, dy, dw-cx, line_height, (@file_window.index+1).group)
end

#--------------------------------------------------------------------------
# draw_save_playtime
#--------------------------------------------------------------------------
def draw_save_playtime(dx, dy, dw)
return if @header[:playtime_s].nil?
reset_font_settings
change_color(system_color)
draw_text(dx, dy, dw, line_height, YEA::SAVE::PLAYTIME, 0)
change_color(normal_color)
draw_text(dx, dy, dw, line_height, @header[:playtime_s], 2)
end

#--------------------------------------------------------------------------
# draw_save_total_saves
#--------------------------------------------------------------------------
def draw_save_total_saves(dx, dy, dw)
return if @header[:system].nil?
reset_font_settings
change_color(system_color)
text = YEA::SAVE::TOTAL_SAVE
draw_text(dx, dy, dw, line_height, text)
cx = text_size(text).width
change_color(normal_color)
draw_text(dx+cx, dy, dw-cx, line_height, @header[:system].save_count.group)
end

#--------------------------------------------------------------------------
# draw_save_gold
#--------------------------------------------------------------------------
def draw_save_gold(dx, dy, dw)
return if @header[:party].nil?
reset_font_settings
change_color(system_color)
draw_text(dx, dy, dw, line_height, YEA::SAVE::TOTAL_GOLD)
text = Vocab::currency_unit
draw_text(dx, dy, dw, line_height, text, 2)
cx = text_size(text).width
change_color(normal_color)
text = @header[:party].gold.group
draw_text(dx, dy, dw-cx, line_height, text, 2)
end

#--------------------------------------------------------------------------
# draw_save_location
#--------------------------------------------------------------------------
def draw_save_location(dx, dy, dw)
return if @header[:map].nil?
reset_font_settings
change_color(system_color)
draw_text(dx, dy, dw, line_height, YEA::SAVE::LOCATION)
change_color(normal_color)
cx = text_size(YEA::SAVE::LOCATION).width
return if $data_mapinfos[@header[:map].map_id].nil?
text = @header[:map].display_name
text = $data_mapinfos[@header[:map].map_id].name if text == ""
draw_text(dx+cx, dy, dw-cx, line_height, text)
end

#--------------------------------------------------------------------------
# draw_save_characters
#--------------------------------------------------------------------------
def draw_save_characters(dx, dy)
return if @header[:party].nil?
reset_font_settings
make_font_smaller
dw = (contents.width - dx) / @header[:party].max_battle_members
dx += dw/2
for member in @header[:party].battle_members
next if member.nil?
member = @header[:actors][member.id]
change_color(normal_color)
draw_actor_graphic(member, dx, dy)
text = member.name
draw_text(dx-dw/2, dy, dw, line_height, text, 1)
text = member.level.group
draw_text(dx-dw/2, dy-line_height, dw-4, line_height, text, 2)
cx = text_size(text).width
change_color(system_color)
text = Vocab::level_a
draw_text(dx-dw/2, dy-line_height, dw-cx-4, line_height, text, 2)
dx += dw
end
end

#--------------------------------------------------------------------------
# draw_save_column1
#--------------------------------------------------------------------------
def draw_save_column1(dx, dy, dw)
data = YEA::SAVE::COLUMN1_VARIABLES
draw_column_data(data, dx, dy, dw)
end

#--------------------------------------------------------------------------
# draw_save_column2
#--------------------------------------------------------------------------
def draw_save_column2(dx, dy, dw)
data = YEA::SAVE::COLUMN2_VARIABLES
draw_column_data(data, dx, dy, dw)
end

#--------------------------------------------------------------------------
# draw_column_data
#--------------------------------------------------------------------------
def draw_column_data(data, dx, dy, dw)
return if @header[:variables].nil?
reset_font_settings
for variable_id in data
next if $data_system.variables[variable_id].nil?
change_color(system_color)
name = $data_system.variables[variable_id]
draw_text(dx, dy, dw, line_height, name, 0)
value = @header[:variables][variable_id].group
change_color(normal_color)
draw_text(dx, dy, dw, line_height, value, 2)
dy += line_height
end
end

#--------------------------------------------------------------------------
# draw_save_contents
#--------------------------------------------------------------------------
def draw_save_contents
draw_save_slot(4, 0, contents.width/2-8)
draw_save_playtime(contents.width/2+4, 0, contents.width/2-8)
draw_save_total_saves(4, line_height, contents.width/2-8)
draw_save_gold(contents.width/2+4, line_height, contents.width/2-8)
draw_save_location(4, line_height*2, contents.width-8)
draw_save_characters(0, line_height*5 + line_height/3)
draw_save_column1(16, line_height*7, contents.width/2-48)
draw_save_column2(contents.width/2+16, line_height*7, contents.width/2-48)
end

end # Window_FileStatus

#==============================================================================
# ?! Window_FileAction
#==============================================================================

class Window_FileAction < Window_HorzCommand

#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(dx, dy, file_window)
@file_window = file_window
super(dx, dy)
deactivate
unselect
end

#--------------------------------------------------------------------------
# window_width
#--------------------------------------------------------------------------
def window_width; Graphics.width - 128; end

#--------------------------------------------------------------------------
# col_max
#--------------------------------------------------------------------------
def col_max; return 3; end

#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
super
return if @file_window.index < 0
return if @current_index == @file_window.index
@current_index = @file_window.index
refresh
end

#--------------------------------------------------------------------------
# make_command_list
#--------------------------------------------------------------------------
def make_command_list
@header = DataManager.load_header(@file_window.index)
add_load_command
add_save_command
add_delete_command
end

#--------------------------------------------------------------------------
# add_load_command
#--------------------------------------------------------------------------
def add_load_command
add_command(YEA::SAVE::ACTION_LOAD, :load, load_enabled?)
end

#--------------------------------------------------------------------------
# load_enabled?
#--------------------------------------------------------------------------
def load_enabled?
return false if @header.nil?
return true
end

#--------------------------------------------------------------------------
# add_save_command
#--------------------------------------------------------------------------
def add_save_command
add_command(YEA::SAVE::ACTION_SAVE, :save, save_enabled?)
end

#--------------------------------------------------------------------------
# save_enabled?
#--------------------------------------------------------------------------
def save_enabled?
return false if @header.nil? && SceneManager.scene_is?(Scene_Load)
return false if SceneManager.scene_is?(Scene_Load)
return false if $game_system.save_disabled
return true
end

#--------------------------------------------------------------------------
# add_delete_command
#--------------------------------------------------------------------------
def add_delete_command
add_command(YEA::SAVE::ACTION_DELETE, :delete, delete_enabled?)
end

#--------------------------------------------------------------------------
# delete_enabled?
#--------------------------------------------------------------------------
def delete_enabled?
return false if @header.nil?
return true
end

#--------------------------------------------------------------------------
# update_help
#--------------------------------------------------------------------------
def update_help
case current_symbol
when :load; @help_window.set_text(YEA::SAVE::LOAD_HELP)
when :save; @help_window.set_text(YEA::SAVE::SAVE_HELP)
when :delete; @help_window.set_text(YEA::SAVE::DELETE_HELP)
end
end

end # Window_FileAction

#==============================================================================
# ?! Scene_File
#==============================================================================

class Scene_File < Scene_MenuBase

#--------------------------------------------------------------------------
# overwrite method: start
#--------------------------------------------------------------------------
def start
super
create_all_windows
end

#--------------------------------------------------------------------------
# overwrite method: terminate
#--------------------------------------------------------------------------
def terminate
super
end

#--------------------------------------------------------------------------
# overwrite method: update
#--------------------------------------------------------------------------
def update
super
end

#--------------------------------------------------------------------------
# new method: create_all_windows
#--------------------------------------------------------------------------
def create_all_windows
create_help_window
create_file_window
create_action_window
create_status_window
end

#--------------------------------------------------------------------------
# overwrite method: create_help_window
#--------------------------------------------------------------------------
def create_help_window
@help_window = Window_Help.new
@help_window.set_text(YEA::SAVE::SELECT_HELP)
end

#--------------------------------------------------------------------------
# new method: create_file_window
#--------------------------------------------------------------------------
def create_file_window
wy = @help_window.height
@file_window = Window_FileList.new(0, wy)
@file_window.set_handler(:ok, method(:on_file_ok))
@file_window.set_handler(:cancel, method(:return_scene))
end

#--------------------------------------------------------------------------
# new method: create_action_window
#--------------------------------------------------------------------------
def create_action_window
wx = @file_window.width
wy = @help_window.height
@action_window = Window_FileAction.new(wx, wy, @file_window)
@action_window.help_window = @help_window
@action_window.set_handler(:cancel, method(:on_action_cancel))
@action_window.set_handler(:load, method(:on_action_load))
@action_window.set_handler(:save, method(:on_action_save))
@action_window.set_handler(:delete, method(:on_action_delete))
end

#--------------------------------------------------------------------------
# new method: create_status_window
#--------------------------------------------------------------------------
def create_status_window
wx = @action_window.x
wy = @action_window.y + @action_window.height
@status_window = Window_FileStatus.new(wx, wy, @file_window)
end

#--------------------------------------------------------------------------
# new method: on_file_ok
#--------------------------------------------------------------------------
def on_file_ok
@action_window.activate
index = SceneManager.scene_is?(Scene_Load) ? 0 : 1
@action_window.select(index)
end

#--------------------------------------------------------------------------
# new method: on_action_cancel
#--------------------------------------------------------------------------
def on_action_cancel
@action_window.unselect
@file_window.activate
@help_window.set_text(YEA::SAVE::SELECT_HELP)
end

#--------------------------------------------------------------------------
# new method: on_action_load
#--------------------------------------------------------------------------
def on_action_load
if DataManager.load_game(@file_window.index)
on_load_success
else
Sound.play_buzzer
end
end

#--------------------------------------------------------------------------
# overwrite method: on_load_success
#--------------------------------------------------------------------------
def on_load_success
Sound.play_load
fadeout_all
$game_system.on_after_load
SceneManager.goto(Scene_Map)
end

#--------------------------------------------------------------------------
# new method: on_action_save
#--------------------------------------------------------------------------
def on_action_save
@action_window.activate
if DataManager.save_game(@file_window.index)
on_save_success
refresh_windows
else
Sound.play_buzzer
end
end

#--------------------------------------------------------------------------
# overwrite method: on_save_success
#--------------------------------------------------------------------------
def on_save_success; Sound.play_save; end

#--------------------------------------------------------------------------
# new method: on_action_delete
#--------------------------------------------------------------------------
def on_action_delete
@action_window.activate
DataManager.delete_save_file(@file_window.index)
on_delete_success
refresh_windows
end

#--------------------------------------------------------------------------
# new method: on_delete_success
#--------------------------------------------------------------------------
def on_delete_success
YEA::SAVE::DELETE_SOUND.play
end

#--------------------------------------------------------------------------
# new method: refresh_windows
#--------------------------------------------------------------------------
def refresh_windows
@file_window.refresh
@action_window.refresh
@status_window.refresh
end

end # Scene_File

#==============================================================================
# ?! Scene_Save
#==============================================================================

class Scene_Save < Scene_File

#--------------------------------------------------------------------------
# overwrite method: on_savefile_ok
#--------------------------------------------------------------------------
def on_savefile_ok; super; end

#--------------------------------------------------------------------------
# overwrite method: on_save_success
#--------------------------------------------------------------------------
def on_save_success; super; end

end # help_window_text

#==============================================================================
# ?! Scene_Load
#==============================================================================

class Scene_Load < Scene_File

#--------------------------------------------------------------------------
# overwrite method: on_savefile_ok
#--------------------------------------------------------------------------
def on_savefile_ok; super; end

#--------------------------------------------------------------------------
# overwrite method: on_load_success
#--------------------------------------------------------------------------
def on_load_success; super; end

end # Scene_Load

#==============================================================================

# ?\ End of File

#==============================================================================

 

 


Yanfly's New Game +

 

 

#==============================================================================
# â–¼ Yanfly Engine Ace - Save Engine Add-On: New Game+ v1.00
# -- Last Updated: 2011.12.26
# -- Level: Normal
# -- Requires: YEA - Ace Save Engine v1.01+
#==============================================================================
 
$imported = {} if $imported.nil?
$imported["YEA-NewGame+"] = true
 
#==============================================================================
# â–¼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2011.12.26 - Started Script and Finished.
#==============================================================================
# â–¼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# New Game+ is a great way to provide replay value for your game. It lets the
# player re-experience the game in a different way with either carried over
# items, to carried over party members, to carried over skills, switches, and
# variables even. There exists many options to change how New Game+ will work
# for your game.
#==============================================================================
# â–¼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below â–¼ Materials/ç´ æ but above â–¼ Main. Remember to save.
# -----------------------------------------------------------------------------
# Item Notetags - These notetags go in the items notebox in the database.
# -----------------------------------------------------------------------------
# <no carry over>
# This will cause this specific item to not carry over in New Game+ if the item
# can be carried over. This does not affect any items that actors may have
# equipped.
# -----------------------------------------------------------------------------
# Weapon Notetags - These notetags go in the weapons notebox in the database.
# -----------------------------------------------------------------------------
# <no carry over>
# This will cause this specific item to not carry over in New Game+ if the item
# can be carried over. This does not affect any items that actors may have
# equipped.
# -----------------------------------------------------------------------------
# Armour Notetags - These notetags go in the armours notebox in the database.
# -----------------------------------------------------------------------------
# <no carry over>
# This will cause this specific item to not carry over in New Game+ if the item
# can be carried over. This does not affect any items that actors may have
# equipped.
#==============================================================================
# â–¼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
# This script requires Yanfly Engine Ace - Ace Save Engine v1.01+ and the
# script must be placed under Ace Save Engine in the script listing.
#==============================================================================
 
module YEA
  module NEW_GAME_PLUS
    
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - General Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # Description
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    NGP_SWITCH = 1000           # If Switch ON, the game file has NG+ flag.
    NGP_TEXT   = "New Game+"   # Text used to show New Game+.
    
    # This is the help window text used for New Game+ when the New Game+
    # option is highlighted.
    NGP_HELP   = "Start a new game using this file's settings."
    
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Carry Over Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # These settings adjust what carries over and what doesn't. These settings
    # are very specific so adjust them carefully.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # This array contains all of the switches that you want carried over to
    # be maintained. Any switches that aren't here will be set false.
    CARRY_OVER_SWITCHES = [1, 2, 3]
    
    # This array contains all of the variables that you want carried over to
    # be maintained. Any variables that aren't here will be set to 0.
    CARRY_OVER_VARIABLES = [1..6]
    
    # If this is set to false, then actors will be completely reset back to
    # their original starting states. If it's set to true, then actors will
    # be kept exactly as they are.
    CARRY_OVER_ACTORS = true
    
    # These settings are only used if actors will be carried over. With this,
    # you can limit what specifics will be carried over for actors from levels
    # to equips to skills.
    CARRY_OVER_LEVELS = true
    CARRY_OVER_EQUIPS = true
    CARRY_OVER_SKILLS = true
    
    # If this is set to false, then the party members will revert back to the
    # original starting party members. If it's true, then the party setup will
    # remain exactly the same.
    CARRY_OVER_PARTY_MEMBERS = true
    
    # If any of these are set to false, then no items, weapons, or armours will
    # be carried over. If it's set to true, then the respective items will be
    # carried over to the newer game.
    CARRY_OVER_GOLD    = true
    CARRY_OVER_ITEMS   = true
    CARRY_OVER_WEAPONS = true
    CARRY_OVER_ARMOURS = true
    
  end # NEW_GAME_PLUS
end # YEA
 
#==============================================================================
# â–¼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================
 
if $imported["YEA-SaveEngine"]
 
module YEA
  module NEW_GAME_PLUS
    module_function
    #--------------------------------------------------------------------------
    # convert_integer_array
    #--------------------------------------------------------------------------
    def convert_integer_array(array)
      result = []
      array.each { |i|
        case i
        when Range; result |= i.to_a
        when Integer; result |=
        end }
      return result
    end
    #--------------------------------------------------------------------------
    # converted_contants
    #--------------------------------------------------------------------------
    CARRY_OVER_SWITCHES = convert_integer_array(CARRY_OVER_SWITCHES)
    CARRY_OVER_VARIABLES = convert_integer_array(CARRY_OVER_VARIABLES)
  end # NEW_GAME_PLUS
  module REGEXP
  module BASEITEM
    
    NO_CARRY_OVER = /<(?:NO_CARRY_OVER|no carry over)>/i
    
  end # BASEITEM
  end # REGEXP
end # YEA
 
#==============================================================================
# â–  DataManager
#==============================================================================
 
module DataManager
  
  #--------------------------------------------------------------------------
  # alias method: load_database
  #--------------------------------------------------------------------------
  class <<self; alias load_database_ngp load_database; end
  def self.load_database
    load_database_ngp
    load_notetags_ngp
  end
  
  #--------------------------------------------------------------------------
  # new method: load_notetags_ngp
  #--------------------------------------------------------------------------
  def self.load_notetags_ngp
    groups = [$data_items, $data_weapons, $data_armors]
    for group in groups
      for obj in group
        next if obj.nil?
        obj.load_notetags_ngp
      end
    end
  end
  
end # DataManager
 
#==============================================================================
# â–  RPG::BaseItem
#==============================================================================
 
class RPG::BaseItem
  
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :no_carry_over
  
  #--------------------------------------------------------------------------
  # common cache: load_notetags_ngp
  #--------------------------------------------------------------------------
  def load_notetags_ngp
    @no_carry_over = false
    #---
    self.note.split(/[\r\n]+/).each { |line|
      case line
      #---
      when YEA::REGEXP::BASEITEM::NO_CARRY_OVER
        @no_carry_over = true
      end
    } # self.note.split
    #---
  end
  
end # RPG::BaseItem
 
#==============================================================================
# â–  Switch
#==============================================================================
 
module Switch
  
  #--------------------------------------------------------------------------
  # self.new_game_plus
  #--------------------------------------------------------------------------
  def self.new_game_plus
    return $game_switches[YEA::NEW_GAME_PLUS::NGP_SWITCH]
  end
  
end # Switch
 
#==============================================================================
# â–  DataManager
#==============================================================================
 
module DataManager
  
  #--------------------------------------------------------------------------
  # new method: setup_new_game_plus
  #--------------------------------------------------------------------------
  def self.setup_new_game_plus(index)
    create_new_game_plus_objects(index)
    $game_map.setup($data_system.start_map_id)
    $game_player.moveto($data_system.start_x, $data_system.start_y)
    $game_player.refresh
    Graphics.frame_count = 0
  end
  
  #--------------------------------------------------------------------------
  # new method: create_new_game_plus_objects
  #--------------------------------------------------------------------------
  def self.create_new_game_plus_objects(index)
    load_game_without_rescue(index)
    ngp_reset_switches
    ngp_reset_variables
    ngp_reset_self_switches
    ngp_reset_actors
    ngp_reset_party
  end
  
  #--------------------------------------------------------------------------
  # new method: ngp_reset_switches
  #--------------------------------------------------------------------------
  def self.ngp_reset_switches
    for i in 0...$data_system.switches.size
      next if i <= 0
      next if YEA::NEW_GAME_PLUS::CARRY_OVER_SWITCHES.include?(i)
      $game_switches = false
    end
  end
  
  #--------------------------------------------------------------------------
  # new method: ngp_reset_variables
  #--------------------------------------------------------------------------
  def self.ngp_reset_variables
    for i in 0...$data_system.variables.size
      next if i <= 0
      next if YEA::NEW_GAME_PLUS::CARRY_OVER_VARIABLES.include?(i)
      $game_variables = 0
    end
  end
  
  #--------------------------------------------------------------------------
  # new method: ngp_reset_self_switches
  #--------------------------------------------------------------------------
  def self.ngp_reset_self_switches
    $game_self_switches = Game_SelfSwitches.new
  end
  
  #--------------------------------------------------------------------------
  # new method: ngp_reset_actors
  #--------------------------------------------------------------------------
  def self.ngp_reset_actors
    unless YEA::NEW_GAME_PLUS::CARRY_OVER_ACTORS
      $game_actors = Game_Actors.new
    else
      #---
      unless YEA::NEW_GAME_PLUS::CARRY_OVER_LEVELS
        for i in 0...$data_actors.size
          actor = $game_actors
          next if actor.nil?
          actor.new_game_plus_levels
        end
      end
      #---
      unless YEA::NEW_GAME_PLUS::CARRY_OVER_EQUIPS
        for i in 0...$data_actors.size
          actor = $game_actors
          next if actor.nil?
          actor.new_game_plus_equips
        end
      end
      #---
      unless YEA::NEW_GAME_PLUS::CARRY_OVER_SKILLS
        for i in 0...$data_actors.size
          actor = $game_actors
          next if actor.nil?
          actor.new_game_plus_skills
        end
      end
      #---
    end
  end
  
  #--------------------------------------------------------------------------
  # new method: ngp_reset_party
  #--------------------------------------------------------------------------
  def self.ngp_reset_party
    gold = 0
    items = {}
    members = []
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
      for member in $game_party.members
        members.push(member.id)
      end
    end
    #---
    gold = $game_party.gold if YEA::NEW_GAME_PLUS::CARRY_OVER_GOLD
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_ITEMS
      for item in $data_items
        next if item.nil?
        next if item.no_carry_over
        items[item] = $game_party.item_number(item)
      end
    end
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_WEAPONS
      for item in $data_weapons
        next if item.nil?
        next if item.no_carry_over
        items[item] = $game_party.item_number(item)
      end
    end
    #---
    if YEA::NEW_GAME_PLUS::CARRY_OVER_ARMOURS
      for item in $data_armors
        next if item.nil?
        next if item.no_carry_over
        items[item] = $game_party.item_number(item)
      end
    end
    #---
    $game_party = Game_Party.new
    unless YEA::NEW_GAME_PLUS::CARRY_OVER_PARTY_MEMBERS
      $game_party.setup_starting_members
    end
    #---
    for member_id in members
      $game_party.add_actor(member_id)
    end
    $game_party.gain_gold(gold)
    for key in items
      item = key[0]
      next if item.nil?
      $game_party.gain_item(item, key[1])
    end
  end
  
end # DataManager
 
#==============================================================================
# â–  Game_Actor
#==============================================================================
 
class Game_Actor < Game_Battler
  
  #--------------------------------------------------------------------------
  # new method: new_game_plus_levels
  #--------------------------------------------------------------------------
  def new_game_plus_levels
    @class_id = actor.class_id
    @level = actor.initial_level
    @exp = {}
    if $imported["YEA-ClassSystem"]
      init_unlocked_classes
      init_subclass
    end
    clear_param_plus
    init_exp
    refresh
  end
  
  #--------------------------------------------------------------------------
  # new method: new_game_plus_equips
  #--------------------------------------------------------------------------
  def new_game_plus_equips
    init_equips(actor.equips)
  end
  
  #--------------------------------------------------------------------------
  # new method: new_game_plus_skills
  #--------------------------------------------------------------------------
  def new_game_plus_skills
    init_skills
  end
  
end # Game_Actor
 
#==============================================================================
# â–  Window_FileAction
#==============================================================================
 
class Window_FileAction < Window_HorzCommand
  
  #--------------------------------------------------------------------------
  # alias method: add_load_command
  #--------------------------------------------------------------------------
  alias add_load_command_ngp add_load_command
  def add_load_command
    if new_game_plus?
      add_command(YEA::NEW_GAME_PLUS::NGP_TEXT, :new_game_plus)
    else
      add_load_command_ngp
    end
  end
  
  #--------------------------------------------------------------------------
  # new method: new_game_plus?
  #--------------------------------------------------------------------------
  def new_game_plus?
    return false if @header.nil?
    return false if @header[:switches].nil?
    return @header[:switches][YEA::NEW_GAME_PLUS::NGP_SWITCH]
  end
  
  #--------------------------------------------------------------------------
  # alias method: update_help
  #--------------------------------------------------------------------------
  alias update_help_ngp update_help
  def update_help
    case current_symbol
    when :new_game_plus; @help_window.set_text(YEA::NEW_GAME_PLUS::NGP_HELP)
    else; update_help_ngp
    end
  end
  
end # Window_FileAction
 
#==============================================================================
# â–  Scene_File
#==============================================================================
 
class Scene_File < Scene_MenuBase
  
  #--------------------------------------------------------------------------
  # alias method: create_action_window
  #--------------------------------------------------------------------------
  alias create_action_window_ngp create_action_window
  def create_action_window
    create_action_window_ngp
    @action_window.set_handler(:new_game_plus, method(:on_action_ngp))
  end
  
  #--------------------------------------------------------------------------
  # new method: on_action_ngp
  #--------------------------------------------------------------------------
  def on_action_ngp
    Sound.play_load
    DataManager.setup_new_game_plus(@file_window.index)
    fadeout_all
    $game_system.on_after_load
    SceneManager.goto(Scene_Map)
  end
  
end # Scene_File
 
end # $imported["YEA-SaveEngine"]
 
#==============================================================================
# â–¼ End of File
#==============================================================================

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
Top ArrowTop Arrow Highlighted