Запрещено публиковать исходный код без BB-кода — CODE
- Хроники
- Chaotic Throne: High Five
NoName - потому что еще не придумал название =)
От автора: проект только начинается, делаю один — буду рад любым отзывам, идеям и баг-репортам!Платить ни за что не нужно.
Если вы хотите получить доступ к тестовому серверу или получить сборку для собственного запуска - свяжитесь со мной в личных сообщениях.
1) Продажа предметов сразу заточенные и с атрибутами.
Поддержка продажи предметов с заранее заданной заточкой enchantCount="3" — на сколько будет заточено при покупке.Продажа предметов с элементами (вода, огонь, земля и т.д.)
Возможность выдавать статус героя предмету:
Код:
<set name="setHeroCharacter" val="true" />
2) Полный рефакторинг системы заточки
Заточка стала модульной, гибкой, расширяемой
Добавлены глобальные правила типа:
Код:
<enchant id="6570" targetGrade="A" allTarget="true"/> → точит всё надетое с таким же грейдом.
Новый параметр perenchant — самый востребованный:
Код:
<perenchant stat="pAtkSpd" val="10" />
<perenchant stat="mAtkSpd" val="10" />
Каждая заточка будет добавлять +10 к скорости атаки (или любой другой стат).
3) Damage Zones
Добавлены расширенные конфиги для фарм/фан зон:
Код:
# Включить функцию настраиваемой зоны урона.
EnableCustomDamageZone = True
# ID зон, к которым применяется настройка настраиваемого урона (через запятую).
CustomDamageZoneAllowIdZones = 300012
# Урон в секунду, наносимый игрокам внутри зоны.
CustomDamageZoneDamageCount = 100
# Разрешить игрокам умирать внутри зоны?
CustomDamageZoneAllowDie = True
# ID шаблонов NPC, которые должны автоматически возрождаться в зоне (список через запятую).
CustomDamageZoneNpcIds = 22222
# Количество NPC, появляющихся в точке появления.
CustomDamageZoneNpcCount = 5
# Количество доступных точек появления внутри зоны.
CustomDamageZoneNpcLocks = 10
# Снять все положительные эффекты с игроков, входящих в зону?
CustomDamageZoneRemoveBuff = True
# ID предметов, которые не экипированы и заблокированы в зоне (список через запятую).
CustomDamageZoneBlockedItems = 6376
Можно создавать зоны «в один клик»: указываете ID моба, кол-во, точки спавна — всё остальное автоматизировано.
Лбо через сам файл зоны можно сделать тоже самое, кому как удобно.
Код:
<zone name="test2" id="300012" type="DamageZone" shape="NPoly" minZ="-3500" maxZ="-3300">
<stat name="reuse" val="5000" />
<stat name="allowDie" val="false" />
<stat name="removeBuff" val="true" />
<stat name="npcIds" val="22222" />
<stat name="npcCount" val="5" />
<stat name="npcLocks" val="5" />
<stat name="blockedItems" val="14120" />
<node X="84608" Y="149269" />
<node X="83393" Y="149224" />
<node X="83401" Y="149048" />
<node X="83621" Y="149050" />
</zone>
4) Skill Shop
Полностью кастомный магазин умений в Community Board.Пока в разработке но уже работает немного =)
Показывает досутпные, купленные. при покупке показывает описание, стоимость и можно подтвердить покупку.
Данные берутся из communitySkillShop.json
Пример:
Код:
{
"id": 1,
"skillId": 1068,
"skillLevel": 3,
"description": "+10% Attack Speed",
"price": [
{ "itemId": 57, "count": 5000 }
]
}
5) Перековка статов
Дело щипетильное с кучей проверок конечно же но штука интересная для сервера с мега статами, можно включить\выключить конечно же.
Перенос статов допустим из STR в WIN или CON, кому как хочется.
6) Автозаточка
Понятное дело есть и в КБ и через .autoenchant.Полностью конфигурируемая:
- любой расходный материал
- шансы
- лимиты
- условия
7) Автофарм
.farm on/off также и в Community Board.
В конфиге указывается автобутылки, если они есть в инвентаре то юзаются сами, скилы можно добавить, выставить радиус, возможность реагировать на атаки игроков, если ваш бот был атакова то персонаж сам отвечает в ответ. (далее будет реализовано автовоскрешение).
8) Смена внешнего вида оружия или брони
Через Community Board можно в любой предмет засунуть внешний вид другого предмета, вся реализация на стороне сервера. (проверка на тип оружия\брони, одето\снято)
9) Система контрактов
Через Community Board есть возможность посмотреть дневные контракты и контракты на завтра,
- убийство боссов
- в пати убить мобов
- заточить предмет
- убить игроков в пвп
- клановый бой.
10) Система ИИ ботов
Реализована расширенная AI-система (в процессе разработки):
- Автофарм бот.
- Автоторговля (Продажа\покупка). Крафт пока в разработке.
- Авто ПК убийца с автотаргетом и участием на ТВТ.
- Ассистент-помощник (фича для прикола)
- Если бота Автофарм убивают прибегает бишоп и ресает его, можно установить откат этого биша =)
Код:
# Master toggle: enable spawning and management of AI-driven player characters.
AiPlayers = True
# Directory structure for AI assets (profiles, routes, dialogs).
AiProfilesDirectory = data/ai/profiles
AiRoutesDirectory = data/ai/routes
AiDialogsDirectory = data/ai/dialogs
# General AI runtime parameters.
AiBootstrapDelayMs = 15000
AiPollingIntervalMs = 4000
AiMaxSimultaneousPlayers = 50
# -----------------------------------------------------------------------------
# Auto-farm bots
# -----------------------------------------------------------------------------
AiAutoFarm = True
AiAutoFarmProfiles = autofarm/default.json;autofarm/damage.json
AiAutoFarmRespawnDelayMs = 60000
AiAutoFarmAttackPlayers = True
AiAutoFarmAssistPlayers = True
AiAutoFarmUseShots = True
AiAutoFarmReturnDelayMs = 300000
AiAutoFarmReturnDistance = 6000
# -----------------------------------------------------------------------------
# Support bots
# -----------------------------------------------------------------------------
AiSupportProfiles = support/bishop.json
#30000 default
AiSupportCooldownMs = 30
AiSupportApproachDistance = 300
# 5000 default
AiSupportDespawnDelayMs = 5000
# -----------------------------------------------------------------------------
# Auto-trade bots
# -----------------------------------------------------------------------------
AiAutoTrade = True
AiAutoTradeProfiles = autotrade/giran.json;autotrade/giran_2.json;autotrade/giran_3.json
# -----------------------------------------------------------------------------
# Walker / patroller bots
# -----------------------------------------------------------------------------
AiPlayerWalker = True
AiWalkerRoutes = giran_walkers.json
AiWalkerLoopDelayMs = 5000
# -----------------------------------------------------------------------------
# Combat / attacker bots
# -----------------------------------------------------------------------------
AiPlayerAttacker = True
AiAttackerProfiles = attackers/giran_attackers.json
AiAttackerInitDelayMs = 15000
AiAttackerInitThreads = 5
AiAttackerAggroRange = 2000
AiAttackerRespawnDelayMs = 120000
AiAttackerTargetPlayers = True
AiAttackerPkKill = True
AiAttackerAssistPlayers = True
AiAttackerTvtRegister = True
AiAttackerOlympiadRegister = False
AiAttackerRunSpeedPercent = 30
AiAttackerAttackSpeedPercent = 30
AiAttackerCastSpeedPercent = 0
AiAttackerPAtkPercent = 0
AiAttackerMAtkPercent = 0
AiAttackerBowReusePercent = 100
AiAttackerSkillReusePercent = 100
AiAttackerMageCastSpeedPercent = 200
AiAttackerTvtCloneNames = ShadowRider;IronWolf;NightHunter;StormBlade;SilverFang;DarkArcher;FlameGhost;FrostKnight;ThunderStrike;MoonRogue;MysticRaven;SilentBlade;FireDrake;SteelViper;WildHawk;VoidRunner;BattleLion;IceWarden;LoneRanger;GhostSamurai;CrimsonFalcon;StormReaper;
# -----------------------------------------------------------------------------
# Social / talk bots
# -----------------------------------------------------------------------------
AiPlayerTalk = False
AiTalkProfiles = dialogs/default.json
AiTalkChannels = SAY,WHISPER,SHOUT
AiChatServiceProvider = none
AiChatServiceBaseUrl =
AiChatServiceModel = gpt-3.5-turbo
AiChatServiceApiKey =
AiChatReplyDelayMs = 5000
AiChatSessionTimeoutMs = 300000
Ну и для снижения нагрузки на сервер для подгрузки всех ботов добавлена конфигурация для возможности увеличения потоков их загрузки и количеству.
Статус готовности:
Воин: 90%
Маг: 70%
Саммонеры: 0% (скоро)
11) Система Баланса (очень важно для мега сервера с мега статами)
Код:
# Формат: maxSkillDamage, maxNormalDamage, maxCritDamage, maxMagicCritDamage
# Значения — это проценты от максимального HP цели (0 = отключено)
# Пример: "50,10,20,30" означает:
# - Максимальный урон от навыков: 50% от максимального HP цели
# - Максимальный урон от обычных атак: 10% от максимального HP цели
# - Максимальный урон от критических ударов: 20% от максимального HP цели
# - Максимальный урон от магических критических ударов: 30% от максимального HP цели
# Оставьте пустым или установите "0,0,0,0", чтобы отключить ограничения для данного класса
# Ограничения урона для классов магов (волшебник, чародей, некромант, заклинатель и т. д.)
# Пример: "50,10,20,30" = 50% от максимального урона от навыков, 10% от максимального урона от обычных атак, 20% от максимального урона от критических ударов, 30% от максимального урона крит магии
DamageLimitMage = 0,0,0,0
# Лимиты урона для класса танка (Паладин, Тёмный мститель, Рыцарь храма, Рыцарь Шилен и т. д.)
# Пример: "30,10,20,0" = 30% от максимального навыка, 10% от максимального обычного, 20% от максимального крита, без магического крита
DamageLimitTank = 0,0,0,0
# Лимиты урона для класса лучника (Соколиный глаз, Серебряный рейнджер, Призрачный рейнджер, Стрелец и т. д.)
# Пример: "40,8,10,0" = 40% от максимального навыка, 8% от максимального обычного, 10% от максимального крита, без магического крита
DamageLimitArcher = 0,0,0,0
# Лимиты урона для класса кинжала (Охотник за сокровищами, Странник равнин, Странник бездны, Авантюрист и т. д.)
# Пример: "35,8,15,0" = 35% от максимального навыка, 8% от максимального обычного, 15% от максимального критического удара, без магического крита
DamageLimitDagger = 0,0,0,0
# Лимиты урона для класса призывателя (Чернокнижник, Призыватель стихий, Призыватель фантомов, Повелитель магии и т. д.)
# Пример: "45,10,15,25" = 45% от максимального навыка, 10% от максимального обычного, 15% от максимального критического удара, 25% от максимального магического критического удара
DamageLimitSummoner = 0,0,0,0
# Лимиты урона для класса Камаэль (все классы Камаэль)
# Пример: "40,10,18,0" = 40% от максимального навыка, 10% от максимального обычного, 18% от максимального критического удара, без магического крита
DamageLimitKamael = 0,0,0,0
12) Бесконечные стрелы и соски
Код:
(понятно)
13) Система Community Board
Всю систему КБ пишу с 0, пока в разработке, нет проверок на пвп, пк, ивенты и так далее. работает в тестовом режиме, показывает, нажимается.
Добавлены:
Мультиселлы
HTML окна
Телепорты
Баффер
Магазин умений
Смена пола
Геройство
Цвет ника
Перековка статов (распределение STR → CON и т.д.)
Смена внешнего вида оружия и брони (visual change)
Автофарм
Автозаточка
14) Премиум система
Код:
# Включить/отключить премиум-пакеты
premiumEnable = true
# Премиум-пакеты: id,itemId,count (пары, разделенные символом «;»)
premium = 1,57,1000000;2,57,5000000;3,57,100
# Множители премиум-опыта: id,value (используйте «.» или «,» в качестве десятичного разделителя)
premiumRateXp = 1,2.0;2,3.0;3,4.0
# Множители премиум-SP: id,value
premiumRateSp = 1,2.0;2,3.0;3,4.0
# Множители шанса выпадения премиум-пакетов: id,value
premiumRateDrop = 1,2.0;2,3.0;3,4.0
# Длительность премиум-пакета: id,duration — поддерживаемые единицы: с/сек, мин, час, день, неделя, месяц (30 дн.), год (365 дн.)
premiumTime = 1,2 week.; 2,2 day.; 3,1 min.
15) Контроллер урона и жизней боссов и мобов
Три режима:oiginal - означает что статы будут браться из фала xml
level - значение будет равно уровню моба\босса\героя в зависимостри что за конфигурация
статическое число - будет утановленно статическое значение =)
Код:
# HP мобов (original/level/число)
staticMobsHp = level
# Урон моба по игроку
staticMobsDamage = level
# HP мобов (original/level/число)
staticBossHp = level
# Урон босса по игроку (original/level/число)
staticBossDamage = 100
# Урон игроков по боссам # Маги и скиллы (original/level/число)
staticOnBossDamageMage = 10
# Воины/автоатаки (original/level/число)
staticOnBossDamageFighter = 10
# Урон игроков по обычным мобам (original/level/число)
staticOnMobsDamageMage = 10
staticOnMobsDamageFighter = 10
# Кастомные исключения (перечисление через ;)
# Формат: id,damage,hp,damageOn
# customBossConfig = 29020,50000,200000,150; 29006,level,original,level
# customMobsConfig = 22601,original,5000,100;22222,10,100,1
customBossConfig=
customMobsConfig=
16) Автоматический прокси логин сервер
Логинсервер может работать как прокси:
Показывает пинг
Кол-во подключенных игроков
Передаёт трафик на основной сервер
Для игроков в игре отображается, через какой прокси он подключился
Код:
Настройка:
# Основной хост сервера для регистрации прокси
# Прокси-сервер будет подключаться к этому хосту для регистрации
# Значение по умолчанию: (пусто)
ProxyClientMainServerHost = 127.0.0.1
# Основной порт сервера для регистрации прокси
# Значение по умолчанию: 2108
ProxyClientMainServerPort = 2108
# IP-адрес прокси-сервера (видимый клиентами)
# Это IP-адрес, к которому будут подключаться клиенты
# Значение по умолчанию: (пусто)
ProxyClientProxyIp = 127.0.0.2
# Порт прокси-сервера (к которому подключаются клиенты)
# Значение по умолчанию: 2106
ProxyClientProxyPort = 2106
# Региональное имя прокси-сервера
# Пример: Russia, Germany, Test
# по умолчанию: Unknown
ProxyClientRegion = Russia
Пример лога Основного логина:
Код:
[INFO ] 2025-11-15 11:31:45 LoginServer: === Proxy Servers Status ===
[INFO ] 2025-11-15 11:31:45 LoginServer: Total registered proxies: 2, Total connected players: 12
[INFO ] 2025-11-15 11:31:45 LoginServer: Proxy 127.0.0.2:2106 (Russia) - Ping: 3 ms, Players: 7
[INFO ] 2025-11-15 11:31:45 LoginServer: Proxy 127.0.0.3:2106 (Amsterdam) - Ping: 82 ms, Players: 5
[INFO ] 2025-11-15 11:31:45 LoginServer: ===========================
Лог с прокси логина:
Код:
[INFO ] 2025-11-15 11:33:10 ProxyClient: Heartbeat sent: OK, IP: 127.0.0.1:2106, Ping: 4ms, Connected players: 7
Добавил антифлуд запищу в логин
Код:
# Антифлуд при входе через прокси (для каждого IP-адреса клиента)
# Количество новых подключений, разрешённых в течение окна до временной блокировки (0 отключает ограничение)
ProxyLoginFloodMaxAttempts = 5
# Временной интервал в секундах для подсчёта попыток
ProxyLoginFloodWindowSeconds = 60
# Длительность блокировки в секундах после превышения лимита
ProxyLoginFloodLockSeconds = 60
17) Переводы (Lang)
Конечно же переводы, добавлены файлы с translations.properties для перевода Community Board
Код:
# Main Menu (пример)
menu.main.title=Доска объявлений
menu.main.teleport=Телепорт
menu.main.buff=Бафф
menu.main.skillshop=Магазин умений
menu.main.premium=Премиум
menu.main.appearance=Смена внешнего вида
menu.main.contracts=Контракты
menu.main.farm=Автофарм
menu.main.autoenchant=Автозаточка
menu.main.services=Услуги игрока
# Main Menu (Exanple)
menu.main.title=Community Board
menu.main.teleport=Teleport
menu.main.buff=Buff
menu.main.skillshop=Skill Shop
menu.main.premium=Premium
menu.main.appearance=Appearance Change
menu.main.contracts=Contracts
menu.main.farm=Auto Farm
menu.main.autoenchant=Auto Enchant
menu.main.services=Player Services
реализованы показы html из папок html-%s
Код:
# Шаблон пути для локализованных HTML-каталогов (используйте %s для кода языка)
MultiLangHtmlDir = data/html-%s/
18) Откат скилов, стрелки, автоатаки
Нашел проблему с формулой стандартной, она не расчитана на очень высокие статы (например 40к атак спида или 40к каста).Герой просто зависал с вытянутой рукой при автоатаке, стрелок вставал на одной ноге спамя стрелами без возможности подвинуться.
Магические скилы нормально не откатывались и не использовались. Добавил новый конфиг чтоб решить эту проблему.
Код:
# Минимальное время применения в миллисекундах, применяемое после применения скорости применения.
# Ограничены только навыки, базовое время попадания которых превышает это значение.
# Установите 0, чтобы отключить минимальный предел в 500 мс, как в обычном режиме.
SkillMinCastTimeMs = 100
# Минимальная задержка повторного использования в миллисекундах, применяемая после применения модификаторов характеристик.
# Установите 0, чтобы разрешить мгновенное повторное использование навыков при достижении нулевого значения.
SkillMinReuseDelayMs = 0
# Включить масштабирование задержки повторного использования навыков в зависимости от скорости атаки/применения (только для нестатических навыков).
SkillReuseScaleWithSpeed = False
# Минимальные значения (в миллисекундах), которых может достичь повторное использование после масштабирования для каждого типа навыка.
# Эти значения действуют как минимальные значения: даже при очень высокой скорости повторное использование не опустится ниже.
SkillReuseMagicBaseMs = 100
SkillReusePhysicalBaseMs = 100
# Базовые скорости (в миллисекундах), используемые для масштабирования. Только скорости выше этих
# значений уменьшат повторное использование; установите меньшее значение, чтобы масштабирование сработало раньше.
SkillReuseMagicReferenceMs = 100
SkillReusePhysicalReferenceMs = 100
# Минимальное время (мс), допустимое между автоатаками для определённых семейств оружия.
# Используйте эти значения, чтобы предотвратить анимацию с нулевой задержкой при экстремальных скоростях атаки.
AttackMinBowIntervalMs = 100
AttackMinCrossbowIntervalMs = 100
AttackMinFistIntervalMs = 100
От меня =)
Проект я делаю один, работа только началась.
Ищу:
ваши пожелания
идеи
предложения
замеченные баги
тестеров
Если кто-то хочет получить билд для просмотра — пишите в личные сообщения.
Спасибо всем, кто поддержит и поможет сделать сборку лучше
Буду добавлять описания и что сделал по мере поступления.
Вложения
Последнее редактирование:


