Войти на сайт
×
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.
ТЕМА: Помогите в управлении скриптом!(ACE)
Помогите в управлении скриптом!(ACE) 12 года 8 мес. назад #54117
|
Помогите пожалуйста разобраться со скриптом!Я нашёл на одном сайте вот этот скрипт
=begin
CSCA Achievements
version: 1.0
Created by: Casper667 from http://www.caspergaming.com/
Compatibility:
Compatible only with VXAce.
IMPORTANT: ALL CSCA Scripts should be compatible with each other unless
otherwise noted.
INTRODUCTION:
This script creates an achievement system in your game.
FEATURES:
-Achievements!
-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 & TERMS
Free to use in noncommercial games if credit is given to:
casper667 from http://www.caspergaming.com/
If using in commercial game, please contact me.
www.rpgmakervxace.net/user/193-casper667/
or
www.caspergaming.com
=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] = ["Откройте 10 сундуков."]
DESCRIPTION[1] = ["Вы открыли 10 сундуков","Chests!"]
DESCRIPTION[2] = ["Получить меч."]
#=======================================================================#
# 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
# * Requires CSCA Extra Stats(1.1+) Get it here:
# http://www.rpgmakervxace.net/topic/2030-csca-extra-stats/
PROGRESS[0] = [5, 10, "Открыто сундуков", :var] # 10 max, tracks variable ID5.
PROGRESS[1] = [0, 100, "Всего золота", :gold] # 100 max, tracks party's gold.
#=======================================================================#
# 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] = [100, 0, :gold] # 100 gold.
REWARDS[1] = [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)]
# If you are not using an optional feature, write: nil
ACHIEVEMENTS[0] = ["Охотник за сокровищами","???",DESCRIPTION[0],DESCRIPTION[1],
PROGRESS[0],REWARDS[0],nil]
ACHIEVEMENTS[1] = ["Охотник за сокровищами II",nil,DESCRIPTION[2],nil,nil,nil,"DarkSpace1"]
#=======================================================================#
# Misc. Setup #
#=======================================================================#
SCENE_NAME = "Достижения" # Text shown in the head window.
TOTAL = "Достижений открыто: " # Text shown before total numbers.
PROGRESS = "Прогресс:" # Text above progress bar
REWARD = "Награда: " # Text shown before the reward amount/name.
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 = :bottom # 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
#==============================================================================
# ** DataManager
#------------------------------------------------------------------------------
# Overwrites: make_save_contents
# Aliases: create_game_objects, extract_save_contents
#==============================================================================
module DataManager
#--------------------------------------------------------------------------#
# alias method. #
#--------------------------------------------------------------------------#
class <<self; alias csca_ach_create_game_objects create_game_objects; end
def self.create_game_objects
csca_ach_create_game_objects
$game_achievements = Game_Achievements.new
end
#--------------------------------------------------------------------------#
# overwrite method. #
#--------------------------------------------------------------------------#
def self.make_save_contents
contents = {}
contents[:system] = $game_system
contents[:timer] = $game_timer
contents[:message] = $game_message
contents[:switches] = $game_switches
contents[:variables] = $game_variables
contents[:self_switches] = $game_self_switches
contents[:actors] = $game_actors
contents[:party] = $game_party
contents[:troop] = $game_troop
contents[:map] = $game_map
contents[:player] = $game_player
contents[:achievements] = $game_achievements
contents
end
#--------------------------------------------------------------------------#
# alias method #
#--------------------------------------------------------------------------#
class <<self; alias csca_ach_extract_save_contents extract_save_contents; end
def self.extract_save_contents(contents)
csca_ach_extract_save_contents(contents)
$game_achievements = contents[:achievements]
end
end
#==============================================================================
# ** Game_Achievements
#------------------------------------------------------------------------------
# This class handles achievements.
# The instance of this class is referenced by $game_achievements
#==============================================================================
class Game_Achievements
#--------------------------------------------------------------------------#
# Object Initialization #
#--------------------------------------------------------------------------#
def initialize
@data = []
end
#--------------------------------------------------------------------------#
# Get Achievement #
#--------------------------------------------------------------------------#
def [](achievement_id)
@data[achievement_id] || false
end
#--------------------------------------------------------------------------#
# Set Achievement #
#--------------------------------------------------------------------------#
def []=(achievement_id, value)
@data[achievement_id] = value
on_change(achievement_id)
end
#--------------------------------------------------------------------------#
# Processing When Setting Achievements #
#--------------------------------------------------------------------------#
def on_change(achievement_id)
$game_party.csca_achievement_reward(CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement_id][5]) unless
CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement_id][5].nil?
Audio.se_play("Audio/SE/" + CSCA::ACHIEVEMENTS::SOUND, 80, 100) unless
CSCA::ACHIEVEMENTS::SOUND.nil?
$game_map.achievement_id = achievement_id
$game_map.achievement_earned = true
end
end
#==============================================================================
# ** CSCA_Scene_Achievements
#------------------------------------------------------------------------------
# This class performs the achievement screen processing.
#==============================================================================
class CSCA_Scene_Achievements < Scene_MenuBase
#--------------------------------------------------------------------------#
# Start Processing #
#--------------------------------------------------------------------------#
def start
super
create_head_window
create_achievement_window
create_selection_window
create_totals_window
end
#--------------------------------------------------------------------------#
# Create Background #
#--------------------------------------------------------------------------#
def create_background
super
@background_sprite.tone.set(0, 0, 0, 128)
end
#--------------------------------------------------------------------------#
# Create Header Window #
#--------------------------------------------------------------------------#
def create_head_window
@head_window = CSCA_Window_AchievementsMainHead.new(0, 0)
@head_window.viewport = @viewport
end
#--------------------------------------------------------------------------#
# Create Achievement Selection Window #
#--------------------------------------------------------------------------#
def create_selection_window
@command_window = CSCA_Window_AchievementSelect.new(0,@head_window.height,
Graphics.width/2,Graphics.height-@head_window.height-48)
@command_window.viewport = @viewport
@command_window.help_window = @achievement_window
@command_window.set_handler(:cancel, method(:return_scene))
@command_window.activate
end
#--------------------------------------------------------------------------#
# Create Achievement Window #
#--------------------------------------------------------------------------#
def create_achievement_window
@achievement_window = CSCA_Window_AchievementDisplay.new(Graphics.width/2,
@head_window.height,Graphics.width/2,Graphics.height-@head_window.height-48)
@achievement_window.viewport = @viewport
end
#--------------------------------------------------------------------------#
# Create Achievement Totals Window #
#--------------------------------------------------------------------------#
def create_totals_window
@totals_window = CSCA_Window_AchievementTotals.new(0,@head_window.height+
@achievement_window.height,Graphics.width,Graphics.height-@head_window.height-
@achievement_window.height)
@totals_window.viewport = @viewport
end
end
#==============================================================================
# ** CSCA_Window_AchievementsMainHead
#------------------------------------------------------------------------------
# This window displays the achievement header window.
#==============================================================================
class CSCA_Window_AchievementsMainHead < Window_Base
#--------------------------------------------------------------------------#
# Object Initialization #
#--------------------------------------------------------------------------#
def initialize(x, y)
super(x, y, Graphics.width, line_height * 2)
refresh
end
#--------------------------------------------------------------------------#
# Refresh #
#--------------------------------------------------------------------------#
def refresh
contents.clear
draw_text(0, 0, contents.width, line_height, CSCA::ACHIEVEMENTS::SCENE_NAME, 1)
end
end
#==============================================================================
# ** CSCA_Window_AchievementSelect
#------------------------------------------------------------------------------
# This window displays the achievement names, numbers, and icons.
#==============================================================================
class CSCA_Window_AchievementSelect < Window_Selectable
#--------------------------------------------------------------------------#
# Object Initialization #
#--------------------------------------------------------------------------#
def initialize(x,y,width,height)
super
@data = []
refresh
select(0)
end
#--------------------------------------------------------------------------#
# Get Item Max #
#--------------------------------------------------------------------------#
def item_max
@data ? @data.size : 1
end
#--------------------------------------------------------------------------#
# Get Item #
#--------------------------------------------------------------------------#
def item
@data && index >= 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
unlocked = 0
for i in 0...CSCA::ACHIEVEMENTS::ACHIEVEMENTS.size
unlocked += 1 if $game_achievements[i]
end
string = CSCA::ACHIEVEMENTS::TOTAL+unlocked.to_s+"/"+total_achieves.to_s
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[i].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] if $imported["CSCA-ExtraStats"]
when :dtake
return $game_variables[CSCA_EXTRA_STATS::DAMAGE_TAKEN] if $imported["CSCA-ExtraStats"]
when :ddeal
return $game_variables[CSCA_EXTRA_STATS::DAMAGE_DEALT] if $imported["CSCA-ExtraStats"]
when :gspend
return $game_variables[CSCA_EXTRA_STATS::GOLDSPENT] if $imported["CSCA-ExtraStats"]
when :gearn
return $game_variables[CSCA_EXTRA_STATS::GOLDGAINED] if $imported["CSCA-ExtraStats"]
when :iuse
return $game_variables[CSCA_EXTRA_STATS::ITEMS_USED] if $imported["CSCA-ExtraStats"]
when :ibuy
return $game_variables[CSCA_EXTRA_STATS::ITEMSBOUGHT] if $imported["CSCA-ExtraStats"]
when :isell
return $game_variables[CSCA_EXTRA_STATS::ITEMSSOLD] if $imported["CSCA-ExtraStats"]
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_amount = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][5][0]
reward_id = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][5][1]
reward_type = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][5][2]
case reward_type
when :gold; reward = Vocab::currency_unit
when :item; reward = " " + $data_items[reward_id].name
when :weapon; reward = " " + $data_weapons[reward_id].name
when :armor; reward = " " + $data_armors[reward_id].name
end
draw_text(x,y,w,h,CSCA::ACHIEVEMENTS::REWARD+reward_amount.to_s+reward)
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_amount = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][5][0]
reward_id = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][5][1]
reward_type = CSCA::ACHIEVEMENTS::ACHIEVEMENTS[achievement][5][2]
case reward_type
when :gold; reward = Vocab::currency_unit
when :item; reward = " " + $data_items[reward_id].name
when :weapon; reward = " " + $data_weapons[reward_id].name
when :armor; reward = " " + $data_armors[reward_id].name
end
draw_text(0,line_height*2,contents.width,line_height,
CSCA::ACHIEVEMENTS::REWARD+reward_amount.to_s+reward,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[2]
when :gold; gain_gold(reward[0])
when :item; gain_item($data_items[reward[1]], reward[0])
when :weapon; gain_item($data_weapons[reward[1]], reward[0])
when :armor; gain_item($data_armors[reward[1]], reward[0])
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 = false)
update_interpreter if main
csca_ach_update(main = false)
csca_update_achievements
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[i]
if csca_get_progress_completion(data[i])
$game_achievements[i] = 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] if $imported["CSCA-ExtraStats"]
when :dtake
return $game_variables[CSCA_EXTRA_STATS::DAMAGE_TAKEN] if $imported["CSCA-ExtraStats"]
when :ddeal
return $game_variables[CSCA_EXTRA_STATS::DAMAGE_DEALT] if $imported["CSCA-ExtraStats"]
when :gspend
return $game_variables[CSCA_EXTRA_STATS::GOLDSPENT] if $imported["CSCA-ExtraStats"]
when :gearn
return $game_variables[CSCA_EXTRA_STATS::GOLDGAINED] if $imported["CSCA-ExtraStats"]
when :iuse
return $game_variables[CSCA_EXTRA_STATS::ITEMS_USED] if $imported["CSCA-ExtraStats"]
when :ibuy
return $game_variables[CSCA_EXTRA_STATS::ITEMSBOUGHT] if $imported["CSCA-ExtraStats"]
when :isell
return $game_variables[CSCA_EXTRA_STATS::ITEMSSOLD] if $imported["CSCA-ExtraStats"]
end
return 0
end
#--------------------------------------------------------------------------#
# new method; determine rate denominator #
#--------------------------------------------------------------------------#
def csca_ach_denominator(achievement)
return achievement[4][1]
end
end Там есть достижение откройте 10 сундуков,а как мне сделать,то есть какой скрипт я должен вписать в ивент сундука,чтобы каждый открытый сундук шёл мне в прогресс ,ну типа 0\10,1\10 и так далее? |
Администратор запретил публиковать записи гостям.
|
Время создания страницы: 0.427 секунд