Показать сообщение отдельно
Непрочитано 27.09.2015, 19:48   #123
Пользователь

По умолчанию Re: Работа над Goddess of Destruction (part 7)

Цитата:
Сообщение от Bonux Посмотреть сообщение
Код:
// 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);
	}
thx for your help Bonux, but i need added that line setSenderInfo in other script?
nache вне форума Ответить с цитированием