... | ... | @@ -170,7 +170,7 @@ void W_SetupProjVelocity_Explicit( |
|
|
|
|
|
In the moment when player shots the weapon, weapon flashes.
|
|
|
|
|
|
**Note:** write **`#ifdef SVQC`** at the start of using this function, and write with **`#endif`** after declared the function (only can do this if the code which needs execute can do this, although maybe you need more functions/things in the code inside this).
|
|
|
**Note:** write **`#ifdef SVQC`** at the start of using this function, and write with **`#endif`** after declared the function (only can do this if the code needs to be executed, although maybe you need more functions/things in the code inside this).
|
|
|
|
|
|
```c
|
|
|
void W_MuzzleFlash(Weapon thiswep, entity actor, .entity weaponentity, vector shotorg, vector shotdir);
|
... | ... | @@ -194,4 +194,102 @@ More info inside the code where you can draw/print HUD and menu: |
|
|
|
|
|
<br />
|
|
|
|
|
|
AND... STILL more things in process |
|
|
\ No newline at end of file |
|
|
# Gamemodes
|
|
|
|
|
|
Keep in mind that to develop a gamemode, you need a map having enabled inside its *name_of_map.mapinfo* file this: `gametype shortcut_of_gamemode`. (example: `gametype tdm` (tdm is Team Deathmatch). After modifying the map file, compress the map contents, save as `.zip` and rename the extension to `.pk3`
|
|
|
|
|
|
Making gamemodes doesn't seem easy. There's a little explanation of what does each element.
|
|
|
|
|
|
### Generated files for gamemodes:
|
|
|
|
|
|
[`qcsrc/common/gamemodes/gamemode/_mod.inc`](https://timepath.github.io/scratchspace/d9/d67/common_2gamemodes_2__mod_8inc_source.html) generated file where the includes of each gamemode are stored.
|
|
|
|
|
|
[`qcsrc/common/gamemodes/gamemode/_mod.qh`](https://timepath.github.io/scratchspace/d7/d0b/common_2gamemodes_2__mod_8qh_source.html) generated file where the includes of each gamemode are stored.
|
|
|
|
|
|
<br />
|
|
|
|
|
|
### Gamemode files:
|
|
|
|
|
|
- Server type:
|
|
|
|
|
|
`qcsrc/common/gamemodes/gamemode/name_of_gamemode/sv_name_of_gamemode.qc`
|
|
|
|
|
|
`qcsrc/common/gamemodes/gamemode/name_of_gamemode/sv_name_of_gamemode.qh`
|
|
|
|
|
|
<br />
|
|
|
|
|
|
- Client type:
|
|
|
|
|
|
`qcsrc/common/gamemodes/gamemode/name_of_gamemode/cl_name_of_gamemode.qc`
|
|
|
|
|
|
`qcsrc/common/gamemodes/gamemode/name_of_gamemode/cl_name_of_gamemode.qh`
|
|
|
|
|
|
<br />
|
|
|
|
|
|
- Base:
|
|
|
|
|
|
`qcsrc/common/gamemodes/gamemode/name_of_gamemode/name_of_gamemode.qc`
|
|
|
|
|
|
`qcsrc/common/gamemodes/gamemode/name_of_gamemode/name_of_gamemode.qh`
|
|
|
|
|
|
`qcsrc/common/gamemodes/gamemode/name_of_gamemode/_mod.inc` generated file where the includes of a gamemode is generated.
|
|
|
|
|
|
`qcsrc/common/gamemodes/gamemode/name_of_gamemode/_mod.qh` generated file where the includes of a gamemode is generated.
|
|
|
|
|
|
<br />
|
|
|
|
|
|
### Optional things (if necessary):
|
|
|
|
|
|
[`qcsrc/common/ent_cs.qc`](https://timepath.github.io/scratchspace/d5/dff/ent__cs_8qc_source.html) (if an `ENTCS_PROP()` is needed for a gamemode)
|
|
|
|
|
|
[`qcsrc/common/mutators/mutator/waypoints/all.inc`](https://timepath.github.io/scratchspace/d2/d2b/mutators_2mutator_2waypoints_2all_8inc_source.html) where `REGISTER_WAYPOINT` can interact the situation of waypoints.
|
|
|
|
|
|
<br />
|
|
|
|
|
|
### Notifications, applying BADCVAR and displaying gamemode in the menu:
|
|
|
|
|
|
[`qcsrc/common/notifications/all.inc`](https://timepath.github.io/scratchspace/d9/d09/notifications_2all_8inc_source.html) where notifications output appears in the scenario.
|
|
|
|
|
|
[`qcsrc/common/notifications/all.qh`](https://timepath.github.io/scratchspace/dc/d8f/notifications_2all_8qh_source.html) where `CASE(CPID, NAME_OF_ELEMENT)` is needed for a gamemode.
|
|
|
|
|
|
[`qcsrc/menu/xonotic/util.qc`](https://timepath.github.io/scratchspace/df/d9b/menu_2xonotic_2util_8qc_source.html) where gamemodes can appear in the main menu (Multiplayer > Create). `GAMETYPE(MAPINFO_TYPE_NAME_OF_GAMEMODE) \`
|
|
|
|
|
|
[`qcsrc/server/world.qc`](https://timepath.github.io/scratchspace/dd/dbe/world_8qc_source.html) where `BADCVAR(g_*)` for each gamemode are stored.
|
|
|
|
|
|
<br />
|
|
|
|
|
|
### Configuration files where gamemodes interact:
|
|
|
|
|
|
`xonotic-data.pk3dir/gamemodes-server.cfg` where server gamestart hooks, gametype vote hooks, respawn delay/waves/weapon_stay cvars and gamemode game/server cvars connect.
|
|
|
|
|
|
`xonotic-data.pk3dir/gamemodes-client.cfg` where client gamestart hooks cvars connect.
|
|
|
|
|
|
`xonotic-data.pk3dir/notifications.cfg` where notifications need to be activated in the scenario.
|
|
|
|
|
|
<br />
|
|
|
|
|
|
### Menu and HUD icons:
|
|
|
|
|
|
`gfx/menu/luma/gametype_nameshortcut.tga`
|
|
|
|
|
|
`gfx/menu/luminos/gametype_nameshortcut.tga`
|
|
|
|
|
|
`gfx/menu/wickedx/gametype_nameshortcut.tga`
|
|
|
|
|
|
`gfx/menu/xaw/gametype_nameshortcut.tga`
|
|
|
|
|
|
(Example: `gametype_tdm.tga` is an icon of Team Deathmatch)
|
|
|
|
|
|
<br />
|
|
|
|
|
|
## Samples
|
|
|
|
|
|
There are good examples of the commits of the people who developed gamemodes:
|
|
|
|
|
|
- [**Lyberta's GunGame gametype**](https://gitlab.com/xonotic/xonotic-data.pk3dir/-/merge_requests/482/diffs) (Taken from: https://forums.xonotic.org/showthread.php?tid=7314)
|
|
|
|
|
|
- [**How Survival gamemode was developed (first commit)**](https://gitlab.com/xonotic/xonotic-data.pk3dir/-/commit/8f61a40877542ac94baa74c5ed653c77b77bd855) (It's recommended look the final product in this [**repository**](https://gitlab.com/xonotic/xonotic-data.pk3dir/-/tree/Mario/survival))
|
|
|
[**SMB modpack repository**](https://github.com/MarioSMB/modpack/tree/master/mod/common/gamemodes/survival) has added Survival gamemode and others.
|
|
|
|
|
|
|
|
|
<br /> |
|
|
\ No newline at end of file |