PrizraKZN

ЗаМШуТ
Проверенный
Неукротимое пламя
Знаток письма
Стратег Данных
Куратор Данных
За заслуги перед форумом
За веру и верность форуму
Сообщения
851
Розыгрыши
0
Решения
1
Репутация
1 664
Реакции
855
Баллы
1 678
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
Lost_world
Всем привет!

Суд проблем
как делать к примеру
При смерти нпс он кричит чат и дает дебафф чару

Если вам не сложно накидаите пример а дальше я сам
Спасибо всем
 
Далеко ходить не надо, из квеста на стайдера можно взять:

Код:
    public String onKill (L2NpcInstance npc, L2PcInstance killer, boolean isPet)
    {
        int npcId = npc.getNpcId();
        if (contains(mobs, npcId))
        {
            for (int i = 0; i < 20; i++)
            {
                L2Attackable newNpc = (L2Attackable) addSpawn(27189, npc.getX(), npc.getY(), npc.getZ(), 0, false, 30000);
                L2Character originalKiller = isPet ? killer.getPet() : killer;
                newNpc.setRunning();
                newNpc.addDamageHate(originalKiller, 0, 999);
                newNpc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, originalKiller);
                if (Rnd.get(1, 2) == 1)
                {
                    L2Skill skill = SkillTable.getInstance().getInfo(4243, 1);
                    if (skill != null && originalKiller != null)
                        skill.getEffects(newNpc, originalKiller);
                }
            }
        }
        return super.onKill(npc, killer, isPet);
    }

Единственное, здесь есть рандом, но думаю разберетесь как убрать.

p.s. ПРИМЕР НЕ ПОД ЛОСТВОРЛД, но думаю структура такая же
 
Всем привет!

Суд проблем
как делать к примеру
При смерти нпс он кричит чат и дает дебафф чару

Если вам не сложно накидаите пример а дальше я сам
Спасибо всем

Переопределить onEvtDead(final Creature killer) в AI Npc, туда вкорячить баф который применяется к killer и сообщение, например, через ChatUtils (примеры можно найти в других AI).
 
спасибо за ответ
Код:
      final int chance = getRandom(100);
        if (npc.isDead())
        {
            if (!npc.isCastingNow() && (chance <= 20))
            {
                npc.setTarget(player);
                                npc.doCast(SkillHolder.getInstance().getSkillEntry(test_skill[0], getRandom(test_skill_level.length)), player, true);
              
            }
                    
        }
        else if ((npc.isDead()) && (chance > 90))
        {
                        Functions.npcSay(npc, text[getRandom(1)], ChatType.ALL, 5000);
        }
проблема в том что при смерти не то не другое не срабатывает
 
Все всем спасибо за помощь данный вопрос решено
 
через AI таки сделал?
нет не через ай у меня отдельный скрипт деланно чтобы каждый раз не прописывать в дата-паке в нпс а просто скрипт где просто указал какой ид нпс что в этом духе))
 
спасибо за ответ
Код:
      final int chance = getRandom(100);
        if (npc.isDead())
        {
            if (!npc.isCastingNow() && (chance <= 20))
            {
                npc.setTarget(player);
                                npc.doCast(SkillHolder.getInstance().getSkillEntry(test_skill[0], getRandom(test_skill_level.length)), player, true);
             
            }
                   
        }
        else if ((npc.isDead()) && (chance > 90))
        {
                        Functions.npcSay(npc, text[getRandom(1)], ChatType.ALL, 5000);
        }
проблема в том что при смерти не то не другое не срабатывает

Все ок срабатывает если не вызывать дефолтный метод суперкласса до выполнения кода наложения бафа и ора в чат. Можно просто заэкстендить AI (Fighter, Mystic etc) и прописать в датапаке нужный АИ соответствующим мобам без лишних костылей.
 
Все ок срабатывает если не вызывать дефолтный метод суперкласса до выполнения кода наложения бафа и ора в чат. Можно просто заэкстендить AI (Fighter, Mystic etc) и прописать в датапаке нужный АИ соответствующим мобам без лишних костылей.
том и проблема у меня было что моб при смерти не накладывает дебафф(а учитовая что дебафф радномный 4 уровня) только кричал и все
пришлост по другому переделать его
что то типо того
Код:
    List<Creature> around = World.getAroundCharacters(npc, 600, 300);
        if(around.isEmpty())
        {
            return;
        }
        final int chance = Rnd.get(100);
        if (npc.getNpcId() == ID_NPC)
        {           
                    if (!npc.isCastingNow() && (chance <= 20))
            {                               
                            for(Creature cha : around)       
                            {                                                     
                                if(cha.isPlayer())                                       
                                {               
                                    int rnd = Rnd.get(SKILLS.length);               
                                    Skill skill = SkillHolder.getInstance().getSkill(SKILLS[rnd][0], SKILLS[rnd][1]);               
                                    if(skill != null)               
                                    {                   
                                        skill.getEffects(cha, cha);               
                                    }                                 
                                }             
                            }               
            } 
 
                  Functions.npcSay(npc, TEXT[Rnd.get(0, TEXT.length - 1)], ChatType.ALL, 5000);
        }
и кричит в чат и дебафф кидает рандомный на чара при смерти
 
Назад
Сверху Снизу