Показать сообщение отдельно
Непрочитано 14.04.2011, 20:59   #9
Пользователь

По умолчанию Re: Подбор дропа с нпц

Цитата:
кстати для теграка и геры будет достаточно прописать именно NON_ATTACKABLE, я так и сделал у ся на серве, и всё прекрасно работает
Вынужден признать, что не совсем достаточно .
В этом случае придётся внести изменение в метод spawnObject в SpawnEngine . Если у вас в ядре есть класс Monster и MonsterContoller.
PHP код:
            switch(objectId)
            {
                
// Gera, Tegrak
                
case 258200:
                case 
258205:
                    
npc = new Monster(iDFactory.nextId(), new MonsterController(), spawntemplate);
                    
npc.setKnownlist(new StaticObjectKnownList(npc));
                    break;

Вот весь код метода спавна с месторасположением примера описанного выше.
Весь код метода:
Свернуть ↑Развернуть ↓

Сдесь делается исключение для указанных нпс, посему этот метод не универсален. В моём посте выше, первый способ решения данной проблемы будет универсальным и позволит собирать дроп с любого враждебного неатакуемого нпс (NON_ATTACKABLE) или с любого атакуемого нпс даже если его trible является дружественным или не агро, при этом не надо будет вносить изменения в SpawnEngine.
Статы боссов:
Свернуть ↑Развернуть ↓

Либо можно в метод attackTarget который находится в PlayerController добавить сделующее :
PHP код:
        if (target instanceof Npc)
        {
            if (
getOwner().getCommonData().getRace() == Race.ASMODIANS && ((Npc)target).getNpcId() == 258205)
                return;
            if (
getOwner().getCommonData().getRace() == Race.ELYOS && ((Npc)target).getNpcId() == 258200)
                return;
        } 
Используя такой способ этих двух боссов нельзя будет атаковать даже если они ATTACKABLE (если ничего не напутал) .
Весь код:
Свернуть ↑Развернуть ↓
__________________
Дверь запили!

Последний раз редактировалось flashman; 14.04.2011 в 21:25.
flashman вне форума Ответить с цитированием
Сказали спасибо: