Создание игрового сервера Lineage II final

LineageLineage 2 — легендарная онлайн-игра, в которой вы в роли героя путешествуете по огромному фэнтезийному миру в поисках приключений, а вместе с вами еще тысячи других игроков. Отличная графика, множество способностей и заклинаний, массовые сражения за крепости и замки, а также многое-многое другое ждет вас в мире Аден.Игра, получившая признание более шести миллионов человек по всему миру, абсолютно бесплатна и полностью на русском языке! Использую данную статью, Вы сможете создать собственный игровой сервер.

1)Качаем MySQL и Java (Лучше обновить Джаву, иначе будет выбивать ошибку)
2)Устанавливаем MySQL особой сложности нет. Все время клацаем “далее”. И в конце установки выбирите “Configure MySQL server”, Выбираем “стандартная установка” Вводим пароль для базы(запоминаем его)
3) Устанавливаем джаву, и обновляем её через панель управления.
4) Качаем сервер Gracia Final и распаковываем (путь должен быть только из английских букв).
5) копируем с your_servgameserverconfigdefaults все в gameserverconfig
Открываем gameserverconfigserver.properties (WordPad)
и редактируем:
# ================================================================
# General server setting !!! REQUIRED to configure to everyone !!!
# ================================================================

Bind ip of the gameserver, use * to bind on all available IPs
GameserverHostname=Your_ip
GameserverPort=7777

This is transmitted to the clients connecting from an external network, so it has to be a public IP or resolvable hostname
ExternalHostname=You_internet_ip

This is transmitted to the client from the same network, so it has to be a local IP or resolvable hostname
InternalHostname=your_lpcal_Ip

AdvIPSystem = False

The Loginserver host and port
LoginPort=9014
LoginHost=Your_ip
LoginUseCrypt=True

Название БД логина, может использоваться если нужен прямой доступ к аккаунтам
LoginDB=l2jdb

This is the server id that the gameserver will request (i.e. 1 is Bartz)
RequestServerID = 1
# If set to true, the login will give an other id to the server if the requested id is already reserved
AcceptAlternateID = True

Database info
Driver=com.mysql.jdbc.Driver
URL=jdbc:mysql://localhost/l2jdb
Login=root
Password=your_pass (Парол который Вы ввели при установке MySQL)
MaximumDbConnections=50
# Через сколько секунд после последней активности будут закрываться соединения с базой, по умолчанию 600 (10 минут)
# данный параметр важно согласовывать с настройками в самом mysql сервере, параметр interactive_timeout
# насколько известно мне по умолчанию параметр interactive_timeout имеет значение 28800 (8 часов)
MaxIdleConnectionTimeout=600
# Интервал проверки неактивных соединений, по умолчанию 60 (1 минута)
# При условии стабильного соединения с базой и корректной настройки MaxIdleConnectionTimeout, можно выставлять 0 (не проверять)
IdleConnectionTestPeriod=60
UseDatabaseLayer=True

Позволяет существенно ускорить работу стекуемых вещей, откладывая обращения в бд (time in millisec)
LazyItemUpdate = True
LazyItemUpdateAll = False
LazyItemUpdateTime = 60000
LazyItemUpdateAllTime = 60000
DelayedItemsUpdateInterval = 10000
UserInfoInterval = 100
BroadcastStatsInterval = True
BroadcastCharInfoInterval = 100

Интервал сохранения игрового времени (в секундах)
SaveGameTimeInterval = 120

Define various player-typable name templates
# These ones are regular expressions, visit http://www.regular-expressions.info for details
# NOTE1: Generally checking lengths are done here, so pay them attention in templates
# NOTE2: Make sure youre know what are you doing before changing these from defaults 😉

Character name
CnameTemplate=([0-9A-Za-z]{2,16})|([0-9u0410-u044f]{2,16})
# Clan name
ClanNameTemplate=([0-9A-Za-z]{3,16})|([0-9u0410-u044f]{3,16})
# Clan title
ClanTitleTemplate=([0-9A-Za-z]{1,16})|([0-9u0410-u044f]{1,16})
# Ally name
AllyNameTemplate=([0-9A-Za-z]{3,16})|([0-9u0410-u044f]{3,16})

Define how many players are allowed to play simultaneously on your server.
MaximumOnlineUsers=3000

TestServer = False

Setting for serverList
# Displays [] in front of server name
ServerListBrackets = False
# Displays a clock next to the server name
ServerListClock = False
# If true, the server will be set as gm only at startup
ServerGMOnly = False

Minimum and maximum protocol revision that server allow to connect.
# You must keep MinProtocolRevision <= MaxProtocolRevision.
# Gracia part II protocol revision = 12-17
MinProtocolRevision = 12
MaxProtocolRevision = 17

========================================
# Настройки рейтов, все кроме манора float
# ========================================

Рейты XP и SP лучше ставить одинаковыми
RateXp = 1.
RateSp = 1.

Либо ставить как XP либо по формуле 0.7+0.3*RateXp, второе правильнее (баланс ближе к оффу)
RateDropAdena = 1.

Лучше ставить как XP
//Настрйка рейтов
RateDropItems = 1.
RateDropSpoil = 1.
RateQuestsReward = 1.
RateRaidBoss = 1.
#Рейты на дроп квестовых айтемов
RateQuestsDrop = 1.
#Рейты на дроп квестовых айтемов в квестах
RateQuestsDropProf = 1.
# Учитывать ли RateQuestsReward для квестов на профессии
RateQuestsRewardOccupationChange = True
RateFishDropCount = 1.

Лучше оставлять 1.
RateClanRepScore = 1.
RateManor = 1

Сторонний модификатор, RateDropItems также учитывается
RateDropCommonItems = 1.

Для высоких рейтов лучше false
DropCalculationPrecise = true

ClanRep ammounts with absolute values larger than this will not be affected by rate
# Useful for keeping untouched “classic big” amounts (such as academy/castle/CH/etc. rewards and penalties) while still rating clan wars and sieges.
RateClanRepScoreMaxAffected = 2

Множитель регенерации HP для рейдов
RateRaidRegen = 1.
# Максимальная разница в уровнях между атакующими и рейдом, а так же его миньонов, при которой не применяется пенальти
RaidMaxLevelDiff = 8
# Парализовывать ли чаров если они пытаются бить рейдов слишком маленького для себя уровня
ParalizeOnRaidLevelDiff = true

Автоудаление лежащих на земле вещей, время в секундах, 0 – не удалять, рекомендуется 600 (10 минут)
AutoDestroyDroppedItemAfter = 600
# Отдельная настройка для выброшенного игроком или выпавшего с ПК
AutoDestroyPlayerDroppedItemAfter = 7200

Склад и фрахт, можно выключить, если захочется
AllowWarehouse = True
AllowFreight = True

Можно ли игрокам кидать вещи на землю
AllowDiscardItem = True

Включена ли вода (если включена геодата обязательно включить)
AllowWater = True

Выдавать ли всем игрокам права администратора (удобно для тестовых серверов)
# Шаблон с привилегиями находятся в файле GMAccess.xml, для PlayerID set=”0″
EverybodyHasAdminRights = False

Разрешать ли всем игрокам специальные команды (начинаются с ///)
AllowSpecialCommands = False

Punishment if account using l2walker and is not GM, AllowL2Walker = False
# 0 – none
# 1 – kick
# 2 – ban
L2WalkerPunishment = 0
BugUserPunishment = 2
IllegalActionPunishment = 1

Использование глобальных чатов.
# В качестве параметра уровень чара, начиная с которого ему разрешено использовать общий чат.
# Офф-лайк: 999, по умолчанию 0.
# Shout Chat usabiliy
GlobalChat = 0
# Trade Chat usability
GlobalTradeChat = 0

При отключенном глобальном чате (GlobalChat = 999)
# Режим 1 – слышно в соседних регионах, расстояние до 8000
# Режим 2 – слышно во всех локациях, принадлежащих текущему городу
ShoutChatMode = 1
# То же самое для трейда
TradeChatMode = 1

Logging ChatWindow
LogChat = True
LogKills = True
SqlLog = False

Filter mats in chat.Timer_to_UnBan – time banned in minuts.
MAT_BANCHAT = False
# PARTY (3) CLAN (4) ALLIANCE (9) SHOUT (1) TELL (2) GM (5) PETITION_PLAYER (6)
# PETITION_GM (7) TRADE (8) COMMANDCHANNEL_ALL (15) COMMANDCHANNEL_COMMANDER (16)
# HERO_VOICE (17) (default = 0 (global only))
# For use global and party or any other type MAT_BAN_CHANNEL = 0,3,4 etc
MAT_BAN_CHANNEL = 0
Timer_to_UnBan = 5
# Не банить за мат но просто блокировать сообщения, если true то MAT_BANCHAT игнорируется
MAT_REPLACE = False
MAT_REPLACE_STRING = [censored]

#Показывать анонс при выполнении команды nochannel
MAT_ANNOUNCE = true
#Показывать ник модератора в анонсе
MAT_ANNOUNCE_NICK = true

=================================================================
# Community board configuration
# =================================================================
AllowCommunityBoard = True
BBSDefault = _bbshome
CommunityBoardHtmlRoot = data/html/CommunityBoard/
CommunityBoardSortPlayersList = False
NamePageSizeOnCommunityBoard = 50
NamePerRowOnCommunityBoard = 5
# время кеширования списка игроков (но не для ГМов) в секундах, полезно при CommunityBoardSortPlayersList = True и при онлайне от пары сотен
CommunityBoardPlayersListCache = 0
# Кому можно показывать список игроков онлайн (закладка “Регион”), варианты: all, GM, none
AllowCommunityBoardPlayersList = all

Minimum and maximum variable in seconds for npc animation delay.
# You must keep MinNPCAnimation <= MaxNPCAnimation.
# “0” is default value.
MinNPCAnimation = 30
MaxNPCAnimation = 90

Можно использовать имя и/или титул NPC установленый в бд сервера вместо клиентского
# По умолчанию выключено и используются клиентские
ServerSideNpcName = False
ServerSideNpcTitle = False
# Показывать уровень, агрессивность и социальность монстров в титуле, требует для работы ServerSideNpcTitle
ServerSideNpcTitleWithLvl = False

Удалять мусор в записях состояний квестов, лучше включить
AutoDeleteInvalidQuestData = True

Уделение из базы ничьих вещей, кланов без лидера итп
### Рекомендуется делать это вручную предварительно запасшись бэкапом
### Некритичная информация (ярлыки, сохраненные эффекты) удаляются в любом случае
# HardDbCleanUpOnStart = False

Не трогайте эти настройки если не знаете что они делают
ThreadPoolSizeGeneral = 15
ThreadPoolSizeMove = 25
ThreadPoolSizeEffects = 10
GeneralPacketThreadCoreSize = 4
UrgentPacketThreadCoreSize = 2
NpcAiMaxThread = 10
PlayerAiMaxThread = 20

Детектор дедлоков, интервал вызова в миллисекундах
DeadLockCheck = 10000

Следующие значения могут быть изменены пользователями из игры командой .lang, устанавливается значение по умолчанию
# Язык диалогов по умолчанию, возможные варианты ru, en
DefaultLang = ru
# используется только с патчем Drina
UseClientLang = true

Таймер на удаление чаров, 0 удалять сразу
DeleteCharAfterDays = 7

Частота вызова пурджера байпасов, в секундах
PurgeTaskFrequency = 60

Проверять является ли локализованный файл более новым чем английский, и если нет показывать английский
checkLangFilesModify = False

output chat and log for telnet connection
# (in telnet you must use log_tell and log_chat options)
LogTelnet = True

Авторестарт через заданный промежуток времени, по умолчанию 24 часа,
# 0 – авторестарт через заданный промежуток времени отключен
AutoRestart = 0

Ежесуточный авторестарт по расписанию. Время рестарта по умолчанию 05:00,
# -1 – ежесуточный авторестарт отключен.
# Надо указывать ровный час суток, конструкции типа 5:30 не работают.
AutoRestartAt = 5

Кеширование диалогов, уменьшает нагрузку но затрудняет редактирвоание диалогов при работающем сервере
useFileCache = True

Путь для генерации статики внешнему вебсерверу (с / в конце)
WebServerRoot = ./webserver/
# Период генерации, 0 – отключить
WebServerDelay = 10

Hide GM status when use /gmlist or use CommunityBoard
HideGMStatus = True

Show message when GM Login and GM will not invis/silence as default
ShowGMLogin = False

Сохранять ГМам эффекты silence, gmspeed, invul и т.д.
SaveGMEffects = False

Disable Create items by Id. Example 57,4037
DisableCreateItems=

log multisell
LogMultisellId=65535,65536

Размер сектора территории. По умолчанию – 32.
LinearTerritoryCellSize = 32

Отправлять ли с после каждого удара по мобам StatusUpdate? Не рекомендуется.
ForceStatusUpdate = False

#————————————————————-
# Настройки геодаты
#————————————————————-

Отладка гео, помечает путь монетками + выводит информацию в чат
# Работает только для ГМ.
GeodataDebug = False

#————————————————————–

DamageFromFalling = True

Хост для соединения с L2J-GeoEditor
GeoEditorHost = 127.0.0.1

Zariche (default false)
AllowCursedWeapons = True
DropCursedWeaponsOnKick = False

Allow Boats
AllowBoat = True

#————————————————————-
# Weddings config
#————————————————————-
# Allow Wedding
AllowWedding = False(Включить свадьбу поставте True)
# Price in Adena
WeddingPrice = 500000
# Punish Infidelity
WeddingPunishInfidelity = True
# Allow couple teleports
WeddingTeleport = True
# Couple Teleport price
WeddingTeleportPrice = 500
# Couple Teleport tme in seconds
WeddingTeleportInterval = 120
# Same Sex Marriage
WeddingAllowSameSex = True
# Formal Wear needed ?
WeddingFormalWear = True
# Divorce Costs in %
WeddingDivorceCosts = 20

Disabling loading Quests & Spawn
# Dont load spawntable
StartWhisoutSpawn = False
StartWhisoutQuest = False

Настройка дальности видимости
# Чем меньше, тем меньше видимость, меньше нагрузка на процессор и больше расход памяти
# ShiftBy = 12 соответствует дальности 4000, 11 – 2000 и т.д.
# ShiftByForZ = 10 соответствует дальности 1000, 9 – 500 и т.д.
ShiftBy = 11
ShiftByForZ = 10

Проверка на GameGuard
GGCheck = False

#Проверка геймсервера пингом, время ожидания ответа указывается в секундах
PingServer = True
WaitPingTime = 5

#Настройка АнтиФлуда, пока экспериментально
#При включении с одного IP разрешается не более чем MaxUnhandledSocketsPerIP соединений, которые не послали ни одного пакета
#если чарез такое соединение не приходит ниодного пакета в течении UnhandledSocketsMinTTL мс. то оно закрывается
AntiFloodEnable = False
MaxUnhandledSocketsPerIP = 5
UnhandledSocketsMinTTL = 5000

Задержка на повторное использование пакетов движения и атаки
MovePacketDelay = 100
AttackPacketDelay = 50

Логирование пакетов
LogClientPackets = False
LogServerPackets = False
# Минимум байт которые должны накопится в буфере прежде чем они будут записаны на диск
LogPacketsFlushSize = 8192
# Список IP адресов которые нужно логировать (разделять запятой)
LogPacketsFromIPs =
# Список аккаунтов которые нужно логировать (разделять запятой)
LogPacketsFromAccounts =
# Список чаров которые нужно логировать (разделять запятой)
LogPacketsFromChars =

Директория для снапшотов
SnapshotsDirectory = ./log/snapshots
# Делать снапшот памяти при выключении сервера (снапшот можно анализировать потом YJP)
MemorySnapshotOnShutdown = False

Сохраняяем, и настраиваем все осталтные конфиги по своему вкусу.

6) Заходим loginconfigdefaults и копируем все в loginconfig
Открываем loginserver.properties
# ================================================================
# General server setting !!! REQUIRED to configure to everyone !!!
# ================================================================

