Per tutti coloro che utilizzano Boscags7 come libreria
Ho trovato un bug in Std_ScanJournal. Considerando l'altissimo numero di procedure che fanno uso del journal scanning (incluse le solite funzioni di check per i save), questo bug può crearvi notevolissimi problemi. Chiedo scusa per la svista.
Entrando nel merito... l'istruzione:
va ovviamente sostituita con:
La sub completa diventa, quindi (includo anche Std_ResetJournal, per chi volesse usarle senza Boscags7 - nessun bisogno di "convenzione safecall" in questo caso):
Ho trovato un bug in Std_ScanJournal. Considerando l'altissimo numero di procedure che fanno uso del journal scanning (incluse le solite funzioni di check per i save), questo bug può crearvi notevolissimi problemi. Chiedo scusa per la svista.
Entrando nel merito... l'istruzione:
codice:
if !start >= #jindex
codice:
if !start <= #jindex
codice:
;=========================================================================== ;* @name Std_ResetJournal ;* @author AG ;* @purpose Cancella il contenuto di un'istanza del journal. ;* In termini pratici, determina l'istante di partenza da cui cominciare a monitorare il journal. ;* @params %1 opt Nome dell'istanza del journal da cancellare. Ciascuna istanza è indipendente dalle altre. ;* @example Vedere la documentazione di Std_ScanJournal per un esempio di come usare congiuntamente le due sub. sub Std_ResetJournal ; %instanceName namespace push namespace local Std_ScanJournal_Persistent if %0 < 1 || %1 = !null set !instance default else set !instance %1 set !instances_ . !instance ( #jindex + 1 ) namespace pop return sub Std_ClearJournal ; sinonimo if %0 < 1 set %1 !null gosub Std_ResetJournal %1 return ;=========================================================================== ;* @name Std_ScanJournal ;* @author AG ;* @purpose Cerca un'insieme di stringhe in un'istanza del journal. ;* @params %1 req Nome dell'istanza del journal da cancellare. Ciascuna istanza è indipendente dalle altre. ;* %2 req Stringa da ricercare all'interno dell'istanza. ;* %3...%n opt Stringhe addizionali da ricercare all'interno dell'istanza. ;* @returns La prima stringa che viene trovata nell'istanza, oppure #false se non ne viene trovata nessuna. ;* ;* @example { ;* gosub safecall Std_ResetJournal operation1 ;* <esegui l'operazione> ;* gosub safecall Std_ScanJournal operation1 the_spell_fizzles ;* if #result = the_spell_fizzles ;* <nel journal è comparsa la stringa the_spell_fizzles durante l'esecuzione dell'operazione> ;* } sub Std_ScanJournal ; %instanceName %string1 %string2 %string... namespace push namespace local Std_ScanJournal_Persistent if %0 < 1 || %1 = !null set !instance default else set !instance %1 set !start !instances_ . !instance if !start <= #jindex { for !i !start #jindex { scanjournal !i for !j 2 %0 { set !string % . !j if !string in #journal { set #result !string namespace pop return #result } } } } namespace pop return #false
Commenta