Lineage 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
Готово.