Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Vai al contenuto

Rpg˛S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Screen Contest #90

Kamikun






  • Si prega di effettuare il log in prima di rispondere
Sportello aiuti veloci VX-Ace

    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#7081 Inviato 01 August 2018 - 23:28 PM

Scusa ma non lo trovo, la tua guida o quella integrata nel gioco?

La mia guida, ma ho ricontrollato ed è un po' diverso…
Allora, seguendo lo stesso esempio degli equipaggiamenti, devi aggiungere l'attributo base_bitmap (o in qualsiasi modo tu lo voglia chiamare) in RPG::Actor.
Per quanto riguarda gli eroi, questi sono l'istanza di Game_Actor (perché non sono statici come gli equipaggiamenti, ma salgono di livello, cambiano HP ecc...)
quindi ci vuole un metodo in Game_Actor che richiami la propria controparte dell'attributo di RPG::Actor

class Game_Actor < Game_Battler
  def base_bitmap
    actor.base_bitmap
  end
end
Spero che ti sia chiaro.

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    Killer Van
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Verona
  • Abilitā:Novizio

#7082 Inviato 01 August 2018 - 23:30 PM

No non ho capito, basta scrivere questo codice nello script degli animated battler e in game actor aggiungere un attributo tipo così:
@base_bitmap =' '
?
Non credo

Modificato da Killer Van, 01 August 2018 - 23:53 PM.


    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#7083 Inviato 02 August 2018 - 00:09 AM

No non ho capito, basta scrivere questo codice nello script degli animated battler e in game actor aggiungere un attributo tipo così:
@base_bitmap =' '
?
Non credo

Che usi uno script degli animated battlers lo hai detto ora. A questo punto, non puoi usare al posto di base_bitmap la grafica che imposti direttamente come battler? Cerca l'attributo nello script.

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    Killer Van
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Verona
  • Abilitā:Novizio

#7084 Inviato 02 August 2018 - 00:18 AM

Ho trovato questo codice:
def setup_animated_battler @pose = 0    @move_speed = 0    char = actor? ? actor : enemy    @animated_battler = $1 if char.note =~ /<battler:[ ](.*)>/i  end
@animated_battler è quello che mi serve giusto?
Però come lo definisco?
Ho visto che lui lo utilizza così
new_bitmap=Cache.battler(@battler.animated_battler, 0)
Io dovrei scrivere la stessa cosa, ma con base_bitmap, al posto di new_bitmap?

Modificato da Killer Van, 02 August 2018 - 00:24 AM.


    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#7085 Inviato 02 August 2018 - 06:46 AM

Ho trovato questo codice:

def setup_animated_battler @pose = 0    @move_speed = 0    char = actor? ? actor : enemy    @animated_battler = $1 if char.note =~ /<battler:[ ](.*)>/i  end
@animated_battler è quello che mi serve giusto?
Però come lo definisco?
Ho visto che lui lo utilizza così
new_bitmap=Cache.battler(@battler.animated_battler, 0)
Io dovrei scrivere la stessa cosa, ma con base_bitmap, al posto di new_bitmap?
No, non devi reinventare la ruota. È già definito...
Basta che fai actor.animated_battler

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    Killer Van
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Verona
  • Abilitā:Novizio

#7086 Inviato 02 August 2018 - 08:59 AM

Mi da questo errore :   undefined method 'animated_battler' for 1:Fixnum
Credo che il problema sia la classe giusto?

Io ho usato la funzione Trova negli script e non ho trovato nessun 

def animated_battler

Modificato da Killer Van, 02 August 2018 - 09:02 AM.


    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#7087 Inviato 02 August 2018 - 09:20 AM

Mi da questo errore :   undefined method 'animated_battler' for 1:Fixnum
Credo che il problema sia la classe giusto?
Io ho usato la funzione Trova negli script e non ho trovato nessun 

def animated_battler
Non dev'essere per forza un metodo, ma anche un attributo pubblico.
Devi rendere la variabile @animated_battler pubblica inserendo
attr_reader :animated_battler
All'interno della classe Game_Actor

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    Killer Van
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Verona
  • Abilitā:Novizio

#7088 Inviato 02 August 2018 - 09:32 AM

Ho provato ma mi da lo stesso errore.
Ma forse sto sbagliando io ad utilizzare generate _animated_battler
Nelle parentesi va scritto l'id o il nome del personaggio, l'id giusto?

Modificato da Killer Van, 02 August 2018 - 09:34 AM.


    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#7089 Inviato 02 August 2018 - 10:29 AM

Ho provato ma mi da lo stesso errore.
Ma forse sto sbagliando io ad utilizzare generate _animated_battler
Nelle parentesi va scritto l'id o il nome del personaggio, l'id giusto?

Né uno né l'altro. Devi passargli l'oggetto.

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    Killer Van
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Verona
  • Abilitā:Novizio

#7090 Inviato 02 August 2018 - 10:31 AM

Come?



    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#7091 Inviato 02 August 2018 - 10:33 AM

Mi dici dove stai chiamando quel metodo?
È mi dici, per cortesia, il messaggio di errore completo (o fai uno screen)?
Leggere il messaggio di errore è la prima cosa che si deve fare per capire dove sia il problema.

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    Killer Van
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Verona
  • Abilitā:Novizio

#7092 Inviato 02 August 2018 - 10:41 AM

Errore: Script 'Galv's animated battler' line 726 NoMethodError occurred

undefined method 'animated_battler' for 1:Fixnum

 

animated_battler, ho visto che nello script viene utilizzato più volte, ho usato la funzione cerca per vedere dove lo definiva, ma non ho trovato niente.

Ti posto lo script:

Spoiler

Modificato da Killer Van, 02 August 2018 - 10:49 AM.


    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#7093 Inviato 02 August 2018 - 18:27 PM

undefined method 'animated_battler' for 1:Fixnum

ti sta dicendo che non esiste il metodo 'animated_battler' di un semplice numero. E mi pare anche giusto, perché da un numero dovrebbe ricavare l'eroe?
Primo problema: gli passi un numero e non l'eroe.
Secondo problema: hai messo la generazione della bitmap nell'update. Il metodo blt è time-consuming, cioè influisce nelle prestazioni. Farlo n volte per ogni frame rallenterà non poco il gioco.
La bitmap deve essere elaborata SOLO all'inizio, non ad ogni frame.
Vedo che all'inizio della classe, viene inizializzata anche con il parametro battler. Questo sarà sicuramente un Game_Battler, quindi un eroe o un nemico.
Il secondo problema quindi è che non fa differenza sul se sia un eroe o un mostro, e quindi quando cercherà di trovare le armi equipaggiate di un nemico ti andrà in crash.

Sempre per battler, è probabile che l'oggetto che cerchi è @battler. È questo che devi passargli, ricordandoti che la bitmap la devi generare solo se è un eroe (if @battler.actor?)

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    Killer Van
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Verona
  • Abilitā:Novizio

#7094 Inviato 02 August 2018 - 18:50 PM

1 - Quindi nelle parentesi dovrei scrivere qualcosa come ($data_actors[1])  ?

2 - Lo so, infatti nello script che avevo scritto all'inizio avevo messo body.blt fuori dall'update, mentre i materiali per fare la sovrapposizione dentro l'update; e, a dir la verità, non so neanche perchè tutto funzionava (il gioco non laggava e lo sprite dell'battler era quello giusto).

Spoiler
In questo caso come posso fare?

Perchè da quello che ho capito lui non genera una bitmap e la utilizza, ma continua a caricarla dal file

script di Galv :

Spoiler

3 - Quindi lo script finale dovrebbe essere così

Spoiler
???


Modificato da Killer Van, 02 August 2018 - 18:56 PM.


    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#7095 Inviato 02 August 2018 - 18:58 PM

Ma diamine, ma se scrivi $data_actors[1] non significa che gli darai SOLO il primo eroe?
Vuoi che tutti i mostri e gli eroi abbiano la stessa grafica?
if @battler.actor?
e dov'è l'end?
Te lo devo fare tutto io lo script, oppure vuoi imparare e quindi solo qualche aiuto? Non ho capito.
A questo punto dovresti capire come fare una condizione, ti ho anche dato una guida
La condizione deve stare all'esterno: se è un eroe, usa questo metodo. Altrimenti no.
Dovevi chiamare il metodo con generate_battler_bitmap(@battler.base_bitmap)

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    Killer Van
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Verona
  • Abilitā:Novizio

#7096 Inviato 02 August 2018 - 19:12 PM

Voglio capire come funziona, non voglio che tu mi scriva lo script, ho scritto $data_actors[1] riferendomi a quando utilizzo il comando (ovviamente riferendomi a quello che ho scritto nel messaggio precedente)
L'end l'ho messo, nello script che avevi scritto tu, c'erano 2 end, adesso ce ne sono 3.

 
 poi, per ottenere la bitmap(non so dove tu voglia metterla)

  • def generate_battler_bitmap(actor)
  • base_bitmap = Cache.battler(actor.base_bitmap, 0) # è un esempio, base_bitmap dovrebbe avere la grafica dell'eroe nudo
  • base_bitmap = base_bitmap.clone # ne faccio un clone per non sporcare la bitmap nella cache
  • rect = Rect.new(0, 0, base_bitmap.width, base_bitmap.height)
  • actor.equips.each {|equip| # per ogni equipaggiamento
  • next if equip.nil? # passo al prossimo se l'equip non esiste
  • if !equip.battler_graphic.empty? # se la stringa non è vuota
  • base_bitmap.blt(0, 0, Cache.battler(equip.battler_graphic, 0), rect)
  • end
  • }
  • base_bitmap # restituisco la bitmap elaborata
  • end
Comunque
ho provato a mettere l'if fuori e mi dice che actor? non è definito in Nil Class

Consigli?

Modificato da Killer Van, 03 August 2018 - 14:13 PM.


    Killer Van
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Verona
  • Abilitā:Novizio

#7097 Inviato 06 August 2018 - 12:36 PM

Allora, da quello che ho capito dovrei scrivere

Spoiler

poi quando utilizzo questo metodo devo mettere l'if prima e l'end dopo

Ma nelle parentesi quando utilizzo il metodo cosa devo scrivere, o meglio come posso definire base_bitmap in Game Battler?

e poi dove devo generare la bitmap? Forse in Scene Battle?



    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#7098 Inviato 06 August 2018 - 21:24 PM

Ok, ok, ricominciamo dalle basi, perché sono quelle che mancano.
Prima di tutto, devi capire il concetto di programmazione orientata ad oggetti, delle classi e delle istanze.
Invece di spiegarlo per l'ennesima volta qui, ti consiglio di leggere la mia guida dalla pagina 33.

Letto? Bene.

Ora, sono andato a scaricare il codice originale dello script, ed ho trovato subito questo
immagine.png
Come vedi, c'è già un attributo pubblico che è animated_battler.
Dove viene usato? Cerchiamo nel codice…
Screenshot_2.png
Più o meno avevi azzeccato, ma fatto sta che caricare l'immagine dalla Cache è una cosa, riprodurla ad ogni frame è un'altra.
Devi fare in modo che se l'immagine dell'eroe è già elaborata, la salvi nella Cache, altrimenti la elabori. Così solo la prima volta verrà elaborata, mentre le altre volte sarà semplicemente caricata.
A questo punto, è la Cache che dovrebbe creare l'immagine (e salvarla), del come spero che ci arriverai da solo.
Ovviamente, dovrai fare anche in modo che al cambiamento dell'equipaggiamento, quell'immagine venga reimpostata.

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler

    Killer Van
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Verona
  • Abilitā:Novizio

#7099 Inviato 06 August 2018 - 21:44 PM

