1#ifndef GENERATED_PROTOCOL_H
2#define GENERATED_PROTOCOL_H
3class CUnpacker;
4#include <engine/message.h>
5
6#include <engine/shared/teehistorian_ex.h>
7
8enum
9{
10 INPUT_STATE_MASK=0x3f
11};
12
13enum
14{
15 FLAG_MISSING=-3,
16 FLAG_ATSTAND,
17 FLAG_TAKEN,
18};
19
20enum
21{
22 SPEC_FREEVIEW=-1,
23 SPEC_FOLLOW=-2,
24};
25
26enum
27{
28 GAMEINFO_CURVERSION=10,
29};
30
31enum
32{
33 EMOTE_NORMAL,
34 EMOTE_PAIN,
35 EMOTE_HAPPY,
36 EMOTE_SURPRISE,
37 EMOTE_ANGRY,
38 EMOTE_BLINK,
39 NUM_EMOTES
40};
41
42enum
43{
44 POWERUP_HEALTH,
45 POWERUP_ARMOR,
46 POWERUP_WEAPON,
47 POWERUP_NINJA,
48 POWERUP_ARMOR_SHOTGUN,
49 POWERUP_ARMOR_GRENADE,
50 POWERUP_ARMOR_NINJA,
51 POWERUP_ARMOR_LASER,
52 NUM_POWERUPS
53};
54
55enum
56{
57 EMOTICON_OOP,
58 EMOTICON_EXCLAMATION,
59 EMOTICON_HEARTS,
60 EMOTICON_DROP,
61 EMOTICON_DOTDOT,
62 EMOTICON_MUSIC,
63 EMOTICON_SORRY,
64 EMOTICON_GHOST,
65 EMOTICON_SUSHI,
66 EMOTICON_SPLATTEE,
67 EMOTICON_DEVILTEE,
68 EMOTICON_ZOMG,
69 EMOTICON_ZZZ,
70 EMOTICON_WTF,
71 EMOTICON_EYES,
72 EMOTICON_QUESTION,
73 NUM_EMOTICONS
74};
75
76enum
77{
78 AUTHED_NO,
79 AUTHED_HELPER,
80 AUTHED_MOD,
81 AUTHED_ADMIN,
82 NUM_AUTHEDS
83};
84
85enum
86{
87 ENTITYCLASS_PROJECTILE,
88 ENTITYCLASS_DOOR,
89 ENTITYCLASS_DRAGGER_WEAK,
90 ENTITYCLASS_DRAGGER_NORMAL,
91 ENTITYCLASS_DRAGGER_STRONG,
92 ENTITYCLASS_GUN_NORMAL,
93 ENTITYCLASS_GUN_EXPLOSIVE,
94 ENTITYCLASS_GUN_FREEZE,
95 ENTITYCLASS_GUN_UNFREEZE,
96 ENTITYCLASS_LIGHT,
97 ENTITYCLASS_PICKUP,
98 NUM_ENTITYCLASSS
99};
100
101enum
102{
103 LASERTYPE_RIFLE,
104 LASERTYPE_SHOTGUN,
105 LASERTYPE_DOOR,
106 LASERTYPE_FREEZE,
107 LASERTYPE_DRAGGER,
108 LASERTYPE_GUN,
109 LASERTYPE_PLASMA,
110 NUM_LASERTYPES
111};
112
113enum
114{
115 LASERDRAGGERTYPE_WEAK,
116 LASERDRAGGERTYPE_WEAK_NW,
117 LASERDRAGGERTYPE_NORMAL,
118 LASERDRAGGERTYPE_NORMAL_NW,
119 LASERDRAGGERTYPE_STRONG,
120 LASERDRAGGERTYPE_STRONG_NW,
121 NUM_LASERDRAGGERTYPES
122};
123
124enum
125{
126 LASERGUNTYPE_UNFREEZE,
127 LASERGUNTYPE_EXPLOSIVE,
128 LASERGUNTYPE_FREEZE,
129 LASERGUNTYPE_EXPFREEZE,
130 NUM_LASERGUNTYPES
131};
132
133enum
134{
135 TEAM_ALL = -2,
136 TEAM_SPECTATORS,
137 TEAM_RED,
138 TEAM_BLUE,
139 TEAM_WHISPER_SEND,
140 TEAM_WHISPER_RECV,
141 NUM_TEAMS
142};
143
144enum
145{
146 SAVESTATE_PENDING,
147 SAVESTATE_DONE,
148 SAVESTATE_FALLBACKFILE,
149 SAVESTATE_WARNING,
150 SAVESTATE_ERROR,
151 NUM_SAVESTATES
152};
153
154enum
155{
156 PLAYERFLAG_PLAYING = 1<<0,
157 PLAYERFLAG_IN_MENU = 1<<1,
158 PLAYERFLAG_CHATTING = 1<<2,
159 PLAYERFLAG_SCOREBOARD = 1<<3,
160 PLAYERFLAG_AIM = 1<<4,
161 PLAYERFLAG_SPEC_CAM = 1<<5,
162 PLAYERFLAG_INPUT_ABSOLUTE = 1<<6,
163 PLAYERFLAG_INPUT_MANUAL = 1<<7,
164};
165
166enum
167{
168 GAMEFLAG_TEAMS = 1<<0,
169 GAMEFLAG_FLAGS = 1<<1,
170};
171
172enum
173{
174 GAMESTATEFLAG_GAMEOVER = 1<<0,
175 GAMESTATEFLAG_SUDDENDEATH = 1<<1,
176 GAMESTATEFLAG_PAUSED = 1<<2,
177 GAMESTATEFLAG_RACETIME = 1<<3,
178};
179
180enum
181{
182 CHARACTERFLAG_SOLO = 1<<0,
183 CHARACTERFLAG_JETPACK = 1<<1,
184 CHARACTERFLAG_COLLISION_DISABLED = 1<<2,
185 CHARACTERFLAG_ENDLESS_HOOK = 1<<3,
186 CHARACTERFLAG_ENDLESS_JUMP = 1<<4,
187 CHARACTERFLAG_SUPER = 1<<5,
188 CHARACTERFLAG_HAMMER_HIT_DISABLED = 1<<6,
189 CHARACTERFLAG_SHOTGUN_HIT_DISABLED = 1<<7,
190 CHARACTERFLAG_GRENADE_HIT_DISABLED = 1<<8,
191 CHARACTERFLAG_LASER_HIT_DISABLED = 1<<9,
192 CHARACTERFLAG_HOOK_HIT_DISABLED = 1<<10,
193 CHARACTERFLAG_TELEGUN_GUN = 1<<11,
194 CHARACTERFLAG_TELEGUN_GRENADE = 1<<12,
195 CHARACTERFLAG_TELEGUN_LASER = 1<<13,
196 CHARACTERFLAG_WEAPON_HAMMER = 1<<14,
197 CHARACTERFLAG_WEAPON_GUN = 1<<15,
198 CHARACTERFLAG_WEAPON_SHOTGUN = 1<<16,
199 CHARACTERFLAG_WEAPON_GRENADE = 1<<17,
200 CHARACTERFLAG_WEAPON_LASER = 1<<18,
201 CHARACTERFLAG_WEAPON_NINJA = 1<<19,
202 CHARACTERFLAG_MOVEMENTS_DISABLED = 1<<20,
203 CHARACTERFLAG_IN_FREEZE = 1<<21,
204 CHARACTERFLAG_PRACTICE_MODE = 1<<22,
205 CHARACTERFLAG_LOCK_MODE = 1<<23,
206 CHARACTERFLAG_TEAM0_MODE = 1<<24,
207 CHARACTERFLAG_INVINCIBLE = 1<<25,
208};
209
210enum
211{
212 GAMEINFOFLAG_TIMESCORE = 1<<0,
213 GAMEINFOFLAG_GAMETYPE_RACE = 1<<1,
214 GAMEINFOFLAG_GAMETYPE_FASTCAP = 1<<2,
215 GAMEINFOFLAG_GAMETYPE_FNG = 1<<3,
216 GAMEINFOFLAG_GAMETYPE_DDRACE = 1<<4,
217 GAMEINFOFLAG_GAMETYPE_DDNET = 1<<5,
218 GAMEINFOFLAG_GAMETYPE_BLOCK_WORLDS = 1<<6,
219 GAMEINFOFLAG_GAMETYPE_VANILLA = 1<<7,
220 GAMEINFOFLAG_GAMETYPE_PLUS = 1<<8,
221 GAMEINFOFLAG_FLAG_STARTS_RACE = 1<<9,
222 GAMEINFOFLAG_RACE = 1<<10,
223 GAMEINFOFLAG_UNLIMITED_AMMO = 1<<11,
224 GAMEINFOFLAG_DDRACE_RECORD_MESSAGE = 1<<12,
225 GAMEINFOFLAG_RACE_RECORD_MESSAGE = 1<<13,
226 GAMEINFOFLAG_ALLOW_EYE_WHEEL = 1<<14,
227 GAMEINFOFLAG_ALLOW_HOOK_COLL = 1<<15,
228 GAMEINFOFLAG_ALLOW_ZOOM = 1<<16,
229 GAMEINFOFLAG_BUG_DDRACE_GHOST = 1<<17,
230 GAMEINFOFLAG_BUG_DDRACE_INPUT = 1<<18,
231 GAMEINFOFLAG_BUG_FNG_LASER_RANGE = 1<<19,
232 GAMEINFOFLAG_BUG_VANILLA_BOUNCE = 1<<20,
233 GAMEINFOFLAG_PREDICT_FNG = 1<<21,
234 GAMEINFOFLAG_PREDICT_DDRACE = 1<<22,
235 GAMEINFOFLAG_PREDICT_DDRACE_TILES = 1<<23,
236 GAMEINFOFLAG_PREDICT_VANILLA = 1<<24,
237 GAMEINFOFLAG_ENTITIES_DDNET = 1<<25,
238 GAMEINFOFLAG_ENTITIES_DDRACE = 1<<26,
239 GAMEINFOFLAG_ENTITIES_RACE = 1<<27,
240 GAMEINFOFLAG_ENTITIES_FNG = 1<<28,
241 GAMEINFOFLAG_ENTITIES_VANILLA = 1<<29,
242 GAMEINFOFLAG_DONT_MASK_ENTITIES = 1<<30,
243 GAMEINFOFLAG_ENTITIES_BW = 1<<31,
244};
245
246enum
247{
248 GAMEINFOFLAG2_ALLOW_X_SKINS = 1<<0,
249 GAMEINFOFLAG2_GAMETYPE_CITY = 1<<1,
250 GAMEINFOFLAG2_GAMETYPE_FDDRACE = 1<<2,
251 GAMEINFOFLAG2_ENTITIES_FDDRACE = 1<<3,
252 GAMEINFOFLAG2_HUD_HEALTH_ARMOR = 1<<4,
253 GAMEINFOFLAG2_HUD_AMMO = 1<<5,
254 GAMEINFOFLAG2_HUD_DDRACE = 1<<6,
255 GAMEINFOFLAG2_NO_WEAK_HOOK = 1<<7,
256 GAMEINFOFLAG2_NO_SKIN_CHANGE_FOR_FROZEN = 1<<8,
257 GAMEINFOFLAG2_DDRACE_TEAM = 1<<9,
258};
259
260enum
261{
262 EXPLAYERFLAG_AFK = 1<<0,
263 EXPLAYERFLAG_PAUSED = 1<<1,
264 EXPLAYERFLAG_SPEC = 1<<2,
265};
266
267enum
268{
269 LEGACYPROJECTILEFLAG_CLIENTID_BIT0 = 1<<0,
270 LEGACYPROJECTILEFLAG_CLIENTID_BIT1 = 1<<1,
271 LEGACYPROJECTILEFLAG_CLIENTID_BIT2 = 1<<2,
272 LEGACYPROJECTILEFLAG_CLIENTID_BIT3 = 1<<3,
273 LEGACYPROJECTILEFLAG_CLIENTID_BIT4 = 1<<4,
274 LEGACYPROJECTILEFLAG_CLIENTID_BIT5 = 1<<5,
275 LEGACYPROJECTILEFLAG_CLIENTID_BIT6 = 1<<6,
276 LEGACYPROJECTILEFLAG_CLIENTID_BIT7 = 1<<7,
277 LEGACYPROJECTILEFLAG_NO_OWNER = 1<<8,
278 LEGACYPROJECTILEFLAG_IS_DDNET = 1<<9,
279 LEGACYPROJECTILEFLAG_BOUNCE_HORIZONTAL = 1<<10,
280 LEGACYPROJECTILEFLAG_BOUNCE_VERTICAL = 1<<11,
281 LEGACYPROJECTILEFLAG_EXPLOSIVE = 1<<12,
282 LEGACYPROJECTILEFLAG_FREEZE = 1<<13,
283};
284
285enum
286{
287 PROJECTILEFLAG_BOUNCE_HORIZONTAL = 1<<0,
288 PROJECTILEFLAG_BOUNCE_VERTICAL = 1<<1,
289 PROJECTILEFLAG_EXPLOSIVE = 1<<2,
290 PROJECTILEFLAG_FREEZE = 1<<3,
291 PROJECTILEFLAG_NORMALIZE_VEL = 1<<4,
292};
293
294enum
295{
296 LASERFLAG_NO_PREDICT = 1<<0,
297};
298
299enum
300{
301 PICKUPFLAG_XFLIP = 1<<0,
302 PICKUPFLAG_YFLIP = 1<<1,
303 PICKUPFLAG_ROTATE = 1<<2,
304 PICKUPFLAG_NO_PREDICT = 1<<3,
305};
306
307enum
308{
309 NETOBJTYPE_EX,
310 NETOBJTYPE_PLAYERINPUT,
311 NETOBJTYPE_PROJECTILE,
312 NETOBJTYPE_LASER,
313 NETOBJTYPE_PICKUP,
314 NETOBJTYPE_FLAG,
315 NETOBJTYPE_GAMEINFO,
316 NETOBJTYPE_GAMEDATA,
317 NETOBJTYPE_CHARACTERCORE,
318 NETOBJTYPE_CHARACTER,
319 NETOBJTYPE_PLAYERINFO,
320 NETOBJTYPE_CLIENTINFO,
321 NETOBJTYPE_SPECTATORINFO,
322 NETEVENTTYPE_COMMON,
323 NETEVENTTYPE_EXPLOSION,
324 NETEVENTTYPE_SPAWN,
325 NETEVENTTYPE_HAMMERHIT,
326 NETEVENTTYPE_DEATH,
327 NETEVENTTYPE_SOUNDGLOBAL,
328 NETEVENTTYPE_SOUNDWORLD,
329 NETEVENTTYPE_DAMAGEIND,
330 NUM_NETOBJTYPES
331};
332enum
333{
334 __NETOBJTYPE_UUID_HELPER=OFFSET_GAME_UUID-1,
335 NETOBJTYPE_MYOWNOBJECT,
336 NETOBJTYPE_DDNETCHARACTER,
337 NETOBJTYPE_DDNETPLAYER,
338 NETOBJTYPE_GAMEINFOEX,
339 NETOBJTYPE_DDRACEPROJECTILE,
340 NETOBJTYPE_DDNETLASER,
341 NETOBJTYPE_DDNETPROJECTILE,
342 NETOBJTYPE_DDNETPICKUP,
343 NETOBJTYPE_DDNETSPECTATORINFO,
344 NETOBJTYPE_SPECTATORCOUNT,
345 NETEVENTTYPE_BIRTHDAY,
346 NETEVENTTYPE_FINISH,
347 NETOBJTYPE_MYOWNEVENT,
348 NETOBJTYPE_SPECCHAR,
349 NETOBJTYPE_SWITCHSTATE,
350 NETOBJTYPE_ENTITYEX,
351 NETOBJTYPE_MAPBESTTIME,
352 NETEVENTTYPE_MAPSOUNDWORLD,
353 OFFSET_NETMSGTYPE_UUID
354};
355
356enum
357{
358 NETMSGTYPE_EX,
359 NETMSGTYPE_SV_MOTD,
360 NETMSGTYPE_SV_BROADCAST,
361 NETMSGTYPE_SV_CHAT,
362 NETMSGTYPE_SV_KILLMSG,
363 NETMSGTYPE_SV_SOUNDGLOBAL,
364 NETMSGTYPE_SV_TUNEPARAMS,
365 NETMSGTYPE_UNUSED,
366 NETMSGTYPE_SV_READYTOENTER,
367 NETMSGTYPE_SV_WEAPONPICKUP,
368 NETMSGTYPE_SV_EMOTICON,
369 NETMSGTYPE_SV_VOTECLEAROPTIONS,
370 NETMSGTYPE_SV_VOTEOPTIONLISTADD,
371 NETMSGTYPE_SV_VOTEOPTIONADD,
372 NETMSGTYPE_SV_VOTEOPTIONREMOVE,
373 NETMSGTYPE_SV_VOTESET,
374 NETMSGTYPE_SV_VOTESTATUS,
375 NETMSGTYPE_CL_SAY,
376 NETMSGTYPE_CL_SETTEAM,
377 NETMSGTYPE_CL_SETSPECTATORMODE,
378 NETMSGTYPE_CL_STARTINFO,
379 NETMSGTYPE_CL_CHANGEINFO,
380 NETMSGTYPE_CL_KILL,
381 NETMSGTYPE_CL_EMOTICON,
382 NETMSGTYPE_CL_VOTE,
383 NETMSGTYPE_CL_CALLVOTE,
384 NETMSGTYPE_CL_ISDDNETLEGACY,
385 NETMSGTYPE_SV_DDRACETIMELEGACY,
386 NETMSGTYPE_SV_RECORDLEGACY,
387 NETMSGTYPE_UNUSED2,
388 NETMSGTYPE_SV_TEAMSSTATELEGACY,
389 NETMSGTYPE_CL_SHOWOTHERSLEGACY,
390 NUM_NETMSGTYPES
391};
392
393enum
394{
395 __NETMSGTYPE_UUID_HELPER=OFFSET_NETMSGTYPE_UUID-1,
396 NETMSGTYPE_SV_MYOWNMESSAGE,
397 NETMSGTYPE_CL_SHOWDISTANCE,
398 NETMSGTYPE_CL_SHOWOTHERS,
399 NETMSGTYPE_CL_CAMERAINFO,
400 NETMSGTYPE_SV_TEAMSSTATE,
401 NETMSGTYPE_SV_DDRACETIME,
402 NETMSGTYPE_SV_RECORD,
403 NETMSGTYPE_SV_KILLMSGTEAM,
404 NETMSGTYPE_SV_YOURVOTE,
405 NETMSGTYPE_SV_RACEFINISH,
406 NETMSGTYPE_SV_COMMANDINFO,
407 NETMSGTYPE_SV_COMMANDINFOREMOVE,
408 NETMSGTYPE_SV_VOTEOPTIONGROUPSTART,
409 NETMSGTYPE_SV_VOTEOPTIONGROUPEND,
410 NETMSGTYPE_SV_COMMANDINFOGROUPSTART,
411 NETMSGTYPE_SV_COMMANDINFOGROUPEND,
412 NETMSGTYPE_SV_CHANGEINFOCOOLDOWN,
413 NETMSGTYPE_SV_MAPSOUNDGLOBAL,
414 NETMSGTYPE_SV_PREINPUT,
415 NETMSGTYPE_SV_SAVECODE,
416 NETMSGTYPE_SV_SERVERALERT,
417 NETMSGTYPE_SV_MODERATORALERT,
418 NETMSGTYPE_CL_ENABLESPECTATORCOUNT,
419 OFFSET_MAPITEMTYPE_UUID
420};
421
422struct CNetObj_PlayerInput
423{
424 static constexpr int ms_MsgId = NETOBJTYPE_PLAYERINPUT;
425 int m_Direction;
426 int m_TargetX;
427 int m_TargetY;
428 int m_Jump;
429 int m_Fire;
430 int m_Hook;
431 int m_PlayerFlags;
432 int m_WantedWeapon;
433 int m_NextWeapon;
434 int m_PrevWeapon;
435};
436
437struct CNetObj_Projectile
438{
439 static constexpr int ms_MsgId = NETOBJTYPE_PROJECTILE;
440 int m_X;
441 int m_Y;
442 int m_VelX;
443 int m_VelY;
444 int m_Type;
445 int m_StartTick;
446};
447
448struct CNetObj_Laser
449{
450 static constexpr int ms_MsgId = NETOBJTYPE_LASER;
451 int m_X;
452 int m_Y;
453 int m_FromX;
454 int m_FromY;
455 int m_StartTick;
456};
457
458struct CNetObj_Pickup
459{
460 static constexpr int ms_MsgId = NETOBJTYPE_PICKUP;
461 int m_X;
462 int m_Y;
463 int m_Type;
464 int m_Subtype;
465};
466
467struct CNetObj_Flag
468{
469 static constexpr int ms_MsgId = NETOBJTYPE_FLAG;
470 int m_X;
471 int m_Y;
472 int m_Team;
473};
474
475struct CNetObj_GameInfo
476{
477 static constexpr int ms_MsgId = NETOBJTYPE_GAMEINFO;
478 int m_GameFlags;
479 int m_GameStateFlags;
480 int m_RoundStartTick;
481 int m_WarmupTimer;
482 int m_ScoreLimit;
483 int m_TimeLimit;
484 int m_RoundNum;
485 int m_RoundCurrent;
486};
487
488struct CNetObj_GameData
489{
490 static constexpr int ms_MsgId = NETOBJTYPE_GAMEDATA;
491 int m_TeamscoreRed;
492 int m_TeamscoreBlue;
493 int m_FlagCarrierRed;
494 int m_FlagCarrierBlue;
495};
496
497struct CNetObj_CharacterCore
498{
499 static constexpr int ms_MsgId = NETOBJTYPE_CHARACTERCORE;
500 int m_Tick;
501 int m_X;
502 int m_Y;
503 int m_VelX;
504 int m_VelY;
505 int m_Angle;
506 int m_Direction;
507 int m_Jumped;
508 int m_HookedPlayer;
509 int m_HookState;
510 int m_HookTick;
511 int m_HookX;
512 int m_HookY;
513 int m_HookDx;
514 int m_HookDy;
515};
516
517struct CNetObj_Character : public CNetObj_CharacterCore
518{
519 static constexpr int ms_MsgId = NETOBJTYPE_CHARACTER;
520 int m_PlayerFlags;
521 int m_Health;
522 int m_Armor;
523 int m_AmmoCount;
524 int m_Weapon;
525 int m_Emote;
526 int m_AttackTick;
527};
528
529struct CNetObj_PlayerInfo
530{
531 static constexpr int ms_MsgId = NETOBJTYPE_PLAYERINFO;
532 int m_Local;
533 int m_ClientId;
534 int m_Team;
535 int m_Score;
536 int m_Latency;
537};
538
539struct CNetObj_ClientInfo
540{
541 static constexpr int ms_MsgId = NETOBJTYPE_CLIENTINFO;
542 int m_aName[4];
543 int m_aClan[3];
544 int m_Country;
545 int m_aSkin[6];
546 int m_UseCustomColor;
547 int m_ColorBody;
548 int m_ColorFeet;
549};
550
551struct CNetObj_SpectatorInfo
552{
553 static constexpr int ms_MsgId = NETOBJTYPE_SPECTATORINFO;
554 int m_SpectatorId;
555 int m_X;
556 int m_Y;
557};
558
559struct CNetObj_MyOwnObject
560{
561 static constexpr int ms_MsgId = NETOBJTYPE_MYOWNOBJECT;
562 int m_Test;
563};
564
565struct CNetObj_DDNetCharacter
566{
567 static constexpr int ms_MsgId = NETOBJTYPE_DDNETCHARACTER;
568 int m_Flags;
569 int m_FreezeEnd;
570 int m_Jumps;
571 int m_TeleCheckpoint;
572 int m_StrongWeakId;
573 int m_JumpedTotal;
574 int m_NinjaActivationTick;
575 int m_FreezeStart;
576 int m_TargetX;
577 int m_TargetY;
578 int m_TuneZoneOverride;
579};
580
581struct CNetObj_DDNetPlayer
582{
583 static constexpr int ms_MsgId = NETOBJTYPE_DDNETPLAYER;
584 int m_Flags;
585 int m_AuthLevel;
586 int m_FinishTimeSeconds;
587 int m_FinishTimeMillis;
588};
589
590struct CNetObj_GameInfoEx
591{
592 static constexpr int ms_MsgId = NETOBJTYPE_GAMEINFOEX;
593 int m_Flags;
594 int m_Version;
595 int m_Flags2;
596};
597
598struct CNetObj_DDRaceProjectile
599{
600 static constexpr int ms_MsgId = NETOBJTYPE_DDRACEPROJECTILE;
601 int m_X;
602 int m_Y;
603 int m_Angle;
604 int m_Data;
605 int m_Type;
606 int m_StartTick;
607};
608
609struct CNetObj_DDNetLaser
610{
611 static constexpr int ms_MsgId = NETOBJTYPE_DDNETLASER;
612 int m_ToX;
613 int m_ToY;
614 int m_FromX;
615 int m_FromY;
616 int m_StartTick;
617 int m_Owner;
618 int m_Type;
619 int m_SwitchNumber;
620 int m_Subtype;
621 int m_Flags;
622};
623
624struct CNetObj_DDNetProjectile
625{
626 static constexpr int ms_MsgId = NETOBJTYPE_DDNETPROJECTILE;
627 int m_X;
628 int m_Y;
629 int m_VelX;
630 int m_VelY;
631 int m_Type;
632 int m_StartTick;
633 int m_Owner;
634 int m_SwitchNumber;
635 int m_TuneZone;
636 int m_Flags;
637};
638
639struct CNetObj_DDNetPickup
640{
641 static constexpr int ms_MsgId = NETOBJTYPE_DDNETPICKUP;
642 int m_X;
643 int m_Y;
644 int m_Type;
645 int m_Subtype;
646 int m_SwitchNumber;
647 int m_Flags;
648};
649
650struct CNetObj_DDNetSpectatorInfo
651{
652 static constexpr int ms_MsgId = NETOBJTYPE_DDNETSPECTATORINFO;
653 int m_HasCameraInfo;
654 int m_Zoom;
655 int m_Deadzone;
656 int m_FollowFactor;
657 int m_SpectatorCount;
658};
659
660struct CNetObj_SpectatorCount
661{
662 static constexpr int ms_MsgId = NETOBJTYPE_SPECTATORCOUNT;
663 int m_NumSpectators;
664};
665
666struct CNetEvent_Common
667{
668 static constexpr int ms_MsgId = NETEVENTTYPE_COMMON;
669 int m_X;
670 int m_Y;
671};
672
673struct CNetEvent_Explosion : public CNetEvent_Common
674{
675 static constexpr int ms_MsgId = NETEVENTTYPE_EXPLOSION;
676};
677
678struct CNetEvent_Spawn : public CNetEvent_Common
679{
680 static constexpr int ms_MsgId = NETEVENTTYPE_SPAWN;
681};
682
683struct CNetEvent_HammerHit : public CNetEvent_Common
684{
685 static constexpr int ms_MsgId = NETEVENTTYPE_HAMMERHIT;
686};
687
688struct CNetEvent_Death : public CNetEvent_Common
689{
690 static constexpr int ms_MsgId = NETEVENTTYPE_DEATH;
691 int m_ClientId;
692};
693
694struct CNetEvent_SoundGlobal : public CNetEvent_Common
695{
696 static constexpr int ms_MsgId = NETEVENTTYPE_SOUNDGLOBAL;
697 int m_SoundId;
698};
699
700struct CNetEvent_SoundWorld : public CNetEvent_Common
701{
702 static constexpr int ms_MsgId = NETEVENTTYPE_SOUNDWORLD;
703 int m_SoundId;
704};
705
706struct CNetEvent_DamageInd : public CNetEvent_Common
707{
708 static constexpr int ms_MsgId = NETEVENTTYPE_DAMAGEIND;
709 int m_Angle;
710};
711
712struct CNetEvent_Birthday : public CNetEvent_Common
713{
714 static constexpr int ms_MsgId = NETEVENTTYPE_BIRTHDAY;
715};
716
717struct CNetEvent_Finish : public CNetEvent_Common
718{
719 static constexpr int ms_MsgId = NETEVENTTYPE_FINISH;
720};
721
722struct CNetObj_MyOwnEvent
723{
724 static constexpr int ms_MsgId = NETOBJTYPE_MYOWNEVENT;
725 int m_Test;
726};
727
728struct CNetObj_SpecChar
729{
730 static constexpr int ms_MsgId = NETOBJTYPE_SPECCHAR;
731 int m_X;
732 int m_Y;
733};
734
735struct CNetObj_SwitchState
736{
737 static constexpr int ms_MsgId = NETOBJTYPE_SWITCHSTATE;
738 int m_HighestSwitchNumber;
739 int m_aStatus[8];
740 int m_aSwitchNumbers[4];
741 int m_aEndTicks[4];
742};
743
744struct CNetObj_EntityEx
745{
746 static constexpr int ms_MsgId = NETOBJTYPE_ENTITYEX;
747 int m_SwitchNumber;
748 int m_Layer;
749 int m_EntityClass;
750};
751
752struct CNetObj_MapBestTime
753{
754 static constexpr int ms_MsgId = NETOBJTYPE_MAPBESTTIME;
755 int m_MapBestTimeSeconds;
756 int m_MapBestTimeMillis;
757};
758
759struct CNetEvent_MapSoundWorld : public CNetEvent_Common
760{
761 static constexpr int ms_MsgId = NETEVENTTYPE_MAPSOUNDWORLD;
762 int m_SoundId;
763};
764
765struct CNetMsg_Sv_Motd
766{
767 static constexpr int ms_MsgId = NETMSGTYPE_SV_MOTD;
768 const char *m_pMessage;
769
770 bool Pack(CMsgPacker *pPacker) const
771 {
772 pPacker->AddString(pStr: m_pMessage, Limit: -1);
773 return pPacker->Error() != 0;
774 }
775};
776
777struct CNetMsg_Sv_Broadcast
778{
779 static constexpr int ms_MsgId = NETMSGTYPE_SV_BROADCAST;
780 const char *m_pMessage;
781
782 bool Pack(CMsgPacker *pPacker) const
783 {
784 pPacker->AddString(pStr: m_pMessage, Limit: -1);
785 return pPacker->Error() != 0;
786 }
787};
788
789struct CNetMsg_Sv_Chat
790{
791 static constexpr int ms_MsgId = NETMSGTYPE_SV_CHAT;
792 int m_Team;
793 int m_ClientId;
794 const char *m_pMessage;
795
796 bool Pack(CMsgPacker *pPacker) const
797 {
798 pPacker->AddInt(i: m_Team);
799 pPacker->AddInt(i: m_ClientId);
800 pPacker->AddString(pStr: m_pMessage, Limit: -1);
801 return pPacker->Error() != 0;
802 }
803};
804
805struct CNetMsg_Sv_KillMsg
806{
807 static constexpr int ms_MsgId = NETMSGTYPE_SV_KILLMSG;
808 int m_Killer;
809 int m_Victim;
810 int m_Weapon;
811 int m_ModeSpecial;
812
813 bool Pack(CMsgPacker *pPacker) const
814 {
815 pPacker->AddInt(i: m_Killer);
816 pPacker->AddInt(i: m_Victim);
817 pPacker->AddInt(i: m_Weapon);
818 pPacker->AddInt(i: m_ModeSpecial);
819 return pPacker->Error() != 0;
820 }
821};
822
823struct CNetMsg_Sv_SoundGlobal
824{
825 static constexpr int ms_MsgId = NETMSGTYPE_SV_SOUNDGLOBAL;
826 int m_SoundId;
827
828 bool Pack(CMsgPacker *pPacker) const
829 {
830 pPacker->AddInt(i: m_SoundId);
831 return pPacker->Error() != 0;
832 }
833};
834
835struct CNetMsg_Sv_TuneParams
836{
837 static constexpr int ms_MsgId = NETMSGTYPE_SV_TUNEPARAMS;
838
839 bool Pack(CMsgPacker *pPacker) const
840 {
841 return pPacker->Error() != 0;
842 }
843};
844
845struct CNetMsg_Unused
846{
847 static constexpr int ms_MsgId = NETMSGTYPE_UNUSED;
848
849 bool Pack(CMsgPacker *pPacker) const
850 {
851 return pPacker->Error() != 0;
852 }
853};
854
855struct CNetMsg_Sv_ReadyToEnter
856{
857 static constexpr int ms_MsgId = NETMSGTYPE_SV_READYTOENTER;
858
859 bool Pack(CMsgPacker *pPacker) const
860 {
861 return pPacker->Error() != 0;
862 }
863};
864
865struct CNetMsg_Sv_WeaponPickup
866{
867 static constexpr int ms_MsgId = NETMSGTYPE_SV_WEAPONPICKUP;
868 int m_Weapon;
869
870 bool Pack(CMsgPacker *pPacker) const
871 {
872 pPacker->AddInt(i: m_Weapon);
873 return pPacker->Error() != 0;
874 }
875};
876
877struct CNetMsg_Sv_Emoticon
878{
879 static constexpr int ms_MsgId = NETMSGTYPE_SV_EMOTICON;
880 int m_ClientId;
881 int m_Emoticon;
882
883 bool Pack(CMsgPacker *pPacker) const
884 {
885 pPacker->AddInt(i: m_ClientId);
886 pPacker->AddInt(i: m_Emoticon);
887 return pPacker->Error() != 0;
888 }
889};
890
891struct CNetMsg_Sv_VoteClearOptions
892{
893 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTECLEAROPTIONS;
894
895 bool Pack(CMsgPacker *pPacker) const
896 {
897 return pPacker->Error() != 0;
898 }
899};
900
901struct CNetMsg_Sv_VoteOptionListAdd
902{
903 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONLISTADD;
904 int m_NumOptions;
905 const char *m_pDescription0;
906 const char *m_pDescription1;
907 const char *m_pDescription2;
908 const char *m_pDescription3;
909 const char *m_pDescription4;
910 const char *m_pDescription5;
911 const char *m_pDescription6;
912 const char *m_pDescription7;
913 const char *m_pDescription8;
914 const char *m_pDescription9;
915 const char *m_pDescription10;
916 const char *m_pDescription11;
917 const char *m_pDescription12;
918 const char *m_pDescription13;
919 const char *m_pDescription14;
920
921 bool Pack(CMsgPacker *pPacker) const
922 {
923 pPacker->AddInt(i: m_NumOptions);
924 pPacker->AddString(pStr: m_pDescription0, Limit: -1);
925 pPacker->AddString(pStr: m_pDescription1, Limit: -1);
926 pPacker->AddString(pStr: m_pDescription2, Limit: -1);
927 pPacker->AddString(pStr: m_pDescription3, Limit: -1);
928 pPacker->AddString(pStr: m_pDescription4, Limit: -1);
929 pPacker->AddString(pStr: m_pDescription5, Limit: -1);
930 pPacker->AddString(pStr: m_pDescription6, Limit: -1);
931 pPacker->AddString(pStr: m_pDescription7, Limit: -1);
932 pPacker->AddString(pStr: m_pDescription8, Limit: -1);
933 pPacker->AddString(pStr: m_pDescription9, Limit: -1);
934 pPacker->AddString(pStr: m_pDescription10, Limit: -1);
935 pPacker->AddString(pStr: m_pDescription11, Limit: -1);
936 pPacker->AddString(pStr: m_pDescription12, Limit: -1);
937 pPacker->AddString(pStr: m_pDescription13, Limit: -1);
938 pPacker->AddString(pStr: m_pDescription14, Limit: -1);
939 return pPacker->Error() != 0;
940 }
941};
942
943struct CNetMsg_Sv_VoteOptionAdd
944{
945 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONADD;
946 const char *m_pDescription;
947
948 bool Pack(CMsgPacker *pPacker) const
949 {
950 pPacker->AddString(pStr: m_pDescription, Limit: -1);
951 return pPacker->Error() != 0;
952 }
953};
954
955struct CNetMsg_Sv_VoteOptionRemove
956{
957 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONREMOVE;
958 const char *m_pDescription;
959
960 bool Pack(CMsgPacker *pPacker) const
961 {
962 pPacker->AddString(pStr: m_pDescription, Limit: -1);
963 return pPacker->Error() != 0;
964 }
965};
966
967struct CNetMsg_Sv_VoteSet
968{
969 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTESET;
970 int m_Timeout;
971 const char *m_pDescription;
972 const char *m_pReason;
973
974 bool Pack(CMsgPacker *pPacker) const
975 {
976 pPacker->AddInt(i: m_Timeout);
977 pPacker->AddString(pStr: m_pDescription, Limit: -1);
978 pPacker->AddString(pStr: m_pReason, Limit: -1);
979 return pPacker->Error() != 0;
980 }
981};
982
983struct CNetMsg_Sv_VoteStatus
984{
985 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTESTATUS;
986 int m_Yes;
987 int m_No;
988 int m_Pass;
989 int m_Total;
990
991 bool Pack(CMsgPacker *pPacker) const
992 {
993 pPacker->AddInt(i: m_Yes);
994 pPacker->AddInt(i: m_No);
995 pPacker->AddInt(i: m_Pass);
996 pPacker->AddInt(i: m_Total);
997 return pPacker->Error() != 0;
998 }
999};
1000
1001struct CNetMsg_Cl_Say
1002{
1003 static constexpr int ms_MsgId = NETMSGTYPE_CL_SAY;
1004 int m_Team;
1005 const char *m_pMessage;
1006
1007 bool Pack(CMsgPacker *pPacker) const
1008 {
1009 pPacker->AddInt(i: m_Team);
1010 pPacker->AddString(pStr: m_pMessage, Limit: -1);
1011 return pPacker->Error() != 0;
1012 }
1013};
1014
1015struct CNetMsg_Cl_SetTeam
1016{
1017 static constexpr int ms_MsgId = NETMSGTYPE_CL_SETTEAM;
1018 int m_Team;
1019
1020 bool Pack(CMsgPacker *pPacker) const
1021 {
1022 pPacker->AddInt(i: m_Team);
1023 return pPacker->Error() != 0;
1024 }
1025};
1026
1027struct CNetMsg_Cl_SetSpectatorMode
1028{
1029 static constexpr int ms_MsgId = NETMSGTYPE_CL_SETSPECTATORMODE;
1030 int m_SpectatorId;
1031
1032 bool Pack(CMsgPacker *pPacker) const
1033 {
1034 pPacker->AddInt(i: m_SpectatorId);
1035 return pPacker->Error() != 0;
1036 }
1037};
1038
1039struct CNetMsg_Cl_StartInfo
1040{
1041 static constexpr int ms_MsgId = NETMSGTYPE_CL_STARTINFO;
1042 const char *m_pName;
1043 const char *m_pClan;
1044 int m_Country;
1045 const char *m_pSkin;
1046 int m_UseCustomColor;
1047 int m_ColorBody;
1048 int m_ColorFeet;
1049
1050 bool Pack(CMsgPacker *pPacker) const
1051 {
1052 pPacker->AddString(pStr: m_pName, Limit: -1);
1053 pPacker->AddString(pStr: m_pClan, Limit: -1);
1054 pPacker->AddInt(i: m_Country);
1055 pPacker->AddString(pStr: m_pSkin, Limit: -1);
1056 pPacker->AddInt(i: m_UseCustomColor);
1057 pPacker->AddInt(i: m_ColorBody);
1058 pPacker->AddInt(i: m_ColorFeet);
1059 return pPacker->Error() != 0;
1060 }
1061};
1062
1063struct CNetMsg_Cl_ChangeInfo
1064{
1065 static constexpr int ms_MsgId = NETMSGTYPE_CL_CHANGEINFO;
1066 const char *m_pName;
1067 const char *m_pClan;
1068 int m_Country;
1069 const char *m_pSkin;
1070 int m_UseCustomColor;
1071 int m_ColorBody;
1072 int m_ColorFeet;
1073
1074 bool Pack(CMsgPacker *pPacker) const
1075 {
1076 pPacker->AddString(pStr: m_pName, Limit: -1);
1077 pPacker->AddString(pStr: m_pClan, Limit: -1);
1078 pPacker->AddInt(i: m_Country);
1079 pPacker->AddString(pStr: m_pSkin, Limit: -1);
1080 pPacker->AddInt(i: m_UseCustomColor);
1081 pPacker->AddInt(i: m_ColorBody);
1082 pPacker->AddInt(i: m_ColorFeet);
1083 return pPacker->Error() != 0;
1084 }
1085};
1086
1087struct CNetMsg_Cl_Kill
1088{
1089 static constexpr int ms_MsgId = NETMSGTYPE_CL_KILL;
1090
1091 bool Pack(CMsgPacker *pPacker) const
1092 {
1093 return pPacker->Error() != 0;
1094 }
1095};
1096
1097struct CNetMsg_Cl_Emoticon
1098{
1099 static constexpr int ms_MsgId = NETMSGTYPE_CL_EMOTICON;
1100 int m_Emoticon;
1101
1102 bool Pack(CMsgPacker *pPacker) const
1103 {
1104 pPacker->AddInt(i: m_Emoticon);
1105 return pPacker->Error() != 0;
1106 }
1107};
1108
1109struct CNetMsg_Cl_Vote
1110{
1111 static constexpr int ms_MsgId = NETMSGTYPE_CL_VOTE;
1112 int m_Vote;
1113
1114 bool Pack(CMsgPacker *pPacker) const
1115 {
1116 pPacker->AddInt(i: m_Vote);
1117 return pPacker->Error() != 0;
1118 }
1119};
1120
1121struct CNetMsg_Cl_CallVote
1122{
1123 static constexpr int ms_MsgId = NETMSGTYPE_CL_CALLVOTE;
1124 const char *m_pType;
1125 const char *m_pValue;
1126 const char *m_pReason;
1127
1128 bool Pack(CMsgPacker *pPacker) const
1129 {
1130 pPacker->AddString(pStr: m_pType, Limit: -1);
1131 pPacker->AddString(pStr: m_pValue, Limit: -1);
1132 pPacker->AddString(pStr: m_pReason, Limit: -1);
1133 return pPacker->Error() != 0;
1134 }
1135};
1136
1137struct CNetMsg_Cl_IsDDNetLegacy
1138{
1139 static constexpr int ms_MsgId = NETMSGTYPE_CL_ISDDNETLEGACY;
1140
1141 bool Pack(CMsgPacker *pPacker) const
1142 {
1143 return pPacker->Error() != 0;
1144 }
1145};
1146
1147struct CNetMsg_Sv_DDRaceTimeLegacy
1148{
1149 static constexpr int ms_MsgId = NETMSGTYPE_SV_DDRACETIMELEGACY;
1150 int m_Time;
1151 int m_Check;
1152 int m_Finish;
1153
1154 bool Pack(CMsgPacker *pPacker) const
1155 {
1156 pPacker->AddInt(i: m_Time);
1157 pPacker->AddInt(i: m_Check);
1158 pPacker->AddInt(i: m_Finish);
1159 return pPacker->Error() != 0;
1160 }
1161};
1162
1163struct CNetMsg_Sv_RecordLegacy
1164{
1165 static constexpr int ms_MsgId = NETMSGTYPE_SV_RECORDLEGACY;
1166 int m_ServerTimeBest;
1167 int m_PlayerTimeBest;
1168
1169 bool Pack(CMsgPacker *pPacker) const
1170 {
1171 pPacker->AddInt(i: m_ServerTimeBest);
1172 pPacker->AddInt(i: m_PlayerTimeBest);
1173 return pPacker->Error() != 0;
1174 }
1175};
1176
1177struct CNetMsg_Unused2
1178{
1179 static constexpr int ms_MsgId = NETMSGTYPE_UNUSED2;
1180
1181 bool Pack(CMsgPacker *pPacker) const
1182 {
1183 return pPacker->Error() != 0;
1184 }
1185};
1186
1187struct CNetMsg_Sv_TeamsStateLegacy
1188{
1189 static constexpr int ms_MsgId = NETMSGTYPE_SV_TEAMSSTATELEGACY;
1190
1191 bool Pack(CMsgPacker *pPacker) const
1192 {
1193 return pPacker->Error() != 0;
1194 }
1195};
1196
1197struct CNetMsg_Cl_ShowOthersLegacy
1198{
1199 static constexpr int ms_MsgId = NETMSGTYPE_CL_SHOWOTHERSLEGACY;
1200 int m_Show;
1201
1202 bool Pack(CMsgPacker *pPacker) const
1203 {
1204 pPacker->AddInt(i: m_Show);
1205 return pPacker->Error() != 0;
1206 }
1207};
1208
1209struct CNetMsg_Sv_MyOwnMessage
1210{
1211 static constexpr int ms_MsgId = NETMSGTYPE_SV_MYOWNMESSAGE;
1212 int m_Test;
1213
1214 bool Pack(CMsgPacker *pPacker) const
1215 {
1216 pPacker->AddInt(i: m_Test);
1217 return pPacker->Error() != 0;
1218 }
1219};
1220
1221struct CNetMsg_Cl_ShowDistance
1222{
1223 static constexpr int ms_MsgId = NETMSGTYPE_CL_SHOWDISTANCE;
1224 int m_X;
1225 int m_Y;
1226
1227 bool Pack(CMsgPacker *pPacker) const
1228 {
1229 pPacker->AddInt(i: m_X);
1230 pPacker->AddInt(i: m_Y);
1231 return pPacker->Error() != 0;
1232 }
1233};
1234
1235struct CNetMsg_Cl_ShowOthers
1236{
1237 static constexpr int ms_MsgId = NETMSGTYPE_CL_SHOWOTHERS;
1238 int m_Show;
1239
1240 bool Pack(CMsgPacker *pPacker) const
1241 {
1242 pPacker->AddInt(i: m_Show);
1243 return pPacker->Error() != 0;
1244 }
1245};
1246
1247struct CNetMsg_Cl_CameraInfo
1248{
1249 static constexpr int ms_MsgId = NETMSGTYPE_CL_CAMERAINFO;
1250 int m_Zoom;
1251 int m_Deadzone;
1252 int m_FollowFactor;
1253
1254 bool Pack(CMsgPacker *pPacker) const
1255 {
1256 pPacker->AddInt(i: m_Zoom);
1257 pPacker->AddInt(i: m_Deadzone);
1258 pPacker->AddInt(i: m_FollowFactor);
1259 return pPacker->Error() != 0;
1260 }
1261};
1262
1263struct CNetMsg_Sv_TeamsState
1264{
1265 static constexpr int ms_MsgId = NETMSGTYPE_SV_TEAMSSTATE;
1266
1267 bool Pack(CMsgPacker *pPacker) const
1268 {
1269 return pPacker->Error() != 0;
1270 }
1271};
1272
1273struct CNetMsg_Sv_DDRaceTime
1274{
1275 static constexpr int ms_MsgId = NETMSGTYPE_SV_DDRACETIME;
1276 int m_Time;
1277 int m_Check;
1278 int m_Finish;
1279
1280 bool Pack(CMsgPacker *pPacker) const
1281 {
1282 pPacker->AddInt(i: m_Time);
1283 pPacker->AddInt(i: m_Check);
1284 pPacker->AddInt(i: m_Finish);
1285 return pPacker->Error() != 0;
1286 }
1287};
1288
1289struct CNetMsg_Sv_Record
1290{
1291 static constexpr int ms_MsgId = NETMSGTYPE_SV_RECORD;
1292 int m_ServerTimeBest;
1293 int m_PlayerTimeBest;
1294
1295 bool Pack(CMsgPacker *pPacker) const
1296 {
1297 pPacker->AddInt(i: m_ServerTimeBest);
1298 pPacker->AddInt(i: m_PlayerTimeBest);
1299 return pPacker->Error() != 0;
1300 }
1301};
1302
1303struct CNetMsg_Sv_KillMsgTeam
1304{
1305 static constexpr int ms_MsgId = NETMSGTYPE_SV_KILLMSGTEAM;
1306 int m_Team;
1307 int m_First;
1308
1309 bool Pack(CMsgPacker *pPacker) const
1310 {
1311 pPacker->AddInt(i: m_Team);
1312 pPacker->AddInt(i: m_First);
1313 return pPacker->Error() != 0;
1314 }
1315};
1316
1317struct CNetMsg_Sv_YourVote
1318{
1319 static constexpr int ms_MsgId = NETMSGTYPE_SV_YOURVOTE;
1320 int m_Voted;
1321
1322 bool Pack(CMsgPacker *pPacker) const
1323 {
1324 pPacker->AddInt(i: m_Voted);
1325 return pPacker->Error() != 0;
1326 }
1327};
1328
1329struct CNetMsg_Sv_RaceFinish
1330{
1331 static constexpr int ms_MsgId = NETMSGTYPE_SV_RACEFINISH;
1332 int m_ClientId;
1333 int m_Time;
1334 int m_Diff;
1335 int m_RecordPersonal;
1336 int m_RecordServer;
1337
1338 bool Pack(CMsgPacker *pPacker) const
1339 {
1340 pPacker->AddInt(i: m_ClientId);
1341 pPacker->AddInt(i: m_Time);
1342 pPacker->AddInt(i: m_Diff);
1343 pPacker->AddInt(i: m_RecordPersonal);
1344 pPacker->AddInt(i: m_RecordServer);
1345 return pPacker->Error() != 0;
1346 }
1347};
1348
1349struct CNetMsg_Sv_CommandInfo
1350{
1351 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFO;
1352 const char *m_pName;
1353 const char *m_pArgsFormat;
1354 const char *m_pHelpText;
1355
1356 bool Pack(CMsgPacker *pPacker) const
1357 {
1358 pPacker->AddString(pStr: m_pName, Limit: -1);
1359 pPacker->AddString(pStr: m_pArgsFormat, Limit: -1);
1360 pPacker->AddString(pStr: m_pHelpText, Limit: -1);
1361 return pPacker->Error() != 0;
1362 }
1363};
1364
1365struct CNetMsg_Sv_CommandInfoRemove
1366{
1367 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFOREMOVE;
1368 const char *m_pName;
1369
1370 bool Pack(CMsgPacker *pPacker) const
1371 {
1372 pPacker->AddString(pStr: m_pName, Limit: -1);
1373 return pPacker->Error() != 0;
1374 }
1375};
1376
1377struct CNetMsg_Sv_VoteOptionGroupStart
1378{
1379 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONGROUPSTART;
1380
1381 bool Pack(CMsgPacker *pPacker) const
1382 {
1383 return pPacker->Error() != 0;
1384 }
1385};
1386
1387struct CNetMsg_Sv_VoteOptionGroupEnd
1388{
1389 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONGROUPEND;
1390
1391 bool Pack(CMsgPacker *pPacker) const
1392 {
1393 return pPacker->Error() != 0;
1394 }
1395};
1396
1397struct CNetMsg_Sv_CommandInfoGroupStart
1398{
1399 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFOGROUPSTART;
1400
1401 bool Pack(CMsgPacker *pPacker) const
1402 {
1403 return pPacker->Error() != 0;
1404 }
1405};
1406
1407struct CNetMsg_Sv_CommandInfoGroupEnd
1408{
1409 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFOGROUPEND;
1410
1411 bool Pack(CMsgPacker *pPacker) const
1412 {
1413 return pPacker->Error() != 0;
1414 }
1415};
1416
1417struct CNetMsg_Sv_ChangeInfoCooldown
1418{
1419 static constexpr int ms_MsgId = NETMSGTYPE_SV_CHANGEINFOCOOLDOWN;
1420 int m_WaitUntil;
1421
1422 bool Pack(CMsgPacker *pPacker) const
1423 {
1424 pPacker->AddInt(i: m_WaitUntil);
1425 return pPacker->Error() != 0;
1426 }
1427};
1428
1429struct CNetMsg_Sv_MapSoundGlobal
1430{
1431 static constexpr int ms_MsgId = NETMSGTYPE_SV_MAPSOUNDGLOBAL;
1432 int m_SoundId;
1433
1434 bool Pack(CMsgPacker *pPacker) const
1435 {
1436 pPacker->AddInt(i: m_SoundId);
1437 return pPacker->Error() != 0;
1438 }
1439};
1440
1441struct CNetMsg_Sv_PreInput
1442{
1443 static constexpr int ms_MsgId = NETMSGTYPE_SV_PREINPUT;
1444 int m_Direction;
1445 int m_TargetX;
1446 int m_TargetY;
1447 int m_Jump;
1448 int m_Fire;
1449 int m_Hook;
1450 int m_WantedWeapon;
1451 int m_NextWeapon;
1452 int m_PrevWeapon;
1453 int m_Owner;
1454 int m_IntendedTick;
1455
1456 bool Pack(CMsgPacker *pPacker) const
1457 {
1458 pPacker->AddInt(i: m_Direction);
1459 pPacker->AddInt(i: m_TargetX);
1460 pPacker->AddInt(i: m_TargetY);
1461 pPacker->AddInt(i: m_Jump);
1462 pPacker->AddInt(i: m_Fire);
1463 pPacker->AddInt(i: m_Hook);
1464 pPacker->AddInt(i: m_WantedWeapon);
1465 pPacker->AddInt(i: m_NextWeapon);
1466 pPacker->AddInt(i: m_PrevWeapon);
1467 pPacker->AddInt(i: m_Owner);
1468 pPacker->AddInt(i: m_IntendedTick);
1469 return pPacker->Error() != 0;
1470 }
1471};
1472
1473struct CNetMsg_Sv_SaveCode
1474{
1475 static constexpr int ms_MsgId = NETMSGTYPE_SV_SAVECODE;
1476 int m_State;
1477 const char *m_pError;
1478 const char *m_pSaveRequester;
1479 const char *m_pServerName;
1480 const char *m_pGeneratedCode;
1481 const char *m_pCode;
1482 const char *m_pTeamMembers;
1483
1484 bool Pack(CMsgPacker *pPacker) const
1485 {
1486 pPacker->AddInt(i: m_State);
1487 pPacker->AddString(pStr: m_pError, Limit: -1);
1488 pPacker->AddString(pStr: m_pSaveRequester, Limit: -1);
1489 pPacker->AddString(pStr: m_pServerName, Limit: -1);
1490 pPacker->AddString(pStr: m_pGeneratedCode, Limit: -1);
1491 pPacker->AddString(pStr: m_pCode, Limit: -1);
1492 pPacker->AddString(pStr: m_pTeamMembers, Limit: -1);
1493 return pPacker->Error() != 0;
1494 }
1495};
1496
1497struct CNetMsg_Sv_ServerAlert
1498{
1499 static constexpr int ms_MsgId = NETMSGTYPE_SV_SERVERALERT;
1500 const char *m_pMessage;
1501
1502 bool Pack(CMsgPacker *pPacker) const
1503 {
1504 pPacker->AddString(pStr: m_pMessage, Limit: -1);
1505 return pPacker->Error() != 0;
1506 }
1507};
1508
1509struct CNetMsg_Sv_ModeratorAlert
1510{
1511 static constexpr int ms_MsgId = NETMSGTYPE_SV_MODERATORALERT;
1512 const char *m_pMessage;
1513
1514 bool Pack(CMsgPacker *pPacker) const
1515 {
1516 pPacker->AddString(pStr: m_pMessage, Limit: -1);
1517 return pPacker->Error() != 0;
1518 }
1519};
1520
1521struct CNetMsg_Cl_EnableSpectatorCount
1522{
1523 static constexpr int ms_MsgId = NETMSGTYPE_CL_ENABLESPECTATORCOUNT;
1524 int m_Enable;
1525
1526 bool Pack(CMsgPacker *pPacker) const
1527 {
1528 pPacker->AddInt(i: m_Enable);
1529 return pPacker->Error() != 0;
1530 }
1531};
1532
1533enum
1534{
1535 SOUND_GUN_FIRE=0,
1536 SOUND_SHOTGUN_FIRE,
1537 SOUND_GRENADE_FIRE,
1538 SOUND_HAMMER_FIRE,
1539 SOUND_HAMMER_HIT,
1540 SOUND_NINJA_FIRE,
1541 SOUND_GRENADE_EXPLODE,
1542 SOUND_NINJA_HIT,
1543 SOUND_LASER_FIRE,
1544 SOUND_LASER_BOUNCE,
1545 SOUND_WEAPON_SWITCH,
1546 SOUND_PLAYER_PAIN_SHORT,
1547 SOUND_PLAYER_PAIN_LONG,
1548 SOUND_BODY_LAND,
1549 SOUND_PLAYER_AIRJUMP,
1550 SOUND_PLAYER_JUMP,
1551 SOUND_PLAYER_DIE,
1552 SOUND_PLAYER_SPAWN,
1553 SOUND_PLAYER_SKID,
1554 SOUND_TEE_CRY,
1555 SOUND_HOOK_LOOP,
1556 SOUND_HOOK_ATTACH_GROUND,
1557 SOUND_HOOK_ATTACH_PLAYER,
1558 SOUND_HOOK_NOATTACH,
1559 SOUND_PICKUP_HEALTH,
1560 SOUND_PICKUP_ARMOR,
1561 SOUND_PICKUP_GRENADE,
1562 SOUND_PICKUP_SHOTGUN,
1563 SOUND_PICKUP_NINJA,
1564 SOUND_WEAPON_SPAWN,
1565 SOUND_WEAPON_NOAMMO,
1566 SOUND_HIT,
1567 SOUND_CHAT_SERVER,
1568 SOUND_CHAT_CLIENT,
1569 SOUND_CHAT_HIGHLIGHT,
1570 SOUND_CTF_DROP,
1571 SOUND_CTF_RETURN,
1572 SOUND_CTF_GRAB_PL,
1573 SOUND_CTF_GRAB_EN,
1574 SOUND_CTF_CAPTURE,
1575 SOUND_MENU,
1576 NUM_SOUNDS
1577};
1578enum
1579{
1580 WEAPON_HAMMER=0,
1581 WEAPON_GUN,
1582 WEAPON_SHOTGUN,
1583 WEAPON_GRENADE,
1584 WEAPON_LASER,
1585 WEAPON_NINJA,
1586 NUM_WEAPONS
1587};
1588
1589enum
1590{
1591 WEAPON_GAME = -3, // team switching etc
1592 WEAPON_SELF = -2, // console kill command
1593 WEAPON_WORLD = -1, // death tiles etc
1594};
1595
1596enum
1597{
1598 TEAM_GAME = TEAM_RED,
1599};
1600
1601class CNetObjHandler
1602{
1603 const char *m_pMsgFailedOn;
1604 const char *m_pObjFailedOn;
1605 const char *m_pObjCorrectedOn;
1606 char m_aUnpackedData[1024 * 2];
1607 int m_NumObjCorrections;
1608 int ClampInt(const char *pErrorMsg, int Value, int Min, int Max);
1609
1610 static const char *ms_apObjNames[];
1611 static const char *ms_apExObjNames[];
1612 static int ms_aObjSizes[];
1613 static int ms_aUnpackedObjSizes[];
1614 static int ms_aUnpackedExObjSizes[];
1615 static const char *ms_apMsgNames[];
1616 static const char *ms_apExMsgNames[];
1617
1618public:
1619 CNetObjHandler();
1620
1621 void *SecureUnpackObj(int Type, CUnpacker *pUnpacker);
1622 const char *GetObjName(int Type) const;
1623 int GetObjSize(int Type) const;
1624 int GetUnpackedObjSize(int Type) const;
1625 int NumObjCorrections() const;
1626 const char *CorrectedObjOn() const;
1627 const char *FailedObjOn() const;
1628
1629 const char *GetMsgName(int Type) const;
1630 void DebugDumpSnapshot(const class CSnapshot *pSnap) const;
1631 int DumpObj(int Type, const void *pData, int Size) const;
1632 void *SecureUnpackMsg(int Type, CUnpacker *pUnpacker);
1633 bool TeeHistorianRecordMsg(int Type);
1634 const char *FailedMsgOn() const;
1635};
1636
1637#endif // GENERATED_PROTOCOL_H
1638