-
Notifications
You must be signed in to change notification settings - Fork 37
API Level 3
| Header | JK2MV Version | Supported since |
|---|---|---|
| Level 3 | 1.4 | 20 Jan 2018 |
SysCalls available with this API-Level.
| Declaration | Number | ASM | game | cgame | ui |
|---|---|---|---|---|---|
| MVAPI_FS_FLOCK | 708 | -709 | ☑️ | ☑️ | ☑️ |
| MVAPI_R_ADDREFENTITYTOSCENE2 | 706 | -707 | ☑️ | ☑️ | |
| MVAPI_SETVIRTUALSCREEN | 707 | -708 | ☑️ | ☑️ |
int trap_FS_FLock(fileHandle_t h, flockCmd_t cmd, qboolean nb);Apply or remove an advisory lock on an open file. This is a rudimentary IPC (Inter-Process Communication) mean for synchronization of file read/write access between JK2MV processes. The argument cmd is one of following:
| Command | Description |
|---|---|
| FLOCK_SH | Shared lock – multiple processes may apply this lock simultaneously. Used for reading. |
| FLOCK_EX | Exclusive lock – only one process may hold an exclusive lock. Used for writing. |
| FLOCK_UN | Unlock – remove an existing lock held by this process. |
nb argument specifies if syscall should be blocking or non-blocking. A blocking syscall returns only when a resource becomes available. Non-blocking call returns -1 immediately if another process prevents us from acquiring a lock. Return value of 0 means succcess and -1 means failure. The lock is advisory, meaning that it doesn't physically prevent a mod from using a file regardless if it's locked or not. Keep in mind that using the blocking version of the syscall is susceptible to deadlocks. One fail-safe way to avoid such issues is to never acquire a lock on more that one file at a time, or not use a blocking variant of the syscall. For more information on process synchronization strategies and issues, refer to programming literature.
void trap_R_AddRefEntityToScene2(const refEntity_t *re);shaderTime field of refEntity_t will be read as int, rather than float. For refEntities that use this field (none in original basejk modules), use this syscall instead of original trap_R_AddRefEntityToScene to avoid bugs on high server time.
trap_MVAPI_SetVirtualScreen(float w, float h);Set virtual screen size (default 640x480) used by following SysCalls: R_FONT_STRLENPIXELS, R_FONT_STRHEIGHTPIXELS, R_FONT_DRAWSTRING, R_DRAWSTRETCHPIC, R_ROTATEPIC, R_ROTATEPIC2. Changing virtual screen size won't affect other modules and it's a very cheap operation performance-wise. It can be used to handily correct aspect ratio of HUD/UI elements. Exemplary implementation of the former can be seen here: https://github.com/aufau/SaberMod/commits/widescreen
See Cvars page for bug descriptions.
| Flag | game | cgame | ui |
|---|---|---|---|
| MVFIX_PLAYERGHOSTING | ☑️ |
JK2MV
Client
Server
Modding
Development