Сообщений: 15
Тем: 0
Зарегистрирован: Feb 2012
Репутация:
-6
elastic Написал:This method returns "skill points consume * skill_learned_level" as i remember, the first idea which came to my head, but it works :redlol:
Could you share that method please... im kind of rusty with java x querry's im sorry to bother... Its my last question! :Olen': I swear! :Olen':
Сообщений: 441
Тем: 15
Зарегистрирован: Oct 2012
Репутация:
3,319
jalemao Написал:Could you share that method please... im kind of rusty with java x querry's im sorry to bother... Its my last question! :Olen': I swear! :Olen': No problem
Код: Class Skill.java
public int getAcquirePointsConsume()
{
return _acquire_count * _level;
}
Сообщений: 666
Тем: 15
Зарегистрирован: Aug 2014
Репутация:
1,790
У кого есть дамп эртеи 606, поделитесь пожалуйста.
Сообщений: 329
Тем: 16
Зарегистрирован: Nov 2014
ув. пользователи форума, кто знает какие евент тригеры задействованы зоне эпика Линдвиора? известен только 1, активация которого происходит после включения генераторов.
Сообщений: 102
Тем: 0
Зарегистрирован: Dec 2012
Репутация:
139
люди злые, кто подскажет? не могу никак нормально собрать пакет CharSelectionInfo - если отправляю брошку и камни, то у меня ошибка arrayBoundOfIndex - 31
мне интересно, в CharSelectionInfo они должны отправляться? + в Inventory - сколько PAPERDOLL слотов? у меня 31 + TOTALSLOTS = 32
а если отправляю пустые нули вместо брошки и камней = 7шт. то отличное отображение персов=((((
P.S. брошка и камни сделаны по аналогии таликов....
Сообщений: 666
Тем: 15
Зарегистрирован: Aug 2014
Репутация:
1,790
silvermain Написал:люди злые, кто подскажет? не могу никак нормально собрать пакет CharSelectionInfo - если отправляю брошку и камни, то у меня ошибка arrayBoundOfIndex - 31
мне интересно, в CharSelectionInfo они должны отправляться? + в Inventory - сколько PAPERDOLL слотов? у меня 31 + TOTALSLOTS = 32
а если отправляю пустые нули вместо брошки и камней = 7шт. то отличное отображение персов=((((
P.S. брошка и камни сделаны по аналогии таликов....
Код: protected final void writeImpl()
{
writeC(0x09);
writeD(_size);
writeD(_maxCharPerAcc);
writeC(_unk);
writeC(_playMode);
writeD(_isKoreaClient);
writeC(_gift);
int i = 0;
for (CharSelectInfoPackage charInfoPackage : charSelectionInfo)
{
writeS(charInfoPackage.getName());
writeD(charInfoPackage.getCharId());
writeS(_loginName);
writeD(_sessionId);
writeD(charInfoPackage.getClanId());
writeD(_builderLevel);
writeD(charInfoPackage.getSex());
writeD(charInfoPackage.getRace());
writeD(charInfoPackage.getBaseClassId());
writeD(_serverId);
writeD(charInfoPackage.getX());
writeD(charInfoPackage.getY());
writeD(charInfoPackage.getZ());
writeF(charInfoPackage.getCurrentHp());
writeF(charInfoPackage.getCurrentMp());
writeQ(charInfoPackage.getSp());
writeQ(charInfoPackage.getExp());
int lvl = charInfoPackage.getLevel();
writeF(Experience.getExpPercent(lvl, charInfoPackage.getExp()));
writeD(lvl);
writeD(charInfoPackage.getKarma());
writeD(charInfoPackage.getPk());
writeD(charInfoPackage.getPvP());
for (int j = 0; j < 7; j++)
{
writeD(0x00);
}
writeD(0x00);
writeD(0x00);
for (int PAPERDOLL_ID : Inventory.PAPERDOLL_ORDER)
{
writeD(charInfoPackage.getPaperdollItemId(PAPERDOLL_ID));
}
writeD(charInfoPackage.getVisualItemId(Inventory.PAPERDOLL_RHAND));
writeD(charInfoPackage.getVisualItemId(Inventory.PAPERDOLL_LHAND));
writeD(charInfoPackage.getVisualItemId(Inventory.PAPERDOLL_GLOVES));
writeD(charInfoPackage.getVisualItemId(Inventory.PAPERDOLL_CHEST));
writeD(charInfoPackage.getVisualItemId(Inventory.PAPERDOLL_LEGS));
writeD(charInfoPackage.getVisualItemId(Inventory.PAPERDOLL_FEET));
writeD(charInfoPackage.getVisualItemId(Inventory.PAPERDOLL_LRHAND));
writeD(charInfoPackage.getVisualItemId(Inventory.PAPERDOLL_HAIR));
writeD(charInfoPackage.getVisualItemId(Inventory.PAPERDOLL_DHAIR));
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeD(charInfoPackage.getHairStyle());
writeD(charInfoPackage.getHairColor());
writeD(charInfoPackage.getFace());
writeF(charInfoPackage.getMaxHp()); // hp max
writeF(charInfoPackage.getMaxMp()); // mp max
writeD(charInfoPackage.getAccessLevel() > -100 ? charInfoPackage.getDeleteTimer() : -1);
writeD(charInfoPackage.getClassId());
writeD(i == _lastUsedIndex ? 1 : 0);
writeC(Math.min(charInfoPackage.getPaperdollEnchantEffect(Inventory.PAPERDOLL_RHAND), 127));
writeH(charInfoPackage.getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));
writeH(charInfoPackage.getPaperdollAugmentationId(Inventory.PAPERDOLL_LHAND));
writeD(getTransform(charInfoPackage));
writeD(_petObjectId);
writeD(_petLvl);
writeD(_petFood);
writeD(_petFoodLvl);
writeF(_petHP);
writeF(_petMP);
writeD(charSelectionInfo.getVitalityPoints());
writeD(200); // Vitality percent
writeD(5); // Vitality items count
writeD(charInfoPackage.getAccessLevel() > -100 ? 0x01 : 0x00);
writeC(charInfoPackage.getNoblesse());
writeC(charInfoPackage.getHero());
writeC(_unk2);
i++;
}
}
вроде так, а должны отправляться или нет, нудно на офе смотреть
п.с. думаю что скорее всего не должны, возможно это добавят позже, хотя я могу ошибаться
Сообщений: 466
Тем: 10
Зарегистрирован: Dec 2012
Репутация:
398
silvermain Написал:люди злые, кто подскажет? не могу никак нормально собрать пакет CharSelectionInfo - если отправляю брошку и камни, то у меня ошибка arrayBoundOfIndex - 31
мне интересно, в CharSelectionInfo они должны отправляться? + в Inventory - сколько PAPERDOLL слотов? у меня 31 + TOTALSLOTS = 32
а если отправляю пустые нули вместо брошки и камней = 7шт. то отличное отображение персов=((((
P.S. брошка и камни сделаны по аналогии таликов....
У тебя в массив не влазит значение (мб неправильно запихнул). На лыже насколько я помню 31 слот (так как LRHAND в ней нет и оно отправляется как LHAND (или RHAND не помню).
Подсказка: индексы массивов начинаются с 0, то есть если обычным счетом определенный объект нумерован как 32, то индекс в массиве ему будет дан как 31.
Сообщений: 102
Тем: 0
Зарегистрирован: Dec 2012
Репутация:
139
Warencense Написал:У тебя в массив не влазит значение (мб неправильно запихнул). На лыже насколько я помню 31 слот (так как LRHAND в ней нет и оно отправляется как LHAND (или RHAND не помню).
Подсказка: индексы массивов начинаются с 0, то есть если обычным счетом определенный объект нумерован как 32, то индекс в массиве ему будет дан как 31.
такс, смотри, у меня в Inventory стоит так:
Inventory.java
PHP код: <?php
public static final int PAPERDOLL_UNDER = 0;
public static final int PAPERDOLL_HEAD = 1;
public static final int PAPERDOLL_HAIR = 2;
public static final int PAPERDOLL_HAIR2 = 3;
public static final int PAPERDOLL_NECK = 4;
public static final int PAPERDOLL_RHAND = 5;
public static final int PAPERDOLL_CHEST = 6;
public static final int PAPERDOLL_LHAND = 7;
public static final int PAPERDOLL_REAR = 8;
public static final int PAPERDOLL_LEAR = 9;
public static final int PAPERDOLL_GLOVES = 10;
public static final int PAPERDOLL_LEGS = 11;
public static final int PAPERDOLL_FEET = 12;
public static final int PAPERDOLL_RFINGER = 13;
public static final int PAPERDOLL_LFINGER = 14;
public static final int PAPERDOLL_LBRACELET = 15;
public static final int PAPERDOLL_RBRACELET = 16;
public static final int PAPERDOLL_DECO1 = 17;
public static final int PAPERDOLL_DECO2 = 18;
public static final int PAPERDOLL_DECO3 = 19;
public static final int PAPERDOLL_DECO4 = 20;
public static final int PAPERDOLL_DECO5 = 21;
public static final int PAPERDOLL_DECO6 = 22;
public static final int PAPERDOLL_CLOAK = 23;
public static final int PAPERDOLL_BELT = 24;
public static final int PAPERDOLL_BROACH = 25;
public static final int PAPERDOLL_STONE1 = 26;
public static final int PAPERDOLL_STONE2 = 27;
public static final int PAPERDOLL_STONE3 = 28;
public static final int PAPERDOLL_STONE4 = 29;
public static final int PAPERDOLL_STONE5 = 30;
public static final int PAPERDOLL_STONE6 = 31;
public static final int PAPERDOLL_TOTALSLOTS = 32;
в L2GameServerPacket так:
L2GameServerPacket
PHP код: <?php
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_BROACH,
Inventory.PAPERDOLL_STONE1,
Inventory.PAPERDOLL_STONE2,
Inventory.PAPERDOLL_STONE3,
Inventory.PAPERDOLL_STONE4,
Inventory.PAPERDOLL_STONE5,
Inventory.PAPERDOLL_STONE6
};
и на закуску CharSelectionInfo так:
CharSelectionInfo
PHP код: <?php
protected final void writeImpl()
{
writeC(0x09);
int size = (_characterPackages.length);
writeD(size);
// Can prevent players from creating new characters (if 0); (if 1, the client will ask if chars may be created (0x13) Response: (0x0D) )
writeD(Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT);
writeC(0x00);
writeC(0x01);
writeD(0x02);
writeC(0x00);
long lastAccess = 0L;
if (_activeId == -1)
{
for (int i = 0; i < size; i++)
{
if (lastAccess < _characterPackages[i].getLastAccess())
{
lastAccess = _characterPackages[i].getLastAccess();
_activeId = i;
}
}
}
for (int i = 0; i < size; i++)
{
CharSelectInfoPackage charInfoPackage = _characterPackages[i];
writeS(charInfoPackage.getName());
writeD(charInfoPackage.getObjectId());
writeS(_loginName);
writeD(_sessionId);
writeD(charInfoPackage.getClanId());
writeD(0x00); // ??
writeD(charInfoPackage.getSex());
writeD(charInfoPackage.getRace());
if (charInfoPackage.getClassId() == charInfoPackage.getBaseClassId())
{
writeD(charInfoPackage.getClassId());
}
else
{
writeD(charInfoPackage.getBaseClassId());
}
writeD(0x01); // active ??
writeD(charInfoPackage.getX());
writeD(charInfoPackage.getY());
writeD(charInfoPackage.getZ());
writeF(charInfoPackage.getCurrentHp());
writeF(charInfoPackage.getCurrentMp());
writeQ(charInfoPackage.getSp());
writeQ(charInfoPackage.getExp());
writeF((float) (charInfoPackage.getExp() - ExperienceTable.getInstance().getExpForLevel(charInfoPackage.getLevel())) / (ExperienceTable.getInstance().getExpForLevel(charInfoPackage.getLevel() + 1) - ExperienceTable.getInstance().getExpForLevel(charInfoPackage.getLevel()))); // High Five
// exp %
writeD(charInfoPackage.getLevel());
writeD(charInfoPackage.getKarma());
writeD(charInfoPackage.getPkKills());
writeD(charInfoPackage.getPvPKills());
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
for (int slot : getPaperdollOrder())
{
writeD(charInfoPackage.getPaperdollItemId(slot));
}
|- - - - - - - -|
| writeD(0); |
| writeD(0); | либо я комментирую строки в
| writeD(0); | L2GameServerPacket - (брошь и стоуны)
| writeD(0); | и оставляю данный столбик, либо всё пишу
| writeD(0); | верно и вылетает arrayBoundIndex - 31 =
| writeD(0); | PAPERDOLL_STONE6 =((((
|- - - - - - - -|
//визуалка
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeD(charInfoPackage.getHairStyle());
writeD(charInfoPackage.getHairColor());
writeD(charInfoPackage.getFace());
writeF(charInfoPackage.getMaxHp()); // hp max
writeF(charInfoPackage.getMaxMp()); // mp max
long deleteTime = charInfoPackage.getDeleteTimer();
int deletedays = 0;
if (deleteTime > 0)
{
deletedays = (int) ((deleteTime - System.currentTimeMillis()) / 1000);
}
writeD(deletedays); // days left before
// delete .. if != 0
// then char is inactive
writeD(charInfoPackage.getClassId());
writeD(i == _activeId ? 0x01 : 0x00); // c3 auto-select char
writeC(charInfoPackage.getEnchantEffect() > 127 ? 127 : charInfoPackage.getEnchantEffect());
writeD(charInfoPackage.getAugmentationId());
// 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(200);
writeD(5);
writeD(1);
writeC(0);
writeC(0);
writeC(1);
}
}
Сообщений: 527
Тем: 17
Зарегистрирован: Oct 2010
Репутация:
1,919
ошибка в методе getPaperdollItemId() а именно там inv объявлен массивом с размером 31
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
GenCloud Написал:ув. пользователи форума, кто знает какие евент тригеры задействованы зоне эпика Линдвиора? известен только 1, активация которого происходит после включения генераторов. [SRC="java"]private static final int[] EventTriggerRecharge = Util.createRangeArray(21170102, 21170110);
private static final int[] EventTriggerCannonShoot = { 21170120, 21170124, 21170130, 21170100 };[/SRC]
наверняка есть еще, но мне в принципе и этих хватило пока
|