mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-14 03:58:18 +00:00
327f7de09b
5886: Send laser objects as DDNetLaser with type (fixes #5885) r=heinrich5991 a=fokkonaut This pull request will make the server send the correct lasertype directly. The type determining based on EntitiyEx for that got removed on the clientside as it is not needed anymore when using DDNetLaser. Also, I fixed the NetObject to accept -1 (no owner). That is important in order to be able to render the laser at full opacity for everyone. This does not only make the color determining more consistent as before (compared to entities using EntitiyEx and shotgun/laser using DDNetLaser), but it does also make it entirely more mod-friendly. As an example in my mod I dont use EntitiyEx to save objects in the snapshot, as we still dont have an extended snapshot system, and like this we can still have colors without doubling the amount of objects. Also, this will color the dragger beam aswell as the plasma bullets being shot by the freeze/unfreeze/explosive laser gun correctly. This PR should get applied for the next minor update on client & server. ## Checklist - [x] Tested the change ingame - [ ] Provided screenshots if it is a visual change - [ ] Tested in combination with possibly related configuration options - [ ] Written a unit test (especially base/) or added coverage to integration test - [ ] Considered possible null pointers and out of bounds array indexing - [ ] Changed no physics that affect existing maps - [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional) Co-authored-by: fokkonaut <35420825+fokkonaut@users.noreply.github.com>
517 lines
14 KiB
Python
517 lines
14 KiB
Python
# pylint: skip-file
|
|
# See https://github.com/ddnet/ddnet/issues/3507
|
|
|
|
from datatypes import Enum, Flags, NetArray, NetBool, NetEvent, NetIntAny, NetIntRange, NetMessage, NetMessageEx, NetObject, NetObjectEx, NetString, NetStringHalfStrict, NetStringStrict, NetTick
|
|
|
|
Emotes = ["NORMAL", "PAIN", "HAPPY", "SURPRISE", "ANGRY", "BLINK"]
|
|
PlayerFlags = ["PLAYING", "IN_MENU", "CHATTING", "SCOREBOARD", "AIM"]
|
|
GameFlags = ["TEAMS", "FLAGS"]
|
|
GameStateFlags = ["GAMEOVER", "SUDDENDEATH", "PAUSED", "RACETIME"]
|
|
CharacterFlags = ["SOLO", "JETPACK", "COLLISION_DISABLED", "ENDLESS_HOOK", "ENDLESS_JUMP", "SUPER",
|
|
"HAMMER_HIT_DISABLED", "SHOTGUN_HIT_DISABLED", "GRENADE_HIT_DISABLED", "LASER_HIT_DISABLED", "HOOK_HIT_DISABLED",
|
|
"TELEGUN_GUN", "TELEGUN_GRENADE", "TELEGUN_LASER",
|
|
"WEAPON_HAMMER", "WEAPON_GUN", "WEAPON_SHOTGUN", "WEAPON_GRENADE", "WEAPON_LASER", "WEAPON_NINJA",
|
|
"MOVEMENTS_DISABLED", "IN_FREEZE", "PRACTICE_MODE"]
|
|
GameInfoFlags = [
|
|
"TIMESCORE", "GAMETYPE_RACE", "GAMETYPE_FASTCAP", "GAMETYPE_FNG",
|
|
"GAMETYPE_DDRACE", "GAMETYPE_DDNET", "GAMETYPE_BLOCK_WORLDS",
|
|
"GAMETYPE_VANILLA", "GAMETYPE_PLUS", "FLAG_STARTS_RACE", "RACE",
|
|
"UNLIMITED_AMMO", "DDRACE_RECORD_MESSAGE", "RACE_RECORD_MESSAGE",
|
|
"ALLOW_EYE_WHEEL", "ALLOW_HOOK_COLL", "ALLOW_ZOOM", "BUG_DDRACE_GHOST",
|
|
"BUG_DDRACE_INPUT", "BUG_FNG_LASER_RANGE", "BUG_VANILLA_BOUNCE",
|
|
"PREDICT_FNG", "PREDICT_DDRACE", "PREDICT_DDRACE_TILES", "PREDICT_VANILLA",
|
|
"ENTITIES_DDNET", "ENTITIES_DDRACE", "ENTITIES_RACE", "ENTITIES_FNG",
|
|
"ENTITIES_VANILLA", "DONT_MASK_ENTITIES", "ENTITIES_BW"
|
|
# Full, use GameInfoFlags2 for more flags
|
|
]
|
|
GameInfoFlags2 = [
|
|
"ALLOW_X_SKINS", "GAMETYPE_CITY", "GAMETYPE_FDDRACE", "ENTITIES_FDDRACE", "HUD_HEALTH_ARMOR", "HUD_AMMO",
|
|
"HUD_DDRACE", "NO_WEAK_HOOK"
|
|
]
|
|
ExPlayerFlags = ["AFK", "PAUSED", "SPEC"]
|
|
ProjectileFlags = [f"CLIENTID_BIT{i}" for i in range(8)] + [
|
|
"NO_OWNER", "IS_DDNET", "BOUNCE_HORIZONTAL", "BOUNCE_VERTICAL",
|
|
"EXPLOSIVE", "FREEZE",
|
|
]
|
|
|
|
LaserTypes = ["RIFLE", "SHOTGUN", "DOOR", "FREEZE"]
|
|
|
|
Emoticons = ["OOP", "EXCLAMATION", "HEARTS", "DROP", "DOTDOT", "MUSIC", "SORRY", "GHOST", "SUSHI", "SPLATTEE", "DEVILTEE", "ZOMG", "ZZZ", "WTF", "EYES", "QUESTION"]
|
|
|
|
Powerups = ["HEALTH", "ARMOR", "WEAPON", "NINJA", "ARMOR_SHOTGUN", "ARMOR_GRENADE", "ARMOR_NINJA", "ARMOR_LASER"]
|
|
Authed = ["NO", "HELPER", "MOD", "ADMIN"]
|
|
EntityClasses = ["PROJECTILE", "DOOR", "DRAGGER_WEAK", "DRAGGER_NORMAL", "DRAGGER_STRONG", "GUN_NORMAL", "GUN_EXPLOSIVE", "GUN_FREEZE", "GUN_UNFREEZE", "LIGHT", "PICKUP"]
|
|
|
|
RawHeader = '''
|
|
#include <engine/shared/teehistorian_ex.h>
|
|
|
|
enum
|
|
{
|
|
INPUT_STATE_MASK=0x3f
|
|
};
|
|
|
|
enum
|
|
{
|
|
TEAM_SPECTATORS=-1,
|
|
TEAM_RED,
|
|
TEAM_BLUE,
|
|
|
|
FLAG_MISSING=-3,
|
|
FLAG_ATSTAND,
|
|
FLAG_TAKEN,
|
|
|
|
SPEC_FREEVIEW=-1,
|
|
SPEC_FOLLOW=-2,
|
|
};
|
|
|
|
enum
|
|
{
|
|
GAMEINFO_CURVERSION=8,
|
|
};
|
|
'''
|
|
|
|
RawSource = '''
|
|
#include "protocol.h"
|
|
'''
|
|
|
|
Enums = [
|
|
Enum("EMOTE", Emotes),
|
|
Enum("POWERUP", Powerups),
|
|
Enum("EMOTICON", Emoticons),
|
|
Enum("AUTHED", Authed),
|
|
Enum("ENTITYCLASS", EntityClasses),
|
|
Enum("LASERTYPE", LaserTypes),
|
|
]
|
|
|
|
Flags = [
|
|
Flags("PLAYERFLAG", PlayerFlags),
|
|
Flags("GAMEFLAG", GameFlags),
|
|
Flags("GAMESTATEFLAG", GameStateFlags),
|
|
Flags("CHARACTERFLAG", CharacterFlags),
|
|
Flags("GAMEINFOFLAG", GameInfoFlags),
|
|
Flags("GAMEINFOFLAG2", GameInfoFlags2),
|
|
Flags("EXPLAYERFLAG", ExPlayerFlags),
|
|
Flags("PROJECTILEFLAG", ProjectileFlags),
|
|
]
|
|
|
|
Objects = [
|
|
|
|
NetObject("PlayerInput", [
|
|
NetIntAny("m_Direction"),
|
|
NetIntAny("m_TargetX"),
|
|
NetIntAny("m_TargetY"),
|
|
|
|
NetIntAny("m_Jump"),
|
|
NetIntAny("m_Fire"),
|
|
NetIntAny("m_Hook"),
|
|
|
|
NetIntRange("m_PlayerFlags", 0, 256),
|
|
|
|
NetIntAny("m_WantedWeapon"),
|
|
NetIntAny("m_NextWeapon"),
|
|
NetIntAny("m_PrevWeapon"),
|
|
]),
|
|
|
|
NetObject("Projectile", [
|
|
NetIntAny("m_X"),
|
|
NetIntAny("m_Y"),
|
|
NetIntAny("m_VelX"),
|
|
NetIntAny("m_VelY"),
|
|
|
|
NetIntRange("m_Type", 0, 'NUM_WEAPONS-1'),
|
|
NetTick("m_StartTick"),
|
|
]),
|
|
|
|
NetObject("Laser", [
|
|
NetIntAny("m_X"),
|
|
NetIntAny("m_Y"),
|
|
NetIntAny("m_FromX"),
|
|
NetIntAny("m_FromY"),
|
|
|
|
NetTick("m_StartTick"),
|
|
]),
|
|
|
|
NetObject("Pickup", [
|
|
NetIntAny("m_X"),
|
|
NetIntAny("m_Y"),
|
|
|
|
NetIntRange("m_Type", 0, 'max_int'),
|
|
NetIntRange("m_Subtype", 0, 'max_int'),
|
|
]),
|
|
|
|
NetObject("Flag", [
|
|
NetIntAny("m_X"),
|
|
NetIntAny("m_Y"),
|
|
|
|
NetIntRange("m_Team", 'TEAM_RED', 'TEAM_BLUE')
|
|
]),
|
|
|
|
NetObject("GameInfo", [
|
|
NetIntRange("m_GameFlags", 0, 256),
|
|
NetIntRange("m_GameStateFlags", 0, 256),
|
|
NetTick("m_RoundStartTick"),
|
|
NetIntRange("m_WarmupTimer", 'min_int', 'max_int'),
|
|
|
|
NetIntRange("m_ScoreLimit", 0, 'max_int'),
|
|
NetIntRange("m_TimeLimit", 0, 'max_int'),
|
|
|
|
NetIntRange("m_RoundNum", 0, 'max_int'),
|
|
NetIntRange("m_RoundCurrent", 0, 'max_int'),
|
|
]),
|
|
|
|
NetObject("GameData", [
|
|
NetIntAny("m_TeamscoreRed"),
|
|
NetIntAny("m_TeamscoreBlue"),
|
|
|
|
NetIntRange("m_FlagCarrierRed", 'FLAG_MISSING', 'MAX_CLIENTS-1'),
|
|
NetIntRange("m_FlagCarrierBlue", 'FLAG_MISSING', 'MAX_CLIENTS-1'),
|
|
]),
|
|
|
|
NetObject("CharacterCore", [
|
|
NetIntAny("m_Tick"),
|
|
NetIntAny("m_X"),
|
|
NetIntAny("m_Y"),
|
|
NetIntAny("m_VelX"),
|
|
NetIntAny("m_VelY"),
|
|
|
|
NetIntAny("m_Angle"),
|
|
NetIntRange("m_Direction", -1, 1),
|
|
|
|
NetIntRange("m_Jumped", 0, 3),
|
|
NetIntRange("m_HookedPlayer", -1, 'MAX_CLIENTS-1'),
|
|
NetIntRange("m_HookState", -1, 5),
|
|
NetTick("m_HookTick"),
|
|
|
|
NetIntAny("m_HookX"),
|
|
NetIntAny("m_HookY"),
|
|
NetIntAny("m_HookDx"),
|
|
NetIntAny("m_HookDy"),
|
|
]),
|
|
|
|
NetObject("Character:CharacterCore", [
|
|
NetIntRange("m_PlayerFlags", 0, 256),
|
|
NetIntRange("m_Health", 0, 10),
|
|
NetIntRange("m_Armor", 0, 10),
|
|
NetIntRange("m_AmmoCount", 0, 10),
|
|
NetIntRange("m_Weapon", 0, 'NUM_WEAPONS-1'),
|
|
NetIntRange("m_Emote", 0, len(Emotes)),
|
|
NetIntRange("m_AttackTick", 0, 'max_int'),
|
|
]),
|
|
|
|
NetObject("PlayerInfo", [
|
|
NetIntRange("m_Local", 0, 1),
|
|
NetIntRange("m_ClientID", 0, 'MAX_CLIENTS-1'),
|
|
NetIntRange("m_Team", 'TEAM_SPECTATORS', 'TEAM_BLUE'),
|
|
|
|
NetIntAny("m_Score"),
|
|
NetIntAny("m_Latency"),
|
|
]),
|
|
|
|
NetObject("ClientInfo", [
|
|
# 4*4 = 16 characters
|
|
NetIntAny("m_Name0"), NetIntAny("m_Name1"), NetIntAny("m_Name2"),
|
|
NetIntAny("m_Name3"),
|
|
|
|
# 4*3 = 12 characters
|
|
NetIntAny("m_Clan0"), NetIntAny("m_Clan1"), NetIntAny("m_Clan2"),
|
|
|
|
NetIntAny("m_Country"),
|
|
|
|
# 4*6 = 24 characters
|
|
NetIntAny("m_Skin0"), NetIntAny("m_Skin1"), NetIntAny("m_Skin2"),
|
|
NetIntAny("m_Skin3"), NetIntAny("m_Skin4"), NetIntAny("m_Skin5"),
|
|
|
|
NetIntRange("m_UseCustomColor", 0, 1),
|
|
|
|
NetIntAny("m_ColorBody"),
|
|
NetIntAny("m_ColorFeet"),
|
|
]),
|
|
|
|
NetObject("SpectatorInfo", [
|
|
NetIntRange("m_SpectatorID", 'SPEC_FREEVIEW', 'MAX_CLIENTS-1'),
|
|
NetIntAny("m_X"),
|
|
NetIntAny("m_Y"),
|
|
]),
|
|
|
|
NetObjectEx("MyOwnObject", "my-own-object@heinrich5991.de", [
|
|
NetIntAny("m_Test"),
|
|
]),
|
|
|
|
NetObjectEx("DDNetCharacter", "character@netobj.ddnet.tw", [
|
|
NetIntAny("m_Flags", 0),
|
|
NetTick("m_FreezeEnd", 0),
|
|
NetIntRange("m_Jumps", -1, 255, 2),
|
|
NetIntAny("m_TeleCheckpoint", -1),
|
|
NetIntRange("m_StrongWeakID", 0, 'MAX_CLIENTS-1', 0),
|
|
|
|
# New data fields for jump display, freeze bar and ninja bar
|
|
# Default values indicate that these values should not be used
|
|
NetIntRange("m_JumpedTotal", -1, 255, -1),
|
|
NetTick("m_NinjaActivationTick", -1),
|
|
NetTick("m_FreezeStart", -1),
|
|
# New data fields for improved target accuracy
|
|
NetIntAny("m_TargetX", 0),
|
|
NetIntAny("m_TargetY", 0),
|
|
], validate_size=False),
|
|
|
|
NetObjectEx("DDNetPlayer", "player@netobj.ddnet.tw", [
|
|
NetIntAny("m_Flags"),
|
|
NetIntRange("m_AuthLevel", "AUTHED_NO", "AUTHED_ADMIN"),
|
|
]),
|
|
|
|
NetObjectEx("GameInfoEx", "gameinfo@netobj.ddnet.tw", [
|
|
NetIntAny("m_Flags", 0),
|
|
NetIntAny("m_Version", 0),
|
|
NetIntAny("m_Flags2", 0),
|
|
], validate_size=False),
|
|
|
|
# The code assumes that this has the same in-memory representation as
|
|
# the Projectile net object.
|
|
NetObjectEx("DDNetProjectile", "projectile@netobj.ddnet.tw", [
|
|
NetIntAny("m_X"),
|
|
NetIntAny("m_Y"),
|
|
NetIntAny("m_Angle"),
|
|
NetIntAny("m_Data"),
|
|
NetIntRange("m_Type", 0, 'NUM_WEAPONS-1'),
|
|
NetTick("m_StartTick"),
|
|
]),
|
|
|
|
NetObjectEx("DDNetLaser", "laser@netobj.ddnet.tw", [
|
|
NetIntAny("m_ToX"),
|
|
NetIntAny("m_ToY"),
|
|
NetIntAny("m_FromX"),
|
|
NetIntAny("m_FromY"),
|
|
NetTick("m_StartTick"),
|
|
NetIntRange("m_Owner", -1, 'MAX_CLIENTS-1'),
|
|
NetIntAny("m_Type"),
|
|
]),
|
|
|
|
## Events
|
|
|
|
NetEvent("Common", [
|
|
NetIntAny("m_X"),
|
|
NetIntAny("m_Y"),
|
|
]),
|
|
|
|
|
|
NetEvent("Explosion:Common", []),
|
|
NetEvent("Spawn:Common", []),
|
|
NetEvent("HammerHit:Common", []),
|
|
|
|
NetEvent("Death:Common", [
|
|
NetIntRange("m_ClientID", 0, 'MAX_CLIENTS-1'),
|
|
]),
|
|
|
|
NetEvent("SoundGlobal:Common", [ #TODO 0.7: remove me
|
|
NetIntRange("m_SoundID", 0, 'NUM_SOUNDS-1'),
|
|
]),
|
|
|
|
NetEvent("SoundWorld:Common", [
|
|
NetIntRange("m_SoundID", 0, 'NUM_SOUNDS-1'),
|
|
]),
|
|
|
|
NetEvent("DamageInd:Common", [
|
|
NetIntAny("m_Angle"),
|
|
]),
|
|
|
|
NetObjectEx("MyOwnEvent", "my-own-event@heinrich5991.de", [
|
|
NetIntAny("m_Test"),
|
|
]),
|
|
|
|
NetObjectEx("SpecChar", "spec-char@netobj.ddnet.tw", [
|
|
NetIntAny("m_X"),
|
|
NetIntAny("m_Y"),
|
|
]),
|
|
|
|
# Switch state for a player team.
|
|
NetObjectEx("SwitchState", "switch-state@netobj.ddnet.tw", [
|
|
NetIntAny("m_HighestSwitchNumber", 0),
|
|
# 256 switches / 32 bits = 8 int32
|
|
NetArray(NetIntAny("m_aStatus", 0), 8),
|
|
# send the endtick of up to 4 timed switchers
|
|
NetArray(NetIntAny("m_aSwitchNumbers", 0), 4),
|
|
NetArray(NetIntAny("m_aEndTicks", 0), 4),
|
|
], validate_size=False),
|
|
|
|
# Switch info for map items
|
|
NetObjectEx("EntityEx", "entity-ex@netobj.ddnet.tw", [
|
|
NetIntAny("m_SwitchNumber"),
|
|
NetIntAny("m_Layer"),
|
|
NetIntAny("m_EntityClass"),
|
|
]),
|
|
]
|
|
|
|
Messages = [
|
|
|
|
### Server messages
|
|
NetMessage("Sv_Motd", [
|
|
NetString("m_pMessage"),
|
|
]),
|
|
|
|
NetMessage("Sv_Broadcast", [
|
|
NetString("m_pMessage"),
|
|
]),
|
|
|
|
NetMessage("Sv_Chat", [
|
|
NetIntRange("m_Team", -2, 3),
|
|
NetIntRange("m_ClientID", -1, 'MAX_CLIENTS-1'),
|
|
NetStringHalfStrict("m_pMessage"),
|
|
]),
|
|
|
|
NetMessage("Sv_KillMsg", [
|
|
NetIntRange("m_Killer", 0, 'MAX_CLIENTS-1'),
|
|
NetIntRange("m_Victim", 0, 'MAX_CLIENTS-1'),
|
|
NetIntRange("m_Weapon", -3, 'NUM_WEAPONS-1'),
|
|
NetIntAny("m_ModeSpecial"),
|
|
]),
|
|
|
|
NetMessage("Sv_SoundGlobal", [
|
|
NetIntRange("m_SoundID", 0, 'NUM_SOUNDS-1'),
|
|
]),
|
|
|
|
NetMessage("Sv_TuneParams", []),
|
|
NetMessage("Sv_ExtraProjectile", []),
|
|
NetMessage("Sv_ReadyToEnter", []),
|
|
|
|
NetMessage("Sv_WeaponPickup", [
|
|
NetIntRange("m_Weapon", 0, 'NUM_WEAPONS-1'),
|
|
]),
|
|
|
|
NetMessage("Sv_Emoticon", [
|
|
NetIntRange("m_ClientID", 0, 'MAX_CLIENTS-1'),
|
|
NetIntRange("m_Emoticon", 0, 'NUM_EMOTICONS-1'),
|
|
]),
|
|
|
|
NetMessage("Sv_VoteClearOptions", [
|
|
]),
|
|
|
|
NetMessage("Sv_VoteOptionListAdd", [
|
|
NetIntRange("m_NumOptions", 1, 15),
|
|
NetStringStrict("m_pDescription0"), NetStringStrict("m_pDescription1"), NetStringStrict("m_pDescription2"),
|
|
NetStringStrict("m_pDescription3"), NetStringStrict("m_pDescription4"), NetStringStrict("m_pDescription5"),
|
|
NetStringStrict("m_pDescription6"), NetStringStrict("m_pDescription7"), NetStringStrict("m_pDescription8"),
|
|
NetStringStrict("m_pDescription9"), NetStringStrict("m_pDescription10"), NetStringStrict("m_pDescription11"),
|
|
NetStringStrict("m_pDescription12"), NetStringStrict("m_pDescription13"), NetStringStrict("m_pDescription14"),
|
|
]),
|
|
|
|
NetMessage("Sv_VoteOptionAdd", [
|
|
NetStringStrict("m_pDescription"),
|
|
]),
|
|
|
|
NetMessage("Sv_VoteOptionRemove", [
|
|
NetStringStrict("m_pDescription"),
|
|
]),
|
|
|
|
NetMessage("Sv_VoteSet", [
|
|
NetIntRange("m_Timeout", 0, 60),
|
|
NetStringStrict("m_pDescription"),
|
|
NetStringStrict("m_pReason"),
|
|
]),
|
|
|
|
NetMessage("Sv_VoteStatus", [
|
|
NetIntRange("m_Yes", 0, 'MAX_CLIENTS'),
|
|
NetIntRange("m_No", 0, 'MAX_CLIENTS'),
|
|
NetIntRange("m_Pass", 0, 'MAX_CLIENTS'),
|
|
NetIntRange("m_Total", 0, 'MAX_CLIENTS'),
|
|
]),
|
|
|
|
### Client messages
|
|
NetMessage("Cl_Say", [
|
|
NetBool("m_Team"),
|
|
NetStringHalfStrict("m_pMessage"),
|
|
], teehistorian=False),
|
|
|
|
NetMessage("Cl_SetTeam", [
|
|
NetIntRange("m_Team", 'TEAM_SPECTATORS', 'TEAM_BLUE'),
|
|
]),
|
|
|
|
NetMessage("Cl_SetSpectatorMode", [
|
|
NetIntRange("m_SpectatorID", 'SPEC_FREEVIEW', 'MAX_CLIENTS-1'),
|
|
]),
|
|
|
|
NetMessage("Cl_StartInfo", [
|
|
NetStringStrict("m_pName"),
|
|
NetStringStrict("m_pClan"),
|
|
NetIntAny("m_Country"),
|
|
NetStringStrict("m_pSkin"),
|
|
NetBool("m_UseCustomColor"),
|
|
NetIntAny("m_ColorBody"),
|
|
NetIntAny("m_ColorFeet"),
|
|
]),
|
|
|
|
NetMessage("Cl_ChangeInfo", [
|
|
NetStringStrict("m_pName"),
|
|
NetStringStrict("m_pClan"),
|
|
NetIntAny("m_Country"),
|
|
NetStringStrict("m_pSkin"),
|
|
NetBool("m_UseCustomColor"),
|
|
NetIntAny("m_ColorBody"),
|
|
NetIntAny("m_ColorFeet"),
|
|
]),
|
|
|
|
NetMessage("Cl_Kill", []),
|
|
|
|
NetMessage("Cl_Emoticon", [
|
|
NetIntRange("m_Emoticon", 0, 'NUM_EMOTICONS-1'),
|
|
]),
|
|
|
|
NetMessage("Cl_Vote", [
|
|
NetIntRange("m_Vote", -1, 1),
|
|
], teehistorian=False),
|
|
|
|
NetMessage("Cl_CallVote", [
|
|
NetStringStrict("m_pType"),
|
|
NetStringStrict("m_pValue"),
|
|
NetStringStrict("m_pReason"),
|
|
], teehistorian=False),
|
|
|
|
NetMessage("Cl_IsDDNetLegacy", []),
|
|
|
|
NetMessage("Sv_DDRaceTimeLegacy", [
|
|
NetIntAny("m_Time"),
|
|
NetIntAny("m_Check"),
|
|
NetIntRange("m_Finish", 0, 1),
|
|
]),
|
|
|
|
NetMessage("Sv_RecordLegacy", [
|
|
NetIntAny("m_ServerTimeBest"),
|
|
NetIntAny("m_PlayerTimeBest"),
|
|
]),
|
|
|
|
NetMessage("Unused", []),
|
|
|
|
NetMessage("Sv_TeamsStateLegacy", []),
|
|
|
|
# deprecated, use showothers@netmsg.ddnet.tw instead
|
|
NetMessage("Cl_ShowOthersLegacy", [
|
|
NetBool("m_Show"),
|
|
]),
|
|
# Can't add any NetMessages here!
|
|
|
|
NetMessageEx("Sv_MyOwnMessage", "my-own-message@heinrich5991.de", [
|
|
NetIntAny("m_Test"),
|
|
]),
|
|
|
|
NetMessageEx("Cl_ShowDistance", "show-distance@netmsg.ddnet.tw", [
|
|
NetIntAny("m_X"),
|
|
NetIntAny("m_Y"),
|
|
]),
|
|
|
|
NetMessageEx("Cl_ShowOthers", "showothers@netmsg.ddnet.tw", [
|
|
NetIntRange("m_Show", 0, 2),
|
|
]),
|
|
|
|
NetMessageEx("Sv_TeamsState", "teamsstate@netmsg.ddnet.tw", []),
|
|
|
|
NetMessageEx("Sv_DDRaceTime", "ddrace-time@netmsg.ddnet.tw", [
|
|
NetIntAny("m_Time"),
|
|
NetIntAny("m_Check"),
|
|
NetIntRange("m_Finish", 0, 1),
|
|
]),
|
|
|
|
NetMessageEx("Sv_Record", "record@netmsg.ddnet.tw", [
|
|
NetIntAny("m_ServerTimeBest"),
|
|
NetIntAny("m_PlayerTimeBest"),
|
|
]),
|
|
]
|