Festive Sweeper

  • Автор темы Автор темы accavit
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

accavit

Пляшущий с бубном
Участник
Сообщения
133
Розыгрыши
0
Решения
2
Репутация
0
Реакции
22
Баллы
220
Хроники
  1. Interlude
Исходники
Присутствуют
Сборка
Lucera 1.7
Вообщем облазил весь интернет, смотрел информацию на разных форумах, но нигде не нашел ответа на мой вопрос:
Как нормально реализовать скилл Festive Sweeper в сборке? Он есть в сборке, но не выдается автоматически гномам спойлерам, это раз. Ну даже если так, я выдал скилл гному через админку. Далее, побежал тестить скилл, а он работает криво. А именно: собирает спойл только с одного моба, а остальные рядом стоящие (даже не добитые) исчезают тоже. И без таргета не работает вообще скилл.

Вот сам скилл:

XML:
<skill id="444" levels="1" name="Festive Sweeper">
  <set name="mpConsume" val="12"/>
  <set name="skillRadius" val="85"/>
  <set name="target" val="TARGET_AREA_CORPSE_MOB"/>
  <set name="skillType" val="SWEEP"/>
  <set name="operateType" val="OP_ACTIVE"/>
  <set name="reuseDelay" val="23000"/>
  <set name="hitTime" val="500"/>
</skill>

Подскажите, пожалуйста, куда копать?
 
Решение
Нашел ответ только что. Вот что стоит прописать в скилл "Festive Sweeper", чтобы он работал как надо:

XML:
        <set name="target" val="TARGET_AURA_CORPSE_MOB" />
        <set name="skillType" val="SWEEP" />
        <set name="operateType" val="OP_ACTIVE" />
        <set name="mpConsume" val="12" />
        <set name="power" val="100" />
        <set name="hitTime" val="500" />
        <set name="reuseDelay" val="3000" />
        <set name="castRange" val="20" />
        <set name="effectRange" val="400" />
Подозреваю, что в skillType SWEEP не предусмотрен массовый сбор, там захардкорено собирать спойл только с Вашей цели, а decoy отменяет у всех в радиусе действия, потому они и пропадают. Вангую, что по хорошему стоило бы написать новый skillType MASS_SWEEP, где нужно пересмотреть захардкоренные параметры, мешающие адекватной работе скилла.
 
@Rolo, а где написать этот новый SkillType? Не могу найти где их вообще описывают...
 
@Rolo, 1626268770141.png
Со словом Type и Skill связан только вот этот файл
 
@accavit, это пакеты уже, Вам точно не туда. У меня вот здесь нужное Вам лежит: src\scripts\skills\skillhandlers, но пути однозначно будут отличаться.
Кстати, только заметил, искать стоит внутри классов, а не по их названию.
 
Вот у меня код файла Sweep.java:

Java:
package ru.catssoftware.gameserver.handler.skillhandlers;

import ru.catssoftware.gameserver.handler.ISkillHandler;
import ru.catssoftware.gameserver.model.L2Attackable;
import ru.catssoftware.gameserver.model.L2Character;
import ru.catssoftware.gameserver.model.L2ItemInstance;
import ru.catssoftware.gameserver.model.L2Skill;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.network.SystemMessageId;
import ru.catssoftware.gameserver.network.serverpackets.InventoryUpdate;
import ru.catssoftware.gameserver.network.serverpackets.ItemList;
import ru.catssoftware.gameserver.network.serverpackets.SystemMessage;
import ru.catssoftware.gameserver.templates.skills.L2SkillType;

public class Sweep implements ISkillHandler
{
    private static final L2SkillType[]    SKILL_IDS    = { L2SkillType.SWEEP };

