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





Avatar

 Rimuovere solo gli oggetti normali dall'inventario con uno script call


Best Answer Keroro , 28 August 2022 - 08:11 AM

Ciao
In Rgss3 esistono 3 variabili globali che hanno la lista di tutti gli oggetti esistenti:
$data_weapons con le armi
$data_armors con le armature
$data_items per tutti gli altri oggetti

Gli oggetti che vedi nel menù sono quelli del Game_Party nelle variabili @weapons,@armors, @items.

Il trucco quindi è aggiungere un metodo in Game_Party per cancellare tutti gli oggetti che soddisfino la condizione di non essere oggetto chiave
Il metodo key_item?, che restituisce vero se è l'oggetto chiave, è nella classe RPG::Item

class Game_Party
  def clear_simple_items
    @items.delete_if{|item_id| !$data_items[item_id].key_item? }
  end
end

Vai al post intero

  • Si prega di effettuare il log in prima di rispondere
Rimuovere solo gli oggetti normali dall'inventario con uno script call

    nickk.c
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Roma
  • Abilitā:Apprendista

#1 Inviato 28 August 2022 - 00:56 AM

Ciao a tutti, come ho scritto nel titolo vorrei eliminare tutti gli oggetti nell'inventario del giocatore utilizzando uno script call, però senza eliminare armi, armature e oggetti chiave.

Cercando online ho trovato solo script call che eliminano tutto l'inventario, oppure tutorial su come fare questa cosa con un evento comune, ma sarebbe abbastanza lunga come cosa perché nel mio gioco ci sono tantissimi oggetti diversi.

Grazie in anticipo!  :smileright:



    Keroro
  • Animatore

  • Utenti
  • Rens: 34
  • 0
  • StellettaStellettaStellettaStelletta
  • 666 messaggi
  • Sesso:Maschio
  • Provenienza:Atlantide
  • Abilitā:Maestro

#2 Inviato 28 August 2022 - 08:11 AM

  Best Answer

Ciao
In Rgss3 esistono 3 variabili globali che hanno la lista di tutti gli oggetti esistenti:
$data_weapons con le armi
$data_armors con le armature
$data_items per tutti gli altri oggetti

Gli oggetti che vedi nel menù sono quelli del Game_Party nelle variabili @weapons,@armors, @items.

Il trucco quindi è aggiungere un metodo in Game_Party per cancellare tutti gli oggetti che soddisfino la condizione di non essere oggetto chiave
Il metodo key_item?, che restituisce vero se è l'oggetto chiave, è nella classe RPG::Item
class Game_Party
  def clear_simple_items
    @items.delete_if{|item_id| !$data_items[item_id].key_item? }
  end
end

I Miei Script:
Salva Schermata (3 Aprile 2012)
Attacco Personalizzabile (2 Aprile 2012)
Keyboard Input (Porting) (17 Marzo 2012)
Continua...


    Holy87
  • Prode Guerriero

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

#3 Inviato 28 August 2022 - 11:09 AM

Ciao
In Rgss3 esistono 3 variabili globali che hanno la lista di tutti gli oggetti esistenti:
$data_weapons con le armi
$data_armors con le armature
$data_items per tutti gli altri oggetti

Gli oggetti che vedi nel menù sono quelli del Game_Party nelle variabili @weapons,@armors, @items.

Il trucco quindi è aggiungere un metodo in Game_Party per cancellare tutti gli oggetti che soddisfino la condizione di non essere oggetto chiave
Il metodo key_item?, che restituisce vero se è l'oggetto chiave, è nella classe RPG::Item

class Game_Party
  def clear_simple_items
    @items.delete_if{|item_id| !$data_items[item_id].key_item? }
  end
end

Attento che @items è un hash di item_id => item_number e non un array.
@items.delete_if{ |item_id, _quantity| $data_items[item_id].key_item? }

"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

    Keroro
  • Animatore

  • Utenti
  • Rens: 34
  • 0
  • StellettaStellettaStellettaStelletta
  • 666 messaggi
  • Sesso:Maschio
  • Provenienza:Atlantide
  • Abilitā:Maestro

#4 Inviato 28 August 2022 - 12:09 PM

Sì hai ragione, @items è un hash!

È possibile estrarre meno elementi all'interno dei blocchi, in questo caso scorriamo l'hash come se fosse una lista di chiavi.

Ti lascio un esempio banale che puoi testare:
h = { "a" => 100, "b" => 200 }
puts h.select{|key| key < "b"}
Quindi l'aggiungere _quantity rende il codice più comprensibile a chi lo vede per la prima volta, ma è superfluo se conosci le strutture dati

I Miei Script:
Salva Schermata (3 Aprile 2012)
Attacco Personalizzabile (2 Aprile 2012)
Keyboard Input (Porting) (17 Marzo 2012)
Continua...


    nickk.c
  • Nuovo Arrivato

  • Utenti
  • Rens: 0
  • 0
  • Stelletta
  • 37 messaggi
  • Sesso:Maschio
  • Provenienza:Roma
  • Abilitā:Apprendista

#5 Inviato 28 August 2022 - 14:34 PM

Ok, grazie mille Keroro e Holy! ^.^






  • Feed RSS