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
Bitmap draw_text si aggiorna male - - - - -

    Mon
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 12 messaggi
  • Sesso:Maschio
  • Abilitā:Adepto

#1 Inviato 21 March 2018 - 16:03 PM

Specifico che ho fatto ricerche in ogni luogo, universo, molecolare e via dicendo, senza risultati ovviamente; intanto copio ed incollo il mio script per intero, tanto è corto, sto facendo varie prove per capire come scriptare.

 



class Variabili_Testo
  
  def main
    
    if not defined? $a
      $a = 5
    end
    
    @window1 = Window_Base.new(3, 3, 70, 55)
    @window1.opacity = 0
    @window1.contents = Bitmap.new(35, 20)
    
    text1 = $a.to_s
    if $a < 10
      text1 = "0"+text1
    end
    if $a < 100
      text1 = "0"+text1
    end
    
    @window1.contents.draw_text(0, 0, 35, 20, text1, 1)    
    
    mio_file = File.new("Txt/testlettura.txt", "r+")
 
    txt = []
    i = 0
    while riga = mio_file.gets
      txt[i] = riga
      i += 1
    end
    
    txt2 = txt[0].split("")
    print (txt2[1]+txt2.length.to_s)
    
    File.open "Txt/testscrittura.txt", "w" do |mio_file|
      mio_file.puts "Scrivo"
    end
    
    # Restore BGM and BGS
    $game_system.bgm_play($game_system.playing_bgm)
    $game_system.bgs_play($game_system.playing_bgs)
    # Update map (run parallel process event)
    $game_map.update
    # Switch to map screen
    $scene = Scene_Map.new
    
  end
  
end

 

 

L'ho messo tutto per sicurezza ma ciò su cui dovete porre maggior attenzione è @window1.contents.draw_text(0, 0, 35, 20, text1, 1) .

 

Praticamente la mia intenzione è mettere a schermo un valore che viene modificato da un evento per click (ora per provare), visto che ci sono vi riporto anche questo; metterò in grassetto ciò che viene "creato" attraverso comandi standart e non script.

 


$scene = Variabili_Testo.new

Wait: 1 frame(s)

$a += 1

$game_variables[1] = $a
Text: \v[1]

 

 

 

Praticamente aumento la variale di 1, poi alcuni passaggi per farmelo mostrare su testo; questa è una prova per vedere come interagiscono script ed eventi.

 

Tutto questo ma il problema è alla fonte, ogni volta che il valore della variabile viene aggiornato, i numeri a schermo inizialmente vengono scritti uno sopra l'altro, solo dopo un pò resta solamente l'ultimo, quindi immagino che sia semplice da risolvere per chi se ne intende, per farla breve: com'è possibile evitare che si scrivono uno su l'altro e che quindi viene mostrato subito solamente l'ultimo valore? Ho provato ad eliminare prima la finestra, poi il bitmap e dopo avviare il comando ma non cambia nulla. Grazie mille a chi almeno proverà ad aiutarmi.



    giver
  • Alex (Rm2k)

  • Utenti
  • Rens: 121
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 1291 messaggi
  • Sesso:Maschio
  • Provenienza:The Creept - Room for Strangeness
  • Abilitā:Esperto

#2 Inviato 23 March 2018 - 17:05 PM

contents.clear elimina il contenuto dell'intera bitmap memorizzata in contents.

 

Chirurgico:

contents.fill_rect(x, y, width, height, Color.new(0, 0, 0, 0))

PS: forse è contents.rect_fill, purtroppo al momento non posso controllare.


Spoiler

    Mon
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 12 messaggi
  • Sesso:Maschio
  • Abilitā:Adepto

#3 Inviato 24 March 2018 - 12:31 PM

Dopo tante visual finalmente una risposta! XD Grazie.

 

Comunque si, con "eliminare la bitmap" intendevo utilizzare "content.clear".

 

Ho visto nella guida presente nel programma ed è "fill_rect" ma la situazione non cambia, si aggiunge un comodo sfondo alla scritta ma si comporta comunque allo stesso modo.

Studiando  gli altri script del programma ho provato anche con le immagini invece del testo, sempre inserendole in una window ma si ripete il fastidio ma anzi ho capito una cosa in più per nulla positiva, dopo un pò sparisce anche l'ultima cosa mostrata, quindi da come ho capito le window hanno una scadenza, spariscono da sole dopo un pò se lo script si ferma.

 

Quindi alla fine sono arrivato alla conclusione che è meglio utilizzare il classico "show picture" presente tra i comandi base ma la comodità degli script è incredibile, esiste quindi un codice per richiamare quel comando da script? Per ora ho trovato solamente il comando per impostare switch e variabili, intendo proprio quelle standart del progetto.



    giver
  • Alex (Rm2k)

  • Utenti
  • Rens: 121
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 1291 messaggi
  • Sesso:Maschio
  • Provenienza:The Creept - Room for Strangeness
  • Abilitā:Esperto

