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 NETEVENTTYPE_MAPSOUNDWORLD,
352 OFFSET_NETMSGTYPE_UUID
353};
354
355enum
356{
357 NETMSGTYPE_EX,
358 NETMSGTYPE_SV_MOTD,
359 NETMSGTYPE_SV_BROADCAST,
360 NETMSGTYPE_SV_CHAT,
361 NETMSGTYPE_SV_KILLMSG,
362 NETMSGTYPE_SV_SOUNDGLOBAL,
363 NETMSGTYPE_SV_TUNEPARAMS,
364 NETMSGTYPE_UNUSED,
365 NETMSGTYPE_SV_READYTOENTER,
366 NETMSGTYPE_SV_WEAPONPICKUP,
367 NETMSGTYPE_SV_EMOTICON,
368 NETMSGTYPE_SV_VOTECLEAROPTIONS,
369 NETMSGTYPE_SV_VOTEOPTIONLISTADD,
370 NETMSGTYPE_SV_VOTEOPTIONADD,
371 NETMSGTYPE_SV_VOTEOPTIONREMOVE,
372 NETMSGTYPE_SV_VOTESET,
373 NETMSGTYPE_SV_VOTESTATUS,
374 NETMSGTYPE_CL_SAY,
375 NETMSGTYPE_CL_SETTEAM,
376 NETMSGTYPE_CL_SETSPECTATORMODE,
377 NETMSGTYPE_CL_STARTINFO,
378 NETMSGTYPE_CL_CHANGEINFO,
379 NETMSGTYPE_CL_KILL,
380 NETMSGTYPE_CL_EMOTICON,
381 NETMSGTYPE_CL_VOTE,
382 NETMSGTYPE_CL_CALLVOTE,
383 NETMSGTYPE_CL_ISDDNETLEGACY,
384 NETMSGTYPE_SV_DDRACETIMELEGACY,
385 NETMSGTYPE_SV_RECORDLEGACY,
386 NETMSGTYPE_UNUSED2,
387 NETMSGTYPE_SV_TEAMSSTATELEGACY,
388 NETMSGTYPE_CL_SHOWOTHERSLEGACY,
389 NUM_NETMSGTYPES
390};
391
392enum
393{
394 __NETMSGTYPE_UUID_HELPER=OFFSET_NETMSGTYPE_UUID-1,
395 NETMSGTYPE_SV_MYOWNMESSAGE,
396 NETMSGTYPE_CL_SHOWDISTANCE,
397 NETMSGTYPE_CL_SHOWOTHERS,
398 NETMSGTYPE_CL_CAMERAINFO,
399 NETMSGTYPE_SV_TEAMSSTATE,
400 NETMSGTYPE_SV_DDRACETIME,
401 NETMSGTYPE_SV_RECORD,
402 NETMSGTYPE_SV_KILLMSGTEAM,
403 NETMSGTYPE_SV_YOURVOTE,
404 NETMSGTYPE_SV_RACEFINISH,
405 NETMSGTYPE_SV_COMMANDINFO,
406 NETMSGTYPE_SV_COMMANDINFOREMOVE,
407 NETMSGTYPE_SV_VOTEOPTIONGROUPSTART,
408 NETMSGTYPE_SV_VOTEOPTIONGROUPEND,
409 NETMSGTYPE_SV_COMMANDINFOGROUPSTART,
410 NETMSGTYPE_SV_COMMANDINFOGROUPEND,
411 NETMSGTYPE_SV_CHANGEINFOCOOLDOWN,
412 NETMSGTYPE_SV_MAPSOUNDGLOBAL,
413 NETMSGTYPE_SV_PREINPUT,
414 NETMSGTYPE_SV_SAVECODE,
415 NETMSGTYPE_SV_SERVERALERT,
416 NETMSGTYPE_SV_MODERATORALERT,
417 NETMSGTYPE_CL_ENABLESPECTATORCOUNT,
418 OFFSET_MAPITEMTYPE_UUID
419};
420
421struct CNetObj_PlayerInput
422{
423 static constexpr int ms_MsgId = NETOBJTYPE_PLAYERINPUT;
424 int m_Direction;
425 int m_TargetX;
426 int m_TargetY;
427 int m_Jump;
428 int m_Fire;
429 int m_Hook;
430 int m_PlayerFlags;
431 int m_WantedWeapon;
432 int m_NextWeapon;
433 int m_PrevWeapon;
434};
435
436struct CNetObj_Projectile
437{
438 static constexpr int ms_MsgId = NETOBJTYPE_PROJECTILE;
439 int m_X;
440 int m_Y;
441 int m_VelX;
442 int m_VelY;
443 int m_Type;
444 int m_StartTick;
445};
446
447struct CNetObj_Laser
448{
449 static constexpr int ms_MsgId = NETOBJTYPE_LASER;
450 int m_X;
451 int m_Y;
452 int m_FromX;
453 int m_FromY;
454 int m_StartTick;
455};
456
457struct CNetObj_Pickup
458{
459 static constexpr int ms_MsgId = NETOBJTYPE_PICKUP;
460 int m_X;
461 int m_Y;
462 int m_Type;
463 int m_Subtype;
464};
465
466struct CNetObj_Flag
467{
468 static constexpr int ms_MsgId = NETOBJTYPE_FLAG;
469 int m_X;
470 int m_Y;
471 int m_Team;
472};
473
474struct CNetObj_GameInfo
475{
476 static constexpr int ms_MsgId = NETOBJTYPE_GAMEINFO;
477 int m_GameFlags;
478 int m_GameStateFlags;
479 int m_RoundStartTick;
480 int m_WarmupTimer;
481 int m_ScoreLimit;
482 int m_TimeLimit;
483 int m_RoundNum;
484 int m_RoundCurrent;
485};
486
487struct CNetObj_GameData
488{
489 static constexpr int ms_MsgId = NETOBJTYPE_GAMEDATA;
490 int m_TeamscoreRed;
491 int m_TeamscoreBlue;
492 int m_FlagCarrierRed;
493 int m_FlagCarrierBlue;
494};
495
496struct CNetObj_CharacterCore
497{
498 static constexpr int ms_MsgId = NETOBJTYPE_CHARACTERCORE;
499 int m_Tick;
500 int m_X;
501 int m_Y;
502 int m_VelX;
503 int m_VelY;
504 int m_Angle;
505 int m_Direction;
506 int m_Jumped;
507 int m_HookedPlayer;
508 int m_HookState;
509 int m_HookTick;
510 int m_HookX;
511 int m_HookY;
512 int m_HookDx;
513 int m_HookDy;
514};
515
516struct CNetObj_Character : public CNetObj_CharacterCore
517{
518 static constexpr int ms_MsgId = NETOBJTYPE_CHARACTER;
519 int m_PlayerFlags;
520 int m_Health;
521 int m_Armor;
522 int m_AmmoCount;
523 int m_Weapon;
524 int m_Emote;
525 int m_AttackTick;
526};
527
528struct CNetObj_PlayerInfo
529{
530 static constexpr int ms_MsgId = NETOBJTYPE_PLAYERINFO;
531 int m_Local;
532 int m_ClientId;
533 int m_Team;
534 int m_Score;
535 int m_Latency;
536};
537
538struct CNetObj_ClientInfo
539{
540 static constexpr int ms_MsgId = NETOBJTYPE_CLIENTINFO;
541 int m_aName[4];
542 int m_aClan[3];
543 int m_Country;
544 int m_aSkin[6];
545 int m_UseCustomColor;
546 int m_ColorBody;
547 int m_ColorFeet;
548};
549
550struct CNetObj_SpectatorInfo
551{
552 static constexpr int ms_MsgId = NETOBJTYPE_SPECTATORINFO;
553 int m_SpectatorId;
554 int m_X;
555 int m_Y;
556};
557
558struct CNetObj_MyOwnObject
559{
560 static constexpr int ms_MsgId = NETOBJTYPE_MYOWNOBJECT;
561 int m_Test;
562};
563
564struct CNetObj_DDNetCharacter
565{
566 static constexpr int ms_MsgId = NETOBJTYPE_DDNETCHARACTER;
567 int m_Flags;
568 int m_FreezeEnd;
569 int m_Jumps;
570 int m_TeleCheckpoint;
571 int m_StrongWeakId;
572 int m_JumpedTotal;
573 int m_NinjaActivationTick;
574 int m_FreezeStart;
575 int m_TargetX;
576 int m_TargetY;
577 int m_TuneZoneOverride;
578};
579
580struct CNetObj_DDNetPlayer
581{
582 static constexpr int ms_MsgId = NETOBJTYPE_DDNETPLAYER;
583 int m_Flags;
584 int m_AuthLevel;
585 int m_FinishTimeSeconds;
586 int m_FinishTimeMillis;
587};
588
589struct CNetObj_GameInfoEx
590{
591 static constexpr int ms_MsgId = NETOBJTYPE_GAMEINFOEX;
592 int m_Flags;
593 int m_Version;
594 int m_Flags2;
595};
596
597struct CNetObj_DDRaceProjectile
598{
599 static constexpr int ms_MsgId = NETOBJTYPE_DDRACEPROJECTILE;
600 int m_X;
601 int m_Y;
602 int m_Angle;
603 int m_Data;
604 int m_Type;
605 int m_StartTick;
606};
607
608struct CNetObj_DDNetLaser
609{
610 static constexpr int ms_MsgId = NETOBJTYPE_DDNETLASER;
611 int m_ToX;
612 int m_ToY;
613 int m_FromX;
614 int m_FromY;
615 int m_StartTick;
616 int m_Owner;
617 int m_Type;
618 int m_SwitchNumber;
619 int m_Subtype;
620 int m_Flags;
621};
622
623struct CNetObj_DDNetProjectile
624{
625 static constexpr int ms_MsgId = NETOBJTYPE_DDNETPROJECTILE;
626 int m_X;
627 int m_Y;
628 int m_VelX;
629 int m_VelY;
630 int m_Type;
631 int m_StartTick;
632 int m_Owner;
633 int m_SwitchNumber;
634 int m_TuneZone;
635 int m_Flags;
636};
637
638struct CNetObj_DDNetPickup
639{
640 static constexpr int ms_MsgId = NETOBJTYPE_DDNETPICKUP;
641 int m_X;
642 int m_Y;
643 int m_Type;
644 int m_Subtype;
645 int m_SwitchNumber;
646 int m_Flags;
647};
648
649struct CNetObj_DDNetSpectatorInfo
650{
651 static constexpr int ms_MsgId = NETOBJTYPE_DDNETSPECTATORINFO;
652 int m_HasCameraInfo;
653 int m_Zoom;
654 int m_Deadzone;
655 int m_FollowFactor;
656 int m_SpectatorCount;
657};
658
659struct CNetObj_SpectatorCount
660{
661 static constexpr int ms_MsgId = NETOBJTYPE_SPECTATORCOUNT;
662 int m_NumSpectators;
663};
664
665struct CNetEvent_Common
666{
667 static constexpr int ms_MsgId = NETEVENTTYPE_COMMON;
668 int m_X;
669 int m_Y;
670};
671
672struct CNetEvent_Explosion : public CNetEvent_Common
673{
674 static constexpr int ms_MsgId = NETEVENTTYPE_EXPLOSION;
675};
676
677struct CNetEvent_Spawn : public CNetEvent_Common
678{
679 static constexpr int ms_MsgId = NETEVENTTYPE_SPAWN;
680};
681
682struct CNetEvent_HammerHit : public CNetEvent_Common
683{
684 static constexpr int ms_MsgId = NETEVENTTYPE_HAMMERHIT;
685};
686
687struct CNetEvent_Death : public CNetEvent_Common
688{
689 static constexpr int ms_MsgId = NETEVENTTYPE_DEATH;
690 int m_ClientId;
691};
692
693struct CNetEvent_SoundGlobal : public CNetEvent_Common
694{
695 static constexpr int ms_MsgId = NETEVENTTYPE_SOUNDGLOBAL;
696 int m_SoundId;
697};
698
699struct CNetEvent_SoundWorld : public CNetEvent_Common
700{
701 static constexpr int ms_MsgId = NETEVENTTYPE_SOUNDWORLD;
702 int m_SoundId;
703};
704
705struct CNetEvent_DamageInd : public CNetEvent_Common
706{
707 static constexpr int ms_MsgId = NETEVENTTYPE_DAMAGEIND;
708 int m_Angle;
709};
710
711struct CNetEvent_Birthday : public CNetEvent_Common
712{
713 static constexpr int ms_MsgId = NETEVENTTYPE_BIRTHDAY;
714};
715
716struct CNetEvent_Finish : public CNetEvent_Common
717{
718 static constexpr int ms_MsgId = NETEVENTTYPE_FINISH;
719};
720
721struct CNetObj_MyOwnEvent
722{
723 static constexpr int ms_MsgId = NETOBJTYPE_MYOWNEVENT;
724 int m_Test;
725};
726
727struct CNetObj_SpecChar
728{
729 static constexpr int ms_MsgId = NETOBJTYPE_SPECCHAR;
730 int m_X;
731 int m_Y;
732};
733
734struct CNetObj_SwitchState
735{
736 static constexpr int ms_MsgId = NETOBJTYPE_SWITCHSTATE;
737 int m_HighestSwitchNumber;
738 int m_aStatus[8];
739 int m_aSwitchNumbers[4];
740 int m_aEndTicks[4];
741};
742
743struct CNetObj_EntityEx
744{
745 static constexpr int ms_MsgId = NETOBJTYPE_ENTITYEX;
746 int m_SwitchNumber;
747 int m_Layer;
748 int m_EntityClass;
749};
750
751struct CNetEvent_MapSoundWorld : public CNetEvent_Common
752{
753 static constexpr int ms_MsgId = NETEVENTTYPE_MAPSOUNDWORLD;
754 int m_SoundId;
755};
756
757struct CNetMsg_Sv_Motd
758{
759 static constexpr int ms_MsgId = NETMSGTYPE_SV_MOTD;
760 const char *m_pMessage;
761
762 bool Pack(CMsgPacker *pPacker) const
763 {
764 pPacker->AddString(pStr: m_pMessage, Limit: -1);
765 return pPacker->Error() != 0;
766 }
767};
768
769struct CNetMsg_Sv_Broadcast
770{
771 static constexpr int ms_MsgId = NETMSGTYPE_SV_BROADCAST;
772 const char *m_pMessage;
773
774 bool Pack(CMsgPacker *pPacker) const
775 {
776 pPacker->AddString(pStr: m_pMessage, Limit: -1);
777 return pPacker->Error() != 0;
778 }
779};
780
781struct CNetMsg_Sv_Chat
782{
783 static constexpr int ms_MsgId = NETMSGTYPE_SV_CHAT;
784 int m_Team;
785 int m_ClientId;
786 const char *m_pMessage;
787
788 bool Pack(CMsgPacker *pPacker) const
789 {
790 pPacker->AddInt(i: m_Team);
791 pPacker->AddInt(i: m_ClientId);
792 pPacker->AddString(pStr: m_pMessage, Limit: -1);
793 return pPacker->Error() != 0;
794 }
795};
796
797struct CNetMsg_Sv_KillMsg
798{
799 static constexpr int ms_MsgId = NETMSGTYPE_SV_KILLMSG;
800 int m_Killer;
801 int m_Victim;
802 int m_Weapon;
803 int m_ModeSpecial;
804
805 bool Pack(CMsgPacker *pPacker) const
806 {
807 pPacker->AddInt(i: m_Killer);
808 pPacker->AddInt(i: m_Victim);
809 pPacker->AddInt(i: m_Weapon);
810 pPacker->AddInt(i: m_ModeSpecial);
811 return pPacker->Error() != 0;
812 }
813};
814
815struct CNetMsg_Sv_SoundGlobal
816{
817 static constexpr int ms_MsgId = NETMSGTYPE_SV_SOUNDGLOBAL;
818 int m_SoundId;
819
820 bool Pack(CMsgPacker *pPacker) const
821 {
822 pPacker->AddInt(i: m_SoundId);
823 return pPacker->Error() != 0;
824 }
825};
826
827struct CNetMsg_Sv_TuneParams
828{
829 static constexpr int ms_MsgId = NETMSGTYPE_SV_TUNEPARAMS;
830
831 bool Pack(CMsgPacker *pPacker) const
832 {
833 return pPacker->Error() != 0;
834 }
835};
836
837struct CNetMsg_Unused
838{
839 static constexpr int ms_MsgId = NETMSGTYPE_UNUSED;
840
841 bool Pack(CMsgPacker *pPacker) const
842 {
843 return pPacker->Error() != 0;
844 }
845};
846
847struct CNetMsg_Sv_ReadyToEnter
848{
849 static constexpr int ms_MsgId = NETMSGTYPE_SV_READYTOENTER;
850
851 bool Pack(CMsgPacker *pPacker) const
852 {
853 return pPacker->Error() != 0;
854 }
855};
856
857struct CNetMsg_Sv_WeaponPickup
858{
859 static constexpr int ms_MsgId = NETMSGTYPE_SV_WEAPONPICKUP;
860 int m_Weapon;
861
862 bool Pack(CMsgPacker *pPacker) const
863 {
864 pPacker->AddInt(i: m_Weapon);
865 return pPacker->Error() != 0;
866 }
867};
868
869struct CNetMsg_Sv_Emoticon
870{
871 static constexpr int ms_MsgId = NETMSGTYPE_SV_EMOTICON;
872 int m_ClientId;
873 int m_Emoticon;
874
875 bool Pack(CMsgPacker *pPacker) const
876 {
877 pPacker->AddInt(i: m_ClientId);
878 pPacker->AddInt(i: m_Emoticon);
879 return pPacker->Error() != 0;
880 }
881};
882
883struct CNetMsg_Sv_VoteClearOptions
884{
885 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTECLEAROPTIONS;
886
887 bool Pack(CMsgPacker *pPacker) const
888 {
889 return pPacker->Error() != 0;
890 }
891};
892
893struct CNetMsg_Sv_VoteOptionListAdd
894{
895 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONLISTADD;
896 int m_NumOptions;
897 const char *m_pDescription0;
898 const char *m_pDescription1;
899 const char *m_pDescription2;
900 const char *m_pDescription3;
901 const char *m_pDescription4;
902 const char *m_pDescription5;
903 const char *m_pDescription6;
904 const char *m_pDescription7;
905 const char *m_pDescription8;
906 const char *m_pDescription9;
907 const char *m_pDescription10;
908 const char *m_pDescription11;
909 const char *m_pDescription12;
910 const char *m_pDescription13;
911 const char *m_pDescription14;
912
913 bool Pack(CMsgPacker *pPacker) const
914 {
915 pPacker->AddInt(i: m_NumOptions);
916 pPacker->AddString(pStr: m_pDescription0, Limit: -1);
917 pPacker->AddString(pStr: m_pDescription1, Limit: -1);
918 pPacker->AddString(pStr: m_pDescription2, Limit: -1);
919 pPacker->AddString(pStr: m_pDescription3, Limit: -1);
920 pPacker->AddString(pStr: m_pDescription4, Limit: -1);
921 pPacker->AddString(pStr: m_pDescription5, Limit: -1);
922 pPacker->AddString(pStr: m_pDescription6, Limit: -1);
923 pPacker->AddString(pStr: m_pDescription7, Limit: -1);
924 pPacker->AddString(pStr: m_pDescription8, Limit: -1);
925 pPacker->AddString(pStr: m_pDescription9, Limit: -1);
926 pPacker->AddString(pStr: m_pDescription10, Limit: -1);
927 pPacker->AddString(pStr: m_pDescription11, Limit: -1);
928 pPacker->AddString(pStr: m_pDescription12, Limit: -1);
929 pPacker->AddString(pStr: m_pDescription13, Limit: -1);
930 pPacker->AddString(pStr: m_pDescription14, Limit: -1);
931 return pPacker->Error() != 0;
932 }
933};
934
935struct CNetMsg_Sv_VoteOptionAdd
936{
937 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONADD;
938 const char *m_pDescription;
939
940 bool Pack(CMsgPacker *pPacker) const
941 {
942 pPacker->AddString(pStr: m_pDescription, Limit: -1);
943 return pPacker->Error() != 0;
944 }
945};
946
947struct CNetMsg_Sv_VoteOptionRemove
948{
949 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONREMOVE;
950 const char *m_pDescription;
951
952 bool Pack(CMsgPacker *pPacker) const
953 {
954 pPacker->AddString(pStr: m_pDescription, Limit: -1);
955 return pPacker->Error() != 0;
956 }
957};
958
959struct CNetMsg_Sv_VoteSet
960{
961 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTESET;
962 int m_Timeout;
963 const char *m_pDescription;
964 const char *m_pReason;
965
966 bool Pack(CMsgPacker *pPacker) const
967 {
968 pPacker->AddInt(i: m_Timeout);
969 pPacker->AddString(pStr: m_pDescription, Limit: -1);
970 pPacker->AddString(pStr: m_pReason, Limit: -1);
971 return pPacker->Error() != 0;
972 }
973};
974
975struct CNetMsg_Sv_VoteStatus
976{
977 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTESTATUS;
978 int m_Yes;
979 int m_No;
980 int m_Pass;
981 int m_Total;
982
983 bool Pack(CMsgPacker *pPacker) const
984 {
985 pPacker->AddInt(i: m_Yes);
986 pPacker->AddInt(i: m_No);
987 pPacker->AddInt(i: m_Pass);
988 pPacker->AddInt(i: m_Total);
989 return pPacker->Error() != 0;
990 }
991};
992
993struct CNetMsg_Cl_Say
994{
995 static constexpr int ms_MsgId = NETMSGTYPE_CL_SAY;
996 int m_Team;
997 const char *m_pMessage;
998
999 bool Pack(CMsgPacker *pPacker) const
1000 {
1001 pPacker->AddInt(i: m_Team);
1002 pPacker->AddString(pStr: m_pMessage, Limit: -1);
1003 return pPacker->Error() != 0;
1004 }
1005};
1006
1007struct CNetMsg_Cl_SetTeam
1008{
1009 static constexpr int ms_MsgId = NETMSGTYPE_CL_SETTEAM;
1010 int m_Team;
1011
1012 bool Pack(CMsgPacker *pPacker) const
1013 {
1014 pPacker->AddInt(i: m_Team);
1015 return pPacker->Error() != 0;
1016 }
1017};
1018
1019struct CNetMsg_Cl_SetSpectatorMode
1020{
1021 static constexpr int ms_MsgId = NETMSGTYPE_CL_SETSPECTATORMODE;
1022 int m_SpectatorId;
1023
1024 bool Pack(CMsgPacker *pPacker) const
1025 {
1026 pPacker->AddInt(i: m_SpectatorId);
1027 return pPacker->Error() != 0;
1028 }
1029};
1030
1031struct CNetMsg_Cl_StartInfo
1032{
1033 static constexpr int ms_MsgId = NETMSGTYPE_CL_STARTINFO;
1034 const char *m_pName;
1035 const char *m_pClan;
1036 int m_Country;
1037 const char *m_pSkin;
1038 int m_UseCustomColor;
1039 int m_ColorBody;
1040 int m_ColorFeet;
1041
1042 bool Pack(CMsgPacker *pPacker) const
1043 {
1044 pPacker->AddString(pStr: m_pName, Limit: -1);
1045 pPacker->AddString(pStr: m_pClan, Limit: -1);
1046 pPacker->AddInt(i: m_Country);
1047 pPacker->AddString(pStr: m_pSkin, Limit: -1);
1048 pPacker->AddInt(i: m_UseCustomColor);
1049 pPacker->AddInt(i: m_ColorBody);
1050 pPacker->AddInt(i: m_ColorFeet);
1051 return pPacker->Error() != 0;
1052 }
1053};
1054
1055struct CNetMsg_Cl_ChangeInfo
1056{
1057 static constexpr int ms_MsgId = NETMSGTYPE_CL_CHANGEINFO;
1058 const char *m_pName;
1059 const char *m_pClan;
1060 int m_Country;
1061 const char *m_pSkin;
1062 int m_UseCustomColor;
1063 int m_ColorBody;
1064 int m_ColorFeet;
1065
1066 bool Pack(CMsgPacker *pPacker) const
1067 {
1068 pPacker->AddString(pStr: m_pName, Limit: -1);
1069 pPacker->AddString(pStr: m_pClan, Limit: -1);
1070 pPacker->AddInt(i: m_Country);
1071 pPacker->AddString(pStr: m_pSkin, Limit: -1);
1072 pPacker->AddInt(i: m_UseCustomColor);
1073 pPacker->AddInt(i: m_ColorBody);
1074 pPacker->AddInt(i: m_ColorFeet);
1075 return pPacker->Error() != 0;
1076 }
1077};
1078
1079struct CNetMsg_Cl_Kill
1080{
1081 static constexpr int ms_MsgId = NETMSGTYPE_CL_KILL;
1082
1083 bool Pack(CMsgPacker *pPacker) const
1084 {
1085 return pPacker->Error() != 0;
1086 }
1087};
1088
1089struct CNetMsg_Cl_Emoticon
1090{
1091 static constexpr int ms_MsgId = NETMSGTYPE_CL_EMOTICON;
1092 int m_Emoticon;
1093
1094 bool Pack(CMsgPacker *pPacker) const
1095 {
1096 pPacker->AddInt(i: m_Emoticon);
1097 return pPacker->Error() != 0;
1098 }
1099};
1100
1101struct CNetMsg_Cl_Vote
1102{
1103 static constexpr int ms_MsgId = NETMSGTYPE_CL_VOTE;
1104 int m_Vote;
1105
1106 bool Pack(CMsgPacker *pPacker) const
1107 {
1108 pPacker->AddInt(i: m_Vote);
1109 return pPacker->Error() != 0;
1110 }
1111};
1112
1113struct CNetMsg_Cl_CallVote
1114{
1115 static constexpr int ms_MsgId = NETMSGTYPE_CL_CALLVOTE;
1116 const char *m_pType;
1117 const char *m_pValue;
1118 const char *m_pReason;
1119
1120 bool Pack(CMsgPacker *pPacker) const
1121 {
1122 pPacker->AddString(pStr: m_pType, Limit: -1);
1123 pPacker->AddString(pStr: m_pValue, Limit: -1);
1124 pPacker->AddString(pStr: m_pReason, Limit: -1);
1125 return pPacker->Error() != 0;
1126 }
1127};
1128
1129struct CNetMsg_Cl_IsDDNetLegacy
1130{
1131 static constexpr int ms_MsgId = NETMSGTYPE_CL_ISDDNETLEGACY;
1132
1133 bool Pack(CMsgPacker *pPacker) const
1134 {
1135 return pPacker->Error() != 0;
1136 }
1137};
1138
1139struct CNetMsg_Sv_DDRaceTimeLegacy
1140{
1141 static constexpr int ms_MsgId = NETMSGTYPE_SV_DDRACETIMELEGACY;
1142 int m_Time;
1143 int m_Check;
1144 int m_Finish;
1145
1146 bool Pack(CMsgPacker *pPacker) const
1147 {
1148 pPacker->AddInt(i: m_Time);
1149 pPacker->AddInt(i: m_Check);
1150 pPacker->AddInt(i: m_Finish);
1151 return pPacker->Error() != 0;
1152 }
1153};
1154
1155struct CNetMsg_Sv_RecordLegacy
1156{
1157 static constexpr int ms_MsgId = NETMSGTYPE_SV_RECORDLEGACY;
1158 int m_ServerTimeBest;
1159 int m_PlayerTimeBest;
1160
1161 bool Pack(CMsgPacker *pPacker) const
1162 {
1163 pPacker->AddInt(i: m_ServerTimeBest);
1164 pPacker->AddInt(i: m_PlayerTimeBest);
1165 return pPacker->Error() != 0;
1166 }
1167};
1168
1169struct CNetMsg_Unused2
1170{
1171 static constexpr int ms_MsgId = NETMSGTYPE_UNUSED2;
1172
1173 bool Pack(CMsgPacker *pPacker) const
1174 {
1175 return pPacker->Error() != 0;
1176 }
1177};
1178
1179struct CNetMsg_Sv_TeamsStateLegacy
1180{
1181 static constexpr int ms_MsgId = NETMSGTYPE_SV_TEAMSSTATELEGACY;
1182
1183 bool Pack(CMsgPacker *pPacker) const
1184 {
1185 return pPacker->Error() != 0;
1186 }
1187};
1188
1189struct CNetMsg_Cl_ShowOthersLegacy
1190{
1191 static constexpr int ms_MsgId = NETMSGTYPE_CL_SHOWOTHERSLEGACY;
1192 int m_Show;
1193
1194 bool Pack(CMsgPacker *pPacker) const
1195 {
1196 pPacker->AddInt(i: m_Show);
1197 return pPacker->Error() != 0;
1198 }
1199};
1200
1201struct CNetMsg_Sv_MyOwnMessage
1202{
1203 static constexpr int ms_MsgId = NETMSGTYPE_SV_MYOWNMESSAGE;
1204 int m_Test;
1205
1206 bool Pack(CMsgPacker *pPacker) const
1207 {
1208 pPacker->AddInt(i: m_Test);
1209 return pPacker->Error() != 0;
1210 }
1211};
1212
1213struct CNetMsg_Cl_ShowDistance
1214{
1215 static constexpr int ms_MsgId = NETMSGTYPE_CL_SHOWDISTANCE;
1216 int m_X;
1217 int m_Y;
1218
1219 bool Pack(CMsgPacker *pPacker) const
1220 {
1221 pPacker->AddInt(i: m_X);
1222 pPacker->AddInt(i: m_Y);
1223 return pPacker->Error() != 0;
1224 }
1225};
1226
1227struct CNetMsg_Cl_ShowOthers
1228{
1229 static constexpr int ms_MsgId = NETMSGTYPE_CL_SHOWOTHERS;
1230 int m_Show;
1231
1232 bool Pack(CMsgPacker *pPacker) const
1233 {
1234 pPacker->AddInt(i: m_Show);
1235 return pPacker->Error() != 0;
1236 }
1237};
1238
1239struct CNetMsg_Cl_CameraInfo
1240{
1241 static constexpr int ms_MsgId = NETMSGTYPE_CL_CAMERAINFO;
1242 int m_Zoom;
1243 int m_Deadzone;
1244 int m_FollowFactor;
1245
1246 bool Pack(CMsgPacker *pPacker) const
1247 {
1248 pPacker->AddInt(i: m_Zoom);
1249 pPacker->AddInt(i: m_Deadzone);
1250 pPacker->AddInt(i: m_FollowFactor);
1251 return pPacker->Error() != 0;
1252 }
1253};
1254
1255struct CNetMsg_Sv_TeamsState
1256{
1257 static constexpr int ms_MsgId = NETMSGTYPE_SV_TEAMSSTATE;
1258
1259 bool Pack(CMsgPacker *pPacker) const
1260 {
1261 return pPacker->Error() != 0;
1262 }
1263};
1264
1265struct CNetMsg_Sv_DDRaceTime
1266{
1267 static constexpr int ms_MsgId = NETMSGTYPE_SV_DDRACETIME;
1268 int m_Time;
1269 int m_Check;
1270 int m_Finish;
1271
1272 bool Pack(CMsgPacker *pPacker) const
1273 {
1274 pPacker->AddInt(i: m_Time);
1275 pPacker->AddInt(i: m_Check);
1276 pPacker->AddInt(i: m_Finish);
1277 return pPacker->Error() != 0;
1278 }
1279};
1280
1281struct CNetMsg_Sv_Record
1282{
1283 static constexpr int ms_MsgId = NETMSGTYPE_SV_RECORD;
1284 int m_ServerTimeBest;
1285 int m_PlayerTimeBest;
1286
1287 bool Pack(CMsgPacker *pPacker) const
1288 {
1289 pPacker->AddInt(i: m_ServerTimeBest);
1290 pPacker->AddInt(i: m_PlayerTimeBest);
1291 return pPacker->Error() != 0;
1292 }
1293};
1294
1295struct CNetMsg_Sv_KillMsgTeam
1296{
1297 static constexpr int ms_MsgId = NETMSGTYPE_SV_KILLMSGTEAM;
1298 int m_Team;
1299 int m_First;
1300
1301 bool Pack(CMsgPacker *pPacker) const
1302 {
1303 pPacker->AddInt(i: m_Team);
1304 pPacker->AddInt(i: m_First);
1305 return pPacker->Error() != 0;
1306 }
1307};
1308
1309struct CNetMsg_Sv_YourVote
1310{
1311 static constexpr int ms_MsgId = NETMSGTYPE_SV_YOURVOTE;
1312 int m_Voted;
1313
1314 bool Pack(CMsgPacker *pPacker) const
1315 {
1316 pPacker->AddInt(i: m_Voted);
1317 return pPacker->Error() != 0;
1318 }
1319};
1320
1321struct CNetMsg_Sv_RaceFinish
1322{
1323 static constexpr int ms_MsgId = NETMSGTYPE_SV_RACEFINISH;
1324 int m_ClientId;
1325 int m_Time;
1326 int m_Diff;
1327 int m_RecordPersonal;
1328 int m_RecordServer;
1329
1330 bool Pack(CMsgPacker *pPacker) const
1331 {
1332 pPacker->AddInt(i: m_ClientId);
1333 pPacker->AddInt(i: m_Time);
1334 pPacker->AddInt(i: m_Diff);
1335 pPacker->AddInt(i: m_RecordPersonal);
1336 pPacker->AddInt(i: m_RecordServer);
1337 return pPacker->Error() != 0;
1338 }
1339};
1340
1341struct CNetMsg_Sv_CommandInfo
1342{
1343 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFO;
1344 const char *m_pName;
1345 const char *m_pArgsFormat;
1346 const char *m_pHelpText;
1347
1348 bool Pack(CMsgPacker *pPacker) const
1349 {
1350 pPacker->AddString(pStr: m_pName, Limit: -1);
1351 pPacker->AddString(pStr: m_pArgsFormat, Limit: -1);
1352 pPacker->AddString(pStr: m_pHelpText, Limit: -1);
1353 return pPacker->Error() != 0;
1354 }
1355};
1356
1357struct CNetMsg_Sv_CommandInfoRemove
1358{
1359 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFOREMOVE;
1360 const char *m_pName;
1361
1362 bool Pack(CMsgPacker *pPacker) const
1363 {
1364 pPacker->AddString(pStr: m_pName, Limit: -1);
1365 return pPacker->Error() != 0;
1366 }
1367};
1368
1369struct CNetMsg_Sv_VoteOptionGroupStart
1370{
1371 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONGROUPSTART;
1372
1373 bool Pack(CMsgPacker *pPacker) const
1374 {
1375 return pPacker->Error() != 0;
1376 }
1377};
1378
1379struct CNetMsg_Sv_VoteOptionGroupEnd
1380{
1381 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONGROUPEND;
1382
1383 bool Pack(CMsgPacker *pPacker) const
1384 {
1385 return pPacker->Error() != 0;
1386 }
1387};
1388
1389struct CNetMsg_Sv_CommandInfoGroupStart
1390{
1391 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFOGROUPSTART;
1392
1393 bool Pack(CMsgPacker *pPacker) const
1394 {
1395 return pPacker->Error() != 0;
1396 }
1397};
1398
1399struct CNetMsg_Sv_CommandInfoGroupEnd
1400{
1401 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFOGROUPEND;
1402
1403 bool Pack(CMsgPacker *pPacker) const
1404 {
1405 return pPacker->Error() != 0;
1406 }
1407};
1408
1409struct CNetMsg_Sv_ChangeInfoCooldown
1410{
1411 static constexpr int ms_MsgId = NETMSGTYPE_SV_CHANGEINFOCOOLDOWN;
1412 int m_WaitUntil;
1413
1414 bool Pack(CMsgPacker *pPacker) const
1415 {
1416 pPacker->AddInt(i: m_WaitUntil);
1417 return pPacker->Error() != 0;
1418 }
1419};
1420
1421struct CNetMsg_Sv_MapSoundGlobal
1422{
1423 static constexpr int ms_MsgId = NETMSGTYPE_SV_MAPSOUNDGLOBAL;
1424 int m_SoundId;
1425
1426 bool Pack(CMsgPacker *pPacker) const
1427 {
1428 pPacker->AddInt(i: m_SoundId);
1429 return pPacker->Error() != 0;
1430 }
1431};
1432
1433struct CNetMsg_Sv_PreInput
1434{
1435 static constexpr int ms_MsgId = NETMSGTYPE_SV_PREINPUT;
1436 int m_Direction;
1437 int m_TargetX;
1438 int m_TargetY;
1439 int m_Jump;
1440 int m_Fire;
1441 int m_Hook;
1442 int m_WantedWeapon;
1443 int m_NextWeapon;
1444 int m_PrevWeapon;
1445 int m_Owner;
1446 int m_IntendedTick;
1447
1448 bool Pack(CMsgPacker *pPacker) const
1449 {
1450 pPacker->AddInt(i: m_Direction);
1451 pPacker->AddInt(i: m_TargetX);
1452 pPacker->AddInt(i: m_TargetY);
1453 pPacker->AddInt(i: m_Jump);
1454 pPacker->AddInt(i: m_Fire);
1455 pPacker->AddInt(i: m_Hook);
1456 pPacker->AddInt(i: m_WantedWeapon);
1457 pPacker->AddInt(i: m_NextWeapon);
1458 pPacker->AddInt(i: m_PrevWeapon);
1459 pPacker->AddInt(i: m_Owner);
1460 pPacker->AddInt(i: m_IntendedTick);
1461 return pPacker->Error() != 0;
1462 }
1463};
1464
1465struct CNetMsg_Sv_SaveCode
1466{
1467 static constexpr int ms_MsgId = NETMSGTYPE_SV_SAVECODE;
1468 int m_State;
1469 const char *m_pError;
1470 const char *m_pSaveRequester;
1471 const char *m_pServerName;
1472 const char *m_pGeneratedCode;
1473 const char *m_pCode;
1474 const char *m_pTeamMembers;
1475
1476 bool Pack(CMsgPacker *pPacker) const
1477 {
1478 pPacker->AddInt(i: m_State);
1479 pPacker->AddString(pStr: m_pError, Limit: -1);
1480 pPacker->AddString(pStr: m_pSaveRequester, Limit: -1);
1481 pPacker->AddString(pStr: m_pServerName, Limit: -1);
1482 pPacker->AddString(pStr: m_pGeneratedCode, Limit: -1);
1483 pPacker->AddString(pStr: m_pCode, Limit: -1);
1484 pPacker->AddString(pStr: m_pTeamMembers, Limit: -1);
1485 return pPacker->Error() != 0;
1486 }
1487};
1488
1489struct CNetMsg_Sv_ServerAlert
1490{
1491 static constexpr int ms_MsgId = NETMSGTYPE_SV_SERVERALERT;
1492 const char *m_pMessage;
1493
1494 bool Pack(CMsgPacker *pPacker) const
1495 {
1496 pPacker->AddString(pStr: m_pMessage, Limit: -1);
1497 return pPacker->Error() != 0;
1498 }
1499};
1500
1501struct CNetMsg_Sv_ModeratorAlert
1502{
1503 static constexpr int ms_MsgId = NETMSGTYPE_SV_MODERATORALERT;
1504 const char *m_pMessage;
1505
1506 bool Pack(CMsgPacker *pPacker) const
1507 {
1508 pPacker->AddString(pStr: m_pMessage, Limit: -1);
1509 return pPacker->Error() != 0;
1510 }
1511};
1512
1513struct CNetMsg_Cl_EnableSpectatorCount
1514{
1515 static constexpr int ms_MsgId = NETMSGTYPE_CL_ENABLESPECTATORCOUNT;
1516 int m_Enable;
1517
1518 bool Pack(CMsgPacker *pPacker) const
1519 {
1520 pPacker->AddInt(i: m_Enable);
1521 return pPacker->Error() != 0;
1522 }
1523};
1524
1525enum
1526{
1527 SOUND_GUN_FIRE=0,
1528 SOUND_SHOTGUN_FIRE,
1529 SOUND_GRENADE_FIRE,
1530 SOUND_HAMMER_FIRE,
1531 SOUND_HAMMER_HIT,
1532 SOUND_NINJA_FIRE,
1533 SOUND_GRENADE_EXPLODE,
1534 SOUND_NINJA_HIT,
1535 SOUND_LASER_FIRE,
1536 SOUND_LASER_BOUNCE,
1537 SOUND_WEAPON_SWITCH,
1538 SOUND_PLAYER_PAIN_SHORT,
1539 SOUND_PLAYER_PAIN_LONG,
1540 SOUND_BODY_LAND,
1541 SOUND_PLAYER_AIRJUMP,
1542 SOUND_PLAYER_JUMP,
1543 SOUND_PLAYER_DIE,
1544 SOUND_PLAYER_SPAWN,
1545 SOUND_PLAYER_SKID,
1546 SOUND_TEE_CRY,
1547 SOUND_HOOK_LOOP,
1548 SOUND_HOOK_ATTACH_GROUND,
1549 SOUND_HOOK_ATTACH_PLAYER,
1550 SOUND_HOOK_NOATTACH,
1551 SOUND_PICKUP_HEALTH,
1552 SOUND_PICKUP_ARMOR,
1553 SOUND_PICKUP_GRENADE,
1554 SOUND_PICKUP_SHOTGUN,
1555 SOUND_PICKUP_NINJA,
1556 SOUND_WEAPON_SPAWN,
1557 SOUND_WEAPON_NOAMMO,
1558 SOUND_HIT,
1559 SOUND_CHAT_SERVER,
1560 SOUND_CHAT_CLIENT,
1561 SOUND_CHAT_HIGHLIGHT,
1562 SOUND_CTF_DROP,
1563 SOUND_CTF_RETURN,
1564 SOUND_CTF_GRAB_PL,
1565 SOUND_CTF_GRAB_EN,
1566 SOUND_CTF_CAPTURE,
1567 SOUND_MENU,
1568 NUM_SOUNDS
1569};
1570enum
1571{
1572 WEAPON_HAMMER=0,
1573 WEAPON_GUN,
1574 WEAPON_SHOTGUN,
1575 WEAPON_GRENADE,
1576 WEAPON_LASER,
1577 WEAPON_NINJA,
1578 NUM_WEAPONS
1579};
1580
1581enum
1582{
1583 WEAPON_GAME = -3, // team switching etc
1584 WEAPON_SELF = -2, // console kill command
1585 WEAPON_WORLD = -1, // death tiles etc
1586};
1587
1588enum
1589{
1590 TEAM_GAME = TEAM_RED,
1591};
1592
1593class CNetObjHandler
1594{
1595 const char *m_pMsgFailedOn;
1596 const char *m_pObjFailedOn;
1597 const char *m_pObjCorrectedOn;
1598 char m_aUnpackedData[1024 * 2];
1599 int m_NumObjCorrections;
1600 int ClampInt(const char *pErrorMsg, int Value, int Min, int Max);
1601
1602 static const char *ms_apObjNames[];
1603 static const char *ms_apExObjNames[];
1604 static int ms_aObjSizes[];
1605 static int ms_aUnpackedObjSizes[];
1606 static int ms_aUnpackedExObjSizes[];
1607 static const char *ms_apMsgNames[];
1608 static const char *ms_apExMsgNames[];
1609
1610public:
1611 CNetObjHandler();
1612
1613 void *SecureUnpackObj(int Type, CUnpacker *pUnpacker);
1614 const char *GetObjName(int Type) const;
1615 int GetObjSize(int Type) const;
1616 int GetUnpackedObjSize(int Type) const;
1617 int NumObjCorrections() const;
1618 const char *CorrectedObjOn() const;
1619 const char *FailedObjOn() const;
1620
1621 const char *GetMsgName(int Type) const;
1622 void DebugDumpSnapshot(const class CSnapshot *pSnap) const;
1623 int DumpObj(int Type, const void *pData, int Size) const;
1624 void *SecureUnpackMsg(int Type, CUnpacker *pUnpacker);
1625 bool TeeHistorianRecordMsg(int Type);
1626 const char *FailedMsgOn() const;
1627};
1628
1629#endif // GENERATED_PROTOCOL_H
1630