 RPG Maker VX/VXAce - La Communauté - v3 Le forum de la communauté francophone de making. News, entraide, ressources, venez nombreux! Spécialisés dans RPG Maker VX et RPG Maker VXAce |
           
 
| | Script Magasin de compétence [Résolu] | |
| | Auteur | Message |
|---|
Varkan Etudiant


Nombre de messages: 292 Capacités: bon Distinction: aucune Date d'inscription: 27/01/2010
 | Sujet: Script Magasin de compétence [Résolu] Jeu 29 Juil - 18:17 | |
| Yop yop !! Je viens ici car j'ai trouvé un problème sur le script suivant que j'utilise : | Spoiler: | | | #============================================================================== # 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
Comment l'utiliser:
Vous allez ajouter "$ skill_shop = [Id of Skill]" Pour appel de script pour définir "id" de compétences pour les vendre. Vous allez ajouter "$ scene = Scene_Skill_Shop.new" To Call Shop Skill Windows.
Exemple: skill_shop = $ [1,2,3,6,7] scène $ = Scene_Skill_Shop.new
Vous pouvez activer l'option / off sous "# Setting". Vous pouvez définir un texte à utiliser dans le magasin de compétences sous la rubrique «Apprendre # Texte". Vous pouvez ajouter «[p-Prix-]" pour l'ensemble de compétences des prix à la note en compétences de base de données. Exemple: Pour l'ensemble des prix à 150
[p150]
Vous pouvez définir des compétences que le combattant chaque personne peut apprendre sous "# Hero données".
Vous aurez la mise ressembler à cela dans Hero de données [ID d'habileté, d'exigence de niveau pour apprendre]
Exemple: si vous voulez acteur id 1 peuvent apprendre des compétences id 1 à Lv 4 et je peux apprendre des compétences id 2 chez LV 3. Vous aurez la mise ressembler à ceci
1 => [code d'identification de Acteur [1,4], [2,3], ],
=end #============================================================================== #module SKILL_SHOP #==============================================================================
module SKILL_SHOP # Setting Wait_Lv_Up = true # Wait 1 Lv up for use skill from buy Show_cha = true # Show Charactor Graphic in Select Window # Learn Text How_Learn = "À quel héros ?" Can_Learn = "Peut apprendre" Can_Learn_Lv = "Il faut le Niv." Cant_Learn = "" Learnt = "Appris" Teach = "Apprendre" Cancel = "Annuler" Next_Lv = "Prochain Niv." 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 => [ #Virginn [1,1],[2,4],[3,6,],[4,0], ], 2 => [ #Kiara [1,1],[2,4],[3,6,],[116,0], ], 5 => [ #Éqween [1,1],[2,4],[3,6,],[4,0],[33,10] ], 7 => [ #Britany [1,1],[2,4],[3,6,],[4,0],[110,10] ], # 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
#============================================================================== #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 |
Voici le bug que sa me fait une fois la compétence achetée :

La compétence peut être utilisé en combat mais bon cette affichage n'est pas très propre on va dire...
Merci d'avance pour votre aide.
Dernière édition par Varkan le Ven 10 Sep - 15:13, édité 1 fois |
|  | | Black' Philosophe


Nombre de messages: 352 Localisation: Far, far away Capacités: bon Distinction: aucune Date d'inscription: 19/04/2010
 | Sujet: Re: Script Magasin de compétence [Résolu] Ven 30 Juil - 16:30 | |
| Je connaît pas de solution en script, mais peut-être que le problème vient de la taille du nom de ta compétence, [mode_Yoda] après mon initiation au RGSS, viendrait te voir je ferait (DONG) [/Mode_Yoda]
|
|  | | Varkan Etudiant


Nombre de messages: 292 Capacités: bon Distinction: aucune Date d'inscription: 27/01/2010
 | Sujet: Re: Script Magasin de compétence [Résolu] Ven 30 Juil - 16:33 | |
| Re =D
Non même avec les compétences qui ont un nom plus court ^^ |
|  | | Balbereith Modérateur


Nombre de messages: 3718 Age: 20 Localisation: dans l'ombre... Capacités: assez bon Avertissements: Avertissements infinis |-) Distinction: Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires ) [Coco' ] Date d'inscription: 13/05/2009
 | Sujet: Re: Script Magasin de compétence [Résolu] Ven 30 Juil - 17:48 | |
