Развитие агатиона Валакаса

Gaikotsu

яжпрограммист
Легенда
Легенда Истоков
Победитель в номинации 2024
Победитель в номинации 2023
Победитель в номинации 2022
Победитель в номинации 2021
Участник Новогоднего Фонда 2021
Эксперт
Знаток
Просветитель
Магистр реакций
Знаток письма
Куратор Данных
Медаль Благодарности
Старожил II степени
Старожил I степени
Победитель в номинации 2020
Победитель в номинации 2019
Клиент разработчик
Преподаватель
За веру и верность форуму
Победитель в номинации 2018
Медаль за активность на Форуме
За заслуги перед форумом
Web разработчик
Разработчик
За знание датапака
За знание ядра
Сообщения
2 051
Розыгрыши
0
Решения
34
Репутация
6 401
Реакции
3 203
Баллы
2 363
Последнее редактирование модератором:
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Даже и забыл что есть такая фишка у агатионов))
 
Странно, там же как по другому он апается. Там давался предмет какой-то, с помощью которого вызывался нпц, отправляющий в инстанс, где и становился доступен скилл для "апа"
 
я в курсе, видел что в скилле есть проверка на территорию, но не стал уже это делать - упростил народу жизнь с прокачкой - и так пытаться можно только раз в сутки и все такое. в принципе может быть ща и запилю.
там недолго если что. для тех кто тоже захочет допилить: инстанс - 204, нпс - 5007, итем для призыва, так же требующийся для входа в инстанс - 22401 (при призыве не забирается - забирается при входе/выходе из инстанса, если есть агатион прокачаный до упора), внутри инстанса стоят нпс 5008 и куча 5009 (проверяется наличие 5008, а 5009 это просто декорации)


 
Последнее редактирование:
собственно внутренности инстанса - теперь скилл кастуется только внутри него и только в пределах 1000 единиц от нпс 5008.
как это все дописать думаю разберетесь - все данные по сути я привел уже выше.

839f1a17a8e79011e5d8619f3df29780.webp
 
Последнее редактирование модератором:
собственно внутренности инстанса - теперь скилл кастуется только внутри него и только в пределах 1000 единиц от нпс 5008.
как это все дописать думаю разберетесь - все данные по сути я привел уже выше.

Посмотреть вложение 7143
А координаты для нпц внутри инстанса можно?
 
Я кстати в итоге отказался от костыля в виде хэндлера для скилла превращения и сделал как и в офф скриптах просто обмен через эффект i_restoration_random
XML:
    <!-- Начало Превращения / Start of Evolution -->
    <skill id="21274" levels="6" name="Начало Превращения" pts_name="[s_g_change_valakas1]">
        <!--
            [01] Начало Превращения в Агатиона - ур. 2. Время перезарядки: 24 ч.
            [02] Начало Превращения в Агатиона - ур. 3. Время перезарядки: 24 ч.
            [03] Начало Превращения в Агатиона - ур. 4. Время перезарядки: 24 ч.
            [04] Начало Превращения в Агатиона - ур. 5. Время перезарядки: 24 ч.
            [05] Начало Превращения в Агатиона - ур. 6. Время перезарядки: 24 ч.
            [06] Начало Превращения в Агатиона - ур. 7. Время перезарядки: 24 ч.
        -->
        <stat name="icon" value="BranchSys3.icon.skill22419" />
        <stat name="magic_type" value="special" />
        <stat name="magic_level" value="1" />
        <stat name="hit_time" value="2" />
        <stat name="reuse_delay" value="86400" />
        <stat name="reuse_delay_lock" value="true" />
        <stat name="reuse_delay_type" value="shared" />
        <stat name="target" value="self" />
        <stat name="skill_type" value="effect" />
        <stat name="operate_type" value="A1" />
        <stat name="next_action" value="none" />
        <stat name="consume_item" value="{22394 22395 22396 22397 22398 22399};1" />
        <cond msg_id="113">
            <player has_near_npc="5008;1000;300;true" />
        </cond>
        <for>
            <effect name="i_restoration_random" params="22394,1,40;22395,1,60" levels="1" />
            <effect name="i_restoration_random" params="22395,1,60;22396,1,40" levels="2" />
            <effect name="i_restoration_random" params="22396,1,40;22397,1,60" levels="3" />
            <effect name="i_restoration_random" params="22397,1,70;22398,1,30" levels="4" />
            <effect name="i_restoration_random" params="22398,1,40;22399,1,60" levels="5" />
            <effect name="i_restoration_random" params="22399,1,80;22400,1,20" levels="6" />
        </for>
    </skill>
 
