Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
В чем смысл? Как по мне не нужная вещьКто подскажет где есть такое или как реализовать, чтобы окно выбора персонажа было доступно 5 минут, затем дисконект если персонаж не выбран.
а на практике это как сделать?через поток, запускаем на 5 минут, при этом инсертим переменную в пакет выбора персонажа, к примеру int select = 0; при выборе персонажа задаем переменной значение 1, а в потоке проверяем if(select = 0) то десконектим с сервера
я вам должен разжевывать? Учитесь, смотрите примеры реализаций кода ThreadPoolManager, doDisconnect функции. Это все есть в вашем ядре, нужно только поискать и подумать.а на практике это как сделать?
package l2p.gameserver.serverpackets;
import l2p.gameserver.GameTimeController;
import l2p.gameserver.model.Player;
import l2p.gameserver.utils.Location;
public class CharSelected extends L2GameServerPacket
{
// SdSddddddddddffddddddddddddddddddddddddddddddddddddddddd d
private int _sessionId, char_id, clan_id, sex, race, class_id;
private String _name, _title;
private Location _loc;
private double curHp, curMp;
private int _sp, level, karma, _int, _str, _con, _men, _dex, _wit, _pk;
private long _exp;
public CharSelected(final Player cha, final int sessionId)
{
_sessionId = sessionId;
_name = cha.getName();
char_id = cha.getObjectId(); //FIXME 0x00030b7a ??
_title = cha.getTitle();
clan_id = cha.getClanId();
sex = cha.getSex();
race = cha.getRace().ordinal();
class_id = cha.getClassId().getId();
_loc = cha.getLoc();
curHp = cha.getCurrentHp();
curMp = cha.getCurrentMp();
_sp = cha.getIntSp();
_exp = cha.getExp();
level = cha.getLevel();
karma = cha.getKarma();
_pk = cha.getPkKills();
_int = cha.getINT();
_str = cha.getSTR();
_con = cha.getCON();
_men = cha.getMEN();
_dex = cha.getDEX();
_wit = cha.getWIT();
}
@Override
protected final void writeImpl()
{
writeC(0x0b);
writeS(_name);
writeD(char_id);
writeS(_title);
writeD(_sessionId);
writeD(clan_id);
writeD(0x00); //??
writeD(sex);
writeD(race);
writeD(class_id);
writeD(0x01); // active ??
writeD(_loc.x);
writeD(_loc.y);
writeD(_loc.z);
writeF(curHp);
writeF(curMp);
writeD(_sp);
writeQ(_exp);
writeD(level);
writeD(karma); //?
writeD(_pk);
writeD(_int);
writeD(_str);
writeD(_con);
writeD(_men);
writeD(_dex);
writeD(_wit);
for(int i = 0; i < 30; i+
writeD(0x00);
writeF(0x00); //c3 work
writeF(0x00); //c3 work
// extra info
writeD(GameTimeController.getInstance().getGameTime()); // in-game time
writeD(0x00); //
writeD(0x00); //c3
writeC(0x00); //c3 InspectorBin
writeH(0x00); //c3
writeH(0x00); //c3
writeD(0x00); //c3
//writeD(0x00); //c3 InspectorBin for 528 client
//writeD(0x00); //c3
//writeD(0x00); //c3
//writeD(0x00); //c3
//writeD(0x00); //c3
//writeD(0x00); //c3
//writeD(0x00); //c3
//writeD(0x00); //c3
//writeD(0x00); //c3
//writeD(0x00); //c5
//writeD(0x00); //c5
//writeD(0x00); //c5
}
}
Да действительно, костыли. Так предложите же нам "О, Великий" рациональное решение "ПАОФУ".На ПТС серверах кикает через 10 минут. Всё предложенное выше костыли костылей.
Хотел воздержаться... Ок, предоставьте нам сорсы PTS(не куриво смелого и тд, именно кор офа), тогда мы будем там смотреть. А смотреть на то что выдает дизасемблер, рядовому пользователю, это как "Стать королем аськи".Раздавать советы самое безответственное занятие. Я сказал достаточно, чтобы автор знал где это глянуть и реализовать механизм без костылей. Умерьте своё ЧСВ, оно слишком завышено.
Ты сказал только то, что на ПТСе (при чем он здесь вообще, если имеется в виду Java-эмулятор?!) кикает через 10 минут и какие все калеки.Раздавать советы самое безответственное занятие. Я сказал достаточно, чтобы автор знал где это глянуть и реализовать механизм без костылей. Умерьте своё ЧСВ, оно слишком завышено.
Пришел, пернул, ушел.Раздавать советы самое безответственное занятие. Я сказал достаточно, чтобы автор знал где это глянуть и реализовать механизм без костылей. Умерьте своё ЧСВ, оно слишком завышено.
ты дибил? каким боком пакетка относиться к данной теме? ты там интервал дисконекта через нее засекал или что?Все нормальные люди работу клиента с сервером смотрят через снифер пакетов. У вас, видимо, принято всё изучать тактильно подключая собственные пукановые ощущения. Поэтому все остальные, кроме вас, пердят проходя мимо.
Диванные проффесор детектед. Каким макаром ты через снифер будешь смотреть механику? Снифер тебе покажет только кусок данных в которых будет приказ клиенту на дисконект, мой вариант тоже такое покажет через снифер.Все нормальные люди работу клиента с сервером смотрят через снифер пакетов. У вас, видимо, принято всё изучать тактильно подключая собственные пукановые ощущения. Поэтому все остальные, кроме вас, пердят проходя мимо.
через поток, запускаем на 5 минут, при этом инсертим переменную в пакет выбора персонажа, к примеру int select = 0; при выборе персонажа задаем переменной значение 1, а в потоке проверяем if(select = 0) то десконектим с сервера
просто улыбнуло -Все нормальные люди работу клиента с сервером смотрят через снифер пакетов. У вас, видимо, принято всё изучать тактильно подключая собственные пукановые ощущения. Поэтому все остальные, кроме вас, пердят проходя мимо.
как я писал выше, просто отменяем дальнейшее выполнение потока при EnterWorld=)немного поправлю,
в пакете клиента (****clientpackets.AuthLogin именно после выбора сервера клиент шлёт его и появляется выбор персов) через поток, запускаем таймер на 5 минут,
в нём по истечении 5-ти минут делаем проверку всех персов аккаунта на isOnlain()(isOnlain() это реализовано практически в всех сборках)
и соответственно если истина, то просто просто отменяем поток, иначе поток успешно завершит работу с указанными Вашими параметрами(отсылает пакет дисконнекта).
Правильно, давайте будет запускать цыкл по персонажам, это будет более продуктивнее. Так же персонаж может 10 раз перезайти пока эти 5 минут пройдут, а это еще +потоки которые будут сидеть в сервере.да, но добавлять новые переменные, зачем?