| | Code: | Next_Lv = "Prochain Niv."
|
Change c'est çà qui pose problème ton indiquation de niveau et trop grand, met une truc du genre :
Le script n'a aucun problème c'est juste que le texte est trop long ^^_________________ All the world's a stage / And all the men and women merely players : / They have their exits and their entrances ; William Shakespeare, As You Like ItLibido sentiendi, libido sciendi, libido domandi... Tel est l'instinct des Hommes...  |
|  | | Varkan Etudiant


Nombre de messages: 292 Capacités: bon Distinction: aucune Date d'inscription: 27/01/2010
 | Sujet: Re: Script Magasin de compétence [Résolu] Ven 30 Juil - 17:58 | |
| En fait le soucis c'est que ça ne devrait pas écrire "proch. niv" car la compétence je les mis pour le lvl 4 et là je suis lvl 5. | Code: | 1 => [ #Virginn
[1,1],[2,4],[3,6,],[4,0], |
le premier chiffre c'est l'ID du skill et le 2ème, le niveau ou je peux l'apprendre.
Et là c'est 2,4 ce qui veut dire le skill 2 (celui qui est en image) et le niv. 4
|
|  | | Blockade Chevalier


Nombre de messages: 194 Age: 21 Capacités: confirmé Distinction: aucune Date d'inscription: 06/09/2008
 | Sujet: Re: Script Magasin de compétence [Résolu] Ven 30 Juil - 19:10 | |
| Erreur dans ton bout de code regarde t'a une virgule en trop : | Code: | 1 => [ #Virginn
[1,1],[2,4],[3,6,<=],[4,0], |
Essaye avec ca p'tet :
| Code: | 1 => [ #Virginn
[1,1],[2,4],[3,6],[4,0], |
|
|  | | Varkan Etudiant


Nombre de messages: 292 Capacités: bon Distinction: aucune Date d'inscription: 27/01/2010
 | Sujet: Re: Script Magasin de compétence [Résolu] Mar 3 Aoû - 17:50 | |
| Re blockade ^^
Alors je viens d'essayer et ce n'est malheureusement pas ça. |
|  | | Balbereith Modérateur


Nombre de messages: 3718 Age: 20 Localisation: dans l'ombre... Capacités: assez bon Avertissements: Avertissements infinis |-) Distinction: Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires ) [Coco' ] Date d'inscription: 13/05/2009
 | Sujet: Re: Script Magasin de compétence [Résolu] Mer 18 Aoû - 12:58 | |
| Résolu ou non ? _________________ All the world's a stage / And all the men and women merely players : / They have their exits and their entrances ; William Shakespeare, As You Like ItLibido sentiendi, libido sciendi, libido domandi... Tel est l'instinct des Hommes...  |
|  | | Varkan Etudiant


Nombre de messages: 292 Capacités: bon Distinction: aucune Date d'inscription: 27/01/2010
 | Sujet: Re: Script Magasin de compétence [Résolu] Mar 31 Aoû - 7:11 | |
| Non malheureusement
Edit : Une personne aurait la solution ? |
|  | | Arkhanos Artisan


Nombre de messages: 66 Age: 19 Localisation: Derrière toi! Capacités: moyen Distinction: aucune Date d'inscription: 25/08/2010
 | Sujet: Re: Script Magasin de compétence [Résolu] Mar 31 Aoû - 10:59 | |
| Et ceci? | Spoiler: | | | module SKILL_SHOP # Setting Wait_Lv_Up = true # Wait 1 Lv up for use skill from buy Show_cha = true # Show Charactor Graphic in Select Window |
Mets Wait_Lv_Up = false pour voir, il semble que cette partie du script te demande de monter un niveau pour utiliser un skill que tu viens d'acheter |
|  | | Varkan Etudiant


Nombre de messages: 292 Capacités: bon Distinction: aucune Date d'inscription: 27/01/2010
 | Sujet: Re: Script Magasin de compétence [Résolu] Ven 10 Sep - 15:12 | |
| Merci c'est réglé, en fait je cherchais compliqué.... bref merci à vous tous. |
|  | | Dudu' Hamstérophile


Nombre de messages: 2060 Age: 22 Capacités: bon Distinction: Apprenti KGB-boy en avenir
[Coco' ]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu'] Date d'inscription: 22/06/2009
 | Sujet: Re: Script Magasin de compétence [Résolu] Ven 10 Sep - 20:17 | |
| |
|  | | | | Script Magasin de compétence [Résolu] | |
|
Sujets similaires |  |
|
| | Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
|
|