La2Bash 87 Опубликовано 2 февраля, 2013 Здравствуйте еще раз. Тестим сервер, пытаемся взять маляру - ничего не получается. Сталкивался ли кто нибудь с этой проблемой? Шанс поставил 70%. Код вроде нормальный. Вот HotSprings.java package com.l2jfrozen.gameserver.ai.special; import com.l2jfrozen.Config; import com.l2jfrozen.gameserver.datatables.SkillTable; import com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance; import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance; import com.l2jfrozen.gameserver.model.quest.Quest; import com.l2jfrozen.util.random.Rnd; /** * Hot Spring Disease AI */ public class HotSprings extends Quest implements Runnable { //NPCs Implementation static final int[] malaria_mobs = { 21314, 21316, 21317, 21319, 21321, 21322 }; // Monsters which cast Hot Spring Malaria (4554) static final int[] flu_mobs = { 21317, 21322 }; // Monsters which cast Hot Springs Flu (4553) static final int[] cholera_mobs = { 21316, 21319 }; // Monsters which cast Hot Springs Cholera (4552) static final int[] rheumatism_mobs = { 21314, 21321 }; // Monsters which cast Hot Springs Rheumatism (4551) //Skills Implementation private static final int MALARIA_CHANCE = Config.MALARIA_CHANCE; private static final int FLU_CHANCE = Config.FLU_CHANCE; private static final int CHOLERA_CHANCE = Config.CHOLERA_CHANCE; private static final int RHEUMATISM_CHANCE = Config.RHEUMATISM_CHANCE; // Skills id private static final int MALARIA = 4554; private static final int FLU = 4553; private static final int CHOLERA = 4552; private static final int RHEUMATISM = 4551; public HotSprings(int questId, String name, String descr) { super(questId, name, descr); registerMobs(malaria_mobs); registerMobs(flu_mobs); registerMobs(cholera_mobs); registerMobs(rheumatism_mobs); } public String onAttack(L2NpcInstance npc, L2PcInstance attacker, int damage, boolean isPet) { if (contains(malaria_mobs, npc.getNpcId())) { if (attacker.getFirstEffect(MALARIA) != null) { int malaria_level = attacker.getFirstEffect(MALARIA).getLevel(); if (malaria_level == 1 && Rnd.get(100) < (MALARIA_CHANCE - malaria_level)) { SkillTable.getInstance().getInfo(MALARIA,malaria_level + 1).getEffects(attacker,attacker); } if (malaria_level == 2 && Rnd.get(100) < (MALARIA_CHANCE - malaria_level)) { SkillTable.getInstance().getInfo(MALARIA,malaria_level + 1).getEffects(attacker,attacker); } if (malaria_level == 3 && Rnd.get(100) < (MALARIA_CHANCE - malaria_level)) { SkillTable.getInstance().getInfo(MALARIA,malaria_level + 1).getEffects(attacker,attacker); } if (malaria_level == 4 && Rnd.get(100) < (MALARIA_CHANCE - malaria_level)) { SkillTable.getInstance().getInfo(MALARIA,malaria_level + 1).getEffects(attacker,attacker); } if (malaria_level == 5 && Rnd.get(100) < (MALARIA_CHANCE - malaria_level)) { SkillTable.getInstance().getInfo(MALARIA,malaria_level + 1).getEffects(attacker,attacker); } if (malaria_level == 6 && Rnd.get(100) < (MALARIA_CHANCE - malaria_level)) { SkillTable.getInstance().getInfo(MALARIA,malaria_level + 1).getEffects(attacker,attacker); } if (malaria_level == 7 && Rnd.get(100) < (MALARIA_CHANCE - malaria_level)) { SkillTable.getInstance().getInfo(MALARIA,malaria_level + 1).getEffects(attacker,attacker); } if (malaria_level == 8 && Rnd.get(100) < (MALARIA_CHANCE - malaria_level)) { SkillTable.getInstance().getInfo(MALARIA,malaria_level + 1).getEffects(attacker,attacker); } if (malaria_level == 9 && Rnd.get(100) < (MALARIA_CHANCE - malaria_level)) { SkillTable.getInstance().getInfo(MALARIA,malaria_level + 1).getEffects(attacker,attacker); } if (malaria_level == 10) { SkillTable.getInstance().getInfo(MALARIA,1).getEffects(attacker,attacker); } } else { if (Rnd.get(100) < MALARIA_CHANCE) { SkillTable.getInstance().getInfo(MALARIA,1).getEffects(attacker,attacker); } } } if (contains(flu_mobs, npc.getNpcId())) { if (attacker.getFirstEffect(FLU) != null) { int flu_level = attacker.getFirstEffect(FLU).getLevel(); if (flu_level == 1 && Rnd.get(100) < (FLU_CHANCE - flu_level)) { SkillTable.getInstance().getInfo(FLU,2).getEffects(attacker,attacker); } if (flu_level == 2 && Rnd.get(100) < (FLU_CHANCE - flu_level)) { SkillTable.getInstance().getInfo(FLU,3).getEffects(attacker,attacker); } if (flu_level == 3 && Rnd.get(100) < (FLU_CHANCE - flu_level)) { SkillTable.getInstance().getInfo(FLU,flu_level + 1).getEffects(attacker,attacker); } if (flu_level == 4 && Rnd.get(100) < (FLU_CHANCE - flu_level)) { SkillTable.getInstance().getInfo(FLU,flu_level + 1).getEffects(attacker,attacker); } if (flu_level == 5 && Rnd.get(100) < (FLU_CHANCE - flu_level)) { SkillTable.getInstance().getInfo(FLU,flu_level + 1).getEffects(attacker,attacker); } if (flu_level == 6 && Rnd.get(100) < (FLU_CHANCE - flu_level)) { SkillTable.getInstance().getInfo(FLU,flu_level + 1).getEffects(attacker,attacker); } if (flu_level == 7 && Rnd.get(100) < (FLU_CHANCE - flu_level)) { SkillTable.getInstance().getInfo(FLU,flu_level + 1).getEffects(attacker,attacker); } if (flu_level == 8 && Rnd.get(100) < (FLU_CHANCE - flu_level)) { SkillTable.getInstance().getInfo(FLU,flu_level + 1).getEffects(attacker,attacker); } if (flu_level == 9 && Rnd.get(100) < (FLU_CHANCE - flu_level)) { SkillTable.getInstance().getInfo(FLU,flu_level + 1).getEffects(attacker,attacker); } if (flu_level == 10) { SkillTable.getInstance().getInfo(FLU,1).getEffects(attacker,attacker); } } else { if (Rnd.get(100) < FLU_CHANCE) { SkillTable.getInstance().getInfo(FLU,1).getEffects(attacker,attacker); } } } if (contains(cholera_mobs, npc.getNpcId())) { if (attacker.getFirstEffect(CHOLERA) != null) { int cholera_level = attacker.getFirstEffect(CHOLERA).getLevel(); if (cholera_level == 1 && Rnd.get(100) < (CHOLERA_CHANCE - cholera_level)) { SkillTable.getInstance().getInfo(CHOLERA,2).getEffects(attacker,attacker); } if (cholera_level == 2 && Rnd.get(100) < (CHOLERA_CHANCE - cholera_level)) { SkillTable.getInstance().getInfo(CHOLERA,3).getEffects(attacker,attacker); } if (cholera_level == 3 && Rnd.get(100) < (CHOLERA_CHANCE - cholera_level)) { SkillTable.getInstance().getInfo(CHOLERA,cholera_level + 1).getEffects(attacker,attacker); } if (cholera_level == 4 && Rnd.get(100) < (CHOLERA_CHANCE - cholera_level)) { SkillTable.getInstance().getInfo(CHOLERA,cholera_level + 1).getEffects(attacker,attacker); } if (cholera_level == 5 && Rnd.get(100) < (CHOLERA_CHANCE - cholera_level)) { SkillTable.getInstance().getInfo(CHOLERA,cholera_level + 1).getEffects(attacker,attacker); } if (cholera_level == 6 && Rnd.get(100) < (CHOLERA_CHANCE - cholera_level)) { SkillTable.getInstance().getInfo(CHOLERA,cholera_level + 1).getEffects(attacker,attacker); } if (cholera_level == 7 && Rnd.get(100) < (CHOLERA_CHANCE - cholera_level)) { SkillTable.getInstance().getInfo(CHOLERA,cholera_level + 1).getEffects(attacker,attacker); } if (cholera_level == 8 && Rnd.get(100) < (CHOLERA_CHANCE - cholera_level)) { SkillTable.getInstance().getInfo(CHOLERA,cholera_level + 1).getEffects(attacker,attacker); } if (cholera_level == 9 && Rnd.get(100) < (CHOLERA_CHANCE - cholera_level)) { SkillTable.getInstance().getInfo(CHOLERA,cholera_level + 1).getEffects(attacker,attacker); } if (cholera_level == 10) { SkillTable.getInstance().getInfo(CHOLERA,1).getEffects(attacker,attacker); } } else { if (Rnd.get(100) < CHOLERA_CHANCE) { SkillTable.getInstance().getInfo(CHOLERA,1).getEffects(attacker,attacker); } } } if (contains(rheumatism_mobs, npc.getNpcId())) { if (attacker.getFirstEffect(RHEUMATISM) != null) { int rheumatism_level = attacker.getFirstEffect(RHEUMATISM).getLevel(); if (rheumatism_level == 1 && Rnd.get(100) < (RHEUMATISM_CHANCE - rheumatism_level)) { SkillTable.getInstance().getInfo(RHEUMATISM,2).getEffects(attacker,attacker); } if (rheumatism_level == 2 && Rnd.get(100) < (RHEUMATISM_CHANCE - rheumatism_level)) { SkillTable.getInstance().getInfo(RHEUMATISM,3).getEffects(attacker,attacker); } if (rheumatism_level == 3 && Rnd.get(100) < (RHEUMATISM_CHANCE - rheumatism_level)) { SkillTable.getInstance().getInfo(RHEUMATISM,rheumatism_level + 1).getEffects(attacker,attacker); } if (rheumatism_level == 4 && Rnd.get(100) < (RHEUMATISM_CHANCE - rheumatism_level)) { SkillTable.getInstance().getInfo(RHEUMATISM,rheumatism_level + 1).getEffects(attacker,attacker); } if (rheumatism_level == 5 && Rnd.get(100) < (RHEUMATISM_CHANCE - rheumatism_level)) { SkillTable.getInstance().getInfo(RHEUMATISM,rheumatism_level + 1).getEffects(attacker,attacker); } if (rheumatism_level == 6 && Rnd.get(100) < (RHEUMATISM_CHANCE - rheumatism_level)) { SkillTable.getInstance().getInfo(RHEUMATISM,rheumatism_level + 1).getEffects(attacker,attacker); } if (rheumatism_level == 7 && Rnd.get(100) < (RHEUMATISM_CHANCE - rheumatism_level)) { SkillTable.getInstance().getInfo(RHEUMATISM,rheumatism_level + 1).getEffects(attacker,attacker); } if (rheumatism_level == 8 && Rnd.get(100) < (RHEUMATISM_CHANCE - rheumatism_level)) { SkillTable.getInstance().getInfo(RHEUMATISM,rheumatism_level + 1).getEffects(attacker,attacker); } if (rheumatism_level == 9 && Rnd.get(100) < (RHEUMATISM_CHANCE - rheumatism_level)) { SkillTable.getInstance().getInfo(RHEUMATISM,rheumatism_level + 1).getEffects(attacker,attacker); } if (rheumatism_level == 10) { SkillTable.getInstance().getInfo(RHEUMATISM,1).getEffects(attacker,attacker); } } else { if (Rnd.get(100) < RHEUMATISM_CHANCE) { SkillTable.getInstance().getInfo(RHEUMATISM,1).getEffects(attacker,attacker); } } } return super.onAttack(npc, attacker, damage, isPet); } public static <T> boolean contains(T[] array, T obj) { for (int i = 0; i < array.length; i++) { if (array[i] == obj) { return true; } } return false; } public static boolean contains(int[] array, int obj) { for (int i = 0; i < array.length; i++) { if (array[i] == obj) { return true; } } return false; } @Override public void run() {} } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Okay 5 Опубликовано 2 февраля, 2013 на линках малярия работает. Лично проверял. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Ingatello 129 Опубликовано 2 февраля, 2013 Все там работает... наверное пытаешься взять админом под //invul Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NewOff 372 Опубликовано 2 февраля, 2013 Очень давно встречался с такой проблемой когда еще занимался серверами, то решалась она в статах скилов малярии. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 2 февраля, 2013 Щас ещё раз проверю пойду, бегаю за обычного перса ибо тест) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 2 февраля, 2013 (изменено) Бесполезно, шанс в конфигах стоит 70%. Прилетаю в ХС, бью аркой (или скиллами без разницы) волков, пауков, флав - эффекта никакого даже ревматизма не дает.... А что именно в датапаке там не так? Изменено 2 февраля, 2013 пользователем Mister Coder Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 2 февраля, 2013 Может это потому что я загрузку AI отключил? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mefestofel163 1333 Опубликовано 2 февраля, 2013 возьми с другой сборки скилы и все) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 2 февраля, 2013 Мне кажется это из за того что я AI отключил. Т.к. гранд боссы мне нужны без квестов... будем тестить значит Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 2 февраля, 2013 Ну да, разумеется) Сори за мою тупость. Просто Hotsprings.java находится в папке ai, загрузку AI я отключил значит ХС тоже не пашет... будем думать) Спасибо всем) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
FludGod 91 Опубликовано 2 февраля, 2013 там все нормально последнюю реву тестил еще в о время когда они оффнулись - все пашет супер Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты