raffy2010 Posted December 16, 2022 Report Share Posted December 16, 2022 (edited) Abilità equipaggiate DescrizioneLo script limita il numero di skill mostrate in battaglia per un certo actor, può essere utile per: Limitare il giocare a un moveset ristretto (come in pokémon) Evitare situazioni spiacevoli in cui il player nelle parti finali del gioco si trovi una schermata piena di skill inutili. Creare un sistema per cui un attore, aumentando di livello, possa aumentare il numero di slot per le abilità disponibili (non supportato al 100% ma facilmente implementabile)Insomma, come in molti casi, il limite è la fantasia! Per abilitare o disabilitare una skill, basta andare nell'apposita sezione del menù della mappa, posizionare il cursore sull'abilità che si vuole attivare/disabilitare e premere shift. Nota bene: Ho iniziato a fare script da poco, quindi il codice potrebbe essere un po' sporco perché non mi è ancora chiaro come Vx Ace gestisce le diverse classi. Scripter più esperti fatemi sapere cosa potrei fare meglio AutoreRaffy2010. Istruzioni per l'usoCopiare lo script sotto Materials e prima del Main. Script module Skill_Equip#===============================================================================# Abilità equipaggiate versione 1.01#===============================================================================# Autore: Raffy2010# Difficoltà utente: Basta che tu sappia copiare e incollare##-------------------------------------------------------------------------------# Descrizione:# Lo script limita il numero di skill mostrate in battaglia per un certo actor,# può essere utile per:# - Limitare il giocare a un moveset ristresso (come in pokémon)# - Evitare situazioni spiacevoli in cui il player nelle parti finali# del gioco si trovi una schermata piena di skill inutili.# - Creare un sistema per cui un attore, aumentando di livello, possa# aumentare il numero di slot per le abilità disponibili (non supportato# al 100% ma facilmente implementabile)# Insomma, come in molti casi, il limite è la fantasia!# Per abilitare o disabilitare una skill, basta andare nell'apposita sezione# del menù della mappa, posizionare il cursore sull'abilità che si vuole# attivare/disabilitare e premere shift.#-------------------------------------------------------------------------------# Istruzioni:# Copiare lo script sotto Materials e prima del Main.#-------------------------------------------------------------------------------# Compatibilità:# Window_SkillList# > alias draw_item_name# > alias draw_skill_cost# Window_BattleSkill# > alias make_item_list# Window_Selectable# > alias process_handling# Scene_Skill# > alias create_item_window# Game_Actor# > alias setup#-------------------------------------------------------------------------------# Configurazione:# Numero di slot disponibili di default: SLOTS = 4# Colore da assegnare alle skill disabilitate (R,G,B, TRASPARENZA): DISABLED_SKILL_COLOR = Color.new(128,0,0,256)#-------------------------------------------------------------------------------# Per gli scripter# Sono state aggiunti due attributi alla classe Game_Actor:# - attr_accessor :enabled_skills_list -> Vettore delle skill abilitate# - attr_reader :maximum_number_of_slots -> Numero massimo di slot disponibili## Magari possono esservi utili per fare qualcosa ;)#-------------------------------------------------------------------------------# FINE CONFIGURAZIONE#-------------------------------------------------------------------------------endclass Window_SkillList < Window_Selectable include Skill_Equip #-------------------------------------------------------------------------- # * Draw Item Name # Riscrivo il metodo per stampare il nome di un certo colore quando la # skill è disabilitata. #-------------------------------------------------------------------------- alias :skill_Equip_window_SkillList_draw_item_name :draw_item_name def draw_item_name(item, x, y, enabled = true, width = 172) return unless item if @actor.enabled_skills_list.include?(item) skill_Equip_window_SkillList_draw_item_name(item, x, y, enabled, width) else draw_icon(item.icon_index, x, y, enabled) change_color(DISABLED_SKILL_COLOR, enabled) draw_text(x + 24, y, width, line_height, item.name) end end #-------------------------------------------------------------------------- # * Draw Skill Use Cost # Riscrivo il metodo per stampare il costo. #-------------------------------------------------------------------------- alias :skill_Equip_window_SkillList_draw_skill_cost :draw_skill_cost def draw_skill_cost(rect, skill) if @actor.enabled_skills_list.include?(skill) skill_Equip_window_SkillList_draw_skill_cost(rect, skill) else change_color(DISABLED_SKILL_COLOR, enable?(skill)) if @actor.skill_mp_cost(skill) > 0 draw_text(rect, @actor.skill_mp_cost(skill), 2) elsif @actor.skill_tp_cost(skill) > 0 draw_text(rect, @actor.skill_tp_cost(skill), 2) end end endend#--------------------------------------------------------------------------# * Riscrivo il make_item_list di BattleSkill per stampare esclusivamente# le skill abilitate in BATTAGLIA.#--------------------------------------------------------------------------class Window_BattleSkill < Window_SkillList alias :skill_Equip_Window_BattleSkill_make_item_list :make_item_list def make_item_list skill_Equip_Window_BattleSkill_make_item_list @data.delete_if{|skill| not @actor.enabled_skills_list.include?(skill)} endend#--------------------------------------------------------------------------# * Gestione del tasto shift#--------------------------------------------------------------------------class Window_Selectable < Window_Base #-------------------------------------------------------------------------- # * Aggiungo l'handler per lo shift #-------------------------------------------------------------------------- alias :skill_Equip_Windows_Selectable_process_handling :process_handling def process_handling return unless open? && active skill_Equip_Windows_Selectable_process_handling return call_handler(:shift) if handle?(:shift) && Input.trigger?(:A) endendclass Scene_Skill < Scene_ItemBase #-------------------------------------------------------------------------- # * Create Item Window #-------------------------------------------------------------------------- alias :skill_Equip_Scene_Skill_create_item_window :create_item_window def create_item_window skill_Equip_Scene_Skill_create_item_window @item_window.set_handler(:shift, method(:on_item_shift)) end #-------------------------------------------------------------------------- # * on_item_shift #-------------------------------------------------------------------------- def on_item_shift if @actor.enabled_skills_list.include?(item) @actor.enabled_skills_list.delete(item) elsif @actor.enabled_skills_list.size + 1 > @actor.maximum_number_of_slots Sound.play_buzzer return else @actor.enabled_skills_list.push(item) end Sound.play_equip @item_window.refresh @status_window.refresh endend#--------------------------------------------------------------------------# * Aggiungo due attributi per gestire la lista delle skill#--------------------------------------------------------------------------class Game_Actor < Game_Battler include Skill_Equip #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :enabled_skills_list attr_reader :maximum_number_of_slots #-------------------------------------------------------------------------- # * Setup #-------------------------------------------------------------------------- alias :skill_Equip_Game_Actor_setup :setup def setup(actor_id) skill_Equip_Game_Actor_setup(actor_id) @enabled_skills_list = Array.new @maximum_number_of_slots = SLOTS endend Bugs e Conflitti NotiN/A EDIT: Codice aggiornato Edited December 18, 2022 by raffy2010 http://wwwdonnemanagernapoli.files.wordpress.com/2013/03/napoli-calcio.jpg Link to comment Share on other sites More sharing options...
Holy87 Posted December 17, 2022 Report Share Posted December 17, 2022 Ad occhio c'è un problema con questo script.Se metti l'attributo di mostrato o no nella skill, significa che se due personaggi hanno skill uguali non posso scegliere di mostrarla su uno e nasconderla sull'altro.Dovresti gestire un array di skill nascoste sulla classe Game_Actor, e quindi aggiungere o rimuovere l'ID della skill quando il giocatore vuole nasconderla o mostrarla.Altra cosa, è inutile che crei gli alias se poi effettivamente sovrascrivi l'intero metodo.Dovresti gestire il colore del nome della skill se è disabilitato, altrimenti chiami il metodo aliasato senza doverlo riscrivere. Così come hai fatto impasticcerai la compatibilità con altri script. "Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]http://holyres.altervista.org/UserBoard/BannerOverdrive35.pnghttp://holyres.altervista.org/UserBoard/Cap3.pnghttp://www.indiexpo.net/signature/578.png Miei script per RPG Maker VX Ace:*NB Tutti i miei script sono protetti da licenza CC - BY http://i.creativecommons.org/l/by/3.0/88x31.png Questa licenza permette a terzi di distribuire, modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale. Questa è la più accomodante delle licenze offerte. É raccomandata per la diffusione e l'uso massimo di materiali coperti da licenza. Modulo di supporto scripters - per utilizzare le API di Windows facilmente!Sistema Popup generaleHOT - per dei popup più divertenti!Sistema di monete - come in WoWDownload e avviso patch di giocoHOT - Sistema d'aggiornamenti!Sistema degli obiettiviHOT - Per dare un valore aggiunto al tuo gioco!Set Equipaggiamenti - perché vestire pan-dan va di moda!Logo inizialeHOT - flessibilissimo, funzionale e personalizzabile!Requisiti Equipaggiamenti - se vuoi dare un tocco di RPG occidentaleLampeggiamento critico - fa vedere al giocatore un alone rosso intorno allo schermo quando sta per morireMenu titolo person. - uno stile originale per il menu iniziale!Movmento fluido - Puoi muovere in modo stickoso sprite, finestre e viewportTransizioni fluide del menu - Animazione di transizione per le finestre dei menuInfo del gioco dal Titolo - fa sempre bene mostrare i crediti del gioco!Barra generica - una barra per fare quello che vuoiScambio truppe di nemici - utile se usi gli incontri casualiParty multipli - se vuoi avere due gruppi paralleliFinestra dettagli oggetti - Per avere le informazioni più dettagliate su oggetti, equip e abilitàConteggio nemici uccisi - per le quest!Titoli di coda - quando finalmente finirai il gioco!Cartella salvataggi - Per raggruppare i salvataggi in una cartella specifica o nella home dell'utente I miei tutorial:Come distribuire il gioco - e anche come creare un'installazione professionale!RGSS in pillole - Guida completa e facile all'RGSS2 e RGSS3 per novizi ed espertiCome mappare con VX (e VX Ace) - guida base all'uso degli strumenti del mappingLoop delle musiche - come tagliarle in modo da far venire musiche continue senza interruzioni finaliCreare backup dei progetti - per evitare di uccidervi dopo un errore che ha fatto perdere tutto! Link to comment Share on other sites More sharing options...
raffy2010 Posted December 17, 2022 Author Report Share Posted December 17, 2022 Ad occhio c'è un problema con questo script.Se metti l'attributo di mostrato o no nella skill, significa che se due personaggi hanno skill uguali non posso scegliere di mostrarla su uno e nasconderla sull'altro.Dovresti gestire un array di skill nascoste sulla classe Game_Actor, e quindi aggiungere o rimuovere l'ID della skill quando il giocatore vuole nasconderla o mostrarla.Altra cosa, è inutile che crei gli alias se poi effettivamente sovrascrivi l'intero metodo.Grazie mille per il feedback holy, ho testato e hai perfettamente ragione. Credevo che ogni attore avesse una propria istanza della skill... e invece no °-°Alla fine ho rubato il tuo consiglio sul vettore e ho aggiornato il codice fixando il bug, rimuovendo gli alias inutili e snellendo un po' il codice. Dovresti gestire il colore del nome della skill se è disabilitato, altrimenti chiami il metodo aliasato senza doverlo riscrivere. Così come hai fatto impasticcerai la compatibilità con altri script.Perdonami ma non ho capito cosa intendi in questo punto (sono un po' un neofita in ruby perdonami ahahahaha), a prescindere però da questo ho provato a riscrivere quelle funzioni lì cercando di dare un senso all'alias. http://wwwdonnemanagernapoli.files.wordpress.com/2013/03/napoli-calcio.jpg Link to comment Share on other sites More sharing options...
Holy87 Posted December 22, 2022 Report Share Posted December 22, 2022 Perdonami ma non ho capito cosa intendi in questo punto (sono un po' un neofita in ruby perdonami ahahahaha), a prescindere però da questo ho provato a riscrivere quelle funzioni lì cercando di dare un senso all'alias.Nada, ho letto male o hai fixato, comunque ora non vedo problemi. "Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]http://holyres.altervista.org/UserBoard/BannerOverdrive35.pnghttp://holyres.altervista.org/UserBoard/Cap3.pnghttp://www.indiexpo.net/signature/578.png Miei script per RPG Maker VX Ace:*NB Tutti i miei script sono protetti da licenza CC - BY http://i.creativecommons.org/l/by/3.0/88x31.png Questa licenza permette a terzi di distribuire, modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale. Questa è la più accomodante delle licenze offerte. É raccomandata per la diffusione e l'uso massimo di materiali coperti da licenza. Modulo di supporto scripters - per utilizzare le API di Windows facilmente!Sistema Popup generaleHOT - per dei popup più divertenti!Sistema di monete - come in WoWDownload e avviso patch di giocoHOT - Sistema d'aggiornamenti!Sistema degli obiettiviHOT - Per dare un valore aggiunto al tuo gioco!Set Equipaggiamenti - perché vestire pan-dan va di moda!Logo inizialeHOT - flessibilissimo, funzionale e personalizzabile!Requisiti Equipaggiamenti - se vuoi dare un tocco di RPG occidentaleLampeggiamento critico - fa vedere al giocatore un alone rosso intorno allo schermo quando sta per morireMenu titolo person. - uno stile originale per il menu iniziale!Movmento fluido - Puoi muovere in modo stickoso sprite, finestre e viewportTransizioni fluide del menu - Animazione di transizione per le finestre dei menuInfo del gioco dal Titolo - fa sempre bene mostrare i crediti del gioco!Barra generica - una barra per fare quello che vuoiScambio truppe di nemici - utile se usi gli incontri casualiParty multipli - se vuoi avere due gruppi paralleliFinestra dettagli oggetti - Per avere le informazioni più dettagliate su oggetti, equip e abilitàConteggio nemici uccisi - per le quest!Titoli di coda - quando finalmente finirai il gioco!Cartella salvataggi - Per raggruppare i salvataggi in una cartella specifica o nella home dell'utente I miei tutorial:Come distribuire il gioco - e anche come creare un'installazione professionale!RGSS in pillole - Guida completa e facile all'RGSS2 e RGSS3 per novizi ed espertiCome mappare con VX (e VX Ace) - guida base all'uso degli strumenti del mappingLoop delle musiche - come tagliarle in modo da far venire musiche continue senza interruzioni finaliCreare backup dei progetti - per evitare di uccidervi dopo un errore che ha fatto perdere tutto! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now