-
Posts
1,288 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by giver
-
-
Se non sbaglio esiste già uno script che fa una cosa del genere, ma non l'ho a portata di mano . . .
In ogni caso, lo cerco e se lo ritrovo lo posto . . .
EDIT - Non ho ritrovato quello che conoscevo, di Rpg Advocate/Philomortis, perchè il sito non esiste più, ma ne ho trovato un altro che dovrebbe fare la stessa cosa.
E' dentro la demo che trovi nel link qui sotto e le istruzioni per usarlo sono in inglese . . .
Individual Battle Commands by Charlie Lee @ RPG REVOLUTION
Questo te lo chiedo in caso non riesca a rintracciarlo:
Si tratterebbe comunque di skill, ma con nome diverso a seconda della classe o del personaggio che le usa, giusto ?
-
Mi pare che abbia usato: UCTitle by Sleeping Leonhart @ RPG2S
-
Per attivare uno switch da script basta scrivere:
$game_switches[n] = true
dove al posto della n tra parentesi quadre devi inserire il numero dello switch nella lista, senza gli 0 "iniziali", ossia, ad esempio, 3 invece di 0003 . . .
Puoi inserire l'istruzione proprio prima del self.transfer_player.
Se per animazione intendi una transizione di qualche genere, eventualmente si può fare facilmente anche tramite codice ruby . . .
Certamente con gli eventi puoi sbizzarrirti di più . . .
-
Umh, faccio che darti anche il numero delle variabili per la gestioen del tempo:
secondi 2, minuti 3, ore 1, giorni 4, settimane 5, mesi 6, anni 7
Prima 4 variabili libere dalla 14 alla 17
Primo swicht libero lo swicht 4
La variabile UnitàTempo che numero ha ?
Per la parte che ho messo in rosso, sei sicuro ? Il sistema dell'orologio ne usa 3 (Tempo per ContaTempo, MostraOrario per MostraOra, BloccaPG per BloccaEroe) e poi c'è quello del sistema di illuminazione, se non sbaglio . . .
Poi, mi sono dimenticato di dirti che me ne serve uno anche per MostraCalendario, che sarebbe il 5° se la tua prima indicazione è esatta, assieme ad una variabile UltimoGiornoMostrato, che dovrebbe essere la 18, quindi . . .
-
Per numero del giorno intendevo qualcosa come in
"Oggi è Giovedì 18 Dicembre."
Rivedere la grafica dell'orologio, lo potrei anche fare, ma nemmeno io sono un vero grafico: per ottenere buoni risultati ci metto molto più tempo di un grafico "pr0". Tra l'altro dovrei conoscere meglio l'ambientazione e lo stile grafico del tuo gioco per avere maggiori possibilità di fare un buon lavoro . . .
Poi, mi è venuta in mente un'idea per gestire i balzi temporali (come la notte in locanda di cui hai parlato in un altro topic), ma per poterla implementare mi servirebbe sapere qual è il numero del primo Switch "libero", e il numero delle prime 4 (quattro) Variabili che non usi ("libere").
Così evito di farti fare le stesse modifiche che sono state necessarie per l'orologio.
P.S.: *carine* è soggettivo. Quello che piace a me potrebbe non piacere a te . . .
-
Molto ben fatto!(anche se la grafica del quadrante e dei numeri è un pò bruttina XD)
Se fosse possibile , mi piacerebbe personalizzare i nomi di giorni e mesi, per esempio
Lunre, Marre, Mered, Giver, Venre, Saber, Dimer
e per i mesi:
Gennaio :Mese dell' adozione
Febbraio :Mese del preludio
Marzo:Mese dei fiori
Aprile:Mese del canto
Maggio:Mese del cielo
Giugno:Mese della pace
Luglio:Mese del fato
Agosto:Mese del Leone
Settembre:Mese dei rimpianti
Ottobre:Mese della rassegnazione
Novembre:Mese della preparazione
Docembre:Mese dell' abbandono
Te l'avevo detto di non guardare la grafica. Ovviamente non l'ho curata, perchè serviva solo a dimostrare i meccanismi necessari a creare un orologio.
Comunque la puoi sostituire, basta che le cifre siano della stessa dimensione (inclusa la parte trasparente, quindi i numeri possono essere anche più piccoli, volendo . . .), ed il quadramte almeno largo uguale (l'altezza puoi anche aumentarla o lasciarla così, basta che la parte dove ci sono le cifre sia al centro rispetto alle estremità superiore ed inferiore dell'immagine . . .)
Altrimenti devi modificare le coordinate in tutti i mostra picture usati dal sistema . . .
Nel calendario, vuoi visualizzare pure il numero del giorno ?
Va bene una disposizione su due righe, con il nome del mese sopra ed il nome del giorno sotto (eventualmente insieme al suo numero), magari con fondale a tema "stagionale" ?
Vuoi che sia possibile visualizzarli assieme se si usano entrambe gli oggetti ? In tal caso bisognerebbe cambiare il tasto da premere per cancellarli dallo schermo, altrimenti non si può accedere al menù per usare l'altro (eventualmente si potrebbe creare un oggetto che li visualizzi entrambe se li si possiede tutti e due, ma sarebbe difficile toglierlo dall'inventario in caso si volesse vendere uno dei due conservando l'altro . . .)
Per quello che riguarda i nomi personalizzati di giorni e mesi, non è un problema, basta sapere quale font usare per scriverli nelle pictures del calendario. Magari posta uno dei nomi vecchi, se sono immagini, o uno screen del calendario "in azione" se produce i nomi tramite codice . . .
EDIT - Ma hai semplificato le cose ed i mesi durano tutti 28 giorni, oppure hanno durate differenti ?
-
Ho realizzato una demo. Non badare troppo alla grafica.
Ovviamente non puoi usare il sistema così com'è. Devi sostituire le variabili e gli switch che ho usato, in parte con quelli del tuo progetto ed in parte aggiungendone di nuovi.
Non è difficile, ma solo un po' lungo da fare . . .
EDIT - Ho rimosso la demo pechè ne ho postata una migliore alcuni post più in basso
Se hai problemi ad inserirlo nel tuo progetto chiedi pure.

