commit b30218ee44cf8ff0bcf6d07c66029f65cfd7f7aa Author: Alexander Zhirov Date: Wed Dec 15 20:53:25 2021 +0300 Release of the build version for x86-64 diff --git a/Dockerfile.game b/Dockerfile.game new file mode 100644 index 0000000..febe78b --- /dev/null +++ b/Dockerfile.game @@ -0,0 +1,16 @@ +FROM ubuntu:xenial + +RUN apt-get update \ + && apt-get install -y curl \ + && curl -O https://ftp.zhirov.website/program/Games/Lineage_2/server/Docker/x86-64/jre-8u311-linux-x64.tar.gz \ + && tar xfz jre-8u311-linux-x64.tar.gz -C /opt/ \ + && rm jre-8u311-linux-x64.tar.gz \ + && curl -O https://ftp.zhirov.website/program/Games/Lineage_2/server/Docker/x86-64/game.tar.gz \ + && tar xfz game.tar.gz -C /opt/ \ + && rm game.tar.gz + +ENV JAVA_HOME /opt/jre1.8.0_311 +ENV PATH $PATH:$JAVA_HOME/bin + +WORKDIR /opt/game +CMD ["sh", "gs_loop.sh"] diff --git a/Dockerfile.login b/Dockerfile.login new file mode 100644 index 0000000..75d6736 --- /dev/null +++ b/Dockerfile.login @@ -0,0 +1,16 @@ +FROM ubuntu:xenial + +RUN apt-get update \ + && apt-get install -y curl \ + && curl -O https://ftp.zhirov.website/program/Games/Lineage_2/server/Docker/x86-64/jre-8u311-linux-x64.tar.gz \ + && tar xfz jre-8u311-linux-x64.tar.gz -C /opt/ \ + && rm jre-8u311-linux-x64.tar.gz \ + && curl -O https://ftp.zhirov.website/program/Games/Lineage_2/server/Docker/x86-64/login.tar.gz \ + && tar xfz login.tar.gz -C /opt/ \ + && rm login.tar.gz + +ENV JAVA_HOME /opt/jre1.8.0_311 +ENV PATH $PATH:$JAVA_HOME/bin + +WORKDIR /opt/login +CMD ["sh", "ls_loop.sh"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..a356692 --- /dev/null +++ b/README.md @@ -0,0 +1,97 @@ +# Сервер Lineage II Chronicle 4: Scions of Destiny (x86-64) + +![game](img/game.jpg) + +* [Описание сборки](#описание-сборки) + * [Содержание сборки](#содержание-сборки) + * [Локальная версия сборки](#локальная-версия-сборки) + * [Настройки](#настройки) +* [Запуск игрового сервера](#запуск-игрового-сервера) +* [Подключение к серверу](#подключение-к-серверу) +* [Источник](#источник) + +## Описание сборки + +При запуске `docker-compose.yml` подымаются 4 контейнера: + + - `l2login` - сервер авторизации учетных записей игроков + - `l2game` - игровой сервер + - `l2mariadb` - система управления базами данных + - `l2adminer` - менеджер баз данных + +### Содержание сборки + + - [`Dockerfile.game`](Dockerfile.game) - сборка контейнера **l2game** + - [`Dockerfile.login`](Dockerfile.login) - сборка контейнера **l2login** + - [`l2.sql.gz`](l2.sql.gz) - чистый бэкап базы данных для сервера + - [`config/game`](config/game) - содержит конфигурационные файлы для контейнера **l2game** + - [`config/login`](config/login) - содержит конфигурационные файлы для контейнера **l2login** + +### Локальная версия сборки + +Для использования локальной версии сборки использовать подготовленный [архив](https://ftp.zhirov.website/program/Games/Lineage_2/server/Docker/x86-64.tar.gz). + +### Настройки + +В конфигурационных файлах + +``` +config/game/network/database.properties +config/login/network/database.properties +``` + +по умолчанию указана база данных с именем `l2db` (которую нужно будет создать после запуска стека). Подключение происходит по имени контейнера `l2mariadb` в общей сети (для всех контейнеров) `l2_net`. \ +Пользователь для подключения к базе данных по умолчанию `root`, пароль (по умолчанию - `password`) необходимо сменить на свой, сделать это во всех трёх файлах: + +``` +config/game/network/database.properties +config/login/network/database.properties +docker-compose.yml +``` + +В файле + +``` +config/game/network/game.properties +``` + +`LoginHost` ссылается на контейнер `l2login` вместо IP-адреса. \ +`ExternalHostname` для публичного (белого) IP-адреса, выданного провайдером - для игры через интернет. \ +`InternalHostname` для IP-адреса ПК/сервера в локальной сети, на котором поднят стек серверов - для игры по локальной сети. + +Остальные настройки по усмотрению. + +## Запуск игрового сервера + +1. `git clone https://git.zhirov.website/alexander/lineage-2-server.git` +2. Сконфигурировать файлы в `config` и/или `docker-compose.yml` +2. `docker-compose build .` +3. `docker-compose up -d` +4. Открыть в браузере `IP-адрес:8081`, по умолчанию `127.0.0.1:8081`. Первый запуск контейнера `l2mariadb` будет долгим, нужно подождать перед авторизацией + +![L2 File Editor](img/login_db.png) + +5. Авторизоваться на сервере `l2mariadb` с учетными данными (возможно измененными) `root:password` +6. Создать базу данных `l2db` + +![L2 File Editor](img/create_db.png) + +7. Загрузить бэкап с файла `l2.sql.gz` + +![L2 File Editor](img/import_backup.png) + +8. Перезапустить стек серверов `docker-compose restart` + +## Подключение к серверу + +Для подключения к серверу необходимо иметь правильно-сконфигурированный файл `l2.ini`, который находится в игровой директории `system`. Для редактирования данного файла использовать утилиту [L2 File Editor](https://github.com/L2Miko/L2FileEdit) ([другой источник](https://ftp.zhirov.website/program/Games/Lineage_2/L2FileEdit-master.zip)). **ВАЖНО!** Для редактирования файла необходимо, чтобы в путях использования самой программы и файла отсутствовали символы кириллицы, иначе программа будет выдавать ошибку декодирования. + +![L2 File Editor](img/l2_file_editor.png) + + 1. Путь без символов кириллицы (возможно и без использования символов отступа) + 2. Файл `l2.ini` из игровой директори `system` + 3. Указать глобальный или локальный IP-адрес игрового сервера + +## Источник + +Данная Docker-сборка основана на сборке сервера с сайта [vlemon.info](https://www.vlemon.info/article/934-sozdanie-servera-lineage-2-scions-of-destiny-c4.html). Приветствуется апгрейд/улучшение данной Docker-сборки. \ No newline at end of file diff --git a/config/game/general/administration.properties b/config/game/general/administration.properties new file mode 100644 index 0000000..001164e --- /dev/null +++ b/config/game/general/administration.properties @@ -0,0 +1,480 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +# =========================================== # +# Настройки администраторов +# =========================================== # +# Выдавать всем вошедшим в игру права админа +EverybodyHasAdminRights = false + +# Наказывать игрока если тот купил предмет за 0 аден +OnlyGMItemsFree = true + +# Красить ник ГМам? +GMNameColorEnabled = true + +# Цвет ника у Админов +AdminNameColor = 00FF00 + +# Цвет ника у ГМов +GMNameColor = FFCC00 + +# Хиро аура у админов +GMHeroAura = false + +# Делать админов неуязвимыми +GMStartupInvulnerable = false + +# Делать админов невидимыми +GMStartupInvisible = false + +# Отказ от сообщений при входе в игру +GMStartupSilence = false + +# Показывать админов и гмов в /gmlist +GMStartupAutoList = true + +# Альтернативные привилегии для ГМов +AltPrivilegesAdmin = false +AltPrivilegesSecureCheck = true +AltPrivilegesDefaultLevel = 100 + +# Разрешить игрокам писать петиции ГМам +PetitioningAllowed = true + +# Макс. кол-во петиций для одного игрока +MaxPetitionsPerPlayer = 5 + +# Макс. кол-во петиций за сутки +MaxPetitionsPending = 25 + +# Логгировать действия ГМов +GMAudit = false + +# =========================================== # +# Configure GM AccessLevels +# =========================================== # +GMAccessLevel = 100 +GMMinLevel = 100 +GMCanAnnounce = 100 +GMCanBan = 100 +GMCanBanChat = 100 +GMCanShop = 100 +GMCanDelete = 100 +GMCanKick = 100 +GMMenu = 100 +GMGodMode = 100 +GMCanEditChar = 100 +GMCanEditCharOther = 100 +GMCanViewChar = 100 +GMCanEditNPC = 100 +GMCanViewNPC = 100 +GMCanTeleport = 100 +GMCanTeleportOther = 100 +GMCanRestart = 100 +GMMonsterRace = 100 +GMRider = 100 +GMFastUnstuck = 100 +GMResurectFixed = 100 +GMEnchant = 100 +GMDoor = 100 +GMRes = 100 +GMPeaceAttack = 100 +GMHeal = 100 +GMUnblock = 100 +GMCache = 100 +GMTalkBlock = 100 +GMTest = 100 + +# Disable Transaction +# false = Transaction enable for GM +# Max,Min = Transaction disable for this range +GMDisableTransaction = false + +# Alternative Configure GM commands access level +# +# This file only read if "AltPrivilegesAdmin = true"!!! +# +# Information: +# 1) If AltPrivilegesSecureCheck = true +# Every commands need a entry in this file, else the command cannot be executed. +# else if a command haven't got a entry in this file the minimun access level is +# AltPrivilegesDefaultLevel (default = 100) +# 2) Some commands need a correct access level on GM Access table too, like: +# the commands contained into AdminEditChar.java,AdminEditNpc.java,AdminSpawn.java files + +admin_admin = 100 +admin_admin2 = 100 + +# =========================================== # +# COMMON COMMANDS +# =========================================== # +admin_delete = 100 +admin_gmshop = 100 +admin_heal = 75 +admin_help = 75 +admin_vis = 75 +admin_invis = 75 +admin_invul = 75 +admin_setinvul = 100 +admin_kill = 75 +admin_res = 75 +admin_silence = 75 +admin_target = 75 + +# =========================================== # +# CHAR MANAGEMENT +# =========================================== # +admin_ban = 100 +admin_banchat = 75 +admin_jail = 100 +admin_character_disconnect = 75 +admin_kick = 75 +admin_unban = 100 +admin_unbanchat = 75 +admin_unjail = 100 + +# =========================================== # +# CLAN HALL +# =========================================== # +admin_clanhall = 100 +admin_clanhalldel = 100 +admin_clanhallset = 100 +admin_clanhallopendoors = 100 +admin_clanhallteleportself = 100 + +# =========================================== # +# ANNOUNCEMENT +# =========================================== # +admin_add_announcement = 100 +admin_announce = 75 +admin_announce_announcements = 75 +admin_announce_menu = 75 +admin_del_announcement = 100 +admin_list_announcements = 75 +admin_reload_announcements = 100 + +# =========================================== # +# RELOAD COMMANDS +# =========================================== # +admin_cache_htm_rebuild = 100 +admin_cache_htm_reload = 100 +admin_cache_crest_fix = 100 +admin_cache_crest_rebuild = 100 +admin_cache_crest_reload = 100 + +admin_quest_reload = 100 +admin_teleport_reload = 100 +admin_spawn_reload = 100 +admin_zone_reload = 100 +# script-load (as opposed to reload) can be dangerous...use with caution +admin_script_load = 1000 + +# =========================================== # +# DOOR CONTROL +# =========================================== # +admin_close = 75 +admin_closeall = 100 +admin_open = 75 +admin_openall = 100 + +# =========================================== # +# CHAR MODIFICATION +# =========================================== # +admin_add_exp_sp = 100 +admin_add_exp_sp_to_character = 100 +admin_add_level = 100 +admin_set_level = 100 +admin_character_list = 75 +admin_current_player = 75 +admin_edit_character = 100 +admin_find_character = 75 +admin_nokarma = 100 +admin_rec = 75 +admin_repair = 75 +admin_restore = 75 +admin_setew = 100 +admin_setkarma = 100 +admin_save_modifications = 100 +admin_setcolor = 75 +admin_setname = 100 +admin_setsex = 100 +admin_settitle = 75 +admin_show_characters = 75 +admin_diet = 75 +admin_fullfood = 75 + +# =========================================== # +# EDIT NPC +# =========================================== # +admin_edit_npc = 100 +admin_save_npc = 100 +admin_show_droplist = 100 +admin_edit_drop = 100 +admin_add_drop = 100 +admin_del_drop = 100 +admin_showShop = 100 +admin_showShopList = 100 +admin_addShopItem = 100 +admin_delShopItem = 100 +admin_box_access = 100 +admin_editShopItem = 100 + +# =========================================== # +# EFFECTS +# =========================================== # +admin_atmosphere = 75 +admin_invisible = 75 +admin_visible = 75 +admin_earthquake = 75 +admin_bighead = 100 +admin_shrinkhead = 100 +admin_gmspeed = 75 +admin_unpara_all = 100 +admin_para_all = 100 +admin_unpara = 100 +admin_para = 100 +admin_polymorph = 75 +admin_polyself = 75 +admin_unpolyself = 75 +admin_clearteams = 100 +admin_setteam_close = 100 +admin_setteam = 100 + +# =========================================== # +# ENCHANT MENU +# =========================================== # +admin_seteh = 100 +admin_setec = 100 +admin_seteg = 100 +admin_setel = 100 +admin_seteb = 100 +admin_setes = 100 +admin_setle = 100 +admin_setre = 100 +admin_setlf = 100 +admin_setrf = 100 +admin_seten = 100 +admin_setun = 100 +admin_setba = 100 +admin_enchant = 100 + +# =========================================== # +# EVENT +# =========================================== # +admin_event = 100 +admin_event_new = 100 +admin_event_choose = 100 +admin_event_store = 100 +admin_event_set = 100 +admin_event_change_teams_number = 100 +admin_event_announce = 100 +admin_event_panel = 100 +admin_event_control_begin = 100 +admin_event_control_teleport = 100 +admin_add = 100 +admin_event_see = 100 +admin_event_del = 100 +admin_delete_buffer = 100 +admin_event_control_sit = 100 +admin_event_name = 100 +admin_event_control_kill = 100 +admin_event_control_res = 100 +admin_event_control_poly = 100 +admin_event_control_unpoly = 100 +admin_event_control_prize = 100 +admin_event_control_chatban = 100 +admin_event_control_finish = 100 + +# =========================================== # +# SERVER SETTINGS +# =========================================== # +admin_server_shutdown = 100 +admin_server_restart = 75 +admin_server_abort = 75 +admin_server_gm_only = 100 +admin_server_all = 100 +admin_server_max_player = 100 +admin_server_list_clock = 100 +admin_server_login = 100 + +# =========================================== # +# MENU +# =========================================== # +admin_char_manage = 75 +admin_teleport_character_to_menu = 75 +admin_recall_char_menu = 75 +admin_goto_char_menu = 75 +admin_kick_menu = 75 +admin_kill_menu = 100 +admin_ban_menu = 100 +admin_unban_menu = 100 + +# =========================================== # +# MOB GROUP +# =========================================== # +admin_mobmenu = 100 +admin_mobgroup_create = 100 +admin_mobgroup_spawn = 100 +admin_mobgroup_unspawn = 100 +admin_mobgroup_kill = 100 +admin_mobgroup_idle = 100 +admin_mobgroup_attack = 100 +admin_mobgroup_rnd = 100 +admin_mobgroup_return = 100 +admin_mobgroup_follow = 100 +admin_mobgroup_casting = 100 +admin_mobgroup_nomove = 100 +admin_mobgroup_attackgrp = 100 +admin_mobgroup_invul = 100 +admin_mobinst = 100 +admin_mobgroup_remove = 100 + +# =========================================== # +# PATH NODE +# =========================================== # +admin_pn_info = 100 +admin_show_path = 100 +admin_path_debug = 100 +admin_show_pn = 100 +admin_find_path = 100 + +# =========================================== # +# RIDE +# =========================================== # +admin_ride_wyvern = 75 +admin_ride_strider = 75 +admin_unride_wyvern = 75 +admin_unride_strider = 75 +admin_unride = 75 + +# =========================================== # +# SIEGE +# =========================================== # +admin_siege = 100 +admin_add_attacker = 100 +admin_add_defender = 100 +admin_add_guard = 100 +admin_list_siege_clans = 100 +admin_clear_siege_list = 100 +admin_move_defenders = 100 +admin_spawn_doors = 100 +admin_endsiege = 100 +admin_startsiege = 100 +admin_setcastle = 100 + +# =========================================== # +# SKILL +# =========================================== # +admin_show_skills = 100 +admin_remove_skills = 100 +admin_skill_list = 100 +admin_skill_index = 100 +admin_add_skill = 100 +admin_remove_skill = 100 +admin_get_skills = 100 +admin_reset_skills = 100 +admin_give_all_skills = 100 +admin_remove_all_skills = 100 + +# =========================================== # +# SPAWN +# =========================================== # +admin_mammon_find = 75 +admin_mammon_respawn = 75 +admin_list_spawns = 75 +admin_show_spawns = 75 +admin_spawn = 100 +admin_spawn_index = 100 +admin_spawn_monster = 100 +admin_respawnall = 100 +admin_unspawnall = 100 + +# =========================================== # +# TELEPORT +# =========================================== # +admin_show_moves = 75 +admin_show_moves_other = 75 +admin_show_teleport = 75 +admin_teleport_to_character = 75 +admin_teleportto = 75 +admin_move_to = 75 +admin_teleport_character = 75 +admin_recall = 75 +admin_walk = 75 +admin_explore = 75 +admin_recall_npc = 100 +admin_gonorth = 75 +admin_gosouth = 75 +admin_goeast = 75 +admin_gowest = 75 +admin_goup = 75 +admin_godown = 75 +admin_tele = 75 +admin_teleto = 75 + +# =========================================== # +# TEST COMMANDS +# =========================================== # +admin_known = 100 +admin_mp = 100 +admin_msg = 100 +admin_skill_test = 75 +admin_st = 75 +admin_stats = 100 +admin_test = 100 + +# =========================================== # +# PETITIONS +# =========================================== # +admin_accept_petition = 75 +admin_reject_petition = 75 +admin_reset_petitions = 100 +admin_view_petition = 75 +admin_view_petitions = 75 + +# =========================================== # +# GM SETTINGS +# =========================================== # +admin_changelvl = 100 +admin_gm = 75 +admin_gmchat = 75 +admin_gmlistoff = 75 +admin_gmliston = 75 +admin_snoop = 75 + +# =========================================== # +# MISCELLANEOUS +# =========================================== # +admin_buy = 100 +admin_create_item = 100 +admin_itemcreate = 100 +admin_play_sound = 75 +admin_play_sounds = 75 +admin_pledge = 100 +admin_set = 100 +admin_tradeoff = 75 +admin_unblockip = 100 + + +# =========================================== # +# GEODATA +# =========================================== # +admin_geo_pos = 100 +admin_geo_spawn_pos = 100 +admin_geo_can_see = 100 +admin_geo_can_move = 100 +admin_geoeditor_connect = 100 +admin_geoeditor_join = 100 +admin_geoeditor_leave = 100 + +# =========================================== # +# MANOR +# =========================================== # +admin_manor_info = 75 +admin_manor_setnext = 100 +admin_manor_approve = 100 +admin_manor_disable = 100 +admin_manor_setmaintenance = 100 +admin_manor_save = 75 \ No newline at end of file diff --git a/config/game/general/altsettings.properties b/config/game/general/altsettings.properties new file mode 100644 index 0000000..790dba9 --- /dev/null +++ b/config/game/general/altsettings.properties @@ -0,0 +1,359 @@ +# =========================================== # +# Java-Build Dev. Team # +# =========================================== # + +# Автолут дропа с мобов +AutoLoot = false + +# Автолут с рейд и эпик боссов +AutoLootRaids = false + +# Автоизучение умений. +# Впишите True для включения, False - для отключения +AutoLearnSkills = false + +# Автоизучение умений полученных после 3-й профессии +# Впишите True для включения, False - для отключения +AutoLearn3rdClassSkills = false + +# Дистанция на получение опыта в партии. Дефолт - 1600 +AltPartyRange = 1600 + +# Аналогично, от кол-ва человек в партии. Если 2 то 1400 +AltPartyRange2 = 1400 + +# Разрешить понижение уровня персонажа при потере XP +# по умолчанию - включено ('True') +Delevel = true + +# Множитель переносимого веса игроком +AltWeightLimit = 1 + +# Если выключено, урон магией будет наноситься с вероятностью 100% +# по умолчанию - включено ('true') +MagicFailures = true + +# Альтернативное окончание атаки (bow, cast, all) +AltGameCancelByHit = cast + +# Процент удачного блока щитом.werDef) +AltPerfectShieldBlockRate = 5 + +# Альтернативный фрахт. Если включено, фрахты могут быть отправлены из любого места. +# Так же можно изменять стоимость фрахта (в аденах) для каждого слота фрахта. +# ВНИМАНИЕ: AltGameFreightPrice НЕ БУДЕТ изменять цену для игрока, +# но с игрока будет взыматься стоимость, указанная здесь. +# Включение альтернативного фрахта (стандартно False) +AltGameFreights = false +AltGameFreightPrice = 1000 + +# Альтернативный расчет Xp/Sp, если не 0, тогда расчитывается как 2^((mob.level-player.level) / coef), +# Несколько примеров для "AltGameExponentXp = 5." и "AltGameExponentSp = 3." +# 0 (игрок и моб имеют одинаковый уровень), XP bonus rate = 1, SP bonus rate = 1 +# 3 (моб на 3 уровня выше), XP bonus rate = 1.52, SP bonus rate = 2 +# 5 (моб на 5 уровней выше), XP bonus rate = 2, SP bonus rate = 3.17 +# -8 (моб на 8 уровней ниже), XP bonus rate = 0.4, SP bonus rate = 0.16 +AltGameExponentXp = 0 +AltGameExponentSp = 0 + +# Использование усталости (вместо CP) +AltGameTiredness = false + +# Игрока с кармой можно убить в безопасной зоне? +AltKarmaPlayerCanBeKilledInPeaceZone = false + +# Игрок с кармой может покупать? +AltKarmaPlayerCanShop = true + +# Игрок с кармой может использовать СОЕ или ретюрн? +AltKarmaPlayerCanTeleport = true + +# Игрок с кармой может использовать ГейтКиперов? +AltKarmaPlayerCanUseGK = false + +# Игрок с кармой может торговать? +AltKarmaPlayerCanTrade = true + +# Игрок с кармой может использовать Warehouse? +AltKarmaPlayerCanUseWareHouse = true + +# Разрешить бесплатную телепортацию по всему миру +AltFreeTeleporting = false + +# До какого уровня за телепорт не будет взыматься плата? +FreeTeleportLvl = 60 + +# Если включено, то персонажа могут рекомендовать не более 2х раз в день +AltRecommend = false + +# =========================================== # +# Настройка крафта +# =========================================== # +# Крафт вкл/выкл +CraftingEnabled = true + +# Лимит рецептов (по умолчанию: 50 - гномы , 50 - остальные) +DwarfRecipeLimit = 50 +CommonRecipeLimit = 50 + +# Правила крафта: +# - Время крафта +# - получение EXP/SP +AltGameCreation = false + +# Чем больше число тем дольше длится крафт +AltGameCreationSpeed = 1 + +# Рейты крафта (по умолчанию 1) +AltGameCreationRateXp = 1 +AltGameCreationRateSp = 1 + +# Для изучения навыков требуется книга навыков +SpBookNeeded = true + +# Для заточки скилов нужна книга гигантов? +EnchantSkillSpBookNeeded = true + +# Правила изучения Альтернативных навыков +# - все классы могут изучить все навыки +# - навыки другого класса стоят x2 SP +# - навыки другой рассы стоят x2 SP +# - навыки борцов/волшебников стоят x3 SP +AltGameSkillLearn = false + +# Максимальное кол-во слотов под баф (Клиент поддерживает 30 слотов) +MaxBuffsSlots = 20 + +# =========================================== # +# Саб-классы +# =========================================== # +# Активировать функцию получения всех сабклассов у любого мастера? +SubClassesEveryWhere = false + +# Макс. кол-во саб-классов +AltMaxSubClasses = 3 + +# Саб-класс без квеста +AltSubClassWithoutQuests = false + +# Сохранять скилы от саб-классов на основном классе? +KeepSubClassSkills = false + +# Уровень у новых игроков? +StartingLevel = 1 + +# Уровень у добавленного саб-класса +StartingSubclassLevel = 40 + +# Включить обучение новичков при входе в игру? +AltEnableTutorial = true + +# Минимальное кол-во пати для активации командного канала +AltChannelActivationCount = 5 + +# =========================================== # +# Настройки клана +# =========================================== # +# Если вышел с клана, сколько ждать чтобы войти снова? (в сутках) +DaysBeforeJoinAClan = 5 + +# Если распустил клан, сколько ждать чтобы создать новый(в сутках) +DaysBeforeCreateAClan = 10 + +# Кол-во дней, пока клан будет "распускатся"(в сутках) +DaysToPassToDissolveAClan = 7 + +# - dissolving again +DaysToPassToDissolveAgain = 7 + +# Время, через которое можно присоеденится к другому альянсу кланом, после выхода из старого(в сутках) +DaysBeforeJoinAllyWhenLeaved = 1 + +# Number of days before joining a new alliance when clan was dismissed from an alliance +DaysBeforeJoinAllyWhenDismissed = 1 + +# Number of days before accepting a new clan for alliance when clan was dismissed from an alliance +DaysBeforeAcceptNewClanWhenDismissed = 1 + +# Number of days before creating a new alliance when dissolved an alliance +DaysBeforeCreateNewAllyWhenDissolved = 10 + +# Максимальное число кланов в альянсе. +AltMaxNumOfClansInAlly = 12 + +# Кол-во необходимых членов клана для начала войны с другим кланом. +AltClanMembersForWar = 15 + +# Если человек создал на том же акк чара, будет ли он newbie(для бафа ну и т д). +AltNewCharAlwaysIsNewbie = false + +# Интервал между осадами, по умолчанию 14 дней +SiegeInvterval = 14 + +# =========================================== # +# Настройки Олимпиады +# =========================================== # +# Во сколько часов по системному времени(на вашем компьютере) начнется олимп. Пример : 15 часов +AltOlyStartTime = 15 + +# Минуты, когда начнется олимп. Пример : 00. Более подробно - опции AltOlyStartTime и AltOlyMin это час и минуты когда запустится олимпиада. +AltOlyMin = 00 + +# Период прохождения олимпиады. по умолчанию 11 часов 50 минут +AltOlyCPeriod = 43200000 + +# Время драки на арене олимпа. 3 минуты (Должно быть меньше чем AltOlyBWait) +AltOlyBattle = 180000 + +# Полный период - время драки + ожидание (по умолчанию 10 минут) +AltOlyBWait = 600000 + +# Ожидание боя (по умолчанию 5 минут) +AltOlyIWait = 300000 + +# Недельный период олимпиады (по умолчанию 1 неделя) +AltOlyWPeriod = 604800000 + +# Период варификации - 24 часа. +AltOlyVPeriod = 86400000 + +# Минимальное количиство зарегистрированых для начала боя, По умолчянию 5 и 9 +AltOlyClassedParticipants = 5 +AltOlyNonClassedParticipants = 9 + +# Награда для победивших в класовых и некласовых боях. +# По умолчянию 6651(Gate Pass) +AltOlyBattleRewItem = 6651 + +# По умолчянию 50 для класовых +AltOlyClassedRewItemCount = 50 + +# По умолчянию 30 для не класовых +AltOlyNonClassedRewItemCount = 30 + +# Награды за битвы +# Минимальное количиство очков для обмены "nobless gate pass", По умолчанию 50 +AltOlyMinPointForExchange = 50 + +# ИД награды, По умолчянию 6651(Gate Pass) +AltOlyCompRewItem = 6651 + +# Рейт обмена очков, По умолчянию 1 очко * 1000 +AltOlyGPPerPoint = 1000 + +# Количество очков даваемых Герою. По умолчянию 300 +AltOlyHeroPoints = 300 + +# Максимально допустимое значение енчанта на олимпе +# Если енчант больше [OlyMaxAllowedEnchantValue], то статы сбрасываются на предмет +[OlyMaxAllowedEnchantValue] +OlyMaxAllowedEnchantValue = -1 + +# Список запрещенных вещей на олимпиаде (например id вещей 1,200,350) +AltOlyRestrictedItems = 0 + +# Восстанавливать скилы после телепорта на арену? +AltOlyRechargeSkills = false + +# =========================================== # +# Настройки системы манора +# =========================================== # +# Время обновлений манора - часы. Здесь стоит 20 (в 8 вечера) +AltManorRefreshTime = 20 + +# Минуты для обновления манора. Пример AltManorRefreshTime+AltManorRefreshMin = 20:00 ;) +AltManorRefreshMin = 00 + +# Следущий период манора (6 часов утра) +AltManorApproveTime = 6 + +# Минуты периода(аналогично первым двум) +AltManorApproveMin = 00 + +# Время тех. обслуживания (Maintenance), по умолчянию 6 минут. +AltManorMaintenancePeriod = 360000 + +# Тип сохранения данных манора. True - сохранять после каждого действия; +# По умолчянию - false +AltManorSaveAllActions = true + +# Время сохранения данных манора (использовать только с AltManorSaveAllActions = false) +# По умолчянию каждых 2 часа +AltManorSavePeriodRate = 2 + +# =========================================== # +# Лотерея +# =========================================== # +# Джек пот лотореи +AltLotteryPrize = 50000 + +# Цена покупки билета у НПС +AltLotteryTicketPrice = 2000 + +# Часть джек пота от суммы тем, кто угадал 5 цифр +AltLottery5NumberRate = 0.6 + +# Часть джек пота тем, кто угадал 4 цифры +AltLottery4NumberRate = 0.2 + +# Часть джек пота для тех кто угада 3 цифры +AltLottery3NumberRate = 0.2 + +# Приз для тех кто угадал 2 или меньше числа. +AltLottery2and1NumberPrize = 200 + +# =========================================== # +# Four Sepulchers +# =========================================== # +# Default: 50 +TimeOfAttack = 50 + +# Default: 5 +TimeOfCoolDown = 5 + +# Default: 3 +TimeOfEntry = 3 + +# Default: 2 +TimeOfWarmUp = 2 + +# Default: 4 +NumberOfNecessaryPartyMembers = 4 + +# =========================================== # +# Настройки для разработчиков +# =========================================== # +# Не загружать квесты +AltDevNoQuests = false +# Не загружать таблицу спаунлиста +AltDevNoSpawns = false + +# =========================================== # +# Конфигурация дименшен рифта +# =========================================== # +# Минимальный размер партии для прохода в дименшен рифты( от 2х до 9) +RiftMinPartySize = 2 + +# Id Dimensional Fragment (Проходки в рифт) +DimensionalFragmentId = 7079 + +# Максимальные прыжки по комнатам. +MaxRiftJumps = 4 + +# Время до первого спавна мобов в комнате. +RiftSpawnDelay = 10000 + +# Время прыжка по комнатам. Min - минимальное, max - максимальное - выбирает rendom между ними. +AutoJumpsDelayMin = 480 +AutoJumpsDelayMax = 600 + +# Множитель времени перебывания в комнате с "Босом" +BossRoomTimeMultiply = 1.5 + +# Количество "dimension fragments" необходимых для входа, +# каждый член групы должен иметь указанное количество. +RecruitCost = 18 +SoldierCost = 21 +OfficerCost = 24 +CaptainCost = 27 +CommanderCost = 30 +HeroCost = 33 \ No newline at end of file diff --git a/config/game/general/chat.properties b/config/game/general/chat.properties new file mode 100644 index 0000000..5057551 --- /dev/null +++ b/config/game/general/chat.properties @@ -0,0 +1,33 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +# Использовать стандартный цвет (голубой) для анонсов или синий цвет? +DefaltColorAnnounce = true + +# Интервал объявления онлайна в чат +AnnounceInterval = 900000 + +# Показывать рекордный онлайн и дату рекордного онлайна? +ShowRecordOnline = true + +# Cообщать в чат, об убийстве рейд боссов? +BossKillAnnounce = false + +# Показывать дату респауна рейд босса которого убили? +ShowBossRespawnDate = false + +# Cообщать в чат, об спауне рейд боссов? +BossSpawnAnnounce = false + +# С какого уровня доступен общий чат +AllChatLevel = 1 + +# С какого уровня доступен приватный чат (ПМ) +TellChatLevel = 1 + +# С какого уровня доступен шаут чат +ShoutChatLevel = 1 + +# С какого уровня доступен торговый чат +TradeChatLevel = 1 \ No newline at end of file diff --git a/config/game/general/clanhall.properties b/config/game/general/clanhall.properties new file mode 100644 index 0000000..375f4ec --- /dev/null +++ b/config/game/general/clanhall.properties @@ -0,0 +1,186 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +# Item Id для ставки в аукционе на клан холл +ClanHallBuyItemId = 57 + +#------------------------------------------------------------- +# Clan Hall Function price +#------------------------------------------------------------- +# Parser C4 Retail server price. +# Price = 7 day(one day price = price/7) +#------------------------------------------------------------- +# Teleport Function price +#------------------------------------------------------------- +# 1st level +ClanHallTeleportFunctionFeeLvl1 = 7000 +# 2nd level +ClanHallTeleportFunctionFeeLvl2 = 14000 +# 3rd level +#ClanHallTeleportFunctionFeeLvl3 = 2100 + +# Need core support, need more information on functions in different +# Clan Hall in different Towns. +# 4th level +#ClanHallTeleportFunctionFeeLvl4 = 28000 + +#------------------------------------------------------------- +# Support magic buff price +#------------------------------------------------------------- +# 1st level +ClanHallSupportFeeLvl1 = 17500 +# 2nd level +ClanHallSupportFeeLvl2 = 35000 +# 3rd level +ClanHallSupportFeeLvl3 = 49000 +# 4th level +ClanHallSupportFeeLvl4 = 77000 +# 5th level +ClanHallSupportFeeLvl5 = 147000 +# 6th level +ClanHallSupportFeeLvl6 = 252000 +# 7th level +ClanHallSupportFeeLvl7 = 259000 +# 8th level +ClanHallSupportFeeLvl8 = 364000 + +# Need core support, need more information on functions in different +# Clan Hall in different Towns. +# 9th level +#ClanHallSupportFeeLvl9 = 469000 + +#------------------------------------------------------------- +# MpRegeneration price +#------------------------------------------------------------- +# 5% MpRegeneration +ClanHallMpRegenerationFeeLvl1 = 14000 +# 10% MpRegeneration +ClanHallMpRegenerationFeeLvl2 = 26250 +# 15% MpRegeneration +ClanHallMpRegenerationFeeLvl3 = 45500 +# 30% MpRegeneration +ClanHallMpRegenerationFeeLvl4 = 96250 +# 40% MpRegeneration +ClanHallMpRegenerationFeeLvl5 = 140000 + +# Need core support, need more information on functions in different +# Clan Hall in different Towns. +# 20% MpRegeneration +#ClanHallMpRegenerationFeeLvl? = 59500 +# 25% MpRegeneration +#ClanHallMpRegenerationFeeLvl? = 84000 +# 35% MpRegeneration +#ClanHallMpRegenerationFeeLvl? = 129500 +# 40% MpRegeneration +#ClanHallMpRegenerationFeeLvl? = 140000 +# 45% MpRegeneration +#ClanHallMpRegenerationFeeLvl? = 182000 +# 50% MpRegeneration +#ClanHallMpRegenerationFeeLvl? = 192500 + +#------------------------------------------------------------- +# HpRegeneration price +#------------------------------------------------------------- + +# 20% HpRegeneration +ClanHallHpRegenerationFeeLvl1 = 4900 +# 40% HpRegeneration +ClanHallHpRegenerationFeeLvl2 = 5600 +# 80% HpRegeneration +ClanHallHpRegenerationFeeLvl3 = 7000 +# 100% HpRegeneration +ClanHallHpRegenerationFeeLvl4 = 8166 +# 120% HpRegeneration +ClanHallHpRegenerationFeeLvl5 = 10500 +# 140% HpRegeneration +ClanHallHpRegenerationFeeLvl6 = 12250 +# 160% HpRegeneration +ClanHallHpRegenerationFeeLvl7 = 14000 +# 180% HpRegeneration +ClanHallHpRegenerationFeeLvl8 = 15750 +# 200% HpRegeneration +ClanHallHpRegenerationFeeLvl9 = 17500 +# 220% HpRegeneration +ClanHallHpRegenerationFeeLvl10 = 22750 +# 240% HpRegeneration +ClanHallHpRegenerationFeeLvl11 = 26250 +# 260% HpRegeneration +ClanHallHpRegenerationFeeLvl12 = 29750 +# 300% HpRegeneration +ClanHallHpRegenerationFeeLvl13 = 36166 + +# Need core support, need more information on functions in different +# Clan Hall in different Towns. +# 60% HpRegeneration +#ClanHallHpRegenerationFeeLvl? = 6300 +# 280% HpRegeneration +#ClanHallHpRegenerationFeeLvl? = 33250 +# 320% HpRegeneration +#ClanHallHpRegenerationFeeLvl? = 43750 +# 340% HpRegeneration +#ClanHallHpRegenerationFeeLvl? = 49000 +# 360% HpRegeneration +#ClanHallHpRegenerationFeeLvl? = 54250 +# 380% HpRegeneration +#ClanHallHpRegenerationFeeLvl? = 59500 +# 400% HpRegeneration +#ClanHallHpRegenerationFeeLvl? = 61833 + +#------------------------------------------------------------- +# ExpRegeneration price +#------------------------------------------------------------- +# 5% ExpRegeneration +ClanHallExpRegenerationFeeLvl1 = 21000 +# 10% ExpRegeneration +ClanHallExpRegenerationFeeLvl2 = 42000 +# 15% ExpRegeneration +ClanHallExpRegenerationFeeLvl3 = 63000 +# 25% ExpRegeneration +ClanHallExpRegenerationFeeLvl4 = 105000 +# 35% ExpRegeneration +ClanHallExpRegenerationFeeLvl5 = 147000 +# 40% ExpRegeneration +ClanHallExpRegenerationFeeLvl6 = 163331 +# 50% ExpRegeneration +ClanHallExpRegenerationFeeLvl7 = 210000 +# Need core support, need more information on functions in different +# Clan Hall in different Towns. + +# 20% ExpRegeneration +#ClanHallExpRegenerationFeeLvl? = 81666 +# 30% ExpRegeneration +#ClanHallExpRegenerationFeeLvl? = 126000 +# 35% ExpRegeneration +#ClanHallExpRegenerationFeeLvl? = 147000 +# 45% ExpRegeneration +#ClanHallExpRegenerationFeeLvl? = 189000 +# 50% ExpRegeneration +#ClanHallExpRegenerationFeeLvl? = 210000 +# 55% ExpRegeneration +#ClanHallExpRegenerationFeeLvl? = 231000 +# 60% ExpRegeneration +#ClanHallExpRegenerationFeeLvl? = 245000 + +#------------------------------------------------------------- +# Creation item function +#------------------------------------------------------------- +#Time after count of Item is restored (in Hours) +#ClanHallItemCreationFunctionTaskRestore = 24 +# 1st level +ClanHallItemCreationFunctionFeeLvl1 = 210000 +# 2nd level +ClanHallItemCreationFunctionFeeLvl2 = 490000 +# 3rd level +ClanHallItemCreationFunctionFeeLvl3 = 980000 + +#------------------------------------------------------------- +# Decor function +#------------------------------------------------------------- +# Need core support, need more information on functions in different +# Clan Hall in different Towns. +# +ClanHallCurtainFunctionFeeLvl1 = 2002 +ClanHallCurtainFunctionFeeLvl2 = 2625 +ClanHallFrontPlatformFunctionFeeLvl1 = 3031 +ClanHallFrontPlatformFunctionFeeLvl2 = 9331 \ No newline at end of file diff --git a/config/game/general/enchant.properties b/config/game/general/enchant.properties new file mode 100644 index 0000000..9443235 --- /dev/null +++ b/config/game/general/enchant.properties @@ -0,0 +1,91 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +# =========================================== # +# Chance of Normal enchant scroll +# =========================================== # +# Weapon +NormalWeaponEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; +# Armor +NormalArmorEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; +# Jewelry +NormalJewelryEnchantLevel = 1,100;2,100;3,100;4,95;5,90;6,85;7,80;8,75;9,70;10,65;11,60;12,55;13,50;14,45;15,40;16,35; + +# =========================================== # +# Chance bless enchant scroll +# =========================================== # +# Weapon +BlessWeaponEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; +# Armor +BlessArmorEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; +# Jewelry +BlessJewelryEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; + +# =========================================== # +# Chance crystal scroll +# =========================================== # +# Weapon +CrystalWeaponEnchantLevel = 1,100;2,100;3,100;4,98;5,96;6,94;7,92;8,90;9,88;10,86;11,84;12,82;13,80;14,78;15,76;16,74; +# Armor +CrystalArmorEnchantLevel = 1,100;2,100;3,100;4,98;5,96;6,94;7,92;8,90;9,88;10,86;11,84;12,82;13,80;14,78;15,76;16,74; +# Jewelry +CrystalJewelryEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; + +# =========================================== # +# Шанс обынчных заточками +# =========================================== # +# Weapon +PremiumNormalWeaponEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; +# Armor +PremiumNormalArmorEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; +# Jewelry +PremiumNormalJewelryEnchantLevel = 1,100;2,100;3,100;4,95;5,90;6,85;7,80;8,75;9,70;10,65;11,60;12,55;13,50;14,45;15,40;16,35; + +# =========================================== # +# Шанс Blessed заточек +# =========================================== # +# Weapon +PremiumBlessWeaponEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; +# Armor +PremiumBlessArmorEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; +# Jewelry +PremiumBlessJewelryEnchantLevel = 1,100;2,100;3,100;4,96;5,92;6,88;7,84;8,80;9,76;10,72;11,68;12,64;13,60;14,56;15,62;16,58; + +# =========================================== # +# Шанс Crystal заточек +# =========================================== # +# Weapon +PremiumCrystalWeaponEnchantLevel = 1,100;2,100;3,100;4,98;5,96;6,94;7,92;8,90;9,88;10,86;11,84;12,82;13,80;14,78;15,76;16,74; +# Armor +PremiumCrystalArmorEnchantLevel = 1,100;2,100;3,100;4,98;5,96;6,94;7,92;8,90;9,88;10,86;11,84;12,82;13,80;14,78;15,76;16,74; +# Jewelry +PremiumCrystalJewelryEnchantLevel = 1,100;2,100;3,100;4,97;5,94;6,91;7,88;8,85;9,82;10,79;11,76;12,73;13,70;14,67;15,64;16,61; + +# При фейле сбрасывать заточку на BlessedEnchantFailedLevel +BlessedEnchantFailedLevel = 0 + +# Enchant limit [default = 0 (unlimited)] +EnchantMaxWeapon = 0 +EnchantMaxArmor = 0 +EnchantMaxJewelry = 0 + +# if EnchantSafeMax is set to for ex '8' the item will be safly enchanted to '8' +# regardless of enchant chance(default = 3 for EnchantSafeMax and default = 4 for EnchantSafeMaxFull) +# EnchantSafeMaxFull is for full body armor (upper and lower) +# SHOULD BE > 0 +EnchantSafeMax = 3 +EnchantSafeMaxFull = 4 + +# Заточки стопкой (Нужны изменения в таблице etcitem и в клиенте) +ScrollStackable = false + +# Продавать заточенные вещи через мультиселлы +EnableModifyEnchantMultisell = false + +# Номера мультиселлов в которых будут затачиваться вещи при продаже +# Например: EnchantMultisellList=1001,10;1002,5 +# Означает что в мультиселле 1001.xml все вещи при продаже будут точиться на 10 +# и в мультиселле 1002.xml соответственно точиться на 5 +# ВНИМАНИЕ! Не ставьте точку с запятой в самом конце и пишите все без пробелов! +EnchantMultisellList = 10001,0;10002,0 \ No newline at end of file diff --git a/config/game/general/geodata.properties b/config/game/general/geodata.properties new file mode 100644 index 0000000..951de09 --- /dev/null +++ b/config/game/general/geodata.properties @@ -0,0 +1,93 @@ +# =========================================== # +# Java-Build Dev. Team # +# =========================================== # + +#Grid options: Grids can now turn themselves on and off. This also affects +#the loading and processing of all AI tasks and (in the future) geodata +#within this grid. +#Turn on for a grid with a person in it is immediate, but it then turns on +#the 8 neighboring grids based on the specified number of seconds. +#Turn off for self and neighbors occurs after the specified number of +#seconds have passed during which a grid has had no players in or in +#any of its neighbors. +#The always on option allows to ignore all this and let all grids be active +#at all times (not suggested) +GridsAlwaysOn = False +GridNeighborTurnOnTime = 1 +GridNeighborTurnOffTime = 90 + +# GeoData options: +# 0 = GeoData and PathFinding OFF (default) +# 1 = GeoData used to check Line Of Sight (LOS) targetting and +# L2Playable movement. You need to download files for data/geodata folder. +# Monsters can pass walls but not aggro through them. +# 2 = Full GeoData enabled. Includes PathFinding (requires also /data/pathnode +# files if CellPathFinding not enabled) and all character moves go through +# geodata checks (if a mob passes a wall, pathfinding didn't find a route +# but we allow attack and returning home). +# Recommended server memory minimum 2 GB, rather 3 GB. +GeoData = 0 + +# GeoData driver to use +# Default: com.l2j.geodriver.GeoDriver +GeoDataDriver = com.l2j.geodriver.GeoDriver + +# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) +# heavier to calculate. Recommended for small servers at least. If False, +# pathnode files are used. Uses a max nr of nodes in calculation which can +# be adjusted in the algorithm if it needs to be faster. +CellPathFinding = false + +# Pathnode directory folder +PathnodeDirectory = ./data/pathnode + +# Pathfinding array buffers configuration +PathFindBuffers = 100x6;128x6;192x6;256x4;320x4;384x4;500x2 + +# Weight for nodes without obstacles far from walls +LowWeight = 0.5 + +# Weight for nodes near walls +MediumWeight = 2 + +# Weight for nodes with obstacles +HighWeight = 3 + +# Angle paths will be more "smart", but in cost of higher CPU utilization +AdvancedDiagonalStrategy = True + +# Weight for diagonal movement. Used only with AdvancedDiagonalStrategy = True +# Default: LowWeight * sqrt(2) +DiagonalWeight = 0.707 + +# Maximum number of LOS postfilter passes, 0 will disable postfilter. +# Default: 3 +MaxPostfilterPasses = 3 + +# Path debug function. +# Nodes known to pathfinder will be displayed as adena, constructed path as antidots. +# Number of the items show node cost * 10 +# Potions display path after first stage filter +# Red potions - actual waypoints. Green potions - nodes removed by LOS postfilter +# This function FOR DEBUG PURPOSES ONLY, never use it on the live server! +DebugPath = true + +#[True]Loads GeoData buffer's content into physical memory. +#[False] Does not necessarily imply that the GeoData buffer's content is not resident in physical memory. +ForceGeodata = False + +# This is setting of Client <--> Server Player coordinates synchronization, +# -1 - Will synchronize only Z from Client --> Server. Default when no geodata. +# 1 - Synchronization Client --> Server only. Using this option (without geodata) it is more difficult for players to bypass obstacles +# 2 - Intended for geodata (at least when cell-level pathfinding, otherwise can try -1 also)! +# Server sends validation packet if client goes too far from server calculated coordinates. +CoordSynchronize = -1 + +# Falling Damage +# Allow characters to receive damage from falling. +# CoordSynchronize = 2 is recommended. +# True - enabled. +# False - disabled. +# Auto - True if geodata enabled and False if disabled. +# Default: Auto +EnableFallingDamage = True \ No newline at end of file diff --git a/config/game/general/geodriver.properties b/config/game/general/geodriver.properties new file mode 100644 index 0000000..007a384 --- /dev/null +++ b/config/game/general/geodriver.properties @@ -0,0 +1,16 @@ +# Geodata files folder +geodataPath = ./data/geodata + +# True: Try to load regions not specified below(won't disturb server startup when file does not exist) +# False: Don't load any regions other than the ones specified with True below +tryLoadUnspecifiedRegions = True + +# List of regions to be required to load +# eg.: +# Both regions required +# 22_22=True +# 19_20=true +# Exclude region from loading +# 25_26=false +# True: Region is required for the server to startup +# False: Region is not considered to be loaded \ No newline at end of file diff --git a/config/game/general/npc.properties b/config/game/general/npc.properties new file mode 100644 index 0000000..4c261e1 --- /dev/null +++ b/config/game/general/npc.properties @@ -0,0 +1,247 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +# =========================================== # +# Класс-мастер +# =========================================== # +# Default: False +AllowClassMasters = false + +# ConfigClassMaster=1;[57(100000)];[];2;[57(1000000)];[];3;[57(10000000)],[5575(1000000)];[6622(1)] +# 1st occupation change for 100.000 Adena (item id 57) +# 2nd occupation change for 1.000.000 Adena (item id 57) +# 3rd occupation change for 10.000.000 Adena (item id 57) and 1.000.000 Ancient Adena (item id 5575) +# on 3rd occupation change player will be rewarded with 1 Book of Giants (item id 6622) +# ConfigClassMaster=1;[];[];2;[];[];3;[];[] +# 1st, 2nd, 3rd occupation change for free, without rewards. +# ConfigClassMaster=1;[];[];2;[];[] +# Allow only first and second change. +ConfigClassMaster = 1;[];[];2;[];[];3;[];[] + +# Class Masters will allow changing to any occupation on any level inside class tree +# For example, Dwarven Fighter will be able to advance to: +# Artisan, Scavenger, Warsmith, Bounty Hunter, Maestro, Fortune Seeker. +# But Warsmith will be able to change only to Maestro. +# Default = False +AllowEntireTree = false + +# =========================================== # +# Настройки бафера //spawn 50000 +# =========================================== # +# Id сертификата на премиум бафф +PremiumBuffItemId = 4037 +PremiumBuffItemsCount = 10 + +# Премиум бафф можно использовать только с ПА +PremiumBuffOnlyPremium = false + +# Список доступных баффов +BuffsList = 1363,1355,1356,1357,1068,1085,1240,1059,1086,1303,1077,1043,1242,1062,1040,1243,1036,1078,1035,1087,1048,1044,1204,1268,1045,274,271,275,310,272,276,273,277,264,266,267,265,269,304,268,1182,1189,1191,1353,1033,1352,1259,1354,1362,364,365,349,4699,4700,4702,4703,4554,4553,307,270,306,308 + +# Максимальное кол-во профилей для одного игрока +MaxProfiles = 3 + +# Максимальное кол-во бафов в одном профиле +MaxBuffsProfiles = 30 + +# Сохранять профили игроков во время рестарта сервера? +SaveBuffersOnShutdown = true + +# Цена за один бафф +BuffItemId = 57 +BuffItemCount = 1000 + +# Цена за один Dance/Song +DanceItemId = 57 +DanceItemCount = 1000 + +# Цена за восстановление Hp/Cp/Mp +HealItemId = 57 +HealItemCount = 1000 + +# Цена за бафф одного профиля +ProfileItemCount = 1000 + +# =========================================== # +# Личный баффер игроков +# =========================================== # + +# Включить личного баффера +EnablePrivateBuffer = false + +# Проверки на использование приватного баффера +# Доступные значения: ALL ATTACK PVP PEACE SIEGE OLYMPIAD TVT +PrivateBufferExcludeOn = ATTACK PVP SIEGE OLYMPIAD TVT + +# Id предмета с которого будем спаунить баффера +PrivateBufferItemId = 4356 +# Id Npc который проспаунится +PrivateBufferNpcId = 50007 + +# Кол-во адены за 1 бафф +PrivateBuffItems = 1 +# Кол-во адены за 1 денс/сонг +PrivateDanceItems = 1 +# Кол-во адены за восстановление Hp\Cp\Mp +PrivateHealItems = 1 +# Цена за использование профиля +PrivateProfileItems = 1 + +# Список доступных баффов +PrivateBuffsList = 1363,1355,1356,1357,1068,1085,1240,1059,1086,1303,1077,1043,1242,1062,1040,1243,1036,1078,1035,1087,1048,1044,1204,1268,1045,274,271,275,310,272,276,273,277,264,266,267,265,269,304,268,1182,1189,1191,1353,1033,1352,1259,1354,1362,364,365,349,4699,4700,4702,4703,4554,4553 + +# Время до удаления баффера из мира +# Указывать в минутах +BufferLifeTime = 5 + +# Интервал использования предмета который спаунит баффера +# Указывать в милисекундах +# 3000 = 5 минут +BufferItemUseDelay = 3000 + +# =========================================== # +# Настройки NPC +# =========================================== # + +# Allow the wyvern manager located in every castle to train wyverns and striders from hatchlings +AllowWyvernUpgrader = False + +# Информация об Npc по Shift+клик +AltGameViewNpc = false + +# Альтернативные настройки АИ мобов как в C1 +AltGameMobAttackAI = false + +# Alternative mob behavior in peace zones +# Default = True; Set to False to prevent mobs from auto-aggro against players in peace zones +AltMobAggroInPeaceZone = True + +# Минимальный и максимальный интервал между анимацией npc и мобов. +# Соблюдайте правило MinNPCAnimation <= MaxNPCAnimation. +MinNPCAnimation = 10 +MaxNPCAnimation = 20 +MinMonsterAnimation = 5 +MaxMonsterAnimation = 20 + +# Показывать Лвл и Аггро информацию в титуле у мобов +ShowNpcLevel = False + +# Максимальное отклонение мобов от точки спауна +MaxDriftRange = 200 + +# If you wish to disable the use of guards agains agressive monsters. +# Default is False. +GuardsAttackAggroMobs = False + +# Announce to players the location of the Mammon NPCs during Seal Validation. +AnnounceMammonSpawn = True + +# List of pet rent (wyvern,strider). etc: 111,222,333 +ListPetRentNpc = 7827 + +# Автотаргет Npc +# Функция работает только с Npc, +# Автовзятие таргета когда вас атакуют мобы +EnableAutoTargetNPC = False + + +# =========================================== # +# Настройки Grand Boss +# =========================================== # + +# =========================================== +# Queen Ant +# =========================================== +# Время респауна Ant Queen. +# Минимальное время респауна Ant Queen +# Указывать в часах +QueenAntRespFirst = 20 +# Рандомное время респауна +- +# Указывать в часах +QueenAntRespSecond = 8 +# Время респауна миньенов в секундах +# Nurses +QueenAntRespNurse = 60 +# Royal Guard +QueenAntRespRoyal = 120 + +# =========================================== +# Orfen +# =========================================== +# Время респауна Orfen. +# Минимальное время респауна Orfen +# Указывать в часах +OrfenRespFirst = 20 +# Рандомное время респауна +- +# Указывать в часах +OrfenRespSecond = 8 + +# =========================================== # +# Настройки Raid Boss +# =========================================== # +# HP/MP % regeneration for RaidBoss and their minions +RaidHpRegenMultiplier = 100 +RaidMpRegenMultiplier = 100 + +# % P/M defense for RaidBoss and their minions +RaidPDefenceMultiplier = 100 +RaidMDefenceMultiplier = 100 + +#Configure Minimum and Maximum multiplier time between RaidBoss respawn. +#By Default 12Hours*1.0 for Minimum Time and 24Hours*1.0 for Maximum Time. +RaidMinRespawnMultiplier = 1.0 +RaidMaxRespawnMultiplier = 1.0 + +# Minions respawn timer 300000 = 5 mins +RaidMinionRespawnTime = 300000 + +# =========================================== # +# Мобы чемпионы +# =========================================== # +# Активировать мобов чемпионов? +ChampionEnable = False + +# Даже если моб агрессивный, а у он стал чемпионом то ему присвоится статус пассивный? +ChampionPassive = False + +# Шанс, что моб станет чемпионом +# Указывать в % +ChampionFrequency = 5 + +# Титул у мобов чемпионов +ChampionTitle = Champion + +# Мин. и макс. уровень у чемпионов +ChampionMinLevel = 20 +ChampionMaxLevel = 70 + +# Множитель ХП +ChampionHp = 8 + +# Множитель регена ХП +ChampionHpRegen = 1. + +# Множитель дропа предметов +ChampionRewards = 8 + +# Множительно дропа адены и камней в катах +ChampionAdenasRewards = 1 + +# Множитель Физ.Атаки +ChampionAtk = 1. + +# Множитель скорости атаки и каста +ChampionSpdAtk = 1. + +# Шанс дропа спец. предметов с чемпионов низкого уровня +ChampionRewardLowerLvlItemChance = 0 + +# Шанс дропа спец. предметов с чемпионов высокого уровня +ChampionRewardHigherLvlItemChance = 0 + +# Id спец. предмента +ChampionRewardItemID = 6393 + +# Кол-во дропа спец. предметов +ChampionRewardItemQty = 1 \ No newline at end of file diff --git a/config/game/general/options.properties b/config/game/general/options.properties new file mode 100644 index 0000000..23ccb19 --- /dev/null +++ b/config/game/general/options.properties @@ -0,0 +1,153 @@ +# =========================================== # +# Java-Build Dev. Team # +# =========================================== # + +# =========================================== # +# Test server setting, shoudnt be touched in online game server +# =========================================== # +Debug = False +Assert = False +Developer = False +AcceptGeoeditorConn = False +# if true the server will be a test server (listed by clients setted up to list testserver) +TestServer = False + +# Zone Setting +# 0 = Peace All the Time +# 1 = PVP During Siege for siege participants +# 2 = PVP All the Time +ZoneTown = 0 + +# Chat configuration +# Global Chat - ON (=region), OFF, GM, GLOBAL +GlobalChat = ON +# Trade Chat - ON (=global), OFF, GM, LIMITED (=region) +TradeChat = LIMITED + +# Allow delete chars after nnn days, 0 - feature disabled +DeleteCharAfterDays = 7 + +# =========================================== # +# Server optimizations +# =========================================== # +# === Flood Protector === +# set the initial size of the flood protector (should equal ~player count) +FloodProtectorInitialSize = 50 + +# === Items on ground management === +# Allow players to drop items on the ground +AllowDiscardItem = True + +# delete from world dropped reward items after n seconds. 0 - disabled +AutoDestroyDroppedItemAfter = 0 + +# List of items that will not be destroyed (seperated by ",") +# NOTE: Make sure the lists do NOT CONTAIN trailing spaces or spaces between the numbers! +# items on this list will be protected regardless below options +ListOfProtectedItems = 57,5575,6673 + +# This enables the server to only update itens when saving the character +# Enabling this greatly reduces DB usage and improves performance. +# WARNING: This option causes item loss during crashes +LazyItemsUpdate = false + +# This forces(even if using lazy item updates) the items owned by the character to be updated into DB when saving its character +# Increases DB usage +UpdateItemsOnCharStore = false + +# also delete from world misc. items dropped by players (all except equipable items) +# NOTE: work only if AutoDestroyDroppedItemAfter >0 +DestroyPlayerDroppedItem = false + +# Destroy also equipable items (armor, weapon, jewelry) +# NOTE: Work only if DestroyPlayerDroppedItem = true +DestroyEquipableItem = false + +# save into DB dropped items for restoring after reboot +SaveDroppedItem = false + +# Empty table after items are loaded into memory - safety seting +# if server crash before saving items, on next start old items will be restored +# and players may already picked up some of them - so this will prevent duplicates +EmptyDroppedItemTableAfterLoad = false + +# Time interval in minutes to save in DB items on ground, 0 to disable +# NOTE: If SaveDroppedItemInterval is disabled items will be saved into DB only at server shutdown +SaveDroppedItemInterval = 60 + +# delete all saved items form DB On next start +# NOTE: Work only if SaveDroppedItem = false +ClearDroppedItemTable = false + +# delete invalid quest from player +AutoDeleteInvalidQuestData = False +# setting false can improve server performance on high rate servers +PreciseDropCalculation = True +# allows creating multiple nonstackable items at one time +MultipleItemDrop = True + +# Forces full item inventory packet to be sent for any item change +# Note: This can increase network traffic +ForceInventoryUpdate = False + +# Set the html cache's lazy loading True or False +# (Load html's into cache only on first time requested) +LazyCache = True + +# Activate the position recorder +# valid 3D points will be recorded and written to data/universe.txt on shutdown +ActivatePositionRecorder = False + +# Interval (in ms) on which knownlist do full updates. +# WARNING! Useful interval is between 300 - 2000ms, too small value may kill your CPU, too high value +# may not update knownlists properly, the default value is choosen experimentally +KnownListUpdateInterval = 1250 + +# =========================================== # +# Additionnal features than can be enabled or disabled +# =========================================== # +# If you are experiencing problems with Warehouse or Freight transactions, +# feel free to disable them here. (They are both enabled by default). +AllowWarehouse = True + +# Enable Warehouse Cache - if WH is not used will server clear memory used by this WH +WarehouseCache = False + +# How long Warehouse should be store in Memory +WarehouseCacheTime = 15 +AllowFreight = True + +# If True player can try on weapon and armor in shop +# Each Item tried cost WearPrice adena +AllowWear = True +WearDelay = 10 +WearPrice = 10 + +# =========================================== # +AllowLottery = False +AllowRace = False +AllowWater = True + +# Enable pet for rent(wyvern&strider) from pet managers +AllowRentPet = False + +# Allow fishing +AllowFishing = True + +# Allow boat +AllowBoat = True + +# Allow Manor +AllowManor = True + +# Allow Walker NPC +AllowNpcWalkers = True + +# Allow Pet managers pets walking +AllowPetWalkers = True + +# =========================================== # +# Logging features +# =========================================== # +# Logging ChatWindow +LogChat = false \ No newline at end of file diff --git a/config/game/general/other.properties b/config/game/general/other.properties new file mode 100644 index 0000000..26c4e05 --- /dev/null +++ b/config/game/general/other.properties @@ -0,0 +1,100 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +# Давать новым игрокам указанное кол-во аден +# По умолчанию 0 +StartingAdena = 0 + +# Максимальное значение скорости бега +MaxRunSpeed = 250 + +# Лимит шанса физичикской крит. атаки (10 = 1%) +MaxPCritRate = 500 + +# Лимит шанса магической крит. атаки (10 = 1%) +MaxMCritRate = 300 + +# Пределы на скорость атаки и каста +MaxPAtkSpeed = 1500 +MaxMAtkSpeed = 1999 + +# Если включено, то групповые эффекты будут использоваться, меньшие +# эффекты будут отменены при использовании более сильных эффектов. Новые эффекты +# при добавлении будут отменены если используются более сильные эффекты. +# Если отключено, новые эффекты не будут отменяться, заменяя собой и +# более сильные эффекты. +CancelLesserEffect = True + +# При включении будет действовать наказание за убийство низкоуровневых мобов: +# - Когда уровень игрока в 9 больше уровней моба, дроп будет разделен на 3 +# - После 9-уровневого различия между игроком и мобами, шанс дропа начинает +# снижаться на 9% с каждым дополнительным уровнем. (9 уровеней = -9%; 10 уровней = -18%; ...) +# ВНИМАНИЕ: Эти правила применяются и к нормальному и к сниженному дропу +# ВНИМАНИЕ: Эти правила игнорируют серверные рейты +UseDeepBlueDropRules = True + +# Лимит места в инветаре +MaximumSlotsForNoDwarf = 80 +MaximumSlotsForDwarf = 100 +MaximumSlotsForGMPlayer = 250 +MaximumSlotsForPet = 12 + +# Пределы места на складах (Должен быть <300 для предотвращения ошибок клиента) +# Гномы имеют бонус после 60 лвла +MaximumWarehouseSlotsForDwarf = 120 +MaximumWarehouseSlotsForNoDwarf = 100 +MaximumWarehouseSlotsForClan = 200 +MaximumFreightSlots = 20 + +# % регенерации от нормальной регенерации +HpRegenMultiplier = 100 +MpRegenMultiplier = 100 +CpRegenMultiplier = 100 + +# Время действия команды /unstuck, в секундах, по умолчанию 300 сек (5 минут) +UnstuckInterval = 300 + +# Player Protection after teleporting or login in seconds, 0 for disabled +PlayerSpawnProtection = 0 + +# Player Protection from (agro) mobs after getting up from fake death; in seconds, 0 for disabled +PlayerFakeDeathUpProtection = 0 + +# PARTY XP DISTRIBUTION +# Set the first option here to one of the (auto, percentage, level, none). +# With "auto method" member is cut from Exp/SP distribution when his share is lower +# then party bonus acquired for him (30% for 2 member party) +# In that case he will not receive any Exp/SP from party and is not counted for party bonus +# The second option takes effect when "percentage" method is choosen. Don't use high values for this! +# The third option takes effect when "level" method is choosen. Don't use low values for this! +# If you don't want to have a cutoff point for party members' XP distribution, +# then just set the first option to "none". Defaults are: percentage , 3.0 , 30 ; respectively. +PartyXpCutoffMethod = auto +PartyXpCutoffPercent = 3.0 +PartyXpCutoffLevel = 30 + +# Amount of HP that is restored during respawn +# Value is in percent of max +RespawnRestoreHP = 70 + +# Allow random respawning, based on a maximum random offset +# from the base respawn co-ordinates. +RespawnRandomOffset = True +RespawnRandomMaxOffset = 20 + +# Maximum number of allowed slots for Private Stores (sell/buy) for dwarves and for all other races +# Normally, dwarves get 5 slots for pvt stores, while other races get only 4 +MaxPvtStoreSlotsDwarf = 5 +MaxPvtStoreSlotsOther = 4 + +# Store buffs/debuffs other effects on user logout? +StoreSkillCooltime=True + +#------------------------------------------------------------- +# Jail configuration +#------------------------------------------------------------- +# Jail is a PvP zone +JailIsPvp = True +# Disable all chat in jail (except normal one) +JailDisableChat = True diff --git a/config/game/general/pvp.properties b/config/game/general/pvp.properties new file mode 100644 index 0000000..14348a2 --- /dev/null +++ b/config/game/general/pvp.properties @@ -0,0 +1,43 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +# =========================================== # +# Настройки PvP/PK +# =========================================== # +# Karma gain/loss +MinKarma = 240 +MaxKarma = 10000 +# the number to divide the xp received by, to calculate karma lost on xp gain/lost +XPDivider = 260 +# The Minimum Karma lost if 0 karma is to be removed +BaseKarmaLost = 0 + +# Equipment loss +CanGMDropEquipment = False + +# NOTE: Make sure the lists do NOT CONTAIN trailing spaces or spaces between the numbers! +# List of pet items we cannot drop +ListOfPetItems = 2375,3500,3501,3502,4422,4423,4424,4425,6648,6649,6650 +# Lists of items which should NEVER be dropped (note, adena will never be dropped) whether on this list or not +ListOfNonDroppableItems = 57,1147,425,1146,461,10,2368,7,6,2370,2369,7694,5575 + +# item drop related min/max +MinimumPKRequiredToDrop = 5 + +# Should we award a pvp point for killing a player with karma? +AwardPKKillPVPPoint = True + +# Length one stays in PvP mode after hitting an inocent (in ms) +PvPVsNormalTime = 40000 +# Length one stays in PvP mode after hitting a purple player (in ms) +PvPVsPvPTime = 20000 + +# Включать систему награды за победу в PvP? +PvPRewardSystem = false + +# Id награды +PvPRewardItemId = 57 + +# Кол-во предмета награды +PvPRewardItemCount = 1 \ No newline at end of file diff --git a/config/game/general/rates.properties b/config/game/general/rates.properties new file mode 100644 index 0000000..7e4c97a --- /dev/null +++ b/config/game/general/rates.properties @@ -0,0 +1,85 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +# =========================================== # +# Настройки рейтов сервера # +# =========================================== # +RateXp = 1 +RateSp = 1 +RatePartyXp = 1 +RatePartySp = 1 +RateConsumableCost = 1 +RateDropItems = 1 + +# Рейты дропа предметов по id +# Формат ввода: itemId1,dropChance1;itemId2,dropChance2;... +# Пример с Эпик бижей 1x : 6656,1;6657,1;6658,1;6659,1;6660,1;6661,1;6662,1; +RateDropItemsById = 57,1 + +# =========================================== # +# Система премиум рейтов +# =========================================== # +# Вкл/Выкл премиум систему +UsePremiumServices = False +# Рейты Exp +PremiumRateXp = 2 +# Рейты Sp +PremiumRateSp = 2 +# Рейты спойла +PremiumRateDropSpoil = 2 +# Рейты дропа предметов +PremiumRateDropItems = 2 +# Рейты дропа предметов с рейд боссов +PremiumRateRaidDropItems = 2 +# Индивидуальные рейты дропа предметов +# Формат: id,шанс; id,шанс;... +PremiumRateDropItemsById = 57,2 + +RateBossDropItems = 1 +RateDropSpoil = 1 +RateDropManor = 1 +RateDropQuest = 1 +RateQuestsReward = 1 +RateKarmaExpLost = 1 +RateSiegeGuardsPrice = 1 + +# Шанс дропа предметов с игроков без кармы +PlayerDropLimit = 3 +PlayerRateDrop = 5 +PlayerRateDropItem = 70 +PlayerRateDropEquip = 25 +PlayerRateDropEquipWeapon = 5 + +# Шанс дропа предметов с игроков с кармой +KarmaDropLimit = 10 +KarmaRateDrop = 70 +KarmaRateDropItem = 50 +KarmaRateDropEquip = 40 +KarmaRateDropEquipWeapon = 10 + +# Рейты Exp для питомцев +PetXpRate = 1 +# Как часто питомцы хотят покушать +PetFoodRate = 1 +# Рейт Exp для SinEater (Гремлин который отмывает счетчик пк) +SinEaterXpRate = 1 + +# =========================================== # +# Настройки рейтов спойла +# =========================================== # +CanSpoilLowerLevelMobs = false +MaximumPlayerAndMobLevelDifference = 9 +BasePercentChanceOfSpoilSuccess = 78 +MinimumPercentChanceOfSpoilSuccess = 1 +CanDelevelToSpoil = True + +# SpoilLevelDifferenceLimit +# Maximum level difference between player and spoil level to allow before decreasing spoil chance. +SpoilLevelDifferenceLimit = 10 + +# LastLevelSpoilIsLearned +# If the player level is above LastLevelSpoilIsLearned, it will be assumed that the player level +# is LastLevelSpoilIsLearned for calculations on success rate +# 72 = spoil lvl 11 (c3) +LastLevelSpoilIsLearned = 72 \ No newline at end of file diff --git a/config/game/general/sevensigns.properties b/config/game/general/sevensigns.properties new file mode 100644 index 0000000..b7383dd --- /dev/null +++ b/config/game/general/sevensigns.properties @@ -0,0 +1,60 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +#------------------------------------------------------------- +# Seven Signs Configuration File +# Adjusting this file will effect the way your seven signs runs +# Do so only if you want to run diffrent to retail +#------------------------------------------------------------- + +# Sign up Rules +# Require a player to be in a castle/alliance-owning clan to be able to sign for Dawn. +AltRequireCastleForDawn = False + +# Determines whether castle ownership is determined by clan or by alliance. +# Default is by alliance, as on official servers. +AltRequireClanCastle = False + +#------------------------------------------------------------- +# Festival Rules. +#------------------------------------------------------------- +# Minimum Players for participate in SevenSigns Festival. +# Default : 5 +AltFestivalMinPlayer = 5 + +# Maximum contribution per player during festival +# /!\ This value is NOT impacted by server drop rate. +AltMaxPlayerContrib = 1000000 + +# Festival Manager Start time. +# Default : 2 minutes +AltFestivalManagerStart = 120000 + +# Festival Length. +# Default : 18 minutes +AltFestivalLength = 1080000 + +# Festival Cycle Length. +# Default : 38 Minutes (20 minutes wait time, + Festival time) +AltFestivalCycleLength = 2280000 + +# At what point the first festival spawn occures. +# Default : 2 minutes +AltFestivalFirstSpawn = 120000 + +# At what Point the first festival swarm occures. +# Default : 5 minutes +AltFestivalFirstSwarm = 300000 + +# At what Point the Second Festival spawn occures. +# Default : 9 minutes +AltFestivalSecondSpawn = 540000 + +# At what Point the Second Festival Swarm occures. +# Default : 12 minutes +AltFestivalSecondSwarm = 720000 + +# At what point the Chests Spawn in. +# Default : 15 minutes +AltFestivalChestspawn = 900000 diff --git a/config/game/general/siege.properties b/config/game/general/siege.properties new file mode 100644 index 0000000..acf74e7 --- /dev/null +++ b/config/game/general/siege.properties @@ -0,0 +1,109 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +#Quick hack up Siege data file, plz dont use any spaces. + +#Length of siege before the count down (in minutes) +SiegeLength=120 + +#Count down length, best to use a multiple of 5 (in minutes) +CountDownLength=10 + +#Max no. flags per clan +MaxFlags=1 + +#Minimum level to register +SiegeClanMinLevel=4 + +#Max no. of clans that can register on each side +AttackerMaxClans=500 +DefenderMaxClans=500 + +#Respawn times in ms +AttackerRespawn=0 + +#Castle Artifacts and Control Towers spawns +# +#Control Towers syntax: NameControlTowerN=x,y,z,npc_id,hp +# Name - castle name +# N - number +# x,y,z - coords +# npc_id - id of template +# hp - maximum health +# +#Artifacts syntax: NameArtefactN=x,y,z,heading,npc_id +# Name - castle name +# N - number +# x,y,z - coords +# heading +# npc_id - id of template + +#------------------------------------------------------------- +# Gludio +#------------------------------------------------------------- + +GludioControlTower1=-18134,109785,-2683,12314,8000 +GludioControlTower2=-18137,108583,-2379,12314,20000 +GludioControlTower3=-18061,107294,-2409,12314,8000 +GludioControlTower4=-18359,112879,-2409,12314,8000 +GludioArtefact1=-18120,107984,-2483,16384,7250 + +#------------------------------------------------------------- +# Giran +#------------------------------------------------------------- +GiranControlTower1=118623,145150,-2476,12314,10000 +GiranControlTower2=117339,145051,-2446,12314,30000 +GiranControlTower3=116116,145016,-2750,12314,10000 +GiranControlTower4=113049,144849,-2476,12314,10000 +GiranArtefact1=117939,145090,-2550,32768,12154 + +#------------------------------------------------------------- +# Dion +#------------------------------------------------------------- +DionControlTower1=22158,161167,-2573,12314,8000 +DionControlTower2=22138,159901,-2877,12314,20000 +DionControlTower3=22027,162449,-2603,12314,80000 +DionControlTower4=22319,156863,-2603,12314,8000 +DionArtefact1=22081,161771,-2677,49017,12123 + +#------------------------------------------------------------- +# Oren +#------------------------------------------------------------- +OrenControlTower1=83416,37164,-2173,12314,10000 +OrenControlTower2=82129,37131,-2477,12314,30000 +OrenControlTower3=84709,37234,-2203,12314,10000 +OrenControlTower4=79103,36942,-2203,12314,10000 +OrenArtefact1=84014,37184,-2277,16384,12242 + +#------------------------------------------------------------- +# Aden +#------------------------------------------------------------- +AdenControlTower1=147455,5624,-911,12314,6000 +AdenControlTower2=147460,1303,-176,12314,6000 +AdenControlTower3=146158,6929,-426,12314,6000 +AdenControlTower4=148755,6930,-426,12314,6000 +AdenControlTower5=148775,2351,-426,12314,6000 +AdenControlTower6=146137,2351,-426,12314,6000 +AdenControlTower7=144954,1603,-494,12314,6000 +AdenControlTower8=149976,1585,-494,12314,6000 +AdenArtefact1=147465,1537,-373,16384,12291 + +#------------------------------------------------------------- +# Innadril +#------------------------------------------------------------- +InnadrilControlTower1=116062,248649,-973,12314,6000 +InnadrilControlTower2=116037,249948,-669,12314,6000 +InnadrilControlTower3=115977,251223,-699,12314,6000 +InnadrilControlTower4=116261,245621,-699,12314,6000 +InnadrilArtefact1=116031,250555,-798,49200,12602 + +#------------------------------------------------------------- +# Goddard +#------------------------------------------------------------- +GoddardControlTower1=147456,-46029,-1360,12314,6000 +GoddardControlTower2=150183,-48201,-1744,12314,6000 +GoddardControlTower3=144741,-48188,-1744,12314,6000 +GoddardControlTower4=147477,-48516,-505,12314,6000 +GoddardArtefact1=146601,-50441,-1505,32768,12831 +GoddardArtefact2=148353,-50457,-1505,0,12832 \ No newline at end of file diff --git a/config/game/logback.xml b/config/game/logback.xml new file mode 100644 index 0000000..79dbfb1 --- /dev/null +++ b/config/game/logback.xml @@ -0,0 +1,41 @@ + + + + + + + + + + log/java.log + + + java_%d{yyyy-MM-dd}.log + + + + + + + + + + + log/login.log + + + auth_%d{yyyy-MM-dd}.log + + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/game/mods/communityboard.properties b/config/game/mods/communityboard.properties new file mode 100644 index 0000000..10a6261 --- /dev/null +++ b/config/game/mods/communityboard.properties @@ -0,0 +1,24 @@ +# =========================================== # +# Общественная доска +# =========================================== # +# Тип доски +# - Full = полный функционал +# - Old = старый тип доски, работает не весь функционал +# - off = доска отключена +CommunityType = full +BBSDefault = _bbshome + +# Маленькая статистика +ShowLevelOnCommunityBoard = false +ShowStatusOnCommunityBoard = false +NamePageSizeOnCommunityBoard = 50 +NamePerRowOnCommunityBoard = 5 + +# =========================================== # +# Npc Gatekeeper - Global Teleport +# =========================================== # +EnableGatekeeper = true +GatekeeperDialogId = 50006 +GateKeeperUseBBS = true +GateKeeperExcludeOn = ALL ATTACK PVP PEACE SIEGE OLYMPIAD TVT +GateKeeperPrice = 1 \ No newline at end of file diff --git a/config/game/mods/custom.properties b/config/game/mods/custom.properties new file mode 100644 index 0000000..fb441c7 --- /dev/null +++ b/config/game/mods/custom.properties @@ -0,0 +1,66 @@ +# =========================================== # +# Java-Build Dev. Team # +# =========================================== # + +# Включить стартовые предметы персонажам? +AllowStartingCustomItems = false + +# Стартовые предметы для войнов. +StartingCustomItemsFighter = 219,1;26,1;34,1;44,1;1835,10 + +# Стартовые предметы для магов. +StartingCustomItemsMage = 100,1;44,1;1101,1;1104,1;3947,10 + +# Окно приветствия при входе в игру? +# game/data/html/welcome.htm +HtmWelcome = false + +# Показывать в чате шанс прохождения скилов +ViewSkillChance = false + +# Снимать баффы/дебаффы после смерти +ClearEffectsAfterDeath = true + +# 1.Титул новым игрокам +# 2.Что писать в титуле +NewbieSetTitle = false +NewbieTitle = ServerName + +# Включить бесконечные соски? +DontUseShots = false + +# Включить бесконечные стрелы? +DontUseArrows = false + +# Все новые чары получают статус нублеса? +AutoNoblesseAtLogin = false + +# =========================================== # +# Настройки времени баффа +# =========================================== # +# Включить функцию +EnableModifySkillDuration = false +SkillDurationList = 1085,7200;1062,7200;1243,7200;1045,7200;1048,7200;\ +1078,7200;1043,7200;1242,7200;1059,7200;1077,7200;1240,7200;1086,7200;\ +1036,7200;1035,7200;1068,7200;1044,7200;1040,7200;1303,7200;1204,7200;\ +1238,7200;364,7200;264,7200;268,7200;349,7200;265,7200;363,7200;305,7200;\ +304,7200;267,7200;266,7200;269,7200;271,7200;276,7200;274,7200;275,7200;\ +272,7200;277,7200;273,7200;310,7200;365,7200;4700,7200;4699,7200;4703,7200;\ +4702,7200;1352,7200;1353,7200;1354,7200;1259,7200;1355,7200;1356,7200;\ +1363,7200;1357,7200;1323,7200;1182,7200;1189,7200;1191,7200;1268,7200;\ +307,7200;270,7200;306,7200;308,7200;1362,7200 + +# Награда за онлайн +# Включить награда за онлайн? +AllowAutoRewarder = false +# Интервал выдачи награды +# По умолчанию: 30 минут +AutoRewardDelay = 1800 +# Id награды +AutoRewardID = 57 +# Кол-во награды +AutoRewardCount = 1000 + +# Разрешить телепорт в города где проходит осада? +# По умолчанию: false +AllowSiegeTeleport = false \ No newline at end of file diff --git a/config/game/mods/events.properties b/config/game/mods/events.properties new file mode 100644 index 0000000..326aa8b --- /dev/null +++ b/config/game/mods/events.properties @@ -0,0 +1,208 @@ +#================================================# +# Java-Build Dev. Team # +#================================================# + +#================================================# +# Новогодний евент # +#================================================# +# Добавить дроп частей ёлки +CristmasAddDrop = false +# Проспавнить эвент-менеджеров +CristmasSpawnManager = false +# Шанс выпадения частей ёлки +CristmasDropChance = 10 +# Время жизни ёлки +CristmasTreeLifeTime = 5 + +#================================================# +# Медали Бехтеля # +#================================================# +# Эвент Медали Бехтеля. +# В дроп мобам добавляются два типа медалей, собрав нужное количество которых игрок может обменять их на призы. +# Для получения призов используется первый тип медалей. +# Второй тип используется для поднятия уровня коллекционера. Чем выше уровень тем лучше призы. +# ================================================ +# Добавить дроп медалей +MedalAddDrop = true + +# Шанс выпадения медалей +# 1 - для Event - Medal +# 2 - для Event - Glittering Medal +Medal1DropChance = 10 +Medal2DropChance = 2 + +# Проспавнить эвент-менеджеров +MedalSpawnManager = true + +#================================================# +# L2Day (буквы) # +#================================================# +# Эвент буквы. +# В дроп мобам добавляются буквы, собрав нужные слова "LINEAGE II , CHRONICLE , THRONE" игрок может обменять их на подарки. +# ================================================ +# Добавить дроп букв +L2DayAddDrop = false + +# Шанс выпадения букв из мобов (в диапазоне от 0 до 1000, 1000=100%) +L2DayDropChance = 10 + +# Проспавнить эвент-менеджеров +L2DaySpawnManager = false + +# Призами на эвенте являются: +# свитки L2Day , Благословенный Свиток Телепорта, Благословенный Свиток Воскрешения +# Свиток: Зачаровать Оружие (Ранг D, Ранг С, Ранг B, Ранг A) +# Кольцо Ядра, Кольцо Королевы Муравьев +# ================================================ +# Шансы выпадения призов (в диапазоне от 0 до 1000, 1000=100%) +# шанс выпадения Свитков телепорта, Свитков Воскрешения по умолчанию 30% +L2DayScrollChs = 300 + +# Шанс выпадения "Свиток: Зачаровать Оружие", по умолчанию 10% +L2DayEnchScrollChs = 100 + +# Шанс выпадения Бижутерии по умолчанию 0.1% +L2DayAccScrollChs = 10 + +L2DayRewards=3931,3927,3928,3929,3926,3930,3933,3932,3935,3934 +L2DayRewardsAccessorie=6662,6660 +L2DayRewardsScroll=3958,3959 + +#================================================# +# Big Squash (Большие Тыквы) # +#================================================# +# Эвент Большие тыквы. +# В дроп мобам добавляется "Нектар", собрав который игрок может обменять его на семена тыкв и спец оружие. +# Причинить вред тыквам можно только этим оружием. Из семян можно вырастить тыкву. Убив ее спец оружием, получаем призы. +# Также тыквы можно поливать "Нектаром", в результате чего тыква может вырасти (несколько стадий роста). +# Есть тыквы которые можно убить только 2-м и более игрокам. +# ================================================ +# Добавить дроп Нектара +BigSquashAddDrop = false + +# шанс выпадения Нектара из мобов (в диапазоне от 0 до 1000, 1000=100%) +BigSquashDropChance = 10 + +# Кол-во нектаров требуемое за 1 маленькое семя +NectarForSmallSeed = 10 + +# Кол-во нектаров требуемое за 1 большое семя +NectarForLargeSeed = 20 + +# Кол-во нектаров требуемое за спец. оружие +SpecWeaponNectars = 20 + +# Проспавнить эвент-менеджеров +BigSquashSpawnManager = false + +# Позволить выращивать тыквы из семян +BigSquashUseSeeds = false + + +#================================================# +# Перерождение игроков # +#================================================# +# Требовать определенные предметы для перерождения +RequiredItemsRebirth = false + +# Id предмета +RebirthItemId = 4356 + +# Количество предметов +RebirthItemCount = 100 + +# Минимальный уровень для перерождение +RebirthMinLevel = 78 + +# Максимальное кол-во обнулений +RebirthMaxAllowed = 3 + +# Награждать статусом нублесса после перерождение +RebirthNoble = false + +# Обнулять счетчик PK и Кармы после перерождение +RebirthNullPk = false + +# Уровень игрока после перерождение [1-19 уровни, ставить не советую] +RebirthReturnToLevel = 20 + +# Предмет выдаваемый за обнуление +RebirthItems = 4356,1;4356,1;4356,1; + +#================================================# +# Team vs. Team # +#================================================# +# Активировать эвент? +TvTEventEnabled = false + +# Интервал между эвентами в минутах. 60 = 1 час +TvTEventInterval = 60 + +# Время регистрации на эвент в минутах +TvTEventParticipationTime = 5 + +# Длительность эвента в минутах +TvTEventRunningTime = 10 + +# Давать награду за каждое убийство на эвенте? +TvTKillReward = false + +# Id награды +TvTKillRewardId = 3487 + +# Кол-во награды +TvTKillRewardCount = 1 + +# Настройки менеджера эвента (Тип Npc = L2TvTEventNpc) +TvTEventParticipationNpcId = 50004 +TvTEventParticipationNpcCoordinates = 83425,148585,-3406 + +# Мин. и Макс. кол-во участников в одной команде +TvTEventMinPlayersInTeams = 1 +TvTEventMaxPlayersInTeams = 20 + +# Мин. и Макс. уровень для участия в эвенте +TvTEventMinPlayerLevel = 1 +TvTEventMaxPlayerLevel = 79 + +# Время восстановления игрока после смерти на эвенте +TvTEventRespawnTeleportDelay = 10 +# Время телепорта в город после окончания эвента +TvTEventStartLeaveTeleportDelay = 10 + +# Название и координаты спауна 1-ой команды +TvTEventTeam1Name = Blue +TvTEventTeam1Coordinates = 148695,46725,-3414 + +# Название и координаты спауна 2-ой команды +TvTEventTeam2Name = Red +TvTEventTeam2Coordinates = 149999,46728,-3414 + +# Награда за победу в эвенте +# Формат ввода: itemId,itemCount;itemId,itemCount +# /!\ В конце не ставить знак ; +TvTEventReward = 57,100000;6673,100 + +# Разрешить брать игрок своей команды в таргет ? +TvTEventTargetTeamMembersAllowed = true + +# Разрешить использовать баф свитки? +TvTEventScrollsAllowed = false + +# Разрешить использовать банки? +TvTEventPotionsAllowed = false +TvTEventSummonByItemAllowed = false + +# Participant's effects handling on teleport/death. +# Effects lasting through death never removed. +# 0 - always remove all effects. +# 1 - remove all effects only during port to event (noblesse blessing can be used) +# 2 - never remove any effect +# Default: 0 +TvTEventEffectsRemoval = 0 + +# Закрывать двери колизея после старта эвента? +TvTCloseAllDoors = true + +# Награждать обе команды если эвент закончился в ничью? +TvTRewardTeamTie = false \ No newline at end of file diff --git a/config/game/mods/gmshop.properties b/config/game/mods/gmshop.properties new file mode 100644 index 0000000..95ac07c --- /dev/null +++ b/config/game/mods/gmshop.properties @@ -0,0 +1,71 @@ +# =========================================== # +# Продвинутый Gm Shop # +# =========================================== # +# Id Вип карты +ShopVipCard = 4037 +# Id предмета за покупку нубла +NoblesseItemId = 6673 +# Кол-во предметов +NoblesseItemCount = 30 + +# Стоимость статуса героя +# (кол-во дней,цена;кол-во дней, цена) +HeroDaysPrice = 30,100 +# Сообщение игроку о покупке премиума +MsgHeroTakeDays = You have obtain Hero status for %days% day +# Id предмета за покупку геройства +HeroItemId = 6673 + +# Id проедмета за покупка уровня клана +ClanLevelItemId = 57 +# Кол-во предметов +ClanLevelItemCount = 0 + +# Id предмета за очистку PK +ClearPkItemId = 6673 +# Кол-во предметов +ClearPkItemCount = 30 + +# Предмет который требуется для телепорта из гмшопа +TeleportItemId = 4037 +# Кол-во предметов +TeleportItemCount = 1 + +# ------------------------------------------- +# Npc Enchant Items - +# ------------------------------------------- +# Npc Id = 56 +# Enable Enchant Items NPC. Default: False +EnableNpcEnchantItems = true + +# Level of Weapon and Armor enchantment. +WeaponEnchantLevel = 20 +ArmorEnchantLevel = 16 + +# Price ID +IngredientID = 4037 + +# Price Weapon Count +IngredientAmountWeapon = 1 + +# Price Armor Count +IngredientAmountArmor = 1 + +# List of Items that cannot be enchanted. +NonEnchantableItemList = 0 + +ModifyItemEnchant = True +ModifyItemEnchantList = 0,0; + +# =========================================== # +# Лотерея # +# =========================================== # +# Конфиги для обычных призов +# Id итема для игры в казино +CasinoItem = 6673 + +# Кол-во итемов для игры в казино +CasinoItems = 1 + +# Шанс в % что игрок выиграет приз +CasinoChanceWin = 30 \ No newline at end of file diff --git a/config/game/mods/service.properties b/config/game/mods/service.properties new file mode 100644 index 0000000..18dca89 --- /dev/null +++ b/config/game/mods/service.properties @@ -0,0 +1,86 @@ +# =========================================== # +# Java-Build Dev. Team # +# =========================================== # + +# =========================================== # +# Оффлайн торговля/крафт +# =========================================== # +# Вкл/Выкл торговлю +OfflineTradeEnable = False +# Вкл/Выкл крафт +OfflineCraftEnable = False +# Восстанавливать торговцев/крафтеров после рестарта/отключения сервера? +RestoreOffliners = True +# Макс. кол-во дней которые можно провести в оффлайн трейде/крафте +OfflineMaxDays = 10 +# По завершению торговли выкинуть из игры +OfflineDisconnectFinished = True +# Изменять цвет ника у трейдеров/крафтеров? +OfflineSetNameColor = False +# Цвет ника у трейдеров/крафтеров +OfflineNameColor = 808080 + +# =========================================== # +# Личные настройки игрока +# =========================================== # +# Включить/Выключить команду .menu/.cfg +AllowMenu = false +# Включить/Выключить разрешение менять настройку EXP? +AllowExpMenu = false +# Включить/Выключить разрешение менять настройку Автолута? +AllowLootMenu = false +# Включить/Выключить разрешение менять настройку блокировки пма? +AllowPmMenu = false +# Включить/Выключить разрешение менять настройку обмена? +AllowTradeMenu = false +# Включить/Выключить разрешение восстаналивать игрока? +AllowRepairMenu = false +# Включить/Выключить разрешение привязать персонажа по IP? +AllowIpBlockMenu = false +# Накрутка онлайна в окошке .menu/.cfg (Указывать в %) +UpOnline = 0 + +# =========================================== # +# Донат менеджер +# =========================================== # +# Покупка масимального уровня клана +MaxClanLvlItemId = 4356 +MaxClanLvlItemCount = 1 +# Очистка счетчика PK и кармы +ClearPKItemId = 4356 +ClearPKItemCount = 1 +# Покупка дворянства +NoblesseItemId = 4356 +NoblesseItemCount = 1 +# Сервис смены пола +GenderItemId = 4356 +GenderItemCount = 1 +# Изменение ника +ChangeNickItem = 4037 +# Цена за смену ника игрока +ChangeNickItems = 1 +# Допустимые символы в нике +NamePattern = .* +# Покупка цвета ника +NameColorItem = 4037 +# Цена за смену цвета ника +NameColorItems = 1 +# Начислить игроку 255 рекомендаций +RecommendationItemId = 4356 +RecommendationItemCount = 1 +# Стоимость статуса героя +# (кол-во дней,цена;кол-во дней, цена) +ServiceHeroItemId = 4037 +ServiceHeroDaysPrice = 1,2;7,12;14,25;21,38;30,55 +# Сообщение игроку о покупке премиума +ServiceMsgHeroTakeDays = You have obtain Hero status for %days% day + +# Покупка премиум аккаунта на 1 день +Premium1ItemId = 4356 +Premium1ItemCount = 1 +# Покупка премиум аккаунта на 7 дней +Premium7ItemId = 4356 +Premium7ItemCount = 4 +# Покупка премиум аккаунта на 30 дней +Premium30ItemId = 4356 +Premium30ItemCount = 15 \ No newline at end of file diff --git a/config/game/network/database.properties b/config/game/network/database.properties new file mode 100644 index 0000000..e9814b3 --- /dev/null +++ b/config/game/network/database.properties @@ -0,0 +1,47 @@ +# Драйвер +driverClassName = com.mysql.jdbc.jdbc2.optional.MysqlDataSource + +# URL базы данных +# l2mariadb/l2db - (контейнер с mariadb)/(созданная БД внутри контейнера) +jdbcUrl = jdbc:mysql://l2mariadb/l2db?useUnicode=yes&characterEncoding=UTF-8 + +# Имя полльзователя +username = root + +# Пароль +password = password + +# Максимальное количество одновременных соединений +maximumPoolSize = 100 + +# Включить авто-коммит соединений, выдернутых из пула? +autoCommit = true + +# Полученные соединения имеют режим "только для чтения"? +readOnly = false + +# Максимальное время (мс), которое ожидает клиент до получения соединения +connectionTimeout = 30000 + +# Время жизни соединения в пуле +maxLifetime = 1800000 + +# Временной порог для обнаружения утечки +# По умолчанию: 0 [Обнаружение утечек выкл.] +leakDetectionThreshold = 0 + +# Остановить инициализацию пула, если невозможно наполнить пул начальным кол-вом соединений? +# Не имеет смысла, если "minimumIdle = 0" +initializationFailFast = false + +# Использовать метод [JDBC4 Connection.isValid()] для проверки жизнеспособности соединения +jdbc4ConnectionTest = true + +# Регистрировать JMX Management Beans? +registerMbeans = false + +# Изолировать внутренние запросы? +isolateInternalQueries = false + +# Минимальное количество начальных неиспользуемых соединений +minimumIdle = 10 diff --git a/config/game/network/game.properties b/config/game/network/game.properties new file mode 100644 index 0000000..137ab7c --- /dev/null +++ b/config/game/network/game.properties @@ -0,0 +1,57 @@ +# --------------------------------------------------------- +# Это конфигурационный файл сервера. Здесь вы можете настроить свойства связи вашего сервера. +# Обычно требуется изменить опцию ExternalHostname на +# - 127.0.0.1 (если вы играете/тестируете сервер на локальной машине) +# - LAN IP* (если вы хотите играть с другого компьютера сети) +# - WAN IP** (если вы хотите поиграть с друзьями через интернет) +# +# * = Если вы не знаете свой LAN IP, просто нажмите "Пуск" => "Выполнить..." и "cmd" => "ipconfig" +# **= Если вы не знаете свой WAN IP, посетите http://www.whatismyip.com +# --------------------------------------------------------- +# Укажите здесь (ip) адрес вашего Игрового Сервера, Или используйте символ * +GameserverHostname = * +GameserverPort = 7777 + +# Если ваш сервер опубликован с помощью NAT укажите здесь ваш ВНЕШНИЙ IP. Или используйте символ * +ExternalHostname = 127.0.0.1 + +# Если ваш сервер опубликован с помощью NAT укажите здесь ваш ВНУТРЕННИЙ IP. Или используйте символ * +InternalHostname = 127.0.0.1 + +# Связка логин и гейм сервера. Лучше не менять. +# l2login - наименование контейнера login +LoginHost = l2login +LoginPort = 9014 + +# This is the server id that the gameserver will request (i.e. 0 is Bartz) +RequestServerID = 0 +# If set to true, the login will give an other id to the server if the requested id is allready reserved +AcceptAlternateID = True + +# Директория датапака +# DatapackRoot = . + +# Шаблон допустимых символов в никах +# Что бы разрешить все символы ставте .* +# CnameTemplate=[A-Z][a-z]{3,3}[A-Za-z0-9]* +# CnameTemplate=[A-Z][a-z]* +CnameTemplate = .* +PetNameTemplate = .* + +# Макс. кол-во игроков на 1-ом акаунте +CharMaxNumber = 7 + +# Макс. кол-во онлайна на сервере +MaximumOnlineUsers = 500 + +# Мин. рев. протокола клиента и максимальная +# Придерживайтесь: MinProtocolRevision <= MaxProtocolRevision. +MinProtocolRevision = 656 +MaxProtocolRevision = 665 + +# Показывать название сервера в скобках [] +ServerListBrackets = False +# Показывать часы возле названия сервера +ServerListClock = False +# В игру могут войти только ГМы +ServerGMOnly = False diff --git a/config/game/network/hexid.txt b/config/game/network/hexid.txt new file mode 100644 index 0000000..4d93450 --- /dev/null +++ b/config/game/network/hexid.txt @@ -0,0 +1,3 @@ +#the hexID to auth into login +#Sun Dec 12 12:05:39 MSK 2021 +HexID=16ccbffaacd3864a9a93e17ae4a6a5a7 diff --git a/config/game/network/telnet.properties b/config/game/network/telnet.properties new file mode 100644 index 0000000..7ee07a9 --- /dev/null +++ b/config/game/network/telnet.properties @@ -0,0 +1,19 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +#Telnet is disabled by default. +EnableTelnet = false + +#This is the port telnet server will bind to +StatusPort = 12345 + +#If the following is not set, a random password is generated on server startup. +#StatusPW = somePass + +#This list can contain IPs or Hosts of clients you wish to allow. +#Hosts must be resolvable to an IP. +#The format is as follows: +#ListOfHosts = 0.0.0.0,host,0.0.0.1,host2,host3,host4,0.0.0.3 +#Make sure there are no spaces between hosts/ips +ListOfHosts = 127.0.0.1,localhost diff --git a/config/game/system/extensions.properties b/config/game/system/extensions.properties new file mode 100644 index 0000000..4d327b0 --- /dev/null +++ b/config/game/system/extensions.properties @@ -0,0 +1 @@ +# Configuration file for dynamic extensions \ No newline at end of file diff --git a/config/game/system/idfactory.properties b/config/game/system/idfactory.properties new file mode 100644 index 0000000..cf641df --- /dev/null +++ b/config/game/system/idfactory.properties @@ -0,0 +1,19 @@ +# Allows selection of new Classes for storage of World Objects. +# This may help servers with large amounts of players recieving error +# messages related to the L2ObjectHashMap and L2ObejctHashSet classes. +# +# By default it uses the new method, to use the old classes add the +# comment at the front of each line. +L2Map = WorldObjectMap +L2Set = WorldObjectSet + +# Tell server which IDFactory Class to use +# Options are: +# Compaction (Original method), +# BitSet (One non compaction method - default), +# Stack (Another non compaction method) +IDFactory = BitSet + +# Check for bad ids in the database on server boot up +# Much faster load time without it, but may cause problems +BadIdChecking = True \ No newline at end of file diff --git a/config/game/system/olympiad.txt b/config/game/system/olympiad.txt new file mode 100644 index 0000000..ea3ad5f --- /dev/null +++ b/config/game/system/olympiad.txt @@ -0,0 +1,7 @@ +#Olympiad Properties +#Wed Nov 25 18:19:50 EET 2015 +CurrentCycle=1 +NextWeeklyChange=1449073170739 +OlympiadEnd=1448964000739 +ValidationEnd=0 +Period=0 diff --git a/config/game/system/system.properties b/config/game/system/system.properties new file mode 100644 index 0000000..7ca90b2 --- /dev/null +++ b/config/game/system/system.properties @@ -0,0 +1,170 @@ +# =========================================== # +# Java-Build Dev. Team # +# =========================================== # + +# =========================================== # +# L2Top +# =========================================== # +# Включить функцию получения наград за голос в L2Top ? +L2TopDeamonEnabled = false +# Ссылка на ваш сервер в L2Top. +L2TopDeamonURL = +# 1 - ID Предмета, который будет использовать в качестве награды. +# 2 - Минимальное количество предмета, которое будет выдано в качестве награды. +# 3 - Максимальное количество предмета, которое будет выдано в качестве награды. +# 2 и 3 идут рандомно. Игроку в игре может выдать и 1 и 10 сразу. Неизвестно. +# Лучше ставить одинаковое количество на Мин. и Макс. значениях. +L2TopDeamonRewardItem = 57 +L2TopDeamonMin = 1 +L2TopDeamonMax = 10 +# Сообщение в игре после удачного голосования. +L2TopDeamonMessage = Спасибо за голосование ! +# Без описания +L2TopDeamonPollInterval = 5 +L2TopDeamonPrefix = +L2TopDeamonDoNotRewardAtFirstTime = false + +# =========================================== # +# MMMOTop +# =========================================== # +# Включить функцию получения наград за голос в MMOTop ? +MMOTopEnable = False +# Ссылка на ваш сервер в MMOTop. +MMOTopUrl = +# 1 - ID Предмета, который будет использовать в качестве награды. +# 2 - Количество предмета, которое будет выдано в качестве награды. +MMOTopRewardItemId = 57 +MMOTopRewardItemCount = 1 +# Без Описания +MMOTopRefreshTime = 10 + +# =========================================== # +# Настройки безопасности +# =========================================== # +# Проверка на максимальное кол-во итемов в инвентаре игрока +EnableItemsGuard = false + +# Банить игрока за превышение допустимого кол-ва итемов в сумке или удалять итемы из сумки +# treu = забанить игрока/false = удалить итемы из сумки +GuardPunishAction = false + +# Список предметов и кол-во которое можно носить в инвентаре +# Формат: item_id,count;item_id,count +GuardItemsMax = 4356,1000;4037,1000;6673,1000 + +# Интервал проверки наличия и количества предметов +# Указывать в минутах +ItemsGuardInterval = 10 + +# Если включено, не будут забираться деньги за депозит в вх +FreeWareHouseDeposit = false + +# Запретить передавать стопковые предметы питомцам +GivePetStackableItems = false + +# Разрешить класть на склад стопковые предметы (своего рода, защита от дюпа на высокорейтовых серверах) +DepositStackableItems = false + +# Включить/Отключить список итемов которые запрещено класть в хранилище +EnableDepositProtection = false + +# Список предметов которые запрещено класть в хранилище +ListNonDepositItems = 3470,4037,4356 + +# Вторичный пароль на персонажа +EnableSecondPassKey = false + +# Список запрещенных ников +RestrictedCharNames = admin,gm,administrator + +# Анти-Бот система +# Включить Анти-Бот Систему? +AllowSecurityQuestion = false +# Интервал времени между вопросами ? +SecurityTime = 20 + +# Включить Анти-АФК систему? +AllowAntiAfk = false +# Интервал времени между вопросами ? +AntiAfkMinutes = 20 + +# Включить систему проверки отдельных игроков,которые точатся или подымают предметы ? +AllowPrivateAntiBot = false +# С каким шансом будет выпадать проверка отдельных игроков? +# Указывать в % +PrivateBotChance = 15 + +# Player punishment for illegal acions +# 1 - broadcast warning to gms only +# 2 - kick player(default) +# 3 - kick & ban player +# 4 - jail player (define minutes of jail with param: 0 = infinite) +DefaultPunish = 2 +DefaultPunishParam = 0 + +# Bypass exploit protection +BypassValidation = True + +# Enforce gameguard for clients +# GameGuardEnforce - enforces gameguard query on character login +# GameGuardProhibitAction - dont allow player to perform trade, talk with npc +# and move until gameguard reply received +GameGuardEnforce = false +GameGuardProhibitAction = false + +# Check players for non-allowed skills +# Default: false +SkillCheckEnable = false + +# Allow L2Walker (Default false) +AllowL2Walker = false + +# Интервал использования предметов +UseItemDelay = 5 + +# Интервал отпраки сообщений в геройский чат +HeroVoiceDelay = 100 + +# Интервал покупки в мультеселах +MultisellDelay = 5 + +# Интервал смены саб-класса +SubClassDelay = 100 + +# Интервал выбрасывания предметов на пол +DropItemDelay = 10 + +# Интервал использования байпасов +ByPassDelay = 5 + +# +# System settings +# +#Packet LifeTime in milliseconds, 0 - disabled feature +PacketLifeTime = 0 + +#Dead Lock Detector (a separate thread for detecting deadlocks) +#For improved crash logs and automatic restart in deadlock case if enabled +#Check interval is in seconds +DeadLockDetector = false +DeadLockCheckInterval = 20 +RestartOnDeadlock = false + +# Threads configuration - Take care changing this +ThreadPoolSizeEffects = 10 +ThreadPoolSizeGeneral = 13 + +#Default 2 +UrgentPacketThreadCoreSize = 2 +#Default 4 +GeneralPacketThreadCoreSize = 4 +#Default 4 +GeneralThreadCoreSize = 4 + +AiMaxThread = 6 + +# Thread pools execution priority +# default values are -1,0,1 (low/med/high pools) +ExecutorPriLow = -1 +ExecutorPriMed = 0 +ExecutorPriHigh = 1 \ No newline at end of file diff --git a/config/login/logback.xml b/config/login/logback.xml new file mode 100644 index 0000000..79dbfb1 --- /dev/null +++ b/config/login/logback.xml @@ -0,0 +1,41 @@ + + + + + + + + + + log/java.log + + + java_%d{yyyy-MM-dd}.log + + + + + + + + + + + log/login.log + + + auth_%d{yyyy-MM-dd}.log + + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/login/network/database.properties b/config/login/network/database.properties new file mode 100644 index 0000000..e9814b3 --- /dev/null +++ b/config/login/network/database.properties @@ -0,0 +1,47 @@ +# Драйвер +driverClassName = com.mysql.jdbc.jdbc2.optional.MysqlDataSource + +# URL базы данных +# l2mariadb/l2db - (контейнер с mariadb)/(созданная БД внутри контейнера) +jdbcUrl = jdbc:mysql://l2mariadb/l2db?useUnicode=yes&characterEncoding=UTF-8 + +# Имя полльзователя +username = root + +# Пароль +password = password + +# Максимальное количество одновременных соединений +maximumPoolSize = 100 + +# Включить авто-коммит соединений, выдернутых из пула? +autoCommit = true + +# Полученные соединения имеют режим "только для чтения"? +readOnly = false + +# Максимальное время (мс), которое ожидает клиент до получения соединения +connectionTimeout = 30000 + +# Время жизни соединения в пуле +maxLifetime = 1800000 + +# Временной порог для обнаружения утечки +# По умолчанию: 0 [Обнаружение утечек выкл.] +leakDetectionThreshold = 0 + +# Остановить инициализацию пула, если невозможно наполнить пул начальным кол-вом соединений? +# Не имеет смысла, если "minimumIdle = 0" +initializationFailFast = false + +# Использовать метод [JDBC4 Connection.isValid()] для проверки жизнеспособности соединения +jdbc4ConnectionTest = true + +# Регистрировать JMX Management Beans? +registerMbeans = false + +# Изолировать внутренние запросы? +isolateInternalQueries = false + +# Минимальное количество начальных неиспользуемых соединений +minimumIdle = 10 diff --git a/config/login/network/login.properties b/config/login/network/login.properties new file mode 100644 index 0000000..86f3e89 --- /dev/null +++ b/config/login/network/login.properties @@ -0,0 +1,66 @@ +# --------------------------------------------------------- +# Это конфигурационный файл сервера. Здесь вы можете настроить свойства связи вашего сервера. +# Обычно требуется изменить опцию ExternalHostname на +# - 127.0.0.1 (если вы играете/тестируете сервер на локальной машине) +# - LAN IP* (если вы хотите играть с другого компьютера сети) +# - WAN IP** (если вы хотите поиграть с друзьями через интернет) +# +# * = Если вы не знаете свой LAN IP, просто нажмите "Пуск" => "Выполнить..." и "cmd" => "ipconfig" +# **= Если вы не знаете свой WAN IP, посетите http://www.whatismyip.com +# --------------------------------------------------------- + +# =========================================== # +# Сетевые настройки +# =========================================== # +# Внешний Ip адрес +ExternalHostname = 127.0.0.1 + +# Внутренний Ip адрес +InternalHostname = 127.0.0.1 + +# 1 - Адрес на котором прослушивается логин сервер +# * - все доступные +# 2 - Порт логин сервера на который подключается клиент +LoginserverHostname = * +LoginserverPort = 2106 + +# Если пароль введен не верне n-ое кол-во раз его забанит на несколько минут +LoginTryBeforeBan = 20 + +# На сколько банить вход на акаунт после не правильного ввода пароля +LoginBlockAfterBan = 600 +GMMinLevel = 100 + +# Порт логин сервера для игровых серверов +LoginPort = 9014 + +# Разрешить автоматическую регистрацию новых серверов +AcceptNewGameServer = False + +# Отображать лицензионное соглашение после авторизации +# Даная опция присылает клиенту 2 дополнительных ключа при авторизации +# Если вы ее отключаете, и у вас ухитрились залезсть с подменой ака, то потом не жалуйтесь. +ShowLicence = True + +# Автоматически регистрировать аккаунты +AutoCreateAccounts = true + +# Проверять регистарцию игровых серверов каждые x минут +IpUpdateTime = 15 + +# =========================================== # +# Настройки для тест сервера +# =========================================== # +Debug = False +Assert = False +Developer = False + +# Проверка клиента на наличие GameGuard +ForceGGAuth = True + +# Защита от флуда +EnableFloodProtection = True +FastConnectionLimit = 15 +NormalConnectionTime = 700 +FastConnectionTime = 350 +MaxConnectionPerIP = 50 \ No newline at end of file diff --git a/config/login/network/telnet.properties b/config/login/network/telnet.properties new file mode 100644 index 0000000..7ee07a9 --- /dev/null +++ b/config/login/network/telnet.properties @@ -0,0 +1,19 @@ +# =========================================== # +# L2Build Dev. Team # +# =========================================== # + +#Telnet is disabled by default. +EnableTelnet = false + +#This is the port telnet server will bind to +StatusPort = 12345 + +#If the following is not set, a random password is generated on server startup. +#StatusPW = somePass + +#This list can contain IPs or Hosts of clients you wish to allow. +#Hosts must be resolvable to an IP. +#The format is as follows: +#ListOfHosts = 0.0.0.0,host,0.0.0.1,host2,host3,host4,0.0.0.3 +#Make sure there are no spaces between hosts/ips +ListOfHosts = 127.0.0.1,localhost diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..880a329 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,64 @@ +version: "3.7" + +services: + l2login: + image: "l2login" + build: + context: . + dockerfile: Dockerfile.login + restart: "always" + container_name: "l2login" + cap_add: + - SYS_NICE + ports: + - "2106:2106" + networks: + - "l2_net" + volumes: + - "/var/volumes-data/lineage2/login/log:/opt/login/log" + - "./config/login:/opt/login/config" + depends_on: + - "l2mariadb" + + l2game: + image: "l2game" + build: + context: . + dockerfile: Dockerfile.game + restart: "always" + container_name: "l2game" + ports: + - "7777:7777" + networks: + - "l2_net" + volumes: + - "/var/volumes-data/lineage2/game/log:/opt/game/log" + - "./config/game:/opt/game/config" + depends_on: + - "l2mariadb" + + l2mariadb: + image: "mariadb:latest" + restart: "always" + container_name: "l2mariadb" + environment: + MYSQL_ROOT_PASSWORD: "password" + networks: + - "l2_net" + volumes: + - "/var/volumes-data/lineage2/db:/var/lib/mysql" + + l2adminer: + image: "adminer" + restart: "always" + container_name: "l2adminer" + ports: + - "8081:8080" + networks: + - "l2_net" + depends_on: + - "l2mariadb" + +networks: + l2_net: + name: "l2_net" diff --git a/img/create_db.png b/img/create_db.png new file mode 100644 index 0000000..9364075 Binary files /dev/null and b/img/create_db.png differ diff --git a/img/game.jpg b/img/game.jpg new file mode 100755 index 0000000..6091c39 Binary files /dev/null and b/img/game.jpg differ diff --git a/img/import_backup.png b/img/import_backup.png new file mode 100644 index 0000000..c86e0e1 Binary files /dev/null and b/img/import_backup.png differ diff --git a/img/l2_file_editor.png b/img/l2_file_editor.png new file mode 100755 index 0000000..a6760da Binary files /dev/null and b/img/l2_file_editor.png differ diff --git a/img/login_db.png b/img/login_db.png new file mode 100644 index 0000000..e2ab1e4 Binary files /dev/null and b/img/login_db.png differ diff --git a/l2.sql.gz b/l2.sql.gz new file mode 100644 index 0000000..937bd6a Binary files /dev/null and b/l2.sql.gz differ