Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
8 Focus у гладиатора на ИТ
#1
Interlude
L2jTeon

Доброго времени стуок.

Возник вопрос, который скорее всего касается клиента игры, но все же я не уверен точно.

скрин

Как вы можете видеть, на чаре есть 8 фокусов, однако на 8-ой зарядке, вместо: Ваша сила повысила свой уровень до 8, выдается другое сообщение которое говорит о том, что фокусации достигли предела...

Я заглядывал в клиент, но там все впорядке, я смотрел при каком условии выдается данное сообщение, но там тоже все впорядке:

Код:
    public synchronized void increaseCharges(int count, int max)
    {
        if (_charges.get() >= max)
        {
            sendPacket(SystemMessageId.FORCE_MAXLEVEL_REACHED);
            return;
        }
        
        // if no charges - start clear task
        if (_charges.get() == 0)
            restartChargeTask();
        
        if (_charges.addAndGet(count) >= max)
        {
            _charges.set(max);
            sendPacket(SystemMessageId.FORCE_MAXLEVEL_REACHED);
        }
        else
            sendPacket(SystemMessage.getSystemMessage(SystemMessageId.FORCE_INCREASED_TO_S1).addNumber(_charges.get()));
        
        sendPacket(new EtcStatusUpdate(this));
    }

значение max он определяет из skills.getMaxCharges, которое в свою очередь получает значение из .xml файла с самим скилом:
<set name="maxCharges" val="8" />

Вопрос: Что мои кривые руки не так сделали? Ткните носом в мою какашку. Спасибо!

#############################################################

Тему можно закрывать, я оказался лютым раком.

[Изображение: рак_и_мышь.jpg]
Ответ
#2
finfan Написал:Interlude
L2jTeon

Доброго времени стуок.

Возник вопрос, который скорее всего касается клиента игры, но все же я не уверен точно.

скрин

Как вы можете видеть, на чаре есть 8 фокусов, однако на 8-ой зарядке, вместо: Ваша сила повысила свой уровень до 8, выдается другое сообщение которое говорит о том, что фокусации достигли предела...

Я заглядывал в клиент, но там все впорядке, я смотрел при каком условии выдается данное сообщение, но там тоже все впорядке:

Код:
    public synchronized void increaseCharges(int count, int max)
    {
        if (_charges.get() >= max)
        {
            sendPacket(SystemMessageId.FORCE_MAXLEVEL_REACHED);
            return;
        }
        
        // if no charges - start clear task
        if (_charges.get() == 0)
            restartChargeTask();
        
        if (_charges.addAndGet(count) >= max)
        {
            _charges.set(max);
            sendPacket(SystemMessageId.FORCE_MAXLEVEL_REACHED);
        }
        else
            sendPacket(SystemMessage.getSystemMessage(SystemMessageId.FORCE_INCREASED_TO_S1).addNumber(_charges.get()));
        
        sendPacket(new EtcStatusUpdate(this));
    }

значение max он определяет из skills.getMaxCharges, которое в свою очередь получает значение из .xml файла с самим скилом:
<set name="maxCharges" val="8" />

Вопрос: Что мои кривые руки не так сделали? Ткните носом в мою какашку. Спасибо!

#############################################################

Тему можно закрывать, я оказался лютым раком.

[Изображение: рак_и_мышь.jpg]

зачем сразу в ядро лезть, в клиенте просто перепишите строчку с сообщением как Вам удобно и всё
Улыбаемся и машем:bye:
Ответ
#3
Предположим, что max = 8 и _charges = 7.
Код:
if (_charges.get() >= max)
        {
            sendPacket(SystemMessageId.FORCE_MAXLEVEL_REACHED);
            return;
        }
ок, => Эта проверка вообще не имеет смысла:
Код:
if (_charges.addAndGet(count) >= max)
        {
            _charges.set(max);
            sendPacket(SystemMessageId.FORCE_MAXLEVEL_REACHED);
        }
конечно же в том контексте, в котором Вы понимаете это сообщение.
Данное сообщение также означает, что игрок достиг максимального уровня зарядки, а не превысил его. То есть, это просто информационное сообщение, а не сообщение, о том что зарядиться больше нельзя. Если понимать его так, то с кодом все ок.

