Цитата:
Сообщение от Amadeo
Hi, anybody have working the (PM, whisp, TELL)
i try to do it working but nothing. Im using this in the Say2 Packet
Код:
protected final void writeImpl()
{
writeC(0x4A);
writeD(_objectId);
writeD(_type.ordinal());
switch (_type)
{
case SYSTEM_MESSAGE:
writeD(_sysString.getId());
writeD(_systemMsg.getId());
break;
case TELL:
writeS(_charName);
writeElements();
writeC(_mask);
writeC(_charLevel);
break;
default:
writeS(_charName);
writeElements();
break;
}
}
try puting a value in the writes
Код:
writeC(_mask);
writeC(_charLevel);
but its the same all in red and level 1 any help; thanks
|
Код:
// Flags
private static final int IS_FRIEND = 1 << 0;
private static final int IS_CLAN_MEMBER = 1 << 1;
private static final int IS_MENTEE_OR_MENTOR = 1 << 2;
private static final int IS_ALLIANCE_MEMBER = 1 << 3;
private static final int IS_GM = 1 << 4;
private ChatType _type;
private SysString _sysString;
private SystemMsg _systemMsg;
private int _objectId;
private String _charName;
private int _mask;
private int _charLevel = -1;
public SayPacket2(int objectId, ChatType type, SysString st, SystemMsg sm)
{
super(NpcString.NONE);
_objectId = objectId;
_type = type;
_sysString = st;
_systemMsg = sm;
}
public SayPacket2(int objectId, ChatType type, String charName, String text)
{
this(objectId, type, charName, NpcString.NONE, text);
}
public SayPacket2(int objectId, ChatType type, String charName, NpcString npcString, String... params)
{
super(npcString, params);
_objectId = objectId;
_type = type;
_charName = charName;
}
public void setCharName(String name)
{
_charName = name;
}
public void setSenderInfo(Player sender, Player receiver)
{
_charLevel = sender.getLevel();
if(receiver.getFriendList().contains(sender.getObjectId()))
_mask |= IS_FRIEND;
if(receiver.getClanId() > 0 && receiver.getClanId() == sender.getClanId())
_mask |= IS_CLAN_MEMBER;
if(receiver.getMenteeList().getMentor() == sender.getObjectId() || sender.getMenteeList().getMentor() == receiver.getObjectId())
_mask |= IS_MENTEE_OR_MENTOR;
if(receiver.getAllyId() > 0 && receiver.getAllyId() == sender.getAllyId())
_mask |= IS_ALLIANCE_MEMBER;
// Does not shows level
if(sender.isGM())
_mask |= IS_GM;
}
@Override
protected final void writeImpl()
{
writeD(_objectId);
writeD(_type.ordinal());
switch(_type)
{
case SYSTEM_MESSAGE:
writeD(_sysString.getId());
writeD(_systemMsg.getId());
break;
case TELL:
writeS(_charName);
writeElements();
writeC(_mask);
if((_mask & IS_GM) == 0)
writeC(_charLevel);
break;
default:
writeS(_charName);
writeElements();
break;
}
}
And change NpcStringContainer from:
Код:
private final NpcString _npcString;
private final String[] _parameters = new String[5];
protected NpcStringContainer(NpcString npcString, String... arg)
{
_npcString = npcString;
System.arraycopy(arg, 0, _parameters, 0, arg.length);
}
protected void writeElements()
{
writeD(_npcString.getId());
for(String st : _parameters)
writeS(st);
}
to:
Код:
private final NpcString _npcString;
private final String[] _parameters;
protected NpcStringContainer(NpcString npcString, String... arg)
{
_npcString = npcString;
_parameters = arg;
}
protected void writeElements()
{
writeD(_npcString.getId());
for(String st : _parameters)
writeS(st);
}