-
Non è facile riuscire a generare una sequenza random senza dover tirare in ballo ALTRI eventi paralleli che vorrei evitare (potrei fare una random in ogni evento che chiamo per dare una mescolataXD).
Puoi provare a generare multipli del risultato massimo che hai previsto e calcolarne il modulo, per riavere un risultato compreso tra 0 ed il numero massimo possibile meno 1 (aggiungendo uno al risultato del calcolo del modulo per avere valori tra 1 ed il numero massimo ottenibile)
Es. Per generare numeri da 1 a 6, usando un esito casuale di trenta valori (quintuplo di 6).
> varDado = A caso da 0 a 29 (trenta esiti. si parte da zero per sfruttare correttamente l'operazione di modulo)
> varDado modulo 6 (ottiene un valore tra 0 e 5)
> varDado + 1 (ottiene un valore da 1 a 6) (questo passaggio non serve se non si deve mostrare il risultato così com'è)
Più grande è il multiplo del valore massimo, più ampia sarà la gamma di esiti possibili, e maggiori possibilità di ottenere varietà nei risultati . . .
-
Impostando sta cosa del chiama evento nell' evento dell ora, quando sono le 19 le lanterne si accendono, ma sembrano impazzite, continuano a lampeggiare!!!
No niente ho risolto XD
L'evento comune nella demo è stato fatto per gestire accensione e spegnimento tramite interruttore . . .
Per un ciclo giorno-notte, l'alternanza tra accensione e spegnimento è dettata dalla fase del giorno in cui ci si trova, non dallo stato precedente dell'interruttore, quindi lo switch va messo direttamente ON/OFF all'inizio della fase del giorno appropriata, senza ricorrere ad un evento esterno . . .
Sono due meccanismi differenti . . .
-
Forse, alla fine, rileggendo per bene ho capito cosa volevi fare . . . :ph34r:
Tu volevi creare un item "orologio", che usato dall'inventario, fa apparire un orologio che resta visibile fino a quando non si preme ESC.
Se così fosse, allora era appropriata la prima spiegazione che ti ho dato. C'è in più il tenere bloccato il personaggio mentre viene visualizzato l'orologio, ma è abbastanza facile da fare ad eventi.
Se sei ancora dell'idea, te lo realizzo io. Ci metto di meno che a scrivere un tutorial . . .
Se invece adesso ti piace di più averlo nel menù (ma che sia comunque disponibile solo se il personaggio possiede l'orologio), "teoricamente" dovrebbe essere alla mia portata realizzarlo . . .
Vedi tu.
-
Vediamo se ho capito.
Nel tuo menù, che non è ad eventi (o sì?!?), al posto del normale orologio che ti dice quanto è passato dall'inizio del gioco, vuoi inserirne uno che sia legato al ciclo giorno-notte fatto ad eventi ?
Se è così non ti serve alcuna picture, comunque. Ed il personaggio resta fermo se la Scene è diversa dalla Mappa (che si può avere come fondale anche quando non ci si trova nella mappa) . . .
Però devo vedere com'è il ciclo giorno-notte, ed anche lo script del menù, se non è quello standard . . . e sapere quale localizzazione ed aspetto debba avere questo orologio nel menù.
-
Ho provato: si accende al secondo tentativo e ricomincia a funzionare correttamente.
EDIT - Trovato cosa interferiva.
Gli eventi luminosi devono avere solo la pagina con i commenti per le luci e tutto funziona come dovrebbe.
Nella demo, gli eventi hanno anche una pagina vuota che si attiva con lo stesso switch che accende le luci. Questa pagina vuota va eliminata da tutti gli eventi affinchè tutto funzioni.
EDIT2 - "Aggiustata" la spiegazione di come rimediare all'inconveniente.
-
Usi uno script per gestire il ciclo giorno-notte ?
Pensavo l'avessi fatto ad eventi . . .
Eventualmente l'orologio si può integrare in quello script. E' anche meno laborioso da programmare . . .
Non posso occuparmene subito, ma se me lo mandi via MP, non appena ho tempo ci lavoro su.
Dammi anche indicazioni precise su come vuoi che lo inserisca rispetto agli altri elementi grafici.
-
Certo che si può ad eventi, usando le Pictures. Anche a lancette, volendo, ma è più complesso . . .
Ti serve un'immagine per il "quadrante" dell'orologio, più una per numero da 0 a 9.
Scegli uno switch che disegni l'orologio quando messo ON. La cancellazione dell'orologio è meglio che la metti separata, altrimenti spreca tempo a cancellare le picture dell'orologio ogni volta che viene aggiornato il tempo. Idem quando disegni il fondale dell'orologio: fallo prima di mettere ON lo switch MostraOrologio.
Il "codice" per la grafica dell'orologio va messa, naturalmente, in fondo alle istruzioni che aggiornano quella parte del tempo che viene mostrata: Aggiornamento delle picture con le cifre dei secondi subito dopo aver ricalcolato i secondi, aggiornamento delle cifre dei minuti dopo aver ricalcolato i minuti, ed aggiornamento delle cifre delle ore ogni volta che cambia l'ora . . .
Devi creare una serie di Condizioni SE per ogni coppia di cifre che compone l'orologio, pari al numero di valori che può avere ogni cifra della coppia più una (quella che verifica se lo switch MostraOrologio è ON)
Quindi, (10 per le unità dei Secondi, 6 per le decine dei Secondi) + 1, (10 per le unità dei Minuti, 6 per le decine dei Minuti) + 1, e (10 per le unità delle Ore, 3 per le decine delle Ore) + 1.
Ti consiglio di usare i numeri-picture (layers) più alti per mostrare l'orologio: per un orologio che mostra ore-minuti-secondi ti servono 7 layers, e visto che quello più alto è il 50, in questo caso, dovresti mettere il quadrante con numero-picture pari a 44, unità secondi a 45, decine secondi a 46, unità minuti a 47, decine minuti a 48, unità ore a 49 e decine ore a 50 . . .
Non posso essere più specifico di così perchè non so come calcoli il tempo nel tuo gioco . . .
-
Di base sembra funzionare con le modifiche che gli ho apportato.
Ecco la demo: http://www.mediafire.com/file/2jjc0ydrdey/...EffectsDemo.zip
Per settare lo switch che accende le luci quando messo ON, cambiare l'uno con il numero dello switch che si desidera usare nella seconda riga dello script (l'unica istruzione di module Lighting, con la costante LightSwc).
Anche se nella demo gli eventi-mappa hanno due pagine, dovrebbe bastare solo la prima, ossia quella che dichiara le luci per quell'evento . . .
Se in certe occasioni d? ancora problemi fatemelo sapere . . . -
Ho fatto anche questa seguendo le istruzioni ma nisba.
Innanzitutto impostando come dicevi tu la prima pagina con il codice e la seconda con la sicht ma senza il codice, la luce ? gi? accesa e non si spegne.
Usando poi il tuo script, mi da addirittura errore....
Scusa, mi ero dimenticato che lo switch nello script ? ON quando dovrebbero essere accese, mentre negli eventi ? ON se devono essere spente.
Togli il not daif not $game_switches[n] return false end
che deve diventare quindi
if $game_switches[n] return false end
Inoltre avevo aggiunto qualcosa mentre tu stavi postando . . .
Questa:
Trova la riga con l'istruzionedef setup_lights
ed inserisci subito sotto
@light_effects = []
Comunque, sto gi? lavorando sullo script per aggiungergli la funzione di spegnimento e riaccensione . . . -
Un ultimo tentativo prima di vedere se mettere sul serio mano allo script . . .
Trova la riga con l'istruzione
def setup_lights
ed inserisci subito sotto
@light_effects = []
Dopo aver messo ON o OFF lo switch che gestisce le luci, inserisci un wait/aspetta di 2-4 frames/fotogrammi, poi usa il comando script (l'ultimo in basso a destra nel terzo pannello dei comandi) ed inserisci la seguente istruzione
$scene.spriteset.setup_lights
Gli eventi-mappa luminosi devono essere impostati con le due pagine che ti ho detto nel post precedente
-
Hai provato a costruire gli eventi luminosi con due pagine, la prima senza condizioni di attivazione ed il commento per le luci, e la seconda con attivazione switch che le spegne, la cui pagina di codice sia vuota ?
N.B.: Non so se hai provato anche il sistema che avevo postato prima di editare il mio messaggio. Lo riposto qua sotto . . .
Cerca la riga con l'istruzionedef in_range?(object)
ed aggiungi subito sotto
if not $game_switches[n] return false end
EDIT - Avevo sbagliato a riscrivere il vecchio sistema -
Prova a vedere se funziona facendo cos?:
Cerca la riga con l'struzionedef update_light_effects
ed inserisci subito sottoreturn unless $game_switches[n]
Mettendo al posto di n il numero dello switch che fa accendere le luci quando viene messo ON
EDIT - Ho sostituito la procedura postata prima con una che mi sembra migliore.
Anche questa non testata, per? . . .
EDIT2 - Leggendo lo script mi sembra che non ci siano istruzioni che mettono a false la visibilit? degli sprite delle luci, quindi una volta accese non dovrebbero spegnersi in nessun caso.
Per la faccenda degli end, ho verificato meglio ed ? tutto a posto . . . -
Guarda che ciò che ho scritto, usato da solo, non serve a nulla!
Ho postato solo quello che rappresenta una parte di una Scene in cui dovranno esserci due bitmap disegnate (caricate in realtà) una sopra l'altra alle stesse coordinate (quella da bucherellare dovrà avere asse z impostato ad almeno 3, meglio ancora 10 o più). Le due bitmap devono essere inserite nelle variabili @source_bitmap (quella a colori) e @target_bitmap (quella in "bianco e nero"), nel def main della Scene, meglio caricando @target_bitmap prima di @source_bitmap (avendo z pari a zero, dovrebbe comunque venire disegnata sotto . . .)
Tale scena dovrà anche includere il metodo che ho postato, ossia def elabora_colore, che dovrà essere chiamato quando vuoi che venga mostrata una delle sfumature (serie di colori adiacenti) nell'immagine in bianco e nero, usando l'istruzione
elabora_colore(Color.new(r, g, b), tolleranza)
I due parametri sono gli stessi spiegati da Sleeping Leonhart per il suo script . . .
Se vuoi usare una tolleranza uguale per tutti i colori cercati, ma anche per evitare errori di sintassi, sostituisci la "parola" valorepertuttiicoloricercati nel metodo che ho creato con il valore di tolleranza che varrebbe per tutti i colori, cioè un numero compreso tra 0 e 360. Quanto debba essere alto dipende da quanto variano le sfumature di colore nell'immagine e quanto vuoi che siano "vicine" quelle mostrate quando viene cercato un certo colore . . .
Se ti va bene una tolleranza uguale per tutti i colori passati al metodo, allora, dopo la modifica, puoi chiamarlo semplicemente così
elabora_colore(Color.new(r, g, b))
Magari apri l'immagine con paint o photoshop o gimp, e usa il contagoccie per prelevare il colore da cercare, così da sapere quali valori inserire al posto di r, g, b . . .
Purtroppo io non conosco nè il VX nè l'RGSS2, quindi non sono in grado di realizzare una Scene dimostrativa affidabile . . . Spero che Sleeping, mikb89 o qualcuno abbastanza competente nello scripting del VX possa darti una mano in questo . . .
-
A meno che non abbia male interpretato il codice di Sleeping Leonhart, lo script dovrebbe finire per rendere trasparenti i punti dell'immagine di cui si controlla la presenza di uno specifico colore quando questo colore risulta effettivamente presente.
E non era questo il risultato da raggiungere, mi pare . . .
A mio parere, se non ho sbagliato l'interpretazione, bisognerebbe modificare lo script in modo che ritorni true quando vede che il pixel ha il colore cercato in una source_bitmap (tutta a colori), ed in questo caso si esegua la cancellazione del pixel corrispondente nella target_bitmap (solo contorni e fondale opaco)
EDIT2 - Ho aggiunto lo script di Sleeping modificato come dicevo sopra . . .
class Bitmap def pixel_hue_filter(c, toll, i, j) if c.is_a?(Color) hsv = get_hsv(c) elsif c.is_a?(Array) and c.size == 2 hsv = c else return false end hue1 = hsv[0] hsv = get_hsv(self.get_pixel(i,j)) hue2 = hsv[0] diffh = (hue1 - hue2).abs return (diffh <= toll or diffh >= 360 - toll) end def get_hsv(c) min = [c.blue, [c.red ,c.green].min].min max = [c.blue, [c.red ,c.green].max].max delta = max - min; hue = 0; sat = 0 sat = delta / max if max != 0 if sat != 0 r = (max - c.red) / delta g = (max - c.green) / delta b = (max - c.blue) / delta if c.red == max hue = b - g elsif c.green == max hue = 2 + r - b else hue = 4 + g - r end hue *= 60 hue += 360 if hue < 0 end return [hue, sat] end end
Il metodo aggiunto da Sleeping potrebbe essere sfruttato, dopo la modifica, più o meno in questo modo
def elabora_colore(colore, tolleranza = valorepertuttiicoloricercati) pxhue = @source_bitmap.get_hsv(colore) for j in 0...@source_bitmap.height for i in 0...@source_bitmap.width if @source_bitmap.pixel_hue_filter(pxhue, tolleranza, i, j) # Se il pixel è del colore cercato, "buca" la versione "bianco e nero" in quel punto @target_bitmap.set_pixel(i, j, Color.new(0, 0, 0, 0)) end end end return end
L'ho scritto al volo mentre postavo quindi non è assolutamente affidabile, ma spero di aver reso comunque l'idea . . .
EDIT - Ho invertito i cicli for in modo che la bitmap venga analizzata riga per riga invece che colonna per colonna . . .
EDIT3 - Ho spostato il calcolo della hue del colore da controllare fuori da def pixel_hue_filter in quanto ricalcolarlo ad ogni chiamata del metodo è, oltre che inutile, maledettamente dispendioso in termini di elaborazione . . .
Ho fatto comunque in modo che def pixel_hue_filter accetti ancora anche colori come primo parametro del metodo.
-
Nel pannello Tilesets del DataBase c'è una lista a scomparsa che permette di scegliere il panorama associato ad ogni tileset.
In altre parole, con l'XP, tutte le mappe che usano un certo Tileset hanno lo stesso identico panorama/fondale . . .
-
Si potrebbe fare, tramite ruby, usando due copie dell'immagine: una tutta a colori e l'altra che include solo i contorni, magari con la versione a colori sotto quella solo contorni (ovviamente le aree che sarebbero colorate, in quella solo contorni dovrebbero essere riempite con un colore opaco a piacere anzichè trasparente, per coprire quella sotto).
Quando si vuole mostrare un colore, si "analizza" la versione colorata e, quando vengono incontrati pixel di quel colore, si piazza un colore completamente trasparente (o lo stesso colore da mostrare) nello stesso punto della versione solo contorni . . .
E' fattibile, ma maledettamente dispendiosa in termini di elaborazione . . .
-
EDIT3: Mi scriveresti la stringa modificata per usare i secondi invece dei minuti?
Non so se ho capito bene, ma se vuoi che il valore di tempo inserito nella formula siano i secondi necessari a creare l'oggetto invece dei minuti, devi trovare l'istruzione
$game_party.alchemy_pot[2] = AlchemyPot::Formula[i][1] * Graphics.frame_rate * 60
che sta nel metodo (def) start_alchemy della Scene_AlchemyPot, ed eliminare il * 60 che si trova in fondo, così
$game_party.alchemy_pot[2] = AlchemyPot::Formula[i][1] * Graphics.frame_rate

Effetto ascensore
in Richieste scripts RGSS (XP)
Posted