Рейтинг темы:
  • 4 Голос(ов) - 5 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Работа над Goddess of Destruction (part 5)
Krasavella Написал:RequestRegistBeauty:

В конец runImpl() пишем:

activeChar.sendPacket(new ExResponseBeautyListPacket(activeChar, 0));

И анимация есть, и прически сразу открываются.

дак в том то и фигня...

если шлю в конце тлько это - глюк что описал выше
[SRC="java"]player.sendPacket(new ExResponseBeautyRegistReset(player, 0, 1));[/SRC]

а если шлю оба пакета - нет анимации, о чем я опять же и говорил...
[SRC="java"]player.sendPacket(new ExResponseBeautyRegistReset(player, 0, 1), new ExResponseBeautyList(player, 0));[/SRC]
Gaikotsu Написал:дак в том то и фигня...

если шлю в конце тлько это - глюк что описал выше
[SRC="java"]player.sendPacket(new ExResponseBeautyRegistReset(player, 0, 1));[/SRC]

а если шлю оба пакета - нет анимации...
[SRC="java"]player.sendPacket(new ExResponseBeautyRegistReset(player, 0, 1), new ExResponseBeautyList(player, 0));[/SRC]

У меня никаких глюков нет, и анимация есть и на прически возвращает =)

Перепроверяйте:

Код:
@Override
    protected void runImpl() throws Exception {
        Player activeChar = getClient().getActiveChar();
        if (activeChar == null)
            return;
        activeChar.sendPacket(new ExResponseBeautyRegistResetPacket(activeChar, 0));

        if (face != activeChar.getFace() && pricesFace.containsKey(face)) {
            int priceFace = pricesFace.get(face);
            if (Functions.getItemCount(activeChar, 57) < priceFace) {
                activeChar.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_ENOUGH_ADENA);
                return;
            } else {
                activeChar.setFace(face);
                Functions.removeItem(activeChar, 57, priceFace);
            }
        }

        if (pricesHairStyle.containsKey(hairstyle)) {
            int price = 0;
            if (hairstyle != activeChar.getHairStyle())
                price += pricesHairStyle.get(hairstyle);
            if (pricesHairColor.containsKey(hairstyle) &&         //если прическа с платным цветом
                    (hairstyle != activeChar.getHairStyle() ||    //и изменилась она
                    haircolor != activeChar.getHairColor()))      //или цвет
                price += pricesHairColor.get(hairstyle);

            if (Functions.getItemCount(activeChar, 57) < price) {
                activeChar.sendPacket(SystemMsg.YOU_DO_NOT_HAVE_ENOUGH_ADENA);
                return;
            } else {
                activeChar.setHairStyle(hairstyle);
                activeChar.setHairColor(haircolor);
                Functions.removeItem(activeChar, 57, price);
            }
        }

        activeChar.broadcastUserInfo(true);
        activeChar.sendPacket(new ExResponseBeautyListPacket(activeChar, 0));
    }
[Изображение: Z.png][Изображение: S.gif]
хм, странно - сейчас снова попробовал оба пакета слать - уже никаких глюков с потерей анимации нет.
что такое было раньше - непонятно...

Добавлено через 7 минут
Krasavella Написал:...
да у меня примерно так же все, только более детально и более близко к официальному виду проработано Smile
[SRC="java"]package l2p.gameserver.network.clientpackets;

import l2p.gameserver.Config;
import l2p.gameserver.data.xml.holder.BeautyShopHolder;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.beautyshop.BeautyShopSet;
import l2p.gameserver.network.serverpackets.ExResponseBeautyList;
import l2p.gameserver.network.serverpackets.ExResponseBeautyRegistReset;

public class RequestRegistBeauty extends L2GameClientPacket
{
private int _hairStyle, _face, _hairColor;

@Override
protected void readImpl()
{
_hairStyle = readD();
_face = readD();
_hairColor = readD();
}

@Override
protected void runImpl()
{
Player player = getClient().getActiveChar();

if (player == null)
return;

long reqAdena = 0;
long reqCoins = 0;
boolean change = false;
BeautyShopSet set = BeautyShopHolder.getInstance().getSet(player);

if (set == null)
{
player.sendPacket(new ExResponseBeautyRegistReset(player, 0, 0), new ExResponseBeautyList(player, 0));
return;
}

if (_hairStyle > 0 && _hairColor > 0 && (_hairStyle != player.getNewHairStyle() || _hairColor != player.getNewHairColor()))
{
if (set.getHairStyle(_hairStyle) == null || set.getHairStyle(_hairStyle).getHairColor(_hairColor) == null)
{
player.sendPacket(new ExResponseBeautyRegistReset(player, 0, 0), new ExResponseBeautyList(player, 0));
return;
}

if (_hairStyle != player.getNewHairStyle())
{
reqAdena += set.getHairStyle(_hairStyle).getAdena() + set.getHairStyle(_hairStyle).getHairColor(_hairColor).getAdena();
reqCoins += set.getHairStyle(_hairStyle).getCoins() + set.getHairStyle(_hairStyle).getHairColor(_hairColor).getCoins();
}
else
{
reqAdena += set.getHairStyle(_hairStyle).getHairColor(_hairColor).getAdena();
reqCoins += set.getHairStyle(_hairStyle).getHairColor(_hairColor).getCoins();
}

change = true;
}

if (_face > 0 && _face != player.getNewFace())
{
if (set.getFace(_face) == null)
{
player.sendPacket(new ExResponseBeautyRegistReset(player, 0, 0), new ExResponseBeautyList(player, 0));
return;
}

reqAdena += set.getFace(_face).getAdena();
reqCoins += set.getFace(_face).getCoins();
change = true;
}

if (!change || player.getItemCount(57) < reqAdena || player.getItemCount(Config.BS_COIN_ITEM_ID) < reqCoins)
{
player.sendPacket(new ExResponseBeautyRegistReset(player, 0, 0), new ExResponseBeautyList(player, 0));
return;
}

if (reqAdena > 0)
player.getInventory().destroyItemByItemId(57, reqAdena);

if (reqCoins > 0)
player.getInventory().destroyItemByItemId(Config.BS_COIN_ITEM_ID, reqCoins);

if (_hairStyle > 0)
{
player.setNewHairStyle(_hairStyle);
player.setNewHairColor(_hairColor);
}

if (_face > 0)
player.setNewFace(_face);

player.sendPacket(new ExResponseBeautyRegistReset(player, 0, 1), new ExResponseBeautyList(player, 0));
}
}[/SRC]

Добавлено через 10 минут
кстати вижу у тебя потенциальную опечатку в строке
[SRC="java"]price += pricesHairColor.get(hairstyle);[/SRC]
Gaikotsu Написал:хм, странно - сейчас снова попробовал оба пакета слать - уже никаких глюков с потерей анимации нет.
что такое было раньше - непонятно...

Не в той последовательности отправляли.

Gaikotsu Написал:кстати вижу у тебя потенциальную опечатку в строке
[SRC="java"]price += pricesHairColor.get(hairstyle);[/SRC]

Прайс на цвета берется в зависимости от прически.

Код:
private static Map<Integer, Integer> pricesHairColor = new HashMap<Integer, Integer>() {{
        put(10011, 3000000);
        put(10013, 3000000);
        put(10003, 3000000);
        put(10004, 3000000);
    }};
[Изображение: Z.png][Изображение: S.gif]
Krasavella Написал:Не в той последовательности отправляли.



Прайс на цвета берется в зависимости от прически.

Код:
private static Map<Integer, Integer> pricesHairColor = new HashMap<Integer, Integer>() {{
        put(10011, 3000000);
        put(10013, 3000000);
        put(10003, 3000000);
        put(10004, 3000000);
    }};
а ничего что там вобще-то цвета платные только у причесок 10003 и 10004, да еще и к тому же за адену только первый цвет, а остальные 9 за итем 36308?
Gaikotsu Написал:а ничего что там вобще-то цвета платные только у причесок 10003 и 10004, да еще и к тому же за адену только первый цвет, а остальные 9 за итем 36308?

У меня Epeisodion, все цвета за адену. Lindvior не занимаюсь =)
[Изображение: Z.png][Изображение: S.gif]
не мне конечно советовать, но кстати надо быть гибче, не заниматься хардкодом в виде жесткого задавания цен и т.п. прямо в ядре серва Smile
я дак для всех возможных вариаций завел отдельную хмлку, из которой серв и загружает все нужное при старте. так что если что придется в будущем менять в тех же ценах - не придется ради этого лезть в ядро и менять захардкоденые значения Smile
лучше уж потратить при первоначальной реализации чуть больше времени, чтобы потом не возвращаться больше к этому делу.
OFF
[Изображение: Z.png][Изображение: S.gif]
Уважаемые, ид нпса не подкинете, который для бьюти-шопа?
Искал в Npcname-ru, "Вивиан", но что-то не то.
Лавианроз же
[Изображение: Z.png][Изображение: S.gif]


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Работа над Goddess of Destruction (part 7) n3k0nation 459 174,257 03-21-2022, 04:21 PM
Последний пост: TieLay
  Помогите с Сервером L2Dream версии 439 для Lineage 2 Gracia Part 2 CAHTEX 4 3,379 10-01-2021, 02:40 PM
Последний пост: tenor
  Работа с камерой и Энтер чат FriendlyGhost 0 1,301 04-29-2018, 06:07 AM
Последний пост: FriendlyGhost
  Goddess of Destruction ( новая ветка от NcSoft ) Bacek 180 58,996 08-22-2017, 12:32 PM
Последний пост: BadStealth
  EmuRT Gracia part 2 ? knaif 3 1,622 02-08-2016, 01:19 PM
Последний пост: knaif
  Gracia Part 1 от l2emu исходы TFH 6 1,964 10-05-2015, 07:53 PM
Последний пост: G1ta0
  Ищу исходы L2-Dream gracia part 2 knaif 1 1,385 10-05-2015, 07:51 PM
Последний пост: G1ta0
  Оплачиваемая работа Grek1993 1 1,349 08-01-2015, 11:29 AM
Последний пост: ztaecz
  Работа над Goddess of Destruction (part 6) Ashe 1,274 471,559 07-11-2015, 08:00 PM
Последний пост: n3k0nation
  Работа с мультиселлом Evencelance 11 2,446 09-19-2014, 12:43 PM
Последний пост: Evencelance

Перейти к форуму:


Пользователи, просматривающие эту тему: 5 Гость(ей)