Avertissements : 3Inscrit le : 15/03/2008 Messages : 80
Sujet: [VX] Magasin de Compétences Ven 27 Juin 2008 - 20:48
Magasin de Skills
Auteur : Nechigawara Sanzenin
Informations : Ce script sert à faire un magasin de compétences, en gros un magasin ou on achéte les compétences. Il y a des compétences ou il faut un certain niveau pour l'acheter.
Instructions : Vous devez mettre dans un PNJ en appel de script ceci : $skill_shop = [1,2,3,6,7] 1,2,3,6,7 etc... étant les compétences dans votre base de données. $scene = Scene_Skill_Shop.new Pour appeler le script... Tester et fonctionnel.
Images :
Spoiler:
Le script plus bas ( pas assez de places ).
Soshi
Vagabond Lv.5
Avertissements : 3Inscrit le : 15/03/2008 Messages : 80
Sujet: Re: [VX] Magasin de Compétences Ven 27 Juin 2008 - 20:49
Scripts :
Spoiler:
Code:
#============================================================================== # Skill Shop for RMVX Ver 3.1 #============================================================================== #MediaFire Hosting# By Nechigawara Sanzenin # WARNING!! : This script can use on RPG Maker VX Only!! (XP Not Support) #============================================================================== # Buy Skill Option For RMVX #============================================================================== #Version Log #============================================================================== #2.0 Add Level requirement - Change Hero Select Window #3.0 Change How to set Price , Add wait Level Up option #3.0 Fixed Bug, Edit Price Key Word #============================================================================== =begin
How to Use:
You will add "$skill_shop =[Id of Skill]" To Call Script to set id of skill for sell. You will add "$scene = Scene_Skill_Shop.new" To Call Skill Shop Windows.
You can turn on/off option under "# Setting". You can set text to use in Skill Shop under "# Learn Text". You can add "[p-Price-]" for set Skill Price at Note in Skill Database. Example : For set Price to 150
[p150]
You can set Skill that the fighter each person can learn under "# Hero Data".
You will setting look like this in Hero Data [ID of skill, Level requirement for learn]
Example : if you want actor id 1 can learn skill id 1 at Lv 4 and can learn skill id 2 at lv 3. You will setting look like this
1 => [ #Id of Actor
[1,4],[2,3],
],
=end #============================================================================== #module SKILL_SHOP #============================================================================== module SKILL_SHOP # Setting Wait_Lv_Up = false # Wait 1 Lv up for use skill from buy Show_cha = false # Show Charactor Graphic in Select Window # Learn Text How_Learn = "À quel héros ?" Can_Learn = "Peut apprendre" Can_Learn_Lv = "Il faut le Lv" Cant_Learn = "" Learnt = "Appris" Teach = "Apprendre" Cancel = "Annuler" Next_Lv = "Prochain Lv" Can_use = "%s peut employer maintenant !" # Price Data For Non Set PRICE = 200 # Hero Data SKILL_BUY = { # Add what skill can hero buy Here # [ID of skill,Level]
1 => [ #Id of Actor
[1,4],[2,3],[3,1],
],
2 => [ #Id of Actor
[1,4],[2,3],[3,1],
],
# End } # Add Price def self.skill_price(id) text = $data_skills[id].note text.scan(/\[p([0-9]+)\]/) if $1.to_i != 0 then price = $1.to_i else price = PRICE end return price end # Add Hero id def self.skill_buy(id) if SKILL_BUY.include?(id) return SKILL_BUY[id] else return [] end end end #============================================================================== #class Game_Actor #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- def setup(actor_id) actor = $data_actors[actor_id] @actor_id = actor_id @name = actor.name @character_name = actor.character_name @character_index = actor.character_index @face_name = actor.face_name @face_index = actor.face_index @class_id = actor.class_id @weapon_id = actor.weapon_id @armor1_id = actor.armor1_id
@armor2_id = actor.armor2_id @armor3_id = actor.armor3_id @armor4_id = actor.armor4_id @level = actor.initial_level @exp_list = Array.new(101) make_exp_list @exp = @exp_list[@level] @skills = [] @le_skills = [] @le = [] for i in self.class.learnings learn_skill(i.skill_id) if i.level <= @level end clear_extra_values recover_all end #-------------------------------------------------------------------------- def le_skills result = [] for i in @le_skills result.push($data_skills[i]) end return result end #-------------------------------------------------------------------------- def learn_le_skill(skill_id) unless skill_learn?($data_skills[skill_id]) @le_skills.push(skill_id) @le_skills.sort! end end #-------------------------------------------------------------------------- def forget_skill(skill_id) @skills.delete(skill_id) @le_skills.delete(skill_id) end #-------------------------------------------------------------------------- def skill_learn?(skill) if @skills.include?(skill.id) return true elsif @le_skills.include?(skill.id) return true else return false end end #-------------------------------------------------------------------------- def le_learn_skill(skill_id) unless @skills.include?(skill_id) @skills.push(skill_id) @skills.sort! end end #-------------------------------------------------------------------------- def skill_can_use?(skill) return false if @le_skills.include?(skill.id) return false unless skill_learn?(skill) return super end #-------------------------------------------------------------------------- def learn?(skill) learn = skill_learn?(skill) if learn == true return false else return true end end #-------------------------------------------------------------------------- def le_skill?(skill) return @le_skills.include?(skill.id) end #-------------------------------------------------------------------------- def display_level_up(new_skills) $game_message.new_page text = sprintf(Vocab::LevelUp, @name, Vocab::level, @level) $game_message.texts.push(text) for skill in new_skills unless @le.include?(skill.id) text = sprintf(Vocab::ObtainSkill, skill.name) $game_message.texts.push(text) end end for i in 0...@le.size id = @le[i] name = $data_skills[id].name text = sprintf(SKILL_SHOP::Can_use, name) $game_message.texts.push(text) end @le = [] end #-------------------------------------------------------------------------- alias inc_level_up level_up def level_up inc_level_up @le = [] for i in 0...@le_skills.size id = @le_skills[i] le_learn_skill(id) @le.push(id) end @le_skills = [] end end #============================================================================== #class Window_Skill_ShopBuy #============================================================================== class Window_Skill < Window_Selectable #-------------------------------------------------------------------------- def refresh @data = [] for skill in @actor.skills @data.push(skill) if skill.id == @actor.last_skill_id self.index = @data.size - 1 end end for skill in @actor.le_skills @data.push(skill) end @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- def draw_item(index) rect = item_rect(index) self.contents.clear_rect(rect) skill = @data[index] if skill != nil rect.width -= 4 enabled = @actor.skill_can_use?(skill) draw_item_name(skill, rect.x, rect.y, enabled) if @actor.le_skill?(skill) text = SKILL_SHOP::Next_Lv else text = @actor.calc_mp_cost(skill) end self.contents.draw_text(rect, text, 2) end end end #============================================================================== #class Window_Skill_ShopBuy #============================================================================== class Window_Skill_ShopBuy < Window_Selectable #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, 304, 304) @skill_shop_goods = $skill_shop refresh self.index = 0 end #-------------------------------------------------------------------------- def skill return @data[self.index] end #-------------------------------------------------------------------------- def refresh @data = [] for i in 0...@skill_shop_goods.size skill = $data_skills[@skill_shop_goods[i]] if skill != nil @data.push(skill) end end @item_max = @data.size create_contents for i in 0...@item_max draw_item(i) end end #-------------------------------------------------------------------------- def draw_item(index) skill = @data[index] price = SKILL_SHOP.skill_price(skill.id) enabled = (price <= $game_party.gold) rect = item_rect(index) self.contents.clear_rect(rect) draw_item_name(skill, rect.x, rect.y, enabled) rect.width -= 4 self.contents.draw_text(rect, price, 2) end #-------------------------------------------------------------------------- def update_help @help_window.set_text(skill == nil ? "" : skill.description) end end
Soshi
Vagabond Lv.5
Avertissements : 3Inscrit le : 15/03/2008 Messages : 80
Sujet: Re: [VX] Magasin de Compétences Ven 27 Juin 2008 - 20:50
Suite :
Spoiler:
Code:
#============================================================================== #class Window_Skill_ShopStatus #============================================================================== class Window_Skill_ShopStatus < Window_Selectable #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, 240, 304) @item = nil refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.members.size if @item != nil self.contents.font.color = system_color self.contents.draw_text(4, 0, 200, WLH, SKILL_SHOP::How_Learn) for actor in $game_party.members x = 4 y = WLH * (2 + actor.index * 2) draw_actor_can_learn(actor, x, y) end end end #-------------------------------------------------------------------------- def draw_actor_can_learn(actor, x, y) can = false lv = false ac_lv = 0 can_learn = SKILL_SHOP.skill_buy(actor.id) id = @item.id for i in 0...can_learn.size if can_learn[i][0] == id can = true if can_learn[i][1] <= actor.level lv = true else lv = false ac_lv = can_learn[i][1] end break else can = false end end enabled = (can and lv and actor.learn?(@item)) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 if SKILL_SHOP::Show_cha name = actor.character_name index = actor.character_index size = contents.text_size(actor.name).width draw_character(name, index, x + 20 + size , y + 30) end self.contents.draw_text(x, y, 200, WLH, actor.name) if can == false text = SKILL_SHOP::Cant_Learn elsif can == true and lv == false ac = ac_lv.to_s text = SKILL_SHOP::Can_Learn_Lv + " " + ac + "+" elsif actor.learn?(@item) == false text = SKILL_SHOP::Learnt else text = SKILL_SHOP::Can_Learn end self.contents.draw_text(x, y, 200, WLH, text, 2) end #-------------------------------------------------------------------------- def item=(item) if @item != item @item = item refresh end end #-------------------------------------------------------------------------- def update_cursor if @index < 0 self.cursor_rect.empty elsif @index < @item_max y = WLH * (2 + @index * 2) unless SKILL_SHOP::Show_cha self.cursor_rect.set(0, y , contents.width, WLH) else self.cursor_rect.set(0, y - 4, contents.width,34) end end end end #============================================================================== #class Scene_Skill_Shop #============================================================================== class Scene_Skill_Shop < Scene_Base #-------------------------------------------------------------------------- def start super create_menu_background create_command_window @viewport = Viewport.new(0, 0, 544, 416) @help_window = Window_Help.new @gold_window = Window_Gold.new(384, 56) @dummy_window = Window_Base.new(0, 112, 544, 304) @buy_window = Window_Skill_ShopBuy.new(0, 112) @buy_window.active = false @buy_window.visible = false @buy_window.help_window = @help_window @status_window = Window_Skill_ShopStatus.new(304, 112) @status_window.visible = false @status_window.active = false end #-------------------------------------------------------------------------- def terminate super dispose_menu_background dispose_command_window @help_window.dispose @gold_window.dispose @dummy_window.dispose @buy_window.dispose @status_window.dispose end #-------------------------------------------------------------------------- def update super update_menu_background @help_window.update @command_window.update @gold_window.update @dummy_window.update @buy_window.update @status_window.update if @command_window.active update_command_selection elsif @buy_window.active update_buy_selection elsif @status_window.active update_target_selection end end #-------------------------------------------------------------------------- def create_command_window s1 = SKILL_SHOP::Teach s2 = SKILL_SHOP::Cancel @command_window = Window_Command.new(384, [s1, s2], 2) @command_window.y = 56 end #-------------------------------------------------------------------------- def dispose_command_window @command_window.dispose end #-------------------------------------------------------------------------- def update_command_selection @help_window.set_text("") if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) case @command_window.index when 0 Sound.play_decision @command_window.active = false @dummy_window.visible = false @buy_window.active = true @buy_window.visible = true @buy_window.refresh @status_window.visible = true when 1 Sound.play_decision $scene = Scene_Map.new end end end #-------------------------------------------------------------------------- def update_buy_selection @status_window.item = @buy_window.skill if Input.trigger?(Input::B) Sound.play_cancel @command_window.active = true @dummy_window.visible = true @buy_window.active = false @buy_window.visible = false @status_window.visible = false @status_window.item = nil return end if Input.trigger?(Input::C) @item = @buy_window.skill @price = SKILL_SHOP.skill_price(@item.id) enabled = (@price <= $game_party.gold) if not enabled Sound.play_buzzer else Sound.play_decision show_target_window end end end #-------------------------------------------------------------------------- def update_target_selection if Input.trigger?(Input::B) Sound.play_cancel hide_target_window elsif Input.trigger?(Input::C) @actor = $game_party.members[@status_window.index] can = false lv = false can_learn = SKILL_SHOP.skill_buy(@actor.id) id = @item.id for i in 0...can_learn.size if can_learn[i][0] == id can = true if can_learn[i][1] <= @actor.level lv = true else lv = false end break else can = false end end enabled = (can and lv and @actor.learn?(@item)) if not enabled Sound.play_buzzer else learn_target(@item.id) end end end #-------------------------------------------------------------------------- def learn_target(skill_id) Sound.play_shop unless SKILL_SHOP::Wait_Lv_Up @actor.learn_skill(skill_id) else @actor.learn_le_skill(skill_id) end $game_party.lose_gold(@price) @buy_window.refresh @gold_window.refresh @status_window.refresh hide_target_window end #-------------------------------------------------------------------------- def show_target_window @buy_window.active = false @status_window.active = true @status_window.index = 0 end #-------------------------------------------------------------------------- def hide_target_window @buy_window.active = true @status_window.active = false @status_window.index =- 1 end end
Le script en anglais mais il faut juste traduire de la ligne 58 à la 66. ( anglais très basics. ) Voilà les vrai phrases en anglais car les miennes sont fausses ( c'est juste pour pas faire long ) :