Тема: Drop штраф
Показать сообщение отдельно
Непрочитано 25.03.2010, 10:59   #2
Аватар для Shema
Герой

Автор темы (Топик Стартер) 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. Причина: Добавлено сообщение
Shema вне форума Ответить с цитированием