-
Posts
646 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by Keroro
-
-
Se vuoi sfogarti dicendo parolacce puoi benissimo farlo con un tuo amico, almeno lui può evitarti o picchiarti.
Qui siamo su un forum, tutti leggono tutto ed è sconveniente dover leggere parolacce gratuite, soprattutto dall'ultimo arrivato :)
Bravo Unamuno, sei riuscito a fare da interprete XD quando vedo dei post così densi e senza l'uso di INVIO non ce la faccio a leggere per intero.
Per l'evento che compare hai bisogno di due pagine
Prima pagina evento:
- Grafica: Nessuna
- Contenuto: Vuoto
- Condizioni: Nessuna
Seconda pagina evento:
- Grafica: La grafica dell'npc
- Contenuto: Le azioni dell'npc
- Condizioni: Switch 0015 ON
Per mostrarlo hai bisogno di un altro evento, una leva o quel che hai in mente tu
- Grafica: La leva
- Contenuto: Controllo Switch 0015 ON
- Condizioni: Nessuna
- Inizio: Tasto Azione
Il numero della switch è arbitrario, potevi scegliere una switch qualunque.
Ti consiglio di scaricare la traduzione in Italiano presente nell'altro topic
- Grafica: Nessuna
-
Non sarei così negativo, è una console di prossima generazione, secondo me sarà possibile importare file tramite memory card o scaricati da internet
-
No, non sono io
Un evento è formato da più pagine
Viene eseguito solo il contenuto di una pagina.
Per scegliere quale pagina eseguire si impostano le condizioni.
Una switch è un interruttore che può andare ON-OFF, una switch locale (loc.) è un interruttore visibile solo all'interno dell'evento.
Quindi:
- Crea una Nuova Pagina Evento cliccando sul pulsante in alto
- In questa seconda pagina sulla sinistra selezioni Switch loc. - A è ON.
- Torni sulla prima pagina
- Inserisci in fondo alle istruzioni: Controllo Switch Locali, A = ON
In questo modo dopo tutte le istruzioni il personaggio diventerà trasparente.
Se vuoi cambiare cosa succede, modifica la seconda pagina degli eventi.
Per capire meglio sperimenta e leggi guide
- Crea una Nuova Pagina Evento cliccando sul pulsante in alto
-
Via script sarebbe semplicissimo, se vuoi farlo con gli eventi puoi estrarre i valori con:
Controllo Variabili -> Dati di gioco -> Eroe -> PV
Poi usare un po' di matematica per ottenere le singole cifre, come mostrato a pagina 6 di questo topic!
Tipo specifica il comportamento degli autotiles, se provi le diverse scelte cambiano gli autotiles a sfondo trasparente (disegnati sopra lo sfondo in parallasse, se specificato), non sono a conoscenza di ulteriori motivi
-
Bisogna usare una switch per fargli cambiare pagina, se non sai cos'è puoi cercare una guida a riguardo: vanno bene quelle da rpgmaker 2000 in su
-
Fico, pensavo che le regioni servissero solo per le battaglie casuali, invece sono programmabili, non ci avevo fatto caso ;O
-
Te lo puoi programmare, non ci vuole nulla...
-
Lusianl ti confondi con TGF
Gamemaker è ottimo per creare rpg, si può mappare i tile su più livelli (infiniti livelli a profondità personalizzabile), si possono avere 10 background/foreground diversi che si muovono a velocità diversa, ottimo per effetti di parallasse (cosa che in rpgmaker vx ace mi sono dovuto creare a mano), si ha accesso a strutture dati complesse.
Quali sono le criticità?
- Il GML (Game Maker Language) non è un linguaggio ad oggetti come il ruby, ma solo orientato agli oggetti, si possono creare istanze via codice ma creare un oggetto (inteso come class) è macchinoso da fare, quindi si finisce per richiamare il codice all'interno della gui. Questo implica che nel 99% dei casi non basta copiare e incollare il codice ma bisogna creare oggetti a mano. Questo è un bene all'inizio perché costringe l'utente a sporcarsi le mani, dopo però diventa un male perché per analizzare un oggetto è necessario guardare in più parti.
- Manca di una libreria grafica, mancano funzionalità prefatte come la windowskin e l'autotile, quindi seppur realizzare un menù, una mappa, un battle system sia o facile, non lo è altrettanto crearsi delle Windows di dimensione personalizzata e bisogna lavorare molto sui tile per mappare bene perché è come avere solo la matita (mancano flood fill, rettangolo e ellisse), un buon mapper che viene dal mondo di rpgmaker non ha problemi a mappare su GM, tutti gli altri si trovano male.
- Mancano le schede eventi prefatte, si possono programmare, per il movimento dell'eroe o di un npc bisogna aver cura di usare strutture dati piuttosto che affidarsi al punta e clicca, ogni piccola cosa diventa faticosa.
- Proprio perché ogni piccola cosa è impegnativa, l'utente tipo di gamemaker non ha una visione di insieme e non è abituato a pensare in grande.
- Game Maker mi ha lasciato l'impressione di essere cresciuto male, ho acquistato una licenza per la versione 6.0 quando il programma era al suo apice (credo nel 2005/2006). Con l'abbandono di Mark Overmars a favore della yoyogames ho avuto la certezza che la magia era svanita, che l'obiettivo era diventato guadagnare soldi.
Quando usare Game Maker?
Quando si ha un team numeroso e con esperienza nello sviluppo di rpg.
- Il GML (Game Maker Language) non è un linguaggio ad oggetti come il ruby, ma solo orientato agli oggetti, si possono creare istanze via codice ma creare un oggetto (inteso come class) è macchinoso da fare, quindi si finisce per richiamare il codice all'interno della gui. Questo implica che nel 99% dei casi non basta copiare e incollare il codice ma bisogna creare oggetti a mano. Questo è un bene all'inizio perché costringe l'utente a sporcarsi le mani, dopo però diventa un male perché per analizzare un oggetto è necessario guardare in più parti.
-
Bravo :*
-
Manca un pezzo dello script, cercalo intero
-
Sul sito c'è la 0.6 da qualche giorno, perché hai messo il ink alla vecchia versione?
-
Clyde riporta le opinioni della comunità internazionale, con le quali sono parzialmente d'accordo.
Visto che è molto distante dal tool è più difficile da modificare e di conseguenza prolificano utenti che lo usano nella versione base o copia incollando script.
Questo dà l'effetto fotocopia ai giochi che lo implementano e chi ha già giocato a giochi con lo stesso bs finisce per annoiarsi: considerando che una fetta rilevante di giocatori sono gli utenti delle community amatoriali finisci per bruciarti questo pubblico.
Sono però dell'idea che non sia male come programmazione, non giudico i notetag una caratteristica essenziale in un bs perché potrei voler usare un altro modo per configurare.
Dei bs elencati ho visto quello di victor e non trovo la sua programmazione "pulita", per tanto ci ho messo una croce sopra :).
Se vi piace Enu usatelo!
Ma se vi incagliate con la programmazione è difficile che riceviate supporto! (sicuramente non da me XD ho rinunciato ad usarlo)
-
Bravo clyde, hai modificato le classi giuste, il tuo è il miglior intro script finora :)
-
A me i png occupano 200kb l'uno, non mi sembra eccessivo per un desktop (c'erano giochi che creavano bitmap da 2 mb), anche considerando che dovrebbero immortalare i momenti più belli (e non essere generati in continuazione).
Inoltre è l'unico formato accettato dallo screen contest :3
-
Argh, ed io che avevo appena fatto uno script per implementare la limit L_L
-
Non conosco come è fatto l'xp, pensavo mancasse solo snap_to_bitmap u_u
Passa a vx ace!
-
Maxy se aggiungi questo codice in cima dovrebbe funzionare anche con rpg maker xp :)
(l'ho provato con l'ace e funziona come alternativa al metodo predefinito)
Fammi sapere!
module Graphics RtlMoveMemory = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i') BitBlt = Win32API.new('gdi32', 'BitBlt', 'iiiiiiiii', 'i') CreateCompatibleBitmap = Win32API.new('gdi32', 'CreateCompatibleBitmap', 'iii', 'i') CreateCompatibleDC = Win32API.new('gdi32', 'CreateCompatibleDC', 'i', 'i') DeleteObject = Win32API.new('gdi32', 'DeleteObject', 'i', 'i') GetDIBits = Win32API.new('gdi32', 'GetDIBits', 'iiiiipi', 'i') SelectObject = Win32API.new('gdi32', 'SelectObject', 'ii', 'i') SetDIBits = Win32API.new('gdi32', 'SetDIBits', 'iiiiipi', 'i') hWnd = Win32API.new('user32', 'FindWindow', 'pp', 'i').call('RGSS Player', 0) DC = Win32API.new('user32', 'GetDC', 'i', 'i').call(hWnd) def self.snap_to_bitmap bitmap = Bitmap.new(width=640, height=480) RtlMoveMemory.call(address="\0"*4, bitmap.__id__*2+16, 4) RtlMoveMemory.call(address, address.unpack('L')[0]+8, 4) RtlMoveMemory.call(address, address.unpack('L')[0]+16, 4) address = address.unpack('L')[0] info = [40,width,height,1,32,0,0,0,0,0,0].pack('LllSSLLllLL') hDC = CreateCompatibleDC.call(DC) hBM = CreateCompatibleBitmap.call(DC, width, height) DeleteObject.call(SelectObject.call(hDC, hBM)) SetDIBits.call(hDC, hBM, 0, height, address, info, 0) BitBlt.call(hDC, 0, 0, width, height, DC, 0, 0, 0xCC0020) GetDIBits.call(hDC, hBM, 0, height, address, info, 0) DeleteObject.call(hBM) DeleteObject.call(hDC) bitmap end end -
Ahahaha :)
Ho fatto dei test e ti devo le mie scuse!
Pare che per creare un metodo visibile all'esterno del modulo vadano bene tutte queste formule:
module Ciao def self.m end def Ciao.m end def Ciao::m end def self::m end end
Per chiamare il metodo invece è possibile usare queste:
Ciao.m Ciao::m
Discorso diverso invece per le costanti, le costanti per essere visibili all'esterno del modulo devono avere nome tutto in maiuscolo
module Ciao SALUTO = "BLABLA!" end
E l'unico modo per accedervi è tramite
Ciao::SALUTO
Ma potrebbero esserci altri modi nascosti chissà dove ;O
-
Il formato jpg è visto con disgusto dai pixel artist quindi evitiamo ^^
In che senso Testament sarà contento? Non pensavo usasse il VX Ace!
PS: Mettendo il codice che ho scritto nel messaggio precedente in un Evento Comune (sempre in processo parallelo), con la pressione di F5 si può catturare la schermata in tutte le fasi di gioco ;)
-
Aggiunta la possibilità di salvare con data e ora
Per usarlo su pressione di un tasto basta mettere questo codice in un processo parallelo
if Input.trigger?(:F5) salva_schermata("Prova",true) end -
Salva Schermata
Descrizione
E' un semplice sistema per salvare la schermata di gioco in un file png.
Il sistema è basato su uno script che salva un RGSS Bitmap in un file png, senza bisogno di dll.
Questo script era parte di uno script enorme (e poco utile) di XP, non mi stupisco sia passato inosservato ^^
Istruzioni
Mettere lo script in una nuova scheda sotto Materiali
Per salvare la schermata basta usare questo codice in un evento:
salva_schermata("Meraviglia")=> Salva l'immagine in Screens/Meraviglia,png
(Se la cartella Screens non esiste, verrà creata)
Nello script potete specificare la cartella in cui le immagini saranno salvate.
Versione 2.0:
Aggiunta la possibilità di un suffisso composto da data ed orario attuali.
salva_schermata("Meraviglia",true)=> Salva l'immagine in Screens/Meraviglia2012-04-03_17-20-01.png
Per modifiche guardare la documentazione dell'oggetto Time - metodo strftime
(Presto in italiano :) )
Script
#============================================================================== # Salva Schermata # Autore: Keroro - cris87@gmail.com # Versione 2.0 # Ultimo aggiornamento 03.04.2012 #============================================================================== # Salva la schermata in un'immagine png nella cartella specificata # # Esempio d'uso da evento: # salva_schermata("Meraviglia") # Se si desiderano giorno ed orario come suffisso: # salva_schermata("Meraviglia",true) # #============================================================================== module Schermata #Ricordati di lasciare / alla fine CARTELLA = "Screens/" #Formato Orario #Guarda documentazione oggetto Time - metodo strftime FORMATO = "%Y-%m-%d_%H-%M-%S" def self.salva(nome,tempo) bitmap = Graphics.snap_to_bitmap unless tempo bitmap.make_png(nome,CARTELLA) else bitmap.make_png(nome+Time.now.strftime(FORMATO),CARTELLA) end bitmap.dispose end end class Game_Interpreter def salva_schermata(nome,tempo=false) Schermata::salva(nome,tempo) end end #============================================================================== # Bitmap to PNG By Cycleby #============================================================================== # # Direct use of the Bitmap object. # bitmap_obj.make_png(name[, path]) # # Name: Save the file name # Path: path to save the # # Thanks 66, Shana, gold Guizi reminder and help! #============================================================================== module Zlib class Png_File < GzipWriter #-------------------------------------------------------------------------- # ? Main #-------------------------------------------------------------------------- def make_png(bitmap_Fx,mode) @mode = mode @bitmap_Fx = bitmap_Fx self.write(make_header) self.write(make_ihdr) self.write(make_idat) self.write(make_iend) end #-------------------------------------------------------------------------- # ? PNG file header block #-------------------------------------------------------------------------- def make_header return [0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a].pack("C*") end #-------------------------------------------------------------------------- # ? PNG file data block header information (IHDR) #-------------------------------------------------------------------------- def make_ihdr ih_size = [13].pack("N") ih_sign = "IHDR" ih_width = [@bitmap_Fx.width].pack("N") ih_height = [@bitmap_Fx.height].pack("N") ih_bit_depth = [8].pack("C") ih_color_type = [6].pack("C") ih_compression_method = [0].pack("C") ih_filter_method = [0].pack("C") ih_interlace_method = [0].pack("C") string = ih_sign + ih_width + ih_height + ih_bit_depth + ih_color_type + ih_compression_method + ih_filter_method + ih_interlace_method ih_crc = [Zlib.crc32(string)].pack("N") return ih_size + string + ih_crc end #-------------------------------------------------------------------------- # ? Generated image data (IDAT) #-------------------------------------------------------------------------- def make_idat header = "\x49\x44\x41\x54" case @mode # please 54 ~ when 1 data = make_bitmap_data # 1 else data = make_bitmap_data end data = Zlib::Deflate.deflate(data, 8) crc = [Zlib.crc32(header + data)].pack("N") size = [data.length].pack("N") return size + header + data + crc end #-------------------------------------------------------------------------- # ? Requests from the Bitmap object 54 to generate image data in mode 1 # (please 54 ~) #-------------------------------------------------------------------------- def make_bitmap_data1 w = @bitmap_Fx.width h = @bitmap_Fx.height data = [] for y in 0...h data.push(0) for x in 0...w color = @bitmap_Fx.get_pixel(x, y) red = color.red green = color.green blue = color.blue alpha = color.alpha data.push(red) data.push(green) data.push(blue) data.push(alpha) end end return data.pack("C*") end #-------------------------------------------------------------------------- # ? Bitmap object from the image data generated in mode 0 #-------------------------------------------------------------------------- def make_bitmap_data gz = Zlib::GzipWriter.open('hoge.gz') t_Fx = 0 w = @bitmap_Fx.width h = @bitmap_Fx.height data = [] for y in 0...h data.push(0) for x in 0...w t_Fx += 1 if t_Fx % 10000 == 0 Graphics.update end if t_Fx % 100000 == 0 s = data.pack("C*") gz.write(s) data.clear #GC.start end color = @bitmap_Fx.get_pixel(x, y) red = color.red green = color.green blue = color.blue alpha = color.alpha data.push(red) data.push(green) data.push(blue) data.push(alpha) end end s = data.pack("C*") gz.write(s) gz.close data.clear gz = Zlib::GzipReader.open('hoge.gz') data = gz.read gz.close File.delete('hoge.gz') return data end #-------------------------------------------------------------------------- # ? PNG end of the file data blocks (IEND) #-------------------------------------------------------------------------- def make_iend ie_size = [0].pack("N") ie_sign = "IEND" ie_crc = [Zlib.crc32(ie_sign)].pack("N") return ie_size + ie_sign + ie_crc end end end #============================================================================== # ¦ Bitmap #------------------------------------------------------------------------------ # Related to the Bitmap. #============================================================================== class Bitmap #-------------------------------------------------------------------------- # ? Related #-------------------------------------------------------------------------- def make_png(name="like", path="",mode=0) make_dir(path) if path != "" Zlib::Png_File.open("temp.gz") {|gz| gz.make_png(self,mode) } Zlib::GzipReader.open("temp.gz") {|gz| $read = gz.read } f = File.open(path + name + ".png","wb") f.write($read) f.close File.delete('temp.gz') end #-------------------------------------------------------------------------- # ? Save the path generated #-------------------------------------------------------------------------- def make_dir(path) dir = path.split("/") for i in 0...dir.size unless dir == "." add_dir = dir[0..i].join("/") begin Dir.mkdir(add_dir) rescue end end end end end -
Prego :)
Il codice è giusto così
module Awesome def self.attack(actor_id,skill_id) end end
equivale a
module Awesome def Awesome.attack(actor_id,skill_id) end end
La sintassi con il doppio punto va usata solo per l'accesso, cioè per chiamare il metodo attack all'interno del modulo Awesome
Awesome::attack(actor_id,skill_id)
Se poi intendevi altro non ho capito XD
-
Parli di script che non conosco comunque background_bitmap si appoggia a Graphics.snap_to_bitmap quindi la funzione esiste ancora in vx ace :)
-
A me queste orientali non dicono nulla... Se si struccano sono dei mostri...
http://acidcow.com/g...up-22-pics.html
E poi le occidentali hanno molta più classe :3
http://www.totalprosports.com/resize/0x546/rc/wp-content/uploads/2011/11/Jordan-Carver-Yoga-1.jpg
http://www.totalprosports.com/wp-content/uploads/2011/11/Jordan-Carver-Yoga-22.jpg

Pecche varie da risolvere prima di ritenere RpgMaker utilizzabile
in RGSS3 (VX-Ace)
Posted
Per portare le risorse grafiche del 2000 su altre piattaforme anni fa mi ero creato un batch con hq2x e mi sono trovato benissimo, adesso lo incorporano quasi tutti gli emulatori come filtro real-time.
Unica pecca: L'implementazione dell'algoritmo disponibile come stand-alone lavora solo su bmp a 24 bit o tga.
Uso: hq2x immagine.bmp immagine_scalata.bmp
Di conseguenza poi bisogna riconvertire in png. Probabilmente come diceva flame si fa prima ma l'effetto di hq2x mi piace molto.