PinoyXBalot 1 Posted November 1, 2012 Thus your script will show up in custom menu or is it compatible with Yanflys Ace_Menu_Engine? Share this post Link to post Share on other sites
PinoyXBalot 1 Posted November 1, 2012 (edited) Im sorry wrong post..... Really sorry.... Sorrrrrrrrryyy... Im in day dream nevermind thi post.... Edited November 1, 2012 by markme Share this post Link to post Share on other sites
Bluemith 0 Posted November 14, 2012 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
pinka 7 Posted November 14, 2012 Is it possible to unlock an achievement by turning a switch on? Share this post Link to post Share on other sites
Caveras 40 Posted November 14, 2012 (edited) 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 November 14, 2012 by Caveras Share this post Link to post Share on other sites
PinoyXBalot 1 Posted November 18, 2012 sir can you make it compatible with yanfly or modern algebras main menu? if it`s possible only? Share this post Link to post Share on other sites
ekomega 20 Posted November 18, 2012 (edited) 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 November 18, 2012 by ekomega Share this post Link to post Share on other sites
casper667 131 Posted November 18, 2012 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
Pharonix 0 Posted November 20, 2012 (edited) 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 November 20, 2012 by Ethan Heary Share this post Link to post Share on other sites
Zerberious 0 Posted November 24, 2012 (edited) 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 November 24, 2012 by Zerberious Share this post Link to post Share on other sites
Zerberious 0 Posted November 25, 2012 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
casper667 131 Posted November 25, 2012 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
Coolie 148 Posted November 25, 2012 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
casper667 131 Posted November 25, 2012 (edited) Shouldn't take too long to do, I guess. Okay, gamerscore system is in the script. it's pretty basic though. Edited November 25, 2012 by casper667 Share this post Link to post Share on other sites
Ashern 8 Posted November 25, 2012 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? 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
Zerberious 0 Posted November 25, 2012 (edited) 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 November 25, 2012 by Zerberious Share this post Link to post Share on other sites
casper667 131 Posted November 26, 2012 @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
Ashern 8 Posted November 26, 2012 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 0 Posted November 26, 2012 (edited) @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 November 26, 2012 by Zerberious Share this post Link to post Share on other sites
casper667 131 Posted November 27, 2012 @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
Ashern 8 Posted November 27, 2012 Thank you very much, casper! Share this post Link to post Share on other sites
Coolie 148 Posted November 27, 2012 Good work dude, I'll update my copy soon. =) Share this post Link to post Share on other sites
Zerberious 0 Posted November 27, 2012 (edited) 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 December 13, 2012 by Zerberious Share this post Link to post Share on other sites
Virus 24 Posted December 13, 2012 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!!! 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
+ DarthVollis 59 Posted December 21, 2012 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 YEAmodule 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: 16SLOT_NAME = "File %s" # How the file slots will be named.# These are the iconsSAVE_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 # SAVEend # 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; endend # Icon#==============================================================================# ?! Numeric#==============================================================================class Numeric#--------------------------------------------------------------------------# new method: group_digits#--------------------------------------------------------------------------unless $imported["YEA-CoreEngine"]def group; return self.to_s; endend # $imported["YEA-CoreEngine"]end # Numeric#==============================================================================# ?! DataManager#==============================================================================module DataManager#--------------------------------------------------------------------------# overwrite method: savefile_max#--------------------------------------------------------------------------def self.savefile_maxreturn YEA::SAVE::MAX_FILESend#--------------------------------------------------------------------------# overwrite method: self.make_save_header#--------------------------------------------------------------------------def self.make_save_headerheader = {}header[:characters] = $game_party.characters_for_savefileheader[:playtime_s] = $game_system.playtime_sheader[: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))headerendend # DataManager#==============================================================================# ?! Window_MenuCommand#==============================================================================class Window_MenuCommand < Window_Command#--------------------------------------------------------------------------# overwrite method: save_enabled#--------------------------------------------------------------------------def save_enabled; return true; endend # Window_MenuCommand#==============================================================================# ?! Window_FileList#==============================================================================class Window_FileList < Window_Selectable#--------------------------------------------------------------------------# initialize#--------------------------------------------------------------------------def initialize(dx, dy)super(dx, dy, 128, Graphics.height - dy)refreshactivateselect(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 trueend#--------------------------------------------------------------------------# refresh#--------------------------------------------------------------------------def refreshcreate_contentsdraw_all_itemsend#--------------------------------------------------------------------------# draw_item#--------------------------------------------------------------------------def draw_item(index)header = DataManager.load_header(index)enabled = !header.nil?rect = item_rect(index)rect.width -= 4draw_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_iconendend # 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.indexrefreshend#--------------------------------------------------------------------------# update#--------------------------------------------------------------------------def updatesuperreturn if @file_window.index < 0return if @current_index == @file_window.index@current_index = @file_window.indexrefreshend#--------------------------------------------------------------------------# refresh#--------------------------------------------------------------------------def refreshcontents.clearreset_font_settings@header = DataManager.load_header(@file_window.index)if @header.nil?draw_emptyelsedraw_save_contentsendend#--------------------------------------------------------------------------# draw_empty#--------------------------------------------------------------------------def draw_emptycolour = 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_TEXTchange_color(system_color)draw_text(rect, text, 1)end#--------------------------------------------------------------------------# draw_save_slot#--------------------------------------------------------------------------def draw_save_slot(dx, dy, dw)reset_font_settingschange_color(system_color)text = sprintf(YEA::SAVE::SLOT_NAME, "")draw_text(dx, dy, dw, line_height, text)cx = text_size(text).widthchange_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_settingschange_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_settingschange_color(system_color)text = YEA::SAVE::TOTAL_SAVEdraw_text(dx, dy, dw, line_height, text)cx = text_size(text).widthchange_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_settingschange_color(system_color)draw_text(dx, dy, dw, line_height, YEA::SAVE::TOTAL_GOLD)text = Vocab::currency_unitdraw_text(dx, dy, dw, line_height, text, 2)cx = text_size(text).widthchange_color(normal_color)text = @header[:party].gold.groupdraw_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_settingschange_color(system_color)draw_text(dx, dy, dw, line_height, YEA::SAVE::LOCATION)change_color(normal_color)cx = text_size(YEA::SAVE::LOCATION).widthreturn if $data_mapinfos[@header[:map].map_id].nil?text = @header[:map].display_nametext = $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_settingsmake_font_smallerdw = (contents.width - dx) / @header[:party].max_battle_membersdx += dw/2for member in @header[:party].battle_membersnext if member.nil?member = @header[:actors][member.id]change_color(normal_color)draw_actor_graphic(member, dx, dy)text = member.namedraw_text(dx-dw/2, dy, dw, line_height, text, 1)text = member.level.groupdraw_text(dx-dw/2, dy-line_height, dw-4, line_height, text, 2)cx = text_size(text).widthchange_color(system_color)text = Vocab::level_adraw_text(dx-dw/2, dy-line_height, dw-cx-4, line_height, text, 2)dx += dwendend#--------------------------------------------------------------------------# draw_save_column1#--------------------------------------------------------------------------def draw_save_column1(dx, dy, dw)data = YEA::SAVE::COLUMN1_VARIABLESdraw_column_data(data, dx, dy, dw)end#--------------------------------------------------------------------------# draw_save_column2#--------------------------------------------------------------------------def draw_save_column2(dx, dy, dw)data = YEA::SAVE::COLUMN2_VARIABLESdraw_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_settingsfor variable_id in datanext 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].groupchange_color(normal_color)draw_text(dx, dy, dw, line_height, value, 2)dy += line_heightendend#--------------------------------------------------------------------------# draw_save_contents#--------------------------------------------------------------------------def draw_save_contentsdraw_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)endend # Window_FileStatus#==============================================================================# ?! Window_FileAction#==============================================================================class Window_FileAction < Window_HorzCommand#--------------------------------------------------------------------------# initialize#--------------------------------------------------------------------------def initialize(dx, dy, file_window)@file_window = file_windowsuper(dx, dy)deactivateunselectend#--------------------------------------------------------------------------# window_width#--------------------------------------------------------------------------def window_width; Graphics.width - 128; end#--------------------------------------------------------------------------# col_max#--------------------------------------------------------------------------def col_max; return 3; end#--------------------------------------------------------------------------# update#--------------------------------------------------------------------------def updatesuperreturn if @file_window.index < 0return if @current_index == @file_window.index@current_index = @file_window.indexrefreshend#--------------------------------------------------------------------------# make_command_list#--------------------------------------------------------------------------def make_command_list@header = DataManager.load_header(@file_window.index)add_load_commandadd_save_commandadd_delete_commandend#--------------------------------------------------------------------------# add_load_command#--------------------------------------------------------------------------def add_load_commandadd_command(YEA::SAVE::ACTION_LOAD, :load, load_enabled?)end#--------------------------------------------------------------------------# load_enabled?#--------------------------------------------------------------------------def load_enabled?return false if @header.nil?return trueend#--------------------------------------------------------------------------# add_save_command#--------------------------------------------------------------------------def add_save_commandadd_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_disabledreturn trueend#--------------------------------------------------------------------------# add_delete_command#--------------------------------------------------------------------------def add_delete_commandadd_command(YEA::SAVE::ACTION_DELETE, :delete, delete_enabled?)end#--------------------------------------------------------------------------# delete_enabled?#--------------------------------------------------------------------------def delete_enabled?return false if @header.nil?return trueend#--------------------------------------------------------------------------# update_help#--------------------------------------------------------------------------def update_helpcase current_symbolwhen :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)endendend # Window_FileAction#==============================================================================# ?! Scene_File#==============================================================================class Scene_File < Scene_MenuBase#--------------------------------------------------------------------------# overwrite method: start#--------------------------------------------------------------------------def startsupercreate_all_windowsend#--------------------------------------------------------------------------# overwrite method: terminate#--------------------------------------------------------------------------def terminatesuperend#--------------------------------------------------------------------------# overwrite method: update#--------------------------------------------------------------------------def updatesuperend#--------------------------------------------------------------------------# new method: create_all_windows#--------------------------------------------------------------------------def create_all_windowscreate_help_windowcreate_file_windowcreate_action_windowcreate_status_windowend#--------------------------------------------------------------------------# 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_windowwy = @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_windowwx = @file_window.widthwy = @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_windowwx = @action_window.xwy = @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.activateindex = 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_loadif DataManager.load_game(@file_window.index)on_load_successelseSound.play_buzzerendend#--------------------------------------------------------------------------# overwrite method: on_load_success#--------------------------------------------------------------------------def on_load_successSound.play_loadfadeout_all$game_system.on_after_loadSceneManager.goto(Scene_Map)end#--------------------------------------------------------------------------# new method: on_action_save#--------------------------------------------------------------------------def on_action_save@action_window.activateif DataManager.save_game(@file_window.index)on_save_successrefresh_windowselseSound.play_buzzerendend#--------------------------------------------------------------------------# overwrite method: on_save_success#--------------------------------------------------------------------------def on_save_success; Sound.play_save; end#--------------------------------------------------------------------------# new method: on_action_delete#--------------------------------------------------------------------------def on_action_delete@action_window.activateDataManager.delete_save_file(@file_window.index)on_delete_successrefresh_windowsend#--------------------------------------------------------------------------# new method: on_delete_success#--------------------------------------------------------------------------def on_delete_successYEA::SAVE::DELETE_SOUND.playend#--------------------------------------------------------------------------# new method: refresh_windows#--------------------------------------------------------------------------def refresh_windows@file_window.refresh@action_window.refresh@status_window.refreshendend # 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; endend # 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; endend # 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