1#ifndef GENERATED_PROTOCOL7_H
2#define GENERATED_PROTOCOL7_H
3class CUnpacker;
4class CSnapshot;
5#include <engine/message.h>
6namespace protocol7 {
7
8
9enum
10{
11 INPUT_STATE_MASK=0x3f
12};
13
14enum
15{
16 TEAM_SPECTATORS=-1,
17 TEAM_RED,
18 TEAM_BLUE,
19 NUM_TEAMS,
20};
21
22enum
23{
24 FLAG_MISSING=-3,
25 FLAG_ATSTAND,
26 FLAG_TAKEN,
27};
28
29enum
30{
31 SPEC_FREEVIEW=0,
32 SPEC_PLAYER,
33 SPEC_FLAGRED,
34 SPEC_FLAGBLUE,
35 NUM_SPECMODES,
36};
37
38enum
39{
40 SKINPART_BODY = 0,
41 SKINPART_MARKING,
42 SKINPART_DECORATION,
43 SKINPART_HANDS,
44 SKINPART_FEET,
45 SKINPART_EYES,
46 NUM_SKINPARTS,
47};
48
49enum
50{
51 PICKUP_HEALTH=0,
52 PICKUP_ARMOR,
53 PICKUP_GRENADE,
54 PICKUP_SHOTGUN,
55 PICKUP_LASER,
56 PICKUP_NINJA,
57 PICKUP_GUN,
58 PICKUP_HAMMER,
59 NUM_PICKUPS
60};
61
62enum
63{
64 EMOTE_NORMAL=0,
65 EMOTE_PAIN,
66 EMOTE_HAPPY,
67 EMOTE_SURPRISE,
68 EMOTE_ANGRY,
69 EMOTE_BLINK,
70 NUM_EMOTES
71};
72
73enum
74{
75 EMOTICON_OOP=0,
76 EMOTICON_EXCLAMATION,
77 EMOTICON_HEARTS,
78 EMOTICON_DROP,
79 EMOTICON_DOTDOT,
80 EMOTICON_MUSIC,
81 EMOTICON_SORRY,
82 EMOTICON_GHOST,
83 EMOTICON_SUSHI,
84 EMOTICON_SPLATTEE,
85 EMOTICON_DEVILTEE,
86 EMOTICON_ZOMG,
87 EMOTICON_ZZZ,
88 EMOTICON_WTF,
89 EMOTICON_EYES,
90 EMOTICON_QUESTION,
91 NUM_EMOTICONS
92};
93
94enum
95{
96 VOTE_UNKNOWN=0,
97 VOTE_START_OP,
98 VOTE_START_KICK,
99 VOTE_START_SPEC,
100 VOTE_END_ABORT,
101 VOTE_END_PASS,
102 VOTE_END_FAIL,
103 NUM_VOTES
104};
105
106enum
107{
108 CHAT_NONE=0,
109 CHAT_ALL,
110 CHAT_TEAM,
111 CHAT_WHISPER,
112 NUM_CHATS
113};
114
115enum
116{
117 GAMEMSG_TEAM_SWAP=0,
118 GAMEMSG_SPEC_INVALIDID,
119 GAMEMSG_TEAM_SHUFFLE,
120 GAMEMSG_TEAM_BALANCE,
121 GAMEMSG_CTF_DROP,
122 GAMEMSG_CTF_RETURN,
123 GAMEMSG_TEAM_ALL,
124 GAMEMSG_TEAM_BALANCE_VICTIM,
125 GAMEMSG_CTF_GRAB,
126 GAMEMSG_CTF_CAPTURE,
127 GAMEMSG_GAME_PAUSED,
128 NUM_GAMEMSGS
129};
130
131enum
132{
133 PLAYERFLAG_ADMIN = 1<<0,
134 PLAYERFLAG_CHATTING = 1<<1,
135 PLAYERFLAG_SCOREBOARD = 1<<2,
136 PLAYERFLAG_READY = 1<<3,
137 PLAYERFLAG_DEAD = 1<<4,
138 PLAYERFLAG_WATCHING = 1<<5,
139 PLAYERFLAG_BOT = 1<<6,
140 PLAYERFLAG_AIM = 1<<7,
141};
142
143enum
144{
145 GAMEFLAG_TEAMS = 1<<0,
146 GAMEFLAG_FLAGS = 1<<1,
147 GAMEFLAG_SURVIVAL = 1<<2,
148 GAMEFLAG_RACE = 1<<3,
149};
150
151enum
152{
153 GAMESTATEFLAG_WARMUP = 1<<0,
154 GAMESTATEFLAG_SUDDENDEATH = 1<<1,
155 GAMESTATEFLAG_ROUNDOVER = 1<<2,
156 GAMESTATEFLAG_GAMEOVER = 1<<3,
157 GAMESTATEFLAG_PAUSED = 1<<4,
158 GAMESTATEFLAG_STARTCOUNTDOWN = 1<<5,
159};
160
161enum
162{
163 COREEVENTFLAG_GROUND_JUMP = 1<<0,
164 COREEVENTFLAG_AIR_JUMP = 1<<1,
165 COREEVENTFLAG_HOOK_ATTACH_PLAYER = 1<<2,
166 COREEVENTFLAG_HOOK_ATTACH_GROUND = 1<<3,
167 COREEVENTFLAG_HOOK_HIT_NOHOOK = 1<<4,
168};
169
170enum
171{
172 RACEFLAG_HIDE_KILLMSG = 1<<0,
173 RACEFLAG_FINISHMSG_AS_CHAT = 1<<1,
174 RACEFLAG_KEEP_WANTED_WEAPON = 1<<2,
175};
176
177enum
178{
179 NETOBJ_INVALID=0,
180 NETOBJTYPE_PLAYERINPUT,
181 NETOBJTYPE_PROJECTILE,
182 NETOBJTYPE_LASER,
183 NETOBJTYPE_PICKUP,
184 NETOBJTYPE_FLAG,
185 NETOBJTYPE_GAMEDATA,
186 NETOBJTYPE_GAMEDATATEAM,
187 NETOBJTYPE_GAMEDATAFLAG,
188 NETOBJTYPE_CHARACTERCORE,
189 NETOBJTYPE_CHARACTER,
190 NETOBJTYPE_PLAYERINFO,
191 NETOBJTYPE_SPECTATORINFO,
192 NETOBJTYPE_DE_CLIENTINFO,
193 NETOBJTYPE_DE_GAMEINFO,
194 NETOBJTYPE_DE_TUNEPARAMS,
195 NETEVENTTYPE_COMMON,
196 NETEVENTTYPE_EXPLOSION,
197 NETEVENTTYPE_SPAWN,
198 NETEVENTTYPE_HAMMERHIT,
199 NETEVENTTYPE_DEATH,
200 NETEVENTTYPE_SOUNDWORLD,
201 NETEVENTTYPE_DAMAGE,
202 NETOBJTYPE_PLAYERINFORACE,
203 NETOBJTYPE_GAMEDATARACE,
204 NUM_NETOBJTYPES
205};
206
207enum
208{
209 NETMSG_INVALID=0,
210 NETMSGTYPE_SV_MOTD,
211 NETMSGTYPE_SV_BROADCAST,
212 NETMSGTYPE_SV_CHAT,
213 NETMSGTYPE_SV_TEAM,
214 NETMSGTYPE_SV_KILLMSG,
215 NETMSGTYPE_SV_TUNEPARAMS,
216 NETMSGTYPE_UNUSED,
217 NETMSGTYPE_SV_READYTOENTER,
218 NETMSGTYPE_SV_WEAPONPICKUP,
219 NETMSGTYPE_SV_EMOTICON,
220 NETMSGTYPE_SV_VOTECLEAROPTIONS,
221 NETMSGTYPE_SV_VOTEOPTIONLISTADD,
222 NETMSGTYPE_SV_VOTEOPTIONADD,
223 NETMSGTYPE_SV_VOTEOPTIONREMOVE,
224 NETMSGTYPE_SV_VOTESET,
225 NETMSGTYPE_SV_VOTESTATUS,
226 NETMSGTYPE_SV_SERVERSETTINGS,
227 NETMSGTYPE_SV_CLIENTINFO,
228 NETMSGTYPE_SV_GAMEINFO,
229 NETMSGTYPE_SV_CLIENTDROP,
230 NETMSGTYPE_SV_GAMEMSG,
231 NETMSGTYPE_DE_CLIENTENTER,
232 NETMSGTYPE_DE_CLIENTLEAVE,
233 NETMSGTYPE_CL_SAY,
234 NETMSGTYPE_CL_SETTEAM,
235 NETMSGTYPE_CL_SETSPECTATORMODE,
236 NETMSGTYPE_CL_STARTINFO,
237 NETMSGTYPE_CL_KILL,
238 NETMSGTYPE_CL_READYCHANGE,
239 NETMSGTYPE_CL_EMOTICON,
240 NETMSGTYPE_CL_VOTE,
241 NETMSGTYPE_CL_CALLVOTE,
242 NETMSGTYPE_SV_SKINCHANGE,
243 NETMSGTYPE_CL_SKINCHANGE,
244 NETMSGTYPE_SV_RACEFINISH,
245 NETMSGTYPE_SV_CHECKPOINT,
246 NETMSGTYPE_SV_COMMANDINFO,
247 NETMSGTYPE_SV_COMMANDINFOREMOVE,
248 NETMSGTYPE_CL_COMMAND,
249 NUM_NETMSGTYPES
250};
251
252
253 template<typename... Ts> struct make_void { typedef void type;};
254 template<typename... Ts> using void_t = typename make_void<Ts...>::type;
255
256 template<typename T, typename = void>
257 struct is_sixup {
258 constexpr static bool value = false;
259 };
260
261 template<typename T>
262 struct is_sixup<T, void_t<typename T::is_sixup>> {
263 constexpr static bool value = true;
264 };
265
266struct CNetObj_PlayerInput
267{
268 using is_sixup = char;
269 static constexpr int ms_MsgId = NETOBJTYPE_PLAYERINPUT;
270 int m_Direction;
271 int m_TargetX;
272 int m_TargetY;
273 int m_Jump;
274 int m_Fire;
275 int m_Hook;
276 int m_PlayerFlags;
277 int m_WantedWeapon;
278 int m_NextWeapon;
279 int m_PrevWeapon;
280};
281
282struct CNetObj_Projectile
283{
284 using is_sixup = char;
285 static constexpr int ms_MsgId = NETOBJTYPE_PROJECTILE;
286 int m_X;
287 int m_Y;
288 int m_VelX;
289 int m_VelY;
290 int m_Type;
291 int m_StartTick;
292};
293
294struct CNetObj_Laser
295{
296 using is_sixup = char;
297 static constexpr int ms_MsgId = NETOBJTYPE_LASER;
298 int m_X;
299 int m_Y;
300 int m_FromX;
301 int m_FromY;
302 int m_StartTick;
303};
304
305struct CNetObj_Pickup
306{
307 using is_sixup = char;
308 static constexpr int ms_MsgId = NETOBJTYPE_PICKUP;
309 int m_X;
310 int m_Y;
311 int m_Type;
312};
313
314struct CNetObj_Flag
315{
316 using is_sixup = char;
317 static constexpr int ms_MsgId = NETOBJTYPE_FLAG;
318 int m_X;
319 int m_Y;
320 int m_Team;
321};
322
323struct CNetObj_GameData
324{
325 using is_sixup = char;
326 static constexpr int ms_MsgId = NETOBJTYPE_GAMEDATA;
327 int m_GameStartTick;
328 int m_GameStateFlags;
329 int m_GameStateEndTick;
330};
331
332struct CNetObj_GameDataTeam
333{
334 using is_sixup = char;
335 static constexpr int ms_MsgId = NETOBJTYPE_GAMEDATATEAM;
336 int m_TeamscoreRed;
337 int m_TeamscoreBlue;
338};
339
340struct CNetObj_GameDataFlag
341{
342 using is_sixup = char;
343 static constexpr int ms_MsgId = NETOBJTYPE_GAMEDATAFLAG;
344 int m_FlagCarrierRed;
345 int m_FlagCarrierBlue;
346 int m_FlagDropTickRed;
347 int m_FlagDropTickBlue;
348};
349
350struct CNetObj_CharacterCore
351{
352 using is_sixup = char;
353 static constexpr int ms_MsgId = NETOBJTYPE_CHARACTERCORE;
354 int m_Tick;
355 int m_X;
356 int m_Y;
357 int m_VelX;
358 int m_VelY;
359 int m_Angle;
360 int m_Direction;
361 int m_Jumped;
362 int m_HookedPlayer;
363 int m_HookState;
364 int m_HookTick;
365 int m_HookX;
366 int m_HookY;
367 int m_HookDx;
368 int m_HookDy;
369};
370
371struct CNetObj_Character : public CNetObj_CharacterCore
372{
373 using is_sixup = char;
374 static constexpr int ms_MsgId = NETOBJTYPE_CHARACTER;
375 int m_Health;
376 int m_Armor;
377 int m_AmmoCount;
378 int m_Weapon;
379 int m_Emote;
380 int m_AttackTick;
381 int m_TriggeredEvents;
382};
383
384struct CNetObj_PlayerInfo
385{
386 using is_sixup = char;
387 static constexpr int ms_MsgId = NETOBJTYPE_PLAYERINFO;
388 int m_PlayerFlags;
389 int m_Score;
390 int m_Latency;
391};
392
393struct CNetObj_SpectatorInfo
394{
395 using is_sixup = char;
396 static constexpr int ms_MsgId = NETOBJTYPE_SPECTATORINFO;
397 int m_SpecMode;
398 int m_SpectatorId;
399 int m_X;
400 int m_Y;
401};
402
403struct CNetObj_De_ClientInfo
404{
405 using is_sixup = char;
406 static constexpr int ms_MsgId = NETOBJTYPE_DE_CLIENTINFO;
407 int m_Local;
408 int m_Team;
409 int m_aName[4];
410 int m_aClan[3];
411 int m_Country;
412 int m_aaSkinPartNames[6][6];
413 int m_aUseCustomColors[6];
414 int m_aSkinPartColors[6];
415};
416
417struct CNetObj_De_GameInfo
418{
419 using is_sixup = char;
420 static constexpr int ms_MsgId = NETOBJTYPE_DE_GAMEINFO;
421 int m_GameFlags;
422 int m_ScoreLimit;
423 int m_TimeLimit;
424 int m_MatchNum;
425 int m_MatchCurrent;
426};
427
428struct CNetObj_De_TuneParams
429{
430 using is_sixup = char;
431 static constexpr int ms_MsgId = NETOBJTYPE_DE_TUNEPARAMS;
432 int m_aTuneParams[32];
433};
434
435struct CNetEvent_Common
436{
437 using is_sixup = char;
438 static constexpr int ms_MsgId = NETEVENTTYPE_COMMON;
439 int m_X;
440 int m_Y;
441};
442
443struct CNetEvent_Explosion : public CNetEvent_Common
444{
445 using is_sixup = char;
446 static constexpr int ms_MsgId = NETEVENTTYPE_EXPLOSION;
447};
448
449struct CNetEvent_Spawn : public CNetEvent_Common
450{
451 using is_sixup = char;
452 static constexpr int ms_MsgId = NETEVENTTYPE_SPAWN;
453};
454
455struct CNetEvent_HammerHit : public CNetEvent_Common
456{
457 using is_sixup = char;
458 static constexpr int ms_MsgId = NETEVENTTYPE_HAMMERHIT;
459};
460
461struct CNetEvent_Death : public CNetEvent_Common
462{
463 using is_sixup = char;
464 static constexpr int ms_MsgId = NETEVENTTYPE_DEATH;
465 int m_ClientId;
466};
467
468struct CNetEvent_SoundWorld : public CNetEvent_Common
469{
470 using is_sixup = char;
471 static constexpr int ms_MsgId = NETEVENTTYPE_SOUNDWORLD;
472 int m_SoundId;
473};
474
475struct CNetEvent_Damage : public CNetEvent_Common
476{
477 using is_sixup = char;
478 static constexpr int ms_MsgId = NETEVENTTYPE_DAMAGE;
479 int m_ClientId;
480 int m_Angle;
481 int m_HealthAmount;
482 int m_ArmorAmount;
483 int m_Self;
484};
485
486struct CNetObj_PlayerInfoRace
487{
488 using is_sixup = char;
489 static constexpr int ms_MsgId = NETOBJTYPE_PLAYERINFORACE;
490 int m_RaceStartTick;
491};
492
493struct CNetObj_GameDataRace
494{
495 using is_sixup = char;
496 static constexpr int ms_MsgId = NETOBJTYPE_GAMEDATARACE;
497 int m_BestTime;
498 int m_Precision;
499 int m_RaceFlags;
500};
501
502struct CNetMsg_Sv_Motd
503{
504 using is_sixup = char;
505 static constexpr int ms_MsgId = NETMSGTYPE_SV_MOTD;
506 const char *m_pMessage;
507
508 bool Pack(CMsgPacker *pPacker) const
509 {
510 pPacker->AddString(pStr: m_pMessage, Limit: -1);
511 return pPacker->Error() != 0;
512 }
513};
514
515struct CNetMsg_Sv_Broadcast
516{
517 using is_sixup = char;
518 static constexpr int ms_MsgId = NETMSGTYPE_SV_BROADCAST;
519 const char *m_pMessage;
520
521 bool Pack(CMsgPacker *pPacker) const
522 {
523 pPacker->AddString(pStr: m_pMessage, Limit: -1);
524 return pPacker->Error() != 0;
525 }
526};
527
528struct CNetMsg_Sv_Chat
529{
530 using is_sixup = char;
531 static constexpr int ms_MsgId = NETMSGTYPE_SV_CHAT;
532 int m_Mode;
533 int m_ClientId;
534 int m_TargetId;
535 const char *m_pMessage;
536
537 bool Pack(CMsgPacker *pPacker) const
538 {
539 pPacker->AddInt(i: m_Mode);
540 pPacker->AddInt(i: m_ClientId);
541 pPacker->AddInt(i: m_TargetId);
542 pPacker->AddString(pStr: m_pMessage, Limit: -1);
543 return pPacker->Error() != 0;
544 }
545};
546
547struct CNetMsg_Sv_Team
548{
549 using is_sixup = char;
550 static constexpr int ms_MsgId = NETMSGTYPE_SV_TEAM;
551 int m_ClientId;
552 int m_Team;
553 int m_Silent;
554 int m_CooldownTick;
555
556 bool Pack(CMsgPacker *pPacker) const
557 {
558 pPacker->AddInt(i: m_ClientId);
559 pPacker->AddInt(i: m_Team);
560 pPacker->AddInt(i: m_Silent);
561 pPacker->AddInt(i: m_CooldownTick);
562 return pPacker->Error() != 0;
563 }
564};
565
566struct CNetMsg_Sv_KillMsg
567{
568 using is_sixup = char;
569 static constexpr int ms_MsgId = NETMSGTYPE_SV_KILLMSG;
570 int m_Killer;
571 int m_Victim;
572 int m_Weapon;
573 int m_ModeSpecial;
574
575 bool Pack(CMsgPacker *pPacker) const
576 {
577 pPacker->AddInt(i: m_Killer);
578 pPacker->AddInt(i: m_Victim);
579 pPacker->AddInt(i: m_Weapon);
580 pPacker->AddInt(i: m_ModeSpecial);
581 return pPacker->Error() != 0;
582 }
583};
584
585struct CNetMsg_Sv_TuneParams
586{
587 using is_sixup = char;
588 static constexpr int ms_MsgId = NETMSGTYPE_SV_TUNEPARAMS;
589
590 bool Pack(CMsgPacker *pPacker) const
591 {
592 return pPacker->Error() != 0;
593 }
594};
595
596struct CNetMsg_Unused
597{
598 using is_sixup = char;
599 static constexpr int ms_MsgId = NETMSGTYPE_UNUSED;
600
601 bool Pack(CMsgPacker *pPacker) const
602 {
603 return pPacker->Error() != 0;
604 }
605};
606
607struct CNetMsg_Sv_ReadyToEnter
608{
609 using is_sixup = char;
610 static constexpr int ms_MsgId = NETMSGTYPE_SV_READYTOENTER;
611
612 bool Pack(CMsgPacker *pPacker) const
613 {
614 return pPacker->Error() != 0;
615 }
616};
617
618struct CNetMsg_Sv_WeaponPickup
619{
620 using is_sixup = char;
621 static constexpr int ms_MsgId = NETMSGTYPE_SV_WEAPONPICKUP;
622 int m_Weapon;
623
624 bool Pack(CMsgPacker *pPacker) const
625 {
626 pPacker->AddInt(i: m_Weapon);
627 return pPacker->Error() != 0;
628 }
629};
630
631struct CNetMsg_Sv_Emoticon
632{
633 using is_sixup = char;
634 static constexpr int ms_MsgId = NETMSGTYPE_SV_EMOTICON;
635 int m_ClientId;
636 int m_Emoticon;
637
638 bool Pack(CMsgPacker *pPacker) const
639 {
640 pPacker->AddInt(i: m_ClientId);
641 pPacker->AddInt(i: m_Emoticon);
642 return pPacker->Error() != 0;
643 }
644};
645
646struct CNetMsg_Sv_VoteClearOptions
647{
648 using is_sixup = char;
649 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTECLEAROPTIONS;
650
651 bool Pack(CMsgPacker *pPacker) const
652 {
653 return pPacker->Error() != 0;
654 }
655};
656
657struct CNetMsg_Sv_VoteOptionListAdd
658{
659 using is_sixup = char;
660 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONLISTADD;
661
662 bool Pack(CMsgPacker *pPacker) const
663 {
664 return pPacker->Error() != 0;
665 }
666};
667
668struct CNetMsg_Sv_VoteOptionAdd
669{
670 using is_sixup = char;
671 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONADD;
672 const char *m_pDescription;
673
674 bool Pack(CMsgPacker *pPacker) const
675 {
676 pPacker->AddString(pStr: m_pDescription, Limit: -1);
677 return pPacker->Error() != 0;
678 }
679};
680
681struct CNetMsg_Sv_VoteOptionRemove
682{
683 using is_sixup = char;
684 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTEOPTIONREMOVE;
685 const char *m_pDescription;
686
687 bool Pack(CMsgPacker *pPacker) const
688 {
689 pPacker->AddString(pStr: m_pDescription, Limit: -1);
690 return pPacker->Error() != 0;
691 }
692};
693
694struct CNetMsg_Sv_VoteSet
695{
696 using is_sixup = char;
697 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTESET;
698 int m_ClientId;
699 int m_Type;
700 int m_Timeout;
701 const char *m_pDescription;
702 const char *m_pReason;
703
704 bool Pack(CMsgPacker *pPacker) const
705 {
706 pPacker->AddInt(i: m_ClientId);
707 pPacker->AddInt(i: m_Type);
708 pPacker->AddInt(i: m_Timeout);
709 pPacker->AddString(pStr: m_pDescription, Limit: -1);
710 pPacker->AddString(pStr: m_pReason, Limit: -1);
711 return pPacker->Error() != 0;
712 }
713};
714
715struct CNetMsg_Sv_VoteStatus
716{
717 using is_sixup = char;
718 static constexpr int ms_MsgId = NETMSGTYPE_SV_VOTESTATUS;
719 int m_Yes;
720 int m_No;
721 int m_Pass;
722 int m_Total;
723
724 bool Pack(CMsgPacker *pPacker) const
725 {
726 pPacker->AddInt(i: m_Yes);
727 pPacker->AddInt(i: m_No);
728 pPacker->AddInt(i: m_Pass);
729 pPacker->AddInt(i: m_Total);
730 return pPacker->Error() != 0;
731 }
732};
733
734struct CNetMsg_Sv_ServerSettings
735{
736 using is_sixup = char;
737 static constexpr int ms_MsgId = NETMSGTYPE_SV_SERVERSETTINGS;
738 int m_KickVote;
739 int m_KickMin;
740 int m_SpecVote;
741 int m_TeamLock;
742 int m_TeamBalance;
743 int m_PlayerSlots;
744
745 bool Pack(CMsgPacker *pPacker) const
746 {
747 pPacker->AddInt(i: m_KickVote);
748 pPacker->AddInt(i: m_KickMin);
749 pPacker->AddInt(i: m_SpecVote);
750 pPacker->AddInt(i: m_TeamLock);
751 pPacker->AddInt(i: m_TeamBalance);
752 pPacker->AddInt(i: m_PlayerSlots);
753 return pPacker->Error() != 0;
754 }
755};
756
757struct CNetMsg_Sv_ClientInfo
758{
759 using is_sixup = char;
760 static constexpr int ms_MsgId = NETMSGTYPE_SV_CLIENTINFO;
761 int m_ClientId;
762 int m_Local;
763 int m_Team;
764 const char *m_pName;
765 const char *m_pClan;
766 int m_Country;
767 const char *m_apSkinPartNames[6];
768 int m_aUseCustomColors[6];
769 int m_aSkinPartColors[6];
770 int m_Silent;
771
772 bool Pack(CMsgPacker *pPacker) const
773 {
774 pPacker->AddInt(i: m_ClientId);
775 pPacker->AddInt(i: m_Local);
776 pPacker->AddInt(i: m_Team);
777 pPacker->AddString(pStr: m_pName, Limit: -1);
778 pPacker->AddString(pStr: m_pClan, Limit: -1);
779 pPacker->AddInt(i: m_Country);
780 pPacker->AddString(pStr: m_apSkinPartNames[0], Limit: -1);
781 pPacker->AddString(pStr: m_apSkinPartNames[1], Limit: -1);
782 pPacker->AddString(pStr: m_apSkinPartNames[2], Limit: -1);
783 pPacker->AddString(pStr: m_apSkinPartNames[3], Limit: -1);
784 pPacker->AddString(pStr: m_apSkinPartNames[4], Limit: -1);
785 pPacker->AddString(pStr: m_apSkinPartNames[5], Limit: -1);
786 pPacker->AddInt(i: m_aUseCustomColors[0]);
787 pPacker->AddInt(i: m_aUseCustomColors[1]);
788 pPacker->AddInt(i: m_aUseCustomColors[2]);
789 pPacker->AddInt(i: m_aUseCustomColors[3]);
790 pPacker->AddInt(i: m_aUseCustomColors[4]);
791 pPacker->AddInt(i: m_aUseCustomColors[5]);
792 pPacker->AddInt(i: m_aSkinPartColors[0]);
793 pPacker->AddInt(i: m_aSkinPartColors[1]);
794 pPacker->AddInt(i: m_aSkinPartColors[2]);
795 pPacker->AddInt(i: m_aSkinPartColors[3]);
796 pPacker->AddInt(i: m_aSkinPartColors[4]);
797 pPacker->AddInt(i: m_aSkinPartColors[5]);
798 pPacker->AddInt(i: m_Silent);
799 return pPacker->Error() != 0;
800 }
801};
802
803struct CNetMsg_Sv_GameInfo
804{
805 using is_sixup = char;
806 static constexpr int ms_MsgId = NETMSGTYPE_SV_GAMEINFO;
807 int m_GameFlags;
808 int m_ScoreLimit;
809 int m_TimeLimit;
810 int m_MatchNum;
811 int m_MatchCurrent;
812
813 bool Pack(CMsgPacker *pPacker) const
814 {
815 pPacker->AddInt(i: m_GameFlags);
816 pPacker->AddInt(i: m_ScoreLimit);
817 pPacker->AddInt(i: m_TimeLimit);
818 pPacker->AddInt(i: m_MatchNum);
819 pPacker->AddInt(i: m_MatchCurrent);
820 return pPacker->Error() != 0;
821 }
822};
823
824struct CNetMsg_Sv_ClientDrop
825{
826 using is_sixup = char;
827 static constexpr int ms_MsgId = NETMSGTYPE_SV_CLIENTDROP;
828 int m_ClientId;
829 const char *m_pReason;
830 int m_Silent;
831
832 bool Pack(CMsgPacker *pPacker) const
833 {
834 pPacker->AddInt(i: m_ClientId);
835 pPacker->AddString(pStr: m_pReason, Limit: -1);
836 pPacker->AddInt(i: m_Silent);
837 return pPacker->Error() != 0;
838 }
839};
840
841struct CNetMsg_Sv_GameMsg
842{
843 using is_sixup = char;
844 static constexpr int ms_MsgId = NETMSGTYPE_SV_GAMEMSG;
845
846 bool Pack(CMsgPacker *pPacker) const
847 {
848 return pPacker->Error() != 0;
849 }
850};
851
852struct CNetMsg_De_ClientEnter
853{
854 using is_sixup = char;
855 static constexpr int ms_MsgId = NETMSGTYPE_DE_CLIENTENTER;
856 const char *m_pName;
857 int m_ClientId;
858 int m_Team;
859
860 bool Pack(CMsgPacker *pPacker) const
861 {
862 pPacker->AddString(pStr: m_pName, Limit: -1);
863 pPacker->AddInt(i: m_ClientId);
864 pPacker->AddInt(i: m_Team);
865 return pPacker->Error() != 0;
866 }
867};
868
869struct CNetMsg_De_ClientLeave
870{
871 using is_sixup = char;
872 static constexpr int ms_MsgId = NETMSGTYPE_DE_CLIENTLEAVE;
873 const char *m_pName;
874 int m_ClientId;
875 const char *m_pReason;
876
877 bool Pack(CMsgPacker *pPacker) const
878 {
879 pPacker->AddString(pStr: m_pName, Limit: -1);
880 pPacker->AddInt(i: m_ClientId);
881 pPacker->AddString(pStr: m_pReason, Limit: -1);
882 return pPacker->Error() != 0;
883 }
884};
885
886struct CNetMsg_Cl_Say
887{
888 using is_sixup = char;
889 static constexpr int ms_MsgId = NETMSGTYPE_CL_SAY;
890 int m_Mode;
891 int m_Target;
892 const char *m_pMessage;
893
894 bool Pack(CMsgPacker *pPacker) const
895 {
896 pPacker->AddInt(i: m_Mode);
897 pPacker->AddInt(i: m_Target);
898 pPacker->AddString(pStr: m_pMessage, Limit: -1);
899 return pPacker->Error() != 0;
900 }
901};
902
903struct CNetMsg_Cl_SetTeam
904{
905 using is_sixup = char;
906 static constexpr int ms_MsgId = NETMSGTYPE_CL_SETTEAM;
907 int m_Team;
908
909 bool Pack(CMsgPacker *pPacker) const
910 {
911 pPacker->AddInt(i: m_Team);
912 return pPacker->Error() != 0;
913 }
914};
915
916struct CNetMsg_Cl_SetSpectatorMode
917{
918 using is_sixup = char;
919 static constexpr int ms_MsgId = NETMSGTYPE_CL_SETSPECTATORMODE;
920 int m_SpecMode;
921 int m_SpectatorId;
922
923 bool Pack(CMsgPacker *pPacker) const
924 {
925 pPacker->AddInt(i: m_SpecMode);
926 pPacker->AddInt(i: m_SpectatorId);
927 return pPacker->Error() != 0;
928 }
929};
930
931struct CNetMsg_Cl_StartInfo
932{
933 using is_sixup = char;
934 static constexpr int ms_MsgId = NETMSGTYPE_CL_STARTINFO;
935 const char *m_pName;
936 const char *m_pClan;
937 int m_Country;
938 const char *m_apSkinPartNames[6];
939 int m_aUseCustomColors[6];
940 int m_aSkinPartColors[6];
941
942 bool Pack(CMsgPacker *pPacker) const
943 {
944 pPacker->AddString(pStr: m_pName, Limit: -1);
945 pPacker->AddString(pStr: m_pClan, Limit: -1);
946 pPacker->AddInt(i: m_Country);
947 pPacker->AddString(pStr: m_apSkinPartNames[0], Limit: -1);
948 pPacker->AddString(pStr: m_apSkinPartNames[1], Limit: -1);
949 pPacker->AddString(pStr: m_apSkinPartNames[2], Limit: -1);
950 pPacker->AddString(pStr: m_apSkinPartNames[3], Limit: -1);
951 pPacker->AddString(pStr: m_apSkinPartNames[4], Limit: -1);
952 pPacker->AddString(pStr: m_apSkinPartNames[5], Limit: -1);
953 pPacker->AddInt(i: m_aUseCustomColors[0]);
954 pPacker->AddInt(i: m_aUseCustomColors[1]);
955 pPacker->AddInt(i: m_aUseCustomColors[2]);
956 pPacker->AddInt(i: m_aUseCustomColors[3]);
957 pPacker->AddInt(i: m_aUseCustomColors[4]);
958 pPacker->AddInt(i: m_aUseCustomColors[5]);
959 pPacker->AddInt(i: m_aSkinPartColors[0]);
960 pPacker->AddInt(i: m_aSkinPartColors[1]);
961 pPacker->AddInt(i: m_aSkinPartColors[2]);
962 pPacker->AddInt(i: m_aSkinPartColors[3]);
963 pPacker->AddInt(i: m_aSkinPartColors[4]);
964 pPacker->AddInt(i: m_aSkinPartColors[5]);
965 return pPacker->Error() != 0;
966 }
967};
968
969struct CNetMsg_Cl_Kill
970{
971 using is_sixup = char;
972 static constexpr int ms_MsgId = NETMSGTYPE_CL_KILL;
973
974 bool Pack(CMsgPacker *pPacker) const
975 {
976 return pPacker->Error() != 0;
977 }
978};
979
980struct CNetMsg_Cl_ReadyChange
981{
982 using is_sixup = char;
983 static constexpr int ms_MsgId = NETMSGTYPE_CL_READYCHANGE;
984
985 bool Pack(CMsgPacker *pPacker) const
986 {
987 return pPacker->Error() != 0;
988 }
989};
990
991struct CNetMsg_Cl_Emoticon
992{
993 using is_sixup = char;
994 static constexpr int ms_MsgId = NETMSGTYPE_CL_EMOTICON;
995 int m_Emoticon;
996
997 bool Pack(CMsgPacker *pPacker) const
998 {
999 pPacker->AddInt(i: m_Emoticon);
1000 return pPacker->Error() != 0;
1001 }
1002};
1003
1004struct CNetMsg_Cl_Vote
1005{
1006 using is_sixup = char;
1007 static constexpr int ms_MsgId = NETMSGTYPE_CL_VOTE;
1008 int m_Vote;
1009
1010 bool Pack(CMsgPacker *pPacker) const
1011 {
1012 pPacker->AddInt(i: m_Vote);
1013 return pPacker->Error() != 0;
1014 }
1015};
1016
1017struct CNetMsg_Cl_CallVote
1018{
1019 using is_sixup = char;
1020 static constexpr int ms_MsgId = NETMSGTYPE_CL_CALLVOTE;
1021 const char *m_pType;
1022 const char *m_pValue;
1023 const char *m_pReason;
1024 int m_Force;
1025
1026 bool Pack(CMsgPacker *pPacker) const
1027 {
1028 pPacker->AddString(pStr: m_pType, Limit: -1);
1029 pPacker->AddString(pStr: m_pValue, Limit: -1);
1030 pPacker->AddString(pStr: m_pReason, Limit: -1);
1031 pPacker->AddInt(i: m_Force);
1032 return pPacker->Error() != 0;
1033 }
1034};
1035
1036struct CNetMsg_Sv_SkinChange
1037{
1038 using is_sixup = char;
1039 static constexpr int ms_MsgId = NETMSGTYPE_SV_SKINCHANGE;
1040 int m_ClientId;
1041 const char *m_apSkinPartNames[6];
1042 int m_aUseCustomColors[6];
1043 int m_aSkinPartColors[6];
1044
1045 bool Pack(CMsgPacker *pPacker) const
1046 {
1047 pPacker->AddInt(i: m_ClientId);
1048 pPacker->AddString(pStr: m_apSkinPartNames[0], Limit: -1);
1049 pPacker->AddString(pStr: m_apSkinPartNames[1], Limit: -1);
1050 pPacker->AddString(pStr: m_apSkinPartNames[2], Limit: -1);
1051 pPacker->AddString(pStr: m_apSkinPartNames[3], Limit: -1);
1052 pPacker->AddString(pStr: m_apSkinPartNames[4], Limit: -1);
1053 pPacker->AddString(pStr: m_apSkinPartNames[5], Limit: -1);
1054 pPacker->AddInt(i: m_aUseCustomColors[0]);
1055 pPacker->AddInt(i: m_aUseCustomColors[1]);
1056 pPacker->AddInt(i: m_aUseCustomColors[2]);
1057 pPacker->AddInt(i: m_aUseCustomColors[3]);
1058 pPacker->AddInt(i: m_aUseCustomColors[4]);
1059 pPacker->AddInt(i: m_aUseCustomColors[5]);
1060 pPacker->AddInt(i: m_aSkinPartColors[0]);
1061 pPacker->AddInt(i: m_aSkinPartColors[1]);
1062 pPacker->AddInt(i: m_aSkinPartColors[2]);
1063 pPacker->AddInt(i: m_aSkinPartColors[3]);
1064 pPacker->AddInt(i: m_aSkinPartColors[4]);
1065 pPacker->AddInt(i: m_aSkinPartColors[5]);
1066 return pPacker->Error() != 0;
1067 }
1068};
1069
1070struct CNetMsg_Cl_SkinChange
1071{
1072 using is_sixup = char;
1073 static constexpr int ms_MsgId = NETMSGTYPE_CL_SKINCHANGE;
1074 const char *m_apSkinPartNames[6];
1075 int m_aUseCustomColors[6];
1076 int m_aSkinPartColors[6];
1077
1078 bool Pack(CMsgPacker *pPacker) const
1079 {
1080 pPacker->AddString(pStr: m_apSkinPartNames[0], Limit: -1);
1081 pPacker->AddString(pStr: m_apSkinPartNames[1], Limit: -1);
1082 pPacker->AddString(pStr: m_apSkinPartNames[2], Limit: -1);
1083 pPacker->AddString(pStr: m_apSkinPartNames[3], Limit: -1);
1084 pPacker->AddString(pStr: m_apSkinPartNames[4], Limit: -1);
1085 pPacker->AddString(pStr: m_apSkinPartNames[5], Limit: -1);
1086 pPacker->AddInt(i: m_aUseCustomColors[0]);
1087 pPacker->AddInt(i: m_aUseCustomColors[1]);
1088 pPacker->AddInt(i: m_aUseCustomColors[2]);
1089 pPacker->AddInt(i: m_aUseCustomColors[3]);
1090 pPacker->AddInt(i: m_aUseCustomColors[4]);
1091 pPacker->AddInt(i: m_aUseCustomColors[5]);
1092 pPacker->AddInt(i: m_aSkinPartColors[0]);
1093 pPacker->AddInt(i: m_aSkinPartColors[1]);
1094 pPacker->AddInt(i: m_aSkinPartColors[2]);
1095 pPacker->AddInt(i: m_aSkinPartColors[3]);
1096 pPacker->AddInt(i: m_aSkinPartColors[4]);
1097 pPacker->AddInt(i: m_aSkinPartColors[5]);
1098 return pPacker->Error() != 0;
1099 }
1100};
1101
1102struct CNetMsg_Sv_RaceFinish
1103{
1104 using is_sixup = char;
1105 static constexpr int ms_MsgId = NETMSGTYPE_SV_RACEFINISH;
1106 int m_ClientId;
1107 int m_Time;
1108 int m_Diff;
1109 int m_RecordPersonal;
1110 int m_RecordServer;
1111
1112 bool Pack(CMsgPacker *pPacker) const
1113 {
1114 pPacker->AddInt(i: m_ClientId);
1115 pPacker->AddInt(i: m_Time);
1116 pPacker->AddInt(i: m_Diff);
1117 pPacker->AddInt(i: m_RecordPersonal);
1118 pPacker->AddInt(i: m_RecordServer);
1119 return pPacker->Error() != 0;
1120 }
1121};
1122
1123struct CNetMsg_Sv_Checkpoint
1124{
1125 using is_sixup = char;
1126 static constexpr int ms_MsgId = NETMSGTYPE_SV_CHECKPOINT;
1127 int m_Diff;
1128
1129 bool Pack(CMsgPacker *pPacker) const
1130 {
1131 pPacker->AddInt(i: m_Diff);
1132 return pPacker->Error() != 0;
1133 }
1134};
1135
1136struct CNetMsg_Sv_CommandInfo
1137{
1138 using is_sixup = char;
1139 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFO;
1140 const char *m_pName;
1141 const char *m_pArgsFormat;
1142 const char *m_pHelpText;
1143
1144 bool Pack(CMsgPacker *pPacker) const
1145 {
1146 pPacker->AddString(pStr: m_pName, Limit: -1);
1147 pPacker->AddString(pStr: m_pArgsFormat, Limit: -1);
1148 pPacker->AddString(pStr: m_pHelpText, Limit: -1);
1149 return pPacker->Error() != 0;
1150 }
1151};
1152
1153struct CNetMsg_Sv_CommandInfoRemove
1154{
1155 using is_sixup = char;
1156 static constexpr int ms_MsgId = NETMSGTYPE_SV_COMMANDINFOREMOVE;
1157 const char *m_pName;
1158
1159 bool Pack(CMsgPacker *pPacker) const
1160 {
1161 pPacker->AddString(pStr: m_pName, Limit: -1);
1162 return pPacker->Error() != 0;
1163 }
1164};
1165
1166struct CNetMsg_Cl_Command
1167{
1168 using is_sixup = char;
1169 static constexpr int ms_MsgId = NETMSGTYPE_CL_COMMAND;
1170 const char *m_pName;
1171 const char *m_pArguments;
1172
1173 bool Pack(CMsgPacker *pPacker) const
1174 {
1175 pPacker->AddString(pStr: m_pName, Limit: -1);
1176 pPacker->AddString(pStr: m_pArguments, Limit: -1);
1177 return pPacker->Error() != 0;
1178 }
1179};
1180
1181enum
1182{
1183 SOUND_GUN_FIRE=0,
1184 SOUND_SHOTGUN_FIRE,
1185 SOUND_GRENADE_FIRE,
1186 SOUND_HAMMER_FIRE,
1187 SOUND_HAMMER_HIT,
1188 SOUND_NINJA_FIRE,
1189 SOUND_GRENADE_EXPLODE,
1190 SOUND_NINJA_HIT,
1191 SOUND_LASER_FIRE,
1192 SOUND_LASER_BOUNCE,
1193 SOUND_WEAPON_SWITCH,
1194 SOUND_PLAYER_PAIN_SHORT,
1195 SOUND_PLAYER_PAIN_LONG,
1196 SOUND_BODY_LAND,
1197 SOUND_PLAYER_AIRJUMP,
1198 SOUND_PLAYER_JUMP,
1199 SOUND_PLAYER_DIE,
1200 SOUND_PLAYER_SPAWN,
1201 SOUND_PLAYER_SKID,
1202 SOUND_TEE_CRY,
1203 SOUND_HOOK_LOOP,
1204 SOUND_HOOK_ATTACH_GROUND,
1205 SOUND_HOOK_ATTACH_PLAYER,
1206 SOUND_HOOK_NOATTACH,
1207 SOUND_PICKUP_HEALTH,
1208 SOUND_PICKUP_ARMOR,
1209 SOUND_PICKUP_GRENADE,
1210 SOUND_PICKUP_SHOTGUN,
1211 SOUND_PICKUP_NINJA,
1212 SOUND_WEAPON_SPAWN,
1213 SOUND_WEAPON_NOAMMO,
1214 SOUND_HIT,
1215 SOUND_CHAT_SERVER,
1216 SOUND_CHAT_CLIENT,
1217 SOUND_CHAT_HIGHLIGHT,
1218 SOUND_CTF_DROP,
1219 SOUND_CTF_RETURN,
1220 SOUND_CTF_GRAB_PL,
1221 SOUND_CTF_GRAB_EN,
1222 SOUND_CTF_CAPTURE,
1223 SOUND_MENU,
1224 NUM_SOUNDS
1225};
1226enum
1227{
1228 WEAPON_HAMMER=0,
1229 WEAPON_GUN,
1230 WEAPON_SHOTGUN,
1231 WEAPON_GRENADE,
1232 WEAPON_LASER,
1233 WEAPON_NINJA,
1234 NUM_WEAPONS
1235};
1236
1237
1238 class CNetObjHandler
1239 {
1240 const char *m_pMsgFailedOn;
1241 char m_aMsgData[1024];
1242 const char *m_pObjFailedOn;
1243 int m_NumObjFailures;
1244 bool CheckInt(const char *pErrorMsg, int Value, int Min, int Max);
1245 bool CheckFlag(const char *pErrorMsg, int Value, int Mask);
1246
1247 static const char *ms_apObjNames[];
1248 static int ms_aObjSizes[];
1249 static const char *ms_apMsgNames[];
1250
1251 public:
1252 CNetObjHandler();
1253
1254 int ValidateObj(int Type, const void *pData, int Size);
1255 void DebugDumpSnapshot(const CSnapshot *pSnap) const;
1256 int DumpObj(int Type, const void *pData, int Size) const;
1257 const char *GetObjName(int Type) const;
1258 int GetObjSize(int Type) const;
1259 const char *FailedObjOn() const;
1260 int NumObjFailures() const;
1261
1262 const char *GetMsgName(int Type) const;
1263 void *SecureUnpackMsg(int Type, CUnpacker *pUnpacker);
1264 const char *FailedMsgOn() const;
1265 };
1266
1267
1268}
1269#endif // GENERATED_PROTOCOL7_H
1270