#4 Inviato 27 March 2018 - 09:56 AM

Ci sono informazioni utili a riguardo in questi post elencati sotto, tutti appartenenti allo stesso topic.

 

http://www.rpg2s.net...ure/#entry97890

 

http://www.rpg2s.net...ure/#entry98009

 

http://www.rpg2s.net...ure/#entry98139

 

E per altri eventi, oltre questi, tutto il Ruby che li gestisce si trova nella class(e) Interpreter, a partire dalla parte 3 (Interpreter 3, 4, 5, 6, 7 nello script editor)

 

Knowledge is powa!!! Bwahwahwah!


Spoiler

    Mon
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 12 messaggi
  • Sesso:Maschio
  • Abilitā:Adepto

#5 Inviato 27 March 2018 - 17:04 PM

O_O... proprio ciò che cercavo da almeno 2 settimane, grazie; ma perchè google non mi ha segnalato questo topic? Beh, l'importante è aver risolto alla fine, anche se il problema esposto inizialmente no, XD, almeno ho trovato l'alternativa



    giver
  • Alex (Rm2k)

  • Utenti
  • Rens: 121
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 1291 messaggi
  • Sesso:Maschio
  • Provenienza:The Creept - Room for Strangeness
  • Abilitā:Esperto

#6 Inviato 30 March 2018 - 08:28 AM

Far rottamare quello script e passare ad iHUD (integrated Heads Up Display) !
 
Una possibile ricerca, con Google, per vedere esempi:
rpg maker rgss hud script
 
Oppure, sempre per avere esempi, accontentarsi di questo paio di HUD in cui ho messo le mani io.
Sono entrambe per VX, però, ed almeno uno contiene codice supportato solo dal VX e non dall'XP.
Finestra del gold aggiornata in RT, completamente "mio":
Soma HUD (rewrite by giver, quindi confrontabile con la versione originale):
 
 
 
Nel caso si fosse della mentalità "Ogni scarrafone è bello a mamma suoia!", mi vengono in mente due vie da seguire . . .
1) Brutale e a dir poco raffazzonata:
Mettere all'inizio del def main della classe che è stata creata l'istruzione     RPG::Cache.clear    # Equivalente a   GC.start   in RMXP
La versione del Ruby usata da RMXP, ovvero la 1.8.1, non prevede il destroy() mirato, che non si potrebbe comunque usare trattandosi di una variabile di istanza, nè lo si può nemmeno aiutare a notare l'inutilità dell'oggetto con   @window1 = nil
2) Un pelino migliore, ma comunque abbastanza "trasandata":
Rendere GLOBALE la variabile in cui si memorizza la finestra, quindi dovrebbe diventare qualcosa del tipo $miafinestra1. Poi spostare il codice che ne costruisce sia l'istanza che i contents all'interno di una "if" che controlla se è stata definita, con un else che include $miafinestra.contents.clear. Il tutto ovviamente PRIMA di scrivere il valore di $a al suo interno. Più o meno così.
unless $miafinestra.nil?
    $miafinestra.contents.clear
else
    $miafinestra = Window_Base.new(0, 0, 70, 55)
    $miafinestra.contents = Bitmap.new(35, 20)
end
$miafinestra.contents.draw_text(*params) . . .
 
 
Non prendersela a male. Un ultimo consiglio: Anche se le parentesi tonde non sono obbligatorie, è sempre meglio metterle. Sia per mantenere il codice più leggibile per gli esseri umani, ma anche per aiutare l'interprete (o il compilatore) a compiere correttamente il proprio lavoro. La fiducia cieca in tali meccanismi è sempre "pericolosa" e può causare comportamenti anomali in fase d'esecuzione.
Un paio di piccoli esempi:
# Scrivere così, nella versione 1.02a di rpg maker xp, dà errore
if 1..8.include?(intn)
# Mentre così NO.
if (1...9).include?(intn)

# Scrivere così, nella 1.02a, dà errore.
alias metodoribattezzato metodo unless $@
# mentre così NO.
(alias metodoribattezzato metodo) unless $@
 
Non dimenticare che il Ruby chiuso usato per RMXP è stato scarnificato di tutto quello che normalmente può fare ma che non serve per fare i giochi così come è stato ideato dalla Enterbrain. Non c'è la gestione del traffico di rete e neppure la creazione al volo di pagine web interattive, tra le altre cose . . .

Spoiler

    Mon
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 12 messaggi
  • Sesso:Maschio
  • Abilitā:Adepto

#7 Inviato 30 March 2018 - 13:56 PM

Assolutamente non la prendo a male, anzi, più cose imparo meglio è; è proprio questo il mio scopo, lo script fatto è solo una prova per simulare un script vero e proprio che potrebbe servirmi in futuro... infatti l'HUD mi intriga parecchio, me lo studio un pò in questi giorni, ora ho mal di testa (non centra nulla lo script) e non mi sembra il caso scervellarmi, XD






  • Feed RSS