jet74 3 Опубликовано 29 июля, 2012 Добрый день. Прошу помощи кто знает 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) Помогите пожалуйста очень сильно прошу( Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
exspertxd 11 Опубликовано 29 июля, 2012 Сколько итемов падает в данный момент? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
jet74 3 Опубликовано 29 июля, 2012 По разному то 2 то 4 то 6... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
exspertxd 11 Опубликовано 29 июля, 2012 (изменено) Я конечно только начал изучать ява, но думаю надо вот так: long count = Util.rollDrop(4, 7, _item.getValue() * killer.getPlayer().getRateItems() * ((MonsterInstance) cha).getTemplate().rateHp * 10000L, false); Т.е. дроп от 4 до 7. Изменено 29 июля, 2012 пользователем exspertxd Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
jet74 3 Опубликовано 29 июля, 2012 Я так тоже делал не помогло( Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
exspertxd 11 Опубликовано 29 июля, 2012 Тогда советую обратиться к знатокам Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
jet74 3 Опубликовано 29 июля, 2012 Может поставить ограничение например не меньше 4 и не больше 8? Только как это поставить? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
AlexMan 27 Опубликовано 29 июля, 2012 (изменено) * 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 итемов Изменено 29 июля, 2012 пользователем AlexMan Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты