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