Перейти к содержанию
Авторизация  
La2Bash

L2Jlink - Хот Спрингс

Рекомендуемые сообщения

Здравствуйте еще раз. Тестим сервер, пытаемся взять маляру - ничего не получается.

Сталкивался ли кто нибудь с этой проблемой? Шанс поставил 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()
   {}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на линках малярия работает. Лично проверял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все там работает... наверное пытаешься взять админом под //invul

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очень давно встречался с такой проблемой когда еще занимался серверами, то решалась она в статах скилов малярии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Щас ещё раз проверю пойду, бегаю за обычного перса ибо тест)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Бесполезно, шанс в конфигах стоит 70%. Прилетаю в ХС, бью аркой (или скиллами без разницы) волков, пауков, флав - эффекта никакого даже ревматизма не дает....

А что именно в датапаке там не так?

Изменено пользователем Mister Coder

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне кажется это из за того что я AI отключил. Т.к. гранд боссы мне нужны без квестов... будем тестить значит

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да, разумеется) Сори за мою тупость. Просто Hotsprings.java находится в папке ai, загрузку AI я отключил значит ХС тоже не пашет... будем думать) Спасибо всем)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там все нормально

последнюю реву тестил еще в о время когда они оффнулись - все пашет супер

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...