Vai al contenuto

Rilevato Ad-Blocker. Per favore disabilita il tuo adblocker quando navighi su makerando.com - Non c'è nessun annuncio invasivo.

Ally

Utente
  • Numero contenuti

    1074
  • Iscritto

  • Ultima visita

  • Days Won

    17

Tutti i contenuti di Ally

  1. Nome Script: RM2k/2k3 Graphics Versione: 1.4 Autore/i: mikb89 Informazioni: Mi è capitato di pensare che mi piacerebbe avere la grafica degli rpg maker più vecchi ma, essendo scripter, avere la possibilità di usare il codice. Con questo script, potete usare la grafica disponibile per gli rpg maker 2k/2k3 che verrà via codice raddoppiata in dimensioni. Anche il testo stesso può, opzionalmente, riprendere l'effetto che aveva nei vecchi maker. I caratteri vengono presi da una tabella bitmap o da file separati e l'effetto colore usato è il classico, cioè, il colore non è quello che sta al centro del quadratino nella windowskin ma l'intero quadratino viene applicato al carattere. Screenshots: Istruzioni: A parte il copiare lo script, c'è da dire che ci vogliono due cartelle di grafica. Una chiamata MidGraphics, usata durante il debug e contenente le immagini originali, e la Graphics che contiene le immagini così come verranno viste all'interno del programma, quindi raddoppiate. In fase di distribuzione, bisogna togliere la Graphics e rinominare MidGraphics con questo nome, in modo da renderla la cartella effettiva. Riassunto: Mentre sviluppi il gioco: MidGraphics: contiene grafica vera e propria. Graphics: contiene la grafica a dimensioni doppie solo per il programma. Rilascio: Graphics -> Rimossa MidGraphics -> Graphics Per la gestione della grafica raddoppiata, 255 ha creato Rumurumu, uno straordinario tool che in maniera automatica e trasparente si occupa di gestire la cartella Graphics e di correggere la trasparenza di immagini in blocco! Grazie 255!!! Per importare direttamente i charset del 2k/2k3 potete inserire il simbolo # davanti al nome del file. Esempio: '#Chara1'. Così facendo lo script mostrerà correttamente le direzioni dei charset (i charset del 2k/2k3 hanno infatti posizioni diverse). Questa funzione è però DEPRECATA e infatti verrà rimossa al prossimo aggiornamento. Rumurumu invece si occuperà anche di questa conversione e, in futuro, della conversione dei chipset. Per il font , dentro System, c'è un file chiamato Font.png contenente i caratteri del testo. FontB.png sono i caratteri in grassetto, FontI.png quelli in corsivo e FontBI.png lo lascio alla vostra immaginazione. In alternativa , va creata una cartella Font dentro System, contenente le cartelle B, I e BI, e i file nel formato f + numero carattere. Ad esempio "f49.png" è lo zero. Le cartelle B, I e BI conterranno i file allo stesso modo. Allegato c'è un pacchetto con font fatti da me. Script: Visibile su Pastebin . Demo: Cartella Mediafire con l'ultima versione (sia demo ita e ing di 3 MB che RTP di 13 MB): http://www.mediafire.../?0s7e0cgtdu3sm Pacchetto Bitmap font v1.0: http://www.mediafire...ilzfyysj21m1syv Note dell'Autore: Consiglio di scaricare la demo o l'RTP anziché copiaincollare il codice in quanto vi evitate di dover sistemare le cartelle. Ringrazio 255 per tutto il lavoro che ha fatto!
  2. Nome Script: Quest Journal Versione: 2.1 Autore/i: modern algebra Informazioni: Un semplice Quest System ^^ Istruzioni: Le istruzioni sono tutte all'interno della demo Demo: Quest System
  3. Nome Script: Cambiare Windowskin Versione: 1.0 Autore/i: Woratana Informazioni: Con un semplice call script,potrete cambiare la vostra windowskin Istruzioni: Inserite lo script sotto a Material. Poi per cambiare la window,questo è il call script da inserire: $game_system.skin = 'Nome_WindowSkin'Assicuratevi di avere le altre window in 'Graphics/System'. Script: #=============================================================== # ● [VX Snippet] ◦ Change Windowskin ◦ □ #-------------------------------------------------------------- # ◦ by Woratana [[email protected]] # ◦ Released on: 10/03/2008 #-------------------------------------------------------------- # Note: Missing features from RM2K and RMXP =begin ●----●----●----●----● +[How to use]+ ●----●----●----●----● Call script: $game_system.skin = 'Windowskin File Name' (Window Skin file must be in folder 'Graphics/System') For Example >> $game_system.skin = 'Window' □=====□=====□=====□=====□=====□=====□=====□=====□=====□ =end #=============================================================== class Window_Base < Window alias wor_changeskin_winbase_ini initialize alias wor_changeskin_winbase_upd update # Change Window Skin when first call Window def initialize(x, y, width, height) wor_changeskin_winbase_ini(x, y, width, height) self.windowskin = Cache.system($game_system.skin) @winskin = $game_system.skin end # Change Window Skin if $game_system.skin is not same as its skin def update wor_changeskin_winbase_upd if @winskin != $game_system.skin self.windowskin = Cache.system($game_system.skin) @winskin = $game_system.skin end end end class Game_System attr_accessor :skin alias wor_changeskin_gamesys_ini initialize # Add variable $game_system.skin to store/change windowskin file name def initialize wor_changeskin_gamesys_ini @skin = 'Window' end end
  4. Nome Script: Bonus Equip Versione: N/D Autore/i: BigEd781 Informazioni: Lo script attraverso il campo Note di un'arma o un'armatura, da la possibilità all'avanzamento di livello di incrementare l'attacco, la difesa, etc... Istruzioni: Inserite lo script sotto Material. Per utilizzare lo script, andate nelle Note, e scrivete questo: [c][stat mod]stat,num[/c] "stat" = E' l'attributo che andremo a incrementare/diminuire. Sono "hp", "mp", "atk", "def", "spi", o "agi", ovviamente senza apici. "num" = Il numero di quanto si deve incrementare/diminuire. Mettiamo caso che con un'arma/armatura specifica si possono aumentare/diminuire le stat...scriveremo nelle Note di queste: [c][stat mod]atk,2[/c] Mettiamo anche caso però che queste hanno più possibilità: [stat mod]hp,10 [stat mod]atk,2 [stat mod]def,4 [stat mod]agi,-3Gli HP aumenteranno di 10, come aumenterà l'attacco di 2 etc, ma l'agilità invece diminuirà ^^ Utile se si vuole comunque variare un pò il settaggio di gioco =) Script: # # # Equipment Stat mods # # by BigEd781 # #==============================================================================# module RPG class BaseItem def get_stat_bonuses bonuses = {} note.each { |line| line.downcase! line.gsub!(' ', '') if line.include?("[statmod]") pair = line.gsub("[statmod]", '').split(',') bonuses[pair[0]] = pair[1].to_i end } return bonuses end end end class Game_Actor < Game_Battler alias :eds_old_level_up :level_up def level_up eds_old_level_up equips.compact.each { |equip| apply_equip_stat_bonus(equip) } end def apply_equip_stat_bonus(equip) equip.get_stat_bonuses.each_pair { |key , value| case key when "hp" : self.maxhp += value when "mp" : self.maxmp += value when "atk" : self.atk += value when "def" : self.def += value when "spi" : self.spi += value when "agi" : self.agi += value end } end end
  5. Nome Script: Audio Pump Up: FMOD Ex Versione: 1.4 Autore/i: Hiretsukan, Cowlol, mikb89 Informazioni: Porting per VX dell'FMOD Ex Audio di Hiretsukan riscritto da Cowlol per Rpg Maker XP. Lo script originale consente di riprodurre audio di diversi formati tramite la libreria FMOD. Sfruttando questa, anche altre funzioni aggiuntive incluse nella libreria, come quella di riprodurre audio partendo da una posizione determinata, sono possibili. Il mio porting consente in più di sfruttare sia il sistema audio standard che il nuovo, cosa pensata per ragioni di compatibilità. Inoltre, cosa più importante, consente di avere canali audio multipli, virtualmente infiniti, che possono essere controllati anche senza usare codice. Una variabile indicherà il canale corrente. Tutti i suoni e le musiche utilizzeranno quello. Il canale 0 corrisponde al sistema standard, i canali dall'1 in poi utilizzano FMOD. Consiglio comunque di non esagerare coi canali, credo un 3, 4 bastino, nella maggior parte dei casi.[/indent] Nell'audio FMOD si possono usare anche effetti chiamati DSP come eco, riverbero, tremolo, equalizzatori ecc. Istruzioni: Copiare lo script normalmente sotto Modules e sopra Main. Sarebbe buono anche inserire questa riga: FMod::dispose dentro il Main, prima di "rescue", per una corretta chiusura della libreria e dei file audio. È richiesta per funzionare la libreria FMOD, che altro non è che un file .dll da inserire dove si trovano il Game.exe e l'RGSS20X.dll del vostro progetto. Per usarlo basta scegliere la variabile del canale dalle configurazioni e cambiare il suo valore. Eventuali funzioni aggiuntive (tipo FMod.bgm_set_loop_points(first, second) o FMod.bgs_position) possono essere sfruttate con dei Call script. In particolare FMod.bgm_set_position(new_pos, c) consente di impostare la posizione del BGM (o anche BGS, certo) in riproduzione. new_pos è la posizione desiderata, in millisecondi (credo!) mentre c è il canale da 1 in su. Se volete operare sul canale corrente basta mettere $game_variables[APU::CURRENT_CHANNEL_VARIABLE] al suo posto. Esempio: FMod.bgm_set_position(33, $game_variables[APU::CURRENT_CHANNEL_VARIABLE]) Ulteriori informazioni si trovano dentro la demo. Script: Visibile su Pastebin. Demo: Demo multilingua v. 1.4 con FMOD 0.4.40.5 inclusa (3.17MB) http://www.mediafire...4hzgpf2cvkjnmdr Libreria FMOD 0.4.18.3 (versione leggera, che non supporta tutte le funzioni): http://www.mediafire...nb17boudfmuwo3d Libreria FMOD 0.4.40.5 (ultima versione al momento del post): http://www.mediafire...ybuas9ervddetp2 Potete scaricare l'ultima versione della libreria (purtroppo assieme al developer kit) dal sito ufficiale di FMOD: http://www.fmod.org/ Note dell'Autore: Importante: FMOD ha la sua licenza, consultatela quindi sul sito ufficiale se dovete farci qualcosa di particolare. Lo script inoltre è originario di Hiretsukan e Cowlol, tenetelo in conto nei crediti e leggete la licenza, scritta da non so chi dei due, presente fra i commenti nello script (sempre nel caso abbiate qualche scopo particolare, tipo di lucro).
  6. Nome Script: Attivazione Skill per Tankentai Versione: 1.3 Autore/i: CrimsonSeas Informazioni: Questo script è ispirato all'overdrive di Tidus in FFX. Dovrebbe funzionare con altri script di Overdrive ^^ Istruzioni: Istruzioni all'interno della demo. Ricordatevi di copiare il necessario, quali immagini etc, per il corretto funzionamento dello script. F.A.Q: D: Come si attivano le Skill? R: Leggi le istruzioni D: Ci sono restrizioni per creare immagini personalizzate? R: Si. L'immagine deve essere perfettamente simmetrica, e la larghezza non deve superare i 420px. L'altezza delle barre deve essere inferiore a 24, e le icone devono essere 24x23px. D: Si possono creare altri tipi di attivazione? R: Si. D: Lo script mi da errore/Ho ottenuto un bug R: Indicaci gli script in uso e postaci l'errore in modo che possiamo verificare ed eventualmente risolvere. E' possibile che non sia proprio compatibile con tutti gli script. Demo: http://www.mediafire.com/?mayhdyimfj0 Note dell'Autore: Per un uso commerciale dello script, si deve contattare l'autore.
  7. Ally

    Gameplay Some Popup

    Nome Script: Some Popup Versione: 2.8 Autore/i: mikb89 Informazioni: Con questo script potrete specificare del testo in un evento che verrà mostrato quando il giocatore si avvicina. Features: Sono disponibili diversi effetti di comparsa ed è possibile utilizzare picture anziché testo. Il testo può essere mostrato, oltre che sul giocatore, anche agganciato all'evento, per scomparire quando questo si allontana. È possibile riprodurre un suono SE, ME, BGM e BGS, sia generico che personalizzato per evento. Screenshots: Istruzioni: Inserite lo script sotto Materials. Le istruzioni sono fra i commenti. Script Demo: Demo multilingua v. 2.8 (288 KB) http://www.mediafire.com/?ajjqc1dhn4038eb Incompatibilità: Sovrascrive lo script per la camminata in 8 direzioni. O viene sovrascritto, a seconda. Per ovviare, questo script è stato incorporato ed è attivabile/disattivabile tramite opzione. Note dell'autore: Ringrazio Unamuno per averlo chiesto altrimenti non l'avrei postato e Guardian of Irael per avermi suggerito molti miglioramenti.
  8. Ally

    CBS IEX - Yggdrasil

    Nome Script: IEX - Yggdrasil Versione: 1.5b1 Autore/i: IceDragon Informazioni: Questo CBS (Custom Battle System) è utilizzabile insieme ad altri sistemi di battaglia...si può abilitare/disabilitare in qualsiasi momento,quindi nel gioco potremmo inserire 2 battle system. Bisogna un pò configurarlo prima dell'uso,e non è consigliato ai noob. Screenshots: Istruzioni: Tutto all'interno della demo. Demo: http://www.mediafire.com/?7ng76ujvag327em Download v1.5b1 Download v1.6 Beta
  9. Ally

    HUD HUD ReinoRPG

    Nome Script: HUD ReinoRPG Versione: 0.6 Autore/i: LB Informazioni: HUD in uno stile medioevale che indica il nome del personaggio, il livello, HP, MP e le monete in possesso. Screenshots: Istruzioni: Istruzioni e script all'interno della demo. Demo: http://www.mediafire.com/?2zc23m7fr70gfqd
  10. Nome Script: Pong Battle System Versione: 1.0 Autore/i: mikb89 Informazioni: Questo script sostituisce il sistema di battaglia standard con uno di tipo pong. Giocatore e nemico hanno ognuno i propri blocchi e la sconfitta soggiunge quando: 1) i PV (H nell'immagine) di tutti finiscono (classica morte); 2) vengono distrutti tutti i blocchi. Features (roba che conto di aggiungere): Skill system migliorato, pallina renderizzata in modo migliore, possibilità di utilizzare immagini anziché roba renderizzata. Istruzioni: Copiate gli script "Pong Battle System" e "Barrier" situati sotto "Materials" nella demo, sotto il "Materials" del vostro progetto. Se volete potete prendervi anche la guida per la creazione skill avanzate, ma non è necessario. Potete creare composizioni specifiche settando i parametri appositamente. F.A.Q: D: Come vengono effettuati i danni? R: Ogni blocco ha dei PV (per ogni colore) che vengono sottratti considerando i valori di attacco e difesa dei giocatori attivi. Se il blocco ha un colore diverso dal rosso, quando i PV arrivano a 0, questo passa al colore precedente (in ordine: rosso, verde, blu, giallo, ciano, magenta, bianco, nero) fino ad arrivare al rosso. Finendo anche il rosso, il blocco viene distrutto arrecando danni al giocatore pari ai PV del blocco. In sintesi: -blocco verde: 10 PV -vengono tolti, il blocco diventa rosso: altri 10 PV -viene distrutto il blocco: vengono tolti 20 PV al giocatore. Se il blocco viene colpito ma non distrutto, il giocatore non subisce niente. D: Chi è il giocatore? R: Per giocatore intendo colui che muove attualmente la barretta. Sia dalla parte tua, sia da quella del nemico. Come si può vedere dall'immagine, al centro ci sono delle altre barrette. Nel caso del nemico queste si attivano non appena il giocatore attuale muore (finisce i PV). Nel caso dell'umano, puoi scegliere tu quale eroe usare premendo SHIFT + SU/GIÚ. Il semplice SU/GIÚ muove invece la barretta. D: Quanti colori! R: Sì, le barrette non sono immagini ma vengono renderizzate prendendo un colore medio dalle immagini dei face (per gli eroi) e dei battler (per i nemici). La piccola barretta azzurra che vedete nei nemici è uno slime (essendo azzurro nel VX). Ralph non viene arancione (il colore dei suoi capelli) perché ha molta faccia, che è rosa. Il colore dei blocchi dipende invece da quanti si trovano nella stessa posizione. A seconda dei parametri ogni eroe/nemico ha i suoi blocchi (tutti rossi) disposti in punti specifici. Se nel gruppo più componenti hanno quindi valori simili di qualche parametro, i blocchi avanzeranno di colore (con quattro componenti il colore non sorpasserà quindi il giallo). La pallina è renderizzata pure, e credo si capisca benissimo sia una 'o'. Sfaticato che non sono altro. D: Ma questo coso suona? R: Quando la pallina sbatte nei blocchi, nelle barrette, nei muri, vengono eseguiti rispettivamente i suoni di: danno, attacco, evasione. Lo so che l'ultimo non centra niente ma era quello che mi sembrava più adatto. Potete anche sentire il suono di miss qualora nel colpire il blocco non gli venga fatto alcun danno. D: E se al giocatore scoccia? R: I blocchi parametrici li ho messi apposta per variare sempre l'ambiente. Poi visto che le battaglie anche semplici potrebbero impiegare più tempo, magari mettetene di meno. Oppure fate nemici più vari, tanto come immagine potete mettere qualsiasi cosa. Comunque, quello che volevo dire è che, potete mettere nell'eroe la spunta 'autobattle' (dal database) e questo giocherà da solo. Potete aggiungere al party un eroe con questa caratteristica e il giocatore potrà attivarlo e disattivarlo a piacimento (sempre SHIFT + SU/GIÚ). D: Si possono fare tutte quelle cose tipiche di giochi simili? R: Dalla versione 1.0, quasi. Potete creare skill avanzate che intervengono sulla pallina. Per adesso non si può però intervenire sui blocchi né sulle barrette. Una skill avanzata di esempio è presente e consente di creare uno scudo protettivo. Potete creare roba simile facilmente, come ostacoli semoventi o effetti. Non potete far sdoppiare la pallina, né fare in modo che trapassi i blocchi, perché queste cose hanno effetto sia sulla palla in sé (che è possibile) sia su barrette/blocchi, attualmente non controllabili. E questo per le skill. Potete variare la dimensione della barretta, visto che questa è influenzata dalla difesa. Potete bloccare/confondere/automatizzare i giocatori utilizzando gli appositi stati (tipo Sleep, Confuse, Berserker). Potete eseguire animazioni su eroe e nemico (quella sull'eroe è un'aggiunta, perché sul VX non è prevista animazione sull'eroe in battaglia). D: Skill e oggetti come funzionano? R: Per quanto riguarda gli oggetti, in battaglia non c'è utilizzo. Per le skill, chi gioca può settarne due per eroe premendo Shift + freccia destra o sinistra e poi usarle con Invio (o Spazio o C) + la direzione assegnata. La creazione delle skill avviene come di consueto, l'unica cosa da dire è che le skill possono essere utilizzate continuamente e, per evitare questo, potete mettere frame vuoti nelle animazioni in modo da attendere quel tempo prima di poter richiamare una nuova skill. D: Il sistema è carino, ma come battle system mi sembra azzardato. Mi ci fai un minigame da usare a parte? R: No. Ci ho fatto il battle system e resta battle system XD D: E allora posso provare a farcelo io? R: No, non voglio. Voglio che resti un battle system, davvero. Ci ho messo solo un giorno per creare il sistema di gioco e cinque per farlo diventare un BS. Se proprio lo vuoi come minigame, dimmelo che ti passo lo script che è già pronto, ma che resti fra noi. D: Ma perché tutto questo? R: A parte il lavoro in più per portarlo a BS, il fatto è che mi piaceva l'idea di un BS un po' più particolare del solito. Il fatto di essere un minigame mi sembra invece abbastanza banale. D: Nel mio progetto ho lo script per il mouse. Posso usarlo per muovere le barrette? R: Sì, basta mettere questo script sotto quello del mouse. Demo: http://www.mediafire.com/?u5e3596sr5d1ya3 Incompatibilità: -Se dovete far morire qualcuno, toglietegli tutti i PV, ma non applicategli direttamente lo status Dead. -Se create skill avanzate che modificano la velocità della pallina, badate ai valori altrimenti la pallina potrebbe (e lo farà, N.D.Murphy) sballare. -Se iniziate la battaglia con tutti i pg morti, vi potrebbe dare errore di divisione per zero. Note dell'Autore: Resto a disposizione per ulteriori modifiche/migliorie/peggioramenti e per eventuali skill avanzate che vi vengono in mente ma non riuscite a realizzare, a patto che poi possiamo aggiungerli al pacchetto demo.
  11. Ally

    System Mod Modalit

    Nome Script: Modalità due giocatori Versione: 1.0 Autore/i: Scompartimenty, mikb89 Informazioni: Con questo script potete far giocare due persone contemporaneamente al vostro progetto! Lo schermo viene diviso in due parti e vengono creati due gruppi diversi. I due gruppi possono trovarsi ognuno in una mappa diversa, ma anche nella stessa e possono interagire fra loro. Oltre alla mappa, ogni gruppo gestisce il proprio gioco con tutte le schermate comprese a sé. È possibile dividere e congiungere lo schermo anche a gioco avviato, cosa che può essere fatta manualmente oppure dal giocatore. Per la divisione dei gruppi è presente anche una schermata apposita. Altra cosa possibile è far combattere i due gruppi l'uno contro l'altro. Una volta salvato il gioco, visto che nel save standard si vedono i chara, è possibile capire direttamente come sono composti i gruppi. Le immagini dovrebbero essere abbastanza chiarificatorie ^^ Istruzioni: Non ci sono script da copiare, iniziate il vostro progetto direttamente da quello della demo oppure copiate l'intero Scripts.rvdata. Demo: http://www.mediafire.com/download.php?u5e3596sr5d1ya3 Incompatibilità: Con qualunque altro script
  12. Ally

    CMS Menù per 3 pg

    Nome Script: Menù per 3 pg Versione: 1.3 Autore/i: Melosx Informazioni: Menu adatto per giochi con 3 pg. Screenshots: Istruzioni: Come al solito copiate lo script sopra Main e sotto Materials. Tutto ciò che dovete fare è configurarlo, se volete, come più vi pare grazie al comodo modulo. Leggetevi la pèarte iniziale dello script per maggiori info. Script: #============================================================================= # Menu per 3 pg #============================================================================= # Autore: Melosx # Versione: 1.3 # Data di creazione: 23-5-2011 => v1.0 # 24-5-2011 => v1.1 # 25-5-2011 => v1.1.1 # 27-5-2011 => v1.2 # 2-6-2011 => v1.3 # # Feature: # # - Aggiunta barra dell'esperienza. # - Possibilità di cambiare il numero di status visibili. # - Possibilità di modificare lunghezza, posizione(x,y) e colori delle bare # PV/PM/EXP. # - Possibilità di scegliere se visualizzare il face o la grafica del chara. # - Altro che non ricordo XD... EHEHEHEHEHEH... Vi basta comunque dare un occhio # alle voci del modulo di configurazione per vedere l mole di roba che si può # personalizzare. # # Storia: # # 1.0: Cambiata la composizione delle finestre per come si presentano ora. # Aggiunta la Window_Tempo # # 1.1: Creato il modulo di configurazione per rendere estremamente facile la # personalizzazione del menù. # # 1.1.1: Fixato un piccolo bug con Window_SkillStatus. # Aggiunte le novità della Window_MenuStatus nel menu Status. # # 1.2: Possibilità di scegliere tra face o grafica del chara con correzioni # automatiche alle posizioni in base alla scelta. # Unione dei tre script iniziali in uno solo per un facile inserimento # in un progetto. # # 1.3: Terminato il modulo MAW. # # Note: # Cambiando il numero di status visibili nel menu cambiano anche quelli # visibili in Status. # Cambiando il colore delle barre cambierà anche nelle barre in bataglia e nei # menu dove sono presenti barre(vedrò di risolvere questo problema se a qualcuno # da fastidio). #============================================================================= #============================================================================== # ** Modulo di configurazione di Window_MenuStatus #============================================================================== module MMS #============================================================================== # ** Colori delle barre #------------------------------------------------------------------------------ # Per cambiare i colori delle barre avrete bisogno di vedere la windowskin del # vostro gioco. In baso a destra infatti trovate i colori che il gioco utilizzerà # per creare le barre. Gli indici dei colori partono da 0 che è il primo quadrato # in alto a sinistra e arrivano a 31 l'ultimo quadrato in baso a destra. # Ecco uno schema degli indici # # | 0| 1| 2| 3| 4| 5| 6| 7| # | 8| 9|10|11|12|13|14|15| # |16|17|18|19|20|21|22|23| # |24|25|26|27|28|29|30|31| # #============================================================================== USAFACE = false #------------------------------------------------------------------------------ # ** Variabili generali #------------------------------------------------------------------------------ # Cambiandone il valore si stabilisce il valore di partenza di tutte le altre # variabili. # # Default # MSX = 0 # MSY = 0 #------------------------------------------------------------------------------ MSX = 0 # - verso sinistra, + verso destra MSY = 0 # - verso l'alto, + verso il basso #------------------------------------------------------------------------------ # ** Sposta la grafica del character #------------------------------------------------------------------------------ CHX = 25 # - verso sinistra, + verso destra CHY = 5 # - verso l'alto, + verso il basso ##------------------------------------------------------------------------------ # ** Sposta la grafica del face #------------------------------------------------------------------------------ FACEX = 2 FACEY = 2 FACEGR = 80 #------------------------------------------------------------------------------ # ** Nome del personaggio #------------------------------------------------------------------------------ NOMEX = 5 # - verso sinistra, + verso destra NOMEY = 35 # - verso l'alto, + verso il basso #------------------------------------------------------------------------------ # ** Classe del personaggio #------------------------------------------------------------------------------ CLASSEX = 80 # - verso sinistra, + verso destra CLASSEY = -10 # - verso l'alto, + verso il basso #------------------------------------------------------------------------------ # ** Status #------------------------------------------------------------------------------ STATUSX = 188 # - verso sinistra, + verso destra STATUSY = 46 # - verso l'alto, + verso il basso STATUSN = 8 # Numero di status da visualizzare #------------------------------------------------------------------------------ # ** Scritta status #------------------------------------------------------------------------------ NSTATUS = "Status:" # Termine che indica gli status NSTATUSX = 80 # - verso sinistra, + verso destra NSTATUSY = 46 # - verso l'alto, + verso il basso ##------------------------------------------------------------------------------ # ** Livello del personaggio #------------------------------------------------------------------------------ LIVX = 80 # - verso sinistra, + verso destra LIVY = -10 # - verso l'alto, + verso il basso #------------------------------------------------------------------------------ # ** Barra PV #------------------------------------------------------------------------------ PVX = 205 # - verso sinistra, + verso destra PVY = -12 # - verso l'alto, + verso il basso PVBL = 150 # Lunghezza della barra PVBC1 = 28 # Colore 1 PVBC2 = 29 # Colore 2 PVBCC = 0 # Colore del bordo PVBCS = 15 # Colore sfondo barra #------------------------------------------------------------------------------ # ** Barra PM #------------------------------------------------------------------------------ PMX = 205 # - verso sinistra, + verso destra PMY = -12 # - verso l'alto, + verso il basso PMBL = 150 # Lunghezza della barra PMBC1 = 12 # Colore 1 PMBC2 = 4 # Colore 2 PMBCC = 0 # Colore del bordo PMBCS = 15 # Colore sfondo barra #------------------------------------------------------------------------------ # ** Scritta Esperienza e valori #------------------------------------------------------------------------------ NEXP = "Esperienza" # Termine che indica l'esperienza NEXPX = 400 # - verso sinistra, + verso destra NEXPY = 0 # - verso l'alto, + verso il basso #------------------------------------------------------------------------------ # Barra esperienza #------------------------------------------------------------------------------ EXPBX = 400 # - verso sinistra, + verso destra EXPBY = 17 # - verso l'alto, + verso il basso EXPBL = 100 # Lunghezza della barra EXPBC1 = 14 # Colore 1 EXPBC2 = 6 # Colore 2 EXPBCC = 0 # Colore del bordo EXPBCS = 15 # Colore sfondo barra end #============================================================================== # ** Modulo di configurazione delle altre Window #============================================================================== module MAW #------------------------------------------------------------------------------ # ** Window_Gold - Configurazione #------------------------------------------------------------------------------ WGX = 0 WGY = 360 WGSX = 4 # Coordinata x delle scritte WGSY = 0 # Coordinata y delle scritte WGSL = 220 # Lunghezza area di scrittura. Se il nome della moneta del # vostro gioco è lungo e non lo visualizzate tutto diminuite # il valore cosi entrerà tutto. WGFNT = 18 # Grandezza font. #------------------------------------------------------------------------------ # Impostare, in base alle proprie necessità, una delle tre variabili,WGIS, WGSS # o WGISS, su true e le altre due su false #------------------------------------------------------------------------------ WGIS = false # true/false => SOLO l'icona WGI = 147 # ID dell'icona WGSS = false # true/false => SOLO la scritta WGSN = "Denaro" # Termine WGISS = true # true/false => Icona + Scritta WGIAG = 70 # muove a destra o sinistra l'icona. Da cambiare, se WGISS # è impostato su true, in base all'esigenza. #------------------------------------------------------------------------------ # ** Window_Tempo - Configurazione #------------------------------------------------------------------------------ WTX = 272 WTY = 360 WTSX = 0 # Coordinata x delle scritte. WTSY = 0 # Coordinata y delle scritte. WTSL = 220 # Lunghezza area di scrittura. WTSN = "Tempo di gioco:" # Termine che indica il tempo di gioco. WTFNT = 18 # Grandezza font. end #============================================================================== # ** Window_MenuStatus #============================================================================== class Window_MenuStatus < Window_Selectable include MMS def initialize(x, y) super(0, 56, 544, 305) refresh self.active = true self.index = -1 end def refresh self.contents.clear @item_max = 3 for actor in $game_party.members x = MMS::MSX y = actor.index * 92 + WLH / 2 + MMS::MSX if MMS::USAFACE == true @piux = 10 @piuy = 10 draw_actor_face(actor, x + MMS::FACEX, actor.index * 92 + MMS::FACEY, MMS::FACEGR) else @piux = 0 @piuy = 0 draw_actor_graphic(actor, x + MMS::CHX, y + (WLH + MMS::CHY)) end draw_actor_name(actor, x + MMS::NOMEX, y + @piuy = 10 + MMS::NOMEY) draw_actor_class(actor, x + MMS::CLASSEX + @piux, y + (WLH * 0) + MMS::CLASSEY) draw_actor_state(actor, x + MMS::STATUSX + @piux, y + MMS::STATUSY) draw_actor_level(actor, x + MMS::LIVX + @piux, y + (WLH * 1) + MMS::LIVY) draw_actor_hp(actor, x + MMS::PVX + @piux, (y + MMS::PVY) + WLH * 0, width = MMS::PVBL) draw_actor_mp(actor, x + MMS::PMX + @piux, (y + MMS::PMY) + WLH * 1, width = MMS::PMBL) draw_actor_exp_gauge(actor, x + MMS::EXPBX, actor.index * 92 + MMS::EXPBY) draw_exp_info(actor , x + MMS::NEXPX, actor.index * 92 + MMS::NEXPY) self.contents.draw_text( x + MMS::NSTATUSX + @piux, y + MMS::NSTATUSY, 100, 32, MMS::NSTATUS, 2) end end def update_cursor if @index < 0 self.cursor_rect.empty elsif @index < @item_max self.cursor_rect.set(0, @index * 92, contents.width, 85) elsif @index >= 100 self.cursor_rect.set(0, (@index - 100) * 92, contents.width, 85) else self.cursor_rect.set(0, 0, contents.width, @item_max * 85) end end def draw_exp_info(actor, x, y) s1 = actor.exp_s s2 = actor.corr_exp s3 = s1-s2 s4 = actor.pros_lvl_exp exp = s3.to_s + " / " + s4.to_s self.contents.draw_text(x, y + WLH * 0, 100, WLH, MMS::NEXP) self.contents.draw_text(x, y + WLH * 1, 100, WLH, exp, 2) end def draw_actor_exp_gauge(actor, x, y, width = MMS::EXPBL) s1 = actor.exp_s s2 = actor.corr_exp s3 = s1-s2 s4 = actor.pros_lvl_exp gw = width * s3 / s4 gc1 = text_color(MMS::EXPBC1) gc2 = text_color(MMS::EXPBC2) gauge_back_color = text_color(MMS::EXPBCS) gauge_cornice_color = text_color(MMS::EXPBCC) self.contents.fill_rect(x, y + WLH, width + 2, 8, gauge_cornice_color) self.contents.fill_rect(x + 1, y + WLH + 1, width, 6, gauge_back_color) self.contents.gradient_fill_rect(x + 1, y + WLH + 1, gw, 6, gc1, gc2) end end #============================================================================== # ** Window_Base #------------------------------------------------------------------------------ # * aggiunte #============================================================================== class Game_Actor < Game_Battler def corr_exp return @exp_list[@level] end def pros_lvl_exp return @exp_list[@level+1]-@exp_list[@level] end end #============================================================================== # ** Window_Base #------------------------------------------------------------------------------ # * alias #============================================================================== class Window_Base < Window include MMS alias melosx_draw_actor_state draw_actor_state alias melosx_draw_actor_hp_gauge draw_actor_hp_gauge alias melosx_draw_actor_mp_gauge draw_actor_mp_gauge def draw_actor_state(actor, x, y, width = 24 * MMS::STATUSN) count = 0 for state in actor.states draw_icon(state.icon_index, x + 24 * count, y) count += 1 break if (24 * count > width - 24) end end def draw_actor_hp_gauge(actor, x, y, width = 120) gw = width * actor.hp / actor.maxhp gc1 = text_color(MMS::PVBC1) gc2 = text_color(MMS::PVBC2) gauge_cornice_color = text_color(MMS::PVBCC) self.contents.fill_rect(x, y + WLH - 8, width + 2, 8, gauge_cornice_color) self.contents.fill_rect(x + 1, y + WLH - 8 + 1, width, 6, text_color(MMS::PVBCS)) self.contents.gradient_fill_rect(x + 1, y + WLH - 8 + 1, gw, 6, gc1, gc2) end def draw_actor_mp_gauge(actor, x, y, width = 120) gw = width * actor.mp / [actor.maxmp, 1].max gc1 = text_color(MMS::PMBC1) gc2 = text_color(MMS::PMBC2) gauge_cornice_color = text_color(MMS::PMBCC) self.contents.fill_rect(x, y + WLH - 8, width + 2, 8, gauge_cornice_color) self.contents.fill_rect(x + 1, y + WLH - 8 + 1, width, 6, text_color(MMS::PMBCS)) self.contents.gradient_fill_rect(x + 1, y + WLH - 8 + 1, gw, 6, gc1, gc2) end end #============================================================================== # ** Window_SkillStatus #------------------------------------------------------------------------------ # * alias #============================================================================== class Window_SkillStatus < Window_Base alias melosx_refresh refresh def refresh self.contents.clear draw_actor_name(@actor, 4, 0) draw_actor_level(@actor, 140, 0) draw_actor_hp(@actor, 240, 0) draw_actor_mp(@actor, 390, 0) end end #============================================================================== # ** Window_Status #------------------------------------------------------------------------------ # * alias + aggiunte #============================================================================== class Window_Status < Window_Base include MMS alias melosx_refresh refresh alias melosx_draw_exp_info draw_exp_info def refresh self.contents.clear draw_actor_name(@actor, 4, 0) draw_actor_class(@actor, 128, 0) draw_actor_face(@actor, 8, 32) draw_basic_info(128, 32) draw_parameters(32, 160) draw_actor_exp_gauge(308, 87, (MMS::EXPBL + 50)) draw_exp_info(288, 70) draw_equipments(288, 160) end def draw_basic_info(x, y) draw_actor_level(@actor, x, y + WLH * 0) draw_actor_state(@actor, 308, 12 + WLH * 1) self.contents.draw_text(288, 5, 100, 32, MMS::NSTATUS, 0) draw_actor_hp(@actor, x, y + WLH * 2) draw_actor_mp(@actor, x, y + WLH * 3) end def draw_exp_info(x, y) s1 = @actor.exp_s s2 = @actor.next_exp_s exp = s1.to_s + " / " + s2.to_s self.contents.draw_text(x, y + WLH * 0, 100, WLH, MMS::NEXP) self.contents.draw_text(x + 110, y + WLH * 1, 100, WLH, exp, 0) end def draw_actor_exp_gauge(x, y, width = MMS::EXPBL) s1 = @actor.exp_s s2 = @actor.next_exp_s gw = width * s1 / s2 gc1 = text_color(MMS::EXPBC1) gc2 = text_color(MMS::EXPBC2) gauge_back_color = text_color(MMS::EXPBCS) gauge_cornice_color = text_color(MMS::EXPBCC) self.contents.fill_rect(x, y + WLH, width + 2, 8, gauge_cornice_color) self.contents.fill_rect(x + 1, y + WLH + 1, width, 6, gauge_back_color) self.contents.gradient_fill_rect(x + 1, y + WLH + 1, gw, 6, gc1, gc2) end end #============================================================================== # ** Scene_Menu #------------------------------------------------------------------------------ # * alias #============================================================================== class Scene_Menu < Scene_Base alias melosx_start start alias melosx_terminate terminate alias melosx_update update alias melosx_create_command_window create_command_window def start super create_menu_background create_command_window @gold_window = Window_GoldM.new(MAW::WGX, MAW::WGY) @status_window = Window_MenuStatus.new(160, 0) @tempo_gioco = Window_Tempo.new(MAW::WTX, MAW::WTY) end def terminate super dispose_menu_background @command_window.dispose @gold_window.dispose @status_window.dispose @tempo_gioco.dispose end def update super update_menu_background @command_window.update @gold_window.update @status_window.update @tempo_gioco.update if @command_window.active update_command_selection elsif @status_window.active update_actor_selection end end def create_command_window s1 = Vocab::item s2 = Vocab::skill s3 = Vocab::equip s4 = Vocab::status s5 = Vocab::save s6 = Vocab::game_end @command_window = Window_Command.new(544, [s1, s2, s3, s4, s5, s6 ] , 6, 0, 16) @command_window.index = @menu_index if $game_party.members.size == 0 @command_window.draw_item(0, false) @command_window.draw_item(1, false) @command_window.draw_item(2, false) @command_window.draw_item(3, false) end if $game_system.save_disabled @command_window.draw_item(4, false) end end end #============================================================================== # ** Window_Tempo #============================================================================== class Window_Tempo < Window_Base def initialize(x, y) super(x, y, 272, WLH + 32) refresh end def update super sec = (Graphics.frame_count / Graphics.frame_rate) % 60 if sec > @total_sec % 60 or sec == 0 refresh end end def refresh self.contents.clear @total_sec = Graphics.frame_count / Graphics.frame_rate ora = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 tempo = sprintf("%02d:%02d:%02d", ora, min, sec) self.contents.font.color = normal_color self.contents.font.size = MAW::WTFNT self.contents.draw_text(MAW::WTSX, MAW::WTSY, MAW::WTSL, WLH, tempo, 2) self.contents.draw_text(MAW::WTSX, MAW::WTSY, MAW::WTSL, WLH, MAW::WTSN, 0) end end #============================================================================== # ** Window_Gold #============================================================================== class Window_GoldM < Window_Base include MAW def initialize(x, y) super(x, y, 272, WLH + 32) refresh end def refresh self.contents.clear self.contents.font.color = normal_color self.contents.font.size = MAW::WTFNT draw_currency_value($game_party.gold, MAW::WGSX, MAW::WGSY, MAW::WGSL) if MAW::WGIS == true draw_icon(MAW::WGI, 0, 0) elsif MAW::WGISS == true draw_icon(MAW::WGI, MAW::WGIAG, 0) self.contents.draw_text(MAW::WGSX, MAW::WGSY, MAW::WGSL, WLH, MAW::WGSN, 0) elsif MAW::WGSS == true self.contents.draw_text(MAW::WGSX, MAW::WGSY, MAW::WGSL, WLH, MAW::WGSN, 0) end end end Demo: N/D
  13. Nome Script: Comandi segreti nel Titolo Versione: 1.00 Autore/i: kaisouryouiki Informazioni: Lo script aggiunge dei comandi segreti nel titolo, vale a dire che se si digiterà una sequenza dei tasti impostati nello script, questo ti manda in una mappa prestabilita =) Utile ad esempio se si vuole mandare il giocatore in un'area segreta dove guadagna più HP etc (esempio venuto sul momento) ^^ Istruzioni: Inserite lo script sopra Main. Questo pezzo di codice poi: [c]SMT = [2, 10, 13][/c] fa riferimtno a: il 2 è l'ID della mappa in cui si verrà teletrasportati, e 10/13 le coorinate della mappa. Per modificare la sequenza dei tasti, fate riferimento a questo pezzo di codice: # 1 => DOWN (↓) # 2 => LEFT (←) # 3 => RIGHT (→) # 4 => UP (↑) # 5 => A (Shift) # 6 => B # 7 => X (A) # 8 => Y (S) # 9 => Z (D) # 10 => L (Q) # ゲームセレクトシステム導入時は使用不可 # 11 => R (W) # ゲームセレクトシステム導入時は使用不可 TSC = [4, 1, 3, 2] Dove 4,1,3,2 corrispondono quindi ai tasti (come indicato) Su, Giù, Destra e Sinistra. Script: =begin ★タイトル隠しコマンド★ タイトル画面にて、特定のキーを特定の順番で入力した際に、 指定マップへ飛ばすことができます。 ● 仕様 ●========================================================== 入力を間違えた時点で、入力情報はリセットされます。 ==================================================================== ● 挿入位置 ●====================================================== 「スタートコマンド拡張」導入時は、それより下にお願いします。 ==================================================================== ver1.00 Last Update : 2010/07/29 7/29 : 新規 ろかん   http://kaisouryouiki.web.fc2.com/ =end #=========================================== # 設定箇所 #=========================================== module Rokan module Secret_Command # 隠しコマンド成功時に飛ばされるマップ情報 # [開始マップID, マップX座標, マップY座標] SMT = [2, 10, 13] # 隠しコマンドの内容 # 正しい入力順を以下の値を使って順番に設定 # 1 => DOWN (↓) # 2 => LEFT (←) # 3 => RIGHT (→) # 4 => UP (↑) # 5 => A (Shift) # 6 => B ( # 7 => X (A) # 8 => Y (S) # 9 => Z (D) # 10 => L (Q) # ゲームセレクトシステム導入時は使用不可 # 11 => R (W) # ゲームセレクトシステム導入時は使用不可 TSC = [4, 1, 3, 2] # 隠しコマンド失敗判定をとるコマンド間のフレーム数 # ここで指定したフレーム数の間、何も入力がないと入力情報はリセットされます。 SIC = 90 # 隠しコマンド成功時に演奏するSE SSS = RPG::SE.new("Decision1", 80, 70) end end #=========================================== # ここまで #=========================================== $rsi = {} if $rsi == nil $rsi["タイトル隠しコマンド"] = true class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● インクルード Rokan::Secret_Command #-------------------------------------------------------------------------- include Rokan::Secret_Command #-------------------------------------------------------------------------- # ● フレーム更新 ※再定義 #-------------------------------------------------------------------------- alias secret_update update def update @input_sets ||= [] @interval_count ||= SIC secret_update secret_input to_secret_map if success_secret? end #-------------------------------------------------------------------------- # ● 隠しコマンド入力更新 #-------------------------------------------------------------------------- def secret_input if Input.trigger?(Input::DOWN) @input_sets << 1 elsif Input.trigger?(Input::LEFT) @input_sets << 2 elsif Input.trigger?(Input::RIGHT) @input_sets << 3 elsif Input.trigger?(Input::UP) @input_sets << 4 elsif Input.trigger?(Input::A) @input_sets << 5 elsif Input.trigger?(Input:: @input_sets << 6 elsif Input.trigger?(Input:) @input_sets << 7 elsif Input.trigger?(Input::Y) @input_sets << 8 elsif Input.trigger?(Input::Z) @input_sets << 9 elsif Input.trigger?(Input::L) @input_sets << 10 elsif Input.trigger?(Input::R) @input_sets << 11 elsif ! @input_sets.empty? @interval_count -= 1 @input_sets << 0 if @interval_count.zero? return end @interval_count = SIC end #-------------------------------------------------------------------------- # ● 隠しコマンド成功判定 #-------------------------------------------------------------------------- def success_secret? @input_sets.size.times do |i| unless @input_sets[i] == TSC[i] @input_sets = [] break end end return (@input_sets.size == TSC.size) end #-------------------------------------------------------------------------- # ● 隠しマップへ移行 #-------------------------------------------------------------------------- def to_secret_map SSS.play $game_party.setup_starting_members $game_map.setup(SMT[0]) $game_player.moveto(SMT[1], SMT[2]) $game_player.refresh $scene = Scene_Map.new RPG::BGM.fade(1500) close_command_window Graphics.fadeout(60) Graphics.wait(40) Graphics.frame_count = 0 RPG::BGM.stop $game_map.autoplay end end
  14. Nome Script: Script Pausa Versione: 1.00 Autore/i: kaisouryouiki Informazioni: Inserisce una pausa nel vostro gioco =) Istruzioni: Inserite lo script sopra Main. Inserite poi questa immagine nella cartella System del vostro progetto: Potete anche personalizzarla quindi, ma ricordate di rinominarla STOP_BACK.png. Script: =begin ★マップ一時停止★ マップ上で指定したキーを押すことにより、ゲームの更新を一時的に 行わないようにします。 設定によっては、イベントも一時停止させることができます。 メニュー開けば停止するじゃん、とか言わないよーに^^ ● 注意 ●========================================================== 「STOP_BACK」という名前の画像ファイルをSystemフォルダの中にインポート しておいてください。 ==================================================================== ver1.00 Last Update : 2009/09/10 09/10 : 新規 ろかん   http://kaisouryouiki.web.fc2.com/ =end #=========================================== # 設定箇所 #=========================================== module Rokan module Game_Stop # 一時停止を許可するスイッチ番号 SWITCH = 35 # 一時停止に利用するキー INPUT_KEY = Input::Z # イベントの一時停止も許可するかどうか EVENT_STOP = true end end #=========================================== # ここまで #=========================================== $rsi = {} if $rsi == nil $rsi["マップ一時停止"] = true class Scene_Map < Scene_Base #-------------------------------------------------------------------------- # ● インクルード Rokan::Game_Stop #-------------------------------------------------------------------------- include Rokan::Game_Stop #-------------------------------------------------------------------------- # ● メイン処理 ※再定義 #-------------------------------------------------------------------------- def main start # 開始処理 perform_transition # トランジション実行 post_start # 開始後処理 Input.update # 入力情報を更新 loop do Graphics.update # ゲーム画面を更新 Input.update unless @stop @stop ? stop_update : update break if $scene != self # 画面が切り替わったらループを中断 end Graphics.update pre_terminate # 終了前処理 Graphics.freeze # トランジション準備 terminate # 終了処理 end #-------------------------------------------------------------------------- # ● 開始処理 #-------------------------------------------------------------------------- alias stop_reset start unless $! def start stop_reset @stop = false end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias stop_in? update unless $! def update if Input.trigger?(INPUT_KEY) && event_stop? && $game_switches[SWITCH] Sound.play_decision snapshot_for_background create_menu_background create_map_background @stop = true return end stop_in? end #-------------------------------------------------------------------------- # ● 一時停止中のフレーム更新 #-------------------------------------------------------------------------- def stop_update Input.update if Input.trigger?(INPUT_KEY) Sound.play_decision dispose_menu_background @stopback_sprite.dispose @stop = false end end #-------------------------------------------------------------------------- # ● 一時停止用の背景作成 #-------------------------------------------------------------------------- def create_map_background @stopback_sprite = Sprite.new @stopback_sprite.z = 300 @stopback_sprite.bitmap = Cache.system("STOP_BACK") end #-------------------------------------------------------------------------- # ● イベント一時停止可能判定 #-------------------------------------------------------------------------- def event_stop? if ! EVENT_STOP && $game_map.interpreter.running? return false else return true end end end
  15. Nome Script: Save compresso Versione: 1.00 Autore/i: kaisouryouiki Informazioni: Lo script comprime i salvataggi in un unico file invece di dividerli ^^ Istruzioni: Inserite semplicemente lo script sopra Main. Script: =begin ★セーブデータ一括管理★ Save1.rvdata, Save2.rvdataのように通常セーブの数だけ生成されていく セーブファイルを、1つのセーブファイルにまとめて管理することができます。 ● 注意 ●========================================================== 再定義が非常に多いです。 -------------------------------------------------------------------- このスクリプトを導入する前のセーブデータは読み込めなくなります。 ==================================================================== ver1.00 Last Update : 2010/08/06 08/06 : 「セーブファイル破棄」に対応 07/30 : 新規(FSMにて。ver0.50) ろかん   http://kaisouryouiki.web.fc2.com/ =end $rsi = {} if $rsi == nil $rsi["セーブデータ一括管理"] = true class Window_SaveFile < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 ※ 再定義 #-------------------------------------------------------------------------- def initialize(file_index, data) # 引数が変化しているので注意 super(0, 56 + file_index % 4 * 90, 544, 90) @time_stamp = Time.at(0) @file_index = file_index @file_data = data # 渡されたデータが空(empty)の際にセーブが存在しないとみなします。 @file_exist = ! @file_data.empty? load_gamedata refresh @selected = false end #-------------------------------------------------------------------------- # ● ゲームデータの一部をロード ※ 再定義 #-------------------------------------------------------------------------- def load_gamedata # データそのものが渡されてきているのでファイルをopenする必要なし。 if @file_exist @time_stamp = @file_data[0] @characters = @file_data[1] @frame_count = @file_data[2] @last_bgm = @file_data[3] @last_bgs = @file_data[4] @[member=GamerLog]_system = @file_data[5] @[member=GamerLog]_message = @file_data[6] @[member=GamerLog]_switches = @file_data[7] @[member=GamerLog]_variables = @file_data[8] @total_sec = @frame_count / Graphics.frame_rate end end end class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● コンティニュー有効判定 ※ 再定義 #-------------------------------------------------------------------------- def check_continue @continue_enabled = false return unless File.exist?("Save.rvdata") file = File.open("Save.rvdata", "rb") for data in Marshal.load(file) @continue_enabled = ! data.empty? break if @continue_enabled end file.close end end class Scene_File < Scene_Base #-------------------------------------------------------------------------- # ● ファイル名の取得 #-------------------------------------------------------------------------- def filename return "Save.rvdata" end #-------------------------------------------------------------------------- # ● セーブファイルウィンドウの作成 ※ 再定義 #-------------------------------------------------------------------------- def create_savefile_windows @item_max = 4 @savefile_windows = [] load_data_list # この段階で全てのセーブデータを読み込む @item_max.times do |i| # ウィンドウ生成時にインデックスに該当するセーブデータを渡します。 @savefile_windows.push(Window_SaveFile.new(i, @dataList[i])) end end #-------------------------------------------------------------------------- # ● セーブの実行 ※ 再定義 #-------------------------------------------------------------------------- def do_save write_save_data return_scene end #-------------------------------------------------------------------------- # ● ロードの実行 ※ 再定義 #-------------------------------------------------------------------------- def do_load read_save_data $scene = Scene_Map.new RPG::BGM.fade(1500) Graphics.fadeout(60) Graphics.wait(40) @last_bgm.play @last_bgs.play end #-------------------------------------------------------------------------- # ● 全てのセーブが収まったデータを取得(ウィンドウ生成前に呼ばれるのみ) #-------------------------------------------------------------------------- def load_data_list # ファイルが存在しない場合はデータ取得前にファイルを生成する unless File.exist?(filename) @dataList = [] @item_max.times do @dataList << [] end save_data_list end file = File.open(filename, "rb") @dataList = Marshal.load(file) file.close end #-------------------------------------------------------------------------- # ● 全てのセーブが収まったデータを保存(@dataListの内容変更時に呼ばれる) #-------------------------------------------------------------------------- def save_data_list file = File.open(filename, "wb") Marshal.dump(@dataList, file) file.close end #-------------------------------------------------------------------------- # ● セーブデータの書き込み ※ 再定義 #-------------------------------------------------------------------------- def write_save_data characters = [] for actor in $game_party.members characters.push([actor.character_name, actor.character_index]) end $game_system.save_count += 1 $game_system.version_id = $data_system.version_id @dataList[@index] = [] # クリア @dataList[@index] << Time.now # セーブした時間:タイムスタンプとして利用 @dataList[@index] << characters @dataList[@index] << Graphics.frame_count @dataList[@index] << RPG::BGM::last @dataList[@index] << RPG::BGS::last @dataList[@index] << $game_system @dataList[@index] << $game_message @dataList[@index] << $game_switches @dataList[@index] << $game_variables @dataList[@index] << $game_self_switches @dataList[@index] << $game_actors @dataList[@index] << $game_party @dataList[@index] << $game_troop @dataList[@index] << $game_map @dataList[@index] << $game_player save_data_list # 保存 end #-------------------------------------------------------------------------- # ● セーブデータの読み込み ※ 再定義 #-------------------------------------------------------------------------- def read_save_data Graphics.frame_count = @dataList[@index][2] @last_bgm = @dataList[@index][3] @last_bgs = @dataList[@index][4] $game_system = @dataList[@index][5] $game_message = @dataList[@index][6] $game_switches = @dataList[@index][7] $game_variables = @dataList[@index][8] $game_self_switches = @dataList[@index][9] $game_actors = @dataList[@index][10] $game_party = @dataList[@index][11] $game_troop = @dataList[@index][12] $game_map = @dataList[@index][13] $game_player = @dataList[@index][14] if $game_system.version_id != $data_system.version_id $game_map.setup($game_map.map_id) $game_player.center($game_player.x, $game_player.y) end end #-------------------------------------------------------------------------- # ● ファイル破棄の実行 #-------------------------------------------------------------------------- def file_delete @dataList[@index] = [] # クリア save_data_list end end
  16. Nome Script: Index di scelta memorizzato Versione: 1.00 Autore/i: kaisouryouiki Informazioni: Quando si accede al menù e si seleziona qualche comando, all'uscita e al rientro nel menù, questo riparte dalla posizione iniziale. Con questo script invece la selezione rimarrà memorizzata...spero di essermi spiegato xD Istruzioni: Basta inserire lo script sopra Main. Script: =begin ★コマンドインデックス記憶★ プレイヤーの以下の行動を記憶させることで、 次の行動以降の初期カーソル位置を変更し、同じ行動を取る際の補助とします。 ◆ 記憶する内容 ・メニュー:プレイヤーが最後に選択したコマンドのカーソル位置 ・戦闘  :各アクターが最後に選択したアクターコマンドのカーソル位置 ・戦闘  :各アクターが最後に選択したエネミー ※1 ・戦闘  :各アクターが最後に選択したアクター ※1 => 戦闘終了後リセットされます ● 仕様 ●========================================================== エネミーで記憶したインデックスは、 それぞれの対象が存在しなくなった場合(撃破後)にリセットされます。 -------------------------------------------------------------------- 各、記憶された情報はセーブデータにも保存され、ロード後にも引き継がれます。 ==================================================================== ● 注意 ●========================================================== ニューゲームから始めないとエラーを吐きます。 -------------------------------------------------------------------- 全てエイリアスで構成されてますので、素材の下の方に挿入してください。 ==================================================================== ver1.00 Last Update : 2009/08/19 8/19 : 新規 ろかん   http://kaisouryouiki.web.fc2.com/ =end $rsi = {} if $rsi == nil $rsi["コマンドインデックス記憶"] = true class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :last_battle_index attr_accessor :last_enemy attr_accessor :last_actor #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias battle_index_initialize initialize unless $! def initialize(actor_id) battle_index_initialize(actor_id) @last_battle_index = 0 @last_enemy = nil @last_actor = nil end end class Game_Party < Game_Unit #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :last_menu_index attr_accessor :last_item #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias menu_index_initialize initialize unless $! def initialize menu_index_initialize @last_menu_index = 0 end end class Scene_Menu < Scene_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias last_menu_index_set initialize unless $! def initialize(menu_index = 0) last_menu_index_set(menu_index = 0) @menu_index = $game_party.last_menu_index end #-------------------------------------------------------------------------- # ● 終了処理 #-------------------------------------------------------------------------- alias last_menu_index_memory terminate unless $! def terminate unless $scene.is_a?(Scene_Map) $game_party.last_menu_index = @command_window.index end last_menu_index_memory end #-------------------------------------------------------------------------- # ● アクター選択の開始 #-------------------------------------------------------------------------- alias last_menu_index_memory_dummy start_actor_selection unless $! def start_actor_selection $game_party.last_menu_index = @command_window.index last_menu_index_memory_dummy end end class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● 終了処理 #-------------------------------------------------------------------------- alias enemy_index_reset terminate unless $! def terminate for i in $game_party.members do i.last_enemy = nil end enemy_index_reset end #-------------------------------------------------------------------------- # ● 次のアクターのコマンド入力へ #-------------------------------------------------------------------------- alias last_battle_index_memory next_actor unless $! def next_actor n = @actor_index + 1 if @actor_command_window.active && ! (@active_battler.action.kind == 0 && @active_battler.action.basic < 0) @active_battler.last_battle_index = @actor_command_window.index end unless $game_party.members.size == n @actor_command_window.index = $game_party.members[n].last_battle_index end last_battle_index_memory end #-------------------------------------------------------------------------- # ● アクターコマンド選択の開始 #-------------------------------------------------------------------------- alias last_battle_index_set start_actor_command_selection unless $! def start_actor_command_selection last_battle_index_set @actor_command_window.index = @active_battler.last_battle_index end #-------------------------------------------------------------------------- # ● 対象敵キャラ選択の開始 #-------------------------------------------------------------------------- alias last_enemy_index_set start_target_enemy_selection unless $! def start_target_enemy_selection last_enemy_index_set @active_battler.action.target_index = -1 unless @active_battler.last_enemy == nil if $game_troop.existing_members.include?(@active_battler.last_enemy) @target_enemy_window.index = $game_troop.existing_members.index(@active_battler.last_enemy) end end end #-------------------------------------------------------------------------- # ● 対象敵キャラ選択の終了 #-------------------------------------------------------------------------- alias last_enemy_index_memory end_target_enemy_selection unless $! def end_target_enemy_selection unless @active_battler.action.target_index == -1 @active_battler.last_enemy = @target_enemy_window.enemy end last_enemy_index_memory end #-------------------------------------------------------------------------- # ● 対象アクター対象選択の開始 #-------------------------------------------------------------------------- alias last_actor_index_set start_target_actor_selection unless $! def start_target_actor_selection last_actor_index_set @active_battler.action.target_index = -1 unless @active_battler.last_actor == nil if $game_party.members.include?(@active_battler.last_actor) @target_actor_window.index = $game_party.members.index(@active_battler.last_actor) end end end #-------------------------------------------------------------------------- # ● 対象アクター選択の終了 #-------------------------------------------------------------------------- alias last_actor_index_memory end_target_actor_selection unless $! def end_target_actor_selection unless @active_battler.action.target_index == -1 @active_battler.last_actor = $game_party.members[@target_actor_window.index] end last_actor_index_memory end end
  17. Nome Script: Bordi nei face Versione: 1.5 Autore/i: Woratana Informazioni: Script che aggiunge un bordo attorno ai face automaticamente ^^ Istruzioni: Inserite lo script sopra Main. Altre istruzioni all'interno dello script. Script: #============================================================ # ● [VX] ◦ Quick Face Border ◦ #------------------------------------------------------------ # ◦ by Woratana [[email protected]] # ◦ Thaiware RPG Maker Community # ◦ Released Date: 23/02/2008 #------------------------------------------------------------ # Version 1.5 # - Edited Window_Message Bug # - You can use custom image for border #------------------------------------------------------------ class Window_Base < Window #------------------------------ # START SETUP SCRIPT #--------------------------- BORDER_MODE = 0 # Choose Border Mode (0: Use Windowskin, 1:Use Image) BORDER_SKIN = "Window" # Name of Window Skin for Border (Mode 0) BORDER_IMAGE = "borderpic" # Custom Image for Border (Mode 1) # Custom image must be in folder "Graphics/Pictures" and size 96 x 96 pixel BORDER_OPACITY = 255 # Face Border's Opacity (0 - 255) # (true/false) USE_BORDER_IN_MENU = true USE_BORDER_IN_MESSAGE = true USE_BORDER_IN_STATUS_WINDOW = true USE_BORDER_IN_NAME_WINDOW = true #------------------------------ # END SETUP SCRIPT #--------------------------- alias wor_facbor_winbas_ini initialize alias wor_facbor_winbas_dis dispose alias wor_facbor_winbas_draf draw_face def initialize(x, y, width, height) wor_facbor_winbas_ini(x, y, width, height) @border = Array.new end def dispose delete_border if @border != [] wor_facbor_winbas_dis end def draw_face(face_name, face_index, x, y, size = 96) if ($scene.is_a?(Scene_Menu) and USE_BORDER_IN_MENU) or ($scene.is_a?(Scene_Map) and USE_BORDER_IN_MESSAGE) or ($scene.is_a?(Scene_Status) and USE_BORDER_IN_STATUS_WINDOW) or ($scene.is_a?(Scene_Name) and USE_BORDER_IN_NAME_WINDOW) if BORDER_MODE == 0 @border.push Window_Border.new(self.x + x + 16,self.y + y + 16,96,96) elsif BORDER_MODE == 1 id = @border.size @border[id] = Sprite.new @border[id].bitmap = Cache.picture(BORDER_IMAGE) @border[id].x = self.x + x + 16 @border[id].y = self.y + y + 16 @border[id].z = 500 end end wor_facbor_winbas_draf(face_name, face_index, x, y, size) end def delete_border for i in 0..(@border.size - 1) if BORDER_MODE == 0 and !@border[i].nil? @border[i].dispose elsif BORDER_MODE == 1 and !@border[i].nil? @border[i].bitmap.dispose @border[i].dispose end end @border = [] end end $worale = {} if !$worale $worale["FaceBorder"] = true class Window_Border < Window_Base def initialize(x,y,width,height) super(x,y,width,height) self.windowskin = Cache.system(BORDER_SKIN) self.opacity = BORDER_OPACITY self.back_opacity = 0 self.z = 500 end end class Window_Message < Window_Selectable alias wor_facbot_winmsg_upd update def update wor_facbot_winmsg_upd if @closing and @border != [] delete_border end end end Note dell'Autore: Se lo script dovessere essere usato per scopi commerciali, bisognerà avvisare l'autore.
  18. Nome Script: EK Items Menu Versione: 1.4b Autore/i: Equilibrium Keeper Informazioni: Lo script permette di avere a disposizione gli oggetti divisi, vale a dire che gli oggetti verranno divisi tra quelli che si possono usare in battaglia, sul Menù etc... Istruzioni: Inserite lo script sopra Main. Istruzioni all'interno dello script Script: #============================================================================== # EK Items Menu v.1.4b #------------------------------------------------------------------------------ # Created by: Equilibrium Keeper [[email protected]] # Created on: 26.05.2008 18:57:18 # Special thanks: Рольф, ANNxiousity, insider # Also thanks to: rpgmaker.sk6.ru, rpg-maker.info, rpgmakervx.net #============================================================================== # Description: The Script changes menu items structure adding filtration on # different parametres #------------------------------------------------------------------------------ # Requirements: Addon by Equilibrium Keeper v.1.00 or above # Install: Make a new blank script page above main and copy this script. #============================================================================== # Instruction: Write the titles of desirable sections into the ITEMS_TYPE # array (line 44). Write the selection parametres into the two-dimensional # ITEMS_FILTRATION array (line 45) (choose parametres from the following list # or assign yours). NOTE: One-dimensional arrays (selection parametres) in the # ITEM_FILTRATION array should be followed in the same order as categories # corresponding to them in ITEMS_TYPE! #------------------------------------------------------------------------------ # Standard selection parametres list (all the items are shown on default) : # "Usable" - Items can be used either in menu or in battle, or both variants possible # "Usable!" - Items can't be used ever. # "Equipment" - Equipment items: either weapmon or armor (or both o.O) # "Equipment!" - Non-equipment items # "InMenu" - Items can be used in menu # "InMenu!" - Items can't ever be used in menu. # "InBattle" - In-battle usage possible # "InBattle!" - In-battle usage impossible #------------------------------------------------------------------------------ # To make your own selection parametre follow the steps listed below: # 1) Write new category title into the ITEMS_TYPE array as a new value or # by replacing the existing one. # 2) Declare tag (e.g. "alch") and write it into the "Note" field of a weapon, # armor or item you decided to refer to the new category. # 3) Write this tag (after changing '' to '') into the ITEMS_FILTRATION # array as a new condition or by replacing the existing one. # 4) Add to the GetItemType block at the and of Case the code block similar to # the lines 152..179 by changing "alch" and "alch!" to your tag and # denying one. #============================================================================== module EKScripts ITEMS_TYPE = ["Usable", "Battle Only", "Equipment", "Other", "Alchemistry"] ITEMS_FILTRARION = [ ["InMenu", "Equipment!", "alch!"], # Usable ["InBattle", "InMenu!", "Equipment!"], # Battle Only ["Equipment"], # Equipment ["Usable!", "Equipment!", "alch!"], # Other ["alch"] # For example: Alchemistry ] # ← Do not delete end class Window_Item < Window_Selectable #-------------------------------------------------------------------------- attr_writer :type #-------------------------------------------------------------------------- # * Object Initialization # x : window x-coordinate # y : window y-coordinate # width : window width # height : window height # type : item type #-------------------------------------------------------------------------- def initialize(x, y, width, height, type = -1) super(x, y, width, height) @items_notes = [] for i in 1..$data_items.size - 1 @items_notes[i] = $data_items[i].note end @weapons_notes = [] for i in 1..$data_weapons.size - 1 @weapons_notes[i] = $data_weapons[i].note end @armors_notes = [] for i in 1..$data_armors.size - 1 @armors_notes[i] = $data_armors[i].note end @type = type @items_filtrarion = EKScripts::ITEMS_FILTRARION @column_max = 2 self.index = 0 refresh end #-------------------------------------------------------------------------- # * Whether or not to include in item list # item : item #-------------------------------------------------------------------------- def include?(item) return false if item == nil if $game_temp.in_battle return false unless item.is_a?(RPG::Item) else return false if GetItemType(item) == false end return true end #-------------------------------------------------------------------------- # * Whether or not to include in valid items list # item : item #-------------------------------------------------------------------------- def GetItemType(item) @item = item @return = true for i in 0..@items_filtrarion[@type].size - 1 if @return == true case @items_filtrarion[@type][i] when "Usable" if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon)) unless $data_items[item.id].menu_ok? || $data_items[item.id].battle_ok? @return = false end end when "Usable!" if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon)) if $data_items[item.id].menu_ok? || $data_items[item.id].battle_ok? @return = false end end when "InMenu" if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon)) unless $data_items[item.id].menu_ok? @return = false end end when "InMenu!" if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon)) if $data_items[item.id].menu_ok? @return = false end end when "InBattle" if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon)) unless $data_items[item.id].battle_ok? @return = false end end when "InBattle!" if !(item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon)) if $data_items[item.id].battle_ok? @return = false end end when "Equipment" unless item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon) @return = false end when "Equipment!" if item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon) @return = false end when "IsWeapon" unless item.is_a?(RPG::Weapon) @return = false end when "IsWeapon!" if item.is_a?(RPG::Weapon) @return = false end when "IsArmor" unless item.is_a?(RPG::Armor) @return = false end when "IsArmor!" if item.is_a?(RPG::Armor) @return = false end when "alch" if item.is_a?(RPG::Weapon) if @weapons_notes[item.id].index("alch") == nil @return = false end elsif item.is_a?(RPG::Armor) if @armors_notes[item.id].index("alch") == nil @return = false end else if @items_notes[item.id].index("alch") == nil @return = false end end when "alch!" if item.is_a?(RPG::Weapon) if @weapons_notes[item.id].index("alch") != nil @return = false end elsif item.is_a?(RPG::Armor) if @armors_notes[item.id].index("alch") != nil @return = false end else if @items_notes[item.id].index("alch") != nil @return = false end end end end end return @return end end class Scene_Item < Scene_Base #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- def start super create_menu_background @items_type = EKScripts::ITEMS_TYPE @spacing = 32 - (@items_type.size - 4) * 8 if @spacing <= 0 @spacing = 8 end @command_window = Window_Command.new(544, @items_type, @items_type.size, 0, @spacing, 1) @command_window.index = 0 @viewport = Viewport.new(0, 0, 544, 416) @help_window = Window_Help.new (0, 56) @help_window.viewport = @viewport @item_window = Window_Item.new(0, 112, 544, 304, 0) @item_window.viewport = @viewport @item_window.help_window = @help_window @item_window.active = false @target_window = Window_MenuStatus.new(0, 0) hide_target_window @command_window.active = true @item_window.active = false end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- def terminate super dispose_menu_background @command_window.dispose @viewport.dispose @help_window.dispose @item_window.dispose @target_window.dispose end #-------------------------------------------------------------------------- # * Update Frame #-------------------------------------------------------------------------- def update super update_menu_background @command_window.update @help_window.update @item_window.update @target_window.update if @command_window.active update_command_selection elsif @item_window.active update_item_selection elsif @target_window.active update_target_selection end end #-------------------------------------------------------------------------- # * Update Command Selection #-------------------------------------------------------------------------- def update_command_selection if Input.trigger?(Input:: Sound.play_cancel return_scene elsif Input.trigger?(Input::C) Sound.play_decision @command_window.active = false @item_window.active = true elsif Input.trigger?(Input::RIGHT) || Input.trigger?(Input::LEFT) @item_window.type = @command_window.index @item_window.refresh @item_window.update_help end end #-------------------------------------------------------------------------- # * Update Item Selection #-------------------------------------------------------------------------- def update_item_selection if Input.trigger?(Input:: Sound.play_decision @item_window.active = false @command_window.active = true Sound.play_cancel elsif Input.trigger?(Input::C) @item = @item_window.item if @item != nil $game_party.last_item_id = @item.id end if $game_party.item_can_use?(@item) Sound.play_decision determine_item else Sound.play_buzzer end end end #-------------------------------------------------------------------------- # * Show(Recreate) Target Window # right : Right justification flag (if false, left justification) #-------------------------------------------------------------------------- def show_target_window(right) @item_window.active = false @target_window.dispose @target_window = Window_MenuStatus.new(0, 0) width_remain = 544 - @target_window.width @target_window.x = right ? width_remain : 0 @target_window.visible = true @target_window.active = true if right @viewport.rect.set(0, 0, width_remain, 416) @viewport.ox = 0 else @viewport.rect.set(@target_window.width, 0, width_remain, 416) @viewport.ox = @target_window.width end end end
  19. Nome Script: Bloccare gli Eventi Versione: 1.0 Autore/i: Sky00Valentine Informazioni: Questo script da la possibilità di bloccare tutti gli eventi della mappa, per poi farli ripartire. Funziona come una specie di pausa. Istruzioni: Inserite lo script sopra Main. Le istruzioni sono all'interno dello script. Script: #=========================================================================== # # Sky Script Revolution : Freeze Map Snippet (SSR) (SSR/FMS) # Version 1.0 # July 22, 2011 Started # July 22, 2011 Completed # September 30, 2011 Last Updated # #=========================================================================== # # What is Sky Script Revolution (SSR)? # It is a revamp of Sky's previous scripts. # Is that all? # No, that is only the beginning. Look for # New Scripts as well. Also look forward to # the reopenning of script request hall soon. # What kind of scripts are you planning? # I am starting to get into battle system # scripting so look for edits. # Are you supporting old scripts? # Some scripts don't need revamping as they # work beautifully, so I will update those # scripts. # #=========================================================================== # # Features : # Version 1.0 - July 22, 2011 # - Freezes Map and all events while switch is on. # Version 1.2 - September 30, 2011 # - Bugfixes # - Fixed The Common Event problem. # #=========================================================================== # # Credit # Sky00Valentine :creator and editor # Celianna :requesting script # #=========================================================================== # # Terms of Use # ------------ # # Crediting Rpgmakervx.net is the only thing I ask. # However feel free to credit Sky00Valentine if you # see fit. # #=========================================================================== # # Future improvement # ------------------ # # - Unknown # #=========================================================================== # # Instructions & Installation # --------------------------- # - place script line command in event as is # # save_event(@event_id) to start freeze. For Normal Event. # del_event(@event_id) to quit freezing. Use only for Normal Events. # add_common(the common event id) add a common event that won't freeze. # del_common(the common event id) removes a common event so that it can be frozen. # # - Change Whether map animation actually freezes or not in the Freeze Module # #=========================================================================== $imported = {} if $imported == nil $imported["SSRFreezeMapSnippet"] = true module Sky module Freeze Animate = true #set to true to allow map to remain animate. end end class Game_Event attr_accessor :event alias stop start def start unless $game_map.interpreter.freeze stop else stop if $game_map.interpreter.unfrozen.include?(@id) end end alias pause update def update unless $game_map.interpreter.freeze pause else pause if $game_map.interpreter.unfrozen.include?(@id) end end end class Game_Character alias ssr_fm_move_type_random move_type_random def move_type_random unless $game_map.interpreter.freeze ssr_fm_move_type_random end end alias ssr_fm_move_toward_player move_toward_player def move_type_toward_player unless $game_map.interpreter.freeze ssr_fm_move_toward_player end end alias ssr_fm_move_type_custom move_type_custom def move_type_custom unless $game_map.interpreter.freeze ssr_fm_move_type_custom end end end class Game_CommonEvent attr_reader :common_event_id alias pause update def update unless $game_map.interpreter.freeze pause else pause if $game_map.interpreter.unfrozen_com.include?(@common_event_id) end end end class Spriteset_Map alias stop update_tilemap def update_tilemap unless $game_map.interpreter.freeze and (not Sky::Freeze::Animate) stop end end end class Game_Player alias stop_movement update def update unless $game_map.interpreter.freeze stop_movement end end end class Game_Interpreter attr_reader :freeze alias ssr_fd_initialize initialize def initialize(depth = 0, main = false) @unfrozen_events = [] @unfrozen_common = [] @freeze = false ssr_fd_initialize(depth,main) end def get_event_id events = $game_map.events @x = events == nil ? nil : events[@event_id] return @x end def save_event(id) @unfrozen_events.push(id) unless @unfrozen_events.include?(id) @freeze = true end def add_common(id) @unfrozen_common.push(id) unless @unfrozen_common.include?(id) end def del_common(id) @unfrozen_common.delete(id) if @unfrozen_common.include?(id) end def del_event(id) @unfrozen_events.delete(id) if @unfrozen_events.include?(id) @freeze = false end def unfrozen return @unfrozen_events end def unfrozen_com return @unfrozen_common end end Incompatibilità: Dovrebbe essere compatibile con la maggior parte degli script ^^
  20. Nome Script: Protezione Skill Versione: 1.2.3 Autore/i: Kal Informazioni: Con questo script è possibile creare una protezione da una Skill, come succede in FF. E' progettato per il sistema di battaglia di default (per ora) ma dovrebbe funzionare con altri sistemi di battaglia. Istruzioni: Inserite lo script sopra Main. Istruzioni all'interno dello script. Script: # Protect Skill v 1.2.3 # by Kal # # ===== How to use ===== # # Make a state that has the magic word in it's note box. When that state # is inflicted on an ally, the person who inflicted the state (by casting # a spell that adds the state, for example) will receive all the damage # that is done to the ally. # # ===== What battle system is this for? ===== # # The script was designed for the default battle system but it's also works # with Tankentai (and ATB). However, there is no animation support for # Tankentai at the moment (i.e. protector jumping in front of protectee) and # the damage numbers need to be fixed. # # ===== Version history ===== # # 1.0 - Finished script # # 1.1 - Added message text configuration in the config module. # - Status effect will be removed immediately after the protector dies # - Fixed a bug where a dead protector would still protect under certain # circumstances. # - Fixed a bug where the protect message got drawn when it shouldn't. # # 1.2 - Added ability to increase/decrease the amount of damage a protector # takes when protecting. # # 1.2.1 - Fixed using items on protector bug with Tankentai + ATB. # # 1.2.2 - Fixed a bug where you could not cast the state again after a battle. # # 1.2.3 - Fixed a bug with Tankentai + ATB where the protect state would not # be removed when the protector died. module ProtectConfig MAGIC_WORD = "Protect" # Add this word in the "Note" box for any status in order to enable protect # for that status. PROTECT_PHYSICAL = true PROTECT_SKILLS = true # Set these to true/false to enable/disable protection from physical damage # and protection from skills damage. PROTECT_LIMIT = 1 # This is the number of allies one character can protect at the same time. DAMAGE_EFFECT = 100 # This is a percentage of damage the protector will take when protecting # an ally. For example, if this value is set to 50, the protector will take # half damage when protecting an ally. MP_DAMAGE_EFFECT = false # Should DAMAGE_EFFECT apply to MP damage? MESSAGE = lambda do |context| eval "protector.name + ' protected ' + target.name + '!'", context # Edit this line to change the message that is displayed when an actor # protects an ally. protector.name is the protector's name and # target.name is the protected ally's name. Any text you want to add # needs to be in single quote strings, as above. # Note: not working for Tankentai at the moment. end end class RPG::State attr_accessor :skill_user def protect? set_protect if @protect.nil? @protect end def set_protect if @note.downcase =~ /#{ProtectConfig::MAGIC_WORD.downcase}/ @protect = true else @protect = false end end end class Scene_Battle unless $@ alias :kal_old_display_action_effects :display_action_effects alias :kal_old_process_action :process_action end # NOTE: not being called at all with Tankentai and ATB. Fix? def display_action_effects(target, obj = nil) # If this is a physical attack (obj == nil) and PROTECT_PHYSICAL is false if !ProtectConfig::PROTECT_PHYSICAL and obj.nil? kal_old_display_action_effects(target, obj) # call original method and return return # If this is a skills attack and PROTECT_SKILLS is false elsif !ProtectConfig::PROTECT_SKILLS and obj kal_old_display_action_effects(target, obj) # call original method and return return end if target.protect? protector = target.states.find { |state| state.protect? }.skill_user protector.display_protect = true unless protector.dead? if protector != @active_battler and protector.display_protect protector.display_protect = false if protector.dead? text = ProtectConfig::MESSAGE.call(binding) @message_window.add_instant_text(text) wait(30) kal_old_display_action_effects(protector) return end end kal_old_display_action_effects(target, obj) end # Check if any protector is dead after an action has been processed. # If dead remove the state. def process_action kal_old_process_action $game_party.members.each do |member| member.states.each do |state| if state.protect? if state.skill_user.dead? state.skill_user.protected_allies = 0 member.remove_state(state.id) @status_window.refresh end end end end end end class Game_Battler attr_accessor :protected_allies, :display_protect, :protecting unless $@ alias :kal_old_initialize :initialize alias :kal_old_make_attack_damage_value :make_attack_damage_value alias :kal_old_add_state :add_state alias :kal_old_skill_effect :skill_effect alias :kal_old_make_obj_damage_value :make_obj_damage_value end def initialize @protected_allies = 0 @display_protect = true @protecting = false kal_old_initialize end def make_attack_damage_value(attacker, effect = nil) kal_old_make_attack_damage_value(attacker) if ProtectConfig::PROTECT_PHYSICAL states.each do |state| if state.protect? and !state.skill_user.dead? @hp_damage = 0 state.skill_user.protecting = true state.skill_user.attack_effect(attacker) end end if @protecting @hp_damage *= (ProtectConfig::DAMAGE_EFFECT / 100) @protecting = false end end end def make_obj_damage_value(user, obj) kal_old_make_obj_damage_value(user, obj) if ProtectConfig::PROTECT_SKILLS and !$game_party.members.include?(user) states.each do |state| if state.protect? and !state.skill_user.dead? @hp_damage = 0 @mp_damage = 0 state.skill_user.protecting = true state.skill_user.skill_effect(user, obj) end end if @protecting @hp_damage *= (ProtectConfig::DAMAGE_EFFECT / 100) @mp_damage *= (ProtectConfig::DAMAGE_EFFECT / 100) if ProtectConfig::MP_DAMAGE_EFFECT @protecting = false end end end def add_state(state_id) state = $data_states[state_id] if state.protect? state.skill_user = @skill_user @skill_user.protected_allies += 1 end kal_old_add_state(state_id) end def skill_effect(user, skill) @skill_user = user kal_old_skill_effect(user, skill) end def protect? states.any? {|state| state.protect?} end end class Game_Actor alias :kal_old_state_resist? :state_resist? unless $@ def state_resist?(state_id) # Prevent castng protect on self if @skill_user == self and $data_states[state_id].protect? return true # Prevent casting protect on a char that is already protected elsif protect? and $data_states[state_id].protect? return true # Prevent casting protect if the protect limit is reached elsif @skill_user.protected_allies >= ProtectConfig::PROTECT_LIMIT return true end kal_old_state_resist?(state_id) end end class Game_Party alias :kal_old_remove_states_battle :remove_states_battle unless $@ def remove_states_battle kal_old_remove_states_battle members.each do |actor| actor.protected_allies = 0 end end end
  21. Nome Script: Cozziekuns' Status Screen Versione: 1.0 Autore/i: cozziekuns Informazioni: Una versione ritoccata dello Scene_Status Screenshots: Istruzioni: Inserite lo script sotto Material. Per usare lo sfondo dovete rinominare l'immagine in questo modo: NomeEroe_bg.png Le altre istruzioni d'uso sono all'interno dello script. Script: #=============================================================================== # # Cozziekuns' Status Screen # Last Date Updated: 4/10/2010 # # A status screen. A nice looking one at that. # #=============================================================================== # Updates # ----------------------------------------------------------------------------- # o 05/03/10 - Started Script. #=============================================================================== # What's to come? # ----------------------------------------------------------------------------- # o I dunno. You tell me! #=============================================================================== # Instructions # ----------------------------------------------------------------------------- # To install this script, open up your script editor and copy/paste this script # to an open slot below ? Materials but above ? Main. Remember to save. You can # edit the modules as you wish. # # The background images should be of size 544 * 416. When importing a background # image, import it to the folder Graphics/Pictures. The name of the actor should # be on the name of the file, followed by _bg. # # Example: Raven_bg #=============================================================================== module COZZIEKUNS BACKGROUND_OPACITY = 100 HP_ICON = 99 MP_ICON = 100 EXP_ICON = 98 LEVEL_ICON = 62 ATTACK_ICON = 26 DEFENSE_ICON = 52 SPIRIT_ICON = 20 AGILITY_ICON = 49 CLASS_ICONS ={ 0 => 0, 1 => 16, 2 => 32, 3 => 21, 4 => 8, } BIOGRAPHIES ={ # Actor => Biography 0 => "I like pie.", 1 => "Our average hero who hails|from a family that lives in|poverty.", 2 => "Our hero's best friend, but|sometimes worst rival. Can|be irrational at times.", 3 => "Our 3rd hero, a magician|with a nice personality,|and has powerful skills|to boot.", 4 => "Our 4th hero, a thief|shrouded in mystery. Not|much is known about Sora,|except she's damn pro.", } end #============================================================================== # ** Game_Actor #------------------------------------------------------------------------------ # This class handles actors. It's used within the Game_Actors class # ($game_actors) and referenced by the Game_Party class ($game_party). #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Get Experience String #-------------------------------------------------------------------------- def exp_s return @exp_list[@level+1] > 0 ? @exp : 1 end #-------------------------------------------------------------------------- # * Get String for Next Level Experience #-------------------------------------------------------------------------- def next_exp_s return @exp_list[@level+1] > 0 ? @exp_list[@level+1] : 1 end #-------------------------------------------------------------------------- # * Get String for Experience to Next Level #-------------------------------------------------------------------------- def next_rest_exp_s return @exp_list[@level+1] > 0 ? (@exp_list[@level+1] - @exp) : 1 end end #============================================================================== # ** Scene_Status #------------------------------------------------------------------------------ # This class performs the status screen processing. #============================================================================== class Scene_Status < Scene_Base #-------------------------------------------------------------------------- # * Start processing #-------------------------------------------------------------------------- alias coz_start start def start coz_start @[member=biok]_window = Window_Biography.new(@actor) @statushelp_window = Window_StatusHelp.new(0, 356) end #-------------------------------------------------------------------------- # * Termination Processing #-------------------------------------------------------------------------- alias coz_terminate terminate def terminate coz_terminate @[member=biok]_window.dispose @statushelp_window.dispose end end #============================================================================== # ** Window_Base #------------------------------------------------------------------------------ # This is a superclass of all windows in the game. #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # * Get Exp Gauge Colour 1 #-------------------------------------------------------------------------- def exp_gauge_colour1 return text_color(7) end #-------------------------------------------------------------------------- # * Get Exp Gauge Colour 2 #-------------------------------------------------------------------------- def exp_gauge_colour2 return text_color(8) end end #============================================================================== # ** Window_Status #------------------------------------------------------------------------------ # This window displays full status specs on the status screen. #============================================================================== class Window_Status < Window_Base #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear @hp_icon = COZZIEKUNS::HP_ICON @mp_icon = COZZIEKUNS::MP_ICON @exp_icon = COZZIEKUNS::EXP_ICON @level_icon = COZZIEKUNS::LEVEL_ICON @atk_icon = COZZIEKUNS::ATTACK_ICON @def_icon = COZZIEKUNS::DEFENSE_ICON @[member=Spiderman 2099]_icon = COZZIEKUNS::SPIRIT_ICON @agi_icon = COZZIEKUNS::AGILITY_ICON draw_actor_back(@actor, 0, 0) draw_actor_name(@actor, 4, 0) draw_actor_class(@actor, 160, 0) draw_icon(62, 128, 32) draw_icon(98, 128, WLH * 3 + 32) draw_icon(99, 128, WLH + 32) draw_icon(100, 128, WLH * 2 + 32) draw_icon(26, 320, 33) draw_icon(52, 320, 33 + WLH + 1) draw_icon(20, 320, 33 + WLH * 2 + 2) draw_icon(49, 320, 33 + WLH * 3 + 3) if COZZIEKUNS::CLASS_ICONS.include?(@actor.id) @icon_number = COZZIEKUNS::CLASS_ICONS[@actor.id] else @icon_number = COZZIEKUNS::CLASS_ICONS[0] end draw_icon(@icon_number, 128, 0) draw_actor_face(@actor, 8, 32) draw_basic_info(160, 32) draw_parameters(352, 32) draw_actor_tnl(@actor, 160, WLH * 3 + 32) draw_equipments(288, 154) self.contents.font.color = system_color self.contents.draw_text(320, 0, 80, WLH, "Status:", 0) end #-------------------------------------------------------------------------- # * Draw Basic Information # x : Draw spot X coordinate # y : Draw spot Y coordinate #-------------------------------------------------------------------------- def draw_basic_info(x, y) draw_actor_level(@actor, x, y + WLH * 0) draw_actor_state(@actor, 400, 0) draw_actor_hp(@actor, x, y + WLH * 1) draw_actor_mp(@actor, x, y + WLH * 2) end #-------------------------------------------------------------------------- # * Draw Actor Back # actor : the actor you want # x : draw spot x-coordinate # y : draw spot y-coordinate #-------------------------------------------------------------------------- def draw_actor_back(actor, x, y) @rect_height = 416 @background_opacity = COZZIEKUNS::BACKGROUND_OPACITY bitmap = Cache.picture(actor.name + "_bg") rect = Rect.new(0, 0, 0, 0) rect.x = 0 rect.y = 0 rect.width = 544 rect.height = @rect_height self.contents.blt(x, y, bitmap, rect, @background_opacity) bitmap.dispose end #-------------------------------------------------------------------------- # * Draw Equipment # x : Draw spot X coordinate # y : Draw spot Y coordinate #-------------------------------------------------------------------------- def draw_equipments(x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 120, WLH, Vocab::equip + "s:") for i in 0..4 draw_item_name(@actor.equips[i], x + 16, y + 11 + WLH * (i + 1)) end end #-------------------------------------------------------------------------- # * Draw TNL (To next level) # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # width : Width #-------------------------------------------------------------------------- def draw_actor_tnl(actor, x, y, width = 120) draw_actor_tnl_gauge(actor, x, y, width) self.contents.font.color = system_color self.contents.draw_text(x, y, 30, WLH, "E") self.contents.font.color = hp_color(actor) last_font_size = self.contents.font.size xr = x + width if width < 120 self.contents.draw_text(xr - 44, y, 44, WLH, actor.exp_s, 2) else self.contents.draw_text(xr - 99, y, 44, WLH, actor.exp_s, 2) self.contents.font.color = normal_color self.contents.draw_text(xr - 55, y, 11, WLH, "/", 2) self.contents.draw_text(xr - 44, y, 44, WLH, actor.next_exp_s, 2) end end #-------------------------------------------------------------------------- # * Draw TNL gauge # actor : actor # x : draw spot x-coordinate # y : draw spot y-coordinate # width : Width #-------------------------------------------------------------------------- def draw_actor_tnl_gauge(actor, x, y, width = 120) gw = width * actor.exp_s / actor.next_exp_s gc1 = exp_gauge_colour1 gc2 = exp_gauge_colour2 self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color) self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2) end end #============================================================================== # ** Window_Biography #------------------------------------------------------------------------------ # Basically what Yanfly did. Kudos to you, Yanfly. #============================================================================== class Window_Biography < Window_Base #-------------------------------------------------------------------------- # * Initalize #-------------------------------------------------------------------------- def initialize(actor) super(0, 154, 288, 416) @actor = actor self.opacity = 0 refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text(4, 0, 284, WLH, "Biography:", 0) self.contents.font.color = normal_color self.contents.font.size = 20 y = 32 txsize = 24 nwidth = 284 if COZZIEKUNS::BIOGRAPHIES.include?(@actor.id) text = COZZIEKUNS::BIOGRAPHIES[@actor.id] else text = COZZIEKUNS::BIOGRAPHIES[0] end buf = text.gsub(/N([d+])/i) { "__#{$1}" } lines = buf.split(/(?:[|]|n)/i) lines.each_with_index { |l, i| l.gsub!(/__([d+])/i) { "N#{$1}" } self.contents.draw_text(4, i * txsize + y, nwidth, WLH, l, 0) } end end #============================================================================== # ** Window_Status_Help #------------------------------------------------------------------------------ # Helps you out, I guess... #============================================================================== class Window_StatusHelp < Window_Base #-------------------------------------------------------------------------- # * Initalize #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, 544, 60) refresh end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.draw_text(4, 0, 544, WLH, "Press Q and W to switch characters. Press X to exit.") end end
  22. Nome Script: Nome Area nel Menù Versione: 1.0 Autore/i: Ally Informazioni: Questo script permette di visualizzare nel menù di gioco,il nome dell'Area che creerete in una vostra mappa. Istruzioni: Inserite lo script sotto Material. Script: #================================================= # Name_Area #================================================= # Data di creazione: 26/10/2010 # Versione: 1.0 #================================================= #------------------------------------------------- # Autore: Ally # http://www.rpgmkr.net/forum # E' vietato distribuire lo script su altri forum # senza il consenso dell'autore. #------------------------------------------------- module Name_Area #Testo che appare quando sei nell'Area Area = "Area" #Testo che appare quando sei fuori dall'Area Locazione = "Locazione" end class Window_Area < Window_Base def initialize(x, y) super(x, y, 160, WLH * 2 + 40) refresh end def refresh @area = $game_player.area_corrente self.contents.clear self.contents.font.color = system_color self.contents.draw_text(0, -4, 120, 32, Name_Area::Area) if [email protected]? self.contents.draw_text(0, -4, 120, 32, Name_Area::Locazione) if @area.nil? self.contents.font.color = normal_color text = @area.name if [email protected]? text = $game_map.map_name if @area.nil? self.contents.draw_text(-4, 34, 120, WLH, text, 2) end end #-------------------------------------------- class Game_Map def map_name if @map_name.nil? map_info = load_data("Data/MapInfos.rvdata") @map_name = map_info[@map_id].name end return @map_name end end #-------------------------------------------- class Game_Player def area_corrente aarea = nil for area in $data_areas.values if in_area?(area) aarea = area end end return aarea end end #-------------------------------------------- class Scene_Menu < Scene_Base alias area_name_init start unless $@ def start area_name_init @areaname_window = Window_Area.new(0, Graphics.height) @areaname_window.y -= @areaname_window.height+@gold_window.height end alias area_name_term terminate unless $@ def terminate @areaname_window.dispose area_name_term end alias area_name_updt update unless $@ def update area_name_updt @areaname_window.update end end Incompatibilità: Per adesso testato solo sul menù di default.
  23. Ally

    Minigame Poker

    Nome Script: Poker Versione: 1.01 Autore/i: Ehime Informazioni: Come da titolo, il gioco del Poker =P Screenshots: Istruzioni: Istruzioni e script all'interno della demo. Ricordatevi di copiare anche le immagini che sono situate dentro alla cartella Pictures. Essendo uno script tutto in giapponese ci ho dato uno sguardo veloce, ma funziona. Demo: http://www.mediafire.com/download.php?bdf5icwkkzvh0bp
  24. Nome Script: PBS - Pokemon Battle System Versione: 1.3 Autore/i: HungrySnake Informazioni: Come da titolo, un battle system come quello dei giochi Pokèmon. Screenshots: Istruzioni: Copiate tutti gli script della demo nel vostro progetto (compreso le musiche). Altre istruzioni all'interno degli script. F.A.Q: D: All'avvio ho il seguente errore: Missing file "Battle.mp3" R: Controlla di aver copiato tutte le musiche della demo, o di avere una tua musica rinominata 'Battle.mp3' D: I file audio, devono avere gli stessi nomi di quelli inseriti nella demo? R: No. I file audio si possono rinominare come si vogliono, ma si devono cambiare anche nello script nelle seguenti linee: USIC_VICTORY_SE = RPG::SE.new("Victory", 80, 100) MUSIC_ESCAPE_BATTLE_SE = RPG::SE.new("Flee", 100, 100) MUSIC_BATTLE_SE = RPG::SE.new("Battle", 80, 100)Dove Victory, Flee e Battle sono i nomi dei file audio. D: Vorrei mostrare più di un Pokèmon nemico in battaglia, si può fare? R: Si aggiungerà questa features nella prossima versione del PBS Demo: http://www.mediafire.com/?mtrkt64vqn1qnh5
  25. Nome Script: Fix Animazioni Versione: 1.0 Autore/i: FenixFyreX Informazioni: Se prima le animazioni su mappa venivano create in un punto preciso della mappa attraverso @animation_ox e @animation_oy, con questo script si aggiornano le variabili per poter muovere le animazioni. Istruzioni: Lo script deve stare sopra Main, ma SOTTO TUTTI gli altri Script che avete nel progetto. Script: class Sprite_Base alias update_animation_oxy update_animation unless $@ def update_animation(*args,&block) if @animation.position == 3 if viewport == nil @animation_ox = 544 / 2 @animation_oy = 416 / 2 else @animation_ox = viewport.rect.width / 2 @animation_oy = viewport.rect.height / 2 end else @animation_ox = x - ox + width / 2 @animation_oy = y - oy + height / 2 if @animation.position == 0 @animation_oy -= height / 2 elsif @animation.position == 2 @animation_oy += height / 2 end end update_animation_oxy(*args,&block) end end
×