Я кстати в итоге отказался от костыля в виде хэндлера для скилла превращения и сделал как и в офф скриптах просто обмен через эффект i_restoration_random
XML:
    <!-- Начало Превращения / Start of Evolution -->
    <skill id="21274" levels="6" name="Начало Превращения" pts_name="[s_g_change_valakas1]">
        <!--
            [01] Начало Превращения в Агатиона - ур. 2. Время перезарядки: 24 ч.
            [02] Начало Превращения в Агатиона - ур. 3. Время перезарядки: 24 ч.
            [03] Начало Превращения в Агатиона - ур. 4. Время перезарядки: 24 ч.
            [04] Начало Превращения в Агатиона - ур. 5. Время перезарядки: 24 ч.
            [05] Начало Превращения в Агатиона - ур. 6. Время перезарядки: 24 ч.
            [06] Начало Превращения в Агатиона - ур. 7. Время перезарядки: 24 ч.
        -->
        <stat name="icon" value="BranchSys3.icon.skill22419" />
        <stat name="magic_type" value="special" />
        <stat name="magic_level" value="1" />
        <stat name="hit_time" value="2" />
        <stat name="reuse_delay" value="86400" />
        <stat name="reuse_delay_lock" value="true" />
        <stat name="reuse_delay_type" value="shared" />
        <stat name="target" value="self" />
        <stat name="skill_type" value="effect" />
        <stat name="operate_type" value="A1" />
        <stat name="next_action" value="none" />
        <stat name="consume_item" value="{22394 22395 22396 22397 22398 22399};1" />
        <cond msg_id="113">
            <player has_near_npc="5008;1000;300;true" />
        </cond>
        <for>
            <effect name="i_restoration_random" params="22394,1,40;22395,1,60" levels="1" />
            <effect name="i_restoration_random" params="22395,1,60;22396,1,40" levels="2" />
            <effect name="i_restoration_random" params="22396,1,40;22397,1,60" levels="3" />
            <effect name="i_restoration_random" params="22397,1,70;22398,1,30" levels="4" />
            <effect name="i_restoration_random" params="22398,1,40;22399,1,60" levels="5" />
            <effect name="i_restoration_random" params="22399,1,80;22400,1,20" levels="6" />
        </for>
    </skill>
Ну там у Мобусаподобных не всё так гладко, всё равно придётся костыль вставлять в хендлере так как

<stat name="consume_item" value="{22394 22395 22396 22397 22398 22399};1" />

тупо но забирает итем который одет, пришлось дописать в эффекте UnsummonAgathion типо такого
Java:
                final Item itemToDisarm = player.getInventory().unEquipItemInBodySlot(ItemTemplate.SLOT_L_BRACELET);
                final int id = itemToDisarm.getId();
                if ((id >= 22394) && (id < 22400))
                {
                    player.destroyItemByItemId(null, id, 1, player, true);
                    player.sendItemList();
                }
 
Ну там у Мобусаподобных не всё так гладко, всё равно придётся костыль вставлять в хендлере так как

<stat name="consume_item" value="{22394 22395 22396 22397 22398 22399};1" />

тупо но забирает итем который одет, пришлось дописать в эффекте UnsummonAgathion типо такого
Java:
                final Item itemToDisarm = player.getInventory().unEquipItemInBodySlot(ItemTemplate.SLOT_L_BRACELET);
                final int id = itemToDisarm.getId();
                if ((id >= 22394) && (id < 22400))
                {
                    player.destroyItemByItemId(null, id, 1, player, true);
                    player.sendItemList();
                }
Зачем костылять? тут же будто бы обычный скил, который выдает рандомные итемы для каждого уровня. Откуда у тебя взялась необхимость в удалении итемов при снятии печати с агатиона? Достаточно consumeItemId для каждого уровня расписать в скиле
 
Зачем костылять? тут же будто бы обычный скил, который выдает рандомные итемы для каждого уровня. Откуда у тебя взялась необхимость в удалении итемов при снятии печати с агатиона? Достаточно consumeItemId для каждого уровня расписать в скиле
К сожалению итем не удаляется если он надет, в конкретном случае левый браслет. Если к примеру его снять то тогда невозможно юзать сам скил, так что после рандома у вас окажется 2 итема агатиона.

В скиле у Мобиуса это не сработал

XML:
        <itemConsumeCount>1</itemConsumeCount>
        <itemConsumeId>
            <value level="1">22394</value>
            <value level="2">22395</value>
            <value level="3">22396</value>
            <value level="4">22397</value>
            <value level="5">22398</value>
            <value level="6">22399</value>
        </itemConsumeId>

Мой код принудительно при юзе скила, отзывает агатион, снимеет с вас этот браслет - после выдачи рандомного итема, старый удаляет, больше в голову ничего не пришло :rolleyes: :)
 
Будто было бы наиболее явным решением удалять одетые итемы. Я даже не помню там таких проверок, но ладно. То что удаляемые итемы должны быть какими то «соответствующими» это неявно максимально. Убрав эту проверку, скил можно реализовать наиболее логичным образом
 
Назад
Сверху