Da quello che ho capito per crearla bisogna utilizzare generate_battler_bitmap, mentre per caricarla dalla Cache ad ogni frame bisogna scrivere una cosa così?

Spoiler
 

dove base_bitmap appunto è la grafica con armatura dell'eroe.

Ma non ho ancora capito come creare questa bitmap, non so come utilizzare o meglio adattare al mio progetto questa parte di script che mi hai dato:

Spoiler
Consigli?


    Holy87
  • Prode Guerriero

  • Rpg˛S Staff
  • Rens: 458
  • 6
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 7431 messaggi
  • Sesso:Maschio
  • Provenienza:San Giorgio a Cremano
  • Abilitā:Maestro

#7100 Inviato 06 August 2018 - 23:22 PM

E dalle… Dimentica base_bitmap, non esiste, è un esempio (come descritto appunto nel commento), non è che dando nomi a caso funziona!
Ti ho appena fatto uno Screenshot dell'attributo da utilizzare, quello è il nome dell'immagine del battler dell'eroe, bastava cercare l'attributo vero come avevo detto!
Ti ho anche detto che il metodo per generare la bitmap è meglio piazzarlo nella Cache!
Sembra che il mio ultimo post non sia proprio stato letto!
Allora, quello che dovevi fare era
module Cache
  def self.actor_battler(filename, actor)
    if include?('battler_' + filename)
      load_bitmap('battler_', filename)
    else
      generate_battler_bitmap(filename, actor)
    end
  end

  def self.generate_battler_bitmap(filename, actor)
    base_bitmap = Cache.battler(filename, 0) # è un esempio, base_bitmap dovrebbe avere la grafica dell'eroe nudo
    base_bitmap = base_bitmap.clone # ne faccio un clone per non sporcare la bitmap nella cache
    rect = Rect.new(0, 0, base_bitmap.width, base_bitmap.height)
    actor.equips.each {|equip| # per ogni equipaggiamento
      next if equip.nil? # passo al prossimo se l'equip non esiste
      if !equip.battler_graphic(actor.id).empty? # se la stringa non è vuota
        base_bitmap.blt(0, 0, Cache.battler(equip.battler_graphic(actor.id), 0), rect)
      end
    }
    base_bitmap # restituisco la bitmap elaborata
  end

  # cancella l'immagine dell'eroe dalla cache
  def self.reset_actor_bitmap(filename)
    if include?('battler_' + filename)
      @cache['battler_' + filename] = nil
    end
  end
end
questo è ciò che dovrebbe essere aggiunto in Cache.

Per quanto riguarda lo script di Galv, questo era il metodo da modificare
class Sprite_AnimBattler < Sprite_AnimBattler
  def update_bitmap
    if @battler.actor?
      new_bitmap = Cache.actor_battler(@battler.animated_battler,
                                       @battler)
    else
      new_bitmap = Cache.battler(@battler.animated_battler,
                                 @battler.battler_hue)
    end
    if bitmap != new_bitmap
      self.bitmap = new_bitmap
      spritesheet_normal
      init_visibility
    end
  end
end
come vedi basta una condizione che se è l'eroe, carica il battler creato con l'equipaggiamento

infine, la cancellazione della bitmap nella Cache quando l'eroe cambia equipaggiamento, così da aggiornare l'immagine al prossimo caricamento
class Game_Actor < Game_Battler
  alias equip_change_graphic refresh unless $@ # alias del metodo refresh

  # viene chiamato quando si cambia equip
  def refresh
    equip_change_graphic # richiamo il metodo copiato
    Cache.reset_actor_bitmap(self.animated_battler)
  end
end
per la spiegazione sugli alias, come sempre leggi la guida.

"Io non volevo solo partecipare alle discussioni. Volevo avere il potere di farle fallire" [cit.]

BannerOverdrive35.png
Cap3.png

578.png
 

Miei script per RPG Maker VX Ace:

Spoiler

 
I miei tutorial:
Spoiler




  • Feed RSS