Сообщений: 60
Тем: 19
Зарегистрирован: Sep 2013
Репутация:
45
Добрый день!
Кто в курсе... подскажите пожалуйста по какой формуле рассчитывается процентное соотношение текущей экспы, которое мы видим уже в игре:
Таблица опыта: _http://l2db.ucoz.es/index/tablica_opyta_v_lineage_2/0-56
Как я это представляю:
текущий уровень (например 6) это 0% = 1,716
след уровень (7) это 100% = 3,154
неизвестный процент x% = 2,155 (например столько сейчас экспы у персонажа)
как же найти это процентное число?, т.е. уже то что выводится в интерфейсе...
Чувствую, что задача примитивная но никак не могу сообразить
Сообщений: 901
Тем: 78
Зарегистрирован: Dec 2012
Репутация:
9,514
Код: package l2r.gameserver.model.base;
import l2r.gameserver.Config;
public class Experience
{
public final static long LEVEL[] = { -1L, // level 0 (unreachable)
/* Lvl:1 */ 0L,
/* Lvl:2 */ 68L,
/* Lvl:3 */ 363L,
/* Lvl:4 */ 1168L,
/* Lvl:5 */ 2884L,
/* Lvl:6 */ 6038L,
/* Lvl:7 */ 11287L,
/* Lvl:8 */ 19423L,
/* Lvl:9 */ 31378L,
/* Lvl:10 */ 48229L,
/* Lvl:11 */ 71202L,
/* Lvl:12 */ 101677L,
/* Lvl:13 */ 141193L,
/* Lvl:14 */ 191454L,
/* Lvl:15 */ 254330L,
/* Lvl:16 */ 331867L,
/* Lvl:17 */ 426288L,
/* Lvl:18 */ 540000L,
/* Lvl:19 */ 675596L,
/* Lvl:20 */ 835862L,
/* Lvl:21 */ 1023784L,
/* Lvl:22 */ 1242546L,
/* Lvl:23 */ 1495543L,
/* Lvl:24 */ 1786379L,
/* Lvl:25 */ 2118876L,
/* Lvl:26 */ 2497077L,
/* Lvl:27 */ 2925250L,
/* Lvl:28 */ 3407897L,
/* Lvl:29 */ 3949754L,
/* Lvl:30 */ 4555796L,
/* Lvl:31 */ 5231246L,
/* Lvl:32 */ 5981576L,
/* Lvl:33 */ 6812513L,
/* Lvl:34 */ 7730044L,
/* Lvl:35 */ 8740422L,
/* Lvl:36 */ 9850166L,
/* Lvl:37 */ 11066072L,
/* Lvl:38 */ 12395215L,
/* Lvl:39 */ 13844951L,
/* Lvl:40 */ 15422929L,
/* Lvl:41 */ 17137087L,
/* Lvl:42 */ 18995665L,
/* Lvl:43 */ 21007203L,
/* Lvl:44 */ 23180550L,
/* Lvl:45 */ 25524868L,
/* Lvl:46 */ 28049635L,
/* Lvl:47 */ 30764654L,
/* Lvl:48 */ 33680052L,
/* Lvl:49 */ 36806289L,
/* Lvl:50 */ 40154162L,
/* Lvl:51 */ 45525133L,
/* Lvl:52 */ 51262490L,
/* Lvl:53 */ 57383988L,
/* Lvl:54 */ 63907911L,
/* Lvl:55 */ 70853089L,
/* Lvl:56 */ 80700831L,
/* Lvl:57 */ 91162654L,
/* Lvl:58 */ 102265881L,
/* Lvl:59 */ 114038596L,
/* Lvl:60 */ 126509653L,
/* Lvl:61 */ 146308200L,
/* Lvl:62 */ 167244337L,
/* Lvl:63 */ 189364894L,
/* Lvl:64 */ 212717908L,
/* Lvl:65 */ 237352644L,
/* Lvl:66 */ 271975263L,
/* Lvl:67 */ 308443198L,
/* Lvl:68 */ 346827154L,
/* Lvl:69 */ 387199547L,
/* Lvl:70 */ 429634523L,
/* Lvl:71 */ 474207979L,
/* Lvl:72 */ 532694979L,
/* Lvl:73 */ 606322775L,
/* Lvl:74 */ 696381369L,
/* Lvl:75 */ 804225364L,
/* Lvl:76 */ 931275828L,
/* Lvl:77 */ 1151275834L,
/* Lvl:78 */ 1511275834L,
/* Lvl:79 */ 2044287599L,
/* Lvl:80 */ 3075966164L,
/* Lvl:81 */ 4295351949L,
/* Lvl:82 */ 5766985062L,
/* Lvl:83 */ 7793077345L,
/* Lvl:84 */ 10235368963L,
/* Lvl:85 */ 13180481103L,
/* Lvl:86 */ 25314105600L,
/* Lvl:87 */ 32211728640L,
/* Lvl:88 */ 40488876288L,
/* Lvl:89 */ 50421453466L,
/* Lvl:90 */ 63424099953L,
/* Lvl:91 */ 79027275737L,
/* Lvl:92 */ 97751086678L,
/* Lvl:93 */ 121155850355L,
/* Lvl:94 */ 149241566767L,
/* Lvl:95 */ 182944426462L,
/* Lvl:96 */ 225005595360L,
/* Lvl:97 */ 275478998038L,
/* Lvl:98 */ 336047081252L,
/* Lvl:99 */ 408728781109L,
/* Lvl:100 */ 495946820937L };
/**
* Return PenaltyModifier (can use in all cases)
*
* @param count - how many times <percents> will be substructed
* @param percents - percents to substruct
*
* @author Styx
*/
/*
* This is for fine view only ;)
*
* public final static double penaltyModifier(int count, int percents)
* {
* int allPercents = 100;
* int allSubstructedPercents = count * percents;
* int penaltyInPercents = allPercents - allSubstructedPercents;
* double penalty = penaltyInPercents / 100.0;
* return penalty;
* }
*/
public static double penaltyModifier(long count, double percents)
{
return Math.max(1. - count * percents / 100, 0);
}
/**
* Максимальный достижимый уровень
*/
public static int getMaxLevel()
{
return Config.ALT_MAX_LEVEL;
}
/**
* Максимальный уровень для саба
*/
public static int getMaxSubLevel()
{
return Config.ALT_MAX_SUB_LEVEL;
}
public static int getLevel(long thisExp)
{
int level = 0;
for(int i = 0; i < LEVEL.length; i++)
{
long exp = LEVEL[i];
if(thisExp >= exp)
level = i;
}
return level;
}
public static long getExpForLevel(int lvl)
{
if(lvl >= Experience.LEVEL.length)
return 0;
return Experience.LEVEL[lvl];
}
public static double getExpPercent(int level, long exp)
{
return (exp - getExpForLevel(level)) / ((getExpForLevel(level + 1) - getExpForLevel(level)) / 100.0D) * 0.01D;
}
}
Сообщений: 466
Тем: 10
Зарегистрирован: Dec 2012
Репутация:
398
От начальной экспы nextLevelExperience вычитаем начальную currentLevelExperience.
Сообщений: 60
Тем: 19
Зарегистрирован: Sep 2013
Репутация:
45
09-20-2014, 04:02 PM
(Сообщение последний раз редактировалось: 09-20-2014, 04:32 PM slayer48.)
всем спасибо, разобрался!
|