Если Вы хотите, чтобы показывало "Ваш уровень зарядки достиг 8 уровня.", то сделайте строгое неравенство:
Код:
if (_charges.addAndGet(count) > max)
Но это будет бред, т.к. в этот участок когда ядро вообще никогда не попадет из-за проверки выше по коду.

По сути, все у Вас хорошо и менять ничего вообще не нужно, зря беспокоитесь.
// aka Deft
Ответ
#4
ребята чтоб не создавать новую тему.. хочу создать скил но пока не понял как сделать то что я хочу.. нужно чтобы этот скил регенил мп по 15 % за тик от его общего мп...не могу значения выставить правельные, кто подскажет нужные значения?
Ответ
#5
Saintly Написал:нужно чтобы этот скил регенил мп по 15 % за тик от его общего мп...не могу значения выставить правельные, кто подскажет нужные значения?

В % <effect count="1" name="ManaHealPercent" time="0" val="15" />

тик - что это?
[Изображение: Z.png][Изображение: S.gif]
Ответ
#6
Krasavella Написал:В % <effect count="1" name="ManaHealPercent" time="0" val="15" />

тик - что это?
тик я имел ввиду time его по стандарту выставлю 3 тоесть чтоб раз в 3 секунды )) спс за подсказку )

просто он у меня будет активным скилом как акурэси к примеру...
Ответ
#7
Saintly Написал:тик я имел ввиду time чтоб раз в 3 секунды ))

<skill id="90001" levels="1" name="Mana Potion">
<set name="magicType" val="SPECIAL" />
<set name="icon" val="icon.etc_reagent_blue_i00" />
<set name="power" val="3" />
<set name="magicLevel" val="1" />
<set name="itemConsumeId" val="728" />
<set name="itemConsumeCount" val="1" />
<set name="isHandler" val="true" />
<set name="target" val="TARGET_SELF" />
<set name="skillType" val="HOT" />
<set name="operateType" val="OP_ACTIVE" />
<set name="altUse" val="true" />
<for>
<effect count="1" name="ManaHealPercent" time="3" val="15" />
</for>
</skill>
[Изображение: Z.png][Изображение: S.gif]
Ответ
#8
<table name="#ManaHealPercent"> 15 </table>
<effect count="1" name="ManaHealOverTime" time="3" noicon="1" val="#ManaHealPercent"/>

а не так случайно будет если он будет хилять мп раз в 3 сек?
Ответ
#9
Saintly Написал:тик я имел ввиду time его по стандарту выставлю 3 тоесть чтоб раз в 3 секунды )) спс за подсказку )

Я хз какие хроинки у вас, но в ИТ такое сделать можно, если создать отдельный стат прибавляющий МП реген (первое что пришло в голову)
например за тик овтечает стат прикрепляемый к эффекту:

<effect name="Buff" time="600" val="0">
<mul order="0x30" stat="regMp" val="2.0"/>
</effect>

сейчас мы увеличили регенерацию МП чара на 100% но не от общего кол-ва МП чара, а от его current регена МП.

чтобы всунуть 15% регена от макс МП можно сделать как описанно выше, но тогда нужно будет добавить расчитать все по времени.

Например если фокусации глада висят 10 минут то эффект будет выглядить примерно так:

<effect count="200" name="ManaHealPercent" time"3" val="15"/>

Количество тиков
интервал между тиками
кол-во отрегениваемой маны

Есть второй вариант, если для вас принципиально, чтобы мп регенилось по тикам установленным в игре, а не по эффекту, тогда нужно будет скорее всего создат ьсвой стат, который потом может ещё и пригодится, соответственно смотреться это будет примерно так:

<effect name="Buff" time="600" val="0">
<add order="0x40" stat="regMpPercent" val="15"/>
</effect>

Разницы по сути нет.
Ответ
#10
finfan, а если я его хочу сделать активным то надо поставить effect count="-1" тоесть бесконечно?

Krasavella, спс но я хочу без необходимых материалов, хотел как альтернативу сделать активный скил для регена мп
Ответ


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


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