25.03.2010, 10:59
|
#2
|
Герой
Регистрация: 01.03.2010
Адрес: Где то не долеко.
Возраст: 43
Сообщений: 314
Отблагодарили 31 раз(а)
Рейтинг мнений:
|
Re: Drop штраф
Скрипт пишу без % соотношения. Просто если лвл < -5лвл или лвл >5лвл, то значение будет равно , например 1
Скипт размещаю здесь:
C:\ae-go\AE-go_GameServer\src\com\aionemu\gameserver\utils\sta ts
название DPRewardEnum.java
package com.aionemu.gameserver.utils.stats;
import java.util.NoSuchElementException;
/**
*
*/
public enum DPRewardEnum
/**
* int DpFallout = DpRewardEnum.DpRewardFrom(targetLevel - playerLevel);
*
*/
MINUS_5(-5,1),
MINUS_4(-4,1),
MINUS_3(-3,1),
MINUS_2(-2,1),
MINUS_1(-1,1),
ZERO(0,1),
PLUS_1(1,1),
PLUS_2(2,1),
PLUS_3(3,1),
PLUS_4(4,1),
PLUS_5(5,1);
private int dpRewardOut;
private int levelDifference;
private DPRewardEnum(int levelDifference,int dpRewardOut)
{
this.levelDifference = levelDifference;
this.dpRewardOut = dpRewardOut;
}
public int rewardOut()
{
return dpRewardOut;
}
public static int dpRewardFrom(int levelDifference)
{
if(levelDifference < MINUS_5.levelDifference)
{
return MINUS_5.dpRewardOut;
}
if(levelDifference > PLUS_5.levelDifference)
{
return PLUS_5.dpRewardOut;
}
for(DPRewardEnum dpReward : values())
{
if(dpReward.levelDifference == levelDifference)
{
return dpReward.dpRewardOut;
}
}
throw new NoSuchElementException("DP reward for such level difference was not found");
}
}
Добавлено через 2 минуты
Нужно вписать строку :
int DpFallout = DPRewardEnum.dpRewardFrom(targetLevel - playerLevel);
Возможно ее указать просто в скрипте StatFunctions.java
например здесь :
public static long calculateSoloExperienceReward(Player player, Creature target)
{
int playerLevel = player.getCommonData().getLevel();
int targetLevel = target.getLevel();
int maxXp = ((Npc) target).getObjectTemplate().getStatsTemplate().get MaxXp();
//TODO take baseXP from target object (additional attribute in stats template is needed)
int baseXP = maxXp;
int DpFallout = DpRewardEnum.DpRewardFrom(targetLevel - playerLevel);
int xpPercentage = XPRewardEnum.xpRewardFrom(targetLevel - playerLevel);
return (int) Math.floor(baseXP * xpPercentage * player.getRates().getXpRate() / 100);
}
Добавлено через 6 минут
Теперь в MonsterController.java
C:\ae-go\AE-go_GameServer\src\com\aionemu\gameserver\controlle rs
Нужно указать, что если разница лвл игрока = разница лвл моба, то дроп падет. ))
Вот здесь я и загруз, как это сделать. )))
Последний раз редактировалось Shema; 25.03.2010 в 11:55.
Причина: Добавлено сообщение
|
|
|