Theme
Loaded archives
What this session read, not what is on disk.
| Export | Summary |
|---|---|
ShForgeReadCount | How many distinct .forge archives the engine has READ so far. |
ShForgeReadName | File name of the index-th read archive, without its folder: "DataPC.forge", "DataPC_GRN_WorldMap.forge". |
ShForgeReadSeen | 1 when any read archive's file name contains name, case insensitive - so "WorldMap" and "DataPC_GRN_WorldMap.forge" both work. |
ShForgeReadCount
c
SH_API int ShForgeReadCount(void);How many distinct .forge archives the engine has READ so far. Read, not opened: an archive opened and never read is not loaded. The list is kept by the forge I/O layer (scripthook_forge_io.c), which has to resolve every read handle to a path anyway, and it is installed for this alone - [forgemod] ledger=1 by default - even when nothing is being modded. 0 until the first archive is read.
It is worth asking because a mode that mounts an archive of its own reads a file the other modes never touch: a session that read it cannot have been in the other mode. The engine reads its archives rather than mapping them (measured: 47 opens, 646 reads, not one CreateFileMapping or MapViewOfFile on a .forge), so a mapped file name would have missed every one of them.
scripthook.h, line 2032
ShForgeReadName
c
SH_API const char *ShForgeReadName(int index);File name of the index-th read archive, without its folder: "DataPC.forge", "DataPC_GRN_WorldMap.forge". "" for an index out of range. The order is the order the archives were first read in.
scripthook.h, line 2038
ShForgeReadSeen
c
SH_API int ShForgeReadSeen(const char *name);1 when any read archive's file name contains name, case insensitive - so "WorldMap" and "DataPC_GRN_WorldMap.forge" both work. This is the cheap question: it does not name a mode by itself (every mode reads archives every mode reads), but an archive only one mode reads settles which mode this is.
scripthook.h, line 2046