RequestEnchantItem.java - Сюда не смотреть там творится полный ад.
Сообщение от
Спойлер
package core.gameserver.network.l2.c2s;
import core.gameserver.model.Player;
import core.gameserver.network.l2.s2c.ExGetBookMarkInfo;
public class RequestDeleteBookMarkSlot extends L2GameClientPacket
{
private int slot;
@Override
protected void readImpl()
{
slot = readD();
}
@Override
protected void runImpl()
{
Player activeChar = getClient().getActiveChar();
if(activeChar != null)
{
//TODO Msg.THE_SAVED_TELEPORT_LOCATION_WILL_BE_DELETED_DO _YOU_WISH_TO_CONTINUE
activeChar.bookmarks.remove(slot);
activeChar.sendPacket(new ExGetBookMarkInfo(activeChar));
}
}
}
До сих пор остался тот шлак Msg.java . И даже сообщение не нашли верное для реализации
Сообщение от
Спойлер
package core.gameserver.network.l2.s2c;
public class PledgeExtendedInfo extends L2GameServerPacket
{
@Override
protected final void writeImpl()
{
writeC(0x8A);
//TODO SddSddddddddSd
}
}
Ну вот опять почему не реализовано? Ну наверное, что было овером реализовано так и осталось.
Сообщение от
Спойлер
package core.gameserver.network.l2.s2c;
public class OustAllianceMemberPledge extends L2GameServerPacket
{
@Override
protected void writeImpl()
{
writeC(0xAC);
//TODO d
}
}
Где реализация пакета? ГДЕ?
Сообщение от
Спойлер
package core.gameserver.network.l2.s2c;
import org.apache.commons.lang3.StringUtils;
import core.gameserver.Config;
import core.gameserver.model.base.TeamType;
import core.gameserver.model.pledge.Alliance;
import core.gameserver.model.Creature;
import core.gameserver.model.pledge.Clan;
import core.gameserver.model.Summon;
import core.gameserver.model.instances.NpcInstance;
import core.gameserver.network.l2.components.NpcString;
import core.gameserver.utils.Location;
public class NpcInfo extends L2GameServerPacket
{
private boolean can_writeImpl = false;
private int _npcObjId, _npcId, running, incombat, dead, _showSpawnAnimation;
private int _runSpd, _walkSpd, _mAtkSpd, _pAtkSpd, _rhand, _lhand, _enchantEffect;
private int karma, pvp_flag, _abnormalEffect, _abnormalEffect2, clan_id, clan_crest_id, ally_id, ally_crest_id, _formId, _titleColor;
private double colHeight, colRadius, currentColHeight, currentColRadius;
private boolean _isAttackable, _isNameAbove, isFlying;
private Location _loc;
private String _name = StringUtils.EMPTY;
private String _title = StringUtils.EMPTY;
private boolean _showName;
private int _state;
private NpcString _nameNpcString = NpcString.NONE;
private NpcString _titleNpcString = NpcString.NONE;
private TeamType _team;
public NpcInfo(NpcInstance cha, Creature attacker)
{
_npcId = cha.getDisplayId() != 0 ? cha.getDisplayId() : cha.getTemplate().npcId;
_isAttackable = attacker != null && cha.isAutoAttackable(attacker);
_rhand = cha.getRightHandItem();
_lhand = cha.getLeftHandItem();
_enchantEffect = cha.getEnchantEffect();
if(Config.SERVER_SIDE_NPC_NAME || cha.getTemplate().displayId != 0 || cha.getName() != cha.getTemplate().name)
_name = cha.getName();
if(Config.SERVER_SIDE_NPC_TITLE || cha.getTemplate().displayId != 0 || cha.getTitle() != cha.getTemplate().title)
_title = cha.getTitle();
_showSpawnAnimation = cha.getSpawnAnimation();
_showName = cha.isShowName();
_state = cha.getNpcState();
_nameNpcString = cha.getNameNpcString();
_titleNpcString = cha.getTitleNpcString();
common(cha);
}
public NpcInfo(Summon cha, Creature attacker)
{
if(cha.getPlayer() != null && cha.getPlayer().isInvisible())
return;
_npcId = cha.getTemplate().npcId;
_isAttackable = cha.isAutoAttackable(attacker);
_rhand = 0;
_lhand = 0;
_enchantEffect = 0;
_showName = true;
_name = cha.getName();
_title = cha.getTitle();
_showSpawnAnimation = cha.getSpawnAnimation();
common(cha);
}
private void common(Creature cha)
{
colHeight = cha.getColHeight();
colRadius = cha.getColRadius();
currentColHeight = cha.getColHeight();
currentColRadius = cha.getColRadius();
_npcObjId = cha.getObjectId();
_loc = cha.getLoc();
_mAtkSpd = cha.getMAtkSpd();
//
Clan clan = cha.getClan();
Alliance alliance = clan == null ? null : clan.getAlliance();
//
clan_id = clan == null ? 0 : clan.getClanId();
clan_crest_id = clan == null ? 0 : clan.getCrestId();
//
ally_id = alliance == null ? 0 : alliance.getAllyId();
ally_crest_id = alliance == null ? 0 : alliance.getAllyCrestId();
_runSpd = cha.getRunSpeed();
_walkSpd = cha.getWalkSpeed();
karma = cha.getKarma();
pvp_flag = Config.RVRMODE_ENABLE ? 0 : cha.getPvpFlag();
_pAtkSpd = cha.getPAtkSpd();
running = cha.isRunning() ? 1 : 0;
incombat = cha.isInCombat() ? 1 : 0;
dead = cha.isAlikeDead() ? 1 : 0;
_abnormalEffect = cha.getAbnormalEffect();
_abnormalEffect2 = cha.getAbnormalEffect2();
isFlying = cha.isFlying();
_team = cha.getTeam();
_formId = cha.getFormId();
_isNameAbove = cha.isNameAbove();
_titleColor = (cha.isSummon() || cha.isPet()) ? 1 : 0;
can_writeImpl = true;
}
public NpcInfo update()
{
_showSpawnAnimation = 1;
return this;
}
@Override
protected final void writeImpl()
{
if(!can_writeImpl)
return;
writeC(0x0c);
//ddddddddddddddddddffffdddcccccSSddddddddccffddddcc d
writeD(_npcObjId);
writeD(_npcId + 1000000); // npctype id c4
writeD(_isAttackable ? 1 : 0);
writeD(_loc.x);
writeD(_loc.y);
writeD(_loc.z + Config.CLIENT_Z_SHIFT);
writeD(_loc.h);
writeD(0x00);
writeD(_mAtkSpd);
writeD(_pAtkSpd);
writeD(_runSpd);
writeD(_walkSpd);
writeD(_runSpd /*_swimRunSpd*//*0x32*/); // swimspeed
writeD(_walkSpd/*_swimWalkSpd*//*0x32*/); // swimspeed
writeD(_runSpd/*_flRunSpd*/);
writeD(_walkSpd/*_flWalkSpd*/);
writeD(_runSpd/*_flyRunSpd*/);
writeD(_walkSpd/*_flyWalkSpd*/);
writeF(1.100000023841858); // взято из клиента
writeF(_pAtkSpd / 277.478340719);
writeF(colRadius);
writeF(colHeight);
writeD(_rhand); // right hand weapon
writeD(0); //TODO chest
writeD(_lhand); // left hand weapon
writeC(_isNameAbove ? 1 : 0); // 2.2: name above char 1=true ... ??; 2.3: 1 - normal, 2 - dead
writeC(running);
writeC(incombat);
writeC(dead);
writeC(_showSpawnAnimation); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation)
writeD(_nameNpcString.getId());
writeS(_name);
writeD(_titleNpcString.getId());
writeS(_title);
writeD(_titleColor); // 0- светло зеленый титул(моб), 1 - светло синий(пет)/отображение текущего МП
writeD(pvp_flag);
writeD(karma); // hmm karma ??
writeD(_abnormalEffect); // C2
writeD(clan_id);
writeD(clan_crest_id);
writeD(ally_id);
writeD(ally_crest_id);
writeC(isFlying ? 2 : 0); // C2
writeC(_team.ordinal()); // team aura 1-blue, 2-red
writeF(currentColRadius); // тут что-то связанное с colRadius
writeF(currentColHeight); // тут что-то связанное с colHeight
writeD(_enchantEffect); // C4
writeD(0x00); // writeD(_npc.isFlying() ? 1 : 0); // C6
writeD(0x00);
writeD(_formId);// great wolf type
writeC(_showName ? 0x01 : 0x00); // show name
writeC(_showName ? 0x01 : 0x00); // show title
writeD(_abnormalEffect2);
writeD(_state);
}
}
Опа, а почему тут присутствуют нули? Ведь всё реализовано согласно официальному серверу.
Сообщение от
Спойлер
package core.gameserver.network.l2.c2s;
/**
* Format: (c) ddd
* d: dx
* d: dy
* d: dz
*/
public class MoveWithDelta extends L2GameClientPacket
{
@SuppressWarnings("unused")
private int _dx, _dy, _dz;
@Override
protected void readImpl()
{
_dx = readD();
_dy = readD();
_dz = readD();
}
@Override
protected void runImpl()
{
// TODO this
}
}
А потом вылазиют такие сообщения, админ у меня косячит движение и посмотрев пакет выше Validate Position можно вешаться.
Ну давайте посмотри все пакет GamePacketHandler:
Сообщение от
Спойлер
package core.gameserver.network.l2;
import java.nio.BufferUnderflowException;
import java.nio.ByteBuffer;
import core.commons.net.nio.impl.IClientFactory;
import core.commons.net.nio.impl.IMMOExecutor;
import core.commons.net.nio.impl.IPacketHandler;
import core.commons.net.nio.impl.MMOConnection;
import core.commons.net.nio.impl.ReceivablePacket;
import core.gameserver.Config;
import core.gameserver.ThreadPoolManager;
import core.gameserver.network.l2.c2s.*;
//import GameGuard.network.l2.c2s.GameGuardReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final class GamePacketHandler implements IPacketHandler, IClientFactory, IMMOExecutor
{
private static final Logger _log = LoggerFactory.getLogger(GamePacketHandler.class);
@SuppressWarnings("static-access")
@Override
public ReceivablePacket handlePacket(ByteBuffer buf, GameClient client)
{
int id = buf.get() & 0xFF;
ReceivablePacket msg = null;
try
{
int id2 = 0;
switch(client.getState())
{
case CONNECTED:
switch(id)
{
case 0x00:
msg = new RequestStatus();
break;
case 0x0e:
msg = new ProtocolVersion();
break;
case 0x2b:
msg = new AuthLogin();
break;
case 0xCB:
//msg = new GameGuardReply();
break;
default:
client.onUnknownPacket();
break;
}
break;
case AUTHED:
switch(id)
{
case 0x00:
msg = new Logout();
break;
case 0x0c:
msg = new CharacterCreate(); //RequestCharacterCreate();
break;
case 0x0d:
msg = new CharacterDelete(); //RequestCharacterDelete();
break;
case 0x12:
msg = new CharacterSelected(); //CharacterSelect();
break;
case 0x13:
msg = new NewCharacter(); //RequestNewCharacter();
break;
case 0x7b:
msg = new CharacterRestore(); //RequestCharacterRestore();
break;
case 0xCB:
//msg = new GameGuardReply();
break;
case 0xd0:
int id3 = buf.getShort() & 0xffff;
switch(id3)
{
case 0x36:
msg = new GotoLobby();
break;
case 0x93:
msg = new RequestEx2ndPasswordCheck();
break;
case 0x94:
msg = new RequestEx2ndPasswordVerify();
break;
case 0x95:
msg = new RequestEx2ndPasswordReq();
break;
default:
client.onUnknownPacket();
break;
}
break;
default:
client.onUnknownPacket();
break;
}
break;
case IN_GAME:
switch(id)
{
case 0x00:
msg = new Logout();
break;
case 0x01:
msg = new AttackRequest();
break;
case 0x02:
// msg = new ?();
break;
case 0x03:
msg = new RequestStartPledgeWar();
break;
case 0x04:
// msg = new ?();
break;
case 0x05:
msg = new RequestStopPledgeWar();
break;
case 0x06:
// msg = RequestSCCheck(); // ? Format: cdx
break;
case 0x07:
// msg = new ReplyGameGuardQuery();
//здесь совсем другой пакет ResponseAuthGameGuard[cddddd] (c) Drin
break;
case 0x08:
// msg = new ?();
break;
case 0x09:
msg = new RequestSetPledgeCrest();
break;
case 0x0a:
// msg = new ?();
break;
case 0x0b:
msg = new RequestGiveNickName();
break;
case 0x0c:
// wtf???
break;
case 0x0d:
// wtf???
break;
case 0x0f:
msg = new MoveBackwardToLocation();
break;
case 0x10:
// msg = new Say(); Format: cS // старый ?
break;
case 0x11:
msg = new EnterWorld();
break;
case 0x12:
// wtf???
break;
case 0x14:
msg = new RequestItemList();
break;
case 0x15:
// msg = new RequestEquipItem(); // старый?
// Format: cdd server id = %d Slot = %d
break;
case 0x16:
//msg = new RequestUnEquipItem();
break;
case 0x17:
msg = new RequestDropItem();
break;
case 0x18:
// msg = new ?();
break;
case 0x19:
msg = new UseItem();
break;
case 0x1a:
msg = new TradeRequest();
break;
case 0x1b:
msg = new AddTradeItem();
break;
case 0x1c:
msg = new TradeDone();
break;
case 0x1d:
// msg = new ?();
break;
case 0x1e:
// msg = new ?();
break;
case 0x1f:
msg = new Action();
break;
case 0x20:
// msg = new ?();
break;
case 0x21:
// msg = new ?();
break;
case 0x22:
// msg = new RequestLinkHtml();
break;
case 0x23:
msg = new RequestBypassToServer();
break;
case 0x24:
msg = new RequestBBSwrite(); //RequestBBSWrite();
break;
case 0x25:
msg = new RequestCreatePledge();
break;
case 0x26:
msg = new RequestJoinPledge();
break;
case 0x27:
msg = new RequestAnswerJoinPledge();
break;
case 0x28:
msg = new RequestWithdrawalPledge();
break;
case 0x29:
msg = new RequestOustPledgeMember();
break;
case 0x2a:
// msg = new ?();
break;
case 0x2c:
msg = new RequestGetItemFromPet();
break;
case 0x2d:
// RequestDismissParty
break;
case 0x2e:
msg = new RequestAllyInfo();
break;
case 0x2f:
msg = new RequestCrystallizeItem();
break;
case 0x30:
// RequestPrivateStoreManage, устарел
break;
case 0x31:
msg = new SetPrivateStoreSellList();
break;
case 0x32:
// RequestPrivateStoreManageCancel, устарел
break;
case 0x33:
msg = new RequestTeleport();
break;
case 0x34:
//msg = new RequestSocialAction();
break;
case 0x35:
// ChangeMoveType, устарел
break;
case 0x36:
// ChangeWaitType, устарел
break;
case 0x37:
msg = new RequestSellItem();
break;
case 0x38:
msg = new RequestMagicSkillList();
break;
case 0x39:
msg = new RequestMagicSkillUse();
break;
case 0x3a:
msg = new Appearing(); //Appering();
break;
case 0x3b:
if(Config.ALLOW_WAREHOUSE)
msg = new SendWareHouseDepositList();
break;
case 0x3c:
msg = new SendWareHouseWithDrawList();
break;
case 0x3d:
msg = new RequestShortCutReg();
break;
case 0x3e:
// msg = new RequestShortCutUse(); // Format: cddc ?
break;
case 0x3f:
msg = new RequestShortCutDel();
break;
case 0x40:
msg = new RequestBuyItem();
break;
case 0x41:
// msg = new RequestDismissPledge(); //Format: c ?
break;
case 0x42:
msg = new RequestJoinParty();
break;
case 0x43:
msg = new RequestAnswerJoinParty();
break;
case 0x44:
msg = new RequestWithDrawalParty();
break;
case 0x45:
msg = new RequestOustPartyMember();
break;
case 0x46:
msg = new RequestDismissParty();
break;
case 0x47:
msg = new CannotMoveAnymore();
break;
case 0x48:
msg = new RequestTargetCanceld();
break;
case 0x49:
msg = new Say2C();
break;
// -- maybe GM packet's
case 0x4a:
id2 = buf.get() & 0xff;
switch(id2)
{
case 0x00:
// msg = new SendCharacterInfo(); // Format: S
break;
case 0x01:
// msg = new SendSummonCmd(); // Format: S
break;
case 0x02:
// msg = new SendServerStatus(); // Format: (noargs)
break;
case 0x03:
// msg = new SendL2ParamSetting(); // Format: dd
break;
default:
client.onUnknownPacket();
break;
}
break;
case 0x4b:
// msg = new ?();
break;
case 0x4c:
// msg = new ?();
break;
case 0x4d:
msg = new RequestPledgeMemberList();
break;
case 0x4e:
// msg = new ?();
break;
case 0x4f:
// msg = new RequestMagicItem(); // Format: c ?
break;
case 0x50:
msg = new RequestSkillList(); // trigger
break;
case 0x51:
// msg = new ?();
break;
case 0x52:
msg = new MoveWithDelta();
break;
case 0x53:
msg = new RequestGetOnVehicle();
break;
case 0x54:
msg = new RequestGetOffVehicle();
break;
case 0x55:
msg = new AnswerTradeRequest();
break;
case 0x56:
msg = new RequestActionUse();
break;
case 0x57:
msg = new RequestRestart();
break;
case 0x58:
msg = new RequestSiegeInfo();
break;
case 0x59:
msg = new ValidatePosition();
break;
case 0x5a:
msg = new RequestSEKCustom();
break;
case 0x5b:
msg = new StartRotatingC();
break;
case 0x5c:
msg = new FinishRotatingC();
break;
case 0x5d:
// msg = new ?();
break;
case 0x5e:
msg = new RequestShowBoard();
break;
case 0x5f:
msg = new RequestEnchantItem();
break;
case 0x60:
msg = new RequestDestroyItem();
break;
case 0x61:
// msg = new ?();
break;
case 0x62:
msg = new RequestQuestList();
break;
case 0x63:
msg = new RequestQuestAbort(); //RequestDestroyQuest();
break;
case 0x64:
// msg = new ?();
break;
case 0x65:
msg = new RequestPledgeInfo();
break;
case 0x66:
msg = new RequestPledgeExtendedInfo();
break;
case 0x67:
msg = new RequestPledgeCrest();
break;
case 0x68:
// msg = new ?();
break;
case 0x69:
// msg = new ?();
break;
case 0x6a:
// msg = new ?();
break;
case 0x6b:
msg = new RequestSendL2FriendSay();
break;
case 0x6c:
msg = new RequestShowMiniMap(); //RequestOpenMinimap();
break;
case 0x6d:
msg = new RequestSendMsnChatLog();
break;
case 0x6e:
msg = new RequestReload(); // record video
break;
case 0x6f:
msg = new RequestHennaEquip();
break;
case 0x70:
msg = new RequestHennaUnequipList();
break;
case 0x71:
msg = new RequestHennaUnequipInfo();
break;
case 0x72:
msg = new RequestHennaUnequip();
break;
case 0x73:
msg = new RequestAquireSkillInfo(); //RequestAcquireSkillInfo();
break;
case 0x74:
msg = new SendBypassBuildCmd();
break;
case 0x75:
msg = new RequestMoveToLocationInVehicle();
break;
case 0x76:
msg = new CannotMoveAnymoreInVehicle();
break;
case 0x77:
msg = new RequestFriendInvite();
break;
case 0x78:
msg = new RequestFriendAddReply();
break;
case 0x79:
msg = new RequestFriendList();
break;
case 0x7a:
msg = new RequestFriendDel();
break;
case 0x7c:
msg = new RequestAquireSkill();
break;
case 0x7d:
msg = new RequestRestartPoint();
break;
case 0x7e:
msg = new RequestGMCommand();
break;
case 0x7f:
msg = new RequestPartyMatchConfig();
break;
case 0x80:
msg = new RequestPartyMatchList();
break;
case 0x81:
msg = new RequestPartyMatchDetail();
break;
case 0x82:
msg = new RequestPrivateStoreList();
break;
case 0x83:
msg = new RequestPrivateStoreBuy();
break;
case 0x84:
// msg = new ReviveReply(); // format: cd ?
break;
case 0x85:
msg = new RequestTutorialLinkHtml();
break;
case 0x86:
msg = new RequestTutorialPassCmdToServer();
break;
case 0x87:
msg = new RequestTutorialQuestionMark(); //RequestTutorialQuestionMarkPressed();
break;
case 0x88:
msg = new RequestTutorialClientEvent();
break;
case 0x89:
msg = new RequestPetition();
break;
case 0x8a:
msg = new RequestPetitionCancel();
break;
case 0x8b:
msg = new RequestGmList();
break;
case 0x8c:
msg = new RequestJoinAlly();
break;
case 0x8d:
msg = new RequestAnswerJoinAlly();
break;
case 0x8e:
// Команда /allyleave - выйти из альянса
msg = new RequestWithdrawAlly();
break;
case 0x8f:
// Команда /allydismiss - выгнать клан из альянса
msg = new RequestOustAlly();
break;
case 0x90:
// Команда /allydissolve - распустить альянс
msg = new RequestDismissAlly();
break;
case 0x91:
msg = new RequestSetAllyCrest();
break;
case 0x92:
msg = new RequestAllyCrest();
break;
case 0x93:
msg = new RequestChangePetName();
break;
case 0x94:
msg = new RequestPetUseItem();
break;
case 0x95:
msg = new RequestGiveItemToPet();
break;
case 0x96:
msg = new RequestPrivateStoreQuitSell();
break;
case 0x97:
msg = new SetPrivateStoreMsgSell();
break;
case 0x98:
msg = new RequestPetGetItem();
break;
case 0x99:
msg = new RequestPrivateStoreBuyManage();
break;
case 0x9a:
msg = new SetPrivateStoreBuyList();
break;
case 0x9b:
//
break;
case 0x9c:
msg = new RequestPrivateStoreQuitBuy();
break;
case 0x9d:
msg = new SetPrivateStoreMsgBuy();
break;
case 0x9e:
//
break;
case 0x9f:
msg = new RequestPrivateStoreBuySellList();
break;
case 0xa0:
msg = new RequestTimeCheck();
break;
case 0xa1:
// msg = new ?();
break;
case 0xa2:
// msg = new ?();
break;
case 0xa3:
// msg = new ?();
break;
case 0xa4:
// msg = new ?();
break;
case 0xa5:
// msg = new ?();
break;
case 0xa6:
//msg = new RequestSkillCoolTime(); //Deprecated ?
break;
case 0xa7:
msg = new RequestPackageSendableItemList();
break;
case 0xa8:
msg = new RequestPackageSend();
break;
case 0xa9:
msg = new RequestBlock();
break;
case 0xaa:
// msg = new RequestCastleSiegeInfo(); // format: cd ?
break;
case 0xab:
msg = new RequestCastleSiegeAttackerList();
break;
case 0xac:
msg = new RequestCastleSiegeDefenderList();
break;
case 0xad:
msg = new RequestJoinCastleSiege();
break;
case 0xae:
msg = new RequestConfirmCastleSiegeWaitingList();
break;
case 0xaf:
msg = new RequestSetCastleSiegeTime();
break;
case 0xb0:
msg = new RequestMultiSellChoose();
break;
case 0xb1:
msg = new NetPing();
break;
case 0xb2:
msg = new RequestRemainTime();
break;
case 0xb3:
msg = new BypassUserCmd();
break;
case 0xb4:
msg = new SnoopQuit();
break;
case 0xb5:
msg = new RequestRecipeBookOpen();
break;
case 0xb6:
msg = new RequestRecipeItemDelete();
break;
case 0xb7:
msg = new RequestRecipeItemMakeInfo();
break;
case 0xb8:
msg = new RequestRecipeItemMakeSelf();
break;
case 0xb9:
// msg = new RequestRecipeShopManageList(); deprecated // format: c
break;
case 0xba:
msg = new RequestRecipeShopMessageSet();
break;
case 0xbb:
msg = new RequestRecipeShopListSet();
break;
case 0xbc:
msg = new RequestRecipeShopManageQuit();
break;
case 0xbd:
msg = new RequestRecipeShopManageCancel();
break;
case 0xbe:
msg = new RequestRecipeShopMakeInfo();
break;
case 0xbf:
msg = new RequestRecipeShopMakeDo();
break;
case 0xc0:
msg = new RequestRecipeShopSellList();
break;
case 0xc1:
msg = new RequestObserverEnd();
break;
case 0xc2:
//msg = new VoteSociality(); // Recommend
break;
case 0xc3:
msg = new RequestHennaList(); //RequestHennaItemList();
break;
case 0xc4:
msg = new RequestHennaItemInfo();
break;
case 0xc5:
msg = new RequestBuySeed();
break;
case 0xc6:
msg = new ConfirmDlg();
break;
case 0xc7:
msg = new RequestPreviewItem();
break;
case 0xc8:
msg = new RequestSSQStatus();
break;
case 0xc9:
msg = new PetitionVote();
break;
case 0xca:
// msg = new ?();
break;
case 0xcb:
//msg = new GameGuardReply();
break;
case 0xcc:
msg = new RequestPledgePower();
break;
case 0xcd:
msg = new RequestMakeMacro();
break;
case 0xce:
msg = new RequestDeleteMacro();
break;
case 0xcf:
msg = new RequestProcureCrop(); // ?
break;
case 0xd0:
int id3 = buf.getShort() & 0xffff;
switch(id3)
{
case 0x00:
// msg = new ?();
break;
case 0x01:
msg = new RequestManorList();
break;
case 0x02:
msg = new RequestProcureCropList();
break;
case 0x03:
msg = new RequestSetSeed();
break;
case 0x04:
msg = new RequestSetCrop();
break;
case 0x05:
msg = new RequestWriteHeroWords();
break;
case 0x06:
msg = new RequestExMPCCAskJoin(); //RequestExAskJoinMPCC();
break;
case 0x07:
msg = new RequestExMPCCAcceptJoin(); //RequestExAcceptJoinMPCC();
break;
case 0x08:
msg = new RequestExOustFromMPCC();
break;
case 0x09:
msg = new RequestOustFromPartyRoom();
break;
case 0x0a:
msg = new RequestDismissPartyRoom();
break;
case 0x0b:
msg = new RequestWithdrawPartyRoom();
break;
case 0x0c:
msg = new RequestHandOverPartyMaster();
break;
case 0x0d:
msg = new RequestAutoSoulShot();
break;
case 0x0e:
msg = new RequestExEnchantSkillInfo();
break;
case 0x0f:
msg = new RequestExEnchantSkill();
break;
case 0x10:
msg = new RequestPledgeCrestLarge();
break;
case 0x11:
msg = new RequestSetPledgeCrestLarge();
break;
case 0x12:
msg = new RequestPledgeSetAcademyMaster();
break;
case 0x13:
msg = new RequestPledgePowerGradeList();
break;
case 0x14:
msg = new RequestPledgeMemberPowerInfo();
break;
case 0x15:
msg = new RequestPledgeSetMemberPowerGrade();
break;
case 0x16:
msg = new RequestPledgeMemberInfo();
break;
case 0x17:
msg = new RequestPledgeWarList();
break;
case 0x18:
msg = new RequestExFishRanking();
break;
case 0x19:
msg = new RequestPCCafeCouponUse();
break;
case 0x1a:
// msg = new ?();
// format: (ch)b, b - array размером в 64 байта
break;
case 0x1b:
msg = new RequestDuelStart();
break;
case 0x1c:
msg = new RequestDuelAnswerStart();
break;
case 0x1d:
msg = new RequestTutorialClientEvent(); //RequestExSetTutorial();
// Format: d / требует отладки, ИМХО, это совсем другой пакет (с) Drin
break;
case 0x1e:
msg = new RequestExRqItemLink(); // chat item links
break;
case 0x1f:
// CanNotMoveAnymore(AirShip)
// format: (ch)ddddd
break;
case 0x20:
msg = new RequestExMoveToLocationInAirShip();
break;
case 0x21:
msg = new RequestKeyMapping();
break;
case 0x22:
msg = new RequestSaveKeyMapping();
break;
case 0x23:
msg = new RequestExRemoveItemAttribute();
break;
case 0x24:
msg = new RequestSaveInventoryOrder(); // сохранение порядка инвентаря
break;
case 0x25:
msg = new RequestExitPartyMatchingWaitingRoom();
break;
case 0x26:
msg = new RequestConfirmTargetItem();
break;
case 0x27:
msg = new RequestConfirmRefinerItem();
break;
case 0x28:
msg = new RequestConfirmGemStone();
break;
case 0x29:
msg = new RequestOlympiadObserverEnd();
break;
case 0x2a:
msg = new RequestCursedWeaponList();
break;
case 0x2b:
msg = new RequestCursedWeaponLocation();
break;
case 0x2c:
msg = new RequestPledgeReorganizeMember();
break;
case 0x2d:
msg = new RequestExMPCCShowPartyMembersInfo();
break;
case 0x2e:
msg = new RequestExOlympiadObserverEnd(); // не уверен (в клиенте называется RequestOlympiadMatchList)
break;
case 0x2f:
msg = new RequestAskJoinPartyRoom();
break;
case 0x30:
msg = new AnswerJoinPartyRoom();
break;
case 0x31:
msg = new RequestListPartyMatchingWaitingRoom();
break;
case 0x32:
msg = new RequestExEnchantSkillSafe();
break;
case 0x33:
msg = new RequestExEnchantSkillUntrain();
break;
case 0x34:
msg = new RequestExEnchantSkillRouteChange();
break;
case 0x35:
msg = new RequestEnchantItemAttribute();
break;
case 0x36:
//RequestGotoLobby - случается при многократном нажатии кнопки "вход"
break;
case 0x38:
msg = new RequestExMoveToLocationAirShip();
break;
case 0x39:
msg = new RequestBidItemAuction();
break;
case 0x3a:
msg = new RequestInfoItemAuction();
break;
case 0x3b:
msg = new RequestExChangeName();
break;
case 0x3c:
msg = new RequestAllCastleInfo();
break;
case 0x3d:
msg = new RequestAllFortressInfo();
break;
case 0x3e:
msg = new RequestAllAgitInfo();
break;
case 0x3f:
msg = new RequestFortressSiegeInfo();
break;
case 0x40:
msg = new RequestGetBossRecord();
break;
case 0x41:
msg = new RequestRefine();
break;
case 0x42:
msg = new RequestConfirmCancelItem();
break;
case 0x43:
msg = new RequestRefineCancel();
break;
case 0x44:
msg = new RequestExMagicSkillUseGround();
break;
case 0x45:
msg = new RequestDuelSurrender();
break;
case 0x46:
msg = new RequestExEnchantSkillInfoDetail();
break;
/*case 0x47: ?*/
case 0x48:
msg = new RequestFortressMapInfo();
break;
case 0x49:
msg = new RequestPVPMatchRecord();
break;
case 0x4a:
msg = new SetPrivateStoreWholeMsg();
break;
case 0x4b:
msg = new RequestDispel();
break;
case 0x4c:
msg = new RequestExTryToPutEnchantTargetItem();
break;
case 0x4d:
msg = new RequestExTryToPutEnchantSupportItem();
break;
case 0x4e:
msg = new RequestExCancelEnchantItem();
break;
case 0x4f:
msg = new RequestChangeNicknameColor();
break;
case 0x50:
msg = new RequestResetNickname();
break;
case 0x51:
int id4 = buf.getInt();
switch(id4)
{
case 0x00:
msg = new RequestBookMarkSlotInfo();
break;
case 0x01:
msg = new RequestSaveBookMarkSlot();
break;
case 0x02:
msg = new RequestModifyBookMarkSlot();
break;
case 0x03:
msg = new RequestDeleteBookMarkSlot();
break;
case 0x04:
msg = new RequestTeleportBookMark();
break;
case 0x05:
msg = new RequestChangeBookMarkSlot();
break;
default:
client.onUnknownPacket();
break;
}
break;
case 0x52:
msg = new RequestWithDrawPremiumItem();
break;
case 0x53:
msg = new RequestExJump();
break;
case 0x54:
msg = new RequestExStartShowCrataeCubeRank();
break;
case 0x55:
msg = new RequestExStopShowCrataeCubeRank();
break;
case 0x56:
msg = new NotifyStartMiniGame();
break;
case 0x57:
msg = new RequestExJoinDominionWar();
break;
case 0x58:
msg = new RequestExDominionInfo();
break;
case 0x59:
msg = new RequestExCleftEnter();
break;
case 0x5A:
msg = new RequestExCubeGameChangeTeam();
break;
case 0x5B:
msg = new RequestExEndScenePlayer();
break;
case 0x5C:
msg = new RequestExCubeGameReadyAnswer();
break;
case 0x5D:
msg = new RequestExListMpccWaiting();
break;
case 0x5E:
msg = new RequestExManageMpccRoom();
break;
case 0x5F:
msg = new RequestExJoinMpccRoom();
break;
case 0x60:
msg = new RequestExOustFromMpccRoom();
break;
case 0x61:
msg = new RequestExDismissMpccRoom();
break;
case 0x62:
msg = new RequestExWithdrawMpccRoom();
break;
case 0x63:
msg = new RequestExSeedPhase();
break;
case 0x64:
msg = new RequestExMpccPartymasterList();
break;
case 0x65:
msg = new RequestExPostItemList();
break;
case 0x66:
msg = new RequestExSendPost();
break;
case 0x67:
msg = new RequestExRequestReceivedPostList();
break;
case 0x68:
msg = new RequestExDeleteReceivedPost();
break;
case 0x69:
msg = new RequestExRequestReceivedPost();
break;
case 0x6A:
msg = new RequestExReceivePost();
break;
case 0x6B:
msg = new RequestExRejectPost();
break;
case 0x6C:
msg = new RequestExRequestSentPostList();
break;
case 0x6D:
msg = new RequestExDeleteSentPost();
break;
case 0x6E:
msg = new RequestExRequestSentPost();
break;
case 0x6F:
msg = new RequestExCancelSentPost();
break;
case 0x70:
msg = new RequestExShowNewUserPetition();
break;
case 0x71:
msg = new RequestExShowStepTwo();
break;
case 0x72:
msg = new RequestExShowStepThree();
break;
case 0x73:
//msg = new ExRaidReserveResult();
break;
case 0x75:
msg = new RequestExRefundItem();
break;
case 0x76:
msg = new RequestExBuySellUIClose();
break;
case 0x77:
msg = new RequestExEventMatchObserverEnd();
break;
case 0x78:
msg = new RequestPartyLootModification();
break;
case 0x79:
msg = new AnswerPartyLootModification();
break;
case 0x7A:
msg = new AnswerCoupleAction();
break;
case 0x7B:
msg = new RequestExBR_EventRankerList();
break;
case 0x7C:
//msg = new RequestAskMemberShip();
break;
case 0x7D:
msg = new RequestAddExpandQuestAlarm();
break;
case 0x7E:
msg = new RequestVoteNew();
break;
case 0x7F:
_log.info("D0:7F");
break;
case 0x80:
_log.info("D0:80");
break;
case 0x81:
_log.info("D0:81");
break;
case 0x82:
_log.info("D0:82");
break;
case 0x83:
int id5 = buf.getInt();
switch(id5)
{
/* TODO:
case 0x01:
//msg = new RequestExAgitInitialize chd 0x01
break;
case 0x02:
//msg = new RequestExAgitDetailInfo chdcd 0x02
break;
case 0x03:
//msg = new RequestExMyAgitState chd 0x03
break;
case 0x04:
//msg = new RequestExRegisterAgitForBidStep1 chd 0x04
break;
case 0x05:
//msg = new RequestExRegisterAgitForBidStep2 chddQd 0x05
//msg = new RequestExRegisterAgitForBidStep3 chddQd 0x05 -no error? 0x05
break;
case 0x07:
//msg = new RequestExConfirmCancelRegisteringAgit chd 0x07
break;
case 0x08:
//msg = new RequestExProceedCancelRegisteringAgit chd 0x08
break;
case 0x09:
//msg = new RequestExConfirmCancelAgitBid chdd 0x09
break;
case 0x10:
//msg = new RequestExReBid chdd 0x10
break;
case 0x11:
//msg = new RequestExAgitListForLot chd 0x11
break;
case 0x12:
//msg = new RequestExApplyForAgitLotStep1 chdc 0x12
break;
case 0x13:
//msg = new RequestExApplyForAgitLotStep2 chdc 0x13
break;
case 0x14:
//msg = new RequestExAgitListForBid chdd 0x14
break;
case 0x0D:
//msg = new RequestExApplyForBidStep1 chdd 0x0D
break;
case 0x0E:
//msg = new RequestExApplyForBidStep2 chddQ 0x0E
break;
case 0x0F:
//msg = new RequestExApplyForBidStep3 chddQ 0x0F
break;
case 0x09:
//msg = new RequestExConfirmCancelAgitLot chdc 0x09
break;
case 0x0A:
//msg = new RequestExProceedCancelAgitLot chdc 0x0A
break;
case 0x0A:
//msg = new RequestExProceedCancelAgitBid chdd 0x0A
break;
*/
}
break;
case 0x84:
msg = new RequestExAddPostFriendForPostBox();
break;
case 0x85:
msg = new RequestExDeletePostFriendForPostBox();
break;
case 0x86:
msg = new RequestExShowPostFriendListForPostBox();
break;
case 0x87:
msg = new RequestExFriendListForPostBox();
break;
case 0x88:
msg = new RequestOlympiadMatchList();
break;
case 0x89:
msg = new RequestExBR_GamePoint();
break;
case 0x8A:
msg = new RequestExBR_ProductList();
break;
case 0x8B:
msg = new RequestExBR_ProductInfo();
break;
case 0x8C:
msg = new RequestExBR_BuyProduct();
break;
case 0x8D:
msg = new RequestExBR_RecentProductList();
break;
case 0x8E:
msg = new RequestBR_MiniGameLoadScores();
break;
case 0x8F:
msg = new RequestBR_MiniGameInsertScore();
break;
case 0x90:
msg = new RequestExBR_LectureMark();
break;
case 0x91:
msg = new RequestGoodsInventoryInfo();
break;
case 0x92:
//msg = new RequestUseGoodsInventoryItem();
break;
default:
client.onUnknownPacket();
break;
}
break;
default:
{
client.onUnknownPacket();
break;
}
}
break;
}
}
catch(BufferUnderflowException e)
{
client.onPacketReadFail();
}
return msg;
}
@Override
public GameClient create(MMOConnection con)
{
return new GameClient(con);
}
@Override
public void execute(Runnable r)
{
ThreadPoolManager.getInstance().execute(r);
}
}
Красным выделил, зачем комментить если это и так в сборке есть
Синим выделил, какая классная реализация пакетки, что закоменчено. P.S там их больше ещё пакетов для реализации надо. Но при этом заявление, реализация согласно официальному контенту.
И вообще данную вещь можно было переписать по нормальному.