Ход мыслей смотрите в теме «Таблица опыта в клиенте» (http://forum.zone-game.info/showthread.php?t=29982)
Увеличить максимальный уровень в игре с полной поддержкой клиента очень просто: достаточно иметь на руках исходный код сервера и пять минут времени. Менять что-либо в клиенте не нужно.
Дело в том, что в клиенте Interlude уже заложены значения опыта для уровней выше 80, но они совершенно не совпадают со значениями опыта в базах знаний (например, http://l2wiki.com/Character_Level).
Подбирать значения пришлось опытным путем, но они довольно точные: если погрешности и есть, они сглаживаются тем, что игрок видит в клиенте только сотые доли процента.
В сервере на Java (я правил исходный код Silentium, основанный на Acis) таблица опыта хранится в файле Experience.java (\gameserver\model\base\Experience.java).
Таблица опыта — список значений опыта, при достижении которых персонаж получает новый уровень. В оригинальном коде она заканчивается так:
[SRC="java"]4200000000L, // level 80
6299994999L[/SRC]
Из комментария понятно, что предпоследняя строка — уровень 80, следующая, по всей видимости, предел Interlude — 80 и 99.99%.
Добавим в игру 85 уровней.
Сперва заменим вышеприведенные строки в таблице опыта на следующие:
[SRC="java"]4200000000L, // level 80
6300000000L, // level 81
10500000000L, // level 82
16800000000L, // level 83
27300000000L, // level 84
44100000000L, // level 85
71400000000L // level 86[/SRC]
Любопытно, что значения опыта после 81 уровня — не что иное, как сумма опыта двух предыдущих уровней: 10500000000 (уровень 81) + 6300000000 (уровень 82) = 16800000000, что соответствует уровню 83. Видимо NC Soft не стали задумываться и заполнили неиспользуемые уровни нехитрым способом.
Что это нам дает? Это значит, что мы можем таким же способом (суммой двух предыдущих уровней) рассчитать опыт хоть до 99 уровня (внимание: я не проверял поведение выше 86 уровня).
Итак, когда мы знаем, как рассчитать опыт и обновили таблицу, изменим максимально доступный уровень. Сделать это просто: чуть ниже в коде есть строка задающая первый недоступный уровень (для 80 это 81, для 85 будет 86):
[SRC="java"]public final static byte MAX_LEVEL = 81;[/SRC]
Заменим значение на 86:
[SRC="java"]public final static byte MAX_LEVEL = 86;[/SRC]
На этом все. Компилируем сервер, запускаем и тестируем. Возможно, вам удастся подобрать значения поточнее: эти, на мой взгляд, слишком «круглые» для корейских значений (:.
Напоследок скажу, что значения опыта очень большие — докачаться до 85 уровня в Interlude будет тяжело, поэтому мой совет такой: если вы хотите добавить новые уровни на Interlude, позаботьтесь о новых местах прокачки или сделайте перерасчет рейтов на опыт после 80 уровня (можно добавить в функции добавления и вычитания опыта специальный множитель, увеличивающий число: так процент в клиенте будет тикать веселее, а числа в чате не будут в километр длиной).
Благодаря товарищу MrShyr у нас есть достоверные данные до 100 уровня!
[SRC="java"]//level 80
4200000000,
6300000000,
10500000000,
16800000000,
27300000000,
44100000000,
71400000000,
115500000000,
186900000000,
302400000000,
//level 90
489300000000,
791700000000,
1281000000000,
2072700000000,
3353700000000,
5426400000000,
8780100000000,
14206500000000,
22986600000000,
37193100000000,
100000000000000[/SRC]
Увеличить максимальный уровень в игре с полной поддержкой клиента очень просто: достаточно иметь на руках исходный код сервера и пять минут времени. Менять что-либо в клиенте не нужно.
Дело в том, что в клиенте Interlude уже заложены значения опыта для уровней выше 80, но они совершенно не совпадают со значениями опыта в базах знаний (например, http://l2wiki.com/Character_Level).
Подбирать значения пришлось опытным путем, но они довольно точные: если погрешности и есть, они сглаживаются тем, что игрок видит в клиенте только сотые доли процента.
В сервере на Java (я правил исходный код Silentium, основанный на Acis) таблица опыта хранится в файле Experience.java (\gameserver\model\base\Experience.java).
Таблица опыта — список значений опыта, при достижении которых персонаж получает новый уровень. В оригинальном коде она заканчивается так:
[SRC="java"]4200000000L, // level 80
6299994999L[/SRC]
Из комментария понятно, что предпоследняя строка — уровень 80, следующая, по всей видимости, предел Interlude — 80 и 99.99%.
Добавим в игру 85 уровней.
Сперва заменим вышеприведенные строки в таблице опыта на следующие:
[SRC="java"]4200000000L, // level 80
6300000000L, // level 81
10500000000L, // level 82
16800000000L, // level 83
27300000000L, // level 84
44100000000L, // level 85
71400000000L // level 86[/SRC]
Любопытно, что значения опыта после 81 уровня — не что иное, как сумма опыта двух предыдущих уровней: 10500000000 (уровень 81) + 6300000000 (уровень 82) = 16800000000, что соответствует уровню 83. Видимо NC Soft не стали задумываться и заполнили неиспользуемые уровни нехитрым способом.
Что это нам дает? Это значит, что мы можем таким же способом (суммой двух предыдущих уровней) рассчитать опыт хоть до 99 уровня (внимание: я не проверял поведение выше 86 уровня).
Итак, когда мы знаем, как рассчитать опыт и обновили таблицу, изменим максимально доступный уровень. Сделать это просто: чуть ниже в коде есть строка задающая первый недоступный уровень (для 80 это 81, для 85 будет 86):
[SRC="java"]public final static byte MAX_LEVEL = 81;[/SRC]
Заменим значение на 86:
[SRC="java"]public final static byte MAX_LEVEL = 86;[/SRC]
На этом все. Компилируем сервер, запускаем и тестируем. Возможно, вам удастся подобрать значения поточнее: эти, на мой взгляд, слишком «круглые» для корейских значений (:.
Напоследок скажу, что значения опыта очень большие — докачаться до 85 уровня в Interlude будет тяжело, поэтому мой совет такой: если вы хотите добавить новые уровни на Interlude, позаботьтесь о новых местах прокачки или сделайте перерасчет рейтов на опыт после 80 уровня (можно добавить в функции добавления и вычитания опыта специальный множитель, увеличивающий число: так процент в клиенте будет тикать веселее, а числа в чате не будут в километр длиной).
Благодаря товарищу MrShyr у нас есть достоверные данные до 100 уровня!
[SRC="java"]//level 80
4200000000,
6300000000,
10500000000,
16800000000,
27300000000,
44100000000,
71400000000,
115500000000,
186900000000,
302400000000,
//level 90
489300000000,
791700000000,
1281000000000,
2072700000000,
3353700000000,
5426400000000,
8780100000000,
14206500000000,
22986600000000,
37193100000000,
100000000000000[/SRC]