]> git.xonotic.org Git - xonotic/xonotic.wiki.git/blob - Functions-and-other-programming-QuakeC-things-in-Xonotic.md
Added missing info in List of MUTATOR functions
[xonotic/xonotic.wiki.git] / Functions-and-other-programming-QuakeC-things-in-Xonotic.md
1 **Note:** The article is written as developer notes to ease developer tasks and save QuakeC function terms here. Some references are taken from `events.qh`.
2
3
4 # MUTATOR functions (from: `qcsrc/server/mutators/events.qh`)
5
6 ### Introduction
7
8 How to use MUTATOR functions:
9
10 **Attention:** to use a hook, first register your mutator using `REGISTER_MUTATOR`, then create your function using `MUTATOR_HOOKFUNCTION`.
11
12
13 - **`REGISTER_MUTATOR`**
14
15 Registers a new `MUTATOR_HOOKFUNCTION`.
16 ```c
17 REGISTER_MUTATOR(new_mutator_name, some_variable);
18 ```
19
20
21 - **`MUTATOR_HOOKFUNCTION`**
22
23 Creates a function and calls `new_mutator_name` (from `REGISTER_MUTATOR`) and one of `#define MUTATOR()` (from `qcsrc/server/mutators/events.qh` main hooks).
24
25 Example:
26 ```c
27 MUTATOR_HOOKFUNCTION(new_mutator_name_or_events.qh_main_hook, PlayerSpawn)
28 {
29     // whatever does
30 }
31 ```
32
33 - **`MUTATOR_CALLHOOK`**
34
35 Calls some `MUTATOR_HOOKFUNCTION`.
36 ```c
37 MUTATOR_CALLHOOK(name_of_MUTATOR_HOOKFUNCTION_or_events.qh_main_hook);
38 ```
39
40 There are different versions and depends how many variables need to be called in a `MUTATOR_HOOKFUNCTION`:
41
42 1 `MUTATOR_HOOKFUNCTION` and 1 variable:
43
44 ```c
45 MUTATOR_CALLHOOK(name_of_MUTATOR_HOOKFUNCTION_or_events.qh_main_hook, some_variable);
46 ```
47
48 1 `MUTATOR_HOOKFUNCTION` and 2 variables:
49
50 ```c
51 MUTATOR_CALLHOOK(name_of_MUTATOR_HOOKFUNCTION_or_events.qh_main_hook, some_variable, some_variable);
52 ```
53
54 1 `MUTATOR_HOOKFUNCTION` and 3 variables:
55
56 ```c
57 MUTATOR_CALLHOOK(name_of_MUTATOR_HOOKFUNCTION_or_events.qh_main_hook, some_variable, some_variable, some_variable);
58 ```
59
60 1 `MUTATOR_HOOKFUNCTION` and multiple variables:
61
62 ```c
63 MUTATOR_CALLHOOK(name_of_MUTATOR_HOOKFUNCTION_or_events.qh_main_hook, some_variable, some_variable, some_variable, some_variable, ...);
64 ```
65
66 <br />
67 <br />
68
69
70 ## List of MUTATOR functions
71
72 You can look the MUTATOR functions in:
73
74 **COMMON**:
75
76 **`qcsrc/common/mutators/events.qh`** :
77 https://timepath.github.io/scratchspace/d4/d95/common_2mutators_2events_8qh.html
78
79
80 **CLIENT**:
81
82 **`qcsrc/client/mutators/events.qh`** :
83 https://timepath.github.io/scratchspace/d8/d0e/client_2mutators_2events_8qh.html
84
85
86 **SERVER**:
87
88 **`qcsrc/server/mutators/events.qh`** :
89 https://timepath.github.io/scratchspace/d6/ddd/server_2mutators_2events_8qh.html
90
91
92 <br />
93 <br />
94
95 AND.... STILL in process