Questo Forum utilizza i Cookies
Questo Forum fa uso di Cookies per memorizzare le informazioni di login se sei registrato o sulla tua ultima visita se non siete registrati. I Cookies sono piccoli documenti di testo memorizzati sul vostro computer; i Cookies impostati dal Forum possono essere utilizzati solo su questo sito e non costituiscono rischio per la sicurezza. I Cookies su questo forum servono anche a monitorare gli argomenti specifici che hai letto. Si prega di confermare se accettare o rifiutare i Cookies impostati.

Un cookie verrà memorizzato nel browser indipendentemente dalla scelta, per evitare che il Forum faccia nuovamente questa domanda. Sarete in grado di modificare le impostazioni dei cookies in qualsiasi momento tramite il link a piè di pagina

Rispondi 
Problema con la funzione affectedByTerrain
MegaTorterra
Glitched trainer
******
Offline

Messaggi: 511
Registrato: 04-05-2017
Reputazione: 1
Mi Piace Ricevuti: 264
Pok√©Money: 1,288.50‚āĪ
Messaggio: #1
Problema con la funzione affectedByTerrain
Dunque ecco il problema: ho aggiunto un effetto di un campo, modificando l'effetto del campo erboso, ma non funziona. Ecco il codice:
Codice:
# Glitched Terrain (damaging)
      if @field.terrain==PBBattleTerrains::Glitched && affectedByTerrain? && b.canHeal? && pbHasType?(:GLITCH)
        PBDebug.log("[Lingering effect] Glitched Terrain heals #{b.pbThis(true)}")
        b.pbRecoverHP(b.totalhp/16)
        pbDisplay(_INTL("{1}'s HP was restored.",b.pbThis))
      else if affectedByTerrain? && b.takesIndirectDamage? && !pbHasType(:GLITCH)
        PBDebug.log("[Lingering effect] Glitched Terrain heals #{b.pbThis (true)}")
        @scene.pbDamageAnimation(b)
        b.pbReduceHP(b.totalhp/16,false)
        pbDisplay(_INTL("{1} was hurt by Glitched Terrain!",b.pbThis))
         b.pbItemHPHealCheck
        b.pbFaint if b.fainted?
       end
      end

Qual è il problema? Il problema è che il gioco non riconosce affectedByTerrain sebbene essa sia definita.
Ho provato ugualmente a ridefinirla, copiando lo stesso codice pari pari nella stessa sezione dello script:
Codice:
#affectedByTerrain
     def affectedByTerrain?
    return false if airborne?
    return false if semiInvulnerable?
    return true
  end
Riavvio il tutto, parte il campo, finisce il turno ed appare un nuovo messaggio di errore: non ho definito airborne e quindi sono convinto del fatto che, anche se lo definissi, dopo dovrei definire anche semiInvulnerable. Non che mi dispiaccia, ma dubito che riscrivere metà delle variabili (o costanti? Non ci capisco nulla di programmazione) sia la via per correggere il problema.

Pokéball MegaTorterra Pokéball

Triumviro del Triumvirato Team
Professore dell'Arcipelago Iride
ed inventore della Torterranite Big Grin
Dai un'occhiata ai miei progetti RPG!
[Immagine: gkvnAwn.png][Immagine: jzgh0Qk.png][Immagine: 5OLHnVQ.png]

[Immagine: mub85iO.png][Immagine: OcBxkce.png]

Tutti i pokemon e gli strumenti dalla sesta all'ottava generazione per Pokemon Essentials!

[Immagine: kRcy8rR.png]
20-11-2020 08:41 PM
Cerca Cita
Pikalex04
Living like a Sekiryuutei
******
Offline

Messaggi: 94
Registrato: 17-07-2019
Reputazione: 4
Mi Piace Ricevuti: 103
Pok√©Money: 201.00‚āĪ
Messaggio: #2
RE: Problema con la funzione affectedByTerrain
Forse hai messo una "end" in pi√Ļ?
21-11-2020 08:43 AM
Sito Web Cerca Cita
MegaTorterra
Glitched trainer
******
Offline

Messaggi: 511
Registrato: 04-05-2017
Reputazione: 1
Mi Piace Ricevuti: 264
Pok√©Money: 1,288.50‚āĪ
Messaggio: #3
RE: Problema con la funzione affectedByTerrain
L'else che ho messo è stato per differenziare gli effetti, cioè se non succede x fa y... Ho sbagliato lì?

Tra l'altro ho appena notato un altro errore, dopo lo correggo
(Questo messaggio è stato modificato l'ultima volta il: 21-11-2020 09:28 AM da MegaTorterra.)
21-11-2020 09:26 AM
Cerca Cita
Artes
Futura Promessa
**
Offline

Messaggi: 84
Registrato: 01-01-2019
Reputazione: 3
Mi Piace Ricevuti: 200
Pok√©Money: 1,003.25‚āĪ
Messaggio: #4
RE: Problema con la funzione affectedByTerrain
Due osservazioni:
1) invece di scrivere else if... end, puoi far prima e scrivere elsif, in modo da risparmiarti un if nidificato e il corrispondente end.
2) nello script, hai dimenticato "b." davanti ad affectedByTerrain?, cioè, avresti dovuto scrivere "b.affectedByTerrain?". Controlla la parte con grassy terrain. Il compilatore segnalava errore perché la funzione affectedByTerrain? non era definita nella classe PokeBattle_Battle (in cui l'istruzione "vive"), ma bensì nella classe PokeBattle_Battler, di cui "b" è istanza. Tra parentesi, elimina la ridefinizione di affectedByTerrain?: è inutile.
21-11-2020 10:27 AM
Cerca Cita
MegaTorterra
Glitched trainer
******
Offline

Messaggi: 511
Registrato: 04-05-2017
Reputazione: 1
Mi Piace Ricevuti: 264
Pok√©Money: 1,288.50‚āĪ
Messaggio: #5
RE: Problema con la funzione affectedByTerrain
se aggiungo la b facendolo diventare b.affectedByTerrain? (come era in origine), mi dice che "b" non è definito.
Codice:
---------------------------
Pokemon Essentials
---------------------------
[Pokémon Essentials version 18.1]
Exception: NameError
Message: undefined local variable or method `b' for #<PokeBattle_Battle:0xdb01570>



Backtrace:
Battle_Phase_EndOfRound:284:in `__clauses__pbEndOfRoundPhase'
PokeBattle_Clauses:40:in `pbEndOfRoundPhase'
Battle_StartAndEnd:326:in `pbBattleLoop'
Battle_StartAndEnd:326:in `logonerr'
Battle_StartAndEnd:326:in `pbBattleLoop'
Battle_StartAndEnd:308:in `loop'
Battle_StartAndEnd:329:in `pbBattleLoop'
Battle_StartAndEnd:300:in `pbStartBattleCore'
Battle_StartAndEnd:258:in `pbStartBattle'
PField_Battles:421:in `pbTrainerBattleCore'

This exception was logged in
C:\Users\USERNAME\Saved Games\Pokemon Essentials\errorlog.txt.
Press Ctrl+C to copy this message to the clipboard.
---------------------------
OK  
---------------------------
21-11-2020 01:33 PM
Cerca Cita
Artes
Futura Promessa
**
Offline

Messaggi: 84
Registrato: 01-01-2019
Reputazione: 3
Mi Piace Ricevuti: 200
Pok√©Money: 1,003.25‚āĪ
Messaggio: #6
RE: Problema con la funzione affectedByTerrain
A questo punto sono parecchio confuso. Lo script che hai postato sopra lo hai inserito qui, suppongo:
Codice:
priority.each do |b|
      next if b.fainted?
      # Grassy Terrain (healing)
      if @field.terrain==PBBattleTerrains::Grassy && b.affectedByTerrain? && b.canHeal?
        PBDebug.log("[Lingering effect] Grassy Terrain heals #{b.pbThis(true)}")
        b.pbRecoverHP(b.totalhp/16)
        pbDisplay(_INTL("{1}'s HP was restored.",b.pbThis))
      end
      # Healer, Hydration, Shed Skin
      BattleHandlers.triggerEORHealingAbility(b.ability,b,self) if b.abilityActive?
      # Black Sludge, Leftovers
      BattleHandlers.triggerEORHealingItem(b.item,b,self) if b.itemActive?
    end
Ad esempio, subito dopo il primo "end" va benissimo, ma anche subito prima dell'ultimo "end". Se hai fatto così, "b" è perfettamente definito e il compilatore è impazzito. In caso contrario, sposta lo script dentro l'area di influenza di "priority.each do |b|", e tutto dovrebbe sistemarsi.

Aggiungo che anche le istruzioni "pbHasType?" hanno bisogno di un "b." davanti, in quanto si riferiscono al pokémon in esame, non alla battaglia in corso (non so se fosse questo l'errore che già avevi corretto).
(Questo messaggio è stato modificato l'ultima volta il: 21-11-2020 01:53 PM da Artes.)
21-11-2020 01:47 PM
Cerca Cita
MegaTorterra
Glitched trainer
******
Offline

Messaggi: 511
Registrato: 04-05-2017
Reputazione: 1
Mi Piace Ricevuti: 264
Pok√©Money: 1,288.50‚āĪ
Messaggio: #7
RE: Problema con la funzione affectedByTerrain
Ho provato a sostituire l'abilità del pokemon con Erbogenesi... A quanto pare il problema non è mio... Anche erbogenesi dice che affectedByTerrain? non è definita, quindi io che mi sono limitato a copiare il codice, ho trasportato l'errore pari pari
21-11-2020 01:47 PM
Cerca Cita
Artes
Futura Promessa
**
Offline

Messaggi: 84
Registrato: 01-01-2019
Reputazione: 3
Mi Piace Ricevuti: 200
Pok√©Money: 1,003.25‚āĪ
Messaggio: #8
RE: Problema con la funzione affectedByTerrain
Non mi è chiaro. Ho provato ad usare grassy terrain (come mossa) e non mi ha dato errore, anzi, ha curato i pokémon in campo. In che modo erbogenesi (che non ho definito) dovrebbe dar problemi? La mossa Grassy Terrain ti dà problemi?

Aspetta: non è che per caso hai la versione "obsoleta" di Essentials 18.1 (se non sbaglio, dovrebbe risalire ai primi di settembre)? Alcuni problemini (e forse anche questo) sono stati corretti da allora.
(Questo messaggio è stato modificato l'ultima volta il: 21-11-2020 02:16 PM da Artes.)
21-11-2020 02:14 PM
Cerca Cita
MegaTorterra
Glitched trainer
******
Offline

Messaggi: 511
Registrato: 04-05-2017
Reputazione: 1
Mi Piace Ricevuti: 264
Pok√©Money: 1,288.50‚āĪ
Messaggio: #9
RE: Problema con la funzione affectedByTerrain
(21-11-2020 02:14 PM)Artes Ha scritto:  La mossa Grassy Terrain ti d√† problemi?
Non so, ma il codice in questione è legato al campo, non a come viene attivato in teoria...
La versione che uso √® la 18.1 del 28 settembre, ce n'√® una pi√Ļ recente?
21-11-2020 02:59 PM
Cerca Cita
Artes
Futura Promessa
**
Offline

Messaggi: 84
Registrato: 01-01-2019
Reputazione: 3
Mi Piace Ricevuti: 200
Pok√©Money: 1,003.25‚āĪ
Messaggio: #10
RE: Problema con la funzione affectedByTerrain
No, dovresti avere la versione pi√Ļ recente.
Tuttavia, a me il campo erboso non dà problemi con la versione 18.1, e ti assicuro che non ho modificato gli script delle battaglie. Prova a scaricare una versione "pulita" di Essentials 18.1 e vedi se ti dà lo stesso problema.
21-11-2020 04:10 PM
Cerca Cita
MegaTorterra
Glitched trainer
******
Offline

Messaggi: 511
Registrato: 04-05-2017
Reputazione: 1
Mi Piace Ricevuti: 264
Pok√©Money: 1,288.50‚āĪ
Messaggio: #11
RE: Problema con la funzione affectedByTerrain
Ok, proverò a vedere

Pokéball MegaTorterra Pokéball

Triumviro del Triumvirato Team
Professore dell'Arcipelago Iride
ed inventore della Torterranite Big Grin
Dai un'occhiata ai miei progetti RPG!
[Immagine: gkvnAwn.png][Immagine: jzgh0Qk.png][Immagine: 5OLHnVQ.png]

[Immagine: mub85iO.png][Immagine: OcBxkce.png]

Tutti i pokemon e gli strumenti dalla sesta all'ottava generazione per Pokemon Essentials!

[Immagine: kRcy8rR.png]
21-11-2020 05:56 PM
Cerca Cita
MegaTorterra
Glitched trainer
******
Offline

Messaggi: 511
Registrato: 04-05-2017
Reputazione: 1
Mi Piace Ricevuti: 264
Pok√©Money: 1,288.50‚āĪ
Messaggio: #12
RE: Problema con la funzione affectedByTerrain
In effetti anche a me... Ciò vuol dire che ho buggato roba altrove, che gioia

Paradossalmente anche sulla versione modificata adesso mi funziona il campo erboso. e la modifica che ho fatto è stata levare l'effetto "curativo"del campo glitchato. Il mistero si infittisce.

Adesso che ho rimesso il codice, col campo erboso Riolu si cura ma Gigalith no. Se continua così gli levo l'effetto e lo trasformo in un meteo come volevo originariamente fare.
(Questo messaggio è stato modificato l'ultima volta il: 21-11-2020 07:39 PM da MegaTorterra.)
21-11-2020 07:23 PM
Cerca Cita
MegaTorterra
Glitched trainer
******
Offline

Messaggi: 511
Registrato: 04-05-2017
Reputazione: 1
Mi Piace Ricevuti: 264
Pok√©Money: 1,288.50‚āĪ
Messaggio: #13
RE: Problema con la funzione affectedByTerrain
Mi sono accorto di aver postato nella sezione sbagliata, provvedo a spostare in domande rpg

Pokéball MegaTorterra Pokéball

Triumviro del Triumvirato Team
Professore dell'Arcipelago Iride
ed inventore della Torterranite Big Grin
Dai un'occhiata ai miei progetti RPG!
[Immagine: gkvnAwn.png][Immagine: jzgh0Qk.png][Immagine: 5OLHnVQ.png]

[Immagine: mub85iO.png][Immagine: OcBxkce.png]

Tutti i pokemon e gli strumenti dalla sesta all'ottava generazione per Pokemon Essentials!

[Immagine: kRcy8rR.png]
21-11-2020 10:27 PM
Cerca Cita
MegaTorterra
Glitched trainer
******
Offline

Messaggi: 511
Registrato: 04-05-2017
Reputazione: 1
Mi Piace Ricevuti: 264
Pok√©Money: 1,288.50‚āĪ
Messaggio: #14
RE: Problema con la funzione affectedByTerrain
Dunque, grazie all'aiuto di NettoHikari di Reliccastle ho capito il problema e sono riuscito a risolverlo.
Fatta eccezione per qualche errore di battitura, è emerso che il problema principale era che avevo messo l'effetto sopra la "priority.each do |b|", che definiva "b", la causa iniziale dell'errore, di conseguenza buggavo tutto.
Ecco il codice corretto:
Codice:
# Status-curing effects/abilities and HP-healing items
    priority.each do |b|
      next if b.fainted?
      # Grassy Terrain (healing)
      if @field.terrain==PBBattleTerrains::Grassy && b.affectedByTerrain? && b.canHeal?
        PBDebug.log("[Lingering effect] Grassy Terrain heals #{b.pbThis(true)}")
        b.pbRecoverHP(b.totalhp/16)
        pbDisplay(_INTL("{1}'s HP was restored.",b.pbThis))
      end
      # Glitched Terrain (damaging)
      if @field.terrain==PBBattleTerrains::Glitched && b.affectedByTerrain? && b.canHeal? && b.pbHasType?(:GLITCH)
        PBDebug.log("[Lingering effect] Glitched Terrain hurts #{b.pbThis(true)}")
        b.pbRecoverHP(b.totalhp/16)
        pbDisplay(_INTL("{1}'s HP was restored.",b.pbThis))
      elsif b.affectedByTerrain? && b.takesIndirectDamage? && !b.pbHasType?(:GLITCH)
        PBDebug.log("[Lingering effect] Glitched Terrain heals #{b.pbThis (true)}")
        @scene.pbDamageAnimation(b)
        b.pbReduceHP(b.totalhp/16,false)
        pbDisplay(_INTL("{1} was hurt by Glitched Terrain!",b.pbThis))
         b.pbItemHPHealCheck
        b.pbFaint if b.fainted?
      end
      # Healer, Hydration, Shed Skin
      BattleHandlers.triggerEORHealingAbility(b.ability,b,self) if b.abilityActive?
Ho incluso una parte prima e dopo, in modo da contestualizzarlo.
22-11-2020 09:36 AM
Cerca Cita
Artes
Futura Promessa
**
Offline

Messaggi: 84
Registrato: 01-01-2019
Reputazione: 3
Mi Piace Ricevuti: 200
Pok√©Money: 1,003.25‚āĪ
Messaggio: #15
RE: Problema con la funzione affectedByTerrain
(21-11-2020 01:47 PM)Artes Ha scritto:  A questo punto sono parecchio confuso. Lo script che hai postato sopra lo hai inserito qui, suppongo:
Codice:
priority.each do |b|
      next if b.fainted?
      # Grassy Terrain (healing)
      if @field.terrain==PBBattleTerrains::Grassy && b.affectedByTerrain? && b.canHeal?
        PBDebug.log("[Lingering effect] Grassy Terrain heals #{b.pbThis(true)}")
        b.pbRecoverHP(b.totalhp/16)
        pbDisplay(_INTL("{1}'s HP was restored.",b.pbThis))
      end
      # Healer, Hydration, Shed Skin
      BattleHandlers.triggerEORHealingAbility(b.ability,b,self) if b.abilityActive?
      # Black Sludge, Leftovers
      BattleHandlers.triggerEORHealingItem(b.item,b,self) if b.itemActive?
    end
Ad esempio, subito dopo il primo "end" va benissimo, ma anche subito prima dell'ultimo "end". Se hai fatto così, "b" è perfettamente definito e il compilatore è impazzito. In caso contrario, sposta lo script dentro l'area di influenza di "priority.each do |b|", e tutto dovrebbe sistemarsi.

Aggiungo che anche le istruzioni "pbHasType?" hanno bisogno di un "b." davanti, in quanto si riferiscono al pokémon in esame, non alla battaglia in corso (non so se fosse questo l'errore che già avevi corretto).
Non aggiungo altro.

[Immagine: kRcy8rR.png]
22-11-2020 10:36 AM
Cerca Cita
MegaTorterra
Glitched trainer
******
Offline

Messaggi: 511
Registrato: 04-05-2017
Reputazione: 1
Mi Piace Ricevuti: 264
Pok√©Money: 1,288.50‚āĪ
Messaggio: #16
RE: Problema con la funzione affectedByTerrain
Non avevo visto l'ultima rigaaaaa

Pokéball MegaTorterra Pokéball

Triumviro del Triumvirato Team
Professore dell'Arcipelago Iride
ed inventore della Torterranite Big Grin
Dai un'occhiata ai miei progetti RPG!
[Immagine: gkvnAwn.png][Immagine: jzgh0Qk.png][Immagine: 5OLHnVQ.png]

[Immagine: mub85iO.png][Immagine: OcBxkce.png]

Tutti i pokemon e gli strumenti dalla sesta all'ottava generazione per Pokemon Essentials!

[Immagine: kRcy8rR.png]
22-11-2020 10:51 AM
Cerca Cita
Rispondi 




Utente(i) che stanno guardando questa discussione: 1 Ospite(i)
Powered by MyBB, © 2002-2020 MyBB Group. Copyright ¬© | 2020 Pok√©mon Hacking