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

Помогите Кто Знает Хорошо Java.

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

Добрый день. Прошу помощи кто знает java язык. Использую сборку Mmorpg-team, в этой сборке есть event который добавляет всем мобам Item, и дел в том-что дроп падает по формуле:

Зависит от Рейтов дропа/Дроп РБ умноженное на Рейт ХП у моба)

Как сделать что бы падало нормально 4-8 штук (min/max).

Вот сам код:

package events.other;

import l2m.gameserver.aConfig;
import l2m.gameserver.listener.actor.OnDeathListener;
import l2m.gameserver.model.Creature;
import l2m.gameserver.model.actor.listener.CharListenerList;
import l2m.gameserver.model.instances.MonsterInstance;
import l2m.gameserver.scripts.Functions;
import l2m.gameserver.scripts.ScriptFile;
import l2m.gameserver.utils.Util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.Map.Entry;

/**
* User: KASELUR
* Date: 29.02.2012
* Time: 19:08:42
*/

public class DropEvent extends Functions implements ScriptFile, OnDeathListener 
{

private static final Logger _log = LoggerFactory.getLogger(DropEvent.class);
private static boolean isActive = aConfig.get("EventMonster", false) || aConfig.get("EventRaid", false);

@Override
public void onLoad() 
{
	CharListenerList.addGlobal(this);
	if (isActive)
		_log.info("Loaded Event: L2DropEvent [state: activated]");
	else
		_log.info("Loaded Event: L2DropEvent [state: deactivated]");
}

@Override
public void onReload() {
}

@Override
public void onShutdown() {
}

/**
 * Обработчик смерти мобов, управляющий эвентовым дропом
 */
@Override
public void onDeath(Creature cha, Creature killer) 
{
	if(cha != null && killer != null && killer.getPlayer() != null && killer.getLevel() - cha.getLevel() < 9 && isActive)
		if(cha.isMonster() && cha.getLevel() >= 70 && aConfig.get("EventMonster", false))
		if(cha.isMonster() && cha.getLevel() <= 75 && aConfig.get("EventMonster", false))
		{
			for (Entry<Integer, Double> _item : aConfig.getID("EventDroup", new HashMap<Integer, Double>()).entrySet()) 
			{
				long count = Util.rollDrop(1, 2, _item.getValue() * killer.getPlayer().getRateItems() * ((MonsterInstance) cha).getTemplate().rateHp * 10000L, false);
				if (count > 0)
					addItem(killer.getPlayer(), _item.getKey(), count);
			}
		}
		if(cha != null && killer != null && killer.getPlayer() != null && killer.getLevel() - cha.getLevel() < 9 && isActive)
		if(cha.isMonster() && cha.getLevel() >= 76 && aConfig.get("EventMonster", false))
		if(cha.isMonster() && cha.getLevel() <= 84 && aConfig.get("EventMonster", false))
		{
			for (Entry<Integer, Double> _item : aConfig.getID("EventDroup", new HashMap<Integer, Double>()).entrySet()) 
			{
				long count = Util.rollDrop(1, 3, _item.getValue() * killer.getPlayer().getRateItems() * ((MonsterInstance) cha).getTemplate().rateHp * 10000L, false);
				if (count > 0)
					addItem(killer.getPlayer(), _item.getKey(), count);
			}
		}
		if(cha != null && killer != null && killer.getPlayer() != null && killer.getLevel() - cha.getLevel() < 9 && isActive)
		if(cha.isMonster() && cha.getLevel() >= 85 && aConfig.get("EventMonster", false))
		{
			for (Entry<Integer, Double> _item : aConfig.getID("EventDroup", new HashMap<Integer, Double>()).entrySet()) 
			{
				long count = Util.rollDrop(1, 4, _item.getValue() * killer.getPlayer().getRateItems() * ((MonsterInstance) cha).getTemplate().rateHp * 10000L, false);
				if (count > 0)
					addItem(killer.getPlayer(), _item.getKey(), count);
			}
		}
		if(cha.isRaid() && cha.getLevel() >= 60 && aConfig.get("EventRaid", false))
		if(cha.isRaid() && cha.getLevel() <= 70 && aConfig.get("EventRaid", false))
		{
			for (Entry<Integer, Double> _item : aConfig.getID("EventRaidDroup", new HashMap<Integer, Double>()).entrySet()) 
			{
				long count = Util.rollDrop(1, 7, _item.getValue() * killer.getPlayer().getRateItems() * ((MonsterInstance) cha).getTemplate().rateHp * 10000L, false);
				if (count > 0)
					addItem(killer.getPlayer(), _item.getKey(), count);
			}
		}
		if(cha.isRaid() && cha.getLevel() >= 71 && aConfig.get("EventRaid", false))
		if(cha.isRaid() && cha.getLevel() <= 80 && aConfig.get("EventRaid", false))
		{
			for (Entry<Integer, Double> _item : aConfig.getID("EventRaidDroup2", new HashMap<Integer, Double>()).entrySet()) 
			{
				long count = Util.rollDrop(1, 1, _item.getValue() * killer.getPlayer().getRateItems() * ((MonsterInstance) cha).getTemplate().rateHp * 10000L, false);
				if (count > 0)
					addItem(killer.getPlayer(), _item.getKey(), count);
			}
		}

}
}

То есть нужно изменить вот эту строчку:

long count = Util.rollDrop(1, 1, _item.getValue() * killer.getPlayer().getRateItems() * ((MonsterInstance) cha).getTemplate().rateHp * 10000L, false);

Что-бы было (Min/Max)

Помогите пожалуйста очень сильно прошу(

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


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

По разному то 2 то 4 то 6...

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


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

Я конечно только начал изучать ява, но думаю надо вот так:

long count = Util.rollDrop(4, 7, _item.getValue() * killer.getPlayer().getRateItems() * ((MonsterInstance) cha).getTemplate().rateHp * 10000L, false);

Т.е. дроп от 4 до 7.

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

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


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

Я так тоже делал не помогло(

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


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

Может поставить ограничение например не меньше 4 и не больше 8? Только как это поставить?

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


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

* killer.getPlayer().getRateItems

зависит какие рейты на итемы стоят

или я не понял самой проблемы

проще будет переписать скрипт

в чем прикол что все зависит еще от lvl чара

if(cha.isRaid() && cha.getLevel() >= 60 && aConfig.get("EventRaid", false))

if(cha.isRaid() && cha.getLevel() <= 70 && aConfig.get("EventRaid", false))

с 60-70 будет дроп до 7 итемов

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

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


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

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

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

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

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

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

Войти

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

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

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

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

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