Klar, hier (Zeile 1-50 kannst du wieder stehen lassen, den rest hiermit ersetzen): Code: # call the upgrade menu # items needs to be an array # e.g. call_upgrade_menu([0]) will call the menu for villager upgrades # e.g. call_upgrade_menu([0,3]) will call the menu for villager & church upgr. def call_upgrade_menu(items) return false unless(items.is_a?(Array)) $upgrade_items = items SceneManager.call(LDT_Upgrade_Scene) end class LDT_Upgrade_Scene < Scene_Base def start super @ui = 0 create_title_window() create_selection_window create_cost_window create_confirmation_windows create_background @title_window.set_text(LDT_UPGRADE_MENU::UPGRADE_DESCR[$upgrade_items[@ui]]) end def create_title_window() @title_window = LDT_Upgrade_Window_Title.new(LDT_UPGRADE_MENU::G_START_X,LDT_UPGRADE_MENU::G_START_Y,1,Graphics.width) @title_window.set_text("") end def create_selection_window() ty = LDT_UPGRADE_MENU::G_START_Y + @title_window.height th = Graphics.height - @title_window.height#$upgrade_items.size * 24 + 32 @upgrade_window = LDT_Upgrade_Window.new(LDT_UPGRADE_MENU::G_START_X,ty,LDT_UPGRADE_MENU::G_WIDTH_1,th) @upgrade_window.viewport = @viewport @upgrade_window.set_handler(:ok, method(:on_menu_ok)) @upgrade_window.set_handler(:cancel, method(:return_scene)) @upgrade_window.activate @upgrade_window.select(0) @upgrade_window.show end def create_cost_window() ty = LDT_UPGRADE_MENU::G_START_Y + @title_window.height tx = LDT_UPGRADE_MENU::G_START_X + LDT_UPGRADE_MENU::G_WIDTH_1 tw = Graphics.width - tx th = Graphics.height - @title_window.height @cost_window = LDT_Upgrade_Cost_Window.new(tx,ty,tw,th) @cost_window.viewport = @viewport @cost_window.show end def create_background @background_sprite = Sprite.new @background_sprite.bitmap = SceneManager.background_bitmap @background_sprite.color.set(16, 16, 16, 128) end def create_confirmation_windows() tx = LDT_UPGRADE_MENU::G_START_X + ( LDT_UPGRADE_MENU::G_WIDTH_1 - LDT_UPGRADE_MENU::G_WIDTH_2 ) / 2 ty = LDT_UPGRADE_MENU::G_START_Y @confirm_title_window = LDT_Confirm_Window_Title.new(tx,ty,1,LDT_UPGRADE_MENU::G_WIDTH_2) @confirm_title_window.set_text("") @confirm_title_window.hide @confirm_title_window.viewport = @viewport th = 2 * 24 + 32 ty = ty + @confirm_title_window.height @confirm_window = LDT_Upgrade_Window_Confirmation.new(tx,ty,LDT_UPGRADE_MENU::G_WIDTH_2,th) @confirm_window.viewport = @viewport @confirm_window.set_handler(:ok, method(:on_conf_ok)) @confirm_window.set_handler(:cancel, method(:on_conf_cancel)) @confirm_window.hide end def on_menu_ok ti = @upgrade_window.index if(@upgrade_window.current_item_enabled?) ttext = get_upgrade_name(ti) + LDT_UPGRADE_MENU::CONFIRM_TITLE @confirm_title_window.set_text(ttext) tth = @upgrade_window.index * 24 + 40 + @title_window.height if((tth + @confirm_title_window.height + @confirm_window.height) > Graphics.height) tth = tth - 24 - @confirm_title_window.height - @confirm_window.height end @confirm_title_window.y = tth @confirm_window.y = tth + @confirm_title_window.height @confirm_title_window.show @confirm_window.activate @confirm_window.select(0) @confirm_window.show else @upgrade_window.activate end end def on_conf_ok if(@confirm_window.index >= 1) on_conf_cancel else ti = $upgrade_items[@upgrade_window.index] #loop on all costs of current upgrade level and reduce cor. variable LDT_UPGRADE_MENU::UPGRADE_COSTS[ti][$game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[ti]]].each do |tk,tv| $game_variables[LDT_UPGRADE_MENU::COST_VARS[tk]]-= tv end #increase upgrade variable by 1 $game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[ti]] += 1 refresh_windows on_conf_cancel end end def refresh_windows @upgrade_window.refresh @cost_window.refresh end def update() super() if(@upgrade_window.index != @ui) @ui = @upgrade_window.index @cost_window.set_upgrade_index($upgrade_items[@ui]) @cost_window.refresh @title_window.set_text(LDT_UPGRADE_MENU::UPGRADE_DESCR[$upgrade_items[@ui]]) end end def on_conf_cancel @confirm_window.deactivate @confirm_window.hide @confirm_title_window.hide @upgrade_window.activate end def get_upgrade_name(index) return LDT_UPGRADE_MENU::UPGRADE_NAMES[$upgrade_items[index]] end end class LDT_Upgrade_Cost_Window < Window_Base def initialize(x, y, width,height) super(x,y,width,height)#get_uc_height) @iu = 0 refresh end def set_upgrade_index(index) @iu = index end def refresh contents.clear LDT_UPGRADE_MENU::COST_NAMES.each_with_index do |tn,ti| draw_costs(ti) end end def draw_costs(index) tx = 0 ty = 0 + index * 24 tw = self.width - 24 if(cost_relevant?(index)) contents.font.color.alpha = 255 else contents.font.color.alpha = translucent_alpha end draw_icon(get_icon_num(index), tx, ty, cost_relevant?(index)) draw_text(tx + 26, ty, tw - 26, 24, get_cost_name(index)) if(cost_relevant?(index)) if(get_resource(index) < get_upgrade_cost(index)) change_color(text_color(LDT_UPGRADE_MENU::BAD_COLOR)) end draw_text(tx,ty,tw,24,get_upgrade_cost_text(index),2) change_color(normal_color()) end end def get_uc_height() return LDT_UPGRADE_MENU::COST_NAMES.size * 24 + 32 end def cost_relevant?(index) return false unless(LDT_UPGRADE_MENU::UPGRADE_COSTS[@iu][$game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[@iu]]]) return LDT_UPGRADE_MENU::UPGRADE_COSTS[@iu][$game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[@iu]]].has_key?(index) end def get_icon_num(index) return LDT_UPGRADE_MENU::ICON_COST_IDS[index] end def get_cost_name(index) text = LDT_UPGRADE_MENU::COST_NAMES[index] #+ "(" #text = text + get_resource(index).to_s + ")" return text end def get_resource(index) return $game_variables[LDT_UPGRADE_MENU::COST_VARS[index]] end def get_upgrade_cost_text(index) return get_resource(index).to_s + "/" + get_upgrade_cost(index).to_s end def get_upgrade_cost(index) LDT_UPGRADE_MENU::UPGRADE_COSTS[@iu][$game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[@iu]]][index] end end class LDT_Upgrade_Window < Window_Selectable def initialize(x, y, width, height) super(x,y,width,height) refresh end def item_max $upgrade_items ? $upgrade_items.size : 1 end def item $upgrade_items && index >= 0 ? LDT_UPGRADE_MENU::UPGRADE_NAMES[$upgrade_items[index]] : nil end def refresh create_contents draw_all_items end def draw_item(index) rect = item_rect(index) rect.width -= 4 if(current_item_enabled?(index)) contents.font.color.alpha = 255 else contents.font.color.alpha = translucent_alpha end draw_icon(get_icon_num(index), rect.x, rect.y, current_item_enabled?(index)) draw_text(rect.x + 26, rect.y, rect.width - 26, rect.height, get_upgrade_name(index))#, rect.x, rect.y) draw_text(rect,get_upgrade_lvl(index),2) end def get_upgrade_lvl(index) return $game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[up_index(index)]] end def up_index(index) return $upgrade_items[index] end def get_icon_num(index) return LDT_UPGRADE_MENU::ICON_IDS[up_index(index)] end def get_upgrade_name(index) return LDT_UPGRADE_MENU::UPGRADE_NAMES[up_index(index)] end def current_item_enabled?(tindex = index) return false if(tindex < 0) tc = get_costs(tindex) return false if(tc == LDT_UPGRADE_MENU::MAX_LEVEL_TEXT) tc.each do |tk,tv| return false if($game_variables[LDT_UPGRADE_MENU::COST_VARS[tk]] < tv) end return true end def get_costs(index) tcosts = LDT_UPGRADE_MENU::UPGRADE_COSTS[up_index(index)][$game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[up_index(index)]]] return tcosts ? tcosts : LDT_UPGRADE_MENU::MAX_LEVEL_TEXT end end class LDT_Upgrade_Window_Confirmation < Window_Selectable def initialize(x, y, width, height) super(x,y,width,height) @items = [LDT_UPGRADE_MENU::CONFIRM_TRUE,LDT_UPGRADE_MENU::CONFIRM_FALSE] refresh end def item_max @items ? @items.size : 1 end def item @items && index >= 0 ? @items[index] : nil end def refresh create_contents draw_all_items end def draw_item(index) rect = item_rect(index) rect.width -= 4 draw_text(rect,get_item_name(index)) end def get_item_name(index) return @items[index] end def get_costs(index) return $game_variables[LDT_UPGRADE_MENU::COST_VARS[index]] end end class LDT_Confirm_Window_Title < Window_Base def initialize(x,y,line_number = 1, tw = nil) tw = (tw ? tw : Graphics.width) super(x, y, tw, fitting_height(line_number)) @text2 = "" end def refresh contents.clear draw_text_ex(4, 0, @text) end def set_text(text) if text != @text @text = text refresh end end end class LDT_Upgrade_Window_Title < Window_Base def initialize(x,y,line_number = 1, tw = nil) tw = (tw ? tw : Graphics.width) super(x, y, tw, fitting_height(line_number)) end def refresh contents.clear draw_text_ex(4, 0, @text) end def set_text(text) if text != @text @text = text refresh end end end
# call the upgrade menu # items needs to be an array # e.g. call_upgrade_menu([0]) will call the menu for villager upgrades # e.g. call_upgrade_menu([0,3]) will call the menu for villager & church upgr. def call_upgrade_menu(items) return false unless(items.is_a?(Array)) $upgrade_items = items SceneManager.call(LDT_Upgrade_Scene) end class LDT_Upgrade_Scene < Scene_Base def start super @ui = 0 create_title_window() create_selection_window create_cost_window create_confirmation_windows create_background @title_window.set_text(LDT_UPGRADE_MENU::UPGRADE_DESCR[$upgrade_items[@ui]]) end def create_title_window() @title_window = LDT_Upgrade_Window_Title.new(LDT_UPGRADE_MENU::G_START_X,LDT_UPGRADE_MENU::G_START_Y,1,Graphics.width) @title_window.set_text("") end def create_selection_window() ty = LDT_UPGRADE_MENU::G_START_Y + @title_window.height th = Graphics.height - @title_window.height#$upgrade_items.size * 24 + 32 @upgrade_window = LDT_Upgrade_Window.new(LDT_UPGRADE_MENU::G_START_X,ty,LDT_UPGRADE_MENU::G_WIDTH_1,th) @upgrade_window.viewport = @viewport @upgrade_window.set_handler(:ok, method(:on_menu_ok)) @upgrade_window.set_handler(:cancel, method(:return_scene)) @upgrade_window.activate @upgrade_window.select(0) @upgrade_window.show end def create_cost_window() ty = LDT_UPGRADE_MENU::G_START_Y + @title_window.height tx = LDT_UPGRADE_MENU::G_START_X + LDT_UPGRADE_MENU::G_WIDTH_1 tw = Graphics.width - tx th = Graphics.height - @title_window.height @cost_window = LDT_Upgrade_Cost_Window.new(tx,ty,tw,th) @cost_window.viewport = @viewport @cost_window.show end def create_background @background_sprite = Sprite.new @background_sprite.bitmap = SceneManager.background_bitmap @background_sprite.color.set(16, 16, 16, 128) end def create_confirmation_windows() tx = LDT_UPGRADE_MENU::G_START_X + ( LDT_UPGRADE_MENU::G_WIDTH_1 - LDT_UPGRADE_MENU::G_WIDTH_2 ) / 2 ty = LDT_UPGRADE_MENU::G_START_Y @confirm_title_window = LDT_Confirm_Window_Title.new(tx,ty,1,LDT_UPGRADE_MENU::G_WIDTH_2) @confirm_title_window.set_text("") @confirm_title_window.hide @confirm_title_window.viewport = @viewport th = 2 * 24 + 32 ty = ty + @confirm_title_window.height @confirm_window = LDT_Upgrade_Window_Confirmation.new(tx,ty,LDT_UPGRADE_MENU::G_WIDTH_2,th) @confirm_window.viewport = @viewport @confirm_window.set_handler(:ok, method(:on_conf_ok)) @confirm_window.set_handler(:cancel, method(:on_conf_cancel)) @confirm_window.hide end def on_menu_ok ti = @upgrade_window.index if(@upgrade_window.current_item_enabled?) ttext = get_upgrade_name(ti) + LDT_UPGRADE_MENU::CONFIRM_TITLE @confirm_title_window.set_text(ttext) tth = @upgrade_window.index * 24 + 40 + @title_window.height if((tth + @confirm_title_window.height + @confirm_window.height) > Graphics.height) tth = tth - 24 - @confirm_title_window.height - @confirm_window.height end @confirm_title_window.y = tth @confirm_window.y = tth + @confirm_title_window.height @confirm_title_window.show @confirm_window.activate @confirm_window.select(0) @confirm_window.show else @upgrade_window.activate end end def on_conf_ok if(@confirm_window.index >= 1) on_conf_cancel else ti = $upgrade_items[@upgrade_window.index] #loop on all costs of current upgrade level and reduce cor. variable LDT_UPGRADE_MENU::UPGRADE_COSTS[ti][$game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[ti]]].each do |tk,tv| $game_variables[LDT_UPGRADE_MENU::COST_VARS[tk]]-= tv end #increase upgrade variable by 1 $game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[ti]] += 1 refresh_windows on_conf_cancel end end def refresh_windows @upgrade_window.refresh @cost_window.refresh end def update() super() if(@upgrade_window.index != @ui) @ui = @upgrade_window.index @cost_window.set_upgrade_index($upgrade_items[@ui]) @cost_window.refresh @title_window.set_text(LDT_UPGRADE_MENU::UPGRADE_DESCR[$upgrade_items[@ui]]) end end def on_conf_cancel @confirm_window.deactivate @confirm_window.hide @confirm_title_window.hide @upgrade_window.activate end def get_upgrade_name(index) return LDT_UPGRADE_MENU::UPGRADE_NAMES[$upgrade_items[index]] end end class LDT_Upgrade_Cost_Window < Window_Base def initialize(x, y, width,height) super(x,y,width,height)#get_uc_height) @iu = 0 refresh end def set_upgrade_index(index) @iu = index end def refresh contents.clear LDT_UPGRADE_MENU::COST_NAMES.each_with_index do |tn,ti| draw_costs(ti) end end def draw_costs(index) tx = 0 ty = 0 + index * 24 tw = self.width - 24 if(cost_relevant?(index)) contents.font.color.alpha = 255 else contents.font.color.alpha = translucent_alpha end draw_icon(get_icon_num(index), tx, ty, cost_relevant?(index)) draw_text(tx + 26, ty, tw - 26, 24, get_cost_name(index)) if(cost_relevant?(index)) if(get_resource(index) < get_upgrade_cost(index)) change_color(text_color(LDT_UPGRADE_MENU::BAD_COLOR)) end draw_text(tx,ty,tw,24,get_upgrade_cost_text(index),2) change_color(normal_color()) end end def get_uc_height() return LDT_UPGRADE_MENU::COST_NAMES.size * 24 + 32 end def cost_relevant?(index) return false unless(LDT_UPGRADE_MENU::UPGRADE_COSTS[@iu][$game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[@iu]]]) return LDT_UPGRADE_MENU::UPGRADE_COSTS[@iu][$game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[@iu]]].has_key?(index) end def get_icon_num(index) return LDT_UPGRADE_MENU::ICON_COST_IDS[index] end def get_cost_name(index) text = LDT_UPGRADE_MENU::COST_NAMES[index] #+ "(" #text = text + get_resource(index).to_s + ")" return text end def get_resource(index) return $game_variables[LDT_UPGRADE_MENU::COST_VARS[index]] end def get_upgrade_cost_text(index) return get_resource(index).to_s + "/" + get_upgrade_cost(index).to_s end def get_upgrade_cost(index) LDT_UPGRADE_MENU::UPGRADE_COSTS[@iu][$game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[@iu]]][index] end end class LDT_Upgrade_Window < Window_Selectable def initialize(x, y, width, height) super(x,y,width,height) refresh end def item_max $upgrade_items ? $upgrade_items.size : 1 end def item $upgrade_items && index >= 0 ? LDT_UPGRADE_MENU::UPGRADE_NAMES[$upgrade_items[index]] : nil end def refresh create_contents draw_all_items end def draw_item(index) rect = item_rect(index) rect.width -= 4 if(current_item_enabled?(index)) contents.font.color.alpha = 255 else contents.font.color.alpha = translucent_alpha end draw_icon(get_icon_num(index), rect.x, rect.y, current_item_enabled?(index)) draw_text(rect.x + 26, rect.y, rect.width - 26, rect.height, get_upgrade_name(index))#, rect.x, rect.y) draw_text(rect,get_upgrade_lvl(index),2) end def get_upgrade_lvl(index) return $game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[up_index(index)]] end def up_index(index) return $upgrade_items[index] end def get_icon_num(index) return LDT_UPGRADE_MENU::ICON_IDS[up_index(index)] end def get_upgrade_name(index) return LDT_UPGRADE_MENU::UPGRADE_NAMES[up_index(index)] end def current_item_enabled?(tindex = index) return false if(tindex < 0) tc = get_costs(tindex) return false if(tc == LDT_UPGRADE_MENU::MAX_LEVEL_TEXT) tc.each do |tk,tv| return false if($game_variables[LDT_UPGRADE_MENU::COST_VARS[tk]] < tv) end return true end def get_costs(index) tcosts = LDT_UPGRADE_MENU::UPGRADE_COSTS[up_index(index)][$game_variables[LDT_UPGRADE_MENU::UPGRADE_VARS[up_index(index)]]] return tcosts ? tcosts : LDT_UPGRADE_MENU::MAX_LEVEL_TEXT end end class LDT_Upgrade_Window_Confirmation < Window_Selectable def initialize(x, y, width, height) super(x,y,width,height) @items = [LDT_UPGRADE_MENU::CONFIRM_TRUE,LDT_UPGRADE_MENU::CONFIRM_FALSE] refresh end def item_max @items ? @items.size : 1 end def item @items && index >= 0 ? @items[index] : nil end def refresh create_contents draw_all_items end def draw_item(index) rect = item_rect(index) rect.width -= 4 draw_text(rect,get_item_name(index)) end def get_item_name(index) return @items[index] end def get_costs(index) return $game_variables[LDT_UPGRADE_MENU::COST_VARS[index]] end end class LDT_Confirm_Window_Title < Window_Base def initialize(x,y,line_number = 1, tw = nil) tw = (tw ? tw : Graphics.width) super(x, y, tw, fitting_height(line_number)) @text2 = "" end def refresh contents.clear draw_text_ex(4, 0, @text) end def set_text(text) if text != @text @text = text refresh end end end class LDT_Upgrade_Window_Title < Window_Base def initialize(x,y,line_number = 1, tw = nil) tw = (tw ? tw : Graphics.width) super(x, y, tw, fitting_height(line_number)) end def refresh contents.clear draw_text_ex(4, 0, @text) end def set_text(text) if text != @text @text = text refresh end end end
--
Foren-Regeln