Moved shared Nuclide data into its own folder.

This commit is contained in:
Marco Cawthorne 2020-04-08 08:01:52 +02:00
parent a1b1eca2e5
commit c6f40c2590
43 changed files with 240 additions and 75 deletions

View File

@ -1,6 +1,7 @@
FTEMANIFEST 1
GAME cstrike
NAME "Counter-Strike"
BASEGAME nuclide
BASEGAME logos
BASEGAME valve
BASEGAME cstrike

View File

@ -1,6 +1,7 @@
FTEMANIFEST 1
GAME valve
NAME "Half-Life"
BASEGAME nuclide
BASEGAME logos
BASEGAME valve

View File

@ -1,6 +1,7 @@
FTEMANIFEST 1
GAME gearbox
NAME "Opposing Force"
BASEGAME nuclide
BASEGAME logos
BASEGAME valve
BASEGAME gearbox

View File

@ -1,6 +1,7 @@
FTEMANIFEST 1
GAME hunger
NAME "They Hunger"
BASEGAME nuclide
BASEGAME logos
BASEGAME valve
BASEGAME hunger

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -1,6 +1,7 @@
FTEMANIFEST 1
GAME rewolf
NAME "Gunman Chronicles"
BASEGAME nuclide
BASEGAME logos
BASEGAME rewolf

View File

@ -1,6 +1,7 @@
FTEMANIFEST 1
GAME rewolf_demo
NAME "Gunman Demo"
BASEGAME nuclide
BASEGAME logos
BASEGAME rewolf_demo

View File

@ -1,6 +1,7 @@
FTEMANIFEST 1
GAME scihunt
NAME "Scientist Hunt"
BASEGAME nuclide
BASEGAME logos
BASEGAME valve
BASEGAME scihunt

View File

@ -7,6 +7,7 @@ all:
make plugins
menu:
mkdir -p ../nuclide/data.pk3dir
$(CC) menu-fn/progs.src
games:

View File

@ -173,7 +173,7 @@ ModServer_ParseItem(string data)
/* Called as an eventual result of the uri_get builtin. */
void
ModServer_URI_Callback(float id, float code, string data)
ModServer_URI_Callback(float id, float code, string data, int resourcebytes)
{
/* count our requests down */
if (id == MODSERVER_REQ_ITEM) {

View File

@ -1,5 +1,5 @@
#pragma target fte
#pragma progs_dat "../../valve/data.pk3dir/menu.dat"
#pragma progs_dat "../../nuclide/data.pk3dir/menu.dat"
#define MENU
#includelist

View File

@ -1,5 +1,5 @@
/*
This file was generated by FTE Quake 5527M, dated Aug 31 2019.
This file was generated by FTE Quake 5665:5666M, dated Apr 7 2020.
This file can be regenerated by issuing the following command:
pr_dumpplatform
Available options:
@ -539,8 +539,8 @@ int serverid; /* The unique id of this server within the server cluster. */
.entity tag_entity;
.float tag_index;
.float skeletonindex; /* This object serves as a container for the skeletal bone states used to override the animation data. */
.vector colormod; /* Provides a colour tint for the entity. */
.vector glowmod;
.vector colormod; /* Provides a colour tint for the entity (does not affect fullbrights). */
.vector glowmod; /* Scaler for an entity's fullbright textures. */
.vector gravitydir; /* Specifies the direction in which gravity acts. Must be normalised. '0 0 0' also means down. Use '0 0 1' if you want the player to be able to run on ceilings. */
.vector(vector org, vector ang) camera_transform; /* Provides portal transform information for portal surfaces attached to this entity. Also used to open up pvs in ssqc. */
#endif
@ -578,9 +578,9 @@ int serverid; /* The unique id of this server within the server cluster. */
.entity viewmodelforclient; /* This entity will be sent only to the player named by this field, and this entity will be attached to the player's view as an additional weapon model. */
.entity exteriormodeltoclient; /* This entity will be invisible to the player named by this field, except in mirrors or mirror-like surfaces, where it will be visible as normal. It may still cast shadows as normal, and generate lights+particles, depending on client settings. Does not affect how other players see the entity. */
.entity clientcamera; /* Controls which entity to use for this client's camera. */
.float glow_size;
.float glow_color;
.float glow_trail;
.float glow_size; /* Some outdated particle trail thing. */
.float glow_color; /* Some outdated particle trail thing. */
.float glow_trail; /* Some outdated particle trail thing. */
.float traileffectnum; /* This should be set to the result of particleeffectnum, in order to attach a custom trail effect to an entity as it moves. */
.float emiteffectnum; /* This should be set to the result of particleeffectnum, in order to continually spawn particles in the direction that this entity faces. */
.float dimension_see; /* This is the dimension mask (bitfield) that the client is allowed to see. Entities and events not in this dimension mask will be invisible. */
@ -622,7 +622,7 @@ int serverid; /* The unique id of this server within the server cluster. */
.float basesubblendfrac; /* See basebone */
.float basesubblend2frac; /* See basebone */
#endif
void(float reqid, float responsecode, string resourcebody) URI_Get_Callback; /* Called as an eventual result of the uri_get builtin. */
void(float reqid, float responsecode, string resourcebody, int resourcebytes) URI_Get_Callback; /* Called as an eventual result of the uri_get builtin. */
#ifdef SSQC
void() SpectatorConnect; /* Called when a spectator joins the game. */
void() SpectatorDisconnect; /* Called when a spectator disconnects from the game. */
@ -673,7 +673,7 @@ void(string cmdtext) GameCommand;
string(string uri, string method, string postdata, __in string requestheaders, __inout string responseheaders) Cef_GeneratePage; /* Provides an entrypoint to generate pages for the CEF plugin from within QC. Headers are
-separated key/value pairs (use tokenizebyseparator). */
#ifdef SSQC
string(string uri, string method, string postdata, __in string requestheaders, __inout string responseheaders) HTTP_GeneratePage; /* Provides an entrypoint to generate pages for pages requested over http (sv_port_tcp+net_enable_http). Headers are
string(string uri, string method, string postdata, __in string requestheaders, __inout string responseheaders) HTTP_GeneratePage; /* Provides an entrypoint to generate pages for pages requested over http (sv_port_tcp+net_enable_http). Headers are
-separated key/value pairs (use tokenizebyseparator). Return __NULL__ to let the engine handle it, an empty string for a 404, and any other text for a regular 200 response. */
#endif
#if defined(CSQC) || defined(SSQC)
@ -742,6 +742,7 @@ const float SOLID_BSP = 4; /* Does not collide against other SOLID_BSP entities.
const float SOLID_CORPSE = 5; /* Non-solid to SOLID_SLIDEBOX or other SOLID_CORPSE entities. For hitscan weapons to hit corpses, change the player's .solid value to SOLID_BBOX or so, perform the traceline, then revert the player's .solid value. */
const float SOLID_LADDER = 20; /* Obsolete and may be removed at some point. Use skin=CONTENT_LADDER and solid_bsp or solid_trigger instead. */
const float SOLID_PORTAL = 21; /* CSG subtraction volume combined with entity transformations on impact. */
const float SOLID_BSPTRIGGER = 22; /* For complex-shaped trigger volumes, instead of being a pure aabb. */
const float SOLID_PHYSICS_BOX = 32;
const float SOLID_PHYSICS_SPHERE = 33;
const float SOLID_PHYSICS_CAPSULE = 34;
@ -829,7 +830,7 @@ const int CONTENTBIT_MONSTERCLIP = 0x00020000i;
const int CONTENTBIT_BODY = 0x02000000i;
const int CONTENTBIT_CORPSE = 0x04000000i;
const int CONTENTBIT_Q2LADDER = 0x20000000i; /* Content bit specific to q2bsp */
const int CONTENTBIT_SKY = 0x80000000i;
const int CONTENTBIT_SKY = 0x80000000i; /* Content bit somewhat specific to q1bsp (aliases to NODROP in q3bsp), but you should probably check surfaceflags&SURF_SKY as well for q2+q3bsp too. */
const int CONTENTBITS_POINTSOLID = CONTENTBIT_SOLID|0x00000002i|CONTENTBIT_BODY; /* Bits that traceline would normally consider solid */
const int CONTENTBITS_BOXSOLID = CONTENTBIT_SOLID|0x00000002i|CONTENTBIT_BODY|CONTENTBIT_PLAYERCLIP; /* Bits that tracebox would normally consider solid */
const int CONTENTBITS_FLUID = CONTENTBIT_WATER|CONTENTBIT_SLIME|CONTENTBIT_LAVA|CONTENTBIT_SKY;
@ -1176,6 +1177,7 @@ const float VF_USERDATA = 221; /* Pointer (and byte size) to an array of vec4s.
const float VF_SKYROOM_CAMERA = 222; /* Controls the camera position of the skyroom (which will be drawn underneath transparent sky surfaces). This should move slightly with the real camera, but not so much that the skycamera enters walls. Requires a skyshader with a blend mode on the first pass (or no passes). */
#endif
#if defined(CSQC) || defined(MENU)
const float VF_PROJECTIONOFFSET = 224; /* vec2 horizontal+vertical offset for the projection matrix, for weird off-centre rendering. */
const float IMGFMT_R8G8B8A8 = 1; /* Typical 32bit rgba pixel format. */
const float IMGFMT_R16G16B16A16F = 2; /* Half-Float pixel format. Requires gl3 support. */
const float IMGFMT_R32G32B32A32F = 3; /* Regular Float pixel format. Requires gl3 support. */
@ -1189,6 +1191,7 @@ const float IMGFMT_A2B10G10R10 = 10; /* Packed 32-bit packed 10-bit colour pixel
const float IMGFMT_R5G6B5 = 11; /* Packed 16-bit colour pixel format. */
const float IMGFMT_R4G4B4A4 = 12; /* Packed 16-bit colour pixel format, with alpha */
const float IMGFMT_R8G8 = 13; /* 16-bit two-channel pixel format. */
const float IMGFMT_R32G32B32F = 14; /* A pixel format that matches QC's vector type. */
#endif
#ifdef CSQC
const float RF_VIEWMODEL = 1; /* Specifies that the entity is a view model, and that its origin is relative to the current view position. These entities are also subject to viewweapon bob. */
@ -1212,6 +1215,11 @@ const float IE_ACCELEROMETER = 4;
const float IE_FOCUS = 5; /* Specifies that input focus was given. parama says mouse focus, paramb says keyboard focus. If either are -1, then it is unchanged. */
const float IE_JOYAXIS = 6; /* Specifies that what value a joystick/controller axis currently specifies. x=axis, y=value. Will be called multiple times, once for each axis of each active controller. */
const float IE_GYROSCOPE = 7;
const float GGDI_GAMEDIR = 0; /* Used with getgamedirinfo to query the mod's public gamedir. There is often other info that cannot be expressed with just a gamedir name, resulting in dupes or other weirdness. */
const float GGDI_DESCRIPTION = 1; /* The human-readable title of the mod. Empty when no data is known (ie: the gamedir just contains some maps). */
const float GGDI_OVERRIDES = 2; /* A list of settings overrides. */
const float GGDI_LOADCOMMAND = 3; /* The console command needed to actually load the mod. */
const float GGDI_ICON = 4; /* The mod's Icon path, ready for drawpic. */
#endif
#ifdef SSQC
const float CLIENTTYPE_DISCONNECTED = 0; /* Return value from clienttype() builtin. This entity is a player slot that is currently empty. */
@ -1311,12 +1319,20 @@ const float SLIST_TEST_NOTSTARTSWITH = 9;
float(string ext) checkextension = #1; /*
Checks if the named extension is supported by the running engine. */
void(string err,...) error = #2;
void(string err,...) objerror = #3;
void(string text,...) print = #4; /* Part of DP_SV_PRINT*/
void(string err,...) error = #2; /*
Fatal error that will trigger a crash-to-console that users will actually notice. */
void(string err,...) objerror = #3; /*
For some reason this has been redefined as non-fatal, and as it won't force the user to look at the console it'll generally be ignored completely so really what's the point? Other than as a convoluted way to remove(self) that is. */
void(string text,...) print = #4; /* Part of DP_SV_PRINT
Hello, world. Shoves junk on the console. Hopefully people will bother to read it, maybe. */
void(string text,...) bprint = #5;
void(float clientnum, string text,...) msprint = #6;
void(string text,...) cprint = #7;
void(string text,...) cprint = #7; /*
Tries to show the given message in the centre of the screen, assuming that its not obscured by menus. Oh hey look, you're calling it in menuqc! */
vector(vector) normalize = #8;
float(vector) vlen = #9;
float(vector) vectoyaw = #10;
@ -1337,11 +1353,19 @@ entity(entity start, .string field, string match) find = #24;
entity(entity start, .__variant field, __variant match) findfloat = #25; /* Part of DP_QC_FINDFLOAT*/
entity(.string field, string match) findchain = #26; /* Part of DP_QC_FINDCHAIN*/
entity(.__variant field, __variant match) findchainfloat = #27; /* Part of DP_QC_FINDCHAINFLOAT*/
string(string file) precache_file = #28;
string(string file) precache_file = #28; /*
Attempts to download the named file from the current server, if it isn't found locally. Not very useful as menuqc is normally meant to work before joining servers too. */
string(string sample) precache_sound = #29;
void() coredump = #30;
void() traceon = #31;
void() traceoff = #32;
void() coredump = #30; /*
Takes a dump, writing the qcvm's state to disk. There are normally easier ways to debug, but I suppose this one still beats print spam. */
void() traceon = #31; /*
Enables single-stepping. Its generally easier to just set a breakpoint. */
void() traceoff = #32; /*
Disables single-stepping. Which sucks if you started said singlestepping outside of qc. */
void(entity) eprint = #33;
float(float) rint = #34;
float(float) floor = #35;
@ -1351,12 +1375,16 @@ float(float) sin = #38; /* Part of DP_QC_SINCOSSQRTPOW*/
float(float) cos = #39; /* Part of DP_QC_SINCOSSQRTPOW*/
float(float) sqrt = #40; /* Part of DP_QC_SINCOSSQRTPOW*/
vector() randomvector = #41;
float(string name, string value, float flags) registercvar = #42; /* Part of DP_REGISTERCVAR*/
float(string name, string value, float flags) registercvar = #42; /* Part of DP_REGISTERCVAR
Creates the cvar if it didn't already exist. This presents issues for setting those cvars via startup configs of course, and autocvars are easier but I suppose they don't get any flags (which are ignored anyway, of course). */
float(float,...) min = #43; /* Part of DP_QC_MINMAXBOUND*/
float(float,...) max = #44; /* Part of DP_QC_MINMAXBOUND*/
float(float min,float value,float max) bound = #45; /* Part of DP_QC_MINMAXBOUND*/
float(float,float) pow = #46; /* Part of DP_QC_SINCOSSQRTPOW*/
void(entity src, entity dst) copyentity = #47; /* Part of DP_QC_COPYENTITY*/
void(entity src, entity dst) copyentity = #47; /* Part of DP_QC_COPYENTITY
Copies all entity fields from one entity into another (forgetting any that were previously set on the destination). */
filestream(string filename, float mode) fopen = #48; /* Part of FRIK_FILE*/
void(filestream fhandle) fclose = #49; /* Part of FRIK_FILE*/
string(filestream fhandle) fgets = #50; /* Part of FRIK_FILE*/
@ -1365,34 +1393,74 @@ float(string) strlen = #52; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
string(string, optional string, optional string, optional string, optional string, optional string, optional string, optional string) strcat = #53; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
string(string s, float start, float length) substring = #54; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
vector(string) stov = #55; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
string(string) strzone = #56; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
void(string) strunzone = #57; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS*/
float(string) tokenize = #58; /* Part of KRIMZON_SV_PARSECLIENTCOMMAND*/
string(float) argv = #59; /* Part of KRIMZON_SV_PARSECLIENTCOMMAND*/
float() isserver = #60;
float() clientcount = #61;
float() clientstate = #62;
void(string map) changelevel = #64;
void(string sample, optional float channel, optional float volume) localsound = #65;
vector() getmousepos = #66;
string(string) strzone = #56; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS
Exists in FTE for compat only, no different from strcat. */
void(string) strunzone = #57; /* Part of FRIK_FILE, FTE_STRINGS, ZQ_QC_STRINGS
Exists in FTE for compat only, does nothing. */
float(string) tokenize = #58; /* Part of KRIMZON_SV_PARSECLIENTCOMMAND
Splits up the given string into its different components (what constitutes a token separator is not well defined and has been hacked about with over the years so have fun with that), returning the number of tokens that were found. Call argv(0 through ret-1) to retrieve each individual token. Take care to not use this recursively. */
string(float) argv = #59; /* Part of KRIMZON_SV_PARSECLIENTCOMMAND
Returns one of the tokens found via tokenize (and equivelent builtins). */
float() isserver = #60; /*
Returns true if the local engine is running a server, and thus cvars and localcmds are shared with said server. */
float() clientcount = #61; /*
Returns the maximum number of players on the server. Useless if its a remote server, so its a kinda useless builtin really. */
float() clientstate = #62; /*
Tells you whether the client is actually connected to anything. 0 for a dedicated server (but dedicated servers don't normally run menuqc anyway), 2 if connecting or connected to a server (but not necessarily spawned+active), 1 for sitting around idle without trying to connect to anything yet. */
void(string map) changelevel = #64; /*
Not really any different from a localcmd, but with proper string escapes. */
void(string sample, optional float channel, optional float volume) localsound = #65; /*
Plays a sound, locally. precaching is optional, but recommended. */
vector() getmousepos = #66; /*
Obsolete. Return values depend upon the current cursor mode. Implement Menu_InputEvent instead, so you can handle deltas as-is or absolutes if that's all the OS can provide. */
float(optional float timetype) gettime = #67;
void(string data) loadfromdata = #68;
void(string data) loadfromfile = #69;
void(string s) loadfromdata = #68; /*
Reads a set of entities from the given string. This string should have the same format as a .ent file or a saved game. Entities will be spawned as required. If you need to see the entities that were created, you should use parseentitydata instead. */
void(string s) loadfromfile = #69; /*
Reads a set of entities from the named file. This file should have the same format as a .ent file or a saved game. Entities will be spawned as required. If you need to see the entities that were created, you should use parseentitydata instead. */
float(float val, float m) mod = #70;
string(string name) cvar_string = #71; /* Part of DP_QC_CVAR_STRING*/
void() crash = #72;
void() stackdump = #73;
string(string name) cvar_string = #71; /* Part of DP_QC_CVAR_STRING
Returns the value of a cvar, as a string. */
void() crash = #72; /*
Demonstrates that no program is bug free. */
void() stackdump = #73; /*
Prints out the QC's stack, for console-based error reports. */
searchhandle(string pattern, float caseinsensitive, float quiet) search_begin = #74; /* Part of DP_QC_FS_SEARCH*/
void(searchhandle handle) search_end = #75; /* Part of DP_QC_FS_SEARCH*/
float(searchhandle handle) search_getsize = #76; /* Part of DP_QC_FS_SEARCH*/
string(searchhandle handle, float num) search_getfilename = #77; /* Part of DP_QC_FS_SEARCH*/
float(entity) etof = #79;
entity(float) ftoe = #80;
float(string) validstring = #81;
float(string str) altstr_count = #82;
string(string str) altstr_prepare = #83;
string(string str, float num) altstr_get = #84;
string(string str, float num, string set) altstr_set = #85;
float(string) validstring = #81; /*
Returns true if str isn't null. In case 'if [not](str)' was configured to test for empty instead of null. */
float(string str) altstr_count = #82; /*
Reports how many single-quotes there were in the string, divided by 2. */
string(string str) altstr_prepare = #83; /*
Adds markup to escape only single-quotes. Does not add any. */
string(string str, float num) altstr_get = #84; /*
Gets the Nth single-quoted token in the input. */
string(string str, float num, string setval) altstr_set = #85; /*
Changes the Nth single-quoted token. The setval argument must not contain any single-quotes (use altstr_prepare to ensure this). */
entity(entity start, .float field, float match) findflags = #87; /* Part of DP_QC_FINDFLAGS*/
entity(.float field, float match) findchainflags = #88; /* Part of DP_QC_FINDCHAINFLAGS*/
void(entity ent, string mname) setmodel = #90; /*
@ -1455,8 +1523,13 @@ entity() spawn = #14; /*
Adds a brand new entity into the world! Hurrah, you're now a parent! */
void(entity e) remove = #15; /*
Destroys the given entity and clears some limited fields (including model, modelindex, solid, classname). Any references to the entity following the call are an error. After two seconds, the entity will be reused, in the interim you can unfortunatly still read its fields to see if the reference is no longer valid. */
Destroys the given entity and clears some limited fields (including model, modelindex, solid, classname). Any references to the entity following the call are an error. After half a second the entity will be reused, in the interim you can unfortunatly still read its fields to see if the reference is no longer valid. */
#endif
void(entity e) removeinstant = #0:removeinstant; /*
Same thing as the regular remove builtin, but bypasses the half-second rule. The entity slot may be reused instantly. Be CERTAIN that you have no lingering references, because if they're followed they will end up poking an entirely different type of entity! So only use this where you're sure its safe. */
#if defined(CSQC) || defined(SSQC)
void(vector v1, vector v2, float flags, entity ent) traceline = #16; /*
Traces a thin line through the world from v1 towards v2.
Will not collide with ent, ent.owner, or any entity who's owner field refers to ent.
@ -1586,7 +1659,7 @@ float(float) fabs = #43; /*
#endif
#ifdef SSQC
vector(entity player, float missilespeed) aim = #44; /*
Returns a direction vector (specifically v_forward on error). This builtin attempts to guess what pitch angle to fire projectiles at for people that don't know about mouselook. Does not affect yaw angles. */
Returns a tweaked copy of the v_forward vector (must be set! ie: makevectors(player.v_angle) ). This is important for keyboard users (that don't want to have to look up/down the whole time), as well as joystick users (who's aim is otherwise annoyingly imprecise). Only the upwards component of the result will differ from the value of v_forward. The builtin will select the enemy closest to the crosshair within the angle of acos(sv_aim). */
#endif
#if defined(CSQC) || defined(SSQC)
@ -1614,13 +1687,27 @@ vector(vector fwd, optional vector up) vectoangles = #51; /*
void(float to, float val) WriteByte = #52; /*
Writes a single byte into a network message buffer. Typically you will find a more correct alternative to writing arbitary data. 'to' should be one of the MSG_* constants. MSG_ONE must have msg_entity set first. */
void(float to, float val) WriteChar = #53;
void(float to, float val) WriteShort = #54;
void(float to, float val) WriteLong = #55;
void(float to, float val) WriteCoord = #56;
void(float to, float val) WriteAngle = #57;
void(float to, string val) WriteString = #58;
void(float to, entity val) WriteEntity = #59;
void(float to, float val) WriteChar = #53; /*
Writes a signed value between -128 and 127. */
void(float to, float val) WriteShort = #54; /*
Writes a signed value between -32768 and 32767. As an exception, values up to 65535 will not trigger warnings (but readshort will read the result as negative!) */
void(float to, float val) WriteLong = #55; /*
Writes a signed 32bit integer. Note that the input argument being of float type limits the resulting integer to a mere 24 consecutive bits of validity. Use WriteInt if you want to write an entire 32bit int without data loss. */
void(float to, float val) WriteCoord = #56; /*
Writes a single value suitable for a map coordinate axis. The precision is not strictly specified but is assumed to be of at least 13.3 fixed-point precision (ie: +/-4k with 1/8th precision). */
void(float to, float val) WriteAngle = #57; /*
Writes a single value suitable for an angle axis. The precision is not strictly specified but is assumed to be 8bit, giving 256 notches instead of the assumed 360 range passed in. */
void(float to, string val) WriteString = #58; /*
Writes a variable-length null terminated string. There are length limits. The codepage is not translated, so be sure that client+server agree on whether utf-8 is being used or not (or just stick to ascii+markup). */
void(float to, entity val) WriteEntity = #59; /*
Writes the index of the specified entity (the network data size is not specified). This can be read clientside using the readentitynum builtin, with caveats. */
#endif
#if defined(CSQC) || defined(SSQC)
float(float angle) sin = #60; /* Part of DP_QC_SINCOSSQRTPOW
@ -1653,7 +1740,7 @@ void(string mapname, optional string newmapstartspot) changelevel = #70; /*
#endif
#if defined(CSQC) || defined(SSQC)
void(string cvarname, string valuetoset) cvar_set = #72; /*
Instantly sets a cvar to the given string value. */
Instantly sets a cvar to the given string value. Warning: the resulting string includes apostrophies surrounding the result. You may wish to use sprintf instead. */
#endif
#ifdef SSQC
@ -1959,6 +2046,11 @@ float(string shadername, optional string defaultshader, ...) shaderforname = #23
If the shader could not be loaded from disk (missing file or ruleset_allow_shaders 0), it will be created from the 'defaultshader' string if specified, or a 'skin shader' default will be used.
defaultshader if not empty should include the outer {} that you would ordinarily find in a shader. */
#endif
#ifdef CSQC
void(string shadername, string replacement, float timeoffset) remapshader = #0:remapshader; /*
All surfaces drawn with the specified shader will instead be drawn using the specified replacement shader. Shaders can be remapped to something else later by using the same source shadername. This is mostly useful for worldmodel surfaces (eg showing which team is currently winning). Entities should generally use setcustomskin or forceshader instead. Remaps will be forgotten on vid_reload, but can be reapplied via CSQC_RendererRestarted. */
#endif
#if defined(CSQC) || defined(SSQC)
void(vector org, optional float count) te_bloodqw = #239; /* Part of FTE_TE_STANDARDEFFECTBUILTINS*/
@ -1972,7 +2064,7 @@ float(vector viewpos, entity entity) checkpvs = #240; /* Part of FTE_QC_CHECKPVS
#ifdef SSQC
entity(string match, optional float matchnum) matchclientname = #241; /* Part of FTE_QC_MATCHCLIENTNAME*/
#endif
void(string destaddress, string content) sendpacket = #242; /* Part of FTE_QC_SENDPACKET
float(string destaddress, string content) sendpacket = #242; /* Part of FTE_QC_SENDPACKET
Sends a UDP packet to the specified destination. Note that the payload will be prefixed with four 255 bytes as a sort of security feature. */
#ifdef CSQC
@ -2100,7 +2192,7 @@ vector(vector v1, vector v2) crossproduct = #0:crossproduct; /* Part of FTE_QC_C
#if defined(CSQC) || defined(SSQC)
float(entity pusher, vector move, vector amove) pushmove = #0:pushmove;
void(float action, optional vector pos, optional float radius, optional float quant, ...) terrain_edit = #278; /* Part of FTE_TERRAIN_MAP
__variant(float action, optional vector pos, optional float radius, optional float quant, ...) terrain_edit = #278; /* Part of FTE_TERRAIN_MAP
Realtime terrain editing. Actions are the TEREDIT_ constants. */
typedef struct
@ -2134,12 +2226,25 @@ int(int faceid, brushface_t *in_faces, int numfaces, vector *points, int maxpoin
int(float modelid, vector *planes, float *dists, int numplanes, int *out_brushes, int *out_faces, int maxresults) brush_findinvolume = #0:brush_findinvolume; /* Part of FTE_RAW_MAP
Allows you to easily obtain a list of brushes+faces within the given bounding region. If out_faces is not null, the same brush might be listed twice. */
typedef struct
{
vector dest;
int linkflags;
} nodeslist_t;
void(entity ent, vector dest, int denylinkflags, void(entity ent, vector dest, int numnodes, nodeslist_t *nodelist) callback) route_calculate = #0:route_calculate; /*
Begin calculating a route. The callback function will be called once the route has finished being calculated. The route must be memfreed once it is no longer needed. The route must be followed in reverse order (ie: the first node that must be reached is at index numnodes-1). If no route is available then the callback will be called with no nodes. */
void(optional entity ent, optional vector neworigin) touchtriggers = #279; /*
Triggers a touch events between self and every SOLID_TRIGGER entity that it is in contact with. This should typically just be the triggers touch functions. Also optionally updates the origin of the moved entity. */
#endif
#ifdef SSQC
void(float buf, float fl) WriteFloat = #280;
void(float buf, float fl) WriteFloat = #280; /*
Writes a full 32bit float without any data conversions at all, for full precision. */
void(float buf, int fl) WriteInt = #0:WriteInt; /*
Equivelent to WriteLong, but doesn't truncate to a float first before converting back to an int. */
#endif
#if defined(CSQC) || defined(SSQC)
float(entity skelent, string dollcmd, float animskel) skel_ragupdate = #281; /*
@ -2260,8 +2365,13 @@ void(vector org, vector texcoords, vector rgb, float alpha) R_PolygonVertex = #3
Specifies a polygon vertex with its various properties. */
void() R_EndPolygon = #308; /*
Ends the current polygon. At least 3 verticies must have been specified. You do not need to call beginpolygon if you wish to draw another polygon with the same shader. */
Ends the current polygon. At least 3 verticies must have been specified. You do not need to call beginpolygon again if you wish to draw another polygon with the same shader. */
#ifdef CSQC
void(float radius, vector texcoordbias) R_EndPolygonRibbon = #0:R_EndPolygonRibbon; /*
Ends the current primitive and duplicates each vertex sideways into a ribbon. The texcoordbias will be added to each duplicated vertex allowing for regular 2d textures. At least 2 verticies must have been specified. You do not need to call beginpolygon again if you wish to draw another polygon with the same shader. */
#endif
#if defined(CSQC) || defined(MENU)
#define getviewprop getproperty
__variant(float property) getproperty = #309; /*
@ -2289,15 +2399,15 @@ float(string name) iscachedpic = #316; /*
Checks to see if the image is currently loaded. Engines might lie, or cache between maps. */
string(string name, optional float trywad) precache_pic = #317; /*
Forces the engine to load the named image. If trywad is specified, the specified name must any lack path and extension. */
Forces the engine to load the named image. If trywad is specified, the specified name must lack any path and extension. */
#endif
#if defined(CSQC) || defined(MENU)
void(string imagename, int width, int height, void *pixeldata, optional int datasize, optional int format) r_uploadimage = #0:r_uploadimage; /* Part of FTE_CSQC_RAWIMAGES
Updates a texture with the specified rgba data. Will be created if needed. If blobsize is specified then the image is decoded (eg .ktx or .dds data) instead of being raw R8G8B8A data. You'll typically want shaderforname to also generate a shader to use the texture. */
Updates a texture with the specified rgba data (uploading it to the gpu). Will be created if needed. If datasize is specified then the image is decoded (eg .ktx or .dds data) instead of being raw R8G8B8A data. You'll typically want shaderforname to also generate a shader to use the texture. */
int*(string filename, __out int width, __out int height) r_readimage = #0:r_readimage; /* Part of FTE_CSQC_RAWIMAGES
Reads and decodes an image from disk, providing raw R8G8B8A pixel data. Should not be used for dds or ktx etc formats. Returns __NULL__ if the image could not be read for any reason. Use memfree to free the data once you're done with it. */
Reads and decodes an image from disk, providing raw R8G8B8A8 pixel data. Should not be used for dds or ktx etc formats. Returns __NULL__ if the image could not be read for any reason. Use memfree to free the data once you're done with it. */
#endif
#ifdef CSQC
@ -2434,8 +2544,15 @@ float(float effective) getcursormode = #0:getcursormode; /*
#endif
#ifdef CSQC
vector() getmousepos = #344; /*
Nasty convoluted DP extension. Typically returns deltas instead of positions. Use CSQC_InputEvent for such things in csqc mods. */
Nasty convoluted DP extension. Typically returns deltas instead of positions. Use CSQC_InputEvent instead for such things in csqc mods. */
#endif
#if defined(CSQC) || defined(MENU)
void(vector newpos) setmousepos = #0:setmousepos; /*
Warps the mouse cursor to the given location. Should normally only be done following setcursormode(TRUE,...). The warp MAY be visible through *_InputEvent, but normally be seen as an IE_ABSMOUSE event anyway. Not all systems support cursor warping (or even cursors), so this is a hint only and you should not depend upon it. */
#endif
#ifdef CSQC
float(float inputsequencenum) getinputstate = #345; /*
Looks up an input frame from the log, setting the input_* globals accordingly.
The sequence number range used for prediction should normally be servercommandframe < sequence <= clientcommandframe.
@ -2531,10 +2648,10 @@ void(string cmdname) registercommand = #352; /*
Console commands that are later used will invoke CSQC_ConsoleCommand. */
#endif
#if defined(CSQC) || defined(SSQC)
float(entity ent) wasfreed = #353; /*
Quickly check to see if the entity is currently free. This function is only valid during the two-second non-reuse window, after that it may give bad results. Try one second to make it more robust. */
#if defined(CSQC) || defined(SSQC)
string(string key) serverkey = #354; /*
Look up a key in the server's public serverinfo string. If the key contains binary data then it will be truncated at the first null. */
@ -2564,22 +2681,43 @@ float(string s) findfont = #356; /* Part of DP_GFX_FONTS
Looks up a named font slot. Matches the actual font name as a last resort. */
float(string fontname, string fontmaps, string sizes, float slot, optional float fix_scale, optional float fix_voffset) loadfont = #357; /* Part of DP_GFX_FONTS
too convoluted for me to even try to explain correct usage. Try drawfont = loadfont("", "cour", "16", -1, 0, 0); to switch to the courier font (optimised for 16 virtual pixels high), if you have the freetype2 library in windows.. */
too convoluted for me to even try to explain correct usage. Try drawfont = loadfont("", "cour", "16", -1, 0, 0); to switch to the courier font (optimised for 16 virtual pixels high) ('cour' requires mscorefonts installed in linux). Additionally you can add "outline=1" as an extra token in the sizes string, to have more readable outlined fonts. */
#endif
#ifdef CSQC
void(string evname, string evargs, ...) sendevent = #359; /*
Invoke CSEv_evname_evargs in ssqc. evargs must be a string of initials refering to the types of the arguments to pass. v=vector, e=entity(.entnum field is sent), f=float, i=int. 6 arguments max - you can get more if you pack your floats into vectors. */
float() readbyte = #360;
float() readchar = #361;
float() readshort = #362;
float() readlong = #363;
float() readcoord = #364;
float() readangle = #365;
string() readstring = #366;
float() readfloat = #367;
float() readentitynum = #368;
float() readbyte = #360; /*
Reads an unsigned 8-bit value, pair with WriteByte. */
float() readchar = #361; /*
Reads a signed 8-bit value. Paired with WriteChar. */
float() readshort = #362; /*
Reads a signed 16-bit value. Paired with WriteShort. */
float() readlong = #363; /*
Reads a signed 32-bit value. Paired with WriteLong or WriteInt. */
float() readcoord = #364; /*
Reads a value matching the unspecified precision written ONLY by WriteCoord. */
float() readangle = #365; /*
Reads a value matching the unspecified precision written ONLY by WriteAngle. */
string() readstring = #366; /*
Reads a null-terminated string. */
float() readfloat = #367; /*
Reads a float without any truncation nor conversions. Data MUST have originally been written with WriteFloat. */
int() readint = #0:readint; /*
Reads a 32bit int without any conversions to float, otherwise interchangable with readlong. */
float() readentitynum = #368; /*
Reads the serverside index of an entity, paired with WriteEntity. There may be nothing else known about the entity yet, so the result typically needs to be saved as-is and re-looked up each frame. This can be done via getentity(NUM, GE_*) for non-csqc ents, or findentity(world,entnum,NUM) - both of which can fail due to latency. */
float(string modelname, float(float isnew) updatecallback, float flags) deltalisten = #371; /*
Specifies a per-modelindex callback to listen for engine-networking entity updates. Such entities are automatically interpolated by the engine (unless flags specifies not to).
The various standard entity fields will be overwritten each frame before the updatecallback function is called. */
@ -2743,6 +2881,7 @@ float(vector position, vector size, vector rgb, float alpha, optional float flag
void(float x, float y, float width, float height) drawsetcliparea = #458;
void(void) drawresetcliparea = #459;
vector(string picname) drawgetimagesize = #460;
void(float width, vector pos1, vector pos2) drawline = #466;
float(vector position, string text, vector scale, vector rgb, float alpha, float flag) drawstring = #467;
float(string text, float usecolours, optional vector fontsize) stringwidth = #468;
void(vector pos, vector sz, string pic, vector srcpos, vector srcsz, vector rgb, float alpha, float flag) drawsubpic = #469;
@ -2941,11 +3080,11 @@ void(string s) loadfromdata = #529; /*
void(string s) loadfromfile = #530; /*
Reads a set of entities from the named file. This file should have the same format as a .ent file or a saved game. Entities will be spawned as required. If you need to see the entities that were created, you should use parseentitydata instead. */
#endif
#ifdef SSQC
void(float pause) setpause = #531; /*
Sets whether the server should or should not be paused. This does not affect auto-paused things like when the console is down. */
#endif
#ifdef SSQC
float(string mname) precache_vwep_model = #532; /* Part of ZQ_VWEP*/
#endif
float(float v, optional float base) log = #532; /* Part of ??MVDSV_BUILTINS
@ -3050,6 +3189,9 @@ void(string key) addwantedhostcachekey = #623; /* Part of FTE_CSQC_SERVERBROWSER
string() getextresponse = #624; /* Part of FTE_CSQC_SERVERBROWSER*/
#endif
string(string dnsname, optional float defport) netaddress_resolve = #625;
#if defined(CSQC) || defined(MENU)
string(float n, float prop) getgamedirinfo = #626;
#endif
string(string fmt, ...) sprintf = #627; /* Part of DP_QC_SPRINTF
'prints' to a formatted temp-string. Mostly acts as in C, however %d assumes floats (fteqcc has arg checking. Use it.).
type conversions: l=arg is an int, h=arg is a float, and will work as a prefix for any float or int representation.
@ -3062,10 +3204,8 @@ string(string fmt, ...) sprintf = #627; /* Part of DP_QC_SPRINTF
float(entity e, float s) getsurfacenumtriangles = #628;
vector(entity e, float s, float n) getsurfacetriangle = #629;
#endif
#ifdef CSQC
float(float key, string bind, optional float bindmap, optional float modifier) setkeybind = #630;
#endif
#if defined(CSQC) || defined(MENU)
float(float key, string bind, optional float bindmap, optional float modifier) setkeybind = #630;
vector() getbindmaps = #631;
float(vector bm) setbindmaps = #632;
#endif
@ -3073,6 +3213,21 @@ string(string digest, string data, ...) digest_hex = #639;
string(string digest, void *data, int length) digest_ptr = #0:digest_ptr; /*
Calculates the digest of a single contiguous block of memory (including nulls) using the specified hash function. */
float(string src, string dst) fcopy = #650; /*
Equivelent to fopen+fread+fwrite+fclose from QC (ie: reads from $gamedir/data/ or $gamedir, but always writes to $gamedir/data/ ) */
float(string src, string dst) frename = #651; /*
Renames the file, returning 0 on success. Both paths are relative to the data/ subdir. */
float(string fname) fremove = #652; /*
Deletes the named file - path is relative to data/ subdir, like fopen's FILE_WRITE. Returns 0 on success. */
float(string fname) fexists = #653; /*
Use whichpack instead. Returns true if it exists inside the default writable path. */
float(string path) rmtree = #654; /*
Dangerous, but sandboxed to data/ */
#if defined(CSQC) || defined(MENU)
#define K_TAB 9
#define K_ENTER 13

View File

@ -1,6 +1,7 @@
FTEMANIFEST 1
GAME valve_dayone
NAME "Half-Life: Day One"
BASEGAME nuclide
BASEGAME logos
BASEGAME valve_dayone

View File

@ -1,6 +1,7 @@
FTEMANIFEST 1
GAME valve_uplink
NAME "Half-Life: Uplink"
BASEGAME nuclide
BASEGAME logos
BASEGAME valve_uplink