Este é um outro script, criado por Nick, de economia para o RPG Maker XP (o outro é o Dynamic Currencies de SephirothSpawn).
Uma vez inserido num projeto do RMXP, o Economic Shop System, permite que as lojas alterem os preços de seus produtos (itens, armas e armaduras) baseado numa espécie de lei da oferta e procura. Ou seja, dependendo de quanto o herói venda ou compre de algum determinado produto, o seu preço pode diminuir ou aumentar.
Para instalar, basta inserir o código abaixo acima do Main. Também, baixe e de uma estudadinha na demo, para ver melhor como funciona:
#---------------------------------------------------------------------------- # Economic Shop System - by Nick # Version 2.134 (Hell yeah) #---------------------------------------------------------------------------- # You may delete all comments except copyright. # How to use: # Step 1: # -Create a shop using $eco.add_shop("name", "trade_type", "description") # -"name", the store name, to identify shops, cant make 2 shops with same name # -"trade_type", Standard it is both so you dont have to enter it, use "buy" # -Or "sell" for buy/sell only shops. # Step 2: # -Add items using $eco.add_item(shop, item, type, amount, time_per_unit) # -Shop can be either shop name or id. # -Item is just the item id in the database. # -Type is item(0), weapon(1) or armor(2) # -Amount is the amount of items automatic in stock and it will restock to. # -Time_per_unit is the time for 1 item to restock. # Step 3: # -Use call script; $scene = Eco_Scene_Shop.new(shopname/id) # Note: # -You can also use step 1 and 2 in Game_Economy, def initialize if you prefer. # -Just replace $eco.shops with just @shops. # Extra's: # -If you are going to add items, it might be handier to use ID instead of name # -For quick acces to ID use @id = $eco.retrieve_id(shopname) to put it in a string # -Use module ES to adjust quick settings. # -If you dont like the way i used to set prices, adjust def price in Data_Shopitems # -And def calprice in Eco_Window_ShopNumber #---------------------------------------------------------------------------- # Made by: Nick alias "PieNick, "Paashaas", "Generaal Gek", "Ali Anthrax" # Thanks to: Near_Fantastica for the idea and his great scripts #---------------------------------------------------------------------------- module ES RESTOCK = true # Restock items? CT = true # In the shop menu, let the user choose item type? SHOPNAME = true # Show shopname in help window when empty? end class Data_ShopItems # All data for items are stored here, and the price calculating attr_accessor :item attr_accessor :type attr_accessor :stock attr_accessor :default attr_accessor :time_per_unit attr_accessor :time_start #-------------------------------------------------------------------------- def initialize(item, type, default, time_per_unit) @item = item @type = type @stock = default @default = default @time_per_unit = time_per_unit @time_start = Graphics.frame_count end #-------------------------------------------------------------------------- def price(sell = false) case type when 0 base = $data_items when 1 base = $data_weapons when 2 base = $data_armors end @baseprice = base[@item].price.to_f if @default != 0 range = @default.to_f / @stock.to_f else if sell range = 1.30 for i in 0...@stock range -= 0.05 if range >= 0.80 end else range = 2.16 for i in 0...@stock range -= 0.16 if range >= 0.70 end end end range = 1.25 if range.nan? if sell @base = @baseprice / 2 if range == 1 @newprice = @base elsif range > 1 @newprice = @base * (range * range) else @newprice = @base * range end @newprice = @baseprice * 3 if @newprice > @baseprice * 3 @newprice = @baseprice / 3 if @newprice < @baseprice / 3 else @newprice = @baseprice * range @newprice = @baseprice * 2 if @newprice > @baseprice * 2 @newprice = @baseprice / 2 if @newprice < @baseprice / 2 end @newprice = @newprice.round return @newprice end end class Data_Shop # All data for shops is here attr_accessor :name attr_accessor :items attr_accessor :trade_type #-------------------------------------------------------------------------- def initialize(name, trade_type) @name = name @trade_type = trade_type @items = [] end end class Game_Economy # Also known as $eco attr_accessor :shops #-------------------------------------------------------------------------- def initialize @shops = [] # After this, you can also create shops and put items in them end #-------------------------------------------------------------------------- # Checks every shop and every item if it needs restocking, i think it could # Cause lag if it needs to search alot of things... def restock for shop in 0...@shops.size for item in 0...@shops[shop].items.size itemdata = @shops[shop].items[item] times = (Graphics.frame_count.to_f - itemdata.time_start.to_f) / itemdata.time_per_unit.to_f if times >= 1.00 and itemdata.time_per_unit != 0 itemdata.time_start = Graphics.frame_count if itemdata.stock > itemdata.default itemdata.stock -= times.floor elsif itemdata.stock < itemdata.default itemdata.stock += times.floor end end end end end #-------------------------------------------------------------------------- # Add shops using this def add_shop(name, trade_type = "both") @shops.push(Data_Shop.new(name, trade_type)) unless $eco.shops.index(name) end #-------------------------------------------------------------------------- # Add items to shops using this def add_item(shop, item, type, default, time_per_unit) if shop.is_a?(Fixnum) @id = shop @name = @shops[@id].name else @name = shop @id = retrieve_id(shop) end tpu = time_per_unit * Graphics.frame_rate @shops[@id].items.push(Data_ShopItems.new(item, type, default, tpu)) end #-------------------------------------------------------------------------- # Quick ID def retrieve_id(shop) for i in 0...@shops.size if @shops[i].name == shop return i end end end #-------------------------------------------------------------------------- # Created to let you use $eco.price to check price def price(shop, item, group, sell = false) if shop.is_a?(Fixnum) @id = shop @name = @shops[@id].name else @name = shop @id = retrieve_id(shop) end for i in 0...@shops[@id].items.size @i = i if @shops[@id].items[i].item == item and @shops[@id].items[i].type == group item_id = i break end end if item_id return @shops[@id].items[item_id].price(sell) else case group when 0 item = $data_items[item] when 1 item = $data_weapons[item] when 2 item = $data_armors[item] end return item.price * 3 end end end # Addition to scene_title to set $eco class Scene_Title alias eco_scene_title_cng command_new_game def command_new_game eco_scene_title_cng $eco = Game_Economy.new end end # Addition to scene_map to restock items class Scene_Map alias eco_scene_map_update update def update if ES::RESTOCK $eco.restock end eco_scene_map_update end end # Addition to scene_load and scene_save to store data class Scene_Load < Scene_File alias eco_scene_load_rsd read_save_data def read_save_data(file) eco_scene_load_rsd(file) $eco = Marshal.load(file) end end class Scene_Save < Scene_File alias eco_scene_save_wsd write_save_data def write_save_data(file) eco_scene_save_wsd(file) Marshal.dump($eco, file) end end # Scene classes.. They're called Eco_*original name* so you can still use # The default shop without my nifty system :) class Window_ShopCommand def draw_item(index, color = normal_color) self.contents.font.color = color rect = Rect.new(4 + index * 160, 0, self.contents.width - 8, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.draw_text(rect, @commands[index]) end #-------------------------------------------------------------------------- def disable_item(index) self.contents.clear for i in 0...@item_max if i == index draw_item(i, disabled_color) else draw_item(i) end end end end class Eco_Scene_Shop def initialize(shop) if shop.is_a?(Fixnum) @id = shop @name = $eco.shops[@id].name else @name = shop for i in 0...$eco.shops.size if $eco.shops[i].name == @name @id = i break end end end if @name != $eco.shops[@id].name print "Error finding shop: " + shop end main end #-------------------------------------------------------------------------- def main @help_window = Window_Help.new if ES::SHOPNAME @help_window.set_text($eco.shops[@id].name) else @help_window.set_text("") end @command_window = Window_ShopCommand.new if $eco.shops[@id].trade_type == "sell" @command_window.disable_item(0) elsif $eco.shops[@id].trade_type == "buy" @command_window.disable_item(1) end @gold_window = Window_Gold.new @gold_window.x = 480 @gold_window.y = 64 @dummy_window = Window_Base.new(0, 128, 640, 352) @buy_window = Eco_Window_ShopBuy.new(@id) @buy_window.active = false @buy_window.visible = false @buy_window.help_window = @help_window @sell_window = Eco_Window_ShopSell.new @sell_window.active = false @sell_window.visible = false @sell_window.help_window = @help_window @number_window = Eco_Window_ShopNumber.new @number_window.active = false @number_window.visible = false @status_window = Window_ShopStatus.new @status_window.visible = false @select_window = Window_Command.new(160, ["All", "Items", "Weapons", "Armor"]) @select_window.x = 240 @select_window.y = 180 @select_window.active = false @select_window.visible = false itemstock = false weaponstock = false armorstock = false for i in $eco.shops[@id].items itemstock = true if i.type == 0 weaponstock = true if i.type == 1 armorstock = true if i.type == 2 end @select_window.disable_item(1) if !itemstock and !weaponstock and !armorstock @select_window.disable_item(1) if !itemstock @select_window.disable_item(2) if !weaponstock @select_window.disable_item(3) if !armorstock Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @help_window.dispose @command_window.dispose @gold_window.dispose @dummy_window.dispose @buy_window.dispose @sell_window.dispose @number_window.dispose @status_window.dispose @select_window.dispose end #-------------------------------------------------------------------------- def update @help_window.update @command_window.update @gold_window.update @dummy_window.update @buy_window.update @sell_window.update @number_window.update @status_window.update @select_window.update if @command_window.active update_command return end if @sell_window.active == true or @buy_window.active == true itemstock = false weaponstock = false armorstock = false for i in $eco.shops[@id].items itemstock = true if i.type == 0 weaponstock = true if i.type == 1 armorstock = true if i.type == 2 end normal_color = Color.new(255, 255, 255, 255) if !itemstock and !weaponstock and !armorstock @select_window.disable_item(0) else @select_window.draw_item(0, normal_color) end if !itemstock @select_window.disable_item(1) else @select_window.draw_item(1, normal_color) end if !weaponstock @select_window.disable_item(2) else @select_window.draw_item(2, normal_color) end if !armorstock @select_window.disable_item(3) else @select_window.draw_item(3, normal_color) end end if @buy_window.active @sell_window.refresh update_buy return end if @sell_window.active @buy_window.refresh update_sell return end if @number_window.active update_number return end if @select_window.active update_select return end end #-------------------------------------------------------------------------- def update_command if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end if Input.trigger?(Input::C) case @command_window.index when 0 if $eco.shops[@id].trade_type != "sell" $game_system.se_play($data_system.decision_se) @command_window.active = false if ES::CT @select_window.visible = true @select_window.active = true else $game_system.se_play($data_system.decision_se) @buy_window.category = 3 @buy_window.reset @buy_window.refresh @buy_window.help_window = @help_window @dummy_window.visible = false @buy_window.active = true @buy_window.visible = true @status_window.visible = true end else $game_system.se_play($data_system.buzzer_se) end when 1 if $eco.shops[@id].trade_type != "buy" $game_system.se_play($data_system.decision_se) @command_window.active = false @dummy_window.visible = false @sell_window.active = true @sell_window.visible = true else $game_system.se_play($data_system.buzzer_se) end when 2 $game_system.se_play($data_system.decision_se) $scene = Scene_Map.new end return end end #-------------------------------------------------------------------------- def update_buy @status_window.item = @buy_window.item if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @command_window.active = true @dummy_window.visible = true @buy_window.active = false @buy_window.visible = false @status_window.visible = false @status_window.item = nil if ES::SHOPNAME @help_window.set_text($eco.shops[@id].name) else @help_window.set_text("") end return end if Input.trigger?(Input::C) @item = @buy_window.item case @item when RPG::Item number = $game_party.item_number(@item.id) group = 0 when RPG::Weapon number = $game_party.weapon_number(@item.id) group = 1 when RPG::Armor number = $game_party.armor_number(@item.id) group = 2 end for i in $eco.shops[@id].items @item_data = i if i.item == @item.id and i.type == group end eco_max = @item_data.stock if @item == nil or $eco.price(@id, @item.id, @item_data.type) > $game_party.gold or 0 >= eco_max $game_system.se_play($data_system.buzzer_se) return end if number == 99 $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) @buy_window.active = false @buy_window.visible = false @number_window.set(@id, @item, @item_data.type) @number_window.active = true @number_window.visible = true end end #-------------------------------------------------------------------------- def update_sell if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @sell_window.active = false @sell_window.visible = false @status_window.item = nil if ES::SHOPNAME @help_window.set_text($eco.shops[@id].name) else @help_window.set_text("") end @command_window.active = true @dummy_window.visible = true @buy_window.reset @buy_window.refresh @buy_window.help_window = @help_window return end if Input.trigger?(Input::C) @item = @sell_window.item @status_window.item = @item case @item when RPG::Item group = 0 when RPG::Weapon group = 1 when RPG::Armor group = 2 end if @item == nil or $eco.price(@id, @item.id, group, true) == 0 $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) @sell_window.active = false @sell_window.visible = false @number_window.set(@id, @item, group, sell = true) @number_window.active = true @number_window.visible = true @status_window.visible = true @buy_window.reset @buy_window.refresh @buy_window.help_window = @help_window end end #-------------------------------------------------------------------------- def update_number if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @number_window.active = false @number_window.visible = false case @command_window.index when 0 @buy_window.active = true @buy_window.visible = true when 1 @sell_window.active = true @sell_window.visible = true @status_window.visible = false end return end if Input.trigger?(Input::C) $game_system.se_play($data_system.shop_se) @number_window.active = false @number_window.visible = false case @command_window.index when 0 case @item when RPG::Item $game_party.gain_item(@item.id, @number_window.number) group = 0 when RPG::Weapon $game_party.gain_weapon(@item.id, @number_window.number) group = 1 when RPG::Armor $game_party.gain_armor(@item.id, @number_window.number) group = 2 end for i in 0...$eco.shops[@id].items.size @item_id = i if $eco.shops[@id].items[i].item == @item.id and $eco.shops[@id].items[i].type == group end for i in 1..@number_window.number $eco.shops[@id].items[@item_id].stock -= 1 end if $eco.shops[@id].items[@item_id].stock == 0 and $eco.shops[@id].items[@item_id].default == 0 $eco.shops[@id].items.delete_at(@item_id) $eco.shops[@id].items.compact end $game_party.lose_gold(@number_window.total_price) @gold_window.refresh @buy_window.reset @buy_window.refresh @buy_window.help_window = @help_window @status_window.refresh @buy_window.active = true @buy_window.visible = true when 1 case @item when RPG::Item $game_party.lose_item(@item.id, @number_window.number) group = 0 when RPG::Weapon $game_party.lose_weapon(@item.id, @number_window.number) group = 1 when RPG::Armor $game_party.lose_armor(@item.id, @number_window.number) group = 2 end for i in 0...$eco.shops[@id].items.size @item_id = i if $eco.shops[@id].items[i].item == @item.id and $eco.shops[@id].items[i].type == group end for i in 0...@number_window.number if !@item_id $eco.add_item(@id, @item.id, group, 0, 0) for i in 0...$eco.shops[@id].items.size @item_id = i if $eco.shops[@id].items[i].item == @item.id and $eco.shops[@id].items[i].type == group end end $eco.shops[@id].items[@item_id].stock += 1 end $game_party.gain_gold(@number_window.total_price) @gold_window.refresh @sell_window.refresh @status_window.refresh @sell_window.active = true @sell_window.visible = true @status_window.visible = false end return end end #-------------------------------------------------------------------------- def update_select if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @select_window.visible = false @select_window.active = false @command_window.active = true return end if Input.trigger?(Input::C) itemstock = false weaponstock = false armorstock = false for i in $eco.shops[@id].items itemstock = true if i.type == 0 weaponstock = true if i.type == 1 armorstock = true if i.type == 2 end case @select_window.index when 0 $game_system.se_play($data_system.decision_se) @buy_window.category = 3 @buy_window.reset @buy_window.refresh @buy_window.help_window = @help_window @select_window.visible = false @select_window.active = false @dummy_window.visible = false @buy_window.active = true @buy_window.visible = true @status_window.visible = true when 1 if itemstock $game_system.se_play($data_system.decision_se) @buy_window.category = 0 @buy_window.reset @buy_window.refresh @buy_window.help_window = @help_window @select_window.visible = false @select_window.active = false @dummy_window.visible = false @buy_window.active = true @buy_window.visible = true @status_window.visible = true else $game_system.se_play($data_system.buzzer_se) end when 2 if weaponstock $game_system.se_play($data_system.decision_se) @buy_window.category = 1 @buy_window.reset @buy_window.refresh @buy_window.help_window = @help_window @select_window.visible = false @select_window.active = false @dummy_window.visible = false @buy_window.active = true @buy_window.visible = true @status_window.visible = true else $game_system.se_play($data_system.buzzer_se) end when 3 if armorstock $game_system.se_play($data_system.decision_se) @buy_window.category = 2 @buy_window.reset @buy_window.refresh @buy_window.help_window = @help_window @select_window.visible = false @select_window.active = false @dummy_window.visible = false @buy_window.active = true @buy_window.visible = true @status_window.visible = true else $game_system.se_play($data_system.buzzer_se) end end return end end end class Eco_Window_ShopBuy < Window_Selectable attr_accessor :category #-------------------------------------------------------------------------- def initialize(shop) @id = shop @name = $eco.shops[@id].name @data = [] @data_type = [] @category = 3 super(0, 128, 368, 352) refresh self.index = 0 end #-------------------------------------------------------------------------- def reset @data = [] @data_type = [] @ecoitem = nil self.index = 0 return end #-------------------------------------------------------------------------- def item data = @data[self.index] case @data_type[self.index] when 0 item = $data_items[data] when 1 item = $data_weapons[data] when 2 item = $data_armors[data] end return item end #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @compitable = [] for i in $eco.shops[@id].items @compitable.push(i.item) if i.type == @category or @category == 3 end @item_max = @compitable.length self.contents = Bitmap.new(width - 32, row_max * 32 + 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize for i in 0...$eco.shops[@id].items.size pie = $eco.shops[@id].items[i] if pie.type == @category or @category == 3 draw_item(i) @data.push(pie.item) @data_type.push(pie.type) end end end #-------------------------------------------------------------------------- def draw_item(index) item = $eco.shops[@id].items[index] number = $game_party.item_number(index) if item.type == 0 @ecoitem = $data_items[item.item] elsif item.type == 1 @ecoitem = $data_weapons[item.item] elsif item.type == 2 @ecoitem = $data_armors[item.item] end self.contents.font.size = $fontsize if $eco.price(@id, item.item, item.type) <= $game_party.gold and number < 99 and item.stock != 0 self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = 4 y = @data.length * 32 rect = Rect.new(x, y, self.width - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(@ecoitem.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, @ecoitem.name, 0) self.contents.draw_text(x + 240, y, 88, 32, $eco.price(@id, item.item, item.type).to_s, 2) ax = contents.text_size(@ecoitem.name).width + 36 self.contents.font.size = 18 self.contents.draw_text(ax, y - 6, 212, 32, "* " + item.stock.to_s, 0) end #-------------------------------------------------------------------------- def update_help if self.item @help_window.set_text(self.item == nil ? @name : self.item.description) elsif self.item and !ES::SHOPNAME @help_window.set_text(self.item == nil ? "" : self.item.description) end end end class Eco_Window_ShopSell < Window_Selectable #-------------------------------------------------------------------------- def initialize super(0, 128, 640, 352) @column_max = 2 refresh self.index = 0 end #-------------------------------------------------------------------------- def item return @data[self.index] end #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 1...$data_items.size if $game_party.item_number(i) > 0 @data.push($data_items[i]) end end for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 @data.push($data_weapons[i]) end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 @data.push($data_armors[i]) end end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize for i in 0...@item_max draw_item(i) end end end #-------------------------------------------------------------------------- def draw_item(index) item = @data[index] case item when RPG::Item number = $game_party.item_number(item.id) when RPG::Weapon number = $game_party.weapon_number(item.id) when RPG::Armor number = $game_party.armor_number(item.id) end if item.price > 0 self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) self.contents.draw_text(x + 240, y, 16, 32, ":", 1) self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2) end #-------------------------------------------------------------------------- def update_help if self.item @help_window.set_text(self.item == nil ? @name : self.item.description) elsif self.item and !ES::SHOPNAME @help_window.set_text(self.item == nil ? "" : self.item.description) end end end class Window_Command def enable_item(index) draw_item(index, normal_color) end end class Eco_Window_ShopNumber < Window_Base attr_reader :number attr_reader :total_price #-------------------------------------------------------------------------- def initialize super(0, 128, 368, 352) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize @item = nil @max = 1 @number = 1 end #-------------------------------------------------------------------------- def set(shop, item, group, sell = false) @shop = shop @item = item @group = group @sell = sell @number = 1 @item_id = nil for i in 0...$eco.shops[@shop].items.size if $eco.shops[@shop].items[i].item == @item.id and $eco.shops[@shop].items[i].type == @group @item_id = i break end end refresh end #-------------------------------------------------------------------------- def refresh self.contents.clear draw_item_name(@item, 4, 96) self.contents.font.color = normal_color self.contents.draw_text(272, 96, 32, 32, "×") self.contents.draw_text(308, 96, 24, 32, @number.to_s, 2) self.cursor_rect.set(304, 96, 32, 32) domination = $data_system.words.gold cx = contents.text_size(domination).width @total_price = 0 @fake_price = 0 if @item_id @fake_stock = $eco.shops[@shop].items[@item_id].stock else @fake_stock = 0 end if @sell case @group when 0 @stock = $game_party.item_number(@item.id) when 1 @stock = $game_party.weapon_number(@item.id) when 2 @stock = $game_party.armor_number(@item.id) end for i in 0...@number @total_price += calprice(true) @fake_stock += 1 end else @stock = $eco.shops[@shop].items[@item_id].stock for i in 0...@stock @fake_price += calprice @fake_stock -= 1 @mstock = $eco.shops[@shop].items[@item_id].stock - @fake_stock @mprice = @fake_price + calprice if @mprice >= $game_party.gold or @fake_stock <= 0 @max = @mstock break end end for i in 0...@number @fake_stock = $eco.shops[@shop].items[@item_id].stock - i @total_price += calprice end end self.contents.font.color = normal_color self.contents.draw_text(4, 160, 328-cx-2, 32, @total_price.to_s, 2) self.contents.font.color = system_color self.contents.draw_text(332-cx, 160, cx, 32, domination, 2) end #-------------------------------------------------------------------------- def update super if self.active if @sell @max = @stock end if Input.repeat?(Input::RIGHT) and @number < @max $game_system.se_play($data_system.cursor_se) @number += 1 refresh end if Input.repeat?(Input::LEFT) and @number > 1 $game_system.se_play($data_system.cursor_se) @number -= 1 refresh end if Input.repeat?(Input::UP) and @number < @max $game_system.se_play($data_system.cursor_se) @number = [@number + 10, @max].min refresh end if Input.repeat?(Input::DOWN) and @number > 1 $game_system.se_play($data_system.cursor_se) @number = [@number - 10, 1].max refresh end end end #-------------------------------------------------------------------------- def calprice(sell = false) @baseprice = @item.price.to_f if @item_id if $eco.shops[@shop].items[@item_id].default != 0 range = $eco.shops[@shop].items[@item_id].default.to_f / @fake_stock.to_f none = false else none = true end else none = true end if none if sell range = 1.30 for i in 0...@fake_stock range -= 0.05 if range >= 0.80 end else range = 2.16 for i in 0...@fake_stock range -= 0.16 if range >= 0.70 end end end range = 1.25 if range.nan? if sell == true @base = @baseprice / 2 if range == 1 @newprice = @base elsif range > 1 @newprice = @base * (range * range) else @newprice = @base * range end @newprice = @baseprice * 3 if @newprice > @baseprice * 3 @newprice = @baseprice / 3 if @newprice < @baseprice / 3 else @newprice = @baseprice * range @newprice = @baseprice * 2 if @newprice > @baseprice * 2 @newprice = @baseprice / 2 if @newprice < @baseprice / 2 end @newprice = @newprice.round return @newprice end end # EoF, Last edit 09/11/2005 21:57 GMT, 1070 lines total.
Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!