Сообщений: 441
Тем: 15
Зарегистрирован: Oct 2012
Репутация:
3,319
09-06-2015, 07:38 PM
(Сообщение последний раз редактировалось: 09-06-2015, 10:59 PM elastic.)
parrx Написал:Да вот что то не фига все равно остаются квадраты малевича  Странно, у меня такого нет...
Могу лишь сказать, что ветки заточки отсылает пакет ExEnchantSkillInfo.
Добавлено через 3 часа 18 минут
Warencense Написал:Так считывай его как 2х2 байта.Тут как с аугментом: отправлять и принимать как 2х2 байта намного проще, нежели по 4 байта с фиг знает каким значением. А клиенту как-то пофиг, 1х4 или 2х2, так как все равно эти все значения собираются в кучу и нигде не указывается тип данных. То есть считывается каждый байт, а уже затем уже идет распределение по нжуным типам. В данном случае это имеет значение. Если так не сделать - клиент не сможет отобразить этот скилл, если он заточен.
Собсно уже во всем разобрался.
Сообщений: 9
Тем: 1
Зарегистрирован: May 2015
Репутация:
0
elastic Написал:Могу лишь сказать, что ветки заточки отсылает пакет ExEnchantSkillInfo.
Да это то понятно)) А можете скинуть Ваш ExEnchantSkillInfo и RequestExEnchantSkill?
Сообщений: 202
Тем: 2
Зарегистрирован: Jun 2008
Репутация:
783
parrx Написал:Да это то понятно)) А можете скинуть Ваш ExEnchantSkillInfo и RequestExEnchantSkill? 
Код: package l2s.gameserver.network.l2.s2c;
import java.util.ArrayList;
import java.util.List;
import l2s.gameserver.data.xml.holder.SkillHolder;
import l2s.gameserver.model.Skill;
import l2s.gameserver.utils.SkillUtils;
public class ExEnchantSkillInfoPacket extends L2GameServerPacket
{
private List<Integer> _routes;
private int _id, _level, _canAdd, canDecrease;
public ExEnchantSkillInfoPacket(int id, int level)
{
_routes = new ArrayList<Integer>();
_id = id;
_level = level;
// skill already enchanted?
if(SkillUtils.isEnchantedSkill(_level))
{
// get detail for next level
int skillLevel = SkillUtils.getSkillLevelFromMask(_level);
int subSkillLevel = SkillUtils.getSubSkillLevelFromMask(_level) + 1;
int skillLevelMask = SkillUtils.getSkillLevelMask(skillLevel, subSkillLevel);
Skill skill = SkillHolder.getInstance().getSkill(_id, skillLevelMask);
// if it exists add it
if(skill != null)
{
addEnchantSkillDetail(skill.getLevel());
_canAdd = 1;
}
for(Skill temp : SkillUtils.getSkillsForChangeEnchant(_id, _level))
addEnchantSkillDetail(temp.getLevel());
}
else
{
// not already enchanted
for(Skill temp : SkillUtils.getSkillsForFirstEnchant(_id, _level))
{
addEnchantSkillDetail(temp.getLevel());
_canAdd = 1;
}
}
}
public void addEnchantSkillDetail(int level)
{
_routes.add(level);
}
@Override
protected void writeImpl()
{
writeD(_id);
writeD(_level);
writeD(_canAdd); // can add enchant
writeD(canDecrease); // can decrease enchant
writeD(_routes.size());
for(Integer route : _routes)
writeD(route);
}
}
Сообщений: 1,672
Тем: 54
Зарегистрирован: Jun 2011
Репутация:
5,074
Цитата:
>>> Packet Dump: 0c
93 11 10 48 //object id
00 25 00
ff fc fc ff fc //masks
07 01 00 00 00 00 00 00 //initial block
8d 00 //block2 size
e2 90 0f 00 //npcid
fa c3 fe ff //x
eb ad 03 00 //y
c0 f1 ff ff //z
78 76 00 00 //heading
00 00 00 00 //unknown
4d 01 00 00
16 01 00 00
cd cc 8c 3f
9b 3d 80 3f
7d 10 00 00 //weapon
00 00 00 00 //armor
00 00 00 00 //shield
00 01 00 00 //alive, running, swimming, team
00 00 00 00 //enchant
00 00 00 00 //flying
00 00 00 00 //clone
00 00 00 00 //unknown8
00 00 00 00 //display effect
00 00 00 00 //transformation
00 00 00 00 //current hp
00 00 00 00 //current mp
00 00 00 00 //max hp
00 00 00 00 //max mp
00 //unknown11
00 00 00 00
00 00 00 00 //unknown 12
00 00 //name
ff ff ff ff name npcstring id
ff ff ff ff titlenpcstring id
00 //pvp flag
00 00 00 00 //color
//clan
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 //visual state
04 00 //abnormals count
00 00
00 00
00 00
00 00
вот мой дамп нпц пакета, разметил даже что где, непоявляется визуально нпц
где проблема
Сообщений: 9
Тем: 1
Зарегистрирован: May 2015
Репутация:
0
Сообщений: 1,672
Тем: 54
Зарегистрирован: Jun 2011
Репутация:
5,074
просветите пожалуйста какая маска какое значение имеет у нпц
а то с нпц инфой напряг невероятный
и проблема в масках
Сообщений: 199
Тем: 0
Зарегистрирован: Jul 2013
Репутация:
348
smeli Написал:просветите пожалуйста какая маска какое значение имеет у нпц
а то с нпц инфой напряг невероятный
и проблема в масках
Пакет то остался прежним на оффе. У лыжи вроде нпц инфо более менее разобрали, так что глянуть не проблема.
На евро обычный пакет от нпц
Код: 0C C3 3F 10 48 00 25 00 ED BE 4E A2 0C 07 00 00 00 00 00 00 00 38 00 C0 CC 0F 00 E0 46 01 00 30 38 02 00 B8 F2 FF FF 00 00 00 00 01 00 00 00 00 00 00 00 00 00 80 3F 97 08 8A 3F 01 01 00 00 00 00 00 00 00 00 00 84 10 00 00 84 10 00 00 0C 00 00
зы и абсолютно полный пакет со всеми масками на оффе не получится, там есть флаги отвечающие за клонов, которые на обычном нпц ну никак не могут быть.
Сообщений: 1,672
Тем: 54
Зарегистрирован: Jun 2011
Репутация:
5,074
прорвало  теперь показывает
но всё равно что то не так
например снята маска equiped
а орк у меня с топором - показывают без топора
если маску вернуть - непоказаывает вообще
значит у меня маски расставлены неправильно
Код: //0
static BYTE NPC_MASK1_ID[2]={0x80, 4};
static BYTE NPC_MASK1_ATTACKABLE[2]={0x40, 1};
static BYTE NPC_MASK1_UNKNOWN1[2]={0x20, 4};
static BYTE NPC_MASK1_NAME[2]={0x10, 2};
static BYTE NPC_MASK1_POSITION[2]={0x08, 12};
static BYTE NPC_MASK1_HEADING[2]={0x04, 4};
//static BYTE NPC_MASK1_UNKNOWN2[2]={0x02, 4};
static BYTE NPC_MASK1_UNKNOWN2[2]={0, 0}; //removed
static BYTE NPC_MASK1_ATK_CAST_SPEED[2]={0x01, 8};
// 1
static BYTE NPC_MASK2_SPEED_MULTIPLIER[2]={0x80, 2 * 4};
//static BYTE NPC_MASK2_EQUIPPED[2]={0x40, (3 * 4)};
static BYTE NPC_MASK2_EQUIPPED[2]={0, 0}; //removed
static BYTE NPC_MASK2_ALIVE[2]={0x20, 1};
static BYTE NPC_MASK2_RUNNING[2]={0x10, 1};
static BYTE NPC_MASK2_SWIM_OR_FLY[2]={0x08, 1};
static BYTE NPC_MASK2_TEAM[2]={0x04, 1};
static BYTE NPC_MASK2_1[2]={0x02, 0};
static BYTE NPC_MASK2_2[2]={0, 0}; //not used
// 2
//static BYTE NPC_MASK3_ENCHANT[2]={0x80, 4};
//static BYTE NPC_MASK3_FLYING[2]={0x40, 4};
//static BYTE NPC_MASK3_CLONE[2]={0x20, 4};
//static BYTE NPC_MASK3_FORM[2]={0x10, 4};
static BYTE NPC_MASK3_DISPLAY_EFFECT[2]={0x08, 4};
static BYTE NPC_MASK3_TRANSFORMATION[2]={0x04, 4};
static BYTE NPC_MASK3_1[2]={0x02, 0};
static BYTE NPC_MASK3_2[2]={0x01, 0};
// 3
static BYTE NPC_MASK4_CURRENT_HP[2]={0x80, 4};
//static BYTE NPC_MASK4_CURRENT_MP[2]={0x40, 4};
static BYTE NPC_MASK4_MAX_HP[2]={0x20, 4};
//static BYTE NPC_MASK4_MAX_MP[2]={0x10, 4};
//static BYTE NPC_MASK4_DECOY_TYPE[2]={0x08, 1};
//static BYTE NPC_MASK4_FOLLOW_OBJECT[2]={0x04, (2 * 4)};
static BYTE NPC_MASK4_TITLE[2]={0x02, 2};
//static BYTE NPC_MASK4_NAME_NPCSTRINGID[2]={0x01, 4}; //those really not needed
// 4
//static BYTE NPC_MASK5_TITLE_NPCSTRINGID[2]={0x80, 4}; //those really not needed
static BYTE NPC_MASK5_PVP_FLAG[2]={0x40, 1};
//static BYTE NPC_MASK5_NAME_COLOR[2]={0x20, 4};
//static BYTE NPC_MASK5_CLAN[2]={0x10, (5 * 4)};
static BYTE NPC_MASK5_ABNORMALS[2]={0x08, 5*2}; //(5*2)};
static BYTE NPC_MASK5_VISUAL_STATE[2]={0x04, 1};
и что ето за маски такие????
static BYTE NPC_MASK3_1[2]={0x02, 0};
static BYTE NPC_MASK3_2[2]={0x01, 0};
static BYTE NPC_MASK2_1[2]={0x02, 0};
static BYTE NPC_MASK2_2[2]={0x01, 0};
Сообщений: 56
Тем: 6
Зарегистрирован: Jun 2014
Репутация:
11
Господа спецы, Dev mode у кого нибудь имеется под актуальную Корею? Защиту сцуки снова усилили.
Сообщений: 1,672
Тем: 54
Зарегистрирован: Jun 2011
Репутация:
5,074
прошу расшифровки массок нпц, в какои, из 5 байтов какие маски где стоят
|