    public void useSkill(L2Character activeChar, L2Skill skill, L2Character... targets)
    {
        if (!(activeChar instanceof L2PcInstance))
            return;

        L2PcInstance player = (L2PcInstance) activeChar;
        InventoryUpdate iu =new InventoryUpdate();
        boolean send = false;

        for (L2Character element : targets)
        {
            if (!(element instanceof L2Attackable))
                continue;

            L2Attackable target = (L2Attackable) element;

            L2Attackable.RewardItem[] items = null;
            boolean isSweeping = false;
            synchronized (target)
            {
                if (target.isSweepActive())
                {
                    items = target.takeSweep();
                    isSweeping = true;
                }
            }
            if (isSweeping)
            {
                if (items == null || items.length == 0)
                    continue;

                for (L2Attackable.RewardItem ritem : items)
                {
                    if (player.isInParty())
                        player.getParty().distributeItem(player, ritem, true, target);
                    else
                    {
                        if (player.getInventory().validateCapacityByItemId(ritem.getItemId()))
                        {
                            L2ItemInstance item = player.getInventory().addItem("Sweep", ritem.getItemId(), ritem.getCount(), player, target);
                            if (iu != null)
                                iu.addItem(item);
                            send = true;

                            SystemMessage smsg = new SystemMessage(SystemMessageId.YOU_PICKED_UP_S1_S2);
                            smsg.addNumber(ritem.getCount());
                            smsg.addItemName(item);
                            player.sendPacket(smsg);
                        }
                    }
                }
            }
            target.endDecayTask();
            if (send)
            {
                if (iu != null)
                    player.sendPacket(iu);
                else
                    player.sendPacket(new ItemList(player, false));
            }
        }
    }

    public L2SkillType[] getSkillIds()
    {
        return SKILL_IDS;
    }
}
 
Оффтоп:
Ну почему нельзя просто взять что-то более адекватное? К чему эти бессмысленные триды с просьбой о помощи по компилу, без сорков, которые в шаре кстати. Это дерьмо забросили пилить в 13м году карл. Человек либо мазахист, либо дол6аё6, я хз.
Screenshot_2.png
@accavit это лишь хлебные крошки, по сравнению с тем, с чем ты еще столкнешься, юзая это дерьмо мамонта.
 
  • Мне нравится
Реакции: Die
@Psycho, Критикуешь, предлагай что-то более подходящее для меня на первый раз ;) Я понимаю все сложности работы с этой сборкой, но я уже немало времени потратил на нее и хочется пока запустить первое "творение" (по сути копипаст готовой сборки) для общего понимания как всё устроено.
Исходники у меня есть, но они под нулевую Lucera 1.7. А я уже скачал готовую сборку игрового сервера, где были внесены изменения и дополнения. Поэтому, вряд ли многое получится поменять через исходники.
Да, я полный новичок в этом деле и поэтому, если сталкиваюсь с проблемой, которая решается только через ядро, то, скорее всего, я оставлю этот элемент так как есть. Пишу сюда на форум с надеждой на то, что в сборке, которую я использую, мой вопрос получится решить через датапак. Ну и попутно немного стараюсь вникать в работу ядра.
Исходя из всего вышесказанного прошу строго не судить моё незнание. Я учусь, практикуюсь :)
Всех люблю, целую :love:
 
@Psycho, Критикуешь, предлагай что-то более подходящее для меня на первый раз ;) Я понимаю все сложности работы с этой сборкой, но я уже немало времени потратил на нее и хочется пока запустить первое "творение" (по сути копипаст готовой сборки) для общего понимания как всё устроено.
Исходники у меня есть, но они под нулевую Lucera 1.7. А я уже скачал готовую сборку игрового сервера, где были внесены изменения и дополнения. Поэтому, вряд ли многое получится поменять через исходники.
Да, я полный новичок в этом деле и поэтому, если сталкиваюсь с проблемой, которая решается только через ядро, то, скорее всего, я оставлю этот элемент так как есть. Пишу сюда на форум с надеждой на то, что в сборке, которую я использую, мой вопрос получится решить через датапак. Ну и попутно немного стараюсь вникать в работу ядра.
Исходя из всего вышесказанного прошу строго не судить моё незнание. Я учусь, практикуюсь :)
Всех люблю, целую :love:
Да тех же акисов на худой конец возьми, их нет-нет пилят. Да и сборок на акисах в шаре полно, на любой вкус и цвет фломастеров.
 
Последнее редактирование:
Всех люблю, целую :love:
Оффтоп:
свят-свят... я вот не хочу с тобой целоваться


А если серьезно, то реально блин возми ты уже что-то более свежее из сборок, а не эту древность...
 
Нашел ответ только что. Вот что стоит прописать в скилл "Festive Sweeper", чтобы он работал как надо:

XML:
        <set name="target" val="TARGET_AURA_CORPSE_MOB" />
        <set name="skillType" val="SWEEP" />
        <set name="operateType" val="OP_ACTIVE" />
        <set name="mpConsume" val="12" />
        <set name="power" val="100" />
        <set name="hitTime" val="500" />
        <set name="reuseDelay" val="3000" />
        <set name="castRange" val="20" />
        <set name="effectRange" val="400" />
 
Решение
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу