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

Бафф Итем И Па.

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

Подскажите пожалуйста как сделать бафф увеличивающий рейты.

Например редактировать тот же L2Day Scroll или создать новый итем, только вместо к примеру Нр что-бы добавило х2 к дропу или Премиум Аккаунт на 1 час.

Благодарю за внимание.

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


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

Если вкратце, то тебе потребуются исходы твоей сборки

 

Если у тебя они есть, то сперва нужно соорудить файл эффектов:

 

 

 

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. Набросал в общем, но, по моему, в рабочем виде, на лыже уж точно

  • Upvote 1

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


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

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

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

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

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

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

Войти

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

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

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

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

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