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






: algander#6292

, pazientate
Commenta