-
Posts
1,288 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Everything posted by giver
-
PROBLEMA Non è possibile avere più di 100 picture??
giver replied to MaC's question in Supporto RGSS (XP)
Ho notato di aver sbagliato il nome della costante da usare. Scusa. L'istruzione va scritta for i in 1..More_Picture::NumeroPicture * 2 Cioè con il trattino basso tra More e Picture Ho provato e non mi dà errore . . . EDIT - Ho inserito la modifica nello script di Sleeping, così è più plug-n-play, cioè non è necessario fare modifiche a Game_Screen o spostare il module in ogni progetto in cui lo si usa . . . -
PROBLEMA Non è possibile avere più di 100 picture??
giver replied to MaC's question in Supporto RGSS (XP)
Non è la riga 33 dello script di Sleeping che devi cambiare . . . Devi sostituire quella di Game_Screen nello script editor . . . Dallo script di Sleeping devi solo tagliare il pezzo di codice che va spostato in cima allo script editor . . . -
Non dovrebbe darti errore se quella if viene eseguita PRIMA di chiamare def command_levelup E @done è nil o false in quel momento. Quindi, o il def command_levelup viene chiamato PRIMA di eseguire la if che inizializza quei valori (A proposito in quale class è inserito quel def ?), oppure @done è true PRIMA di eseguire quella if . . . E se è vera una di queste due circostanze per tua volontà, allora hai sviluppato male il meccanismo e lo devi rivedere . . . In ogni caso avevo anche indicato di cambiare il modo di inizializzare quei valori: Ma mi è venuto un sospetto: l'errore quando te lo dà ? Durante il gioco o non appena lo lanci ? Se è quando lo lanci, forse def command_levelup è esterno a qualunque classe e, per qualche ragione che non conosco vista la scarsa familiarità che ho con questo genere di circostanze/errori, viene eseguito automaticamente all'avvio e si ritrova perciò a gestire valori non inizializzati . . .
-
Una variabile che non è stata inizializzata ha come valore base nil, che viene considerato false, ma hai usato, come ribadito da Tio, l'operatore sbagliato. Per vedere se due variabili sono uguali si usa l'operatore == (o === in casi particolari). Ti ho anche indicato un'alternativa, prima, che non fa uso di alcun operatore unless @done # a meno che @done sia true che è come scrivere if not @done # se @done non è true che equivale a scrivere if not @done == true Nonostante i miei sforzi hai capito giusto . . . :rovatfl:
-
PROBLEMA Non è possibile avere più di 100 picture??
giver replied to MaC's question in Supporto RGSS (XP)
Forse il problema sta nel (def) initialize di Game_Screen . .. Vai in quello script, alla riga 33, che presenta questa istruzione for i in 1..100 e cambiala con for i in 1..MorePicture::NumeroPicture * 2 Ora, i Module dovrebbero essere caricati prima di tutto il resto, ma per evitare problemi, dallo script di Sleeping taglia il seguente codice module More_Picture #Imposta qui il numero di picture NumeroPicture = 100 end crea/inserisci una nuova pagina nello script editor sopra Game_Temp ed incollaci il codice tagliato prima . . . Prova a vedere se così funziona . . . -
In effetti, se guardi la if che gli ho corretto, quando viene eseguita, la variabile $gold_dapg viene inizializzata a 100. Quindi il codice che dà errore viene chiamato anche quando quella if è false (cioè @done != false prima che il codice interno della if sia stato eseguito), cosa che non dovrebbe accadere, se ho capito come dovrebbe funzionare la cosa . . . Se invece non ho capito ed è previsto che @done sia true (o nil, in caso non abbia usato l'unless come suggerito) prima che quella if sia eseguita, allora si tratta di errore concettuale: si è sviluppato nel modo sbagliato quello che si voleva ottenere . . . Quella variabile e le altre inizializzate in quella if andrebbero inizializzate ad inizio gioco, probabilmente, o nello script Scene_Title quando si sceglie una nuova partita, oppure tramite una (call) script, eseguita una sola volta, nella prima mappa di gioco . . . O inizializzare tali valori come parte di Game_System, come suggerito . . . EDIT Non potendo aver sotto gli occhi il resto del codice del menù, non posso esserne sicuro, ma se, come dici, lo scopo di quella inizializzazione è evitare che un comando nel menù venga usato per (chiamare quel metodo e) comprare livelli di esperienza eseguendo il codice che dà errore, mi sa che hai mancato il bersaglio . . .
-
L'errore è probabilmente dovuto alla riga che ho colorato di rosso. E' un errore comunissimo dei principianti: Per i confronti di uguaglianza va usato il DOPPIO UGUALE, perchè quello singolo serve per assegnare un valore alla variabile che lo precede. In questo caso la if non viene eseguita perchè l'espressione non può risultare true, dato che nella variabile viene messo false (è un po' complicato da spiegare come si deve . . .) Dovresti quindi riscriverla così if @done == false o meglio ancora unless @done Inoltre, se quel codice fa parte del menù, tutto ciò che viene impostato quando la condizione risulta vera dovrebbe resettarsi ogni volta che viene aperto il menù o comunque ogni volta che viene creata un'istanza della classe in cui si trova quel metodo (def) start . . . EDIT - Ti consiglio di leggere una guida sulla programmazione orientata agli oggetti, tipo La Guida all'OOP @ HTML.it, in particolare per quello che concerne l'Incapsulamento e la Visibilità. Usi troppe variabili globali "sfuse", mentre sarebbe meglio aggiunere tali valori di un oggetto che viene memorizzato in una variabile globale, come Game_System (che viene memorizzato in $game_system) In bocca al lupo.
-
Penso che intendesse dire convertirlo per l'XP . . . Gli script del VX si possono vedere all'interno dell'XP. Devi creare un progetto nuovo/vuoto e chiudere il tool. Vai nella cartella della demo fatta col VX dove c'è il file Scripts.rvdata e lo rinomini come Scripts.rxdata. Sostituisci il file rinominato con quello omonimo del progetto creato apposta con l'XP. A questo punto, aprendo quel progetto, puoi osservare gli script del VX proprio come se fossero dell'XP, ma ovviamente non li puoi testare perchè la struttura dati usata dai due tool è differente . . .
-
Non mi sono spiegato bene . . . Non devi selezionare quel file per aprire un progetto di rm2k3, ma la presenza di quel file indica al tool che si tratta di un gioco fatto con rpg maker. Se non ricordo male, il pannello per aprire un progetto include un riquadro bianco con la lista di tutti i progetti presenti nella cartella indicata sotto (una cosa del tipo "c:\documents and settings\utente\documenti\rm2k3"), che ha accanto un pulsante con tre puntini, per selezionare la cartella in cui cercare progetti editabili. Perciò dovresti premere sul pulsante per sfogliare l'hard disc e selezionare la cartella che contiene la cartella con il gioco, non la cartella del gioco. Quando dai l'ok, nel riquadro bianco dovrebbero apparire sia il nome del gioco/progetto che quello della sottocartella in cui si trova: a quel punto lo selezioni e clicchi sul pulsante apri . . .
-
R: Sì, se non è stato criptato in qualche modo. Basta che la cartella del "progetto" contenga il file rpg_rt.exe affinchè il tool lo riconosca . . .
-
Lo fa già . . . Inserisce la versione animata del chara di ogni PG nelle seguenti finestre (Scene in cui si trova la finestra): - Window_MenuStatus (Scene_Menu) - Window_Status (Scene_Status) - Window_SaveFile (Scene_Load e Scene_Save) - Window_NameEdit (Scene_Name)
-
R: Non c'entra lo script Cache. Ti dà errore perchè uno dei valori che tale script deve usare non gli è stato comunicato come si deve . . . Sembra che tu faccia uso di uno script per gestire le battaglie diverso da quello di base del VX, di cui hai impostato la grafica manualmente, scrivendone i nomi, e non hai messo il nome di ciascuna immagine tra virgolette . . . Ed il fatto degli HP che non scendono potrebbe essere causato, anche questo, da una cattiva configurazione (o un bug) dello script che gestisce le battaglie . . . EDIT - O una reimpostazione sbagliata degli States nel DataBase . . .
-
R: Devi prendere le coordinate Mappa dell'eroe in 4 variabili al momento del contatto, ossia all'inizio della pagina evento che gestisce l'apertura della porta: la coordinata Mappa X in, diciamo, vEroe_VecchiaX e vEroe_NuovaX, e fare lo stesso per la coordinata (Mappa) Y . . . Quando la porta è aperta attivi uno Self-Switch (se non ti serve per usare le funzioni di uno script particolare, quello A, ad esempio) in fondo alla pagina evento. Crei quindi una nuova pagina, che si attiva con lo Self-Switch scelto in precedenza, di tipo Processo Parallelo. In questa pagina, prelevi le coordinate Mappa dell'eroe SOLO nelle variabili vEroe_NuovaX e vEroe_NuovaY, le confronti con quelle vecchie (vEroe_NuovaX con vEroe_VecchiaX, e vEroe_NuovaY con vEroe_VecchiaY) e se anche solo una delle due risulta differente, fai chiudere la porta e metti OFF lo Self-Switch A (o quello che avevi scelto, se differente) . . . R: Serve a "congelare" la grafica del gioco, ossia a fermarne temporaneamente l'aggiornamento/ridisegno, perchè non devono esserci cambiamenti nell'immagine di partenza della Transizione, dato che farebbe sballare alcuni calcoli su come ottenere l'immagine d'arrivo della Transizione. Va quindi usata subito prima di usare il comando evento che esegue le Transizioni . . .
-
Mi ricordo che nel gioco Legend of the Spirit Sword di Viffetto, molto vecchio quindi, c'era un sistema di crafting che funzionava proprio come servirebbe a te. Non dovrebbe esserci bisogno di crearlo, dunque, ma dovrebbe bastare cercarlo tra gli script che gestiscono il crafting, appunto, che in rete abbondano . . .
-
Hai provato con quella disponibile nel portale di Rpg2S ? RmXP 102 ITA patch @ Rpg2S EDIT - Io non uso patch di traduzione in italiano sia perchè non ho particolari problemi con l'inglese, sia perchè invalida la licenza d'uso del programma, quindi non so se quella che ti ho segnalato sia valida o meno . . .
-
Veramente il numero di fotogrammi al secondo si setta con Graphics.frame_rate Di base è impostato a 20 (o 40, attivando lo Smooth Mode dal pannellino di configurazione di Game.exe, che appare premendo F1 mentre si gioca) Graphics.frame_rate può avere un valore compreso tra 10 e 120 (fotogrammi al secondo) Non l'ho mai cambiato in corso di gioco, ma solo nel Main per tutto il gioco, per cui non so se "saltellare" con i valori di questo settaggio possa creare problemi o meno . . .
-
L'errore dice che non esiste $game_variables, o meglio che $game_variables non contiene nessuna istanza, come se non fosse mai stata eseguita $game_variables = Game_Variables.new ( ), per cui non può inserire il valore hour come richiesto. Se lo script Tempo è stato inserito nello script editor prima di Scene_Title, potrebbe essere quella la causa . . . Non ne sono sicuro, ma il mancato cambiamento di tonalità dovrebbe essere causato da questa istruzione hour = Time.new.hour che dovrebbe essere scritta o come hour = Time.now.hour oppure come time_now = Time.now hour = time_now.hour
-
La formula della fuga si trova nello script Scene_Battle 2 alla riga 113. Quella per i colpi critici si trova in Game_Battler 3 alla riga 58, e tieni presente che il calcolo dei colpi a segno, di base, è effettuato da chi subisce l'attaco, non da chi lo tenta . . . E non devi badare solo alle formule per decidere come modificarle, ma anche al resto del metodo (def) in cui sono scritte e agli altri metodi chiamati dal codice per stabilire i parametri da usare nelle formule, naturalmente . . . Per assegnare un valore ad una variabile di quel tipo si usa $game_variables[id_della_variabile] = Formula_per_stabilirne_il_valore Per sapere come usare certi parametri nella formula che stabilisce il valore di una di queste variabili si può osservare lo script Interpreter 4 nel metodo def command_122, che comincia intorno alla riga 26 di tale script . . . id_delle_variabile, di base, può avere un valore tra 1 e 5000, e la formula per calcolarne il valore può essere complicata quanto ti pare (sembra una cosa ovvia, ma ho visto gente che eseguiva, in RGSS, un'operazione per riga come si fa ad eventi . . . Incluse persone che si vantavano di essere esperte di programmazione "seria" ). Es. $game_variables[5] = [$game_actors[4].hp * 50 / $game_variables[2] - 20, 1].max Questa formula va letta "Prendi il valore di HP attuali del quarto actor nel DataBase, moltiplicalo per 50, dividilo per il valore della variabile 0002, sottrai 20, confronta il risultato di queste operazioni con 1 ed assegna il maggiore tra i due alla variabile 0005"
-
Porta che si apre con immissiione di Password
giver replied to PrinceEndymion88's question in Richieste scripts RGSS (XP)
Questo tutorial è ciò che fa per te . . . Tutorial Forziere con Password Alfabetica by Zoro The Gallade @ Rpg2S -
Per ottenere sfumature azzurre dovresti abbassare il primo valore, che rappresenta la componente rossa del colore, ed aumentare la terza, che rappresenta quella blu. Se anche la componente verde, ossia la seconda è piuttosto alta, la sfumatura finale tenderà al celeste . . . Puoi cominciare con lo scambiare il primo valore con il terzo, e vedere come rende, ed eventualmente ritoccare le formule che calcolano la componente verde se ti sembra che il colore finale sia troppo scuro . . . EDIT - In questo codice il primo (rosso) ed il terzo (blu) valore di ogni Color.new sono già stati invertiti . . . [color="green"]val = 255 * ((actor.hp*100)/actor.maxhp) green = 255 - val/100[/color] color = Color.new([color="red"]0[/color],[color="green"]green[/color],[color="blue"]224[/color],255) w_color = Color.new([color="red"]96[/color],[color="green"]green+32[/color],[color="blue"]255[/color],255) [color="green"]if green > 64 then green -= 32 elsif green > 128 then green -= 64 end[/color] b_color = Color.new([color="red"]0[/color],[color="green"]green[/color],[color="blue"]172[/color],255)
-
Abilità associata al primo personaggio del party
giver replied to MasterSion's question in Supporto RGSS (XP)
Se ho capito correttamente quello che ti serve fare, lo puoi fare ad eventi . . . Realizzi un evento comune in processo parallelo che verifica il tasto premuto, e quando il tasto associato all'abilità speciale viene premuto controlli qual è l'actor che si trova alla testa del party. A seconda dell'actor che risulta "attivo" per usare l'abilità speciale, chiami un evento comune che gestisce l'effetto della sua abilità speciale . . . Per verificare qual è l'actor che conduce il party bisogna usare l'ultima opzione nel quarto pannello delle Conditional Branch, inserendo nel campo di testo questo codice $game_party.actors[0].id == 1 ovviamente mettendo al posto dell'uno il numero dell'actor nell'omonimo pannello del DataBase . . . Esempio con pseudo-codice: > Input Button Processing: v0001:TastoPremuto_Spcl > IF button X pressed __> IF $game_party.actors[0].id == 1 ____> Chiama Evento Comune: AbilitàlSpeciale1 __> ELSE ____> IF $game_party.actors[0].id == 2 ______> Chiama Evento Comune: AbilitàlSpeciale2 ____> ELSE ______> IF $game_party.actors[0].id == 3 ________> Chiama Evento Comune: AbilitàlSpeciale3 ______> END IF (actor3) ____> END IF (actor2) __> END IF (actor1) > END IF (button) -
THE TRICK - Virus Attack
giver replied to Nightwish's topic in Release (mobile o con altri tool o linguaggi)
Lo ha fatto con una vecchia versione di Game Maker . . . -
Nello script per il title cerca il metodo (def) create_command_window Al suo interno ci dovrebbe essere un'istruzione che appare scritta più o meno così @command_window = Window_Command.new(172, [s1, s2, s3]) devi modificare il primo numero, che rappresenta la larghezza della finestra, ed aggiungere il numero di colonne dopo l'array con la lista dei comandi presenti nel title. Es. @command_window = Window_Command.new(480, [s1, s2, s3], 3) In questo caso la finestrella sarà larga 480 pixels ed i comandi saranno distribuiti su tre colonne . . .
-
Per verificare l'uguaglianza si usa il doppio uguale (o quello triplo, in casi particolari), non quello singolo. if $game_switches[1] == true non if $game_switches[1] = true che assegna il valore true (mette ON) allo switch numero 1 per poi verificare se è messo ON, cosa che così risulta sempre vera . . . Ci sono due def update, di cui uno non è chiuso dall'end, ed anche la if che controlla il button B (ESC) non ha l'end . . . (hai copia-incollato male del codice e ci sono alcuni end fuori posto) Devi fare anche il dispose delle bitmap usate da ogni sprite che crei, non solo quello degli sprite . . . E probabile che ci siano altri problemi, ma non ho approfondito . . .
-
Probabilmente usi il tipo di coordinate sbagliato: in tutti gli Rpg Maker ce ne sono due, ossia le Coordinate Mappa (Map X e Map Y) e le Coordinate Schermo (Screen X e Screen Y). Devi usare queste ultime, in modalità Center Pixel, per sfruttarle con una picture del genere. Tra l'altro, la picture dovrebbe essere più grande, se no quando l'eroe si avvicina ai lati dello schermo una parte della mappa risulta scoperta, come si può notare dai tuoi stessi screenshot . . .
