Voyageur Lv.10
Age : 42 Inscrit le : 04/12/2008 Messages : 383
| Sujet: [VX] Competences via accessoires Ven 5 Déc 2008 - 11:27 | |
| Nom : Competences via accessoires Auteur : ASHKA Info : Ce script est à la fois une mise à jour et un regroupement de mes scripts "Cristaux de competences". Au programme : - Pas de bugs ( enfin, j'espere ... ). - Plus de possibilité de configuration. - Peu de risque d'imcompatibilité. - Deux scripts en un !! - Code:
-
################################### # # Competences via accessoires # ( Version 2.0 ) # ################################### =begin MODE D'EMPLOI Ce script est à la fois une mise à jour et un regroupement des scripts : - "Accessoires permettant d'acquerir des comptences" - "Accessoires permettant d'utiliser des competences" Dans le premier, à l'instar de FF9, les competences etaient toujours utilisables même apres avoir retiré l'accessoire. Dans le second, à l'instar de FF7 ( matéria ), les competences n'etaient plus utilisables apres avoir retiré l'accessoire. Dans ce script, il est possible d'avoir des accessoires des deux types. Par defaut, les accessoires sont de type "FF9". Pour avoir un accessoires de type "FF7", il suffit d'inscrire USE_SLT dans la note. Les accessoires de type "FF7" doivent etre des exemplaires uniques !! ( Pour en avoir plusieurs identiques, créez en plusieurs dans la base de donnée ) Pour le reste, les deux types d'accessoires se configurent de la même façon. L'experience accumulé par les accessoires depend des ennemis rencontrés. Pour determiner le montant d'experience donné par un monstre, il suffit d'inscrire : # PSA=2 ( tout collé ) dans la note ( il donnera ici deux points ). =end ################################### module HK_skillacc # Nom donné aux points d'experience pour accessoires. Name = "PC" # Indiquer ici le montant de PSA par defaut ( si rien n'est indiqué dans la base de donnée ) # A noter : mettre PSA=0 dans la note n'entraine pas l'utilisation de la valeur par defaut !! Defaut_PSA = 2 # Configurer ici les differents accessoires qui permettent d'obtenir des competences. # ID ACC EXP/ID skill ... EXP/ID skill Tab_skill = { 32 => [[10, 59], [25, 60], [50, 61], [100, 62]], 33 => [[0, 63], [150, 64], [200, 65], [250, 66]], # L'accessoire 33 offre directement 1 competences ( mais chez moi, il est de type USE_SLT ) 34 => [[50, 67], [100, 68], [150, 69], [200, 70]], 35 => [[250, 71], [500, 72]] } # Inscrivez ici le message qui apparaitra à la fin des combats Battle_message = "Vous recevez" # la suite est le nombre et le nom des PSA obtenu # Emplacement X/Y des informations complementaires de l'option "Status" Coord_win = [290, 305] # Mettre sur "true" si vous voulez une barre pour indiquer l'exp plutôt qu'un simple affichage Barre = false # reglage des couleurs à la ligne 260 # Mettre sur "true" si vous voulez des icones pour indiquer le niveau plutôt qu'un simple affichage Icone = false # Indiquez ici le nom du fichier où se trouve les icones Nom_icone = "etoile" # Repertoire system end # Modif in script "Game_Actor" methode "skills" !!! ################################### class String def decoupe bloc = [] self.split(/[\r\n]+/).each { |line| bloc.push(line) } return bloc end end ################################### class Game_Troop < Game_Unit def total_psa num = 0 for enemy in dead_members num += enemy.psa unless enemy.hidden end return num end end ################################### class Game_Party < Game_Unit attr_accessor :skillacc_exp alias hk_skillacc_init initialize def initialize hk_skillacc_init @skillacc_exp = Hash.new(0) end end ################################### class Game_Enemy < Game_Battler def psa return enemy.psa end end ################################### class Game_Actor < Game_Battler attr_accessor :skillacc_exp alias hk_skillacc_setup setup def setup(actor_id) @skillacc_exp = {} hk_skillacc_setup(actor_id) if @armor4_id != 0 acc = $data_armors[@armor4_id] @skillacc_exp[@armor4_id] = 0 if acc.acquisition? if acc.utilisation? $game_party.skillacc_exp[@armor4_id] = 0 end end end def add_skillacc result = [] for id in @skillacc_exp.keys result |= get_skillacc(id, "skill", false) end acc = $data_armors[@armor4_id] if @armor4_id != 0 and acc.utilisation? result |= get_skillacc(@armor4_id, "skill", true) end return result end def get_skillacc(acc_id, type, use) if use exp = $game_party.skillacc_exp[acc_id] else exp = @skillacc_exp[acc_id] end tab = HK_skillacc::Tab_skill[acc_id] max_lv = tab.size - 1 skill = [] lv = 0 ref = tab[lv] while exp >= ref[0] exp -= ref[0] skill.push($data_skills[ref[1]]) break if lv == max_lv lv += 1 ref = tab[lv] end case type when "lv" return lv + 1 when "max_lv" return max_lv + 1 when "skill" return skill when "exp" return exp when "next_lv" return ref[0] when "til_next_lv" return ref[0] - exp end end alias hk_skillacc_change_equip change_equip def change_equip(equip_type, item, test = false) hk_skillacc_change_equip(equip_type, item, test) if @armor4_id != 0 and not test acc = $data_armors[@armor4_id] if acc.utilisation? $game_party.skillacc_exp[@armor4_id] = 0 unless $game_party.skillacc_exp.keys.include?(@armor4_id) else @skillacc_exp[@armor4_id] = 0 unless @skillacc_exp.keys.include?(@armor4_id) end end end def skill_learn?(skill) return skills.include?(skill) end end ################################### class Scene_Battle < Scene_Base alias hk_skillacc_display_exp display_exp_and_gold def display_exp_and_gold hk_skillacc_display_exp psa = $game_troop.total_psa if psa > 0 text = HK_skillacc::Battle_message + " #{psa} #{HK_skillacc::Name}." $game_message.texts.push('\.' + text) for actor in $game_party.existing_members if actor.armors[3] != nil if actor.armors[3].utilisation? $game_party.skillacc_exp[actor.armors[3].id] += psa else actor.skillacc_exp[actor.armors[3].id] += psa end end end end wait_for_message end end ################################### module RPG class Armor < BaseItem def utilisation? text = @note.decoupe for line in text return true if line.include?("USE_SLT") end return false end def acquisition? return false if utilisation? return true end end class Enemy def psa text = @note.decoupe for line in text if line.include?("PSA=") num = line.delete("PSA=") return num.to_i end end return HK_skillacc::Defaut_PSA end end end ################################### class Window_Skillacc < Window_Base def initialize(actor) x = HK_skillacc::Coord_win[0] y = HK_skillacc::Coord_win[1] super(x, y, 250, 2*24 + 32) @actor = actor refresh end def refresh self.contents.clear acc = @actor.armors[3] if acc != nil if acc.utilisation? draw_skillacc_info(true) else draw_skillacc_info(false) end end end def draw_skillacc_info(use) acc = @actor.armors[3] lv = @actor.get_skillacc(acc.id, "lv", use) max_lv = @actor.get_skillacc(acc.id, "max_lv", use) exp = @actor.get_skillacc(acc.id, "exp", use) til_next_lv = @actor.get_skillacc(acc.id, "til_next_lv", use) if HK_skillacc::Icone bitmap = Cache.system(HK_skillacc::Nom_icone) self.contents.draw_text(0, 0, 150, 24, "Nv.") for x in 0..(lv-1) self.contents.blt(50+x*24, 0, bitmap, Rect.new(0, 0, 24, 24)) end if max_lv > lv for x in (lv-1)..(max_lv-1) self.contents.blt(50+x*24, 0, bitmap, Rect.new(24, 0, 24, 24)) end end else text = "Nv. #{lv} / #{max_lv}" self.contents.draw_text(0, 0, self.width-32, 24, text, 1) end if HK_skillacc::Barre self.contents.draw_text(0, 24, self.width-32, 24, "Exp.") self.contents.fill_rect(50, 24, 154, 24, Color.new(0, 0, 0, 255)) if lv != max_lv num = (exp * 150) / til_next_lv else num = 150 end self.contents.gradient_fill_rect(52, 26, num, 20, Color.new(255, 255, 0, 255), Color.new(255, 0, 0, 255)) else if lv != max_lv text = "Exp. : #{exp} / #{til_next_lv}" else text = "Exp. : -/-" end self.contents.draw_text(0, 24, self.width-32, 24, text, 1) end end end ################################### class Scene_Status < Scene_Base alias hk_skillacc_start start def start hk_skillacc_start @win_info = Window_Skillacc.new(@actor) @win_info.opacity = 0 end alias hk_skillacc_terminate terminate def terminate hk_skillacc_terminate @win_info.dispose end end ###################################
Il y a une petite modification à faire dans les scripts de base ( Game_Actor ) : - Code:
-
result |= add_skillacc
Visuellement, pas grand chose à montrer ... Juste une petite modification dans l'option "Status" : Vous avez le choix : comme à gauche, comme à droite, ou mix des deux. Voila le fichier pour les "étoiles" : Je le mets pour montrer le placement mais quelque chose me dit que vous ne l'utiliserais pas !! ASHKA |
|
Poulet carnivore Lv.2
Age : 29 Inscrit le : 25/10/2008 Messages : 29
| Sujet: Re: [VX] Competences via accessoires Dim 19 Avr 2009 - 20:15 | |
| Merci pour le script! - Citation :
- Je le mets pour montrer le placement mais quelque chose me dit que vous ne l'utiliserais pas !!
Je ne l'utiliserait pas pour mon projet actuel mais je promet de l'utiliser pour mon projet suivant! Juré! |
|
Roi des Lapinous
Age : 34 Inscrit le : 11/10/2008 Messages : 2292
| Sujet: Re: [VX] Competences via accessoires Dim 19 Avr 2009 - 20:21 | |
| Hum je te pardonne de ce nécropost car j'avais pas vu ce superbe script o_O M'enfin par la suite fait attention on ne repost pas sur des vieux sujets à part si on à des choses très importantes, comme une question à poser! |
|
Poulet carnivore Lv.2
Age : 29 Inscrit le : 25/10/2008 Messages : 29
| Sujet: Re: [VX] Competences via accessoires Lun 20 Avr 2009 - 15:48 | |
| Désolé Elezia... Mais je n'avait pas vu ce magnifique script, et je l'ai remarqué bien plus tard que le moment où il a été posté |
|
Vagabond Lv.5
Age : 28 Inscrit le : 20/04/2009 Messages : 88
| Sujet: Re: [VX] Competences via accessoires Lun 1 Juin 2009 - 10:27 | |
| Salut, Je suis désolé mais j'ai un probleme... les barres d'xp et de level pour le sort ne s'affichent pas chez moi sur le menu statuts... pas comme sur ton screen enfait Pourtant j'ai bien mis la portion de script dans Game_Actor et j'ai mis les "étoiles" dans "pictures"mais rien n'y fait... J'ai meme essayé sur un projet vierge... je pige pas la s'il vous plait aidez moi ! EDIT : En fait, le script ne marche PAS DU TOUT chez moi |
|
† Fondateur du forum †
Age : 31 Inscrit le : 09/02/2008 Messages : 1974
| Sujet: Re: [VX] Competences via accessoires Dim 22 Aoû 2010 - 10:12 | |
| Salut, Je fais un beau nécro-post pour signaler un problème avec le script: Quand je vais dans le menu compétence, après avoir équiper un accessoire, voici ce que ça donne: Je possède les scripts: SBS V3 Multislots(de DerWulfman) Forge de Jebbou Bestiare de Krazplay Résolution 640*480 de Krazplay et bien sur ce script. Merci d'avance pour votre aide. |
|
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: [VX] Competences via accessoires Dim 22 Aoû 2010 - 10:55 | |
| Tu peux aussi fournir la ligne qui merde ? |
|
Voyageur Lv.10
Age : 42 Inscrit le : 04/12/2008 Messages : 383
| Sujet: Re: [VX] Competences via accessoires Dim 22 Aoû 2010 - 10:58 | |
| Apres verif rapide, pas de souci de mon coté. Le hash qui te pose probleme "@skillacc_exp" est initialisé dans la methode "setup" du script Game_Actor. Verifie qu'il n'y ai aucun de tes scripts qui redefinissent cette methode au lieu d'utiliser un alias. Au pire, place mon script en bas de ta liste. |
|
† Fondateur du forum †
Age : 31 Inscrit le : 09/02/2008 Messages : 1974
| Sujet: Re: [VX] Competences via accessoires Dim 22 Aoû 2010 - 11:00 | |
| "for id in @skillacc_exp.keys" Il est déjà en bas de la liste :/ Sinon tampis, je trouverais un moyen de contrer ça. Merci quand même |
|
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: [VX] Competences via accessoires Dim 22 Aoû 2010 - 11:26 | |
| Essaye de voir si y'a pas une incompatibilité en désactivant tes autres scripts. Pour faire ça tu vas dans l'éditeur de script, tu sélectionne un script puis tu vas la dans partie avec le code. Dedans tu fais Ctrl + A puis Ctrl + Q. Tu fais ça avec tous tes scripts.
Si ça marche tu les réactives un par un afin de voir lequel pose problème. Sinon, puisque le script n'a pas de problème, regarde si t'aurais pas fait une erreur de copier / coller. |
|
† Fondateur du forum †
Age : 31 Inscrit le : 09/02/2008 Messages : 1974
| Sujet: Re: [VX] Competences via accessoires Dim 22 Aoû 2010 - 11:28 | |
| Arf, apparement ça viens du script d'extension d'équipements... Je vais faire un systèmes avec des événements communs, ce n'est pas grave. Merci pour ton aide Zang |
|
Poulet Lv.1
Age : 34 Inscrit le : 06/08/2010 Messages : 5
| Sujet: Re: [VX] Competences via accessoires Jeu 7 Oct 2010 - 8:19 | |
| Merci pour le script, mais où est donc cet option "status" et la modification à y faire ? Parce que FF9 m'as beaucoup plus convaincu que FF7! Merci d'avance et pardon pour la question idiote. |
|
Maître des Duels
Age : 32 Inscrit le : 29/07/2009 Messages : 7841
| Sujet: Re: [VX] Competences via accessoires Jeu 7 Oct 2010 - 8:22 | |
| Le menu statuts, c'est le menu statuts de base dans RPG maker.
LA modification est à faire dans les scripts de base. C'est tout simplement indiqué et en plus avec du image. Que demande le peuple ? x) |
|
Poulet carnivore Lv.2
Age : 35 Inscrit le : 15/12/2010 Messages : 17
| Sujet: Re: [VX] Competences via accessoires Sam 15 Jan 2011 - 17:09 | |
| Bonjour, désolé du necropost mais etant un fan du système de compétence de final fantasy 9 je veux absolument utiliser ce script! Mon problème est très simple (je pense), mais j'ai beau inspecter le script je vois pas ce que je doit changer pour que ça marche! Je précise, le script marche, à partir d'un accessoire je peux apprendre une technique une fois que le nombre de PC nécéssaire est atteint. Le seul petit hic, c'est que l'on ne voit pas l'évolution de l'experience de l'objet comme le montre cette image: Donc j'aimerais juste savoir comment faire pour afficher l'experience actuelle sur l'experience totale. Et aussi j'aimerais que l'on puisse voir la compétence que l'on va apprendre à partir du status (sous l'accessoire si possible.) De plus je ne sais pas utiliser les niveaux de l'arme donc si on pouvait m'expliquer ça (ou me dire comment supprimer cette option non nécessaire à mon projet) ça serais cool. Voila, d'avance merci a ceux qui s'attarderons sur mon cas! |
|
Va-nu-pieds Lv.4
Age : 29 Inscrit le : 26/07/2010 Messages : 50
| Sujet: Re: [VX] Competences via accessoires Mer 26 Jan 2011 - 17:07 | |
| Salut , voila je vien pour pour demander comment on configure le script mais quand don arrive ici : - Spoiler:
Y a-t-il quelquechose a configurer ? Si oui , comment ? Donc bon malgré sa je lance le jeu , tout beigne quand je decide de changé d'equipement , c'est le drame ! - Spoiler:
L'ecran se noirci alors et affiche sa . Le jeu s'arrete et la ligne responsable serait celle ci : - Spoiler:
Comment puis-je l'utiliser ce script ? |
|