Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   пакетка Lindvior (https://forum.zone-game.info/showthread.php?t=29792)

ChipWarl 28.06.2013 13:52

пакетка Lindvior
 
ребят нужна помощь)
в каких пакетах находится отображение в нижней панельке?

http://i.imgur.com/ZCUuxdR.png

darkevil 28.06.2013 14:03

Re: пакетка Lindvior
 
Много разных, не в одном.

ChipWarl 28.06.2013 14:13

Re: пакетка Lindvior
 
название можно пакетов?)

smeli 28.06.2013 14:20

Re: пакетка Lindvior
 
public static final int ExUnReadMailCount = 0x146;
public static final int ExPledgeCount = 0x147;
public static final int ExAdenaInvenCount = 0x148;

ChipWarl 28.06.2013 15:33

Re: пакетка Lindvior
 
адена не отображается) в чем проблема?

Код:

package lind.gameserver.network.serverpackets;

import lind.gameserver.model.Player;

public class ExAdenaInvenCount extends L2GameServerPacket {
    public int invsize;
    public long count;

    public ExAdenaInvenCount(Player pl) {
        count = pl.getInventory().getAdena();
        invsize = pl.getInventory().getSize();
    }

    @Override
    protected void writeImpl() {
        writeEx(0x148);
        writeQ(count);
        writeD(invsize);
    }
}

Добавлено через 5 минут
+ дописал параметр в player

Код:

        sendPacket(new ExAdenaInvenCount(this));
    }


smeli 28.06.2013 16:10

Re: пакетка Lindvior
 
в клиенте есть галочька неотображать там адену

---

ещё возможно посылаете не ввовремя

ChipWarl 28.06.2013 16:27

Re: пакетка Lindvior
 
пакетки разобрал всё норм
осталось с кланом)
кто подкинет пакет?)

Gaikotsu 28.06.2013 17:33

Re: пакетка Lindvior
 
чего там подкидывать то - он почти такой же как и остальные

package l2p.gameserver.network.serverpackets;
 
import l2p.gameserver.network.serverpackets.components.ServerPacket;
 
public class ExPledgeCount extends L2GameServerPacket
{
	public static final ExPledgeCount STATIC = new ExPledgeCount(0);
 
	private int _count;
 
	public ExPledgeCount(int count)
	{
		_count = count + 1;
	}
 
	@Override
	protected void writeImpl()
	{
		writeEx(ServerPacket.ExPledgeCount);
		writeD(_count);
	}
}
Code: Java
и отсылай его везде где меняется количество членов клана в онлайне (вход/выход мемберов в игре, вступление/исключение и т.д.)

P.S. не удивляйся странной прибавке +1 к количеству, в клиенте отображает на единицу меньшее значение, чем то что посылаешь, т.е. без прибавки получается не будет учитывать самого игрока в количестве онлайн-мемберов.

ChipWarl 28.06.2013 17:36

Re: пакетка Lindvior
 
а если например взять кусок кода из кода клана?
где показывает кол-во мемберов

Добавлено через 2 минуты
+ ещё проблемка с письмами. не отображается кол-во писем..
Код:

package lind.gameserver.network.serverpackets;

import lind.gameserver.model.mail.Mail;

public class ExUnReadMailCount extends L2GameServerPacket {
    public int count;

    public ExUnReadMailCount(Mail mail) {
        count = mail.getMessageId();
    }

    @Override
    protected void writeImpl() {
        writeEx(0x146);
        writeD(count);
    }
}


Gaikotsu 28.06.2013 17:39

Re: пакетка Lindvior
 
Цитата:

Сообщение от ChipWarl (Сообщение 308011)
+ дописал параметр в player

...

не только туда, но еще в 3 метода в PcInventory (в sendAddItem, sendModifyItem и sendRemoveItem), но отправлять только при условии что обрабатываемым итемом является адена - чтобы лишний раз не слать этот пакет при каждом изменении любой вещи в инвентаре.

Добавлено через 2 минуты
Цитата:

Сообщение от ChipWarl (Сообщение 308044)
+ ещё проблемка с письмами. не отображается кол-во писем..

отсылай в EnterWorld, а затем везде где идет прием новых писем, в дополнение к имеющимся отправкаи пакетов с уведомлением что пришло письмо и все такое.

для EnterWorld что-то типа такого:

	private void checkNewMail(Player player)
	{
		int count = 0;
 
		for (Mail mail : MailDAO.getInstance().getReceivedMailByOwnerId(player.getObjectId()))
			if (mail.isUnread())
				count++;
 
		if (count > 0)
			sendPacket(ExNoticePostArrived.STATIC_FALSE);
 
		sendPacket(new ExUnReadMailCount(count));
		player.setUnreadMailCount(count);
	}
 
Code: Java
а для всех остальных случаев используй переменную для персонажа (начальное значение для нее и выставляется тут в последней строке метода) и ее и дергай (и меняй тоже, при установке пометки что письмо прочитано и т.д.) для показа в пакете - так экономичней чем каждый раз лезть в бд для получения списка писем и проверки - сколько из них непрочитанных.


Текущее время: 03:14. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot