prime shop jts 2018

Dovonext

Lineage 2
Участник
Сообщения
129
Розыгрыши
0
Решения
1
Репутация
66
Реакции
18
Баллы
183
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
JTS 2018
Всем привет, подскажите пожалуйста касаемо "prime shop" - где поменять итем покупки ? Я так понимаю это очки. Возможно сделать просто итем 4037 ? Где рыть это ?
 

Всем привет, подскажите пожалуйста касаемо "prime shop" - где поменять итем покупки ? Я так понимаю это очки. Возможно сделать просто итем 4037 ? Где рыть это ?
при покупке проверяется необходимое кол-во средств
org/mmocore/gameserver/network/lineage/clientpackets/PremiumShop/RequestExBR_BuyProduct.java
Java:
        if (totalPoints > player.getPremiumAccountComponent().getPremiumPoints()) {
            player.sendPacket(new ExBR_BuyProduct(ExBR_BuyProduct.RESULT_NOT_ENOUGH_POINTS));
            return;
        }

которые загружаются при входе в мир
org/mmocore/gameserver/object/Player.java
Java:
    public static Player restore(final int objectId)
    {
        ...
        player.getPremiumAccountComponent() // org/mmocore/gameserver/object/components/player/premium/PremiumAccountComponent.java
              .setPcBangPoints(rset.getInt("pcBangPoints"));

переписать придется скажем так немало чего

p.s. - дополню. Не уверен что все таки .setPcBangPoints(rset.getInt("pcBangPoints")); играет какую-то роль при покупке, но в теории все можно сделать через пакет RequestExBR_BuyProduct. То есть вместо проверки totalPoints > player.getPremiumAccountComponent().getPremiumPoints() проверять необходимое количество предметов из инвентаря и вместо отправки пакета RequestPlayerGamePointDecrease, удалять из инвентаря нужное кол-ва предметов за оплату и выдавать купленный предмет
 
Последнее редактирование:
  • Мне нравится
Реакции: Dovonext

    Dovonext

    Баллов: 0
    Спасибо за ответ. Теперь хоть буду знать от куда берет он эти очки. Т.к в ивенте килл босс 1000 начисляет.
А допустим сервис обмена итема на premiumPoints возможен ?
 
Dovonext, Ну или сервис по обмену предметов на очки
примерно так будет выглядеть процесс обмена

Java:
        int itemId = 4037; // айди предмета для обмена
        long count = 10; // кол-во обмениваемых предметов
        long points = 1000; // кол-во баллов за один предмет

        if ( player.getInventory().getCountOf( itemId ) < count )
        {
            // кол-во предметов в инвенторе меньше чем мы указали на обмен
            return;
        }

        if ( player.getInventory().removeItemByItemId(itemId, count) != null )
        {
            player.getPremiumAccountComponent().setPremiumPoints(points * count);
            // или так         
            //long currentPoints = player.getPremiumAccountComponent().getPremiumPoints();
            //player.getPremiumAccountComponent().setPremiumPoints( currentPoints + ( points * count ) );
        }
 
Последнее редактирование:
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Dovonext, Ну или сервис по обмену предметов на очки
примерно так будет выглядеть процесс обмена

Java:
        int itemId = 4037; // айди предмета для обмена
        long count = 10; // кол-во обмениваемых предметов
        long points = 1000; // кол-во баллов за один предмет

        if ( player.getInventory().getCountOf( itemId ) < count )
        {
            // кол-во предметов в инвенторе меньше чем мы указали на обмен
            return;
        }

        if ( player.getInventory().removeItemByItemId(itemId, count) != null )
        {
            player.getPremiumAccountComponent().setPremiumPoints(points * count);
            // или так        
            //long currentPoints = player.getPremiumAccountComponent().getPremiumPoints();
            //player.getPremiumAccountComponent().setPremiumPoints( currentPoints + ( points * count ) );
        }
Собственно пропустили текущее количество баллов при обмене, так как при каждом обмене количество будет равно вашей формуле и не будет суммироваться , в код поинтов не глядел
 
Собственно пропустили текущее количество баллов при обмене, так как при каждом обмене количество будет равно вашей формуле и не будет суммироваться , в код поинтов не глядел
а это что?
//long currentPoints = player.getPremiumAccountComponent().getPremiumPoints();
//player.getPremiumAccountComponent().setPremiumPoints( currentPoints + ( points * count ) );
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Назад
Сверху Снизу