]> git.xonotic.org Git - xonotic/xonotic.wiki.git/blobdiff - Programming-QuakeC-stuff-in-Xonotic.md
Update Comms Rules [draft]
[xonotic/xonotic.wiki.git] / Programming-QuakeC-stuff-in-Xonotic.md
index e9b47976882933d1d78273c0fe0cce625b25b977..ef1c53085dbeef0b1e0b8a13ebdac005d30008c9 100644 (file)
@@ -1,7 +1,9 @@
-**Note:** The article is written as developer notes to ease developer tasks and save QuakeC function terms here.
+**Note:** The article is written as developer notes to ease developer tasks and save QuakeC terms here.
 
 # CSQC, MENUQC, SVQC and GAMEQC blocks
 
+Xonotic uses the ***csprogs.dat*** from the server you're playing on, as it must match the server's ***progs.dat*** code (whereas your ***menu.dat*** is always your local copy).
+
 Menu and HUD code are actually separated as they run in 2 distinct programs: ***csprogs.dat*** and ***menu.dat***
 
 Server program is ***progs.dat***
@@ -14,9 +16,19 @@ Server program is ***progs.dat***
 
 - Also, code inside a **`#ifdef GAMEQC`** block is part of both client (not menu) and server code.
 
-Example: `g_balance_grapplehook_speed_fly` is clearly a server cvar (**g_*** cvars are server cvars), so you CAN'T declare it within a `#ifdef CSQC` block. This cvar should be declared inside a **`#ifdef SVQC`**.
+### A bit of explanation about the use of each type of cvars
+
+- **g_*** cvars:
+
+Example: `g_balance_grapplehook_speed_fly` is clearly a server or game cvar (**g_*** cvars are server and game cvars), so you CAN'T declare it within a `#ifdef CSQC` block. This type of cvar only can be declared inside a **`#ifdef SVQC`** or **`#ifdef GAMEQC`** block (if possible).
+
+- **sv_*** cvars:
+
+Example: `sv_campcheck` is clearly a server cvar (**sv_*** cvars are server cvars), only can be declared inside a **`#ifdef SVQC`** block.
+
+- **cl_*** cvars:
 
-Other example: `cl_chatsound` is clearly a client cvar (**cl_*** cvars are client cvars), only can be declared in a **`#ifdef CSQC`** block.
+Example: `cl_chatsound` is clearly a client cvar (**cl_*** cvars are client cvars), only can be declared inside a **`#ifdef CSQC`** block.
 
 
 <br />