Сообщений: 1,607
Тем: 78
Зарегистрирован: Feb 2011
Репутация:
13,414
Короче, суть такова: клац
Сам сурс: клац
Основа, как несложно догадаться, оверовская. Копирайты в разных местах самые разные. Какие-то намеки на westeros в конфигах. Небольшие косяки с пакетами, легко исправляющиеся. В целом - не rest-zone с товарищем дарвином. Глубоко не копал, ибо нет ни желания, ни времени.
PS: Awakeninger, BrainEater - где я, кто все эти люди?
Сообщений: 406
Тем: 10
Зарегистрирован: Jun 2008
Репутация:
2,862
Zeratyl Написал:Короче, суть такова: клац
Сам сурс: клац
Основа, как несложно догадаться, оверовская. Копирайты в разных местах самые разные. Какие-то намеки на westeros в конфигах. Небольшие косяки с пакетами, легко исправляющиеся. В целом - не rest-zone с товарищем дарвином. Глубоко не копал, ибо нет ни желания, ни времени.
PS: Awakeninger, BrainEater - где я, кто все эти люди? Сборка кидалы Хиттр ( поменяли копирайты и тд ) которая была до нас
и которую кинули в шару ее же разрабы.
Человек просто обязан ошибаться, раз другие учатся на его ошибках .......
Сообщений: 555
Тем: 2
Зарегистрирован: Feb 2011
Репутация:
1,507
09-12-2013, 12:03 AM
(Сообщение последний раз редактировалось: 09-12-2013, 12:09 AM KID.)
Залез в l2next.gameserver.network.serverpackets.Beautyshop.ExResponseBeautyRegistResetPacket и обалдел.
[src=java] protected void writeImpl()
{
writeQ(_adena_count); //Кол-во Адены
writeQ(_item_count); //Кол-во Доп.Итемов
writeD(_check); //Поставить/Удалить
writeD(1);//Успешно ли
writeD(1);
Player activeChar = getClient().getActiveChar();
if(activeChar == null)
{
return;
}
if(_adena_count > 0)
{
ItemFunctions.removeItem(activeChar, 57, 15000000, true);
}
if(_item_count > 0)
{
ItemFunctions.removeItem(activeChar, 36308, 3, true);
}
}[/src]
это каким гавнокодером надо быть, что бы воткнуть такое в импл
хотя посмотрел дальше, мде, кому-то стоит отрубить руки, это жесть
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
хых, мало что голимый хардкод, дак еще и делается все зачем-то в серверном пакете, а не в клиентском, который этот серверный пакет вызывает.
З.Ы. да и само по себе формирование пакета корявое - не хватает полей, а в большей части текущих вобще муть шлется.
З.З.Ы.
вот примерно так должен выглядеть кошерный пакет
[SRC="java"]package l2p.gameserver.network.serverpackets;
import l2p.gameserver.Config;
import l2p.gameserver.model.Player;
import l2p.gameserver.network.serverpackets.components.ServerPacket;
public class ExResponseBeautyRegistReset extends L2GameServerPacket
{
private int _type;
private int _result;
private int _hairStyle;
private int _hairColor;
private int _face;
private long _adena;
private long _coins;
public ExResponseBeautyRegistReset(Player player, int type, int result)
{
_type = type;
_result = result;
_hairStyle = player.getNewHairStyle() > 0 ? player.getNewHairStyle() : player.getHairStyle();
_hairColor = player.getNewHairColor() > 0 ? player.getNewHairColor() : player.getHairColor();
_face = player.getNewFace() > 0 ? player.getNewFace() : player.getFace();
_adena = player.getAdena();
_coins = player.getItemCount(Config.BS_COIN_ITEM_ID);
}
@Override
protected void writeImpl()
{
writeEx(ServerPacket.ExResponseBeautyRegistReset);
writeQ(_adena);
writeQ(_coins);
writeD(_type);
writeD(_result);
writeD(_hairStyle);
writeD(_face);
writeD(_hairColor);
}
}
[/SRC]
Сообщений: 555
Тем: 2
Зарегистрирован: Feb 2011
Репутация:
1,507
Gaikotsu, он далек от "кошерности". классы пакетов, как и запросов в л2 сфере одноразовые, создание 7 новых переменных для отправки такого простого пакета - дорого.
пакет не должен ничего создавать, в том числе и никакой логики в его конструкторе.
идеал - в него вошли данные и ушли в сокет
Сообщений: 3,967
Тем: 90
Зарегистрирован: Nov 2010
Репутация:
15,337
Т.е. для того, чтобы отправить один и тот же пакет 1к игроков мы должны создавать под каждого новый экземпляр? Ну... чтобы сэкономить на переменных.
Сообщений: 555
Тем: 2
Зарегистрирован: Feb 2011
Репутация:
1,507
Ro_0TT Написал:Т.е. для того, чтобы отправить один и тот же пакет 1к игроков мы должны создавать под каждого новый экземпляр? Ну... чтобы сэкономить на переменных. 
Что-то не вяжется
Цитата:чтобы отправить один и тот же пакет
Цитата:создавать под каждого новый экземпляр?
К примеру у игрока есть несколько привязанных к нему классов, в которых есть все эти переменные, и в пакет уходит лишь этот класс, не создавая новые переменные
В случае отправки каждого нового экземпляра этого пакета (вес переменных минимум 36 байт) = 36 * 1000 уже имеем ~36кб.
А что если подумать о User/CharInfo?
но на самом деле, зачем же об этом заморачиваться?
Сообщений: 3,967
Тем: 90
Зарегистрирован: Nov 2010
Репутация:
15,337
KID Написал:Что-то не вяжется Да вроде все вяжется, может не так выразился. Можно создать один экземпляр пакета и отправить его всем игрокам. А можно создать несколько экземпляров одного и того же пакета, для каждого игрока. Это я про мгновенную отправку, при создании экземпляра.
KID Написал:К примеру у игрока есть несколько привязанных к нему классов, в которых есть все эти переменные, и в пакет уходит лишь этот класс, не создавая новые переменные. В ситуации с L2J, где все переменные необходимо проверять, это не всегда выгодно.
KID Написал:В случае отправки каждого нового экземпляра этого пакета (вес переменных минимум 36 байт) = 36 * 1000 уже имеем ~36кб.
А что если подумать о User/CharInfo?
но на самом деле, зачем же об этом заморачиваться? Действительно, ради такой экономии.. зачем заморачиваться  . Как я написал выше, в ситуации с L2J, безопаснее и удобнее хранить все в переменных пакета.
Сообщений: 555
Тем: 2
Зарегистрирован: Feb 2011
Репутация:
1,507
мои последние слова были пропитаны концентрированным сарказмом
для недосервера в 300-1000 онлайна такие цифры не влияют, но для серверов ступенькой выше - требования вырастают геометрически
Сообщений: 4,692
Тем: 85
Зарегистрирован: Mar 2009
Репутация:
23,364
KID Написал:Gaikotsu, он далек от "кошерности". классы пакетов, как и запросов в л2 сфере одноразовые, создание 7 новых переменных для отправки такого простого пакета - дорого.
пакет не должен ничего создавать, в том числе и никакой логики в его конструкторе.
идеал - в него вошли данные и ушли в сокет
А потом раз и проснулся? Да? :redlol:
Про логику согласен, но вот про "пакет не должен ничего создавать" можно поподробнее, а лучше в примерах, если можно.
Fortuna - non penis, in manus non recipe.
|