|
| Auteur | Message |
---|
Mat Paysan (niveau 2)
Messages postés : 17 Date d'inscription : 05/09/2013 Jauge LPC :
| Sujet: [XP] Shop Stock Ven 6 Sep 2013 - 23:22 | |
| Shop Stock Auteur : Mat Description : Dépendance : Database Management v1Script : - Code:
-
#=============================================================================== # ■ Shop Stock #------------------------------------------------------------------------------- # Auteur : Mat # Version : 2.0 # Date : 22/06/2008 #------------------------------------------------------------------------------- # Ce systême permet de créer des magasins réalistes avec une caisse et un stock. # Un magasin ne peut donc pas acheter des objets au héros si il ne dispose pas # d'assez d'argent dans sa caisse ; les objets vendus à un magasin y sont # conservés et les objets à acheter sont en quantité limitée. # # Peut-être dans une future version : # - Certains objets en quantité infini. # - Réapprovisionnement régulier des magasins. # # Dépendance : # - Database Management #------------------------------------------------------------------------------- # Utilisation : # # 1) Installation : # Copier le Database Management dans un script au dessus de Main. # Copier ce script dans un nouveau script entre Database Management # et Main. # # 2) Utilisation : # Lancer une première fois votre jeu. Le jeu créera ainsi un dossier # nommer "Shops Data" dans le dossier de votre jeu, contenant un fichier # "template.dbsl". Il suffit de copier le template et de remplir les # différents champs et ceci autant de fois qu'il faut de magasin. # # ATTENTION : le champs name doit être unique pour chaque magasin. # # 3) Appel de magasin : # # Il suffit de créer un evènement avec le nom d'un magasin, # et d'appeler dans ses commandes un magasin en lui passant # des objets à vendre qui ne seront pas pris en compte. #===============================================================================
Database.create_table("Shops") { |t| t.column :name, :string t.column :gold, :integer, 0 t.column :items, :hash t.column :weapons, :hash t.column :armors, :hash }
#=============================================================================== # ▼ Game_Shop #------------------------------------------------------------------------------- # Cette classe modélise des magasins avec une caisse et un stock d'objets. #=============================================================================== class Game_Shop attr_reader :gold # montant de la caisse attr_reader :items # stock d'objets attr_reader :weapons # stock d'armes attr_reader :armors # stock d'armures #============================================================================= # ● initialize # gold : Montant initial de la caisse # items : Stock initial d'objets # weapons : Stock initial d'armes # armors : Stock initial d'armures #----------------------------------------------------------------------------- # Méthode de création du magasin. #============================================================================= def initialize(gold, items, weapons, armors) @gold = gold @items = items @weapons = weapons @armors = armors end
#============================================================================= # ● gain_gold # n : L'argent à ajouter #----------------------------------------------------------------------------- # Méthode d'ajout d'argent au magasin #============================================================================= def gain_gold(n) @gold = [[@gold + n, 0].max, 9999999].min end #============================================================================= # ● lose_gold # n : L'argent à retirer #----------------------------------------------------------------------------- # Méthode pour retirer de l'argent au magasin #============================================================================= def lose_gold(n) gain_gold(-n) end
#============================================================================= # ● item_number # item_id : L'id dans la base de données de l'item à chercher #----------------------------------------------------------------------------- # Méthode qui retourne la quantité d'un item possédé par le magasin #============================================================================= def item_number(item_id) return @items.include?(item_id) ? @items[item_id] : 0 end
#============================================================================= # ● weapon_number # weapon_id : L'id dans la base de données de l'arme à chercher #----------------------------------------------------------------------------- # Méthode qui retourne la quantité d'une arme possédée par le magasin #============================================================================= def weapon_number(weapon_id) return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0 end
#============================================================================= # ● armor_number # armor_id : L'id dans la base de données de l'armure à chercher #----------------------------------------------------------------------------- # Méthode qui retourne la quantite d'une armure possédée par le magasin #============================================================================= def armor_number(armor_id) return @armors.include?(armor_id) ? @armors[armor_id] : 0 end
#============================================================================= # ● gain_item # item_id : L'id dans la base de données de l'item à ajouter # n : La quantite de l'item à ajouter #----------------------------------------------------------------------------- # Méthode qui permet d'ajouter des items au magasin #============================================================================= def gain_item(item_id, n) if item_id > 0 @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min end end #============================================================================= # ● gain_weapon # weapon_id : L'id dans la base de données de l'arme à ajouter # n : La quantite de l'arme à ajouter #----------------------------------------------------------------------------- # Méthode qui permet d'ajouter des armes au magasin #============================================================================= def gain_weapon(weapon_id, n) if weapon_id > 0 @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min end end
#============================================================================= # ● gain_armor # item_id : L'id dans la base de données de l'armrue à ajouter # n : La quantite de l'armure à ajouter #----------------------------------------------------------------------------- # Méthode qui permet d'ajouter des armures au magasin #============================================================================= def gain_armor(armor_id, n) if armor_id > 0 @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min end end
#============================================================================= # ● lose_item # item_id : L'id dans la base de données de l'item à retirer # n : La quantite de l'item à retirer #----------------------------------------------------------------------------- # Méthode qui permet de retirer des items au magasin #============================================================================= def lose_item(item_id, n) gain_item(item_id, -n) end
#============================================================================= # ● lose_weapon # weapon_id : L'id dans la base de données de l'arme à retirer # n : La quantite de l'arme à retirer #----------------------------------------------------------------------------- # Méthode qui permet de retirer des armes au magasin #============================================================================= def lose_weapon(weapon_id, n) gain_weapon(weapon_id, -n) end
#============================================================================= # ● lose_armor # armor_id : L'id dans la base de données de l'armrue à retirer # n : La quantite de l'armure à retirer #----------------------------------------------------------------------------- # Méthode qui permet de retirer des armures au magasin #============================================================================= def lose_armor(armor_id, n) gain_armor(armor_id, -n) end end
#=============================================================================== # ▼ Game_Temp #------------------------------------------------------------------------------- # On ajoute à la classe Game_Temp un nouvel attribut @game_shop # correspondant au magasin appelé, ce qui remplace l'attribut @shop_goods #=============================================================================== class Game_Temp attr_accessor :game_shop alias shop_initialize initialize def initialize shop_initialize @game_shop = nil end end
#=============================================================================== # ▼ Interpreter & Game_Event #------------------------------------------------------------------------------- # On modifie dans la classe Interpreter la commande d'appel d'un magasin, pour # qu'il utilise $game_temp.game_shop et non $game_temp.shop_goods. # Pour celà, on a besoin d'ajouter à la classe Game_Event un accès à son event. #===============================================================================
class Interpreter #============================================================================= # ● command_302 #----------------------------------------------------------------------------- # Commande d'appel d'un magasin. #============================================================================= def command_302 $game_temp.battle_abort = true $game_temp.shop_calling = true $game_temp.game_shop = $game_shops[$game_map.events[@event_id].event.name] end end
class Game_Event attr_reader :event # accès à l'évènement end
#=============================================================================== # ▼ Scene_Title #------------------------------------------------------------------------------- # On génère dans Scene_Title la base de données des magasins. #=============================================================================== class Scene_Title alias shop_command_new_game command_new_game def command_new_game $game_shops = { } for shop in Database::Shops dummy = Game_Shop.new(shop.gold, shop.items, shop.weapons, shop.armors) $game_shops[shop.name] = dummy end shop_command_new_game end end
#=============================================================================== # ▼ Scene_Save #------------------------------------------------------------------------------- # Il faut sauvegarder l'état actuel des caisses et stocks des magasins. #=============================================================================== class Scene_Save #============================================================================= # ● write_save_data # file : nom du fichier de sauvegarde #----------------------------------------------------------------------------- # On sauvegarde l'état des caisses et stocks des magasins. #============================================================================= alias shop_write_save_data write_save_data def write_save_data(file) shop_write_save_data(file) Marshal.dump($game_shops, file) end end
#=============================================================================== # ▼ Scene_Load #------------------------------------------------------------------------------- # Il faut charger l'état actuel des caisses et stocks des magasins. #=============================================================================== class Scene_Load #============================================================================= # ● read_data # file : nom du fichier où se trouvent les données à charger #----------------------------------------------------------------------------- # On charge l'état dans lequel se trouvaient # les magasins au moment de la sauvegarde. #============================================================================= alias shop_read_save_data read_save_data def read_save_data(file) shop_read_save_data(file) $game_shops = Marshal.load(file) end end
#=============================================================================== # ▼ Window_ShopBuy #------------------------------------------------------------------------------- # On redéfinit des méthodes de cette classe pour afficher # non plus $game_temp.shop_goods mais les obejts de $game_temp.game_shop. #=============================================================================== class Window_ShopBuy < Window_Selectable
#============================================================================= # ● initialize # bidon : un attribut qui n'est plus utilisé #----------------------------------------------------------------------------- # Méthode d'initialisation de la fenêtre. #============================================================================= def initialize(bidon) super(0, 128, 368, 352) refresh self.index = 0 end
#============================================================================= # ● refresh #----------------------------------------------------------------------------- # Méthode qui permet d'afficher les objets de $game_temp.game_shop #============================================================================= def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for key in $game_temp.game_shop.items.keys item = $data_items[key] if item != nil && $game_temp.game_shop.items[key] > 0 @data.push(item) end end for key in $game_temp.game_shop.weapons.keys item = $data_weapons[key] if item != nil && $game_temp.game_shop.weapons[key] > 0 @data.push(item) end end for key in $game_temp.game_shop.armors.keys item = $data_armors[key] if item != nil && $game_temp.game_shop.armors[key] > 0 @data.push(item) 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
end
#=============================================================================== # ▼ Scene_Shop #------------------------------------------------------------------------------- # On redéfinit des méthodes de cette classe pour pouvoir # gérer la caisse et le stock de $game_temp.game_shop. #=============================================================================== class Scene_Shop #============================================================================= # ● update_buy #----------------------------------------------------------------------------- # Gestion de l'achat d'objets. #============================================================================= 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 @help_window.set_text("") return end if Input.trigger?(Input::C) @item = @buy_window.item if @item == nil or @item.price > $game_party.gold $game_system.se_play($data_system.buzzer_se) return end case @item when RPG::Item party_number = $game_party.item_number(@item.id) when RPG::Weapon party_number = $game_party.weapon_number(@item.id) when RPG::Armor party_number = $game_party.armor_number(@item.id) end if party_number == 99 $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) case @item when RPG::Item shop_number = $game_temp.game_shop.item_number(@item.id) when RPG::Weapon shop_number = $game_temp.game_shop.weapon_number(@item.id) when RPG::Armor shop_number = $game_temp.game_shop.armor_number(@item.id) end max = @item.price == 0 ? 99 : $game_party.gold / @item.price max = [max, 99 - party_number, shop_number].min @buy_window.active = false @buy_window.visible = false @number_window.set(@item, max, @item.price) @number_window.active = true @number_window.visible = true end end #============================================================================= # ● update_sell #----------------------------------------------------------------------------- # Gestion de la vente d'objets. #============================================================================= def update_sell if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @command_window.active = true @dummy_window.visible = true @sell_window.active = false @sell_window.visible = false @status_window.item = nil @help_window.set_text("") return end if Input.trigger?(Input::C) @item = @sell_window.item @status_window.item = @item if @item == nil or @item.price == 0 or (@item.price/2) > $game_temp.game_shop.gold $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) 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 max = number @sell_window.active = false @sell_window.visible = false @number_window.set(@item, max, @item.price / 2) @number_window.active = true @number_window.visible = true @status_window.visible = true end end #============================================================================= # ● update_number #----------------------------------------------------------------------------- # Gestion du nombre d'objets à acheter ou vendre. #============================================================================= 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 $game_party.lose_gold(@number_window.number * @item.price) $game_temp.game_shop.gain_gold(@number_window.number * @item.price) case @item when RPG::Item $game_party.gain_item(@item.id, @number_window.number) $game_temp.game_shop.lose_item(@item.id, @number_window.number) when RPG::Weapon $game_party.gain_weapon(@item.id, @number_window.number) $game_temp.game_shop.lose_weapon(@item.id, @number_window.number) when RPG::Armor $game_party.gain_armor(@item.id, @number_window.number) $game_temp.game_shop.lose_armor(@item.id, @number_window.number) end @gold_window.refresh @buy_window.refresh @status_window.refresh @buy_window.active = true @buy_window.visible = true when 1 $game_party.gain_gold(@number_window.number * (@item.price / 2)) $game_temp.game_shop.lose_gold(@number_window.number * (@item.price / 2)) case @item when RPG::Item $game_party.lose_item(@item.id, @number_window.number) $game_temp.game_shop.gain_item(@item.id, @number_window.number) when RPG::Weapon $game_party.lose_weapon(@item.id, @number_window.number) $game_temp.game_shop.gain_weapon(@item.id, @number_window.number) when RPG::Armor $game_party.lose_armor(@item.id, @number_window.number) $game_temp.game_shop.gain_armor(@item.id, @number_window.number) end @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 end
Utilisation : Copier le Database Management dans un script au dessus de Main. Copier ce script dans un nouveau script entre Database Management et Main. Lancer une première fois votre jeu. Le jeu créera ainsi un dossier nommer "Shops Data" dans le dossier de votre jeu, contenant un fichier "template.dbsl". Il suffit de copier le template et de remplir les différents champs et ceci autant de fois qu'il faut de magasin. Appel de magasin : Il suffit de créer un événement avec le nom d'un magasin, et d'appeler dans ses commandes un magasin en lui passant des objets à vendre qui ne seront pas pris en compte. Exemple : Créer un fichier "ChezDeDe.dbsl" dans le dossier "Shops Data". Remplisser le avec le contenu : - Code:
-
Database::Shops name: "Chez Dede" gold: 2000 items: {1 => 2} weapons: {1 => 1} armors: {1 => 3}
Créer une événement et nommer le "Chez Dede", comme le champ "name" du fichier : Celui-ci vendra : 2 potions (items: {1 => 2}), 1 épée de bronze (weapons: {1 => 1}) et 3 bouclier de bronze (armors: {1 => 3}) |
| | | Mat Paysan (niveau 2)
Messages postés : 17 Date d'inscription : 05/09/2013 Jauge LPC :
| Sujet: Re: [XP] Shop Stock Ven 6 Sep 2013 - 23:24 | |
| Adapteur pour Advanced Items :Ce script n'est à utiliser que lors de l'utilisation du script Advanced Items. - Code:
-
#=============================================================================== # ▼ Game_Shop #=============================================================================== class Game_Shop #============================================================================= # ● initialize #============================================================================= def initialize(gold, items, weapons, armors) @gold = gold
@items = [] @weapons = [] @armors = []
for tab_item in items for i in 1..tab_item[1] @items.push(Game_Item.new(tab_item[0])) end end for tab_weapon in weapons for i in 1..tab_weapon[1] @weapons.push(Game_Weapon.new(tab_weapon[0])) end end for tab_armor in armors for i in 1..tab_armor[1] @armors.push(Game_Armor.new(tab_armor[0])) end end end #============================================================================= # ● gain_item # item : item ajouté #============================================================================= def gain_item(item) @items.push(item) end #============================================================================= # ● lose_item # item : item retiré #============================================================================= def lose_item(item) @items.delete(item) end #============================================================================= # ● gain_weapon # weapon : weapon ajouté #============================================================================= def gain_weapon(weapon) @weapons.push(weapon) end #============================================================================= # ● lose_weapon # weapon : weapon retiré #============================================================================= def lose_weapon(weapon) @weapons.delete(weapon) end #============================================================================= # ● lose_armor # armor : armor ajouté #============================================================================= def gain_armor(armor) @armors.push(armor) end #============================================================================= # ● lose_armor # armor : armor retiré #============================================================================= def lose_armor(armor) @armors.delete(armor) end end
#=============================================================================== # ▼ Window_ShopBuy #=============================================================================== class Window_ShopBuy < Window_Selectable
def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = $game_temp.game_shop.items + $game_temp.game_shop.weapons + $game_temp.game_shop.armors @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] if item.price <= $game_party.gold self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = 4 y = index * 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(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) end end
#=============================================================================== # ▼ Window_ShopStatus #=============================================================================== class Window_ShopStatus < Window_Base #============================================================================= # ● refresh #============================================================================= def refresh self.contents.clear if @sprite1 != nil @sprite1.dispose @sprite1 = nil end if @sprite2 != nil @sprite2.dispose @sprite2 = nil end if @sprite3 != nil @sprite3.dispose @sprite3 = nil end if @sprite4 != nil @sprite4.dispose @sprite4 = nil end self.contents.font.name = "Arial" self.contents.font.size = 24 if @item == nil return end if @item.is_a?(Game_Item) number = $game_party.item_number(@item.id) end if @item.is_a?(Game_Weapon) number = $game_party.weapon_number(@item.id) end if @item.is_a?(Game_Armor) number = $game_party.armor_number(@item.id) end
self.contents.font.color = system_color self.contents.draw_text(4, 0, 200, 32, "Possédés :") self.contents.font.color = normal_color self.contents.draw_text(204, 0, 32, 32, number.to_s, 2) if @item.is_a?(Game_Item) @walk = [false, false, false, false] return end for i in 0...$game_party.actors.size actor = $game_party.actors[i] if @item.is_a?(Game_Weapon) item1 = actor.weapon elsif @item.kind == 0 item1 = actor.armor1 elsif @item.kind == 1 item1 = actor.armor2 elsif @item.kind == 2 item1 = actor.armor3 else item1 = actor.armor4 end if not actor.equippable?(@item) @walk[i] = false draw_actor_graphic(actor, 380, 194 + 64 * i, i, 0) self.contents.font.name = "Arial" self.contents.font.size = 24 self.contents.font.color = normal_color self.contents.draw_text(32, 54 + 64 * i, 180, 32, "Ne peut pas être équipé") end if actor.equippable?(@item) @walk[i] = true draw_actor_graphic(actor, 380, 194 + 64 * i, i, 1) atk1 = 0 atk2 = 0 eva1 = 0 eva2 = 0 str1 = 0 str2 = 0 dex1 = 0 dex2 = 0 agi1 = 0 agi2 = 0 int1 = 0 int2 = 0 pdf1 = 0 pdf2 = 0 mdf1 = 0 mdf2 = 0 eva1 = 0 eva2 = 0 str1 = item1 != nil ? item1.str_plus : 0 str2 = @item != nil ? @item.str_plus : 0 dex1 = item1 != nil ? item1.dex_plus : 0 dex2 = @item != nil ? @item.dex_plus : 0 agi1 = item1 != nil ? item1.agi_plus : 0 agi2 = @item != nil ? @item.agi_plus : 0 int1 = item1 != nil ? item1.int_plus : 0 int2 = @item != nil ? @item.int_plus : 0 pdf1 = item1 != nil ? item1.pdef : 0 pdf2 = @item != nil ? @item.pdef : 0 mdf1 = item1 != nil ? item1.mdef : 0 mdf2 = @item != nil ? @item.mdef : 0 if @item.is_a?(Game_Weapon) atk1 = item1 != nil ? item1.atk : 0 atk2 = @item != nil ? @item.atk : 0 end if @item.is_a?(Game_Armor) eva1 = item1 != nil ? item1.eva : 0 eva2 = @item != nil ? @item.eva : 0 end str_change = str2 - str1 dex_change = dex2 - dex1 agi_change = agi2 - agi1 int_change = int2 - int1 pdf_change = pdf2 - pdf1 mdf_change = mdf2 - mdf1 atk_change = atk2 - atk1 eva_change = eva2 - eva1 if item1 == nil name1 = "" else name1 = item1.name end if @item == nil name2 = "" else name2 = @item.name end if str_change == 0 && dex_change == 0 && agi_change == 0 && pdf_change == 0 && mdf_change == 0 && atk_change == 0 && eva_change == 0 && name1 != name2 self.contents.draw_text(32, 54 + 64 * i, 200, 32, "Pas de changements") end if name1 == name2 self.contents.draw_text(32, 54 + 64 * i, 200, 32, "Déjà équipé") end self.contents.font.name = "Arial" self.contents.font.size = 16 self.contents.font.color = normal_color if @item.is_a?(Game_Weapon) && atk_change != 0 self.contents.draw_text(32, 42 + 64 * i, 32, 32, "PAt") end if @item.is_a?(Game_Armor) && eva_change != 0 self.contents.draw_text(32, 42 + 64 * i, 32, 32, "Esq") end if pdf_change != 0 self.contents.draw_text(32, 58 + 64 * i, 32, 32, "DfP") end if mdf_change != 0 self.contents.draw_text(32, 74 + 64 * i, 32, 32, "DfM") end if str_change != 0 self.contents.draw_text(112, 42 + 64 * i, 32, 32, "Att") end if dex_change != 0 self.contents.draw_text(112, 58 + 64 * i, 32, 32, "Def") end if agi_change != 0 self.contents.draw_text(112, 74 + 64 * i, 32, 32, "Agi") end if str_change != 0 self.contents.draw_text(192, 42 + 64 * i, 32, 32, "Int") end if @item.is_a?(Game_Weapon) && atk_change > 0 self.contents.font.color = up_color s = atk_change.abs.to_s self.contents.draw_text(60, 42 + 64 * i, 4, 32, "+") self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2) end if @item.is_a?(Game_Weapon) && atk_change < 0 self.contents.font.color = down_color s = atk_change.abs.to_s self.contents.draw_text(60, 42 + 64 * i, 4, 32, "-") self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2) end if @item.is_a?(Game_Armor) && eva_change > 0 self.contents.font.color = up_color s = eva_change.abs.to_s self.contents.draw_text(60, 42 + 64 * i, 4, 32, "+") self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2) end if @item.is_a?(Game_Armor) && eva_change < 0 self.contents.font.color = down_color s = eva_change.abs.to_s self.contents.draw_text(60, 42 + 64 * i, 4, 32, "-") self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2) end if pdf_change > 0 self.contents.font.color = up_color s = pdf_change.abs.to_s self.contents.draw_text(60, 58 + 64 * i, 4, 32, "+") self.contents.draw_text(62, 58 + 64 * i, 24, 32, s, 2) end if pdf_change < 0 self.contents.font.color = down_color s = pdf_change.abs.to_s self.contents.draw_text(60, 58 + 64 * i, 4, 32, "-") self.contents.draw_text(62, 58 + 64 * i, 24, 32, s, 2) end if mdf_change > 0 self.contents.font.color = up_color s = mdf_change.abs.to_s self.contents.draw_text(60, 74 + 64 * i, 4, 32, "+") self.contents.draw_text(62, 74 + 64 * i, 24, 32, s, 2) end if mdf_change < 0 self.contents.font.color = down_color s = mdf_change.abs.to_s self.contents.draw_text(60, 74 + 64 * i, 4, 32, "-") self.contents.draw_text(62, 74 + 64 * i, 24, 32, s, 2) end if str_change > 0 self.contents.font.color = up_color s = str_change.abs.to_s self.contents.draw_text(140, 42 + 64 * i, 4, 32, "+") self.contents.draw_text(142, 42 + 64 * i, 24, 32, s, 2) end if str_change < 0 self.contents.font.color = down_color s = str_change.abs.to_s self.contents.draw_text(140, 42 + 64 * i, 4, 32, "-") self.contents.draw_text(142, 42 + 64 * i, 24, 32, s, 2) end if dex_change > 0 self.contents.font.color = up_color s = dex_change.abs.to_s self.contents.draw_text(140, 58 + 64 * i, 4, 32, "+") self.contents.draw_text(142, 58 + 64 * i, 24, 32, s, 2) end if dex_change < 0 self.contents.font.color = down_color s = dex_change.abs.to_s self.contents.draw_text(140, 58 + 64 * i, 4, 32, "-") self.contents.draw_text(142, 58 + 64 * i, 24, 32, s, 2) end if agi_change > 0 self.contents.font.color = up_color s = agi_change.abs.to_s self.contents.draw_text(140, 74 + 64 * i, 4, 32, "+") self.contents.draw_text(142, 74 + 64 * i, 24, 32, s, 2) end if agi_change < 0 self.contents.font.color = down_color s = agi_change.abs.to_s self.contents.draw_text(140, 74 + 64 * i, 4, 32, "-") self.contents.draw_text(142, 74 + 64 * i, 24, 32, s, 2) end if int_change > 0 self.contents.font.color = up_color s = int_change.abs.to_s self.contents.draw_text(214, 42 + 64 * i, 4, 32, "+") self.contents.draw_text(216, 42 + 64 * i, 24, 32, s, 2) end if int_change < 0 self.contents.font.color = down_color s = int_change.abs.to_s self.contents.draw_text(214, 42 + 64 * i, 4, 32, "-") self.contents.draw_text(216, 42 + 64 * i, 24, 32, s, 2) end end end end end
#=============================================================================== # ▼ Scene_Shop #=============================================================================== class Scene_Shop #============================================================================= # ● update_buy #============================================================================= 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 @help_window.set_text("") return end if Input.trigger?(Input::C) @item = @buy_window.item if @item == nil or @item.price > $game_party.gold $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $game_temp.game_shop.gain_gold(@item.price) $game_party.lose_gold(@item.price) if @item.is_a?(Game_Item) $game_party.gain_item(@item) $game_temp.game_shop.lose_item(@item) end if @item.is_a?(Game_Weapon) $game_party.gain_weapon(@item) $game_temp.game_shop.lose_weapon(@item) end if @item.is_a?(Game_Armor) $game_party.gain_armor(@item) $game_temp.game_shop.lose_armor(@item) end @buy_window.refresh @status_window.refresh @gold_window.refresh end end #============================================================================= # ● update_sell #============================================================================= def update_sell if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @command_window.active = true @dummy_window.visible = true @sell_window.active = false @sell_window.visible = false @status_window.item = nil @help_window.set_text("") return end if Input.trigger?(Input::C) @item = @sell_window.item @status_window.item = @item if @item == nil or @item.price == 0 or (@item.price/2) > $game_temp.game_shop.gold $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) $game_temp.game_shop.lose_gold(@item.price / 2) $game_party.gain_gold(@item.price / 2) if @item.is_a?(Game_Item) $game_temp.game_shop.gain_item(@item) $game_party.lose_item(@item) end if @item.is_a?(Game_Weapon) $game_temp.game_shop.gain_weapon(@item) $game_party.lose_weapon(@item) end if @item.is_a?(Game_Armor) $game_temp.game_shop.gain_armor(@item) $game_party.lose_armor(@item) end
@sell_window.refresh @gold_window.refresh end end end |
| | | lidenvice Ancien staffeux
Messages postés : 1955 Date d'inscription : 18/10/2011 Jauge LPC :
| Sujet: Re: [XP] Shop Stock Sam 7 Sep 2013 - 5:06 | |
| Merci pour ce partage je te donne les points |
| | | Zexion Administrateur
Messages postés : 6228 Date d'inscription : 04/01/2012 Jauge LPC :
| Sujet: Re: [XP] Shop Stock Sam 7 Sep 2013 - 5:19 | |
| Merci à toi, c'est une dimension trop souvent négligée dans les RPG qui fait qu'il est parfois trop facile de s'enrichir en vendant pléthore d'objets. Je suis sûr que ça servira à du monde. |
| | | Contenu sponsorisé
| Sujet: Re: [XP] Shop Stock | |
| |
| | | |
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |