Underground update.
This commit is contained in:
@@ -49,6 +49,7 @@ public class AbnormalStatusUpdate extends L2GameServerPacket
|
||||
if (info.getSkill().getDisplayLevel() < 100)
|
||||
{
|
||||
writeH(info.getSkill().getDisplayLevel());
|
||||
writeH(0x00);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -76,9 +76,10 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
|
||||
writeC(item.getItem().getType2()); // Item Type 2 : 00-weapon, 01-shield/armor, 02-ring/earring/necklace, 03-questitem, 04-adena, 05-item
|
||||
writeC(item.getCustomType1()); // Filler (always 0)
|
||||
writeQ(item.getItem().getBodyPart()); // Slot : 0006-lr.ear, 0008-neck, 0030-lr.finger, 0040-head, 0100-l.hand, 0200-gloves, 0400-chest, 0800-pants, 1000-feet, 4000-r.hand, 8000-r.hand
|
||||
writeH(item.getEnchant()); // Enchant level (pet level shown in control item)
|
||||
writeC(item.getEnchant()); // Enchant level (pet level shown in control item)
|
||||
writeH(0x00); // Equipped : 00-No, 01-yes
|
||||
writeH(item.getCustomType2());
|
||||
writeC(item.getCustomType2());
|
||||
writeD(0);
|
||||
writeItemElementalAndEnchant(new ItemInfo(item));
|
||||
}
|
||||
|
||||
@@ -95,13 +96,15 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
|
||||
writeC(item.getCustomType1()); // Filler (always 0)
|
||||
writeH(item.getEquipped()); // Equipped : 00-No, 01-yes
|
||||
writeQ(item.getItem().getBodyPart()); // Slot : 0006-lr.ear, 0008-neck, 0030-lr.finger, 0040-head, 0100-l.hand, 0200-gloves, 0400-chest, 0800-pants, 1000-feet, 4000-r.hand, 8000-r.hand
|
||||
writeH(item.getEnchant()); // Enchant level (pet level shown in control item)
|
||||
writeC(item.getEnchant()); // Enchant level (pet level shown in control item)
|
||||
writeC(0);
|
||||
writeD(item.getMana());
|
||||
writeD(item.getTime());
|
||||
writeC(0x01); // GOD Item enabled = 1 disabled (red) = 0
|
||||
if (containsMask(mask, ItemListType.AUGMENT_BONUS))
|
||||
{
|
||||
writeD(item.getAugmentationBonus());
|
||||
writeD(item.get1stAugmentationId());
|
||||
writeD(item.get2ndAugmentationId());
|
||||
}
|
||||
if (containsMask(mask, ItemListType.ELEMENTAL_ATTRIBUTE))
|
||||
{
|
||||
@@ -181,7 +184,7 @@ public abstract class AbstractItemPacket extends AbstractMaskPacket<ItemListType
|
||||
// Enchant Effects
|
||||
for (int op : item.getEnchantOptions())
|
||||
{
|
||||
writeH(op);
|
||||
writeD(op);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -414,12 +414,8 @@ public abstract class AbstractMessagePacket<T extends AbstractMessagePacket<?>>
|
||||
}
|
||||
|
||||
case TYPE_ITEM_NAME:
|
||||
case TYPE_CASTLE_NAME:
|
||||
case TYPE_INT_NUMBER:
|
||||
case TYPE_NPC_NAME:
|
||||
case TYPE_ELEMENT_NAME:
|
||||
case TYPE_SYSTEM_STRING:
|
||||
case TYPE_INSTANCE_NAME:
|
||||
case TYPE_DOOR_NAME:
|
||||
{
|
||||
writeD(param.getIntValue());
|
||||
@@ -429,8 +425,25 @@ public abstract class AbstractMessagePacket<T extends AbstractMessagePacket<?>>
|
||||
case TYPE_SKILL_NAME:
|
||||
{
|
||||
final int[] array = param.getIntArrayValue();
|
||||
writeD(array[0]); // SkillId
|
||||
writeH(array[1]); // SkillLevel
|
||||
final int _skillId = array[0];
|
||||
final int _skillLevel = array[1];
|
||||
writeD(_skillId); // SkillId
|
||||
if (_skillLevel < 100)
|
||||
{
|
||||
writeH(_skillLevel); // SkillLevel
|
||||
writeH(0);
|
||||
}
|
||||
else if (_skillLevel > 10000)
|
||||
{
|
||||
writeH((short) _skillLevel);
|
||||
writeH(_skillLevel >> 16);
|
||||
}
|
||||
else
|
||||
{
|
||||
int _maxLevel = SkillData.getInstance().getMaxLevel(_skillId);
|
||||
writeH(_maxLevel);
|
||||
writeH(_skillLevel);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -444,10 +457,18 @@ public abstract class AbstractMessagePacket<T extends AbstractMessagePacket<?>>
|
||||
break;
|
||||
}
|
||||
case TYPE_CLASS_ID:
|
||||
case TYPE_CASTLE_NAME:
|
||||
case TYPE_INSTANCE_NAME:
|
||||
case TYPE_SYSTEM_STRING:
|
||||
{
|
||||
writeH(param.getIntValue());
|
||||
break;
|
||||
}
|
||||
case TYPE_ELEMENT_NAME:
|
||||
{
|
||||
writeC(param.getIntValue());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -504,6 +525,7 @@ public abstract class AbstractMessagePacket<T extends AbstractMessagePacket<?>>
|
||||
final int[] array = param.getIntArrayValue();
|
||||
out.println(array[0]); // SkillId
|
||||
out.println(array[1]); // SkillLevel
|
||||
out.println(array[2]);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -615,8 +637,16 @@ public abstract class AbstractMessagePacket<T extends AbstractMessagePacket<?>>
|
||||
case TYPE_SKILL_NAME:
|
||||
{
|
||||
final int[] array = param.getIntArrayValue();
|
||||
final Skill skill = SkillData.getInstance().getSkill(array[0], array[1]);
|
||||
params[i] = skill == null ? "Unknown" : skill.getName();
|
||||
if (array[1] < 10000)
|
||||
{
|
||||
final Skill skill = SkillData.getInstance().getSkill(array[0], array[1]);
|
||||
params[i] = skill == null ? "Unknown" : skill.getName();
|
||||
}
|
||||
else
|
||||
{
|
||||
final Skill skill = SkillData.getInstance().getSkill(array[0], array[1] >> 16);
|
||||
params[i] = skill == null ? "Unknown" : skill.getName();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -125,5 +125,6 @@ public class AcquireSkillInfo extends L2GameServerPacket
|
||||
writeQ(temp.count);
|
||||
writeD(temp.unk);
|
||||
}
|
||||
writeD(0);
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,7 @@ import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.l2jserver.gameserver.data.xml.impl.SkillTreesData;
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.model.L2SkillLearn;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.holders.ItemHolder;
|
||||
@@ -51,7 +52,7 @@ public class AcquireSkillList extends L2GameServerPacket
|
||||
for (L2SkillLearn skill : _learnable)
|
||||
{
|
||||
writeD(skill.getSkillId());
|
||||
writeH(skill.getSkillLevel());
|
||||
writeD(skill.getSkillLevel());
|
||||
writeQ(skill.getLevelUpSp());
|
||||
writeC(skill.getGetLevel());
|
||||
writeC(skill.getDualClassLevel());
|
||||
@@ -68,7 +69,16 @@ public class AcquireSkillList extends L2GameServerPacket
|
||||
for (Skill skillRemove : skillRem)
|
||||
{
|
||||
writeD(skillRemove.getId());
|
||||
writeH(skillRemove.getLevel());
|
||||
if (skillRemove.getLevel() < 100)
|
||||
{
|
||||
writeD(skillRemove.getLevel());
|
||||
}
|
||||
else
|
||||
{
|
||||
int maxLevel = SkillData.getInstance().getMaxLevel(skillRemove.getId());
|
||||
writeH(maxLevel);
|
||||
writeH(skillRemove.getLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,15 +22,18 @@ public class AskJoinAlly extends L2GameServerPacket
|
||||
{
|
||||
private final String _requestorName;
|
||||
private final int _requestorObjId;
|
||||
private final String _requestorAllyName;
|
||||
|
||||
/**
|
||||
* @param requestorObjId
|
||||
* @param requestorAllyName
|
||||
* @param requestorName
|
||||
*/
|
||||
public AskJoinAlly(int requestorObjId, String requestorName)
|
||||
public AskJoinAlly(int requestorObjId, String requestorAllyName, String requestorName)
|
||||
{
|
||||
_requestorName = requestorName;
|
||||
_requestorObjId = requestorObjId;
|
||||
_requestorAllyName = requestorAllyName;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -38,7 +41,7 @@ public class AskJoinAlly extends L2GameServerPacket
|
||||
{
|
||||
writeC(0xbb);
|
||||
writeD(_requestorObjId);
|
||||
writeS(null); // Ally Name ?
|
||||
writeS(_requestorAllyName);
|
||||
writeS(null); // TODO: Find me!
|
||||
writeS(_requestorName);
|
||||
}
|
||||
|
||||
@@ -24,13 +24,15 @@ public final class AskJoinPledge extends L2GameServerPacket
|
||||
private final String _subPledgeName;
|
||||
private final int _pledgeType;
|
||||
private final String _pledgeName;
|
||||
private final String _askjoinName;
|
||||
|
||||
public AskJoinPledge(int requestorObjId, String subPledgeName, int pledgeType, String pledgeName)
|
||||
public AskJoinPledge(int requestorObjId, String subPledgeName, int pledgeType, String pledgeName, String askjoinName)
|
||||
{
|
||||
_requestorObjId = requestorObjId;
|
||||
_subPledgeName = subPledgeName;
|
||||
_pledgeType = pledgeType;
|
||||
_pledgeName = pledgeName;
|
||||
_askjoinName = askjoinName;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -38,14 +40,15 @@ public final class AskJoinPledge extends L2GameServerPacket
|
||||
{
|
||||
writeC(0x2c);
|
||||
writeD(_requestorObjId);
|
||||
if (_subPledgeName != null)
|
||||
{
|
||||
writeS(_pledgeType > 0 ? _subPledgeName : _pledgeName);
|
||||
}
|
||||
writeS(_askjoinName);
|
||||
writeS(_pledgeName);
|
||||
if (_pledgeType != 0)
|
||||
{
|
||||
writeD(_pledgeType);
|
||||
}
|
||||
if (_subPledgeName != null)
|
||||
{
|
||||
writeS(_pledgeType > 0 ? _subPledgeName : _pledgeName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,7 +70,8 @@ public final class BuyListSeed extends L2GameServerPacket
|
||||
writeC(0x00); // Filler (always 0)
|
||||
writeH(0x00); // Equipped : 00-No, 01-yes
|
||||
writeQ(0x00); // Slot : 0006-lr.ear, 0008-neck, 0030-lr.finger, 0040-head, 0100-l.hand, 0200-gloves, 0400-chest, 0800-pants, 1000-feet, 4000-r.hand, 8000-r.hand
|
||||
writeH(0x00); // Enchant level (pet level shown in control item)
|
||||
writeC(0x00); // Enchant level (pet level shown in control item)
|
||||
writeC(0x00);
|
||||
writeD(-1);
|
||||
writeD(-9999);
|
||||
writeC(0x01); // GOD Item enabled = 1 disabled (red) = 0
|
||||
|
||||
@@ -48,22 +48,6 @@ public class CharInfo extends L2GameServerPacket
|
||||
|
||||
private int _vehicleId = 0;
|
||||
|
||||
private static final int[] PAPERDOLL_ORDER = new int[]
|
||||
{
|
||||
Inventory.PAPERDOLL_UNDER,
|
||||
Inventory.PAPERDOLL_HEAD,
|
||||
Inventory.PAPERDOLL_RHAND,
|
||||
Inventory.PAPERDOLL_LHAND,
|
||||
Inventory.PAPERDOLL_GLOVES,
|
||||
Inventory.PAPERDOLL_CHEST,
|
||||
Inventory.PAPERDOLL_LEGS,
|
||||
Inventory.PAPERDOLL_FEET,
|
||||
Inventory.PAPERDOLL_CLOAK,
|
||||
Inventory.PAPERDOLL_RHAND,
|
||||
Inventory.PAPERDOLL_HAIR,
|
||||
Inventory.PAPERDOLL_HAIR2
|
||||
};
|
||||
|
||||
public CharInfo(L2PcInstance cha)
|
||||
{
|
||||
_activeChar = cha;
|
||||
@@ -131,21 +115,22 @@ public class CharInfo extends L2GameServerPacket
|
||||
writeS(_activeChar.getAppearance().getVisibleName()); // Confirmed
|
||||
writeH(_activeChar.getRace().ordinal()); // Confirmed
|
||||
writeC(_activeChar.getAppearance().getSex() ? 0x01 : 0x00); // Confirmed
|
||||
writeD(_activeChar.getBaseClass()); // Confirmed
|
||||
writeD(_activeChar.getBaseClassId()); // Confirmed
|
||||
|
||||
for (int slot : getPaperdollOrder())
|
||||
for (int slot : Inventory.PAPERDOLL_ORDER)
|
||||
{
|
||||
writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot)); // Confirmed
|
||||
}
|
||||
|
||||
for (int slot : getPaperdollOrderAugument())
|
||||
for (int slot : Inventory.PAPERDOLL_ORDER_AUGMENT)
|
||||
{
|
||||
writeD(_activeChar.getInventory().getPaperdollAugmentationId(slot)); // Confirmed
|
||||
writeD(_activeChar.getInventory().getPaperdoll1stAugmentationId(slot));
|
||||
writeD(_activeChar.getInventory().getPaperdoll2ndAugmentationId(slot));
|
||||
}
|
||||
|
||||
writeC(_armorEnchant);
|
||||
|
||||
for (int slot : getPaperdollOrderVisualId())
|
||||
for (int slot : Inventory.PAPERDOLL_ORDER_VISUAL_ID)
|
||||
{
|
||||
writeD(_activeChar.getInventory().getPaperdollItemVisualId(slot));
|
||||
}
|
||||
@@ -241,7 +226,7 @@ public class CharInfo extends L2GameServerPacket
|
||||
writeD(_activeChar.getTransformationDisplayId()); // Confirmed
|
||||
writeD(_activeChar.getAgathionId()); // Confirmed
|
||||
|
||||
writeC(0x00); // TODO: Find me!
|
||||
writeC(0x01); // TODO: Find me!
|
||||
|
||||
writeD((int) Math.round(_activeChar.getCurrentCp())); // Confirmed
|
||||
writeD(_activeChar.getMaxHp()); // Confirmed
|
||||
@@ -260,10 +245,4 @@ public class CharInfo extends L2GameServerPacket
|
||||
writeC(_activeChar.isHairAccessoryEnabled() ? 0x01 : 0x00); // Hair accessory
|
||||
writeC(_activeChar.getAbilityPointsUsed()); // Used Ability Points
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int[] getPaperdollOrder()
|
||||
{
|
||||
return PAPERDOLL_ORDER;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
||||
import com.l2jserver.gameserver.data.xml.impl.ExperienceData;
|
||||
import com.l2jserver.gameserver.model.CharSelectInfoPackage;
|
||||
import com.l2jserver.gameserver.model.L2Clan;
|
||||
import com.l2jserver.gameserver.model.entity.Hero;
|
||||
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
|
||||
import com.l2jserver.gameserver.network.L2GameClient;
|
||||
|
||||
@@ -41,7 +40,6 @@ public class CharSelectionInfo extends L2GameServerPacket
|
||||
private static Logger _log = Logger.getLogger(CharSelectionInfo.class.getName());
|
||||
private final String _loginName;
|
||||
private final int _sessionId;
|
||||
private int _activeId;
|
||||
private final List<CharSelectInfoPackage> _characterPackages;
|
||||
|
||||
/**
|
||||
@@ -54,15 +52,6 @@ public class CharSelectionInfo extends L2GameServerPacket
|
||||
_sessionId = sessionId;
|
||||
_loginName = loginName;
|
||||
_characterPackages = loadCharacterSelectInfo(_loginName);
|
||||
_activeId = -1;
|
||||
}
|
||||
|
||||
public CharSelectionInfo(String loginName, int sessionId, int activeId)
|
||||
{
|
||||
_sessionId = sessionId;
|
||||
_loginName = loginName;
|
||||
_characterPackages = loadCharacterSelectInfo(_loginName);
|
||||
_activeId = activeId;
|
||||
}
|
||||
|
||||
public List<CharSelectInfoPackage> getCharInfo()
|
||||
@@ -81,48 +70,37 @@ public class CharSelectionInfo extends L2GameServerPacket
|
||||
writeD(Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT);
|
||||
writeC(size == Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT ? 0x01 : 0x00); // if 1 can't create new char
|
||||
writeC(0x01); // play mode, if 1 can create only 2 char in regular lobby
|
||||
writeD(0x02); // if 1, korean client
|
||||
writeC(0x00); // if 1 suggest premium account
|
||||
writeC(0x02); // play mode, if 1 can create only 2 char in regular lobby
|
||||
writeD(0x00); // if 1, korean client
|
||||
|
||||
long lastAccess = 0L;
|
||||
if (_activeId == -1)
|
||||
int charId = 0;
|
||||
if (!_characterPackages.isEmpty())
|
||||
{
|
||||
for (int i = 0; i < size; i++)
|
||||
long lastAccess = -1L;
|
||||
charId = _characterPackages.get(0).getObjectId();
|
||||
|
||||
for (CharSelectInfoPackage info : _characterPackages)
|
||||
{
|
||||
final CharSelectInfoPackage charInfoPackage = _characterPackages.get(i);
|
||||
if (lastAccess < charInfoPackage.getLastAccess())
|
||||
if (info.isAvailable() && (lastAccess < info.getLastAccess()))
|
||||
{
|
||||
lastAccess = charInfoPackage.getLastAccess();
|
||||
_activeId = i;
|
||||
lastAccess = info.getLastAccess();
|
||||
charId = info.getObjectId();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < size; i++)
|
||||
for (CharSelectInfoPackage charInfoPackage : _characterPackages)
|
||||
{
|
||||
final CharSelectInfoPackage charInfoPackage = _characterPackages.get(i);
|
||||
|
||||
writeS(charInfoPackage.getName()); // char name
|
||||
writeD(charInfoPackage.getObjectId()); // char id
|
||||
writeS(_loginName); // login
|
||||
writeD(_sessionId); // session id
|
||||
writeD(0x00); // ??
|
||||
writeD(0x00); // ??
|
||||
|
||||
writeD(charInfoPackage.getSex()); // sex
|
||||
writeD(charInfoPackage.getRace()); // race
|
||||
|
||||
if (charInfoPackage.getClassId() == charInfoPackage.getBaseClassId())
|
||||
{
|
||||
writeD(charInfoPackage.getClassId());
|
||||
}
|
||||
else
|
||||
{
|
||||
writeD(charInfoPackage.getBaseClassId());
|
||||
}
|
||||
|
||||
writeD(0x01); // server id ??
|
||||
|
||||
writeS(charInfoPackage.getName());
|
||||
writeD(charInfoPackage.getObjectId());
|
||||
writeS(_loginName);
|
||||
writeD(_sessionId);
|
||||
writeD(charInfoPackage.getClanId());
|
||||
writeD(0x00);
|
||||
writeD(charInfoPackage.getSex());
|
||||
writeD(charInfoPackage.getRace());
|
||||
writeD(charInfoPackage.getBaseClassId());
|
||||
writeD(Config.SERVER_ID);
|
||||
writeD(charInfoPackage.getX());
|
||||
writeD(charInfoPackage.getY());
|
||||
writeD(charInfoPackage.getZ());
|
||||
@@ -149,52 +127,50 @@ public class CharSelectionInfo extends L2GameServerPacket
|
||||
writeD(0x00); // Ertheia
|
||||
writeD(0x00); // Ertheia
|
||||
|
||||
for (int slot : getPaperdollOrder())
|
||||
for (int slot : Inventory.PAPERDOLL_ORDER_ALL)
|
||||
{
|
||||
writeD(charInfoPackage.getPaperdollItemId(slot));
|
||||
}
|
||||
|
||||
for (int slot : getPaperdollOrderVisualId())
|
||||
for (int slot : Inventory.PAPERDOLL_ORDER_VISUAL_ID)
|
||||
{
|
||||
writeD(charInfoPackage.getPaperdollItemVisualId(slot));
|
||||
}
|
||||
|
||||
writeD(0x00); // ??
|
||||
writeD(0x00); // ??
|
||||
writeH(0x00); // ??
|
||||
writeH(charInfoPackage.getEnchantEffect(Inventory.PAPERDOLL_CHEST));
|
||||
writeH(charInfoPackage.getEnchantEffect(Inventory.PAPERDOLL_LEGS));
|
||||
writeH(charInfoPackage.getEnchantEffect(Inventory.PAPERDOLL_HEAD));
|
||||
writeH(charInfoPackage.getEnchantEffect(Inventory.PAPERDOLL_GLOVES));
|
||||
writeH(charInfoPackage.getEnchantEffect(Inventory.PAPERDOLL_FEET));
|
||||
|
||||
writeD(charInfoPackage.getHairStyle());
|
||||
writeD(charInfoPackage.getHairColor());
|
||||
writeD(charInfoPackage.getFace());
|
||||
|
||||
writeF(charInfoPackage.getMaxHp()); // hp max
|
||||
writeF(charInfoPackage.getMaxMp()); // mp max
|
||||
writeF(charInfoPackage.getMaxHp());
|
||||
writeF(charInfoPackage.getMaxMp());
|
||||
|
||||
writeD(charInfoPackage.getDeleteTimer() > 0 ? (int) ((charInfoPackage.getDeleteTimer() - System.currentTimeMillis()) / 1000) : 0);
|
||||
writeD(charInfoPackage.getClassId());
|
||||
writeD(i == _activeId ? 1 : 0);
|
||||
writeD(charId == charInfoPackage.getObjectId() ? 0x01 : 0x00);
|
||||
writeC(charInfoPackage.getWeaponEnchantEffect());
|
||||
writeD(charInfoPackage.get1stAugmentationId());
|
||||
writeD(charInfoPackage.get2ndAugmentationId());
|
||||
writeD(charInfoPackage.getTransformationId());
|
||||
|
||||
writeC(charInfoPackage.getEnchantEffect() > 127 ? 127 : charInfoPackage.getEnchantEffect());
|
||||
writeD(charInfoPackage.getAugmentationId());
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
|
||||
// writeD(charInfoPackage.getTransformId()); // Used to display Transformations
|
||||
writeD(0x00); // Currently on retail when you are on character select you don't see your transformation.
|
||||
|
||||
// Freya by Vistall:
|
||||
writeD(0x00); // npdid - 16024 Tame Tiny Baby Kookaburra A9E89C
|
||||
writeD(0x00); // level
|
||||
writeD(0x00); // ?
|
||||
writeD(0x00); // food? - 1200
|
||||
writeF(0x00); // max Hp
|
||||
writeF(0x00); // cur Hp
|
||||
|
||||
// High Five by Vistall:
|
||||
writeD(charInfoPackage.getVitalityPoints()); // H5 Vitality
|
||||
writeD(0x00); // Vitality Exp Bonus
|
||||
writeD(0x00); // Vitality items used, such as potion
|
||||
writeD(charInfoPackage.getAccessLevel() == -100 ? 0x00 : 0x01); // Char is active or not
|
||||
writeC(0x00); // is noble
|
||||
writeC(Hero.getInstance().isHero(charInfoPackage.getObjectId()) ? 0x01 : 0x00); // hero glow
|
||||
writeF(0x00);
|
||||
writeF(0x00);
|
||||
writeD(charInfoPackage.getVitalityPoints());
|
||||
writeD(charInfoPackage.getVitalityPercent());
|
||||
writeD(charInfoPackage.getVitalityItemCount());
|
||||
writeD(charInfoPackage.isAvailable());
|
||||
writeC(0x00);
|
||||
writeC(charInfoPackage.isHero()); // hero glow
|
||||
writeC(charInfoPackage.isHairAccessoryEnabled() ? 0x01 : 0x00); // show hair accessory if enabled
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,9 +45,7 @@ public class Die extends L2GameServerPacket
|
||||
private final boolean _isSweepable;
|
||||
private boolean _useFeather;
|
||||
private boolean _toFortress;
|
||||
private boolean _hideAnimation;
|
||||
private List<Integer> _items = null;
|
||||
private boolean _itemsEnabled;
|
||||
|
||||
public Die(L2Character activeChar)
|
||||
{
|
||||
@@ -84,11 +82,6 @@ public class Die extends L2GameServerPacket
|
||||
_isSweepable = activeChar.isAttackable() && activeChar.isSweepActive();
|
||||
}
|
||||
|
||||
public void setHideAnimation(boolean val)
|
||||
{
|
||||
_hideAnimation = val;
|
||||
}
|
||||
|
||||
public void addItem(int itemId)
|
||||
{
|
||||
if (_items == null)
|
||||
@@ -111,11 +104,6 @@ public class Die extends L2GameServerPacket
|
||||
return _items != null ? _items : Collections.emptyList();
|
||||
}
|
||||
|
||||
public void setItemsEnabled(boolean val)
|
||||
{
|
||||
_itemsEnabled = val;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void writeImpl()
|
||||
{
|
||||
@@ -128,14 +116,10 @@ public class Die extends L2GameServerPacket
|
||||
writeD(_isSweepable ? 0x01 : 0x00);
|
||||
writeD(_useFeather ? 0x01 : 0x00);
|
||||
writeD(_toFortress ? 0x01 : 0x00);
|
||||
writeC(_hideAnimation ? 0x01 : 0x00);
|
||||
|
||||
writeD(getItems().size());
|
||||
for (int itemId : getItems())
|
||||
{
|
||||
writeD(itemId);
|
||||
}
|
||||
|
||||
writeD(_itemsEnabled ? 0x01 : 0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeC(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ public class EnchantResult extends L2GameServerPacket
|
||||
writeD(_enchantLevel);
|
||||
for (int option : _enchantOptions)
|
||||
{
|
||||
writeH(option);
|
||||
writeD(option);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ package com.l2jserver.gameserver.network.serverpackets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
@@ -34,6 +35,7 @@ public class ExAbnormalStatusUpdateFromTarget extends L2GameServerPacket
|
||||
{
|
||||
protected int _skillId;
|
||||
protected int _level;
|
||||
protected int _maxlevel;
|
||||
protected int _duration;
|
||||
protected int _caster;
|
||||
|
||||
@@ -49,6 +51,7 @@ public class ExAbnormalStatusUpdateFromTarget extends L2GameServerPacket
|
||||
|
||||
_skillId = skill.getDisplayId();
|
||||
_level = skill.getDisplayLevel();
|
||||
_maxlevel = SkillData.getInstance().getMaxLevel(_skillId);
|
||||
_duration = info.getTime();
|
||||
_caster = casterId;
|
||||
}
|
||||
@@ -86,7 +89,16 @@ public class ExAbnormalStatusUpdateFromTarget extends L2GameServerPacket
|
||||
for (Effect info : _effects)
|
||||
{
|
||||
writeD(info._skillId);
|
||||
writeH(info._level);
|
||||
if (info._level < 100)
|
||||
{
|
||||
writeH(info._level);
|
||||
writeH(0x00);
|
||||
}
|
||||
else
|
||||
{
|
||||
writeH(info._maxlevel);
|
||||
writeH(info._level);
|
||||
}
|
||||
writeH(0x00); // Combo abnormal ?
|
||||
writeH(info._duration);
|
||||
writeD(info._caster);
|
||||
|
||||
@@ -18,18 +18,24 @@
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class ExAutoSoulShot extends L2GameServerPacket
|
||||
{
|
||||
private final int _itemId;
|
||||
private final int _type;
|
||||
private final int _enabled;
|
||||
private final int _type; // 0 SS, 1 SPS, 2 Beast SS, 3 Beast SPS
|
||||
|
||||
/**
|
||||
* @param itemId
|
||||
* @param enabled
|
||||
* @param type
|
||||
*/
|
||||
public ExAutoSoulShot(int itemId, int type)
|
||||
public ExAutoSoulShot(int itemId, int enabled, int type)
|
||||
{
|
||||
_itemId = itemId;
|
||||
_enabled = enabled;
|
||||
_type = type;
|
||||
}
|
||||
|
||||
@@ -37,8 +43,9 @@ public class ExAutoSoulShot extends L2GameServerPacket
|
||||
protected final void writeImpl()
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0x0c); // sub id
|
||||
writeH(0x0C);
|
||||
writeD(_itemId);
|
||||
writeD(_enabled);
|
||||
writeD(_type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,19 +26,80 @@ public final class ExBasicActionList extends L2GameServerPacket
|
||||
//@formatter:off
|
||||
public static final int[] ACTIONS_ON_TRANSFORM =
|
||||
{
|
||||
1, 2, 3, 4,
|
||||
5, 6, 7, 8,
|
||||
9, 11, 15, 16,
|
||||
17, 18, 19, 21,
|
||||
22, 23, 40, 41,
|
||||
50, 52, 53, 54,
|
||||
55, 56, 57, 63,
|
||||
64, 65, 67, 68,
|
||||
69, 70, 74, 76,
|
||||
77, 78, 79, 80,
|
||||
81, 82, 83, 84,
|
||||
85, 86, 87, 88,
|
||||
1000, 1001, 1003,
|
||||
1, 3, 4, 5,
|
||||
6, 7, 8, 9,
|
||||
11, 15, 16, 17,
|
||||
18, 19, 21, 22,
|
||||
23, 32, 36, 39,
|
||||
40, 41, 42, 43,
|
||||
44, 45, 46, 47,
|
||||
48, 50, 52, 53,
|
||||
54, 55, 56, 57,
|
||||
63, 64, 65, 70, 86,
|
||||
1000, 1001, 1003, 1004,
|
||||
1005, 1006, 1007, 1008,
|
||||
1009, 1010, 1011, 1012,
|
||||
1013, 1014, 1015, 1016,
|
||||
1017, 1018, 1019, 1020,
|
||||
1021, 1022, 1023, 1024,
|
||||
1025, 1026, 1027, 1028,
|
||||
1029, 1030, 1031, 1032,
|
||||
1033, 1034, 1035, 1036,
|
||||
1037, 1038, 1039, 1040,
|
||||
1041, 1042, 1043, 1044,
|
||||
1045, 1046, 1047, 1048,
|
||||
1049, 1050, 1051, 1052,
|
||||
1053, 1054, 1055, 1056,
|
||||
1057, 1058, 1059, 1060,
|
||||
1061, 1062, 1063, 1064,
|
||||
1065, 1066, 1067, 1068,
|
||||
1069, 1070, 1071, 1072,
|
||||
1073, 1074, 1075, 1076,
|
||||
1077, 1078, 1079, 1080,
|
||||
1081, 1082, 1083, 1084,
|
||||
1089, 1090, 1091, 1092,
|
||||
1093, 1094, 1095, 1096,
|
||||
1097, 1098, 1099, 1100,
|
||||
1101, 1102, 1103, 1104,
|
||||
1106, 1107, 1108, 1109,
|
||||
1110, 1111, 1113, 1114,
|
||||
1115, 1116, 1117, 1118,
|
||||
1120, 1121, 1124, 1125,
|
||||
1126, 1127, 1128, 1129,
|
||||
1130, 1131, 1132, 1133,
|
||||
1134, 1135, 1136, 1137,
|
||||
1138, 1139, 1140, 1141,
|
||||
1142, 1143, 1144, 1145,
|
||||
1146, 1147, 1148, 1149,
|
||||
1150, 1151, 1152, 1153,
|
||||
1154, 1155
|
||||
};
|
||||
|
||||
public static final int[] DEFAULT_ACTION_LIST =
|
||||
{
|
||||
0, 1, 2, 3, 4,
|
||||
5, 6, 7, 8, 9,
|
||||
10, 11, 12, 13,
|
||||
14, 15, 16, 17,
|
||||
18, 19, 20, 21,
|
||||
22, 23, 24, 25,
|
||||
26, 27, 28, 29,
|
||||
30, 31, 32, 33,
|
||||
34, 35, 36, 37,
|
||||
38, 39, 40, 41,
|
||||
42, 43, 44, 45,
|
||||
46, 47, 48, 49,
|
||||
50, 51, 52, 53,
|
||||
54, 55, 56, 57,
|
||||
58, 59, 60, 61,
|
||||
62, 63, 64, 65,
|
||||
66, 67, 68, 69,
|
||||
70, 71, 72, 73,
|
||||
74, 76, 77, 78,
|
||||
79, 80, 81, 82,
|
||||
83, 84, 85, 86,
|
||||
87, 88, 89, 90,
|
||||
1000, 1001, 1002, 1003,
|
||||
1004, 1005, 1006, 1007,
|
||||
1008, 1009, 1010, 1011,
|
||||
1012, 1013, 1014, 1015,
|
||||
@@ -59,77 +120,28 @@ public final class ExBasicActionList extends L2GameServerPacket
|
||||
1072, 1073, 1074, 1075,
|
||||
1076, 1077, 1078, 1079,
|
||||
1080, 1081, 1082, 1083,
|
||||
1084, 1089, 1090, 1091,
|
||||
1092, 5000, 5001, 5002,
|
||||
5003, 5004, 5005, 5006,
|
||||
5007, 5008, 5009, 5010,
|
||||
5011, 5012, 5013, 5014,
|
||||
5015
|
||||
};
|
||||
|
||||
public static final int[] DEFAULT_ACTION_LIST =
|
||||
{
|
||||
0, 1, 2, 3,
|
||||
4, 5, 6, 7, 8,
|
||||
9, 10, 11, 12,
|
||||
13, 14, 15, 16,
|
||||
17, 18, 19, 20,
|
||||
21, 22, 23, 24,
|
||||
25, 26, 27, 28,
|
||||
29, 30, 31, 32,
|
||||
33, 34, 35, 36,
|
||||
37, 38, 39, 40,
|
||||
41, 42, 43, 44,
|
||||
45, 46, 47, 48,
|
||||
49, 50, 51, 52,
|
||||
53, 54, 55, 56,
|
||||
57, 58, 59, 60,
|
||||
61, 62, 63, 64,
|
||||
65, 66, 71, 72,
|
||||
73, 74, 75, 76,
|
||||
77, 78, 79, 80,
|
||||
81, 82, 83, 84,
|
||||
85, 86, 87, 88,
|
||||
90, 1000, 1001, 1002,
|
||||
1003, 1004, 1005, 1006,
|
||||
1007, 1008, 1009, 1010,
|
||||
1011, 1012, 1013, 1014,
|
||||
1015, 1016, 1017, 1018,
|
||||
1019, 1020, 1021, 1022,
|
||||
1023, 1024, 1025, 1026,
|
||||
1027, 1028, 1029, 1030,
|
||||
1031, 1032, 1033, 1034,
|
||||
1035, 1036, 1037, 1038,
|
||||
1039, 1040, 1041, 1042,
|
||||
1043, 1044, 1045, 1046,
|
||||
1047, 1048, 1049, 1050,
|
||||
1051, 1052, 1053, 1054,
|
||||
1055, 1056, 1057, 1058,
|
||||
1059, 1060, 1061, 1062,
|
||||
1063, 1064, 1065, 1066,
|
||||
1067, 1068, 1069, 1070,
|
||||
1071, 1072, 1073, 1074,
|
||||
1075, 1076, 1077, 1078,
|
||||
1079, 1080, 1081, 1082,
|
||||
1083, 1084, 1086, 1087,
|
||||
1088, 1089, 1090, 1091,
|
||||
1092, 1093, 1094, 1095,
|
||||
1096, 1097, 1098, 1099,
|
||||
1100, 1101, 1102, 1103,
|
||||
1104, 1105, 1106, 1107,
|
||||
1108, 1109, 1110, 1111,
|
||||
1112, 1113, 1114, 1115,
|
||||
1116, 1117, 1118, 1119,
|
||||
1120, 1121, 1122, 1123,
|
||||
1124, 1125, 1126, 1127,
|
||||
1128, 1129, 1130, 1131,
|
||||
1132, 1133, 1134, 1135,
|
||||
1136, 1137, 1138, 1139,
|
||||
1140, 1141, 1142, 1143,
|
||||
5000, 5001, 5002, 5003,
|
||||
5004, 5005, 5006, 5007,
|
||||
5008, 5009, 5010, 5011,
|
||||
5012, 5013, 5014, 5015
|
||||
1084, 1086, 1087, 1088,
|
||||
1089, 1090, 1091, 1092,
|
||||
1093, 1094, 1095, 1096,
|
||||
1097, 1098, 1099, 1100,
|
||||
1101, 1102, 1103, 1104,
|
||||
1106, 1107, 1108, 1109,
|
||||
1110, 1111, 1112, 1113,
|
||||
1114, 1115, 1116, 1117,
|
||||
1118, 1119, 1120, 1121,
|
||||
1122, 1123, 1124, 1125,
|
||||
1126, 1127, 1128, 1129,
|
||||
1130, 1131, 1132, 1133,
|
||||
1134, 1135, 1136, 1137,
|
||||
1138, 1139, 1140, 1141,
|
||||
1142, 1143, 1144, 1145,
|
||||
1146, 1147, 1148, 1149,
|
||||
1150, 1151, 1152, 1153,
|
||||
1154, 1155, 5000, 5001,
|
||||
5002, 5003, 5004, 5005,
|
||||
5006, 5007, 5008, 5009,
|
||||
5010, 5011, 5012, 5013,
|
||||
5014, 5015
|
||||
};
|
||||
//@formatter:on
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ public class ExBeautyItemList extends L2GameServerPacket
|
||||
writeD(hair.getAdena());
|
||||
writeD(hair.getResetAdena());
|
||||
writeD(hair.getBeautyShopTicket());
|
||||
writeD(1); // Limit
|
||||
writeD(99999999); // Limit
|
||||
}
|
||||
|
||||
writeD(FACE_TYPE);
|
||||
@@ -82,7 +82,7 @@ public class ExBeautyItemList extends L2GameServerPacket
|
||||
writeD(face.getAdena());
|
||||
writeD(face.getResetAdena());
|
||||
writeD(face.getBeautyShopTicket());
|
||||
writeD(1); // Limit
|
||||
writeD(99999999); // Limit
|
||||
}
|
||||
|
||||
writeD(COLOR_TYPE);
|
||||
@@ -96,7 +96,7 @@ public class ExBeautyItemList extends L2GameServerPacket
|
||||
writeD(color.getAdena());
|
||||
writeD(color.getResetAdena());
|
||||
writeD(color.getBeautyShopTicket());
|
||||
writeD(1);
|
||||
writeD(99999999);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,14 +18,19 @@
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
|
||||
/**
|
||||
* @author Gnat
|
||||
**/
|
||||
|
||||
public class ExBirthdayPopup extends L2GameServerPacket
|
||||
{
|
||||
public ExBirthdayPopup()
|
||||
private final L2PcInstance _activeChar;
|
||||
|
||||
public ExBirthdayPopup(L2PcInstance character)
|
||||
{
|
||||
_activeChar = character;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -33,5 +38,6 @@ public class ExBirthdayPopup extends L2GameServerPacket
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0x90);
|
||||
writeD(_activeChar.getObjectId());
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,9 @@
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
||||
|
||||
@@ -29,6 +32,7 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
private L2ItemInstance[] _sellList = null;
|
||||
private L2ItemInstance[] _refundList = null;
|
||||
private final boolean _done;
|
||||
private final List<L2ItemInstance> _items = new ArrayList<>();
|
||||
|
||||
public ExBuySellList(L2PcInstance player, boolean done)
|
||||
{
|
||||
@@ -38,6 +42,14 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
_refundList = player.getRefund().getItems();
|
||||
}
|
||||
_done = done;
|
||||
|
||||
for (L2ItemInstance item : player.getInventory().getItems())
|
||||
{
|
||||
if (!item.isQuestItem())
|
||||
{
|
||||
_items.add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -46,7 +58,7 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
writeC(0xFE);
|
||||
writeH(0xB8);
|
||||
writeD(0x01);
|
||||
writeD(0x00); // TODO: Find me
|
||||
writeD(_items.size());
|
||||
|
||||
if ((_sellList != null))
|
||||
{
|
||||
|
||||
@@ -24,7 +24,7 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
||||
|
||||
/**
|
||||
* @author Erlandys
|
||||
* @author Erlandys TODO: Fix this class to Infinity Odyssey !!!
|
||||
*/
|
||||
public class ExChangeAttributeItemList extends AbstractItemPacket
|
||||
{
|
||||
|
||||
@@ -36,7 +36,7 @@ public class ExConfirmAddingContact extends L2GameServerPacket
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0xD2);
|
||||
writeH(0xD3);
|
||||
writeS(_charName);
|
||||
writeD(_added ? 0x01 : 0x00);
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jserver.gameserver.data.xml.impl.EnchantSkillGroupsData;
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.model.L2EnchantSkillGroup.EnchantSkillHolder;
|
||||
import com.l2jserver.gameserver.model.L2EnchantSkillLearn;
|
||||
|
||||
@@ -31,19 +32,21 @@ public final class ExEnchantSkillInfo extends L2GameServerPacket
|
||||
|
||||
private final int _id;
|
||||
private final int _lvl;
|
||||
private final int _maxlvl;
|
||||
private boolean _maxEnchanted = false;
|
||||
|
||||
public ExEnchantSkillInfo(int id, int lvl)
|
||||
{
|
||||
_id = id;
|
||||
_lvl = lvl;
|
||||
_maxlvl = SkillData.getInstance().getMaxLevel(_id);
|
||||
|
||||
L2EnchantSkillLearn enchantLearn = EnchantSkillGroupsData.getInstance().getSkillEnchantmentBySkillId(_id);
|
||||
// do we have this skill?
|
||||
if (enchantLearn != null)
|
||||
{
|
||||
// skill already enchanted?
|
||||
if (_lvl > 100)
|
||||
if (_lvl > 1000)
|
||||
{
|
||||
_maxEnchanted = enchantLearn.isMaxEnchant(_lvl);
|
||||
|
||||
@@ -51,22 +54,22 @@ public final class ExEnchantSkillInfo extends L2GameServerPacket
|
||||
EnchantSkillHolder esd = enchantLearn.getEnchantSkillHolder(_lvl);
|
||||
|
||||
// if it exists add it
|
||||
if (esd != null)
|
||||
if ((esd != null) && !_maxEnchanted)
|
||||
{
|
||||
_routes.add(_lvl); // current enchant add firts
|
||||
_routes.add(_lvl + 1); // current enchant add firts
|
||||
}
|
||||
|
||||
int skillLvL = (_lvl % 100);
|
||||
int skillLvL = (_lvl % 1000);
|
||||
|
||||
for (int route : enchantLearn.getAllRoutes())
|
||||
{
|
||||
if (((route * 100) + skillLvL) == _lvl)
|
||||
if (((route * 1000) + skillLvL) == _lvl)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
// add other levels of all routes - same lvl as enchanted
|
||||
// lvl
|
||||
_routes.add((route * 100) + skillLvL);
|
||||
_routes.add((route * 1000) + skillLvL);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -76,7 +79,7 @@ public final class ExEnchantSkillInfo extends L2GameServerPacket
|
||||
for (int route : enchantLearn.getAllRoutes())
|
||||
{
|
||||
// add first level (+1) of all routes
|
||||
_routes.add((route * 100) + 1);
|
||||
_routes.add((route * 1000) + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -88,14 +91,23 @@ public final class ExEnchantSkillInfo extends L2GameServerPacket
|
||||
writeC(0xFE);
|
||||
writeH(0x2A);
|
||||
writeD(_id);
|
||||
writeD(_lvl);
|
||||
if (_lvl < 100)
|
||||
{
|
||||
writeD(_lvl);
|
||||
}
|
||||
else
|
||||
{
|
||||
writeH(_maxlvl);
|
||||
writeH(_lvl);
|
||||
}
|
||||
writeD(_maxEnchanted ? 0 : 1);
|
||||
writeD(_lvl > 100 ? 1 : 0); // enchanted?
|
||||
writeD(_lvl > 1000 ? 1 : 0); // enchanted?
|
||||
writeD(_routes.size());
|
||||
|
||||
for (int level : _routes)
|
||||
{
|
||||
writeD(level);
|
||||
writeH(_maxlvl);
|
||||
writeH(level);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.data.xml.impl.EnchantSkillGroupsData;
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.model.L2EnchantSkillGroup.EnchantSkillHolder;
|
||||
import com.l2jserver.gameserver.model.L2EnchantSkillLearn;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
@@ -42,21 +43,26 @@ public class ExEnchantSkillInfoDetail extends L2GameServerPacket
|
||||
private final int _type;
|
||||
private final int _skillid;
|
||||
private final int _skilllvl;
|
||||
private final int _maxlvl;
|
||||
private final int _chance;
|
||||
private int _sp;
|
||||
private final int _adenacount;
|
||||
|
||||
public ExEnchantSkillInfoDetail(int type, int skillid, int skilllvl, L2PcInstance ply)
|
||||
{
|
||||
_type = type;
|
||||
_skillid = skillid;
|
||||
_skilllvl = skilllvl;
|
||||
_maxlvl = SkillData.getInstance().getMaxLevel(_skillid);
|
||||
|
||||
L2EnchantSkillLearn enchantLearn = EnchantSkillGroupsData.getInstance().getSkillEnchantmentBySkillId(skillid);
|
||||
EnchantSkillHolder esd = null;
|
||||
// do we have this skill?
|
||||
if (enchantLearn != null)
|
||||
{
|
||||
if (skilllvl > 100)
|
||||
if (_skilllvl > 1000)
|
||||
{
|
||||
esd = enchantLearn.getEnchantSkillHolder(skilllvl);
|
||||
esd = enchantLearn.getEnchantSkillHolder(_skilllvl);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -66,7 +72,7 @@ public class ExEnchantSkillInfoDetail extends L2GameServerPacket
|
||||
|
||||
if (esd == null)
|
||||
{
|
||||
throw new IllegalArgumentException("Skill " + skillid + " dont have enchant data for level " + skilllvl);
|
||||
throw new IllegalArgumentException("Skill " + skillid + " dont have enchant data for level " + _skilllvl);
|
||||
}
|
||||
|
||||
if (type == 0)
|
||||
@@ -93,58 +99,96 @@ public class ExEnchantSkillInfoDetail extends L2GameServerPacket
|
||||
_sp = 0;
|
||||
_adenacount = 0;
|
||||
}
|
||||
_type = type;
|
||||
_skillid = skillid;
|
||||
_skilllvl = skilllvl;
|
||||
|
||||
final int _elvl = ((_skilllvl % 100) - 1) / 10;
|
||||
switch (type)
|
||||
{
|
||||
case TYPE_NORMAL_ENCHANT:
|
||||
if (ply.getClassId().level() == 3)
|
||||
if (ply.getClassId().level() < 4)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.NORMAL_ENCHANT_BOOK_OLD;
|
||||
}
|
||||
else
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.NORMAL_ENCHANT_BOOK;
|
||||
if (_elvl == 0)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.NORMAL_ENCHANT_BOOK;
|
||||
}
|
||||
else if (_elvl == 1)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.NORMAL_ENCHANT_BOOK_V2;
|
||||
}
|
||||
else
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.NORMAL_ENCHANT_BOOK_V3;
|
||||
}
|
||||
}
|
||||
reqCount = (((_skilllvl % 100) > 1) ? 0 : 1);
|
||||
reqCount = 1;
|
||||
break;
|
||||
case TYPE_SAFE_ENCHANT:
|
||||
if (ply.getClassId().level() == 3)
|
||||
if (ply.getClassId().level() < 4)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.SAFE_ENCHANT_BOOK_OLD;
|
||||
}
|
||||
else
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.SAFE_ENCHANT_BOOK;
|
||||
}
|
||||
reqCount = 1;
|
||||
break;
|
||||
case TYPE_UNTRAIN_ENCHANT:
|
||||
if (ply.getClassId().level() == 3)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.UNTRAIN_ENCHANT_BOOK_OLD;
|
||||
}
|
||||
else
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.UNTRAIN_ENCHANT_BOOK;
|
||||
if (_elvl == 0)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.SAFE_ENCHANT_BOOK;
|
||||
}
|
||||
else if (_elvl == 1)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.SAFE_ENCHANT_BOOK_V2;
|
||||
}
|
||||
else
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.SAFE_ENCHANT_BOOK_V3;
|
||||
}
|
||||
}
|
||||
reqCount = 1;
|
||||
break;
|
||||
case TYPE_CHANGE_ENCHANT:
|
||||
if (ply.getClassId().level() == 3)
|
||||
if (ply.getClassId().level() < 4)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.CHANGE_ENCHANT_BOOK_OLD;
|
||||
}
|
||||
else
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.CHANGE_ENCHANT_BOOK;
|
||||
if (_elvl == 0)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.CHANGE_ENCHANT_BOOK;
|
||||
}
|
||||
else if (_elvl == 1)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.CHANGE_ENCHANT_BOOK_V2;
|
||||
}
|
||||
else
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.CHANGE_ENCHANT_BOOK_V3;
|
||||
}
|
||||
}
|
||||
reqCount = 1;
|
||||
break;
|
||||
case TYPE_IMMORTAL_ENCHANT:
|
||||
bookId = EnchantSkillGroupsData.IMMORTAL_SCROLL;
|
||||
if (ply.getClassId().level() < 4)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.IMMORTAL_SCROLL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_elvl == 0)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.IMMORTAL_SCROLL;
|
||||
}
|
||||
else if (_elvl == 1)
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.IMMORTAL_SCROLL_V2;
|
||||
}
|
||||
else
|
||||
{
|
||||
bookId = EnchantSkillGroupsData.IMMORTAL_SCROLL_V3;
|
||||
}
|
||||
}
|
||||
reqCount = 1;
|
||||
break;
|
||||
default:
|
||||
@@ -165,7 +209,8 @@ public class ExEnchantSkillInfoDetail extends L2GameServerPacket
|
||||
|
||||
writeD(_type);
|
||||
writeD(_skillid);
|
||||
writeD(_skilllvl);
|
||||
writeH(_maxlvl);
|
||||
writeH(_skilllvl);
|
||||
writeQ(_sp * multi); // sp
|
||||
writeD(_chance); // exp
|
||||
writeD(0x02); // items count?
|
||||
|
||||
@@ -89,7 +89,7 @@ public class ExListPartyMatchingWaitingRoom extends L2GameServerPacket
|
||||
for (L2PcInstance member : _members)
|
||||
{
|
||||
writeS(member.getName());
|
||||
writeD(member.getActiveClass());
|
||||
writeD(member.getActiveClassId());
|
||||
writeD(member.getLevel());
|
||||
writeD(_currentTemplateId);
|
||||
writeD(0x00); // TODO: Instance ID reuse size
|
||||
|
||||
@@ -51,7 +51,7 @@ public class ExManagePartyRoomMember extends L2GameServerPacket
|
||||
writeD(_mode);
|
||||
writeD(_activeChar.getObjectId());
|
||||
writeS(_activeChar.getName());
|
||||
writeD(_activeChar.getActiveClass());
|
||||
writeD(_activeChar.getActiveClassId());
|
||||
writeD(_activeChar.getLevel());
|
||||
writeD(_room.getLocation());
|
||||
if (_room.getOwner().equals(_activeChar))
|
||||
|
||||
@@ -34,7 +34,7 @@ public class ExNevitAdventEffect extends L2GameServerPacket
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0xE0);
|
||||
writeH(0xE4);
|
||||
writeD(_timeLeft);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class ExNevitAdventPointInfoPacket extends L2GameServerPacket
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0xDF);
|
||||
writeH(0xE3);
|
||||
writeD(_points); // 72 = 1%, max 7200 = 100%
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public class ExNevitAdventTimeChange extends L2GameServerPacket
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0xE1);
|
||||
writeH(0xE5);
|
||||
// state 0 - pause 1 - started
|
||||
writeC(_paused ? 0x00 : 0x01);
|
||||
// left time in ms max is 16000 its 4m and state is automatically changed to quit
|
||||
|
||||
@@ -54,7 +54,7 @@ public class ExOlympiadSpelledInfo extends L2GameServerPacket
|
||||
if ((info != null) && info.isInUse())
|
||||
{
|
||||
writeD(info.getSkill().getDisplayId());
|
||||
writeH(info.getSkill().getDisplayLevel());
|
||||
writeD(info.getSkill().getDisplayLevel());
|
||||
writeD(0x00);
|
||||
writeH(info.getTime());
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class ExPartyRoomMember extends L2GameServerPacket
|
||||
{
|
||||
writeD(member.getObjectId());
|
||||
writeS(member.getName());
|
||||
writeD(member.getActiveClass());
|
||||
writeD(member.getActiveClassId());
|
||||
writeD(member.getLevel());
|
||||
writeD(_room.getLocation());
|
||||
if (_room.getOwner().equals(member))
|
||||
|
||||
@@ -34,5 +34,6 @@ public class ExPlayScene extends L2GameServerPacket
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0x5D);
|
||||
writeD(0x00);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,6 +75,5 @@ public class ExReplySentPost extends AbstractItemPacket
|
||||
}
|
||||
writeQ(_msg.getReqAdena());
|
||||
writeD(_msg.hasAttachments() ? 0x01 : 0x00);
|
||||
writeD(_msg.isReturned() ? 0x01 : 00);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ public class ExShowContactList extends L2GameServerPacket
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0xD3);
|
||||
writeH(0xD4);
|
||||
writeD(_contacts.size());
|
||||
for (String name : _contacts)
|
||||
{
|
||||
|
||||
@@ -64,7 +64,7 @@ public class ExShowScreenMessage extends L2GameServerPacket
|
||||
_sysMessageId = -1;
|
||||
_unk1 = 0;
|
||||
_unk2 = 0;
|
||||
_unk3 = 0;
|
||||
_unk3 = 1;
|
||||
_fade = false;
|
||||
_position = TOP_CENTER;
|
||||
_text = text;
|
||||
@@ -88,7 +88,7 @@ public class ExShowScreenMessage extends L2GameServerPacket
|
||||
_sysMessageId = -1;
|
||||
_unk1 = 0;
|
||||
_unk2 = 0;
|
||||
_unk3 = 0;
|
||||
_unk3 = 1;
|
||||
_fade = false;
|
||||
_position = TOP_CENTER;
|
||||
_text = text;
|
||||
@@ -107,11 +107,11 @@ public class ExShowScreenMessage extends L2GameServerPacket
|
||||
*/
|
||||
public ExShowScreenMessage(NpcStringId npcString, int position, int time, String... params)
|
||||
{
|
||||
_type = 2;
|
||||
_type = 1;
|
||||
_sysMessageId = -1;
|
||||
_unk1 = 0x00;
|
||||
_unk2 = 0x00;
|
||||
_unk3 = 0x00;
|
||||
_unk3 = 0x01;
|
||||
_fade = false;
|
||||
_position = position;
|
||||
_text = null;
|
||||
@@ -134,11 +134,11 @@ public class ExShowScreenMessage extends L2GameServerPacket
|
||||
*/
|
||||
public ExShowScreenMessage(SystemMessageId systemMsg, int position, int time, String... params)
|
||||
{
|
||||
_type = 2;
|
||||
_type = 0;
|
||||
_sysMessageId = systemMsg.getId();
|
||||
_unk1 = 0x00;
|
||||
_unk2 = 0x00;
|
||||
_unk3 = 0x00;
|
||||
_unk3 = 0x01;
|
||||
_fade = false;
|
||||
_position = position;
|
||||
_text = null;
|
||||
@@ -216,9 +216,11 @@ public class ExShowScreenMessage extends L2GameServerPacket
|
||||
writeD(_time);
|
||||
writeD(_fade ? 0x01 : 0x00);
|
||||
writeD(_npcString);
|
||||
int exsize = 5;
|
||||
if (_npcString == -1)
|
||||
{
|
||||
writeS(_text);
|
||||
exsize--;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -227,8 +229,13 @@ public class ExShowScreenMessage extends L2GameServerPacket
|
||||
for (String s : _parameters)
|
||||
{
|
||||
writeS(s);
|
||||
exsize--;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 1; i < exsize; i++)
|
||||
{
|
||||
writeS("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,10 +43,10 @@ public class ExShowSeedMapInfo extends L2GameServerPacket
|
||||
writeD(2770 + GraciaSeedsManager.getInstance().getSoDState()); // sys msg id
|
||||
|
||||
// Seed of Infinity
|
||||
writeD(-213770); // x coord
|
||||
writeD(210760); // y coord
|
||||
writeD(4400); // z coord
|
||||
writeD(-178472); // x coord
|
||||
writeD(152538); // y coord
|
||||
writeD(2544); // z coord
|
||||
// Manager not implemented yet
|
||||
writeD(2766); // sys msg id
|
||||
writeD(3302); // sys msg id
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,5 +36,6 @@ public class ExStartScenePlayer extends L2GameServerPacket
|
||||
writeC(0xFE);
|
||||
writeH(0x9A);
|
||||
writeD(_movieId);
|
||||
writeD(-1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ public class ExStorageMaxCount extends L2GameServerPacket
|
||||
{
|
||||
private final int _inventory;
|
||||
private final int _warehouse;
|
||||
private final int _freight;
|
||||
private final int _clan;
|
||||
private final int _privateSell;
|
||||
private final int _privateBuy;
|
||||
@@ -42,7 +41,6 @@ public class ExStorageMaxCount extends L2GameServerPacket
|
||||
{
|
||||
_inventory = activeChar.getInventoryLimit();
|
||||
_warehouse = activeChar.getWareHouseLimit();
|
||||
_freight = Config.ALT_FREIGHT_SLOTS;
|
||||
_privateSell = activeChar.getPrivateSellStoreLimit();
|
||||
_privateBuy = activeChar.getPrivateBuyStoreLimit();
|
||||
_clan = Config.WAREHOUSE_SLOTS_CLAN;
|
||||
@@ -60,7 +58,6 @@ public class ExStorageMaxCount extends L2GameServerPacket
|
||||
|
||||
writeD(_inventory);
|
||||
writeD(_warehouse);
|
||||
writeD(_freight);
|
||||
writeD(_clan);
|
||||
writeD(_privateSell);
|
||||
writeD(_privateBuy);
|
||||
|
||||
@@ -69,7 +69,7 @@ public class ExSubjobInfo extends L2GameServerPacket
|
||||
public SubInfo(L2PcInstance player)
|
||||
{
|
||||
_index = 0;
|
||||
_classId = player.getBaseClass();
|
||||
_classId = player.getBaseClassId();
|
||||
_level = player.getStat().getBaseLevel();
|
||||
_type = SubclassType.BASECLASS.ordinal();
|
||||
}
|
||||
|
||||
@@ -79,10 +79,11 @@ public class ExUserInfoEquipSlot extends AbstractMaskPacket<InventorySlot>
|
||||
{
|
||||
if (containsMask(slot))
|
||||
{
|
||||
writeH(18); // 2 + 4 * 4
|
||||
writeH(22); // 2 + 4 * 5
|
||||
writeD(inventory.getPaperdollObjectId(slot.getSlot()));
|
||||
writeD(inventory.getPaperdollItemId(slot.getSlot()));
|
||||
writeD(inventory.getPaperdollAugmentationId(slot.getSlot()));
|
||||
writeD(inventory.getPaperdoll1stAugmentationId(slot.getSlot()));
|
||||
writeD(inventory.getPaperdoll2ndAugmentationId(slot.getSlot()));
|
||||
writeD(inventory.getPaperdollItemVisualId(slot.getSlot()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@ public class ExVitalityEffectInfo extends L2GameServerPacket
|
||||
|
||||
writeD(_points);
|
||||
writeD((int) (Config.RATE_VITALITY_EXP_MULTIPLIER * 100)); // Vitality Bonus
|
||||
writeH(0x00);
|
||||
writeH(0x05); // How much vitality items remaining for use
|
||||
writeH(0x05); // Max number of items for use
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class FriendAddRequest extends L2GameServerPacket
|
||||
protected final void writeImpl()
|
||||
{
|
||||
writeC(0x83);
|
||||
writeC(1);
|
||||
writeS(_requestorName);
|
||||
writeD(0x00);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,15 +49,15 @@ public final class GMHennaInfo extends L2GameServerPacket
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xF0);
|
||||
writeC(_activeChar.getHennaStatINT()); // equip INT
|
||||
writeC(_activeChar.getHennaStatSTR()); // equip STR
|
||||
writeC(_activeChar.getHennaStatCON()); // equip CON
|
||||
writeC(_activeChar.getHennaStatMEN()); // equip MEN
|
||||
writeC(_activeChar.getHennaStatDEX()); // equip DEX
|
||||
writeC(_activeChar.getHennaStatWIT()); // equip WIT
|
||||
writeC(0x00); // equip LUC
|
||||
writeC(0x00); // equip CHA
|
||||
writeD(3); // Slots
|
||||
writeD(_activeChar.getHennaStatINT()); // equip INT
|
||||
writeD(_activeChar.getHennaStatSTR()); // equip STR
|
||||
writeD(_activeChar.getHennaStatCON()); // equip CON
|
||||
writeD(_activeChar.getHennaStatMEN()); // equip MEN
|
||||
writeD(_activeChar.getHennaStatDEX()); // equip DEX
|
||||
writeD(_activeChar.getHennaStatWIT()); // equip WIT
|
||||
writeD(_activeChar.getHennaStatLUC()); // equip LUC
|
||||
writeD(_activeChar.getHennaStatCHA()); // equip CHA
|
||||
writeD(_hennas.size() > 0 ? 3 : 0);
|
||||
writeD(_hennas.size()); // Size
|
||||
for (L2Henna henna : _hennas)
|
||||
{
|
||||
|
||||
@@ -20,6 +20,7 @@ package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
import com.l2jserver.gameserver.data.xml.impl.ExperienceData;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
|
||||
|
||||
public class GMViewCharacterInfo extends L2GameServerPacket
|
||||
{
|
||||
@@ -75,19 +76,20 @@ public class GMViewCharacterInfo extends L2GameServerPacket
|
||||
writeD(_activeChar.getMaxLoad());
|
||||
writeD(_activeChar.getPkKills());
|
||||
|
||||
for (int slot : getPaperdollOrder())
|
||||
for (int slot : Inventory.PAPERDOLL_ORDER_ALL)
|
||||
{
|
||||
writeD(_activeChar.getInventory().getPaperdollObjectId(slot));
|
||||
}
|
||||
|
||||
for (int slot : getPaperdollOrder())
|
||||
for (int slot : Inventory.PAPERDOLL_ORDER_ALL)
|
||||
{
|
||||
writeD(_activeChar.getInventory().getPaperdollItemDisplayId(slot));
|
||||
}
|
||||
|
||||
for (int slot : getPaperdollOrder())
|
||||
for (int slot : Inventory.PAPERDOLL_ORDER_ALL)
|
||||
{
|
||||
writeD(_activeChar.getInventory().getPaperdollAugmentationId(slot));
|
||||
writeD(_activeChar.getInventory().getPaperdoll1stAugmentationId(slot));
|
||||
writeD(_activeChar.getInventory().getPaperdoll2ndAugmentationId(slot));
|
||||
}
|
||||
|
||||
writeD(_activeChar.getInventory().getTalismanSlots()); // CT2.3
|
||||
|
||||
@@ -48,7 +48,16 @@ public class GMViewSkillInfo extends L2GameServerPacket
|
||||
for (Skill skill : _skills)
|
||||
{
|
||||
writeD(skill.isPassive() ? 1 : 0);
|
||||
writeD(skill.getDisplayLevel());
|
||||
if (skill.getDisplayLevel() < 100)
|
||||
{
|
||||
writeD(skill.getDisplayLevel());
|
||||
}
|
||||
else
|
||||
{
|
||||
int maxLevel = SkillData.getInstance().getMaxLevel(skill.getDisplayLevel());
|
||||
writeH(maxLevel);
|
||||
writeH(skill.getDisplayLevel());
|
||||
}
|
||||
writeD(skill.getDisplayId());
|
||||
writeD(0x00);
|
||||
writeC(isDisabled && skill.isClanSkill() ? 1 : 0);
|
||||
|
||||
@@ -35,9 +35,9 @@ public class GameGuardQuery extends L2GameServerPacket
|
||||
public void writeImpl()
|
||||
{
|
||||
writeC(0x74);
|
||||
writeD(0x27533DD9);
|
||||
writeD(0x2E72A51D);
|
||||
writeD(0x2017038B);
|
||||
writeD(0xC35B1EA3);
|
||||
writeD(0xE1B752B6);
|
||||
writeD(0x51AFEF3A);
|
||||
writeD(0xB1180C49);
|
||||
writeD(0x08F4F7D7);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ public class HennaEquipList extends L2GameServerPacket
|
||||
writeQ(henna.getWearCount()); // amount of dyes required
|
||||
writeQ(henna.getWearFee()); // amount of Adena required
|
||||
writeD(henna.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); // meet the requirement or not
|
||||
writeD(0x00); // TODO: Find me!
|
||||
writeD(0x00);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,14 +49,14 @@ public final class HennaInfo extends L2GameServerPacket
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xE5);
|
||||
writeC(_activeChar.getHennaStatINT()); // equip INT
|
||||
writeC(_activeChar.getHennaStatSTR()); // equip STR
|
||||
writeC(_activeChar.getHennaStatCON()); // equip CON
|
||||
writeC(_activeChar.getHennaStatMEN()); // equip MEN
|
||||
writeC(_activeChar.getHennaStatDEX()); // equip DEX
|
||||
writeC(_activeChar.getHennaStatWIT()); // equip WIT
|
||||
writeC(_activeChar.getHennaStatLUC()); // equip LUC
|
||||
writeC(_activeChar.getHennaStatCHA()); // equip CHA
|
||||
writeD(_activeChar.getHennaStatINT()); // equip INT
|
||||
writeD(_activeChar.getHennaStatSTR()); // equip STR
|
||||
writeD(_activeChar.getHennaStatCON()); // equip CON
|
||||
writeD(_activeChar.getHennaStatMEN()); // equip MEN
|
||||
writeD(_activeChar.getHennaStatDEX()); // equip DEX
|
||||
writeD(_activeChar.getHennaStatWIT()); // equip WIT
|
||||
writeD(_activeChar.getHennaStatLUC()); // equip LUC
|
||||
writeD(_activeChar.getHennaStatCHA()); // equip CHA
|
||||
writeD(3 - _activeChar.getHennaEmptySlots()); // Slots
|
||||
writeD(_hennas.size()); // Size
|
||||
for (L2Henna henna : _hennas)
|
||||
|
||||
@@ -46,21 +46,21 @@ public class HennaItemDrawInfo extends L2GameServerPacket
|
||||
writeD(_henna.isAllowedClass(_activeChar.getClassId()) ? 0x01 : 0x00); // able to draw or not 0 is false and 1 is true
|
||||
writeQ(_activeChar.getAdena());
|
||||
writeD(_activeChar.getINT()); // current INT
|
||||
writeC(_activeChar.getINT() + _henna.getStatINT()); // equip INT
|
||||
writeD(_activeChar.getINT() + _henna.getStatINT()); // equip INT
|
||||
writeD(_activeChar.getSTR()); // current STR
|
||||
writeC(_activeChar.getSTR() + _henna.getStatSTR()); // equip STR
|
||||
writeD(_activeChar.getSTR() + _henna.getStatSTR()); // equip STR
|
||||
writeD(_activeChar.getCON()); // current CON
|
||||
writeC(_activeChar.getCON() + _henna.getStatCON()); // equip CON
|
||||
writeD(_activeChar.getCON() + _henna.getStatCON()); // equip CON
|
||||
writeD(_activeChar.getMEN()); // current MEN
|
||||
writeC(_activeChar.getMEN() + _henna.getStatMEN()); // equip MEN
|
||||
writeD(_activeChar.getMEN() + _henna.getStatMEN()); // equip MEN
|
||||
writeD(_activeChar.getDEX()); // current DEX
|
||||
writeC(_activeChar.getDEX() + _henna.getStatDEX()); // equip DEX
|
||||
writeD(_activeChar.getDEX() + _henna.getStatDEX()); // equip DEX
|
||||
writeD(_activeChar.getWIT()); // current WIT
|
||||
writeC(_activeChar.getWIT() + _henna.getStatWIT()); // equip WIT
|
||||
writeD(_activeChar.getWIT() + _henna.getStatWIT()); // equip WIT
|
||||
writeD(_activeChar.getLUC()); // current LUC
|
||||
writeC(_activeChar.getLUC() + _henna.getStatLUC()); // equip LUC
|
||||
writeD(_activeChar.getLUC() + _henna.getStatLUC()); // equip LUC
|
||||
writeD(_activeChar.getCHA()); // current CHA
|
||||
writeC(_activeChar.getCHA() + _henna.getStatCHA()); // equip CHA
|
||||
writeD(0x00); // TODO: Find me!
|
||||
writeD(_activeChar.getCHA() + _henna.getStatCHA()); // equip CHA
|
||||
writeD(0x00);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,21 +46,21 @@ public final class HennaItemRemoveInfo extends L2GameServerPacket
|
||||
writeD(_henna.isAllowedClass(_activeChar.getClassId()) ? 0x01 : 0x00); // able to remove or not
|
||||
writeQ(_activeChar.getAdena());
|
||||
writeD(_activeChar.getINT()); // current INT
|
||||
writeC(_activeChar.getINT() - _henna.getStatINT()); // equip INT
|
||||
writeD(_activeChar.getINT() - _henna.getStatINT()); // equip INT
|
||||
writeD(_activeChar.getSTR()); // current STR
|
||||
writeC(_activeChar.getSTR() - _henna.getStatSTR()); // equip STR
|
||||
writeD(_activeChar.getSTR() - _henna.getStatSTR()); // equip STR
|
||||
writeD(_activeChar.getCON()); // current CON
|
||||
writeC(_activeChar.getCON() - _henna.getStatCON()); // equip CON
|
||||
writeD(_activeChar.getCON() - _henna.getStatCON()); // equip CON
|
||||
writeD(_activeChar.getMEN()); // current MEN
|
||||
writeC(_activeChar.getMEN() - _henna.getStatMEN()); // equip MEN
|
||||
writeD(_activeChar.getMEN() - _henna.getStatMEN()); // equip MEN
|
||||
writeD(_activeChar.getDEX()); // current DEX
|
||||
writeC(_activeChar.getDEX() - _henna.getStatDEX()); // equip DEX
|
||||
writeD(_activeChar.getDEX() - _henna.getStatDEX()); // equip DEX
|
||||
writeD(_activeChar.getWIT()); // current WIT
|
||||
writeC(_activeChar.getWIT() - _henna.getStatWIT()); // equip WIT
|
||||
writeD(_activeChar.getWIT() - _henna.getStatWIT()); // equip WIT
|
||||
writeD(_activeChar.getLUC()); // current LUC
|
||||
writeC(_activeChar.getLUC() - _henna.getStatLUC()); // equip LUC
|
||||
writeD(_activeChar.getLUC() - _henna.getStatLUC()); // equip LUC
|
||||
writeD(_activeChar.getCHA()); // current CHA
|
||||
writeC(_activeChar.getCHA() - _henna.getStatCHA()); // equip CHA
|
||||
writeD(_activeChar.getCHA() - _henna.getStatCHA()); // equip CHA
|
||||
writeD(0x00);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public class HennaRemoveList extends L2GameServerPacket
|
||||
writeD(henna.getDyeItemId());
|
||||
writeQ(henna.getCancelCount());
|
||||
writeQ(henna.getCancelFee());
|
||||
writeD(0x00);
|
||||
writeD(0x01);
|
||||
writeD(0x00);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ import com.l2jserver.commons.mmocore.SendablePacket;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.interfaces.IPositionable;
|
||||
import com.l2jserver.gameserver.model.interfaces.IUpdateTypeComponent;
|
||||
import com.l2jserver.gameserver.model.itemcontainer.Inventory;
|
||||
import com.l2jserver.gameserver.network.L2GameClient;
|
||||
|
||||
/**
|
||||
@@ -37,64 +36,6 @@ public abstract class L2GameServerPacket extends SendablePacket<L2GameClient>
|
||||
|
||||
private boolean _invisible = false;
|
||||
|
||||
private static final int[] PAPERDOLL_ORDER = new int[]
|
||||
{
|
||||
Inventory.PAPERDOLL_UNDER,
|
||||
Inventory.PAPERDOLL_REAR,
|
||||
Inventory.PAPERDOLL_LEAR,
|
||||
Inventory.PAPERDOLL_NECK,
|
||||
Inventory.PAPERDOLL_RFINGER,
|
||||
Inventory.PAPERDOLL_LFINGER,
|
||||
Inventory.PAPERDOLL_HEAD,
|
||||
Inventory.PAPERDOLL_RHAND,
|
||||
Inventory.PAPERDOLL_LHAND,
|
||||
Inventory.PAPERDOLL_GLOVES,
|
||||
Inventory.PAPERDOLL_CHEST,
|
||||
Inventory.PAPERDOLL_LEGS,
|
||||
Inventory.PAPERDOLL_FEET,
|
||||
Inventory.PAPERDOLL_CLOAK,
|
||||
Inventory.PAPERDOLL_RHAND,
|
||||
Inventory.PAPERDOLL_HAIR,
|
||||
Inventory.PAPERDOLL_HAIR2,
|
||||
Inventory.PAPERDOLL_RBRACELET,
|
||||
Inventory.PAPERDOLL_LBRACELET,
|
||||
Inventory.PAPERDOLL_DECO1,
|
||||
Inventory.PAPERDOLL_DECO2,
|
||||
Inventory.PAPERDOLL_DECO3,
|
||||
Inventory.PAPERDOLL_DECO4,
|
||||
Inventory.PAPERDOLL_DECO5,
|
||||
Inventory.PAPERDOLL_DECO6,
|
||||
Inventory.PAPERDOLL_BELT,
|
||||
Inventory.PAPERDOLL_BROOCH,
|
||||
Inventory.PAPERDOLL_BROOCH_JEWEL1,
|
||||
Inventory.PAPERDOLL_BROOCH_JEWEL2,
|
||||
Inventory.PAPERDOLL_BROOCH_JEWEL3,
|
||||
Inventory.PAPERDOLL_BROOCH_JEWEL4,
|
||||
Inventory.PAPERDOLL_BROOCH_JEWEL5,
|
||||
Inventory.PAPERDOLL_BROOCH_JEWEL6
|
||||
|
||||
};
|
||||
|
||||
private static final int[] PAPERDOLL_ORDER_AUGMENT = new int[]
|
||||
{
|
||||
Inventory.PAPERDOLL_RHAND,
|
||||
Inventory.PAPERDOLL_LHAND,
|
||||
Inventory.PAPERDOLL_RHAND
|
||||
};
|
||||
|
||||
private static final int[] PAPERDOLL_ORDER_VISUAL_ID = new int[]
|
||||
{
|
||||
Inventory.PAPERDOLL_RHAND,
|
||||
Inventory.PAPERDOLL_LHAND,
|
||||
Inventory.PAPERDOLL_RHAND,
|
||||
Inventory.PAPERDOLL_GLOVES,
|
||||
Inventory.PAPERDOLL_CHEST,
|
||||
Inventory.PAPERDOLL_LEGS,
|
||||
Inventory.PAPERDOLL_FEET,
|
||||
Inventory.PAPERDOLL_HAIR,
|
||||
Inventory.PAPERDOLL_HAIR2
|
||||
};
|
||||
|
||||
/**
|
||||
* @return True if packet originated from invisible character.
|
||||
*/
|
||||
@@ -143,21 +84,6 @@ public abstract class L2GameServerPacket extends SendablePacket<L2GameClient>
|
||||
}
|
||||
}
|
||||
|
||||
protected int[] getPaperdollOrder()
|
||||
{
|
||||
return PAPERDOLL_ORDER;
|
||||
}
|
||||
|
||||
protected int[] getPaperdollOrderAugument()
|
||||
{
|
||||
return PAPERDOLL_ORDER_AUGMENT;
|
||||
}
|
||||
|
||||
protected int[] getPaperdollOrderVisualId()
|
||||
{
|
||||
return PAPERDOLL_ORDER_VISUAL_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void write()
|
||||
{
|
||||
|
||||
@@ -21,6 +21,7 @@ package com.l2jserver.gameserver.network.serverpackets;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.model.L2Object;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
|
||||
@@ -33,6 +34,7 @@ public class MagicSkillLaunched extends L2GameServerPacket
|
||||
private final int _charObjId;
|
||||
private final int _skillId;
|
||||
private final int _skillLevel;
|
||||
private final int _maxLevel;
|
||||
private final List<L2Object> _targets;
|
||||
|
||||
public MagicSkillLaunched(L2Character cha, int skillId, int skillLevel, L2Object... targets)
|
||||
@@ -40,6 +42,7 @@ public class MagicSkillLaunched extends L2GameServerPacket
|
||||
_charObjId = cha.getObjectId();
|
||||
_skillId = skillId;
|
||||
_skillLevel = skillLevel;
|
||||
_maxLevel = SkillData.getInstance().getMaxLevel(_skillId);
|
||||
|
||||
//@formatter:off
|
||||
if (targets == null)
|
||||
@@ -62,7 +65,15 @@ public class MagicSkillLaunched extends L2GameServerPacket
|
||||
writeD(0x00); // TODO: Find me!
|
||||
writeD(_charObjId);
|
||||
writeD(_skillId);
|
||||
writeD(_skillLevel);
|
||||
if (_skillLevel < 100)
|
||||
{
|
||||
writeD(_skillLevel);
|
||||
}
|
||||
else
|
||||
{
|
||||
writeH(_maxLevel);
|
||||
writeH(_skillLevel);
|
||||
}
|
||||
writeD(_targets.size());
|
||||
for (L2Object target : _targets)
|
||||
{
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.model.Location;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
import com.l2jserver.gameserver.model.interfaces.IPositionable;
|
||||
@@ -34,11 +35,12 @@ public final class MagicSkillUse extends L2GameServerPacket
|
||||
{
|
||||
private final int _skillId;
|
||||
private final int _skillLevel;
|
||||
private final int _maxLevel;
|
||||
private final int _hitTime;
|
||||
private final int _reuseDelay;
|
||||
private final L2Character _activeChar;
|
||||
private final L2Character _target;
|
||||
private final List<Integer> _unknown = Collections.emptyList();
|
||||
private List<Integer> _unknown = Collections.emptyList();
|
||||
private final List<Location> _groundLocations;
|
||||
|
||||
public MagicSkillUse(L2Character cha, L2Character target, int skillId, int skillLevel, int hitTime, int reuseDelay)
|
||||
@@ -47,6 +49,7 @@ public final class MagicSkillUse extends L2GameServerPacket
|
||||
_target = target;
|
||||
_skillId = skillId;
|
||||
_skillLevel = skillLevel;
|
||||
_maxLevel = SkillData.getInstance().getMaxLevel(_skillId);
|
||||
_hitTime = hitTime;
|
||||
_reuseDelay = reuseDelay;
|
||||
_groundLocations = cha.isPlayer() && (cha.getActingPlayer().getCurrentSkillWorldPosition() != null) ? Arrays.asList(cha.getActingPlayer().getCurrentSkillWorldPosition()) : Collections.<Location> emptyList();
|
||||
@@ -57,6 +60,25 @@ public final class MagicSkillUse extends L2GameServerPacket
|
||||
this(cha, cha, skillId, skillLevel, hitTime, reuseDelay);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param l2Character
|
||||
* @param target
|
||||
* @param displayId
|
||||
* @param displayLevel
|
||||
* @param skillTime
|
||||
* @param reuseDelay
|
||||
* @param blowSuccess
|
||||
*/
|
||||
public MagicSkillUse(L2Character l2Character, L2Character target, int displayId, int displayLevel, int skillTime, int reuseDelay, boolean blowSuccess)
|
||||
{
|
||||
this(l2Character, target, displayId, displayLevel, skillTime, reuseDelay);
|
||||
if (blowSuccess)
|
||||
{
|
||||
_unknown = Arrays.asList(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void writeImpl()
|
||||
{
|
||||
@@ -65,7 +87,15 @@ public final class MagicSkillUse extends L2GameServerPacket
|
||||
writeD(_activeChar.getObjectId());
|
||||
writeD(_target.getObjectId());
|
||||
writeD(_skillId);
|
||||
writeD(_skillLevel);
|
||||
if (_skillLevel < 100)
|
||||
{
|
||||
writeD(_skillLevel);
|
||||
}
|
||||
else
|
||||
{
|
||||
writeH(_maxLevel);
|
||||
writeH(_skillLevel);
|
||||
}
|
||||
writeD(_hitTime);
|
||||
writeD(-1); // TODO: Find me!
|
||||
writeD(_reuseDelay);
|
||||
|
||||
@@ -75,6 +75,7 @@ public final class MultiSellList extends L2GameServerPacket
|
||||
writeH(0x00);
|
||||
writeH(0x00);
|
||||
writeH(0x00);
|
||||
writeH(0x00);
|
||||
|
||||
writeH(ent.getProducts().size());
|
||||
writeH(ent.getIngredients().size());
|
||||
@@ -107,6 +108,7 @@ public final class MultiSellList extends L2GameServerPacket
|
||||
writeH(ing.getItemInfo().getElementals()[3]); // earth
|
||||
writeH(ing.getItemInfo().getElementals()[4]); // holy
|
||||
writeH(ing.getItemInfo().getElementals()[5]); // dark
|
||||
writeH(0x00);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -122,6 +124,7 @@ public final class MultiSellList extends L2GameServerPacket
|
||||
writeH(0x00); // earth
|
||||
writeH(0x00); // holy
|
||||
writeH(0x00); // dark
|
||||
writeH(0x00);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,6 +146,7 @@ public final class MultiSellList extends L2GameServerPacket
|
||||
writeH(ing.getItemInfo().getElementals()[3]); // earth
|
||||
writeH(ing.getItemInfo().getElementals()[4]); // holy
|
||||
writeH(ing.getItemInfo().getElementals()[5]); // dark
|
||||
writeH(0x00);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -157,6 +161,7 @@ public final class MultiSellList extends L2GameServerPacket
|
||||
writeH(0x00); // earth
|
||||
writeH(0x00); // holy
|
||||
writeH(0x00); // dark
|
||||
writeH(0x00);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,24 +48,24 @@ public final class NewCharacterSuccess extends L2GameServerPacket
|
||||
// TODO: Unhardcode these
|
||||
writeD(chr.getRace().ordinal());
|
||||
writeD(chr.getClassId().getId());
|
||||
writeD(0x46);
|
||||
writeD(0x63);
|
||||
writeD(chr.getBaseSTR());
|
||||
writeD(0x0A);
|
||||
writeD(0x46);
|
||||
writeD(0x01);
|
||||
writeD(0x63);
|
||||
writeD(chr.getBaseDEX());
|
||||
writeD(0x0A);
|
||||
writeD(0x46);
|
||||
writeD(0x01);
|
||||
writeD(0x63);
|
||||
writeD(chr.getBaseCON());
|
||||
writeD(0x0A);
|
||||
writeD(0x46);
|
||||
writeD(0x01);
|
||||
writeD(0x63);
|
||||
writeD(chr.getBaseINT());
|
||||
writeD(0x0A);
|
||||
writeD(0x46);
|
||||
writeD(0x01);
|
||||
writeD(0x63);
|
||||
writeD(chr.getBaseWIT());
|
||||
writeD(0x0A);
|
||||
writeD(0x46);
|
||||
writeD(0x01);
|
||||
writeD(0x63);
|
||||
writeD(chr.getBaseMEN());
|
||||
writeD(0x0A);
|
||||
writeD(0x01);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,22 +62,18 @@ public class NpcInfo extends AbstractMaskPacket<NpcInfoType>
|
||||
_npc = npc;
|
||||
_abnormalVisualEffects = npc.getCurrentAbnormalVisualEffects();
|
||||
|
||||
addComponentType(NpcInfoType.ATTACKABLE, NpcInfoType.UNKNOWN1, NpcInfoType.ID, NpcInfoType.POSITION, NpcInfoType.ALIVE, NpcInfoType.RUNNING);
|
||||
|
||||
if (npc.getHeading() > 0)
|
||||
if (npc.getTemplate().isUsingServerSideName())
|
||||
{
|
||||
addComponentType(NpcInfoType.HEADING);
|
||||
addComponentType(NpcInfoType.NAME);
|
||||
}
|
||||
|
||||
if ((npc.getStat().getPAtkSpd() > 0) || (npc.getStat().getMAtkSpd() > 0))
|
||||
{
|
||||
addComponentType(NpcInfoType.ATK_CAST_SPEED);
|
||||
}
|
||||
addComponentType(NpcInfoType.ATTACKABLE, NpcInfoType.UNKNOWN1, NpcInfoType.TITLE, NpcInfoType.ID, NpcInfoType.POSITION, NpcInfoType.ALIVE, NpcInfoType.RUNNING);
|
||||
|
||||
if (npc.getRunSpeed() > 0)
|
||||
{
|
||||
addComponentType(NpcInfoType.SPEED_MULTIPLIER);
|
||||
}
|
||||
addComponentType(NpcInfoType.HEADING);
|
||||
|
||||
addComponentType(NpcInfoType.ATK_CAST_SPEED);
|
||||
|
||||
addComponentType(NpcInfoType.SPEED_MULTIPLIER);
|
||||
|
||||
if ((npc.getLeftHandItem() > 0) || (npc.getRightHandItem() > 0))
|
||||
{
|
||||
@@ -89,55 +85,17 @@ public class NpcInfo extends AbstractMaskPacket<NpcInfoType>
|
||||
addComponentType(NpcInfoType.TEAM);
|
||||
}
|
||||
|
||||
if (npc.getDisplayEffect() > 0)
|
||||
{
|
||||
addComponentType(NpcInfoType.DISPLAY_EFFECT);
|
||||
}
|
||||
addComponentType(NpcInfoType.DISPLAY_EFFECT);
|
||||
|
||||
if (npc.isInsideZone(ZoneId.WATER) || npc.isFlying())
|
||||
{
|
||||
addComponentType(NpcInfoType.SWIM_OR_FLY);
|
||||
}
|
||||
addComponentType(NpcInfoType.SWIM_OR_FLY);
|
||||
|
||||
if (npc.isFlying())
|
||||
{
|
||||
addComponentType(NpcInfoType.FLYING);
|
||||
}
|
||||
addComponentType(NpcInfoType.FLYING);
|
||||
|
||||
if (npc.getMaxHp() > 0)
|
||||
{
|
||||
addComponentType(NpcInfoType.MAX_HP);
|
||||
}
|
||||
addComponentType(NpcInfoType.MAX_HP);
|
||||
|
||||
if (npc.getMaxMp() > 0)
|
||||
{
|
||||
addComponentType(NpcInfoType.MAX_MP);
|
||||
}
|
||||
addComponentType(NpcInfoType.CURRENT_HP);
|
||||
|
||||
if (npc.getCurrentHp() <= npc.getMaxHp())
|
||||
{
|
||||
addComponentType(NpcInfoType.CURRENT_HP);
|
||||
}
|
||||
|
||||
if (npc.getCurrentMp() <= npc.getMaxMp())
|
||||
{
|
||||
addComponentType(NpcInfoType.CURRENT_MP);
|
||||
}
|
||||
|
||||
if (npc.getTemplate().isUsingServerSideName())
|
||||
{
|
||||
addComponentType(NpcInfoType.NAME);
|
||||
}
|
||||
|
||||
if (npc.getTemplate().isUsingServerSideTitle() || (Config.SHOW_NPC_LVL && npc.isMonster()) || npc.isChampion())
|
||||
{
|
||||
addComponentType(NpcInfoType.TITLE);
|
||||
}
|
||||
|
||||
if (!_abnormalVisualEffects.isEmpty())
|
||||
{
|
||||
addComponentType(NpcInfoType.ABNORMALS);
|
||||
}
|
||||
addComponentType(NpcInfoType.ABNORMALS);
|
||||
|
||||
if (npc.getEnchantEffect() > 0)
|
||||
{
|
||||
@@ -165,8 +123,6 @@ public class NpcInfo extends AbstractMaskPacket<NpcInfoType>
|
||||
}
|
||||
}
|
||||
|
||||
addComponentType(NpcInfoType.UNKNOWN8);
|
||||
|
||||
// TODO: Confirm me
|
||||
if (npc.isInCombat())
|
||||
{
|
||||
@@ -215,7 +171,14 @@ public class NpcInfo extends AbstractMaskPacket<NpcInfoType>
|
||||
}
|
||||
case TITLE:
|
||||
{
|
||||
_initSize += type.getBlockLength() + (npc.getTitle().length() * 2);
|
||||
if (npc.getTemplate().isUsingServerSideTitle())
|
||||
{
|
||||
_initSize += type.getBlockLength() + (npc.getTemplate().getTitle().length() * 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
_initSize += type.getBlockLength();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NAME:
|
||||
@@ -253,7 +216,14 @@ public class NpcInfo extends AbstractMaskPacket<NpcInfoType>
|
||||
}
|
||||
if (containsMask(NpcInfoType.TITLE))
|
||||
{
|
||||
writeS(_npc.getTitle());
|
||||
if (_npc.getTemplate().isUsingServerSideTitle())
|
||||
{
|
||||
writeS(_npc.getTemplate().getTitle());
|
||||
}
|
||||
else
|
||||
{
|
||||
writeS("");
|
||||
}
|
||||
}
|
||||
|
||||
// Block 2
|
||||
@@ -278,8 +248,8 @@ public class NpcInfo extends AbstractMaskPacket<NpcInfoType>
|
||||
}
|
||||
if (containsMask(NpcInfoType.ATK_CAST_SPEED))
|
||||
{
|
||||
writeD((int) _npc.getPAtkSpd());
|
||||
writeD(_npc.getMAtkSpd());
|
||||
writeD((int) _npc.getPAtkSpd());
|
||||
}
|
||||
if (containsMask(NpcInfoType.SPEED_MULTIPLIER))
|
||||
{
|
||||
@@ -401,4 +371,4 @@ public class NpcInfo extends AbstractMaskPacket<NpcInfoType>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,16 +123,28 @@ public final class NpcSay extends L2GameServerPacket
|
||||
writeD(_textType.getClientId());
|
||||
writeD(_npcId);
|
||||
writeD(_npcString);
|
||||
int size = 5;
|
||||
if (_npcString == -1)
|
||||
{
|
||||
writeS(_text);
|
||||
size--;
|
||||
}
|
||||
else if (_parameters != null)
|
||||
{
|
||||
for (String s : _parameters)
|
||||
{
|
||||
writeS(s);
|
||||
size--;
|
||||
}
|
||||
}
|
||||
for (int i = 1; i < size; i++)
|
||||
{
|
||||
writeS("");
|
||||
}
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
}
|
||||
}
|
||||
@@ -48,6 +48,6 @@ public class PartyMatchDetail extends L2GameServerPacket
|
||||
writeD(_room.getLootType());
|
||||
writeD(_room.getLocation());
|
||||
writeS(_room.getTitle());
|
||||
writeH(59064);
|
||||
writeH(0x105);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ package com.l2jserver.gameserver.network.serverpackets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
import com.l2jserver.gameserver.model.skills.BuffInfo;
|
||||
|
||||
@@ -51,7 +52,17 @@ public class PartySpelled extends L2GameServerPacket
|
||||
if ((info != null) && info.isInUse())
|
||||
{
|
||||
writeD(info.getSkill().getDisplayId());
|
||||
writeH(info.getSkill().getDisplayLevel());
|
||||
if (info.getSkill().getDisplayLevel() < 100)
|
||||
{
|
||||
writeH(info.getSkill().getDisplayLevel());
|
||||
writeH(0x00);
|
||||
}
|
||||
else
|
||||
{
|
||||
int maxLevel = SkillData.getInstance().getMaxLevel(info.getSkill().getDisplayId());
|
||||
writeH(maxLevel);
|
||||
writeH(info.getSkill().getDisplayLevel());
|
||||
}
|
||||
writeD(0x00);
|
||||
writeH(info.getTime());
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.model.L2Clan;
|
||||
|
||||
public class PledgeShowInfoUpdate extends L2GameServerPacket
|
||||
@@ -35,6 +36,7 @@ public class PledgeShowInfoUpdate extends L2GameServerPacket
|
||||
writeC(0x8E);
|
||||
// sending empty data so client will ask all the info in response ;)
|
||||
writeD(_clan.getId());
|
||||
writeD(Config.SERVER_ID);
|
||||
writeD(_clan.getCrestId());
|
||||
writeD(_clan.getLevel()); // clan level
|
||||
writeD(_clan.getCastleId());
|
||||
|
||||
@@ -20,6 +20,7 @@ package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.model.L2Clan;
|
||||
import com.l2jserver.gameserver.model.L2Clan.SubPledge;
|
||||
import com.l2jserver.gameserver.model.L2ClanMember;
|
||||
@@ -58,7 +59,7 @@ public class PledgeShowMemberListAll extends L2GameServerPacket
|
||||
|
||||
writeD(pledge == null ? 0 : 1);
|
||||
writeD(_clan.getId());
|
||||
writeD(0x00); // pledge db id
|
||||
writeD(Config.SERVER_ID);
|
||||
writeD(pledgeId);
|
||||
writeS(_clan.getName());
|
||||
writeS(_clan.getLeaderName());
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.model.L2Clan;
|
||||
|
||||
public final class PledgeStatusChanged extends L2GameServerPacket
|
||||
@@ -33,7 +34,7 @@ public final class PledgeStatusChanged extends L2GameServerPacket
|
||||
protected final void writeImpl()
|
||||
{
|
||||
writeC(0xCD);
|
||||
writeD(0x00);
|
||||
writeD(Config.SERVER_ID);
|
||||
writeD(_clan.getLeaderId());
|
||||
writeD(_clan.getId());
|
||||
writeD(_clan.getCrestId());
|
||||
|
||||
@@ -54,6 +54,8 @@ public class RecipeItemMakeInfo extends L2GameServerPacket
|
||||
writeD((int) _activeChar.getCurrentMp());
|
||||
writeD(_activeChar.getMaxMp());
|
||||
writeD(_success ? 1 : 0); // item creation success/failed
|
||||
writeC(0);
|
||||
writeQ(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -41,5 +41,7 @@ public class RecipeShopItemInfo extends L2GameServerPacket
|
||||
writeD(_player.getMaxMp());
|
||||
writeD(0xffffffff);
|
||||
writeQ(0x00);
|
||||
writeC(0);
|
||||
writeQ(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,9 +63,9 @@ public class RecipeShopManageList extends L2GameServerPacket
|
||||
protected final void writeImpl()
|
||||
{
|
||||
writeC(0xDE);
|
||||
writeD(_seller.getObjectId());
|
||||
writeD((int) _seller.getAdena());
|
||||
writeD(_isDwarven ? 0x00 : 0x01);
|
||||
writeD((int) _seller.getCurrentMp());
|
||||
writeD(_seller.getMaxMp());
|
||||
|
||||
if (_recipes == null)
|
||||
{
|
||||
|
||||
@@ -20,9 +20,9 @@ package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
public final class SetupGauge extends L2GameServerPacket
|
||||
{
|
||||
public static final int BLUE = 0;
|
||||
public static final int BLUE = 2;
|
||||
public static final int RED = 1;
|
||||
public static final int CYAN = 2;
|
||||
public static final int GREEN = 3;
|
||||
|
||||
private final int _dat1;
|
||||
private final int _time;
|
||||
|
||||
@@ -54,11 +54,28 @@ public class ShopPreviewInfo extends L2GameServerPacket
|
||||
writeD(getFromList(Inventory.PAPERDOLL_LEGS));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_FEET));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_CLOAK));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_RHAND));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_LRHAND));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_HAIR));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_HAIR2));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_DHAIR));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_RBRACELET));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_LBRACELET));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_TALISMAN1));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_TALISMAN2));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_TALISMAN3));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_TALISMAN4));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_TALISMAN5));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_TALISMAN6));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_BELT));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_BROOCH));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_BROOCH_STONE1));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_BROOCH_STONE2));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_BROOCH_STONE3));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_BROOCH_STONE4));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_BROOCH_STONE5));
|
||||
writeD(getFromList(Inventory.PAPERDOLL_BROOCH_STONE6));
|
||||
writeD(0);
|
||||
writeD(0);
|
||||
writeD(0);
|
||||
}
|
||||
|
||||
private int getFromList(int key)
|
||||
|
||||
@@ -51,7 +51,7 @@ public class ShopPreviewList extends L2GameServerPacket
|
||||
protected final void writeImpl()
|
||||
{
|
||||
writeC(0xF5);
|
||||
writeD(5056);
|
||||
writeD(0x00);
|
||||
writeQ(_money); // current money
|
||||
writeD(_listId);
|
||||
|
||||
|
||||
@@ -18,12 +18,16 @@
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.enums.ShortcutType;
|
||||
import com.l2jserver.gameserver.model.L2Augmentation;
|
||||
import com.l2jserver.gameserver.model.Shortcut;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
||||
|
||||
public final class ShortCutInit extends L2GameServerPacket
|
||||
{
|
||||
private Shortcut[] _shortCuts;
|
||||
private ShortcutInfo[] _shortCuts;
|
||||
|
||||
public ShortCutInit(L2PcInstance activeChar)
|
||||
{
|
||||
@@ -32,7 +36,68 @@ public final class ShortCutInit extends L2GameServerPacket
|
||||
return;
|
||||
}
|
||||
|
||||
_shortCuts = activeChar.getAllShortCuts();
|
||||
Shortcut[] tmp = activeChar.getAllShortCuts();
|
||||
_shortCuts = new ShortcutInfo[tmp.length];
|
||||
|
||||
int index = -1;
|
||||
for (Shortcut shortCut : tmp)
|
||||
{
|
||||
index++;
|
||||
_shortCuts[index] = convert(activeChar, shortCut);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param player
|
||||
* @param shortCut
|
||||
* @return
|
||||
*/
|
||||
private ShortcutInfo convert(L2PcInstance player, Shortcut shortCut)
|
||||
{
|
||||
ShortcutInfo shortcutInfo = null;
|
||||
int page = shortCut.getSlot() + (shortCut.getPage() * 12);
|
||||
ShortcutType type = shortCut.getType();
|
||||
int id = shortCut.getId();
|
||||
int characterType = 0;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case ITEM:
|
||||
int reuseGroup = -1,
|
||||
currentReuse = 0,
|
||||
reuse = 0,
|
||||
augmentationId = 0;
|
||||
|
||||
characterType = shortCut.getCharacterType();
|
||||
L2ItemInstance item = player.getInventory().getItemByObjectId(shortCut.getId());
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
L2Augmentation augmentation = item.getAugmentation();
|
||||
if (augmentation != null)
|
||||
{
|
||||
augmentationId = augmentation.getAugmentationId();
|
||||
}
|
||||
|
||||
reuseGroup = shortCut.getSharedReuseGroup();
|
||||
}
|
||||
|
||||
shortcutInfo = new ItemShortcutInfo(type, page, id, reuseGroup, currentReuse, reuse, augmentationId, characterType);
|
||||
break;
|
||||
|
||||
case SKILL:
|
||||
int level = shortCut.getLevel();
|
||||
int skillReuseGroup = shortCut.getSharedReuseGroup();
|
||||
boolean isDisabled = false; // FIXME: To implement !!!
|
||||
shortcutInfo = new SkillShortcutInfo(type, page, id, skillReuseGroup, level, isDisabled, characterType);
|
||||
break;
|
||||
|
||||
default:
|
||||
shortcutInfo = new ShortcutInfo(type, page, id, characterType);
|
||||
break;
|
||||
}
|
||||
|
||||
return shortcutInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -40,32 +105,45 @@ public final class ShortCutInit extends L2GameServerPacket
|
||||
{
|
||||
writeC(0x45);
|
||||
writeD(_shortCuts.length);
|
||||
for (Shortcut sc : _shortCuts)
|
||||
for (ShortcutInfo sc : _shortCuts)
|
||||
{
|
||||
writeD(sc.getType().ordinal());
|
||||
writeD(sc.getSlot() + (sc.getPage() * 12));
|
||||
writeD(sc.getPage());
|
||||
|
||||
switch (sc.getType())
|
||||
{
|
||||
case ITEM:
|
||||
{
|
||||
writeD(sc.getId());
|
||||
writeD(0x01);
|
||||
writeD(sc.getSharedReuseGroup());
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeH(0x00);
|
||||
writeH(0x00);
|
||||
ItemShortcutInfo item = (ItemShortcutInfo) sc;
|
||||
|
||||
writeD(item.getId());
|
||||
writeD(item.getCharacterType());
|
||||
writeD(item.getReuseGroup());
|
||||
writeD(item.getCurrentReuse());
|
||||
writeD(item.getBasicReuse());
|
||||
writeD(item.get1stAugmentationId());
|
||||
writeD(item.get2ndAugmentationId());
|
||||
writeD(0x00); // TODO: Find me!
|
||||
break;
|
||||
}
|
||||
case SKILL:
|
||||
{
|
||||
writeD(sc.getId());
|
||||
writeD(sc.getLevel());
|
||||
writeD(0x00); // TODO: Find me!
|
||||
writeC(0x00); // C5
|
||||
writeD(0x01); // C6
|
||||
SkillShortcutInfo skill = (SkillShortcutInfo) sc;
|
||||
|
||||
writeD(skill.getId());
|
||||
if ((skill.getLevel() < 100) || (skill.getLevel() > 10000))
|
||||
{
|
||||
writeD(skill.getLevel());
|
||||
}
|
||||
else
|
||||
{
|
||||
int maxLevel = SkillData.getInstance().getMaxLevel(skill.getId());
|
||||
writeH(maxLevel);
|
||||
writeH(skill.getLevel());
|
||||
}
|
||||
writeD(skill.getReuseGroup());
|
||||
writeC(skill.isDisabled());
|
||||
writeD(skill.getCharacterType());
|
||||
break;
|
||||
}
|
||||
case ACTION:
|
||||
@@ -74,9 +152,120 @@ public final class ShortCutInit extends L2GameServerPacket
|
||||
case BOOKMARK:
|
||||
{
|
||||
writeD(sc.getId());
|
||||
writeD(0x01); // C6
|
||||
writeD(sc.getCharacterType());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected class ShortcutInfo
|
||||
{
|
||||
private final ShortcutType _type;
|
||||
private final int _page;
|
||||
protected final int _id;
|
||||
protected final int _characterType;
|
||||
|
||||
ShortcutInfo(ShortcutType type, int page, int id, int characterType)
|
||||
{
|
||||
_type = type;
|
||||
_page = page;
|
||||
_id = id;
|
||||
_characterType = characterType;
|
||||
}
|
||||
|
||||
public ShortcutType getType()
|
||||
{
|
||||
return _type;
|
||||
}
|
||||
|
||||
public int getPage()
|
||||
{
|
||||
return _page;
|
||||
}
|
||||
|
||||
public int getId()
|
||||
{
|
||||
return _id;
|
||||
}
|
||||
|
||||
public int getCharacterType()
|
||||
{
|
||||
return _characterType;
|
||||
}
|
||||
}
|
||||
|
||||
private class SkillShortcutInfo extends ShortcutInfo
|
||||
{
|
||||
private final int _reuseGroup;
|
||||
private final int _level;
|
||||
private final boolean _isDisabled;
|
||||
|
||||
SkillShortcutInfo(ShortcutType type, int page, int id, int reuseGroup, int level, boolean isDisabled, int characterType)
|
||||
{
|
||||
super(type, page, id, characterType);
|
||||
_level = level;
|
||||
_reuseGroup = reuseGroup;
|
||||
_isDisabled = isDisabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
*/
|
||||
public boolean isDisabled()
|
||||
{
|
||||
return _isDisabled;
|
||||
}
|
||||
|
||||
public int getReuseGroup()
|
||||
{
|
||||
return _reuseGroup;
|
||||
}
|
||||
|
||||
public int getLevel()
|
||||
{
|
||||
return _level;
|
||||
}
|
||||
}
|
||||
|
||||
private class ItemShortcutInfo extends ShortcutInfo
|
||||
{
|
||||
private final int _reuseGroup;
|
||||
private final int _currentReuse;
|
||||
private final int _basicReuse;
|
||||
private final int _augmentationId;
|
||||
|
||||
ItemShortcutInfo(ShortcutType type, int page, int id, int reuseGroup, int currentReuse, int basicReuse, int augmentationId, int characterType)
|
||||
{
|
||||
super(type, page, id, characterType);
|
||||
_reuseGroup = reuseGroup;
|
||||
_currentReuse = currentReuse;
|
||||
_basicReuse = basicReuse;
|
||||
_augmentationId = augmentationId;
|
||||
}
|
||||
|
||||
public int getReuseGroup()
|
||||
{
|
||||
return _reuseGroup;
|
||||
}
|
||||
|
||||
public int getCurrentReuse()
|
||||
{
|
||||
return _currentReuse;
|
||||
}
|
||||
|
||||
public int getBasicReuse()
|
||||
{
|
||||
return _basicReuse;
|
||||
}
|
||||
|
||||
public int get1stAugmentationId()
|
||||
{
|
||||
return 0x0000FFFF & _augmentationId;
|
||||
}
|
||||
|
||||
public int get2ndAugmentationId()
|
||||
{
|
||||
return _augmentationId >> 16;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.model.Shortcut;
|
||||
|
||||
public final class ShortCutRegister extends L2GameServerPacket
|
||||
@@ -50,12 +51,22 @@ public final class ShortCutRegister extends L2GameServerPacket
|
||||
writeD(0x00); // unknown
|
||||
writeD(0x00); // item augment id
|
||||
writeD(0x00); // TODO: Find me, item visual id ?
|
||||
writeD(0x00);
|
||||
break;
|
||||
}
|
||||
case SKILL:
|
||||
{
|
||||
writeD(_shortcut.getId());
|
||||
writeD(_shortcut.getLevel());
|
||||
if ((_shortcut.getLevel() < 100) || (_shortcut.getLevel() > 10000))
|
||||
{
|
||||
writeD(_shortcut.getLevel());
|
||||
}
|
||||
else
|
||||
{
|
||||
int _maxLevel = SkillData.getInstance().getMaxLevel(_shortcut.getId());
|
||||
writeH(_maxLevel);
|
||||
writeH(_shortcut.getLevel());
|
||||
}
|
||||
writeD(_shortcut.getSharedReuseGroup());
|
||||
writeC(0x00); // C5
|
||||
writeD(_shortcut.getCharacterType());
|
||||
|
||||
@@ -21,6 +21,8 @@ package com.l2jserver.gameserver.network.serverpackets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
|
||||
public final class SkillList extends L2GameServerPacket
|
||||
{
|
||||
private final List<Skill> _skills = new ArrayList<>();
|
||||
@@ -63,7 +65,16 @@ public final class SkillList extends L2GameServerPacket
|
||||
for (Skill temp : _skills)
|
||||
{
|
||||
writeD(temp.passive ? 1 : 0);
|
||||
writeD(temp.level);
|
||||
if (temp.level < 100)
|
||||
{
|
||||
writeD(temp.level);
|
||||
}
|
||||
else
|
||||
{
|
||||
int maxlevel = SkillData.getInstance().getMaxLevel(temp.id);
|
||||
writeH(maxlevel);
|
||||
writeH(temp.level);
|
||||
}
|
||||
writeD(temp.id);
|
||||
writeD(-1); // GOD ReuseDelayShareGroupID
|
||||
writeC(temp.disabled ? 1 : 0); // iSkillDisabled
|
||||
|
||||
@@ -47,8 +47,8 @@ public final class StatusUpdate extends L2GameServerPacket
|
||||
public static final int M_ATK = 0x16;
|
||||
public static final int CAST_SPD = 0x17;
|
||||
public static final int M_DEF = 0x18;
|
||||
public static final int PVP_FLAG = 0x19;
|
||||
public static final int KARMA = 0x1A;
|
||||
public static final int PVP_FLAG = 0x1A;
|
||||
public static final int KARMA = 0x1B;
|
||||
|
||||
public static final int CUR_CP = 0x21;
|
||||
public static final int MAX_CP = 0x22;
|
||||
|
||||
@@ -36,6 +36,6 @@ public class StopRotation extends L2GameServerPacket
|
||||
writeD(_charObjId);
|
||||
writeD(_degree);
|
||||
writeD(_speed);
|
||||
writeD(0); // ?
|
||||
writeD(-2); // ?
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,12 +18,16 @@
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.data.xml.impl.ExperienceData;
|
||||
import com.l2jserver.gameserver.enums.UserInfoType;
|
||||
import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager;
|
||||
import com.l2jserver.gameserver.model.Elementals;
|
||||
import com.l2jserver.gameserver.model.L2Clan;
|
||||
import com.l2jserver.gameserver.model.L2Party;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.items.L2Weapon;
|
||||
import com.l2jserver.gameserver.model.items.type.WeaponType;
|
||||
import com.l2jserver.gameserver.model.zone.ZoneId;
|
||||
|
||||
/**
|
||||
@@ -148,7 +152,7 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
|
||||
writeC(_activeChar.isGM() ? 0x01 : 0x00);
|
||||
writeC(_activeChar.getRace().ordinal());
|
||||
writeC(_activeChar.getAppearance().getSex() ? 0x01 : 0x00);
|
||||
writeD(_activeChar.getBaseClass());
|
||||
writeD(_activeChar.getInitialClassId());
|
||||
writeD(_activeChar.getClassId().getId());
|
||||
writeC(_activeChar.getLevel());
|
||||
}
|
||||
@@ -206,14 +210,37 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
|
||||
writeH(6);
|
||||
writeC(_activeChar.getMountType().ordinal());
|
||||
writeC(_activeChar.getPrivateStoreType().getId());
|
||||
writeC(_activeChar.hasDwarvenCraft() ? 1 : 0);
|
||||
writeC(_activeChar.hasDwarvenCraft() || (_activeChar.getSkillLevel(248) > 0) ? 1 : 0);
|
||||
writeC(_activeChar.getAbilityPointsUsed());
|
||||
}
|
||||
|
||||
if (containsMask(UserInfoType.STATS))
|
||||
{
|
||||
writeH(56);
|
||||
writeH(_activeChar.getActiveWeaponItem() != null ? 40 : 20);
|
||||
if (_activeChar.getActiveWeaponItem() != null)
|
||||
{
|
||||
L2Weapon weaponItem = _activeChar.getActiveWeaponItem();
|
||||
if (weaponItem.getItemType() == WeaponType.POLE)
|
||||
{
|
||||
writeH(80);
|
||||
}
|
||||
else if (weaponItem.getItemType() == WeaponType.BOW)
|
||||
{
|
||||
writeH(500);
|
||||
}
|
||||
else if (weaponItem.getItemType() == WeaponType.CROSSBOW)
|
||||
{
|
||||
writeH(400);
|
||||
}
|
||||
else
|
||||
{
|
||||
writeH(40);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
writeH(0);
|
||||
}
|
||||
writeD((int) _activeChar.getPAtk(null));
|
||||
writeD((int) _activeChar.getPAtkSpd());
|
||||
writeD((int) _activeChar.getPDef(null));
|
||||
@@ -292,8 +319,8 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
|
||||
writeD(_activeChar.getClanId());
|
||||
writeD(_activeChar.getClanCrestLargeId());
|
||||
writeD(_activeChar.getClanCrestId());
|
||||
writeC(_activeChar.isClanLeader() ? -1 : 0x00);
|
||||
writeD(_activeChar.getClanPrivileges().getBitmask());
|
||||
writeC(_activeChar.isClanLeader() ? 1 : 0);
|
||||
writeD(_activeChar.getAllyId());
|
||||
writeD(_activeChar.getAllyCrestId());
|
||||
writeC(_activeChar.isInPartyMatchRoom() ? 0x01 : 0x00);
|
||||
@@ -305,11 +332,12 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
|
||||
writeC(_activeChar.getPvpFlag());
|
||||
writeD(_activeChar.getReputation());
|
||||
writeC(_activeChar.isNoble() ? 0x01 : 0x00);
|
||||
writeC(_activeChar.isHero() ? 0x01 : 0x00);
|
||||
writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0);
|
||||
writeC(_activeChar.getPledgeClass());
|
||||
writeD(_activeChar.getPkKills());
|
||||
writeD(_activeChar.getPvpKills());
|
||||
writeD(_activeChar.getRecomLeft());
|
||||
writeH(_activeChar.getRecomLeft());
|
||||
writeH(_activeChar.getRecomHave());
|
||||
}
|
||||
|
||||
if (containsMask(UserInfoType.VITA_FAME))
|
||||
@@ -353,13 +381,13 @@ public class UserInfo extends AbstractMaskPacket<UserInfoType>
|
||||
writeH(0x00);
|
||||
writeH(0x00);
|
||||
writeH(_activeChar.getInventoryLimit());
|
||||
writeC(0x00); // if greater than 1 show the attack cursor when interacting
|
||||
writeC(_activeChar.isCursedWeaponEquipped() ? CursedWeaponsManager.getInstance().getLevel(_activeChar.getCursedWeaponEquippedId()) : 0);
|
||||
}
|
||||
|
||||
if (containsMask(UserInfoType.UNK_3))
|
||||
{
|
||||
writeH(9);
|
||||
writeC(0x00);
|
||||
writeC(0x01);
|
||||
writeH(0x00);
|
||||
writeD(0x00);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J Server
|
||||
*
|
||||
* This file is part of L2J Server.
|
||||
*
|
||||
* L2J Server 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.
|
||||
*
|
||||
* L2J Server 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets.dailymission;
|
||||
|
||||
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class ExConnectedTimeAndGetTableReward extends L2GameServerPacket
|
||||
{
|
||||
public static final ExConnectedTimeAndGetTableReward STATIC_PACKET = new ExConnectedTimeAndGetTableReward();
|
||||
|
||||
@Override
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0x189);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
writeD(0x00);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J Server
|
||||
*
|
||||
* This file is part of L2J Server.
|
||||
*
|
||||
* L2J Server 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.
|
||||
*
|
||||
* L2J Server 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets.dailymission;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.l2jserver.gameserver.data.xml.impl.DailyMissionData;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.holders.DailyMissionHolder;
|
||||
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class ExOneDayReceiveRewardList extends L2GameServerPacket
|
||||
{
|
||||
private final L2PcInstance _activeChar;
|
||||
private final int _classId;
|
||||
private final List<DailyMissionHolder> _availableMissions;
|
||||
|
||||
public ExOneDayReceiveRewardList(L2PcInstance activeChar)
|
||||
{
|
||||
_activeChar = activeChar;
|
||||
_classId = activeChar.getBaseClassId();
|
||||
_availableMissions = DailyMissionData.getInstance().getDailyLevelUpMissions(_classId);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0x188);
|
||||
writeD(_classId);
|
||||
writeD(0x00); // Day
|
||||
writeD(_availableMissions.size()); // TODO: Implement all missions.
|
||||
for (DailyMissionHolder mission : _availableMissions)
|
||||
{
|
||||
writeH(mission.getClientId()); // Reward
|
||||
writeC(DailyMissionData.getInstance().isRewardAvailable(mission.getId(), _activeChar) ? 1 : 2); // 1 Available, 2 Not Available
|
||||
writeC(0x00); // Requires multiple completion - YesOrNo
|
||||
writeD(0x00); // Current progress
|
||||
writeD(0x00); // Required total
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J Server
|
||||
*
|
||||
* This file is part of L2J Server.
|
||||
*
|
||||
* L2J Server 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.
|
||||
*
|
||||
* L2J Server 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets.dailymission;
|
||||
|
||||
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class ExTodoListHTML extends L2GameServerPacket
|
||||
{
|
||||
public ExTodoListHTML()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0x18C);
|
||||
writeC(0x01); // TodoListTab. 1=event List 2=zone List
|
||||
writeS(""); // HTML name
|
||||
writeS(""); // PreformattedHtml
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J Server
|
||||
*
|
||||
* This file is part of L2J Server.
|
||||
*
|
||||
* L2J Server 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.
|
||||
*
|
||||
* L2J Server 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets.dailymission;
|
||||
|
||||
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class ExTodoListInzone extends L2GameServerPacket
|
||||
{
|
||||
public ExTodoListInzone()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0x18B);
|
||||
writeH(0x00); // zone list size: if not select show all levels, this size=0, maybe I am LV3.
|
||||
writeS(""); // HTML name
|
||||
writeS(""); // Zone name
|
||||
writeH(0x00); // Min level
|
||||
writeH(0x00); // Max level
|
||||
writeH(0x00); // Min players
|
||||
writeH(0x00); // Max players
|
||||
writeC(0x00); // Entry info 1=on 2=off 3=always
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J Server
|
||||
*
|
||||
* This file is part of L2J Server.
|
||||
*
|
||||
* L2J Server 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.
|
||||
*
|
||||
* L2J Server 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.l2jserver.gameserver.network.serverpackets.dailymission;
|
||||
|
||||
import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class ExTodoListRecommend extends L2GameServerPacket
|
||||
{
|
||||
public ExTodoListRecommend()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeImpl()
|
||||
{
|
||||
writeC(0xFE);
|
||||
writeH(0x18A);
|
||||
writeH(0x00); // Loop size.
|
||||
// TODO: Add loop.
|
||||
}
|
||||
}
|
||||
@@ -42,7 +42,7 @@ public class FriendAddRequestResult extends L2GameServerPacket
|
||||
_isOnline = activeChar.isOnlineInt();
|
||||
_charObjectId = activeChar.getObjectId();
|
||||
_charLevel = activeChar.getLevel();
|
||||
_charClassId = activeChar.getActiveClass();
|
||||
_charClassId = activeChar.getActiveClassId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -42,7 +42,7 @@ public class L2FriendStatus extends L2GameServerPacket
|
||||
public L2FriendStatus(L2PcInstance player, int type)
|
||||
{
|
||||
_objectId = player.getObjectId();
|
||||
_classId = player.getActiveClass();
|
||||
_classId = player.getActiveClassId();
|
||||
_level = player.getLevel();
|
||||
_name = player.getName();
|
||||
_type = type;
|
||||
|
||||
@@ -39,7 +39,7 @@ public class ExMentorAdd extends L2GameServerPacket
|
||||
writeC(0xFE);
|
||||
writeH(0x11C);
|
||||
writeS(_mentor.getName());
|
||||
writeD(_mentor.getActiveClass());
|
||||
writeD(_mentor.getActiveClassId());
|
||||
writeD(_mentor.getLevel());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ public class ListMenteeWaiting extends L2GameServerPacket
|
||||
if ((1 <= (PLAYERS_PER_PAGE * _page)) && (1 > (PLAYERS_PER_PAGE * (_page - 1))))
|
||||
{
|
||||
writeS(player.getName());
|
||||
writeD(player.getActiveClass());
|
||||
writeD(player.getActiveClassId());
|
||||
writeD(player.getLevel());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user