tiberiy 0 Опубликовано 27 ноября, 2013 Подскажите пожалуйста как сделать бафф увеличивающий рейты. Например редактировать тот же L2Day Scroll или создать новый итем, только вместо к примеру Нр что-бы добавило х2 к дропу или Премиум Аккаунт на 1 час. Благодарю за внимание. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Nha 22 Опубликовано 27 ноября, 2013 Если вкратце, то тебе потребуются исходы твоей сборки Если у тебя они есть, то сперва нужно соорудить файл эффектов: package net.sf.l2j.gameserver.skills.effects; import net.sf.l2j.gameserver.model.L2Effect; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.skills.Env; import net.sf.l2j.gameserver.templates.skills.L2EffectType; public class EffectBonus extends L2Effect { public EffectBonus(Env env, EffectTemplate template) { super(env, template); } @Override public L2EffectType getEffectType() { return L2EffectType.BONUS; } @Override public boolean onStart() { if (getEffected() instanceof L2PcInstance) { return true; } return false; } @Override public void onExit() { } @Override public boolean onActionTime() { return false; } } Далее, создать тип BONUS в L2EffectType (enum). Ну и после всего это приступить к самому условию на увеличение рейтов: 1) Увеличим EXP/SP, для этого в файле L2Attackable.java в методе calculateRewards, где нибудь в условии if (attackerParty == null), добавляем сам код: for (int i = 0; i < attacker.getAllEffects().length; i++) { if (attacker.getAllEffects()[i].getEffectType() == L2EffectType.BONUS) { exp *= attacker.getAllEffects()[i].getEffectPower(); sp *= attacker.getAllEffects()[i].getEffectPower(); } } 2) Для дропа схожая тема, тот же файл, но метод calculateRewardItem, вставляем: for (int i = 0; i < lastAttacker.getAllEffects().length; i++) { if (lastAttacker.getAllEffects()[i].getEffectType() == L2EffectType.BONUS) { dropChance *= lastAttacker.getAllEffects()[i].getEffectPower(); } } Ну и в самом конце нужно перейти уже в дапатпак, и создать там скилл в (xml), не забыв добавить к нему сам эффект: <for> <effect name="Bonus" time="60" stackOrder="1" effectPower="2" val="0"/> </for> Где effectPower - множитель дропа и награды exp/sp, а time, собственно, время (час). Если хочешь сунуть все это дело в итем, то да, можно сделать по аналогии с L2Day, в itemhandlers. P.S. Набросал в общем, но, по моему, в рабочем виде, на лыже уж точно 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты