Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Обучающие статьи (https://forum.zone-game.info/forumdisplay.php?f=180)
-   -   Увеличение максимального уровня в Interlude (https://forum.zone-game.info/showthread.php?t=29984)

freelu 08.07.2013 00:08

Увеличение максимального уровня в Interlude
 
Ход мыслей смотрите в теме «Таблица опыта в клиенте» (http://forum.zone-game.info/showthread.php?t=29982)

Увеличить максимальный уровень в игре с полной поддержкой клиента очень просто: достаточно иметь на руках исходный код сервера и пять минут времени. Менять что-либо в клиенте не нужно.

http://s5.hostingkartinok.com/upload...d57134b9c0.jpg

Дело в том, что в клиенте Interlude уже заложены значения опыта для уровней выше 80, но они совершенно не совпадают со значениями опыта в базах знаний (например, http://l2wiki.com/Character_Level).

Подбирать значения пришлось опытным путем, но они довольно точные: если погрешности и есть, они сглаживаются тем, что игрок видит в клиенте только сотые доли процента.

В сервере на Java (я правил исходный код Silentium, основанный на Acis) таблица опыта хранится в файле Experience.java (\gameserver\model\base\Experience.java).

Таблица опыта — список значений опыта, при достижении которых персонаж получает новый уровень. В оригинальном коде она заканчивается так:
4200000000L, // level 80
6299994999L
Code: Java
Из комментария понятно, что предпоследняя строка — уровень 80, следующая, по всей видимости, предел Interlude — 80 и 99.99%.

Добавим в игру 85 уровней.

Сперва заменим вышеприведенные строки в таблице опыта на следующие:
4200000000L, // level 80
6300000000L, // level 81
10500000000L, // level 82
16800000000L, // level 83
27300000000L, // level 84
44100000000L, // level 85
71400000000L // level 86
Code: Java
Любопытно, что значения опыта после 81 уровня — не что иное, как сумма опыта двух предыдущих уровней: 10500000000 (уровень 81) + 6300000000 (уровень 82) = 16800000000, что соответствует уровню 83. Видимо NC Soft не стали задумываться и заполнили неиспользуемые уровни нехитрым способом.

Что это нам дает? Это значит, что мы можем таким же способом (суммой двух предыдущих уровней) рассчитать опыт хоть до 99 уровня (внимание: я не проверял поведение выше 86 уровня).

Итак, когда мы знаем, как рассчитать опыт и обновили таблицу, изменим максимально доступный уровень. Сделать это просто: чуть ниже в коде есть строка задающая первый недоступный уровень (для 80 это 81, для 85 будет 86):
public final static byte MAX_LEVEL = 81;
Code: Java
Заменим значение на 86:
public final static byte MAX_LEVEL = 86;
Code: Java
На этом все. Компилируем сервер, запускаем и тестируем. Возможно, вам удастся подобрать значения поточнее: эти, на мой взгляд, слишком «круглые» для корейских значений (:.

Напоследок скажу, что значения опыта очень большие — докачаться до 85 уровня в Interlude будет тяжело, поэтому мой совет такой: если вы хотите добавить новые уровни на Interlude, позаботьтесь о новых местах прокачки или сделайте перерасчет рейтов на опыт после 80 уровня (можно добавить в функции добавления и вычитания опыта специальный множитель, увеличивающий число: так процент в клиенте будет тикать веселее, а числа в чате не будут в километр длиной).

Благодаря товарищу MrShyr у нас есть достоверные данные до 100 уровня!
//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
Code: Java

KillMozg 08.07.2013 02:40

Re: Увеличение максимального уровня в Interlude
 
подобное на уг порталах давно уже описано было.

freelu 08.07.2013 04:59

Re: Увеличение максимального уровня в Interlude
 
Если бы эти цифры лежали на виду, я бы не стал их подбирать. Даже если где-то и было — это не важно: теперь есть здесь и в хорошем виде (на этом форуме я встретил как минимум 7 тем с этим вопросом).

MrShyr 16.08.2013 08:01

Re: Увеличение максимального уровня в Interlude
 
Лично я нигде не видел, по этому и пришлось как обычно методом тыка разбираться :)

Добавлено через 5 минут
З.Ы. Если собрались тюнить уровни, позаботьтесь о скилах, а именно о Magiclvl, который как правило на IT не качается после 74 или 76 (точно не помню) и зависит как правило от уровня проточки скила (до 85 качится если память не изменяет - хотя в случае 99 лвл это уже пофиг), что влечет за собой полное *непрохождение* магических скилов на персонажей высокого уровня.


Текущее время: 20:34. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot