# Basic features This page contains an introduction to the basic features of ETJump. ```{admonition} Under construction :class: seealso This page is a work in progress. The old "Getting Started" page was split into three separate pages without much of new content. This will be filled with more information in the future. ``` --- ## Position saving and loading ETJump offers players to ability to [`save`](client/client_commands.md/#save) and [`load`](client/client_commands.md/#load) their position. It's recommended to bind these keys to conveniently available buttons, such as `mouse4/5` or `q/e` for easy access, as you will be needing them often. By default when you load a saved position, your viewangles are restored to match the angles you had when saving. Some players find this distracting, and it can be turned off by setting the [`etj_loadviewangles`](client/etjump_cvars.md/#etj_loadviewangles) cvar to **0**. ```{tip} Saves are unique per team. A saved position created while playing on Allies cannot be loaded while playing on Axis. ``` ```{tip} There are 3 different saveslots available for each team, which can be accessed by typing `save/load 0/1/2`. By default, slot **0** is used. ``` ```{seealso} * [`backup`](client/client_commands.md/#backup) * [`unload`](client/client_commands.md/#unload) ``` --- ## Speed meter ETJump offers you two different speed meters to see how fast you're going. These are both visible by default. [`etj_drawspeed`](client/etjump_cvars.md/#etj_drawspeed) ![etj_drawspeed](img/etj_drawspeed.gif) [`etj_drawSpeed2`](client/etjump_cvars.md/#etj_drawspeed2) ![etj_drawSpeed2](img/etj_drawSpeed2.gif) Both of the speed meters have several customization options. ```{admonition} etj_drawspeed :class: seealso * [`etj_speedinterval`](client/etjump_cvars.md/#etj_speedinterval) * [`etj_speedunit`](client/etjump_cvars.md/#etj_speedunit) * [`etj_speedXYOnly`](client/etjump_cvars.md/#etj_speedxyonly) ``` ```{admonition} etj_drawSpeed2 :class: seealso * [`etj_speedAlign`](client/etjump_cvars.md/#etj_speedalign) * [`etj_speedAlpha`](client/etjump_cvars.md/#etj_speedalpha) * [`etj_speedColor`](client/etjump_cvars.md/#etj_speedcolor) * [`etj_speedColorUsesAccel`](client/etjump_cvars.md/#etj_speedcolorusesaccel) * [`etj_speedShadow`](client/etjump_cvars.md/#etj_speedshadow) * [`etj_speedSize`](client/etjump_cvars.md/#etj_speedsize) * [`etj_speedX`](client/etjump_cvars.md/#etj_speedx), [`etj_speedY`](client/etjump_cvars.md/#etj_speedy) ``` ```{tip} It's also possible to display your momentary max speed. Refer to [`etj_drawMaxSpeed`](client/etjump_cvars.md/#etj_drawmaxspeed). ``` --- ## Hiding & drawing other players Collision with other players is disabled in ETJump by default. Because of this, it's often desired to hide other players, to prevent them from blocking your view. This is enabled by default, and can be toggled with the [`etj_hide`](client/etjump_cvars.md/#etj_hide) cvar. ```{tip} If you don't want other players to see you even when player hiding is disabled, you can enable the [`etj_hideMe`](client/etjump_cvars.md/#etj_hideme) cvar. ``` It's also possible to draw other players using a simple, single colored shader by enabling the [`etj_drawSimplePlayers`](client/etjump_cvars.md/#etj_drawsimpleplayers) cvar. ![simple players example](img/simple_players_example.png) ```{seealso} * [`etj_hideDistance`](client/etjump_cvars.md/#etj_hidedistance) * [`etj_hideFadeRange`](client/etjump_cvars.md/#etj_hidefaderange) * [`etj_playerOpacity`](client/etjump_cvars.md/#etj_playeropacity) * [`etj_simplePlayersColor`](client/etjump_cvars.md/#etj_simpleplayerscolor) ``` --- ## Pressed keys view You can see what movement keys you are pressing by enabling [`etj_drawKeys`](client/etjump_cvars.md/#etj_drawkeys). This also works while spectating other players, which is a great way for new players to learn some of the more advanced techniques from more experienced players. You can choose one from the following keysets. Keyset | Value :---------------------------------------------------|:--------------- ![`etj_drawKeys 1`](img/etj_drawKeys1.jpg){w=80px} | `etj_drawKeys 1` ![`etj_drawKeys 2`](img/etj_drawKeys2.jpg){w=80px} | `etj_drawKeys 2` ![`etj_drawKeys 3`](img/etj_drawKeys3.jpg){w=80px} | `etj_drawKeys 3` ![`etj_drawKeys 4`](img/etj_drawKeys4.jpg){w=80px} | `etj_drawKeys 4` ![`etj_drawKeys 5`](img/etj_drawKeys5.jpg){w=80px} | `etj_drawKeys 5` ```{seealso} * [`etj_keysColor`](client/etjump_cvars.md/#etj_keyscolor) * [`etj_keysShadow`](client/etjump_cvars.md/#etj_keysshadow) * [`etj_keysSize`](client/etjump_cvars.md/#etj_keyssize) * [`etj_keysX`](client/etjump_cvars.md/#etj_keysx), [`etj_keysY`](client/etjump_cvars.md/#etj_keysy) ``` --- ## Teleporting (to) other players You can teleport to a location of another player on the server by using the [`goto`](client/client_commands.md/#goto) command. Similarly, you can teleport other players to your location using the [`call`](client/client_commands.md/#call-iwant) command. ```{note} By default, you are not allowed to target any players with these commands. A player must consent to being targeted by `goto/call` by using the [`nogoto`](client/client_commands.md/#nogoto) and [`nocall`](client/client_commands.md/#nocall) commands, respectively. ``` --- ## Chat features The chat in ETJump offers a lot of new features. You can add timestamps to chat messages, expand it to show more than **8** messages, change the size and position and move it around freely. The chat also supports a mentioning systen. You can tag players by typing a part of their name inside at signs, e.g. `@name@`. This marks the chat message for the tagged client and plays a notification sound. THe full list of customization available is the following. * [`etj_chatAlpha`](client/etjump_cvars.md/#etj_chatalpha) * [`etj_chatBackgroundAlpha`](client/etjump_cvars.md/#etj_chatbackgroundalpha) * [`etj_chatFlags`](client/etjump_cvars.md/#etj_chatflags) * [`etj_chatLineWidth`](client/etjump_cvars.md/#etj_chatlinewidth) * [`etj_chatPosX`](client/etjump_cvars.md/#etj_chatposx), [`etj_chatPosY`](client/etjump_cvars.md/#etj_chatposy) * [`etj_chatScale`](client/etjump_cvars.md/#etj_chatscale) * [`etj_chatShadow`](client/etjump_cvars.md/#etj_chatshadow) * [`etj_drawMessageTime`](client/etjump_cvars.md/#etj_drawmessagetime) * [`etj_highlight`](client/etjump_cvars.md/#etj_highlight) * [`etj_highlightSound`](client/etjump_cvars.md/#etj_highlightsound) * [`etj_highlightText`](client/etjump_cvars.md/#etj_highlighttext) ### Chat replay ETJump has a chat replay system, which replays the latest global chat messages to clients when they connect to a server, perform a `vid_restart` or when the map is changed. Messages sent prior to your initial connection to server are time-limited by default for privacy reasons - this is controllable by server admins with [`g_chatReplayMaxMessageAge`](server/server_cvars.md/#g_chatreplaymaxmessageage) cvar, which defaults to 5 minutes. Any messages that are sent after your session has started are always replayed to you. ![chat replay example](img/chat_replay_example.png) ```{tip} * You can turn off the replay on client side with [`etj_chatReplay`](client/etjump_cvars.md/#etj_chatreplay) cvar. This means you won't see chat replays, but it does not prevent your messages in appearing in the replays sent to other players. * Server owners can also turn off chat replay entirely on the server with [`g_chatReplay`](server/server_cvars.md/#g_chatreplay) cvar. ``` --- ## Private messages You can send private messages to other players by typing `/m ` in the console. ```{note} Private messages are sent to all players who's name match `` partially. If you want to make sure you're only sending the message to a single client, it's safer to use ``. If playing with ET: Legacy client, you can enable window flashing for incoming private messages if the game is minimized by setting the bit **2** on [`etj_highlight`](client/etjump_cvars.md/#etj_highlight). ``` --- ## Fireteams Fireteams in ETJump are team-agnostic, meaning there are no restrictions on which team the members of the fireteam are allowed to be in. Fireteams provide additional functionality to the gameplay by allowing players to enable features only for the members of the fireteam. ### Rules Fireteam members can set "rules" amongst themselves. The available rules are following: * `noghost` - fireteam members can toggle player collision between the members. * `savelimit` - fireteam members can limit the number of [`save`](client/client_commands.md/#save) commands each member is allowed to use. ### Teamjump mode When teamjump mode is enabled, [`target_ftrelay`](mapping/mapping_entities.md/#target_ftrelay) entity activates targets for each of the fireteam members. ```{seealso} [`fireteam`](client/client_commands.md/#fireteam) ``` --- ## HUD drawing A lot of the standard HUD elements are not important while playing ETJump, and can be hidden with the following cvars. * [`etj_HUD_chargeBar`](client/etjump_cvars.md/#etj_hud_chargebar) * [`etj_HUD_fatigueBar`](client/etjump_cvars.md/#etj_hud_fatiguebar) * [`etj_HUD_fireteam`](client/etjump_cvars.md/#etj_hud_fireteam) * [`etj_HUD_healthBar`](client/etjump_cvars.md/#etj_hud_healthbar) * [`etj_HUD_playerHead`](client/etjump_cvars.md/#etj_hud_playerhead) * [`etj_HUD_playerHealth`](client/etjump_cvars.md/#etj_hud_playerhealth) * [`etj_HUD_popup`](client/etjump_cvars.md/#etj_hud_popup) * [`etj_HUD_weaponIcon`](client/etjump_cvars.md#etj_hud_weaponicon) * [`etj_HUD_xpInfo`](client/etjump_cvars.md/#etj_hud_xpinfo) --- ## Portal gun ETJump includes a portalgun for players to use. It can be found in `weaponbank 9`. Firing the secondary portal is done with `+attack2` instead of `weapalt`. ```{tip} To ease the portalgun usage, you can use [`etj_autoPortalBinds`](client/etjump_cvars.md/#etj_autoportalbinds) cvar. ``` ```{note} Depending on the map and server settings, portalgun might be disabled, as it's quite exploitable on a lot of maps. ``` --- ## Timeruns Some maps feature timeruns. They work exactly as you'd expect - go from start to finish as fast as possible. Timerun records are saved on the server and can be viewed using the [`ranks`](client/client_commands.md/#ranks-records-times-top) command. There is no central, mod-wide database for records - each server has it's own records database. Timeruns might also contain checkpoints. These are optional and are used to simply give better indication to the player how well their run is going. Finishing a timerun does not require hitting checkpoints in a particular order, nor do you have to hit all of them (though these can be enforced by the map via other means such as [trackers](mapping/mapping_entities.md/#target_tracker-and-trigger_tracker)). Timeruns can be viewed as the "competitive" side of ETJump. Because of this, there are several restrictions with them. ```{note} If cheats are enabled, timeruns start normally, but records are not saved. The restrictions below do not apply when cheats are enabled. ``` * Timerun records are not saved when [tracker debugging](server/server_cvars.md/#g_debugtrackers) is enabled. * Timeruns cannot be started if player is noclipping or using godmode, and neither can be used during a timerun. * Timeruns cannot be started if player has used `noclip` or [`setoffset`](client/client_commands.md/#setoffset), set `pmove_fixed 0` or enabled [`fireteam noghost`](client/client_commands.md/#fireteam) without respawning afterwards. * `pmove_fixed 0` and/or `fireteam noghost` might be allowed on some timeruns. * Timeruns cannot be started if player has non-zero roll angles. In addition to the above, a timerun might pose additional restrictions on it via entity spawnflags, see [`target_starttimer`](mapping/mapping_entities.md/#target_starttimer-and-trigger_starttimer) for details. Starting a timerun also performs several actions to the player in order to prevent cheating. ```{note} The actions mentioned below are not performed if cheats are enabled. ``` * Removes explosive weapons and flamethrower. * Removes all projectiles and mines of the activator. * Removes portalgun and clears any existing portals. * Clears all save slots and backups (unless the timeruns specifies `NO_SAVE` spawnflag) that were made during a previous timerun. ### Rankings Timeruns award points for completion. The ranking system, like timerun records, is per-server, no global leaderboards are available. The rankings can be viewed using the [`rankings`](client/client_commands.md/#rankings) command. Points are awarded using the [EESystem](https://docs.google.com/forms/d/e/1FAIpQLSczfUVq5sPQlYcDLw9rY6MxodMBdIiM0HuPdocgksLR3NDtgw/viewform), made for the DeFRaG World Cup (minus the Nascar clause). This system, unlike regular ELO ranking, encourages players to participate in as many timeruns as possible, rather than to focus on getting a perfect run on few runs and "protect" their ranking by not playing unless they are sure they can perform well on a run. ### Seasons The timerun system supports "seasons". These can be managed on a server by admins, using [`!add-season`](server/admin_system.md/#add-season), [`!edit-season`](server/admin_system.md/#edit-season) and [`!delete-season`](server/admin_system.md/#delete-season) commands. Seasons include a start date, and optional end date, and store their own timerun records and rankings. This system can be used to for example host timed competitons. --- ## Custom votes ETJump offers a per-server custom vote system, which allows server owners and priviledged admins to add, edit and delete lists with specific maps on them. These lists can be voted by players via the in-game menu, or via console using `callvote ` command. It's possible to vote for a random map from a list, or call a [Rock The Vote](#rock-the-vote) with only maps from the specified list. ### Setting up custom votes Custom vote lists are defined in a file defined by [`g_customMapVotesFile`](server/server_cvars.md/#g_custommapvotesfile). An example file can be generated by running [`generateCustomvotes`](server/server_commands.md/#generatecustomvotes) command on the server. The custom vote file is a JSON file with the following format: ```json [ { "name" : "list1", "callvote_text" : "My List 1", "maps" : [ "map1", "map2", "map3" ] }, { "name" : "list2", "callvote_text" : "My List 2", "maps" : [ "map1", "map2", "map3" ] } ] ``` If editing the custom vote lists manually, it is necessary to either change map, or use [`readCustomvotes`](server/server_commands.md/#readcustomvotes) command on the server to apply the changes. Editing the lists via admin commands automatically reloads the lists. ```{note} Custom votes perform no validation on the map names, it is up to the server owners/admins to ensure the map names are correct. Any maps that are not on the server will be ignored in the voting. ``` ```{seealso} * [`!add-customvote`](server/admin_system.md/#add-customvote) * [`!delete-customvote`](server/admin_system.md/#delete-customvote) * [`!edit-customvote`](server/admin_system.md/#edit-customvote) ``` --- ## Rock The Vote Players can initiate a Rock The Vote (RTV) on a server, to select a random set of maps to be voted for as the next map. RTV can be called via the in-game menu, or with `callvote rtv` command. When RTV is called, players can open the list of votable maps by pressing `vote yes` binding, and pick a map to vote for from the opened list. ![rtv menu](img/rtv_menu.png) After the vote has concluded, the map with the most votes will be picked. If two or more maps end up with the same amount of votes, the winner is chosen randomly from those maps. ```{tip} * RTV can be disabled on the server with [`vote_allowRtv`](server/server_cvars.md/#vote_allow_rtv) cvar. * The number of maps to pick from can be changed on the server with [`g_rtvMaxMaps`](server/server_cvars.md/#g_rtvmaxmaps) cvar. * RTV minimum vote time is separate from regular votes, and can be configured with [`vote_minRtvDuration`](server/server_cvars.md/#vote_minrtvduration) cvar. ``` ### Auto RTV It's possible to configure RTV to be automatically called by the server at specific intervals. If [`g_autoRtv`](server/server_cvars.md/#g_autortv) is set, the server will automatically call RTV when a map has been running for the specified time. Players can call a vote to adjust the interval, or to turn the feature off completely. ```{tip} * Auto RTV interval does not progress if the server is empty or nobody is playing. Only after a player joins a team for the first time during a map, the timer starts progressing, and keeps going until the interval is reached. * Auto RTV interval voting can be turned off with [`vote_allowAutoRtv`](server/server_cvars.md/#vote_allow_autortv), leaving the setting to be configured only by the server owners. ```