From ce481c7943d599cd15e214e34b056095b4a9a88b Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 12 Oct 2021 15:16:03 +0300 Subject: [PATCH 01/65] Update shuffle packets and keys --- src/map/packets_keys_main.h | 42 ++++++++++++++++-- src/map/packets_keys_zero.h | 29 +++++++++++-- src/map/packets_shuffle_main.h | 79 ++++++++++++++++++++++++++++++++-- src/map/packets_shuffle_re.h | 51 ++++++++++++++++++++-- src/map/packets_shuffle_zero.h | 66 ++++++++++++++++++++++++++-- 5 files changed, 252 insertions(+), 15 deletions(-) diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h index 9ecf6169154..ea14f5d9e30 100644 --- a/src/map/packets_keys_main.h +++ b/src/map/packets_keys_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,7 +37,7 @@ packetKeys(0x49357d72,0x22c370a1,0x5f836591); #endif -// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexe, 2019-08-28aRagexeRE, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-04bRagexeRE, 2019-09-18bRagexe, 2019-09-18cRagexeRE, 2019-09-25aRagexe, 2019-09-25aRagexeRE, 2019-09-25bRagexe, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexe, 2019-10-16fRagexeRE, 2019-10-16gRagexe, 2019-10-16gRagexeRE, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-06bRagexeRE, 2019-11-07aRagexe, 2019-11-07aRagexeRE, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-13eRagexeRE, 2019-11-20aRagexe, 2019-11-20cRagexeRE, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27aRagexeRE, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04aRagexeRE, 2019-12-04bRagexe, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11aRagexe, 2019-12-11fRagexeRE, 2019-12-18bRagexe, 2019-12-18bRagexeRE, 2019-12-24aRagexe, 2019-12-24aRagexeRE, 2019-12-24bRagexe, 2019-12-24bRagexeRE, 2020-01-08aRagexe, 2020-01-08bRagexeRE, 2020-01-22cRagexe, 2020-01-22cRagexeRE, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-05aRagexeRE, 2020-02-06aRagexe, 2020-02-12aRagexe, 2020-02-12aRagexeRE, 2020-02-19dRagexe, 2020-02-19eRagexeRE, 2020-03-04aRagexe, 2020-03-04aRagexeRE, 2020-03-18bRagexe, 2020-04-01bRagexe, 2020-04-14_6aRagexe, 2020-04-14eRagexe, 2020-05-06aRagexe, 2020-05-20bRagexe, 2020-06-03aRagexe, 2020-06-17aRagexe, 2020-07-01bRagexe, 2020-07-01cRagexe, 2020-07-09_sakaRagexeRE, 2020-07-15bRagexe +// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexe, 2019-08-28aRagexeRE, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-04bRagexeRE, 2019-09-18bRagexe, 2019-09-18cRagexeRE, 2019-09-25aRagexe, 2019-09-25aRagexeRE, 2019-09-25bRagexe, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexe, 2019-10-16fRagexeRE, 2019-10-16gRagexe, 2019-10-16gRagexeRE, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-06bRagexeRE, 2019-11-07aRagexe, 2019-11-07aRagexeRE, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-13eRagexeRE, 2019-11-20aRagexe, 2019-11-20cRagexeRE, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27aRagexeRE, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04aRagexeRE, 2019-12-04bRagexe, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11aRagexe, 2019-12-11fRagexeRE, 2019-12-18bRagexe, 2019-12-18bRagexeRE, 2019-12-24aRagexe, 2019-12-24aRagexeRE, 2019-12-24bRagexe, 2019-12-24bRagexeRE, 2020-01-08aRagexe, 2020-01-08bRagexeRE, 2020-01-22cRagexe, 2020-01-22cRagexeRE, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-05aRagexeRE, 2020-02-06aRagexe, 2020-02-12aRagexe, 2020-02-12aRagexeRE, 2020-02-19dRagexe, 2020-02-19eRagexeRE, 2020-03-04aRagexe, 2020-03-04aRagexeRE, 2020-03-18bRagexe, 2020-04-01bRagexe, 2020-04-14_6aRagexe, 2020-04-14eRagexe, 2020-05-06aRagexe, 2020-05-20bRagexe, 2020-06-03aRagexe, 2020-06-17aRagexe, 2020-07-01bRagexe, 2020-07-01cRagexe, 2020-07-09_sakaRagexeRE, 2020-07-15bRagexe, 2020-07-23_sakaRagexeRE, 2020-07-23_sakbRagexeRE, 2020-07-24aRagexeRE, 2020-07-29aRagexeRE, 2020-07-29cRagexe, 2020-08-05aRagexeRE, 2020-08-05bRagexe, 2020-08-05cRagexe, 2020-08-06aRagexeRE, 2020-08-12aRagexeRE, 2020-08-19aRagexeRE, 2020-08-19dRagexe, 2020-09-02aRagexeRE, 2020-09-02bRagexe, 2020-09-02bRagexeRE, 2020-09-16gRagexe, 2020-09-16hRagexe, 2020-09-16iRagexe, 2020-09-23aRagexe, 2020-09-24aRagexe, 2020-10-07aRagexe, 2020-10-21aRagexe, 2020-11-04aRagexe, 2020-11-18bRagexe, 2020-12-01aRagexe, 2020-12-02_Ragexe_1606718761, 2020-12-02_Ragexe_1606797618, 2020-12-11_Ragexe_1607663043, 2020-12-23_Ragexe_1608270870, 2020-12-23_Ragexe_1608535098, 2020-12-24_Ragexe_1608790358, 2020-12-28_Ragexe_1609131300, 2020-12-28_Ragexe_1609136749, 2021-01-07aRagexeRE, 2021-02-03_Ragexe_1611289664, 2021-02-03_Ragexe_1612157471, 2021-02-17_Ragexe_1613360741, 2021-03-03_Ragexe_1614232840, 2021-03-03_Ragexe_1614323446, 2021-03-17_Ragexe_1615446017, 2021-03-31_Ragexe_1616973953, 2021-03-31_Ragexe_1616982771, 2021-04-07_Ragexe_1617254675, 2021-04-07_Ragexe_1617258828, 2021-05-04_Ragexe_1619666128, 2021-05-18_Ragexe_1620794540, 2021-05-18_Ragexe_1620800154, 2021-06-16_Ragexe_1623309468, 2021-06-30_Ragexe_1624007702, 2021-06-30_Ragexe_1625124654, 2021-06-30_Ragexe_1625564223, 2021-07-21_Ragexe_1626409768, 2021-08-04_Ragexe_1627620157, 2021-08-18_Ragexe_1628745477, 2021-09-01_Ragexe_1630029097, 2021-09-01_Ragexe_1630309867 #if PACKETVER == 20101123 || \ PACKETVER == 20101124 || \ PACKETVER == 20101125 || \ @@ -199,7 +199,43 @@ PACKETVER == 20200617 || \ PACKETVER == 20200701 || \ PACKETVER == 20200709 || \ - PACKETVER >= 20200715 + PACKETVER == 20200715 || \ + PACKETVER == 20200723 || \ + PACKETVER == 20200724 || \ + PACKETVER == 20200729 || \ + PACKETVER == 20200805 || \ + PACKETVER == 20200806 || \ + PACKETVER == 20200812 || \ + PACKETVER == 20200819 || \ + PACKETVER == 20200902 || \ + PACKETVER == 20200916 || \ + PACKETVER == 20200923 || \ + PACKETVER == 20200924 || \ + PACKETVER == 20201007 || \ + PACKETVER == 20201021 || \ + PACKETVER == 20201104 || \ + PACKETVER == 20201118 || \ + PACKETVER == 20201201 || \ + PACKETVER == 20201202 || \ + PACKETVER == 20201211 || \ + PACKETVER == 20201223 || \ + PACKETVER == 20201224 || \ + PACKETVER == 20201228 || \ + PACKETVER == 20210107 || \ + PACKETVER == 20210203 || \ + PACKETVER == 20210217 || \ + PACKETVER == 20210303 || \ + PACKETVER == 20210317 || \ + PACKETVER == 20210331 || \ + PACKETVER == 20210407 || \ + PACKETVER == 20210504 || \ + PACKETVER == 20210518 || \ + PACKETVER == 20210616 || \ + PACKETVER == 20210630 || \ + PACKETVER == 20210721 || \ + PACKETVER == 20210804 || \ + PACKETVER == 20210818 || \ + PACKETVER >= 20210901 packetKeys(0x00000000,0x00000000,0x00000000); #endif diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h index ee4f1905e56..d2ed64ec9cf 100644 --- a/src/map/packets_keys_zero.h +++ b/src/map/packets_keys_zero.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ /* This file is autogenerated, please do not commit manual changes */ -// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero, 2020-02-12aRagexe_zero, 2020-02-26aRagexe_zero, 2020-02-26bRagexe_zero, 2020-03-04aRagexe_zero, 2020-03-18_2aRagexe_zero, 2020-04-01_2aRagexe_zero, 2020-04-14bRagexe_zero, 2020-05-06aRagexe_zero, 2020-05-20_5aRagexe_zero, 2020-06-03_2aRagexe_zero, 2020-06-17aRagexe_zero, 2020-07-01_2aRagexe_zero, 2020-07-01aRagexe_zero +// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero, 2020-02-12aRagexe_zero, 2020-02-26aRagexe_zero, 2020-02-26bRagexe_zero, 2020-03-04aRagexe_zero, 2020-03-18_2aRagexe_zero, 2020-04-01_2aRagexe_zero, 2020-04-14bRagexe_zero, 2020-05-06aRagexe_zero, 2020-05-20_5aRagexe_zero, 2020-06-03_2aRagexe_zero, 2020-06-17aRagexe_zero, 2020-07-01_2aRagexe_zero, 2020-07-01aRagexe_zero, 2020-07-29cRagexe_zero, 2020-08-05bRagexe_zero, 2020-08-05cRagexe_zero, 2020-09-02aRagexe_zero, 2020-10-21aRagexe_zero, 2020-11-18aRagexe_zero, 2020-12-01aRagexe_zero, 2020-12-02aRagexe_zero, 2020-12-02bRagexe_zero, 2020-12-16_Ragexe_1607900518_zero, 2020-12-16_Ragexe_1608018700_zero, 2020-12-16_Ragexe_1608022476_zero, 2021-01-06_Ragexe_1609306194_zero, 2021-01-06_Ragexe_1609309495_zero, 2021-01-06_Ragexe_1609384473_zero, 2021-02-17_Ragexe_1613356634_zero, 2021-02-17_Ragexe_1613458896_zero, 2021-03-17_Ragexe_1615443244_zero, 2021-03-31_Ragexe_1616645609_zero, 2021-03-31_Ragexe_1617104920_zero, 2021-04-01_Ragexe_1617260946_zero, 2021-04-21_Ragexe_1618471411_zero, 2021-05-04_Ragexe_1619749621_zero, 2021-05-12_Ragexe_1620788657_zero, 2021-05-12_Ragexe_1620795325_zero, 2021-05-18_Ragexe_1620875688_zero, 2021-06-16_Ragexe_1623310696_zero, 2021-06-16_Ragexe_1623398452_zero, 2021-06-16_Ragexe_1623738726_zero, 2021-06-16_Ragexe_1623830377_zero, 2021-06-16_Ragexe_1623845562_zero, 2021-06-23_Ragexe_1623993214_zero, 2021-06-23_Ragexe_1624259445_zero, 2021-06-23_Ragexe_1624264369_zero, 2021-06-23_Ragexe_1624430023_zero, 2021-06-30_Ragexe_1624513034_zero, 2021-06-30_Ragexe_1624528241_zero, 2021-06-30_Ragexe_1624599911_zero, 2021-06-30_Ragexe_1624607404_zero, 2021-06-30_Ragexe_1624854348_zero, 2021-07-21_Ragexe_1625719811_zero, 2021-08-04_Ragexe_1627876396_zero, 2021-08-18_Ragexe_1628740146_zero #if PACKETVER == 20171018 || \ PACKETVER == 20171019 || \ PACKETVER == 20171023 || \ @@ -116,7 +116,30 @@ PACKETVER == 20200520 || \ PACKETVER == 20200603 || \ PACKETVER == 20200617 || \ - PACKETVER >= 20200701 + PACKETVER == 20200701 || \ + PACKETVER == 20200729 || \ + PACKETVER == 20200805 || \ + PACKETVER == 20200902 || \ + PACKETVER == 20201021 || \ + PACKETVER == 20201118 || \ + PACKETVER == 20201201 || \ + PACKETVER == 20201202 || \ + PACKETVER == 20201216 || \ + PACKETVER == 20210106 || \ + PACKETVER == 20210217 || \ + PACKETVER == 20210317 || \ + PACKETVER == 20210331 || \ + PACKETVER == 20210401 || \ + PACKETVER == 20210421 || \ + PACKETVER == 20210504 || \ + PACKETVER == 20210512 || \ + PACKETVER == 20210518 || \ + PACKETVER == 20210616 || \ + PACKETVER == 20210623 || \ + PACKETVER == 20210630 || \ + PACKETVER == 20210721 || \ + PACKETVER == 20210804 || \ + PACKETVER >= 20210818 packetKeys(0x00000000,0x00000000,0x00000000); #endif diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h index 86061b2a1b8..a882b0651a2 100644 --- a/src/map/packets_shuffle_main.h +++ b/src/map/packets_shuffle_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -3345,7 +3345,7 @@ packet(0x0969,clif->pSearchStoreInfoNextPage,0); #endif -// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe, 2018-08-01cRagexe, 2018-08-08bRagexe, 2018-08-22cRagexe, 2018-08-29aRagexe, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-19aRagexe, 2018-10-02aRagexe, 2018-10-02bRagexe, 2018-10-17_02aRagexe, 2018-10-17_03aRagexe, 2018-10-17bRagexe, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-11-07aRagexe, 2018-11-14cRagexe, 2018-11-14dRagexe, 2018-11-21bRagexe, 2018-11-28aRagexe, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-12aRagexe, 2018-12-12bRagexe, 2018-12-19bRagexe, 2018-12-26aRagexe, 2019-01-09aRagexe, 2019-01-16bRagexe, 2019-01-16cRagexe, 2019-01-23dRagexe, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-27aRagexe, 2019-02-28aRagexe, 2019-03-06bRagexe, 2019-03-06cRagexe, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-22aRagexe, 2019-03-27bRagexe, 2019-04-03aRagexe, 2019-04-17aRagexe, 2019-04-18aRagexe, 2019-05-08cRagexe, 2019-05-22bRagexe, 2019-05-22cRagexe, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29cRagexe, 2019-05-30aRagexe, 2019-06-05fRagexe, 2019-06-05KRagexe, 2019-06-19bRagexe, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-07-03aRagexe, 2019-07-17aRagexe, 2019-07-17dRagexe, 2019-07-24aRagexe, 2019-07-31bRagexe, 2019-08-02aRagexe, 2019-08-07aRagexe, 2019-08-21aRagexe, 2019-08-28aRagexe, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-18bRagexe, 2019-09-25aRagexe, 2019-09-25bRagexe, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-16fRagexe, 2019-10-16gRagexe, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-07aRagexe, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-20aRagexe, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04bRagexe, 2019-12-11aRagexe, 2019-12-18bRagexe, 2019-12-24aRagexe, 2019-12-24bRagexe, 2020-01-08aRagexe, 2020-01-22cRagexe, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-06aRagexe, 2020-02-12aRagexe, 2020-02-19dRagexe, 2020-03-04aRagexe, 2020-03-18bRagexe, 2020-04-01bRagexe, 2020-04-14_6aRagexe, 2020-04-14eRagexe, 2020-05-06aRagexe, 2020-05-20bRagexe, 2020-06-03aRagexe, 2020-06-17aRagexe, 2020-07-01bRagexe, 2020-07-01cRagexe +// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe, 2018-08-01cRagexe, 2018-08-08bRagexe, 2018-08-22cRagexe, 2018-08-29aRagexe, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-19aRagexe, 2018-10-02aRagexe, 2018-10-02bRagexe, 2018-10-17_02aRagexe, 2018-10-17_03aRagexe, 2018-10-17bRagexe, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-11-07aRagexe, 2018-11-14cRagexe, 2018-11-14dRagexe, 2018-11-21bRagexe, 2018-11-28aRagexe, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-12aRagexe, 2018-12-12bRagexe, 2018-12-19bRagexe, 2018-12-26aRagexe, 2019-01-09aRagexe, 2019-01-16bRagexe, 2019-01-16cRagexe, 2019-01-23dRagexe, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-27aRagexe, 2019-02-28aRagexe, 2019-03-06bRagexe, 2019-03-06cRagexe, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-22aRagexe, 2019-03-27bRagexe, 2019-04-03aRagexe, 2019-04-17aRagexe, 2019-04-18aRagexe, 2019-05-08cRagexe, 2019-05-22bRagexe, 2019-05-22cRagexe, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29cRagexe, 2019-05-30aRagexe, 2019-06-05fRagexe, 2019-06-05KRagexe, 2019-06-19bRagexe, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-07-03aRagexe, 2019-07-17aRagexe, 2019-07-17dRagexe, 2019-07-24aRagexe, 2019-07-31bRagexe, 2019-08-02aRagexe, 2019-08-07aRagexe, 2019-08-21aRagexe, 2019-08-28aRagexe, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-18bRagexe, 2019-09-25aRagexe, 2019-09-25bRagexe, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-16fRagexe, 2019-10-16gRagexe, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-07aRagexe, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-20aRagexe, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04bRagexe, 2019-12-11aRagexe, 2019-12-18bRagexe, 2019-12-24aRagexe, 2019-12-24bRagexe, 2020-01-08aRagexe, 2020-01-22cRagexe, 2020-01-29bRagexe, 2020-01-30aRagexe, 2020-02-05aRagexe, 2020-02-06aRagexe, 2020-02-12aRagexe, 2020-02-19dRagexe, 2020-03-04aRagexe, 2020-03-18bRagexe, 2020-04-01bRagexe, 2020-04-14_6aRagexe, 2020-04-14eRagexe, 2020-05-06aRagexe, 2020-05-20bRagexe, 2020-06-03aRagexe, 2020-06-17aRagexe, 2020-07-01bRagexe, 2020-07-01cRagexe, 2020-07-15bRagexe, 2020-07-29cRagexe, 2020-08-05bRagexe, 2020-08-05cRagexe, 2020-08-19dRagexe, 2020-09-02bRagexe, 2020-09-16gRagexe, 2020-09-16hRagexe, 2020-09-16iRagexe, 2020-09-23aRagexe, 2020-09-24aRagexe, 2020-10-07aRagexe, 2020-10-21aRagexe, 2020-11-04aRagexe, 2020-11-18bRagexe, 2020-12-01aRagexe, 2020-12-02_Ragexe_1606718761, 2020-12-02_Ragexe_1606797618, 2020-12-11_Ragexe_1607663043, 2020-12-23_Ragexe_1608270870, 2020-12-23_Ragexe_1608535098, 2020-12-24_Ragexe_1608790358, 2020-12-28_Ragexe_1609131300, 2020-12-28_Ragexe_1609136749, 2021-02-03_Ragexe_1611289664, 2021-02-03_Ragexe_1612157471, 2021-02-17_Ragexe_1613360741, 2021-03-03_Ragexe_1614232840, 2021-03-03_Ragexe_1614323446, 2021-03-17_Ragexe_1615446017, 2021-03-31_Ragexe_1616973953, 2021-03-31_Ragexe_1616982771, 2021-04-07_Ragexe_1617254675, 2021-04-07_Ragexe_1617258828, 2021-05-04_Ragexe_1619666128, 2021-05-18_Ragexe_1620794540, 2021-05-18_Ragexe_1620800154, 2021-06-02_Ragexe_1622181930, 2021-06-16_Ragexe_1623309468 #if PACKETVER == 20140611 || \ PACKETVER == 20150225 || \ PACKETVER == 20180315 || \ @@ -3445,7 +3445,35 @@ PACKETVER == 20200520 || \ PACKETVER == 20200603 || \ PACKETVER == 20200617 || \ - PACKETVER >= 20200701 + PACKETVER == 20200701 || \ + PACKETVER == 20200715 || \ + PACKETVER == 20200729 || \ + PACKETVER == 20200805 || \ + PACKETVER == 20200819 || \ + PACKETVER == 20200902 || \ + PACKETVER == 20200916 || \ + PACKETVER == 20200923 || \ + PACKETVER == 20200924 || \ + PACKETVER == 20201007 || \ + PACKETVER == 20201021 || \ + PACKETVER == 20201104 || \ + PACKETVER == 20201118 || \ + PACKETVER == 20201201 || \ + PACKETVER == 20201202 || \ + PACKETVER == 20201211 || \ + PACKETVER == 20201223 || \ + PACKETVER == 20201224 || \ + PACKETVER == 20201228 || \ + PACKETVER == 20210203 || \ + PACKETVER == 20210217 || \ + PACKETVER == 20210303 || \ + PACKETVER == 20210317 || \ + PACKETVER == 20210331 || \ + PACKETVER == 20210407 || \ + PACKETVER == 20210504 || \ + PACKETVER == 20210518 || \ + PACKETVER == 20210602 || \ + PACKETVER == 20210616 packet(0x0202,clif->pFriendsListAdd,2); packet(0x022d,clif->pHomMenu,2,4); packet(0x023b,clif->pStoragePassword,0); @@ -9796,5 +9824,50 @@ packet(0x0967,clif->pSolveCharName,2); #endif +// 2021-06-30_Ragexe_1624007702, 2021-06-30_Ragexe_1625124654, 2021-06-30_Ragexe_1625564223, 2021-07-21_Ragexe_1626409768, 2021-08-04_Ragexe_1627620157, 2021-08-18_Ragexe_1628745477, 2021-09-01_Ragexe_1630029097, 2021-09-01_Ragexe_1630309867, 2021-09-15_Ragexe_1631495724, 2021-09-15_Ragexe_1631603235, 2021-09-29_Ragexe_1632459236, 2021-10-20_Ragexe_1634267486, 2021-10-20_Ragexe_1634520921, 2021-10-20_Ragexe_1634626294, 2021-11-03_Ragexe_1635824489, 2021-11-03_Ragexe_1635841038, 2021-11-03_Ragexe_1635926200, 2021-11-05_Ragexe_1636078531, 2021-11-05_Ragexe_1636095152, 2021-11-10_Ragexe_1636525031, 2021-11-17_Ragexe_1636621550, 2021-11-17_Ragexe_1637039759, 2021-11-17_Ragexe_1637052357, 2021-11-18_Ragexe_1637202460 +#if PACKETVER == 20210630 || \ + PACKETVER == 20210721 || \ + PACKETVER == 20210804 || \ + PACKETVER == 20210818 || \ + PACKETVER == 20210901 || \ + PACKETVER == 20210915 || \ + PACKETVER == 20210929 || \ + PACKETVER == 20211020 || \ + PACKETVER == 20211103 || \ + PACKETVER == 20211105 || \ + PACKETVER == 20211110 || \ + PACKETVER == 20211117 || \ + PACKETVER >= 20211118 + packet(0x0202,clif->pFriendsListAdd,2); + packet(0x022d,clif->pHomMenu,2,4); + packet(0x023b,clif->pStoragePassword,0); + packet(0x0281,clif->pDull/*,XXX*/); + packet(0x02c4,clif->pPartyInvite2,2); + packet(0x035f,clif->pWalkToXY,2); + packet(0x0360,clif->pTickSend,2); + packet(0x0361,clif->pChangeDir,2,4); + packet(0x0362,clif->pTakeItem,2); + packet(0x0363,clif->pDropItem,2,4); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0365,clif->pMoveFromKafra,2,4); + packet(0x0366,clif->pUseSkillToPos,2,4,6,8); + packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pGetCharNameRequest,2); + packet(0x0369,clif->pSolveCharName,2); + packet(0x0436,clif->pWantToConnection,2,6,10,18,22); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0438,clif->pUseSkillToId,2,4,6); + packet(0x07e4,clif->pItemListWindowSelected,2,4,8); + packet(0x07ec,clif->pDull/*,XXX*/); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0815,clif->pReqCloseBuyingStore,0); + packet(0x0817,clif->pReqClickBuyingStore,2); + packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0838,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); +#endif + #endif /* MAP_PACKETS_SHUFFLE_MAIN_H */ diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h index a2d155fe267..cbcd7b07191 100644 --- a/src/map/packets_shuffle_re.h +++ b/src/map/packets_shuffle_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -9618,7 +9618,7 @@ packet(0x0969,clif->pActionRequest,2,6); #endif -// 2018-03-21aRagexeRE, 2018-03-28bRagexeRE, 2018-04-04cRagexeRE, 2018-04-18bRagexeRE, 2018-04-25cRagexeRE, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-16cRagexeRE, 2018-05-23aRagexeRE, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20dRagexeRE, 2018-06-20eRagexeRE, 2018-06-21aRagexeRE, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-09-12dRagexeRE, 2018-09-19aRagexeRE, 2018-10-02aRagexeRE, 2018-10-02bRagexeRE, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexeRE, 2018-10-17bRagexeRE, 2018-10-31cRagexeRE, 2018-11-07aRagexeRE, 2018-11-14cRagexeRE, 2018-11-14dRagexeRE, 2018-11-21cRagexeRE, 2018-11-28aRagexeRE, 2018-12-05bRagexeRE, 2018-12-12aRagexeRE, 2018-12-12bRagexeRE, 2018-12-19bRagexeRE, 2018-12-26aRagexeRE, 2019-01-09bRagexeRE, 2019-01-16bRagexeRE, 2019-01-16cRagexeRE, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-20aRagexeRE, 2019-02-27bRagexeRE, 2019-02-28aRagexeRE, 2019-03-06bRagexeRE, 2019-03-06cRagexeRE, 2019-03-20aRagexeRE, 2019-03-22aRagexeRE, 2019-03-27bRagexeRE, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17cRagexeRE, 2019-04-18aRagexeRE, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexeRE, 2019-05-22cRagexeRE, 2019-05-29bRagexeRE, 2019-05-29cRagexeRE, 2019-05-30aRagexeRE, 2019-06-05hRagexeRE, 2019-06-05JRagexeRE, 2019-06-05LRagexeRE, 2019-06-19cRagexeRE, 2019-06-26bRagexeRE, 2019-07-03bRagexeRE, 2019-07-17cRagexeRE, 2019-07-17dRagexeRE, 2019-07-24bRagexeRE, 2019-07-31bRagexeRE, 2019-08-02aRagexeRE, 2019-08-07dRagexeRE, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexeRE, 2019-09-04bRagexeRE, 2019-09-18cRagexeRE, 2019-09-25aRagexeRE, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexeRE, 2019-10-16gRagexeRE, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-11-06bRagexeRE, 2019-11-07aRagexeRE, 2019-11-13eRagexeRE, 2019-11-20cRagexeRE, 2019-11-27aRagexeRE, 2019-12-04aRagexeRE, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11fRagexeRE, 2019-12-18bRagexeRE, 2019-12-24aRagexeRE, 2019-12-24bRagexeRE, 2020-01-08bRagexeRE, 2020-01-22cRagexeRE, 2020-02-05aRagexeRE, 2020-02-12aRagexeRE, 2020-02-19eRagexeRE, 2020-03-04aRagexeRE, 2020-07-09_sakaRagexeRE +// 2018-03-21aRagexeRE, 2018-03-28bRagexeRE, 2018-04-04cRagexeRE, 2018-04-18bRagexeRE, 2018-04-25cRagexeRE, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-16cRagexeRE, 2018-05-23aRagexeRE, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20dRagexeRE, 2018-06-20eRagexeRE, 2018-06-21aRagexeRE, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-09-12dRagexeRE, 2018-09-19aRagexeRE, 2018-10-02aRagexeRE, 2018-10-02bRagexeRE, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexeRE, 2018-10-17bRagexeRE, 2018-10-31cRagexeRE, 2018-11-07aRagexeRE, 2018-11-14cRagexeRE, 2018-11-14dRagexeRE, 2018-11-21cRagexeRE, 2018-11-28aRagexeRE, 2018-12-05bRagexeRE, 2018-12-12aRagexeRE, 2018-12-12bRagexeRE, 2018-12-19bRagexeRE, 2018-12-26aRagexeRE, 2019-01-09bRagexeRE, 2019-01-16bRagexeRE, 2019-01-16cRagexeRE, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-20aRagexeRE, 2019-02-27bRagexeRE, 2019-02-28aRagexeRE, 2019-03-06bRagexeRE, 2019-03-06cRagexeRE, 2019-03-20aRagexeRE, 2019-03-22aRagexeRE, 2019-03-27bRagexeRE, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17cRagexeRE, 2019-04-18aRagexeRE, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexeRE, 2019-05-22cRagexeRE, 2019-05-29bRagexeRE, 2019-05-29cRagexeRE, 2019-05-30aRagexeRE, 2019-06-05hRagexeRE, 2019-06-05JRagexeRE, 2019-06-05LRagexeRE, 2019-06-19cRagexeRE, 2019-06-26bRagexeRE, 2019-07-03bRagexeRE, 2019-07-17cRagexeRE, 2019-07-17dRagexeRE, 2019-07-24bRagexeRE, 2019-07-31bRagexeRE, 2019-08-02aRagexeRE, 2019-08-07dRagexeRE, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexeRE, 2019-09-04bRagexeRE, 2019-09-18cRagexeRE, 2019-09-25aRagexeRE, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexeRE, 2019-10-16gRagexeRE, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-11-06bRagexeRE, 2019-11-07aRagexeRE, 2019-11-13eRagexeRE, 2019-11-20cRagexeRE, 2019-11-27aRagexeRE, 2019-12-04aRagexeRE, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11fRagexeRE, 2019-12-18bRagexeRE, 2019-12-24aRagexeRE, 2019-12-24bRagexeRE, 2020-01-08bRagexeRE, 2020-01-22cRagexeRE, 2020-02-05aRagexeRE, 2020-02-12aRagexeRE, 2020-02-19eRagexeRE, 2020-03-04aRagexeRE, 2020-07-09_sakaRagexeRE, 2020-07-23_sakaRagexeRE, 2020-07-23_sakbRagexeRE, 2020-07-24aRagexeRE, 2020-07-29aRagexeRE, 2020-08-05aRagexeRE, 2020-08-06aRagexeRE, 2020-08-12aRagexeRE, 2020-08-19aRagexeRE, 2020-09-02aRagexeRE, 2020-09-02bRagexeRE, 2021-01-07aRagexeRE #if PACKETVER == 20180321 || \ PACKETVER == 20180328 || \ PACKETVER == 20180404 || \ @@ -9703,7 +9703,16 @@ PACKETVER == 20200212 || \ PACKETVER == 20200219 || \ PACKETVER == 20200304 || \ - PACKETVER >= 20200709 + PACKETVER == 20200709 || \ + PACKETVER == 20200723 || \ + PACKETVER == 20200724 || \ + PACKETVER == 20200729 || \ + PACKETVER == 20200805 || \ + PACKETVER == 20200806 || \ + PACKETVER == 20200812 || \ + PACKETVER == 20200819 || \ + PACKETVER == 20200902 || \ + PACKETVER == 20210107 packet(0x0202,clif->pFriendsListAdd,2); packet(0x022d,clif->pHomMenu,2,4); packet(0x023b,clif->pStoragePassword,0); @@ -9735,5 +9744,41 @@ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); #endif +// 2021-11-03_Ragexe_1635824489, 2021-11-03_Ragexe_1635926200, 2021-11-05_Ragexe_1636095152, 2021-11-10_Ragexe_1636525031, 2021-11-17_Ragexe_1637052357 +#if PACKETVER == 20211103 || \ + PACKETVER == 20211105 || \ + PACKETVER == 20211110 || \ + PACKETVER >= 20211117 + packet(0x0202,clif->pFriendsListAdd,2); + packet(0x022d,clif->pHomMenu,2,4); + packet(0x023b,clif->pStoragePassword,0); + packet(0x0281,clif->pDull/*,XXX*/); + packet(0x02c4,clif->pPartyInvite2,2); + packet(0x035f,clif->pWalkToXY,2); + packet(0x0360,clif->pTickSend,2); + packet(0x0361,clif->pChangeDir,2,4); + packet(0x0362,clif->pTakeItem,2); + packet(0x0363,clif->pDropItem,2,4); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0365,clif->pMoveFromKafra,2,4); + packet(0x0366,clif->pUseSkillToPos,2,4,6,8); + packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pGetCharNameRequest,2); + packet(0x0369,clif->pSolveCharName,2); + packet(0x0436,clif->pWantToConnection,2,6,10,18,22); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0438,clif->pUseSkillToId,2,4,6); + packet(0x07e4,clif->pItemListWindowSelected,2,4,8); + packet(0x07ec,clif->pDull/*,XXX*/); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0815,clif->pReqCloseBuyingStore,0); + packet(0x0817,clif->pReqClickBuyingStore,2); + packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0838,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); +#endif + #endif /* MAP_PACKETS_SHUFFLE_RE_H */ diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h index d278d3b0293..ba7c19d54e8 100644 --- a/src/map/packets_shuffle_zero.h +++ b/src/map/packets_shuffle_zero.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,7 +37,7 @@ /* This file is autogenerated, please do not commit manual changes */ -// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero, 2020-02-12aRagexe_zero, 2020-02-26aRagexe_zero, 2020-02-26bRagexe_zero, 2020-03-04aRagexe_zero, 2020-03-18_2aRagexe_zero, 2020-04-01_2aRagexe_zero, 2020-04-14bRagexe_zero, 2020-05-06aRagexe_zero, 2020-05-20_5aRagexe_zero, 2020-06-03_2aRagexe_zero, 2020-06-17aRagexe_zero, 2020-07-01_2aRagexe_zero, 2020-07-01aRagexe_zero +// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero, 2019-12-24_4aRagexe_zero, 2019-12-24_5aRagexe_zero, 2020-01-15_2aRagexe_zero, 2020-01-15aRagexe_zero, 2020-01-29_2aRagexe_zero, 2020-01-29aRagexe_zero, 2020-02-12aRagexe_zero, 2020-02-26aRagexe_zero, 2020-02-26bRagexe_zero, 2020-03-04aRagexe_zero, 2020-03-18_2aRagexe_zero, 2020-04-01_2aRagexe_zero, 2020-04-14bRagexe_zero, 2020-05-06aRagexe_zero, 2020-05-20_5aRagexe_zero, 2020-06-03_2aRagexe_zero, 2020-06-17aRagexe_zero, 2020-07-01_2aRagexe_zero, 2020-07-01aRagexe_zero, 2020-07-29cRagexe_zero, 2020-08-05bRagexe_zero, 2020-08-05cRagexe_zero, 2020-09-02aRagexe_zero, 2020-10-21aRagexe_zero, 2020-11-18aRagexe_zero, 2020-12-01aRagexe_zero, 2020-12-02aRagexe_zero, 2020-12-02bRagexe_zero, 2020-12-16_Ragexe_1607900518_zero, 2020-12-16_Ragexe_1608018700_zero, 2020-12-16_Ragexe_1608022476_zero, 2021-01-06_Ragexe_1609306194_zero, 2021-01-06_Ragexe_1609309495_zero, 2021-01-06_Ragexe_1609384473_zero, 2021-02-17_Ragexe_1613356634_zero, 2021-02-17_Ragexe_1613458896_zero, 2021-03-17_Ragexe_1615443244_zero, 2021-03-31_Ragexe_1616645609_zero, 2021-03-31_Ragexe_1617104920_zero, 2021-04-01_Ragexe_1617260946_zero, 2021-04-21_Ragexe_1618471411_zero, 2021-05-04_Ragexe_1619749621_zero, 2021-05-12_Ragexe_1620788657_zero, 2021-05-12_Ragexe_1620795325_zero, 2021-05-18_Ragexe_1620875688_zero, 2021-06-16_Ragexe_1623310696_zero, 2021-06-16_Ragexe_1623398452_zero, 2021-06-16_Ragexe_1623738726_zero, 2021-06-16_Ragexe_1623830377_zero, 2021-06-16_Ragexe_1623845562_zero, 2021-06-23_Ragexe_1624430023_zero #if PACKETVER == 20171018 || \ PACKETVER == 20171019 || \ PACKETVER == 20171023 || \ @@ -123,7 +123,26 @@ PACKETVER == 20200520 || \ PACKETVER == 20200603 || \ PACKETVER == 20200617 || \ - PACKETVER >= 20200701 + PACKETVER == 20200701 || \ + PACKETVER == 20200729 || \ + PACKETVER == 20200805 || \ + PACKETVER == 20200902 || \ + PACKETVER == 20201021 || \ + PACKETVER == 20201118 || \ + PACKETVER == 20201201 || \ + PACKETVER == 20201202 || \ + PACKETVER == 20201216 || \ + PACKETVER == 20210106 || \ + PACKETVER == 20210217 || \ + PACKETVER == 20210317 || \ + PACKETVER == 20210331 || \ + PACKETVER == 20210401 || \ + PACKETVER == 20210421 || \ + PACKETVER == 20210504 || \ + PACKETVER == 20210512 || \ + PACKETVER == 20210518 || \ + PACKETVER == 20210616 || \ + PACKETVER == 20210623 packet(0x0202,clif->pFriendsListAdd,2); packet(0x022d,clif->pHomMenu,2,4); packet(0x023b,clif->pStoragePassword,0); @@ -796,5 +815,46 @@ packet(0x0968,clif->pStoragePassword,0); #endif +// 2021-06-30_Ragexe_1624599911_zero, 2021-06-30_Ragexe_1624607404_zero, 2021-06-30_Ragexe_1624854348_zero, 2021-07-21_Ragexe_1625719811_zero, 2021-08-04_Ragexe_1627876396_zero, 2021-08-18_Ragexe_1628740146_zero, 2021-09-29_Ragexe_1632464403_zero, 2021-09-29_Ragexe_1632814839_zero, 2021-09-29_Ragexe_1632894566_zero, 2021-10-06_Ragexe_1633056582_zero, 2021-10-20_Ragexe_1634624271_zero, 2021-11-03_Ragexe_1635730894_zero, 2021-11-03_Ragexe_1635842843_zero, 2021-11-17_Ragexe_1636622068_zero +#if PACKETVER == 20210630 || \ + PACKETVER == 20210721 || \ + PACKETVER == 20210804 || \ + PACKETVER == 20210818 || \ + PACKETVER == 20210929 || \ + PACKETVER == 20211006 || \ + PACKETVER == 20211020 || \ + PACKETVER == 20211103 || \ + PACKETVER >= 20211117 + packet(0x0202,clif->pFriendsListAdd,2); + packet(0x022d,clif->pHomMenu,2,4); + packet(0x023b,clif->pStoragePassword,0); + packet(0x0281,clif->pDull/*,XXX*/); + packet(0x02c4,clif->pPartyInvite2,2); + packet(0x035f,clif->pWalkToXY,2); + packet(0x0360,clif->pTickSend,2); + packet(0x0361,clif->pChangeDir,2,4); + packet(0x0362,clif->pTakeItem,2); + packet(0x0363,clif->pDropItem,2,4); + packet(0x0364,clif->pMoveToKafra,2,4); + packet(0x0365,clif->pMoveFromKafra,2,4); + packet(0x0366,clif->pUseSkillToPos,2,4,6,8); + packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); + packet(0x0368,clif->pGetCharNameRequest,2); + packet(0x0369,clif->pSolveCharName,2); + packet(0x0436,clif->pWantToConnection,2,6,10,18,22); + packet(0x0437,clif->pActionRequest,2,6); + packet(0x0438,clif->pUseSkillToId,2,4,6); + packet(0x07e4,clif->pItemListWindowSelected,2,4,8); + packet(0x07ec,clif->pDull/*,XXX*/); + packet(0x0802,clif->pPartyBookingRegisterReq,2,4); + packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); + packet(0x0815,clif->pReqCloseBuyingStore,0); + packet(0x0817,clif->pReqClickBuyingStore,2); + packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); + packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); + packet(0x0838,clif->pSearchStoreInfoNextPage,0); + packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); +#endif + #endif /* MAP_PACKETS_SHUFFLE_ZERO_H */ From c4401a19ff9d846bff362f10cb391164b9d1ba2d Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 12 Oct 2021 15:36:41 +0300 Subject: [PATCH 02/65] Update messages --- src/map/messages_main.h | 735 +++++++++++++++++++++++++++++++++++++++- src/map/messages_re.h | 660 +++++++++++++++++++++++++++++++++++- src/map/messages_zero.h | 704 +++++++++++++++++++++++++++++++++++++- 3 files changed, 2081 insertions(+), 18 deletions(-) diff --git a/src/map/messages_main.h b/src/map/messages_main.h index bb8055f7f7a..4b7746526f7 100644 --- a/src/map/messages_main.h +++ b/src/map/messages_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20200701 +Latest version: 20211118 */ enum clif_messages { @@ -8289,9 +8289,11 @@ Immutable MSG_FAILED_CHANGE = 0x5ff, #endif #if PACKETVER >= 20090610 -/*20090610 to latest +/*20090610 to 20211020 [%s]가 %d개 필요합니다. [%s] required '%d' amount. +20211103 to latest +[%s] %d개가 필요합니다. */ MSG_USESKILL_FAIL_NEED_ITEM = 0x600, /*20090610 to latest @@ -9550,12 +9552,14 @@ You have sold %s. Amount: %d. Total Zeny: %dz %s item could not be sold because you do not have the wanted amount of items. */ MSG_BUYINGSTORE_TRADE_OVERCOUNT = 0x6d3, -/*20100420 to latest +/*20100420 to 20200902 소환된 정령이 없습니다. You don't have any summoned spirits. 20130807 to 20130814 판매할 아이템을 등록하지 않았습니다. 판매하실 아이템을 등록해 주세요 Has not registered to sell the item. Please register to sell the item +20200916 to latest +해당 정령을 소환할 수 없는 상태입니다. */ MSG_USESKILL_FAIL_EL_SUMMON = 0x6d4, /*20100420 to latest @@ -21718,9 +21722,12 @@ Please try again in a moment. 특성 스테이터스 */ MSG_ID_E1D = 0xe1d, -/*20190508 to latest +/*20190508 to 20200715 파워 파라메터 ^cc0000물리 공격력, 특성 공격력^ffffff 증가 +20200729 to latest +파워 파라메터 +^cc0000물리 공격력, 특성 물리 공격력^ffffff 증가 */ MSG_ID_E1E = 0xe1e, /*20190508 to latest @@ -21733,9 +21740,12 @@ Please try again in a moment. ^cc0000마법 저항력^ffffff 증가 */ MSG_ID_E20 = 0xe20, -/*20190508 to latest +/*20190508 to 20200715 스펠 파라메터 ^cc0000마법 공격력, 마법 공격력^ffffff 증가 +20200729 to latest +스펠 파라메터 +^cc0000마법 공격력, 특성 마법 공격력^ffffff 증가 */ MSG_ID_E21 = 0xe21, /*20190508 to latest @@ -22656,6 +22666,719 @@ DEATH: %.1f%% (basic: 100.0%%, %s: %.1f%%) */ MSG_ID_EEC = 0xeec, #endif +#if PACKETVER >= 20200729 +/*20200729 to latest +해당 제련도는 등급 강화가 불가능합니다. +*/ + MSG_ID_EED = 0xeed, +/*20200729 to latest +장비가 파괴되지 않는 상태입니다. +*/ + MSG_ID_EEE = 0xeee, +/*20200729 to latest +보조 재료가 적용되어 있지 않습니다. +강화를 계속 진행 하시겠습니까? +*/ + MSG_ID_EEF = 0xeef, +/*20200729 to latest +클라이언트 파일이 변조되었습니다. +*/ + MSG_ID_EF0 = 0xef0, +/*20200729 to latest +메시지 +*/ + MSG_ID_EF1 = 0xef1, +#endif +#if PACKETVER >= 20200819 +/*20200819 to latest +판매 할 물품의 총합이 가질 수 있는 Zeny의 양을 넘습니다. + 수량 및 가격 수정 부탁 드립니다. +*/ + MSG_ID_EF2 = 0xef2, +#endif +#if PACKETVER >= 20200902 +/*20200902 to latest +평판 현황 +*/ + MSG_ID_EF3 = 0xef3, +/*20200902 to latest +%u / 1000 P +*/ + MSG_ID_EF4 = 0xef4, +/*20200902 to latest +전체 +All +*/ + MSG_ID_EF5 = 0xef5, +/*20200902 to latest +NOW LOADING.. +Loading... +*/ + MSG_ID_EF6 = 0xef6, +#endif +#if PACKETVER >= 20200916 +/*20200916 to latest +보조 재료 선택이 초기화 됩니다. +*/ + MSG_ID_EF7 = 0xef7, +/*20200916 to 20201223 +인챈트 하기 +20201223 to latest + +Current admission application state. +*/ + MSG_ID_EF8 = 0xef8, +/*20200916 to 20201021 +인챈트 초기화 +20201104 to latest +일반 +General +*/ + MSG_ID_EF9 = 0xef9, +/*20200916 to 20201021 +대상 장비의 인챈트를 +초기화 하시겠습니까? +비용 : %uZeny +20201104 to latest +확정 +*/ + MSG_ID_EFA = 0xefa, +/*20200916 to 20201021 +제니가 부족합니다. +Insufficient zeny +20201104 to latest +성장 +*/ + MSG_ID_EFB = 0xefb, +/*20200916 to 20201021 +잠시 후 재시도 해주세요. +20201104 to latest +초기화 +*/ + MSG_ID_EFC = 0xefc, +/*20200916 to 20201223 +해당 인챈트가 적용될 수 없는 아이템입니다. +20201223 to 20201228 + +Current admission application state. +20210203 to latest +무게가 70% 이상입니다. 무게를 줄인 후 재시도 해주세요. +*/ + MSG_ID_EFD = 0xefd, +/*20200916 to 20201223 +리스트 중 1개 부여 +20201223 to latest +인챈트 부여 +*/ + MSG_ID_EFE = 0xefe, +/*20200916 to 20201223 +업그레이드 +20201223 to latest +인챈트 부여 +*/ + MSG_ID_EFF = 0xeff, +/*20200916 to 20201223 +확정 인챈트 +20201223 to latest +성장 +*/ + MSG_ID_F00 = 0xf00, +/*20200916 to 20201021 +%u Zeny +20201104 to 20201223 +%I64u Zeny +20201223 to latest +초기화 +*/ + MSG_ID_F01 = 0xf01, +/*20200916 to latest +인챈트 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다. +*/ + MSG_ID_F02 = 0xf02, +/*20200916 to latest +인챈트 중에는 로덱스를 사용할 수 없습니다. +*/ + MSG_ID_F03 = 0xf03, +/*20200916 to latest +인챈트 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다. +*/ + MSG_ID_F04 = 0xf04, +/*20200916 to latest +인챈트 중에는 은행을 사용할 수 없습니다. +*/ + MSG_ID_F05 = 0xf05, +/*20200916 to latest +인챈트를 실행하시겠습니까? +*/ + MSG_ID_F06 = 0xf06, +/*20200916 to latest +제작 +*/ + MSG_ID_F07 = 0xf07, +/*20200916 to latest +조합에 필요한 재료가 부족합니다. +*/ + MSG_ID_F08 = 0xf08, +/*20200916 to latest +장착된 카드 아이템과 부여된 인챈트가 소실됩니다. +*/ + MSG_ID_F09 = 0xf09, +/*20200916 to latest +장착된 카드 아이템이 소실될 수 있습니다. +*/ + MSG_ID_F0A = 0xf0a, +/*20200916 to latest +부여된 인챈트가 소실될 수 있습니다. +*/ + MSG_ID_F0B = 0xf0b, +#endif +#if PACKETVER >= 20200923 +/*20200923 to latest +화면 내 유저 숨기기 ON +*/ + MSG_ID_F0C = 0xf0c, +/*20200923 to latest +화면 내 유저 숨기기 OFF +*/ + MSG_ID_F0D = 0xf0d, +#endif +#if PACKETVER >= 20201021 +/*20201021 to latest +세부 내용 확인 +*/ + MSG_ID_F0E = 0xf0e, +/*20201021 to latest +세부 내용을 확인해주세요. +*/ + MSG_ID_F0F = 0xf0f, +#endif +#if PACKETVER >= 20201104 +/*20201104 to latest +조합 가능한 아이템이 없습니다. +*/ + MSG_ID_F10 = 0xf10, +#endif +#if PACKETVER >= 20201118 +/*20201118 to latest +인챈트 성공! +*/ + MSG_ID_F11 = 0xf11, +/*20201118 to latest +인챈트 실패! +*/ + MSG_ID_F12 = 0xf12, +/*20201118 to latest +인챈트 정보를 찾을 수 없습니다 +*/ + MSG_ID_F13 = 0xf13, +/*20201118 to latest +인챈트 조건을 만족하지 않습니다. +*/ + MSG_ID_F14 = 0xf14, +/*20201118 to latest +임의 유저 수신 여부 설정 실패. +*/ + MSG_ID_F15 = 0xf15, +/*20201118 to latest +임의 유저 수신 거부 상태로 설정 되었습니다. +*/ + MSG_ID_F16 = 0xf16, +/*20201118 to latest +모든 유저 수신 상태로 설정 되었습니다. +*/ + MSG_ID_F17 = 0xf17, +/*20201118 to latest +%s님이 수신 거부 상태 입니다. +*/ + MSG_ID_F18 = 0xf18, +/*20201118 to 20201118 +매일이 반송 되었습니다. +20201201 to latest +RODEX가 반송 되었습니다. +*/ + MSG_ID_F19 = 0xf19, +/*20201118 to 20201118 +매일 반송에 실패 하였습니다. +20201201 to latest +RODEX 반송에 실패 하였습니다. +*/ + MSG_ID_F1A = 0xf1a, +/*20201118 to latest +해당 RODEX의 발신자는 친구 및 길드원이 아닙니다.주의 해주세요. +*/ + MSG_ID_F1B = 0xf1b, +/*20201118 to latest +RODEX 모든 유저 수신 +*/ + MSG_ID_F1C = 0xf1c, +/*20201118 to latest +동일한 효과의 지속 시간이 한도를 초과하여 사용이 불가능합니다. +*/ + MSG_ID_F1D = 0xf1d, +#endif +#if PACKETVER >= 20201201 +/*20201201 to latest +성공 시 제련도는 0으로 초기화됩니다! +*/ + MSG_ID_F1E = 0xf1e, +/*20201201 to latest +카드, 랜덤옵션, 인챈트는 유지됩니다. +*/ + MSG_ID_F1F = 0xf1f, +/*20201201 to latest +실패 시 제련도는 유지됩니다. +*/ + MSG_ID_F20 = 0xf20, +/*20201201 to latest +초기화 +*/ + MSG_ID_F21 = 0xf21, +/*20201201 to latest +구버전 +*/ + MSG_ID_F22 = 0xf22, +#endif +#if PACKETVER >= 20210203 +/*20210203 to latest +Base Lv. %d +*/ + MSG_ID_F23 = 0xf23, +/*20210203 to latest +Job Lv. %d +*/ + MSG_ID_F24 = 0xf24, +/*20210203 to latest +Lv.%d %s +*/ + MSG_ID_F25 = 0xf25, +/*20210203 to latest +퀘스트목록 +*/ + MSG_ID_F26 = 0xf26, +/*20210203 to latest +캐시상점 +*/ + MSG_ID_F27 = 0xf27, +/*20210203 to latest +단축키안내 +*/ + MSG_ID_F28 = 0xf28, +/*20210203 to latest +모험가중개소 +*/ + MSG_ID_F29 = 0xf29, +#endif +#if PACKETVER >= 20210217 +/*20210217 to 20210217 +New UI +20210303 to latest +UI 테마 +*/ + MSG_ID_F2A = 0xf2a, +#endif +#if PACKETVER >= 20210303 +/*20210303 to latest +기존 UI +*/ + MSG_ID_F2B = 0xf2b, +/*20210303 to latest +신규 UI +*/ + MSG_ID_F2C = 0xf2c, +/*20210303 to latest +UI 스킨 +*/ + MSG_ID_F2D = 0xf2d, +#endif +#if PACKETVER >= 20210331 +/*20210331 to latest +- 신규 옵션 - +*/ + MSG_ID_F2E = 0xf2e, +#endif +#if PACKETVER >= 20210504 +/*20210504 to latest +무형 +Formless +*/ + MSG_ID_F2F = 0xf2f, +/*20210504 to latest +불사형 +Undead +*/ + MSG_ID_F30 = 0xf30, +/*20210504 to latest +동물형 +Brute +*/ + MSG_ID_F31 = 0xf31, +/*20210504 to latest +식물형 +Plant +*/ + MSG_ID_F32 = 0xf32, +/*20210504 to latest +곤충형 +Insect +*/ + MSG_ID_F33 = 0xf33, +/*20210504 to latest +어패형 +Fish +*/ + MSG_ID_F34 = 0xf34, +/*20210504 to latest +악마형 +Demon +*/ + MSG_ID_F35 = 0xf35, +/*20210504 to latest +인간형 +Demi-Human +*/ + MSG_ID_F36 = 0xf36, +/*20210504 to latest +천사형 +Angel +*/ + MSG_ID_F37 = 0xf37, +/*20210504 to latest +용족 +Dragon +*/ + MSG_ID_F38 = 0xf38, +/*20210504 to latest +무 +*/ + MSG_ID_F39 = 0xf39, +/*20210504 to latest +수 +Water +*/ + MSG_ID_F3A = 0xf3a, +/*20210504 to latest +지 +Earth +*/ + MSG_ID_F3B = 0xf3b, +/*20210504 to latest +화 +Fire +*/ + MSG_ID_F3C = 0xf3c, +/*20210504 to latest +풍 +Wind +*/ + MSG_ID_F3D = 0xf3d, +/*20210504 to latest +독 +*/ + MSG_ID_F3E = 0xf3e, +/*20210504 to latest +성 +*/ + MSG_ID_F3F = 0xf3f, +/*20210504 to latest +암 +*/ + MSG_ID_F40 = 0xf40, +/*20210504 to latest +염 +*/ + MSG_ID_F41 = 0xf41, +/*20210504 to latest +불사 +*/ + MSG_ID_F42 = 0xf42, +/*20210504 to latest +소형 +Small +*/ + MSG_ID_F43 = 0xf43, +/*20210504 to latest +중형 +Medium +*/ + MSG_ID_F44 = 0xf44, +/*20210504 to latest +대형 +Large +*/ + MSG_ID_F45 = 0xf45, +/*20210504 to latest +DEF +*/ + MSG_ID_F46 = 0xf46, +#endif +#if PACKETVER >= 20210518 +/*20210518 to latest +청소년은 접속이 제한되어 있습니다. +*/ + MSG_ID_F47 = 0xf47, +/*20210518 to latest +0Zeny (염색제거) +*/ + MSG_ID_F48 = 0xf48, +#endif +#if PACKETVER >= 20210602 +/*20210602 to latest +모두 선택 +Select All +*/ + MSG_ID_F49 = 0xf49, +/*20210602 to latest +간편 퀘스트 UI +*/ + MSG_ID_F4A = 0xf4a, +/*20210602 to latest +FREE! +*/ + MSG_ID_F4B = 0xf4b, +/*20210602 to latest +임대 기간 +*/ + MSG_ID_F4C = 0xf4c, +/*20210602 to latest +임대 기간은 최대 14일까지 입력 가능합니다. +*/ + MSG_ID_F4D = 0xf4d, +/*20210602 to latest +거래 불가 +*/ + MSG_ID_F4E = 0xf4e, +/*20210602 to latest +간편 퀘스트 보기 +*/ + MSG_ID_F4F = 0xf4f, +/*20210602 to latest +간편 퀘스트 숨김 +*/ + MSG_ID_F50 = 0xf50, +/*20210602 to latest +간편 퀘스트창에 추가 +*/ + MSG_ID_F51 = 0xf51, +/*20210602 to latest +간편 퀘스트창에서 삭제 +*/ + MSG_ID_F52 = 0xf52, +/*20210602 to latest +퀘스트 도움말 +*/ + MSG_ID_F53 = 0xf53, +/*20210602 to latest +1. 콤보박스 + 검색어 입력창 : 퀘스트 정렬, 검색 기능 +*/ + MSG_ID_F54 = 0xf54, +/*20210602 to latest +- ALL : 받은 퀘스트 전체보기 +*/ + MSG_ID_F55 = 0xf55, +/*20210602 to 20210616 +- 퀘스트 종류 : 노멀 / 일일 / 지역 / 이벤트 / 에피소드 / 직업 / 가이드 퀘스트로 분류하여 정렬합니다. +20210630 to latest +- 퀘스트 종류 : NORMAL(노멀)/ MAIN(메인)/ EPISODE(에피소드)/ DAILY(일일)/ LOCAL(지역)/ JOB(직업)/ GUIDE(가이드)/ EVENT(이벤트) 퀘스트로 분류하여 정렬합니다. +*/ + MSG_ID_F56 = 0xf56, +/*20210602 to 20210616 +- 정렬한 퀘스트 내용에서 원하는 내용을 검색하여 좀 더 세분화된 검색을 할 수 있습니다. +20210630 to latest +- 콤보 박스로 정렬한 퀘스트 목록에서 원하는 내용을 좀 더 세분화하여 검색할 수 있습니다. +*/ + MSG_ID_F57 = 0xf57, +/*20210602 to latest +2. 내비게이션 UI +*/ + MSG_ID_F58 = 0xf58, +/*20210602 to latest +- 내비게이션 UI 열기 : +*/ + MSG_ID_F59 = 0xf59, +/*20210602 to latest +메뉴아이콘 → 내비게이션 아이콘(단축키 : N) +*/ + MSG_ID_F5A = 0xf5a, +/*20210602 to 20210616 +- 퀘스트 상세 설명의 텍스트 하이퍼링크 또는 npc(몬스터)이미지 클릭 시 : +20210630 to latest +- 텍스트 하이퍼링크 또는 npc(몬스터) 이미지 클릭 : +*/ + MSG_ID_F5B = 0xf5b, +/*20210602 to latest +내비게이션 경로 표시 & 필드 바닥에 목표 지점까지 발자국(화살표)표시 +*/ + MSG_ID_F5C = 0xf5c, +/*20210602 to latest +3. 내비게이션 실행 시, 채팅창에 이동 경로가 안내 됩니다 +*/ + MSG_ID_F5D = 0xf5d, +/*20210602 to latest +4. 카프라 직원과 대화하여[공간이동 서비스]를 이용할 수 있습니다. +*/ + MSG_ID_F5E = 0xf5e, +/*20210602 to latest +5. 간편 퀘스트 UI : +*/ + MSG_ID_F5F = 0xf5f, +/*20210602 to latest +퀘스트 UI를 게임 화면에 간단히 표시 해주는 기능 +*/ + MSG_ID_F60 = 0xf60, +/*20210602 to latest +각 퀘스트 제목 마우스 우클릭 시, 퀘스트정보 UI 호출 또는 해당 퀘스트 목록 내 삭제 +*/ + MSG_ID_F61 = 0xf61, +/*20210602 to latest +기능이 있습니다. +*/ + MSG_ID_F62 = 0xf62, +#endif +#if PACKETVER >= 20210630 +/*20210630 to latest +시작할 때 열기 +*/ + MSG_ID_F63 = 0xf63, +#endif +#if PACKETVER >= 20210721 +/*20210721 to latest +결제정보 세션이 만료되었습니다. 클라이언트를 재실행 해주세요 +*/ + MSG_ID_F64 = 0xf64, +/*20210721 to latest +오류가 발생했습니다. 다시 시도해 주세요 +*/ + MSG_ID_F65 = 0xf65, +#endif +#if PACKETVER >= 20210804 +/*20210804 to latest +크기 변경(%s) +*/ + MSG_ID_F66 = 0xf66, +/*20210804 to latest +기능 잠금 +*/ + MSG_ID_F67 = 0xf67, +/*20210804 to latest +기능 해제 +*/ + MSG_ID_F68 = 0xf68, +/*20210804 to latest +입력 활성 +*/ + MSG_ID_F69 = 0xf69, +/*20210804 to latest +입력 비활성 +*/ + MSG_ID_F6A = 0xf6a, +/*20210804 to latest +수신인 설정 +Select receiver +*/ + MSG_ID_F6B = 0xf6b, +/*20210804 to latest +수신그룹 설정 +Select receiving group +*/ + MSG_ID_F6C = 0xf6c, +/*20210804 to latest +설정 +*/ + MSG_ID_F6D = 0xf6d, +/*20210804 to latest +팝업창 분리 +*/ + MSG_ID_F6E = 0xf6e, +/*20210804 to latest +탭으로 돌아가기 +*/ + MSG_ID_F6F = 0xf6f, +/*20210804 to 20210929 +텝 추가 +20211020 to latest +탭 추가 +*/ + MSG_ID_F70 = 0xf70, +/*20210804 to latest +탭 삭제 +*/ + MSG_ID_F71 = 0xf71, +/*20210804 to latest +Enter키를 누르면 채팅을 시작할수 있습니다 +*/ + MSG_ID_F72 = 0xf72, +#endif +#if PACKETVER >= 20210818 +/*20210818 to latest +장비해제 +*/ + MSG_ID_F73 = 0xf73, +/*20210818 to latest +잠시 후 다시 시도해주세요. +Please try again in a moment. +*/ + MSG_ID_F74 = 0xf74, +#endif +#if PACKETVER >= 20210901 +/*20210901 to latest +천지만성 지역에서 사용가능합니다. +*/ + MSG_ID_F75 = 0xf75, +#endif +#if PACKETVER >= 20210915 +/*20210915 to latest +영혼 축적 효과가 필요합니다. +*/ + MSG_ID_F76 = 0xf76, +/*20210915 to latest +부적이 부족합니다. +*/ + MSG_ID_F77 = 0xf77, +/*20210915 to latest +개틀링건 혹은 샷건 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F78 = 0xf78, +/*20210915 to latest +라이플 혹은 리볼버 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F79 = 0xf79, +/*20210915 to latest +그레네이드 런처 혹은 라이플 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F7A = 0xf7a, +/*20210915 to latest +개틀링건 혹은 리볼버 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F7B = 0xf7b, +/*20210915 to latest +샷건 혹은 그레네이드 런처 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F7C = 0xf7c, +#endif +#if PACKETVER >= 20210929 +/*20210929 to latest +장착한 방패가 없습니다. +*/ + MSG_ID_F7D = 0xf7d, +/*20210929 to latest +다중 물물 교환 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다. +*/ + MSG_ID_F7E = 0xf7e, +/*20210929 to latest +다중 물물 교환 중에는 은행을 사용할 수 없습니다. +*/ + MSG_ID_F7F = 0xf7f, +#endif +#if PACKETVER >= 20211103 +/*20211103 to latest +대상의 그림자에 이동할 공간이 없습니다. +*/ + MSG_ID_F80 = 0xf80, +/*20211103 to latest +최소한 한종의 영물과 교감하는 상태여야 합니다. +*/ + MSG_ID_F81 = 0xf81, +#endif }; #endif /* MAP_MESSAGES_MAIN_H */ diff --git a/src/map/messages_re.h b/src/map/messages_re.h index b566ed5605c..331039b5faa 100644 --- a/src/map/messages_re.h +++ b/src/map/messages_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20200709 +Latest version: 20211117 */ enum clif_messages { @@ -7763,9 +7763,11 @@ Party cannot be delegated. Immutable */ MSG_FAILED_CHANGE = 0x5ff, -/*20090603 to latest +/*20090603 to 20210107 [%s]가 %d개 필요합니다. [%s] required '%d' amount. +20211103 to latest +[%s] %d개가 필요합니다. */ MSG_USESKILL_FAIL_NEED_ITEM = 0x600, #endif @@ -9026,12 +9028,14 @@ You have sold %s. Amount: %d. Total Zeny: %dz %s item could not be sold because you do not have the wanted amount of items. */ MSG_BUYINGSTORE_TRADE_OVERCOUNT = 0x6d3, -/*20100420 to latest +/*20100420 to 20200819 소환된 정령이 없습니다. You don't have any summoned spirits. 20130807 to 20130814 판매할 아이템을 등록하지 않았습니다. 판매하실 아이템을 등록해 주세요 Has not registered to sell the item. Please register to sell the item +20200902 to latest +해당 정령을 소환할 수 없는 상태입니다. */ MSG_USESKILL_FAIL_EL_SUMMON = 0x6d4, /*20100420 to latest @@ -21197,9 +21201,12 @@ Please try again in a moment. 특성 스테이터스 */ MSG_ID_E1D = 0xe1d, -/*20190508 to latest +/*20190508 to 20200709 파워 파라메터 ^cc0000물리 공격력, 특성 공격력^ffffff 증가 +20200723 to latest +파워 파라메터 +^cc0000물리 공격력, 특성 물리 공격력^ffffff 증가 */ MSG_ID_E1E = 0xe1e, /*20190508 to latest @@ -21212,9 +21219,12 @@ Please try again in a moment. ^cc0000마법 저항력^ffffff 증가 */ MSG_ID_E20 = 0xe20, -/*20190508 to latest +/*20190508 to 20200709 스펠 파라메터 ^cc0000마법 공격력, 마법 공격력^ffffff 증가 +20200723 to latest +스펠 파라메터 +^cc0000마법 공격력, 특성 마법 공격력^ffffff 증가 */ MSG_ID_E21 = 0xe21, /*20190508 to latest @@ -22129,6 +22139,644 @@ DEATH: %.1f%% (basic: 100.0%%, %s: %.1f%%) */ MSG_ID_EEC = 0xeec, #endif +#if PACKETVER >= 20200723 +/*20200723 to latest +해당 제련도는 등급 강화가 불가능합니다. +*/ + MSG_ID_EED = 0xeed, +/*20200723 to latest +장비가 파괴되지 않는 상태입니다. +*/ + MSG_ID_EEE = 0xeee, +/*20200723 to 20200724 +파괴 방지 및 확률 증가가 적용되어 있지 않습니다. +강화를 계속 진행 하시겠습니까? +20200729 to latest +보조 재료가 적용되어 있지 않습니다. +강화를 계속 진행 하시겠습니까? +*/ + MSG_ID_EEF = 0xeef, +#endif +#if PACKETVER >= 20200724 +/*20200724 to latest +클라이언트 파일이 변조되었습니다. +*/ + MSG_ID_EF0 = 0xef0, +#endif +#if PACKETVER >= 20200729 +/*20200729 to latest +메시지 +*/ + MSG_ID_EF1 = 0xef1, +#endif +#if PACKETVER >= 20200806 +/*20200806 to latest +판매 할 물품의 총합이 가질 수 있는 Zeny의 양을 넘습니다. + 수량 및 가격 수정 부탁 드립니다. +*/ + MSG_ID_EF2 = 0xef2, +#endif +#if PACKETVER >= 20200902 +/*20200902 to latest +평판 현황 +*/ + MSG_ID_EF3 = 0xef3, +/*20200902 to latest +%u / 1000 P +*/ + MSG_ID_EF4 = 0xef4, +/*20200902 to latest +전체 +All +*/ + MSG_ID_EF5 = 0xef5, +/*20200902 to latest +NOW LOADING.. +Loading... +*/ + MSG_ID_EF6 = 0xef6, +/*20200902 to latest +보조 재료 선택이 초기화 됩니다. +*/ + MSG_ID_EF7 = 0xef7, +#endif +#if PACKETVER >= 20211103 +/*20211103 to latest + +Current admission application state. +*/ + MSG_ID_EF8 = 0xef8, +/*20211103 to latest +일반 +General +*/ + MSG_ID_EF9 = 0xef9, +/*20211103 to latest +확정 +*/ + MSG_ID_EFA = 0xefa, +/*20211103 to latest +성장 +*/ + MSG_ID_EFB = 0xefb, +/*20211103 to latest +초기화 +*/ + MSG_ID_EFC = 0xefc, +/*20211103 to latest +무게가 70% 이상입니다. 무게를 줄인 후 재시도 해주세요. +*/ + MSG_ID_EFD = 0xefd, +/*20211103 to latest +인챈트 부여 +*/ + MSG_ID_EFE = 0xefe, +/*20211103 to latest +인챈트 부여 +*/ + MSG_ID_EFF = 0xeff, +/*20211103 to latest +성장 +*/ + MSG_ID_F00 = 0xf00, +/*20211103 to latest +초기화 +*/ + MSG_ID_F01 = 0xf01, +/*20211103 to latest +인챈트 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다. +*/ + MSG_ID_F02 = 0xf02, +/*20211103 to latest +인챈트 중에는 로덱스를 사용할 수 없습니다. +*/ + MSG_ID_F03 = 0xf03, +/*20211103 to latest +인챈트 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다. +*/ + MSG_ID_F04 = 0xf04, +/*20211103 to latest +인챈트 중에는 은행을 사용할 수 없습니다. +*/ + MSG_ID_F05 = 0xf05, +/*20211103 to latest +인챈트를 실행하시겠습니까? +*/ + MSG_ID_F06 = 0xf06, +/*20211103 to latest +제작 +*/ + MSG_ID_F07 = 0xf07, +/*20211103 to latest +조합에 필요한 재료가 부족합니다. +*/ + MSG_ID_F08 = 0xf08, +/*20211103 to latest +장착된 카드 아이템과 부여된 인챈트가 소실됩니다. +*/ + MSG_ID_F09 = 0xf09, +/*20211103 to latest +장착된 카드 아이템이 소실될 수 있습니다. +*/ + MSG_ID_F0A = 0xf0a, +/*20211103 to latest +부여된 인챈트가 소실될 수 있습니다. +*/ + MSG_ID_F0B = 0xf0b, +/*20211103 to latest +화면 내 유저 숨기기 ON +*/ + MSG_ID_F0C = 0xf0c, +/*20211103 to latest +화면 내 유저 숨기기 OFF +*/ + MSG_ID_F0D = 0xf0d, +/*20211103 to latest +세부 내용 확인 +*/ + MSG_ID_F0E = 0xf0e, +/*20211103 to latest +세부 내용을 확인해주세요. +*/ + MSG_ID_F0F = 0xf0f, +/*20211103 to latest +조합 가능한 아이템이 없습니다. +*/ + MSG_ID_F10 = 0xf10, +/*20211103 to latest +인챈트 성공! +*/ + MSG_ID_F11 = 0xf11, +/*20211103 to latest +인챈트 실패! +*/ + MSG_ID_F12 = 0xf12, +/*20211103 to latest +인챈트 정보를 찾을 수 없습니다 +*/ + MSG_ID_F13 = 0xf13, +/*20211103 to latest +인챈트 조건을 만족하지 않습니다. +*/ + MSG_ID_F14 = 0xf14, +/*20211103 to latest +임의 유저 수신 여부 설정 실패. +*/ + MSG_ID_F15 = 0xf15, +/*20211103 to latest +임의 유저 수신 거부 상태로 설정 되었습니다. +*/ + MSG_ID_F16 = 0xf16, +/*20211103 to latest +모든 유저 수신 상태로 설정 되었습니다. +*/ + MSG_ID_F17 = 0xf17, +/*20211103 to latest +%s님이 수신 거부 상태 입니다. +*/ + MSG_ID_F18 = 0xf18, +/*20211103 to latest +RODEX가 반송 되었습니다. +*/ + MSG_ID_F19 = 0xf19, +/*20211103 to latest +RODEX 반송에 실패 하였습니다. +*/ + MSG_ID_F1A = 0xf1a, +/*20211103 to latest +해당 RODEX의 발신자는 친구 및 길드원이 아닙니다.주의 해주세요. +*/ + MSG_ID_F1B = 0xf1b, +/*20211103 to latest +RODEX 모든 유저 수신 +*/ + MSG_ID_F1C = 0xf1c, +/*20211103 to latest +동일한 효과의 지속 시간이 한도를 초과하여 사용이 불가능합니다. +*/ + MSG_ID_F1D = 0xf1d, +/*20211103 to latest +성공 시 제련도는 0으로 초기화됩니다! +*/ + MSG_ID_F1E = 0xf1e, +/*20211103 to latest +카드, 랜덤옵션, 인챈트는 유지됩니다. +*/ + MSG_ID_F1F = 0xf1f, +/*20211103 to latest +실패 시 제련도는 유지됩니다. +*/ + MSG_ID_F20 = 0xf20, +/*20211103 to latest +초기화 +*/ + MSG_ID_F21 = 0xf21, +/*20211103 to latest +구버전 +*/ + MSG_ID_F22 = 0xf22, +/*20211103 to latest +Base Lv. %d +*/ + MSG_ID_F23 = 0xf23, +/*20211103 to latest +Job Lv. %d +*/ + MSG_ID_F24 = 0xf24, +/*20211103 to latest +Lv.%d %s +*/ + MSG_ID_F25 = 0xf25, +/*20211103 to latest +퀘스트목록 +*/ + MSG_ID_F26 = 0xf26, +/*20211103 to latest +캐시상점 +*/ + MSG_ID_F27 = 0xf27, +/*20211103 to latest +단축키안내 +*/ + MSG_ID_F28 = 0xf28, +/*20211103 to latest +모험가중개소 +*/ + MSG_ID_F29 = 0xf29, +/*20211103 to latest +UI 테마 +*/ + MSG_ID_F2A = 0xf2a, +/*20211103 to latest +기존 UI +*/ + MSG_ID_F2B = 0xf2b, +/*20211103 to latest +신규 UI +*/ + MSG_ID_F2C = 0xf2c, +/*20211103 to latest +UI 스킨 +*/ + MSG_ID_F2D = 0xf2d, +/*20211103 to latest +- 신규 옵션 - +*/ + MSG_ID_F2E = 0xf2e, +/*20211103 to latest +무형 +Formless +*/ + MSG_ID_F2F = 0xf2f, +/*20211103 to latest +불사형 +Undead +*/ + MSG_ID_F30 = 0xf30, +/*20211103 to latest +동물형 +Brute +*/ + MSG_ID_F31 = 0xf31, +/*20211103 to latest +식물형 +Plant +*/ + MSG_ID_F32 = 0xf32, +/*20211103 to latest +곤충형 +Insect +*/ + MSG_ID_F33 = 0xf33, +/*20211103 to latest +어패형 +Fish +*/ + MSG_ID_F34 = 0xf34, +/*20211103 to latest +악마형 +Demon +*/ + MSG_ID_F35 = 0xf35, +/*20211103 to latest +인간형 +Demi-Human +*/ + MSG_ID_F36 = 0xf36, +/*20211103 to latest +천사형 +Angel +*/ + MSG_ID_F37 = 0xf37, +/*20211103 to latest +용족 +Dragon +*/ + MSG_ID_F38 = 0xf38, +/*20211103 to latest +무 +*/ + MSG_ID_F39 = 0xf39, +/*20211103 to latest +수 +Water +*/ + MSG_ID_F3A = 0xf3a, +/*20211103 to latest +지 +Earth +*/ + MSG_ID_F3B = 0xf3b, +/*20211103 to latest +화 +Fire +*/ + MSG_ID_F3C = 0xf3c, +/*20211103 to latest +풍 +Wind +*/ + MSG_ID_F3D = 0xf3d, +/*20211103 to latest +독 +*/ + MSG_ID_F3E = 0xf3e, +/*20211103 to latest +성 +*/ + MSG_ID_F3F = 0xf3f, +/*20211103 to latest +암 +*/ + MSG_ID_F40 = 0xf40, +/*20211103 to latest +염 +*/ + MSG_ID_F41 = 0xf41, +/*20211103 to latest +불사 +*/ + MSG_ID_F42 = 0xf42, +/*20211103 to latest +소형 +Small +*/ + MSG_ID_F43 = 0xf43, +/*20211103 to latest +중형 +Medium +*/ + MSG_ID_F44 = 0xf44, +/*20211103 to latest +대형 +Large +*/ + MSG_ID_F45 = 0xf45, +/*20211103 to latest +DEF +*/ + MSG_ID_F46 = 0xf46, +/*20211103 to latest +청소년은 접속이 제한되어 있습니다. +*/ + MSG_ID_F47 = 0xf47, +/*20211103 to latest +0Zeny (염색제거) +*/ + MSG_ID_F48 = 0xf48, +/*20211103 to latest +모두 선택 +Select All +*/ + MSG_ID_F49 = 0xf49, +/*20211103 to latest +간편 퀘스트 UI +*/ + MSG_ID_F4A = 0xf4a, +/*20211103 to latest +FREE! +*/ + MSG_ID_F4B = 0xf4b, +/*20211103 to latest +임대 기간 +*/ + MSG_ID_F4C = 0xf4c, +/*20211103 to latest +임대 기간은 최대 14일까지 입력 가능합니다. +*/ + MSG_ID_F4D = 0xf4d, +/*20211103 to latest +거래 불가 +*/ + MSG_ID_F4E = 0xf4e, +/*20211103 to latest +간편 퀘스트 보기 +*/ + MSG_ID_F4F = 0xf4f, +/*20211103 to latest +간편 퀘스트 숨김 +*/ + MSG_ID_F50 = 0xf50, +/*20211103 to latest +간편 퀘스트창에 추가 +*/ + MSG_ID_F51 = 0xf51, +/*20211103 to latest +간편 퀘스트창에서 삭제 +*/ + MSG_ID_F52 = 0xf52, +/*20211103 to latest +퀘스트 도움말 +*/ + MSG_ID_F53 = 0xf53, +/*20211103 to latest +1. 콤보박스 + 검색어 입력창 : 퀘스트 정렬, 검색 기능 +*/ + MSG_ID_F54 = 0xf54, +/*20211103 to latest +- ALL : 받은 퀘스트 전체보기 +*/ + MSG_ID_F55 = 0xf55, +/*20211103 to latest +- 퀘스트 종류 : NORMAL(노멀)/ MAIN(메인)/ EPISODE(에피소드)/ DAILY(일일)/ LOCAL(지역)/ JOB(직업)/ GUIDE(가이드)/ EVENT(이벤트) 퀘스트로 분류하여 정렬합니다. +*/ + MSG_ID_F56 = 0xf56, +/*20211103 to latest +- 콤보 박스로 정렬한 퀘스트 목록에서 원하는 내용을 좀 더 세분화하여 검색할 수 있습니다. +*/ + MSG_ID_F57 = 0xf57, +/*20211103 to latest +2. 내비게이션 UI +*/ + MSG_ID_F58 = 0xf58, +/*20211103 to latest +- 내비게이션 UI 열기 : +*/ + MSG_ID_F59 = 0xf59, +/*20211103 to latest +메뉴아이콘 → 내비게이션 아이콘(단축키 : N) +*/ + MSG_ID_F5A = 0xf5a, +/*20211103 to latest +- 텍스트 하이퍼링크 또는 npc(몬스터) 이미지 클릭 : +*/ + MSG_ID_F5B = 0xf5b, +/*20211103 to latest +내비게이션 경로 표시 & 필드 바닥에 목표 지점까지 발자국(화살표)표시 +*/ + MSG_ID_F5C = 0xf5c, +/*20211103 to latest +3. 내비게이션 실행 시, 채팅창에 이동 경로가 안내 됩니다 +*/ + MSG_ID_F5D = 0xf5d, +/*20211103 to latest +4. 카프라 직원과 대화하여[공간이동 서비스]를 이용할 수 있습니다. +*/ + MSG_ID_F5E = 0xf5e, +/*20211103 to latest +5. 간편 퀘스트 UI : +*/ + MSG_ID_F5F = 0xf5f, +/*20211103 to latest +퀘스트 UI를 게임 화면에 간단히 표시 해주는 기능 +*/ + MSG_ID_F60 = 0xf60, +/*20211103 to latest +각 퀘스트 제목 마우스 우클릭 시, 퀘스트정보 UI 호출 또는 해당 퀘스트 목록 내 삭제 +*/ + MSG_ID_F61 = 0xf61, +/*20211103 to latest +기능이 있습니다. +*/ + MSG_ID_F62 = 0xf62, +/*20211103 to latest +시작할 때 열기 +*/ + MSG_ID_F63 = 0xf63, +/*20211103 to latest +결제정보 세션이 만료되었습니다. 클라이언트를 재실행 해주세요 +*/ + MSG_ID_F64 = 0xf64, +/*20211103 to latest +오류가 발생했습니다. 다시 시도해 주세요 +*/ + MSG_ID_F65 = 0xf65, +/*20211103 to latest +크기 변경(%s) +*/ + MSG_ID_F66 = 0xf66, +/*20211103 to latest +기능 잠금 +*/ + MSG_ID_F67 = 0xf67, +/*20211103 to latest +기능 해제 +*/ + MSG_ID_F68 = 0xf68, +/*20211103 to latest +입력 활성 +*/ + MSG_ID_F69 = 0xf69, +/*20211103 to latest +입력 비활성 +*/ + MSG_ID_F6A = 0xf6a, +/*20211103 to latest +수신인 설정 +Select receiver +*/ + MSG_ID_F6B = 0xf6b, +/*20211103 to latest +수신그룹 설정 +Select receiving group +*/ + MSG_ID_F6C = 0xf6c, +/*20211103 to latest +설정 +*/ + MSG_ID_F6D = 0xf6d, +/*20211103 to latest +팝업창 분리 +*/ + MSG_ID_F6E = 0xf6e, +/*20211103 to latest +탭으로 돌아가기 +*/ + MSG_ID_F6F = 0xf6f, +/*20211103 to latest +탭 추가 +*/ + MSG_ID_F70 = 0xf70, +/*20211103 to latest +탭 삭제 +*/ + MSG_ID_F71 = 0xf71, +/*20211103 to latest +Enter키를 누르면 채팅을 시작할수 있습니다 +*/ + MSG_ID_F72 = 0xf72, +/*20211103 to latest +장비해제 +*/ + MSG_ID_F73 = 0xf73, +/*20211103 to latest +잠시 후 다시 시도해주세요. +Please try again in a moment. +*/ + MSG_ID_F74 = 0xf74, +/*20211103 to latest +천지만성 지역에서 사용가능합니다. +*/ + MSG_ID_F75 = 0xf75, +/*20211103 to latest +영혼 축적 효과가 필요합니다. +*/ + MSG_ID_F76 = 0xf76, +/*20211103 to latest +부적이 부족합니다. +*/ + MSG_ID_F77 = 0xf77, +/*20211103 to latest +개틀링건 혹은 샷건 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F78 = 0xf78, +/*20211103 to latest +라이플 혹은 리볼버 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F79 = 0xf79, +/*20211103 to latest +그레네이드 런처 혹은 라이플 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F7A = 0xf7a, +/*20211103 to latest +개틀링건 혹은 리볼버 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F7B = 0xf7b, +/*20211103 to latest +샷건 혹은 그레네이드 런처 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F7C = 0xf7c, +/*20211103 to latest +장착한 방패가 없습니다. +*/ + MSG_ID_F7D = 0xf7d, +/*20211103 to latest +다중 물물 교환 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다. +*/ + MSG_ID_F7E = 0xf7e, +/*20211103 to latest +다중 물물 교환 중에는 은행을 사용할 수 없습니다. +*/ + MSG_ID_F7F = 0xf7f, +/*20211103 to latest +대상의 그림자에 이동할 공간이 없습니다. +*/ + MSG_ID_F80 = 0xf80, +/*20211103 to latest +최소한 한종의 영물과 교감하는 상태여야 합니다. +*/ + MSG_ID_F81 = 0xf81, +#endif }; #endif /* MAP_MESSAGES_RE_H */ diff --git a/src/map/messages_zero.h b/src/map/messages_zero.h index fc225948a4d..53b38b75403 100644 --- a/src/map/messages_zero.h +++ b/src/map/messages_zero.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20200701 +Latest version: 20211117 */ enum clif_messages { @@ -7658,9 +7658,11 @@ Party cannot be delegated. Immutable */ MSG_FAILED_CHANGE = 0x5ff, -/*20171018 to latest +/*20171018 to 20211020 [%s]가 %d개 필요합니다. [%s] required '%d' amount. +20211103 to latest +[%s] %d개가 필요합니다. */ MSG_USESKILL_FAIL_NEED_ITEM = 0x600, /*20171018 to latest @@ -8718,9 +8720,11 @@ You have sold %s. Amount: %d. Total Zeny: %dz %s item could not be sold because you do not have the wanted amount of items. */ MSG_BUYINGSTORE_TRADE_OVERCOUNT = 0x6d3, -/*20171018 to latest +/*20171018 to 20201021 소환된 정령이 없습니다. You don't have any summoned spirits. +20201118 to latest +해당 정령을 소환할 수 없는 상태입니다. */ MSG_USESKILL_FAIL_EL_SUMMON = 0x6d4, /*20171018 to latest @@ -17810,9 +17814,12 @@ Please try again in a moment. 특성 스테이터스 */ MSG_ID_E1D = 0xe1d, -/*20190424 to latest +/*20190424 to 20200701 파워 파라메터 ^cc0000물리 공격력, 특성 공격력^ffffff 증가 +20200729 to latest +파워 파라메터 +^cc0000물리 공격력, 특성 물리 공격력^ffffff 증가 */ MSG_ID_E1E = 0xe1e, /*20190424 to latest @@ -17825,9 +17832,12 @@ Please try again in a moment. ^cc0000마법 저항력^ffffff 증가 */ MSG_ID_E20 = 0xe20, -/*20190424 to latest +/*20190424 to 20200701 스펠 파라메터 ^cc0000마법 공격력, 마법 공격력^ffffff 증가 +20200729 to latest +스펠 파라메터 +^cc0000마법 공격력, 특성 마법 공격력^ffffff 증가 */ MSG_ID_E21 = 0xe21, /*20190424 to latest @@ -18745,6 +18755,688 @@ DEATH: %.1f%% (basic: 100.0%%, %s: %.1f%%) */ MSG_ID_EEC = 0xeec, #endif +#if PACKETVER >= 20200729 +/*20200729 to latest +해당 제련도는 등급 강화가 불가능합니다. +*/ + MSG_ID_EED = 0xeed, +/*20200729 to latest +장비가 파괴되지 않는 상태입니다. +*/ + MSG_ID_EEE = 0xeee, +/*20200729 to latest +보조 재료가 적용되어 있지 않습니다. +강화를 계속 진행 하시겠습니까? +*/ + MSG_ID_EEF = 0xeef, +/*20200729 to latest +클라이언트 파일이 변조되었습니다. +*/ + MSG_ID_EF0 = 0xef0, +/*20200729 to latest +메시지 +*/ + MSG_ID_EF1 = 0xef1, +#endif +#if PACKETVER >= 20200902 +/*20200902 to latest +판매 할 물품의 총합이 가질 수 있는 Zeny의 양을 넘습니다. + 수량 및 가격 수정 부탁 드립니다. +*/ + MSG_ID_EF2 = 0xef2, +/*20200902 to latest +평판 현황 +*/ + MSG_ID_EF3 = 0xef3, +/*20200902 to latest +%u / 1000 P +*/ + MSG_ID_EF4 = 0xef4, +/*20200902 to latest +전체 +All +*/ + MSG_ID_EF5 = 0xef5, +/*20200902 to latest +NOW LOADING.. +Loading... +*/ + MSG_ID_EF6 = 0xef6, +#endif +#if PACKETVER >= 20201118 +/*20201118 to latest +보조 재료 선택이 초기화 됩니다. +*/ + MSG_ID_EF7 = 0xef7, +/*20201118 to 20210106 +인챈트 하기 +20210106 to latest + +Current admission application state. +*/ + MSG_ID_EF8 = 0xef8, +/*20201118 to latest +일반 +General +*/ + MSG_ID_EF9 = 0xef9, +/*20201118 to latest +확정 +*/ + MSG_ID_EFA = 0xefa, +/*20201118 to latest +성장 +*/ + MSG_ID_EFB = 0xefb, +/*20201118 to latest +초기화 +*/ + MSG_ID_EFC = 0xefc, +/*20201118 to 20210106 +해당 인챈트가 적용될 수 없는 아이템입니다. +20210106 to 20210106 + +Current admission application state. +20210217 to latest +무게가 70% 이상입니다. 무게를 줄인 후 재시도 해주세요. +*/ + MSG_ID_EFD = 0xefd, +/*20201118 to 20210106 +리스트 중 1개 부여 +20210106 to latest +인챈트 부여 +*/ + MSG_ID_EFE = 0xefe, +/*20201118 to 20210106 +업그레이드 +20210106 to latest +인챈트 부여 +*/ + MSG_ID_EFF = 0xeff, +/*20201118 to 20210106 +확정 인챈트 +20210106 to latest +성장 +*/ + MSG_ID_F00 = 0xf00, +/*20201118 to 20210106 +%I64u Zeny +20210106 to latest +초기화 +*/ + MSG_ID_F01 = 0xf01, +/*20201118 to latest +인챈트 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다. +*/ + MSG_ID_F02 = 0xf02, +/*20201118 to latest +인챈트 중에는 로덱스를 사용할 수 없습니다. +*/ + MSG_ID_F03 = 0xf03, +/*20201118 to latest +인챈트 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다. +*/ + MSG_ID_F04 = 0xf04, +/*20201118 to latest +인챈트 중에는 은행을 사용할 수 없습니다. +*/ + MSG_ID_F05 = 0xf05, +/*20201118 to latest +인챈트를 실행하시겠습니까? +*/ + MSG_ID_F06 = 0xf06, +/*20201118 to latest +제작 +*/ + MSG_ID_F07 = 0xf07, +/*20201118 to latest +조합에 필요한 재료가 부족합니다. +*/ + MSG_ID_F08 = 0xf08, +/*20201118 to latest +장착된 카드 아이템과 부여된 인챈트가 소실됩니다. +*/ + MSG_ID_F09 = 0xf09, +/*20201118 to latest +장착된 카드 아이템이 소실될 수 있습니다. +*/ + MSG_ID_F0A = 0xf0a, +/*20201118 to latest +부여된 인챈트가 소실될 수 있습니다. +*/ + MSG_ID_F0B = 0xf0b, +/*20201118 to latest +화면 내 유저 숨기기 ON +*/ + MSG_ID_F0C = 0xf0c, +/*20201118 to latest +화면 내 유저 숨기기 OFF +*/ + MSG_ID_F0D = 0xf0d, +/*20201118 to latest +세부 내용 확인 +*/ + MSG_ID_F0E = 0xf0e, +/*20201118 to latest +세부 내용을 확인해주세요. +*/ + MSG_ID_F0F = 0xf0f, +/*20201118 to latest +조합 가능한 아이템이 없습니다. +*/ + MSG_ID_F10 = 0xf10, +/*20201118 to latest +인챈트 성공! +*/ + MSG_ID_F11 = 0xf11, +/*20201118 to latest +인챈트 실패! +*/ + MSG_ID_F12 = 0xf12, +/*20201118 to latest +인챈트 정보를 찾을 수 없습니다 +*/ + MSG_ID_F13 = 0xf13, +/*20201118 to latest +인챈트 조건을 만족하지 않습니다. +*/ + MSG_ID_F14 = 0xf14, +/*20201118 to latest +임의 유저 수신 여부 설정 실패. +*/ + MSG_ID_F15 = 0xf15, +/*20201118 to latest +임의 유저 수신 거부 상태로 설정 되었습니다. +*/ + MSG_ID_F16 = 0xf16, +/*20201118 to latest +모든 유저 수신 상태로 설정 되었습니다. +*/ + MSG_ID_F17 = 0xf17, +/*20201118 to latest +%s님이 수신 거부 상태 입니다. +*/ + MSG_ID_F18 = 0xf18, +/*20201118 to 20201202 +매일이 반송 되었습니다. +20201201 to latest +RODEX가 반송 되었습니다. +*/ + MSG_ID_F19 = 0xf19, +/*20201118 to 20201202 +매일 반송에 실패 하였습니다. +20201201 to latest +RODEX 반송에 실패 하였습니다. +*/ + MSG_ID_F1A = 0xf1a, +/*20201118 to latest +해당 RODEX의 발신자는 친구 및 길드원이 아닙니다.주의 해주세요. +*/ + MSG_ID_F1B = 0xf1b, +/*20201118 to latest +RODEX 모든 유저 수신 +*/ + MSG_ID_F1C = 0xf1c, +/*20201118 to latest +동일한 효과의 지속 시간이 한도를 초과하여 사용이 불가능합니다. +*/ + MSG_ID_F1D = 0xf1d, +#endif +#if PACKETVER >= 20201201 +/*20201201 to latest +성공 시 제련도는 0으로 초기화됩니다! +*/ + MSG_ID_F1E = 0xf1e, +/*20201201 to latest +카드, 랜덤옵션, 인챈트는 유지됩니다. +*/ + MSG_ID_F1F = 0xf1f, +/*20201201 to latest +실패 시 제련도는 유지됩니다. +*/ + MSG_ID_F20 = 0xf20, +/*20201201 to latest +초기화 +*/ + MSG_ID_F21 = 0xf21, +/*20201201 to latest +구버전 +*/ + MSG_ID_F22 = 0xf22, +#endif +#if PACKETVER >= 20210217 +/*20210217 to latest +Base Lv. %d +*/ + MSG_ID_F23 = 0xf23, +/*20210217 to latest +Job Lv. %d +*/ + MSG_ID_F24 = 0xf24, +/*20210217 to latest +Lv.%d %s +*/ + MSG_ID_F25 = 0xf25, +/*20210217 to latest +퀘스트목록 +*/ + MSG_ID_F26 = 0xf26, +/*20210217 to latest +캐시상점 +*/ + MSG_ID_F27 = 0xf27, +/*20210217 to latest +단축키안내 +*/ + MSG_ID_F28 = 0xf28, +/*20210217 to latest +모험가중개소 +*/ + MSG_ID_F29 = 0xf29, +/*20210217 to 20210217 +New UI +20210317 to latest +UI 테마 +*/ + MSG_ID_F2A = 0xf2a, +#endif +#if PACKETVER >= 20210317 +/*20210317 to latest +기존 UI +*/ + MSG_ID_F2B = 0xf2b, +/*20210317 to latest +신규 UI +*/ + MSG_ID_F2C = 0xf2c, +/*20210317 to latest +UI 스킨 +*/ + MSG_ID_F2D = 0xf2d, +#endif +#if PACKETVER >= 20210331 +/*20210331 to latest +- 신규 옵션 - +*/ + MSG_ID_F2E = 0xf2e, +#endif +#if PACKETVER >= 20210504 +/*20210504 to latest +무형 +Formless +*/ + MSG_ID_F2F = 0xf2f, +/*20210504 to latest +불사형 +Undead +*/ + MSG_ID_F30 = 0xf30, +/*20210504 to latest +동물형 +Brute +*/ + MSG_ID_F31 = 0xf31, +/*20210504 to latest +식물형 +Plant +*/ + MSG_ID_F32 = 0xf32, +/*20210504 to latest +곤충형 +Insect +*/ + MSG_ID_F33 = 0xf33, +/*20210504 to latest +어패형 +Fish +*/ + MSG_ID_F34 = 0xf34, +/*20210504 to latest +악마형 +Demon +*/ + MSG_ID_F35 = 0xf35, +/*20210504 to latest +인간형 +Demi-Human +*/ + MSG_ID_F36 = 0xf36, +/*20210504 to latest +천사형 +Angel +*/ + MSG_ID_F37 = 0xf37, +/*20210504 to latest +용족 +Dragon +*/ + MSG_ID_F38 = 0xf38, +/*20210504 to latest +무 +*/ + MSG_ID_F39 = 0xf39, +/*20210504 to latest +수 +Water +*/ + MSG_ID_F3A = 0xf3a, +/*20210504 to latest +지 +Earth +*/ + MSG_ID_F3B = 0xf3b, +/*20210504 to latest +화 +Fire +*/ + MSG_ID_F3C = 0xf3c, +/*20210504 to latest +풍 +Wind +*/ + MSG_ID_F3D = 0xf3d, +/*20210504 to latest +독 +*/ + MSG_ID_F3E = 0xf3e, +/*20210504 to latest +성 +*/ + MSG_ID_F3F = 0xf3f, +/*20210504 to latest +암 +*/ + MSG_ID_F40 = 0xf40, +/*20210504 to latest +염 +*/ + MSG_ID_F41 = 0xf41, +/*20210504 to latest +불사 +*/ + MSG_ID_F42 = 0xf42, +/*20210504 to latest +소형 +Small +*/ + MSG_ID_F43 = 0xf43, +/*20210504 to latest +중형 +Medium +*/ + MSG_ID_F44 = 0xf44, +/*20210504 to latest +대형 +Large +*/ + MSG_ID_F45 = 0xf45, +/*20210504 to latest +DEF +*/ + MSG_ID_F46 = 0xf46, +#endif +#if PACKETVER >= 20210512 +/*20210512 to latest +청소년은 접속이 제한되어 있습니다. +*/ + MSG_ID_F47 = 0xf47, +/*20210512 to latest +0Zeny (염색제거) +*/ + MSG_ID_F48 = 0xf48, +#endif +#if PACKETVER >= 20210616 +/*20210616 to latest +모두 선택 +Select All +*/ + MSG_ID_F49 = 0xf49, +/*20210616 to latest +간편 퀘스트 UI +*/ + MSG_ID_F4A = 0xf4a, +/*20210616 to latest +FREE! +*/ + MSG_ID_F4B = 0xf4b, +/*20210616 to latest +임대 기간 +*/ + MSG_ID_F4C = 0xf4c, +/*20210616 to latest +임대 기간은 최대 14일까지 입력 가능합니다. +*/ + MSG_ID_F4D = 0xf4d, +/*20210616 to latest +거래 불가 +*/ + MSG_ID_F4E = 0xf4e, +/*20210616 to latest +간편 퀘스트 보기 +*/ + MSG_ID_F4F = 0xf4f, +/*20210616 to latest +간편 퀘스트 숨김 +*/ + MSG_ID_F50 = 0xf50, +/*20210616 to latest +간편 퀘스트창에 추가 +*/ + MSG_ID_F51 = 0xf51, +/*20210616 to latest +간편 퀘스트창에서 삭제 +*/ + MSG_ID_F52 = 0xf52, +/*20210616 to latest +퀘스트 도움말 +*/ + MSG_ID_F53 = 0xf53, +/*20210616 to latest +1. 콤보박스 + 검색어 입력창 : 퀘스트 정렬, 검색 기능 +*/ + MSG_ID_F54 = 0xf54, +/*20210616 to latest +- ALL : 받은 퀘스트 전체보기 +*/ + MSG_ID_F55 = 0xf55, +/*20210616 to 20210616 +- 퀘스트 종류 : 노멀 / 일일 / 지역 / 이벤트 / 에피소드 / 직업 / 가이드 퀘스트로 분류하여 정렬합니다. +20210623 to latest +- 퀘스트 종류 : NORMAL(노멀)/ MAIN(메인)/ EPISODE(에피소드)/ DAILY(일일)/ LOCAL(지역)/ JOB(직업)/ GUIDE(가이드)/ EVENT(이벤트) 퀘스트로 분류하여 정렬합니다. +*/ + MSG_ID_F56 = 0xf56, +/*20210616 to 20210616 +- 정렬한 퀘스트 내용에서 원하는 내용을 검색하여 좀 더 세분화된 검색을 할 수 있습니다. +20210623 to latest +- 콤보 박스로 정렬한 퀘스트 목록에서 원하는 내용을 좀 더 세분화하여 검색할 수 있습니다. +*/ + MSG_ID_F57 = 0xf57, +/*20210616 to latest +2. 내비게이션 UI +*/ + MSG_ID_F58 = 0xf58, +/*20210616 to latest +- 내비게이션 UI 열기 : +*/ + MSG_ID_F59 = 0xf59, +/*20210616 to latest +메뉴아이콘 → 내비게이션 아이콘(단축키 : N) +*/ + MSG_ID_F5A = 0xf5a, +/*20210616 to 20210616 +- 퀘스트 상세 설명의 텍스트 하이퍼링크 또는 npc(몬스터)이미지 클릭 시 : +20210623 to latest +- 텍스트 하이퍼링크 또는 npc(몬스터) 이미지 클릭 : +*/ + MSG_ID_F5B = 0xf5b, +/*20210616 to latest +내비게이션 경로 표시 & 필드 바닥에 목표 지점까지 발자국(화살표)표시 +*/ + MSG_ID_F5C = 0xf5c, +/*20210616 to latest +3. 내비게이션 실행 시, 채팅창에 이동 경로가 안내 됩니다 +*/ + MSG_ID_F5D = 0xf5d, +/*20210616 to latest +4. 카프라 직원과 대화하여[공간이동 서비스]를 이용할 수 있습니다. +*/ + MSG_ID_F5E = 0xf5e, +/*20210616 to latest +5. 간편 퀘스트 UI : +*/ + MSG_ID_F5F = 0xf5f, +/*20210616 to latest +퀘스트 UI를 게임 화면에 간단히 표시 해주는 기능 +*/ + MSG_ID_F60 = 0xf60, +/*20210616 to latest +각 퀘스트 제목 마우스 우클릭 시, 퀘스트정보 UI 호출 또는 해당 퀘스트 목록 내 삭제 +*/ + MSG_ID_F61 = 0xf61, +/*20210616 to latest +기능이 있습니다. +*/ + MSG_ID_F62 = 0xf62, +#endif +#if PACKETVER >= 20210630 +/*20210630 to latest +시작할 때 열기 +*/ + MSG_ID_F63 = 0xf63, +#endif +#if PACKETVER >= 20210804 +/*20210804 to latest +결제정보 세션이 만료되었습니다. 클라이언트를 재실행 해주세요 +*/ + MSG_ID_F64 = 0xf64, +/*20210804 to latest +오류가 발생했습니다. 다시 시도해 주세요 +*/ + MSG_ID_F65 = 0xf65, +/*20210804 to latest +크기 변경(%s) +*/ + MSG_ID_F66 = 0xf66, +/*20210804 to latest +기능 잠금 +*/ + MSG_ID_F67 = 0xf67, +/*20210804 to latest +기능 해제 +*/ + MSG_ID_F68 = 0xf68, +/*20210804 to latest +입력 활성 +*/ + MSG_ID_F69 = 0xf69, +/*20210804 to latest +입력 비활성 +*/ + MSG_ID_F6A = 0xf6a, +/*20210804 to latest +수신인 설정 +Select receiver +*/ + MSG_ID_F6B = 0xf6b, +/*20210804 to latest +수신그룹 설정 +Select receiving group +*/ + MSG_ID_F6C = 0xf6c, +/*20210804 to latest +설정 +*/ + MSG_ID_F6D = 0xf6d, +/*20210804 to latest +팝업창 분리 +*/ + MSG_ID_F6E = 0xf6e, +/*20210804 to latest +탭으로 돌아가기 +*/ + MSG_ID_F6F = 0xf6f, +/*20210804 to 20210929 +텝 추가 +20210929 to latest +탭 추가 +*/ + MSG_ID_F70 = 0xf70, +/*20210804 to latest +탭 삭제 +*/ + MSG_ID_F71 = 0xf71, +/*20210804 to latest +Enter키를 누르면 채팅을 시작할수 있습니다 +*/ + MSG_ID_F72 = 0xf72, +#endif +#if PACKETVER >= 20210818 +/*20210818 to latest +장비해제 +*/ + MSG_ID_F73 = 0xf73, +/*20210818 to latest +잠시 후 다시 시도해주세요. +Please try again in a moment. +*/ + MSG_ID_F74 = 0xf74, +#endif +#if PACKETVER >= 20210929 +/*20210929 to latest +천지만성 지역에서 사용가능합니다. +*/ + MSG_ID_F75 = 0xf75, +/*20210929 to latest +영혼 축적 효과가 필요합니다. +*/ + MSG_ID_F76 = 0xf76, +/*20210929 to latest +부적이 부족합니다. +*/ + MSG_ID_F77 = 0xf77, +/*20210929 to latest +개틀링건 혹은 샷건 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F78 = 0xf78, +/*20210929 to latest +라이플 혹은 리볼버 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F79 = 0xf79, +/*20210929 to latest +그레네이드 런처 혹은 라이플 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F7A = 0xf7a, +/*20210929 to latest +개틀링건 혹은 리볼버 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F7B = 0xf7b, +/*20210929 to latest +샷건 혹은 그레네이드 런처 계열의 총기류를 장착한 상태여야 합니다. +*/ + MSG_ID_F7C = 0xf7c, +/*20210929 to latest +장착한 방패가 없습니다. +*/ + MSG_ID_F7D = 0xf7d, +/*20210929 to latest +다중 물물 교환 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다. +*/ + MSG_ID_F7E = 0xf7e, +/*20210929 to latest +다중 물물 교환 중에는 은행을 사용할 수 없습니다. +*/ + MSG_ID_F7F = 0xf7f, +#endif +#if PACKETVER >= 20211103 +/*20211103 to latest +대상의 그림자에 이동할 공간이 없습니다. +*/ + MSG_ID_F80 = 0xf80, +/*20211103 to latest +최소한 한종의 영물과 교감하는 상태여야 합니다. +*/ + MSG_ID_F81 = 0xf81, +#endif }; #endif /* MAP_MESSAGES_ZERO_H */ From 6262638097e38e5e830cd7cd5e15dc9047788c9c Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 12 Oct 2021 15:53:17 +0300 Subject: [PATCH 03/65] Update packets table --- src/common/packets/packets2003_len_main.h | 2 +- src/common/packets/packets2004_len_main.h | 2 +- src/common/packets/packets2005_len_main.h | 2 +- src/common/packets/packets2006_len_main.h | 2 +- src/common/packets/packets2007_len_main.h | 2 +- src/common/packets/packets2008_len_main.h | 2 +- src/common/packets/packets2008_len_re.h | 2 +- src/common/packets/packets2009_len_main.h | 2 +- src/common/packets/packets2009_len_re.h | 2 +- src/common/packets/packets2010_len_main.h | 2 +- src/common/packets/packets2010_len_re.h | 2 +- src/common/packets/packets2011_len_main.h | 2 +- src/common/packets/packets2011_len_re.h | 2 +- src/common/packets/packets2012_len_main.h | 2 +- src/common/packets/packets2012_len_re.h | 2 +- src/common/packets/packets2013_len_main.h | 2 +- src/common/packets/packets2013_len_re.h | 2 +- src/common/packets/packets2014_len_main.h | 2 +- src/common/packets/packets2014_len_re.h | 2 +- src/common/packets/packets2015_len_main.h | 2 +- src/common/packets/packets2015_len_re.h | 2 +- src/common/packets/packets2016_len_main.h | 2 +- src/common/packets/packets2016_len_re.h | 2 +- src/common/packets/packets2017_len_main.h | 2 +- src/common/packets/packets2017_len_re.h | 2 +- src/common/packets/packets2017_len_zero.h | 2 +- src/common/packets/packets2018_len_main.h | 2 +- src/common/packets/packets2018_len_re.h | 2 +- src/common/packets/packets2018_len_zero.h | 2 +- src/common/packets/packets2019_len_main.h | 2 +- src/common/packets/packets2019_len_re.h | 2 +- src/common/packets/packets2019_len_zero.h | 2 +- src/common/packets/packets2020_len_main.h | 134 +- src/common/packets/packets2020_len_re.h | 22 +- src/common/packets/packets2020_len_zero.h | 114 +- src/common/packets/packets2021_len_main.h | 4866 +++++++++++++++++++++ src/common/packets/packets2021_len_re.h | 4855 ++++++++++++++++++++ src/common/packets/packets2021_len_zero.h | 4853 ++++++++++++++++++++ src/common/packets/packets_len_main.h | 6 +- src/common/packets/packets_len_re.h | 6 +- src/common/packets/packets_len_zero.h | 6 +- 41 files changed, 14885 insertions(+), 41 deletions(-) create mode 100644 src/common/packets/packets2021_len_main.h create mode 100644 src/common/packets/packets2021_len_re.h create mode 100644 src/common/packets/packets2021_len_zero.h diff --git a/src/common/packets/packets2003_len_main.h b/src/common/packets/packets2003_len_main.h index 1d798fb1d31..9290212faed 100644 --- a/src/common/packets/packets2003_len_main.h +++ b/src/common/packets/packets2003_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2004_len_main.h b/src/common/packets/packets2004_len_main.h index 0e6be3a1d13..057235a224e 100644 --- a/src/common/packets/packets2004_len_main.h +++ b/src/common/packets/packets2004_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2005_len_main.h b/src/common/packets/packets2005_len_main.h index 9add380c2ca..2e9e080ccc8 100644 --- a/src/common/packets/packets2005_len_main.h +++ b/src/common/packets/packets2005_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2006_len_main.h b/src/common/packets/packets2006_len_main.h index e275cd5d4e2..42f0c7813f3 100644 --- a/src/common/packets/packets2006_len_main.h +++ b/src/common/packets/packets2006_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2007_len_main.h b/src/common/packets/packets2007_len_main.h index 434019516af..4ca47631efe 100644 --- a/src/common/packets/packets2007_len_main.h +++ b/src/common/packets/packets2007_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2008_len_main.h b/src/common/packets/packets2008_len_main.h index 7198631f98a..aab0f2efa28 100644 --- a/src/common/packets/packets2008_len_main.h +++ b/src/common/packets/packets2008_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2008_len_re.h b/src/common/packets/packets2008_len_re.h index 7da396eb57d..9e011788324 100644 --- a/src/common/packets/packets2008_len_re.h +++ b/src/common/packets/packets2008_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2009_len_main.h b/src/common/packets/packets2009_len_main.h index db12afc5663..9650b30a058 100644 --- a/src/common/packets/packets2009_len_main.h +++ b/src/common/packets/packets2009_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2009_len_re.h b/src/common/packets/packets2009_len_re.h index 49f60a1bf3c..1f1c7f885ad 100644 --- a/src/common/packets/packets2009_len_re.h +++ b/src/common/packets/packets2009_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2010_len_main.h b/src/common/packets/packets2010_len_main.h index a4a991d8be8..d174d684262 100644 --- a/src/common/packets/packets2010_len_main.h +++ b/src/common/packets/packets2010_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2010_len_re.h b/src/common/packets/packets2010_len_re.h index 031065c901d..b85dc371461 100644 --- a/src/common/packets/packets2010_len_re.h +++ b/src/common/packets/packets2010_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2011_len_main.h b/src/common/packets/packets2011_len_main.h index ed2397d4854..a9219301d82 100644 --- a/src/common/packets/packets2011_len_main.h +++ b/src/common/packets/packets2011_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2011_len_re.h b/src/common/packets/packets2011_len_re.h index 4105fb05540..5804698fd63 100644 --- a/src/common/packets/packets2011_len_re.h +++ b/src/common/packets/packets2011_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2012_len_main.h b/src/common/packets/packets2012_len_main.h index be43dc99c1e..bd184eac86f 100644 --- a/src/common/packets/packets2012_len_main.h +++ b/src/common/packets/packets2012_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2012_len_re.h b/src/common/packets/packets2012_len_re.h index ee57f593178..86388452436 100644 --- a/src/common/packets/packets2012_len_re.h +++ b/src/common/packets/packets2012_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2013_len_main.h b/src/common/packets/packets2013_len_main.h index e2f1a313727..f898b72a2f6 100644 --- a/src/common/packets/packets2013_len_main.h +++ b/src/common/packets/packets2013_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2013_len_re.h b/src/common/packets/packets2013_len_re.h index 1ca8c56515a..fb234173035 100644 --- a/src/common/packets/packets2013_len_re.h +++ b/src/common/packets/packets2013_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2014_len_main.h b/src/common/packets/packets2014_len_main.h index a2e13aab741..9b5b746e397 100644 --- a/src/common/packets/packets2014_len_main.h +++ b/src/common/packets/packets2014_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2014_len_re.h b/src/common/packets/packets2014_len_re.h index 92b08b720a5..360d95aa26e 100644 --- a/src/common/packets/packets2014_len_re.h +++ b/src/common/packets/packets2014_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2015_len_main.h b/src/common/packets/packets2015_len_main.h index cd7c01bf0c2..3cdcd5f79e1 100644 --- a/src/common/packets/packets2015_len_main.h +++ b/src/common/packets/packets2015_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2015_len_re.h b/src/common/packets/packets2015_len_re.h index 74255a6b806..06ae39660e3 100644 --- a/src/common/packets/packets2015_len_re.h +++ b/src/common/packets/packets2015_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2016_len_main.h b/src/common/packets/packets2016_len_main.h index 682d6fb3d9b..c691271c971 100644 --- a/src/common/packets/packets2016_len_main.h +++ b/src/common/packets/packets2016_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2016_len_re.h b/src/common/packets/packets2016_len_re.h index c2f3ecf9ea2..3acf7fc977c 100644 --- a/src/common/packets/packets2016_len_re.h +++ b/src/common/packets/packets2016_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2017_len_main.h b/src/common/packets/packets2017_len_main.h index 1f342d55ab4..f0cd504991c 100644 --- a/src/common/packets/packets2017_len_main.h +++ b/src/common/packets/packets2017_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2017_len_re.h b/src/common/packets/packets2017_len_re.h index e4978962139..a9da43b9b2e 100644 --- a/src/common/packets/packets2017_len_re.h +++ b/src/common/packets/packets2017_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2017_len_zero.h b/src/common/packets/packets2017_len_zero.h index e8d524e0ed6..100f0d5ca53 100644 --- a/src/common/packets/packets2017_len_zero.h +++ b/src/common/packets/packets2017_len_zero.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2018_len_main.h b/src/common/packets/packets2018_len_main.h index 7d2786263d5..04735235dba 100644 --- a/src/common/packets/packets2018_len_main.h +++ b/src/common/packets/packets2018_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2018_len_re.h b/src/common/packets/packets2018_len_re.h index 17af94d0962..1fbc65127b0 100644 --- a/src/common/packets/packets2018_len_re.h +++ b/src/common/packets/packets2018_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2018_len_zero.h b/src/common/packets/packets2018_len_zero.h index f8e81243869..3613d29d6da 100644 --- a/src/common/packets/packets2018_len_zero.h +++ b/src/common/packets/packets2018_len_zero.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2019_len_main.h b/src/common/packets/packets2019_len_main.h index f91847226c2..2af8d3c4699 100644 --- a/src/common/packets/packets2019_len_main.h +++ b/src/common/packets/packets2019_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2019_len_re.h b/src/common/packets/packets2019_len_re.h index a69dcd7710f..93bae777b94 100644 --- a/src/common/packets/packets2019_len_re.h +++ b/src/common/packets/packets2019_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2019_len_zero.h b/src/common/packets/packets2019_len_zero.h index 8cd95738385..211c4868937 100644 --- a/src/common/packets/packets2019_len_zero.h +++ b/src/common/packets/packets2019_len_zero.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/common/packets/packets2020_len_main.h b/src/common/packets/packets2020_len_main.h index 87a8e1f979a..e869424d3bf 100644 --- a/src/common/packets/packets2020_len_main.h +++ b/src/common/packets/packets2020_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -4257,6 +4257,11 @@ packetLen(0x0aef, 2) // Packet: 0x0af0 packetLen(0x0af0, 10) +// Packet: 0x0af1 +#if PACKETVER >= 20200902 +packetLen(0x0af1, 102) +#endif + // Packet: 0x0af2 packetLen(0x0af2, 40) @@ -4705,5 +4710,132 @@ packetLen(0x0b7f, 10) packetLen(0x0b80, 10) #endif +// Packet: 0x0b8c +#if PACKETVER >= 20200819 +packetLen(0x0b8c, -1) +#endif + +// Packet: 0x0b8d +#if PACKETVER >= 20200902 +packetLen(0x0b8d, -1) +#endif + +// Packet: 0x0b8e +#if PACKETVER >= 20200916 +packetLen(0x0b8e, 18) +#elif PACKETVER >= 20200902 +packetLen(0x0b8e, 10) +#endif + +// Packet: 0x0b8f +#if PACKETVER >= 20200916 +packetLen(0x0b8f, 6) +#endif + +// Packet: 0x0b90 +#if PACKETVER >= 20200916 +packetLen(0x0b90, 2) +#endif + +// Packet: 0x0b91 +#if PACKETVER >= 20200916 +packetLen(0x0b91, 8) +#endif + +// Packet: 0x0b92 +#if PACKETVER >= 20201021 +packetLen(0x0b92, 5) +#elif PACKETVER >= 20200916 +packetLen(0x0b92, 3) +#endif + +// Packet: 0x0b93 +#if PACKETVER >= 20201104 +packetLen(0x0b93, 12) +#endif + +// Packet: 0x0b94 +#if PACKETVER >= 20201118 +packetLen(0x0b94, 14) +#elif PACKETVER >= 20201104 +packetLen(0x0b94, 10) +#endif + +// Packet: 0x0b95 +#if PACKETVER >= 20201104 +packetLen(0x0b95, -1) +#endif + +// Packet: 0x0b96 +#if PACKETVER >= 20201118 +packetLen(0x0b96, 26) +#elif PACKETVER >= 20201104 +packetLen(0x0b96, 2) +#endif + +// Packet: 0x0b97 +#if PACKETVER >= 20201104 +packetLen(0x0b97, 27) +#endif + +// Packet: 0x0b98 +#if PACKETVER >= 20201118 +packetLen(0x0b98, 6) +#elif PACKETVER >= 20201104 +packetLen(0x0b98, 27) +#endif + +// Packet: 0x0b99 +#if PACKETVER >= 20201118 +packetLen(0x0b99, 10) +#elif PACKETVER >= 20201104 +packetLen(0x0b99, 6) +#endif + +// Packet: 0x0b9a +#if PACKETVER >= 20201118 +packetLen(0x0b9a, 11) +#endif + +// Packet: 0x0b9b +#if PACKETVER >= 20201118 +packetLen(0x0b9b, 12) +#endif + +// Packet: 0x0b9c +#if PACKETVER >= 20201118 +packetLen(0x0b9c, 16) +#endif + +// Packet: 0x0b9d +#if PACKETVER >= 20201118 +packetLen(0x0b9d, 14) +#endif + +// Packet: 0x0b9e +#if PACKETVER >= 20201118 +packetLen(0x0b9e, 12) +#endif + +// Packet: 0x0b9f +#if PACKETVER >= 20201118 +packetLen(0x0b9f, 10) +#endif + +// Packet: 0x0ba0 +#if PACKETVER >= 20201118 +packetLen(0x0ba0, 2) +#endif + +// Packet: 0x0ba1 +#if PACKETVER >= 20201223 +packetLen(0x0ba1, 3) +#endif + +// Packet: 0x0ba2 +#if PACKETVER >= 20201223 +packetLen(0x0ba2, 10) +#endif + #endif /* COMMON_PACKETS2020_LEN_MAIN_H */ diff --git a/src/common/packets/packets2020_len_re.h b/src/common/packets/packets2020_len_re.h index 5f2b2905e07..bebc0949413 100644 --- a/src/common/packets/packets2020_len_re.h +++ b/src/common/packets/packets2020_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -4263,6 +4263,11 @@ packetLen(0x0aef, 2) // Packet: 0x0af0 packetLen(0x0af0, 10) +// Packet: 0x0af1 +#if PACKETVER >= 20200902 +packetLen(0x0af1, 102) +#endif + // Packet: 0x0af2 packetLen(0x0af2, 40) @@ -4711,5 +4716,20 @@ packetLen(0x0b7f, 10) packetLen(0x0b80, 10) #endif +// Packet: 0x0b8c +#if PACKETVER >= 20200812 +packetLen(0x0b8c, -1) +#endif + +// Packet: 0x0b8d +#if PACKETVER >= 20200902 +packetLen(0x0b8d, -1) +#endif + +// Packet: 0x0b8e +#if PACKETVER >= 20200902 +packetLen(0x0b8e, 18) +#endif + #endif /* COMMON_PACKETS2020_LEN_RE_H */ diff --git a/src/common/packets/packets2020_len_zero.h b/src/common/packets/packets2020_len_zero.h index 8ad3a0eac99..acd4bbd4eeb 100644 --- a/src/common/packets/packets2020_len_zero.h +++ b/src/common/packets/packets2020_len_zero.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -4257,6 +4257,11 @@ packetLen(0x0aef, 2) // Packet: 0x0af0 packetLen(0x0af0, 10) +// Packet: 0x0af1 +#if PACKETVER >= 20200902 +packetLen(0x0af1, 102) +#endif + // Packet: 0x0af2 packetLen(0x0af2, 40) @@ -4705,5 +4710,112 @@ packetLen(0x0b7f, 10) packetLen(0x0b80, 10) #endif +// Packet: 0x0b8c +#if PACKETVER >= 20200902 +packetLen(0x0b8c, -1) +#endif + +// Packet: 0x0b8d +#if PACKETVER >= 20200902 +packetLen(0x0b8d, -1) +#endif + +// Packet: 0x0b8e +#if PACKETVER >= 20201118 +packetLen(0x0b8e, 18) +#elif PACKETVER >= 20200902 +packetLen(0x0b8e, 10) +#endif + +// Packet: 0x0b8f +#if PACKETVER >= 20201118 +packetLen(0x0b8f, 6) +#endif + +// Packet: 0x0b90 +#if PACKETVER >= 20201118 +packetLen(0x0b90, 2) +#endif + +// Packet: 0x0b91 +#if PACKETVER >= 20201118 +packetLen(0x0b91, 8) +#endif + +// Packet: 0x0b92 +#if PACKETVER >= 20201118 +packetLen(0x0b92, 5) +#endif + +// Packet: 0x0b93 +#if PACKETVER >= 20201118 +packetLen(0x0b93, 12) +#endif + +// Packet: 0x0b94 +#if PACKETVER >= 20201118 +packetLen(0x0b94, 14) +#endif + +// Packet: 0x0b95 +#if PACKETVER >= 20201118 +packetLen(0x0b95, -1) +#endif + +// Packet: 0x0b96 +#if PACKETVER >= 20201118 +packetLen(0x0b96, 26) +#endif + +// Packet: 0x0b97 +#if PACKETVER >= 20201118 +packetLen(0x0b97, 27) +#endif + +// Packet: 0x0b98 +#if PACKETVER >= 20201118 +packetLen(0x0b98, 6) +#endif + +// Packet: 0x0b99 +#if PACKETVER >= 20201118 +packetLen(0x0b99, 10) +#endif + +// Packet: 0x0b9a +#if PACKETVER >= 20201118 +packetLen(0x0b9a, 11) +#endif + +// Packet: 0x0b9b +#if PACKETVER >= 20201118 +packetLen(0x0b9b, 12) +#endif + +// Packet: 0x0b9c +#if PACKETVER >= 20201118 +packetLen(0x0b9c, 16) +#endif + +// Packet: 0x0b9d +#if PACKETVER >= 20201118 +packetLen(0x0b9d, 14) +#endif + +// Packet: 0x0b9e +#if PACKETVER >= 20201118 +packetLen(0x0b9e, 12) +#endif + +// Packet: 0x0b9f +#if PACKETVER >= 20201118 +packetLen(0x0b9f, 10) +#endif + +// Packet: 0x0ba0 +#if PACKETVER >= 20201118 +packetLen(0x0ba0, 2) +#endif + #endif /* COMMON_PACKETS2020_LEN_ZERO_H */ diff --git a/src/common/packets/packets2021_len_main.h b/src/common/packets/packets2021_len_main.h new file mode 100644 index 00000000000..d2982a7d044 --- /dev/null +++ b/src/common/packets/packets2021_len_main.h @@ -0,0 +1,4866 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2018-2021 Hercules Dev Team + * Copyright (C) 2018-2021 Andrei Karas (4144) + * + * Hercules is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef COMMON_PACKETS2021_LEN_MAIN_H +#define COMMON_PACKETS2021_LEN_MAIN_H + +/* This file is autogenerated, please do not commit manual changes */ + +// Packet: 0x0064 +packetLen(0x0064, 55) + +// Packet: 0x0065 +packetLen(0x0065, 17) + +// Packet: 0x0066 +packetLen(0x0066, 3) + +// Packet: 0x0067 +packetLen(0x0067, 37) + +// Packet: 0x0068 +packetLen(0x0068, 46) + +// Packet: 0x0069 +packetLen(0x0069, -1) + +// Packet: 0x006a +packetLen(0x006a, 23) + +// Packet: 0x006b +packetLen(0x006b, -1) + +// Packet: 0x006c +packetLen(0x006c, 3) + +// Packet: 0x006d +packetLen(0x006d, 157) + +// Packet: 0x006e +packetLen(0x006e, 3) + +// Packet: 0x006f +packetLen(0x006f, 2) + +// Packet: 0x0070 +packetLen(0x0070, 3) + +// Packet: 0x0071 +packetLen(0x0071, 28) + +// Packet: 0x0072 +packetLen(0x0072, 22) + +// Packet: 0x0073 +packetLen(0x0073, 11) + +// Packet: 0x0074 +packetLen(0x0074, 3) + +// Packet: 0x0075 +packetLen(0x0075, -1) + +// Packet: 0x0076 +packetLen(0x0076, 9) + +// Packet: 0x0077 +packetLen(0x0077, 5) + +// Packet: 0x0078 +packetLen(0x0078, 55) + +// Packet: 0x0079 +packetLen(0x0079, 53) + +// Packet: 0x007a +packetLen(0x007a, 58) + +// Packet: 0x007b +packetLen(0x007b, 60) + +// Packet: 0x007c +packetLen(0x007c, 44) + +// Packet: 0x007d +packetLen(0x007d, 2) + +// Packet: 0x007e +packetLen(0x007e, 46) + +// Packet: 0x007f +packetLen(0x007f, 6) + +// Packet: 0x0080 +packetLen(0x0080, 7) + +// Packet: 0x0081 +packetLen(0x0081, 3) + +// Packet: 0x0082 +packetLen(0x0082, 2) + +// Packet: 0x0083 +packetLen(0x0083, 2) + +// Packet: 0x0084 +packetLen(0x0084, 2) + +// Packet: 0x0085 +packetLen(0x0085, 10) + +// Packet: 0x0086 +packetLen(0x0086, 16) + +// Packet: 0x0087 +packetLen(0x0087, 12) + +// Packet: 0x0088 +packetLen(0x0088, 10) + +// Packet: 0x0089 +packetLen(0x0089, 11) + +// Packet: 0x008a +packetLen(0x008a, 29) + +// Packet: 0x008b +packetLen(0x008b, 23) + +// Packet: 0x008c +packetLen(0x008c, 14) + +// Packet: 0x008d +packetLen(0x008d, -1) + +// Packet: 0x008e +packetLen(0x008e, -1) + +// Packet: 0x0090 +packetLen(0x0090, 7) + +// Packet: 0x0091 +packetLen(0x0091, 22) + +// Packet: 0x0092 +packetLen(0x0092, 28) + +// Packet: 0x0093 +packetLen(0x0093, 2) + +// Packet: 0x0094 +packetLen(0x0094, 19) + +// Packet: 0x0095 +packetLen(0x0095, 30) + +// Packet: 0x0096 +packetLen(0x0096, -1) + +// Packet: 0x0097 +packetLen(0x0097, -1) + +// Packet: 0x0098 +packetLen(0x0098, 3) + +// Packet: 0x0099 +packetLen(0x0099, -1) + +// Packet: 0x009a +packetLen(0x009a, -1) + +// Packet: 0x009b +packetLen(0x009b, 34) + +// Packet: 0x009c +packetLen(0x009c, 9) + +// Packet: 0x009d +packetLen(0x009d, 19) + +// Packet: 0x009e +packetLen(0x009e, 19) + +// Packet: 0x009f +packetLen(0x009f, 20) + +// Packet: 0x00a0 +packetLen(0x00a0, 33) + +// Packet: 0x00a1 +packetLen(0x00a1, 6) + +// Packet: 0x00a2 +packetLen(0x00a2, 14) + +// Packet: 0x00a3 +packetLen(0x00a3, -1) + +// Packet: 0x00a4 +packetLen(0x00a4, -1) + +// Packet: 0x00a5 +packetLen(0x00a5, -1) + +// Packet: 0x00a6 +packetLen(0x00a6, -1) + +// Packet: 0x00a7 +packetLen(0x00a7, 9) + +// Packet: 0x00a8 +packetLen(0x00a8, 7) + +// Packet: 0x00a9 +packetLen(0x00a9, 6) + +// Packet: 0x00aa +packetLen(0x00aa, 9) + +// Packet: 0x00ab +packetLen(0x00ab, 4) + +// Packet: 0x00ac +packetLen(0x00ac, 7) + +// Packet: 0x00ae +packetLen(0x00ae, -1) + +// Packet: 0x00af +packetLen(0x00af, 6) + +// Packet: 0x00b0 +packetLen(0x00b0, 8) + +// Packet: 0x00b1 +packetLen(0x00b1, 8) + +// Packet: 0x00b2 +packetLen(0x00b2, 3) + +// Packet: 0x00b3 +packetLen(0x00b3, 3) + +// Packet: 0x00b4 +packetLen(0x00b4, -1) + +// Packet: 0x00b5 +packetLen(0x00b5, 6) + +// Packet: 0x00b6 +packetLen(0x00b6, 6) + +// Packet: 0x00b7 +packetLen(0x00b7, -1) + +// Packet: 0x00b8 +packetLen(0x00b8, 7) + +// Packet: 0x00b9 +packetLen(0x00b9, 6) + +// Packet: 0x00ba +packetLen(0x00ba, 2) + +// Packet: 0x00bb +packetLen(0x00bb, 5) + +// Packet: 0x00bc +packetLen(0x00bc, 6) + +// Packet: 0x00bd +packetLen(0x00bd, 44) + +// Packet: 0x00be +packetLen(0x00be, 5) + +// Packet: 0x00bf +packetLen(0x00bf, 3) + +// Packet: 0x00c0 +packetLen(0x00c0, 7) + +// Packet: 0x00c1 +packetLen(0x00c1, 2) + +// Packet: 0x00c2 +packetLen(0x00c2, 6) + +// Packet: 0x00c3 +packetLen(0x00c3, 8) + +// Packet: 0x00c4 +packetLen(0x00c4, 6) + +// Packet: 0x00c5 +packetLen(0x00c5, 7) + +// Packet: 0x00c6 +packetLen(0x00c6, -1) + +// Packet: 0x00c7 +packetLen(0x00c7, -1) + +// Packet: 0x00c8 +packetLen(0x00c8, -1) + +// Packet: 0x00c9 +packetLen(0x00c9, -1) + +// Packet: 0x00ca +packetLen(0x00ca, 3) + +// Packet: 0x00cb +packetLen(0x00cb, 3) + +// Packet: 0x00cc +packetLen(0x00cc, 6) + +// Packet: 0x00cd +packetLen(0x00cd, 3) + +// Packet: 0x00ce +packetLen(0x00ce, 2) + +// Packet: 0x00cf +packetLen(0x00cf, 27) + +// Packet: 0x00d0 +packetLen(0x00d0, 3) + +// Packet: 0x00d1 +packetLen(0x00d1, 4) + +// Packet: 0x00d2 +packetLen(0x00d2, 4) + +// Packet: 0x00d3 +packetLen(0x00d3, 2) + +// Packet: 0x00d4 +packetLen(0x00d4, -1) + +// Packet: 0x00d5 +packetLen(0x00d5, -1) + +// Packet: 0x00d6 +packetLen(0x00d6, 3) + +// Packet: 0x00d7 +packetLen(0x00d7, -1) + +// Packet: 0x00d8 +packetLen(0x00d8, 6) + +// Packet: 0x00d9 +packetLen(0x00d9, 14) + +// Packet: 0x00da +packetLen(0x00da, 3) + +// Packet: 0x00db +packetLen(0x00db, -1) + +// Packet: 0x00dc +packetLen(0x00dc, 28) + +// Packet: 0x00dd +packetLen(0x00dd, 29) + +// Packet: 0x00de +packetLen(0x00de, -1) + +// Packet: 0x00df +packetLen(0x00df, -1) + +// Packet: 0x00e0 +packetLen(0x00e0, 30) + +// Packet: 0x00e1 +packetLen(0x00e1, 30) + +// Packet: 0x00e2 +packetLen(0x00e2, 26) + +// Packet: 0x00e3 +packetLen(0x00e3, 2) + +// Packet: 0x00e4 +packetLen(0x00e4, 6) + +// Packet: 0x00e5 +packetLen(0x00e5, 26) + +// Packet: 0x00e6 +packetLen(0x00e6, 3) + +// Packet: 0x00e7 +packetLen(0x00e7, 3) + +// Packet: 0x00e8 +packetLen(0x00e8, 8) + +// Packet: 0x00e9 +packetLen(0x00e9, 29) + +// Packet: 0x00ea +packetLen(0x00ea, 5) + +// Packet: 0x00eb +packetLen(0x00eb, 2) + +// Packet: 0x00ec +packetLen(0x00ec, 3) + +// Packet: 0x00ed +packetLen(0x00ed, 2) + +// Packet: 0x00ee +packetLen(0x00ee, 2) + +// Packet: 0x00ef +packetLen(0x00ef, 2) + +// Packet: 0x00f0 +packetLen(0x00f0, 3) + +// Packet: 0x00f1 +packetLen(0x00f1, 2) + +// Packet: 0x00f2 +packetLen(0x00f2, 6) + +// Packet: 0x00f3 +packetLen(0x00f3, -1) + +// Packet: 0x00f4 +packetLen(0x00f4, 31) + +// Packet: 0x00f5 +packetLen(0x00f5, 11) + +// Packet: 0x00f6 +packetLen(0x00f6, 8) + +// Packet: 0x00f7 +packetLen(0x00f7, 17) + +// Packet: 0x00f8 +packetLen(0x00f8, 2) + +// Packet: 0x00f9 +packetLen(0x00f9, 26) + +// Packet: 0x00fa +packetLen(0x00fa, 3) + +// Packet: 0x00fb +packetLen(0x00fb, -1) + +// Packet: 0x00fc +packetLen(0x00fc, 6) + +// Packet: 0x00fd +packetLen(0x00fd, 27) + +// Packet: 0x00fe +packetLen(0x00fe, 30) + +// Packet: 0x00ff +packetLen(0x00ff, 10) + +// Packet: 0x0100 +packetLen(0x0100, 2) + +// Packet: 0x0101 +packetLen(0x0101, 6) + +// Packet: 0x0102 +packetLen(0x0102, 6) + +// Packet: 0x0103 +packetLen(0x0103, 30) + +// Packet: 0x0104 +packetLen(0x0104, 79) + +// Packet: 0x0105 +packetLen(0x0105, 31) + +// Packet: 0x0106 +packetLen(0x0106, 10) + +// Packet: 0x0107 +packetLen(0x0107, 10) + +// Packet: 0x0108 +packetLen(0x0108, -1) + +// Packet: 0x0109 +packetLen(0x0109, -1) + +// Packet: 0x010a +packetLen(0x010a, 6) + +// Packet: 0x010b +packetLen(0x010b, 6) + +// Packet: 0x010c +packetLen(0x010c, 6) + +// Packet: 0x010d +packetLen(0x010d, 2) + +// Packet: 0x010e +packetLen(0x010e, 11) + +// Packet: 0x010f +packetLen(0x010f, -1) + +// Packet: 0x0110 +packetLen(0x0110, 14) + +// Packet: 0x0111 +packetLen(0x0111, 39) + +// Packet: 0x0112 +packetLen(0x0112, 4) + +// Packet: 0x0113 +packetLen(0x0113, 25) + +// Packet: 0x0114 +packetLen(0x0114, 31) + +// Packet: 0x0115 +packetLen(0x0115, 35) + +// Packet: 0x0116 +packetLen(0x0116, 17) + +// Packet: 0x0117 +packetLen(0x0117, 18) + +// Packet: 0x0118 +packetLen(0x0118, 2) + +// Packet: 0x0119 +packetLen(0x0119, 13) + +// Packet: 0x011a +packetLen(0x011a, 15) + +// Packet: 0x011b +packetLen(0x011b, 20) + +// Packet: 0x011c +packetLen(0x011c, 68) + +// Packet: 0x011d +packetLen(0x011d, 2) + +// Packet: 0x011e +packetLen(0x011e, 3) + +// Packet: 0x011f +packetLen(0x011f, 16) + +// Packet: 0x0120 +packetLen(0x0120, 6) + +// Packet: 0x0121 +packetLen(0x0121, 14) + +// Packet: 0x0122 +packetLen(0x0122, -1) + +// Packet: 0x0123 +packetLen(0x0123, -1) + +// Packet: 0x0124 +packetLen(0x0124, 31) + +// Packet: 0x0125 +packetLen(0x0125, 8) + +// Packet: 0x0126 +packetLen(0x0126, 8) + +// Packet: 0x0127 +packetLen(0x0127, 8) + +// Packet: 0x0128 +packetLen(0x0128, 8) + +// Packet: 0x0129 +packetLen(0x0129, 8) + +// Packet: 0x012a +packetLen(0x012a, 2) + +// Packet: 0x012b +packetLen(0x012b, 2) + +// Packet: 0x012c +packetLen(0x012c, 3) + +// Packet: 0x012d +packetLen(0x012d, 4) + +// Packet: 0x012e +packetLen(0x012e, 2) + +// Packet: 0x012f +packetLen(0x012f, -1) + +// Packet: 0x0130 +packetLen(0x0130, 6) + +// Packet: 0x0131 +packetLen(0x0131, 86) + +// Packet: 0x0132 +packetLen(0x0132, 6) + +// Packet: 0x0133 +packetLen(0x0133, -1) + +// Packet: 0x0134 +packetLen(0x0134, -1) + +// Packet: 0x0135 +packetLen(0x0135, 7) + +// Packet: 0x0136 +packetLen(0x0136, -1) + +// Packet: 0x0137 +packetLen(0x0137, 6) + +// Packet: 0x0138 +packetLen(0x0138, 3) + +// Packet: 0x0139 +packetLen(0x0139, 16) + +// Packet: 0x013a +packetLen(0x013a, 4) + +// Packet: 0x013b +packetLen(0x013b, 4) + +// Packet: 0x013c +packetLen(0x013c, 4) + +// Packet: 0x013d +packetLen(0x013d, 6) + +// Packet: 0x013e +packetLen(0x013e, 24) + +// Packet: 0x013f +packetLen(0x013f, 26) + +// Packet: 0x0140 +packetLen(0x0140, 22) + +// Packet: 0x0141 +packetLen(0x0141, 14) + +// Packet: 0x0142 +packetLen(0x0142, 6) + +// Packet: 0x0143 +packetLen(0x0143, 10) + +// Packet: 0x0144 +packetLen(0x0144, 23) + +// Packet: 0x0145 +packetLen(0x0145, 19) + +// Packet: 0x0146 +packetLen(0x0146, 6) + +// Packet: 0x0147 +packetLen(0x0147, 39) + +// Packet: 0x0148 +packetLen(0x0148, 8) + +// Packet: 0x0149 +packetLen(0x0149, 9) + +// Packet: 0x014a +packetLen(0x014a, 6) + +// Packet: 0x014b +packetLen(0x014b, 27) + +// Packet: 0x014c +packetLen(0x014c, -1) + +// Packet: 0x014d +packetLen(0x014d, 2) + +// Packet: 0x014e +packetLen(0x014e, 6) + +// Packet: 0x014f +packetLen(0x014f, 6) + +// Packet: 0x0150 +packetLen(0x0150, 110) + +// Packet: 0x0151 +packetLen(0x0151, 6) + +// Packet: 0x0152 +packetLen(0x0152, -1) + +// Packet: 0x0153 +packetLen(0x0153, -1) + +// Packet: 0x0154 +packetLen(0x0154, -1) + +// Packet: 0x0155 +packetLen(0x0155, -1) + +// Packet: 0x0156 +packetLen(0x0156, -1) + +// Packet: 0x0157 +packetLen(0x0157, 6) + +// Packet: 0x0159 +packetLen(0x0159, 54) + +// Packet: 0x015a +packetLen(0x015a, 66) + +// Packet: 0x015b +packetLen(0x015b, 54) + +// Packet: 0x015c +packetLen(0x015c, 90) + +// Packet: 0x015d +packetLen(0x015d, 42) + +// Packet: 0x015e +packetLen(0x015e, 6) + +// Packet: 0x015f +packetLen(0x015f, 42) + +// Packet: 0x0160 +packetLen(0x0160, -1) + +// Packet: 0x0161 +packetLen(0x0161, -1) + +// Packet: 0x0162 +packetLen(0x0162, -1) + +// Packet: 0x0163 +packetLen(0x0163, -1) + +// Packet: 0x0164 +packetLen(0x0164, -1) + +// Packet: 0x0165 +packetLen(0x0165, 30) + +// Packet: 0x0166 +packetLen(0x0166, -1) + +// Packet: 0x0167 +packetLen(0x0167, 3) + +// Packet: 0x0168 +packetLen(0x0168, 14) + +// Packet: 0x0169 +packetLen(0x0169, 3) + +// Packet: 0x016a +packetLen(0x016a, 30) + +// Packet: 0x016b +packetLen(0x016b, 10) + +// Packet: 0x016c +packetLen(0x016c, 43) + +// Packet: 0x016d +packetLen(0x016d, 14) + +// Packet: 0x016e +packetLen(0x016e, 186) + +// Packet: 0x016f +packetLen(0x016f, 182) + +// Packet: 0x0170 +packetLen(0x0170, 14) + +// Packet: 0x0171 +packetLen(0x0171, 30) + +// Packet: 0x0172 +packetLen(0x0172, 10) + +// Packet: 0x0173 +packetLen(0x0173, 3) + +// Packet: 0x0174 +packetLen(0x0174, -1) + +// Packet: 0x0175 +packetLen(0x0175, 6) + +// Packet: 0x0176 +packetLen(0x0176, 106) + +// Packet: 0x0177 +packetLen(0x0177, -1) + +// Packet: 0x0178 +packetLen(0x0178, 4) + +// Packet: 0x0179 +packetLen(0x0179, 5) + +// Packet: 0x017a +packetLen(0x017a, 4) + +// Packet: 0x017b +packetLen(0x017b, -1) + +// Packet: 0x017c +packetLen(0x017c, 6) + +// Packet: 0x017d +packetLen(0x017d, 7) + +// Packet: 0x017e +packetLen(0x017e, -1) + +// Packet: 0x017f +packetLen(0x017f, -1) + +// Packet: 0x0180 +packetLen(0x0180, 6) + +// Packet: 0x0181 +packetLen(0x0181, 3) + +// Packet: 0x0182 +packetLen(0x0182, 106) + +// Packet: 0x0183 +packetLen(0x0183, 10) + +// Packet: 0x0184 +packetLen(0x0184, 10) + +// Packet: 0x0185 +packetLen(0x0185, 34) + +// Packet: 0x0187 +packetLen(0x0187, 6) + +// Packet: 0x0188 +packetLen(0x0188, 8) + +// Packet: 0x0189 +packetLen(0x0189, 4) + +// Packet: 0x018a +packetLen(0x018a, 4) + +// Packet: 0x018b +packetLen(0x018b, 4) + +// Packet: 0x018c +packetLen(0x018c, 29) + +// Packet: 0x018d +packetLen(0x018d, -1) + +// Packet: 0x018e +packetLen(0x018e, 18) + +// Packet: 0x018f +packetLen(0x018f, 8) + +// Packet: 0x0190 +packetLen(0x0190, 23) + +// Packet: 0x0191 +packetLen(0x0191, 27) + +// Packet: 0x0192 +packetLen(0x0192, 24) + +// Packet: 0x0193 +packetLen(0x0193, 2) + +// Packet: 0x0194 +packetLen(0x0194, 30) + +// Packet: 0x0195 +packetLen(0x0195, 102) + +// Packet: 0x0196 +packetLen(0x0196, 9) + +// Packet: 0x0197 +packetLen(0x0197, 4) + +// Packet: 0x0198 +packetLen(0x0198, 8) + +// Packet: 0x0199 +packetLen(0x0199, 4) + +// Packet: 0x019a +packetLen(0x019a, 14) + +// Packet: 0x019b +packetLen(0x019b, 10) + +// Packet: 0x019c +packetLen(0x019c, -1) + +// Packet: 0x019d +packetLen(0x019d, 6) + +// Packet: 0x019e +packetLen(0x019e, 2) + +// Packet: 0x019f +packetLen(0x019f, 6) + +// Packet: 0x01a0 +packetLen(0x01a0, 3) + +// Packet: 0x01a1 +packetLen(0x01a1, 3) + +// Packet: 0x01a2 +packetLen(0x01a2, 37) + +// Packet: 0x01a3 +packetLen(0x01a3, 7) + +// Packet: 0x01a4 +packetLen(0x01a4, 11) + +// Packet: 0x01a5 +packetLen(0x01a5, 26) + +// Packet: 0x01a6 +packetLen(0x01a6, -1) + +// Packet: 0x01a7 +packetLen(0x01a7, 4) + +// Packet: 0x01a8 +packetLen(0x01a8, 4) + +// Packet: 0x01a9 +packetLen(0x01a9, 6) + +// Packet: 0x01aa +packetLen(0x01aa, 10) + +// Packet: 0x01ab +packetLen(0x01ab, 12) + +// Packet: 0x01ac +packetLen(0x01ac, 6) + +// Packet: 0x01ad +packetLen(0x01ad, -1) + +// Packet: 0x01ae +packetLen(0x01ae, 6) + +// Packet: 0x01af +packetLen(0x01af, 4) + +// Packet: 0x01b0 +packetLen(0x01b0, 11) + +// Packet: 0x01b1 +packetLen(0x01b1, 7) + +// Packet: 0x01b2 +packetLen(0x01b2, -1) + +// Packet: 0x01b3 +packetLen(0x01b3, 67) + +// Packet: 0x01b4 +packetLen(0x01b4, 12) + +// Packet: 0x01b5 +packetLen(0x01b5, 18) + +// Packet: 0x01b6 +packetLen(0x01b6, 114) + +// Packet: 0x01b7 +packetLen(0x01b7, 6) + +// Packet: 0x01b8 +packetLen(0x01b8, 3) + +// Packet: 0x01b9 +packetLen(0x01b9, 6) + +// Packet: 0x01ba +packetLen(0x01ba, 26) + +// Packet: 0x01bb +packetLen(0x01bb, 26) + +// Packet: 0x01bc +packetLen(0x01bc, 26) + +// Packet: 0x01bd +packetLen(0x01bd, 26) + +// Packet: 0x01be +packetLen(0x01be, 2) + +// Packet: 0x01bf +packetLen(0x01bf, 3) + +// Packet: 0x01c0 +packetLen(0x01c0, 2) + +// Packet: 0x01c1 +packetLen(0x01c1, 14) + +// Packet: 0x01c2 +packetLen(0x01c2, 10) + +// Packet: 0x01c3 +packetLen(0x01c3, -1) + +// Packet: 0x01c4 +packetLen(0x01c4, 32) + +// Packet: 0x01c5 +packetLen(0x01c5, 32) + +// Packet: 0x01c6 +packetLen(0x01c6, 4) + +// Packet: 0x01c7 +packetLen(0x01c7, 2) + +// Packet: 0x01c8 +packetLen(0x01c8, 15) + +// Packet: 0x01c9 +packetLen(0x01c9, 97) + +// Packet: 0x01ca +packetLen(0x01ca, 3) + +// Packet: 0x01cb +packetLen(0x01cb, 9) + +// Packet: 0x01cc +packetLen(0x01cc, 9) + +// Packet: 0x01cd +packetLen(0x01cd, 30) + +// Packet: 0x01ce +packetLen(0x01ce, 6) + +// Packet: 0x01cf +packetLen(0x01cf, 28) + +// Packet: 0x01d0 +packetLen(0x01d0, 8) + +// Packet: 0x01d1 +packetLen(0x01d1, 14) + +// Packet: 0x01d2 +packetLen(0x01d2, 10) + +// Packet: 0x01d3 +packetLen(0x01d3, 35) + +// Packet: 0x01d4 +packetLen(0x01d4, 6) + +// Packet: 0x01d5 +packetLen(0x01d5, -1) + +// Packet: 0x01d6 +packetLen(0x01d6, 4) + +// Packet: 0x01d7 +packetLen(0x01d7, 15) + +// Packet: 0x01d8 +packetLen(0x01d8, 58) + +// Packet: 0x01d9 +packetLen(0x01d9, 57) + +// Packet: 0x01da +packetLen(0x01da, 64) + +// Packet: 0x01db +packetLen(0x01db, 2) + +// Packet: 0x01dc +packetLen(0x01dc, -1) + +// Packet: 0x01dd +packetLen(0x01dd, 47) + +// Packet: 0x01de +packetLen(0x01de, 33) + +// Packet: 0x01df +packetLen(0x01df, 6) + +// Packet: 0x01e0 +packetLen(0x01e0, 30) + +// Packet: 0x01e1 +packetLen(0x01e1, 8) + +// Packet: 0x01e2 +packetLen(0x01e2, 34) + +// Packet: 0x01e3 +packetLen(0x01e3, 14) + +// Packet: 0x01e4 +packetLen(0x01e4, 2) + +// Packet: 0x01e5 +packetLen(0x01e5, 6) + +// Packet: 0x01e6 +packetLen(0x01e6, 26) + +// Packet: 0x01e7 +packetLen(0x01e7, 2) + +// Packet: 0x01e8 +packetLen(0x01e8, 28) + +// Packet: 0x01e9 +packetLen(0x01e9, 81) + +// Packet: 0x01ea +packetLen(0x01ea, 6) + +// Packet: 0x01eb +packetLen(0x01eb, 10) + +// Packet: 0x01ec +packetLen(0x01ec, 26) + +// Packet: 0x01ed +packetLen(0x01ed, 2) + +// Packet: 0x01ee +packetLen(0x01ee, -1) + +// Packet: 0x01ef +packetLen(0x01ef, -1) + +// Packet: 0x01f0 +packetLen(0x01f0, -1) + +// Packet: 0x01f1 +packetLen(0x01f1, -1) + +// Packet: 0x01f2 +packetLen(0x01f2, 20) + +// Packet: 0x01f3 +packetLen(0x01f3, 10) + +// Packet: 0x01f4 +packetLen(0x01f4, 32) + +// Packet: 0x01f5 +packetLen(0x01f5, 9) + +// Packet: 0x01f6 +packetLen(0x01f6, 34) + +// Packet: 0x01f7 +packetLen(0x01f7, 14) + +// Packet: 0x01f8 +packetLen(0x01f8, 2) + +// Packet: 0x01f9 +packetLen(0x01f9, 6) + +// Packet: 0x01fa +packetLen(0x01fa, 48) + +// Packet: 0x01fb +packetLen(0x01fb, 56) + +// Packet: 0x01fc +packetLen(0x01fc, -1) + +// Packet: 0x01fd +packetLen(0x01fd, 25) + +// Packet: 0x01fe +packetLen(0x01fe, 5) + +// Packet: 0x01ff +packetLen(0x01ff, 10) + +// Packet: 0x0200 +packetLen(0x0200, 26) + +// Packet: 0x0201 +packetLen(0x0201, -1) + +// Packet: 0x0202 +packetLen(0x0202, 26) + +// Packet: 0x0203 +packetLen(0x0203, 10) + +// Packet: 0x0204 +packetLen(0x0204, 18) + +// Packet: 0x0205 +packetLen(0x0205, 26) + +// Packet: 0x0206 +packetLen(0x0206, 35) + +// Packet: 0x0207 +packetLen(0x0207, 34) + +// Packet: 0x0208 +packetLen(0x0208, 14) + +// Packet: 0x0209 +packetLen(0x0209, 36) + +// Packet: 0x020a +packetLen(0x020a, 10) + +// Packet: 0x020d +packetLen(0x020d, -1) + +// Packet: 0x020e +packetLen(0x020e, 32) + +// Packet: 0x020f +#if PACKETVER >= 20211118 +// removed +#elif PACKETVER >= 20211117 +packetLen(0x020f, 10) +// ignored packet from 2021-11-17_Ragexe_1636621550 +#elif PACKETVER >= 20211105 +packetLen(0x020f, 10) +// ignored packet from 2021-11-05_Ragexe_1636078531 +#elif PACKETVER >= 20211103 +packetLen(0x020f, 10) +// ignored packet from 2021-11-03_Ragexe_1635824489 +// ignored packet from 2021-11-03_Ragexe_1635841038 +#endif + +// Packet: 0x0210 +#if PACKETVER >= 20211118 +// removed +#elif PACKETVER >= 20211117 +packetLen(0x0210, 22) +// ignored packet from 2021-11-17_Ragexe_1636621550 +#elif PACKETVER >= 20211105 +packetLen(0x0210, 22) +// ignored packet from 2021-11-05_Ragexe_1636078531 +#elif PACKETVER >= 20211103 +packetLen(0x0210, 22) +// ignored packet from 2021-11-03_Ragexe_1635824489 +// ignored packet from 2021-11-03_Ragexe_1635841038 +#endif + +// Packet: 0x0212 +packetLen(0x0212, 26) + +// Packet: 0x0213 +packetLen(0x0213, 26) + +// Packet: 0x0214 +packetLen(0x0214, 42) + +// Packet: 0x0215 +packetLen(0x0215, 6) + +// Packet: 0x0216 +packetLen(0x0216, 6) + +// Packet: 0x0217 +packetLen(0x0217, 2) + +// Packet: 0x0218 +packetLen(0x0218, 2) + +// Packet: 0x0219 +packetLen(0x0219, 282) + +// Packet: 0x021a +packetLen(0x021a, 282) + +// Packet: 0x021b +packetLen(0x021b, 10) + +// Packet: 0x021c +packetLen(0x021c, 10) + +// Packet: 0x021d +packetLen(0x021d, 6) + +// Packet: 0x021e +packetLen(0x021e, 6) + +// Packet: 0x021f +packetLen(0x021f, 66) + +// Packet: 0x0220 +packetLen(0x0220, 10) + +// Packet: 0x0221 +packetLen(0x0221, -1) + +// Packet: 0x0222 +packetLen(0x0222, 6) + +// Packet: 0x0223 +packetLen(0x0223, 10) + +// Packet: 0x0224 +packetLen(0x0224, 10) + +// Packet: 0x0225 +packetLen(0x0225, 2) + +// Packet: 0x0226 +packetLen(0x0226, 282) + +// Packet: 0x0227 +packetLen(0x0227, 18) + +// Packet: 0x0228 +packetLen(0x0228, 18) + +// Packet: 0x0229 +packetLen(0x0229, 15) + +// Packet: 0x022a +packetLen(0x022a, 62) + +// Packet: 0x022b +packetLen(0x022b, 61) + +// Packet: 0x022c +packetLen(0x022c, 69) + +// Packet: 0x022d +packetLen(0x022d, 5) + +// Packet: 0x022e +packetLen(0x022e, 73) + +// Packet: 0x022f +packetLen(0x022f, 7) + +// Packet: 0x0230 +packetLen(0x0230, 12) + +// Packet: 0x0231 +packetLen(0x0231, 26) + +// Packet: 0x0232 +packetLen(0x0232, 9) + +// Packet: 0x0233 +packetLen(0x0233, 11) + +// Packet: 0x0234 +packetLen(0x0234, 6) + +// Packet: 0x0235 +packetLen(0x0235, -1) + +// Packet: 0x0236 +packetLen(0x0236, 10) + +// Packet: 0x0237 +packetLen(0x0237, 2) + +// Packet: 0x0238 +packetLen(0x0238, 282) + +// Packet: 0x0239 +packetLen(0x0239, 11) + +// Packet: 0x023a +packetLen(0x023a, 4) + +// Packet: 0x023b +packetLen(0x023b, 36) + +// Packet: 0x023c +packetLen(0x023c, 6) + +// Packet: 0x023d +packetLen(0x023d, 6) + +// Packet: 0x023e +packetLen(0x023e, 8) + +// Packet: 0x023f +packetLen(0x023f, 2) + +// Packet: 0x0240 +packetLen(0x0240, -1) + +// Packet: 0x0241 +packetLen(0x0241, 6) + +// Packet: 0x0242 +packetLen(0x0242, -1) + +// Packet: 0x0243 +packetLen(0x0243, 6) + +// Packet: 0x0244 +packetLen(0x0244, 6) + +// Packet: 0x0245 +packetLen(0x0245, 3) + +// Packet: 0x0246 +packetLen(0x0246, 4) + +// Packet: 0x0247 +packetLen(0x0247, 8) + +// Packet: 0x0248 +packetLen(0x0248, -1) + +// Packet: 0x0249 +packetLen(0x0249, 3) + +// Packet: 0x024a +packetLen(0x024a, 70) + +// Packet: 0x024b +packetLen(0x024b, 4) + +// Packet: 0x024c +packetLen(0x024c, 8) + +// Packet: 0x024d +packetLen(0x024d, 12) + +// Packet: 0x024e +packetLen(0x024e, 6) + +// Packet: 0x024f +packetLen(0x024f, 10) + +// Packet: 0x0250 +packetLen(0x0250, 3) + +// Packet: 0x0251 +packetLen(0x0251, 34) + +// Packet: 0x0252 +packetLen(0x0252, -1) + +// Packet: 0x0253 +packetLen(0x0253, 3) + +// Packet: 0x0254 +packetLen(0x0254, 3) + +// Packet: 0x0255 +packetLen(0x0255, 5) + +// Packet: 0x0256 +packetLen(0x0256, 5) + +// Packet: 0x0257 +packetLen(0x0257, 8) + +// Packet: 0x0258 +packetLen(0x0258, 2) + +// Packet: 0x0259 +packetLen(0x0259, 3) + +// Packet: 0x025a +packetLen(0x025a, -1) + +// Packet: 0x025b +packetLen(0x025b, 8) + +// Packet: 0x025c +packetLen(0x025c, 4) + +// Packet: 0x025d +packetLen(0x025d, 6) + +// Packet: 0x025e +packetLen(0x025e, 4) + +// Packet: 0x025f +packetLen(0x025f, 6) + +// Packet: 0x0260 +packetLen(0x0260, 6) + +// Packet: 0x0261 +packetLen(0x0261, 11) + +// Packet: 0x0262 +packetLen(0x0262, 11) + +// Packet: 0x0263 +packetLen(0x0263, 11) + +// Packet: 0x0264 +packetLen(0x0264, 20) + +// Packet: 0x0265 +packetLen(0x0265, 20) + +// Packet: 0x0266 +packetLen(0x0266, 30) + +// Packet: 0x0267 +packetLen(0x0267, 4) + +// Packet: 0x0268 +packetLen(0x0268, 4) + +// Packet: 0x0269 +packetLen(0x0269, 4) + +// Packet: 0x026a +packetLen(0x026a, 4) + +// Packet: 0x026b +packetLen(0x026b, 4) + +// Packet: 0x026c +packetLen(0x026c, 4) + +// Packet: 0x026d +packetLen(0x026d, 4) + +// Packet: 0x026f +packetLen(0x026f, 2) + +// Packet: 0x0270 +packetLen(0x0270, 2) + +// Packet: 0x0271 +packetLen(0x0271, 40) + +// Packet: 0x0272 +packetLen(0x0272, 44) + +// Packet: 0x0273 +packetLen(0x0273, 30) + +// Packet: 0x0274 +packetLen(0x0274, 8) + +// Packet: 0x0275 +packetLen(0x0275, 37) + +// Packet: 0x0276 +packetLen(0x0276, -1) + +// Packet: 0x0277 +packetLen(0x0277, 84) + +// Packet: 0x0278 +packetLen(0x0278, 2) + +// Packet: 0x0279 +packetLen(0x0279, 2) + +// Packet: 0x027a +packetLen(0x027a, -1) + +// Packet: 0x027b +packetLen(0x027b, 14) + +// Packet: 0x027c +packetLen(0x027c, 60) + +// Packet: 0x027d +packetLen(0x027d, 62) + +// Packet: 0x027e +packetLen(0x027e, -1) + +// Packet: 0x027f +packetLen(0x027f, 8) + +// Packet: 0x0280 +packetLen(0x0280, 12) + +// Packet: 0x0281 +packetLen(0x0281, 4) + +// Packet: 0x0282 +packetLen(0x0282, 284) + +// Packet: 0x0283 +packetLen(0x0283, 6) + +// Packet: 0x0284 +packetLen(0x0284, 14) + +// Packet: 0x0285 +packetLen(0x0285, 6) + +// Packet: 0x0286 +packetLen(0x0286, 4) + +// Packet: 0x0287 +packetLen(0x0287, -1) + +// Packet: 0x0288 +packetLen(0x0288, -1) + +// Packet: 0x0289 +packetLen(0x0289, 12) + +// Packet: 0x028a +packetLen(0x028a, 18) + +// Packet: 0x028b +packetLen(0x028b, -1) + +// Packet: 0x028c +packetLen(0x028c, 46) + +// Packet: 0x028d +packetLen(0x028d, 34) + +// Packet: 0x028e +packetLen(0x028e, 4) + +// Packet: 0x028f +packetLen(0x028f, 6) + +// Packet: 0x0290 +packetLen(0x0290, 4) + +// Packet: 0x0291 +packetLen(0x0291, 4) + +// Packet: 0x0292 +packetLen(0x0292, 2) + +// Packet: 0x0293 +packetLen(0x0293, 70) + +// Packet: 0x0294 +packetLen(0x0294, 10) + +// Packet: 0x0295 +packetLen(0x0295, -1) + +// Packet: 0x0296 +packetLen(0x0296, -1) + +// Packet: 0x0297 +packetLen(0x0297, -1) + +// Packet: 0x0298 +packetLen(0x0298, 10) + +// Packet: 0x0299 +packetLen(0x0299, 8) + +// Packet: 0x029a +packetLen(0x029a, 37) + +// Packet: 0x029b +packetLen(0x029b, 80) + +// Packet: 0x029c +packetLen(0x029c, 66) + +// Packet: 0x029d +packetLen(0x029d, -1) + +// Packet: 0x029e +packetLen(0x029e, 11) + +// Packet: 0x029f +packetLen(0x029f, 3) + +// Packet: 0x02a2 +packetLen(0x02a2, 8) + +// Packet: 0x02a5 +packetLen(0x02a5, 8) + +// Packet: 0x02a6 +packetLen(0x02a6, -1) + +// Packet: 0x02a7 +packetLen(0x02a7, -1) + +// Packet: 0x02aa +packetLen(0x02aa, 4) + +// Packet: 0x02ab +packetLen(0x02ab, 36) + +// Packet: 0x02ac +packetLen(0x02ac, 6) + +// Packet: 0x02ad +packetLen(0x02ad, 8) + +// Packet: 0x02b0 +packetLen(0x02b0, 85) + +// Packet: 0x02b1 +packetLen(0x02b1, -1) + +// Packet: 0x02b2 +packetLen(0x02b2, -1) + +// Packet: 0x02b3 +packetLen(0x02b3, 107) + +// Packet: 0x02b4 +packetLen(0x02b4, 6) + +// Packet: 0x02b5 +packetLen(0x02b5, -1) + +// Packet: 0x02b6 +packetLen(0x02b6, 7) + +// Packet: 0x02b7 +packetLen(0x02b7, 7) + +// Packet: 0x02b8 +packetLen(0x02b8, 32) + +// Packet: 0x02b9 +packetLen(0x02b9, 191) + +// Packet: 0x02ba +packetLen(0x02ba, 11) + +// Packet: 0x02bb +packetLen(0x02bb, 8) + +// Packet: 0x02bc +packetLen(0x02bc, 6) + +// Packet: 0x02c1 +packetLen(0x02c1, -1) + +// Packet: 0x02c2 +packetLen(0x02c2, -1) + +// Packet: 0x02c4 +packetLen(0x02c4, 26) + +// Packet: 0x02c5 +packetLen(0x02c5, 30) + +// Packet: 0x02c6 +packetLen(0x02c6, 30) + +// Packet: 0x02c7 +packetLen(0x02c7, 7) + +// Packet: 0x02c8 +packetLen(0x02c8, 3) + +// Packet: 0x02c9 +packetLen(0x02c9, 3) + +// Packet: 0x02ca +packetLen(0x02ca, 3) + +// Packet: 0x02cb +packetLen(0x02cb, 65) + +// Packet: 0x02cc +packetLen(0x02cc, 4) + +// Packet: 0x02cd +packetLen(0x02cd, 71) + +// Packet: 0x02ce +packetLen(0x02ce, 10) + +// Packet: 0x02cf +packetLen(0x02cf, 6) + +// Packet: 0x02d0 +packetLen(0x02d0, -1) + +// Packet: 0x02d1 +packetLen(0x02d1, -1) + +// Packet: 0x02d2 +packetLen(0x02d2, -1) + +// Packet: 0x02d3 +packetLen(0x02d3, 4) + +// Packet: 0x02d4 +packetLen(0x02d4, 39) + +// Packet: 0x02d5 +packetLen(0x02d5, 2) + +// Packet: 0x02d6 +packetLen(0x02d6, 6) + +// Packet: 0x02d7 +packetLen(0x02d7, -1) + +// Packet: 0x02d8 +packetLen(0x02d8, 10) + +// Packet: 0x02d9 +packetLen(0x02d9, 10) + +// Packet: 0x02da +packetLen(0x02da, 3) + +// Packet: 0x02db +packetLen(0x02db, -1) + +// Packet: 0x02dc +packetLen(0x02dc, -1) + +// Packet: 0x02dd +packetLen(0x02dd, 32) + +// Packet: 0x02de +packetLen(0x02de, 6) + +// Packet: 0x02df +packetLen(0x02df, 36) + +// Packet: 0x02e0 +packetLen(0x02e0, 34) + +// Packet: 0x02e1 +packetLen(0x02e1, 33) + +// Packet: 0x02e2 +packetLen(0x02e2, 20) + +// Packet: 0x02e3 +packetLen(0x02e3, 22) + +// Packet: 0x02e4 +packetLen(0x02e4, 11) + +// Packet: 0x02e5 +packetLen(0x02e5, 9) + +// Packet: 0x02e6 +packetLen(0x02e6, 6) + +// Packet: 0x02e7 +packetLen(0x02e7, -1) + +// Packet: 0x02e8 +packetLen(0x02e8, -1) + +// Packet: 0x02e9 +packetLen(0x02e9, -1) + +// Packet: 0x02ea +packetLen(0x02ea, -1) + +// Packet: 0x02eb +packetLen(0x02eb, 13) + +// Packet: 0x02ec +packetLen(0x02ec, 71) + +// Packet: 0x02ed +packetLen(0x02ed, 63) + +// Packet: 0x02ee +packetLen(0x02ee, 64) + +// Packet: 0x02ef +packetLen(0x02ef, 8) + +// Packet: 0x02f0 +packetLen(0x02f0, 10) + +// Packet: 0x02f1 +packetLen(0x02f1, 2) + +// Packet: 0x02f2 +packetLen(0x02f2, 2) + +// Packet: 0x02f3 +packetLen(0x02f3, -1) + +// Packet: 0x02f4 +packetLen(0x02f4, 3) + +// Packet: 0x02f5 +packetLen(0x02f5, 7) + +// Packet: 0x02f6 +packetLen(0x02f6, 7) + +// Packet: 0x035c +packetLen(0x035c, 2) + +// Packet: 0x035d +packetLen(0x035d, -1) + +// Packet: 0x035e +packetLen(0x035e, 2) + +// Packet: 0x035f +packetLen(0x035f, 5) + +// Packet: 0x0360 +packetLen(0x0360, 6) + +// Packet: 0x0361 +packetLen(0x0361, 5) + +// Packet: 0x0362 +packetLen(0x0362, 6) + +// Packet: 0x0363 +packetLen(0x0363, 6) + +// Packet: 0x0364 +packetLen(0x0364, 8) + +// Packet: 0x0365 +packetLen(0x0365, 8) + +// Packet: 0x0366 +packetLen(0x0366, 10) + +// Packet: 0x0367 +packetLen(0x0367, 31) + +// Packet: 0x0368 +packetLen(0x0368, 6) + +// Packet: 0x0369 +packetLen(0x0369, 6) + +// Packet: 0x03dd +packetLen(0x03dd, 18) + +// Packet: 0x03de +packetLen(0x03de, 18) + +// Packet: 0x0436 +#if PACKETVER >= 20210630 +packetLen(0x0436, 23) +#elif PACKETVER >= 20210203 +packetLen(0x0436, 19) +#endif + +// Packet: 0x0437 +packetLen(0x0437, 7) + +// Packet: 0x0438 +packetLen(0x0438, 10) + +// Packet: 0x0439 +packetLen(0x0439, 8) + +// Packet: 0x043d +packetLen(0x043d, 8) + +// Packet: 0x043e +packetLen(0x043e, -1) + +// Packet: 0x043f +packetLen(0x043f, 25) + +// Packet: 0x0440 +packetLen(0x0440, 10) + +// Packet: 0x0441 +packetLen(0x0441, 4) + +// Packet: 0x0442 +packetLen(0x0442, -1) + +// Packet: 0x0443 +packetLen(0x0443, 8) + +// Packet: 0x0444 +packetLen(0x0444, -1) + +// Packet: 0x0445 +packetLen(0x0445, 12) + +// Packet: 0x0446 +packetLen(0x0446, 14) + +// Packet: 0x0447 +packetLen(0x0447, 2) + +// Packet: 0x0448 +packetLen(0x0448, -1) + +// Packet: 0x0449 +packetLen(0x0449, 4) + +// Packet: 0x044a +packetLen(0x044a, 6) + +// Packet: 0x044b +packetLen(0x044b, 2) + +// Packet: 0x07d7 +packetLen(0x07d7, 8) + +// Packet: 0x07d8 +packetLen(0x07d8, 8) + +// Packet: 0x07d9 +packetLen(0x07d9, 268) + +// Packet: 0x07da +packetLen(0x07da, 6) + +// Packet: 0x07db +packetLen(0x07db, 8) + +// Packet: 0x07dc +packetLen(0x07dc, 6) + +// Packet: 0x07dd +packetLen(0x07dd, 54) + +// Packet: 0x07de +packetLen(0x07de, 30) + +// Packet: 0x07df +packetLen(0x07df, 54) + +// Packet: 0x07e0 +packetLen(0x07e0, 58) + +// Packet: 0x07e1 +packetLen(0x07e1, 15) + +// Packet: 0x07e2 +packetLen(0x07e2, 8) + +// Packet: 0x07e3 +packetLen(0x07e3, 6) + +// Packet: 0x07e4 +packetLen(0x07e4, -1) + +// Packet: 0x07e5 +packetLen(0x07e5, 4) + +// Packet: 0x07e6 +packetLen(0x07e6, 8) + +// Packet: 0x07e7 +packetLen(0x07e7, 32) + +// Packet: 0x07e8 +packetLen(0x07e8, -1) + +// Packet: 0x07e9 +packetLen(0x07e9, 5) + +// Packet: 0x07ea +packetLen(0x07ea, 2) + +// Packet: 0x07eb +packetLen(0x07eb, -1) + +// Packet: 0x07ec +packetLen(0x07ec, 8) + +// Packet: 0x07ed +packetLen(0x07ed, 10) + +// Packet: 0x07ee +packetLen(0x07ee, 6) + +// Packet: 0x07ef +packetLen(0x07ef, 8) + +// Packet: 0x07f0 +packetLen(0x07f0, 6) + +// Packet: 0x07f1 +packetLen(0x07f1, 18) + +// Packet: 0x07f2 +packetLen(0x07f2, 8) + +// Packet: 0x07f3 +packetLen(0x07f3, 6) + +// Packet: 0x07f4 +packetLen(0x07f4, 3) + +// Packet: 0x07f5 +packetLen(0x07f5, 6) + +// Packet: 0x07f6 +packetLen(0x07f6, 14) + +// Packet: 0x07f7 +packetLen(0x07f7, -1) + +// Packet: 0x07f8 +packetLen(0x07f8, -1) + +// Packet: 0x07f9 +packetLen(0x07f9, -1) + +// Packet: 0x07fa +packetLen(0x07fa, 8) + +// Packet: 0x07fb +packetLen(0x07fb, 25) + +// Packet: 0x07fc +packetLen(0x07fc, 10) + +// Packet: 0x07fd +packetLen(0x07fd, -1) + +// Packet: 0x07fe +packetLen(0x07fe, 26) + +// Packet: 0x0800 +packetLen(0x0800, -1) + +// Packet: 0x0801 +packetLen(0x0801, -1) + +// Packet: 0x0802 +packetLen(0x0802, 18) + +// Packet: 0x0803 +packetLen(0x0803, 4) + +// Packet: 0x0804 +packetLen(0x0804, 14) + +// Packet: 0x0805 +packetLen(0x0805, -1) + +// Packet: 0x0806 +packetLen(0x0806, 2) + +// Packet: 0x0807 +packetLen(0x0807, 4) + +// Packet: 0x0808 +packetLen(0x0808, 14) + +// Packet: 0x0809 +packetLen(0x0809, 50) + +// Packet: 0x080a +packetLen(0x080a, 18) + +// Packet: 0x080b +packetLen(0x080b, 6) + +// Packet: 0x080c +packetLen(0x080c, 2) + +// Packet: 0x080d +packetLen(0x080d, 3) + +// Packet: 0x080e +packetLen(0x080e, 14) + +// Packet: 0x080f +packetLen(0x080f, 30) + +// Packet: 0x0810 +packetLen(0x0810, 3) + +// Packet: 0x0811 +packetLen(0x0811, -1) + +// Packet: 0x0812 +packetLen(0x0812, 8) + +// Packet: 0x0813 +packetLen(0x0813, -1) + +// Packet: 0x0814 +packetLen(0x0814, 86) + +// Packet: 0x0815 +packetLen(0x0815, 2) + +// Packet: 0x0816 +packetLen(0x0816, 6) + +// Packet: 0x0817 +packetLen(0x0817, 6) + +// Packet: 0x0818 +packetLen(0x0818, -1) + +// Packet: 0x0819 +packetLen(0x0819, -1) + +// Packet: 0x081a +packetLen(0x081a, 4) + +// Packet: 0x081b +packetLen(0x081b, 12) + +// Packet: 0x081c +packetLen(0x081c, 10) + +// Packet: 0x081d +packetLen(0x081d, 22) + +// Packet: 0x081e +packetLen(0x081e, 8) + +// Packet: 0x081f +packetLen(0x081f, -1) + +// Packet: 0x0820 +packetLen(0x0820, 11) + +// Packet: 0x0821 +packetLen(0x0821, 2) + +// Packet: 0x0822 +packetLen(0x0822, 9) + +// Packet: 0x0823 +packetLen(0x0823, -1) + +// Packet: 0x0824 +packetLen(0x0824, 8) + +// Packet: 0x0825 +packetLen(0x0825, -1) + +// Packet: 0x0827 +packetLen(0x0827, 6) + +// Packet: 0x0828 +packetLen(0x0828, 14) + +// Packet: 0x0829 +packetLen(0x0829, 12) + +// Packet: 0x082a +packetLen(0x082a, 10) + +// Packet: 0x082b +packetLen(0x082b, 6) + +// Packet: 0x082c +packetLen(0x082c, 10) + +// Packet: 0x082d +packetLen(0x082d, -1) + +// Packet: 0x0835 +packetLen(0x0835, -1) + +// Packet: 0x0836 +packetLen(0x0836, -1) + +// Packet: 0x0837 +packetLen(0x0837, 3) + +// Packet: 0x0838 +packetLen(0x0838, 2) + +// Packet: 0x0839 +packetLen(0x0839, 66) + +// Packet: 0x083a +packetLen(0x083a, 5) + +// Packet: 0x083b +packetLen(0x083b, 2) + +// Packet: 0x083c +packetLen(0x083c, 14) + +// Packet: 0x083d +packetLen(0x083d, 6) + +// Packet: 0x083e +packetLen(0x083e, 26) + +// Packet: 0x0840 +packetLen(0x0840, -1) + +// Packet: 0x0841 +packetLen(0x0841, 4) + +// Packet: 0x0842 +packetLen(0x0842, 6) + +// Packet: 0x0843 +packetLen(0x0843, 6) + +// Packet: 0x0844 +packetLen(0x0844, 2) + +// Packet: 0x0845 +packetLen(0x0845, 10) + +// Packet: 0x0846 +packetLen(0x0846, 4) + +// Packet: 0x0847 +packetLen(0x0847, -1) + +// Packet: 0x0848 +packetLen(0x0848, -1) + +// Packet: 0x0849 +packetLen(0x0849, 16) + +// Packet: 0x084a +packetLen(0x084a, 2) + +// Packet: 0x084b +packetLen(0x084b, 21) + +// Packet: 0x084c +packetLen(0x084c, 10) + +// Packet: 0x084d +packetLen(0x084d, 10) + +// Packet: 0x084e +packetLen(0x084e, 5) + +// Packet: 0x084f +packetLen(0x084f, 6) + +// Packet: 0x0850 +packetLen(0x0850, 7) + +// Packet: 0x0851 +packetLen(0x0851, -1) + +// Packet: 0x0852 +packetLen(0x0852, 2) + +// Packet: 0x0853 +packetLen(0x0853, -1) + +// Packet: 0x0854 +packetLen(0x0854, -1) + +// Packet: 0x0855 +packetLen(0x0855, 6) + +// Packet: 0x0856 +packetLen(0x0856, -1) + +// Packet: 0x0857 +packetLen(0x0857, -1) + +// Packet: 0x0858 +packetLen(0x0858, -1) + +// Packet: 0x0859 +packetLen(0x0859, -1) + +// Packet: 0x085a +packetLen(0x085a, 2) + +// Packet: 0x085b +packetLen(0x085b, 2) + +// Packet: 0x085c +packetLen(0x085c, 2) + +// Packet: 0x085d +packetLen(0x085d, 2) + +// Packet: 0x085e +packetLen(0x085e, 2) + +// Packet: 0x085f +packetLen(0x085f, 2) + +// Packet: 0x0860 +packetLen(0x0860, 2) + +// Packet: 0x0861 +packetLen(0x0861, 2) + +// Packet: 0x0862 +packetLen(0x0862, 2) + +// Packet: 0x0863 +packetLen(0x0863, 2) + +// Packet: 0x0864 +packetLen(0x0864, 2) + +// Packet: 0x0865 +packetLen(0x0865, 2) + +// Packet: 0x0866 +packetLen(0x0866, 2) + +// Packet: 0x0867 +packetLen(0x0867, 2) + +// Packet: 0x0868 +packetLen(0x0868, 2) + +// Packet: 0x0869 +packetLen(0x0869, 2) + +// Packet: 0x086a +packetLen(0x086a, 2) + +// Packet: 0x086b +packetLen(0x086b, 2) + +// Packet: 0x086c +packetLen(0x086c, 2) + +// Packet: 0x086d +packetLen(0x086d, 2) + +// Packet: 0x086e +packetLen(0x086e, 2) + +// Packet: 0x086f +packetLen(0x086f, 2) + +// Packet: 0x0870 +packetLen(0x0870, 2) + +// Packet: 0x0871 +packetLen(0x0871, 2) + +// Packet: 0x0872 +packetLen(0x0872, 2) + +// Packet: 0x0873 +packetLen(0x0873, 2) + +// Packet: 0x0874 +packetLen(0x0874, 2) + +// Packet: 0x0875 +packetLen(0x0875, 2) + +// Packet: 0x0876 +packetLen(0x0876, 2) + +// Packet: 0x0877 +packetLen(0x0877, 2) + +// Packet: 0x0878 +packetLen(0x0878, 2) + +// Packet: 0x0879 +packetLen(0x0879, 2) + +// Packet: 0x087a +packetLen(0x087a, 2) + +// Packet: 0x087b +packetLen(0x087b, 2) + +// Packet: 0x087c +packetLen(0x087c, 2) + +// Packet: 0x087d +packetLen(0x087d, 2) + +// Packet: 0x087e +packetLen(0x087e, 2) + +// Packet: 0x087f +packetLen(0x087f, 2) + +// Packet: 0x0880 +packetLen(0x0880, 2) + +// Packet: 0x0881 +packetLen(0x0881, 2) + +// Packet: 0x0882 +packetLen(0x0882, 2) + +// Packet: 0x0883 +packetLen(0x0883, 2) + +// Packet: 0x0884 +packetLen(0x0884, 2) + +// Packet: 0x0885 +packetLen(0x0885, 2) + +// Packet: 0x0886 +packetLen(0x0886, 2) + +// Packet: 0x0887 +packetLen(0x0887, 2) + +// Packet: 0x0888 +packetLen(0x0888, 2) + +// Packet: 0x0889 +packetLen(0x0889, 2) + +// Packet: 0x088a +packetLen(0x088a, 2) + +// Packet: 0x088b +packetLen(0x088b, 2) + +// Packet: 0x088c +packetLen(0x088c, 2) + +// Packet: 0x088d +packetLen(0x088d, 2) + +// Packet: 0x088e +packetLen(0x088e, 2) + +// Packet: 0x088f +packetLen(0x088f, 2) + +// Packet: 0x0890 +packetLen(0x0890, 2) + +// Packet: 0x0891 +packetLen(0x0891, 2) + +// Packet: 0x0892 +packetLen(0x0892, 2) + +// Packet: 0x0893 +packetLen(0x0893, 2) + +// Packet: 0x0894 +packetLen(0x0894, 2) + +// Packet: 0x0895 +packetLen(0x0895, 2) + +// Packet: 0x0896 +packetLen(0x0896, 2) + +// Packet: 0x0897 +packetLen(0x0897, 2) + +// Packet: 0x0898 +packetLen(0x0898, 2) + +// Packet: 0x0899 +packetLen(0x0899, 2) + +// Packet: 0x089a +packetLen(0x089a, 2) + +// Packet: 0x089b +packetLen(0x089b, 2) + +// Packet: 0x089c +packetLen(0x089c, 2) + +// Packet: 0x089d +packetLen(0x089d, 2) + +// Packet: 0x089e +packetLen(0x089e, 2) + +// Packet: 0x089f +packetLen(0x089f, 2) + +// Packet: 0x08a0 +packetLen(0x08a0, 2) + +// Packet: 0x08a1 +packetLen(0x08a1, 2) + +// Packet: 0x08a2 +packetLen(0x08a2, 2) + +// Packet: 0x08a3 +packetLen(0x08a3, 2) + +// Packet: 0x08a4 +packetLen(0x08a4, 2) + +// Packet: 0x08a5 +packetLen(0x08a5, 2) + +// Packet: 0x08a6 +packetLen(0x08a6, 2) + +// Packet: 0x08a7 +packetLen(0x08a7, 2) + +// Packet: 0x08a8 +packetLen(0x08a8, 2) + +// Packet: 0x08a9 +packetLen(0x08a9, 2) + +// Packet: 0x08aa +packetLen(0x08aa, 2) + +// Packet: 0x08ab +packetLen(0x08ab, 2) + +// Packet: 0x08ac +packetLen(0x08ac, 2) + +// Packet: 0x08ad +packetLen(0x08ad, 2) + +// Packet: 0x08af +packetLen(0x08af, 10) + +// Packet: 0x08b0 +packetLen(0x08b0, 17) + +// Packet: 0x08b1 +packetLen(0x08b1, -1) + +// Packet: 0x08b2 +packetLen(0x08b2, -1) + +// Packet: 0x08b3 +packetLen(0x08b3, -1) + +// Packet: 0x08b4 +packetLen(0x08b4, 2) + +// Packet: 0x08b5 +packetLen(0x08b5, 6) + +// Packet: 0x08b6 +packetLen(0x08b6, 3) + +// Packet: 0x08b8 +packetLen(0x08b8, 10) + +// Packet: 0x08b9 +packetLen(0x08b9, 12) + +// Packet: 0x08ba +packetLen(0x08ba, 10) + +// Packet: 0x08bb +packetLen(0x08bb, 8) + +// Packet: 0x08bc +packetLen(0x08bc, 10) + +// Packet: 0x08bd +packetLen(0x08bd, 8) + +// Packet: 0x08be +packetLen(0x08be, 14) + +// Packet: 0x08bf +packetLen(0x08bf, 8) + +// Packet: 0x08c0 +packetLen(0x08c0, -1) + +// Packet: 0x08c1 +packetLen(0x08c1, 2) + +// Packet: 0x08c2 +packetLen(0x08c2, 2) + +// Packet: 0x08c3 +packetLen(0x08c3, 10) + +// Packet: 0x08c4 +packetLen(0x08c4, 8) + +// Packet: 0x08c5 +packetLen(0x08c5, 6) + +// Packet: 0x08c6 +packetLen(0x08c6, 4) + +// Packet: 0x08c7 +packetLen(0x08c7, -1) + +// Packet: 0x08c8 +packetLen(0x08c8, 34) + +// Packet: 0x08c9 +packetLen(0x08c9, 2) + +// Packet: 0x08ca +packetLen(0x08ca, -1) + +// Packet: 0x08cb +packetLen(0x08cb, -1) + +// Packet: 0x08cc +packetLen(0x08cc, 109) + +// Packet: 0x08cd +packetLen(0x08cd, 10) + +// Packet: 0x08ce +packetLen(0x08ce, 2) + +// Packet: 0x08cf +packetLen(0x08cf, 10) + +// Packet: 0x08d0 +packetLen(0x08d0, 9) + +// Packet: 0x08d1 +packetLen(0x08d1, 7) + +// Packet: 0x08d2 +packetLen(0x08d2, 10) + +// Packet: 0x08d3 +packetLen(0x08d3, 10) + +// Packet: 0x08d4 +packetLen(0x08d4, 8) + +// Packet: 0x08d5 +packetLen(0x08d5, -1) + +// Packet: 0x08d6 +packetLen(0x08d6, 6) + +// Packet: 0x08d7 +packetLen(0x08d7, 28) + +// Packet: 0x08d8 +packetLen(0x08d8, 27) + +// Packet: 0x08d9 +packetLen(0x08d9, 30) + +// Packet: 0x08da +packetLen(0x08da, 26) + +// Packet: 0x08db +packetLen(0x08db, 27) + +// Packet: 0x08dc +packetLen(0x08dc, 26) + +// Packet: 0x08dd +packetLen(0x08dd, 27) + +// Packet: 0x08de +packetLen(0x08de, 27) + +// Packet: 0x08df +packetLen(0x08df, 50) + +// Packet: 0x08e0 +packetLen(0x08e0, 51) + +// Packet: 0x08e1 +packetLen(0x08e1, 51) + +// Packet: 0x08e2 +packetLen(0x08e2, 27) + +// Packet: 0x08e3 +packetLen(0x08e3, 157) + +// Packet: 0x08e4 +packetLen(0x08e4, 6) + +// Packet: 0x08fc +packetLen(0x08fc, 30) + +// Packet: 0x08fd +packetLen(0x08fd, 6) + +// Packet: 0x08fe +packetLen(0x08fe, -1) + +// Packet: 0x08ff +packetLen(0x08ff, 24) + +// Packet: 0x0900 +packetLen(0x0900, -1) + +// Packet: 0x0901 +packetLen(0x0901, -1) + +// Packet: 0x0902 +packetLen(0x0902, -1) + +// Packet: 0x0903 +packetLen(0x0903, -1) + +// Packet: 0x0904 +packetLen(0x0904, -1) + +// Packet: 0x0905 +packetLen(0x0905, -1) + +// Packet: 0x0906 +packetLen(0x0906, -1) + +// Packet: 0x0907 +packetLen(0x0907, 5) + +// Packet: 0x0908 +packetLen(0x0908, 5) + +// Packet: 0x090a +packetLen(0x090a, 26) + +// Packet: 0x090d +packetLen(0x090d, -1) + +// Packet: 0x090e +packetLen(0x090e, 2) + +// Packet: 0x090f +packetLen(0x090f, -1) + +// Packet: 0x0910 +packetLen(0x0910, 10) + +// Packet: 0x0911 +packetLen(0x0911, 30) + +// Packet: 0x0912 +packetLen(0x0912, 10) + +// Packet: 0x0913 +packetLen(0x0913, 30) + +// Packet: 0x0914 +packetLen(0x0914, -1) + +// Packet: 0x0915 +packetLen(0x0915, -1) + +// Packet: 0x0916 +packetLen(0x0916, 26) + +// Packet: 0x0917 +packetLen(0x0917, 2) + +// Packet: 0x0918 +packetLen(0x0918, 2) + +// Packet: 0x0919 +packetLen(0x0919, 2) + +// Packet: 0x091a +packetLen(0x091a, 2) + +// Packet: 0x091b +packetLen(0x091b, 2) + +// Packet: 0x091c +packetLen(0x091c, 2) + +// Packet: 0x091d +packetLen(0x091d, 2) + +// Packet: 0x091e +packetLen(0x091e, 2) + +// Packet: 0x091f +packetLen(0x091f, 2) + +// Packet: 0x0920 +packetLen(0x0920, 2) + +// Packet: 0x0921 +packetLen(0x0921, 2) + +// Packet: 0x0922 +packetLen(0x0922, 2) + +// Packet: 0x0923 +packetLen(0x0923, 2) + +// Packet: 0x0924 +packetLen(0x0924, 2) + +// Packet: 0x0925 +packetLen(0x0925, 2) + +// Packet: 0x0926 +packetLen(0x0926, 2) + +// Packet: 0x0927 +packetLen(0x0927, 2) + +// Packet: 0x0928 +packetLen(0x0928, 2) + +// Packet: 0x0929 +packetLen(0x0929, 2) + +// Packet: 0x092a +packetLen(0x092a, 2) + +// Packet: 0x092b +packetLen(0x092b, 2) + +// Packet: 0x092c +packetLen(0x092c, 2) + +// Packet: 0x092d +packetLen(0x092d, 2) + +// Packet: 0x092e +packetLen(0x092e, 2) + +// Packet: 0x092f +packetLen(0x092f, 2) + +// Packet: 0x0930 +packetLen(0x0930, 2) + +// Packet: 0x0931 +packetLen(0x0931, 2) + +// Packet: 0x0932 +packetLen(0x0932, 2) + +// Packet: 0x0933 +packetLen(0x0933, 2) + +// Packet: 0x0934 +packetLen(0x0934, 2) + +// Packet: 0x0935 +packetLen(0x0935, 2) + +// Packet: 0x0936 +packetLen(0x0936, 2) + +// Packet: 0x0937 +packetLen(0x0937, 2) + +// Packet: 0x0938 +packetLen(0x0938, 2) + +// Packet: 0x0939 +packetLen(0x0939, 2) + +// Packet: 0x093a +packetLen(0x093a, 2) + +// Packet: 0x093b +packetLen(0x093b, 2) + +// Packet: 0x093c +packetLen(0x093c, 2) + +// Packet: 0x093d +packetLen(0x093d, 2) + +// Packet: 0x093e +packetLen(0x093e, 2) + +// Packet: 0x093f +packetLen(0x093f, 2) + +// Packet: 0x0940 +packetLen(0x0940, 2) + +// Packet: 0x0941 +packetLen(0x0941, 2) + +// Packet: 0x0942 +packetLen(0x0942, 2) + +// Packet: 0x0943 +packetLen(0x0943, 2) + +// Packet: 0x0944 +packetLen(0x0944, 2) + +// Packet: 0x0945 +packetLen(0x0945, 2) + +// Packet: 0x0946 +packetLen(0x0946, 2) + +// Packet: 0x0947 +packetLen(0x0947, 2) + +// Packet: 0x0948 +packetLen(0x0948, 2) + +// Packet: 0x0949 +packetLen(0x0949, 2) + +// Packet: 0x094a +packetLen(0x094a, 2) + +// Packet: 0x094b +packetLen(0x094b, 2) + +// Packet: 0x094c +packetLen(0x094c, 2) + +// Packet: 0x094d +packetLen(0x094d, 2) + +// Packet: 0x094e +packetLen(0x094e, 2) + +// Packet: 0x094f +packetLen(0x094f, 2) + +// Packet: 0x0950 +packetLen(0x0950, 2) + +// Packet: 0x0951 +packetLen(0x0951, 2) + +// Packet: 0x0952 +packetLen(0x0952, 2) + +// Packet: 0x0953 +packetLen(0x0953, 2) + +// Packet: 0x0954 +packetLen(0x0954, 2) + +// Packet: 0x0955 +packetLen(0x0955, 2) + +// Packet: 0x0956 +packetLen(0x0956, 2) + +// Packet: 0x0957 +packetLen(0x0957, 2) + +// Packet: 0x0958 +packetLen(0x0958, 2) + +// Packet: 0x0959 +packetLen(0x0959, 2) + +// Packet: 0x095a +packetLen(0x095a, 2) + +// Packet: 0x095b +packetLen(0x095b, 2) + +// Packet: 0x095c +packetLen(0x095c, 2) + +// Packet: 0x095d +packetLen(0x095d, 2) + +// Packet: 0x095e +packetLen(0x095e, 2) + +// Packet: 0x095f +packetLen(0x095f, 2) + +// Packet: 0x0960 +packetLen(0x0960, 2) + +// Packet: 0x0961 +packetLen(0x0961, 2) + +// Packet: 0x0962 +packetLen(0x0962, 2) + +// Packet: 0x0963 +packetLen(0x0963, 2) + +// Packet: 0x0964 +packetLen(0x0964, 2) + +// Packet: 0x0965 +packetLen(0x0965, 2) + +// Packet: 0x0966 +packetLen(0x0966, 2) + +// Packet: 0x0967 +packetLen(0x0967, 2) + +// Packet: 0x0968 +packetLen(0x0968, 2) + +// Packet: 0x0969 +packetLen(0x0969, 2) + +// Packet: 0x096a +packetLen(0x096a, 2) + +// Packet: 0x096b +packetLen(0x096b, 4) + +// Packet: 0x096c +packetLen(0x096c, 6) + +// Packet: 0x096d +packetLen(0x096d, -1) + +// Packet: 0x096e +packetLen(0x096e, -1) + +// Packet: 0x096f +packetLen(0x096f, 7) + +// Packet: 0x0970 +packetLen(0x0970, 31) + +// Packet: 0x0971 +packetLen(0x0971, 6) + +// Packet: 0x0972 +packetLen(0x0972, -1) + +// Packet: 0x0973 +packetLen(0x0973, 7) + +// Packet: 0x0974 +packetLen(0x0974, 2) + +// Packet: 0x0975 +packetLen(0x0975, -1) + +// Packet: 0x0976 +packetLen(0x0976, -1) + +// Packet: 0x0977 +packetLen(0x0977, 14) + +// Packet: 0x0978 +packetLen(0x0978, 6) + +// Packet: 0x0979 +packetLen(0x0979, 50) + +// Packet: 0x097a +packetLen(0x097a, -1) + +// Packet: 0x097b +packetLen(0x097b, -1) + +// Packet: 0x097c +packetLen(0x097c, 4) + +// Packet: 0x097d +packetLen(0x097d, 288) + +// Packet: 0x097e +packetLen(0x097e, 12) + +// Packet: 0x097f +packetLen(0x097f, -1) + +// Packet: 0x0980 +packetLen(0x0980, 7) + +// Packet: 0x0981 +packetLen(0x0981, -1) + +// Packet: 0x0982 +packetLen(0x0982, 7) + +// Packet: 0x0983 +packetLen(0x0983, 29) + +// Packet: 0x0984 +packetLen(0x0984, 28) + +// Packet: 0x0985 +packetLen(0x0985, -1) + +// Packet: 0x0986 +packetLen(0x0986, 10) + +// Packet: 0x0987 +packetLen(0x0987, -1) + +// Packet: 0x0988 +packetLen(0x0988, 6) + +// Packet: 0x0989 +packetLen(0x0989, 2) + +// Packet: 0x098a +packetLen(0x098a, -1) + +// Packet: 0x098b +packetLen(0x098b, 2) + +// Packet: 0x098c +packetLen(0x098c, 4) + +// Packet: 0x098d +packetLen(0x098d, -1) + +// Packet: 0x098e +packetLen(0x098e, -1) + +// Packet: 0x098f +packetLen(0x098f, -1) + +// Packet: 0x0990 +packetLen(0x0990, 41) + +// Packet: 0x0991 +packetLen(0x0991, -1) + +// Packet: 0x0992 +packetLen(0x0992, -1) + +// Packet: 0x0993 +packetLen(0x0993, -1) + +// Packet: 0x0994 +packetLen(0x0994, -1) + +// Packet: 0x0995 +packetLen(0x0995, -1) + +// Packet: 0x0996 +packetLen(0x0996, -1) + +// Packet: 0x0997 +packetLen(0x0997, -1) + +// Packet: 0x0998 +packetLen(0x0998, 8) + +// Packet: 0x0999 +packetLen(0x0999, 11) + +// Packet: 0x099a +packetLen(0x099a, 9) + +// Packet: 0x099b +packetLen(0x099b, 8) + +// Packet: 0x099c +packetLen(0x099c, 6) + +// Packet: 0x099d +packetLen(0x099d, -1) + +// Packet: 0x099e +packetLen(0x099e, 12) + +// Packet: 0x099f +packetLen(0x099f, -1) + +// Packet: 0x09a0 +packetLen(0x09a0, 6) + +// Packet: 0x09a1 +packetLen(0x09a1, 2) + +// Packet: 0x09a2 +packetLen(0x09a2, 6) + +// Packet: 0x09a3 +packetLen(0x09a3, -1) + +// Packet: 0x09a4 +packetLen(0x09a4, 18) + +// Packet: 0x09a5 +packetLen(0x09a5, 7) + +// Packet: 0x09a6 +packetLen(0x09a6, 12) + +// Packet: 0x09a7 +packetLen(0x09a7, 10) + +// Packet: 0x09a8 +packetLen(0x09a8, 16) + +// Packet: 0x09a9 +packetLen(0x09a9, 10) + +// Packet: 0x09aa +packetLen(0x09aa, 16) + +// Packet: 0x09ab +packetLen(0x09ab, 6) + +// Packet: 0x09ac +packetLen(0x09ac, -1) + +// Packet: 0x09ad +packetLen(0x09ad, 12) + +// Packet: 0x09ae +packetLen(0x09ae, 19) + +// Packet: 0x09af +packetLen(0x09af, 4) + +// Packet: 0x09b0 +packetLen(0x09b0, 10) + +// Packet: 0x09b1 +packetLen(0x09b1, 4) + +// Packet: 0x09b2 +packetLen(0x09b2, 10) + +// Packet: 0x09b3 +packetLen(0x09b3, 6) + +// Packet: 0x09b4 +packetLen(0x09b4, 6) + +// Packet: 0x09b5 +packetLen(0x09b5, 2) + +// Packet: 0x09b6 +packetLen(0x09b6, 6) + +// Packet: 0x09b7 +packetLen(0x09b7, 4) + +// Packet: 0x09b8 +packetLen(0x09b8, 6) + +// Packet: 0x09b9 +packetLen(0x09b9, 4) + +// Packet: 0x09ba +packetLen(0x09ba, 2) + +// Packet: 0x09bb +packetLen(0x09bb, 6) + +// Packet: 0x09bc +packetLen(0x09bc, 6) + +// Packet: 0x09bd +packetLen(0x09bd, 2) + +// Packet: 0x09be +packetLen(0x09be, 2) + +// Packet: 0x09bf +packetLen(0x09bf, 4) + +// Packet: 0x09c1 +packetLen(0x09c1, 10) + +// Packet: 0x09c2 +packetLen(0x09c2, -1) + +// Packet: 0x09c3 +packetLen(0x09c3, 10) + +// Packet: 0x09c4 +packetLen(0x09c4, 10) + +// Packet: 0x09c5 +packetLen(0x09c5, 1042) + +// Packet: 0x09c6 +packetLen(0x09c6, -1) + +// Packet: 0x09c7 +packetLen(0x09c7, 18) + +// Packet: 0x09c8 +packetLen(0x09c8, -1) + +// Packet: 0x09c9 +packetLen(0x09c9, -1) + +// Packet: 0x09ca +packetLen(0x09ca, -1) + +// Packet: 0x09cb +packetLen(0x09cb, 17) + +// Packet: 0x09cc +packetLen(0x09cc, -1) + +// Packet: 0x09cd +packetLen(0x09cd, 8) + +// Packet: 0x09ce +packetLen(0x09ce, 102) + +// Packet: 0x09cf +packetLen(0x09cf, -1) + +// Packet: 0x09d0 +packetLen(0x09d0, -1) + +// Packet: 0x09d1 +packetLen(0x09d1, 14) + +// Packet: 0x09d2 +packetLen(0x09d2, -1) + +// Packet: 0x09d3 +packetLen(0x09d3, -1) + +// Packet: 0x09d4 +packetLen(0x09d4, 2) + +// Packet: 0x09d5 +packetLen(0x09d5, -1) + +// Packet: 0x09d6 +packetLen(0x09d6, -1) + +// Packet: 0x09d7 +packetLen(0x09d7, -1) + +// Packet: 0x09d8 +packetLen(0x09d8, 2) + +// Packet: 0x09d9 +packetLen(0x09d9, 4) + +// Packet: 0x09da +packetLen(0x09da, -1) + +// Packet: 0x09db +packetLen(0x09db, -1) + +// Packet: 0x09dc +packetLen(0x09dc, -1) + +// Packet: 0x09dd +packetLen(0x09dd, -1) + +// Packet: 0x09de +packetLen(0x09de, -1) + +// Packet: 0x09df +packetLen(0x09df, 7) + +// Packet: 0x09e0 +packetLen(0x09e0, -1) + +// Packet: 0x09e1 +packetLen(0x09e1, 8) + +// Packet: 0x09e2 +packetLen(0x09e2, 8) + +// Packet: 0x09e3 +packetLen(0x09e3, 8) + +// Packet: 0x09e4 +packetLen(0x09e4, 8) + +// Packet: 0x09e5 +packetLen(0x09e5, 18) + +// Packet: 0x09e6 +packetLen(0x09e6, 24) + +// Packet: 0x09e7 +packetLen(0x09e7, 3) + +// Packet: 0x09e8 +packetLen(0x09e8, 11) + +// Packet: 0x09e9 +packetLen(0x09e9, 2) + +// Packet: 0x09ea +packetLen(0x09ea, 11) + +// Packet: 0x09eb +packetLen(0x09eb, -1) + +// Packet: 0x09ec +packetLen(0x09ec, -1) + +// Packet: 0x09ed +packetLen(0x09ed, 3) + +// Packet: 0x09ee +packetLen(0x09ee, 11) + +// Packet: 0x09ef +packetLen(0x09ef, 11) + +// Packet: 0x09f0 +packetLen(0x09f0, -1) + +// Packet: 0x09f1 +packetLen(0x09f1, 11) + +// Packet: 0x09f2 +packetLen(0x09f2, 12) + +// Packet: 0x09f3 +packetLen(0x09f3, 11) + +// Packet: 0x09f4 +packetLen(0x09f4, 12) + +// Packet: 0x09f5 +packetLen(0x09f5, 11) + +// Packet: 0x09f6 +packetLen(0x09f6, 11) + +// Packet: 0x09f7 +packetLen(0x09f7, 77) + +// Packet: 0x09f8 +packetLen(0x09f8, -1) + +// Packet: 0x09f9 +packetLen(0x09f9, 143) + +// Packet: 0x09fa +packetLen(0x09fa, -1) + +// Packet: 0x09fb +packetLen(0x09fb, -1) + +// Packet: 0x09fc +packetLen(0x09fc, 6) + +// Packet: 0x09fd +packetLen(0x09fd, -1) + +// Packet: 0x09fe +packetLen(0x09fe, -1) + +// Packet: 0x09ff +packetLen(0x09ff, -1) + +// Packet: 0x0a00 +packetLen(0x0a00, 269) + +// Packet: 0x0a01 +packetLen(0x0a01, 3) + +// Packet: 0x0a02 +packetLen(0x0a02, 4) + +// Packet: 0x0a03 +packetLen(0x0a03, 2) + +// Packet: 0x0a04 +packetLen(0x0a04, 6) + +// Packet: 0x0a05 +packetLen(0x0a05, 63) + +// Packet: 0x0a06 +packetLen(0x0a06, 6) + +// Packet: 0x0a07 +packetLen(0x0a07, 9) + +// Packet: 0x0a08 +packetLen(0x0a08, 26) + +// Packet: 0x0a09 +packetLen(0x0a09, 55) + +// Packet: 0x0a0a +packetLen(0x0a0a, 57) + +// Packet: 0x0a0b +packetLen(0x0a0b, 57) + +// Packet: 0x0a0c +packetLen(0x0a0c, 66) + +// Packet: 0x0a0d +packetLen(0x0a0d, -1) + +// Packet: 0x0a0e +packetLen(0x0a0e, 14) + +// Packet: 0x0a0f +packetLen(0x0a0f, -1) + +// Packet: 0x0a10 +packetLen(0x0a10, -1) + +// Packet: 0x0a11 +packetLen(0x0a11, -1) + +// Packet: 0x0a12 +packetLen(0x0a12, 27) + +// Packet: 0x0a13 +packetLen(0x0a13, 26) + +// Packet: 0x0a14 +packetLen(0x0a14, 10) + +// Packet: 0x0a15 +packetLen(0x0a15, 12) + +// Packet: 0x0a16 +packetLen(0x0a16, 26) + +// Packet: 0x0a17 +packetLen(0x0a17, 6) + +// Packet: 0x0a18 +packetLen(0x0a18, 14) + +// Packet: 0x0a19 +packetLen(0x0a19, 2) + +// Packet: 0x0a1a +packetLen(0x0a1a, 25) + +// Packet: 0x0a1b +packetLen(0x0a1b, 2) + +// Packet: 0x0a1c +packetLen(0x0a1c, -1) + +// Packet: 0x0a1d +packetLen(0x0a1d, 2) + +// Packet: 0x0a1e +packetLen(0x0a1e, 3) + +// Packet: 0x0a1f +packetLen(0x0a1f, 2) + +// Packet: 0x0a20 +packetLen(0x0a20, 23) + +// Packet: 0x0a21 +packetLen(0x0a21, 3) + +// Packet: 0x0a22 +packetLen(0x0a22, 7) + +// Packet: 0x0a23 +packetLen(0x0a23, -1) + +// Packet: 0x0a24 +packetLen(0x0a24, 66) + +// Packet: 0x0a25 +packetLen(0x0a25, 6) + +// Packet: 0x0a26 +packetLen(0x0a26, 7) + +// Packet: 0x0a27 +packetLen(0x0a27, 8) + +// Packet: 0x0a28 +packetLen(0x0a28, 3) + +// Packet: 0x0a29 +packetLen(0x0a29, 6) + +// Packet: 0x0a2a +packetLen(0x0a2a, 6) + +// Packet: 0x0a2b +packetLen(0x0a2b, 14) + +// Packet: 0x0a2c +packetLen(0x0a2c, 12) + +// Packet: 0x0a2d +packetLen(0x0a2d, -1) + +// Packet: 0x0a2e +packetLen(0x0a2e, 6) + +// Packet: 0x0a2f +packetLen(0x0a2f, 7) + +// Packet: 0x0a30 +packetLen(0x0a30, 106) + +// Packet: 0x0a31 +packetLen(0x0a31, -1) + +// Packet: 0x0a32 +packetLen(0x0a32, 2) + +// Packet: 0x0a33 +packetLen(0x0a33, 7) + +// Packet: 0x0a34 +packetLen(0x0a34, 6) + +// Packet: 0x0a35 +packetLen(0x0a35, 4) + +// Packet: 0x0a36 +packetLen(0x0a36, 7) + +// Packet: 0x0a37 +packetLen(0x0a37, 69) + +// Packet: 0x0a38 +packetLen(0x0a38, 3) + +// Packet: 0x0a39 +packetLen(0x0a39, 36) + +// Packet: 0x0a3a +packetLen(0x0a3a, 12) + +// Packet: 0x0a3b +packetLen(0x0a3b, -1) + +// Packet: 0x0a3c +packetLen(0x0a3c, -1) + +// Packet: 0x0a3d +packetLen(0x0a3d, 20) + +// Packet: 0x0a3e +packetLen(0x0a3e, -1) + +// Packet: 0x0a3f +packetLen(0x0a3f, 11) + +// Packet: 0x0a40 +packetLen(0x0a40, 11) + +// Packet: 0x0a41 +packetLen(0x0a41, 18) + +// Packet: 0x0a42 +packetLen(0x0a42, 43) + +// Packet: 0x0a43 +packetLen(0x0a43, 85) + +// Packet: 0x0a44 +packetLen(0x0a44, -1) + +// Packet: 0x0a46 +packetLen(0x0a46, 14) + +// Packet: 0x0a47 +packetLen(0x0a47, 3) + +// Packet: 0x0a48 +packetLen(0x0a48, 2) + +// Packet: 0x0a49 +packetLen(0x0a49, 22) + +// Packet: 0x0a4a +packetLen(0x0a4a, 6) + +// Packet: 0x0a4b +packetLen(0x0a4b, 22) + +// Packet: 0x0a4c +packetLen(0x0a4c, 28) + +// Packet: 0x0a4d +packetLen(0x0a4d, -1) + +// Packet: 0x0a4e +packetLen(0x0a4e, 6) + +// Packet: 0x0a4f +packetLen(0x0a4f, -1) + +// Packet: 0x0a50 +packetLen(0x0a50, 4) + +// Packet: 0x0a51 +packetLen(0x0a51, 34) + +// Packet: 0x0a52 +packetLen(0x0a52, 20) + +// Packet: 0x0a53 +packetLen(0x0a53, 10) + +// Packet: 0x0a54 +packetLen(0x0a54, -1) + +// Packet: 0x0a55 +packetLen(0x0a55, 2) + +// Packet: 0x0a56 +packetLen(0x0a56, 6) + +// Packet: 0x0a57 +packetLen(0x0a57, 6) + +// Packet: 0x0a58 +packetLen(0x0a58, 8) + +// Packet: 0x0a59 +packetLen(0x0a59, -1) + +// Packet: 0x0a5a +packetLen(0x0a5a, 2) + +// Packet: 0x0a5b +packetLen(0x0a5b, 7) + +// Packet: 0x0a5c +packetLen(0x0a5c, 18) + +// Packet: 0x0a5d +packetLen(0x0a5d, 6) + +// Packet: 0x0a68 +packetLen(0x0a68, 3) + +// Packet: 0x0a69 +packetLen(0x0a69, 6) + +// Packet: 0x0a6a +packetLen(0x0a6a, 12) + +// Packet: 0x0a6b +packetLen(0x0a6b, -1) + +// Packet: 0x0a6c +packetLen(0x0a6c, 7) + +// Packet: 0x0a6d +packetLen(0x0a6d, -1) + +// Packet: 0x0a6e +packetLen(0x0a6e, -1) + +// Packet: 0x0a6f +packetLen(0x0a6f, -1) + +// Packet: 0x0a70 +packetLen(0x0a70, 2) + +// Packet: 0x0a71 +packetLen(0x0a71, -1) + +// Packet: 0x0a72 +packetLen(0x0a72, 61) + +// Packet: 0x0a73 +packetLen(0x0a73, 2) + +// Packet: 0x0a74 +packetLen(0x0a74, 8) + +// Packet: 0x0a76 +packetLen(0x0a76, 80) + +// Packet: 0x0a77 +packetLen(0x0a77, 15) + +// Packet: 0x0a78 +packetLen(0x0a78, 15) + +// Packet: 0x0a79 +packetLen(0x0a79, -1) + +// Packet: 0x0a7b +packetLen(0x0a7b, -1) + +// Packet: 0x0a7c +packetLen(0x0a7c, -1) + +// Packet: 0x0a7d +packetLen(0x0a7d, -1) + +// Packet: 0x0a7e +packetLen(0x0a7e, -1) + +// Packet: 0x0a7f +packetLen(0x0a7f, -1) + +// Packet: 0x0a80 +packetLen(0x0a80, 6) + +// Packet: 0x0a81 +packetLen(0x0a81, 4) + +// Packet: 0x0a82 +packetLen(0x0a82, 46) + +// Packet: 0x0a83 +packetLen(0x0a83, 46) + +// Packet: 0x0a84 +packetLen(0x0a84, 94) + +// Packet: 0x0a85 +packetLen(0x0a85, 82) + +// Packet: 0x0a86 +packetLen(0x0a86, -1) + +// Packet: 0x0a87 +packetLen(0x0a87, -1) + +// Packet: 0x0a88 +packetLen(0x0a88, 2) + +// Packet: 0x0a89 +packetLen(0x0a89, 61) + +// Packet: 0x0a8a +packetLen(0x0a8a, 6) + +// Packet: 0x0a8b +packetLen(0x0a8b, 2) + +// Packet: 0x0a8c +packetLen(0x0a8c, 2) + +// Packet: 0x0a8d +packetLen(0x0a8d, -1) + +// Packet: 0x0a8e +packetLen(0x0a8e, 2) + +// Packet: 0x0a8f +packetLen(0x0a8f, 2) + +// Packet: 0x0a90 +packetLen(0x0a90, 3) + +// Packet: 0x0a91 +packetLen(0x0a91, -1) + +// Packet: 0x0a92 +packetLen(0x0a92, -1) + +// Packet: 0x0a93 +packetLen(0x0a93, 3) + +// Packet: 0x0a94 +packetLen(0x0a94, 2) + +// Packet: 0x0a95 +packetLen(0x0a95, 4) + +// Packet: 0x0a96 +packetLen(0x0a96, 61) + +// Packet: 0x0a97 +packetLen(0x0a97, 8) + +// Packet: 0x0a98 +packetLen(0x0a98, 10) + +// Packet: 0x0a99 +packetLen(0x0a99, 4) + +// Packet: 0x0a9a +packetLen(0x0a9a, 10) + +// Packet: 0x0a9b +packetLen(0x0a9b, -1) + +// Packet: 0x0a9c +packetLen(0x0a9c, 2) + +// Packet: 0x0a9d +packetLen(0x0a9d, 4) + +// Packet: 0x0a9e +packetLen(0x0a9e, 2) + +// Packet: 0x0a9f +packetLen(0x0a9f, 2) + +// Packet: 0x0aa0 +packetLen(0x0aa0, 2) + +// Packet: 0x0aa1 +packetLen(0x0aa1, 4) + +// Packet: 0x0aa2 +packetLen(0x0aa2, -1) + +// Packet: 0x0aa3 +packetLen(0x0aa3, 9) + +// Packet: 0x0aa4 +packetLen(0x0aa4, 2) + +// Packet: 0x0aa5 +packetLen(0x0aa5, -1) + +// Packet: 0x0aa6 +packetLen(0x0aa6, 36) + +// Packet: 0x0aa7 +packetLen(0x0aa7, 6) + +// Packet: 0x0aa8 +packetLen(0x0aa8, 5) + +// Packet: 0x0aa9 +packetLen(0x0aa9, -1) + +// Packet: 0x0aaa +packetLen(0x0aaa, -1) + +// Packet: 0x0aab +packetLen(0x0aab, -1) + +// Packet: 0x0aac +packetLen(0x0aac, 69) + +// Packet: 0x0aad +packetLen(0x0aad, 51) + +// Packet: 0x0aae +packetLen(0x0aae, 2) + +// Packet: 0x0aaf +packetLen(0x0aaf, 6) + +// Packet: 0x0ab0 +packetLen(0x0ab0, 6) + +// Packet: 0x0ab1 +packetLen(0x0ab1, 14) + +// Packet: 0x0ab2 +packetLen(0x0ab2, 7) + +// Packet: 0x0ab3 +packetLen(0x0ab3, 19) + +// Packet: 0x0ab4 +packetLen(0x0ab4, 6) + +// Packet: 0x0ab5 +packetLen(0x0ab5, 2) + +// Packet: 0x0ab6 +packetLen(0x0ab6, 8) + +// Packet: 0x0ab7 +packetLen(0x0ab7, 4) + +// Packet: 0x0ab8 +packetLen(0x0ab8, 2) + +// Packet: 0x0ab9 +packetLen(0x0ab9, 47) + +// Packet: 0x0aba +packetLen(0x0aba, 2) + +// Packet: 0x0abb +packetLen(0x0abb, 2) + +// Packet: 0x0abc +packetLen(0x0abc, -1) + +// Packet: 0x0abd +packetLen(0x0abd, 10) + +// Packet: 0x0abe +packetLen(0x0abe, -1) + +// Packet: 0x0abf +packetLen(0x0abf, -1) + +// Packet: 0x0ac0 +packetLen(0x0ac0, 26) + +// Packet: 0x0ac1 +packetLen(0x0ac1, 26) + +// Packet: 0x0ac2 +packetLen(0x0ac2, -1) + +// Packet: 0x0ac3 +packetLen(0x0ac3, 2) + +// Packet: 0x0ac4 +packetLen(0x0ac4, -1) + +// Packet: 0x0ac5 +packetLen(0x0ac5, 156) + +// Packet: 0x0ac6 +packetLen(0x0ac6, 156) + +// Packet: 0x0ac7 +packetLen(0x0ac7, 156) + +// Packet: 0x0ac8 +packetLen(0x0ac8, 2) + +// Packet: 0x0ac9 +packetLen(0x0ac9, -1) + +// Packet: 0x0aca +packetLen(0x0aca, 3) + +// Packet: 0x0acb +packetLen(0x0acb, 12) + +// Packet: 0x0acc +packetLen(0x0acc, 18) + +// Packet: 0x0acd +packetLen(0x0acd, 23) + +// Packet: 0x0ace +packetLen(0x0ace, 4) + +// Packet: 0x0acf +packetLen(0x0acf, 68) + +// Packet: 0x0ad0 +packetLen(0x0ad0, 11) + +// Packet: 0x0ad1 +packetLen(0x0ad1, -1) + +// Packet: 0x0ad2 +packetLen(0x0ad2, 30) + +// Packet: 0x0ad3 +packetLen(0x0ad3, -1) + +// Packet: 0x0ad4 +packetLen(0x0ad4, -1) + +// Packet: 0x0ad5 +packetLen(0x0ad5, 2) + +// Packet: 0x0ad6 +packetLen(0x0ad6, 2) + +// Packet: 0x0ad7 +packetLen(0x0ad7, 8) + +// Packet: 0x0ad8 +packetLen(0x0ad8, 8) + +// Packet: 0x0ad9 +packetLen(0x0ad9, -1) + +// Packet: 0x0ada +packetLen(0x0ada, 32) + +// Packet: 0x0adb +packetLen(0x0adb, -1) + +// Packet: 0x0adc +packetLen(0x0adc, 6) + +// Packet: 0x0add +packetLen(0x0add, 24) + +// Packet: 0x0ade +packetLen(0x0ade, 6) + +// Packet: 0x0adf +packetLen(0x0adf, 58) + +// Packet: 0x0ae0 +packetLen(0x0ae0, 30) + +// Packet: 0x0ae1 +packetLen(0x0ae1, 28) + +// Packet: 0x0ae2 +packetLen(0x0ae2, 7) + +// Packet: 0x0ae3 +packetLen(0x0ae3, -1) + +// Packet: 0x0ae4 +packetLen(0x0ae4, 89) + +// Packet: 0x0ae5 +packetLen(0x0ae5, -1) + +// Packet: 0x0ae6 +packetLen(0x0ae6, 10) + +// Packet: 0x0ae7 +packetLen(0x0ae7, 38) + +// Packet: 0x0ae8 +packetLen(0x0ae8, 2) + +// Packet: 0x0ae9 +packetLen(0x0ae9, 13) + +// Packet: 0x0aec +packetLen(0x0aec, 2) + +// Packet: 0x0aed +packetLen(0x0aed, 2) + +// Packet: 0x0aee +packetLen(0x0aee, 2) + +// Packet: 0x0aef +packetLen(0x0aef, 2) + +// Packet: 0x0af0 +packetLen(0x0af0, 10) + +// Packet: 0x0af1 +packetLen(0x0af1, 102) + +// Packet: 0x0af2 +packetLen(0x0af2, 40) + +// Packet: 0x0af3 +packetLen(0x0af3, -1) + +// Packet: 0x0af4 +packetLen(0x0af4, 11) + +// Packet: 0x0af5 +packetLen(0x0af5, 3) + +// Packet: 0x0af6 +packetLen(0x0af6, 88) + +// Packet: 0x0af7 +packetLen(0x0af7, 32) + +// Packet: 0x0af8 +packetLen(0x0af8, 11) + +// Packet: 0x0af9 +packetLen(0x0af9, 6) + +// Packet: 0x0afa +packetLen(0x0afa, 58) + +// Packet: 0x0afb +packetLen(0x0afb, -1) + +// Packet: 0x0afc +packetLen(0x0afc, 16) + +// Packet: 0x0afd +packetLen(0x0afd, -1) + +// Packet: 0x0afe +packetLen(0x0afe, -1) + +// Packet: 0x0aff +packetLen(0x0aff, -1) + +// Packet: 0x0b00 +packetLen(0x0b00, 8) + +// Packet: 0x0b01 +packetLen(0x0b01, 56) + +// Packet: 0x0b02 +packetLen(0x0b02, 26) + +// Packet: 0x0b03 +packetLen(0x0b03, -1) + +// Packet: 0x0b04 +#if PACKETVER >= 20210721 +packetLen(0x0b04, 190) +#elif PACKETVER >= 20210203 +packetLen(0x0b04, 90) +#endif + +// Packet: 0x0b05 +packetLen(0x0b05, 63) + +// Packet: 0x0b07 +packetLen(0x0b07, -1) + +// Packet: 0x0b08 +packetLen(0x0b08, -1) + +// Packet: 0x0b09 +packetLen(0x0b09, -1) + +// Packet: 0x0b0a +packetLen(0x0b0a, -1) + +// Packet: 0x0b0b +packetLen(0x0b0b, 4) + +// Packet: 0x0b0c +packetLen(0x0b0c, 155) + +// Packet: 0x0b0d +packetLen(0x0b0d, 10) + +// Packet: 0x0b0e +packetLen(0x0b0e, -1) + +// Packet: 0x0b0f +packetLen(0x0b0f, -1) + +// Packet: 0x0b10 +packetLen(0x0b10, 10) + +// Packet: 0x0b11 +packetLen(0x0b11, 4) + +// Packet: 0x0b12 +packetLen(0x0b12, 2) + +// Packet: 0x0b13 +packetLen(0x0b13, 48) + +// Packet: 0x0b14 +packetLen(0x0b14, 2) + +// Packet: 0x0b15 +packetLen(0x0b15, 7) + +// Packet: 0x0b16 +packetLen(0x0b16, 2) + +// Packet: 0x0b17 +packetLen(0x0b17, 3) + +// Packet: 0x0b18 +packetLen(0x0b18, 4) + +// Packet: 0x0b19 +packetLen(0x0b19, 2) + +// Packet: 0x0b1a +packetLen(0x0b1a, 29) + +// Packet: 0x0b1b +packetLen(0x0b1b, 2) + +// Packet: 0x0b1c +packetLen(0x0b1c, 2) + +// Packet: 0x0b1d +packetLen(0x0b1d, 2) + +// Packet: 0x0b1e +packetLen(0x0b1e, 14) + +// Packet: 0x0b1f +packetLen(0x0b1f, 14) + +// Packet: 0x0b20 +packetLen(0x0b20, 271) + +// Packet: 0x0b21 +packetLen(0x0b21, 13) + +// Packet: 0x0b22 +packetLen(0x0b22, 5) + +// Packet: 0x0b23 +packetLen(0x0b23, 6) + +// Packet: 0x0b24 +packetLen(0x0b24, 6) + +// Packet: 0x0b25 +packetLen(0x0b25, 6) + +// Packet: 0x0b27 +packetLen(0x0b27, -1) + +// Packet: 0x0b28 +packetLen(0x0b28, 3) + +// Packet: 0x0b2b +packetLen(0x0b2b, 11) + +// Packet: 0x0b2c +packetLen(0x0b2c, 3) + +// Packet: 0x0b2d +packetLen(0x0b2d, 11) + +// Packet: 0x0b2e +packetLen(0x0b2e, 4) + +// Packet: 0x0b2f +packetLen(0x0b2f, 73) + +// Packet: 0x0b30 +packetLen(0x0b30, -1) + +// Packet: 0x0b31 +packetLen(0x0b31, 17) + +// Packet: 0x0b32 +packetLen(0x0b32, -1) + +// Packet: 0x0b33 +packetLen(0x0b33, 17) + +// Packet: 0x0b34 +packetLen(0x0b34, 50) + +// Packet: 0x0b35 +packetLen(0x0b35, 3) + +// Packet: 0x0b36 +packetLen(0x0b36, -1) + +// Packet: 0x0b37 +packetLen(0x0b37, -1) + +// Packet: 0x0b39 +packetLen(0x0b39, -1) + +// Packet: 0x0b3c +packetLen(0x0b3c, 4) + +// Packet: 0x0b3d +packetLen(0x0b3d, -1) + +// Packet: 0x0b3e +packetLen(0x0b3e, -1) + +// Packet: 0x0b3f +packetLen(0x0b3f, 64) + +// Packet: 0x0b40 +packetLen(0x0b40, -1) + +// Packet: 0x0b41 +packetLen(0x0b41, 70) + +// Packet: 0x0b42 +packetLen(0x0b42, 62) + +// Packet: 0x0b43 +packetLen(0x0b43, 48) + +// Packet: 0x0b44 +packetLen(0x0b44, 58) + +// Packet: 0x0b45 +packetLen(0x0b45, 58) + +// Packet: 0x0b46 +packetLen(0x0b46, 10) + +// Packet: 0x0b47 +packetLen(0x0b47, 14) + +// Packet: 0x0b48 +packetLen(0x0b48, 18) + +// Packet: 0x0b49 +packetLen(0x0b49, 4) + +// Packet: 0x0b4a +packetLen(0x0b4a, 6) + +// Packet: 0x0b4b +packetLen(0x0b4b, 4) + +// Packet: 0x0b4c +packetLen(0x0b4c, 2) + +// Packet: 0x0b4d +packetLen(0x0b4d, -1) + +// Packet: 0x0b4e +packetLen(0x0b4e, -1) + +// Packet: 0x0b4f +packetLen(0x0b4f, 2) + +// Packet: 0x0b50 +packetLen(0x0b50, 2) + +// Packet: 0x0b51 +packetLen(0x0b51, 2) + +// Packet: 0x0b52 +packetLen(0x0b52, 2) + +// Packet: 0x0b53 +packetLen(0x0b53, 52) + +// Packet: 0x0b54 +packetLen(0x0b54, 8) + +// Packet: 0x0b55 +packetLen(0x0b55, -1) + +// Packet: 0x0b56 +packetLen(0x0b56, -1) + +// Packet: 0x0b57 +packetLen(0x0b57, -1) + +// Packet: 0x0b58 +packetLen(0x0b58, 2) + +// Packet: 0x0b59 +packetLen(0x0b59, 4) + +// Packet: 0x0b5a +packetLen(0x0b5a, -1) + +// Packet: 0x0b5b +packetLen(0x0b5b, 14) + +// Packet: 0x0b5c +packetLen(0x0b5c, 2) + +// Packet: 0x0b5d +packetLen(0x0b5d, 10) + +// Packet: 0x0b5e +packetLen(0x0b5e, 33) + +// Packet: 0x0b5f +packetLen(0x0b5f, -1) + +// Packet: 0x0b60 +packetLen(0x0b60, -1) + +// Packet: 0x0b61 +packetLen(0x0b61, -1) + +// Packet: 0x0b62 +packetLen(0x0b62, -1) + +// Packet: 0x0b63 +packetLen(0x0b63, -1) + +// Packet: 0x0b64 +packetLen(0x0b64, -1) + +// Packet: 0x0b65 +packetLen(0x0b65, -1) + +// Packet: 0x0b66 +packetLen(0x0b66, 26) + +// Packet: 0x0b67 +packetLen(0x0b67, 33) + +// Packet: 0x0b68 +packetLen(0x0b68, 12) + +// Packet: 0x0b69 +packetLen(0x0b69, 18) + +// Packet: 0x0b6a +packetLen(0x0b6a, -1) + +// Packet: 0x0b6b +packetLen(0x0b6b, 14) + +// Packet: 0x0b6c +packetLen(0x0b6c, 12) + +// Packet: 0x0b6d +packetLen(0x0b6d, 6) + +// Packet: 0x0b6e +packetLen(0x0b6e, 14) + +// Packet: 0x0b6f +packetLen(0x0b6f, 177) + +// Packet: 0x0b70 +packetLen(0x0b70, -1) + +// Packet: 0x0b71 +packetLen(0x0b71, 177) + +// Packet: 0x0b72 +packetLen(0x0b72, -1) + +// Packet: 0x0b73 +packetLen(0x0b73, 8) + +// Packet: 0x0b74 +packetLen(0x0b74, 1026) + +// Packet: 0x0b75 +packetLen(0x0b75, 1026) + +// Packet: 0x0b76 +packetLen(0x0b76, 77) + +// Packet: 0x0b77 +packetLen(0x0b77, -1) + +// Packet: 0x0b78 +packetLen(0x0b78, -1) + +// Packet: 0x0b79 +packetLen(0x0b79, -1) + +// Packet: 0x0b7a +packetLen(0x0b7a, -1) + +// Packet: 0x0b7b +packetLen(0x0b7b, 118) + +// Packet: 0x0b7c +packetLen(0x0b7c, -1) + +// Packet: 0x0b7d +packetLen(0x0b7d, -1) + +// Packet: 0x0b7e +packetLen(0x0b7e, 60) + +// Packet: 0x0b7f +packetLen(0x0b7f, 10) + +// Packet: 0x0b80 +packetLen(0x0b80, 10) + +// Packet: 0x0b8c +packetLen(0x0b8c, -1) + +// Packet: 0x0b8d +packetLen(0x0b8d, -1) + +// Packet: 0x0b8e +packetLen(0x0b8e, 18) + +// Packet: 0x0b8f +packetLen(0x0b8f, 6) + +// Packet: 0x0b90 +packetLen(0x0b90, 2) + +// Packet: 0x0b91 +packetLen(0x0b91, 8) + +// Packet: 0x0b92 +packetLen(0x0b92, 5) + +// Packet: 0x0b93 +packetLen(0x0b93, 12) + +// Packet: 0x0b94 +packetLen(0x0b94, 14) + +// Packet: 0x0b95 +packetLen(0x0b95, -1) + +// Packet: 0x0b96 +packetLen(0x0b96, 26) + +// Packet: 0x0b97 +packetLen(0x0b97, 27) + +// Packet: 0x0b98 +packetLen(0x0b98, 6) + +// Packet: 0x0b99 +packetLen(0x0b99, 10) + +// Packet: 0x0b9a +packetLen(0x0b9a, 11) + +// Packet: 0x0b9b +packetLen(0x0b9b, 12) + +// Packet: 0x0b9c +packetLen(0x0b9c, 16) + +// Packet: 0x0b9d +packetLen(0x0b9d, 14) + +// Packet: 0x0b9e +packetLen(0x0b9e, 12) + +// Packet: 0x0b9f +packetLen(0x0b9f, 10) + +// Packet: 0x0ba0 +packetLen(0x0ba0, 2) + +// Packet: 0x0ba1 +packetLen(0x0ba1, 3) + +// Packet: 0x0ba2 +packetLen(0x0ba2, 10) + +// Packet: 0x0ba3 +packetLen(0x0ba3, 10) + +// Packet: 0x0ba4 +packetLen(0x0ba4, 85) + +// Packet: 0x0ba5 +packetLen(0x0ba5, 12) + +// Packet: 0x0ba6 +#if PACKETVER >= 20210317 +packetLen(0x0ba6, -1) +#endif + +// Packet: 0x0ba7 +#if PACKETVER >= 20210331 +packetLen(0x0ba7, -1) +#elif PACKETVER >= 20210317 +packetLen(0x0ba7, 6) +#endif + +// Packet: 0x0ba8 +#if PACKETVER >= 20210331 +packetLen(0x0ba8, 7) +#elif PACKETVER >= 20210317 +packetLen(0x0ba8, 6) +#endif + +// Packet: 0x0ba9 +#if PACKETVER >= 20210331 +packetLen(0x0ba9, -1) +#elif PACKETVER >= 20210317 +packetLen(0x0ba9, 6) +#endif + +// Packet: 0x0baa +#if PACKETVER >= 20210407 +packetLen(0x0baa, 22) +#elif PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0baa, -1) +#endif + +// Packet: 0x0bab +#if PACKETVER >= 20210407 +packetLen(0x0bab, 22) +#elif PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0bab, 7) +#endif + +// Packet: 0x0bac +#if PACKETVER >= 20210602 +packetLen(0x0bac, 22) +#elif PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0bac, -1) +#endif + +// Packet: 0x0bad +#if PACKETVER >= 20210818 +packetLen(0x0bad, 2) +#elif PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0bad, 6) +#endif + +// Packet: 0x0bae +#if PACKETVER >= 20210818 +packetLen(0x0bae, 3) +#elif PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0bae, 6) +#endif + +// Packet: 0x0baf +#if PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0baf, 6) +#endif + + +#endif /* COMMON_PACKETS2021_LEN_MAIN_H */ diff --git a/src/common/packets/packets2021_len_re.h b/src/common/packets/packets2021_len_re.h new file mode 100644 index 00000000000..467a83c7e9d --- /dev/null +++ b/src/common/packets/packets2021_len_re.h @@ -0,0 +1,4855 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2018-2021 Hercules Dev Team + * Copyright (C) 2018-2021 Andrei Karas (4144) + * + * Hercules is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef COMMON_PACKETS2021_LEN_RE_H +#define COMMON_PACKETS2021_LEN_RE_H + +/* This file is autogenerated, please do not commit manual changes */ + +// Packet: 0x0064 +packetLen(0x0064, 55) + +// Packet: 0x0065 +packetLen(0x0065, 17) + +// Packet: 0x0066 +packetLen(0x0066, 3) + +// Packet: 0x0067 +packetLen(0x0067, 37) + +// Packet: 0x0068 +packetLen(0x0068, 46) + +// Packet: 0x0069 +packetLen(0x0069, -1) + +// Packet: 0x006a +packetLen(0x006a, 23) + +// Packet: 0x006b +packetLen(0x006b, -1) + +// Packet: 0x006c +packetLen(0x006c, 3) + +// Packet: 0x006d +packetLen(0x006d, 157) + +// Packet: 0x006e +packetLen(0x006e, 3) + +// Packet: 0x006f +packetLen(0x006f, 2) + +// Packet: 0x0070 +packetLen(0x0070, 3) + +// Packet: 0x0071 +packetLen(0x0071, 28) + +// Packet: 0x0072 +packetLen(0x0072, 22) + +// Packet: 0x0073 +packetLen(0x0073, 11) + +// Packet: 0x0074 +packetLen(0x0074, 3) + +// Packet: 0x0075 +packetLen(0x0075, -1) + +// Packet: 0x0076 +packetLen(0x0076, 9) + +// Packet: 0x0077 +packetLen(0x0077, 5) + +// Packet: 0x0078 +packetLen(0x0078, 55) + +// Packet: 0x0079 +packetLen(0x0079, 53) + +// Packet: 0x007a +packetLen(0x007a, 58) + +// Packet: 0x007b +packetLen(0x007b, 60) + +// Packet: 0x007c +packetLen(0x007c, 44) + +// Packet: 0x007d +packetLen(0x007d, 2) + +// Packet: 0x007e +packetLen(0x007e, 46) + +// Packet: 0x007f +packetLen(0x007f, 6) + +// Packet: 0x0080 +packetLen(0x0080, 7) + +// Packet: 0x0081 +packetLen(0x0081, 3) + +// Packet: 0x0082 +packetLen(0x0082, 2) + +// Packet: 0x0083 +packetLen(0x0083, 2) + +// Packet: 0x0084 +packetLen(0x0084, 2) + +// Packet: 0x0085 +packetLen(0x0085, 10) + +// Packet: 0x0086 +packetLen(0x0086, 16) + +// Packet: 0x0087 +packetLen(0x0087, 12) + +// Packet: 0x0088 +packetLen(0x0088, 10) + +// Packet: 0x0089 +packetLen(0x0089, 11) + +// Packet: 0x008a +packetLen(0x008a, 29) + +// Packet: 0x008b +packetLen(0x008b, 23) + +// Packet: 0x008c +packetLen(0x008c, 14) + +// Packet: 0x008d +packetLen(0x008d, -1) + +// Packet: 0x008e +packetLen(0x008e, -1) + +// Packet: 0x0090 +packetLen(0x0090, 7) + +// Packet: 0x0091 +packetLen(0x0091, 22) + +// Packet: 0x0092 +packetLen(0x0092, 28) + +// Packet: 0x0093 +packetLen(0x0093, 2) + +// Packet: 0x0094 +packetLen(0x0094, 19) + +// Packet: 0x0095 +packetLen(0x0095, 30) + +// Packet: 0x0096 +packetLen(0x0096, -1) + +// Packet: 0x0097 +packetLen(0x0097, -1) + +// Packet: 0x0098 +packetLen(0x0098, 3) + +// Packet: 0x0099 +packetLen(0x0099, -1) + +// Packet: 0x009a +packetLen(0x009a, -1) + +// Packet: 0x009b +packetLen(0x009b, 34) + +// Packet: 0x009c +packetLen(0x009c, 9) + +// Packet: 0x009d +packetLen(0x009d, 19) + +// Packet: 0x009e +packetLen(0x009e, 19) + +// Packet: 0x009f +packetLen(0x009f, 20) + +// Packet: 0x00a0 +packetLen(0x00a0, 33) + +// Packet: 0x00a1 +packetLen(0x00a1, 6) + +// Packet: 0x00a2 +packetLen(0x00a2, 14) + +// Packet: 0x00a3 +packetLen(0x00a3, -1) + +// Packet: 0x00a4 +packetLen(0x00a4, -1) + +// Packet: 0x00a5 +packetLen(0x00a5, -1) + +// Packet: 0x00a6 +packetLen(0x00a6, -1) + +// Packet: 0x00a7 +packetLen(0x00a7, 9) + +// Packet: 0x00a8 +packetLen(0x00a8, 7) + +// Packet: 0x00a9 +packetLen(0x00a9, 6) + +// Packet: 0x00aa +packetLen(0x00aa, 9) + +// Packet: 0x00ab +packetLen(0x00ab, 4) + +// Packet: 0x00ac +packetLen(0x00ac, 7) + +// Packet: 0x00ae +packetLen(0x00ae, -1) + +// Packet: 0x00af +packetLen(0x00af, 6) + +// Packet: 0x00b0 +packetLen(0x00b0, 8) + +// Packet: 0x00b1 +packetLen(0x00b1, 8) + +// Packet: 0x00b2 +packetLen(0x00b2, 3) + +// Packet: 0x00b3 +packetLen(0x00b3, 3) + +// Packet: 0x00b4 +packetLen(0x00b4, -1) + +// Packet: 0x00b5 +packetLen(0x00b5, 6) + +// Packet: 0x00b6 +packetLen(0x00b6, 6) + +// Packet: 0x00b7 +packetLen(0x00b7, -1) + +// Packet: 0x00b8 +packetLen(0x00b8, 7) + +// Packet: 0x00b9 +packetLen(0x00b9, 6) + +// Packet: 0x00ba +packetLen(0x00ba, 2) + +// Packet: 0x00bb +packetLen(0x00bb, 5) + +// Packet: 0x00bc +packetLen(0x00bc, 6) + +// Packet: 0x00bd +packetLen(0x00bd, 44) + +// Packet: 0x00be +packetLen(0x00be, 5) + +// Packet: 0x00bf +packetLen(0x00bf, 3) + +// Packet: 0x00c0 +packetLen(0x00c0, 7) + +// Packet: 0x00c1 +packetLen(0x00c1, 2) + +// Packet: 0x00c2 +packetLen(0x00c2, 6) + +// Packet: 0x00c3 +packetLen(0x00c3, 8) + +// Packet: 0x00c4 +packetLen(0x00c4, 6) + +// Packet: 0x00c5 +packetLen(0x00c5, 7) + +// Packet: 0x00c6 +packetLen(0x00c6, -1) + +// Packet: 0x00c7 +packetLen(0x00c7, -1) + +// Packet: 0x00c8 +packetLen(0x00c8, -1) + +// Packet: 0x00c9 +packetLen(0x00c9, -1) + +// Packet: 0x00ca +packetLen(0x00ca, 3) + +// Packet: 0x00cb +packetLen(0x00cb, 3) + +// Packet: 0x00cc +packetLen(0x00cc, 6) + +// Packet: 0x00cd +packetLen(0x00cd, 3) + +// Packet: 0x00ce +packetLen(0x00ce, 2) + +// Packet: 0x00cf +packetLen(0x00cf, 27) + +// Packet: 0x00d0 +packetLen(0x00d0, 3) + +// Packet: 0x00d1 +packetLen(0x00d1, 4) + +// Packet: 0x00d2 +packetLen(0x00d2, 4) + +// Packet: 0x00d3 +packetLen(0x00d3, 2) + +// Packet: 0x00d4 +packetLen(0x00d4, -1) + +// Packet: 0x00d5 +packetLen(0x00d5, -1) + +// Packet: 0x00d6 +packetLen(0x00d6, 3) + +// Packet: 0x00d7 +packetLen(0x00d7, -1) + +// Packet: 0x00d8 +packetLen(0x00d8, 6) + +// Packet: 0x00d9 +packetLen(0x00d9, 14) + +// Packet: 0x00da +packetLen(0x00da, 3) + +// Packet: 0x00db +packetLen(0x00db, -1) + +// Packet: 0x00dc +packetLen(0x00dc, 28) + +// Packet: 0x00dd +packetLen(0x00dd, 29) + +// Packet: 0x00de +packetLen(0x00de, -1) + +// Packet: 0x00df +packetLen(0x00df, -1) + +// Packet: 0x00e0 +packetLen(0x00e0, 30) + +// Packet: 0x00e1 +packetLen(0x00e1, 30) + +// Packet: 0x00e2 +packetLen(0x00e2, 26) + +// Packet: 0x00e3 +packetLen(0x00e3, 2) + +// Packet: 0x00e4 +packetLen(0x00e4, 6) + +// Packet: 0x00e5 +packetLen(0x00e5, 26) + +// Packet: 0x00e6 +packetLen(0x00e6, 3) + +// Packet: 0x00e7 +packetLen(0x00e7, 3) + +// Packet: 0x00e8 +packetLen(0x00e8, 8) + +// Packet: 0x00e9 +packetLen(0x00e9, 29) + +// Packet: 0x00ea +packetLen(0x00ea, 5) + +// Packet: 0x00eb +packetLen(0x00eb, 2) + +// Packet: 0x00ec +packetLen(0x00ec, 3) + +// Packet: 0x00ed +packetLen(0x00ed, 2) + +// Packet: 0x00ee +packetLen(0x00ee, 2) + +// Packet: 0x00ef +packetLen(0x00ef, 2) + +// Packet: 0x00f0 +packetLen(0x00f0, 3) + +// Packet: 0x00f1 +packetLen(0x00f1, 2) + +// Packet: 0x00f2 +packetLen(0x00f2, 6) + +// Packet: 0x00f3 +packetLen(0x00f3, -1) + +// Packet: 0x00f4 +packetLen(0x00f4, 31) + +// Packet: 0x00f5 +packetLen(0x00f5, 11) + +// Packet: 0x00f6 +packetLen(0x00f6, 8) + +// Packet: 0x00f7 +packetLen(0x00f7, 17) + +// Packet: 0x00f8 +packetLen(0x00f8, 2) + +// Packet: 0x00f9 +packetLen(0x00f9, 26) + +// Packet: 0x00fa +packetLen(0x00fa, 3) + +// Packet: 0x00fb +packetLen(0x00fb, -1) + +// Packet: 0x00fc +packetLen(0x00fc, 6) + +// Packet: 0x00fd +packetLen(0x00fd, 27) + +// Packet: 0x00fe +packetLen(0x00fe, 30) + +// Packet: 0x00ff +packetLen(0x00ff, 10) + +// Packet: 0x0100 +packetLen(0x0100, 2) + +// Packet: 0x0101 +packetLen(0x0101, 6) + +// Packet: 0x0102 +packetLen(0x0102, 6) + +// Packet: 0x0103 +packetLen(0x0103, 30) + +// Packet: 0x0104 +packetLen(0x0104, 79) + +// Packet: 0x0105 +packetLen(0x0105, 31) + +// Packet: 0x0106 +packetLen(0x0106, 10) + +// Packet: 0x0107 +packetLen(0x0107, 10) + +// Packet: 0x0108 +packetLen(0x0108, -1) + +// Packet: 0x0109 +packetLen(0x0109, -1) + +// Packet: 0x010a +packetLen(0x010a, 6) + +// Packet: 0x010b +packetLen(0x010b, 6) + +// Packet: 0x010c +packetLen(0x010c, 6) + +// Packet: 0x010d +packetLen(0x010d, 2) + +// Packet: 0x010e +packetLen(0x010e, 11) + +// Packet: 0x010f +packetLen(0x010f, -1) + +// Packet: 0x0110 +packetLen(0x0110, 14) + +// Packet: 0x0111 +packetLen(0x0111, 39) + +// Packet: 0x0112 +packetLen(0x0112, 4) + +// Packet: 0x0113 +packetLen(0x0113, 25) + +// Packet: 0x0114 +packetLen(0x0114, 31) + +// Packet: 0x0115 +packetLen(0x0115, 35) + +// Packet: 0x0116 +packetLen(0x0116, 17) + +// Packet: 0x0117 +packetLen(0x0117, 18) + +// Packet: 0x0118 +packetLen(0x0118, 2) + +// Packet: 0x0119 +packetLen(0x0119, 13) + +// Packet: 0x011a +packetLen(0x011a, 15) + +// Packet: 0x011b +packetLen(0x011b, 20) + +// Packet: 0x011c +packetLen(0x011c, 68) + +// Packet: 0x011d +packetLen(0x011d, 2) + +// Packet: 0x011e +packetLen(0x011e, 3) + +// Packet: 0x011f +packetLen(0x011f, 16) + +// Packet: 0x0120 +packetLen(0x0120, 6) + +// Packet: 0x0121 +packetLen(0x0121, 14) + +// Packet: 0x0122 +packetLen(0x0122, -1) + +// Packet: 0x0123 +packetLen(0x0123, -1) + +// Packet: 0x0124 +packetLen(0x0124, 31) + +// Packet: 0x0125 +packetLen(0x0125, 8) + +// Packet: 0x0126 +packetLen(0x0126, 8) + +// Packet: 0x0127 +packetLen(0x0127, 8) + +// Packet: 0x0128 +packetLen(0x0128, 8) + +// Packet: 0x0129 +packetLen(0x0129, 8) + +// Packet: 0x012a +packetLen(0x012a, 2) + +// Packet: 0x012b +packetLen(0x012b, 2) + +// Packet: 0x012c +packetLen(0x012c, 3) + +// Packet: 0x012d +packetLen(0x012d, 4) + +// Packet: 0x012e +packetLen(0x012e, 2) + +// Packet: 0x012f +packetLen(0x012f, -1) + +// Packet: 0x0130 +packetLen(0x0130, 6) + +// Packet: 0x0131 +packetLen(0x0131, 86) + +// Packet: 0x0132 +packetLen(0x0132, 6) + +// Packet: 0x0133 +packetLen(0x0133, -1) + +// Packet: 0x0134 +packetLen(0x0134, -1) + +// Packet: 0x0135 +packetLen(0x0135, 7) + +// Packet: 0x0136 +packetLen(0x0136, -1) + +// Packet: 0x0137 +packetLen(0x0137, 6) + +// Packet: 0x0138 +packetLen(0x0138, 3) + +// Packet: 0x0139 +packetLen(0x0139, 16) + +// Packet: 0x013a +packetLen(0x013a, 4) + +// Packet: 0x013b +packetLen(0x013b, 4) + +// Packet: 0x013c +packetLen(0x013c, 4) + +// Packet: 0x013d +packetLen(0x013d, 6) + +// Packet: 0x013e +packetLen(0x013e, 24) + +// Packet: 0x013f +packetLen(0x013f, 26) + +// Packet: 0x0140 +packetLen(0x0140, 22) + +// Packet: 0x0141 +packetLen(0x0141, 14) + +// Packet: 0x0142 +packetLen(0x0142, 6) + +// Packet: 0x0143 +packetLen(0x0143, 10) + +// Packet: 0x0144 +packetLen(0x0144, 23) + +// Packet: 0x0145 +packetLen(0x0145, 19) + +// Packet: 0x0146 +packetLen(0x0146, 6) + +// Packet: 0x0147 +packetLen(0x0147, 39) + +// Packet: 0x0148 +packetLen(0x0148, 8) + +// Packet: 0x0149 +packetLen(0x0149, 9) + +// Packet: 0x014a +packetLen(0x014a, 6) + +// Packet: 0x014b +packetLen(0x014b, 27) + +// Packet: 0x014c +packetLen(0x014c, -1) + +// Packet: 0x014d +packetLen(0x014d, 2) + +// Packet: 0x014e +packetLen(0x014e, 6) + +// Packet: 0x014f +packetLen(0x014f, 6) + +// Packet: 0x0150 +packetLen(0x0150, 110) + +// Packet: 0x0151 +packetLen(0x0151, 6) + +// Packet: 0x0152 +packetLen(0x0152, -1) + +// Packet: 0x0153 +packetLen(0x0153, -1) + +// Packet: 0x0154 +packetLen(0x0154, -1) + +// Packet: 0x0155 +packetLen(0x0155, -1) + +// Packet: 0x0156 +packetLen(0x0156, -1) + +// Packet: 0x0157 +packetLen(0x0157, 6) + +// Packet: 0x0159 +packetLen(0x0159, 54) + +// Packet: 0x015a +packetLen(0x015a, 66) + +// Packet: 0x015b +packetLen(0x015b, 54) + +// Packet: 0x015c +packetLen(0x015c, 90) + +// Packet: 0x015d +packetLen(0x015d, 42) + +// Packet: 0x015e +packetLen(0x015e, 6) + +// Packet: 0x015f +packetLen(0x015f, 42) + +// Packet: 0x0160 +packetLen(0x0160, -1) + +// Packet: 0x0161 +packetLen(0x0161, -1) + +// Packet: 0x0162 +packetLen(0x0162, -1) + +// Packet: 0x0163 +packetLen(0x0163, -1) + +// Packet: 0x0164 +packetLen(0x0164, -1) + +// Packet: 0x0165 +packetLen(0x0165, 30) + +// Packet: 0x0166 +packetLen(0x0166, -1) + +// Packet: 0x0167 +packetLen(0x0167, 3) + +// Packet: 0x0168 +packetLen(0x0168, 14) + +// Packet: 0x0169 +packetLen(0x0169, 3) + +// Packet: 0x016a +packetLen(0x016a, 30) + +// Packet: 0x016b +packetLen(0x016b, 10) + +// Packet: 0x016c +packetLen(0x016c, 43) + +// Packet: 0x016d +packetLen(0x016d, 14) + +// Packet: 0x016e +packetLen(0x016e, 186) + +// Packet: 0x016f +packetLen(0x016f, 182) + +// Packet: 0x0170 +packetLen(0x0170, 14) + +// Packet: 0x0171 +packetLen(0x0171, 30) + +// Packet: 0x0172 +packetLen(0x0172, 10) + +// Packet: 0x0173 +packetLen(0x0173, 3) + +// Packet: 0x0174 +packetLen(0x0174, -1) + +// Packet: 0x0175 +packetLen(0x0175, 6) + +// Packet: 0x0176 +packetLen(0x0176, 106) + +// Packet: 0x0177 +packetLen(0x0177, -1) + +// Packet: 0x0178 +packetLen(0x0178, 4) + +// Packet: 0x0179 +packetLen(0x0179, 5) + +// Packet: 0x017a +packetLen(0x017a, 4) + +// Packet: 0x017b +packetLen(0x017b, -1) + +// Packet: 0x017c +packetLen(0x017c, 6) + +// Packet: 0x017d +packetLen(0x017d, 7) + +// Packet: 0x017e +packetLen(0x017e, -1) + +// Packet: 0x017f +packetLen(0x017f, -1) + +// Packet: 0x0180 +packetLen(0x0180, 6) + +// Packet: 0x0181 +packetLen(0x0181, 3) + +// Packet: 0x0182 +packetLen(0x0182, 106) + +// Packet: 0x0183 +packetLen(0x0183, 10) + +// Packet: 0x0184 +packetLen(0x0184, 10) + +// Packet: 0x0185 +packetLen(0x0185, 34) + +// Packet: 0x0187 +packetLen(0x0187, 6) + +// Packet: 0x0188 +packetLen(0x0188, 8) + +// Packet: 0x0189 +packetLen(0x0189, 4) + +// Packet: 0x018a +packetLen(0x018a, 4) + +// Packet: 0x018b +packetLen(0x018b, 4) + +// Packet: 0x018c +packetLen(0x018c, 29) + +// Packet: 0x018d +packetLen(0x018d, -1) + +// Packet: 0x018e +packetLen(0x018e, 18) + +// Packet: 0x018f +packetLen(0x018f, 8) + +// Packet: 0x0190 +packetLen(0x0190, 23) + +// Packet: 0x0191 +packetLen(0x0191, 27) + +// Packet: 0x0192 +packetLen(0x0192, 24) + +// Packet: 0x0193 +packetLen(0x0193, 2) + +// Packet: 0x0194 +packetLen(0x0194, 30) + +// Packet: 0x0195 +packetLen(0x0195, 102) + +// Packet: 0x0196 +packetLen(0x0196, 9) + +// Packet: 0x0197 +packetLen(0x0197, 4) + +// Packet: 0x0198 +packetLen(0x0198, 8) + +// Packet: 0x0199 +packetLen(0x0199, 4) + +// Packet: 0x019a +packetLen(0x019a, 14) + +// Packet: 0x019b +packetLen(0x019b, 10) + +// Packet: 0x019c +packetLen(0x019c, -1) + +// Packet: 0x019d +packetLen(0x019d, 6) + +// Packet: 0x019e +packetLen(0x019e, 2) + +// Packet: 0x019f +packetLen(0x019f, 6) + +// Packet: 0x01a0 +packetLen(0x01a0, 3) + +// Packet: 0x01a1 +packetLen(0x01a1, 3) + +// Packet: 0x01a2 +packetLen(0x01a2, 37) + +// Packet: 0x01a3 +packetLen(0x01a3, 7) + +// Packet: 0x01a4 +packetLen(0x01a4, 11) + +// Packet: 0x01a5 +packetLen(0x01a5, 26) + +// Packet: 0x01a6 +packetLen(0x01a6, -1) + +// Packet: 0x01a7 +packetLen(0x01a7, 4) + +// Packet: 0x01a8 +packetLen(0x01a8, 4) + +// Packet: 0x01a9 +packetLen(0x01a9, 6) + +// Packet: 0x01aa +packetLen(0x01aa, 10) + +// Packet: 0x01ab +packetLen(0x01ab, 12) + +// Packet: 0x01ac +packetLen(0x01ac, 6) + +// Packet: 0x01ad +packetLen(0x01ad, -1) + +// Packet: 0x01ae +packetLen(0x01ae, 6) + +// Packet: 0x01af +packetLen(0x01af, 4) + +// Packet: 0x01b0 +packetLen(0x01b0, 11) + +// Packet: 0x01b1 +packetLen(0x01b1, 7) + +// Packet: 0x01b2 +packetLen(0x01b2, -1) + +// Packet: 0x01b3 +packetLen(0x01b3, 67) + +// Packet: 0x01b4 +packetLen(0x01b4, 12) + +// Packet: 0x01b5 +packetLen(0x01b5, 18) + +// Packet: 0x01b6 +packetLen(0x01b6, 114) + +// Packet: 0x01b7 +packetLen(0x01b7, 6) + +// Packet: 0x01b8 +packetLen(0x01b8, 3) + +// Packet: 0x01b9 +packetLen(0x01b9, 6) + +// Packet: 0x01ba +packetLen(0x01ba, 26) + +// Packet: 0x01bb +packetLen(0x01bb, 26) + +// Packet: 0x01bc +packetLen(0x01bc, 26) + +// Packet: 0x01bd +packetLen(0x01bd, 26) + +// Packet: 0x01be +packetLen(0x01be, 2) + +// Packet: 0x01bf +packetLen(0x01bf, 3) + +// Packet: 0x01c0 +packetLen(0x01c0, 2) + +// Packet: 0x01c1 +packetLen(0x01c1, 14) + +// Packet: 0x01c2 +packetLen(0x01c2, 10) + +// Packet: 0x01c3 +packetLen(0x01c3, -1) + +// Packet: 0x01c4 +packetLen(0x01c4, 32) + +// Packet: 0x01c5 +packetLen(0x01c5, 32) + +// Packet: 0x01c6 +packetLen(0x01c6, 4) + +// Packet: 0x01c7 +packetLen(0x01c7, 2) + +// Packet: 0x01c8 +packetLen(0x01c8, 15) + +// Packet: 0x01c9 +packetLen(0x01c9, 97) + +// Packet: 0x01ca +packetLen(0x01ca, 3) + +// Packet: 0x01cb +packetLen(0x01cb, 9) + +// Packet: 0x01cc +packetLen(0x01cc, 9) + +// Packet: 0x01cd +packetLen(0x01cd, 30) + +// Packet: 0x01ce +packetLen(0x01ce, 6) + +// Packet: 0x01cf +packetLen(0x01cf, 28) + +// Packet: 0x01d0 +packetLen(0x01d0, 8) + +// Packet: 0x01d1 +packetLen(0x01d1, 14) + +// Packet: 0x01d2 +packetLen(0x01d2, 10) + +// Packet: 0x01d3 +packetLen(0x01d3, 35) + +// Packet: 0x01d4 +packetLen(0x01d4, 6) + +// Packet: 0x01d5 +packetLen(0x01d5, -1) + +// Packet: 0x01d6 +packetLen(0x01d6, 4) + +// Packet: 0x01d7 +packetLen(0x01d7, 15) + +// Packet: 0x01d8 +packetLen(0x01d8, 58) + +// Packet: 0x01d9 +packetLen(0x01d9, 57) + +// Packet: 0x01da +packetLen(0x01da, 64) + +// Packet: 0x01db +packetLen(0x01db, 2) + +// Packet: 0x01dc +packetLen(0x01dc, -1) + +// Packet: 0x01dd +packetLen(0x01dd, 47) + +// Packet: 0x01de +packetLen(0x01de, 33) + +// Packet: 0x01df +packetLen(0x01df, 6) + +// Packet: 0x01e0 +packetLen(0x01e0, 30) + +// Packet: 0x01e1 +packetLen(0x01e1, 8) + +// Packet: 0x01e2 +packetLen(0x01e2, 34) + +// Packet: 0x01e3 +packetLen(0x01e3, 14) + +// Packet: 0x01e4 +packetLen(0x01e4, 2) + +// Packet: 0x01e5 +packetLen(0x01e5, 6) + +// Packet: 0x01e6 +packetLen(0x01e6, 26) + +// Packet: 0x01e7 +packetLen(0x01e7, 2) + +// Packet: 0x01e8 +packetLen(0x01e8, 28) + +// Packet: 0x01e9 +packetLen(0x01e9, 81) + +// Packet: 0x01ea +packetLen(0x01ea, 6) + +// Packet: 0x01eb +packetLen(0x01eb, 10) + +// Packet: 0x01ec +packetLen(0x01ec, 26) + +// Packet: 0x01ed +packetLen(0x01ed, 2) + +// Packet: 0x01ee +packetLen(0x01ee, -1) + +// Packet: 0x01ef +packetLen(0x01ef, -1) + +// Packet: 0x01f0 +packetLen(0x01f0, -1) + +// Packet: 0x01f1 +packetLen(0x01f1, -1) + +// Packet: 0x01f2 +packetLen(0x01f2, 20) + +// Packet: 0x01f3 +packetLen(0x01f3, 10) + +// Packet: 0x01f4 +packetLen(0x01f4, 32) + +// Packet: 0x01f5 +packetLen(0x01f5, 9) + +// Packet: 0x01f6 +packetLen(0x01f6, 34) + +// Packet: 0x01f7 +packetLen(0x01f7, 14) + +// Packet: 0x01f8 +packetLen(0x01f8, 2) + +// Packet: 0x01f9 +packetLen(0x01f9, 6) + +// Packet: 0x01fa +packetLen(0x01fa, 48) + +// Packet: 0x01fb +packetLen(0x01fb, 56) + +// Packet: 0x01fc +packetLen(0x01fc, -1) + +// Packet: 0x01fd +packetLen(0x01fd, 25) + +// Packet: 0x01fe +packetLen(0x01fe, 5) + +// Packet: 0x01ff +packetLen(0x01ff, 10) + +// Packet: 0x0200 +packetLen(0x0200, 26) + +// Packet: 0x0201 +packetLen(0x0201, -1) + +// Packet: 0x0202 +packetLen(0x0202, 26) + +// Packet: 0x0203 +packetLen(0x0203, 10) + +// Packet: 0x0204 +packetLen(0x0204, 18) + +// Packet: 0x0205 +packetLen(0x0205, 26) + +// Packet: 0x0206 +packetLen(0x0206, 35) + +// Packet: 0x0207 +packetLen(0x0207, 34) + +// Packet: 0x0208 +packetLen(0x0208, 14) + +// Packet: 0x0209 +packetLen(0x0209, 36) + +// Packet: 0x020a +packetLen(0x020a, 10) + +// Packet: 0x020d +packetLen(0x020d, -1) + +// Packet: 0x020e +packetLen(0x020e, 32) + +// Packet: 0x020f +packetLen(0x020f, 10) + +// Packet: 0x0210 +packetLen(0x0210, 22) + +// Packet: 0x0212 +packetLen(0x0212, 26) + +// Packet: 0x0213 +packetLen(0x0213, 26) + +// Packet: 0x0214 +packetLen(0x0214, 42) + +// Packet: 0x0215 +packetLen(0x0215, 6) + +// Packet: 0x0216 +packetLen(0x0216, 6) + +// Packet: 0x0217 +packetLen(0x0217, 2) + +// Packet: 0x0218 +packetLen(0x0218, 2) + +// Packet: 0x0219 +packetLen(0x0219, 282) + +// Packet: 0x021a +packetLen(0x021a, 282) + +// Packet: 0x021b +packetLen(0x021b, 10) + +// Packet: 0x021c +packetLen(0x021c, 10) + +// Packet: 0x021d +packetLen(0x021d, 6) + +// Packet: 0x021e +packetLen(0x021e, 6) + +// Packet: 0x021f +packetLen(0x021f, 66) + +// Packet: 0x0220 +packetLen(0x0220, 10) + +// Packet: 0x0221 +packetLen(0x0221, -1) + +// Packet: 0x0222 +packetLen(0x0222, 6) + +// Packet: 0x0223 +packetLen(0x0223, 10) + +// Packet: 0x0224 +packetLen(0x0224, 10) + +// Packet: 0x0225 +packetLen(0x0225, 2) + +// Packet: 0x0226 +packetLen(0x0226, 282) + +// Packet: 0x0227 +packetLen(0x0227, 18) + +// Packet: 0x0228 +packetLen(0x0228, 18) + +// Packet: 0x0229 +packetLen(0x0229, 15) + +// Packet: 0x022a +packetLen(0x022a, 62) + +// Packet: 0x022b +packetLen(0x022b, 61) + +// Packet: 0x022c +packetLen(0x022c, 69) + +// Packet: 0x022d +packetLen(0x022d, 5) + +// Packet: 0x022e +packetLen(0x022e, 73) + +// Packet: 0x022f +packetLen(0x022f, 7) + +// Packet: 0x0230 +packetLen(0x0230, 12) + +// Packet: 0x0231 +packetLen(0x0231, 26) + +// Packet: 0x0232 +packetLen(0x0232, 9) + +// Packet: 0x0233 +packetLen(0x0233, 11) + +// Packet: 0x0234 +packetLen(0x0234, 6) + +// Packet: 0x0235 +packetLen(0x0235, -1) + +// Packet: 0x0236 +packetLen(0x0236, 10) + +// Packet: 0x0237 +packetLen(0x0237, 2) + +// Packet: 0x0238 +packetLen(0x0238, 282) + +// Packet: 0x0239 +packetLen(0x0239, 11) + +// Packet: 0x023a +packetLen(0x023a, 4) + +// Packet: 0x023b +packetLen(0x023b, 36) + +// Packet: 0x023c +packetLen(0x023c, 6) + +// Packet: 0x023d +packetLen(0x023d, 6) + +// Packet: 0x023e +packetLen(0x023e, 8) + +// Packet: 0x023f +packetLen(0x023f, 2) + +// Packet: 0x0240 +packetLen(0x0240, -1) + +// Packet: 0x0241 +packetLen(0x0241, 6) + +// Packet: 0x0242 +packetLen(0x0242, -1) + +// Packet: 0x0243 +packetLen(0x0243, 6) + +// Packet: 0x0244 +packetLen(0x0244, 6) + +// Packet: 0x0245 +packetLen(0x0245, 3) + +// Packet: 0x0246 +packetLen(0x0246, 4) + +// Packet: 0x0247 +packetLen(0x0247, 8) + +// Packet: 0x0248 +packetLen(0x0248, -1) + +// Packet: 0x0249 +packetLen(0x0249, 3) + +// Packet: 0x024a +packetLen(0x024a, 70) + +// Packet: 0x024b +packetLen(0x024b, 4) + +// Packet: 0x024c +packetLen(0x024c, 8) + +// Packet: 0x024d +packetLen(0x024d, 12) + +// Packet: 0x024e +packetLen(0x024e, 6) + +// Packet: 0x024f +packetLen(0x024f, 10) + +// Packet: 0x0250 +packetLen(0x0250, 3) + +// Packet: 0x0251 +packetLen(0x0251, 34) + +// Packet: 0x0252 +packetLen(0x0252, -1) + +// Packet: 0x0253 +packetLen(0x0253, 3) + +// Packet: 0x0254 +packetLen(0x0254, 3) + +// Packet: 0x0255 +packetLen(0x0255, 5) + +// Packet: 0x0256 +packetLen(0x0256, 5) + +// Packet: 0x0257 +packetLen(0x0257, 8) + +// Packet: 0x0258 +packetLen(0x0258, 2) + +// Packet: 0x0259 +packetLen(0x0259, 3) + +// Packet: 0x025a +packetLen(0x025a, -1) + +// Packet: 0x025b +packetLen(0x025b, 8) + +// Packet: 0x025c +packetLen(0x025c, 4) + +// Packet: 0x025d +packetLen(0x025d, 6) + +// Packet: 0x025e +packetLen(0x025e, 4) + +// Packet: 0x025f +packetLen(0x025f, 6) + +// Packet: 0x0260 +packetLen(0x0260, 6) + +// Packet: 0x0261 +packetLen(0x0261, 11) + +// Packet: 0x0262 +packetLen(0x0262, 11) + +// Packet: 0x0263 +packetLen(0x0263, 11) + +// Packet: 0x0264 +packetLen(0x0264, 20) + +// Packet: 0x0265 +packetLen(0x0265, 20) + +// Packet: 0x0266 +packetLen(0x0266, 30) + +// Packet: 0x0267 +packetLen(0x0267, 4) + +// Packet: 0x0268 +packetLen(0x0268, 4) + +// Packet: 0x0269 +packetLen(0x0269, 4) + +// Packet: 0x026a +packetLen(0x026a, 4) + +// Packet: 0x026b +packetLen(0x026b, 4) + +// Packet: 0x026c +packetLen(0x026c, 4) + +// Packet: 0x026d +packetLen(0x026d, 4) + +// Packet: 0x026f +packetLen(0x026f, 2) + +// Packet: 0x0270 +packetLen(0x0270, 2) + +// Packet: 0x0271 +packetLen(0x0271, 40) + +// Packet: 0x0272 +packetLen(0x0272, 44) + +// Packet: 0x0273 +packetLen(0x0273, 30) + +// Packet: 0x0274 +packetLen(0x0274, 8) + +// Packet: 0x0275 +packetLen(0x0275, 37) + +// Packet: 0x0276 +packetLen(0x0276, -1) + +// Packet: 0x0277 +packetLen(0x0277, 84) + +// Packet: 0x0278 +packetLen(0x0278, 2) + +// Packet: 0x0279 +packetLen(0x0279, 2) + +// Packet: 0x027a +packetLen(0x027a, -1) + +// Packet: 0x027b +packetLen(0x027b, 14) + +// Packet: 0x027c +packetLen(0x027c, 60) + +// Packet: 0x027d +packetLen(0x027d, 62) + +// Packet: 0x027e +packetLen(0x027e, -1) + +// Packet: 0x027f +packetLen(0x027f, 8) + +// Packet: 0x0280 +packetLen(0x0280, 12) + +// Packet: 0x0281 +packetLen(0x0281, 4) + +// Packet: 0x0282 +packetLen(0x0282, 284) + +// Packet: 0x0283 +packetLen(0x0283, 6) + +// Packet: 0x0284 +packetLen(0x0284, 14) + +// Packet: 0x0285 +packetLen(0x0285, 6) + +// Packet: 0x0286 +packetLen(0x0286, 4) + +// Packet: 0x0287 +packetLen(0x0287, -1) + +// Packet: 0x0288 +packetLen(0x0288, -1) + +// Packet: 0x0289 +packetLen(0x0289, 12) + +// Packet: 0x028a +packetLen(0x028a, 18) + +// Packet: 0x028b +packetLen(0x028b, -1) + +// Packet: 0x028c +packetLen(0x028c, 46) + +// Packet: 0x028d +packetLen(0x028d, 34) + +// Packet: 0x028e +packetLen(0x028e, 4) + +// Packet: 0x028f +packetLen(0x028f, 6) + +// Packet: 0x0290 +packetLen(0x0290, 4) + +// Packet: 0x0291 +packetLen(0x0291, 4) + +// Packet: 0x0292 +packetLen(0x0292, 2) + +// Packet: 0x0293 +packetLen(0x0293, 70) + +// Packet: 0x0294 +packetLen(0x0294, 10) + +// Packet: 0x0295 +packetLen(0x0295, -1) + +// Packet: 0x0296 +packetLen(0x0296, -1) + +// Packet: 0x0297 +packetLen(0x0297, -1) + +// Packet: 0x0298 +packetLen(0x0298, 10) + +// Packet: 0x0299 +packetLen(0x0299, 8) + +// Packet: 0x029a +packetLen(0x029a, 37) + +// Packet: 0x029b +packetLen(0x029b, 80) + +// Packet: 0x029c +packetLen(0x029c, 66) + +// Packet: 0x029d +packetLen(0x029d, -1) + +// Packet: 0x029e +packetLen(0x029e, 11) + +// Packet: 0x029f +packetLen(0x029f, 3) + +// Packet: 0x02a2 +packetLen(0x02a2, 8) + +// Packet: 0x02a5 +packetLen(0x02a5, 8) + +// Packet: 0x02a6 +packetLen(0x02a6, -1) + +// Packet: 0x02a7 +packetLen(0x02a7, -1) + +// Packet: 0x02aa +packetLen(0x02aa, 4) + +// Packet: 0x02ab +packetLen(0x02ab, 36) + +// Packet: 0x02ac +packetLen(0x02ac, 6) + +// Packet: 0x02ad +packetLen(0x02ad, 8) + +// Packet: 0x02b0 +packetLen(0x02b0, 85) + +// Packet: 0x02b1 +packetLen(0x02b1, -1) + +// Packet: 0x02b2 +packetLen(0x02b2, -1) + +// Packet: 0x02b3 +packetLen(0x02b3, 107) + +// Packet: 0x02b4 +packetLen(0x02b4, 6) + +// Packet: 0x02b5 +packetLen(0x02b5, -1) + +// Packet: 0x02b6 +packetLen(0x02b6, 7) + +// Packet: 0x02b7 +packetLen(0x02b7, 7) + +// Packet: 0x02b8 +packetLen(0x02b8, 32) + +// Packet: 0x02b9 +packetLen(0x02b9, 191) + +// Packet: 0x02ba +packetLen(0x02ba, 11) + +// Packet: 0x02bb +packetLen(0x02bb, 8) + +// Packet: 0x02bc +packetLen(0x02bc, 6) + +// Packet: 0x02c1 +packetLen(0x02c1, -1) + +// Packet: 0x02c2 +packetLen(0x02c2, -1) + +// Packet: 0x02c4 +packetLen(0x02c4, 26) + +// Packet: 0x02c5 +packetLen(0x02c5, 30) + +// Packet: 0x02c6 +packetLen(0x02c6, 30) + +// Packet: 0x02c7 +packetLen(0x02c7, 7) + +// Packet: 0x02c8 +packetLen(0x02c8, 3) + +// Packet: 0x02c9 +packetLen(0x02c9, 3) + +// Packet: 0x02ca +packetLen(0x02ca, 3) + +// Packet: 0x02cb +packetLen(0x02cb, 65) + +// Packet: 0x02cc +packetLen(0x02cc, 4) + +// Packet: 0x02cd +packetLen(0x02cd, 71) + +// Packet: 0x02ce +packetLen(0x02ce, 10) + +// Packet: 0x02cf +packetLen(0x02cf, 6) + +// Packet: 0x02d0 +packetLen(0x02d0, -1) + +// Packet: 0x02d1 +packetLen(0x02d1, -1) + +// Packet: 0x02d2 +packetLen(0x02d2, -1) + +// Packet: 0x02d3 +packetLen(0x02d3, 4) + +// Packet: 0x02d4 +packetLen(0x02d4, 39) + +// Packet: 0x02d5 +packetLen(0x02d5, 2) + +// Packet: 0x02d6 +packetLen(0x02d6, 6) + +// Packet: 0x02d7 +packetLen(0x02d7, -1) + +// Packet: 0x02d8 +packetLen(0x02d8, 10) + +// Packet: 0x02d9 +packetLen(0x02d9, 10) + +// Packet: 0x02da +packetLen(0x02da, 3) + +// Packet: 0x02db +packetLen(0x02db, -1) + +// Packet: 0x02dc +packetLen(0x02dc, -1) + +// Packet: 0x02dd +packetLen(0x02dd, 32) + +// Packet: 0x02de +packetLen(0x02de, 6) + +// Packet: 0x02df +packetLen(0x02df, 36) + +// Packet: 0x02e0 +packetLen(0x02e0, 34) + +// Packet: 0x02e1 +packetLen(0x02e1, 33) + +// Packet: 0x02e2 +packetLen(0x02e2, 20) + +// Packet: 0x02e3 +packetLen(0x02e3, 22) + +// Packet: 0x02e4 +packetLen(0x02e4, 11) + +// Packet: 0x02e5 +packetLen(0x02e5, 9) + +// Packet: 0x02e6 +packetLen(0x02e6, 6) + +// Packet: 0x02e7 +packetLen(0x02e7, -1) + +// Packet: 0x02e8 +packetLen(0x02e8, -1) + +// Packet: 0x02e9 +packetLen(0x02e9, -1) + +// Packet: 0x02ea +packetLen(0x02ea, -1) + +// Packet: 0x02eb +packetLen(0x02eb, 13) + +// Packet: 0x02ec +packetLen(0x02ec, 71) + +// Packet: 0x02ed +packetLen(0x02ed, 63) + +// Packet: 0x02ee +packetLen(0x02ee, 64) + +// Packet: 0x02ef +packetLen(0x02ef, 8) + +// Packet: 0x02f0 +packetLen(0x02f0, 10) + +// Packet: 0x02f1 +packetLen(0x02f1, 2) + +// Packet: 0x02f2 +packetLen(0x02f2, 2) + +// Packet: 0x02f3 +packetLen(0x02f3, -1) + +// Packet: 0x02f4 +packetLen(0x02f4, 3) + +// Packet: 0x02f5 +packetLen(0x02f5, 7) + +// Packet: 0x02f6 +packetLen(0x02f6, 7) + +// Packet: 0x035c +packetLen(0x035c, 2) + +// Packet: 0x035d +packetLen(0x035d, -1) + +// Packet: 0x035e +packetLen(0x035e, 2) + +// Packet: 0x035f +packetLen(0x035f, 5) + +// Packet: 0x0360 +packetLen(0x0360, 6) + +// Packet: 0x0361 +packetLen(0x0361, 5) + +// Packet: 0x0362 +packetLen(0x0362, 6) + +// Packet: 0x0363 +packetLen(0x0363, 6) + +// Packet: 0x0364 +packetLen(0x0364, 8) + +// Packet: 0x0365 +packetLen(0x0365, 8) + +// Packet: 0x0366 +packetLen(0x0366, 10) + +// Packet: 0x0367 +packetLen(0x0367, 31) + +// Packet: 0x0368 +packetLen(0x0368, 6) + +// Packet: 0x0369 +packetLen(0x0369, 6) + +// Packet: 0x03dd +packetLen(0x03dd, 18) + +// Packet: 0x03de +packetLen(0x03de, 18) + +// Packet: 0x0436 +#if PACKETVER >= 20211103 +packetLen(0x0436, 23) +#elif PACKETVER >= 20210107 +packetLen(0x0436, 19) +#endif + +// Packet: 0x0437 +packetLen(0x0437, 7) + +// Packet: 0x0438 +packetLen(0x0438, 10) + +// Packet: 0x0439 +packetLen(0x0439, 8) + +// Packet: 0x043d +packetLen(0x043d, 8) + +// Packet: 0x043e +packetLen(0x043e, -1) + +// Packet: 0x043f +packetLen(0x043f, 25) + +// Packet: 0x0440 +packetLen(0x0440, 10) + +// Packet: 0x0441 +packetLen(0x0441, 4) + +// Packet: 0x0442 +packetLen(0x0442, -1) + +// Packet: 0x0443 +packetLen(0x0443, 8) + +// Packet: 0x0444 +packetLen(0x0444, -1) + +// Packet: 0x0445 +packetLen(0x0445, 12) + +// Packet: 0x0446 +packetLen(0x0446, 14) + +// Packet: 0x0447 +packetLen(0x0447, 2) + +// Packet: 0x0448 +packetLen(0x0448, -1) + +// Packet: 0x0449 +packetLen(0x0449, 4) + +// Packet: 0x044a +packetLen(0x044a, 6) + +// Packet: 0x044b +packetLen(0x044b, 2) + +// Packet: 0x07d7 +packetLen(0x07d7, 8) + +// Packet: 0x07d8 +packetLen(0x07d8, 8) + +// Packet: 0x07d9 +packetLen(0x07d9, 268) + +// Packet: 0x07da +packetLen(0x07da, 6) + +// Packet: 0x07db +packetLen(0x07db, 8) + +// Packet: 0x07dc +packetLen(0x07dc, 6) + +// Packet: 0x07dd +packetLen(0x07dd, 54) + +// Packet: 0x07de +packetLen(0x07de, 30) + +// Packet: 0x07df +packetLen(0x07df, 54) + +// Packet: 0x07e0 +packetLen(0x07e0, 58) + +// Packet: 0x07e1 +packetLen(0x07e1, 15) + +// Packet: 0x07e2 +packetLen(0x07e2, 8) + +// Packet: 0x07e3 +packetLen(0x07e3, 6) + +// Packet: 0x07e4 +packetLen(0x07e4, -1) + +// Packet: 0x07e5 +packetLen(0x07e5, 4) + +// Packet: 0x07e6 +packetLen(0x07e6, 8) + +// Packet: 0x07e7 +packetLen(0x07e7, 32) + +// Packet: 0x07e8 +packetLen(0x07e8, -1) + +// Packet: 0x07e9 +packetLen(0x07e9, 5) + +// Packet: 0x07ea +packetLen(0x07ea, 2) + +// Packet: 0x07eb +packetLen(0x07eb, -1) + +// Packet: 0x07ec +packetLen(0x07ec, 8) + +// Packet: 0x07ed +packetLen(0x07ed, 10) + +// Packet: 0x07ee +packetLen(0x07ee, 6) + +// Packet: 0x07ef +packetLen(0x07ef, 8) + +// Packet: 0x07f0 +packetLen(0x07f0, 6) + +// Packet: 0x07f1 +packetLen(0x07f1, 18) + +// Packet: 0x07f2 +packetLen(0x07f2, 8) + +// Packet: 0x07f3 +packetLen(0x07f3, 6) + +// Packet: 0x07f4 +packetLen(0x07f4, 3) + +// Packet: 0x07f5 +packetLen(0x07f5, 6) + +// Packet: 0x07f6 +packetLen(0x07f6, 14) + +// Packet: 0x07f7 +packetLen(0x07f7, -1) + +// Packet: 0x07f8 +packetLen(0x07f8, -1) + +// Packet: 0x07f9 +packetLen(0x07f9, -1) + +// Packet: 0x07fa +packetLen(0x07fa, 8) + +// Packet: 0x07fb +packetLen(0x07fb, 25) + +// Packet: 0x07fc +packetLen(0x07fc, 10) + +// Packet: 0x07fd +packetLen(0x07fd, -1) + +// Packet: 0x07fe +packetLen(0x07fe, 26) + +// Packet: 0x0800 +packetLen(0x0800, -1) + +// Packet: 0x0801 +packetLen(0x0801, -1) + +// Packet: 0x0802 +packetLen(0x0802, 18) + +// Packet: 0x0803 +packetLen(0x0803, 4) + +// Packet: 0x0804 +packetLen(0x0804, 14) + +// Packet: 0x0805 +packetLen(0x0805, -1) + +// Packet: 0x0806 +packetLen(0x0806, 2) + +// Packet: 0x0807 +packetLen(0x0807, 4) + +// Packet: 0x0808 +packetLen(0x0808, 14) + +// Packet: 0x0809 +packetLen(0x0809, 50) + +// Packet: 0x080a +packetLen(0x080a, 18) + +// Packet: 0x080b +packetLen(0x080b, 6) + +// Packet: 0x080c +packetLen(0x080c, 2) + +// Packet: 0x080d +packetLen(0x080d, 3) + +// Packet: 0x080e +packetLen(0x080e, 14) + +// Packet: 0x080f +packetLen(0x080f, 30) + +// Packet: 0x0810 +packetLen(0x0810, 3) + +// Packet: 0x0811 +packetLen(0x0811, -1) + +// Packet: 0x0812 +packetLen(0x0812, 8) + +// Packet: 0x0813 +packetLen(0x0813, -1) + +// Packet: 0x0814 +packetLen(0x0814, 86) + +// Packet: 0x0815 +packetLen(0x0815, 2) + +// Packet: 0x0816 +packetLen(0x0816, 6) + +// Packet: 0x0817 +packetLen(0x0817, 6) + +// Packet: 0x0818 +packetLen(0x0818, -1) + +// Packet: 0x0819 +packetLen(0x0819, -1) + +// Packet: 0x081a +packetLen(0x081a, 4) + +// Packet: 0x081b +packetLen(0x081b, 12) + +// Packet: 0x081c +packetLen(0x081c, 10) + +// Packet: 0x081d +packetLen(0x081d, 22) + +// Packet: 0x081e +packetLen(0x081e, 8) + +// Packet: 0x081f +packetLen(0x081f, -1) + +// Packet: 0x0820 +packetLen(0x0820, 11) + +// Packet: 0x0821 +packetLen(0x0821, 2) + +// Packet: 0x0822 +packetLen(0x0822, 9) + +// Packet: 0x0823 +packetLen(0x0823, -1) + +// Packet: 0x0824 +packetLen(0x0824, 8) + +// Packet: 0x0825 +packetLen(0x0825, -1) + +// Packet: 0x0827 +packetLen(0x0827, 6) + +// Packet: 0x0828 +packetLen(0x0828, 14) + +// Packet: 0x0829 +packetLen(0x0829, 12) + +// Packet: 0x082a +packetLen(0x082a, 10) + +// Packet: 0x082b +packetLen(0x082b, 6) + +// Packet: 0x082c +packetLen(0x082c, 10) + +// Packet: 0x082d +packetLen(0x082d, -1) + +// Packet: 0x0835 +packetLen(0x0835, -1) + +// Packet: 0x0836 +packetLen(0x0836, -1) + +// Packet: 0x0837 +packetLen(0x0837, 3) + +// Packet: 0x0838 +packetLen(0x0838, 2) + +// Packet: 0x0839 +packetLen(0x0839, 66) + +// Packet: 0x083a +packetLen(0x083a, 5) + +// Packet: 0x083b +packetLen(0x083b, 2) + +// Packet: 0x083c +packetLen(0x083c, 14) + +// Packet: 0x083d +packetLen(0x083d, 6) + +// Packet: 0x083e +packetLen(0x083e, 26) + +// Packet: 0x0840 +packetLen(0x0840, -1) + +// Packet: 0x0841 +packetLen(0x0841, 4) + +// Packet: 0x0842 +packetLen(0x0842, 6) + +// Packet: 0x0843 +packetLen(0x0843, 6) + +// Packet: 0x0844 +packetLen(0x0844, 2) + +// Packet: 0x0845 +packetLen(0x0845, 10) + +// Packet: 0x0846 +packetLen(0x0846, 4) + +// Packet: 0x0847 +packetLen(0x0847, -1) + +// Packet: 0x0848 +packetLen(0x0848, -1) + +// Packet: 0x0849 +packetLen(0x0849, 16) + +// Packet: 0x084a +packetLen(0x084a, 2) + +// Packet: 0x084b +packetLen(0x084b, 21) + +// Packet: 0x084c +packetLen(0x084c, 10) + +// Packet: 0x084d +packetLen(0x084d, 10) + +// Packet: 0x084e +packetLen(0x084e, 5) + +// Packet: 0x084f +packetLen(0x084f, 6) + +// Packet: 0x0850 +packetLen(0x0850, 7) + +// Packet: 0x0851 +packetLen(0x0851, -1) + +// Packet: 0x0852 +packetLen(0x0852, 2) + +// Packet: 0x0853 +packetLen(0x0853, -1) + +// Packet: 0x0854 +packetLen(0x0854, -1) + +// Packet: 0x0855 +packetLen(0x0855, 6) + +// Packet: 0x0856 +packetLen(0x0856, -1) + +// Packet: 0x0857 +packetLen(0x0857, -1) + +// Packet: 0x0858 +packetLen(0x0858, -1) + +// Packet: 0x0859 +packetLen(0x0859, -1) + +// Packet: 0x085a +packetLen(0x085a, 2) + +// Packet: 0x085b +packetLen(0x085b, 2) + +// Packet: 0x085c +packetLen(0x085c, 2) + +// Packet: 0x085d +packetLen(0x085d, 2) + +// Packet: 0x085e +packetLen(0x085e, 2) + +// Packet: 0x085f +packetLen(0x085f, 2) + +// Packet: 0x0860 +packetLen(0x0860, 2) + +// Packet: 0x0861 +packetLen(0x0861, 2) + +// Packet: 0x0862 +packetLen(0x0862, 2) + +// Packet: 0x0863 +packetLen(0x0863, 2) + +// Packet: 0x0864 +packetLen(0x0864, 2) + +// Packet: 0x0865 +packetLen(0x0865, 2) + +// Packet: 0x0866 +packetLen(0x0866, 2) + +// Packet: 0x0867 +packetLen(0x0867, 2) + +// Packet: 0x0868 +packetLen(0x0868, 2) + +// Packet: 0x0869 +packetLen(0x0869, 2) + +// Packet: 0x086a +packetLen(0x086a, 2) + +// Packet: 0x086b +packetLen(0x086b, 2) + +// Packet: 0x086c +packetLen(0x086c, 2) + +// Packet: 0x086d +packetLen(0x086d, 2) + +// Packet: 0x086e +packetLen(0x086e, 2) + +// Packet: 0x086f +packetLen(0x086f, 2) + +// Packet: 0x0870 +packetLen(0x0870, 2) + +// Packet: 0x0871 +packetLen(0x0871, 2) + +// Packet: 0x0872 +packetLen(0x0872, 2) + +// Packet: 0x0873 +packetLen(0x0873, 2) + +// Packet: 0x0874 +packetLen(0x0874, 2) + +// Packet: 0x0875 +packetLen(0x0875, 2) + +// Packet: 0x0876 +packetLen(0x0876, 2) + +// Packet: 0x0877 +packetLen(0x0877, 2) + +// Packet: 0x0878 +packetLen(0x0878, 2) + +// Packet: 0x0879 +packetLen(0x0879, 2) + +// Packet: 0x087a +packetLen(0x087a, 2) + +// Packet: 0x087b +packetLen(0x087b, 2) + +// Packet: 0x087c +packetLen(0x087c, 2) + +// Packet: 0x087d +packetLen(0x087d, 2) + +// Packet: 0x087e +packetLen(0x087e, 2) + +// Packet: 0x087f +packetLen(0x087f, 2) + +// Packet: 0x0880 +packetLen(0x0880, 2) + +// Packet: 0x0881 +packetLen(0x0881, 2) + +// Packet: 0x0882 +packetLen(0x0882, 2) + +// Packet: 0x0883 +packetLen(0x0883, 2) + +// Packet: 0x0884 +packetLen(0x0884, 2) + +// Packet: 0x0885 +packetLen(0x0885, 2) + +// Packet: 0x0886 +packetLen(0x0886, 2) + +// Packet: 0x0887 +packetLen(0x0887, 2) + +// Packet: 0x0888 +packetLen(0x0888, 2) + +// Packet: 0x0889 +packetLen(0x0889, 2) + +// Packet: 0x088a +packetLen(0x088a, 2) + +// Packet: 0x088b +packetLen(0x088b, 2) + +// Packet: 0x088c +packetLen(0x088c, 2) + +// Packet: 0x088d +packetLen(0x088d, 2) + +// Packet: 0x088e +packetLen(0x088e, 2) + +// Packet: 0x088f +packetLen(0x088f, 2) + +// Packet: 0x0890 +packetLen(0x0890, 2) + +// Packet: 0x0891 +packetLen(0x0891, 2) + +// Packet: 0x0892 +packetLen(0x0892, 2) + +// Packet: 0x0893 +packetLen(0x0893, 2) + +// Packet: 0x0894 +packetLen(0x0894, 2) + +// Packet: 0x0895 +packetLen(0x0895, 2) + +// Packet: 0x0896 +packetLen(0x0896, 2) + +// Packet: 0x0897 +packetLen(0x0897, 2) + +// Packet: 0x0898 +packetLen(0x0898, 2) + +// Packet: 0x0899 +packetLen(0x0899, 2) + +// Packet: 0x089a +packetLen(0x089a, 2) + +// Packet: 0x089b +packetLen(0x089b, 2) + +// Packet: 0x089c +packetLen(0x089c, 2) + +// Packet: 0x089d +packetLen(0x089d, 2) + +// Packet: 0x089e +packetLen(0x089e, 2) + +// Packet: 0x089f +packetLen(0x089f, 2) + +// Packet: 0x08a0 +packetLen(0x08a0, 2) + +// Packet: 0x08a1 +packetLen(0x08a1, 2) + +// Packet: 0x08a2 +packetLen(0x08a2, 2) + +// Packet: 0x08a3 +packetLen(0x08a3, 2) + +// Packet: 0x08a4 +packetLen(0x08a4, 2) + +// Packet: 0x08a5 +packetLen(0x08a5, 2) + +// Packet: 0x08a6 +packetLen(0x08a6, 2) + +// Packet: 0x08a7 +packetLen(0x08a7, 2) + +// Packet: 0x08a8 +packetLen(0x08a8, 2) + +// Packet: 0x08a9 +packetLen(0x08a9, 2) + +// Packet: 0x08aa +packetLen(0x08aa, 2) + +// Packet: 0x08ab +packetLen(0x08ab, 2) + +// Packet: 0x08ac +packetLen(0x08ac, 2) + +// Packet: 0x08ad +packetLen(0x08ad, 2) + +// Packet: 0x08af +packetLen(0x08af, 10) + +// Packet: 0x08b0 +packetLen(0x08b0, 17) + +// Packet: 0x08b1 +packetLen(0x08b1, -1) + +// Packet: 0x08b2 +packetLen(0x08b2, -1) + +// Packet: 0x08b3 +packetLen(0x08b3, -1) + +// Packet: 0x08b4 +packetLen(0x08b4, 2) + +// Packet: 0x08b5 +packetLen(0x08b5, 6) + +// Packet: 0x08b6 +packetLen(0x08b6, 3) + +// Packet: 0x08b8 +packetLen(0x08b8, 10) + +// Packet: 0x08b9 +packetLen(0x08b9, 12) + +// Packet: 0x08ba +packetLen(0x08ba, 10) + +// Packet: 0x08bb +packetLen(0x08bb, 8) + +// Packet: 0x08bc +packetLen(0x08bc, 10) + +// Packet: 0x08bd +packetLen(0x08bd, 8) + +// Packet: 0x08be +packetLen(0x08be, 14) + +// Packet: 0x08bf +packetLen(0x08bf, 8) + +// Packet: 0x08c0 +packetLen(0x08c0, -1) + +// Packet: 0x08c1 +packetLen(0x08c1, 2) + +// Packet: 0x08c2 +packetLen(0x08c2, 2) + +// Packet: 0x08c3 +packetLen(0x08c3, 10) + +// Packet: 0x08c4 +packetLen(0x08c4, 8) + +// Packet: 0x08c5 +packetLen(0x08c5, 6) + +// Packet: 0x08c6 +packetLen(0x08c6, 4) + +// Packet: 0x08c7 +packetLen(0x08c7, -1) + +// Packet: 0x08c8 +packetLen(0x08c8, 34) + +// Packet: 0x08c9 +packetLen(0x08c9, 2) + +// Packet: 0x08ca +packetLen(0x08ca, -1) + +// Packet: 0x08cb +packetLen(0x08cb, -1) + +// Packet: 0x08cc +packetLen(0x08cc, 109) + +// Packet: 0x08cd +packetLen(0x08cd, 10) + +// Packet: 0x08ce +packetLen(0x08ce, 2) + +// Packet: 0x08cf +packetLen(0x08cf, 10) + +// Packet: 0x08d0 +packetLen(0x08d0, 9) + +// Packet: 0x08d1 +packetLen(0x08d1, 7) + +// Packet: 0x08d2 +packetLen(0x08d2, 10) + +// Packet: 0x08d3 +packetLen(0x08d3, 10) + +// Packet: 0x08d4 +packetLen(0x08d4, 8) + +// Packet: 0x08d5 +packetLen(0x08d5, -1) + +// Packet: 0x08d6 +packetLen(0x08d6, 6) + +// Packet: 0x08d7 +packetLen(0x08d7, 28) + +// Packet: 0x08d8 +packetLen(0x08d8, 27) + +// Packet: 0x08d9 +packetLen(0x08d9, 30) + +// Packet: 0x08da +packetLen(0x08da, 26) + +// Packet: 0x08db +packetLen(0x08db, 27) + +// Packet: 0x08dc +packetLen(0x08dc, 26) + +// Packet: 0x08dd +packetLen(0x08dd, 27) + +// Packet: 0x08de +packetLen(0x08de, 27) + +// Packet: 0x08df +packetLen(0x08df, 50) + +// Packet: 0x08e0 +packetLen(0x08e0, 51) + +// Packet: 0x08e1 +packetLen(0x08e1, 51) + +// Packet: 0x08e2 +packetLen(0x08e2, 27) + +// Packet: 0x08e3 +packetLen(0x08e3, 157) + +// Packet: 0x08e4 +packetLen(0x08e4, 6) + +// Packet: 0x08fc +packetLen(0x08fc, 30) + +// Packet: 0x08fd +packetLen(0x08fd, 6) + +// Packet: 0x08fe +packetLen(0x08fe, -1) + +// Packet: 0x08ff +packetLen(0x08ff, 24) + +// Packet: 0x0900 +packetLen(0x0900, -1) + +// Packet: 0x0901 +packetLen(0x0901, -1) + +// Packet: 0x0902 +packetLen(0x0902, -1) + +// Packet: 0x0903 +packetLen(0x0903, -1) + +// Packet: 0x0904 +packetLen(0x0904, -1) + +// Packet: 0x0905 +packetLen(0x0905, -1) + +// Packet: 0x0906 +packetLen(0x0906, -1) + +// Packet: 0x0907 +packetLen(0x0907, 5) + +// Packet: 0x0908 +packetLen(0x0908, 5) + +// Packet: 0x090a +packetLen(0x090a, 26) + +// Packet: 0x090d +packetLen(0x090d, -1) + +// Packet: 0x090e +packetLen(0x090e, 2) + +// Packet: 0x090f +packetLen(0x090f, -1) + +// Packet: 0x0910 +packetLen(0x0910, 10) + +// Packet: 0x0911 +packetLen(0x0911, 30) + +// Packet: 0x0912 +packetLen(0x0912, 10) + +// Packet: 0x0913 +packetLen(0x0913, 30) + +// Packet: 0x0914 +packetLen(0x0914, -1) + +// Packet: 0x0915 +packetLen(0x0915, -1) + +// Packet: 0x0916 +packetLen(0x0916, 26) + +// Packet: 0x0917 +packetLen(0x0917, 2) + +// Packet: 0x0918 +packetLen(0x0918, 2) + +// Packet: 0x0919 +packetLen(0x0919, 2) + +// Packet: 0x091a +packetLen(0x091a, 2) + +// Packet: 0x091b +packetLen(0x091b, 2) + +// Packet: 0x091c +packetLen(0x091c, 2) + +// Packet: 0x091d +packetLen(0x091d, 2) + +// Packet: 0x091e +packetLen(0x091e, 2) + +// Packet: 0x091f +packetLen(0x091f, 2) + +// Packet: 0x0920 +packetLen(0x0920, 2) + +// Packet: 0x0921 +packetLen(0x0921, 2) + +// Packet: 0x0922 +packetLen(0x0922, 2) + +// Packet: 0x0923 +packetLen(0x0923, 2) + +// Packet: 0x0924 +packetLen(0x0924, 2) + +// Packet: 0x0925 +packetLen(0x0925, 2) + +// Packet: 0x0926 +packetLen(0x0926, 2) + +// Packet: 0x0927 +packetLen(0x0927, 2) + +// Packet: 0x0928 +packetLen(0x0928, 2) + +// Packet: 0x0929 +packetLen(0x0929, 2) + +// Packet: 0x092a +packetLen(0x092a, 2) + +// Packet: 0x092b +packetLen(0x092b, 2) + +// Packet: 0x092c +packetLen(0x092c, 2) + +// Packet: 0x092d +packetLen(0x092d, 2) + +// Packet: 0x092e +packetLen(0x092e, 2) + +// Packet: 0x092f +packetLen(0x092f, 2) + +// Packet: 0x0930 +packetLen(0x0930, 2) + +// Packet: 0x0931 +packetLen(0x0931, 2) + +// Packet: 0x0932 +packetLen(0x0932, 2) + +// Packet: 0x0933 +packetLen(0x0933, 2) + +// Packet: 0x0934 +packetLen(0x0934, 2) + +// Packet: 0x0935 +packetLen(0x0935, 2) + +// Packet: 0x0936 +packetLen(0x0936, 2) + +// Packet: 0x0937 +packetLen(0x0937, 2) + +// Packet: 0x0938 +packetLen(0x0938, 2) + +// Packet: 0x0939 +packetLen(0x0939, 2) + +// Packet: 0x093a +packetLen(0x093a, 2) + +// Packet: 0x093b +packetLen(0x093b, 2) + +// Packet: 0x093c +packetLen(0x093c, 2) + +// Packet: 0x093d +packetLen(0x093d, 2) + +// Packet: 0x093e +packetLen(0x093e, 2) + +// Packet: 0x093f +packetLen(0x093f, 2) + +// Packet: 0x0940 +packetLen(0x0940, 2) + +// Packet: 0x0941 +packetLen(0x0941, 2) + +// Packet: 0x0942 +packetLen(0x0942, 2) + +// Packet: 0x0943 +packetLen(0x0943, 2) + +// Packet: 0x0944 +packetLen(0x0944, 2) + +// Packet: 0x0945 +packetLen(0x0945, 2) + +// Packet: 0x0946 +packetLen(0x0946, 2) + +// Packet: 0x0947 +packetLen(0x0947, 2) + +// Packet: 0x0948 +packetLen(0x0948, 2) + +// Packet: 0x0949 +packetLen(0x0949, 2) + +// Packet: 0x094a +packetLen(0x094a, 2) + +// Packet: 0x094b +packetLen(0x094b, 2) + +// Packet: 0x094c +packetLen(0x094c, 2) + +// Packet: 0x094d +packetLen(0x094d, 2) + +// Packet: 0x094e +packetLen(0x094e, 2) + +// Packet: 0x094f +packetLen(0x094f, 2) + +// Packet: 0x0950 +packetLen(0x0950, 2) + +// Packet: 0x0951 +packetLen(0x0951, 2) + +// Packet: 0x0952 +packetLen(0x0952, 2) + +// Packet: 0x0953 +packetLen(0x0953, 2) + +// Packet: 0x0954 +packetLen(0x0954, 2) + +// Packet: 0x0955 +packetLen(0x0955, 2) + +// Packet: 0x0956 +packetLen(0x0956, 2) + +// Packet: 0x0957 +packetLen(0x0957, 2) + +// Packet: 0x0958 +packetLen(0x0958, 2) + +// Packet: 0x0959 +packetLen(0x0959, 2) + +// Packet: 0x095a +packetLen(0x095a, 2) + +// Packet: 0x095b +packetLen(0x095b, 2) + +// Packet: 0x095c +packetLen(0x095c, 2) + +// Packet: 0x095d +packetLen(0x095d, 2) + +// Packet: 0x095e +packetLen(0x095e, 2) + +// Packet: 0x095f +packetLen(0x095f, 2) + +// Packet: 0x0960 +packetLen(0x0960, 2) + +// Packet: 0x0961 +packetLen(0x0961, 2) + +// Packet: 0x0962 +packetLen(0x0962, 2) + +// Packet: 0x0963 +packetLen(0x0963, 2) + +// Packet: 0x0964 +packetLen(0x0964, 2) + +// Packet: 0x0965 +packetLen(0x0965, 2) + +// Packet: 0x0966 +packetLen(0x0966, 2) + +// Packet: 0x0967 +packetLen(0x0967, 2) + +// Packet: 0x0968 +packetLen(0x0968, 2) + +// Packet: 0x0969 +packetLen(0x0969, 2) + +// Packet: 0x096a +packetLen(0x096a, 2) + +// Packet: 0x096b +packetLen(0x096b, 4) + +// Packet: 0x096c +packetLen(0x096c, 6) + +// Packet: 0x096d +packetLen(0x096d, -1) + +// Packet: 0x096e +packetLen(0x096e, -1) + +// Packet: 0x096f +packetLen(0x096f, 7) + +// Packet: 0x0970 +packetLen(0x0970, 31) + +// Packet: 0x0971 +packetLen(0x0971, 6) + +// Packet: 0x0972 +packetLen(0x0972, -1) + +// Packet: 0x0973 +packetLen(0x0973, 7) + +// Packet: 0x0974 +packetLen(0x0974, 2) + +// Packet: 0x0975 +packetLen(0x0975, -1) + +// Packet: 0x0976 +packetLen(0x0976, -1) + +// Packet: 0x0977 +packetLen(0x0977, 14) + +// Packet: 0x0978 +packetLen(0x0978, 6) + +// Packet: 0x0979 +packetLen(0x0979, 50) + +// Packet: 0x097a +packetLen(0x097a, -1) + +// Packet: 0x097b +packetLen(0x097b, -1) + +// Packet: 0x097c +packetLen(0x097c, 4) + +// Packet: 0x097d +packetLen(0x097d, 288) + +// Packet: 0x097e +packetLen(0x097e, 12) + +// Packet: 0x097f +packetLen(0x097f, -1) + +// Packet: 0x0980 +packetLen(0x0980, 7) + +// Packet: 0x0981 +packetLen(0x0981, -1) + +// Packet: 0x0982 +packetLen(0x0982, 7) + +// Packet: 0x0983 +packetLen(0x0983, 29) + +// Packet: 0x0984 +packetLen(0x0984, 28) + +// Packet: 0x0985 +packetLen(0x0985, -1) + +// Packet: 0x0986 +packetLen(0x0986, 10) + +// Packet: 0x0987 +packetLen(0x0987, -1) + +// Packet: 0x0988 +packetLen(0x0988, 6) + +// Packet: 0x0989 +packetLen(0x0989, 2) + +// Packet: 0x098a +packetLen(0x098a, -1) + +// Packet: 0x098b +packetLen(0x098b, 2) + +// Packet: 0x098c +packetLen(0x098c, 4) + +// Packet: 0x098d +packetLen(0x098d, -1) + +// Packet: 0x098e +packetLen(0x098e, -1) + +// Packet: 0x098f +packetLen(0x098f, -1) + +// Packet: 0x0990 +packetLen(0x0990, 41) + +// Packet: 0x0991 +packetLen(0x0991, -1) + +// Packet: 0x0992 +packetLen(0x0992, -1) + +// Packet: 0x0993 +packetLen(0x0993, -1) + +// Packet: 0x0994 +packetLen(0x0994, -1) + +// Packet: 0x0995 +packetLen(0x0995, -1) + +// Packet: 0x0996 +packetLen(0x0996, -1) + +// Packet: 0x0997 +packetLen(0x0997, -1) + +// Packet: 0x0998 +packetLen(0x0998, 8) + +// Packet: 0x0999 +packetLen(0x0999, 11) + +// Packet: 0x099a +packetLen(0x099a, 9) + +// Packet: 0x099b +packetLen(0x099b, 8) + +// Packet: 0x099c +packetLen(0x099c, 6) + +// Packet: 0x099d +packetLen(0x099d, -1) + +// Packet: 0x099e +packetLen(0x099e, 12) + +// Packet: 0x099f +packetLen(0x099f, -1) + +// Packet: 0x09a0 +packetLen(0x09a0, 6) + +// Packet: 0x09a1 +packetLen(0x09a1, 2) + +// Packet: 0x09a2 +packetLen(0x09a2, 6) + +// Packet: 0x09a3 +packetLen(0x09a3, -1) + +// Packet: 0x09a4 +packetLen(0x09a4, 18) + +// Packet: 0x09a5 +packetLen(0x09a5, 7) + +// Packet: 0x09a6 +packetLen(0x09a6, 12) + +// Packet: 0x09a7 +packetLen(0x09a7, 10) + +// Packet: 0x09a8 +packetLen(0x09a8, 16) + +// Packet: 0x09a9 +packetLen(0x09a9, 10) + +// Packet: 0x09aa +packetLen(0x09aa, 16) + +// Packet: 0x09ab +packetLen(0x09ab, 6) + +// Packet: 0x09ac +packetLen(0x09ac, -1) + +// Packet: 0x09ad +packetLen(0x09ad, 12) + +// Packet: 0x09ae +packetLen(0x09ae, 19) + +// Packet: 0x09af +packetLen(0x09af, 4) + +// Packet: 0x09b0 +packetLen(0x09b0, 10) + +// Packet: 0x09b1 +packetLen(0x09b1, 4) + +// Packet: 0x09b2 +packetLen(0x09b2, 10) + +// Packet: 0x09b3 +packetLen(0x09b3, 6) + +// Packet: 0x09b4 +packetLen(0x09b4, 6) + +// Packet: 0x09b5 +packetLen(0x09b5, 2) + +// Packet: 0x09b6 +packetLen(0x09b6, 6) + +// Packet: 0x09b7 +packetLen(0x09b7, 4) + +// Packet: 0x09b8 +packetLen(0x09b8, 6) + +// Packet: 0x09b9 +packetLen(0x09b9, 4) + +// Packet: 0x09ba +packetLen(0x09ba, 2) + +// Packet: 0x09bb +packetLen(0x09bb, 6) + +// Packet: 0x09bc +packetLen(0x09bc, 6) + +// Packet: 0x09bd +packetLen(0x09bd, 2) + +// Packet: 0x09be +packetLen(0x09be, 2) + +// Packet: 0x09bf +packetLen(0x09bf, 4) + +// Packet: 0x09c1 +packetLen(0x09c1, 10) + +// Packet: 0x09c2 +packetLen(0x09c2, -1) + +// Packet: 0x09c3 +packetLen(0x09c3, 10) + +// Packet: 0x09c4 +packetLen(0x09c4, 10) + +// Packet: 0x09c5 +packetLen(0x09c5, 1042) + +// Packet: 0x09c6 +packetLen(0x09c6, -1) + +// Packet: 0x09c7 +packetLen(0x09c7, 18) + +// Packet: 0x09c8 +packetLen(0x09c8, -1) + +// Packet: 0x09c9 +packetLen(0x09c9, -1) + +// Packet: 0x09ca +packetLen(0x09ca, -1) + +// Packet: 0x09cb +packetLen(0x09cb, 17) + +// Packet: 0x09cc +packetLen(0x09cc, -1) + +// Packet: 0x09cd +packetLen(0x09cd, 8) + +// Packet: 0x09ce +packetLen(0x09ce, 102) + +// Packet: 0x09cf +packetLen(0x09cf, -1) + +// Packet: 0x09d0 +packetLen(0x09d0, -1) + +// Packet: 0x09d1 +packetLen(0x09d1, 14) + +// Packet: 0x09d2 +packetLen(0x09d2, -1) + +// Packet: 0x09d3 +packetLen(0x09d3, -1) + +// Packet: 0x09d4 +packetLen(0x09d4, 2) + +// Packet: 0x09d5 +packetLen(0x09d5, -1) + +// Packet: 0x09d6 +packetLen(0x09d6, -1) + +// Packet: 0x09d7 +packetLen(0x09d7, -1) + +// Packet: 0x09d8 +packetLen(0x09d8, 2) + +// Packet: 0x09d9 +packetLen(0x09d9, 4) + +// Packet: 0x09da +packetLen(0x09da, -1) + +// Packet: 0x09db +packetLen(0x09db, -1) + +// Packet: 0x09dc +packetLen(0x09dc, -1) + +// Packet: 0x09dd +packetLen(0x09dd, -1) + +// Packet: 0x09de +packetLen(0x09de, -1) + +// Packet: 0x09df +packetLen(0x09df, 7) + +// Packet: 0x09e0 +packetLen(0x09e0, -1) + +// Packet: 0x09e1 +packetLen(0x09e1, 8) + +// Packet: 0x09e2 +packetLen(0x09e2, 8) + +// Packet: 0x09e3 +packetLen(0x09e3, 8) + +// Packet: 0x09e4 +packetLen(0x09e4, 8) + +// Packet: 0x09e5 +packetLen(0x09e5, 18) + +// Packet: 0x09e6 +packetLen(0x09e6, 24) + +// Packet: 0x09e7 +packetLen(0x09e7, 3) + +// Packet: 0x09e8 +packetLen(0x09e8, 11) + +// Packet: 0x09e9 +packetLen(0x09e9, 2) + +// Packet: 0x09ea +packetLen(0x09ea, 11) + +// Packet: 0x09eb +packetLen(0x09eb, -1) + +// Packet: 0x09ec +packetLen(0x09ec, -1) + +// Packet: 0x09ed +packetLen(0x09ed, 3) + +// Packet: 0x09ee +packetLen(0x09ee, 11) + +// Packet: 0x09ef +packetLen(0x09ef, 11) + +// Packet: 0x09f0 +packetLen(0x09f0, -1) + +// Packet: 0x09f1 +packetLen(0x09f1, 11) + +// Packet: 0x09f2 +packetLen(0x09f2, 12) + +// Packet: 0x09f3 +packetLen(0x09f3, 11) + +// Packet: 0x09f4 +packetLen(0x09f4, 12) + +// Packet: 0x09f5 +packetLen(0x09f5, 11) + +// Packet: 0x09f6 +packetLen(0x09f6, 11) + +// Packet: 0x09f7 +packetLen(0x09f7, 77) + +// Packet: 0x09f8 +packetLen(0x09f8, -1) + +// Packet: 0x09f9 +packetLen(0x09f9, 143) + +// Packet: 0x09fa +packetLen(0x09fa, -1) + +// Packet: 0x09fb +packetLen(0x09fb, -1) + +// Packet: 0x09fc +packetLen(0x09fc, 6) + +// Packet: 0x09fd +packetLen(0x09fd, -1) + +// Packet: 0x09fe +packetLen(0x09fe, -1) + +// Packet: 0x09ff +packetLen(0x09ff, -1) + +// Packet: 0x0a00 +packetLen(0x0a00, 269) + +// Packet: 0x0a01 +packetLen(0x0a01, 3) + +// Packet: 0x0a02 +packetLen(0x0a02, 4) + +// Packet: 0x0a03 +packetLen(0x0a03, 2) + +// Packet: 0x0a04 +packetLen(0x0a04, 6) + +// Packet: 0x0a05 +packetLen(0x0a05, 63) + +// Packet: 0x0a06 +packetLen(0x0a06, 6) + +// Packet: 0x0a07 +packetLen(0x0a07, 9) + +// Packet: 0x0a08 +packetLen(0x0a08, 26) + +// Packet: 0x0a09 +packetLen(0x0a09, 55) + +// Packet: 0x0a0a +packetLen(0x0a0a, 57) + +// Packet: 0x0a0b +packetLen(0x0a0b, 57) + +// Packet: 0x0a0c +packetLen(0x0a0c, 66) + +// Packet: 0x0a0d +packetLen(0x0a0d, -1) + +// Packet: 0x0a0e +packetLen(0x0a0e, 14) + +// Packet: 0x0a0f +packetLen(0x0a0f, -1) + +// Packet: 0x0a10 +packetLen(0x0a10, -1) + +// Packet: 0x0a11 +packetLen(0x0a11, -1) + +// Packet: 0x0a12 +packetLen(0x0a12, 27) + +// Packet: 0x0a13 +packetLen(0x0a13, 26) + +// Packet: 0x0a14 +packetLen(0x0a14, 10) + +// Packet: 0x0a15 +packetLen(0x0a15, 12) + +// Packet: 0x0a16 +packetLen(0x0a16, 26) + +// Packet: 0x0a17 +packetLen(0x0a17, 6) + +// Packet: 0x0a18 +packetLen(0x0a18, 14) + +// Packet: 0x0a19 +packetLen(0x0a19, 2) + +// Packet: 0x0a1a +packetLen(0x0a1a, 25) + +// Packet: 0x0a1b +packetLen(0x0a1b, 2) + +// Packet: 0x0a1c +packetLen(0x0a1c, -1) + +// Packet: 0x0a1d +packetLen(0x0a1d, 2) + +// Packet: 0x0a1e +packetLen(0x0a1e, 3) + +// Packet: 0x0a1f +packetLen(0x0a1f, 2) + +// Packet: 0x0a20 +packetLen(0x0a20, 23) + +// Packet: 0x0a21 +packetLen(0x0a21, 3) + +// Packet: 0x0a22 +packetLen(0x0a22, 7) + +// Packet: 0x0a23 +packetLen(0x0a23, -1) + +// Packet: 0x0a24 +packetLen(0x0a24, 66) + +// Packet: 0x0a25 +packetLen(0x0a25, 6) + +// Packet: 0x0a26 +packetLen(0x0a26, 7) + +// Packet: 0x0a27 +packetLen(0x0a27, 8) + +// Packet: 0x0a28 +packetLen(0x0a28, 3) + +// Packet: 0x0a29 +packetLen(0x0a29, 6) + +// Packet: 0x0a2a +packetLen(0x0a2a, 6) + +// Packet: 0x0a2b +packetLen(0x0a2b, 14) + +// Packet: 0x0a2c +packetLen(0x0a2c, 12) + +// Packet: 0x0a2d +packetLen(0x0a2d, -1) + +// Packet: 0x0a2e +packetLen(0x0a2e, 6) + +// Packet: 0x0a2f +packetLen(0x0a2f, 7) + +// Packet: 0x0a30 +packetLen(0x0a30, 106) + +// Packet: 0x0a31 +packetLen(0x0a31, -1) + +// Packet: 0x0a32 +packetLen(0x0a32, 2) + +// Packet: 0x0a33 +packetLen(0x0a33, 7) + +// Packet: 0x0a34 +packetLen(0x0a34, 6) + +// Packet: 0x0a35 +packetLen(0x0a35, 4) + +// Packet: 0x0a36 +packetLen(0x0a36, 7) + +// Packet: 0x0a37 +packetLen(0x0a37, 69) + +// Packet: 0x0a38 +packetLen(0x0a38, 3) + +// Packet: 0x0a39 +packetLen(0x0a39, 36) + +// Packet: 0x0a3a +packetLen(0x0a3a, 12) + +// Packet: 0x0a3b +packetLen(0x0a3b, -1) + +// Packet: 0x0a3c +packetLen(0x0a3c, -1) + +// Packet: 0x0a3d +packetLen(0x0a3d, 20) + +// Packet: 0x0a3e +packetLen(0x0a3e, -1) + +// Packet: 0x0a3f +packetLen(0x0a3f, 11) + +// Packet: 0x0a40 +packetLen(0x0a40, 11) + +// Packet: 0x0a41 +packetLen(0x0a41, 18) + +// Packet: 0x0a42 +packetLen(0x0a42, 43) + +// Packet: 0x0a43 +packetLen(0x0a43, 85) + +// Packet: 0x0a44 +packetLen(0x0a44, -1) + +// Packet: 0x0a46 +packetLen(0x0a46, 14) + +// Packet: 0x0a47 +packetLen(0x0a47, 3) + +// Packet: 0x0a48 +packetLen(0x0a48, 2) + +// Packet: 0x0a49 +packetLen(0x0a49, 22) + +// Packet: 0x0a4a +packetLen(0x0a4a, 6) + +// Packet: 0x0a4b +packetLen(0x0a4b, 22) + +// Packet: 0x0a4c +packetLen(0x0a4c, 28) + +// Packet: 0x0a4d +packetLen(0x0a4d, -1) + +// Packet: 0x0a4e +packetLen(0x0a4e, 6) + +// Packet: 0x0a4f +packetLen(0x0a4f, -1) + +// Packet: 0x0a50 +packetLen(0x0a50, 4) + +// Packet: 0x0a51 +packetLen(0x0a51, 34) + +// Packet: 0x0a52 +packetLen(0x0a52, 20) + +// Packet: 0x0a53 +packetLen(0x0a53, 10) + +// Packet: 0x0a54 +packetLen(0x0a54, -1) + +// Packet: 0x0a55 +packetLen(0x0a55, 2) + +// Packet: 0x0a56 +packetLen(0x0a56, 6) + +// Packet: 0x0a57 +packetLen(0x0a57, 6) + +// Packet: 0x0a58 +packetLen(0x0a58, 8) + +// Packet: 0x0a59 +packetLen(0x0a59, -1) + +// Packet: 0x0a5a +packetLen(0x0a5a, 2) + +// Packet: 0x0a5b +packetLen(0x0a5b, 7) + +// Packet: 0x0a5c +packetLen(0x0a5c, 18) + +// Packet: 0x0a5d +packetLen(0x0a5d, 6) + +// Packet: 0x0a68 +packetLen(0x0a68, 3) + +// Packet: 0x0a69 +packetLen(0x0a69, 6) + +// Packet: 0x0a6a +packetLen(0x0a6a, 12) + +// Packet: 0x0a6b +packetLen(0x0a6b, -1) + +// Packet: 0x0a6c +packetLen(0x0a6c, 7) + +// Packet: 0x0a6d +packetLen(0x0a6d, -1) + +// Packet: 0x0a6e +packetLen(0x0a6e, -1) + +// Packet: 0x0a6f +packetLen(0x0a6f, -1) + +// Packet: 0x0a70 +packetLen(0x0a70, 2) + +// Packet: 0x0a71 +packetLen(0x0a71, -1) + +// Packet: 0x0a72 +packetLen(0x0a72, 61) + +// Packet: 0x0a73 +packetLen(0x0a73, 2) + +// Packet: 0x0a74 +packetLen(0x0a74, 8) + +// Packet: 0x0a76 +packetLen(0x0a76, 80) + +// Packet: 0x0a77 +packetLen(0x0a77, 15) + +// Packet: 0x0a78 +packetLen(0x0a78, 15) + +// Packet: 0x0a79 +packetLen(0x0a79, -1) + +// Packet: 0x0a7b +packetLen(0x0a7b, -1) + +// Packet: 0x0a7c +packetLen(0x0a7c, -1) + +// Packet: 0x0a7d +packetLen(0x0a7d, -1) + +// Packet: 0x0a7e +packetLen(0x0a7e, -1) + +// Packet: 0x0a7f +packetLen(0x0a7f, -1) + +// Packet: 0x0a80 +packetLen(0x0a80, 6) + +// Packet: 0x0a81 +packetLen(0x0a81, 4) + +// Packet: 0x0a82 +packetLen(0x0a82, 46) + +// Packet: 0x0a83 +packetLen(0x0a83, 46) + +// Packet: 0x0a84 +packetLen(0x0a84, 94) + +// Packet: 0x0a85 +packetLen(0x0a85, 82) + +// Packet: 0x0a86 +packetLen(0x0a86, -1) + +// Packet: 0x0a87 +packetLen(0x0a87, -1) + +// Packet: 0x0a88 +packetLen(0x0a88, 2) + +// Packet: 0x0a89 +packetLen(0x0a89, 61) + +// Packet: 0x0a8a +packetLen(0x0a8a, 6) + +// Packet: 0x0a8b +packetLen(0x0a8b, 2) + +// Packet: 0x0a8c +packetLen(0x0a8c, 2) + +// Packet: 0x0a8d +packetLen(0x0a8d, -1) + +// Packet: 0x0a8e +packetLen(0x0a8e, 2) + +// Packet: 0x0a8f +packetLen(0x0a8f, 2) + +// Packet: 0x0a90 +packetLen(0x0a90, 3) + +// Packet: 0x0a91 +packetLen(0x0a91, -1) + +// Packet: 0x0a92 +packetLen(0x0a92, -1) + +// Packet: 0x0a93 +packetLen(0x0a93, 3) + +// Packet: 0x0a94 +packetLen(0x0a94, 2) + +// Packet: 0x0a95 +packetLen(0x0a95, 4) + +// Packet: 0x0a96 +packetLen(0x0a96, 61) + +// Packet: 0x0a97 +packetLen(0x0a97, 8) + +// Packet: 0x0a98 +packetLen(0x0a98, 10) + +// Packet: 0x0a99 +packetLen(0x0a99, 4) + +// Packet: 0x0a9a +packetLen(0x0a9a, 10) + +// Packet: 0x0a9b +packetLen(0x0a9b, -1) + +// Packet: 0x0a9c +packetLen(0x0a9c, 2) + +// Packet: 0x0a9d +packetLen(0x0a9d, 4) + +// Packet: 0x0a9e +packetLen(0x0a9e, 2) + +// Packet: 0x0a9f +packetLen(0x0a9f, 2) + +// Packet: 0x0aa0 +packetLen(0x0aa0, 2) + +// Packet: 0x0aa1 +packetLen(0x0aa1, 4) + +// Packet: 0x0aa2 +packetLen(0x0aa2, -1) + +// Packet: 0x0aa3 +packetLen(0x0aa3, 9) + +// Packet: 0x0aa4 +packetLen(0x0aa4, 2) + +// Packet: 0x0aa5 +packetLen(0x0aa5, -1) + +// Packet: 0x0aa6 +packetLen(0x0aa6, 36) + +// Packet: 0x0aa7 +packetLen(0x0aa7, 6) + +// Packet: 0x0aa8 +packetLen(0x0aa8, 5) + +// Packet: 0x0aa9 +packetLen(0x0aa9, -1) + +// Packet: 0x0aaa +packetLen(0x0aaa, -1) + +// Packet: 0x0aab +packetLen(0x0aab, -1) + +// Packet: 0x0aac +packetLen(0x0aac, 69) + +// Packet: 0x0aad +packetLen(0x0aad, 51) + +// Packet: 0x0aae +packetLen(0x0aae, 2) + +// Packet: 0x0aaf +packetLen(0x0aaf, 6) + +// Packet: 0x0ab0 +packetLen(0x0ab0, 6) + +// Packet: 0x0ab1 +packetLen(0x0ab1, 14) + +// Packet: 0x0ab2 +packetLen(0x0ab2, 7) + +// Packet: 0x0ab3 +packetLen(0x0ab3, 19) + +// Packet: 0x0ab4 +packetLen(0x0ab4, 6) + +// Packet: 0x0ab5 +packetLen(0x0ab5, 2) + +// Packet: 0x0ab6 +packetLen(0x0ab6, 8) + +// Packet: 0x0ab7 +packetLen(0x0ab7, 4) + +// Packet: 0x0ab8 +packetLen(0x0ab8, 2) + +// Packet: 0x0ab9 +packetLen(0x0ab9, 47) + +// Packet: 0x0aba +packetLen(0x0aba, 2) + +// Packet: 0x0abb +packetLen(0x0abb, 2) + +// Packet: 0x0abc +packetLen(0x0abc, -1) + +// Packet: 0x0abd +packetLen(0x0abd, 10) + +// Packet: 0x0abe +packetLen(0x0abe, -1) + +// Packet: 0x0abf +packetLen(0x0abf, -1) + +// Packet: 0x0ac0 +packetLen(0x0ac0, 26) + +// Packet: 0x0ac1 +packetLen(0x0ac1, 26) + +// Packet: 0x0ac2 +packetLen(0x0ac2, -1) + +// Packet: 0x0ac3 +packetLen(0x0ac3, 2) + +// Packet: 0x0ac4 +packetLen(0x0ac4, -1) + +// Packet: 0x0ac5 +packetLen(0x0ac5, 156) + +// Packet: 0x0ac6 +packetLen(0x0ac6, 156) + +// Packet: 0x0ac7 +packetLen(0x0ac7, 156) + +// Packet: 0x0ac8 +packetLen(0x0ac8, 2) + +// Packet: 0x0ac9 +packetLen(0x0ac9, -1) + +// Packet: 0x0aca +packetLen(0x0aca, 3) + +// Packet: 0x0acb +packetLen(0x0acb, 12) + +// Packet: 0x0acc +packetLen(0x0acc, 18) + +// Packet: 0x0acd +packetLen(0x0acd, 23) + +// Packet: 0x0ace +packetLen(0x0ace, 4) + +// Packet: 0x0acf +packetLen(0x0acf, 68) + +// Packet: 0x0ad0 +packetLen(0x0ad0, 11) + +// Packet: 0x0ad1 +packetLen(0x0ad1, -1) + +// Packet: 0x0ad2 +packetLen(0x0ad2, 30) + +// Packet: 0x0ad3 +packetLen(0x0ad3, -1) + +// Packet: 0x0ad4 +packetLen(0x0ad4, -1) + +// Packet: 0x0ad5 +packetLen(0x0ad5, 2) + +// Packet: 0x0ad6 +packetLen(0x0ad6, 2) + +// Packet: 0x0ad7 +packetLen(0x0ad7, 8) + +// Packet: 0x0ad8 +packetLen(0x0ad8, 8) + +// Packet: 0x0ad9 +packetLen(0x0ad9, -1) + +// Packet: 0x0ada +packetLen(0x0ada, 32) + +// Packet: 0x0adb +packetLen(0x0adb, -1) + +// Packet: 0x0adc +packetLen(0x0adc, 6) + +// Packet: 0x0add +packetLen(0x0add, 24) + +// Packet: 0x0ade +packetLen(0x0ade, 6) + +// Packet: 0x0adf +packetLen(0x0adf, 58) + +// Packet: 0x0ae0 +packetLen(0x0ae0, 30) + +// Packet: 0x0ae1 +packetLen(0x0ae1, 28) + +// Packet: 0x0ae2 +packetLen(0x0ae2, 7) + +// Packet: 0x0ae3 +packetLen(0x0ae3, -1) + +// Packet: 0x0ae4 +packetLen(0x0ae4, 89) + +// Packet: 0x0ae5 +packetLen(0x0ae5, -1) + +// Packet: 0x0ae6 +packetLen(0x0ae6, 10) + +// Packet: 0x0ae7 +packetLen(0x0ae7, 38) + +// Packet: 0x0ae8 +packetLen(0x0ae8, 2) + +// Packet: 0x0ae9 +packetLen(0x0ae9, 13) + +// Packet: 0x0aec +packetLen(0x0aec, 2) + +// Packet: 0x0aed +packetLen(0x0aed, 2) + +// Packet: 0x0aee +packetLen(0x0aee, 2) + +// Packet: 0x0aef +packetLen(0x0aef, 2) + +// Packet: 0x0af0 +packetLen(0x0af0, 10) + +// Packet: 0x0af1 +packetLen(0x0af1, 102) + +// Packet: 0x0af2 +packetLen(0x0af2, 40) + +// Packet: 0x0af3 +packetLen(0x0af3, -1) + +// Packet: 0x0af4 +packetLen(0x0af4, 11) + +// Packet: 0x0af5 +packetLen(0x0af5, 3) + +// Packet: 0x0af6 +packetLen(0x0af6, 88) + +// Packet: 0x0af7 +packetLen(0x0af7, 32) + +// Packet: 0x0af8 +packetLen(0x0af8, 11) + +// Packet: 0x0af9 +packetLen(0x0af9, 6) + +// Packet: 0x0afa +packetLen(0x0afa, 58) + +// Packet: 0x0afb +packetLen(0x0afb, -1) + +// Packet: 0x0afc +packetLen(0x0afc, 16) + +// Packet: 0x0afd +packetLen(0x0afd, -1) + +// Packet: 0x0afe +packetLen(0x0afe, -1) + +// Packet: 0x0aff +packetLen(0x0aff, -1) + +// Packet: 0x0b00 +packetLen(0x0b00, 8) + +// Packet: 0x0b01 +packetLen(0x0b01, 56) + +// Packet: 0x0b02 +packetLen(0x0b02, 26) + +// Packet: 0x0b03 +packetLen(0x0b03, -1) + +// Packet: 0x0b04 +#if PACKETVER >= 20211103 +packetLen(0x0b04, 190) +#elif PACKETVER >= 20210107 +packetLen(0x0b04, 90) +#endif + +// Packet: 0x0b05 +packetLen(0x0b05, 63) + +// Packet: 0x0b07 +packetLen(0x0b07, -1) + +// Packet: 0x0b08 +packetLen(0x0b08, -1) + +// Packet: 0x0b09 +packetLen(0x0b09, -1) + +// Packet: 0x0b0a +packetLen(0x0b0a, -1) + +// Packet: 0x0b0b +packetLen(0x0b0b, 4) + +// Packet: 0x0b0c +packetLen(0x0b0c, 155) + +// Packet: 0x0b0d +packetLen(0x0b0d, 10) + +// Packet: 0x0b0e +packetLen(0x0b0e, -1) + +// Packet: 0x0b0f +packetLen(0x0b0f, -1) + +// Packet: 0x0b10 +packetLen(0x0b10, 10) + +// Packet: 0x0b11 +packetLen(0x0b11, 4) + +// Packet: 0x0b12 +packetLen(0x0b12, 2) + +// Packet: 0x0b13 +packetLen(0x0b13, 48) + +// Packet: 0x0b14 +packetLen(0x0b14, 2) + +// Packet: 0x0b15 +packetLen(0x0b15, 7) + +// Packet: 0x0b16 +packetLen(0x0b16, 2) + +// Packet: 0x0b17 +packetLen(0x0b17, 3) + +// Packet: 0x0b18 +packetLen(0x0b18, 4) + +// Packet: 0x0b19 +packetLen(0x0b19, 2) + +// Packet: 0x0b1a +packetLen(0x0b1a, 29) + +// Packet: 0x0b1b +packetLen(0x0b1b, 2) + +// Packet: 0x0b1c +packetLen(0x0b1c, 2) + +// Packet: 0x0b1d +packetLen(0x0b1d, 2) + +// Packet: 0x0b1e +packetLen(0x0b1e, 14) + +// Packet: 0x0b1f +packetLen(0x0b1f, 14) + +// Packet: 0x0b20 +packetLen(0x0b20, 271) + +// Packet: 0x0b21 +packetLen(0x0b21, 13) + +// Packet: 0x0b22 +packetLen(0x0b22, 5) + +// Packet: 0x0b23 +packetLen(0x0b23, 6) + +// Packet: 0x0b24 +packetLen(0x0b24, 6) + +// Packet: 0x0b25 +packetLen(0x0b25, 6) + +// Packet: 0x0b27 +packetLen(0x0b27, -1) + +// Packet: 0x0b28 +packetLen(0x0b28, 3) + +// Packet: 0x0b2b +packetLen(0x0b2b, 11) + +// Packet: 0x0b2c +packetLen(0x0b2c, 3) + +// Packet: 0x0b2d +packetLen(0x0b2d, 11) + +// Packet: 0x0b2e +packetLen(0x0b2e, 4) + +// Packet: 0x0b2f +packetLen(0x0b2f, 73) + +// Packet: 0x0b30 +packetLen(0x0b30, -1) + +// Packet: 0x0b31 +packetLen(0x0b31, 17) + +// Packet: 0x0b32 +packetLen(0x0b32, -1) + +// Packet: 0x0b33 +packetLen(0x0b33, 17) + +// Packet: 0x0b34 +packetLen(0x0b34, 50) + +// Packet: 0x0b35 +packetLen(0x0b35, 3) + +// Packet: 0x0b36 +packetLen(0x0b36, -1) + +// Packet: 0x0b37 +packetLen(0x0b37, -1) + +// Packet: 0x0b39 +packetLen(0x0b39, -1) + +// Packet: 0x0b3c +packetLen(0x0b3c, 4) + +// Packet: 0x0b3d +packetLen(0x0b3d, -1) + +// Packet: 0x0b3e +packetLen(0x0b3e, -1) + +// Packet: 0x0b3f +packetLen(0x0b3f, 64) + +// Packet: 0x0b40 +packetLen(0x0b40, -1) + +// Packet: 0x0b41 +packetLen(0x0b41, 70) + +// Packet: 0x0b42 +packetLen(0x0b42, 62) + +// Packet: 0x0b43 +packetLen(0x0b43, 48) + +// Packet: 0x0b44 +packetLen(0x0b44, 58) + +// Packet: 0x0b45 +packetLen(0x0b45, 58) + +// Packet: 0x0b46 +packetLen(0x0b46, 10) + +// Packet: 0x0b47 +packetLen(0x0b47, 14) + +// Packet: 0x0b48 +packetLen(0x0b48, 18) + +// Packet: 0x0b49 +packetLen(0x0b49, 4) + +// Packet: 0x0b4a +packetLen(0x0b4a, 6) + +// Packet: 0x0b4b +packetLen(0x0b4b, 4) + +// Packet: 0x0b4c +packetLen(0x0b4c, 2) + +// Packet: 0x0b4d +packetLen(0x0b4d, -1) + +// Packet: 0x0b4e +packetLen(0x0b4e, -1) + +// Packet: 0x0b4f +packetLen(0x0b4f, 2) + +// Packet: 0x0b50 +packetLen(0x0b50, 2) + +// Packet: 0x0b51 +packetLen(0x0b51, 2) + +// Packet: 0x0b52 +packetLen(0x0b52, 2) + +// Packet: 0x0b53 +packetLen(0x0b53, 52) + +// Packet: 0x0b54 +packetLen(0x0b54, 8) + +// Packet: 0x0b55 +packetLen(0x0b55, -1) + +// Packet: 0x0b56 +packetLen(0x0b56, -1) + +// Packet: 0x0b57 +packetLen(0x0b57, -1) + +// Packet: 0x0b58 +packetLen(0x0b58, 2) + +// Packet: 0x0b59 +packetLen(0x0b59, 4) + +// Packet: 0x0b5a +packetLen(0x0b5a, -1) + +// Packet: 0x0b5b +packetLen(0x0b5b, 14) + +// Packet: 0x0b5c +packetLen(0x0b5c, 2) + +// Packet: 0x0b5d +packetLen(0x0b5d, 10) + +// Packet: 0x0b5e +packetLen(0x0b5e, 33) + +// Packet: 0x0b5f +packetLen(0x0b5f, -1) + +// Packet: 0x0b60 +packetLen(0x0b60, -1) + +// Packet: 0x0b61 +packetLen(0x0b61, -1) + +// Packet: 0x0b62 +packetLen(0x0b62, -1) + +// Packet: 0x0b63 +packetLen(0x0b63, -1) + +// Packet: 0x0b64 +packetLen(0x0b64, -1) + +// Packet: 0x0b65 +packetLen(0x0b65, -1) + +// Packet: 0x0b66 +packetLen(0x0b66, 26) + +// Packet: 0x0b67 +packetLen(0x0b67, 33) + +// Packet: 0x0b68 +packetLen(0x0b68, 12) + +// Packet: 0x0b69 +packetLen(0x0b69, 18) + +// Packet: 0x0b6a +packetLen(0x0b6a, -1) + +// Packet: 0x0b6b +packetLen(0x0b6b, 14) + +// Packet: 0x0b6c +packetLen(0x0b6c, 12) + +// Packet: 0x0b6d +packetLen(0x0b6d, 6) + +// Packet: 0x0b6e +packetLen(0x0b6e, 14) + +// Packet: 0x0b6f +packetLen(0x0b6f, 177) + +// Packet: 0x0b70 +packetLen(0x0b70, -1) + +// Packet: 0x0b71 +packetLen(0x0b71, 177) + +// Packet: 0x0b72 +packetLen(0x0b72, -1) + +// Packet: 0x0b73 +packetLen(0x0b73, 8) + +// Packet: 0x0b74 +packetLen(0x0b74, 1026) + +// Packet: 0x0b75 +packetLen(0x0b75, 1026) + +// Packet: 0x0b76 +packetLen(0x0b76, 77) + +// Packet: 0x0b77 +packetLen(0x0b77, -1) + +// Packet: 0x0b78 +packetLen(0x0b78, -1) + +// Packet: 0x0b79 +packetLen(0x0b79, -1) + +// Packet: 0x0b7a +packetLen(0x0b7a, -1) + +// Packet: 0x0b7b +packetLen(0x0b7b, 118) + +// Packet: 0x0b7c +packetLen(0x0b7c, -1) + +// Packet: 0x0b7d +packetLen(0x0b7d, -1) + +// Packet: 0x0b7e +packetLen(0x0b7e, 60) + +// Packet: 0x0b7f +packetLen(0x0b7f, 10) + +// Packet: 0x0b80 +packetLen(0x0b80, 10) + +// Packet: 0x0b8c +packetLen(0x0b8c, -1) + +// Packet: 0x0b8d +packetLen(0x0b8d, -1) + +// Packet: 0x0b8e +packetLen(0x0b8e, 18) + +// Packet: 0x0b8f +#if PACKETVER >= 20211103 +packetLen(0x0b8f, 6) +#endif + +// Packet: 0x0b90 +#if PACKETVER >= 20211103 +packetLen(0x0b90, 2) +#endif + +// Packet: 0x0b91 +#if PACKETVER >= 20211103 +packetLen(0x0b91, 8) +#endif + +// Packet: 0x0b92 +#if PACKETVER >= 20211103 +packetLen(0x0b92, 5) +#endif + +// Packet: 0x0b93 +#if PACKETVER >= 20211103 +packetLen(0x0b93, 12) +#endif + +// Packet: 0x0b94 +#if PACKETVER >= 20211103 +packetLen(0x0b94, 14) +#endif + +// Packet: 0x0b95 +#if PACKETVER >= 20211103 +packetLen(0x0b95, -1) +#endif + +// Packet: 0x0b96 +#if PACKETVER >= 20211103 +packetLen(0x0b96, 26) +#endif + +// Packet: 0x0b97 +#if PACKETVER >= 20211103 +packetLen(0x0b97, 27) +#endif + +// Packet: 0x0b98 +#if PACKETVER >= 20211103 +packetLen(0x0b98, 6) +#endif + +// Packet: 0x0b99 +#if PACKETVER >= 20211103 +packetLen(0x0b99, 10) +#endif + +// Packet: 0x0b9a +#if PACKETVER >= 20211103 +packetLen(0x0b9a, 11) +#endif + +// Packet: 0x0b9b +#if PACKETVER >= 20211103 +packetLen(0x0b9b, 12) +#endif + +// Packet: 0x0b9c +#if PACKETVER >= 20211103 +packetLen(0x0b9c, 16) +#endif + +// Packet: 0x0b9d +#if PACKETVER >= 20211103 +packetLen(0x0b9d, 14) +#endif + +// Packet: 0x0b9e +#if PACKETVER >= 20211103 +packetLen(0x0b9e, 12) +#endif + +// Packet: 0x0b9f +#if PACKETVER >= 20211103 +packetLen(0x0b9f, 10) +#endif + +// Packet: 0x0ba0 +#if PACKETVER >= 20211103 +packetLen(0x0ba0, 2) +#endif + +// Packet: 0x0ba1 +#if PACKETVER >= 20211103 +packetLen(0x0ba1, 3) +#endif + +// Packet: 0x0ba2 +#if PACKETVER >= 20211103 +packetLen(0x0ba2, 10) +#endif + +// Packet: 0x0ba3 +#if PACKETVER >= 20211103 +packetLen(0x0ba3, 10) +#endif + +// Packet: 0x0ba4 +#if PACKETVER >= 20211103 +packetLen(0x0ba4, 85) +#endif + +// Packet: 0x0ba5 +#if PACKETVER >= 20211103 +packetLen(0x0ba5, 12) +#endif + +// Packet: 0x0ba6 +#if PACKETVER >= 20211103 +packetLen(0x0ba6, -1) +#endif + +// Packet: 0x0ba7 +#if PACKETVER >= 20211103 +packetLen(0x0ba7, -1) +#endif + +// Packet: 0x0ba8 +#if PACKETVER >= 20211103 +packetLen(0x0ba8, 7) +#endif + +// Packet: 0x0ba9 +#if PACKETVER >= 20211103 +packetLen(0x0ba9, -1) +#endif + +// Packet: 0x0baa +#if PACKETVER >= 20211103 +packetLen(0x0baa, 22) +#endif + +// Packet: 0x0bab +#if PACKETVER >= 20211103 +packetLen(0x0bab, 22) +#endif + +// Packet: 0x0bac +#if PACKETVER >= 20211103 +packetLen(0x0bac, 22) +#endif + +// Packet: 0x0bad +#if PACKETVER >= 20211103 +packetLen(0x0bad, 2) +#endif + +// Packet: 0x0bae +#if PACKETVER >= 20211103 +packetLen(0x0bae, 3) +#endif + + +#endif /* COMMON_PACKETS2021_LEN_RE_H */ diff --git a/src/common/packets/packets2021_len_zero.h b/src/common/packets/packets2021_len_zero.h new file mode 100644 index 00000000000..be1b03cb822 --- /dev/null +++ b/src/common/packets/packets2021_len_zero.h @@ -0,0 +1,4853 @@ +/** + * This file is part of Hercules. + * http://herc.ws - http://github.com/HerculesWS/Hercules + * + * Copyright (C) 2018-2021 Hercules Dev Team + * Copyright (C) 2018-2021 Andrei Karas (4144) + * + * Hercules is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef COMMON_PACKETS2021_LEN_ZERO_H +#define COMMON_PACKETS2021_LEN_ZERO_H + +/* This file is autogenerated, please do not commit manual changes */ + +// Packet: 0x0064 +packetLen(0x0064, 55) + +// Packet: 0x0065 +packetLen(0x0065, 17) + +// Packet: 0x0066 +packetLen(0x0066, 3) + +// Packet: 0x0067 +packetLen(0x0067, 37) + +// Packet: 0x0068 +packetLen(0x0068, 46) + +// Packet: 0x0069 +packetLen(0x0069, -1) + +// Packet: 0x006a +packetLen(0x006a, 23) + +// Packet: 0x006b +packetLen(0x006b, -1) + +// Packet: 0x006c +packetLen(0x006c, 3) + +// Packet: 0x006d +packetLen(0x006d, 157) + +// Packet: 0x006e +packetLen(0x006e, 3) + +// Packet: 0x006f +packetLen(0x006f, 2) + +// Packet: 0x0070 +packetLen(0x0070, 3) + +// Packet: 0x0071 +packetLen(0x0071, 28) + +// Packet: 0x0072 +packetLen(0x0072, 22) + +// Packet: 0x0073 +packetLen(0x0073, 11) + +// Packet: 0x0074 +packetLen(0x0074, 3) + +// Packet: 0x0075 +packetLen(0x0075, -1) + +// Packet: 0x0076 +packetLen(0x0076, 9) + +// Packet: 0x0077 +packetLen(0x0077, 5) + +// Packet: 0x0078 +packetLen(0x0078, 55) + +// Packet: 0x0079 +packetLen(0x0079, 53) + +// Packet: 0x007a +packetLen(0x007a, 58) + +// Packet: 0x007b +packetLen(0x007b, 60) + +// Packet: 0x007c +packetLen(0x007c, 44) + +// Packet: 0x007d +packetLen(0x007d, 2) + +// Packet: 0x007e +packetLen(0x007e, 46) + +// Packet: 0x007f +packetLen(0x007f, 6) + +// Packet: 0x0080 +packetLen(0x0080, 7) + +// Packet: 0x0081 +packetLen(0x0081, 3) + +// Packet: 0x0082 +packetLen(0x0082, 2) + +// Packet: 0x0083 +packetLen(0x0083, 2) + +// Packet: 0x0084 +packetLen(0x0084, 2) + +// Packet: 0x0085 +packetLen(0x0085, 10) + +// Packet: 0x0086 +packetLen(0x0086, 16) + +// Packet: 0x0087 +packetLen(0x0087, 12) + +// Packet: 0x0088 +packetLen(0x0088, 10) + +// Packet: 0x0089 +packetLen(0x0089, 11) + +// Packet: 0x008a +packetLen(0x008a, 29) + +// Packet: 0x008b +packetLen(0x008b, 23) + +// Packet: 0x008c +packetLen(0x008c, 14) + +// Packet: 0x008d +packetLen(0x008d, -1) + +// Packet: 0x008e +packetLen(0x008e, -1) + +// Packet: 0x0090 +packetLen(0x0090, 7) + +// Packet: 0x0091 +packetLen(0x0091, 22) + +// Packet: 0x0092 +packetLen(0x0092, 28) + +// Packet: 0x0093 +packetLen(0x0093, 2) + +// Packet: 0x0094 +packetLen(0x0094, 19) + +// Packet: 0x0095 +packetLen(0x0095, 30) + +// Packet: 0x0096 +packetLen(0x0096, -1) + +// Packet: 0x0097 +packetLen(0x0097, -1) + +// Packet: 0x0098 +packetLen(0x0098, 3) + +// Packet: 0x0099 +packetLen(0x0099, -1) + +// Packet: 0x009a +packetLen(0x009a, -1) + +// Packet: 0x009b +packetLen(0x009b, 34) + +// Packet: 0x009c +packetLen(0x009c, 9) + +// Packet: 0x009d +packetLen(0x009d, 19) + +// Packet: 0x009e +packetLen(0x009e, 19) + +// Packet: 0x009f +packetLen(0x009f, 20) + +// Packet: 0x00a0 +packetLen(0x00a0, 33) + +// Packet: 0x00a1 +packetLen(0x00a1, 6) + +// Packet: 0x00a2 +packetLen(0x00a2, 14) + +// Packet: 0x00a3 +packetLen(0x00a3, -1) + +// Packet: 0x00a4 +packetLen(0x00a4, -1) + +// Packet: 0x00a5 +packetLen(0x00a5, -1) + +// Packet: 0x00a6 +packetLen(0x00a6, -1) + +// Packet: 0x00a7 +packetLen(0x00a7, 9) + +// Packet: 0x00a8 +packetLen(0x00a8, 7) + +// Packet: 0x00a9 +packetLen(0x00a9, 6) + +// Packet: 0x00aa +packetLen(0x00aa, 9) + +// Packet: 0x00ab +packetLen(0x00ab, 4) + +// Packet: 0x00ac +packetLen(0x00ac, 7) + +// Packet: 0x00ae +packetLen(0x00ae, -1) + +// Packet: 0x00af +packetLen(0x00af, 6) + +// Packet: 0x00b0 +packetLen(0x00b0, 8) + +// Packet: 0x00b1 +packetLen(0x00b1, 8) + +// Packet: 0x00b2 +packetLen(0x00b2, 3) + +// Packet: 0x00b3 +packetLen(0x00b3, 3) + +// Packet: 0x00b4 +packetLen(0x00b4, -1) + +// Packet: 0x00b5 +packetLen(0x00b5, 6) + +// Packet: 0x00b6 +packetLen(0x00b6, 6) + +// Packet: 0x00b7 +packetLen(0x00b7, -1) + +// Packet: 0x00b8 +packetLen(0x00b8, 7) + +// Packet: 0x00b9 +packetLen(0x00b9, 6) + +// Packet: 0x00ba +packetLen(0x00ba, 2) + +// Packet: 0x00bb +packetLen(0x00bb, 5) + +// Packet: 0x00bc +packetLen(0x00bc, 6) + +// Packet: 0x00bd +packetLen(0x00bd, 44) + +// Packet: 0x00be +packetLen(0x00be, 5) + +// Packet: 0x00bf +packetLen(0x00bf, 3) + +// Packet: 0x00c0 +packetLen(0x00c0, 7) + +// Packet: 0x00c1 +packetLen(0x00c1, 2) + +// Packet: 0x00c2 +packetLen(0x00c2, 6) + +// Packet: 0x00c3 +packetLen(0x00c3, 8) + +// Packet: 0x00c4 +packetLen(0x00c4, 6) + +// Packet: 0x00c5 +packetLen(0x00c5, 7) + +// Packet: 0x00c6 +packetLen(0x00c6, -1) + +// Packet: 0x00c7 +packetLen(0x00c7, -1) + +// Packet: 0x00c8 +packetLen(0x00c8, -1) + +// Packet: 0x00c9 +packetLen(0x00c9, -1) + +// Packet: 0x00ca +packetLen(0x00ca, 3) + +// Packet: 0x00cb +packetLen(0x00cb, 3) + +// Packet: 0x00cc +packetLen(0x00cc, 6) + +// Packet: 0x00cd +packetLen(0x00cd, 3) + +// Packet: 0x00ce +packetLen(0x00ce, 2) + +// Packet: 0x00cf +packetLen(0x00cf, 27) + +// Packet: 0x00d0 +packetLen(0x00d0, 3) + +// Packet: 0x00d1 +packetLen(0x00d1, 4) + +// Packet: 0x00d2 +packetLen(0x00d2, 4) + +// Packet: 0x00d3 +packetLen(0x00d3, 2) + +// Packet: 0x00d4 +packetLen(0x00d4, -1) + +// Packet: 0x00d5 +packetLen(0x00d5, -1) + +// Packet: 0x00d6 +packetLen(0x00d6, 3) + +// Packet: 0x00d7 +packetLen(0x00d7, -1) + +// Packet: 0x00d8 +packetLen(0x00d8, 6) + +// Packet: 0x00d9 +packetLen(0x00d9, 14) + +// Packet: 0x00da +packetLen(0x00da, 3) + +// Packet: 0x00db +packetLen(0x00db, -1) + +// Packet: 0x00dc +packetLen(0x00dc, 28) + +// Packet: 0x00dd +packetLen(0x00dd, 29) + +// Packet: 0x00de +packetLen(0x00de, -1) + +// Packet: 0x00df +packetLen(0x00df, -1) + +// Packet: 0x00e0 +packetLen(0x00e0, 30) + +// Packet: 0x00e1 +packetLen(0x00e1, 30) + +// Packet: 0x00e2 +packetLen(0x00e2, 26) + +// Packet: 0x00e3 +packetLen(0x00e3, 2) + +// Packet: 0x00e4 +packetLen(0x00e4, 6) + +// Packet: 0x00e5 +packetLen(0x00e5, 26) + +// Packet: 0x00e6 +packetLen(0x00e6, 3) + +// Packet: 0x00e7 +packetLen(0x00e7, 3) + +// Packet: 0x00e8 +packetLen(0x00e8, 8) + +// Packet: 0x00e9 +packetLen(0x00e9, 29) + +// Packet: 0x00ea +packetLen(0x00ea, 5) + +// Packet: 0x00eb +packetLen(0x00eb, 2) + +// Packet: 0x00ec +packetLen(0x00ec, 3) + +// Packet: 0x00ed +packetLen(0x00ed, 2) + +// Packet: 0x00ee +packetLen(0x00ee, 2) + +// Packet: 0x00ef +packetLen(0x00ef, 2) + +// Packet: 0x00f0 +packetLen(0x00f0, 3) + +// Packet: 0x00f1 +packetLen(0x00f1, 2) + +// Packet: 0x00f2 +packetLen(0x00f2, 6) + +// Packet: 0x00f3 +packetLen(0x00f3, -1) + +// Packet: 0x00f4 +packetLen(0x00f4, 31) + +// Packet: 0x00f5 +packetLen(0x00f5, 11) + +// Packet: 0x00f6 +packetLen(0x00f6, 8) + +// Packet: 0x00f7 +packetLen(0x00f7, 17) + +// Packet: 0x00f8 +packetLen(0x00f8, 2) + +// Packet: 0x00f9 +packetLen(0x00f9, 26) + +// Packet: 0x00fa +packetLen(0x00fa, 3) + +// Packet: 0x00fb +packetLen(0x00fb, -1) + +// Packet: 0x00fc +packetLen(0x00fc, 6) + +// Packet: 0x00fd +packetLen(0x00fd, 27) + +// Packet: 0x00fe +packetLen(0x00fe, 30) + +// Packet: 0x00ff +packetLen(0x00ff, 10) + +// Packet: 0x0100 +packetLen(0x0100, 2) + +// Packet: 0x0101 +packetLen(0x0101, 6) + +// Packet: 0x0102 +packetLen(0x0102, 6) + +// Packet: 0x0103 +packetLen(0x0103, 30) + +// Packet: 0x0104 +packetLen(0x0104, 79) + +// Packet: 0x0105 +packetLen(0x0105, 31) + +// Packet: 0x0106 +packetLen(0x0106, 10) + +// Packet: 0x0107 +packetLen(0x0107, 10) + +// Packet: 0x0108 +packetLen(0x0108, -1) + +// Packet: 0x0109 +packetLen(0x0109, -1) + +// Packet: 0x010a +packetLen(0x010a, 6) + +// Packet: 0x010b +packetLen(0x010b, 6) + +// Packet: 0x010c +packetLen(0x010c, 6) + +// Packet: 0x010d +packetLen(0x010d, 2) + +// Packet: 0x010e +packetLen(0x010e, 11) + +// Packet: 0x010f +packetLen(0x010f, -1) + +// Packet: 0x0110 +packetLen(0x0110, 14) + +// Packet: 0x0111 +packetLen(0x0111, 39) + +// Packet: 0x0112 +packetLen(0x0112, 4) + +// Packet: 0x0113 +packetLen(0x0113, 25) + +// Packet: 0x0114 +packetLen(0x0114, 31) + +// Packet: 0x0115 +packetLen(0x0115, 35) + +// Packet: 0x0116 +packetLen(0x0116, 17) + +// Packet: 0x0117 +packetLen(0x0117, 18) + +// Packet: 0x0118 +packetLen(0x0118, 2) + +// Packet: 0x0119 +packetLen(0x0119, 13) + +// Packet: 0x011a +packetLen(0x011a, 15) + +// Packet: 0x011b +packetLen(0x011b, 20) + +// Packet: 0x011c +packetLen(0x011c, 68) + +// Packet: 0x011d +packetLen(0x011d, 2) + +// Packet: 0x011e +packetLen(0x011e, 3) + +// Packet: 0x011f +packetLen(0x011f, 16) + +// Packet: 0x0120 +packetLen(0x0120, 6) + +// Packet: 0x0121 +packetLen(0x0121, 14) + +// Packet: 0x0122 +packetLen(0x0122, -1) + +// Packet: 0x0123 +packetLen(0x0123, -1) + +// Packet: 0x0124 +packetLen(0x0124, 31) + +// Packet: 0x0125 +packetLen(0x0125, 8) + +// Packet: 0x0126 +packetLen(0x0126, 8) + +// Packet: 0x0127 +packetLen(0x0127, 8) + +// Packet: 0x0128 +packetLen(0x0128, 8) + +// Packet: 0x0129 +packetLen(0x0129, 8) + +// Packet: 0x012a +packetLen(0x012a, 2) + +// Packet: 0x012b +packetLen(0x012b, 2) + +// Packet: 0x012c +packetLen(0x012c, 3) + +// Packet: 0x012d +packetLen(0x012d, 4) + +// Packet: 0x012e +packetLen(0x012e, 2) + +// Packet: 0x012f +packetLen(0x012f, -1) + +// Packet: 0x0130 +packetLen(0x0130, 6) + +// Packet: 0x0131 +packetLen(0x0131, 86) + +// Packet: 0x0132 +packetLen(0x0132, 6) + +// Packet: 0x0133 +packetLen(0x0133, -1) + +// Packet: 0x0134 +packetLen(0x0134, -1) + +// Packet: 0x0135 +packetLen(0x0135, 7) + +// Packet: 0x0136 +packetLen(0x0136, -1) + +// Packet: 0x0137 +packetLen(0x0137, 6) + +// Packet: 0x0138 +packetLen(0x0138, 3) + +// Packet: 0x0139 +packetLen(0x0139, 16) + +// Packet: 0x013a +packetLen(0x013a, 4) + +// Packet: 0x013b +packetLen(0x013b, 4) + +// Packet: 0x013c +packetLen(0x013c, 4) + +// Packet: 0x013d +packetLen(0x013d, 6) + +// Packet: 0x013e +packetLen(0x013e, 24) + +// Packet: 0x013f +packetLen(0x013f, 26) + +// Packet: 0x0140 +packetLen(0x0140, 22) + +// Packet: 0x0141 +packetLen(0x0141, 14) + +// Packet: 0x0142 +packetLen(0x0142, 6) + +// Packet: 0x0143 +packetLen(0x0143, 10) + +// Packet: 0x0144 +packetLen(0x0144, 23) + +// Packet: 0x0145 +packetLen(0x0145, 19) + +// Packet: 0x0146 +packetLen(0x0146, 6) + +// Packet: 0x0147 +packetLen(0x0147, 39) + +// Packet: 0x0148 +packetLen(0x0148, 8) + +// Packet: 0x0149 +packetLen(0x0149, 9) + +// Packet: 0x014a +packetLen(0x014a, 6) + +// Packet: 0x014b +packetLen(0x014b, 27) + +// Packet: 0x014c +packetLen(0x014c, -1) + +// Packet: 0x014d +packetLen(0x014d, 2) + +// Packet: 0x014e +packetLen(0x014e, 6) + +// Packet: 0x014f +packetLen(0x014f, 6) + +// Packet: 0x0150 +packetLen(0x0150, 110) + +// Packet: 0x0151 +packetLen(0x0151, 6) + +// Packet: 0x0152 +packetLen(0x0152, -1) + +// Packet: 0x0153 +packetLen(0x0153, -1) + +// Packet: 0x0154 +packetLen(0x0154, -1) + +// Packet: 0x0155 +packetLen(0x0155, -1) + +// Packet: 0x0156 +packetLen(0x0156, -1) + +// Packet: 0x0157 +packetLen(0x0157, 6) + +// Packet: 0x0159 +packetLen(0x0159, 54) + +// Packet: 0x015a +packetLen(0x015a, 66) + +// Packet: 0x015b +packetLen(0x015b, 54) + +// Packet: 0x015c +packetLen(0x015c, 90) + +// Packet: 0x015d +packetLen(0x015d, 42) + +// Packet: 0x015e +packetLen(0x015e, 6) + +// Packet: 0x015f +packetLen(0x015f, 42) + +// Packet: 0x0160 +packetLen(0x0160, -1) + +// Packet: 0x0161 +packetLen(0x0161, -1) + +// Packet: 0x0162 +packetLen(0x0162, -1) + +// Packet: 0x0163 +packetLen(0x0163, -1) + +// Packet: 0x0164 +packetLen(0x0164, -1) + +// Packet: 0x0165 +packetLen(0x0165, 30) + +// Packet: 0x0166 +packetLen(0x0166, -1) + +// Packet: 0x0167 +packetLen(0x0167, 3) + +// Packet: 0x0168 +packetLen(0x0168, 14) + +// Packet: 0x0169 +packetLen(0x0169, 3) + +// Packet: 0x016a +packetLen(0x016a, 30) + +// Packet: 0x016b +packetLen(0x016b, 10) + +// Packet: 0x016c +packetLen(0x016c, 43) + +// Packet: 0x016d +packetLen(0x016d, 14) + +// Packet: 0x016e +packetLen(0x016e, 186) + +// Packet: 0x016f +packetLen(0x016f, 182) + +// Packet: 0x0170 +packetLen(0x0170, 14) + +// Packet: 0x0171 +packetLen(0x0171, 30) + +// Packet: 0x0172 +packetLen(0x0172, 10) + +// Packet: 0x0173 +packetLen(0x0173, 3) + +// Packet: 0x0174 +packetLen(0x0174, -1) + +// Packet: 0x0175 +packetLen(0x0175, 6) + +// Packet: 0x0176 +packetLen(0x0176, 106) + +// Packet: 0x0177 +packetLen(0x0177, -1) + +// Packet: 0x0178 +packetLen(0x0178, 4) + +// Packet: 0x0179 +packetLen(0x0179, 5) + +// Packet: 0x017a +packetLen(0x017a, 4) + +// Packet: 0x017b +packetLen(0x017b, -1) + +// Packet: 0x017c +packetLen(0x017c, 6) + +// Packet: 0x017d +packetLen(0x017d, 7) + +// Packet: 0x017e +packetLen(0x017e, -1) + +// Packet: 0x017f +packetLen(0x017f, -1) + +// Packet: 0x0180 +packetLen(0x0180, 6) + +// Packet: 0x0181 +packetLen(0x0181, 3) + +// Packet: 0x0182 +packetLen(0x0182, 106) + +// Packet: 0x0183 +packetLen(0x0183, 10) + +// Packet: 0x0184 +packetLen(0x0184, 10) + +// Packet: 0x0185 +packetLen(0x0185, 34) + +// Packet: 0x0187 +packetLen(0x0187, 6) + +// Packet: 0x0188 +packetLen(0x0188, 8) + +// Packet: 0x0189 +packetLen(0x0189, 4) + +// Packet: 0x018a +packetLen(0x018a, 4) + +// Packet: 0x018b +packetLen(0x018b, 4) + +// Packet: 0x018c +packetLen(0x018c, 29) + +// Packet: 0x018d +packetLen(0x018d, -1) + +// Packet: 0x018e +packetLen(0x018e, 18) + +// Packet: 0x018f +packetLen(0x018f, 8) + +// Packet: 0x0190 +packetLen(0x0190, 23) + +// Packet: 0x0191 +packetLen(0x0191, 27) + +// Packet: 0x0192 +packetLen(0x0192, 24) + +// Packet: 0x0193 +packetLen(0x0193, 2) + +// Packet: 0x0194 +packetLen(0x0194, 30) + +// Packet: 0x0195 +packetLen(0x0195, 102) + +// Packet: 0x0196 +packetLen(0x0196, 9) + +// Packet: 0x0197 +packetLen(0x0197, 4) + +// Packet: 0x0198 +packetLen(0x0198, 8) + +// Packet: 0x0199 +packetLen(0x0199, 4) + +// Packet: 0x019a +packetLen(0x019a, 14) + +// Packet: 0x019b +packetLen(0x019b, 10) + +// Packet: 0x019c +packetLen(0x019c, -1) + +// Packet: 0x019d +packetLen(0x019d, 6) + +// Packet: 0x019e +packetLen(0x019e, 2) + +// Packet: 0x019f +packetLen(0x019f, 6) + +// Packet: 0x01a0 +packetLen(0x01a0, 3) + +// Packet: 0x01a1 +packetLen(0x01a1, 3) + +// Packet: 0x01a2 +packetLen(0x01a2, 37) + +// Packet: 0x01a3 +packetLen(0x01a3, 7) + +// Packet: 0x01a4 +packetLen(0x01a4, 11) + +// Packet: 0x01a5 +packetLen(0x01a5, 26) + +// Packet: 0x01a6 +packetLen(0x01a6, -1) + +// Packet: 0x01a7 +packetLen(0x01a7, 4) + +// Packet: 0x01a8 +packetLen(0x01a8, 4) + +// Packet: 0x01a9 +packetLen(0x01a9, 6) + +// Packet: 0x01aa +packetLen(0x01aa, 10) + +// Packet: 0x01ab +packetLen(0x01ab, 12) + +// Packet: 0x01ac +packetLen(0x01ac, 6) + +// Packet: 0x01ad +packetLen(0x01ad, -1) + +// Packet: 0x01ae +packetLen(0x01ae, 6) + +// Packet: 0x01af +packetLen(0x01af, 4) + +// Packet: 0x01b0 +packetLen(0x01b0, 11) + +// Packet: 0x01b1 +packetLen(0x01b1, 7) + +// Packet: 0x01b2 +packetLen(0x01b2, -1) + +// Packet: 0x01b3 +packetLen(0x01b3, 67) + +// Packet: 0x01b4 +packetLen(0x01b4, 12) + +// Packet: 0x01b5 +packetLen(0x01b5, 18) + +// Packet: 0x01b6 +packetLen(0x01b6, 114) + +// Packet: 0x01b7 +packetLen(0x01b7, 6) + +// Packet: 0x01b8 +packetLen(0x01b8, 3) + +// Packet: 0x01b9 +packetLen(0x01b9, 6) + +// Packet: 0x01ba +packetLen(0x01ba, 26) + +// Packet: 0x01bb +packetLen(0x01bb, 26) + +// Packet: 0x01bc +packetLen(0x01bc, 26) + +// Packet: 0x01bd +packetLen(0x01bd, 26) + +// Packet: 0x01be +packetLen(0x01be, 2) + +// Packet: 0x01bf +packetLen(0x01bf, 3) + +// Packet: 0x01c0 +packetLen(0x01c0, 2) + +// Packet: 0x01c1 +packetLen(0x01c1, 14) + +// Packet: 0x01c2 +packetLen(0x01c2, 10) + +// Packet: 0x01c3 +packetLen(0x01c3, -1) + +// Packet: 0x01c4 +packetLen(0x01c4, 32) + +// Packet: 0x01c5 +packetLen(0x01c5, 32) + +// Packet: 0x01c6 +packetLen(0x01c6, 4) + +// Packet: 0x01c7 +packetLen(0x01c7, 2) + +// Packet: 0x01c8 +packetLen(0x01c8, 15) + +// Packet: 0x01c9 +packetLen(0x01c9, 97) + +// Packet: 0x01ca +packetLen(0x01ca, 3) + +// Packet: 0x01cb +packetLen(0x01cb, 9) + +// Packet: 0x01cc +packetLen(0x01cc, 9) + +// Packet: 0x01cd +packetLen(0x01cd, 30) + +// Packet: 0x01ce +packetLen(0x01ce, 6) + +// Packet: 0x01cf +packetLen(0x01cf, 28) + +// Packet: 0x01d0 +packetLen(0x01d0, 8) + +// Packet: 0x01d1 +packetLen(0x01d1, 14) + +// Packet: 0x01d2 +packetLen(0x01d2, 10) + +// Packet: 0x01d3 +packetLen(0x01d3, 35) + +// Packet: 0x01d4 +packetLen(0x01d4, 6) + +// Packet: 0x01d5 +packetLen(0x01d5, -1) + +// Packet: 0x01d6 +packetLen(0x01d6, 4) + +// Packet: 0x01d7 +packetLen(0x01d7, 15) + +// Packet: 0x01d8 +packetLen(0x01d8, 58) + +// Packet: 0x01d9 +packetLen(0x01d9, 57) + +// Packet: 0x01da +packetLen(0x01da, 64) + +// Packet: 0x01db +packetLen(0x01db, 2) + +// Packet: 0x01dc +packetLen(0x01dc, -1) + +// Packet: 0x01dd +packetLen(0x01dd, 47) + +// Packet: 0x01de +packetLen(0x01de, 33) + +// Packet: 0x01df +packetLen(0x01df, 6) + +// Packet: 0x01e0 +packetLen(0x01e0, 30) + +// Packet: 0x01e1 +packetLen(0x01e1, 8) + +// Packet: 0x01e2 +packetLen(0x01e2, 34) + +// Packet: 0x01e3 +packetLen(0x01e3, 14) + +// Packet: 0x01e4 +packetLen(0x01e4, 2) + +// Packet: 0x01e5 +packetLen(0x01e5, 6) + +// Packet: 0x01e6 +packetLen(0x01e6, 26) + +// Packet: 0x01e7 +packetLen(0x01e7, 2) + +// Packet: 0x01e8 +packetLen(0x01e8, 28) + +// Packet: 0x01e9 +packetLen(0x01e9, 81) + +// Packet: 0x01ea +packetLen(0x01ea, 6) + +// Packet: 0x01eb +packetLen(0x01eb, 10) + +// Packet: 0x01ec +packetLen(0x01ec, 26) + +// Packet: 0x01ed +packetLen(0x01ed, 2) + +// Packet: 0x01ee +packetLen(0x01ee, -1) + +// Packet: 0x01ef +packetLen(0x01ef, -1) + +// Packet: 0x01f0 +packetLen(0x01f0, -1) + +// Packet: 0x01f1 +packetLen(0x01f1, -1) + +// Packet: 0x01f2 +packetLen(0x01f2, 20) + +// Packet: 0x01f3 +packetLen(0x01f3, 10) + +// Packet: 0x01f4 +packetLen(0x01f4, 32) + +// Packet: 0x01f5 +packetLen(0x01f5, 9) + +// Packet: 0x01f6 +packetLen(0x01f6, 34) + +// Packet: 0x01f7 +packetLen(0x01f7, 14) + +// Packet: 0x01f8 +packetLen(0x01f8, 2) + +// Packet: 0x01f9 +packetLen(0x01f9, 6) + +// Packet: 0x01fa +packetLen(0x01fa, 48) + +// Packet: 0x01fb +packetLen(0x01fb, 56) + +// Packet: 0x01fc +packetLen(0x01fc, -1) + +// Packet: 0x01fd +packetLen(0x01fd, 25) + +// Packet: 0x01fe +packetLen(0x01fe, 5) + +// Packet: 0x01ff +packetLen(0x01ff, 10) + +// Packet: 0x0200 +packetLen(0x0200, 26) + +// Packet: 0x0201 +packetLen(0x0201, -1) + +// Packet: 0x0202 +packetLen(0x0202, 26) + +// Packet: 0x0203 +packetLen(0x0203, 10) + +// Packet: 0x0204 +packetLen(0x0204, 18) + +// Packet: 0x0205 +packetLen(0x0205, 26) + +// Packet: 0x0206 +packetLen(0x0206, 35) + +// Packet: 0x0207 +packetLen(0x0207, 34) + +// Packet: 0x0208 +packetLen(0x0208, 14) + +// Packet: 0x0209 +packetLen(0x0209, 36) + +// Packet: 0x020a +packetLen(0x020a, 10) + +// Packet: 0x020d +packetLen(0x020d, -1) + +// Packet: 0x020e +packetLen(0x020e, 32) + +// Packet: 0x0212 +packetLen(0x0212, 26) + +// Packet: 0x0213 +packetLen(0x0213, 26) + +// Packet: 0x0214 +packetLen(0x0214, 42) + +// Packet: 0x0215 +packetLen(0x0215, 6) + +// Packet: 0x0216 +packetLen(0x0216, 6) + +// Packet: 0x0217 +packetLen(0x0217, 2) + +// Packet: 0x0218 +packetLen(0x0218, 2) + +// Packet: 0x0219 +packetLen(0x0219, 282) + +// Packet: 0x021a +packetLen(0x021a, 282) + +// Packet: 0x021b +packetLen(0x021b, 10) + +// Packet: 0x021c +packetLen(0x021c, 10) + +// Packet: 0x021d +packetLen(0x021d, 6) + +// Packet: 0x021e +packetLen(0x021e, 6) + +// Packet: 0x021f +packetLen(0x021f, 66) + +// Packet: 0x0220 +packetLen(0x0220, 10) + +// Packet: 0x0221 +packetLen(0x0221, -1) + +// Packet: 0x0222 +packetLen(0x0222, 6) + +// Packet: 0x0223 +packetLen(0x0223, 10) + +// Packet: 0x0224 +packetLen(0x0224, 10) + +// Packet: 0x0225 +packetLen(0x0225, 2) + +// Packet: 0x0226 +packetLen(0x0226, 282) + +// Packet: 0x0227 +packetLen(0x0227, 18) + +// Packet: 0x0228 +packetLen(0x0228, 18) + +// Packet: 0x0229 +packetLen(0x0229, 15) + +// Packet: 0x022a +packetLen(0x022a, 62) + +// Packet: 0x022b +packetLen(0x022b, 61) + +// Packet: 0x022c +packetLen(0x022c, 69) + +// Packet: 0x022d +packetLen(0x022d, 5) + +// Packet: 0x022e +packetLen(0x022e, 73) + +// Packet: 0x022f +packetLen(0x022f, 7) + +// Packet: 0x0230 +packetLen(0x0230, 12) + +// Packet: 0x0231 +packetLen(0x0231, 26) + +// Packet: 0x0232 +packetLen(0x0232, 9) + +// Packet: 0x0233 +packetLen(0x0233, 11) + +// Packet: 0x0234 +packetLen(0x0234, 6) + +// Packet: 0x0235 +packetLen(0x0235, -1) + +// Packet: 0x0236 +packetLen(0x0236, 10) + +// Packet: 0x0237 +packetLen(0x0237, 2) + +// Packet: 0x0238 +packetLen(0x0238, 282) + +// Packet: 0x0239 +packetLen(0x0239, 11) + +// Packet: 0x023a +packetLen(0x023a, 4) + +// Packet: 0x023b +packetLen(0x023b, 36) + +// Packet: 0x023c +packetLen(0x023c, 6) + +// Packet: 0x023d +packetLen(0x023d, 6) + +// Packet: 0x023e +packetLen(0x023e, 8) + +// Packet: 0x023f +packetLen(0x023f, 2) + +// Packet: 0x0240 +packetLen(0x0240, -1) + +// Packet: 0x0241 +packetLen(0x0241, 6) + +// Packet: 0x0242 +packetLen(0x0242, -1) + +// Packet: 0x0243 +packetLen(0x0243, 6) + +// Packet: 0x0244 +packetLen(0x0244, 6) + +// Packet: 0x0245 +packetLen(0x0245, 3) + +// Packet: 0x0246 +packetLen(0x0246, 4) + +// Packet: 0x0247 +packetLen(0x0247, 8) + +// Packet: 0x0248 +packetLen(0x0248, -1) + +// Packet: 0x0249 +packetLen(0x0249, 3) + +// Packet: 0x024a +packetLen(0x024a, 70) + +// Packet: 0x024b +packetLen(0x024b, 4) + +// Packet: 0x024c +packetLen(0x024c, 8) + +// Packet: 0x024d +packetLen(0x024d, 12) + +// Packet: 0x024e +packetLen(0x024e, 6) + +// Packet: 0x024f +packetLen(0x024f, 10) + +// Packet: 0x0250 +packetLen(0x0250, 3) + +// Packet: 0x0251 +packetLen(0x0251, 34) + +// Packet: 0x0252 +packetLen(0x0252, -1) + +// Packet: 0x0253 +packetLen(0x0253, 3) + +// Packet: 0x0254 +packetLen(0x0254, 3) + +// Packet: 0x0255 +packetLen(0x0255, 5) + +// Packet: 0x0256 +packetLen(0x0256, 5) + +// Packet: 0x0257 +packetLen(0x0257, 8) + +// Packet: 0x0258 +packetLen(0x0258, 2) + +// Packet: 0x0259 +packetLen(0x0259, 3) + +// Packet: 0x025a +packetLen(0x025a, -1) + +// Packet: 0x025b +packetLen(0x025b, 8) + +// Packet: 0x025c +packetLen(0x025c, 4) + +// Packet: 0x025d +packetLen(0x025d, 6) + +// Packet: 0x025e +packetLen(0x025e, 4) + +// Packet: 0x025f +packetLen(0x025f, 6) + +// Packet: 0x0260 +packetLen(0x0260, 6) + +// Packet: 0x0261 +packetLen(0x0261, 11) + +// Packet: 0x0262 +packetLen(0x0262, 11) + +// Packet: 0x0263 +packetLen(0x0263, 11) + +// Packet: 0x0264 +packetLen(0x0264, 20) + +// Packet: 0x0265 +packetLen(0x0265, 20) + +// Packet: 0x0266 +packetLen(0x0266, 30) + +// Packet: 0x0267 +packetLen(0x0267, 4) + +// Packet: 0x0268 +packetLen(0x0268, 4) + +// Packet: 0x0269 +packetLen(0x0269, 4) + +// Packet: 0x026a +packetLen(0x026a, 4) + +// Packet: 0x026b +packetLen(0x026b, 4) + +// Packet: 0x026c +packetLen(0x026c, 4) + +// Packet: 0x026d +packetLen(0x026d, 4) + +// Packet: 0x026f +packetLen(0x026f, 2) + +// Packet: 0x0270 +packetLen(0x0270, 2) + +// Packet: 0x0271 +packetLen(0x0271, 40) + +// Packet: 0x0272 +packetLen(0x0272, 44) + +// Packet: 0x0273 +packetLen(0x0273, 30) + +// Packet: 0x0274 +packetLen(0x0274, 8) + +// Packet: 0x0275 +packetLen(0x0275, 37) + +// Packet: 0x0276 +packetLen(0x0276, -1) + +// Packet: 0x0277 +packetLen(0x0277, 84) + +// Packet: 0x0278 +packetLen(0x0278, 2) + +// Packet: 0x0279 +packetLen(0x0279, 2) + +// Packet: 0x027a +packetLen(0x027a, -1) + +// Packet: 0x027b +packetLen(0x027b, 14) + +// Packet: 0x027c +packetLen(0x027c, 60) + +// Packet: 0x027d +packetLen(0x027d, 62) + +// Packet: 0x027e +packetLen(0x027e, -1) + +// Packet: 0x027f +packetLen(0x027f, 8) + +// Packet: 0x0280 +packetLen(0x0280, 12) + +// Packet: 0x0281 +packetLen(0x0281, 4) + +// Packet: 0x0282 +packetLen(0x0282, 284) + +// Packet: 0x0283 +packetLen(0x0283, 6) + +// Packet: 0x0284 +packetLen(0x0284, 14) + +// Packet: 0x0285 +packetLen(0x0285, 6) + +// Packet: 0x0286 +packetLen(0x0286, 4) + +// Packet: 0x0287 +packetLen(0x0287, -1) + +// Packet: 0x0288 +packetLen(0x0288, -1) + +// Packet: 0x0289 +packetLen(0x0289, 12) + +// Packet: 0x028a +packetLen(0x028a, 18) + +// Packet: 0x028b +packetLen(0x028b, -1) + +// Packet: 0x028c +packetLen(0x028c, 46) + +// Packet: 0x028d +packetLen(0x028d, 34) + +// Packet: 0x028e +packetLen(0x028e, 4) + +// Packet: 0x028f +packetLen(0x028f, 6) + +// Packet: 0x0290 +packetLen(0x0290, 4) + +// Packet: 0x0291 +packetLen(0x0291, 4) + +// Packet: 0x0292 +packetLen(0x0292, 2) + +// Packet: 0x0293 +packetLen(0x0293, 70) + +// Packet: 0x0294 +packetLen(0x0294, 10) + +// Packet: 0x0295 +packetLen(0x0295, -1) + +// Packet: 0x0296 +packetLen(0x0296, -1) + +// Packet: 0x0297 +packetLen(0x0297, -1) + +// Packet: 0x0298 +packetLen(0x0298, 10) + +// Packet: 0x0299 +packetLen(0x0299, 8) + +// Packet: 0x029a +packetLen(0x029a, 37) + +// Packet: 0x029b +packetLen(0x029b, 80) + +// Packet: 0x029c +packetLen(0x029c, 66) + +// Packet: 0x029d +packetLen(0x029d, -1) + +// Packet: 0x029e +packetLen(0x029e, 11) + +// Packet: 0x029f +packetLen(0x029f, 3) + +// Packet: 0x02a2 +packetLen(0x02a2, 8) + +// Packet: 0x02a5 +packetLen(0x02a5, 8) + +// Packet: 0x02a6 +packetLen(0x02a6, -1) + +// Packet: 0x02a7 +packetLen(0x02a7, -1) + +// Packet: 0x02aa +packetLen(0x02aa, 4) + +// Packet: 0x02ab +packetLen(0x02ab, 36) + +// Packet: 0x02ac +packetLen(0x02ac, 6) + +// Packet: 0x02ad +packetLen(0x02ad, 8) + +// Packet: 0x02b0 +packetLen(0x02b0, 85) + +// Packet: 0x02b1 +packetLen(0x02b1, -1) + +// Packet: 0x02b2 +packetLen(0x02b2, -1) + +// Packet: 0x02b3 +packetLen(0x02b3, 107) + +// Packet: 0x02b4 +packetLen(0x02b4, 6) + +// Packet: 0x02b5 +packetLen(0x02b5, -1) + +// Packet: 0x02b6 +packetLen(0x02b6, 7) + +// Packet: 0x02b7 +packetLen(0x02b7, 7) + +// Packet: 0x02b8 +packetLen(0x02b8, 32) + +// Packet: 0x02b9 +packetLen(0x02b9, 191) + +// Packet: 0x02ba +packetLen(0x02ba, 11) + +// Packet: 0x02bb +packetLen(0x02bb, 8) + +// Packet: 0x02bc +packetLen(0x02bc, 6) + +// Packet: 0x02c1 +packetLen(0x02c1, -1) + +// Packet: 0x02c2 +packetLen(0x02c2, -1) + +// Packet: 0x02c4 +packetLen(0x02c4, 26) + +// Packet: 0x02c5 +packetLen(0x02c5, 30) + +// Packet: 0x02c6 +packetLen(0x02c6, 30) + +// Packet: 0x02c7 +packetLen(0x02c7, 7) + +// Packet: 0x02c8 +packetLen(0x02c8, 3) + +// Packet: 0x02c9 +packetLen(0x02c9, 3) + +// Packet: 0x02ca +packetLen(0x02ca, 3) + +// Packet: 0x02cb +packetLen(0x02cb, 65) + +// Packet: 0x02cc +packetLen(0x02cc, 4) + +// Packet: 0x02cd +packetLen(0x02cd, 71) + +// Packet: 0x02ce +packetLen(0x02ce, 10) + +// Packet: 0x02cf +packetLen(0x02cf, 6) + +// Packet: 0x02d0 +packetLen(0x02d0, -1) + +// Packet: 0x02d1 +packetLen(0x02d1, -1) + +// Packet: 0x02d2 +packetLen(0x02d2, -1) + +// Packet: 0x02d3 +packetLen(0x02d3, 4) + +// Packet: 0x02d4 +packetLen(0x02d4, 39) + +// Packet: 0x02d5 +packetLen(0x02d5, 2) + +// Packet: 0x02d6 +packetLen(0x02d6, 6) + +// Packet: 0x02d7 +packetLen(0x02d7, -1) + +// Packet: 0x02d8 +packetLen(0x02d8, 10) + +// Packet: 0x02d9 +packetLen(0x02d9, 10) + +// Packet: 0x02da +packetLen(0x02da, 3) + +// Packet: 0x02db +packetLen(0x02db, -1) + +// Packet: 0x02dc +packetLen(0x02dc, -1) + +// Packet: 0x02dd +packetLen(0x02dd, 32) + +// Packet: 0x02de +packetLen(0x02de, 6) + +// Packet: 0x02df +packetLen(0x02df, 36) + +// Packet: 0x02e0 +packetLen(0x02e0, 34) + +// Packet: 0x02e1 +packetLen(0x02e1, 33) + +// Packet: 0x02e2 +packetLen(0x02e2, 20) + +// Packet: 0x02e3 +packetLen(0x02e3, 22) + +// Packet: 0x02e4 +packetLen(0x02e4, 11) + +// Packet: 0x02e5 +packetLen(0x02e5, 9) + +// Packet: 0x02e6 +packetLen(0x02e6, 6) + +// Packet: 0x02e7 +packetLen(0x02e7, -1) + +// Packet: 0x02e8 +packetLen(0x02e8, -1) + +// Packet: 0x02e9 +packetLen(0x02e9, -1) + +// Packet: 0x02ea +packetLen(0x02ea, -1) + +// Packet: 0x02eb +packetLen(0x02eb, 13) + +// Packet: 0x02ec +packetLen(0x02ec, 71) + +// Packet: 0x02ed +packetLen(0x02ed, 63) + +// Packet: 0x02ee +packetLen(0x02ee, 64) + +// Packet: 0x02ef +packetLen(0x02ef, 8) + +// Packet: 0x02f0 +packetLen(0x02f0, 10) + +// Packet: 0x02f1 +packetLen(0x02f1, 2) + +// Packet: 0x02f2 +packetLen(0x02f2, 2) + +// Packet: 0x02f3 +packetLen(0x02f3, -1) + +// Packet: 0x02f4 +packetLen(0x02f4, 3) + +// Packet: 0x02f5 +packetLen(0x02f5, 7) + +// Packet: 0x02f6 +packetLen(0x02f6, 7) + +// Packet: 0x035c +packetLen(0x035c, 2) + +// Packet: 0x035d +packetLen(0x035d, -1) + +// Packet: 0x035e +packetLen(0x035e, 2) + +// Packet: 0x035f +packetLen(0x035f, 5) + +// Packet: 0x0360 +packetLen(0x0360, 6) + +// Packet: 0x0361 +packetLen(0x0361, 5) + +// Packet: 0x0362 +packetLen(0x0362, 6) + +// Packet: 0x0363 +packetLen(0x0363, 6) + +// Packet: 0x0364 +packetLen(0x0364, 8) + +// Packet: 0x0365 +packetLen(0x0365, 8) + +// Packet: 0x0366 +packetLen(0x0366, 10) + +// Packet: 0x0367 +packetLen(0x0367, 31) + +// Packet: 0x0368 +packetLen(0x0368, 6) + +// Packet: 0x0369 +packetLen(0x0369, 6) + +// Packet: 0x03dd +packetLen(0x03dd, 18) + +// Packet: 0x03de +packetLen(0x03de, 18) + +// Packet: 0x0436 +#if PACKETVER >= 20210630 +packetLen(0x0436, 23) +// ignored packet from 2021-06-30_Ragexe_1624513034_zero +// ignored packet from 2021-06-30_Ragexe_1624528241_zero +#elif PACKETVER >= 20210623 +packetLen(0x0436, 23) +// ignored packet from 2021-06-23_Ragexe_1624430023_zero +#elif PACKETVER >= 20210106 +packetLen(0x0436, 19) +#endif + +// Packet: 0x0437 +packetLen(0x0437, 7) + +// Packet: 0x0438 +packetLen(0x0438, 10) + +// Packet: 0x0439 +packetLen(0x0439, 8) + +// Packet: 0x043d +packetLen(0x043d, 8) + +// Packet: 0x043e +packetLen(0x043e, -1) + +// Packet: 0x043f +packetLen(0x043f, 25) + +// Packet: 0x0440 +packetLen(0x0440, 10) + +// Packet: 0x0441 +packetLen(0x0441, 4) + +// Packet: 0x0442 +packetLen(0x0442, -1) + +// Packet: 0x0443 +packetLen(0x0443, 8) + +// Packet: 0x0444 +packetLen(0x0444, -1) + +// Packet: 0x0445 +packetLen(0x0445, 12) + +// Packet: 0x0446 +packetLen(0x0446, 14) + +// Packet: 0x0447 +packetLen(0x0447, 2) + +// Packet: 0x0448 +packetLen(0x0448, -1) + +// Packet: 0x0449 +packetLen(0x0449, 4) + +// Packet: 0x044a +packetLen(0x044a, 6) + +// Packet: 0x044b +packetLen(0x044b, 2) + +// Packet: 0x07d7 +packetLen(0x07d7, 8) + +// Packet: 0x07d8 +packetLen(0x07d8, 8) + +// Packet: 0x07d9 +packetLen(0x07d9, 268) + +// Packet: 0x07da +packetLen(0x07da, 6) + +// Packet: 0x07db +packetLen(0x07db, 8) + +// Packet: 0x07dc +packetLen(0x07dc, 6) + +// Packet: 0x07dd +packetLen(0x07dd, 54) + +// Packet: 0x07de +packetLen(0x07de, 30) + +// Packet: 0x07df +packetLen(0x07df, 54) + +// Packet: 0x07e0 +packetLen(0x07e0, 58) + +// Packet: 0x07e1 +packetLen(0x07e1, 15) + +// Packet: 0x07e2 +packetLen(0x07e2, 8) + +// Packet: 0x07e3 +packetLen(0x07e3, 6) + +// Packet: 0x07e4 +packetLen(0x07e4, -1) + +// Packet: 0x07e5 +packetLen(0x07e5, 4) + +// Packet: 0x07e6 +packetLen(0x07e6, 8) + +// Packet: 0x07e7 +packetLen(0x07e7, 32) + +// Packet: 0x07e8 +packetLen(0x07e8, -1) + +// Packet: 0x07e9 +packetLen(0x07e9, 5) + +// Packet: 0x07ea +packetLen(0x07ea, 2) + +// Packet: 0x07eb +packetLen(0x07eb, -1) + +// Packet: 0x07ec +packetLen(0x07ec, 8) + +// Packet: 0x07ed +packetLen(0x07ed, 10) + +// Packet: 0x07ee +packetLen(0x07ee, 6) + +// Packet: 0x07ef +packetLen(0x07ef, 8) + +// Packet: 0x07f0 +packetLen(0x07f0, 6) + +// Packet: 0x07f1 +packetLen(0x07f1, 18) + +// Packet: 0x07f2 +packetLen(0x07f2, 8) + +// Packet: 0x07f3 +packetLen(0x07f3, 6) + +// Packet: 0x07f4 +packetLen(0x07f4, 3) + +// Packet: 0x07f5 +packetLen(0x07f5, 6) + +// Packet: 0x07f6 +packetLen(0x07f6, 14) + +// Packet: 0x07f7 +packetLen(0x07f7, -1) + +// Packet: 0x07f8 +packetLen(0x07f8, -1) + +// Packet: 0x07f9 +packetLen(0x07f9, -1) + +// Packet: 0x07fa +packetLen(0x07fa, 8) + +// Packet: 0x07fb +packetLen(0x07fb, 25) + +// Packet: 0x07fc +packetLen(0x07fc, 10) + +// Packet: 0x07fd +packetLen(0x07fd, -1) + +// Packet: 0x07fe +packetLen(0x07fe, 26) + +// Packet: 0x0800 +packetLen(0x0800, -1) + +// Packet: 0x0801 +packetLen(0x0801, -1) + +// Packet: 0x0802 +packetLen(0x0802, 18) + +// Packet: 0x0803 +packetLen(0x0803, 4) + +// Packet: 0x0804 +packetLen(0x0804, 14) + +// Packet: 0x0805 +packetLen(0x0805, -1) + +// Packet: 0x0806 +packetLen(0x0806, 2) + +// Packet: 0x0807 +packetLen(0x0807, 4) + +// Packet: 0x0808 +packetLen(0x0808, 14) + +// Packet: 0x0809 +packetLen(0x0809, 50) + +// Packet: 0x080a +packetLen(0x080a, 18) + +// Packet: 0x080b +packetLen(0x080b, 6) + +// Packet: 0x080c +packetLen(0x080c, 2) + +// Packet: 0x080d +packetLen(0x080d, 3) + +// Packet: 0x080e +packetLen(0x080e, 14) + +// Packet: 0x080f +packetLen(0x080f, 30) + +// Packet: 0x0810 +packetLen(0x0810, 3) + +// Packet: 0x0811 +packetLen(0x0811, -1) + +// Packet: 0x0812 +packetLen(0x0812, 8) + +// Packet: 0x0813 +packetLen(0x0813, -1) + +// Packet: 0x0814 +packetLen(0x0814, 86) + +// Packet: 0x0815 +packetLen(0x0815, 2) + +// Packet: 0x0816 +packetLen(0x0816, 6) + +// Packet: 0x0817 +packetLen(0x0817, 6) + +// Packet: 0x0818 +packetLen(0x0818, -1) + +// Packet: 0x0819 +packetLen(0x0819, -1) + +// Packet: 0x081a +packetLen(0x081a, 4) + +// Packet: 0x081b +packetLen(0x081b, 12) + +// Packet: 0x081c +packetLen(0x081c, 10) + +// Packet: 0x081d +packetLen(0x081d, 22) + +// Packet: 0x081e +packetLen(0x081e, 8) + +// Packet: 0x081f +packetLen(0x081f, -1) + +// Packet: 0x0820 +packetLen(0x0820, 11) + +// Packet: 0x0821 +packetLen(0x0821, 2) + +// Packet: 0x0822 +packetLen(0x0822, 9) + +// Packet: 0x0823 +packetLen(0x0823, -1) + +// Packet: 0x0824 +packetLen(0x0824, 8) + +// Packet: 0x0825 +packetLen(0x0825, -1) + +// Packet: 0x0827 +packetLen(0x0827, 6) + +// Packet: 0x0828 +packetLen(0x0828, 14) + +// Packet: 0x0829 +packetLen(0x0829, 12) + +// Packet: 0x082a +packetLen(0x082a, 10) + +// Packet: 0x082b +packetLen(0x082b, 6) + +// Packet: 0x082c +packetLen(0x082c, 10) + +// Packet: 0x082d +packetLen(0x082d, -1) + +// Packet: 0x0835 +packetLen(0x0835, -1) + +// Packet: 0x0836 +packetLen(0x0836, -1) + +// Packet: 0x0837 +packetLen(0x0837, 3) + +// Packet: 0x0838 +packetLen(0x0838, 2) + +// Packet: 0x0839 +packetLen(0x0839, 66) + +// Packet: 0x083a +packetLen(0x083a, 5) + +// Packet: 0x083b +packetLen(0x083b, 2) + +// Packet: 0x083c +packetLen(0x083c, 14) + +// Packet: 0x083d +packetLen(0x083d, 6) + +// Packet: 0x083e +packetLen(0x083e, 26) + +// Packet: 0x0840 +packetLen(0x0840, -1) + +// Packet: 0x0841 +packetLen(0x0841, 4) + +// Packet: 0x0842 +packetLen(0x0842, 6) + +// Packet: 0x0843 +packetLen(0x0843, 6) + +// Packet: 0x0844 +packetLen(0x0844, 2) + +// Packet: 0x0845 +packetLen(0x0845, 10) + +// Packet: 0x0846 +packetLen(0x0846, 4) + +// Packet: 0x0847 +packetLen(0x0847, -1) + +// Packet: 0x0848 +packetLen(0x0848, -1) + +// Packet: 0x0849 +packetLen(0x0849, 16) + +// Packet: 0x084a +packetLen(0x084a, 2) + +// Packet: 0x084b +packetLen(0x084b, 21) + +// Packet: 0x084c +packetLen(0x084c, 10) + +// Packet: 0x084d +packetLen(0x084d, 10) + +// Packet: 0x084e +packetLen(0x084e, 5) + +// Packet: 0x084f +packetLen(0x084f, 6) + +// Packet: 0x0850 +packetLen(0x0850, 7) + +// Packet: 0x0851 +packetLen(0x0851, -1) + +// Packet: 0x0852 +packetLen(0x0852, 2) + +// Packet: 0x0853 +packetLen(0x0853, -1) + +// Packet: 0x0854 +packetLen(0x0854, -1) + +// Packet: 0x0855 +packetLen(0x0855, 6) + +// Packet: 0x0856 +packetLen(0x0856, -1) + +// Packet: 0x0857 +packetLen(0x0857, -1) + +// Packet: 0x0858 +packetLen(0x0858, -1) + +// Packet: 0x0859 +packetLen(0x0859, -1) + +// Packet: 0x085a +packetLen(0x085a, 2) + +// Packet: 0x085b +packetLen(0x085b, 2) + +// Packet: 0x085c +packetLen(0x085c, 2) + +// Packet: 0x085d +packetLen(0x085d, 2) + +// Packet: 0x085e +packetLen(0x085e, 2) + +// Packet: 0x085f +packetLen(0x085f, 2) + +// Packet: 0x0860 +packetLen(0x0860, 2) + +// Packet: 0x0861 +packetLen(0x0861, 2) + +// Packet: 0x0862 +packetLen(0x0862, 2) + +// Packet: 0x0863 +packetLen(0x0863, 2) + +// Packet: 0x0864 +packetLen(0x0864, 2) + +// Packet: 0x0865 +packetLen(0x0865, 2) + +// Packet: 0x0866 +packetLen(0x0866, 2) + +// Packet: 0x0867 +packetLen(0x0867, 2) + +// Packet: 0x0868 +packetLen(0x0868, 2) + +// Packet: 0x0869 +packetLen(0x0869, 2) + +// Packet: 0x086a +packetLen(0x086a, 2) + +// Packet: 0x086b +packetLen(0x086b, 2) + +// Packet: 0x086c +packetLen(0x086c, 2) + +// Packet: 0x086d +packetLen(0x086d, 2) + +// Packet: 0x086e +packetLen(0x086e, 2) + +// Packet: 0x086f +packetLen(0x086f, 2) + +// Packet: 0x0870 +packetLen(0x0870, 2) + +// Packet: 0x0871 +packetLen(0x0871, 2) + +// Packet: 0x0872 +packetLen(0x0872, 2) + +// Packet: 0x0873 +packetLen(0x0873, 2) + +// Packet: 0x0874 +packetLen(0x0874, 2) + +// Packet: 0x0875 +packetLen(0x0875, 2) + +// Packet: 0x0876 +packetLen(0x0876, 2) + +// Packet: 0x0877 +packetLen(0x0877, 2) + +// Packet: 0x0878 +packetLen(0x0878, 2) + +// Packet: 0x0879 +packetLen(0x0879, 2) + +// Packet: 0x087a +packetLen(0x087a, 2) + +// Packet: 0x087b +packetLen(0x087b, 2) + +// Packet: 0x087c +packetLen(0x087c, 2) + +// Packet: 0x087d +packetLen(0x087d, 2) + +// Packet: 0x087e +packetLen(0x087e, 2) + +// Packet: 0x087f +packetLen(0x087f, 2) + +// Packet: 0x0880 +packetLen(0x0880, 2) + +// Packet: 0x0881 +packetLen(0x0881, 2) + +// Packet: 0x0882 +packetLen(0x0882, 2) + +// Packet: 0x0883 +packetLen(0x0883, 2) + +// Packet: 0x0884 +packetLen(0x0884, 2) + +// Packet: 0x0885 +packetLen(0x0885, 2) + +// Packet: 0x0886 +packetLen(0x0886, 2) + +// Packet: 0x0887 +packetLen(0x0887, 2) + +// Packet: 0x0888 +packetLen(0x0888, 2) + +// Packet: 0x0889 +packetLen(0x0889, 2) + +// Packet: 0x088a +packetLen(0x088a, 2) + +// Packet: 0x088b +packetLen(0x088b, 2) + +// Packet: 0x088c +packetLen(0x088c, 2) + +// Packet: 0x088d +packetLen(0x088d, 2) + +// Packet: 0x088e +packetLen(0x088e, 2) + +// Packet: 0x088f +packetLen(0x088f, 2) + +// Packet: 0x0890 +packetLen(0x0890, 2) + +// Packet: 0x0891 +packetLen(0x0891, 2) + +// Packet: 0x0892 +packetLen(0x0892, 2) + +// Packet: 0x0893 +packetLen(0x0893, 2) + +// Packet: 0x0894 +packetLen(0x0894, 2) + +// Packet: 0x0895 +packetLen(0x0895, 2) + +// Packet: 0x0896 +packetLen(0x0896, 2) + +// Packet: 0x0897 +packetLen(0x0897, 2) + +// Packet: 0x0898 +packetLen(0x0898, 2) + +// Packet: 0x0899 +packetLen(0x0899, 2) + +// Packet: 0x089a +packetLen(0x089a, 2) + +// Packet: 0x089b +packetLen(0x089b, 2) + +// Packet: 0x089c +packetLen(0x089c, 2) + +// Packet: 0x089d +packetLen(0x089d, 2) + +// Packet: 0x089e +packetLen(0x089e, 2) + +// Packet: 0x089f +packetLen(0x089f, 2) + +// Packet: 0x08a0 +packetLen(0x08a0, 2) + +// Packet: 0x08a1 +packetLen(0x08a1, 2) + +// Packet: 0x08a2 +packetLen(0x08a2, 2) + +// Packet: 0x08a3 +packetLen(0x08a3, 2) + +// Packet: 0x08a4 +packetLen(0x08a4, 2) + +// Packet: 0x08a5 +packetLen(0x08a5, 2) + +// Packet: 0x08a6 +packetLen(0x08a6, 2) + +// Packet: 0x08a7 +packetLen(0x08a7, 2) + +// Packet: 0x08a8 +packetLen(0x08a8, 2) + +// Packet: 0x08a9 +packetLen(0x08a9, 2) + +// Packet: 0x08aa +packetLen(0x08aa, 2) + +// Packet: 0x08ab +packetLen(0x08ab, 2) + +// Packet: 0x08ac +packetLen(0x08ac, 2) + +// Packet: 0x08ad +packetLen(0x08ad, 2) + +// Packet: 0x08af +packetLen(0x08af, 10) + +// Packet: 0x08b0 +packetLen(0x08b0, 17) + +// Packet: 0x08b1 +packetLen(0x08b1, -1) + +// Packet: 0x08b2 +packetLen(0x08b2, -1) + +// Packet: 0x08b3 +packetLen(0x08b3, -1) + +// Packet: 0x08b4 +packetLen(0x08b4, 2) + +// Packet: 0x08b5 +packetLen(0x08b5, 6) + +// Packet: 0x08b6 +packetLen(0x08b6, 3) + +// Packet: 0x08b8 +packetLen(0x08b8, 10) + +// Packet: 0x08b9 +packetLen(0x08b9, 12) + +// Packet: 0x08ba +packetLen(0x08ba, 10) + +// Packet: 0x08bb +packetLen(0x08bb, 8) + +// Packet: 0x08bc +packetLen(0x08bc, 10) + +// Packet: 0x08bd +packetLen(0x08bd, 8) + +// Packet: 0x08be +packetLen(0x08be, 14) + +// Packet: 0x08bf +packetLen(0x08bf, 8) + +// Packet: 0x08c0 +packetLen(0x08c0, -1) + +// Packet: 0x08c1 +packetLen(0x08c1, 2) + +// Packet: 0x08c2 +packetLen(0x08c2, 2) + +// Packet: 0x08c3 +packetLen(0x08c3, 10) + +// Packet: 0x08c4 +packetLen(0x08c4, 8) + +// Packet: 0x08c5 +packetLen(0x08c5, 6) + +// Packet: 0x08c6 +packetLen(0x08c6, 4) + +// Packet: 0x08c7 +packetLen(0x08c7, -1) + +// Packet: 0x08c8 +packetLen(0x08c8, 34) + +// Packet: 0x08c9 +packetLen(0x08c9, 2) + +// Packet: 0x08ca +packetLen(0x08ca, -1) + +// Packet: 0x08cb +packetLen(0x08cb, -1) + +// Packet: 0x08cc +packetLen(0x08cc, 109) + +// Packet: 0x08cd +packetLen(0x08cd, 10) + +// Packet: 0x08ce +packetLen(0x08ce, 2) + +// Packet: 0x08cf +packetLen(0x08cf, 10) + +// Packet: 0x08d0 +packetLen(0x08d0, 9) + +// Packet: 0x08d1 +packetLen(0x08d1, 7) + +// Packet: 0x08d2 +packetLen(0x08d2, 10) + +// Packet: 0x08d3 +packetLen(0x08d3, 10) + +// Packet: 0x08d4 +packetLen(0x08d4, 8) + +// Packet: 0x08d5 +packetLen(0x08d5, -1) + +// Packet: 0x08d6 +packetLen(0x08d6, 6) + +// Packet: 0x08d7 +packetLen(0x08d7, 28) + +// Packet: 0x08d8 +packetLen(0x08d8, 27) + +// Packet: 0x08d9 +packetLen(0x08d9, 30) + +// Packet: 0x08da +packetLen(0x08da, 26) + +// Packet: 0x08db +packetLen(0x08db, 27) + +// Packet: 0x08dc +packetLen(0x08dc, 26) + +// Packet: 0x08dd +packetLen(0x08dd, 27) + +// Packet: 0x08de +packetLen(0x08de, 27) + +// Packet: 0x08df +packetLen(0x08df, 50) + +// Packet: 0x08e0 +packetLen(0x08e0, 51) + +// Packet: 0x08e1 +packetLen(0x08e1, 51) + +// Packet: 0x08e2 +packetLen(0x08e2, 27) + +// Packet: 0x08e3 +packetLen(0x08e3, 157) + +// Packet: 0x08e4 +packetLen(0x08e4, 6) + +// Packet: 0x08fc +packetLen(0x08fc, 30) + +// Packet: 0x08fd +packetLen(0x08fd, 6) + +// Packet: 0x08fe +packetLen(0x08fe, -1) + +// Packet: 0x08ff +packetLen(0x08ff, 24) + +// Packet: 0x0900 +packetLen(0x0900, -1) + +// Packet: 0x0901 +packetLen(0x0901, -1) + +// Packet: 0x0902 +packetLen(0x0902, -1) + +// Packet: 0x0903 +packetLen(0x0903, -1) + +// Packet: 0x0904 +packetLen(0x0904, -1) + +// Packet: 0x0905 +packetLen(0x0905, -1) + +// Packet: 0x0906 +packetLen(0x0906, -1) + +// Packet: 0x0907 +packetLen(0x0907, 5) + +// Packet: 0x0908 +packetLen(0x0908, 5) + +// Packet: 0x090a +packetLen(0x090a, 26) + +// Packet: 0x090d +packetLen(0x090d, -1) + +// Packet: 0x090e +packetLen(0x090e, 2) + +// Packet: 0x090f +packetLen(0x090f, -1) + +// Packet: 0x0910 +packetLen(0x0910, 10) + +// Packet: 0x0911 +packetLen(0x0911, 30) + +// Packet: 0x0912 +packetLen(0x0912, 10) + +// Packet: 0x0913 +packetLen(0x0913, 30) + +// Packet: 0x0914 +packetLen(0x0914, -1) + +// Packet: 0x0915 +packetLen(0x0915, -1) + +// Packet: 0x0916 +packetLen(0x0916, 26) + +// Packet: 0x0917 +packetLen(0x0917, 2) + +// Packet: 0x0918 +packetLen(0x0918, 2) + +// Packet: 0x0919 +packetLen(0x0919, 2) + +// Packet: 0x091a +packetLen(0x091a, 2) + +// Packet: 0x091b +packetLen(0x091b, 2) + +// Packet: 0x091c +packetLen(0x091c, 2) + +// Packet: 0x091d +packetLen(0x091d, 2) + +// Packet: 0x091e +packetLen(0x091e, 2) + +// Packet: 0x091f +packetLen(0x091f, 2) + +// Packet: 0x0920 +packetLen(0x0920, 2) + +// Packet: 0x0921 +packetLen(0x0921, 2) + +// Packet: 0x0922 +packetLen(0x0922, 2) + +// Packet: 0x0923 +packetLen(0x0923, 2) + +// Packet: 0x0924 +packetLen(0x0924, 2) + +// Packet: 0x0925 +packetLen(0x0925, 2) + +// Packet: 0x0926 +packetLen(0x0926, 2) + +// Packet: 0x0927 +packetLen(0x0927, 2) + +// Packet: 0x0928 +packetLen(0x0928, 2) + +// Packet: 0x0929 +packetLen(0x0929, 2) + +// Packet: 0x092a +packetLen(0x092a, 2) + +// Packet: 0x092b +packetLen(0x092b, 2) + +// Packet: 0x092c +packetLen(0x092c, 2) + +// Packet: 0x092d +packetLen(0x092d, 2) + +// Packet: 0x092e +packetLen(0x092e, 2) + +// Packet: 0x092f +packetLen(0x092f, 2) + +// Packet: 0x0930 +packetLen(0x0930, 2) + +// Packet: 0x0931 +packetLen(0x0931, 2) + +// Packet: 0x0932 +packetLen(0x0932, 2) + +// Packet: 0x0933 +packetLen(0x0933, 2) + +// Packet: 0x0934 +packetLen(0x0934, 2) + +// Packet: 0x0935 +packetLen(0x0935, 2) + +// Packet: 0x0936 +packetLen(0x0936, 2) + +// Packet: 0x0937 +packetLen(0x0937, 2) + +// Packet: 0x0938 +packetLen(0x0938, 2) + +// Packet: 0x0939 +packetLen(0x0939, 2) + +// Packet: 0x093a +packetLen(0x093a, 2) + +// Packet: 0x093b +packetLen(0x093b, 2) + +// Packet: 0x093c +packetLen(0x093c, 2) + +// Packet: 0x093d +packetLen(0x093d, 2) + +// Packet: 0x093e +packetLen(0x093e, 2) + +// Packet: 0x093f +packetLen(0x093f, 2) + +// Packet: 0x0940 +packetLen(0x0940, 2) + +// Packet: 0x0941 +packetLen(0x0941, 2) + +// Packet: 0x0942 +packetLen(0x0942, 2) + +// Packet: 0x0943 +packetLen(0x0943, 2) + +// Packet: 0x0944 +packetLen(0x0944, 2) + +// Packet: 0x0945 +packetLen(0x0945, 2) + +// Packet: 0x0946 +packetLen(0x0946, 2) + +// Packet: 0x0947 +packetLen(0x0947, 2) + +// Packet: 0x0948 +packetLen(0x0948, 2) + +// Packet: 0x0949 +packetLen(0x0949, 2) + +// Packet: 0x094a +packetLen(0x094a, 2) + +// Packet: 0x094b +packetLen(0x094b, 2) + +// Packet: 0x094c +packetLen(0x094c, 2) + +// Packet: 0x094d +packetLen(0x094d, 2) + +// Packet: 0x094e +packetLen(0x094e, 2) + +// Packet: 0x094f +packetLen(0x094f, 2) + +// Packet: 0x0950 +packetLen(0x0950, 2) + +// Packet: 0x0951 +packetLen(0x0951, 2) + +// Packet: 0x0952 +packetLen(0x0952, 2) + +// Packet: 0x0953 +packetLen(0x0953, 2) + +// Packet: 0x0954 +packetLen(0x0954, 2) + +// Packet: 0x0955 +packetLen(0x0955, 2) + +// Packet: 0x0956 +packetLen(0x0956, 2) + +// Packet: 0x0957 +packetLen(0x0957, 2) + +// Packet: 0x0958 +packetLen(0x0958, 2) + +// Packet: 0x0959 +packetLen(0x0959, 2) + +// Packet: 0x095a +packetLen(0x095a, 2) + +// Packet: 0x095b +packetLen(0x095b, 2) + +// Packet: 0x095c +packetLen(0x095c, 2) + +// Packet: 0x095d +packetLen(0x095d, 2) + +// Packet: 0x095e +packetLen(0x095e, 2) + +// Packet: 0x095f +packetLen(0x095f, 2) + +// Packet: 0x0960 +packetLen(0x0960, 2) + +// Packet: 0x0961 +packetLen(0x0961, 2) + +// Packet: 0x0962 +packetLen(0x0962, 2) + +// Packet: 0x0963 +packetLen(0x0963, 2) + +// Packet: 0x0964 +packetLen(0x0964, 2) + +// Packet: 0x0965 +packetLen(0x0965, 2) + +// Packet: 0x0966 +packetLen(0x0966, 2) + +// Packet: 0x0967 +packetLen(0x0967, 2) + +// Packet: 0x0968 +packetLen(0x0968, 2) + +// Packet: 0x0969 +packetLen(0x0969, 2) + +// Packet: 0x096a +packetLen(0x096a, 2) + +// Packet: 0x096b +packetLen(0x096b, 4) + +// Packet: 0x096c +packetLen(0x096c, 6) + +// Packet: 0x096d +packetLen(0x096d, -1) + +// Packet: 0x096e +packetLen(0x096e, -1) + +// Packet: 0x096f +packetLen(0x096f, 7) + +// Packet: 0x0970 +packetLen(0x0970, 31) + +// Packet: 0x0971 +packetLen(0x0971, 6) + +// Packet: 0x0972 +packetLen(0x0972, -1) + +// Packet: 0x0973 +packetLen(0x0973, 7) + +// Packet: 0x0974 +packetLen(0x0974, 2) + +// Packet: 0x0975 +packetLen(0x0975, -1) + +// Packet: 0x0976 +packetLen(0x0976, -1) + +// Packet: 0x0977 +packetLen(0x0977, 14) + +// Packet: 0x0978 +packetLen(0x0978, 6) + +// Packet: 0x0979 +packetLen(0x0979, 50) + +// Packet: 0x097a +packetLen(0x097a, -1) + +// Packet: 0x097b +packetLen(0x097b, -1) + +// Packet: 0x097c +packetLen(0x097c, 4) + +// Packet: 0x097d +packetLen(0x097d, 288) + +// Packet: 0x097e +packetLen(0x097e, 12) + +// Packet: 0x097f +packetLen(0x097f, -1) + +// Packet: 0x0980 +packetLen(0x0980, 7) + +// Packet: 0x0981 +packetLen(0x0981, -1) + +// Packet: 0x0982 +packetLen(0x0982, 7) + +// Packet: 0x0983 +packetLen(0x0983, 29) + +// Packet: 0x0984 +packetLen(0x0984, 28) + +// Packet: 0x0985 +packetLen(0x0985, -1) + +// Packet: 0x0986 +packetLen(0x0986, 10) + +// Packet: 0x0987 +packetLen(0x0987, -1) + +// Packet: 0x0988 +packetLen(0x0988, 6) + +// Packet: 0x0989 +packetLen(0x0989, 2) + +// Packet: 0x098a +packetLen(0x098a, -1) + +// Packet: 0x098b +packetLen(0x098b, 2) + +// Packet: 0x098c +packetLen(0x098c, 4) + +// Packet: 0x098d +packetLen(0x098d, -1) + +// Packet: 0x098e +packetLen(0x098e, -1) + +// Packet: 0x098f +packetLen(0x098f, -1) + +// Packet: 0x0990 +packetLen(0x0990, 41) + +// Packet: 0x0991 +packetLen(0x0991, -1) + +// Packet: 0x0992 +packetLen(0x0992, -1) + +// Packet: 0x0993 +packetLen(0x0993, -1) + +// Packet: 0x0994 +packetLen(0x0994, -1) + +// Packet: 0x0995 +packetLen(0x0995, -1) + +// Packet: 0x0996 +packetLen(0x0996, -1) + +// Packet: 0x0997 +packetLen(0x0997, -1) + +// Packet: 0x0998 +packetLen(0x0998, 8) + +// Packet: 0x0999 +packetLen(0x0999, 11) + +// Packet: 0x099a +packetLen(0x099a, 9) + +// Packet: 0x099b +packetLen(0x099b, 8) + +// Packet: 0x099c +packetLen(0x099c, 6) + +// Packet: 0x099d +packetLen(0x099d, -1) + +// Packet: 0x099e +packetLen(0x099e, 12) + +// Packet: 0x099f +packetLen(0x099f, -1) + +// Packet: 0x09a0 +packetLen(0x09a0, 6) + +// Packet: 0x09a1 +packetLen(0x09a1, 2) + +// Packet: 0x09a2 +packetLen(0x09a2, 6) + +// Packet: 0x09a3 +packetLen(0x09a3, -1) + +// Packet: 0x09a4 +packetLen(0x09a4, 18) + +// Packet: 0x09a5 +packetLen(0x09a5, 7) + +// Packet: 0x09a6 +packetLen(0x09a6, 12) + +// Packet: 0x09a7 +packetLen(0x09a7, 10) + +// Packet: 0x09a8 +packetLen(0x09a8, 16) + +// Packet: 0x09a9 +packetLen(0x09a9, 10) + +// Packet: 0x09aa +packetLen(0x09aa, 16) + +// Packet: 0x09ab +packetLen(0x09ab, 6) + +// Packet: 0x09ac +packetLen(0x09ac, -1) + +// Packet: 0x09ad +packetLen(0x09ad, 12) + +// Packet: 0x09ae +packetLen(0x09ae, 19) + +// Packet: 0x09af +packetLen(0x09af, 4) + +// Packet: 0x09b0 +packetLen(0x09b0, 10) + +// Packet: 0x09b1 +packetLen(0x09b1, 4) + +// Packet: 0x09b2 +packetLen(0x09b2, 10) + +// Packet: 0x09b3 +packetLen(0x09b3, 6) + +// Packet: 0x09b4 +packetLen(0x09b4, 6) + +// Packet: 0x09b5 +packetLen(0x09b5, 2) + +// Packet: 0x09b6 +packetLen(0x09b6, 6) + +// Packet: 0x09b7 +packetLen(0x09b7, 4) + +// Packet: 0x09b8 +packetLen(0x09b8, 6) + +// Packet: 0x09b9 +packetLen(0x09b9, 4) + +// Packet: 0x09ba +packetLen(0x09ba, 2) + +// Packet: 0x09bb +packetLen(0x09bb, 6) + +// Packet: 0x09bc +packetLen(0x09bc, 6) + +// Packet: 0x09bd +packetLen(0x09bd, 2) + +// Packet: 0x09be +packetLen(0x09be, 2) + +// Packet: 0x09bf +packetLen(0x09bf, 4) + +// Packet: 0x09c1 +packetLen(0x09c1, 10) + +// Packet: 0x09c2 +packetLen(0x09c2, -1) + +// Packet: 0x09c3 +packetLen(0x09c3, 10) + +// Packet: 0x09c4 +packetLen(0x09c4, 10) + +// Packet: 0x09c5 +packetLen(0x09c5, 1042) + +// Packet: 0x09c6 +packetLen(0x09c6, -1) + +// Packet: 0x09c7 +packetLen(0x09c7, 18) + +// Packet: 0x09c8 +packetLen(0x09c8, -1) + +// Packet: 0x09c9 +packetLen(0x09c9, -1) + +// Packet: 0x09ca +packetLen(0x09ca, -1) + +// Packet: 0x09cb +packetLen(0x09cb, 17) + +// Packet: 0x09cc +packetLen(0x09cc, -1) + +// Packet: 0x09cd +packetLen(0x09cd, 8) + +// Packet: 0x09ce +packetLen(0x09ce, 102) + +// Packet: 0x09cf +packetLen(0x09cf, -1) + +// Packet: 0x09d0 +packetLen(0x09d0, -1) + +// Packet: 0x09d1 +packetLen(0x09d1, 14) + +// Packet: 0x09d2 +packetLen(0x09d2, -1) + +// Packet: 0x09d3 +packetLen(0x09d3, -1) + +// Packet: 0x09d4 +packetLen(0x09d4, 2) + +// Packet: 0x09d5 +packetLen(0x09d5, -1) + +// Packet: 0x09d6 +packetLen(0x09d6, -1) + +// Packet: 0x09d7 +packetLen(0x09d7, -1) + +// Packet: 0x09d8 +packetLen(0x09d8, 2) + +// Packet: 0x09d9 +packetLen(0x09d9, 4) + +// Packet: 0x09da +packetLen(0x09da, -1) + +// Packet: 0x09db +packetLen(0x09db, -1) + +// Packet: 0x09dc +packetLen(0x09dc, -1) + +// Packet: 0x09dd +packetLen(0x09dd, -1) + +// Packet: 0x09de +packetLen(0x09de, -1) + +// Packet: 0x09df +packetLen(0x09df, 7) + +// Packet: 0x09e0 +packetLen(0x09e0, -1) + +// Packet: 0x09e1 +packetLen(0x09e1, 8) + +// Packet: 0x09e2 +packetLen(0x09e2, 8) + +// Packet: 0x09e3 +packetLen(0x09e3, 8) + +// Packet: 0x09e4 +packetLen(0x09e4, 8) + +// Packet: 0x09e5 +packetLen(0x09e5, 18) + +// Packet: 0x09e6 +packetLen(0x09e6, 24) + +// Packet: 0x09e7 +packetLen(0x09e7, 3) + +// Packet: 0x09e8 +packetLen(0x09e8, 11) + +// Packet: 0x09e9 +packetLen(0x09e9, 2) + +// Packet: 0x09ea +packetLen(0x09ea, 11) + +// Packet: 0x09eb +packetLen(0x09eb, -1) + +// Packet: 0x09ec +packetLen(0x09ec, -1) + +// Packet: 0x09ed +packetLen(0x09ed, 3) + +// Packet: 0x09ee +packetLen(0x09ee, 11) + +// Packet: 0x09ef +packetLen(0x09ef, 11) + +// Packet: 0x09f0 +packetLen(0x09f0, -1) + +// Packet: 0x09f1 +packetLen(0x09f1, 11) + +// Packet: 0x09f2 +packetLen(0x09f2, 12) + +// Packet: 0x09f3 +packetLen(0x09f3, 11) + +// Packet: 0x09f4 +packetLen(0x09f4, 12) + +// Packet: 0x09f5 +packetLen(0x09f5, 11) + +// Packet: 0x09f6 +packetLen(0x09f6, 11) + +// Packet: 0x09f7 +packetLen(0x09f7, 77) + +// Packet: 0x09f8 +packetLen(0x09f8, -1) + +// Packet: 0x09f9 +packetLen(0x09f9, 143) + +// Packet: 0x09fa +packetLen(0x09fa, -1) + +// Packet: 0x09fb +packetLen(0x09fb, -1) + +// Packet: 0x09fc +packetLen(0x09fc, 6) + +// Packet: 0x09fd +packetLen(0x09fd, -1) + +// Packet: 0x09fe +packetLen(0x09fe, -1) + +// Packet: 0x09ff +packetLen(0x09ff, -1) + +// Packet: 0x0a00 +packetLen(0x0a00, 269) + +// Packet: 0x0a01 +packetLen(0x0a01, 3) + +// Packet: 0x0a02 +packetLen(0x0a02, 4) + +// Packet: 0x0a03 +packetLen(0x0a03, 2) + +// Packet: 0x0a04 +packetLen(0x0a04, 6) + +// Packet: 0x0a05 +packetLen(0x0a05, 63) + +// Packet: 0x0a06 +packetLen(0x0a06, 6) + +// Packet: 0x0a07 +packetLen(0x0a07, 9) + +// Packet: 0x0a08 +packetLen(0x0a08, 26) + +// Packet: 0x0a09 +packetLen(0x0a09, 55) + +// Packet: 0x0a0a +packetLen(0x0a0a, 57) + +// Packet: 0x0a0b +packetLen(0x0a0b, 57) + +// Packet: 0x0a0c +packetLen(0x0a0c, 66) + +// Packet: 0x0a0d +packetLen(0x0a0d, -1) + +// Packet: 0x0a0e +packetLen(0x0a0e, 14) + +// Packet: 0x0a0f +packetLen(0x0a0f, -1) + +// Packet: 0x0a10 +packetLen(0x0a10, -1) + +// Packet: 0x0a11 +packetLen(0x0a11, -1) + +// Packet: 0x0a12 +packetLen(0x0a12, 27) + +// Packet: 0x0a13 +packetLen(0x0a13, 26) + +// Packet: 0x0a14 +packetLen(0x0a14, 10) + +// Packet: 0x0a15 +packetLen(0x0a15, 12) + +// Packet: 0x0a16 +packetLen(0x0a16, 26) + +// Packet: 0x0a17 +packetLen(0x0a17, 6) + +// Packet: 0x0a18 +packetLen(0x0a18, 14) + +// Packet: 0x0a19 +packetLen(0x0a19, 2) + +// Packet: 0x0a1a +packetLen(0x0a1a, 25) + +// Packet: 0x0a1b +packetLen(0x0a1b, 2) + +// Packet: 0x0a1c +packetLen(0x0a1c, -1) + +// Packet: 0x0a1d +packetLen(0x0a1d, 2) + +// Packet: 0x0a1e +packetLen(0x0a1e, 3) + +// Packet: 0x0a1f +packetLen(0x0a1f, 2) + +// Packet: 0x0a20 +packetLen(0x0a20, 23) + +// Packet: 0x0a21 +packetLen(0x0a21, 3) + +// Packet: 0x0a22 +packetLen(0x0a22, 7) + +// Packet: 0x0a23 +packetLen(0x0a23, -1) + +// Packet: 0x0a24 +packetLen(0x0a24, 66) + +// Packet: 0x0a25 +packetLen(0x0a25, 6) + +// Packet: 0x0a26 +packetLen(0x0a26, 7) + +// Packet: 0x0a27 +packetLen(0x0a27, 8) + +// Packet: 0x0a28 +packetLen(0x0a28, 3) + +// Packet: 0x0a29 +packetLen(0x0a29, 6) + +// Packet: 0x0a2a +packetLen(0x0a2a, 6) + +// Packet: 0x0a2b +packetLen(0x0a2b, 14) + +// Packet: 0x0a2c +packetLen(0x0a2c, 12) + +// Packet: 0x0a2d +packetLen(0x0a2d, -1) + +// Packet: 0x0a2e +packetLen(0x0a2e, 6) + +// Packet: 0x0a2f +packetLen(0x0a2f, 7) + +// Packet: 0x0a30 +packetLen(0x0a30, 106) + +// Packet: 0x0a31 +packetLen(0x0a31, -1) + +// Packet: 0x0a32 +packetLen(0x0a32, 2) + +// Packet: 0x0a33 +packetLen(0x0a33, 7) + +// Packet: 0x0a34 +packetLen(0x0a34, 6) + +// Packet: 0x0a35 +packetLen(0x0a35, 4) + +// Packet: 0x0a36 +packetLen(0x0a36, 7) + +// Packet: 0x0a37 +packetLen(0x0a37, 69) + +// Packet: 0x0a38 +packetLen(0x0a38, 3) + +// Packet: 0x0a39 +packetLen(0x0a39, 36) + +// Packet: 0x0a3a +packetLen(0x0a3a, 12) + +// Packet: 0x0a3b +packetLen(0x0a3b, -1) + +// Packet: 0x0a3c +packetLen(0x0a3c, -1) + +// Packet: 0x0a3d +packetLen(0x0a3d, 20) + +// Packet: 0x0a3e +packetLen(0x0a3e, -1) + +// Packet: 0x0a3f +packetLen(0x0a3f, 11) + +// Packet: 0x0a40 +packetLen(0x0a40, 11) + +// Packet: 0x0a41 +packetLen(0x0a41, 18) + +// Packet: 0x0a42 +packetLen(0x0a42, 43) + +// Packet: 0x0a43 +packetLen(0x0a43, 85) + +// Packet: 0x0a44 +packetLen(0x0a44, -1) + +// Packet: 0x0a46 +packetLen(0x0a46, 14) + +// Packet: 0x0a47 +packetLen(0x0a47, 3) + +// Packet: 0x0a48 +packetLen(0x0a48, 2) + +// Packet: 0x0a49 +packetLen(0x0a49, 22) + +// Packet: 0x0a4a +packetLen(0x0a4a, 6) + +// Packet: 0x0a4b +packetLen(0x0a4b, 22) + +// Packet: 0x0a4c +packetLen(0x0a4c, 28) + +// Packet: 0x0a4d +packetLen(0x0a4d, -1) + +// Packet: 0x0a4e +packetLen(0x0a4e, 6) + +// Packet: 0x0a4f +packetLen(0x0a4f, -1) + +// Packet: 0x0a50 +packetLen(0x0a50, 4) + +// Packet: 0x0a51 +packetLen(0x0a51, 34) + +// Packet: 0x0a52 +packetLen(0x0a52, 20) + +// Packet: 0x0a53 +packetLen(0x0a53, 10) + +// Packet: 0x0a54 +packetLen(0x0a54, -1) + +// Packet: 0x0a55 +packetLen(0x0a55, 2) + +// Packet: 0x0a56 +packetLen(0x0a56, 6) + +// Packet: 0x0a57 +packetLen(0x0a57, 6) + +// Packet: 0x0a58 +packetLen(0x0a58, 8) + +// Packet: 0x0a59 +packetLen(0x0a59, -1) + +// Packet: 0x0a5a +packetLen(0x0a5a, 2) + +// Packet: 0x0a5b +packetLen(0x0a5b, 7) + +// Packet: 0x0a5c +packetLen(0x0a5c, 18) + +// Packet: 0x0a5d +packetLen(0x0a5d, 6) + +// Packet: 0x0a68 +packetLen(0x0a68, 3) + +// Packet: 0x0a69 +packetLen(0x0a69, 6) + +// Packet: 0x0a6a +packetLen(0x0a6a, 12) + +// Packet: 0x0a6b +packetLen(0x0a6b, -1) + +// Packet: 0x0a6c +packetLen(0x0a6c, 7) + +// Packet: 0x0a6d +packetLen(0x0a6d, -1) + +// Packet: 0x0a6e +packetLen(0x0a6e, -1) + +// Packet: 0x0a6f +packetLen(0x0a6f, -1) + +// Packet: 0x0a70 +packetLen(0x0a70, 2) + +// Packet: 0x0a71 +packetLen(0x0a71, -1) + +// Packet: 0x0a72 +packetLen(0x0a72, 61) + +// Packet: 0x0a73 +packetLen(0x0a73, 2) + +// Packet: 0x0a74 +packetLen(0x0a74, 8) + +// Packet: 0x0a76 +packetLen(0x0a76, 80) + +// Packet: 0x0a77 +packetLen(0x0a77, 15) + +// Packet: 0x0a78 +packetLen(0x0a78, 15) + +// Packet: 0x0a79 +packetLen(0x0a79, -1) + +// Packet: 0x0a7b +packetLen(0x0a7b, -1) + +// Packet: 0x0a7c +packetLen(0x0a7c, -1) + +// Packet: 0x0a7d +packetLen(0x0a7d, -1) + +// Packet: 0x0a7e +packetLen(0x0a7e, -1) + +// Packet: 0x0a7f +packetLen(0x0a7f, -1) + +// Packet: 0x0a80 +packetLen(0x0a80, 6) + +// Packet: 0x0a81 +packetLen(0x0a81, 4) + +// Packet: 0x0a82 +packetLen(0x0a82, 46) + +// Packet: 0x0a83 +packetLen(0x0a83, 46) + +// Packet: 0x0a84 +packetLen(0x0a84, 94) + +// Packet: 0x0a85 +packetLen(0x0a85, 82) + +// Packet: 0x0a86 +packetLen(0x0a86, -1) + +// Packet: 0x0a87 +packetLen(0x0a87, -1) + +// Packet: 0x0a88 +packetLen(0x0a88, 2) + +// Packet: 0x0a89 +packetLen(0x0a89, 61) + +// Packet: 0x0a8a +packetLen(0x0a8a, 6) + +// Packet: 0x0a8b +packetLen(0x0a8b, 2) + +// Packet: 0x0a8c +packetLen(0x0a8c, 2) + +// Packet: 0x0a8d +packetLen(0x0a8d, -1) + +// Packet: 0x0a8e +packetLen(0x0a8e, 2) + +// Packet: 0x0a8f +packetLen(0x0a8f, 2) + +// Packet: 0x0a90 +packetLen(0x0a90, 3) + +// Packet: 0x0a91 +packetLen(0x0a91, -1) + +// Packet: 0x0a92 +packetLen(0x0a92, -1) + +// Packet: 0x0a93 +packetLen(0x0a93, 3) + +// Packet: 0x0a94 +packetLen(0x0a94, 2) + +// Packet: 0x0a95 +packetLen(0x0a95, 4) + +// Packet: 0x0a96 +packetLen(0x0a96, 61) + +// Packet: 0x0a97 +packetLen(0x0a97, 8) + +// Packet: 0x0a98 +packetLen(0x0a98, 10) + +// Packet: 0x0a99 +packetLen(0x0a99, 4) + +// Packet: 0x0a9a +packetLen(0x0a9a, 10) + +// Packet: 0x0a9b +packetLen(0x0a9b, -1) + +// Packet: 0x0a9c +packetLen(0x0a9c, 2) + +// Packet: 0x0a9d +packetLen(0x0a9d, 4) + +// Packet: 0x0a9e +packetLen(0x0a9e, 2) + +// Packet: 0x0a9f +packetLen(0x0a9f, 2) + +// Packet: 0x0aa0 +packetLen(0x0aa0, 2) + +// Packet: 0x0aa1 +packetLen(0x0aa1, 4) + +// Packet: 0x0aa2 +packetLen(0x0aa2, -1) + +// Packet: 0x0aa3 +packetLen(0x0aa3, 9) + +// Packet: 0x0aa4 +packetLen(0x0aa4, 2) + +// Packet: 0x0aa5 +packetLen(0x0aa5, -1) + +// Packet: 0x0aa6 +packetLen(0x0aa6, 36) + +// Packet: 0x0aa7 +packetLen(0x0aa7, 6) + +// Packet: 0x0aa8 +packetLen(0x0aa8, 5) + +// Packet: 0x0aa9 +packetLen(0x0aa9, -1) + +// Packet: 0x0aaa +packetLen(0x0aaa, -1) + +// Packet: 0x0aab +packetLen(0x0aab, -1) + +// Packet: 0x0aac +packetLen(0x0aac, 69) + +// Packet: 0x0aad +packetLen(0x0aad, 51) + +// Packet: 0x0aae +packetLen(0x0aae, 2) + +// Packet: 0x0aaf +packetLen(0x0aaf, 6) + +// Packet: 0x0ab0 +packetLen(0x0ab0, 6) + +// Packet: 0x0ab1 +packetLen(0x0ab1, 14) + +// Packet: 0x0ab2 +packetLen(0x0ab2, 7) + +// Packet: 0x0ab3 +packetLen(0x0ab3, 19) + +// Packet: 0x0ab4 +packetLen(0x0ab4, 6) + +// Packet: 0x0ab5 +packetLen(0x0ab5, 2) + +// Packet: 0x0ab6 +packetLen(0x0ab6, 8) + +// Packet: 0x0ab7 +packetLen(0x0ab7, 4) + +// Packet: 0x0ab8 +packetLen(0x0ab8, 2) + +// Packet: 0x0ab9 +packetLen(0x0ab9, 47) + +// Packet: 0x0aba +packetLen(0x0aba, 2) + +// Packet: 0x0abb +packetLen(0x0abb, 2) + +// Packet: 0x0abc +packetLen(0x0abc, -1) + +// Packet: 0x0abd +packetLen(0x0abd, 10) + +// Packet: 0x0abe +packetLen(0x0abe, -1) + +// Packet: 0x0abf +packetLen(0x0abf, -1) + +// Packet: 0x0ac0 +packetLen(0x0ac0, 26) + +// Packet: 0x0ac1 +packetLen(0x0ac1, 26) + +// Packet: 0x0ac2 +packetLen(0x0ac2, -1) + +// Packet: 0x0ac3 +packetLen(0x0ac3, 2) + +// Packet: 0x0ac4 +packetLen(0x0ac4, -1) + +// Packet: 0x0ac5 +packetLen(0x0ac5, 156) + +// Packet: 0x0ac6 +packetLen(0x0ac6, 156) + +// Packet: 0x0ac7 +packetLen(0x0ac7, 156) + +// Packet: 0x0ac8 +packetLen(0x0ac8, 2) + +// Packet: 0x0ac9 +packetLen(0x0ac9, -1) + +// Packet: 0x0aca +packetLen(0x0aca, 3) + +// Packet: 0x0acb +packetLen(0x0acb, 12) + +// Packet: 0x0acc +packetLen(0x0acc, 18) + +// Packet: 0x0acd +packetLen(0x0acd, 23) + +// Packet: 0x0ace +packetLen(0x0ace, 4) + +// Packet: 0x0acf +packetLen(0x0acf, 68) + +// Packet: 0x0ad0 +packetLen(0x0ad0, 11) + +// Packet: 0x0ad1 +packetLen(0x0ad1, -1) + +// Packet: 0x0ad2 +packetLen(0x0ad2, 30) + +// Packet: 0x0ad3 +packetLen(0x0ad3, -1) + +// Packet: 0x0ad4 +packetLen(0x0ad4, -1) + +// Packet: 0x0ad5 +packetLen(0x0ad5, 2) + +// Packet: 0x0ad6 +packetLen(0x0ad6, 2) + +// Packet: 0x0ad7 +packetLen(0x0ad7, 8) + +// Packet: 0x0ad8 +packetLen(0x0ad8, 8) + +// Packet: 0x0ad9 +packetLen(0x0ad9, -1) + +// Packet: 0x0ada +packetLen(0x0ada, 32) + +// Packet: 0x0adb +packetLen(0x0adb, -1) + +// Packet: 0x0adc +packetLen(0x0adc, 6) + +// Packet: 0x0add +packetLen(0x0add, 24) + +// Packet: 0x0ade +packetLen(0x0ade, 6) + +// Packet: 0x0adf +packetLen(0x0adf, 58) + +// Packet: 0x0ae0 +packetLen(0x0ae0, 30) + +// Packet: 0x0ae1 +packetLen(0x0ae1, 28) + +// Packet: 0x0ae2 +packetLen(0x0ae2, 7) + +// Packet: 0x0ae3 +packetLen(0x0ae3, -1) + +// Packet: 0x0ae4 +packetLen(0x0ae4, 89) + +// Packet: 0x0ae5 +packetLen(0x0ae5, -1) + +// Packet: 0x0ae6 +packetLen(0x0ae6, 10) + +// Packet: 0x0ae7 +packetLen(0x0ae7, 38) + +// Packet: 0x0ae8 +packetLen(0x0ae8, 2) + +// Packet: 0x0ae9 +packetLen(0x0ae9, 13) + +// Packet: 0x0aec +packetLen(0x0aec, 2) + +// Packet: 0x0aed +packetLen(0x0aed, 2) + +// Packet: 0x0aee +packetLen(0x0aee, 2) + +// Packet: 0x0aef +packetLen(0x0aef, 2) + +// Packet: 0x0af0 +packetLen(0x0af0, 10) + +// Packet: 0x0af1 +packetLen(0x0af1, 102) + +// Packet: 0x0af2 +packetLen(0x0af2, 40) + +// Packet: 0x0af3 +packetLen(0x0af3, -1) + +// Packet: 0x0af4 +packetLen(0x0af4, 11) + +// Packet: 0x0af5 +packetLen(0x0af5, 3) + +// Packet: 0x0af6 +packetLen(0x0af6, 88) + +// Packet: 0x0af7 +packetLen(0x0af7, 32) + +// Packet: 0x0af8 +packetLen(0x0af8, 11) + +// Packet: 0x0af9 +packetLen(0x0af9, 6) + +// Packet: 0x0afa +packetLen(0x0afa, 58) + +// Packet: 0x0afb +packetLen(0x0afb, -1) + +// Packet: 0x0afc +packetLen(0x0afc, 16) + +// Packet: 0x0afd +packetLen(0x0afd, -1) + +// Packet: 0x0afe +packetLen(0x0afe, -1) + +// Packet: 0x0aff +packetLen(0x0aff, -1) + +// Packet: 0x0b00 +packetLen(0x0b00, 8) + +// Packet: 0x0b01 +packetLen(0x0b01, 56) + +// Packet: 0x0b02 +packetLen(0x0b02, 26) + +// Packet: 0x0b03 +packetLen(0x0b03, -1) + +// Packet: 0x0b04 +#if PACKETVER >= 20210721 +packetLen(0x0b04, 190) +#elif PACKETVER >= 20210106 +packetLen(0x0b04, 90) +#endif + +// Packet: 0x0b05 +packetLen(0x0b05, 63) + +// Packet: 0x0b07 +packetLen(0x0b07, -1) + +// Packet: 0x0b08 +packetLen(0x0b08, -1) + +// Packet: 0x0b09 +packetLen(0x0b09, -1) + +// Packet: 0x0b0a +packetLen(0x0b0a, -1) + +// Packet: 0x0b0b +packetLen(0x0b0b, 4) + +// Packet: 0x0b0c +packetLen(0x0b0c, 155) + +// Packet: 0x0b0d +packetLen(0x0b0d, 10) + +// Packet: 0x0b0e +packetLen(0x0b0e, -1) + +// Packet: 0x0b0f +packetLen(0x0b0f, -1) + +// Packet: 0x0b10 +packetLen(0x0b10, 10) + +// Packet: 0x0b11 +packetLen(0x0b11, 4) + +// Packet: 0x0b12 +packetLen(0x0b12, 2) + +// Packet: 0x0b13 +packetLen(0x0b13, 48) + +// Packet: 0x0b14 +packetLen(0x0b14, 2) + +// Packet: 0x0b15 +packetLen(0x0b15, 7) + +// Packet: 0x0b16 +packetLen(0x0b16, 2) + +// Packet: 0x0b17 +packetLen(0x0b17, 3) + +// Packet: 0x0b18 +packetLen(0x0b18, 4) + +// Packet: 0x0b19 +packetLen(0x0b19, 2) + +// Packet: 0x0b1a +packetLen(0x0b1a, 29) + +// Packet: 0x0b1b +packetLen(0x0b1b, 2) + +// Packet: 0x0b1c +packetLen(0x0b1c, 2) + +// Packet: 0x0b1d +packetLen(0x0b1d, 2) + +// Packet: 0x0b1e +packetLen(0x0b1e, 14) + +// Packet: 0x0b1f +packetLen(0x0b1f, 14) + +// Packet: 0x0b20 +packetLen(0x0b20, 271) + +// Packet: 0x0b21 +packetLen(0x0b21, 13) + +// Packet: 0x0b22 +packetLen(0x0b22, 5) + +// Packet: 0x0b23 +packetLen(0x0b23, 6) + +// Packet: 0x0b24 +packetLen(0x0b24, 6) + +// Packet: 0x0b25 +packetLen(0x0b25, 6) + +// Packet: 0x0b27 +packetLen(0x0b27, -1) + +// Packet: 0x0b28 +packetLen(0x0b28, 3) + +// Packet: 0x0b2b +packetLen(0x0b2b, 11) + +// Packet: 0x0b2c +packetLen(0x0b2c, 3) + +// Packet: 0x0b2d +packetLen(0x0b2d, 11) + +// Packet: 0x0b2e +packetLen(0x0b2e, 4) + +// Packet: 0x0b2f +packetLen(0x0b2f, 73) + +// Packet: 0x0b30 +packetLen(0x0b30, -1) + +// Packet: 0x0b31 +packetLen(0x0b31, 17) + +// Packet: 0x0b32 +packetLen(0x0b32, -1) + +// Packet: 0x0b33 +packetLen(0x0b33, 17) + +// Packet: 0x0b34 +packetLen(0x0b34, 50) + +// Packet: 0x0b35 +packetLen(0x0b35, 3) + +// Packet: 0x0b36 +packetLen(0x0b36, -1) + +// Packet: 0x0b37 +packetLen(0x0b37, -1) + +// Packet: 0x0b39 +packetLen(0x0b39, -1) + +// Packet: 0x0b3c +packetLen(0x0b3c, 4) + +// Packet: 0x0b3d +packetLen(0x0b3d, -1) + +// Packet: 0x0b3e +packetLen(0x0b3e, -1) + +// Packet: 0x0b3f +packetLen(0x0b3f, 64) + +// Packet: 0x0b40 +packetLen(0x0b40, -1) + +// Packet: 0x0b41 +packetLen(0x0b41, 70) + +// Packet: 0x0b42 +packetLen(0x0b42, 62) + +// Packet: 0x0b43 +packetLen(0x0b43, 48) + +// Packet: 0x0b44 +packetLen(0x0b44, 58) + +// Packet: 0x0b45 +packetLen(0x0b45, 58) + +// Packet: 0x0b46 +packetLen(0x0b46, 10) + +// Packet: 0x0b47 +packetLen(0x0b47, 14) + +// Packet: 0x0b48 +packetLen(0x0b48, 18) + +// Packet: 0x0b49 +packetLen(0x0b49, 4) + +// Packet: 0x0b4a +packetLen(0x0b4a, 6) + +// Packet: 0x0b4b +packetLen(0x0b4b, 4) + +// Packet: 0x0b4c +packetLen(0x0b4c, 2) + +// Packet: 0x0b4d +packetLen(0x0b4d, -1) + +// Packet: 0x0b4e +packetLen(0x0b4e, -1) + +// Packet: 0x0b4f +packetLen(0x0b4f, 2) + +// Packet: 0x0b50 +packetLen(0x0b50, 2) + +// Packet: 0x0b51 +packetLen(0x0b51, 2) + +// Packet: 0x0b52 +packetLen(0x0b52, 2) + +// Packet: 0x0b53 +packetLen(0x0b53, 52) + +// Packet: 0x0b54 +packetLen(0x0b54, 8) + +// Packet: 0x0b55 +packetLen(0x0b55, -1) + +// Packet: 0x0b56 +packetLen(0x0b56, -1) + +// Packet: 0x0b57 +packetLen(0x0b57, -1) + +// Packet: 0x0b58 +packetLen(0x0b58, 2) + +// Packet: 0x0b59 +packetLen(0x0b59, 4) + +// Packet: 0x0b5a +packetLen(0x0b5a, -1) + +// Packet: 0x0b5b +packetLen(0x0b5b, 14) + +// Packet: 0x0b5c +packetLen(0x0b5c, 2) + +// Packet: 0x0b5d +packetLen(0x0b5d, 10) + +// Packet: 0x0b5e +packetLen(0x0b5e, 33) + +// Packet: 0x0b5f +packetLen(0x0b5f, -1) + +// Packet: 0x0b60 +packetLen(0x0b60, -1) + +// Packet: 0x0b61 +packetLen(0x0b61, -1) + +// Packet: 0x0b62 +packetLen(0x0b62, -1) + +// Packet: 0x0b63 +packetLen(0x0b63, -1) + +// Packet: 0x0b64 +packetLen(0x0b64, -1) + +// Packet: 0x0b65 +packetLen(0x0b65, -1) + +// Packet: 0x0b66 +packetLen(0x0b66, 26) + +// Packet: 0x0b67 +packetLen(0x0b67, 33) + +// Packet: 0x0b68 +packetLen(0x0b68, 12) + +// Packet: 0x0b69 +packetLen(0x0b69, 18) + +// Packet: 0x0b6a +packetLen(0x0b6a, -1) + +// Packet: 0x0b6b +packetLen(0x0b6b, 14) + +// Packet: 0x0b6c +packetLen(0x0b6c, 12) + +// Packet: 0x0b6d +packetLen(0x0b6d, 6) + +// Packet: 0x0b6e +packetLen(0x0b6e, 14) + +// Packet: 0x0b6f +packetLen(0x0b6f, 177) + +// Packet: 0x0b70 +packetLen(0x0b70, -1) + +// Packet: 0x0b71 +packetLen(0x0b71, 177) + +// Packet: 0x0b72 +packetLen(0x0b72, -1) + +// Packet: 0x0b73 +packetLen(0x0b73, 8) + +// Packet: 0x0b74 +packetLen(0x0b74, 1026) + +// Packet: 0x0b75 +packetLen(0x0b75, 1026) + +// Packet: 0x0b76 +packetLen(0x0b76, 77) + +// Packet: 0x0b77 +packetLen(0x0b77, -1) + +// Packet: 0x0b78 +packetLen(0x0b78, -1) + +// Packet: 0x0b79 +packetLen(0x0b79, -1) + +// Packet: 0x0b7a +packetLen(0x0b7a, -1) + +// Packet: 0x0b7b +packetLen(0x0b7b, 118) + +// Packet: 0x0b7c +packetLen(0x0b7c, -1) + +// Packet: 0x0b7d +packetLen(0x0b7d, -1) + +// Packet: 0x0b7e +packetLen(0x0b7e, 60) + +// Packet: 0x0b7f +packetLen(0x0b7f, 10) + +// Packet: 0x0b80 +packetLen(0x0b80, 10) + +// Packet: 0x0b8c +packetLen(0x0b8c, -1) + +// Packet: 0x0b8d +packetLen(0x0b8d, -1) + +// Packet: 0x0b8e +packetLen(0x0b8e, 18) + +// Packet: 0x0b8f +packetLen(0x0b8f, 6) + +// Packet: 0x0b90 +packetLen(0x0b90, 2) + +// Packet: 0x0b91 +packetLen(0x0b91, 8) + +// Packet: 0x0b92 +packetLen(0x0b92, 5) + +// Packet: 0x0b93 +packetLen(0x0b93, 12) + +// Packet: 0x0b94 +packetLen(0x0b94, 14) + +// Packet: 0x0b95 +packetLen(0x0b95, -1) + +// Packet: 0x0b96 +packetLen(0x0b96, 26) + +// Packet: 0x0b97 +packetLen(0x0b97, 27) + +// Packet: 0x0b98 +packetLen(0x0b98, 6) + +// Packet: 0x0b99 +packetLen(0x0b99, 10) + +// Packet: 0x0b9a +packetLen(0x0b9a, 11) + +// Packet: 0x0b9b +packetLen(0x0b9b, 12) + +// Packet: 0x0b9c +packetLen(0x0b9c, 16) + +// Packet: 0x0b9d +packetLen(0x0b9d, 14) + +// Packet: 0x0b9e +packetLen(0x0b9e, 12) + +// Packet: 0x0b9f +packetLen(0x0b9f, 10) + +// Packet: 0x0ba0 +packetLen(0x0ba0, 2) + +// Packet: 0x0ba1 +packetLen(0x0ba1, 3) + +// Packet: 0x0ba2 +packetLen(0x0ba2, 10) + +// Packet: 0x0ba3 +packetLen(0x0ba3, 10) + +// Packet: 0x0ba4 +#if PACKETVER >= 20210217 +packetLen(0x0ba4, 85) +#endif + +// Packet: 0x0ba5 +#if PACKETVER >= 20210217 +packetLen(0x0ba5, 12) +#endif + +// Packet: 0x0ba6 +#if PACKETVER >= 20210317 +packetLen(0x0ba6, -1) +#endif + +// Packet: 0x0ba7 +#if PACKETVER >= 20210331 +packetLen(0x0ba7, -1) +#elif PACKETVER >= 20210317 +packetLen(0x0ba7, 6) +#endif + +// Packet: 0x0ba8 +#if PACKETVER >= 20210331 +packetLen(0x0ba8, 7) +#elif PACKETVER >= 20210317 +packetLen(0x0ba8, 6) +#endif + +// Packet: 0x0ba9 +#if PACKETVER >= 20210331 +packetLen(0x0ba9, -1) +#elif PACKETVER >= 20210317 +packetLen(0x0ba9, 6) +#endif + +// Packet: 0x0baa +#if PACKETVER >= 20210401 +packetLen(0x0baa, 22) +#elif PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0baa, -1) +#endif + +// Packet: 0x0bab +#if PACKETVER >= 20210401 +packetLen(0x0bab, 22) +#elif PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0bab, 7) +#endif + +// Packet: 0x0bac +#if PACKETVER >= 20210630 +packetLen(0x0bac, 22) +// ignored packet from 2021-06-30_Ragexe_1624513034_zero +// ignored packet from 2021-06-30_Ragexe_1624528241_zero +#elif PACKETVER >= 20210623 +packetLen(0x0bac, 22) +// ignored packet from 2021-06-23_Ragexe_1624430023_zero +#elif PACKETVER >= 20210616 +packetLen(0x0bac, 22) +// ignored packet from 2021-06-16_Ragexe_1623845562_zero +#elif PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0bac, -1) +#endif + +// Packet: 0x0bad +#if PACKETVER >= 20210818 +packetLen(0x0bad, 2) +#elif PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0bad, 6) +#endif + +// Packet: 0x0bae +#if PACKETVER >= 20210818 +packetLen(0x0bae, 3) +#elif PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0bae, 6) +#endif + +// Packet: 0x0baf +#if PACKETVER >= 20210331 +// removed +#elif PACKETVER >= 20210317 +packetLen(0x0baf, 6) +#endif + + +#endif /* COMMON_PACKETS2021_LEN_ZERO_H */ diff --git a/src/common/packets/packets_len_main.h b/src/common/packets/packets_len_main.h index 98c1b624ca4..9bfc7543231 100644 --- a/src/common/packets/packets_len_main.h +++ b/src/common/packets/packets_len_main.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +24,9 @@ /* This file is autogenerated, please do not commit manual changes */ -#if PACKETVER >= 20200000 +#if PACKETVER >= 20210000 +#include "common/packets/packets2021_len_main.h" +#elif PACKETVER >= 20200000 #include "common/packets/packets2020_len_main.h" #elif PACKETVER >= 20190000 #include "common/packets/packets2019_len_main.h" diff --git a/src/common/packets/packets_len_re.h b/src/common/packets/packets_len_re.h index 78c2c2cd0be..bda63eed012 100644 --- a/src/common/packets/packets_len_re.h +++ b/src/common/packets/packets_len_re.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +24,9 @@ /* This file is autogenerated, please do not commit manual changes */ -#if PACKETVER >= 20200000 +#if PACKETVER >= 20210000 +#include "common/packets/packets2021_len_re.h" +#elif PACKETVER >= 20200000 #include "common/packets/packets2020_len_re.h" #elif PACKETVER >= 20190000 #include "common/packets/packets2019_len_re.h" diff --git a/src/common/packets/packets_len_zero.h b/src/common/packets/packets_len_zero.h index e488b44feb2..f6f48deec76 100644 --- a/src/common/packets/packets_len_zero.h +++ b/src/common/packets/packets_len_zero.h @@ -3,7 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2018-2021 Hercules Dev Team - * Copyright (C) 2018-2020 Andrei Karas (4144) + * Copyright (C) 2018-2021 Andrei Karas (4144) * * Hercules is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,7 +24,9 @@ /* This file is autogenerated, please do not commit manual changes */ -#if PACKETVER >= 20200000 +#if PACKETVER >= 20210000 +#include "common/packets/packets2021_len_zero.h" +#elif PACKETVER >= 20200000 #include "common/packets/packets2020_len_zero.h" #elif PACKETVER >= 20190000 #include "common/packets/packets2019_len_zero.h" From d84be90664dfad407e9f6737ed289af0ce339f42 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 15 Oct 2021 17:37:33 +0300 Subject: [PATCH 04/65] Update chars list packets --- src/char/char.c | 43 ++++++++++++++++++++++-------------- src/char/packets_hc_struct.h | 26 +++++++++++++++++++++- 2 files changed, 52 insertions(+), 17 deletions(-) diff --git a/src/char/char.c b/src/char/char.c index 0454204e84e..78370902f6b 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -54,7 +54,6 @@ #include "common/mapindex.h" #include "common/mmo.h" #include "common/nullpo.h" -#include "common/packetsstatic_len.h" #include "common/showmsg.h" #include "common/socket.h" #include "common/strlib.h" @@ -2034,9 +2033,7 @@ static int char_count_users(void) } // Writes char data to the buffer in the format used by the client. -// Used in packets 0x6b (chars info) and 0x6d (new char info) -// Returns the size -#define MAX_CHAR_BUF (PACKET_LEN_0x006d - 2) +// Returns CHARACTER_INFO size static int char_mmo_char_tobuf(uint8 *buffer, struct mmo_charstatus *p) { unsigned short offset = 0; @@ -2070,7 +2067,12 @@ static int char_mmo_char_tobuf(uint8 *buffer, struct mmo_charstatus *p) WBUFL(buf,32) = p->karma; WBUFL(buf,36) = p->manner; WBUFW(buf,40) = min(p->status_point, INT16_MAX); -#if PACKETVER > 20081217 +#if PACKETVER_MAIN_NUM >= 20201007 + WBUFQ(buf, 42) = p->hp; + WBUFQ(buf, 50) = p->max_hp; + offset += 12; + buf = WBUFP(buffer, offset); +#elif PACKETVER > 20081217 WBUFL(buf,42) = p->hp; WBUFL(buf,46) = p->max_hp; offset+=4; @@ -2079,8 +2081,15 @@ static int char_mmo_char_tobuf(uint8 *buffer, struct mmo_charstatus *p) WBUFW(buf,42) = min(p->hp, INT16_MAX); WBUFW(buf,44) = min(p->max_hp, INT16_MAX); #endif - WBUFW(buf,46) = min(p->sp, INT16_MAX); - WBUFW(buf,48) = min(p->max_sp, INT16_MAX); +#if PACKETVER_MAIN_NUM >= 20201007 + WBUFQ(buf, 46) = p->sp; + WBUFQ(buf, 54) = p->max_sp; + offset += 12; + buf = WBUFP(buffer, offset); +#else // PACKETVER_MAIN_NUM >= 20201007 + WBUFW(buf, 46) = min(p->sp, INT16_MAX); + WBUFW(buf, 48) = min(p->max_sp, INT16_MAX); +#endif // PACKETVER_MAIN_NUM >= 20201007 WBUFW(buf,50) = DEFAULT_WALK_SPEED; // p->speed; WBUFW(buf,52) = p->class; WBUFW(buf,54) = p->hair; @@ -2150,11 +2159,12 @@ static int char_mmo_char_tobuf(uint8 *buffer, struct mmo_charstatus *p) static void char_send_HC_ACK_CHARINFO_PER_PAGE(int fd, struct char_session_data *sd) { #if PACKETVER_MAIN_NUM >= 20130522 || PACKETVER_RE_NUM >= 20130327 || defined(PACKETVER_ZERO) - WFIFOHEAD(fd, sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE) + (MAX_CHARS * MAX_CHAR_BUF)); + const int len = sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE); + WFIFOHEAD(fd, len + (MAX_CHARS * MAX_CHAR_BUF)); struct PACKET_HC_ACK_CHARINFO_PER_PAGE *p = WFIFOP(fd, 0); int count = 0; p->packetId = HEADER_HC_ACK_CHARINFO_PER_PAGE; - p->packetLen = chr->mmo_chars_fromsql(sd, WFIFOP(fd, 4), &count) + sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE); + p->packetLen = chr->mmo_chars_fromsql(sd, WFIFOP(fd, len), &count) + len; WFIFOSET(fd, p->packetLen); // send empty packet if chars count is 3, for trigger final code in client if (count == 3) { @@ -2166,10 +2176,11 @@ static void char_send_HC_ACK_CHARINFO_PER_PAGE(int fd, struct char_session_data static void char_send_HC_ACK_CHARINFO_PER_PAGE_tail(int fd, struct char_session_data *sd) { #if PACKETVER_MAIN_NUM >= 20130522 || PACKETVER_RE_NUM >= 20130327 || defined(PACKETVER_ZERO) - WFIFOHEAD(fd, sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE)); + const int len = sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE); + WFIFOHEAD(fd, len); struct PACKET_HC_ACK_CHARINFO_PER_PAGE *p = WFIFOP(fd, 0); p->packetId = HEADER_HC_ACK_CHARINFO_PER_PAGE; - p->packetLen = sizeof(struct PACKET_HC_ACK_CHARINFO_PER_PAGE); + p->packetLen = len; WFIFOSET(fd, p->packetLen); #endif } @@ -4820,10 +4831,10 @@ static void char_creation_ok(int fd, struct mmo_charstatus *char_dat) int len; // send to player - WFIFOHEAD(fd,2+MAX_CHAR_BUF); - WFIFOW(fd,0) = 0x6d; - len = 2 + chr->mmo_char_tobuf(WFIFOP(fd,2), char_dat); - WFIFOSET(fd,len); + WFIFOHEAD(fd, 2 + MAX_CHAR_BUF); + WFIFOW(fd, 0) = HEADER_HC_ACCEPT_MAKECHAR; + len = 2 + chr->mmo_char_tobuf(WFIFOP(fd, 2), char_dat); + WFIFOSET(fd, len); } static void char_parse_char_create_new_char(int fd, struct char_session_data *sd) __attribute__((nonnull (2))); @@ -5162,7 +5173,7 @@ static void char_parse_char_request_chars(int fd, struct char_session_data *sd) static void char_change_character_slot_ack(int fd, bool ret) { WFIFOHEAD(fd, 8); - WFIFOW(fd, 0) = 0x8d5; + WFIFOW(fd, 0) = HEADER_HC_ACK_CHANGE_CHARACTER_SLOT; WFIFOW(fd, 2) = 8; WFIFOW(fd, 4) = ret?0:1; WFIFOW(fd, 6) = 0;/* we enforce it elsewhere, go 0 */ diff --git a/src/char/packets_hc_struct.h b/src/char/packets_hc_struct.h index f1075f570c7..e3f22c6c052 100644 --- a/src/char/packets_hc_struct.h +++ b/src/char/packets_hc_struct.h @@ -29,7 +29,14 @@ #pragma pack(push, 1) #endif // not NetBSD < 6 / Solaris -#if PACKETVER_MAIN_NUM >= 20130522 || PACKETVER_RE_NUM >= 20130327 || defined(PACKETVER_ZERO) +#if PACKETVER_MAIN_NUM >= 20201007 +struct PACKET_HC_ACK_CHARINFO_PER_PAGE { + int16 packetId; + int16 packetLen; + // chars list[] +} __attribute__((packed)); +DEFINE_PACKET_HEADER(HC_ACK_CHARINFO_PER_PAGE, 0x0b72); +#elif PACKETVER_MAIN_NUM >= 20130522 || PACKETVER_RE_NUM >= 20130327 || defined(PACKETVER_ZERO) struct PACKET_HC_ACK_CHARINFO_PER_PAGE { int16 packetId; int16 packetLen; @@ -38,6 +45,23 @@ struct PACKET_HC_ACK_CHARINFO_PER_PAGE { DEFINE_PACKET_HEADER(HC_ACK_CHARINFO_PER_PAGE, 0x099d); #endif +#if PACKETVER_MAIN_NUM >= 20201007 +#define MAX_CHAR_BUF (PACKET_LEN_0x0b6f - 2) +#else // PACKETVER_MAIN_NUM >= 20201007 +#define MAX_CHAR_BUF (PACKET_LEN_0x006d - 2) +#endif // // PACKETVER_MAIN_NUM >= 20201007 + +// because no structs set packet ids in define +#if PACKETVER_MAIN_NUM >= 20201007 +DEFINE_PACKET_ID(HC_ACCEPT_MAKECHAR, 0x0b6f) +DEFINE_PACKET_ID(HC_ACK_CHANGE_CHARACTER_SLOT, 0x0b70) +DEFINE_PACKET_ID(HC_UPDATE_CHARINFO, 0x0b71) +#else // PACKETVER_MAIN_NUM >= 20201007 +DEFINE_PACKET_ID(HC_ACCEPT_MAKECHAR, 0x006d) +DEFINE_PACKET_ID(HC_ACK_CHANGE_CHARACTER_SLOT, 0x08d5) +DEFINE_PACKET_ID(HC_UPDATE_CHARINFO, 0x08e3) +#endif // // PACKETVER_MAIN_NUM >= 20201007 + #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #pragma pack(pop) #endif // not NetBSD < 6 / Solaris From 8fbfe135a5e4d3bdb49b4f67b7c6775235170f8b Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 15 Oct 2021 23:13:38 +0300 Subject: [PATCH 05/65] Fix packet ZC_EQUIPWIN_MICROSCOPE for old clients and update struct --- src/map/clif.c | 40 ++++++++------ src/map/packets_struct.h | 110 +++++++++++++++++++++++++++++++-------- 2 files changed, 112 insertions(+), 38 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 320a61ddd71..8880242112b 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -92,7 +92,6 @@ static struct packet_itemlist_normal itemlist_normal; static struct packet_itemlist_equip itemlist_equip; static struct ZC_STORE_ITEMLIST_NORMAL storelist_normal; static struct ZC_STORE_ITEMLIST_EQUIP storelist_equip; -static struct packet_viewequip_ack viewequip_list; // temporart buffer for send big packets char packet_buf[0xffff]; //#define DUMP_UNKNOWN_PACKET @@ -10290,42 +10289,49 @@ static void clif_equpcheckbox(struct map_session_data *sd) /// 0859 .W .24B .W .W .W .W .W .W .W .W .B {equip item}.28B* (ZC_EQUIPWIN_MICROSCOPE2, PACKETVER >= 20110111) static void clif_viewequip_ack(struct map_session_data *sd, struct map_session_data *tsd) { +#if PACKETVER_AD_NUM >= 20071211 || PACKETVER_SAK_NUM >= 20071127 || PACKETVER_MAIN_NUM >= 20071211 || defined(PACKETVER_RE) || defined(PACKETVER_ZERO) int i, equip = 0; nullpo_retv(sd); nullpo_retv(tsd); + struct PACKET_ZC_EQUIPWIN_MICROSCOPE *packet = (struct PACKET_ZC_EQUIPWIN_MICROSCOPE*)&packet_buf[0]; for (i = 0; i < EQI_MAX; i++) { int k = tsd->equip_index[i]; if (k >= 0) { if (tsd->status.inventory[k].nameid <= 0 || tsd->inventory_data[k] == NULL) // Item doesn't exist continue; - clif->item_equip(k+2,&viewequip_list.list[equip++],&tsd->status.inventory[k],tsd->inventory_data[k],pc->equippoint(tsd,k)); + clif->item_equip(k + 2, + &packet->list[equip++], + &tsd->status.inventory[k], + tsd->inventory_data[k], + pc->equippoint(tsd, k)); } } - viewequip_list.PacketType = viewequipackType; - viewequip_list.PacketLength = ( sizeof( viewequip_list ) - sizeof( viewequip_list.list ) ) + ( sizeof(struct EQUIPITEM_INFO) * equip ); + packet->PacketType = HEADER_ZC_EQUIPWIN_MICROSCOPE; + packet->PacketLength = sizeof(struct PACKET_ZC_EQUIPWIN_MICROSCOPE) + (sizeof(struct EQUIPITEM_INFO) * equip); - safestrncpy(viewequip_list.characterName, tsd->status.name, NAME_LENGTH); + safestrncpy(packet->characterName, tsd->status.name, NAME_LENGTH); - viewequip_list.job = tsd->status.class; - viewequip_list.head = tsd->vd.hair_style; - viewequip_list.accessory = tsd->vd.head_bottom; - viewequip_list.accessory2 = tsd->vd.head_mid; - viewequip_list.accessory3 = tsd->vd.head_top; -#if PACKETVER >= 20110111 - viewequip_list.robe = tsd->vd.robe; + packet->job = tsd->status.class; + packet->head = tsd->vd.hair_style; + packet->accessory = tsd->vd.head_bottom; + packet->accessory2 = tsd->vd.head_mid; + packet->accessory3 = tsd->vd.head_top; +#if PACKETVER >= 20101123 + packet->robe = tsd->vd.robe; #endif - viewequip_list.headpalette = tsd->vd.hair_color; - viewequip_list.bodypalette = tsd->vd.cloth_color; + packet->headpalette = tsd->vd.hair_color; + packet->bodypalette = tsd->vd.cloth_color; #if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808 - viewequip_list.body2 = tsd->vd.body_style; + packet->body2 = tsd->vd.body_style; #endif - viewequip_list.sex = tsd->vd.sex; + packet->sex = tsd->vd.sex; - clif->send(&viewequip_list, viewequip_list.PacketLength, &sd->bl, SELF); + clif->send(packet, packet->PacketLength, &sd->bl, SELF); +#endif // PACKETVER_AD_NUM >= 20071211 || PACKETVER_SAK_NUM >= 20071127 || PACKETVER_MAIN_NUM >= 20071211 || defined(PACKETVER_RE) || defined(PACKETVER_ZERO) } /** diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 5f71eaf0d2c..249776ded57 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -282,20 +282,6 @@ enum packet_headers { unequipitemackType = 0x99a, #else unequipitemackType = 0xac, -#endif -#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808 - viewequipackType = 0xb03, -#elif PACKETVER >= 20150226 - viewequipackType = 0xa2d, -#elif PACKETVER >= 20120925 - viewequipackType = 0x997, -// [4144] not supported due other packets/structs not updated -//#elif (PACKETVER_MAIN_NUM >= 20111207) || (PACKETVER_RE_NUM >= 20111122) -// viewequipackType = 0x906, -#elif PACKETVER >= 20101124 - viewequipackType = 0x859, -#else - viewequipackType = 0x2d7, #endif notifybindonequip = 0x2d3, monsterhpType = 0x977, @@ -1259,7 +1245,8 @@ struct packet_unequipitem_ack { uint8 result; } __attribute__((packed)); -struct packet_viewequip_ack { +#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808 +struct PACKET_ZC_EQUIPWIN_MICROSCOPE { int16 PacketType; int16 PacketLength; char characterName[NAME_LENGTH]; @@ -1268,18 +1255,99 @@ struct packet_viewequip_ack { int16 accessory; int16 accessory2; int16 accessory3; -#if PACKETVER >= 20101124 int16 robe; -#endif int16 headpalette; int16 bodypalette; -#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808 int16 body2; -#endif uint8 sex; - // [4144] need remove MAX_INVENTORY from here - struct EQUIPITEM_INFO list[MAX_INVENTORY]; + struct EQUIPITEM_INFO list[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_EQUIPWIN_MICROSCOPE, 0x0b03); +#elif PACKETVER >= 20140820 +struct PACKET_ZC_EQUIPWIN_MICROSCOPE { + int16 PacketType; + int16 PacketLength; + char characterName[NAME_LENGTH]; + int16 job; + int16 head; + int16 accessory; + int16 accessory2; + int16 accessory3; + int16 robe; + int16 headpalette; + int16 bodypalette; + uint8 sex; + struct EQUIPITEM_INFO list[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_EQUIPWIN_MICROSCOPE, 0x0a2d); +#elif PACKETVER_MAIN_NUM >= 20121205 || PACKETVER_RE_NUM >= 20121107 +struct PACKET_ZC_EQUIPWIN_MICROSCOPE { + int16 PacketType; + int16 PacketLength; + char characterName[NAME_LENGTH]; + int16 job; + int16 head; + int16 accessory; + int16 accessory2; + int16 accessory3; + int16 robe; + int16 headpalette; + int16 bodypalette; + uint8 sex; + struct EQUIPITEM_INFO list[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_EQUIPWIN_MICROSCOPE, 0x0997); +#elif PACKETVER_MAIN_NUM >= 20111207 || PACKETVER_RE_NUM >= 20111122 +struct PACKET_ZC_EQUIPWIN_MICROSCOPE { + int16 PacketType; + int16 PacketLength; + char characterName[NAME_LENGTH]; + int16 job; + int16 head; + int16 accessory; + int16 accessory2; + int16 accessory3; + int16 robe; + int16 headpalette; + int16 bodypalette; + uint8 sex; + struct EQUIPITEM_INFO list[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_EQUIPWIN_MICROSCOPE, 0x0906); +#elif PACKETVER >= 20101123 +struct PACKET_ZC_EQUIPWIN_MICROSCOPE { + int16 PacketType; + int16 PacketLength; + char characterName[NAME_LENGTH]; + int16 job; + int16 head; + int16 accessory; + int16 accessory2; + int16 accessory3; + int16 robe; + int16 headpalette; + int16 bodypalette; + uint8 sex; + struct EQUIPITEM_INFO list[]; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_EQUIPWIN_MICROSCOPE, 0x0859); +#elif PACKETVER_AD_NUM >= 20071211 || PACKETVER_SAK_NUM >= 20071127 || PACKETVER_MAIN_NUM >= 20071211 || defined(PACKETVER_RE) +struct PACKET_ZC_EQUIPWIN_MICROSCOPE { + int16 PacketType; + int16 PacketLength; + char characterName[NAME_LENGTH]; + int16 job; + int16 head; + int16 accessory; + int16 accessory2; + int16 accessory3; + int16 headpalette; + int16 bodypalette; + uint8 sex; + struct EQUIPITEM_INFO list[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_EQUIPWIN_MICROSCOPE, 0x02d7); +#endif struct packet_notify_bounditem { int16 PacketType; From 6fe00739fc9ab8ba4b0b21b76416062f40ecdda2 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 16 Oct 2021 00:12:58 +0300 Subject: [PATCH 06/65] Update HPM --- src/common/HPMDataCheck.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index 16f32201970..e4e0d9c8fe6 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -857,7 +857,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "packet_status_change_end", sizeof(struct packet_status_change_end), SERVER_TYPE_MAP }, { "packet_unequipitem_ack", sizeof(struct packet_unequipitem_ack), SERVER_TYPE_MAP }, { "packet_unit_walking", sizeof(struct packet_unit_walking), SERVER_TYPE_MAP }, - { "packet_viewequip_ack", sizeof(struct packet_viewequip_ack), SERVER_TYPE_MAP }, { "packet_whisper_message", sizeof(struct packet_whisper_message), SERVER_TYPE_MAP }, { "packet_wis_end", sizeof(struct packet_wis_end), SERVER_TYPE_MAP }, { "pet_evolution_items", sizeof(struct pet_evolution_items), SERVER_TYPE_MAP }, From ac3e616a7c3854a18d85273152f0ce4e7aa086f2 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 16 Oct 2021 02:38:54 +0300 Subject: [PATCH 07/65] Update packet ZC_PROPERTY_HOMUN --- src/map/clif.c | 5 +++++ src/map/packets_struct.h | 30 +++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/map/clif.c b/src/map/clif.c index 8880242112b..bfc8d8c895d 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -1751,6 +1751,10 @@ static void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int p.maxHp = hstatus->max_hp; #endif +#if PACKETVER_MAIN_NUM >= 20200819 || PACKETVER_RE_NUM >= 20200723 + p.sp = hstatus->sp; + p.maxSp = hstatus->max_sp; +#else // PACKETVER_MAIN_NUM >= 20200819 || PACKETVER_RE_NUM >= 20200723 if (hstatus->max_sp > INT16_MAX) { p.sp = hstatus->sp / (hstatus->max_sp / 100); p.maxSp = 100; @@ -1758,6 +1762,7 @@ static void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int p.sp = hstatus->sp; p.maxSp = hstatus->max_sp; } +#endif // PACKETVER_MAIN_NUM >= 20200819 || PACKETVER_RE_NUM >= 20200723 p.exp = (uint32)min(hd->homunculus.exp, UINT32_MAX); p.expNext = (uint32)min(hd->exp_next, UINT32_MAX); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 249776ded57..a25b3d25b5f 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -2383,7 +2383,35 @@ struct PACKET_ZC_ACK_WEAPONREFINE { #endif } __attribute__((packed)); -#if PACKETVER_MAIN_NUM >= 20190619 || PACKETVER_RE_NUM >= 20190605 || PACKETVER_ZERO_NUM >= 20190626 +#if PACKETVER_MAIN_NUM >= 20200819 || PACKETVER_RE_NUM >= 20200723 +// PACKET_ZC_PROPERTY_HOMUN3 +struct PACKET_ZC_PROPERTY_HOMUN { + int16 packetType; + char name[NAME_LENGTH]; + // Bit field, bit 0 : rename_flag (1 = already renamed), bit 1 : homunc vaporized (1 = true), bit 2 : homunc dead (1 = true) + uint8 flags; + uint16 level; + uint16 hunger; + uint16 intimacy; + uint16 atk2; + uint16 matk; + uint16 hit; + uint16 crit; + uint16 def; + uint16 mdef; + uint16 flee; + uint16 amotion; + uint32 hp; + uint32 maxHp; + uint32 sp; + uint32 maxSp; + uint32 exp; + uint32 expNext; + uint16 skillPoints; + uint16 range; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PROPERTY_HOMUN, 0x0b76); +#elif PACKETVER_MAIN_NUM >= 20190619 || PACKETVER_RE_NUM >= 20190605 || PACKETVER_ZERO_NUM >= 20190626 // PACKET_ZC_PROPERTY_HOMUN3 struct PACKET_ZC_PROPERTY_HOMUN { int16 packetType; From bbce448c9e4935227aec3f1be6dcd8d9cf3eacb2 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 16 Oct 2021 04:21:05 +0300 Subject: [PATCH 08/65] Update packet ZC_FRIENDS_LIST --- src/map/clif.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index bfc8d8c895d..af3da3b53e0 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -16344,7 +16344,7 @@ static void clif_friendslist_send(struct map_session_data *sd) { int i = 0, n, fd = sd->fd; -#if PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328 +#if (PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328) && PACKETVER < 20200902 const int offset = 8; #else const int offset = 32; @@ -16356,7 +16356,7 @@ static void clif_friendslist_send(struct map_session_data *sd) for(i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id; i++) { WFIFOL(fd, 4 + offset * i + 0) = sd->status.friends[i].account_id; WFIFOL(fd, 4 + offset * i + 4) = sd->status.friends[i].char_id; -#if !(PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328) +#if !(PACKETVER_MAIN_NUM >= 20180307 || PACKETVER_RE_NUM >= 20180221 || PACKETVER_ZERO_NUM >= 20180328) || PACKETVER >= 20200902 memcpy(WFIFOP(fd, 4 + offset * i + 8), &sd->status.friends[i].name, NAME_LENGTH); #endif } From 7807bd6d8a727dd72d79c4d5e6eeab20d867f3fe Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 16 Oct 2021 04:56:43 +0300 Subject: [PATCH 09/65] Update packet ZC_GUILD_INFO --- src/map/clif.c | 5 ++++- src/map/packets_struct.h | 23 ++++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index af3da3b53e0..5911dafa5b1 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8251,7 +8251,10 @@ static void clif_guild_basicinfo(struct map_session_data *sd) memcpy(p->guildname, g->name, NAME_LENGTH); safestrncpy(p->manageLand, msg_sd(sd, 300 + guild->checkcastles(g)), MAP_NAME_LENGTH_EXT); p->zeny = 0; -#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) +#if PACKETVER >= 20200902 + p->masterGID = g->member[0].char_id; // leader + memcpy(p->masterName, g->master, NAME_LENGTH); +#elif PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) p->masterGID = g->member[0].char_id; // leader #else memcpy(p->masterName, g->master, NAME_LENGTH); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index a25b3d25b5f..2e403232f47 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -4196,7 +4196,28 @@ DEFINE_PACKET_HEADER(ZC_MEMBERMGR_INFO, 0x0aa5); DEFINE_PACKET_HEADER(ZC_MEMBERMGR_INFO, 0x0154); #endif -#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) +#if PACKETVER >= 20200902 +struct PACKET_ZC_GUILD_INFO { + int16 PacketType; + int GDID; + int level; + int userNum; + int maxUserNum; + int userAverageLevel; + int exp; + int maxExp; + int point; + int honor; + int virtue; + int emblemVersion; + char guildname[NAME_LENGTH]; + char manageLand[MAP_NAME_LENGTH_EXT]; + int zeny; + int masterGID; + char masterName[NAME_LENGTH]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_GUILD_INFO, 0x0b7b); +#elif PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) struct PACKET_ZC_GUILD_INFO { int16 PacketType; int GDID; From 62bfc8a3de85c211dbf8f0244266a822c6380418 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 16 Oct 2021 05:50:20 +0300 Subject: [PATCH 10/65] Update packet ZC_BAN_LIST --- src/map/clif.c | 5 ++++- src/map/packets_struct.h | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 5911dafa5b1..a9e1f31dafd 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8708,7 +8708,10 @@ static void clif_guild_expulsionlist(struct map_session_data *sd) if (e->account_id > 0) { -#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) +#if PACKETVER >= 20200902 + packet->chars[c].char_id = e->char_id; + memcpy(packet->chars[c].char_name, e->name, NAME_LENGTH); +#elif PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) packet->chars[c].char_id = e->char_id; // version unconfirmed #elif PACKETVER >= 20100803 diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 2e403232f47..0a3f5617a6b 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -3411,7 +3411,21 @@ struct PACKET_ZC_ROLE_CHANGE { } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_ROLE_CHANGE, 0x00e1); -#if PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) +#if PACKETVER >= 20200902 +struct PACKET_ZC_BAN_LIST_sub { + int char_id; + char message[40]; + char char_name[NAME_LENGTH]; +} __attribute__((packed)); + +struct PACKET_ZC_BAN_LIST { + int16 packetType; + uint16 packetLen; + struct PACKET_ZC_BAN_LIST_sub chars[]; +} __attribute__((packed)); + +DEFINE_PACKET_HEADER(ZC_BAN_LIST, 0x0b7c); +#elif PACKETVER_MAIN_NUM >= 20161019 || PACKETVER_RE_NUM >= 20160921 || defined(PACKETVER_ZERO) struct PACKET_ZC_BAN_LIST_sub { int char_id; char message[40]; From 5674355f70386f4affc14dacd0b1e48f6ab90b08 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 16 Oct 2021 16:16:16 +0300 Subject: [PATCH 11/65] Update packet GUILD_MEMBER_INFO --- src/map/clif.c | 7 +++++-- src/map/packets_struct.h | 38 ++++++++++++++++++++++++++++++-------- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index a9e1f31dafd..34f7176d03e 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8380,11 +8380,14 @@ static void clif_guild_memberlist(struct map_session_data *sd) p->guildMemberInfo[c].contributionExp = (int)cap_value(m->exp, 0, INT32_MAX); p->guildMemberInfo[c].currentState = m->online; p->guildMemberInfo[c].positionID = m->position; -#if PACKETVER_MAIN_NUM >= 20161214 || PACKETVER_RE_NUM >= 20161130 || defined(PACKETVER_ZERO) +#if PACKETVER >= 20200902 + p->guildMemberInfo[c].lastLoginTime = m->last_login; // [Megasantos] - Shows last date online + memcpy(p->guildMemberInfo[c].char_name, m->name, NAME_LENGTH); +#elif PACKETVER_MAIN_NUM >= 20161214 || PACKETVER_RE_NUM >= 20161130 || defined(PACKETVER_ZERO) p->guildMemberInfo[c].lastLoginTime = m->last_login; // [Megasantos] - Shows last date online #else memset(p->guildMemberInfo[c].intro, 0, sizeof(p->guildMemberInfo[c].intro)); //[Ind] - This is displayed in the 'note' column but being you can't edit it it's sent empty. - memcpy(p->guildMemberInfo[c].CharName, m->name, NAME_LENGTH); + memcpy(p->guildMemberInfo[c].char_name, m->name, NAME_LENGTH); #endif c++; } diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 0a3f5617a6b..3c4b08e3fdc 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -4168,7 +4168,7 @@ struct PACKET_ZC_C_MARKERINFO { DEFINE_PACKET_HEADER(ZC_C_MARKERINFO, 0x09c1); #endif -#if PACKETVER_MAIN_NUM >= 20161214 || PACKETVER_RE_NUM >= 20161130 || defined(PACKETVER_ZERO) +#if PACKETVER >= 20200902 struct GUILD_MEMBER_INFO { uint32 AID; uint32 GID; @@ -4181,8 +4181,15 @@ struct GUILD_MEMBER_INFO { int32 currentState; int32 positionID; uint32 lastLoginTime; + char char_name[NAME_LENGTH]; } __attribute__((packed)); -#else +struct PACKET_ZC_MEMBERMGR_INFO { + int16 PacketType; + int16 packetLength; + struct GUILD_MEMBER_INFO guildMemberInfo[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_MEMBERMGR_INFO, 0x0b7d); +#elif PACKETVER_MAIN_NUM >= 20161214 || PACKETVER_RE_NUM >= 20161130 || defined(PACKETVER_ZERO) struct GUILD_MEMBER_INFO { uint32 AID; uint32 GID; @@ -4194,19 +4201,34 @@ struct GUILD_MEMBER_INFO { int32 contributionExp; int32 currentState; int32 positionID; - char intro[50]; - char CharName[NAME_LENGTH]; + uint32 lastLoginTime; } __attribute__((packed)); -#endif - struct PACKET_ZC_MEMBERMGR_INFO { int16 PacketType; int16 packetLength; struct GUILD_MEMBER_INFO guildMemberInfo[]; } __attribute__((packed)); -#if PACKETVER_MAIN_NUM >= 20161214 || PACKETVER_RE_NUM >= 20161130 || defined(PACKETVER_ZERO) DEFINE_PACKET_HEADER(ZC_MEMBERMGR_INFO, 0x0aa5); -#else +#else // false: PACKETVER_MAIN_NUM >= 20161214 || PACKETVER_RE_NUM >= 20161130 || defined(PACKETVER_ZERO) +struct GUILD_MEMBER_INFO { + uint32 AID; + uint32 GID; + int16 head; + int16 headPalette; + int16 sex; + int16 job; + int16 level; + int32 contributionExp; + int32 currentState; + int32 positionID; + char intro[50]; + char char_name[NAME_LENGTH]; +} __attribute__((packed)); +struct PACKET_ZC_MEMBERMGR_INFO { + int16 PacketType; + int16 packetLength; + struct GUILD_MEMBER_INFO guildMemberInfo[]; +} __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_MEMBERMGR_INFO, 0x0154); #endif From ec80515638cf4bdf9db01bb18340ea88f3b61e86 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 18 Oct 2021 01:29:31 +0300 Subject: [PATCH 12/65] Add packet 0xb25 and some 4th jobs stats to player with zero values --- src/common/mmo.h | 8 ++++++++ src/map/clif.c | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/src/common/mmo.h b/src/common/mmo.h index 8d2fd8e20be..061c4bd174f 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -785,6 +785,14 @@ struct mmo_charstatus { int party_id,guild_id,clan_id,pet_id,hom_id,mer_id,ele_id; int fame; + // 4th job basic stats. client using only char but here we save as int [4144] + int pow; + int sta; + int wis; + int spl; + int con; + int crt; + // Mercenary Guilds Rank int arch_faith, arch_calls; int spear_faith, spear_calls; diff --git a/src/map/clif.c b/src/map/clif.c index 34f7176d03e..fcce04cd234 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -3589,6 +3589,45 @@ static void clif_updatestatus(struct map_session_data *sd, enum status_point_typ len = packet_len(0xb1); break; #endif +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + case SP_POW: + WFIFOW(fd, 0) = 0xb25; + WFIFOB(fd, 4) = 1; + WFIFOB(fd, 5) = sd->status.pow; + len = packet_len(0xb25); + break; + case SP_STA: + WFIFOW(fd, 0) = 0xb25; + WFIFOB(fd, 4) = 1; + WFIFOB(fd, 5) = sd->status.sta; + len = packet_len(0xb25); + break; + case SP_WIS: + WFIFOW(fd, 0) = 0xb25; + WFIFOB(fd, 4) = 1; + WFIFOB(fd, 5) = sd->status.wis; + len = packet_len(0xb25); + break; + case SP_SPL: + WFIFOW(fd, 0) = 0xb25; + WFIFOB(fd, 4) = 1; + WFIFOB(fd, 5) = sd->status.spl; + len = packet_len(0xb25); + break; + case SP_CON: + WFIFOW(fd, 0) = 0xb25; + WFIFOB(fd, 4) = 1; + WFIFOB(fd, 5) = sd->status.con; + len = packet_len(0xb25); + break; + case SP_CRT: + WFIFOW(fd, 0) = 0xb25; + WFIFOB(fd, 4) = 1; + WFIFOB(fd, 5) = sd->status.crt; + len = packet_len(0xb25); + break; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + /** * SP_U are used to update the amount of points necessary to increase that stat **/ From ae182a7cbe77712a4319937b368aee511944f73d Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 18 Oct 2021 02:17:13 +0300 Subject: [PATCH 13/65] Add packet names to function clif_updatestatus --- src/map/clif.c | 168 ++++++++++++++++++++------------------- src/map/packets_struct.h | 17 ++++ 2 files changed, 103 insertions(+), 82 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index fcce04cd234..d27dd9317bd 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -3435,9 +3435,9 @@ static void clif_updatestatus(struct map_session_data *sd, enum status_point_typ return; WFIFOHEAD(fd, 14); - WFIFOW(fd,0)=0xb0; - WFIFOW(fd,2)=type; - len = packet_len(0xb0); + WFIFOW(fd, 0) = HEADER_ZC_PAR_CHANGE1; + WFIFOW(fd, 2) = type; + len = packet_len(HEADER_ZC_PAR_CHANGE1); PRAGMA_GCC46(GCC diagnostic push) PRAGMA_GCC46(GCC diagnostic ignored "-Wswitch-enum") @@ -3446,9 +3446,9 @@ static void clif_updatestatus(struct map_session_data *sd, enum status_point_typ case SP_WEIGHT: pc->updateweightstatus(sd); WFIFOHEAD(fd,14); - WFIFOW(fd,0)=0xb0; //Need to re-set as pc->updateweightstatus can alter the buffer. [Skotlex] - WFIFOW(fd,2)=type; - WFIFOL(fd,4)=sd->weight; + WFIFOW(fd, 0) = HEADER_ZC_PAR_CHANGE1; //Need to re-set as pc->updateweightstatus can alter the buffer. [Skotlex] + WFIFOW(fd, 2) = type; + WFIFOL(fd, 4) = sd->weight; break; case SP_MAXWEIGHT: WFIFOL(fd,4)=sd->max_weight; @@ -3539,92 +3539,95 @@ static void clif_updatestatus(struct map_session_data *sd, enum status_point_typ case SP_MATK2: WFIFOL(fd,4)=pc_leftside_matk(sd); break; +#if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) case SP_ZENY: -// [4144] possible send 64 bit value from PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) -// but kro sending 0xb1 packet only. - WFIFOW(fd,0)=0xb1; - WFIFOL(fd,4)=sd->status.zeny; - len = packet_len(0xb1); + WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + WFIFOQ(fd, 4) = sd->status.zeny; + len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; -#if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) case SP_BASEEXP: - WFIFOW(fd, 0) = 0xacb; + WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; WFIFOQ(fd, 4) = sd->status.base_exp; - len = packet_len(0xacb); + len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_JOBEXP: - WFIFOW(fd, 0) = 0xacb; + WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; WFIFOQ(fd, 4) = sd->status.job_exp; - len = packet_len(0xacb); + len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_NEXTBASEEXP: - WFIFOW(fd, 0) = 0xacb; + WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; WFIFOQ(fd, 4) = pc->nextbaseexp(sd); - len = packet_len(0xacb); + len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_NEXTJOBEXP: - WFIFOW(fd, 0) = 0xacb; + WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; WFIFOQ(fd, 4) = pc->nextjobexp(sd); - len = packet_len(0xacb); + len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; #else + case SP_ZENY: + WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + WFIFOL(fd, 4) = sd->status.zeny; + len = packet_len(HEADER_ZC_LONGPAR_CHANGE); + break; case SP_BASEEXP: - WFIFOW(fd, 0) = 0xb1; + WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; WFIFOL(fd, 4) = (uint32)(sd->status.base_exp); - len = packet_len(0xb1); + len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_JOBEXP: - WFIFOW(fd, 0) = 0xb1; + WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; WFIFOL(fd, 4) = (uint32)(sd->status.job_exp); - len = packet_len(0xb1); + len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_NEXTBASEEXP: - WFIFOW(fd, 0) = 0xb1; + WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; WFIFOL(fd, 4) = (uint32)pc->nextbaseexp(sd); - len = packet_len(0xb1); + len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_NEXTJOBEXP: - WFIFOW(fd, 0) = 0xb1; + WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; WFIFOL(fd, 4) = (uint32)pc->nextjobexp(sd); - len = packet_len(0xb1); + len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; #endif #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 case SP_POW: - WFIFOW(fd, 0) = 0xb25; + WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.pow; - len = packet_len(0xb25); + len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; case SP_STA: - WFIFOW(fd, 0) = 0xb25; + WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.sta; - len = packet_len(0xb25); + len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; case SP_WIS: - WFIFOW(fd, 0) = 0xb25; + WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.wis; - len = packet_len(0xb25); + len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; case SP_SPL: - WFIFOW(fd, 0) = 0xb25; + WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.spl; - len = packet_len(0xb25); + len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; case SP_CON: - WFIFOW(fd, 0) = 0xb25; + WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.con; - len = packet_len(0xb25); + len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; case SP_CRT: - WFIFOW(fd, 0) = 0xb25; + WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.crt; - len = packet_len(0xb25); + len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; #endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 @@ -3637,70 +3640,71 @@ static void clif_updatestatus(struct map_session_data *sd, enum status_point_typ case SP_UINT: case SP_UDEX: case SP_ULUK: - WFIFOW(fd,0)=0xbe; - WFIFOB(fd,4)=pc->need_status_point(sd,type-SP_USTR+SP_STR,1); - len = packet_len(0xbe); + WFIFOW(fd, 0) = HEADER_ZC_STATUS_CHANGE; + WFIFOB(fd, 4) = pc->need_status_point(sd, type - SP_USTR + SP_STR, 1); + len = packet_len(HEADER_ZC_STATUS_CHANGE); break; /** * Tells the client how far it is allowed to attack (weapon range) **/ case SP_ATTACKRANGE: - WFIFOW(fd,0)=0x13a; - WFIFOW(fd,2)=sd->battle_status.rhw.range; - len = packet_len(0x13a); + WFIFOW(fd, 0) = HEADER_ZC_ATTACK_RANGE; + WFIFOW(fd, 2) = sd->battle_status.rhw.range; + len = packet_len(HEADER_ZC_ATTACK_RANGE); break; + // [4144] with ZC_COUPLESTATUS also possible send packets from SP_POW to SP_CRT case SP_STR: - WFIFOW(fd,0)=0x141; - WFIFOL(fd,2)=type; - WFIFOL(fd,6)=sd->status.str; - WFIFOL(fd,10)=sd->battle_status.str - sd->status.str; - len = packet_len(0x141); + WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + WFIFOL(fd, 2) = type; + WFIFOL(fd, 6) = sd->status.str; + WFIFOL(fd, 10) = sd->battle_status.str - sd->status.str; + len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_AGI: - WFIFOW(fd,0)=0x141; - WFIFOL(fd,2)=type; - WFIFOL(fd,6)=sd->status.agi; - WFIFOL(fd,10)=sd->battle_status.agi - sd->status.agi; - len = packet_len(0x141); + WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + WFIFOL(fd, 2) = type; + WFIFOL(fd, 6) = sd->status.agi; + WFIFOL(fd, 10) = sd->battle_status.agi - sd->status.agi; + len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_VIT: - WFIFOW(fd,0)=0x141; - WFIFOL(fd,2)=type; - WFIFOL(fd,6)=sd->status.vit; - WFIFOL(fd,10)=sd->battle_status.vit - sd->status.vit; - len = packet_len(0x141); + WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + WFIFOL(fd, 2) = type; + WFIFOL(fd, 6) = sd->status.vit; + WFIFOL(fd, 10) = sd->battle_status.vit - sd->status.vit; + len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_INT: - WFIFOW(fd,0)=0x141; - WFIFOL(fd,2)=type; - WFIFOL(fd,6)=sd->status.int_; - WFIFOL(fd,10)=sd->battle_status.int_ - sd->status.int_; - len = packet_len(0x141); + WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + WFIFOL(fd, 2) = type; + WFIFOL(fd, 6) = sd->status.int_; + WFIFOL(fd, 10) = sd->battle_status.int_ - sd->status.int_; + len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_DEX: - WFIFOW(fd,0)=0x141; - WFIFOL(fd,2)=type; - WFIFOL(fd,6)=sd->status.dex; - WFIFOL(fd,10)=sd->battle_status.dex - sd->status.dex; - len = packet_len(0x141); + WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + WFIFOL(fd, 2) = type; + WFIFOL(fd, 6) = sd->status.dex; + WFIFOL(fd, 10) = sd->battle_status.dex - sd->status.dex; + len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_LUK: - WFIFOW(fd,0)=0x141; - WFIFOL(fd,2)=type; - WFIFOL(fd,6)=sd->status.luk; - WFIFOL(fd,10)=sd->battle_status.luk - sd->status.luk; - len = packet_len(0x141); + WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + WFIFOL(fd, 2) = type; + WFIFOL(fd, 6) = sd->status.luk; + WFIFOL(fd, 10) = sd->battle_status.luk - sd->status.luk; + len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_CARTINFO: - WFIFOW(fd,0)=0x121; - WFIFOW(fd,2)=sd->cart_num; - WFIFOW(fd,4)=MAX_CART; - WFIFOL(fd,6)=sd->cart_weight; - WFIFOL(fd,10)=sd->cart_weight_max; - len = packet_len(0x121); + WFIFOW(fd, 0) = HEADER_ZC_NOTIFY_CARTITEM_COUNTINFO; + WFIFOW(fd, 2) = sd->cart_num; + WFIFOW(fd, 4) = MAX_CART; + WFIFOL(fd, 6) = sd->cart_weight; + WFIFOL(fd, 10) = sd->cart_weight_max; + len = packet_len(HEADER_ZC_NOTIFY_CARTITEM_COUNTINFO); break; default: diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 3c4b08e3fdc..2135be849ec 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -415,6 +415,23 @@ enum packet_headers { #endif }; +// TODO add here packets structs +DEFINE_PACKET_ID(ZC_PAR_CHANGE1, 0x00b0); +DEFINE_PACKET_ID(ZC_STATUS_CHANGE, 0x00be); +DEFINE_PACKET_ID(ZC_NOTIFY_CARTITEM_COUNTINFO, 0x0121); +DEFINE_PACKET_ID(ZC_ATTACK_RANGE, 0x013a); +DEFINE_PACKET_ID(ZC_COUPLESTATUS, 0x0141); + +#if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) +DEFINE_PACKET_ID(ZC_LONGPAR_CHANGE, 0x0acb); +#else // PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) +DEFINE_PACKET_ID(ZC_LONGPAR_CHANGE, 0x00b1); +#endif // PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) + +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +DEFINE_PACKET_ID(ZC_PAR_4JOB_CHANGE, 0x0b25); +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #pragma pack(push, 1) #endif // not NetBSD < 6 / Solaris From e8bc315c36c3cc1567bb83b8fa999ee5cd8c4ecf Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 18 Oct 2021 02:26:57 +0300 Subject: [PATCH 14/65] Simplify code in clif_updatestatus --- src/map/clif.c | 89 ++++++++++++++++++-------------------------------- 1 file changed, 32 insertions(+), 57 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index d27dd9317bd..189376ddbdb 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -3425,19 +3425,18 @@ static int clif_hpmeter(struct map_session_data *sd) /// TODO: Extract individual packets. static void clif_updatestatus(struct map_session_data *sd, enum status_point_types type) { - int fd,len; - nullpo_retv(sd); - fd=sd->fd; + int fd = sd->fd; if (!sockt->session_is_active(fd)) // Invalid pointer fix, by sasuke [Kevin] return; + int packetId = HEADER_ZC_PAR_CHANGE1; + WFIFOHEAD(fd, 14); WFIFOW(fd, 0) = HEADER_ZC_PAR_CHANGE1; WFIFOW(fd, 2) = type; - len = packet_len(HEADER_ZC_PAR_CHANGE1); PRAGMA_GCC46(GCC diagnostic push) PRAGMA_GCC46(GCC diagnostic ignored "-Wswitch-enum") @@ -3445,8 +3444,7 @@ static void clif_updatestatus(struct map_session_data *sd, enum status_point_typ // 00b0 case SP_WEIGHT: pc->updateweightstatus(sd); - WFIFOHEAD(fd,14); - WFIFOW(fd, 0) = HEADER_ZC_PAR_CHANGE1; //Need to re-set as pc->updateweightstatus can alter the buffer. [Skotlex] + WFIFOHEAD(fd, 14); //Need to re-set as pc->updateweightstatus can alter the buffer. [Skotlex] WFIFOW(fd, 2) = type; WFIFOL(fd, 4) = sd->weight; break; @@ -3541,93 +3539,77 @@ static void clif_updatestatus(struct map_session_data *sd, enum status_point_typ break; #if PACKETVER_MAIN_NUM >= 20170906 || PACKETVER_RE_NUM >= 20170830 || defined(PACKETVER_ZERO) case SP_ZENY: - WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + packetId = HEADER_ZC_LONGPAR_CHANGE; WFIFOQ(fd, 4) = sd->status.zeny; - len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_BASEEXP: - WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + packetId = HEADER_ZC_LONGPAR_CHANGE; WFIFOQ(fd, 4) = sd->status.base_exp; - len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_JOBEXP: - WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + packetId = HEADER_ZC_LONGPAR_CHANGE; WFIFOQ(fd, 4) = sd->status.job_exp; - len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_NEXTBASEEXP: - WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + packetId = HEADER_ZC_LONGPAR_CHANGE; WFIFOQ(fd, 4) = pc->nextbaseexp(sd); - len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_NEXTJOBEXP: - WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + packetId = HEADER_ZC_LONGPAR_CHANGE; WFIFOQ(fd, 4) = pc->nextjobexp(sd); - len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; #else case SP_ZENY: - WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + packetId = HEADER_ZC_LONGPAR_CHANGE; WFIFOL(fd, 4) = sd->status.zeny; - len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_BASEEXP: - WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + packetId = HEADER_ZC_LONGPAR_CHANGE; WFIFOL(fd, 4) = (uint32)(sd->status.base_exp); - len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_JOBEXP: - WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + packetId = HEADER_ZC_LONGPAR_CHANGE; WFIFOL(fd, 4) = (uint32)(sd->status.job_exp); - len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_NEXTBASEEXP: - WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + packetId = HEADER_ZC_LONGPAR_CHANGE; WFIFOL(fd, 4) = (uint32)pc->nextbaseexp(sd); - len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; case SP_NEXTJOBEXP: - WFIFOW(fd, 0) = HEADER_ZC_LONGPAR_CHANGE; + packetId = HEADER_ZC_LONGPAR_CHANGE; WFIFOL(fd, 4) = (uint32)pc->nextjobexp(sd); - len = packet_len(HEADER_ZC_LONGPAR_CHANGE); break; #endif #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 case SP_POW: - WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; + packetId = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.pow; - len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; case SP_STA: - WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; + packetId = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.sta; - len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; case SP_WIS: - WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; + packetId = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.wis; - len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; case SP_SPL: - WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; + packetId = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.spl; - len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; case SP_CON: - WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; + packetId = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.con; - len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; case SP_CRT: - WFIFOW(fd, 0) = HEADER_ZC_PAR_4JOB_CHANGE; + packetId = HEADER_ZC_PAR_4JOB_CHANGE; WFIFOB(fd, 4) = 1; WFIFOB(fd, 5) = sd->status.crt; - len = packet_len(HEADER_ZC_PAR_4JOB_CHANGE); break; #endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 @@ -3640,71 +3622,62 @@ static void clif_updatestatus(struct map_session_data *sd, enum status_point_typ case SP_UINT: case SP_UDEX: case SP_ULUK: - WFIFOW(fd, 0) = HEADER_ZC_STATUS_CHANGE; + packetId = HEADER_ZC_STATUS_CHANGE; WFIFOB(fd, 4) = pc->need_status_point(sd, type - SP_USTR + SP_STR, 1); - len = packet_len(HEADER_ZC_STATUS_CHANGE); break; /** * Tells the client how far it is allowed to attack (weapon range) **/ case SP_ATTACKRANGE: - WFIFOW(fd, 0) = HEADER_ZC_ATTACK_RANGE; + packetId = HEADER_ZC_ATTACK_RANGE; WFIFOW(fd, 2) = sd->battle_status.rhw.range; - len = packet_len(HEADER_ZC_ATTACK_RANGE); break; // [4144] with ZC_COUPLESTATUS also possible send packets from SP_POW to SP_CRT case SP_STR: - WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + packetId = HEADER_ZC_COUPLESTATUS; WFIFOL(fd, 2) = type; WFIFOL(fd, 6) = sd->status.str; WFIFOL(fd, 10) = sd->battle_status.str - sd->status.str; - len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_AGI: - WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + packetId = HEADER_ZC_COUPLESTATUS; WFIFOL(fd, 2) = type; WFIFOL(fd, 6) = sd->status.agi; WFIFOL(fd, 10) = sd->battle_status.agi - sd->status.agi; - len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_VIT: - WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + packetId = HEADER_ZC_COUPLESTATUS; WFIFOL(fd, 2) = type; WFIFOL(fd, 6) = sd->status.vit; WFIFOL(fd, 10) = sd->battle_status.vit - sd->status.vit; - len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_INT: - WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + packetId = HEADER_ZC_COUPLESTATUS; WFIFOL(fd, 2) = type; WFIFOL(fd, 6) = sd->status.int_; WFIFOL(fd, 10) = sd->battle_status.int_ - sd->status.int_; - len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_DEX: - WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + packetId = HEADER_ZC_COUPLESTATUS; WFIFOL(fd, 2) = type; WFIFOL(fd, 6) = sd->status.dex; WFIFOL(fd, 10) = sd->battle_status.dex - sd->status.dex; - len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_LUK: - WFIFOW(fd, 0) = HEADER_ZC_COUPLESTATUS; + packetId = HEADER_ZC_COUPLESTATUS; WFIFOL(fd, 2) = type; WFIFOL(fd, 6) = sd->status.luk; WFIFOL(fd, 10) = sd->battle_status.luk - sd->status.luk; - len = packet_len(HEADER_ZC_COUPLESTATUS); break; case SP_CARTINFO: - WFIFOW(fd, 0) = HEADER_ZC_NOTIFY_CARTITEM_COUNTINFO; + packetId = HEADER_ZC_NOTIFY_CARTITEM_COUNTINFO; WFIFOW(fd, 2) = sd->cart_num; WFIFOW(fd, 4) = MAX_CART; WFIFOL(fd, 6) = sd->cart_weight; WFIFOL(fd, 10) = sd->cart_weight_max; - len = packet_len(HEADER_ZC_NOTIFY_CARTITEM_COUNTINFO); break; default: @@ -3712,7 +3685,9 @@ static void clif_updatestatus(struct map_session_data *sd, enum status_point_typ return; } PRAGMA_GCC46(GCC diagnostic pop) - WFIFOSET(fd,len); + + WFIFOW(fd, 0) = packetId; + WFIFOSET(fd, packet_len(packetId)); // Additional update packets that should be sent right after PRAGMA_GCC46(GCC diagnostic push) From bb26f290b5371344a5aebe1f86c42fb72ea601f3 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 18 Oct 2021 20:26:04 +0300 Subject: [PATCH 15/65] Update packet ZC_SEARCH_STORE_INFO_ACK --- src/map/clif.c | 8 +++++++- src/map/packets_struct.h | 32 ++++++++++++++++++++++++++++++++ src/map/searchstore.h | 1 + 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/map/clif.c b/src/map/clif.c index 189376ddbdb..2bdea3090fa 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -20012,6 +20012,7 @@ static void clif_parse_SearchStoreInfo(int fd, struct map_session_data *sd) /// 1 = "next" label to retrieve more results static void clif_search_store_info_ack(struct map_session_data *sd) { +#if PACKETVER_MAIN_NUM >= 20100817 || PACKETVER_RE_NUM >= 20100706 || defined(PACKETVER_ZERO) const unsigned int blocksize = sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub); int fd; unsigned int i, start, end; @@ -20026,7 +20027,7 @@ static void clif_search_store_info_ack(struct map_session_data *sd) len = sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK) + (end - start) * blocksize; WFIFOHEAD(fd, len); p = WFIFOP(fd, 0); - p->packetType = 0x836; + p->packetType = HEADER_ZC_SEARCH_STORE_INFO_ACK; p->packetLength = len; p->firstPage = !sd->searchstore.pages; p->nextPage = searchstore->querynext(sd); @@ -20045,6 +20046,10 @@ static void clif_search_store_info_ack(struct map_session_data *sd) p->items[i].amount = ssitem->amount; p->items[i].refine = ssitem->refine; +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + p->items[i].grade = ssitem->grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + // make-up an item for clif_addcards memset(&it, 0, sizeof(it)); memcpy(&it.card, &ssitem->card, sizeof(it.card)); @@ -20059,6 +20064,7 @@ static void clif_search_store_info_ack(struct map_session_data *sd) } WFIFOSET(fd, len); +#endif // PACKETVER_MAIN_NUM >= 20100817 || PACKETVER_RE_NUM >= 20100706 || defined(PACKETVER_ZERO) } /// Notification of failure when searching for stores (ZC_SEARCH_STORE_INFO_FAILED). diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 2135be849ec..8803a3595c7 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -2905,6 +2905,35 @@ struct PACKET_CZ_SEARCH_STORE_INFO { */ } __attribute__((packed)); +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub { + uint32 storeId; + uint32 AID; + char shopName[MESSAGE_SIZE]; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + uint8 itemType; + uint32 price; + uint16 amount; + struct EQUIPSLOTINFO slot; + struct ItemOptions option_data[MAX_ITEM_OPTIONS]; + uint8 refine; + uint8 grade; +} __attribute__((packed)); + +struct PACKET_ZC_SEARCH_STORE_INFO_ACK { + int16 packetType; + int16 packetLength; + uint8 firstPage; + uint8 nextPage; + uint8 usesCount; + struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub items[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_SEARCH_STORE_INFO_ACK, 0x0b64); +#elif PACKETVER_MAIN_NUM >= 20100817 || PACKETVER_RE_NUM >= 20100706 || defined(PACKETVER_ZERO) struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub { uint32 storeId; uint32 AID; @@ -2932,6 +2961,9 @@ struct PACKET_ZC_SEARCH_STORE_INFO_ACK { uint8 usesCount; struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub items[]; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_SEARCH_STORE_INFO_ACK, 0x0836); +#endif // PACKETVER_MAIN_NUM >= 20100817 || PACKETVER_RE_NUM >= 20100706 || defined(PACKETVER_ZERO) + /* Achievement System */ struct ach_list_info { diff --git a/src/map/searchstore.h b/src/map/searchstore.h index 22c8fe7832d..51552facbf2 100644 --- a/src/map/searchstore.h +++ b/src/map/searchstore.h @@ -77,6 +77,7 @@ struct s_search_store_info_item { unsigned int price; int card[MAX_SLOTS]; unsigned char refine; + unsigned char grade; // [4144] for now unused struct item_option option[MAX_ITEM_OPTIONS]; }; From 9bb5ad05c1a5b67b6de27c198409fa62dd733e68 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 18 Oct 2021 21:07:01 +0300 Subject: [PATCH 16/65] Add grade field into search store --- src/common/mmo.h | 1 + src/map/buyingstore.c | 4 ++-- src/map/searchstore.c | 3 ++- src/map/searchstore.h | 4 ++-- src/map/vending.c | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/common/mmo.h b/src/common/mmo.h index 061c4bd174f..027e80ff217 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -483,6 +483,7 @@ struct item { unsigned int equip; // Location(s) where item is equipped (using enum equip_pos for bitmasking). char identify; char refine; + char grade; // TODO implement saving/loading grade to db char attribute; int card[MAX_SLOTS]; unsigned int expire_time; diff --git a/src/map/buyingstore.c b/src/map/buyingstore.c index 09e4f1c632f..1efc8498cfa 100644 --- a/src/map/buyingstore.c +++ b/src/map/buyingstore.c @@ -478,8 +478,8 @@ static bool buyingstore_searchall(struct map_session_data *sd, const struct s_se ; } - // TODO: add support for cards and options - if (!searchstore->result(s->search_sd, sd->buyer_id, sd->status.account_id, sd->message, it->nameid, it->amount, it->price, buyingstore->blankslots, 0, buyingstore->blankoptions)) + // TODO: add support for cards, options, grade + if (!searchstore->result(s->search_sd, sd->buyer_id, sd->status.account_id, sd->message, it->nameid, it->amount, it->price, buyingstore->blankslots, 0, 0, buyingstore->blankoptions)) {// result set full return false; } diff --git a/src/map/searchstore.c b/src/map/searchstore.c index 6ad70ba30ca..c4fe6ff46ef 100644 --- a/src/map/searchstore.c +++ b/src/map/searchstore.c @@ -351,7 +351,7 @@ static void searchstore_clearremote(struct map_session_data *sd) } /// receives results from a store-specific callback -static bool searchstore_result(struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine_level, const struct item_option *option) +static bool searchstore_result(struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine_level, unsigned char grade_level, const struct item_option *option) { struct s_search_store_info_item* ssitem; @@ -371,6 +371,7 @@ static bool searchstore_result(struct map_session_data *sd, unsigned int store_i ssitem->price = price; memcpy(ssitem->card, card, sizeof(ssitem->card)); ssitem->refine = refine_level; + ssitem->grade = grade_level; memcpy(ssitem->option, option, sizeof(ssitem->option)); return true; diff --git a/src/map/searchstore.h b/src/map/searchstore.h index 51552facbf2..41432f32af2 100644 --- a/src/map/searchstore.h +++ b/src/map/searchstore.h @@ -77,7 +77,7 @@ struct s_search_store_info_item { unsigned int price; int card[MAX_SLOTS]; unsigned char refine; - unsigned char grade; // [4144] for now unused + unsigned char grade; struct item_option option[MAX_ITEM_OPTIONS]; }; @@ -110,7 +110,7 @@ struct searchstore_interface { void (*click) (struct map_session_data* sd, int account_id, int store_id, int nameid); bool (*queryremote) (struct map_session_data* sd, int account_id); void (*clearremote) (struct map_session_data* sd); - bool (*result) (struct map_session_data* sd, unsigned int store_id, int account_id, const char* store_name, int nameid, unsigned short amount, unsigned int price, const int* card, unsigned char refine_level, const struct item_option *option); + bool (*result) (struct map_session_data* sd, unsigned int store_id, int account_id, const char* store_name, int nameid, unsigned short amount, unsigned int price, const int* card, unsigned char refine_level, unsigned char grade_level, const struct item_option *option); }; #ifdef HERCULES_CORE diff --git a/src/map/vending.c b/src/map/vending.c index ef3847a7307..3e43393f18c 100644 --- a/src/map/vending.c +++ b/src/map/vending.c @@ -382,7 +382,7 @@ static bool vending_searchall(struct map_session_data *sd, const struct s_search } } - if (!searchstore->result(s->search_sd, sd->vender_id, sd->status.account_id, sd->message, it->nameid, sd->vending[i].amount, sd->vending[i].value, it->card, it->refine, it->option)) + if (!searchstore->result(s->search_sd, sd->vender_id, sd->status.account_id, sd->message, it->nameid, sd->vending[i].amount, sd->vending[i].value, it->card, it->refine, it->grade, it->option)) {// result set full return false; } From 05d5dd7c31fac356cb217a9e3150e945e5b401a7 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 18 Oct 2021 21:54:40 +0300 Subject: [PATCH 17/65] Update HPM --- src/common/HPMDataCheck.h | 2 -- src/plugins/HPMHooking/HPMHooking.Defs.inc | 4 ++-- src/plugins/HPMHooking/HPMHooking_map.Hooks.inc | 12 ++++++------ 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index e4e0d9c8fe6..8e838c70fa2 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -767,8 +767,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_ZC_REPAIRITEMLIST", sizeof(struct PACKET_ZC_REPAIRITEMLIST), SERVER_TYPE_MAP }, { "PACKET_ZC_REPAIRITEMLIST_sub", sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub), SERVER_TYPE_MAP }, { "PACKET_ZC_ROLE_CHANGE", sizeof(struct PACKET_ZC_ROLE_CHANGE), SERVER_TYPE_MAP }, - { "PACKET_ZC_SEARCH_STORE_INFO_ACK", sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK), SERVER_TYPE_MAP }, - { "PACKET_ZC_SEARCH_STORE_INFO_ACK_sub", sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub), SERVER_TYPE_MAP }, { "PACKET_ZC_SKILL_SCALE", sizeof(struct PACKET_ZC_SKILL_SCALE), SERVER_TYPE_MAP }, { "PACKET_ZC_SKILLINFO_LIST", sizeof(struct PACKET_ZC_SKILLINFO_LIST), SERVER_TYPE_MAP }, { "PACKET_ZC_SKILLINFO_UPDATE2", sizeof(struct PACKET_ZC_SKILLINFO_UPDATE2), SERVER_TYPE_MAP }, diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index 8b824d9f1b3..59f803f91d6 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -7358,8 +7358,8 @@ typedef bool (*HPMHOOK_pre_searchstore_queryremote) (struct map_session_data **s typedef bool (*HPMHOOK_post_searchstore_queryremote) (bool retVal___, struct map_session_data *sd, int account_id); typedef void (*HPMHOOK_pre_searchstore_clearremote) (struct map_session_data **sd); typedef void (*HPMHOOK_post_searchstore_clearremote) (struct map_session_data *sd); -typedef bool (*HPMHOOK_pre_searchstore_result) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, int *nameid, unsigned short *amount, unsigned int *price, const int **card, unsigned char *refine_level, const struct item_option **option); -typedef bool (*HPMHOOK_post_searchstore_result) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine_level, const struct item_option *option); +typedef bool (*HPMHOOK_pre_searchstore_result) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, int *nameid, unsigned short *amount, unsigned int *price, const int **card, unsigned char *refine_level, unsigned char *grade_level, const struct item_option **option); +typedef bool (*HPMHOOK_post_searchstore_result) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine_level, unsigned char grade_level, const struct item_option *option); #endif // MAP_SEARCHSTORE_H #ifdef COMMON_SHOWMSG_H /* showmsg */ typedef void (*HPMHOOK_pre_showmsg_init) (void); diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index 48a8e49d77c..8eaeecfe88a 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -78479,15 +78479,15 @@ void HP_searchstore_clearremote(struct map_session_data *sd) { } return; } -bool HP_searchstore_result(struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine_level, const struct item_option *option) { +bool HP_searchstore_result(struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine_level, unsigned char grade_level, const struct item_option *option) { int hIndex = 0; bool retVal___ = false; if (HPMHooks.count.HP_searchstore_result_pre > 0) { - bool (*preHookFunc) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, int *nameid, unsigned short *amount, unsigned int *price, const int **card, unsigned char *refine_level, const struct item_option **option); + bool (*preHookFunc) (struct map_session_data **sd, unsigned int *store_id, int *account_id, const char **store_name, int *nameid, unsigned short *amount, unsigned int *price, const int **card, unsigned char *refine_level, unsigned char *grade_level, const struct item_option **option); *HPMforce_return = false; for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_result_pre; hIndex++) { preHookFunc = HPMHooks.list.HP_searchstore_result_pre[hIndex].func; - retVal___ = preHookFunc(&sd, &store_id, &account_id, &store_name, &nameid, &amount, &price, &card, &refine_level, &option); + retVal___ = preHookFunc(&sd, &store_id, &account_id, &store_name, &nameid, &amount, &price, &card, &refine_level, &grade_level, &option); } if (*HPMforce_return) { *HPMforce_return = false; @@ -78495,13 +78495,13 @@ bool HP_searchstore_result(struct map_session_data *sd, unsigned int store_id, i } } { - retVal___ = HPMHooks.source.searchstore.result(sd, store_id, account_id, store_name, nameid, amount, price, card, refine_level, option); + retVal___ = HPMHooks.source.searchstore.result(sd, store_id, account_id, store_name, nameid, amount, price, card, refine_level, grade_level, option); } if (HPMHooks.count.HP_searchstore_result_post > 0) { - bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine_level, const struct item_option *option); + bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, unsigned int store_id, int account_id, const char *store_name, int nameid, unsigned short amount, unsigned int price, const int *card, unsigned char refine_level, unsigned char grade_level, const struct item_option *option); for (hIndex = 0; hIndex < HPMHooks.count.HP_searchstore_result_post; hIndex++) { postHookFunc = HPMHooks.list.HP_searchstore_result_post[hIndex].func; - retVal___ = postHookFunc(retVal___, sd, store_id, account_id, store_name, nameid, amount, price, card, refine_level, option); + retVal___ = postHookFunc(retVal___, sd, store_id, account_id, store_name, nameid, amount, price, card, refine_level, grade_level, option); } } return retVal___; From 6be1eb0fa12e37e00ea02aad558b9ed6cbbfbc7c Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 19 Oct 2021 00:00:48 +0300 Subject: [PATCH 18/65] Update packet ZC_REPAIRITEMLIST --- src/map/clif.c | 9 ++++++--- src/map/packets_struct.h | 26 ++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 2bdea3090fa..105d40ba33e 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -6781,22 +6781,25 @@ static void clif_item_repair_list(struct map_session_data *sd, struct map_sessio fd = sd->fd; - len = dstsd->status.inventorySize * sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub) + sizeof(struct PACKET_ZC_REPAIRITEMLIST); + len = dstsd->status.inventorySize * sizeof(struct REPAIRITEM_INFO) + sizeof(struct PACKET_ZC_REPAIRITEMLIST); WFIFOHEAD(fd, len); p = WFIFOP(fd, 0); - p->packetType = 0x1fc; + p->packetType = HEADER_ZC_REPAIRITEMLIST; for (i = c = 0; i < sd->status.inventorySize; i++) { int nameid = dstsd->status.inventory[i].nameid; if (nameid > 0 && (dstsd->status.inventory[i].attribute & ATTR_BROKEN) != 0) { // && skill_can_repair(sd,nameid)) { p->items[c].index = i; p->items[c].itemId = nameid; p->items[c].refine = dstsd->status.inventory[i].refine; +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + p->items[c].grade = dstsd->status.inventory[i].grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 clif->addcards(&p->items[c].slot, &dstsd->status.inventory[i]); c++; } } if (c > 0) { - len = c * sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub) + sizeof(struct PACKET_ZC_REPAIRITEMLIST); + len = c * sizeof(struct REPAIRITEM_INFO) + sizeof(struct PACKET_ZC_REPAIRITEMLIST); p->packetLength = len; WFIFOSET(fd, len); sd->menuskill_id = BS_REPAIRWEAPON; diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 8803a3595c7..4d23f300cbc 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -2787,7 +2787,27 @@ struct PACKET_ZC_MAKINGARROW_LIST { } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_MAKINGARROW_LIST, 0x01ad); -struct PACKET_ZC_REPAIRITEMLIST_sub { +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +struct REPAIRITEM_INFO { + int16 index; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + struct EQUIPSLOTINFO slot; // unused? + uint8 refine; // unused? + uint8 grade; // unused? +} __attribute__((packed)); + +struct PACKET_ZC_REPAIRITEMLIST { + int16 packetType; + int16 packetLength; + struct REPAIRITEM_INFO items[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_REPAIRITEMLIST, 0x0b65); +#else // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +struct REPAIRITEM_INFO { int16 index; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 itemId; @@ -2801,8 +2821,10 @@ struct PACKET_ZC_REPAIRITEMLIST_sub { struct PACKET_ZC_REPAIRITEMLIST { int16 packetType; int16 packetLength; - struct PACKET_ZC_REPAIRITEMLIST_sub items[]; + struct REPAIRITEM_INFO items[]; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_REPAIRITEMLIST, 0x01fc); +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 struct PACKET_ZC_NOTIFY_WEAPONITEMLIST_sub { int16 index; From aa20aefa5a8a39f6079c564d02cb80b0b8960a45 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 19 Oct 2021 00:03:53 +0300 Subject: [PATCH 19/65] Update HPM --- src/common/HPMDataCheck.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index 8e838c70fa2..e97dd3203e2 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -765,7 +765,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_ZC_READ_MAIL", sizeof(struct PACKET_ZC_READ_MAIL), SERVER_TYPE_MAP }, { "PACKET_ZC_REMOVE_EFFECT", sizeof(struct PACKET_ZC_REMOVE_EFFECT), SERVER_TYPE_MAP }, { "PACKET_ZC_REPAIRITEMLIST", sizeof(struct PACKET_ZC_REPAIRITEMLIST), SERVER_TYPE_MAP }, - { "PACKET_ZC_REPAIRITEMLIST_sub", sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub), SERVER_TYPE_MAP }, { "PACKET_ZC_ROLE_CHANGE", sizeof(struct PACKET_ZC_ROLE_CHANGE), SERVER_TYPE_MAP }, { "PACKET_ZC_SKILL_SCALE", sizeof(struct PACKET_ZC_SKILL_SCALE), SERVER_TYPE_MAP }, { "PACKET_ZC_SKILLINFO_LIST", sizeof(struct PACKET_ZC_SKILLINFO_LIST), SERVER_TYPE_MAP }, @@ -783,6 +782,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_ZC_WARPLIST_sub", sizeof(struct PACKET_ZC_WARPLIST_sub), SERVER_TYPE_MAP }, { "PACKET_ZC_WRITE_MAIL_RESULT", sizeof(struct PACKET_ZC_WRITE_MAIL_RESULT), SERVER_TYPE_MAP }, { "RELATED_GUILD_INFO", sizeof(struct RELATED_GUILD_INFO), SERVER_TYPE_MAP }, + { "REPAIRITEM_INFO", sizeof(struct REPAIRITEM_INFO), SERVER_TYPE_MAP }, { "SKILLDATA", sizeof(struct SKILLDATA), SERVER_TYPE_MAP }, { "ZC_PROGRESS_ACTOR", sizeof(struct ZC_PROGRESS_ACTOR), SERVER_TYPE_MAP }, { "ZC_STORE_ITEMLIST_EQUIP", sizeof(struct ZC_STORE_ITEMLIST_EQUIP), SERVER_TYPE_MAP }, From b06112625e846b3678f22f783e179a0c02e4d420 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 19 Oct 2021 01:13:33 +0300 Subject: [PATCH 20/65] Update packet CZ_REQ_ITEMREPAIR --- src/map/packets.h | 4 ++++ src/map/packets_struct.h | 23 +++++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/map/packets.h b/src/map/packets.h index 35c1f5bfe4a..808e5b5b092 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -2011,4 +2011,8 @@ packet(0x96e,clif->ackmergeitems); packet(0x0a6c,clif->pMacroReporterSelect); #endif +#if PACKETVER >= 20191224 + packet(0x0b66,clif->pRepairItem); +#endif + #endif /* MAP_PACKETS_H */ diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 4d23f300cbc..5b1f1ac8fc7 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -2534,6 +2534,9 @@ struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER { #endif } __attribute__((packed)); +// [4144] here should be used structs PACKET_CZ_REQ_ITEMREPAIR1 and PACKET_CZ_REQ_ITEMREPAIR2 +// but because any fields except index and itemId unused, possible to mix both of structs +#if PACKETVER >= 29191224 struct PACKET_CZ_REQ_ITEMREPAIR { int16 packetType; int16 index; @@ -2542,9 +2545,25 @@ struct PACKET_CZ_REQ_ITEMREPAIR { #else uint16 itemId; #endif - uint8 refine; - struct EQUIPSLOTINFO slot; + struct EQUIPSLOTINFO slot; // unused + uint8 refine; // unused + uint8 grade; // unused +} __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0x0b66); +#else // PACKETVER >= 29191224 +struct PACKET_CZ_REQ_ITEMREPAIR { + int16 packetType; + int16 index; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + uint8 refine; // unused + struct EQUIPSLOTINFO slot; // unused } __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0x01fd); +#endif // PACKETVER >= 29191224 struct PACKET_CZ_REQ_MAKINGITEM { int16 packetType; From d857002cc2797ca2807a7a0aaac15be56a83dfaa Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 19 Oct 2021 02:23:20 +0300 Subject: [PATCH 21/65] Update packet ZC_ITEM_PICKUP_PARTY --- src/map/clif.c | 7 +++++-- src/map/packets_struct.h | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 105d40ba33e..3b5dc2d5d18 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -19350,14 +19350,14 @@ static void clif_instance_leave(int fd) /// 02b8 .L .W .B .B .B .W .W .W .W .W .B static void clif_party_show_picker(struct map_session_data *sd, struct item *item_data) { -#if PACKETVER >= 20071002 +#if PACKETVER >= 20070731 struct item_data* id; struct PACKET_ZC_ITEM_PICKUP_PARTY p; nullpo_retv(sd); nullpo_retv(item_data); id = itemdb->search(item_data->nameid); - p.packetType = 0x2b8; + p.packetType = HEADER_ZC_ITEM_PICKUP_PARTY; p.AID = sd->status.account_id; p.itemId = item_data->nameid; p.identified = item_data->identify; @@ -19366,6 +19366,9 @@ static void clif_party_show_picker(struct map_session_data *sd, struct item *ite clif->addcards(&p.slot, item_data); p.location = id->equip; // equip location p.itemType = itemtype(id->type); // item type +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + p.grade = item_data->grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 clif->send(&p, sizeof(p), &sd->bl, PARTY_SAMEMAP_WOS); #endif } diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 5b1f1ac8fc7..393534cd03c 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -2356,6 +2356,25 @@ struct PACKET_ZC_CASH_ITEM_DELETE { #endif } __attribute__((packed)); +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +struct PACKET_ZC_ITEM_PICKUP_PARTY { + int16 packetType; + uint32 AID; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + uint8 identified; + uint8 damaged; + struct EQUIPSLOTINFO slot; + uint16 location; + uint8 itemType; + uint8 refine; + uint8 grade; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_PARTY, 0x0b67); +#elif PACKETVER >= 20070731 struct PACKET_ZC_ITEM_PICKUP_PARTY { int16 packetType; uint32 AID; @@ -2371,6 +2390,8 @@ struct PACKET_ZC_ITEM_PICKUP_PARTY { uint16 location; uint8 itemType; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_PARTY, 0x02b8); +#endif struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE { int16 packetType; From f6a481474ccb951cf8401ff517badff0e587e51c Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 20 Oct 2021 00:16:31 +0300 Subject: [PATCH 22/65] Update ZC_EQUIPWIN_MICROSCOPE --- src/map/clif.c | 3 +++ src/map/packets_struct.h | 27 ++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/map/clif.c b/src/map/clif.c index 3b5dc2d5d18..452f9b41326 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -2828,6 +2828,9 @@ static void clif_item_equip(short idx, struct EQUIPITEM_INFO *p, struct item *it p->IsDamaged = (it->attribute & ATTR_BROKEN) != 0 ? 1 : 0; #endif p->RefiningLevel = it->refine; +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + p->grade = it->grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 clif->addcards(&p->slot, it); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 393534cd03c..79dec42796f 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -485,6 +485,7 @@ struct ItemOptions { uint8 param; } __attribute__((packed)); +// TODO split struct inside blocks of #if/#elif struct EQUIPITEM_INFO { int16 index; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 @@ -506,7 +507,9 @@ struct EQUIPITEM_INFO { #if PACKETVER < 20120925 uint8 IsDamaged; #endif +#if !(PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723) uint8 RefiningLevel; +#endif // !(PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723) struct EQUIPSLOTINFO slot; #if PACKETVER >= 20071002 int32 HireExpireDate; @@ -521,6 +524,10 @@ struct EQUIPITEM_INFO { uint8 option_count; struct ItemOptions option_data[MAX_ITEM_OPTIONS]; #endif +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + uint8 RefiningLevel; + uint8 grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 #if PACKETVER >= 20120925 struct { uint8 IsIdentified : 1; @@ -1262,7 +1269,25 @@ struct packet_unequipitem_ack { uint8 result; } __attribute__((packed)); -#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808 +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +struct PACKET_ZC_EQUIPWIN_MICROSCOPE { + int16 PacketType; + int16 PacketLength; + char characterName[NAME_LENGTH]; + int16 job; + int16 head; + int16 accessory; + int16 accessory2; + int16 accessory3; + int16 robe; + int16 headpalette; + int16 bodypalette; + int16 body2; + uint8 sex; + struct EQUIPITEM_INFO list[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_EQUIPWIN_MICROSCOPE, 0x0b37); +#elif PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808 struct PACKET_ZC_EQUIPWIN_MICROSCOPE { int16 PacketType; int16 PacketLength; From 338763884dafe0df8b42f57b8e6b37b53f49811c Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 20 Oct 2021 00:23:46 +0300 Subject: [PATCH 23/65] Update packet ZC_STORE_ITEMLIST_EQUIP --- src/map/packets_struct.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 79dec42796f..7b86aa625df 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -225,7 +225,9 @@ enum packet_headers { #else storageListNormalType = 0xa5, #endif -#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002 +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + storageListEquipType = 0xb39, +#elif PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002 storageListEquipType = 0xb0a, #elif PACKETVER >= 20150226 storageListEquipType = 0xa10, From 9c7f8be8705a6c90420dd30914ce48ef15cf068a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 20 Oct 2021 00:53:05 +0300 Subject: [PATCH 24/65] Update HPM --- src/common/HPMDataCheck.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index e97dd3203e2..387e94cb702 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -695,7 +695,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_ZC_ACK_ZENY_FROM_MAIL", sizeof(struct PACKET_ZC_ACK_ZENY_FROM_MAIL), SERVER_TYPE_MAP }, { "PACKET_ZC_ADD_EXCHANGE_ITEM", sizeof(struct PACKET_ZC_ADD_EXCHANGE_ITEM), SERVER_TYPE_MAP }, { "PACKET_ZC_ADD_ITEM_TO_CART", sizeof(struct PACKET_ZC_ADD_ITEM_TO_CART), SERVER_TYPE_MAP }, - { "PACKET_ZC_ADD_ITEM_TO_MAIL", sizeof(struct PACKET_ZC_ADD_ITEM_TO_MAIL), SERVER_TYPE_MAP }, { "PACKET_ZC_ADD_ITEM_TO_STORE", sizeof(struct PACKET_ZC_ADD_ITEM_TO_STORE), SERVER_TYPE_MAP }, { "PACKET_ZC_ADD_MEMBER_TO_GROUP", sizeof(struct PACKET_ZC_ADD_MEMBER_TO_GROUP), SERVER_TYPE_MAP }, { "PACKET_ZC_ADD_SKILL", sizeof(struct PACKET_ZC_ADD_SKILL), SERVER_TYPE_MAP }, @@ -719,7 +718,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_ZC_GUILD_SKILLINFO", sizeof(struct PACKET_ZC_GUILD_SKILLINFO), SERVER_TYPE_MAP }, { "PACKET_ZC_INVENTORY_MOVE_FAILED", sizeof(struct PACKET_ZC_INVENTORY_MOVE_FAILED), SERVER_TYPE_MAP }, { "PACKET_ZC_ITEM_ENTRY", sizeof(struct PACKET_ZC_ITEM_ENTRY), SERVER_TYPE_MAP }, - { "PACKET_ZC_ITEM_PICKUP_PARTY", sizeof(struct PACKET_ZC_ITEM_PICKUP_PARTY), SERVER_TYPE_MAP }, { "PACKET_ZC_MAIL_LIST", sizeof(struct PACKET_ZC_MAIL_LIST), SERVER_TYPE_MAP }, { "PACKET_ZC_MAKABLEITEMLIST", sizeof(struct PACKET_ZC_MAKABLEITEMLIST), SERVER_TYPE_MAP }, { "PACKET_ZC_MAKABLEITEMLIST_sub", sizeof(struct PACKET_ZC_MAKABLEITEMLIST_sub), SERVER_TYPE_MAP }, From 42b218b6f7c2f8bc13acdb6814f199e4f35e94e7 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 20 Oct 2021 00:51:13 +0300 Subject: [PATCH 25/65] Update packet ZC_ACK_ADD_ITEM_RODEX --- src/map/clif.c | 12 +++++++++--- src/map/packets_struct.h | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 452f9b41326..ee3507e3481 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -22719,8 +22719,11 @@ static void clif_parse_rodex_add_item(int fd, struct map_session_data *sd) static void clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, int16 amount, enum rodex_add_item result) { +// [4144] this packet exists from +// PACKETVER_MAIN_NUM >= 20141112 || PACKETVER_RE_NUM >= 20140924 || defined(PACKETVER_ZERO) +// but used only packet versions with known struct #if PACKETVER >= 20141119 - struct PACKET_ZC_ADD_ITEM_TO_MAIL *packet; + struct PACKET_ZC_ACK_ADD_ITEM_RODEX *packet; int fd, j; nullpo_retv(sd); @@ -22732,7 +22735,7 @@ static void clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, i WFIFOHEAD(fd, sizeof(*packet)); packet = WFIFOP(fd, 0); memset(packet, 0x0, sizeof(*packet)); - packet->PacketType = rodexadditem; + packet->PacketType = HEADER_ZC_ACK_ADD_ITEM_RODEX; packet->result = result; if (result != RODEX_ADD_ITEM_SUCCESS) { //No need to continue building the packet if it failed @@ -22757,8 +22760,11 @@ static void clif_rodex_add_item_result(struct map_session_data *sd, int16 idx, i packet->weight = sd->rodex.tmp.weight / 10; packet->favorite = sd->status.inventory[idx].favorite; packet->location = pc->equippoint(sd, idx); +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + packet->grade = sd->status.inventory[idx].grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 WFIFOSET(fd, sizeof(*packet)); -#endif +#endif // PACKETVER >= 20141119 } static void clif_parse_rodex_remove_item(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 7b86aa625df..4b58d4c8708 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -319,7 +319,6 @@ enum packet_headers { rodexgetzeny = 0x09F2, rodexgetitem = 0x09F4, rodexdelete = 0x09F6, - rodexadditem = 0x0A05, rodexremoveitem = 0x0A07, rodexopenwrite = 0x0A12, #if PACKETVER < 20160601 @@ -1676,7 +1675,34 @@ struct PACKET_CZ_ADD_ITEM_TO_MAIL { int16 count; } __attribute__((packed)); -struct PACKET_ZC_ADD_ITEM_TO_MAIL { +// [4144] this packet exists from +// PACKETVER_MAIN_NUM >= 20141112 || PACKETVER_RE_NUM >= 20140924 || defined(PACKETVER_ZERO) +// but used only packet versions with known struct +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +struct PACKET_ZC_ACK_ADD_ITEM_RODEX { + int16 PacketType; + int8 result; + int16 index; + int16 count; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + int8 type; + int8 IsIdentified; + int8 IsDamaged; + struct EQUIPSLOTINFO slot; + struct ItemOptions optionData[MAX_ITEM_OPTIONS]; + int16 weight; + uint8 favorite; + uint32 location; + int8 refiningLevel; + int8 grade; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_ADD_ITEM_RODEX, 0x0b3f); +#elif PACKETVER >= 20141119 +struct PACKET_ZC_ACK_ADD_ITEM_RODEX { int16 PacketType; int8 result; int16 index; @@ -1696,6 +1722,8 @@ struct PACKET_ZC_ADD_ITEM_TO_MAIL { uint8 favorite; uint32 location; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_ADD_ITEM_RODEX, 0x0a05); +#endif // PACKETVER >= 20141119 struct mail_item { int16 count; From 66e8c4fd703cd9fc2da52ce2aeb4de83cf4b9c91 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 20 Oct 2021 01:48:02 +0300 Subject: [PATCH 26/65] Update packet ZC_PC_PURCHASE_MYITEMLIST --- src/map/clif.c | 21 +++++++++------------ src/map/packets_struct.h | 29 ++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index ee3507e3481..0ae47a8b04f 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -7113,24 +7113,18 @@ static void clif_buyvending(struct map_session_data *sd, int index, int amount, /// 0136 .W .L { .L .W .W .B .W .B .B .B .W .W .W .W }* static void clif_openvending(struct map_session_data *sd, int id, struct s_vending *vending_items) { - int i, fd; - int count; - - struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *p; - int len; - nullpo_retv(sd); nullpo_retv(vending_items); - fd = sd->fd; - count = sd->vend_num; - len = sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST) + count * sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub); + int fd = sd->fd; + int count = sd->vend_num; + int len = sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST) + count * sizeof(struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub); WFIFOHEAD(fd, len); - p = WFIFOP(fd, 0); - p->packetType = 0x136; + struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *p = WFIFOP(fd, 0); + p->packetType = HEADER_ZC_PC_PURCHASE_MYITEMLIST; p->packetLength = len; p->AID = id; - for (i = 0; i < count; i++) { + for (int i = 0; i < count; i++) { int index = vending_items[i].index; struct item_data* data = itemdb->search(sd->status.cart[index].nameid); p->items[i].price = vending_items[i].value; @@ -7141,6 +7135,9 @@ static void clif_openvending(struct map_session_data *sd, int id, struct s_vendi p->items[i].identified = sd->status.cart[index].identify; p->items[i].damaged = sd->status.cart[index].attribute; p->items[i].refine = sd->status.cart[index].refine; +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + p->items[i].grade = sd->status.cart[index].grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 clif->addcards(&p->items[i].slot, &sd->status.cart[index]); #if PACKETVER >= 20150226 clif->add_item_options(&p->items[i].option_data[0], &sd->status.cart[index]); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 4b58d4c8708..ab3815cb2cc 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -2683,6 +2683,32 @@ struct PACKET_ZC_ACK_SCHEDULER_CASHITEM { struct PACKET_ZC_ACK_SCHEDULER_CASHITEM_sub items[]; } __attribute__((packed)); +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub { + uint32 price; + int16 index; + int16 amount; + uint8 itemType; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + uint8 identified; + uint8 damaged; + struct EQUIPSLOTINFO slot; + struct ItemOptions option_data[MAX_ITEM_OPTIONS]; + uint8 refine; + uint8 grade; +} __attribute__((packed)); +struct PACKET_ZC_PC_PURCHASE_MYITEMLIST { + int16 packetType; + int16 packetLength; + uint32 AID; + struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub items[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_MYITEMLIST, 0x0b40); +#else // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub { uint32 price; int16 index; @@ -2701,13 +2727,14 @@ struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub { struct ItemOptions option_data[MAX_ITEM_OPTIONS]; #endif } __attribute__((packed)); - struct PACKET_ZC_PC_PURCHASE_MYITEMLIST { int16 packetType; int16 packetLength; uint32 AID; struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub items[]; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_MYITEMLIST, 0x0136); +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub { uint32 price; From 5b1aa3e7c78306b368068890882f752d21aa41a4 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 20 Oct 2021 02:26:27 +0300 Subject: [PATCH 27/65] Update item repair cz and zc packets --- src/map/clif.c | 33 ++++++++++++++--- src/map/clif.h | 3 +- src/map/packets.h | 14 ++++---- src/map/packets_struct.h | 76 +++++++++++++++++++--------------------- 4 files changed, 74 insertions(+), 52 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 0ae47a8b04f..4cc811f2be2 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -13538,12 +13538,12 @@ static void clif_parse_Cooking(int fd, struct map_session_data *sd) clif_menuskill_clear(sd); } -static void clif_parse_RepairItem(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); +static void clif_parse_RepairItem1(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); /// Answer to repair weapon item selection dialog (CZ_REQ_ITEMREPAIR). /// 01fd .W .W .B .W .W .W .W -static void clif_parse_RepairItem(int fd, struct map_session_data *sd) +static void clif_parse_RepairItem1(int fd, struct map_session_data *sd) { - const struct PACKET_CZ_REQ_ITEMREPAIR *p = RFIFOP(fd, 0); + const struct PACKET_CZ_REQ_ITEMREPAIR1 *p = RFIFOP(fd, 0); if (sd->menuskill_id != BS_REPAIRWEAPON) return; @@ -13554,10 +13554,32 @@ static void clif_parse_RepairItem(int fd, struct map_session_data *sd) clif_menuskill_clear(sd); return; } - skill->repairweapon(sd, p->index); + skill->repairweapon(sd, p->item.index); clif_menuskill_clear(sd); } +static void clif_parse_RepairItem2(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); +/// Answer to repair weapon item selection dialog (CZ_REQ_ITEMREPAIR). +/// 01fd .W .W .B .W .W .W .W +static void clif_parse_RepairItem2(int fd, struct map_session_data *sd) +{ +#if PACKETVER >= 20191224 + const struct PACKET_CZ_REQ_ITEMREPAIR2 *p = RFIFOP(fd, 0); + + if (sd->menuskill_id != BS_REPAIRWEAPON) + return; + if (pc_istrading_except_npc(sd) || pc_isdead(sd) || pc_isvending(sd) + || (sd->npc_id != 0 && sd->state.using_megaphone == 0)) { + //Make it fail to avoid shop exploits where you sell something different than you see. + clif->skill_fail(sd, sd->ud.skill_id, USESKILL_FAIL_LEVEL, 0, 0); + clif_menuskill_clear(sd); + return; + } + skill->repairweapon(sd, p->item.index); + clif_menuskill_clear(sd); +#endif // PACKETVER >= 20191224 +} + static void clif_parse_WeaponRefine(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); /// Answer to refine weapon item selection dialog (CZ_REQ_WEAPONREFINE). /// 0222 .L @@ -25862,7 +25884,8 @@ void clif_defaults(void) clif->pRequestMemo = clif_parse_RequestMemo; clif->pProduceMix = clif_parse_ProduceMix; clif->pCooking = clif_parse_Cooking; - clif->pRepairItem = clif_parse_RepairItem; + clif->pRepairItem1 = clif_parse_RepairItem1; + clif->pRepairItem2 = clif_parse_RepairItem2; clif->pWeaponRefine = clif_parse_WeaponRefine; clif->pNpcSelectMenu = clif_parse_NpcSelectMenu; clif->pNpcNextClicked = clif_parse_NpcNextClicked; diff --git a/src/map/clif.h b/src/map/clif.h index ddf71581c94..0899a8de846 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -1457,7 +1457,8 @@ struct clif_interface { void (*pRequestMemo) (int fd,struct map_session_data *sd); void (*pProduceMix) (int fd,struct map_session_data *sd); void (*pCooking) (int fd,struct map_session_data *sd); - void (*pRepairItem) (int fd, struct map_session_data *sd); + void (*pRepairItem1) (int fd, struct map_session_data *sd); + void (*pRepairItem2) (int fd, struct map_session_data *sd); void (*pWeaponRefine) (int fd, struct map_session_data *sd); void (*pNpcSelectMenu) (int fd,struct map_session_data *sd); void (*pNpcNextClicked) (int fd,struct map_session_data *sd); diff --git a/src/map/packets.h b/src/map/packets.h index 808e5b5b092..827dddcc22b 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -156,7 +156,7 @@ packet(0x01e8,clif->pCreateParty2,2); packet(0x01ed,clif->pNoviceExplosionSpirits,0); packet(0x01f7,clif->pAdopt_reply,0); packet(0x01f9,clif->pAdopt_request,0); -packet(0x01fd,clif->pRepairItem,2); +packet(0x01fd,clif->pRepairItem1,2); packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x0203,clif->pFriendsListRemove,2,6); packet(0x0208,clif->pFriendsListReply,2,6,10); @@ -582,7 +582,7 @@ packet(0x96e,clif->ackmergeitems); //2007-05-07aSakexe #if PACKETVER >= 20070507 - packet(0x01fd,clif->pRepairItem,2); + packet(0x01fd,clif->pRepairItem1,2); #endif //2007-02-27aSakexe to 2007-10-02aSakexe @@ -866,7 +866,7 @@ packet(0x96e,clif->ackmergeitems); //2012-04-10aRagexeRE #if PACKETVER >= 20120410 - packet(0x01FD,clif->pRepairItem,2); + packet(0x01FD,clif->pRepairItem1,2); packet(0x089C,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x0885,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x0961,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD @@ -1907,7 +1907,7 @@ packet(0x96e,clif->ackmergeitems); // changed packet sizes packet(0x018e,clif->pProduceMix); // CZ_REQMAKINGITEM packet(0x01ae,clif->pSelectArrow,2); // CZ_REQ_MAKINGARROW - packet(0x01fd,clif->pRepairItem); // CZ_REQ_ITEMREPAIR + packet(0x01fd,clif->pRepairItem1); // CZ_REQ_ITEMREPAIR packet(0x025b,clif->pCooking); // CZ_REQ_MAKINGITEM packet(0x0445,clif->pDull/*,XXX*/); // CZ_SIMPLE_BUY_CASH_POINT_ITEM packet(0x09ae,clif->pDull/*,XXX*/); // CZ_REQ_APPLY_BARGAIN_SALE_ITEM @@ -1922,7 +1922,7 @@ packet(0x96e,clif->ackmergeitems); // changed packet sizes packet(0x018e,clif->pProduceMix); // CZ_REQMAKINGITEM packet(0x01ae,clif->pSelectArrow,2); // CZ_REQ_MAKINGARROW - packet(0x01fd,clif->pRepairItem); // CZ_REQ_ITEMREPAIR + packet(0x01fd,clif->pRepairItem1); // CZ_REQ_ITEMREPAIR packet(0x025b,clif->pCooking); // CZ_REQ_MAKINGITEM packet(0x0445,clif->pDull/*,XXX*/); // CZ_SIMPLE_BUY_CASH_POINT_ITEM packet(0x09ae,clif->pDull/*,XXX*/); // CZ_REQ_APPLY_BARGAIN_SALE_ITEM @@ -1937,7 +1937,7 @@ packet(0x96e,clif->ackmergeitems); // changed packet sizes packet(0x018e,clif->pProduceMix); // CZ_REQMAKINGITEM packet(0x01ae,clif->pSelectArrow,2); // CZ_REQ_MAKINGARROW - packet(0x01fd,clif->pRepairItem); // CZ_REQ_ITEMREPAIR + packet(0x01fd,clif->pRepairItem1); // CZ_REQ_ITEMREPAIR packet(0x025b,clif->pCooking); // CZ_REQ_MAKINGITEM packet(0x0445,clif->pDull/*,XXX*/); // CZ_SIMPLE_BUY_CASH_POINT_ITEM packet(0x09ae,clif->pDull/*,XXX*/); // CZ_REQ_APPLY_BARGAIN_SALE_ITEM @@ -2012,7 +2012,7 @@ packet(0x96e,clif->ackmergeitems); #endif #if PACKETVER >= 20191224 - packet(0x0b66,clif->pRepairItem); + packet(0x0b66,clif->pRepairItem2); #endif #endif /* MAP_PACKETS_H */ diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index ab3815cb2cc..324eebdd61e 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -2610,36 +2610,55 @@ struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER { #endif } __attribute__((packed)); -// [4144] here should be used structs PACKET_CZ_REQ_ITEMREPAIR1 and PACKET_CZ_REQ_ITEMREPAIR2 -// but because any fields except index and itemId unused, possible to mix both of structs -#if PACKETVER >= 29191224 -struct PACKET_CZ_REQ_ITEMREPAIR { - int16 packetType; +#if PACKETVER >= 20191224 +struct REPAIRITEM_INFO2 { int16 index; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 itemId; #else uint16 itemId; #endif - struct EQUIPSLOTINFO slot; // unused - uint8 refine; // unused - uint8 grade; // unused + struct EQUIPSLOTINFO slot; // unused? + uint8 refine; // unused? + uint8 grade; // unused? } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0x0b66); -#else // PACKETVER >= 29191224 -struct PACKET_CZ_REQ_ITEMREPAIR { - int16 packetType; +#elif PACKETVER >= 20191106 +struct REPAIRITEM_INFO2 { + int16 index; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + uint8 refine; // unused? + struct EQUIPSLOTINFO slot; // unused? +} __attribute__((packed)); +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + +struct REPAIRITEM_INFO1 { int16 index; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 itemId; #else uint16 itemId; #endif - uint8 refine; // unused - struct EQUIPSLOTINFO slot; // unused + uint8 refine; // unused? + struct EQUIPSLOTINFO slot; // unused? +} __attribute__((packed)); + +#if PACKETVER >= 20191224 +struct PACKET_CZ_REQ_ITEMREPAIR2 { + int16 packetType; + struct REPAIRITEM_INFO2 item; } __attribute__((packed)); -DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0x01fd); -#endif // PACKETVER >= 29191224 +DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR2, 0x0b66); +#endif // PACKETVER >= 20191224 + +struct PACKET_CZ_REQ_ITEMREPAIR1 { + int16 packetType; + struct REPAIRITEM_INFO1 item; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR1, 0x01fd); struct PACKET_CZ_REQ_MAKINGITEM { int16 packetType; @@ -2910,18 +2929,7 @@ struct PACKET_ZC_MAKINGARROW_LIST { DEFINE_PACKET_HEADER(ZC_MAKINGARROW_LIST, 0x01ad); #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 -struct REPAIRITEM_INFO { - int16 index; -#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 - uint32 itemId; -#else - uint16 itemId; -#endif - struct EQUIPSLOTINFO slot; // unused? - uint8 refine; // unused? - uint8 grade; // unused? -} __attribute__((packed)); - +#define REPAIRITEM_INFO REPAIRITEM_INFO2 struct PACKET_ZC_REPAIRITEMLIST { int16 packetType; int16 packetLength; @@ -2929,17 +2937,7 @@ struct PACKET_ZC_REPAIRITEMLIST { } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_REPAIRITEMLIST, 0x0b65); #else // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 -struct REPAIRITEM_INFO { - int16 index; -#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 - uint32 itemId; -#else - uint16 itemId; -#endif - uint8 refine; // unused? - struct EQUIPSLOTINFO slot; // unused? -} __attribute__((packed)); - +#define REPAIRITEM_INFO REPAIRITEM_INFO1 struct PACKET_ZC_REPAIRITEMLIST { int16 packetType; int16 packetLength; From cafa21e442aa03a20da9921f464a4a52c3453c83 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 20 Oct 2021 02:29:15 +0300 Subject: [PATCH 28/65] Update HPM --- src/common/HPMDataCheck.h | 4 +- src/plugins/HPMHooking/HPMHooking.Defs.inc | 6 ++- .../HPMHooking_map.HPMHooksCore.inc | 12 ++++-- .../HPMHooking_map.HookingPoints.inc | 3 +- .../HPMHooking/HPMHooking_map.Hooks.inc | 42 +++++++++++++++---- 5 files changed, 50 insertions(+), 17 deletions(-) diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index 387e94cb702..0d9ae04cfcf 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -647,7 +647,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_CZ_PRIVATE_AIRSHIP_REQUEST", sizeof(struct PACKET_CZ_PRIVATE_AIRSHIP_REQUEST), SERVER_TYPE_MAP }, { "PACKET_CZ_REQ_DELETE_MAIL", sizeof(struct PACKET_CZ_REQ_DELETE_MAIL), SERVER_TYPE_MAP }, { "PACKET_CZ_REQ_ITEM_FROM_MAIL", sizeof(struct PACKET_CZ_REQ_ITEM_FROM_MAIL), SERVER_TYPE_MAP }, - { "PACKET_CZ_REQ_ITEMREPAIR", sizeof(struct PACKET_CZ_REQ_ITEMREPAIR), SERVER_TYPE_MAP }, + { "PACKET_CZ_REQ_ITEMREPAIR1", sizeof(struct PACKET_CZ_REQ_ITEMREPAIR1), SERVER_TYPE_MAP }, { "PACKET_CZ_REQ_MAKINGITEM", sizeof(struct PACKET_CZ_REQ_MAKINGITEM), SERVER_TYPE_MAP }, { "PACKET_CZ_REQ_NEXT_MAIL_LIST", sizeof(struct PACKET_CZ_REQ_NEXT_MAIL_LIST), SERVER_TYPE_MAP }, { "PACKET_CZ_REQ_OPEN_BUYING_STORE", sizeof(struct PACKET_CZ_REQ_OPEN_BUYING_STORE), SERVER_TYPE_MAP }, @@ -780,7 +780,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_ZC_WARPLIST_sub", sizeof(struct PACKET_ZC_WARPLIST_sub), SERVER_TYPE_MAP }, { "PACKET_ZC_WRITE_MAIL_RESULT", sizeof(struct PACKET_ZC_WRITE_MAIL_RESULT), SERVER_TYPE_MAP }, { "RELATED_GUILD_INFO", sizeof(struct RELATED_GUILD_INFO), SERVER_TYPE_MAP }, - { "REPAIRITEM_INFO", sizeof(struct REPAIRITEM_INFO), SERVER_TYPE_MAP }, + { "REPAIRITEM_INFO1", sizeof(struct REPAIRITEM_INFO1), SERVER_TYPE_MAP }, { "SKILLDATA", sizeof(struct SKILLDATA), SERVER_TYPE_MAP }, { "ZC_PROGRESS_ACTOR", sizeof(struct ZC_PROGRESS_ACTOR), SERVER_TYPE_MAP }, { "ZC_STORE_ITEMLIST_EQUIP", sizeof(struct ZC_STORE_ITEMLIST_EQUIP), SERVER_TYPE_MAP }, diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index 59f803f91d6..0df4141a320 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -2232,8 +2232,10 @@ typedef void (*HPMHOOK_pre_clif_pProduceMix) (int *fd, struct map_session_data * typedef void (*HPMHOOK_post_clif_pProduceMix) (int fd, struct map_session_data *sd); typedef void (*HPMHOOK_pre_clif_pCooking) (int *fd, struct map_session_data **sd); typedef void (*HPMHOOK_post_clif_pCooking) (int fd, struct map_session_data *sd); -typedef void (*HPMHOOK_pre_clif_pRepairItem) (int *fd, struct map_session_data **sd); -typedef void (*HPMHOOK_post_clif_pRepairItem) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_pRepairItem1) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRepairItem1) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_pRepairItem2) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRepairItem2) (int fd, struct map_session_data *sd); typedef void (*HPMHOOK_pre_clif_pWeaponRefine) (int *fd, struct map_session_data **sd); typedef void (*HPMHOOK_post_clif_pWeaponRefine) (int fd, struct map_session_data *sd); typedef void (*HPMHOOK_pre_clif_pNpcSelectMenu) (int *fd, struct map_session_data **sd); diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index 721a24e4553..2d1694115c5 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -1822,8 +1822,10 @@ struct { struct HPMHookPoint *HP_clif_pProduceMix_post; struct HPMHookPoint *HP_clif_pCooking_pre; struct HPMHookPoint *HP_clif_pCooking_post; - struct HPMHookPoint *HP_clif_pRepairItem_pre; - struct HPMHookPoint *HP_clif_pRepairItem_post; + struct HPMHookPoint *HP_clif_pRepairItem1_pre; + struct HPMHookPoint *HP_clif_pRepairItem1_post; + struct HPMHookPoint *HP_clif_pRepairItem2_pre; + struct HPMHookPoint *HP_clif_pRepairItem2_post; struct HPMHookPoint *HP_clif_pWeaponRefine_pre; struct HPMHookPoint *HP_clif_pWeaponRefine_post; struct HPMHookPoint *HP_clif_pNpcSelectMenu_pre; @@ -9041,8 +9043,10 @@ struct { int HP_clif_pProduceMix_post; int HP_clif_pCooking_pre; int HP_clif_pCooking_post; - int HP_clif_pRepairItem_pre; - int HP_clif_pRepairItem_post; + int HP_clif_pRepairItem1_pre; + int HP_clif_pRepairItem1_post; + int HP_clif_pRepairItem2_pre; + int HP_clif_pRepairItem2_post; int HP_clif_pWeaponRefine_pre; int HP_clif_pWeaponRefine_post; int HP_clif_pNpcSelectMenu_pre; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index 35fced11b0e..d02afab8708 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -935,7 +935,8 @@ struct HookingPointData HookingPoints[] = { { HP_POP(clif->pRequestMemo, HP_clif_pRequestMemo) }, { HP_POP(clif->pProduceMix, HP_clif_pProduceMix) }, { HP_POP(clif->pCooking, HP_clif_pCooking) }, - { HP_POP(clif->pRepairItem, HP_clif_pRepairItem) }, + { HP_POP(clif->pRepairItem1, HP_clif_pRepairItem1) }, + { HP_POP(clif->pRepairItem2, HP_clif_pRepairItem2) }, { HP_POP(clif->pWeaponRefine, HP_clif_pWeaponRefine) }, { HP_POP(clif->pNpcSelectMenu, HP_clif_pNpcSelectMenu) }, { HP_POP(clif->pNpcNextClicked, HP_clif_pNpcNextClicked) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index 8eaeecfe88a..324742c3327 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -23757,13 +23757,13 @@ void HP_clif_pCooking(int fd, struct map_session_data *sd) { } return; } -void HP_clif_pRepairItem(int fd, struct map_session_data *sd) { +void HP_clif_pRepairItem1(int fd, struct map_session_data *sd) { int hIndex = 0; - if (HPMHooks.count.HP_clif_pRepairItem_pre > 0) { + if (HPMHooks.count.HP_clif_pRepairItem1_pre > 0) { void (*preHookFunc) (int *fd, struct map_session_data **sd); *HPMforce_return = false; - for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRepairItem_pre; hIndex++) { - preHookFunc = HPMHooks.list.HP_clif_pRepairItem_pre[hIndex].func; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRepairItem1_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRepairItem1_pre[hIndex].func; preHookFunc(&fd, &sd); } if (*HPMforce_return) { @@ -23772,12 +23772,38 @@ void HP_clif_pRepairItem(int fd, struct map_session_data *sd) { } } { - HPMHooks.source.clif.pRepairItem(fd, sd); + HPMHooks.source.clif.pRepairItem1(fd, sd); } - if (HPMHooks.count.HP_clif_pRepairItem_post > 0) { + if (HPMHooks.count.HP_clif_pRepairItem1_post > 0) { void (*postHookFunc) (int fd, struct map_session_data *sd); - for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRepairItem_post; hIndex++) { - postHookFunc = HPMHooks.list.HP_clif_pRepairItem_post[hIndex].func; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRepairItem1_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRepairItem1_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_pRepairItem2(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRepairItem2_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRepairItem2_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRepairItem2_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRepairItem2(fd, sd); + } + if (HPMHooks.count.HP_clif_pRepairItem2_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRepairItem2_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRepairItem2_post[hIndex].func; postHookFunc(fd, sd); } } From 8be2b5921a2c3cee01c12a1032e4b1509366794f Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 20 Oct 2021 23:03:46 +0300 Subject: [PATCH 29/65] Update packet ZC_ITEM_PICKUP_ACK --- src/map/clif.c | 7 +++++-- src/map/packets_struct.h | 39 +++++++++++++++++++++++++-------------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 4cc811f2be2..d40b6a4bdd6 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -2672,7 +2672,7 @@ static int clif_add_item_options(struct ItemOptions *buf, const struct item *it) /// 0a37 .W .W .W .B .B .B .W .W .W .W .L .B .B .L .W .B .W (ZC_ITEM_PICKUP_ACK_V7) static void clif_additem(struct map_session_data *sd, int n, int amount, int fail) { - struct packet_additem p; + struct PACKET_ZC_ITEM_PICKUP_ACK p; nullpo_retv(sd); if (!sockt->session_is_active(sd->fd)) //Sasuke- @@ -2681,7 +2681,7 @@ static void clif_additem(struct map_session_data *sd, int n, int amount, int fai if( fail ) memset(&p, 0, sizeof(p)); - p.PacketType = additemType; + p.PacketType = HEADER_ZC_ITEM_PICKUP_ACK; p.Index = n+2; p.count = amount; @@ -2709,6 +2709,9 @@ static void clif_additem(struct map_session_data *sd, int n, int amount, int fai */ p.bindOnEquipType = sd->status.inventory[n].bound && !itemdb->isstackable2(sd->inventory_data[n]) ? 2 : sd->inventory_data[n]->flag.bindonequip ? 1 : 0; #endif +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + p.grade = sd->status.inventory[n].grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 #if PACKETVER >= 20150226 clif->add_item_options(&p.option_data[0], &sd->status.inventory[n]); #endif diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 324eebdd61e..f95d97de36a 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -60,19 +60,6 @@ enum packet_headers { #else tradeaddType = 0x0e9, #endif -#if PACKETVER < 20061218 - additemType = 0x0a0, -#elif PACKETVER < 20071002 - additemType = 0x29a, -#elif PACKETVER < 20120925 - additemType = 0x2d4, -#elif PACKETVER < 20150226 - additemType = 0x990, -#elif PACKETVER < 20160921 - additemType = 0xa0c, -#else - additemType = 0xa37, -#endif #if PACKETVER < 4 idle_unitType = 0x78, #elif PACKETVER < 7 @@ -568,7 +555,9 @@ struct packet_sc_notick { uint8 state; } __attribute__((packed)); -struct packet_additem { +// TODO put struct under #ifdef/#elif +// [4144] dates unconfirmed +struct PACKET_ZC_ITEM_PICKUP_ACK { int16 PacketType; uint16 Index; uint16 count; @@ -579,7 +568,9 @@ struct packet_additem { #endif uint8 IsIdentified; uint8 IsDamaged; +#if !(PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723) uint8 refiningLevel; +#endif // !(PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723) struct EQUIPSLOTINFO slot; #if PACKETVER >= 20120925 uint32 location; @@ -601,8 +592,28 @@ struct packet_additem { uint8 favorite; uint16 look; #endif +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + uint8 refiningLevel; + uint8 grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 } __attribute__((packed)); +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_ACK, 0x0b41); +#elif PACKETVER >= 20160921 +DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_ACK, 0x0a37); +#elif PACKETVER >= 20150226 +DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_ACK, 0x0a0c); +#elif PACKETVER >= 20120925 +DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_ACK, 0x0990); +#elif PACKETVER >= 20071002 +DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_ACK, 0x02d4); +#elif PACKETVER >= 20061218 +DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_ACK, 0x029a); +#else +DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_ACK, 0x00a0); +#endif + struct packet_dropflooritem { int16 PacketType; uint32 ITAID; From f8b6087674e71a890d1aac63946cd0b623ce0599 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 20 Oct 2021 23:04:53 +0300 Subject: [PATCH 30/65] Update HPM --- src/common/HPMDataCheck.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index 0d9ae04cfcf..cf8f3123db6 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -718,6 +718,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_ZC_GUILD_SKILLINFO", sizeof(struct PACKET_ZC_GUILD_SKILLINFO), SERVER_TYPE_MAP }, { "PACKET_ZC_INVENTORY_MOVE_FAILED", sizeof(struct PACKET_ZC_INVENTORY_MOVE_FAILED), SERVER_TYPE_MAP }, { "PACKET_ZC_ITEM_ENTRY", sizeof(struct PACKET_ZC_ITEM_ENTRY), SERVER_TYPE_MAP }, + { "PACKET_ZC_ITEM_PICKUP_ACK", sizeof(struct PACKET_ZC_ITEM_PICKUP_ACK), SERVER_TYPE_MAP }, { "PACKET_ZC_MAIL_LIST", sizeof(struct PACKET_ZC_MAIL_LIST), SERVER_TYPE_MAP }, { "PACKET_ZC_MAKABLEITEMLIST", sizeof(struct PACKET_ZC_MAKABLEITEMLIST), SERVER_TYPE_MAP }, { "PACKET_ZC_MAKABLEITEMLIST_sub", sizeof(struct PACKET_ZC_MAKABLEITEMLIST_sub), SERVER_TYPE_MAP }, @@ -792,7 +793,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "packet_achievement_list", sizeof(struct packet_achievement_list), SERVER_TYPE_MAP }, { "packet_achievement_reward_ack", sizeof(struct packet_achievement_reward_ack), SERVER_TYPE_MAP }, { "packet_achievement_update", sizeof(struct packet_achievement_update), SERVER_TYPE_MAP }, - { "packet_additem", sizeof(struct packet_additem), SERVER_TYPE_MAP }, { "packet_authok", sizeof(struct packet_authok), SERVER_TYPE_MAP }, { "packet_banking_check", sizeof(struct packet_banking_check), SERVER_TYPE_MAP }, { "packet_banking_deposit_ack", sizeof(struct packet_banking_deposit_ack), SERVER_TYPE_MAP }, From 6c8811b86b903a74160fdef5a41523191f577634 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 21 Oct 2021 00:48:17 +0300 Subject: [PATCH 31/65] Update packet ZC_ADD_EXCHANGE_ITEM --- src/map/clif.c | 9 ++++++++- src/map/packets_struct.h | 31 ++++++++++++++++++++++++------- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index d40b6a4bdd6..d9e02b63e00 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -4593,7 +4593,7 @@ static void clif_tradeadditem(struct map_session_data *sd, struct map_session_da fd = tsd->fd; WFIFOHEAD(fd, sizeof(p)); memset(&p, 0, sizeof(p)); - p.packetType = tradeaddType; + p.packetType = HEADER_ZC_ADD_EXCHANGE_ITEM; p.amount = amount; if (index != 0) { index -= 2; //index fix @@ -4609,6 +4609,13 @@ static void clif_tradeadditem(struct map_session_data *sd, struct map_session_da p.identified = sd->status.inventory[index].identify; p.damaged = sd->status.inventory[index].attribute; p.refine = sd->status.inventory[index].refine; +#if PACKETVER_MAIN_NUM >= 20161102 || PACKETVER_RE_NUM >= 20161026 || defined(PACKETVER_ZERO) + p.location = pc->equippoint(sd, index); + p.look = sd->inventory_data[index]->view_sprite; +#endif // PACKETVER_MAIN_NUM >= 20161102 || PACKETVER_RE_NUM >= 20161026 || defined(PACKETVER_ZERO) +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + p.grade = sd->status.inventory[index].refine; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 clif->addcards(&p.slot, &sd->status.inventory[index]); #if PACKETVER >= 20150226 clif->add_item_options(&p.option_data[0], &sd->status.inventory[index]); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index f95d97de36a..855da974d8c 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -53,13 +53,6 @@ enum packet_headers { #else storageaddType = 0xf4, #endif -#if PACKETVER >= 20150226 - tradeaddType = 0xa09, -#elif PACKETVER >= 20100223 - tradeaddType = 0x80f, -#else - tradeaddType = 0x0e9, -#endif #if PACKETVER < 4 idle_unitType = 0x78, #elif PACKETVER < 7 @@ -2379,6 +2372,8 @@ struct PACKET_ZC_SPRITE_CHANGE { #endif } __attribute__((packed)); +// TODO put struct under #ifdef/#elif +// [4144] dates unconfirmed struct PACKET_ZC_ADD_EXCHANGE_ITEM { int16 packetType; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 @@ -2395,13 +2390,35 @@ struct PACKET_ZC_ADD_EXCHANGE_ITEM { #endif uint8 identified; uint8 damaged; +#if !(PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723) uint8 refine; +#endif // !(PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723) struct EQUIPSLOTINFO slot; #if PACKETVER >= 20150226 struct ItemOptions option_data[MAX_ITEM_OPTIONS]; #endif +#if PACKETVER_MAIN_NUM >= 20161102 || PACKETVER_RE_NUM >= 20161026 || defined(PACKETVER_ZERO) + uint32 location; + uint16 look; +#endif // PACKETVER_MAIN_NUM >= 20161102 || PACKETVER_RE_NUM >= 20161026 || defined(PACKETVER_ZERO) +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + uint8 refine; + uint8 grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 } __attribute__((packed)); +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +DEFINE_PACKET_HEADER(ZC_ADD_EXCHANGE_ITEM, 0x0b42); +#elif PACKETVER_MAIN_NUM >= 20161102 || PACKETVER_RE_NUM >= 20161026 || defined(PACKETVER_ZERO) +DEFINE_PACKET_HEADER(ZC_ADD_EXCHANGE_ITEM, 0x0a96); +#elif PACKETVER >= 20150226 +DEFINE_PACKET_HEADER(ZC_ADD_EXCHANGE_ITEM, 0x0a09); +#elif PACKETVER >= 20100223 +DEFINE_PACKET_HEADER(ZC_ADD_EXCHANGE_ITEM, 0x080f); +#else +DEFINE_PACKET_HEADER(ZC_ADD_EXCHANGE_ITEM, 0x00e9); +#endif + struct PACKET_ZC_CASH_TIME_COUNTER { int16 packetType; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 From cb2b6df2ecdcf48b8a461094fbabb223569b953d Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 21 Oct 2021 02:24:40 +0300 Subject: [PATCH 32/65] Update packet ZC_ITEM_PREVIEW --- src/map/clif.c | 3 +++ src/map/packets_struct.h | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index d9e02b63e00..372601afb84 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -23932,6 +23932,9 @@ static void clif_item_preview(struct map_session_data *sd, int n) #if PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024 p.isDamaged = (sd->status.inventory[n].attribute & ATTR_BROKEN) != 0 ? 1 : 0; #endif +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + p.grade = sd->status.inventory[n].grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 p.refiningLevel = sd->status.inventory[n].refine; clif->addcards(&p.slot, &sd->status.inventory[n]); clif->add_item_options(&p.option_data[0], &sd->status.inventory[n]); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 855da974d8c..b5d919d340b 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -3354,8 +3354,18 @@ struct PACKET_ZC_AUTOSPELLLIST { DEFINE_PACKET_HEADER(ZC_AUTOSPELLLIST, 0x01cd); #endif -#if PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) -#if PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024 +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +struct PACKET_ZC_ITEM_PREVIEW { + int16 packetType; + int16 index; + int8 isDamaged; + struct EQUIPSLOTINFO slot; + struct ItemOptions option_data[MAX_ITEM_OPTIONS]; + uint8 refiningLevel; + uint8 grade; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ITEM_PREVIEW, 0x0b43); +#elif PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024 struct PACKET_ZC_ITEM_PREVIEW { int16 packetType; int16 index; @@ -3365,8 +3375,7 @@ struct PACKET_ZC_ITEM_PREVIEW { struct ItemOptions option_data[MAX_ITEM_OPTIONS]; } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_ITEM_PREVIEW, 0x0b13); -#else // PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024 - +#elif PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) struct PACKET_ZC_ITEM_PREVIEW { int16 packetType; int16 index; @@ -3376,7 +3385,6 @@ struct PACKET_ZC_ITEM_PREVIEW { } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_ITEM_PREVIEW, 0x0ab9); #endif // PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024 -#endif // PACKETVER_MAIN_NUM >= 20170726 || PACKETVER_RE_NUM >= 20170621 || defined(PACKETVER_ZERO) #if PACKETVER_MAIN_NUM >= 20160831 || PACKETVER_RE_NUM >= 20151118 || defined(PACKETVER_ZERO) struct PACKET_ZC_ENCHANT_EQUIPMENT { From 1089c93a91a5dd0958e6b718f17e67a7e284b26c Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 21 Oct 2021 16:22:07 +0300 Subject: [PATCH 33/65] Update packet ZC_ADD_ITEM_TO_STORE --- src/map/clif.c | 21 ++++++++------ src/map/packets_struct.h | 63 ++++++++++++++++++++++++++++++++++------ 2 files changed, 66 insertions(+), 18 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 372601afb84..8be3161ae06 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -4740,18 +4740,21 @@ static void clif_storageitemadded(struct map_session_data *sd, struct item *i, i view = itemdb_viewid(i->nameid); WFIFOHEAD(fd, sizeof(p)); - p.packetType = storageaddType; // Storage item added - p.index = index + 1; // index - p.amount = amount; // amount - p.itemId = (view > 0) ? view : i->nameid; // id + p.packetType = HEADER_ZC_ADD_ITEM_TO_STORE; + p.index = index + 1; + p.amount = amount; + p.itemId = (view > 0) ? view : i->nameid; #if PACKETVER >= 5 - p.itemType = itemtype(itemdb_type(i->nameid)); //type + p.itemType = itemtype(itemdb_type(i->nameid)); #endif - p.identified = i->identify; //identify flag - p.damaged = i->attribute; // attribute - p.refine = i->refine; //refine + p.identified = i->identify; + p.damaged = i->attribute; + p.refine = i->refine; +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + p.grade = i->grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 clif->addcards(&p.slot, i); -#if PACKETVER >= 20150226 +#if PACKETVER_MAIN_NUM >= 20140813 || PACKETVER_RE_NUM >= 20140402 || defined(PACKETVER_ZERO) clif->add_item_options(&p.option_data[0], i); #endif memcpy(WFIFOP(fd, 0), &p, sizeof(p)); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index b5d919d340b..2c7da381011 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -46,13 +46,6 @@ enum packet_headers { #else cartaddType = 0x124, #endif -#if PACKETVER >= 20150226 - storageaddType = 0xa0a, -#elif PACKETVER >= 5 - storageaddType = 0x1c4, -#else - storageaddType = 0xf4, -#endif #if PACKETVER < 4 idle_unitType = 0x78, #elif PACKETVER < 7 @@ -2237,6 +2230,7 @@ struct PACKET_ZC_ITEM_ENTRY { uint8 subY; } __attribute__((packed)); +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 struct PACKET_ZC_ADD_ITEM_TO_STORE { int16 packetType; int16 index; @@ -2246,17 +2240,68 @@ struct PACKET_ZC_ADD_ITEM_TO_STORE { #else uint16 itemId; #endif -#if PACKETVER >= 5 uint8 itemType; + uint8 identified; + uint8 damaged; + struct EQUIPSLOTINFO slot; + struct ItemOptions option_data[MAX_ITEM_OPTIONS]; + uint8 refine; + uint8 grade; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ADD_ITEM_TO_STORE, 0x0b44) +#elif PACKETVER_MAIN_NUM >= 20140813 || PACKETVER_RE_NUM >= 20140402 || defined(PACKETVER_ZERO) +struct PACKET_ZC_ADD_ITEM_TO_STORE { + int16 packetType; + int16 index; + int32 amount; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; #endif + uint8 itemType; uint8 identified; uint8 damaged; uint8 refine; struct EQUIPSLOTINFO slot; -#if PACKETVER >= 20150226 struct ItemOptions option_data[MAX_ITEM_OPTIONS]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ADD_ITEM_TO_STORE, 0x0a0a) +// [4144] this version unconfirmed +#elif PACKETVER >= 5 +struct PACKET_ZC_ADD_ITEM_TO_STORE { + int16 packetType; + int16 index; + int32 amount; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; #endif + uint8 itemType; + uint8 identified; + uint8 damaged; + uint8 refine; + struct EQUIPSLOTINFO slot; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ADD_ITEM_TO_STORE, 0x01c4) +#else +struct PACKET_ZC_ADD_ITEM_TO_STORE { + int16 packetType; + int16 index; + int32 amount; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + uint8 identified; + uint8 damaged; + uint8 refine; + struct EQUIPSLOTINFO slot; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ADD_ITEM_TO_STORE, 0x00f4) +#endif struct PACKET_ZC_MVP_GETTING_ITEM { int16 packetType; From 9b8a30348c973bd9865ed6c0f197dd651061109d Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 21 Oct 2021 17:17:54 +0300 Subject: [PATCH 34/65] Update packet ZC_ADD_ITEM_TO_CART --- src/map/clif.c | 5 +++- src/map/packets_struct.h | 63 ++++++++++++++++++++++++++++++++++------ 2 files changed, 58 insertions(+), 10 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 8be3161ae06..1d06a2ebd45 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -6950,7 +6950,7 @@ static void clif_cart_additem(struct map_session_data *sd, int n, int amount, in return; WFIFOHEAD(fd, sizeof(p)); - p.packetType = cartaddType; + p.packetType = HEADER_ZC_ADD_ITEM_TO_CART; p.index = n + 2; p.amount = amount; if ((view = itemdb_viewid(sd->status.cart[n].nameid)) > 0) @@ -6963,6 +6963,9 @@ static void clif_cart_additem(struct map_session_data *sd, int n, int amount, in p.identified = sd->status.cart[n].identify; p.damaged = sd->status.cart[n].attribute; p.refine = sd->status.cart[n].refine; +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + p.grade = sd->status.cart[n].grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 clif->addcards(&p.slot, &sd->status.cart[n]); #if PACKETVER >= 20150226 clif->add_item_options(&p.option_data[0], &sd->status.cart[n]); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 2c7da381011..eac6c02dd70 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -39,13 +39,6 @@ enum packet_headers { banking_checkType = 0x9a6, cart_additem_ackType = 0x12c, sc_notickType = 0x196, -#if PACKETVER >= 20150226 - cartaddType = 0xa0b, -#elif PACKETVER >= 5 - cartaddType = 0x1c5, -#else - cartaddType = 0x124, -#endif #if PACKETVER < 4 idle_unitType = 0x78, #elif PACKETVER < 7 @@ -2326,6 +2319,7 @@ struct PACKET_ZC_ACK_TOUSESKILL { uint8 cause; } __attribute__((packed)); +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 struct PACKET_ZC_ADD_ITEM_TO_CART { int16 packetType; int16 index; @@ -2335,17 +2329,68 @@ struct PACKET_ZC_ADD_ITEM_TO_CART { #else uint16 itemId; #endif -#if PACKETVER >= 5 uint8 itemType; + uint8 identified; + uint8 damaged; + struct EQUIPSLOTINFO slot; + struct ItemOptions option_data[MAX_ITEM_OPTIONS]; + uint8 refine; + uint8 grade; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ADD_ITEM_TO_CART, 0x0b45); +#elif PACKETVER_MAIN_NUM >= 20140813 || PACKETVER_RE_NUM >= 20140402 || defined(PACKETVER_ZERO) +struct PACKET_ZC_ADD_ITEM_TO_CART { + int16 packetType; + int16 index; + int32 amount; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; #endif + uint8 itemType; uint8 identified; uint8 damaged; uint8 refine; struct EQUIPSLOTINFO slot; -#if PACKETVER >= 20150226 struct ItemOptions option_data[MAX_ITEM_OPTIONS]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ADD_ITEM_TO_CART, 0x0a0b); +// [4144] this version unconfirmed +#elif PACKETVER >= 5 +struct PACKET_ZC_ADD_ITEM_TO_CART { + int16 packetType; + int16 index; + int32 amount; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + uint8 itemType; + uint8 identified; + uint8 damaged; + uint8 refine; + struct EQUIPSLOTINFO slot; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ADD_ITEM_TO_CART, 0x01c5); +#else +struct PACKET_ZC_ADD_ITEM_TO_CART { + int16 packetType; + int16 index; + int32 amount; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; #endif + uint8 identified; + uint8 damaged; + uint8 refine; + struct EQUIPSLOTINFO slot; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ADD_ITEM_TO_CART, 0x0124); +#endif struct PACKET_CZ_REQMAKINGITEM { int16 packetType; From 7394c70f9ac80ea496e146df23d7b5aedb249313 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 21 Oct 2021 17:56:50 +0300 Subject: [PATCH 35/65] Improve packet ZC_ACK_READ_RODEX --- src/map/clif.c | 39 ++++++++++++++------------------------- src/map/packets_struct.h | 40 ++++++++++++++++++++++------------------ 2 files changed, 36 insertions(+), 43 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 1d06a2ebd45..bff4adba17d 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -23148,20 +23148,17 @@ static void clif_parse_rodex_read_mail(int fd, struct map_session_data *sd) static void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, struct rodex_message *msg) { +// [4144] date unconfirmed #if PACKETVER >= 20140115 - struct PACKET_ZC_READ_MAIL *sPacket; - struct mail_item *item; - int fd, i, body_len, size; - nullpo_retv(sd); nullpo_retv(msg); - fd = sd->fd; - body_len = (int)strlen(msg->body) + 1; - size = sizeof(*sPacket); + int fd = sd->fd; + int body_len = (int)strlen(msg->body) + 1; + int size = sizeof(struct PACKET_ZC_ACK_READ_RODEX); - WFIFOHEAD(fd, sizeof(*sPacket) + body_len + (sizeof(*item) * RODEX_MAX_ITEM)); - sPacket = WFIFOP(fd, 0); + WFIFOHEAD(fd, sizeof(struct PACKET_ZC_ACK_READ_RODEX) + body_len + (sizeof(struct PACKET_ZC_ACK_READ_RODEX_SUB) * RODEX_MAX_ITEM)); + struct PACKET_ZC_ACK_READ_RODEX *sPacket = WFIFOP(fd, 0); sPacket->PacketType = rodexread; sPacket->opentype = opentype; sPacket->MailID = msg->id; @@ -23170,19 +23167,17 @@ static void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, str sPacket->ItemCnt = msg->items_count; strncpy(WFIFOP(fd, size), msg->body, body_len); size += body_len; - for (i = 0; i < RODEX_MAX_ITEM; ++i) { + for (int i = 0; i < RODEX_MAX_ITEM; ++i) { struct item *it = &msg->items[i].item; - struct item_data *data; - int j, k; - if (it->nameid == 0) continue; - data = itemdb->search(it->nameid); + + struct item_data *data = itemdb->search(it->nameid); if (data == NULL) continue; - item = WFIFOP(fd, size); - memset(item, 0x0, sizeof(*item)); + struct PACKET_ZC_ACK_READ_RODEX_SUB *item = WFIFOP(fd, size); + memset(item, 0x0, sizeof(struct PACKET_ZC_ACK_READ_RODEX_SUB)); item->ITID = it->nameid; item->count = it->amount; item->type = itemtype(itemdb->search(it->nameid)->type); @@ -23192,15 +23187,9 @@ static void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, str item->location = pc->item_equippoint(sd, data); item->viewSprite = data->view_sprite; item->bindOnEquip = it->bound ? 2 : data->flag.bindonequip ? 1 : 0; - for (k = 0; k < MAX_SLOTS; ++k) { - item->slot.card[k] = it->card[k]; - } - for (j = 0; j < MAX_ITEM_OPTIONS; ++j) { - item->optionData[j].index = it->option[j].index; - item->optionData[j].value = it->option[j].value; - } - - size += sizeof(*item); + clif->addcards(&item->slot, it); + clif->add_item_options(&item->option_data[0], it); + size += sizeof(struct PACKET_ZC_ACK_READ_RODEX_SUB); } sPacket->PacketLength = size; WFIFOSET(fd, size); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index eac6c02dd70..51e26de058c 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -1715,23 +1715,6 @@ struct PACKET_ZC_ACK_ADD_ITEM_RODEX { DEFINE_PACKET_HEADER(ZC_ACK_ADD_ITEM_RODEX, 0x0a05); #endif // PACKETVER >= 20141119 -struct mail_item { - int16 count; -#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 - uint32 ITID; -#else - uint16 ITID; -#endif - int8 IsIdentified; - int8 IsDamaged; - int8 refiningLevel; - struct EQUIPSLOTINFO slot; - uint32 location; - uint8 type; - uint16 viewSprite; - uint16 bindOnEquip; - struct ItemOptions optionData[MAX_ITEM_OPTIONS]; -} __attribute__((packed)); struct PACKET_CZ_REQ_OPEN_WRITE_MAIL { int16 PacketType; @@ -1847,7 +1830,27 @@ struct PACKET_CZ_REQ_READ_MAIL { int64 MailID; } __attribute__((packed)); -struct PACKET_ZC_READ_MAIL { +// [4144] date unconfirmed +#if PACKETVER >= 20140115 +struct PACKET_ZC_ACK_READ_RODEX_SUB { + int16 count; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 ITID; +#else + uint16 ITID; +#endif + int8 IsIdentified; + int8 IsDamaged; + int8 refiningLevel; + struct EQUIPSLOTINFO slot; + uint32 location; + uint8 type; + uint16 viewSprite; + uint16 bindOnEquip; + struct ItemOptions option_data[MAX_ITEM_OPTIONS]; +} __attribute__((packed)); + +struct PACKET_ZC_ACK_READ_RODEX { int16 PacketType; int16 PacketLength; int8 opentype; @@ -1856,6 +1859,7 @@ struct PACKET_ZC_READ_MAIL { int64 zeny; int8 ItemCnt; } __attribute__((packed)); +#endif // PACKETVER >= 20140115 struct PACKET_CZ_REQ_DELETE_MAIL { int16 PacketType; From ec3f2f9ae57866d54e3f4727130e0452e7edd215 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 21 Oct 2021 18:02:17 +0300 Subject: [PATCH 36/65] Update HPM --- src/common/HPMDataCheck.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index cf8f3123db6..e0db6e5a0b9 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -761,7 +761,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_ZC_POSITION_ID_NAME_INFO", sizeof(struct PACKET_ZC_POSITION_ID_NAME_INFO), SERVER_TYPE_MAP }, { "PACKET_ZC_POSITION_INFO", sizeof(struct PACKET_ZC_POSITION_INFO), SERVER_TYPE_MAP }, { "PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE", sizeof(struct PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE), SERVER_TYPE_MAP }, - { "PACKET_ZC_READ_MAIL", sizeof(struct PACKET_ZC_READ_MAIL), SERVER_TYPE_MAP }, { "PACKET_ZC_REMOVE_EFFECT", sizeof(struct PACKET_ZC_REMOVE_EFFECT), SERVER_TYPE_MAP }, { "PACKET_ZC_REPAIRITEMLIST", sizeof(struct PACKET_ZC_REPAIRITEMLIST), SERVER_TYPE_MAP }, { "PACKET_ZC_ROLE_CHANGE", sizeof(struct PACKET_ZC_ROLE_CHANGE), SERVER_TYPE_MAP }, @@ -787,7 +786,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "ZC_STORE_ITEMLIST_EQUIP", sizeof(struct ZC_STORE_ITEMLIST_EQUIP), SERVER_TYPE_MAP }, { "ZC_STORE_ITEMLIST_NORMAL", sizeof(struct ZC_STORE_ITEMLIST_NORMAL), SERVER_TYPE_MAP }, { "ach_list_info", sizeof(struct ach_list_info), SERVER_TYPE_MAP }, - { "mail_item", sizeof(struct mail_item), SERVER_TYPE_MAP }, { "maillistinfo", sizeof(struct maillistinfo), SERVER_TYPE_MAP }, { "packet_ZC_REFUSE_LOGIN", sizeof(struct packet_ZC_REFUSE_LOGIN), SERVER_TYPE_MAP }, { "packet_achievement_list", sizeof(struct packet_achievement_list), SERVER_TYPE_MAP }, From 03cd58e8a7d23d500be87c2f9c04379054742b45 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 21 Oct 2021 18:27:18 +0300 Subject: [PATCH 37/65] Update packet ZC_ACK_READ_RODEX --- src/map/clif.c | 5 ++++- src/map/packets_struct.h | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index bff4adba17d..3754388acf9 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -23159,7 +23159,7 @@ static void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, str WFIFOHEAD(fd, sizeof(struct PACKET_ZC_ACK_READ_RODEX) + body_len + (sizeof(struct PACKET_ZC_ACK_READ_RODEX_SUB) * RODEX_MAX_ITEM)); struct PACKET_ZC_ACK_READ_RODEX *sPacket = WFIFOP(fd, 0); - sPacket->PacketType = rodexread; + sPacket->PacketType = HEADER_ZC_ACK_READ_RODEX; sPacket->opentype = opentype; sPacket->MailID = msg->id; sPacket->TextcontentsLength = body_len; @@ -23187,6 +23187,9 @@ static void clif_rodex_read_mail(struct map_session_data *sd, int8 opentype, str item->location = pc->item_equippoint(sd, data); item->viewSprite = data->view_sprite; item->bindOnEquip = it->bound ? 2 : data->flag.bindonequip ? 1 : 0; +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + item->grade = it->grade; +#endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 clif->addcards(&item->slot, it); clif->add_item_options(&item->option_data[0], it); size += sizeof(struct PACKET_ZC_ACK_READ_RODEX_SUB); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 51e26de058c..72b8aa9b7b1 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -279,7 +279,6 @@ enum packet_headers { #endif // PACKETVER >= 20141022 /* Rodex */ rodexicon = 0x09E7, - rodexread = 0x09EB, rodexwriteresult = 0x09ED, rodexnextpage = 0x09F0, rodexgetzeny = 0x09F2, @@ -1830,8 +1829,38 @@ struct PACKET_CZ_REQ_READ_MAIL { int64 MailID; } __attribute__((packed)); +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +struct PACKET_ZC_ACK_READ_RODEX_SUB { + int16 count; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 ITID; +#else + uint16 ITID; +#endif + int8 IsIdentified; + int8 IsDamaged; + struct EQUIPSLOTINFO slot; + uint32 location; + uint8 type; + uint16 viewSprite; + uint16 bindOnEquip; + struct ItemOptions option_data[MAX_ITEM_OPTIONS]; + int8 refiningLevel; + int8 grade; +} __attribute__((packed)); + +struct PACKET_ZC_ACK_READ_RODEX { + int16 PacketType; + int16 PacketLength; + int8 opentype; + int64 MailID; + int16 TextcontentsLength; + int64 zeny; + int8 ItemCnt; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_READ_RODEX, 0x0b63); // [4144] date unconfirmed -#if PACKETVER >= 20140115 +#elif PACKETVER >= 20140115 struct PACKET_ZC_ACK_READ_RODEX_SUB { int16 count; #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 @@ -1859,6 +1888,7 @@ struct PACKET_ZC_ACK_READ_RODEX { int64 zeny; int8 ItemCnt; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_ACK_READ_RODEX, 0x09eb); #endif // PACKETVER >= 20140115 struct PACKET_CZ_REQ_DELETE_MAIL { From 2aa93839db9b95777a437ecbf123e47317f6531c Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 21 Oct 2021 19:33:02 +0300 Subject: [PATCH 38/65] Add missing packet id for inventory and storage item lists --- src/map/packets_struct.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 72b8aa9b7b1..f41c198add4 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -167,7 +167,9 @@ enum packet_headers { #else inventorylistnormalType = 0xa3, #endif -#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002 +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + inventorylistequipType = 0xb39, +#elif PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 inventorylistequipType = 0xb0a, #elif PACKETVER >= 20150226 inventorylistequipType = 0xa0d, @@ -193,7 +195,7 @@ enum packet_headers { #endif #if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 storageListEquipType = 0xb39, -#elif PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002 +#elif PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 storageListEquipType = 0xb0a, #elif PACKETVER >= 20150226 storageListEquipType = 0xa10, @@ -217,7 +219,9 @@ enum packet_headers { #else cartlistnormalType = 0x123, #endif -#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002 +#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 + cartlistequipType = 0xb39, +#elif PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 cartlistequipType = 0xb0a, #elif PACKETVER >= 20150226 cartlistequipType = 0xa0f, From 857b676a7affed6a06b48c981513e0ddfbab76fc Mon Sep 17 00:00:00 2001 From: Asheraf Date: Thu, 21 Oct 2021 18:53:57 +0100 Subject: [PATCH 39/65] Add item grade saving in database --- sql-files/logs.sql | 1 + sql-files/main.sql | 8 +++ sql-files/upgrades/2021-10-21--18-49.sql | 44 +++++++++++++++ sql-files/upgrades/index.txt | 1 + src/char/char.c | 31 ++++++----- src/char/int_auction.c | 23 ++++---- src/char/int_mail.c | 34 ++++++------ src/char/int_rodex.c | 40 ++++++------- src/char/int_storage.c | 71 ++++++++++++------------ src/common/mmo.h | 2 +- src/map/log.c | 6 +- 11 files changed, 162 insertions(+), 99 deletions(-) create mode 100644 sql-files/upgrades/2021-10-21--18-49.sql diff --git a/sql-files/logs.sql b/sql-files/logs.sql index dc9e936032a..dd95b0630ff 100644 --- a/sql-files/logs.sql +++ b/sql-files/logs.sql @@ -148,6 +148,7 @@ CREATE TABLE IF NOT EXISTS `picklog` ( `nameid` INT NOT NULL DEFAULT '0', `amount` INT NOT NULL DEFAULT '1', `refine` TINYINT UNSIGNED NOT NULL DEFAULT '0', + `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0', `card0` INT NOT NULL DEFAULT '0', `card1` INT NOT NULL DEFAULT '0', `card2` INT NOT NULL DEFAULT '0', diff --git a/sql-files/main.sql b/sql-files/main.sql index 511db714811..6f6ea8879d0 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -76,6 +76,7 @@ CREATE TABLE IF NOT EXISTS `auction` ( `item_name` VARCHAR(50) NOT NULL DEFAULT '', `type` SMALLINT NOT NULL DEFAULT '0', `refine` TINYINT UNSIGNED NOT NULL DEFAULT '0', + `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0', `attribute` TINYINT UNSIGNED NOT NULL DEFAULT '0', `card0` INT NOT NULL DEFAULT '0', `card1` INT NOT NULL DEFAULT '0', @@ -153,6 +154,7 @@ CREATE TABLE IF NOT EXISTS `cart_inventory` ( `equip` INT UNSIGNED NOT NULL DEFAULT '0', `identify` SMALLINT NOT NULL DEFAULT '0', `refine` TINYINT UNSIGNED NOT NULL DEFAULT '0', + `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0', `attribute` TINYINT NOT NULL DEFAULT '0', `card0` INT NOT NULL DEFAULT '0', `card1` INT NOT NULL DEFAULT '0', @@ -515,6 +517,7 @@ CREATE TABLE IF NOT EXISTS `guild_storage` ( `equip` INT UNSIGNED NOT NULL DEFAULT '0', `identify` SMALLINT UNSIGNED NOT NULL DEFAULT '0', `refine` TINYINT UNSIGNED NOT NULL DEFAULT '0', + `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0', `attribute` TINYINT UNSIGNED NOT NULL DEFAULT '0', `card0` INT NOT NULL DEFAULT '0', `card1` INT NOT NULL DEFAULT '0', @@ -590,6 +593,7 @@ CREATE TABLE IF NOT EXISTS `inventory` ( `equip` INT UNSIGNED NOT NULL DEFAULT '0', `identify` SMALLINT NOT NULL DEFAULT '0', `refine` TINYINT UNSIGNED NOT NULL DEFAULT '0', + `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0', `attribute` TINYINT UNSIGNED NOT NULL DEFAULT '0', `card0` INT NOT NULL DEFAULT '0', `card1` INT NOT NULL DEFAULT '0', @@ -725,6 +729,7 @@ CREATE TABLE IF NOT EXISTS `mail` ( `nameid` INT UNSIGNED NOT NULL DEFAULT '0', `amount` INT UNSIGNED NOT NULL DEFAULT '0', `refine` TINYINT UNSIGNED NOT NULL DEFAULT '0', + `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0', `attribute` TINYINT UNSIGNED NOT NULL DEFAULT '0', `identify` SMALLINT NOT NULL DEFAULT '0', `card0` INT NOT NULL DEFAULT '0', @@ -955,6 +960,7 @@ INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1589145060); -- 2020-05-1 INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1597467600); -- 2020-08-15--13-00.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1612286353); -- 2021-05-03--10-19.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1628121360); -- 2021-08-04--23-56.sql +INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1634838524); -- 2021-10-21--18-49.sql -- -- Table structure for table `storage` @@ -968,6 +974,7 @@ CREATE TABLE IF NOT EXISTS `storage` ( `equip` INT UNSIGNED NOT NULL DEFAULT '0', `identify` SMALLINT UNSIGNED NOT NULL DEFAULT '0', `refine` TINYINT UNSIGNED NOT NULL DEFAULT '0', + `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0', `attribute` TINYINT UNSIGNED NOT NULL DEFAULT '0', `card0` INT NOT NULL DEFAULT '0', `card1` INT NOT NULL DEFAULT '0', @@ -998,6 +1005,7 @@ CREATE TABLE IF NOT EXISTS `rodex_items` ( `equip` INT UNSIGNED NOT NULL DEFAULT '0', `identify` SMALLINT NOT NULL DEFAULT '0', `refine` TINYINT UNSIGNED NOT NULL DEFAULT '0', + `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0', `attribute` TINYINT NOT NULL DEFAULT '0', `card0` INT NOT NULL DEFAULT '0', `card1` INT NOT NULL DEFAULT '0', diff --git a/sql-files/upgrades/2021-10-21--18-49.sql b/sql-files/upgrades/2021-10-21--18-49.sql new file mode 100644 index 00000000000..920b7d4907e --- /dev/null +++ b/sql-files/upgrades/2021-10-21--18-49.sql @@ -0,0 +1,44 @@ +#1634838524 +-- This file is part of Hercules. +-- http://herc.ws - http://github.com/HerculesWS/Hercules +-- +-- Copyright (C) 2021 Hercules Dev Team +-- +-- Hercules is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . + +ALTER TABLE `auction` + ADD COLUMN `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0' AFTER `refine`; + +ALTER TABLE `cart_inventory` + ADD COLUMN `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0' AFTER `refine`; + +ALTER TABLE `guild_storage` + ADD COLUMN `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0' AFTER `refine`; + +ALTER TABLE `inventory` + ADD COLUMN `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0' AFTER `refine`; + +ALTER TABLE `mail` + ADD COLUMN `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0' AFTER `refine`; + +ALTER TABLE `storage` + ADD COLUMN `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0' AFTER `refine`; + +ALTER TABLE `rodex_items` + ADD COLUMN `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0' AFTER `refine`; + +ALTER TABLE `picklog` + ADD COLUMN `grade` TINYINT UNSIGNED NOT NULL DEFAULT '0' AFTER `refine`; + +INSERT INTO `sql_updates` (`timestamp`, `ignored`) VALUES (1634838524 , 'No'); diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt index 5f57c6b17cd..4ddc759b08f 100644 --- a/sql-files/upgrades/index.txt +++ b/sql-files/upgrades/index.txt @@ -67,3 +67,4 @@ 2020-08-15--13-00.sql 2021-05-03--10-19.sql 2021-08-04--23-56.sql +2021-10-21--18-49.sql diff --git a/src/char/char.c b/src/char/char.c index 78370902f6b..154961e3b98 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -775,7 +775,7 @@ static int char_getitemdata_from_sql(struct item *items, int max, int guid, enum } StrBuf->Init(&buf); - StrBuf->AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`"); + StrBuf->AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `grade`, `attribute`, `expire_time`, `bound`, `unique_id`"); for(i = 0; i < MAX_SLOTS; i++) StrBuf->Printf(&buf, ", `card%d`", i); for(i = 0; i < MAX_ITEM_OPTIONS; i++) @@ -800,27 +800,28 @@ static int char_getitemdata_from_sql(struct item *items, int max, int guid, enum || SQL_ERROR == SQL->StmtBindColumn(stmt, 3, SQLDT_UINT, &item.equip, sizeof item.equip, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 4, SQLDT_CHAR, &item.identify, sizeof item.identify, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt, 5, SQLDT_CHAR, &item.refine, sizeof item.refine, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_CHAR, &item.attribute, sizeof item.attribute, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &item.expire_time, sizeof item.expire_time, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_UCHAR, &item.bound, sizeof item.bound, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_UINT64, &item.unique_id, sizeof item.unique_id, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 6, SQLDT_CHAR, &item.grade, sizeof item.grade, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 7, SQLDT_CHAR, &item.attribute, sizeof item.attribute, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 8, SQLDT_UINT, &item.expire_time, sizeof item.expire_time, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 9, SQLDT_UCHAR, &item.bound, sizeof item.bound, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 10, SQLDT_UINT64, &item.unique_id, sizeof item.unique_id, NULL, NULL) ) { SqlStmt_ShowDebug(stmt); } for (i = 0; i < MAX_SLOTS; i++) { - if (SQL_ERROR == SQL->StmtBindColumn(stmt, 10 + i, SQLDT_INT, &item.card[i], sizeof item.card[i], NULL, NULL)) + if (SQL_ERROR == SQL->StmtBindColumn(stmt, 11 + i, SQLDT_INT, &item.card[i], sizeof item.card[i], NULL, NULL)) SqlStmt_ShowDebug(stmt); } for (i = 0; i < MAX_ITEM_OPTIONS; i++) { - if (SQL_ERROR == SQL->StmtBindColumn(stmt, 10 + MAX_SLOTS + i * 2, SQLDT_INT16, &item.option[i].index, sizeof item.option[i].index, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt, 11 + MAX_SLOTS + i * 2, SQLDT_INT16, &item.option[i].value, sizeof item.option[i].index, NULL, NULL)) + if (SQL_ERROR == SQL->StmtBindColumn(stmt, 11 + MAX_SLOTS + i * 2, SQLDT_INT16, &item.option[i].index, sizeof item.option[i].index, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt, 12 + MAX_SLOTS + i * 2, SQLDT_INT16, &item.option[i].value, sizeof item.option[i].index, NULL, NULL)) SqlStmt_ShowDebug(stmt); } if (has_favorite) { - if (SQL_ERROR == SQL->StmtBindColumn(stmt, 10 + MAX_SLOTS + MAX_ITEM_OPTIONS * 2, SQLDT_CHAR, &item.favorite, sizeof item.favorite, NULL, NULL)) + if (SQL_ERROR == SQL->StmtBindColumn(stmt, 11 + MAX_SLOTS + MAX_ITEM_OPTIONS * 2, SQLDT_CHAR, &item.favorite, sizeof item.favorite, NULL, NULL)) SqlStmt_ShowDebug(stmt); } @@ -916,7 +917,7 @@ static int char_memitemdata_to_sql(const struct item *p_items, int current_size, if (memcmp(cp_it, &p_items[j], sizeof(struct item)) != 0) { if (total_updates == 0) { StrBuf->Clear(&buf); - StrBuf->Printf(&buf, "REPLACE INTO `%s` (`id`, `%s`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`", tablename, selectoption); + StrBuf->Printf(&buf, "REPLACE INTO `%s` (`id`, `%s`, `nameid`, `amount`, `equip`, `identify`, `refine`, `grade`, `attribute`", tablename, selectoption); for (int k = 0; k < MAX_SLOTS; k++) StrBuf->Printf(&buf, ", `card%d`", k); for (int k = 0; k < MAX_ITEM_OPTIONS; k++) @@ -929,8 +930,8 @@ static int char_memitemdata_to_sql(const struct item *p_items, int current_size, } - StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%d', '%u', '%d', '%d', '%d'", - total_updates > 0 ? ", " : "", cp_it->id, guid, p_items[j].nameid, p_items[j].amount, p_items[j].equip, p_items[j].identify, p_items[j].refine, p_items[j].attribute); + StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%d', '%u', '%d', '%d', '%d', '%d'", + total_updates > 0 ? ", " : "", cp_it->id, guid, p_items[j].nameid, p_items[j].amount, p_items[j].equip, p_items[j].identify, p_items[j].refine, p_items[j].grade, p_items[j].attribute); for (int k = 0; k < MAX_SLOTS; k++) StrBuf->Printf(&buf, ", '%d'", p_items[j].card[k]); for (int k = 0; k < MAX_ITEM_OPTIONS; ++k) @@ -980,7 +981,7 @@ static int char_memitemdata_to_sql(const struct item *p_items, int current_size, if (total_inserts == 0) { StrBuf->Clear(&buf); - StrBuf->Printf(&buf, "INSERT INTO `%s` (`%s`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`", tablename, selectoption); + StrBuf->Printf(&buf, "INSERT INTO `%s` (`%s`, `nameid`, `amount`, `equip`, `identify`, `refine`, `grade`, `attribute`, `expire_time`, `bound`, `unique_id`", tablename, selectoption); for (int j = 0; j < MAX_SLOTS; ++j) StrBuf->Printf(&buf, ", `card%d`", j); for (int j = 0; j < MAX_ITEM_OPTIONS; ++j) @@ -990,8 +991,8 @@ static int char_memitemdata_to_sql(const struct item *p_items, int current_size, StrBuf->AppendStr(&buf, ") VALUES "); } - StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%"PRIu64"'", - total_inserts > 0 ? ", " : "", guid, p_it->nameid, p_it->amount, p_it->equip, p_it->identify, p_it->refine, + StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%u', '%d', '%d', '%d', '%d', '%u', '%d', '%"PRIu64"'", + total_inserts > 0 ? ", " : "", guid, p_it->nameid, p_it->amount, p_it->equip, p_it->identify, p_it->refine, p_it->grade, p_it->attribute, p_it->expire_time, p_it->bound, p_it->unique_id); for (int j = 0; j < MAX_SLOTS; ++j) diff --git a/src/char/int_auction.c b/src/char/int_auction.c index 5f0c21d1fe1..4a2e9a1b32b 100644 --- a/src/char/int_auction.c +++ b/src/char/int_auction.c @@ -69,8 +69,8 @@ static void inter_auction_save(struct auction_data *auction) return; StrBuf->Init(&buf); - StrBuf->Printf(&buf, "UPDATE `%s` SET `seller_id` = '%d', `seller_name` = ?, `buyer_id` = '%d', `buyer_name` = ?, `price` = '%d', `buynow` = '%d', `hours` = '%d', `timestamp` = '%lu', `nameid` = '%d', `item_name` = ?, `type` = '%d', `refine` = '%d', `attribute` = '%d'", - auction_db, auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute); + StrBuf->Printf(&buf, "UPDATE `%s` SET `seller_id` = '%d', `seller_name` = ?, `buyer_id` = '%d', `buyer_name` = ?, `price` = '%d', `buynow` = '%d', `hours` = '%d', `timestamp` = '%lu', `nameid` = '%d', `item_name` = ?, `type` = '%d', `refine` = '%d', `grade` = '%d', `attribute` = '%d'", + auction_db, auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.grade, auction->item.attribute); for (j = 0; j < MAX_SLOTS; j++) StrBuf->Printf(&buf, ", `card%d` = '%d'", j, auction->item.card[j]); for (j = 0; j < MAX_ITEM_OPTIONS; j++) @@ -102,13 +102,13 @@ static unsigned int inter_auction_create(struct auction_data *auction) auction->timestamp = time(NULL) + (auction->hours * 3600); StrBuf->Init(&buf); - StrBuf->Printf(&buf, "INSERT INTO `%s` (`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`", auction_db); + StrBuf->Printf(&buf, "INSERT INTO `%s` (`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`grade`,`attribute`,`unique_id`", auction_db); for (j = 0; j < MAX_SLOTS; j++) StrBuf->Printf(&buf, ",`card%d`", j); for (j = 0; j < MAX_ITEM_OPTIONS; j++) StrBuf->Printf(&buf, ", `opt_idx%d`, `opt_val%d`", j, j); - StrBuf->Printf(&buf, ") VALUES ('%d',?,'%d',?,'%d','%d','%d','%lu','%d',?,'%d','%d','%d','%"PRIu64"'", - auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute, auction->item.unique_id); + StrBuf->Printf(&buf, ") VALUES ('%d',?,'%d',?,'%d','%d','%d','%lu','%d',?,'%d','%d','%d','%d','%"PRIu64"'", + auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.grade, auction->item.attribute, auction->item.unique_id); for (j = 0; j < MAX_SLOTS; j++) StrBuf->Printf(&buf, ",'%d'", auction->item.card[j]); for (j = 0; j < MAX_ITEM_OPTIONS; j++) @@ -198,7 +198,7 @@ static void inter_auctions_fromsql(void) StrBuf->Init(&buf); StrBuf->AppendStr(&buf, "SELECT `auction_id`,`seller_id`,`seller_name`,`buyer_id`,`buyer_name`," - "`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`"); + "`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`grade`,`attribute`,`unique_id`"); for (i = 0; i < MAX_SLOTS; i++) StrBuf->Printf(&buf, ",`card%d`", i); for (i = 0; i < MAX_ITEM_OPTIONS; i++) @@ -229,22 +229,23 @@ static void inter_auctions_fromsql(void) SQL->GetData(inter->sql_handle,11, &data, NULL); auction->type = atoi(data); SQL->GetData(inter->sql_handle,12, &data, NULL); item->refine = atoi(data); - SQL->GetData(inter->sql_handle,13, &data, NULL); item->attribute = atoi(data); - SQL->GetData(inter->sql_handle,14, &data, NULL); item->unique_id = strtoull(data, NULL, 10); + SQL->GetData(inter->sql_handle,13, &data, NULL); item->grade = atoi(data); + SQL->GetData(inter->sql_handle,14, &data, NULL); item->attribute = atoi(data); + SQL->GetData(inter->sql_handle,15, &data, NULL); item->unique_id = strtoull(data, NULL, 10); item->identify = 1; item->amount = 1; item->expire_time = 0; /* Card Slots */ for (i = 0; i < MAX_SLOTS; i++) { - SQL->GetData(inter->sql_handle, 15 + i, &data, NULL); + SQL->GetData(inter->sql_handle, 16 + i, &data, NULL); item->card[i] = atoi(data); } /* Item Options */ for (i = 0; i < MAX_ITEM_OPTIONS; i++) { - SQL->GetData(inter->sql_handle, 15 + MAX_SLOTS + i * 2, &data, NULL); - item->option[i].index = atoi(data); SQL->GetData(inter->sql_handle, 16 + MAX_SLOTS + i * 2, &data, NULL); + item->option[i].index = atoi(data); + SQL->GetData(inter->sql_handle, 17 + MAX_SLOTS + i * 2, &data, NULL); item->option[i].value = atoi(data); } diff --git a/src/char/int_mail.c b/src/char/int_mail.c index 99e31f48719..241177bcec3 100644 --- a/src/char/int_mail.c +++ b/src/char/int_mail.c @@ -54,7 +54,7 @@ static int inter_mail_fromsql(int char_id, struct mail_data *md) StrBuf->Init(&buf); StrBuf->AppendStr(&buf, "SELECT `id`,`send_name`,`send_id`,`dest_name`,`dest_id`,`title`,`message`,`time`,`status`," - "`zeny`,`amount`,`nameid`,`refine`,`attribute`,`identify`,`unique_id`"); + "`zeny`,`amount`,`nameid`,`refine`,`grade`,`attribute`,`identify`,`unique_id`"); for (i = 0; i < MAX_SLOTS; i++) StrBuf->Printf(&buf, ",`card%d`", i); for (i = 0; i < MAX_ITEM_OPTIONS; i++) @@ -87,21 +87,22 @@ static int inter_mail_fromsql(int char_id, struct mail_data *md) SQL->GetData(inter->sql_handle,10, &data, NULL); item->amount = (short)atoi(data); SQL->GetData(inter->sql_handle,11, &data, NULL); item->nameid = atoi(data); SQL->GetData(inter->sql_handle,12, &data, NULL); item->refine = atoi(data); - SQL->GetData(inter->sql_handle,13, &data, NULL); item->attribute = atoi(data); - SQL->GetData(inter->sql_handle,14, &data, NULL); item->identify = atoi(data); - SQL->GetData(inter->sql_handle,15, &data, NULL); item->unique_id = strtoull(data, NULL, 10); + SQL->GetData(inter->sql_handle,13, &data, NULL); item->grade = atoi(data); + SQL->GetData(inter->sql_handle,14, &data, NULL); item->attribute = atoi(data); + SQL->GetData(inter->sql_handle,15, &data, NULL); item->identify = atoi(data); + SQL->GetData(inter->sql_handle,16, &data, NULL); item->unique_id = strtoull(data, NULL, 10); item->expire_time = 0; item->bound = 0; /* Card Slots */ for (j = 0; j < MAX_SLOTS; j++) { - SQL->GetData(inter->sql_handle, 16 + j, &data, NULL); + SQL->GetData(inter->sql_handle, 17 + j, &data, NULL); item->card[j] = atoi(data); } /* Item Options */ for (j = 0; j < MAX_ITEM_OPTIONS; j++) { - SQL->GetData(inter->sql_handle, 16 + MAX_SLOTS + j * 2, &data, NULL); - item->option[j].index = atoi(data); SQL->GetData(inter->sql_handle, 17 + MAX_SLOTS + j * 2, &data, NULL); + item->option[j].index = atoi(data); + SQL->GetData(inter->sql_handle, 18 + MAX_SLOTS + j * 2, &data, NULL); item->option[j].value = atoi(data); } } @@ -143,7 +144,7 @@ static int inter_mail_savemessage(struct mail_message *msg) nullpo_ret(msg); // build message save query StrBuf->Init(&buf); - StrBuf->Printf(&buf, "INSERT INTO `%s` (`send_name`, `send_id`, `dest_name`, `dest_id`, `title`, `message`, `time`, `status`, `zeny`, `amount`, `nameid`, `refine`, `attribute`, `identify`, `unique_id`", mail_db); + StrBuf->Printf(&buf, "INSERT INTO `%s` (`send_name`, `send_id`, `dest_name`, `dest_id`, `title`, `message`, `time`, `status`, `zeny`, `amount`, `nameid`, `refine`, `grade`, `attribute`, `identify`, `unique_id`", mail_db); for (j = 0; j < MAX_SLOTS; j++) StrBuf->Printf(&buf, ", `card%d`", j); for (j = 0; j < MAX_ITEM_OPTIONS; j++) @@ -188,7 +189,7 @@ static bool inter_mail_loadmessage(int mail_id, struct mail_message *msg) StrBuf->Init(&buf); StrBuf->AppendStr(&buf, "SELECT `id`,`send_name`,`send_id`,`dest_name`,`dest_id`,`title`,`message`,`time`,`status`," - "`zeny`,`amount`,`nameid`,`refine`,`attribute`,`identify`,`unique_id`"); + "`zeny`,`amount`,`nameid`,`refine`,`grade`,`attribute`,`identify`,`unique_id`"); for (j = 0; j < MAX_SLOTS; j++) StrBuf->Printf(&buf, ",`card%d`", j); for (j = 0; j < MAX_ITEM_OPTIONS; j++) @@ -217,21 +218,22 @@ static bool inter_mail_loadmessage(int mail_id, struct mail_message *msg) SQL->GetData(inter->sql_handle,10, &data, NULL); msg->item.amount = (short)atoi(data); SQL->GetData(inter->sql_handle,11, &data, NULL); msg->item.nameid = atoi(data); SQL->GetData(inter->sql_handle,12, &data, NULL); msg->item.refine = atoi(data); - SQL->GetData(inter->sql_handle,13, &data, NULL); msg->item.attribute = atoi(data); - SQL->GetData(inter->sql_handle,14, &data, NULL); msg->item.identify = atoi(data); - SQL->GetData(inter->sql_handle,15, &data, NULL); msg->item.unique_id = strtoull(data, NULL, 10); + SQL->GetData(inter->sql_handle,13, &data, NULL); msg->item.grade = atoi(data); + SQL->GetData(inter->sql_handle,14, &data, NULL); msg->item.attribute = atoi(data); + SQL->GetData(inter->sql_handle,15, &data, NULL); msg->item.identify = atoi(data); + SQL->GetData(inter->sql_handle,16, &data, NULL); msg->item.unique_id = strtoull(data, NULL, 10); msg->item.expire_time = 0; msg->item.bound = 0; /* Card Slots */ for (j = 0; j < MAX_SLOTS; j++) { - SQL->GetData(inter->sql_handle,16 + j, &data, NULL); + SQL->GetData(inter->sql_handle,17 + j, &data, NULL); msg->item.card[j] = atoi(data); } /* Item Options */ for (j = 0 ; j < MAX_ITEM_OPTIONS; j++) { - SQL->GetData(inter->sql_handle, 16 + MAX_SLOTS + j * 2, &data, NULL); - msg->item.option[j].index = atoi(data); SQL->GetData(inter->sql_handle, 17 + MAX_SLOTS + j * 2, &data, NULL); + msg->item.option[j].index = atoi(data); + SQL->GetData(inter->sql_handle, 18 + MAX_SLOTS + j * 2, &data, NULL); msg->item.option[j].value = atoi(data); } } @@ -263,7 +265,7 @@ static bool inter_mail_DeleteAttach(int mail_id) int i; StrBuf->Init(&buf); - StrBuf->Printf(&buf, "UPDATE `%s` SET `zeny` = '0', `nameid` = '0', `amount` = '0', `refine` = '0', `attribute` = '0', `identify` = '0'", mail_db); + StrBuf->Printf(&buf, "UPDATE `%s` SET `zeny` = '0', `nameid` = '0', `amount` = '0', `refine` = '0', `grade` = '0', `attribute` = '0', `identify` = '0'", mail_db); for (i = 0; i < MAX_SLOTS; i++) StrBuf->Printf(&buf, ", `card%d` = '0'", i); for (i = 0; i < MAX_ITEM_OPTIONS; i++) diff --git a/src/char/int_rodex.c b/src/char/int_rodex.c index 938cde3ef74..5faf0403b7b 100644 --- a/src/char/int_rodex.c +++ b/src/char/int_rodex.c @@ -144,7 +144,7 @@ static int inter_rodex_fromsql(int char_id, int account_id, int8 opentype, int64 StrBuf->Init(&buf); - StrBuf->AppendStr(&buf, "SELECT `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`"); + StrBuf->AppendStr(&buf, "SELECT `nameid`, `amount`, `equip`, `identify`, `refine`, `grade`, `attribute`, `expire_time`, `bound`, `unique_id`"); for (i = 0; i < MAX_SLOTS; i++) { StrBuf->Printf(&buf, ", `card%d`", i); } @@ -169,20 +169,21 @@ static int inter_rodex_fromsql(int char_id, int account_id, int8 opentype, int64 || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 2, SQLDT_UINT, &it.equip, sizeof it.equip, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 3, SQLDT_CHAR, &it.identify, sizeof it.identify, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 4, SQLDT_CHAR, &it.refine, sizeof it.refine, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 5, SQLDT_CHAR, &it.attribute, sizeof it.attribute, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 6, SQLDT_UINT, &it.expire_time, sizeof it.expire_time, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 7, SQLDT_UCHAR, &it.bound, sizeof it.bound, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 8, SQLDT_UINT64, &it.unique_id, sizeof it.unique_id, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 5, SQLDT_CHAR, &it.grade, sizeof it.grade, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 6, SQLDT_CHAR, &it.attribute, sizeof it.attribute, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 7, SQLDT_UINT, &it.expire_time, sizeof it.expire_time, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 8, SQLDT_UCHAR, &it.bound, sizeof it.bound, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 9, SQLDT_UINT64, &it.unique_id, sizeof it.unique_id, NULL, NULL) ) { SqlStmt_ShowDebug(stmt_items); } for (i = 0; i < MAX_SLOTS; i++) { - if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 9 + i, SQLDT_INT, &it.card[i], sizeof it.card[i], NULL, NULL)) + if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 10 + i, SQLDT_INT, &it.card[i], sizeof it.card[i], NULL, NULL)) SqlStmt_ShowDebug(stmt_items); } for (i = 0; i < MAX_ITEM_OPTIONS; i++) { - if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 9 + MAX_SLOTS + i * 2, SQLDT_INT16, &it.option[i].index, sizeof it.option[i].index, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 10 + MAX_SLOTS + i * 2, SQLDT_INT16, &it.option[i].value, sizeof it.option[i].value, NULL, NULL) + if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 10 + MAX_SLOTS + i * 2, SQLDT_INT16, &it.option[i].index, sizeof it.option[i].index, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 11 + MAX_SLOTS + i * 2, SQLDT_INT16, &it.option[i].value, sizeof it.option[i].value, NULL, NULL) ) { SqlStmt_ShowDebug(stmt_items); } @@ -331,10 +332,10 @@ static int64 inter_rodex_savemessage(struct rodex_message *msg) continue; if (SQL_ERROR == SQL->Query(inter->sql_handle, "INSERT INTO `%s` (`mail_id`, `nameid`, `amount`, `equip`, `identify`," - "`refine`, `attribute`, `card0`, `card1`, `card2`, `card3`, `opt_idx0`, `opt_val0`, `opt_idx1`, `opt_val1`, `opt_idx2`," + "`refine`, `grade`, `attribute`, `card0`, `card1`, `card2`, `card3`, `opt_idx0`, `opt_val0`, `opt_idx1`, `opt_val1`, `opt_idx2`," "`opt_val2`, `opt_idx3`, `opt_val3`, `opt_idx4`, `opt_val4`,`expire_time`, `bound`, `unique_id`) VALUES " - "('%"PRId64"', '%d', '%d', '%u', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%u', '%u', '%"PRIu64"')", - rodex_item_db, msg->id, it->nameid, it->amount, it->equip, it->identify, it->refine, it->attribute, it->card[0], it->card[1], it->card[2], it->card[3], + "('%"PRId64"', '%d', '%d', '%u', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%u', '%u', '%"PRIu64"')", + rodex_item_db, msg->id, it->nameid, it->amount, it->equip, it->identify, it->refine, it->grade, it->attribute, it->card[0], it->card[1], it->card[2], it->card[3], it->option[0].index, it->option[0].value, it->option[1].index, it->option[1].value, it->option[2].index, it->option[2].value, it->option[3].index, it->option[3].value, it->option[4].index, it->option[4].value, it->expire_time, it->bound, it->unique_id) ) { @@ -404,7 +405,7 @@ static int inter_rodex_getitems(int64 mail_id, struct rodex_item *items) StringBuf buf; StrBuf->Init(&buf); - StrBuf->AppendStr(&buf, "SELECT `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`"); + StrBuf->AppendStr(&buf, "SELECT `nameid`, `amount`, `equip`, `identify`, `refine`, `grade`, `attribute`, `expire_time`, `bound`, `unique_id`"); for (int i = 0; i < MAX_SLOTS; i++) { StrBuf->Printf(&buf, ", `card%d`", i); } @@ -427,20 +428,21 @@ static int inter_rodex_getitems(int64 mail_id, struct rodex_item *items) || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 2, SQLDT_UINT, &it.equip, sizeof it.equip, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 3, SQLDT_CHAR, &it.identify, sizeof it.identify, NULL, NULL) || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 4, SQLDT_CHAR, &it.refine, sizeof it.refine, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 5, SQLDT_CHAR, &it.attribute, sizeof it.attribute, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 6, SQLDT_UINT, &it.expire_time, sizeof it.expire_time, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 7, SQLDT_UCHAR, &it.bound, sizeof it.bound, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 8, SQLDT_UINT64, &it.unique_id, sizeof it.unique_id, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 5, SQLDT_CHAR, &it.grade, sizeof it.grade, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 6, SQLDT_CHAR, &it.attribute, sizeof it.attribute, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 7, SQLDT_UINT, &it.expire_time, sizeof it.expire_time, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 8, SQLDT_UCHAR, &it.bound, sizeof it.bound, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 9, SQLDT_UINT64, &it.unique_id, sizeof it.unique_id, NULL, NULL) ) { SqlStmt_ShowDebug(stmt_items); } for (int i = 0; i < MAX_SLOTS; i++) { - if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 9 + i, SQLDT_INT, &it.card[i], sizeof it.card[i], NULL, NULL)) + if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 10 + i, SQLDT_INT, &it.card[i], sizeof it.card[i], NULL, NULL)) SqlStmt_ShowDebug(stmt_items); } for (int i = 0; i < MAX_ITEM_OPTIONS; i++) { - if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 9 + MAX_SLOTS + i * 2, SQLDT_INT16, &it.option[i].index, sizeof it.option[i].index, NULL, NULL) - || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 10 + MAX_SLOTS + i * 2, SQLDT_INT16, &it.option[i].value, sizeof it.option[i].value, NULL, NULL) + if (SQL_ERROR == SQL->StmtBindColumn(stmt_items, 10 + MAX_SLOTS + i * 2, SQLDT_INT16, &it.option[i].index, sizeof it.option[i].index, NULL, NULL) + || SQL_ERROR == SQL->StmtBindColumn(stmt_items, 11 + MAX_SLOTS + i * 2, SQLDT_INT16, &it.option[i].value, sizeof it.option[i].value, NULL, NULL) ) { SqlStmt_ShowDebug(stmt_items); } diff --git a/src/char/int_storage.c b/src/char/int_storage.c index d75d5bd5bf5..4aff6d6deb4 100644 --- a/src/char/int_storage.c +++ b/src/char/int_storage.c @@ -78,7 +78,7 @@ static int inter_storage_tosql(int account_id, const struct storage_data *p) int k = 0; if (memcmp(cp_it, p_it, sizeof(struct item)) != 0) { if (total_updates == 0) { - StrBuf->Printf(&buf, "REPLACE INTO `%s` (`id`, `account_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`", storage_db); + StrBuf->Printf(&buf, "REPLACE INTO `%s` (`id`, `account_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `grade`, `attribute`", storage_db); for (k = 0; k < MAX_SLOTS; k++) StrBuf->Printf(&buf, ", `card%d`", k); for (k = 0; k < MAX_ITEM_OPTIONS; k++) @@ -86,8 +86,8 @@ static int inter_storage_tosql(int account_id, const struct storage_data *p) StrBuf->AppendStr(&buf, ", `expire_time`, `bound`, `unique_id`) VALUES"); } - StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%d', '%u', '%d', '%d', '%d'", - total_updates > 0 ? ", " : "", cp_it->id, account_id, p_it->nameid, p_it->amount, p_it->equip, p_it->identify, p_it->refine, p_it->attribute); + StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%d', '%u', '%d', '%d', '%d', '%d'", + total_updates > 0 ? ", " : "", cp_it->id, account_id, p_it->nameid, p_it->amount, p_it->equip, p_it->identify, p_it->refine, p_it->grade, p_it->attribute); for (k = 0; k < MAX_SLOTS; k++) StrBuf->Printf(&buf, ", '%d'", p_it->card[k]); for (k = 0; k < MAX_ITEM_OPTIONS; ++k) @@ -133,7 +133,7 @@ static int inter_storage_tosql(int account_id, const struct storage_data *p) // Store the remaining items. if (total_inserts == 0) { StrBuf->Clear(&buf); - StrBuf->Printf(&buf, "INSERT INTO `%s` (`account_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`", storage_db); + StrBuf->Printf(&buf, "INSERT INTO `%s` (`account_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `grade`, `attribute`, `expire_time`, `bound`, `unique_id`", storage_db); for (j = 0; j < MAX_SLOTS; ++j) StrBuf->Printf(&buf, ", `card%d`", j); for (j = 0; j < MAX_ITEM_OPTIONS; ++j) @@ -141,8 +141,8 @@ static int inter_storage_tosql(int account_id, const struct storage_data *p) StrBuf->AppendStr(&buf, ") VALUES "); } - StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%"PRIu64"'", - total_inserts > 0 ? ", " : "", account_id, p_it->nameid, p_it->amount, p_it->equip, p_it->identify, p_it->refine, + StrBuf->Printf(&buf, "%s('%d', '%d', '%d', '%u', '%d', '%d', '%d', '%d', '%u', '%d', '%"PRIu64"'", + total_inserts > 0 ? ", " : "", account_id, p_it->nameid, p_it->amount, p_it->equip, p_it->identify, p_it->refine, p_it->grade, p_it->attribute, p_it->expire_time, p_it->bound, p_it->unique_id); for (j = 0; j < MAX_SLOTS; ++j) StrBuf->Printf(&buf, ", '%d'", p_it->card[j]); @@ -178,9 +178,9 @@ static int inter_storage_fromsql(int account_id, struct storage_data *p) if (VECTOR_LENGTH(p->item) > 0) VECTOR_CLEAR(p->item); - // storage {`account_id`/`id`/`nameid`/`amount`/`equip`/`identify`/`refine`/`attribute`/`card0`/`card1`/`card2`/`card3`} + // storage {`account_id`/`id`/`nameid`/`amount`/`equip`/`identify`/`refine`/`grade`/`attribute`/`card0`/`card1`/`card2`/`card3`} StrBuf->Init(&buf); - StrBuf->AppendStr(&buf, "SELECT `id`,`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`expire_time`,`bound`,`unique_id`"); + StrBuf->AppendStr(&buf, "SELECT `id`,`nameid`,`amount`,`equip`,`identify`,`refine`,`grade`,`attribute`,`expire_time`,`bound`,`unique_id`"); for (j = 0; j < MAX_SLOTS; ++j) StrBuf->Printf(&buf, ",`card%d`", j); for (j = 0; j < MAX_ITEM_OPTIONS; ++j) @@ -204,22 +204,23 @@ static int inter_storage_fromsql(int account_id, struct storage_data *p) SQL->GetData(inter->sql_handle, 3, &data, NULL); item.equip = atoi(data); SQL->GetData(inter->sql_handle, 4, &data, NULL); item.identify = atoi(data); SQL->GetData(inter->sql_handle, 5, &data, NULL); item.refine = atoi(data); - SQL->GetData(inter->sql_handle, 6, &data, NULL); item.attribute = atoi(data); - SQL->GetData(inter->sql_handle, 7, &data, NULL); item.expire_time = (unsigned int)atoi(data); - SQL->GetData(inter->sql_handle, 8, &data, NULL); item.bound = atoi(data); - SQL->GetData(inter->sql_handle, 9, &data, NULL); item.unique_id = strtoull(data, NULL, 10); + SQL->GetData(inter->sql_handle, 6, &data, NULL); item.grade = atoi(data); + SQL->GetData(inter->sql_handle, 7, &data, NULL); item.attribute = atoi(data); + SQL->GetData(inter->sql_handle, 8, &data, NULL); item.expire_time = (unsigned int)atoi(data); + SQL->GetData(inter->sql_handle, 9, &data, NULL); item.bound = atoi(data); + SQL->GetData(inter->sql_handle, 10, &data, NULL); item.unique_id = strtoull(data, NULL, 10); /* Card Slots */ for (j = 0; j < MAX_SLOTS; ++j) { - SQL->GetData(inter->sql_handle, 10 + j, &data, NULL); + SQL->GetData(inter->sql_handle, 11 + j, &data, NULL); item.card[j] = atoi(data); } /* Item Options */ for (j = 0; j < MAX_ITEM_OPTIONS; ++j) { - SQL->GetData(inter->sql_handle, 10 + MAX_SLOTS + j * 2, &data, NULL); - item.option[j].index = atoi(data); SQL->GetData(inter->sql_handle, 11 + MAX_SLOTS + j * 2, &data, NULL); + item.option[j].index = atoi(data); + SQL->GetData(inter->sql_handle, 12 + MAX_SLOTS + j * 2, &data, NULL); item.option[j].value = atoi(data); } @@ -299,9 +300,9 @@ static int inter_storage_guild_storage_fromsql(int guild_id, struct guild_storag } SQL->FreeResult(inter->sql_handle); - // storage {`guild_id`/`id`/`nameid`/`amount`/`equip`/`identify`/`refine`/`attribute`/`card0`/`card1`/`card2`/`card3`} + // storage {`guild_id`/`id`/`nameid`/`amount`/`equip`/`identify`/`refine`/`grade`/`attribute`/`card0`/`card1`/`card2`/`card3`} StrBuf->Init(&buf); - StrBuf->AppendStr(&buf, "SELECT `id`,`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`bound`,`unique_id`"); + StrBuf->AppendStr(&buf, "SELECT `id`,`nameid`,`amount`,`equip`,`identify`,`refine`,`grade`,`attribute`,`bound`,`unique_id`"); for (j = 0; j < MAX_SLOTS; ++j) StrBuf->Printf(&buf, ",`card%d`", j); for (j = 0; j < MAX_ITEM_OPTIONS; ++j) @@ -326,20 +327,21 @@ static int inter_storage_guild_storage_fromsql(int guild_id, struct guild_storag SQL->GetData(inter->sql_handle, 3, &data, NULL); item->equip = atoi(data); SQL->GetData(inter->sql_handle, 4, &data, NULL); item->identify = atoi(data); SQL->GetData(inter->sql_handle, 5, &data, NULL); item->refine = atoi(data); - SQL->GetData(inter->sql_handle, 6, &data, NULL); item->attribute = atoi(data); - SQL->GetData(inter->sql_handle, 7, &data, NULL); item->bound = atoi(data); - SQL->GetData(inter->sql_handle, 8, &data, NULL); item->unique_id = strtoull(data, NULL, 10); + SQL->GetData(inter->sql_handle, 6, &data, NULL); item->grade = atoi(data); + SQL->GetData(inter->sql_handle, 7, &data, NULL); item->attribute = atoi(data); + SQL->GetData(inter->sql_handle, 8, &data, NULL); item->bound = atoi(data); + SQL->GetData(inter->sql_handle, 9, &data, NULL); item->unique_id = strtoull(data, NULL, 10); item->expire_time = 0; /* Card Slots */ for (j = 0; j < MAX_SLOTS; ++j) { - SQL->GetData(inter->sql_handle, 9 + j, &data, NULL); + SQL->GetData(inter->sql_handle, 10 + j, &data, NULL); item->card[j] = atoi(data); } /* Item Options */ for (j = 0; j < MAX_ITEM_OPTIONS; ++j) { - SQL->GetData(inter->sql_handle, 9 + MAX_SLOTS + j * 2, &data, NULL); - item->option[j].index = atoi(data); SQL->GetData(inter->sql_handle, 10 + MAX_SLOTS + j * 2, &data, NULL); + item->option[j].index = atoi(data); + SQL->GetData(inter->sql_handle, 11 + MAX_SLOTS + j * 2, &data, NULL); item->option[j].value = atoi(data); } } @@ -403,7 +405,7 @@ static bool inter_storage_retrieve_bound_items(int char_id, int account_id, int unsigned int bound_item[MAX_INVENTORY] = {0}; StrBuf->Init(&buf); - StrBuf->AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`"); + StrBuf->AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `grade`, `attribute`, `expire_time`, `bound`, `unique_id`"); for (j = 0; j < MAX_SLOTS; ++j) StrBuf->Printf(&buf, ", `card%d`", j); for (j = 0; j < MAX_ITEM_OPTIONS; ++j) @@ -427,17 +429,18 @@ static bool inter_storage_retrieve_bound_items(int char_id, int account_id, int SQL->StmtBindColumn(stmt, 3, SQLDT_UINT, &item.equip, sizeof item.equip, NULL, NULL); SQL->StmtBindColumn(stmt, 4, SQLDT_CHAR, &item.identify, sizeof item.identify, NULL, NULL); SQL->StmtBindColumn(stmt, 5, SQLDT_CHAR, &item.refine, sizeof item.refine, NULL, NULL); - SQL->StmtBindColumn(stmt, 6, SQLDT_CHAR, &item.attribute, sizeof item.attribute, NULL, NULL); - SQL->StmtBindColumn(stmt, 7, SQLDT_UINT, &item.expire_time, sizeof item.expire_time, NULL, NULL); - SQL->StmtBindColumn(stmt, 8, SQLDT_UCHAR, &item.bound, sizeof item.bound, NULL, NULL); - SQL->StmtBindColumn(stmt, 9, SQLDT_UINT64, &item.unique_id, sizeof item.unique_id, NULL, NULL); + SQL->StmtBindColumn(stmt, 6, SQLDT_CHAR, &item.grade, sizeof item.grade, NULL, NULL); + SQL->StmtBindColumn(stmt, 7, SQLDT_CHAR, &item.attribute, sizeof item.attribute, NULL, NULL); + SQL->StmtBindColumn(stmt, 8, SQLDT_UINT, &item.expire_time, sizeof item.expire_time, NULL, NULL); + SQL->StmtBindColumn(stmt, 9, SQLDT_UCHAR, &item.bound, sizeof item.bound, NULL, NULL); + SQL->StmtBindColumn(stmt, 10, SQLDT_UINT64, &item.unique_id, sizeof item.unique_id, NULL, NULL); /* Card Slots */ for (j = 0; j < MAX_SLOTS; ++j) - SQL->StmtBindColumn(stmt, 10 + j, SQLDT_INT, &item.card[j], sizeof item.card[j], NULL, NULL); + SQL->StmtBindColumn(stmt, 11 + j, SQLDT_INT, &item.card[j], sizeof item.card[j], NULL, NULL); /* Item Options */ for (j = 0; j < MAX_ITEM_OPTIONS; ++j) { - SQL->StmtBindColumn(stmt, 10 + MAX_SLOTS + j * 2, SQLDT_INT16, &item.option[j].index, sizeof item.option[j].index, NULL, NULL); - SQL->StmtBindColumn(stmt, 11 + MAX_SLOTS + j * 2, SQLDT_INT16, &item.option[j].value, sizeof item.option[j].value, NULL, NULL); + SQL->StmtBindColumn(stmt, 11 + MAX_SLOTS + j * 2, SQLDT_INT16, &item.option[j].index, sizeof item.option[j].index, NULL, NULL); + SQL->StmtBindColumn(stmt, 12 + MAX_SLOTS + j * 2, SQLDT_INT16, &item.option[j].value, sizeof item.option[j].value, NULL, NULL); } while (SQL_SUCCESS == SQL->StmtNextRow(stmt)) { Assert_retb(i < MAX_INVENTORY); @@ -529,7 +532,7 @@ static bool inter_storage_retrieve_bound_items(int char_id, int account_id, int /// call that function here as well [Panikon] StrBuf->Clear(&buf); StrBuf->Printf(&buf,"INSERT INTO `%s` (`guild_id`,`nameid`,`amount`,`equip`,`identify`,`refine`," - "`attribute`,`expire_time`,`bound`,`unique_id`", + "`grade`, `attribute`,`expire_time`,`bound`,`unique_id`", guild_storage_db); for (s = 0; s < MAX_SLOTS; ++s) StrBuf->Printf(&buf, ", `card%d`", s); @@ -541,8 +544,8 @@ static bool inter_storage_retrieve_bound_items(int char_id, int account_id, int if (j != 0) StrBuf->AppendStr(&buf, ","); - StrBuf->Printf(&buf, "('%d', '%d', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%"PRIu64"'", - guild_id, items[j].nameid, items[j].amount, items[j].equip, items[j].identify, items[j].refine, + StrBuf->Printf(&buf, "('%d', '%d', '%d', '%u', '%d', '%d', '%d', '%d', '%u', '%d', '%"PRIu64"'", + guild_id, items[j].nameid, items[j].amount, items[j].equip, items[j].identify, items[j].refine, items[j].grade, items[j].attribute, items[j].expire_time, items[j].bound, items[j].unique_id); for (s = 0; s < MAX_SLOTS; ++s) StrBuf->Printf(&buf, ", '%d'", items[j].card[s]); diff --git a/src/common/mmo.h b/src/common/mmo.h index 027e80ff217..eabaae489f0 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -483,7 +483,7 @@ struct item { unsigned int equip; // Location(s) where item is equipped (using enum equip_pos for bitmasking). char identify; char refine; - char grade; // TODO implement saving/loading grade to db + char grade; char attribute; int card[MAX_SLOTS]; unsigned int expire_time; diff --git a/src/map/log.c b/src/map/log.c index 98fbd4aa924..529f39181c8 100644 --- a/src/map/log.c +++ b/src/map/log.c @@ -180,10 +180,10 @@ static void log_pick_sub_sql(int id, int16 m, e_log_pick_type type, int amount, { nullpo_retv(itm); if (SQL_ERROR == SQL->Query(logs->mysql_handle, - LOG_QUERY " INTO `%s` (`time`, `char_id`, `type`, `nameid`, `amount`, `refine`, `card0`, `card1`, `card2`, `card3`, " + LOG_QUERY " INTO `%s` (`time`, `char_id`, `type`, `nameid`, `amount`, `refine`, `grade`, `card0`, `card1`, `card2`, `card3`, " "`opt_idx0`, `opt_val0`, `opt_idx1`, `opt_val1`, `opt_idx2`, `opt_val2`, `opt_idx3`, `opt_val3`, `opt_idx4`, `opt_val4`, `map`, `unique_id`) " - "VALUES (NOW(), '%d', '%c', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%s', '%"PRIu64"')", - logs->config.log_pick, id, logs->picktype2char(type), itm->nameid, amount, itm->refine, itm->card[0], itm->card[1], itm->card[2], itm->card[3], + "VALUES (NOW(), '%d', '%c', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%s', '%"PRIu64"')", + logs->config.log_pick, id, logs->picktype2char(type), itm->nameid, amount, itm->refine, itm->grade, itm->card[0], itm->card[1], itm->card[2], itm->card[3], itm->option[0].index, itm->option[0].value, itm->option[1].index, itm->option[1].value, itm->option[2].index, itm->option[2].value, itm->option[3].index, itm->option[3].value, itm->option[4].index, itm->option[4].value, map->list[m].name, itm->unique_id)) From 21c03fa7aaca81f99b9b9c65cec54aab29b31662 Mon Sep 17 00:00:00 2001 From: Asheraf Date: Thu, 21 Oct 2021 19:20:01 +0100 Subject: [PATCH 40/65] Add an atcommand for item grading --- conf/messages.conf | 8 ++++ src/map/atcommand.c | 99 +++++++++++++++++++++++++++++++++++++++++++++ src/map/atcommand.h | 2 +- src/map/itemdb.h | 4 ++ 4 files changed, 112 insertions(+), 1 deletion(-) diff --git a/conf/messages.conf b/conf/messages.conf index 08f3750889c..b6b9f384a45 100644 --- a/conf/messages.conf +++ b/conf/messages.conf @@ -1684,5 +1684,13 @@ 1522: Instant monster kill state started. 1523: Instant monster kill state ended. +1524: Please enter a position bitmask and an amount (usage: @grade <+/- amount>). +1525: %d: Grade All Equip (General) +1526: %d: Grade All Equip (Costume) +1527: %d: Grade All Equip (Shadow) +1528: No item has been graded. +1529: 1 item has been graded. +1530: %d items have been graded. + // Custom translations import: conf/import/msg_conf.txt diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 6061f84078f..3d57d40e5b5 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -2328,6 +2328,104 @@ ACMD(refine) return true; } +ACMD(grade) +{ + const struct { + int pos_id; + int msg_id; + } messages_list[] = { + { -3, 1527 }, // %d: Grade All Equip (Shadow) + { -2, 1526 }, // %d: Grade All Equip (Costume) + { -1, 1525 }, // %d: Grade All Equip (General) + { EQP_HEAD_LOW, 997 }, // %d: Headgear (Low) + { EQP_HAND_R, 998 }, // %d: Hand (Right) + { EQP_GARMENT, 999 }, // %d: Garment + { EQP_ACC_L, 1000 }, // %d: Accessory (Left) + { EQP_ARMOR, 1001 }, // %d: Body Armor + { EQP_HAND_L, 1002 }, // %d: Hand (Left) + { EQP_SHOES, 1003 }, // %d: Shoes + { EQP_ACC_R, 1004 }, // %d: Accessory (Right) + { EQP_HEAD_TOP, 1005 }, // %d: Headgear (Top) + { EQP_HEAD_MID, 1006 }, // %d: Headgear (Mid) + { EQP_COSTUME_HEAD_TOP, 1503 }, // %d: Costume Headgear (Top) + { EQP_COSTUME_HEAD_MID, 1504 }, // %d: Costume Headgear (Mid) + { EQP_COSTUME_HEAD_LOW, 1505 }, // %d: Costume Headgear (Low) + { EQP_COSTUME_GARMENT, 1506 }, // %d: Costume Garment + { EQP_SHADOW_ARMOR, 1507 }, // %d: Shadow Armor + { EQP_SHADOW_WEAPON, 1508 }, // %d: Shadow Weapon + { EQP_SHADOW_SHIELD, 1509 }, // %d: Shadow Shield + { EQP_SHADOW_SHOES, 1510 }, // %d: Shadow Shoes + { EQP_SHADOW_ACC_R, 1511 }, // %d: Shadow Accessory (Right) + { EQP_SHADOW_ACC_L, 1512 }, // %d: Shadow Accessory (Left) + }; + + memset(atcmd_output, '\0', sizeof(atcmd_output)); + + int position = 0; + int grade_level = 0; + if (!*message || sscanf(message, "%12d %12d", &position, &grade_level) < 2) { + clif->message(fd, msg_fd(fd, 1524)); // Please enter a position and an amount (usage: @grade <+/- amount>). + for (int i = 0; i < ARRAYLENGTH(messages_list); ++i) { + safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, messages_list[i].msg_id), messages_list[i].pos_id); + clif->message(fd, atcmd_output); + } + return false; + } + + grade_level = cap_value(grade_level, 0, MAX_ITEM_GRADE); + + int count = 0; + for (int j = 0; j < EQI_MAX; j++) { + int idx = sd->equip_index[j]; + if (idx < 0) + continue; + if (j == EQI_AMMO) + continue; /* can't equip ammo */ + if (j == EQI_HAND_R && sd->equip_index[EQI_HAND_L] == idx) + continue; + if (j == EQI_HEAD_MID && sd->equip_index[EQI_HEAD_LOW] == idx) + continue; + if (j == EQI_HEAD_TOP && (sd->equip_index[EQI_HEAD_MID] == idx || sd->equip_index[EQI_HEAD_LOW] == idx)) + continue; + if (j == EQI_COSTUME_MID && sd->equip_index[EQI_COSTUME_LOW] == idx) + continue; + if (j == EQI_COSTUME_TOP && (sd->equip_index[EQI_COSTUME_MID] == idx || sd->equip_index[EQI_COSTUME_LOW] == idx)) + continue; + + if (position == -3 && !itemdb_is_shadowequip(sd->status.inventory[idx].equip)) + continue; + else if (position == -2 && !itemdb_is_costumeequip(sd->status.inventory[idx].equip)) + continue; + else if (position == -1 && (itemdb_is_costumeequip(sd->status.inventory[idx].equip) || itemdb_is_shadowequip(sd->status.inventory[idx].equip))) + continue; + else if (position && !(sd->status.inventory[idx].equip & position)) + continue; + + int final_grade = cap_value(sd->status.inventory[idx].grade + grade_level, 0, MAX_ITEM_GRADE); + if (sd->status.inventory[idx].grade != final_grade) { + sd->status.inventory[idx].grade = final_grade; + const int current_position = sd->status.inventory[idx].equip; + pc->unequipitem(sd, idx, PCUNEQUIPITEM_RECALC | PCUNEQUIPITEM_FORCE); + clif->delitem(sd, idx, 1, DELITEM_MATERIALCHANGE); + clif->additem(sd, idx, 1, 0); + pc->equipitem(sd, idx, current_position); + clif->misceffect(&sd->bl, 3); + count++; + } + } + + if (count == 0) + clif->message(fd, msg_fd(fd, 1528)); // No item has been graded. + else if (count == 1) + clif->message(fd, msg_fd(fd, 1529)); // 1 item has been graded. + else { + safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd, 168), 1530); // %d items have been graded. + clif->message(fd, atcmd_output); + } + + return true; +} + /*========================================== * *------------------------------------------*/ @@ -10307,6 +10405,7 @@ static void atcommand_basecommands(void) ACMD_DEF(killmonster), ACMD_DEF2("killmonster2", killmonster), ACMD_DEF(refine), + ACMD_DEF(grade), ACMD_DEF(produce), ACMD_DEF(memo), ACMD_DEF(gat), diff --git a/src/map/atcommand.h b/src/map/atcommand.h index 4d23bd2695f..c3c80ac6f2c 100644 --- a/src/map/atcommand.h +++ b/src/map/atcommand.h @@ -41,7 +41,7 @@ struct config_setting_t; * Defines **/ #define ATCOMMAND_LENGTH 50 -#define MAX_MSG 1525 +#define MAX_MSG 1530 #define msg_txt(idx) atcommand->msg(idx) #define msg_sd(sd,msg_number) atcommand->msgsd((sd),(msg_number)) #define msg_fd(fd,msg_number) atcommand->msgfd((fd),(msg_number)) diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 8be7bd7019d..8890d6b351b 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -76,6 +76,10 @@ struct hplugin_data_store; #error "For clients before 20181121 Main and 20180704 RE and 20181114 zero, MAX_ITEM_ID must be smaller than 0x10000" #endif +#ifndef MAX_ITEM_GRADE +#define MAX_ITEM_GRADE 7 +#endif + enum item_itemid { ITEMID_RED_POTION = 501, ITEMID_YELLOW_POTION = 503, From b75e64aae2544281122f1ec0ea8f54a4dce0e645 Mon Sep 17 00:00:00 2001 From: Asheraf Date: Fri, 22 Oct 2021 09:01:27 +0100 Subject: [PATCH 41/65] Add item db flag for enabling item grades --- db/item_db2.conf | 1 + db/pre-re/item_db.conf | 1 + db/re/item_db.conf | 1 + doc/item_db.txt | 4 ++++ src/map/itemdb.c | 3 +++ src/map/itemdb.h | 1 + 6 files changed, 11 insertions(+) diff --git a/db/item_db2.conf b/db/item_db2.conf index bd6d7e609fc..6cd8756eeb8 100644 --- a/db/item_db2.conf +++ b/db/item_db2.conf @@ -86,6 +86,7 @@ item_db: ( EquipLv: Equip required level (int, defaults to 0) EquipLv: [min, max] (alternative syntax with min / max level) Refine: Refineable (boolean, defaults to true) + Grade: Gradable (boolean, defaults to false) DisableOptions: true/false (boolean, defaults to false !!for equipments only!!) [Smokexyz] Subtype: Item Subtype (int, defaults to 0) ViewSprite: Sprite view ID (int, defaults to 0) diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf index 13e629ed5cb..abe845960ef 100644 --- a/db/pre-re/item_db.conf +++ b/db/pre-re/item_db.conf @@ -86,6 +86,7 @@ item_db: ( EquipLv: Equip required level (int, defaults to 0) EquipLv: [min, max] (alternative syntax with min / max level) Refine: Refineable (boolean, defaults to true) + Grade: Gradable (boolean, defaults to false) DisableOptions: true/false (boolean, defaults to false !!for equipments only!!) [Smokexyz] Subtype: Item Subtype (int, defaults to 0) ViewSprite: Sprite view ID (int, defaults to 0) diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 02298bea710..0f64afd396b 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -86,6 +86,7 @@ item_db: ( EquipLv: Equip required level (int, defaults to 0) EquipLv: [min, max] (alternative syntax with min / max level) Refine: Refineable (boolean, defaults to true) + Grade: Gradable (boolean, defaults to false) DisableOptions: true/false (boolean, defaults to false !!for equipments only!!) [Smokexyz] Subtype: Item Subtype (int, defaults to 0) ViewSprite: Sprite view ID (int, defaults to 0) diff --git a/doc/item_db.txt b/doc/item_db.txt index 24a5a2f6bb2..bb811f23347 100644 --- a/doc/item_db.txt +++ b/doc/item_db.txt @@ -65,6 +65,7 @@ item_db: ( EquipLv: Equip required level (int, defaults to 0) EquipLv: [min, max] (alternative syntax with min / max level) Refine: Refineable (boolean, defaults to true) + Grade: Gradable (boolean, defaults to false) DisableOptions: true/false (boolean, defaults to false !!for equipments only!!) [Smokexyz] Subtype: Item Subtype (int, defaults to 0) ViewSprite: Sprite view ID (int, defaults to 0) @@ -259,6 +260,9 @@ EquipLv: Base level required to be able to equip. It is possible to specify Refineable: true if the item can be refined, false otherwise. If no value is specified, it defaults to true. +Gradable: true if the item can be graded, false otherwise. If no value is + specified, it defaults to false. + Subtype: For weapons and ammo, indicates the weapon-class of the item. For weapons, the types are: diff --git a/src/map/itemdb.c b/src/map/itemdb.c index acc0e791a3a..44ef621122a 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -2187,6 +2187,9 @@ static int itemdb_readdb_libconfig_sub(struct config_setting_t *it, int n, const if( (t = libconfig->setting_get_member(it, "Refine")) ) id.flag.no_refine = libconfig->setting_get_bool(t) ? 0 : 1; + if( (t = libconfig->setting_get_member(it, "Grade")) ) + id.flag.no_grade = libconfig->setting_get_bool(t) ? 1 : 0; + if ((t = libconfig->setting_get_member(it, "DisableOptions"))) id.flag.no_options = libconfig->setting_get_bool(t) ? 1 : 0; diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 8890d6b351b..26aef12343a 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -560,6 +560,7 @@ struct item_data { struct { unsigned available : 1; unsigned no_refine : 1; // [celest] + unsigned no_grade : 1; unsigned delay_consume : 1; ///< Signifies items that are not consumed immediately upon double-click [Skotlex] unsigned trade_restriction : 9; ///< Item trade restrictions mask (@see enum ItemTradeRestrictions) unsigned autoequip : 1; From 5d832369ae38f95c88200c9d01ba88ea580d48f7 Mon Sep 17 00:00:00 2001 From: Asheraf Date: Fri, 22 Oct 2021 09:45:24 +0100 Subject: [PATCH 42/65] Add some item grade script commands --- doc/script_commands.txt | 25 ++++++++++++++ src/map/script.c | 76 +++++++++++++++++++++++++++++++++++++++++ src/map/script.h | 1 + 3 files changed, 102 insertions(+) diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 1e3bd17fe71..b6657a7c885 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -803,6 +803,7 @@ MAX_BANK_ZENY - Maximum Zeny in the bank MAX_BG_MEMBERS - Maximum BattleGround members MAX_CHAT_USERS - Maximum Chat users MAX_REFINE - Maximum Refine level +MAX_ITEM_GRADE - Maximum Grade level MAX_ITEM_ID - Maximum Item ID MAX_MENU_OPTIONS - Maximum NPC menu options MAX_MENU_LENGTH - Maximum NPC menu string length @@ -3262,6 +3263,7 @@ recreate these items perfectly if they are destroyed. Here's what you get: @inventorylist_amount[] - their corresponding item amounts. @inventorylist_equip[] - will return the slot the item is equipped on, if at all. @inventorylist_refine[] - for how much it is refined. +@inventorylist_grade[] - for grade levels. @inventorylist_identify[] - whether it is identified. @inventorylist_attribute[] - whether it is broken. @inventorylist_card1[] - These four arrays contain card data for the items. @@ -3300,6 +3302,7 @@ recreate these items perfectly if they are destroyed. Here's what you get: @cartinventorylist_id[] - array of item ids. @cartinventorylist_amount[] - their corresponding item amounts. @cartinventorylist_refine[] - for how much it is refined. +@cartinventorylist_grade[] - for grade levels. @cartinventorylist_identify[] - whether it is identified. @cartinventorylist_attribute[] - whether it is broken. @cartinventorylist_card1[] - These four arrays contain card data for the items. @@ -3429,6 +3432,7 @@ Valid types are: ITEMINFO_CLASS_BASE_3 - Class base 3 ITEMINFO_CLASS_UPPER - Class Upper ITEMINFO_FLAG_NO_REFINE - No refine flag + ITEMINFO_FLAG_NO_GRADE - No grade flag ITEMINFO_FLAG_DELAY_CONSUME - Delay consume flag ITEMINFO_FLAG_AUTOEQUIP - Auto equip flag ITEMINFO_FLAG_AUTO_FAVORITE - Auto favorite flag @@ -10814,3 +10818,24 @@ Opens lapine ddukddak upgrade user interface for the player returns true on success and false on failure --------------------------------------- +*getgrade() + +This function will return the grade level of the equipment from which +the function is called. This function is intended for use in item scripts. + + if (getgrade() == 1) + mes("Wow. That's a 1st grade weapon."); + +--------------------------------------- +*getequipisenablegrade() + +Will return true if the item equipped on the invoking character in the +specified equipment slot is gradable, and false if it isn't. For a list +of equipment slots see getequipid(). + +--------------------------------------- +*getequipgrade(); + +Gets the grade level of an equipment. + +--------------------------------------- diff --git a/src/map/script.c b/src/map/script.c index e67331260bb..8df43e268ae 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -15646,6 +15646,9 @@ static BUILDIN(getiteminfo) case ITEMINFO_FLAG_NO_REFINE: script_pushint(st, it->flag.no_refine); break; + case ITEMINFO_FLAG_NO_GRADE: + script_pushint(st, it->flag.no_grade); + break; case ITEMINFO_FLAG_DELAY_CONSUME: script_pushint(st, it->flag.delay_consume); break; @@ -16010,6 +16013,9 @@ static BUILDIN(setiteminfo) case ITEMINFO_FLAG_NO_REFINE: it->flag.no_refine = cap_value(value, 0, MAX_REFINE); break; + case ITEMINFO_FLAG_NO_GRADE: + it->flag.no_grade = cap_value(value, 0, 1); + break; case ITEMINFO_FLAG_DELAY_CONSUME: it->flag.delay_consume = value; break; @@ -16205,6 +16211,7 @@ static BUILDIN(getinventorylist) pc->setreg(sd, reference_uid(script->add_variable("@inventorylist_equip"), j), 0); } pc->setreg(sd, reference_uid(script->add_variable("@inventorylist_refine"), j), sd->status.inventory[i].refine); + pc->setreg(sd, reference_uid(script->add_variable("@inventorylist_grade"), j), sd->status.inventory[i].grade); pc->setreg(sd, reference_uid(script->add_variable("@inventorylist_identify"), j), sd->status.inventory[i].identify); pc->setreg(sd, reference_uid(script->add_variable("@inventorylist_attribute"), j), sd->status.inventory[i].attribute); for (k = 0; k < MAX_SLOTS; k++) { @@ -16244,6 +16251,7 @@ static BUILDIN(getcartinventorylist) pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_amount"), j),sd->status.cart[i].amount); pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_equip"), j),sd->status.cart[i].equip); pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_refine"), j),sd->status.cart[i].refine); + pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_grade"), j),sd->status.cart[i].grade); pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_identify"), j),sd->status.cart[i].identify); pc->setreg(sd,reference_uid(script->add_variable("@cartinventorylist_attribute"), j),sd->status.cart[i].attribute); for (k = 0; k < MAX_SLOTS; k++) { @@ -27399,6 +27407,68 @@ BUILDIN(resethate) return true; } +static BUILDIN(getgrade) +{ + struct map_session_data *sd = script->rid2sd(st); + + if (sd == NULL) + return true; + + if (status->current_equip_item_index < 0) + script_pushint(st, 0); + else + script_pushint(st, sd->status.inventory[status->current_equip_item_index].grade); + return true; +} + +static BUILDIN(getequipisenablegrade) +{ + struct map_session_data *sd = script->rid2sd(st); + + if (sd == NULL) + return true; + + int i = -1; + const int num = script_getnum(st, 2); + if (num > 0 && num <= ARRAYLENGTH(script->equip)) + i = pc->checkequip(sd, script->equip[num - 1]); + + if (i >= 0 && sd->inventory_data[i] != NULL && sd->inventory_data[i]->flag.no_grade == 0 && sd->status.inventory[i].expire_time == 0) + script_pushint(st, 1); + else + script_pushint(st, 0); + + return true; +} + +static BUILDIN(getequipgrade) +{ + struct map_session_data *sd = script->rid2sd(st); + + if (sd == NULL) { + script_pushint(st, -1); + ShowError("buildin_getequipgrade: Player not attached!\n"); + return false; + } + + int i = -1; + const int equip_index = script_getnum(st, 2); + if (equip_index > 0 && equip_index <= ARRAYLENGTH(script->equip)) { + if ((i = pc->checkequip(sd, script->equip[equip_index - 1])) == -1) { + ShowError("buildin_getequipgrade: No equipment is equipped in the given index %d.\n", equip_index); + script_pushint(st, -1); + return false; + } + } else { + ShowError("buildin_getequipgrade: Invalid equipment index %d provided.\n", equip_index); + script_pushint(st, -1); + return false; + } + + script_pushint(st, sd->status.inventory[i].grade); + return true; +} + /** * Adds a built-in script function. * @@ -28234,6 +28304,10 @@ static void script_parse_builtin(void) BUILDIN_DEF(openlapineupgradeui, "i"), BUILDIN_DEF(callfunctionofnpc, "vs*"), + + BUILDIN_DEF(getgrade, ""), + BUILDIN_DEF(getequipisenablegrade, "i"), + BUILDIN_DEF(getequipgrade, "i"), }; int i, len = ARRAYLENGTH(BUILDIN); RECREATE(script->buildin, char *, script->buildin_count + len); // Pre-alloc to speed up @@ -28283,6 +28357,7 @@ static void script_hardcoded_constants(void) script->set_constant("MAX_BG_MEMBERS", MAX_BG_MEMBERS, false, false); script->set_constant("MAX_CHAT_USERS", MAX_CHAT_USERS, false, false); script->set_constant("MAX_REFINE", MAX_REFINE, false, false); + script->set_constant("MAX_ITEM_GRADE", MAX_ITEM_GRADE, false, false); script->set_constant("MAX_ITEM_ID", MAX_ITEM_ID, false, false); script->set_constant("MAX_MENU_OPTIONS", MAX_MENU_OPTIONS, false, false); script->set_constant("MAX_MENU_LENGTH", MAX_MENU_LENGTH, false, false); @@ -28577,6 +28652,7 @@ static void script_hardcoded_constants(void) script->set_constant("ITEMINFO_CLASS_BASE_3", ITEMINFO_CLASS_BASE_3, false, false); script->set_constant("ITEMINFO_CLASS_UPPER", ITEMINFO_CLASS_UPPER, false, false); script->set_constant("ITEMINFO_FLAG_NO_REFINE", ITEMINFO_FLAG_NO_REFINE, false, false); + script->set_constant("ITEMINFO_FLAG_NO_GRADE", ITEMINFO_FLAG_NO_GRADE, false, false); script->set_constant("ITEMINFO_FLAG_DELAY_CONSUME", ITEMINFO_FLAG_DELAY_CONSUME, false, false); script->set_constant("ITEMINFO_FLAG_AUTOEQUIP", ITEMINFO_FLAG_AUTOEQUIP, false, false); script->set_constant("ITEMINFO_FLAG_AUTO_FAVORITE", ITEMINFO_FLAG_AUTO_FAVORITE, false, false); diff --git a/src/map/script.h b/src/map/script.h index 0e7264a7fe9..c657c83d7db 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -475,6 +475,7 @@ enum script_iteminfo_types { ITEMINFO_CLASS_UPPER, // ITEMINFO_FLAG_AVAILABLE, ITEMINFO_FLAG_NO_REFINE, + ITEMINFO_FLAG_NO_GRADE, ITEMINFO_FLAG_DELAY_CONSUME, ITEMINFO_FLAG_AUTOEQUIP, ITEMINFO_FLAG_AUTO_FAVORITE, From 61a49fa221e165b239a43b293cbf4123e5b669ea Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 22 Oct 2021 01:31:58 +0300 Subject: [PATCH 43/65] Update packet CZ_CHECKNAME --- src/map/clif.c | 26 ++++++++++++++++++++++---- src/map/clif.h | 3 ++- src/map/packets.h | 9 ++++++--- src/map/packets_struct.h | 14 +++++++++++++- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 3754388acf9..d309a02f4f1 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -22843,10 +22843,11 @@ static void clif_rodex_remove_item_result(struct map_session_data *sd, int16 idx #endif } -static void clif_parse_rodex_checkname(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); -static void clif_parse_rodex_checkname(int fd, struct map_session_data *sd) +static void clif_parse_rodex_checkname1(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +static void clif_parse_rodex_checkname1(int fd, struct map_session_data *sd) { - const struct PACKET_CZ_CHECKNAME *rPacket = RFIFOP(fd, 0); +#if PACKETVER >= 20140423 + const struct PACKET_CZ_CHECKNAME1 *rPacket = RFIFOP(fd, 0); int char_id = 0, base_level = 0; int class = 0; char name[NAME_LENGTH]; @@ -22854,6 +22855,22 @@ static void clif_parse_rodex_checkname(int fd, struct map_session_data *sd) safestrncpy(name, rPacket->Name, NAME_LENGTH); rodex->check_player(sd, name, &base_level, &char_id, &class); +#endif // PACKETVER >= 20140423 +} + +static void clif_parse_rodex_checkname2(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); +static void clif_parse_rodex_checkname2(int fd, struct map_session_data *sd) +{ +#if PACKETVER_MAIN_NUM >= 20201104 || PACKETVER_ZERO_NUM >= 20201118 + const struct PACKET_CZ_CHECKNAME2 *rPacket = RFIFOP(fd, 0); + int char_id = 0, base_level = 0; + int class = 0; + char name[NAME_LENGTH]; + + safestrncpy(name, rPacket->Name, NAME_LENGTH); + + rodex->check_player(sd, name, &base_level, &char_id, &class); +#endif // PACKETVER_MAIN_NUM >= 20201104 || PACKETVER_ZERO_NUM >= 20201118 } static void clif_rodex_checkname_result(struct map_session_data *sd, int char_id, int class_, int base_level, const char *name) @@ -26106,7 +26123,8 @@ void clif_defaults(void) clif->pRodexCloseMailbox = clif_parse_rodex_close_mailbox; clif->pRodexCancelWriteMail = clif_parse_rodex_cancel_write_mail; clif->pRodexOpenMailbox = clif_parse_rodex_open_mailbox; - clif->pRodexCheckName = clif_parse_rodex_checkname; + clif->pRodexCheckName1 = clif_parse_rodex_checkname1; + clif->pRodexCheckName2 = clif_parse_rodex_checkname2; clif->rodex_checkname_result = clif_rodex_checkname_result; clif->pRodexDeleteMail = clif_parse_rodex_delete_mail; clif->rodex_delete_mail = clif_rodex_delete_mail; diff --git a/src/map/clif.h b/src/map/clif.h index 0899a8de846..9c490449be1 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -1669,7 +1669,8 @@ struct clif_interface { void (*pRodexCloseMailbox) (int fd, struct map_session_data *sd); void (*pRodexCancelWriteMail) (int fd, struct map_session_data *sd); void (*pRodexOpenMailbox) (int fd, struct map_session_data *sd); - void (*pRodexCheckName) (int fd, struct map_session_data *sd); + void (*pRodexCheckName1) (int fd, struct map_session_data *sd); + void (*pRodexCheckName2) (int fd, struct map_session_data *sd); void (*rodex_checkname_result) (struct map_session_data *sd, int char_id, int class_, int base_level, const char *name); void (*pRodexDeleteMail) (int fd, struct map_session_data *sd); void (*rodex_delete_mail) (struct map_session_data *sd, int8 opentype, int64 mail_id); diff --git a/src/map/packets.h b/src/map/packets.h index 827dddcc22b..81bb162b0d9 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -1712,17 +1712,16 @@ packet(0x96e,clif->ackmergeitems); #if PACKETVER >= 20140416 // new packets packet(0x0a04,clif->pRodexAddItem); // CZ_REQ_ADD_ITEM_RODEX - packet(0x0a13,clif->pRodexCheckName); // CZ_CHECK_RECEIVE_CHARACTER_NAME // changed packet sizes packet(0x0a06,clif->pRodexRemoveItem); // CZ_REQ_REMOVE_RODEX_ITEM packet(0x0a08,clif->pRodexOpenWriteMail); // CZ_REQ_OPEN_WRITE_RODEX #endif -// 2014-04-23aRagexeRE +// 2014-04-23aRagexe, 2014-04-23aRagexeRE #if PACKETVER >= 20140423 // new packets // changed packet sizes - packet(0x0a13,clif->pRodexCheckName); // CZ_CHECK_RECEIVE_CHARACTER_NAME + packet(0x0a13,clif->pRodexCheckName1); // CZ_CHECK_RECEIVE_CHARACTER_NAME #endif // 2014-04-30aRagexeRE @@ -2015,4 +2014,8 @@ packet(0x96e,clif->ackmergeitems); packet(0x0b66,clif->pRepairItem2); #endif +#if PACKETVER_MAIN_NUM >= 20201104 || PACKETVER_ZERO_NUM >= 20201118 + packet(0x0b97,clif->pRodexCheckName2); +#endif // PACKETVER_MAIN_NUM >= 20201104 || PACKETVER_ZERO_NUM >= 20201118 + #endif /* MAP_PACKETS_H */ diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index f41c198add4..f72d60c9831 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -1763,10 +1763,22 @@ struct PACKET_ZC_WRITE_MAIL_RESULT { int8 result; } __attribute__((packed)); -struct PACKET_CZ_CHECKNAME { +#if PACKETVER >= 20140423 +struct PACKET_CZ_CHECKNAME1 { int16 PacketType; char Name[24]; } __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_CHECKNAME1, 0x0a13) +#endif // PACKETVER >= 20140423 + +#if PACKETVER_MAIN_NUM >= 20201104 || PACKETVER_ZERO_NUM >= 20201118 +struct PACKET_CZ_CHECKNAME2 { + int16 PacketType; + char Name[24]; + char own_char; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_CHECKNAME2, 0x0b97) +#endif // PACKETVER_MAIN_NUM >= 20201104 || PACKETVER_ZERO_NUM >= 20201118 struct PACKET_ZC_CHECKNAME { int16 PacketType; From 5af6131cb2b149e90ddca175be5075302fc4b075 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 22 Oct 2021 01:34:32 +0300 Subject: [PATCH 44/65] Update HPM --- src/common/HPMDataCheck.h | 1 - src/plugins/HPMHooking/HPMHooking.Defs.inc | 6 ++- .../HPMHooking_map.HPMHooksCore.inc | 12 ++++-- .../HPMHooking_map.HookingPoints.inc | 3 +- .../HPMHooking/HPMHooking_map.Hooks.inc | 42 +++++++++++++++---- 5 files changed, 48 insertions(+), 16 deletions(-) diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index e0db6e5a0b9..5871ed7b19c 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -635,7 +635,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "ItemOptions", sizeof(struct ItemOptions), SERVER_TYPE_MAP }, { "NORMALITEM_INFO", sizeof(struct NORMALITEM_INFO), SERVER_TYPE_MAP }, { "PACKET_CZ_ADD_ITEM_TO_MAIL", sizeof(struct PACKET_CZ_ADD_ITEM_TO_MAIL), SERVER_TYPE_MAP }, - { "PACKET_CZ_CHECKNAME", sizeof(struct PACKET_CZ_CHECKNAME), SERVER_TYPE_MAP }, { "PACKET_CZ_MEMORIALDUNGEON_COMMAND", sizeof(struct PACKET_CZ_MEMORIALDUNGEON_COMMAND), SERVER_TYPE_MAP }, { "PACKET_CZ_OPEN_UI", sizeof(struct PACKET_CZ_OPEN_UI), SERVER_TYPE_MAP }, { "PACKET_CZ_PARTY_CONFIG", sizeof(struct PACKET_CZ_PARTY_CONFIG), SERVER_TYPE_MAP }, diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index 0df4141a320..d5ea37fccb0 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -2632,8 +2632,10 @@ typedef void (*HPMHOOK_pre_clif_pRodexCancelWriteMail) (int *fd, struct map_sess typedef void (*HPMHOOK_post_clif_pRodexCancelWriteMail) (int fd, struct map_session_data *sd); typedef void (*HPMHOOK_pre_clif_pRodexOpenMailbox) (int *fd, struct map_session_data **sd); typedef void (*HPMHOOK_post_clif_pRodexOpenMailbox) (int fd, struct map_session_data *sd); -typedef void (*HPMHOOK_pre_clif_pRodexCheckName) (int *fd, struct map_session_data **sd); -typedef void (*HPMHOOK_post_clif_pRodexCheckName) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_pRodexCheckName1) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexCheckName1) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_pRodexCheckName2) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pRodexCheckName2) (int fd, struct map_session_data *sd); typedef void (*HPMHOOK_pre_clif_rodex_checkname_result) (struct map_session_data **sd, int *char_id, int *class_, int *base_level, const char **name); typedef void (*HPMHOOK_post_clif_rodex_checkname_result) (struct map_session_data *sd, int char_id, int class_, int base_level, const char *name); typedef void (*HPMHOOK_pre_clif_pRodexDeleteMail) (int *fd, struct map_session_data **sd); diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index 2d1694115c5..ed33308290f 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -2222,8 +2222,10 @@ struct { struct HPMHookPoint *HP_clif_pRodexCancelWriteMail_post; struct HPMHookPoint *HP_clif_pRodexOpenMailbox_pre; struct HPMHookPoint *HP_clif_pRodexOpenMailbox_post; - struct HPMHookPoint *HP_clif_pRodexCheckName_pre; - struct HPMHookPoint *HP_clif_pRodexCheckName_post; + struct HPMHookPoint *HP_clif_pRodexCheckName1_pre; + struct HPMHookPoint *HP_clif_pRodexCheckName1_post; + struct HPMHookPoint *HP_clif_pRodexCheckName2_pre; + struct HPMHookPoint *HP_clif_pRodexCheckName2_post; struct HPMHookPoint *HP_clif_rodex_checkname_result_pre; struct HPMHookPoint *HP_clif_rodex_checkname_result_post; struct HPMHookPoint *HP_clif_pRodexDeleteMail_pre; @@ -9443,8 +9445,10 @@ struct { int HP_clif_pRodexCancelWriteMail_post; int HP_clif_pRodexOpenMailbox_pre; int HP_clif_pRodexOpenMailbox_post; - int HP_clif_pRodexCheckName_pre; - int HP_clif_pRodexCheckName_post; + int HP_clif_pRodexCheckName1_pre; + int HP_clif_pRodexCheckName1_post; + int HP_clif_pRodexCheckName2_pre; + int HP_clif_pRodexCheckName2_post; int HP_clif_rodex_checkname_result_pre; int HP_clif_rodex_checkname_result_post; int HP_clif_pRodexDeleteMail_pre; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index d02afab8708..e0df3ccc867 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -1135,7 +1135,8 @@ struct HookingPointData HookingPoints[] = { { HP_POP(clif->pRodexCloseMailbox, HP_clif_pRodexCloseMailbox) }, { HP_POP(clif->pRodexCancelWriteMail, HP_clif_pRodexCancelWriteMail) }, { HP_POP(clif->pRodexOpenMailbox, HP_clif_pRodexOpenMailbox) }, - { HP_POP(clif->pRodexCheckName, HP_clif_pRodexCheckName) }, + { HP_POP(clif->pRodexCheckName1, HP_clif_pRodexCheckName1) }, + { HP_POP(clif->pRodexCheckName2, HP_clif_pRodexCheckName2) }, { HP_POP(clif->rodex_checkname_result, HP_clif_rodex_checkname_result) }, { HP_POP(clif->pRodexDeleteMail, HP_clif_pRodexDeleteMail) }, { HP_POP(clif->rodex_delete_mail, HP_clif_rodex_delete_mail) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index 324742c3327..0dc97c3d34c 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -28959,13 +28959,13 @@ void HP_clif_pRodexOpenMailbox(int fd, struct map_session_data *sd) { } return; } -void HP_clif_pRodexCheckName(int fd, struct map_session_data *sd) { +void HP_clif_pRodexCheckName1(int fd, struct map_session_data *sd) { int hIndex = 0; - if (HPMHooks.count.HP_clif_pRodexCheckName_pre > 0) { + if (HPMHooks.count.HP_clif_pRodexCheckName1_pre > 0) { void (*preHookFunc) (int *fd, struct map_session_data **sd); *HPMforce_return = false; - for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCheckName_pre; hIndex++) { - preHookFunc = HPMHooks.list.HP_clif_pRodexCheckName_pre[hIndex].func; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCheckName1_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexCheckName1_pre[hIndex].func; preHookFunc(&fd, &sd); } if (*HPMforce_return) { @@ -28974,12 +28974,38 @@ void HP_clif_pRodexCheckName(int fd, struct map_session_data *sd) { } } { - HPMHooks.source.clif.pRodexCheckName(fd, sd); + HPMHooks.source.clif.pRodexCheckName1(fd, sd); } - if (HPMHooks.count.HP_clif_pRodexCheckName_post > 0) { + if (HPMHooks.count.HP_clif_pRodexCheckName1_post > 0) { void (*postHookFunc) (int fd, struct map_session_data *sd); - for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCheckName_post; hIndex++) { - postHookFunc = HPMHooks.list.HP_clif_pRodexCheckName_post[hIndex].func; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCheckName1_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexCheckName1_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} +void HP_clif_pRodexCheckName2(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pRodexCheckName2_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCheckName2_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pRodexCheckName2_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pRodexCheckName2(fd, sd); + } + if (HPMHooks.count.HP_clif_pRodexCheckName2_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pRodexCheckName2_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pRodexCheckName2_post[hIndex].func; postHookFunc(fd, sd); } } From cc3b39b8c7348e9f524eec9e41e03df46271fe5a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 22 Oct 2021 16:40:16 +0300 Subject: [PATCH 45/65] Update packet ZC_CHECKNAME --- src/map/clif.c | 6 +++--- src/map/packets_struct.h | 18 +++++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index d309a02f4f1..66a8523e226 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -22875,7 +22875,7 @@ static void clif_parse_rodex_checkname2(int fd, struct map_session_data *sd) static void clif_rodex_checkname_result(struct map_session_data *sd, int char_id, int class_, int base_level, const char *name) { -#if PACKETVER >= 20140521 +#if PACKETVER >= 20141119 struct PACKET_ZC_CHECKNAME *sPacket; int fd; @@ -22885,7 +22885,7 @@ static void clif_rodex_checkname_result(struct map_session_data *sd, int char_id fd = sd->fd; WFIFOHEAD(fd, sizeof(*sPacket)); sPacket = WFIFOP(fd, 0); - sPacket->PacketType = rodexcheckplayer; + sPacket->PacketType = HEADER_ZC_CHECKNAME; if (char_id == 0) { sPacket->CharId = 0; WFIFOSET(fd, sizeof(*sPacket)); @@ -22898,7 +22898,7 @@ static void clif_rodex_checkname_result(struct map_session_data *sd, int char_id safestrncpy(sPacket->Name, name, NAME_LENGTH); #endif WFIFOSET(fd, sizeof(*sPacket)); -#endif +#endif // PACKETVER >= 20141119 } static void clif_parse_rodex_send_mail(int fd, struct map_session_data *sd) __attribute__((nonnull(2))); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index f72d60c9831..68a4b7c53f6 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -297,11 +297,6 @@ enum packet_headers { #else // PACKETVER >= 20170419 rodexmailList = 0x0Ac2, #endif -#if PACKETVER < 20160316 - rodexcheckplayer = 0x0A14, -#else // PACKETVER >= 20160316 - rodexcheckplayer = 0x0A51, -#endif #if PACKETVER >= 20151223 skillscale = 0xA41, #endif @@ -1780,15 +1775,24 @@ struct PACKET_CZ_CHECKNAME2 { DEFINE_PACKET_HEADER(CZ_CHECKNAME2, 0x0b97) #endif // PACKETVER_MAIN_NUM >= 20201104 || PACKETVER_ZERO_NUM >= 20201118 +#if PACKETVER >= 20160302 struct PACKET_ZC_CHECKNAME { int16 PacketType; int32 CharId; int16 Class; int16 BaseLevel; -#if PACKETVER >= 20160316 char Name[24]; -#endif } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_CHECKNAME, 0x0a51) +#elif PACKETVER >= 20141119 +struct PACKET_ZC_CHECKNAME { + int16 PacketType; + int32 CharId; + int16 Class; + int16 BaseLevel; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_CHECKNAME, 0x0a14) +#endif struct PACKET_ZC_NOTIFY_UNREADMAIL { int16 PacketType; From 88d9ed817f1c8960d083164b181efa8039026431 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 24 Oct 2021 23:14:27 +0300 Subject: [PATCH 46/65] Update packet ZC_PC_PURCHASE_ITEMLIST --- src/map/clif.c | 6 +++++- src/map/packets_struct.h | 23 ++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 66a8523e226..04ecb63a24c 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -2213,7 +2213,7 @@ static void clif_buylist(struct map_session_data *sd, struct npc_data *nd) len = sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST) + shop_size * sizeof(struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub); WFIFOHEAD(fd, len); p = WFIFOP(fd, 0); - p->packetType = 0xc6; + p->packetType = HEADER_ZC_PC_PURCHASE_ITEMLIST; c = 0; @@ -2230,6 +2230,10 @@ static void clif_buylist(struct map_session_data *sd, struct npc_data *nd) p->items[c].discountPrice = pc->modifybuyvalue(sd, val, id->flag.ignore_discount); p->items[c].itemType = itemtype(id->type); p->items[c].itemId = (id->view_id > 0) ? id->view_id : id->nameid; +#if PACKETVER_MAIN_NUM >= 20210203 + p->items[c].viewSprite = id->view_sprite; + p->items[c].location = pc->item_equippoint(sd, id); +#endif // PACKETVER_MAIN_NUM >= 20210203 c++; } } diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 68a4b7c53f6..2c5a9ed3054 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -2927,6 +2927,26 @@ struct PACKET_ZC_PC_PURCHASE_MYITEMLIST { DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_MYITEMLIST, 0x0136); #endif // PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200723 +#if PACKETVER_MAIN_NUM >= 20210203 +struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub { +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 itemId; +#else + uint16 itemId; +#endif + uint32 price; + uint32 discountPrice; + uint8 itemType; + uint16 viewSprite; + uint32 location; +} __attribute__((packed)); +struct PACKET_ZC_PC_PURCHASE_ITEMLIST { + int16 packetType; + int16 packetLength; + struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub items[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_ITEMLIST, 0x0b77) +#else // PACKETVER_MAIN_NUM >= 20210203 struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub { uint32 price; uint32 discountPrice; @@ -2937,12 +2957,13 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub { uint16 itemId; #endif } __attribute__((packed)); - struct PACKET_ZC_PC_PURCHASE_ITEMLIST { int16 packetType; int16 packetLength; struct PACKET_ZC_PC_PURCHASE_ITEMLIST_sub items[]; } __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PC_PURCHASE_ITEMLIST, 0x00c6) +#endif // PACKETVER_MAIN_NUM >= 20210203 struct PACKET_CZ_PC_PURCHASE_ITEMLIST_sub { uint16 amount; From 3c7b7196492d19dad81d7c18f6fb5573e8ff98b8 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 25 Oct 2021 04:22:40 +0300 Subject: [PATCH 47/65] Update packet ZC_NPC_BARTER_OPEN --- src/map/clif.c | 4 ++++ src/map/packets_struct.h | 30 +++++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 04ecb63a24c..62fd9d2b657 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -24006,6 +24006,10 @@ static void clif_npc_barter_open(struct map_session_data *sd, struct npc_data *n packet->list[c].currencyAmount = shop[i].value2; packet->list[c].weight = id->weight * 10; packet->list[c].index = i; +#if PACKETVER_MAIN_NUM >= 20210203 + packet->list[c].viewSprite = id->view_sprite; + packet->list[c].location = pc->item_equippoint(sd, id); +#endif // PACKETVER_MAIN_NUM >= 20210203 c++; } } diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 2c5a9ed3054..9d33a12bdd4 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -3649,7 +3649,33 @@ struct PACKET_CZ_PARTY_CONFIG { } __attribute__((packed)); DEFINE_PACKET_HEADER(CZ_PARTY_CONFIG, 0x02c8); -#if PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226 +#if PACKETVER_MAIN_NUM >= 20210203 +struct PACKET_ZC_NPC_BARTER_OPEN_sub { +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 nameid; +#else + uint16 nameid; +#endif + uint8 type; + uint32 amount; +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 currencyNameid; +#else + uint16 currencyNameid; +#endif + uint32 currencyAmount; + uint32 weight; + uint32 index; + uint16 viewSprite; + uint32 location; +} __attribute__((packed)); +struct PACKET_ZC_NPC_BARTER_OPEN { + int16 packetType; + int16 packetLength; + struct PACKET_ZC_NPC_BARTER_OPEN_sub list[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_NPC_BARTER_OPEN, 0x0b78); +#elif PACKETVER_MAIN_NUM >= 20190116 || PACKETVER_RE_NUM >= 20190116 || PACKETVER_ZERO_NUM >= 20181226 struct PACKET_ZC_NPC_BARTER_OPEN_sub { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 nameid; @@ -3667,13 +3693,11 @@ struct PACKET_ZC_NPC_BARTER_OPEN_sub { uint32 weight; uint32 index; } __attribute__((packed)); - struct PACKET_ZC_NPC_BARTER_OPEN { int16 packetType; int16 packetLength; struct PACKET_ZC_NPC_BARTER_OPEN_sub list[]; } __attribute__((packed)); - DEFINE_PACKET_HEADER(ZC_NPC_BARTER_OPEN, 0x0b0e); #endif From 74b3a2ed0aad5f4ceb8327bb7d57cefe7fd79f03 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 25 Oct 2021 19:30:30 +0300 Subject: [PATCH 48/65] Update packet ZC_NPC_EXPANDED_BARTER_OPEN --- src/map/clif.c | 4 ++++ src/map/packets_struct.h | 47 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 62fd9d2b657..557a43f220e 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -24097,6 +24097,10 @@ static void clif_npc_expanded_barter_open(struct map_session_data *sd, struct np item->weight = id->weight * 10; item->index = i; item->zeny = shop[i].value; +#if PACKETVER_MAIN_NUM >= 20210203 + item->viewSprite = id->view_sprite; + item->location = pc->item_equippoint(sd, id); +#endif // PACKETVER_MAIN_NUM >= 20210203 item->currency_count = 0; buf_left -= ptr_size; items_count ++; diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 9d33a12bdd4..b1d092441cc 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -4325,7 +4325,7 @@ struct PACKET_CZ_NPC_EXPANDED_BARTER_CLOSE { DEFINE_PACKET_HEADER(CZ_NPC_EXPANDED_BARTER_CLOSE, 0x0b58); #endif -#if PACKETVER_MAIN_NUM >= 20191120 || PACKETVER_RE_NUM >= 20191106 || PACKETVER_ZERO_NUM >= 20191127 +#if PACKETVER_MAIN_NUM >= 20210203 struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 uint32 nameid; @@ -4348,6 +4348,8 @@ struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub { uint32 weight; uint32 index; uint32 zeny; + uint16 viewSprite; + uint32 location; uint32 currency_count; // Workaround for fix Visual Studio bug (error C2233). Here should be currencies[] struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 currencies[1]; @@ -4365,8 +4367,49 @@ struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN { struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub items[]; } __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_NPC_EXPANDED_BARTER_OPEN, 0x0b56); +DEFINE_PACKET_HEADER(ZC_NPC_EXPANDED_BARTER_OPEN, 0x0b79); +#elif PACKETVER_MAIN_NUM >= 20191120 || PACKETVER_RE_NUM >= 20191106 || PACKETVER_ZERO_NUM >= 20191127 +struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 { +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 nameid; +#else + uint16 nameid; +#endif + uint16 refine_level; + uint32 amount; + uint16 type; +} __attribute__((packed)); + +struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub { +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 nameid; +#else + uint16 nameid; #endif + uint16 type; + uint32 amount; + uint32 weight; + uint32 index; + uint32 zeny; + uint32 currency_count; + // Workaround for fix Visual Studio bug (error C2233). Here should be currencies[] + struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2 currencies[1]; +} __attribute__((packed)); + +// Workaround check for Visual Studio bug (error C2233) +STATIC_ASSERT(sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2[1]) == + sizeof(struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub2), + "Wrong PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub size"); + +struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN { + int16 packetType; + int16 packetLength; + int32 items_count; + struct PACKET_ZC_NPC_EXPANDED_BARTER_OPEN_sub items[]; +} __attribute__((packed)); + +DEFINE_PACKET_HEADER(ZC_NPC_EXPANDED_BARTER_OPEN, 0x0b56); +#endif // PACKETVER_MAIN_NUM >= 20191120 || PACKETVER_RE_NUM >= 20191106 || PACKETVER_ZERO_NUM >= 20191127 #if PACKETVER_MAIN_NUM >= 20190904 || PACKETVER_RE_NUM >= 20190904 || PACKETVER_ZERO_NUM >= 20190828 struct PACKET_CZ_NPC_EXPANDED_BARTER_PURCHASE_sub { From 9500d7b22038b08414de7a058b096413b2bd5c40 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 25 Oct 2021 21:11:09 +0300 Subject: [PATCH 49/65] Update packet ZC_NPC_MARKET_OPEN --- src/map/clif.c | 3 +++ src/map/packets_struct.h | 23 ++++++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 557a43f220e..18cf2f90232 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -21631,6 +21631,9 @@ static void clif_npc_market_open(struct map_session_data *sd, struct npc_data *n packet->list[c].qty = shop[i].qty; packet->list[c].type = itemtype(id->type); packet->list[c].weight = id->weight * 10; +#if PACKETVER_MAIN_NUM >= 20210203 + packet->list[c].location = pc->item_equippoint(sd, id); +#endif // PACKETVER_MAIN_NUM >= 20210203 c++; } } diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index b1d092441cc..89407b3e3c5 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -1466,7 +1466,26 @@ struct packet_npc_market_purchase { } list[]; // Note: We assume this should be <= MAX_INVENTORY (since you can't hold more than MAX_INVENTORY items thus cant buy that many at once). } __attribute__((packed)); -#if PACKETVER_MAIN_NUM >= 20131120 || PACKETVER_RE_NUM >= 20131106 || defined(PACKETVER_ZERO) +#if PACKETVER_MAIN_NUM >= 20210203 +struct PACKET_ZC_NPC_MARKET_OPEN_sub { +#if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 + uint32 nameid; +#else + uint16 nameid; +#endif + uint8 type; + uint32 price; + uint32 qty; + uint16 weight; + uint32 location; +} __attribute__((packed)); +struct PACKET_ZC_NPC_MARKET_OPEN { + int16 packetType; + int16 packetLength; + struct PACKET_ZC_NPC_MARKET_OPEN_sub list[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_NPC_MARKET_OPEN, 0x0b7a); +#elif PACKETVER_MAIN_NUM >= 20131120 || PACKETVER_RE_NUM >= 20131106 || defined(PACKETVER_ZERO) /* inner struct figured by Ind after some annoying hour of debugging (data Thanks to Yommy) */ struct PACKET_ZC_NPC_MARKET_OPEN_sub { #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 @@ -1479,13 +1498,11 @@ struct PACKET_ZC_NPC_MARKET_OPEN_sub { uint32 qty; uint16 weight; } __attribute__((packed)); - struct PACKET_ZC_NPC_MARKET_OPEN { int16 packetType; int16 packetLength; struct PACKET_ZC_NPC_MARKET_OPEN_sub list[]; } __attribute__((packed)); - DEFINE_PACKET_HEADER(ZC_NPC_MARKET_OPEN, 0x09d5); #endif From 20f31b1b0aeacef7c756588155633fea82fc474b Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 26 Oct 2021 00:50:23 +0300 Subject: [PATCH 50/65] Update packet ZC_PROPERTY_HOMUN --- src/map/clif.c | 5 +++++ src/map/packets_struct.h | 30 +++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/map/clif.c b/src/map/clif.c index 18cf2f90232..ce720bb71c6 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -1763,8 +1763,13 @@ static void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int p.maxSp = hstatus->max_sp; } #endif // PACKETVER_MAIN_NUM >= 20200819 || PACKETVER_RE_NUM >= 20200723 +#if PACKETVER_MAIN_NUM >= 20210303 + p.exp = hd->homunculus.exp; + p.expNext = hd->exp_next; +#else // PACKETVER_MAIN_NUM >= 20210303 p.exp = (uint32)min(hd->homunculus.exp, UINT32_MAX); p.expNext = (uint32)min(hd->exp_next, UINT32_MAX); +#endif // PACKETVER_MAIN_NUM >= 20210303 if (hd->homunculus.level >= homun->get_max_level(hd)) p.expNext = 0; diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 89407b3e3c5..84924546b1e 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -2665,7 +2665,35 @@ struct PACKET_ZC_ACK_WEAPONREFINE { #endif } __attribute__((packed)); -#if PACKETVER_MAIN_NUM >= 20200819 || PACKETVER_RE_NUM >= 20200723 +#if PACKETVER_MAIN_NUM >= 20210303 +// PACKET_ZC_PROPERTY_HOMUN4 +struct PACKET_ZC_PROPERTY_HOMUN { + int16 packetType; + char name[NAME_LENGTH]; + // Bit field, bit 0 : rename_flag (1 = already renamed), bit 1 : homunc vaporized (1 = true), bit 2 : homunc dead (1 = true) + uint8 flags; + uint16 level; + uint16 hunger; + uint16 intimacy; + uint16 atk2; + uint16 matk; + uint16 hit; + uint16 crit; + uint16 def; + uint16 mdef; + uint16 flee; + uint16 amotion; + uint32 hp; + uint32 maxHp; + uint32 sp; + uint32 maxSp; + int64 exp; + int64 expNext; + uint16 skillPoints; + uint16 range; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PROPERTY_HOMUN, 0x0ba4); +#elif PACKETVER_MAIN_NUM >= 20200819 || PACKETVER_RE_NUM >= 20200723 // PACKET_ZC_PROPERTY_HOMUN3 struct PACKET_ZC_PROPERTY_HOMUN { int16 packetType; From e53c401834701c9a55d4f327bf01495976dce436 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 26 Oct 2021 17:12:46 +0300 Subject: [PATCH 51/65] Add at command @unequipall --- doc/atcommands.txt | 6 ++++++ src/map/atcommand.c | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/doc/atcommands.txt b/doc/atcommands.txt index 65c3bb09105..f5c27011f02 100644 --- a/doc/atcommands.txt +++ b/doc/atcommands.txt @@ -1584,3 +1584,9 @@ Obs: it will reload 'db/clans.conf' too since it's included inside 'conf/clans.c Allow show/hide or change client camera parameters --------------------------------------- + +@unequipall + +Unequip all equipped items. + +--------------------------------------- diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 3d57d40e5b5..19489366343 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -6989,6 +6989,15 @@ ACMD(changecharsex) return true; } +ACMD(unequipall) +{ + for (int i = 0; i < EQI_MAX; i++) { + if (sd->equip_index[i] >= 0) + pc->unequipitem(sd, sd->equip_index[i], PCUNEQUIPITEM_RECALC | PCUNEQUIPITEM_FORCE); + } + return true; +} + /*================================================ * @mute - Mutes a player for a set amount of time *------------------------------------------------*/ @@ -10517,6 +10526,7 @@ static void atcommand_basecommands(void) ACMD_DEF(uptime), ACMD_DEF(changesex), ACMD_DEF(changecharsex), + ACMD_DEF(unequipall), ACMD_DEF(mute), ACMD_DEF(refresh), ACMD_DEF(refreshall), From 1bc579fe7f831b338405b22dad71f72baa94fda5 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 26 Oct 2021 18:46:30 +0300 Subject: [PATCH 52/65] Add packets for unequip all items --- src/map/atcommand.c | 18 ++++++++++++++ src/map/clif.c | 51 ++++++++++++++++++++++++++++++++++++++++ src/map/clif.h | 7 ++++++ src/map/packets.h | 4 ++++ src/map/packets_struct.h | 15 ++++++++++++ 5 files changed, 95 insertions(+) diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 19489366343..e6662b62060 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -6991,6 +6991,24 @@ ACMD(changecharsex) ACMD(unequipall) { + if (pc_isvending(sd)) + return false; + + if (pc_isdead(sd)) { + clif->clearunit_area(&sd->bl,CLR_DEAD); + return false; + } + + if (sd->npc_id) { + if ((sd->npc_item_flag & ITEMENABLEDNPC_EQUIP) == 0 && sd->state.using_megaphone == 0) + return false; + } else if (sd->state.storage_flag != STORAGE_FLAG_CLOSED || sd->sc.opt1) { + ; //You can equip/unequip stuff while storage is open/under status changes + } else if (pc_cant_act2(sd) || sd->state.prerefining) + return false; + + pc->update_idle_time(sd, BCIDLE_USEITEM); + for (int i = 0; i < EQI_MAX; i++) { if (sd->equip_index[i] >= 0) pc->unequipitem(sd, sd->equip_index[i], PCUNEQUIPITEM_RECALC | PCUNEQUIPITEM_FORCE); diff --git a/src/map/clif.c b/src/map/clif.c index ce720bb71c6..9ef5169455b 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -12453,6 +12453,55 @@ static void clif_parse_UnequipItem(int fd, struct map_session_data *sd) pc->unequipitem(sd,index, PCUNEQUIPITEM_RECALC); } +static void clif_parse_UnequipAllItems(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); +static void clif_parse_UnequipAllItems(int fd, struct map_session_data *sd) +{ +#if PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_ZERO_NUM >= 20210818 + // commented because no fields in use + // struct PACKET_CZ_REQ_TAKEOFF_EQUIP_ALL *p = RFIFOP(fd, 0); + + if (pc_isvending(sd)) { + clif->unequipAllItemsAck(sd, TAKEOFF_EQUIP_ALL_FAILED); + return; + } + + if (pc_isdead(sd)) { + clif->clearunit_area(&sd->bl,CLR_DEAD); + return; + } + + if (sd->npc_id) { + if ((sd->npc_item_flag & ITEMENABLEDNPC_EQUIP) == 0 && sd->state.using_megaphone == 0) { + clif->unequipAllItemsAck(sd, TAKEOFF_EQUIP_ALL_FAILED); + return; + } + } else if (sd->state.storage_flag != STORAGE_FLAG_CLOSED || sd->sc.opt1) { + ; //You can equip/unequip stuff while storage is open/under status changes + } else if (pc_cant_act2(sd) || sd->state.prerefining) { + clif->unequipAllItemsAck(sd, TAKEOFF_EQUIP_ALL_FAILED); + return; + } + + pc->update_idle_time(sd, BCIDLE_USEITEM); + + char command[20]; + sprintf(command, "%cunequipall", atcommand->at_symbol); + atcommand->exec(sd->fd, sd, command, true); + + clif->unequipAllItemsAck(sd, TAKEOFF_EQUIP_ALL_SUCCESS); +#endif // PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_ZERO_NUM >= 20210818 +} + +static void clif_unequipAllItemsAck(struct map_session_data *sd, enum unequip_all result) +{ +#if PACKETVER_MAIN_NUM >= 20210818 + struct PACKET_ZC_TAKEOFF_EQUIP_ALL_ACK packet = {0}; + packet.PacketType = HEADER_ZC_TAKEOFF_EQUIP_ALL_ACK; + packet.result = result; + clif->send(&packet, sizeof(struct PACKET_ZC_TAKEOFF_EQUIP_ALL_ACK), &sd->bl, SELF); +#endif // PACKETVER_MAIN_NUM >= 20210818 +} + static void clif_parse_NpcClicked(int fd, struct map_session_data *sd) __attribute__((nonnull (2))); /// Request to start a conversation with an NPC (CZ_CONTACTNPC). /// 0090 .L .B @@ -25333,6 +25382,7 @@ void clif_defaults(void) clif->cart_delitem = clif_cart_delitem; clif->equipitemack = clif_equipitemack; clif->unequipitemack = clif_unequipitemack; + clif->unequipAllItemsAck = clif_unequipAllItemsAck; clif->useitemack = clif_useitemack; clif->addcards = clif_addcards; clif->item_sub = clif_item_sub; // look like unused @@ -25893,6 +25943,7 @@ void clif_defaults(void) clif->pUseItem = clif_parse_UseItem; clif->pEquipItem = clif_parse_EquipItem; clif->pUnequipItem = clif_parse_UnequipItem; + clif->pUnequipAllItems = clif_parse_UnequipAllItems; clif->pNpcClicked = clif_parse_NpcClicked; clif->pNpcBuySellSelected = clif_parse_NpcBuySellSelected; clif->pNpcBuyListSend = clif_parse_NpcBuyListSend; diff --git a/src/map/clif.h b/src/map/clif.h index 9c490449be1..fcacfdce360 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -667,6 +667,11 @@ enum action_type { ACT_TOUCHSKILL }; +enum unequip_all { + TAKEOFF_EQUIP_ALL_SUCCESS = 0, + TAKEOFF_EQUIP_ALL_FAILED = 1 +}; + /** * Structures **/ @@ -862,6 +867,7 @@ struct clif_interface { void (*cart_delitem) (struct map_session_data *sd,int n,int amount); void (*equipitemack) (struct map_session_data *sd,int n,int pos,enum e_EQUIP_ITEM_ACK result); void (*unequipitemack) (struct map_session_data *sd,int n,int pos,enum e_UNEQUIP_ITEM_ACK result); + void (*unequipAllItemsAck) (struct map_session_data *sd, enum unequip_all result); void (*useitemack) (struct map_session_data *sd,int index,int amount,bool ok); void (*addcards) (struct EQUIPSLOTINFO *buf, struct item* item); void (*item_sub) (unsigned char *buf, int n, struct item *i, struct item_data *id, int equip); @@ -1419,6 +1425,7 @@ struct clif_interface { void (*pUseItem) (int fd, struct map_session_data *sd); void (*pEquipItem) (int fd,struct map_session_data *sd); void (*pUnequipItem) (int fd,struct map_session_data *sd); + void (*pUnequipAllItems) (int fd,struct map_session_data *sd); void (*pNpcClicked) (int fd,struct map_session_data *sd); void (*pNpcBuySellSelected) (int fd,struct map_session_data *sd); void (*pNpcBuyListSend) (int fd, struct map_session_data* sd); diff --git a/src/map/packets.h b/src/map/packets.h index 81bb162b0d9..8d50a2a34bd 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -2018,4 +2018,8 @@ packet(0x96e,clif->ackmergeitems); packet(0x0b97,clif->pRodexCheckName2); #endif // PACKETVER_MAIN_NUM >= 20201104 || PACKETVER_ZERO_NUM >= 20201118 +#if PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_ZERO_NUM >= 20210818 + packet(0x0bad,clif->pUnequipAllItems); +#endif // PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_ZERO_NUM >= 20210818 + #endif /* MAP_PACKETS_H */ diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 84924546b1e..6dc745028d3 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -5082,6 +5082,21 @@ struct PACKET_ZC_DELETE_MEMBER_FROM_GROUP { } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_DELETE_MEMBER_FROM_GROUP, 0x0105); +#if PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_ZERO_NUM >= 20210818 +struct PACKET_CZ_REQ_TAKEOFF_EQUIP_ALL { + int16 PacketType; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(CZ_REQ_TAKEOFF_EQUIP_ALL, 0x0bad); +#endif // PACKETVER_MAIN_NUM >= 20210818 || PACKETVER_ZERO_NUM >= 20210818 + +#if PACKETVER_MAIN_NUM >= 20210818 +struct PACKET_ZC_TAKEOFF_EQUIP_ALL_ACK { + int16 PacketType; + uint8 result; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_TAKEOFF_EQUIP_ALL_ACK, 0x0bae); +#endif // PACKETVER_MAIN_NUM >= 20210818 + #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #pragma pack(pop) #endif // not NetBSD < 6 / Solaris From bea29eb97803fbfd0958a24207176ef9743b666d Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 29 Oct 2021 00:02:03 +0300 Subject: [PATCH 53/65] Use struct in all versions of packet ZC_NOTIFY_HP_TO_GROUPM --- src/map/clif.c | 58 ++++++++++++---------------------------- src/map/packets_struct.h | 22 +++++++-------- 2 files changed, 28 insertions(+), 52 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index 9ef5169455b..754e6199a40 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -3383,11 +3383,6 @@ static void clif_guild_xy_remove(struct map_session_data *sd) *------------------------------------------*/ static int clif_hpmeter_sub(struct block_list *bl, va_list ap) { -#if PACKETVER < 20100126 - const int cmd = 0x106; -#else - const int cmd = 0x80e; -#endif struct map_session_data *sd = va_arg(ap, struct map_session_data *); struct map_session_data *tsd = BL_CAST(BL_PC, bl); @@ -3399,23 +3394,8 @@ static int clif_hpmeter_sub(struct block_list *bl, va_list ap) if( !pc_has_permission(tsd, PC_PERM_VIEW_HPMETER) ) return 0; - WFIFOHEAD(tsd->fd,packet_len(cmd)); - WFIFOW(tsd->fd,0) = cmd; - WFIFOL(tsd->fd,2) = sd->status.account_id; -#if PACKETVER < 20100126 - if( sd->battle_status.max_hp > INT16_MAX ) - { //To correctly display the %hp bar. [Skotlex] - WFIFOW(tsd->fd,6) = sd->battle_status.hp/(sd->battle_status.max_hp/100); - WFIFOW(tsd->fd,8) = 100; - } else { - WFIFOW(tsd->fd,6) = sd->battle_status.hp; - WFIFOW(tsd->fd,8) = sd->battle_status.max_hp; - } -#else - WFIFOL(tsd->fd,6) = sd->battle_status.hp; - WFIFOL(tsd->fd,10) = sd->battle_status.max_hp; -#endif - WFIFOSET(tsd->fd,packet_len(cmd)); + + clif->hpmeter_single(tsd->fd, sd->status.account_id, sd->battle_status.hp, sd->battle_status.max_hp); return 0; } @@ -7630,7 +7610,7 @@ static void clif_party_hp(struct map_session_data *sd) struct PACKET_ZC_NOTIFY_HP_TO_GROUPM p = {0}; p.PacketType = HEADER_ZC_NOTIFY_HP_TO_GROUPM; p.AID = sd->status.account_id; -#if PACKETVER < 20100126 +#if PACKETVER < 20100119 if (sd->battle_status.max_hp > INT16_MAX) { //To correctly display the %hp bar. [Skotlex] p.hp = sd->battle_status.hp/(sd->battle_status.max_hp/100); p.maxhp = 100; @@ -7650,28 +7630,24 @@ static void clif_party_hp(struct map_session_data *sd) *------------------------------------------*/ static void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp) { -#if PACKETVER < 20100126 - const int cmd = 0x106; -#else - const int cmd = 0x80e; -#endif - WFIFOHEAD(fd,packet_len(cmd)); - WFIFOW(fd,0) = cmd; - WFIFOL(fd,2) = id; -#if PACKETVER < 20100126 - if( maxhp > INT16_MAX ) - {// To correctly display the %hp bar. [Skotlex] - WFIFOW(fd,6) = hp/(maxhp/100); - WFIFOW(fd,8) = 100; + WFIFOHEAD(fd, sizeof(struct PACKET_ZC_NOTIFY_HP_TO_GROUPM)); + struct PACKET_ZC_NOTIFY_HP_TO_GROUPM *p = WFIFOP(fd, 0); + p->PacketType = HEADER_ZC_NOTIFY_HP_TO_GROUPM; + p->AID = id; +#if PACKETVER < 20100119 + if (maxhp > INT16_MAX) { //To correctly display the %hp bar. [Skotlex] + p->hp = hp / (maxhp / 100); + p->maxhp = 100; } else { - WFIFOW(fd,6) = hp; - WFIFOW(fd,8) = maxhp; + p->hp = hp; + p->maxhp = maxhp; } #else - WFIFOL(fd,6) = hp; - WFIFOL(fd,10) = maxhp; + p->hp = hp; + p->maxhp = maxhp; #endif - WFIFOSET(fd, packet_len(cmd)); + + WFIFOSET(fd, sizeof(struct PACKET_ZC_NOTIFY_HP_TO_GROUPM)); } /// Notifies the client, that it's attack target is too far (ZC_ATTACK_FAILURE_FOR_DISTANCE). diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 6dc745028d3..dbbb0e82cea 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -5046,23 +5046,23 @@ struct PACKET_ZC_NOTIFY_POSITION_TO_GROUPM { } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_NOTIFY_POSITION_TO_GROUPM, 0x0107); -#if PACKETVER < 20100126 +#if PACKETVER >= 20100119 struct PACKET_ZC_NOTIFY_HP_TO_GROUPM { int16 PacketType; - int AID; - int16 hp; - int16 maxhp; -} __attribute__((packed)); -DEFINE_PACKET_HEADER(ZC_NOTIFY_HP_TO_GROUPM, 0x0106); -#else -struct PACKET_ZC_NOTIFY_HP_TO_GROUPM { - int16 PacketType; - int AID; + uint32 AID; int hp; int maxhp; } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_NOTIFY_HP_TO_GROUPM, 0x080e); -#endif +#else // PACKETVER >= 20100119 +struct PACKET_ZC_NOTIFY_HP_TO_GROUPM { + int16 PacketType; + uint32 AID; + int16 hp; + int16 maxhp; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_NOTIFY_HP_TO_GROUPM, 0x0106); +#endif // PACKETVER >= 20100119 #if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO) struct PACKET_ZC_PARTY_MEMBER_JOB_LEVEL { From d507e2b4a9de1955f9bf9d3073656bab9f4bebce Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 29 Oct 2021 00:41:52 +0300 Subject: [PATCH 54/65] Update packet ZC_NOTIFY_HP_TO_GROUPM --- src/map/battleground.c | 2 +- src/map/clif.c | 20 ++++++++++++++------ src/map/clif.h | 2 +- src/map/elemental.c | 2 +- src/map/packets_struct.h | 12 +++++++++++- src/map/party.c | 2 +- 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/map/battleground.c b/src/map/battleground.c index 9f67876af1b..c6c1352210f 100644 --- a/src/map/battleground.c +++ b/src/map/battleground.c @@ -132,7 +132,7 @@ static bool bg_team_join(int bg_id, struct map_session_data *sd) for( i = 0; i < MAX_BG_MEMBERS; i++ ) { struct map_session_data *pl_sd = bgd->members[i].sd; if (pl_sd != NULL && pl_sd != sd) - clif->hpmeter_single(sd->fd, pl_sd->bl.id, pl_sd->battle_status.hp, pl_sd->battle_status.max_hp); + clif->hpmeter_single(sd->fd, pl_sd->bl.id, pl_sd->battle_status.hp, pl_sd->battle_status.max_hp, pl_sd->battle_status.sp, pl_sd->battle_status.max_sp); } clif->bg_hp(sd); diff --git a/src/map/clif.c b/src/map/clif.c index 754e6199a40..f8abf881392 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -3395,7 +3395,7 @@ static int clif_hpmeter_sub(struct block_list *bl, va_list ap) if( !pc_has_permission(tsd, PC_PERM_VIEW_HPMETER) ) return 0; - clif->hpmeter_single(tsd->fd, sd->status.account_id, sd->battle_status.hp, sd->battle_status.max_hp); + clif->hpmeter_single(tsd->fd, sd->status.account_id, sd->battle_status.hp, sd->battle_status.max_hp, sd->battle_status.sp, sd->battle_status.max_sp); return 0; } @@ -4829,8 +4829,9 @@ static void clif_getareachar_pc(struct map_session_data *sd, struct map_session_ if( (sd->status.party_id && dstsd->status.party_id == sd->status.party_id) || //Party-mate, or hpdisp setting. (sd->bg_id && sd->bg_id == dstsd->bg_id) || //BattleGround pc_has_permission(sd, PC_PERM_VIEW_HPMETER) - ) - clif->hpmeter_single(sd->fd, dstsd->bl.id, dstsd->battle_status.hp, dstsd->battle_status.max_hp); + ) { + clif->hpmeter_single(sd->fd, dstsd->bl.id, dstsd->battle_status.hp, dstsd->battle_status.max_hp, dstsd->battle_status.sp, dstsd->battle_status.max_sp); + } // display link (sd - dstsd) to sd ARR_FIND( 0, MAX_PC_DEVOTION, i, sd->devotion[i] == dstsd->bl.id ); @@ -7622,13 +7623,17 @@ static void clif_party_hp(struct map_session_data *sd) p.hp = sd->battle_status.hp; p.maxhp = sd->battle_status.max_hp; #endif +#if PACKETVER_ZERO_NUM >= 20210504 + p.sp = sd->battle_status.sp; + p.maxsp = sd->battle_status.max_sp; +#endif // PACKETVER_ZERO_NUM >= 20210504 clif->send(&p, sizeof(struct PACKET_ZC_NOTIFY_HP_TO_GROUPM), &sd->bl, PARTY_AREA_WOS); } /*========================================== * Sends HP bar to a single fd. [Skotlex] *------------------------------------------*/ -static void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp) +static void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp, unsigned int sp, unsigned int maxsp) { WFIFOHEAD(fd, sizeof(struct PACKET_ZC_NOTIFY_HP_TO_GROUPM)); struct PACKET_ZC_NOTIFY_HP_TO_GROUPM *p = WFIFOP(fd, 0); @@ -7646,7 +7651,10 @@ static void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int ma p->hp = hp; p->maxhp = maxhp; #endif - +#if PACKETVER_ZERO_NUM >= 20210504 + p->sp = sp; + p->maxsp = maxsp; +#endif // PACKETVER_ZERO_NUM >= 20210504 WFIFOSET(fd, sizeof(struct PACKET_ZC_NOTIFY_HP_TO_GROUPM)); } @@ -11135,7 +11143,7 @@ static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) clif->spawn(&sd->ed->bl); clif->elemental_info(sd); clif->elemental_updatestatus(sd, SP_HP); - clif->hpmeter_single(sd->fd, sd->ed->bl.id, sd->ed->battle_status.hp, sd->ed->battle_status.max_hp); + clif->hpmeter_single(sd->fd, sd->ed->bl.id, sd->ed->battle_status.hp, sd->ed->battle_status.max_hp, sd->ed->battle_status.sp, sd->ed->battle_status.max_sp); clif->elemental_updatestatus(sd, SP_SP); status_calc_bl(&sd->ed->bl, SCB_SPEED); // Elementals mimic their master's speed on each map change. } diff --git a/src/map/clif.h b/src/map/clif.h index fcacfdce360..2e28fae6cd1 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -1015,7 +1015,7 @@ struct clif_interface { void (*monster_hp_bar) (struct mob_data *md, struct map_session_data *sd); bool (*show_monster_hp_bar) (struct block_list *bl); int (*hpmeter) (struct map_session_data *sd); - void (*hpmeter_single) (int fd, int id, unsigned int hp, unsigned int maxhp); + void (*hpmeter_single) (int fd, int id, unsigned int hp, unsigned int maxhp, unsigned int sp, unsigned int maxsp); int (*hpmeter_sub) (struct block_list *bl, va_list ap); void (*upgrademessage) (int fd, int result, int item_id); void (*get_weapon_view) (struct map_session_data* sd, int *rhand, int *lhand); diff --git a/src/map/elemental.c b/src/map/elemental.c index 526e0c266ad..539d6e204e4 100644 --- a/src/map/elemental.c +++ b/src/map/elemental.c @@ -321,7 +321,7 @@ static int elemental_data_received(const struct s_elemental *ele, bool flag) clif->spawn(&ed->bl); clif->elemental_info(sd); clif->elemental_updatestatus(sd,SP_HP); - clif->hpmeter_single(sd->fd,ed->bl.id,ed->battle_status.hp,ed->battle_status.max_hp); + clif->hpmeter_single(sd->fd, ed->bl.id, ed->battle_status.hp, ed->battle_status.max_hp, ed->battle_status.sp, ed->battle_status.max_sp); clif->elemental_updatestatus(sd,SP_SP); } diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index dbbb0e82cea..3246c8bebde 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -5046,7 +5046,17 @@ struct PACKET_ZC_NOTIFY_POSITION_TO_GROUPM { } __attribute__((packed)); DEFINE_PACKET_HEADER(ZC_NOTIFY_POSITION_TO_GROUPM, 0x0107); -#if PACKETVER >= 20100119 +#if PACKETVER_ZERO_NUM >= 20210504 +struct PACKET_ZC_NOTIFY_HP_TO_GROUPM { + int16 PacketType; + uint32 AID; + int hp; + int maxhp; + int sp; + int maxsp; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_NOTIFY_HP_TO_GROUPM, 0x0bab); +#elif PACKETVER >= 20100119 struct PACKET_ZC_NOTIFY_HP_TO_GROUPM { int16 PacketType; uint32 AID; diff --git a/src/map/party.c b/src/map/party.c index b7b86fae4df..e5042760801 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -550,7 +550,7 @@ static int party_member_added(int party_id, int account_id, int char_id, int fla {// hp of the other party members sd2 = p->data[i].sd; if( sd2 && sd2->status.account_id != account_id && sd2->status.char_id != char_id ) - clif->hpmeter_single(sd->fd, sd2->bl.id, sd2->battle_status.hp, sd2->battle_status.max_hp); + clif->hpmeter_single(sd->fd, sd2->bl.id, sd2->battle_status.hp, sd2->battle_status.max_hp, sd2->battle_status.sp, sd2->battle_status.max_sp); } clif->party_hp(sd); clif->party_xy(sd); From a48cbaa21f4f3f95e6b968d45b5df8504e586a6a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 29 Oct 2021 00:44:12 +0300 Subject: [PATCH 55/65] Update HPM --- src/common/HPMDataCheck.h | 1 - src/plugins/HPMHooking/HPMHooking.Defs.inc | 8 ++- .../HPMHooking_map.HPMHooksCore.inc | 8 +++ .../HPMHooking_map.HookingPoints.inc | 2 + .../HPMHooking/HPMHooking_map.Hooks.inc | 64 +++++++++++++++++-- 5 files changed, 74 insertions(+), 9 deletions(-) diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index 5871ed7b19c..f349c338bff 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -702,7 +702,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "PACKET_ZC_BAN_LIST_sub", sizeof(struct PACKET_ZC_BAN_LIST_sub), SERVER_TYPE_MAP }, { "PACKET_ZC_CASH_ITEM_DELETE", sizeof(struct PACKET_ZC_CASH_ITEM_DELETE), SERVER_TYPE_MAP }, { "PACKET_ZC_CASH_TIME_COUNTER", sizeof(struct PACKET_ZC_CASH_TIME_COUNTER), SERVER_TYPE_MAP }, - { "PACKET_ZC_CHECKNAME", sizeof(struct PACKET_ZC_CHECKNAME), SERVER_TYPE_MAP }, { "PACKET_ZC_DELETE_MEMBER_FROM_GROUP", sizeof(struct PACKET_ZC_DELETE_MEMBER_FROM_GROUP), SERVER_TYPE_MAP }, { "PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER", sizeof(struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER), SERVER_TYPE_MAP }, { "PACKET_ZC_FEED_MER", sizeof(struct PACKET_ZC_FEED_MER), SERVER_TYPE_MAP }, diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index d5ea37fccb0..8fbd3053266 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -1144,6 +1144,8 @@ typedef void (*HPMHOOK_pre_clif_equipitemack) (struct map_session_data **sd, int typedef void (*HPMHOOK_post_clif_equipitemack) (struct map_session_data *sd, int n, int pos, enum e_EQUIP_ITEM_ACK result); typedef void (*HPMHOOK_pre_clif_unequipitemack) (struct map_session_data **sd, int *n, int *pos, enum e_UNEQUIP_ITEM_ACK *result); typedef void (*HPMHOOK_post_clif_unequipitemack) (struct map_session_data *sd, int n, int pos, enum e_UNEQUIP_ITEM_ACK result); +typedef void (*HPMHOOK_pre_clif_unequipAllItemsAck) (struct map_session_data **sd, enum unequip_all *result); +typedef void (*HPMHOOK_post_clif_unequipAllItemsAck) (struct map_session_data *sd, enum unequip_all result); typedef void (*HPMHOOK_pre_clif_useitemack) (struct map_session_data **sd, int *index, int *amount, bool *ok); typedef void (*HPMHOOK_post_clif_useitemack) (struct map_session_data *sd, int index, int amount, bool ok); typedef void (*HPMHOOK_pre_clif_addcards) (struct EQUIPSLOTINFO **buf, struct item **item); @@ -1424,8 +1426,8 @@ typedef bool (*HPMHOOK_pre_clif_show_monster_hp_bar) (struct block_list **bl); typedef bool (*HPMHOOK_post_clif_show_monster_hp_bar) (bool retVal___, struct block_list *bl); typedef int (*HPMHOOK_pre_clif_hpmeter) (struct map_session_data **sd); typedef int (*HPMHOOK_post_clif_hpmeter) (int retVal___, struct map_session_data *sd); -typedef void (*HPMHOOK_pre_clif_hpmeter_single) (int *fd, int *id, unsigned int *hp, unsigned int *maxhp); -typedef void (*HPMHOOK_post_clif_hpmeter_single) (int fd, int id, unsigned int hp, unsigned int maxhp); +typedef void (*HPMHOOK_pre_clif_hpmeter_single) (int *fd, int *id, unsigned int *hp, unsigned int *maxhp, unsigned int *sp, unsigned int *maxsp); +typedef void (*HPMHOOK_post_clif_hpmeter_single) (int fd, int id, unsigned int hp, unsigned int maxhp, unsigned int sp, unsigned int maxsp); typedef int (*HPMHOOK_pre_clif_hpmeter_sub) (struct block_list **bl, va_list ap); typedef int (*HPMHOOK_post_clif_hpmeter_sub) (int retVal___, struct block_list *bl, va_list ap); typedef void (*HPMHOOK_pre_clif_upgrademessage) (int *fd, int *result, int *item_id); @@ -2156,6 +2158,8 @@ typedef void (*HPMHOOK_pre_clif_pEquipItem) (int *fd, struct map_session_data ** typedef void (*HPMHOOK_post_clif_pEquipItem) (int fd, struct map_session_data *sd); typedef void (*HPMHOOK_pre_clif_pUnequipItem) (int *fd, struct map_session_data **sd); typedef void (*HPMHOOK_post_clif_pUnequipItem) (int fd, struct map_session_data *sd); +typedef void (*HPMHOOK_pre_clif_pUnequipAllItems) (int *fd, struct map_session_data **sd); +typedef void (*HPMHOOK_post_clif_pUnequipAllItems) (int fd, struct map_session_data *sd); typedef void (*HPMHOOK_pre_clif_pNpcClicked) (int *fd, struct map_session_data **sd); typedef void (*HPMHOOK_post_clif_pNpcClicked) (int fd, struct map_session_data *sd); typedef void (*HPMHOOK_pre_clif_pNpcBuySellSelected) (int *fd, struct map_session_data **sd); diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index ed33308290f..e75bdf5ef27 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -734,6 +734,8 @@ struct { struct HPMHookPoint *HP_clif_equipitemack_post; struct HPMHookPoint *HP_clif_unequipitemack_pre; struct HPMHookPoint *HP_clif_unequipitemack_post; + struct HPMHookPoint *HP_clif_unequipAllItemsAck_pre; + struct HPMHookPoint *HP_clif_unequipAllItemsAck_post; struct HPMHookPoint *HP_clif_useitemack_pre; struct HPMHookPoint *HP_clif_useitemack_post; struct HPMHookPoint *HP_clif_addcards_pre; @@ -1746,6 +1748,8 @@ struct { struct HPMHookPoint *HP_clif_pEquipItem_post; struct HPMHookPoint *HP_clif_pUnequipItem_pre; struct HPMHookPoint *HP_clif_pUnequipItem_post; + struct HPMHookPoint *HP_clif_pUnequipAllItems_pre; + struct HPMHookPoint *HP_clif_pUnequipAllItems_post; struct HPMHookPoint *HP_clif_pNpcClicked_pre; struct HPMHookPoint *HP_clif_pNpcClicked_post; struct HPMHookPoint *HP_clif_pNpcBuySellSelected_pre; @@ -7957,6 +7961,8 @@ struct { int HP_clif_equipitemack_post; int HP_clif_unequipitemack_pre; int HP_clif_unequipitemack_post; + int HP_clif_unequipAllItemsAck_pre; + int HP_clif_unequipAllItemsAck_post; int HP_clif_useitemack_pre; int HP_clif_useitemack_post; int HP_clif_addcards_pre; @@ -8969,6 +8975,8 @@ struct { int HP_clif_pEquipItem_post; int HP_clif_pUnequipItem_pre; int HP_clif_pUnequipItem_post; + int HP_clif_pUnequipAllItems_pre; + int HP_clif_pUnequipAllItems_post; int HP_clif_pNpcClicked_pre; int HP_clif_pNpcClicked_post; int HP_clif_pNpcBuySellSelected_pre; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index e0df3ccc867..c977e608003 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -391,6 +391,7 @@ struct HookingPointData HookingPoints[] = { { HP_POP(clif->cart_delitem, HP_clif_cart_delitem) }, { HP_POP(clif->equipitemack, HP_clif_equipitemack) }, { HP_POP(clif->unequipitemack, HP_clif_unequipitemack) }, + { HP_POP(clif->unequipAllItemsAck, HP_clif_unequipAllItemsAck) }, { HP_POP(clif->useitemack, HP_clif_useitemack) }, { HP_POP(clif->addcards, HP_clif_addcards) }, { HP_POP(clif->item_sub, HP_clif_item_sub) }, @@ -897,6 +898,7 @@ struct HookingPointData HookingPoints[] = { { HP_POP(clif->pUseItem, HP_clif_pUseItem) }, { HP_POP(clif->pEquipItem, HP_clif_pEquipItem) }, { HP_POP(clif->pUnequipItem, HP_clif_pUnequipItem) }, + { HP_POP(clif->pUnequipAllItems, HP_clif_pUnequipAllItems) }, { HP_POP(clif->pNpcClicked, HP_clif_pNpcClicked) }, { HP_POP(clif->pNpcBuySellSelected, HP_clif_pNpcBuySellSelected) }, { HP_POP(clif->pNpcBuyListSend, HP_clif_pNpcBuyListSend) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index 0dc97c3d34c..bf7b5991ad1 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -9552,6 +9552,32 @@ void HP_clif_unequipitemack(struct map_session_data *sd, int n, int pos, enum e_ } return; } +void HP_clif_unequipAllItemsAck(struct map_session_data *sd, enum unequip_all result) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_unequipAllItemsAck_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, enum unequip_all *result); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_unequipAllItemsAck_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_unequipAllItemsAck_pre[hIndex].func; + preHookFunc(&sd, &result); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.unequipAllItemsAck(sd, result); + } + if (HPMHooks.count.HP_clif_unequipAllItemsAck_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, enum unequip_all result); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_unequipAllItemsAck_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_unequipAllItemsAck_post[hIndex].func; + postHookFunc(sd, result); + } + } + return; +} void HP_clif_useitemack(struct map_session_data *sd, int index, int amount, bool ok) { int hIndex = 0; if (HPMHooks.count.HP_clif_useitemack_pre > 0) { @@ -13219,14 +13245,14 @@ int HP_clif_hpmeter(struct map_session_data *sd) { } return retVal___; } -void HP_clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp) { +void HP_clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp, unsigned int sp, unsigned int maxsp) { int hIndex = 0; if (HPMHooks.count.HP_clif_hpmeter_single_pre > 0) { - void (*preHookFunc) (int *fd, int *id, unsigned int *hp, unsigned int *maxhp); + void (*preHookFunc) (int *fd, int *id, unsigned int *hp, unsigned int *maxhp, unsigned int *sp, unsigned int *maxsp); *HPMforce_return = false; for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_single_pre; hIndex++) { preHookFunc = HPMHooks.list.HP_clif_hpmeter_single_pre[hIndex].func; - preHookFunc(&fd, &id, &hp, &maxhp); + preHookFunc(&fd, &id, &hp, &maxhp, &sp, &maxsp); } if (*HPMforce_return) { *HPMforce_return = false; @@ -13234,13 +13260,13 @@ void HP_clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp) } } { - HPMHooks.source.clif.hpmeter_single(fd, id, hp, maxhp); + HPMHooks.source.clif.hpmeter_single(fd, id, hp, maxhp, sp, maxsp); } if (HPMHooks.count.HP_clif_hpmeter_single_post > 0) { - void (*postHookFunc) (int fd, int id, unsigned int hp, unsigned int maxhp); + void (*postHookFunc) (int fd, int id, unsigned int hp, unsigned int maxhp, unsigned int sp, unsigned int maxsp); for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_hpmeter_single_post; hIndex++) { postHookFunc = HPMHooks.list.HP_clif_hpmeter_single_post[hIndex].func; - postHookFunc(fd, id, hp, maxhp); + postHookFunc(fd, id, hp, maxhp, sp, maxsp); } } return; @@ -22769,6 +22795,32 @@ void HP_clif_pUnequipItem(int fd, struct map_session_data *sd) { } return; } +void HP_clif_pUnequipAllItems(int fd, struct map_session_data *sd) { + int hIndex = 0; + if (HPMHooks.count.HP_clif_pUnequipAllItems_pre > 0) { + void (*preHookFunc) (int *fd, struct map_session_data **sd); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUnequipAllItems_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_clif_pUnequipAllItems_pre[hIndex].func; + preHookFunc(&fd, &sd); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.pUnequipAllItems(fd, sd); + } + if (HPMHooks.count.HP_clif_pUnequipAllItems_post > 0) { + void (*postHookFunc) (int fd, struct map_session_data *sd); + for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_pUnequipAllItems_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_clif_pUnequipAllItems_post[hIndex].func; + postHookFunc(fd, sd); + } + } + return; +} void HP_clif_pNpcClicked(int fd, struct map_session_data *sd) { int hIndex = 0; if (HPMHooks.count.HP_clif_pNpcClicked_pre > 0) { From ee39decbe014f8a6059841e37e334a9eb675a9b0 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 29 Oct 2021 01:47:48 +0300 Subject: [PATCH 56/65] Convert ZC_BATTLEFIELD_NOTIFY_HP into struct --- src/map/clif.c | 42 ++++++++++++---------------------------- src/map/packets_struct.h | 19 ++++++++++++++++++ 2 files changed, 31 insertions(+), 30 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index f8abf881392..9e1c9b37c09 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -19123,43 +19123,25 @@ static void clif_readbook(int fd, int book_id, int page) /// 0a0e .L .L .L (ZC_BATTLEFIELD_NOTIFY_HP2) static void clif_bg_hp(struct map_session_data *sd) { - unsigned char buf[34]; - -// packet version can be wrong, because inconsistend data in other servers. From packets table it start from 20140312 [4144] -#if PACKETVER < 20140613 - const int cmd = 0x2e0; nullpo_retv(sd); - WBUFW(buf, 0) = cmd; - WBUFL(buf, 2) = sd->status.account_id; - memcpy(WBUFP(buf, 6), sd->status.name, NAME_LENGTH); + struct PACKET_ZC_BATTLEFIELD_NOTIFY_HP p = {0}; + p.PacketType = HEADER_ZC_BATTLEFIELD_NOTIFY_HP; - if (sd->battle_status.max_hp > INT16_MAX) - { // To correctly display the %hp bar. [Skotlex] - WBUFW(buf, 30) = sd->battle_status.hp / (sd->battle_status.max_hp / 100); - WBUFW(buf, 32) = 100; - } - else - { - WBUFW(buf, 30) = sd->battle_status.hp; - WBUFW(buf, 32) = sd->battle_status.max_hp; - } +#if PACKETVER >= 20140312 + p.hp = sd->battle_status.hp; + p.maxhp = sd->battle_status.max_hp; #else - const int cmd = 0xa0e; - nullpo_retv(sd); - - WBUFW(buf, 0) = cmd; - WBUFL(buf, 2) = sd->status.account_id; - if (sd->battle_status.max_hp > INT32_MAX) { - WBUFL(buf, 6) = sd->battle_status.hp / (sd->battle_status.max_hp / 100); - WBUFL(buf, 10) = 100; + memcpy(p.name, sd->status.name, NAME_LENGTH); + if (sd->battle_status.max_hp > INT16_MAX) { + p.hp = sd->battle_status.hp / (sd->battle_status.max_hp / 100); + p.maxhp = 100; } else { - WBUFL(buf, 6) = sd->battle_status.hp; - WBUFL(buf, 10) = sd->battle_status.max_hp; + p.hp = sd->battle_status.hp; + p.maxhp = sd->battle_status.max_hp; } #endif - - clif->send(buf, packet_len(cmd), &sd->bl, BG_AREA_WOS); + clif->send(&p, sizeof(struct PACKET_ZC_BATTLEFIELD_NOTIFY_HP), &sd->bl, BG_AREA_WOS); } /// Updates the position of a camp member on the minimap (ZC_BATTLEFIELD_NOTIFY_POSITION). diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 3246c8bebde..7258d8d4d79 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -5107,6 +5107,25 @@ struct PACKET_ZC_TAKEOFF_EQUIP_ALL_ACK { DEFINE_PACKET_HEADER(ZC_TAKEOFF_EQUIP_ALL_ACK, 0x0bae); #endif // PACKETVER_MAIN_NUM >= 20210818 +#if PACKETVER >= 20140312 +struct PACKET_ZC_BATTLEFIELD_NOTIFY_HP { + int16 PacketType; + uint32 AID; + int hp; + int maxhp; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_BATTLEFIELD_NOTIFY_HP, 0x0a0e); +#elif PACKETVER >= 20071009 +struct PACKET_ZC_BATTLEFIELD_NOTIFY_HP { + int16 PacketType; + uint32 AID; + char name[NAME_LENGTH]; + int16 hp; + int16 maxhp; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_BATTLEFIELD_NOTIFY_HP, 0x02e0); +#endif // PACKETVER >= 20071009 + #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #pragma pack(pop) #endif // not NetBSD < 6 / Solaris From fc97e9d1f5aaee4b398192a03db776918e5bab82 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 29 Oct 2021 01:52:12 +0300 Subject: [PATCH 57/65] Update packet ZC_BATTLEFIELD_NOTIFY_HP --- src/map/clif.c | 4 ++++ src/map/packets_struct.h | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/map/clif.c b/src/map/clif.c index 9e1c9b37c09..9b013aad4ab 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -19141,6 +19141,10 @@ static void clif_bg_hp(struct map_session_data *sd) p.maxhp = sd->battle_status.max_hp; } #endif +#if PACKETVER_ZERO_NUM >= 20210504 + p.sp = sd->battle_status.sp; + p.maxsp = sd->battle_status.max_sp; +#endif // PACKETVER_ZERO_NUM >= 20210504 clif->send(&p, sizeof(struct PACKET_ZC_BATTLEFIELD_NOTIFY_HP), &sd->bl, BG_AREA_WOS); } diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 7258d8d4d79..675302cf965 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -5107,7 +5107,17 @@ struct PACKET_ZC_TAKEOFF_EQUIP_ALL_ACK { DEFINE_PACKET_HEADER(ZC_TAKEOFF_EQUIP_ALL_ACK, 0x0bae); #endif // PACKETVER_MAIN_NUM >= 20210818 -#if PACKETVER >= 20140312 +#if PACKETVER_ZERO_NUM >= 20210504 +struct PACKET_ZC_BATTLEFIELD_NOTIFY_HP { + int16 PacketType; + uint32 AID; + int hp; + int maxhp; + int sp; + int maxsp; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_BATTLEFIELD_NOTIFY_HP, 0x0baa); +#elif PACKETVER >= 20140312 struct PACKET_ZC_BATTLEFIELD_NOTIFY_HP { int16 PacketType; uint32 AID; From e8cb7ee1e27b58e3c79d32a94778179993076134 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 29 Oct 2021 18:26:09 +0300 Subject: [PATCH 58/65] Add support for script command for show first type of dialog with message in new zero ui --- doc/script_commands.txt | 18 ++++++++++++ npc/custom/zeroui.txt | 19 +++++++++++++ npc/scripts_custom.conf | 1 + src/map/clif.c | 36 +++++++++++++++++++++++ src/map/clif.h | 1 + src/map/packets_struct.h | 10 +++++++ src/map/script.c | 44 +++++++++++++++++++++++++++++ src/map/script.h | 2 ++ src/plugins/generate-translations.c | 2 ++ 9 files changed, 133 insertions(+) create mode 100644 npc/custom/zeroui.txt diff --git a/doc/script_commands.txt b/doc/script_commands.txt index b6657a7c885..0e119c86da2 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -1375,6 +1375,24 @@ for more details. --------------------------------------- +*zmes1f(""{, {, {, ...}}}) + +This command will displays a box on the screen for the invoking character, with zero ui at bottom. +Works same as *mesf* except zero ui. + +Works only in zero clients starting from 20210721. + +--------------------------------------- + +*zmes1("") + +This command will displays a box on the screen for the invoking character, with zero ui at bottom. +Works same as *mes* except zero ui. + +Works only in zero clients starting from 20210721. + +--------------------------------------- + *next() This command will display a 'next' button in the message window for the diff --git a/npc/custom/zeroui.txt b/npc/custom/zeroui.txt new file mode 100644 index 00000000000..0a2290d545b --- /dev/null +++ b/npc/custom/zeroui.txt @@ -0,0 +1,19 @@ +//===== Hercules Script ====================================== +//= Zero ui demo +//===== By: ================================================== +//= 4144 +//===== Current Version: ===================================== +//= 1.0 +//===== Description: ========================================= +//= Zero ui demo in prontera. +//============================================================ + +prontera,161,284,4 script Zero UI demo#prt 4_M_KID1,{ + cutin("h_iris01.bmp", 2); + zmes1("test message ^FF00001"); + next; + zmes1("test message ^00FF002"); + zmes1("test message ^0000FF3"); + zmes1f("format message1: ^FF0000%s^000000.", "string test"); + close; +} diff --git a/npc/scripts_custom.conf b/npc/scripts_custom.conf index df80ea347be..9b6c4781327 100644 --- a/npc/scripts_custom.conf +++ b/npc/scripts_custom.conf @@ -52,6 +52,7 @@ //"npc/custom/woe_controller.txt", //"npc/custom/bartershop.txt", //"npc/custom/expandedbartershop.txt", +"npc/custom/zeroui.txt", //================= Other Scripts ========================================= // -- MVP Arena diff --git a/src/map/clif.c b/src/map/clif.c index 9b013aad4ab..b654913c46a 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -2336,6 +2336,41 @@ static void clif_scriptmes(struct map_session_data *sd, int npcid, const char *m WFIFOSET(fd,WFIFOW(fd,2)); } +static void clif_zc_say_dialog_zero1(struct map_session_data *sd, int npcid, const char *mes) +{ +#if PACKETVER_ZERO_NUM >= 20210721 + nullpo_retv(sd); + nullpo_retv(mes); + + const size_t msgLen = strlen(mes); + const size_t len = msgLen + sizeof(struct PACKET_ZC_SAY_DIALOG_ZERO1); + Assert_retv(len <= INT16_MAX); + + pc->update_idle_time(sd, BCIDLE_SCRIPT); + sd->state.dialog = 1; + + int fd = sd->fd; + WFIFOHEAD(fd, len); + struct PACKET_ZC_SAY_DIALOG_ZERO1 *p = WFIFOP(fd, 0); + p->PacketType = HEADER_ZC_SAY_DIALOG_ZERO1; + p->PacketLength = len; + p->NpcID = npcid; + +#ifdef SCRIPT_MES_STRIP_LINEBREAK + char *stripmes = aStrdup(mes); + for (int i = 0; stripmes[i] != '\0'; ++i) { + if (stripmes[i] == '\r') + stripmes[i] = ' '; + } + memcpy(p->message, stripmes, msgLen); + aFree(stripmes); +#else // ! SCRIPT_MES_STRIP_LINEBREAK + memcpy(p->message, mes, msgLen); +#endif // SCRIPT_MES_STRIP_LINEBREAK + WFIFOSET(fd, len); +#endif // PACKETVER_ZERO_NUM >= 20210721 +} + /// Adds a 'next' button to an NPC dialog (ZC_WAIT_DIALOG). /// 00b5 .L /// Client behavior (dialog window): @@ -25417,6 +25452,7 @@ void clif_defaults(void) clif->cashshop_ack = clif_cashshop_ack; /* npc-script-related */ clif->scriptmes = clif_scriptmes; + clif->zc_say_dialog_zero1 = clif_zc_say_dialog_zero1; clif->scriptnext = clif_scriptnext; clif->scriptclose = clif_scriptclose; clif->scriptmenu = clif_scriptmenu; diff --git a/src/map/clif.h b/src/map/clif.h index 2e28fae6cd1..6583c94cfa7 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -932,6 +932,7 @@ struct clif_interface { void (*cashshop_ack) (struct map_session_data* sd, int error); /* npc-script-related */ void (*scriptmes) (struct map_session_data *sd, int npcid, const char *mes); + void (*zc_say_dialog_zero1) (struct map_session_data *sd, int npcid, const char *mes); void (*scriptnext) (struct map_session_data *sd,int npcid); void (*scriptclose) (struct map_session_data *sd, int npcid); void (*scriptmenu) (struct map_session_data* sd, int npcid, const char* mes); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 675302cf965..8a7135e6a29 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -5136,6 +5136,16 @@ struct PACKET_ZC_BATTLEFIELD_NOTIFY_HP { DEFINE_PACKET_HEADER(ZC_BATTLEFIELD_NOTIFY_HP, 0x02e0); #endif // PACKETVER >= 20071009 +#if PACKETVER_ZERO_NUM >= 20210721 +struct PACKET_ZC_SAY_DIALOG_ZERO1 { + int16 PacketType; + int16 PacketLength; + uint32 NpcID; + char message[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_SAY_DIALOG_ZERO1, 0x0ba6); +#endif // PACKETVER_ZERO_NUM >= 20210721 + #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #pragma pack(pop) #endif // not NetBSD < 6 / Solaris diff --git a/src/map/script.c b/src/map/script.c index 8df43e268ae..0dfd9dbf059 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -6472,6 +6472,46 @@ static BUILDIN(mesf) return true; } +/// Appends a message to the npc dialog. +/// If a dialog doesn't exist yet, one is created. +/// +/// mes ""; +static BUILDIN(zmes1) +{ + struct map_session_data *sd = script->rid2sd(st); + + if (sd == NULL) + return true; + + if (script_hasdata(st, 2)) + clif->zc_say_dialog_zero1(sd, st->oid, script_getstr(st, 2)); + else + clif->zc_say_dialog_zero1(sd, st->oid, ""); + + return true; +} + +static BUILDIN(zmes1f) +{ + struct map_session_data *sd = script->rid2sd(st); + struct StringBuf buf; + + if (sd == NULL) + return true; + + StrBuf->Init(&buf); + + if (!script->sprintf_helper(st, 2, &buf)) { + StrBuf->Destroy(&buf); + return false; + } + + clif->zc_say_dialog_zero1(sd, st->oid, StrBuf->Value(&buf)); + StrBuf->Destroy(&buf); + + return true; +} + /// Displays the button 'next' in the npc dialog. /// The dialog text is cleared and the script continues when the button is pressed. /// @@ -27530,7 +27570,9 @@ static bool script_add_builtin(const struct script_function *buildin, bool overr else if( strcmp(buildin->name, "callfunc") == 0 ) script->buildin_callfunc_ref = n; else if( strcmp(buildin->name, "getelementofarray") == 0 ) script->buildin_getelementofarray_ref = n; else if( strcmp(buildin->name, "mes") == 0 ) script->buildin_mes_offset = script->buildin_count; + else if( strcmp(buildin->name, "zmes1") == 0 ) script->buildin_zmes1_offset = script->buildin_count; else if( strcmp(buildin->name, "mesf") == 0 ) script->buildin_mesf_offset = script->buildin_count; + else if( strcmp(buildin->name, "zmes1f") == 0 ) script->buildin_zmes1f_offset = script->buildin_count; else if( strcmp(buildin->name, "select") == 0 ) script->buildin_select_offset = script->buildin_count; else if( strcmp(buildin->name, "_") == 0 ) script->buildin_lang_macro_offset = script->buildin_count; else if( strcmp(buildin->name, "_$") == 0 ) script->buildin_lang_macro_fmtstring_offset = script->buildin_count; @@ -27693,7 +27735,9 @@ static void script_parse_builtin(void) // NPC interaction BUILDIN_DEF(mes, "?"), + BUILDIN_DEF(zmes1, "?"), BUILDIN_DEF(mesf, "s*"), + BUILDIN_DEF(zmes1f, "s*"), BUILDIN_DEF(next,""), BUILDIN_DEF(mesclear,""), BUILDIN_DEF(close,""), diff --git a/src/map/script.h b/src/map/script.h index c657c83d7db..6b2935d5141 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -879,7 +879,9 @@ struct script_interface { const char *parser_current_npc_name; /* */ int buildin_mes_offset; + int buildin_zmes1_offset; int buildin_mesf_offset; + int buildin_zmes1f_offset; int buildin_select_offset; int buildin_lang_macro_offset; int buildin_lang_macro_fmtstring_offset; diff --git a/src/plugins/generate-translations.c b/src/plugins/generate-translations.c index 284e74eae3a..039457a9322 100644 --- a/src/plugins/generate-translations.c +++ b/src/plugins/generate-translations.c @@ -116,11 +116,13 @@ void script_add_translatable_string_posthook(const struct script_string_buf *str if (!duplicate) { if (script->syntax.last_func == script->buildin_mes_offset + || script->syntax.last_func == script->buildin_zmes1_offset || script->syntax.last_func == script->buildin_select_offset || script->syntax.lang_macro_active ) { is_translatable_string = true; } else if (script->syntax.last_func == script->buildin_mesf_offset + || script->syntax.last_func == script->buildin_zmes1f_offset || script->syntax.lang_macro_fmtstring_active ) { is_translatable_fmtstring = true; From 8f19e4648948be3467e263045251ae5f25c07ad0 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 29 Oct 2021 19:20:58 +0300 Subject: [PATCH 59/65] Add support for script command for show second type of dialog with message in new zero ui --- doc/script_commands.txt | 18 +++++++++++ npc/custom/zeroui.txt | 8 +++-- src/map/clif.c | 36 ++++++++++++++++++++++ src/map/clif.h | 1 + src/map/packets_struct.h | 10 +++++++ src/map/script.c | 46 ++++++++++++++++++++++++++++- src/map/script.h | 2 ++ src/plugins/generate-translations.c | 2 ++ 8 files changed, 119 insertions(+), 4 deletions(-) diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 0e119c86da2..493641cd15a 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -1384,6 +1384,15 @@ Works only in zero clients starting from 20210721. --------------------------------------- +*zmes2f(""{, {, {, ...}}}) + +This command will displays a box on the screen for the invoking character, with zero ui at center. +Works same as *mesf* except zero ui. + +Works only in zero clients starting from 20210721. + +--------------------------------------- + *zmes1("") This command will displays a box on the screen for the invoking character, with zero ui at bottom. @@ -1393,6 +1402,15 @@ Works only in zero clients starting from 20210721. --------------------------------------- +*zmes2("") + +This command will displays a box on the screen for the invoking character, with zero ui at center. +Works same as *mes* except zero ui. + +Works only in zero clients starting from 20210721. + +--------------------------------------- + *next() This command will display a 'next' button in the message window for the diff --git a/npc/custom/zeroui.txt b/npc/custom/zeroui.txt index 0a2290d545b..f91247a4ac7 100644 --- a/npc/custom/zeroui.txt +++ b/npc/custom/zeroui.txt @@ -10,10 +10,12 @@ prontera,161,284,4 script Zero UI demo#prt 4_M_KID1,{ cutin("h_iris01.bmp", 2); - zmes1("test message ^FF00001"); + zmes1("test message1 ^FF00001"); next; - zmes1("test message ^00FF002"); - zmes1("test message ^0000FF3"); + zmes1("test message1 ^00FF002"); + zmes1("test message1 ^0000FF3"); zmes1f("format message1: ^FF0000%s^000000.", "string test"); + next; + zmes2("test message2 ^00FF004"); close; } diff --git a/src/map/clif.c b/src/map/clif.c index b654913c46a..f2e68a233c0 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -2371,6 +2371,41 @@ static void clif_zc_say_dialog_zero1(struct map_session_data *sd, int npcid, con #endif // PACKETVER_ZERO_NUM >= 20210721 } +static void clif_zc_say_dialog_zero2(struct map_session_data *sd, int npcid, const char *mes) +{ +#if PACKETVER_ZERO_NUM >= 20210721 + nullpo_retv(sd); + nullpo_retv(mes); + + const size_t msgLen = strlen(mes); + const size_t len = msgLen + sizeof(struct PACKET_ZC_SAY_DIALOG_ZERO2); + Assert_retv(len <= INT16_MAX); + + pc->update_idle_time(sd, BCIDLE_SCRIPT); + sd->state.dialog = 1; + + int fd = sd->fd; + WFIFOHEAD(fd, len); + struct PACKET_ZC_SAY_DIALOG_ZERO2 *p = WFIFOP(fd, 0); + p->PacketType = HEADER_ZC_SAY_DIALOG_ZERO2; + p->PacketLength = len; + p->NpcID = npcid; + +#ifdef SCRIPT_MES_STRIP_LINEBREAK + char *stripmes = aStrdup(mes); + for (int i = 0; stripmes[i] != '\0'; ++i) { + if (stripmes[i] == '\r') + stripmes[i] = ' '; + } + memcpy(p->message, stripmes, msgLen); + aFree(stripmes); +#else // ! SCRIPT_MES_STRIP_LINEBREAK + memcpy(p->message, mes, msgLen); +#endif // SCRIPT_MES_STRIP_LINEBREAK + WFIFOSET(fd, len); +#endif // PACKETVER_ZERO_NUM >= 20210721 +} + /// Adds a 'next' button to an NPC dialog (ZC_WAIT_DIALOG). /// 00b5 .L /// Client behavior (dialog window): @@ -25453,6 +25488,7 @@ void clif_defaults(void) /* npc-script-related */ clif->scriptmes = clif_scriptmes; clif->zc_say_dialog_zero1 = clif_zc_say_dialog_zero1; + clif->zc_say_dialog_zero2 = clif_zc_say_dialog_zero2; clif->scriptnext = clif_scriptnext; clif->scriptclose = clif_scriptclose; clif->scriptmenu = clif_scriptmenu; diff --git a/src/map/clif.h b/src/map/clif.h index 6583c94cfa7..c8b4d7ed27f 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -933,6 +933,7 @@ struct clif_interface { /* npc-script-related */ void (*scriptmes) (struct map_session_data *sd, int npcid, const char *mes); void (*zc_say_dialog_zero1) (struct map_session_data *sd, int npcid, const char *mes); + void (*zc_say_dialog_zero2) (struct map_session_data *sd, int npcid, const char *mes); void (*scriptnext) (struct map_session_data *sd,int npcid); void (*scriptclose) (struct map_session_data *sd, int npcid); void (*scriptmenu) (struct map_session_data* sd, int npcid, const char* mes); diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 8a7135e6a29..24098f98fd1 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -5146,6 +5146,16 @@ struct PACKET_ZC_SAY_DIALOG_ZERO1 { DEFINE_PACKET_HEADER(ZC_SAY_DIALOG_ZERO1, 0x0ba6); #endif // PACKETVER_ZERO_NUM >= 20210721 +#if PACKETVER_ZERO_NUM >= 20210721 +struct PACKET_ZC_SAY_DIALOG_ZERO2 { + int16 PacketType; + int16 PacketLength; + uint32 NpcID; + char message[]; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_SAY_DIALOG_ZERO2, 0x0ba9); +#endif // PACKETVER_ZERO_NUM >= 20210721 + #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute #pragma pack(pop) #endif // not NetBSD < 6 / Solaris diff --git a/src/map/script.c b/src/map/script.c index 0dfd9dbf059..40a8eabf2e3 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -6475,7 +6475,7 @@ static BUILDIN(mesf) /// Appends a message to the npc dialog. /// If a dialog doesn't exist yet, one is created. /// -/// mes ""; +/// zmes1 ""; static BUILDIN(zmes1) { struct map_session_data *sd = script->rid2sd(st); @@ -6512,6 +6512,46 @@ static BUILDIN(zmes1f) return true; } +/// Appends a message to the npc dialog. +/// If a dialog doesn't exist yet, one is created. +/// +/// zmes2 ""; +static BUILDIN(zmes2) +{ + struct map_session_data *sd = script->rid2sd(st); + + if (sd == NULL) + return true; + + if (script_hasdata(st, 2)) + clif->zc_say_dialog_zero2(sd, st->oid, script_getstr(st, 2)); + else + clif->zc_say_dialog_zero2(sd, st->oid, ""); + + return true; +} + +static BUILDIN(zmes2f) +{ + struct map_session_data *sd = script->rid2sd(st); + struct StringBuf buf; + + if (sd == NULL) + return true; + + StrBuf->Init(&buf); + + if (!script->sprintf_helper(st, 2, &buf)) { + StrBuf->Destroy(&buf); + return false; + } + + clif->zc_say_dialog_zero2(sd, st->oid, StrBuf->Value(&buf)); + StrBuf->Destroy(&buf); + + return true; +} + /// Displays the button 'next' in the npc dialog. /// The dialog text is cleared and the script continues when the button is pressed. /// @@ -27571,8 +27611,10 @@ static bool script_add_builtin(const struct script_function *buildin, bool overr else if( strcmp(buildin->name, "getelementofarray") == 0 ) script->buildin_getelementofarray_ref = n; else if( strcmp(buildin->name, "mes") == 0 ) script->buildin_mes_offset = script->buildin_count; else if( strcmp(buildin->name, "zmes1") == 0 ) script->buildin_zmes1_offset = script->buildin_count; + else if( strcmp(buildin->name, "zmes2") == 0 ) script->buildin_zmes2_offset = script->buildin_count; else if( strcmp(buildin->name, "mesf") == 0 ) script->buildin_mesf_offset = script->buildin_count; else if( strcmp(buildin->name, "zmes1f") == 0 ) script->buildin_zmes1f_offset = script->buildin_count; + else if( strcmp(buildin->name, "zmes2f") == 0 ) script->buildin_zmes2f_offset = script->buildin_count; else if( strcmp(buildin->name, "select") == 0 ) script->buildin_select_offset = script->buildin_count; else if( strcmp(buildin->name, "_") == 0 ) script->buildin_lang_macro_offset = script->buildin_count; else if( strcmp(buildin->name, "_$") == 0 ) script->buildin_lang_macro_fmtstring_offset = script->buildin_count; @@ -27736,8 +27778,10 @@ static void script_parse_builtin(void) // NPC interaction BUILDIN_DEF(mes, "?"), BUILDIN_DEF(zmes1, "?"), + BUILDIN_DEF(zmes2, "?"), BUILDIN_DEF(mesf, "s*"), BUILDIN_DEF(zmes1f, "s*"), + BUILDIN_DEF(zmes2f, "s*"), BUILDIN_DEF(next,""), BUILDIN_DEF(mesclear,""), BUILDIN_DEF(close,""), diff --git a/src/map/script.h b/src/map/script.h index 6b2935d5141..8f0c7ed8eeb 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -880,8 +880,10 @@ struct script_interface { /* */ int buildin_mes_offset; int buildin_zmes1_offset; + int buildin_zmes2_offset; int buildin_mesf_offset; int buildin_zmes1f_offset; + int buildin_zmes2f_offset; int buildin_select_offset; int buildin_lang_macro_offset; int buildin_lang_macro_fmtstring_offset; diff --git a/src/plugins/generate-translations.c b/src/plugins/generate-translations.c index 039457a9322..014eb0b147e 100644 --- a/src/plugins/generate-translations.c +++ b/src/plugins/generate-translations.c @@ -117,12 +117,14 @@ void script_add_translatable_string_posthook(const struct script_string_buf *str if (!duplicate) { if (script->syntax.last_func == script->buildin_mes_offset || script->syntax.last_func == script->buildin_zmes1_offset + || script->syntax.last_func == script->buildin_zmes2_offset || script->syntax.last_func == script->buildin_select_offset || script->syntax.lang_macro_active ) { is_translatable_string = true; } else if (script->syntax.last_func == script->buildin_mesf_offset || script->syntax.last_func == script->buildin_zmes1f_offset + || script->syntax.last_func == script->buildin_zmes2f_offset || script->syntax.lang_macro_fmtstring_active ) { is_translatable_fmtstring = true; From 39a8a3765b99113fb637a8b983c203bd9edd84c9 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 29 Oct 2021 22:37:10 +0300 Subject: [PATCH 60/65] Add support for menu and select with new zero ui New script commands: zmenu, zselect, zprompt. --- doc/script_commands.txt | 21 +++++++++++ npc/custom/zeroui.txt | 27 +++++++++++--- src/map/clif.c | 77 +++++++++++++++++++++++++++++++++++++++- src/map/clif.h | 2 ++ src/map/packets.h | 4 +++ src/map/packets_struct.h | 19 ++++++++++ src/map/script.c | 31 ++++++++++++---- 7 files changed, 169 insertions(+), 12 deletions(-) diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 493641cd15a..9d907c5c528 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -1758,6 +1758,13 @@ perfectly equivalent. --------------------------------------- +*zmenu("", {, "", , ...}) + +Same as *menu* but for zero npc dialogs. +Works only in zero clients starting from 20210721. + +--------------------------------------- + *select("