Bind ip of the loginserver, use * to bind on all available IPs
LoginserverHostname=Your_IP
LoginserverPort=2106
LoginTryBeforeBan=20

Список внутренних адресов, так же можно использовать продвинутый список из внешнего файла,
# продвинутый список очень удобен и значительно шустрее когда много сетей, например 1000
# что бы использовать продвинутый список нужно указать в параметре строку следующего вида: “NetList@путькфайлу”
# продвинутый список должен состоять из строк следующего вида: “i1.i2.i3.i4” или “i1.i2.i3.i4/m1.m2.m3.m4” или “i1.i2.i3.i4/m”
# пример: InternalIpList=NetList@./config/InternalIPs.conf
InternalIpList=127.0.0.1,192.168.0.0-192.168.255.255,10.0.0.0-10.255.255.255,172.16.0.0-172.16.31.255

LoginHost=Your_IP
# The port on which login will listen for GameServers
LoginPort=9014

Combo mode – run GameServer inside LoginServer
ComboMode = False

If set to true any GameServer can register on your logins free slots
AcceptNewGameServer = False

If false, the licence (after the login) will not be shown
# Даная опция присылает клиенту 2 дополнительных ключа при авторизации
# Если вы ее отключаете, и у вас ухитрились залезсть с подменой ака, то потом не жалуйтесь.
ShowLicence = True

Database info
Driver=com.mysql.jdbc.Driver
URL=jdbc:mysql://localhost/l2jdb
Login=root
Password=Your_pass_Mysql
MaximumDbConnections=10
# Через сколько секунд после последней активности будут закрыватся соединения с базой, по умолчанию 600 (10 минут)
# данный параметр важно согласовывать с настройками в самом mysql сервере, параметр interactive_timeout
# насколько известно мне по умолчанию параметр interactive_timeout имеет значение 28800 (8 часов)
MaxIdleConnectionTimeout=600
# Интервал проверки неактивных соединений, по умолчанию 60 (1 минута)
# При условии стабильного соединения с базой и корректной настроки MaxIdleConnectionTimeout, можно выставлять 0 (не проверять)
IdleConnectionTestPeriod=60

Useable values: “true” – “false”, use this option to choose whether accounts will be created
# automatically or not.
AutoCreateAccounts=false(Поставте True если хотите включить Авторег)

Define various player-typable name templates
# These ones are regular expressions, visit http://www.regular-expressions.info for details
# NOTE1: Generally checking lengths are done here, so pay them attention in templates
# NOTE2: Make sure youre know what are you doing before changing these from defaults 😉

Account name
AnameTemplate=[A-Za-z0-9]{3,14}
# Account password
ApasswdTemplate=[A-Za-z0-9]{5,16}

Актуальное шифрование, рекомендуется Whirlpool
DefaultPasswordEncoding = Whirlpool
# Поддерживаемые устаревшие методы, есть DES (офф) и SHA1 (l2j)
LegacyPasswordEncoding = SHA1;DES

Allow old authentication method (w/o RSA encryption)
AllowOldAuth = False

Кешированые ключи
BlowFishKeys = 20
RSAKeyPairs = 10

==============================================================
# Test server setting, shoudnt be touched in online game server
# ==============================================================

Debug = False

Logging Logins into DB
SqlLog = False

IpUpdateTime = 15

Проверка на GameGuard
GGCheck = True(Поставте False если хотите отключит ГеймГвард)

AutoRestart period, hours
# Default -1
AutoRestart = -1

#Настройка АнтиФлуда, пока экспериментально
#При включении с одного IP разрешается не более чем MaxUnhandledSocketsPerIP соединений, которые не послали ни одного пакета
#если чарез такое соединение не приходит ниодного пакета в течении UnhandledSocketsMinTTL мс. то оно закрывается
AntiFloodEnable = False
MaxUnhandledSocketsPerIP = 5
UnhandledSocketsMinTTL = 5000

7)Качаем Navicat
Устанавливаем выбираем:
Установка сервера Lineage II Gracia Final

Установка сервера Lineage II Gracia Final
Вводим имя базы L2jdb Жмем “ок”
@echo off
TITLE L2 Phoenix Setup
REM ######################################## Automatic updater for L2 Phoenix – Do not edit !!!
goto answer%ERRORLEVEL%
:answerTrue
set fastend=yes
goto upgrade_db
:answer0
set fastend=no

set user=root
set pass=Your_pass_for_MysqL
set DBname=l2jdb
set DBHost=localhost

Готово.