🌟NoName Server High Five for mega stats

zlDrag0nSlz

Знаменитый
Участник
Сообщения
24
Розыгрыши
0
Репутация
15
Реакции
5
Баллы
1 235
Запрещено публиковать исходный код без BB-кода — CODE
Хроники
  1. 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 есть возможность посмотреть дневные контракты и контракты на завтра,
  • убийство боссов
  • в пати убить мобов
  • заточить предмет
  • убить игроков в пвп
  • клановый бой.
Все настраивается через файл contracts.json




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
upd 15.11


От меня =)​


Проект я делаю один, работа только началась.
Ищу:

ваши пожелания
идеи
предложения
замеченные баги
тестеров

Если кто-то хочет получить билд для просмотра — пишите в личные сообщения.


Спасибо всем, кто поддержит и поможет сделать сборку лучше

Буду добавлять описания и что сделал по мере поступления.
 

Вложения

  • 1763207038853.webp
    46,3 КБ · Просмотры: 111
Последнее редактирование:
Севак онлайн? Тестовый. Можно лаунчер?
 
Привет, отписался в личные сообщения
Да зашел побегал, из первого при создании чара нет отображения, от слова совсем. В Гиране Страйдеры и они злые будто алкаши у закрывшегося ларька, злые и бессмертные, хотел в магазин, убили и оплевали. Если можешь пропиши ГМа на чара либо убери гадов от туда. При перезаходе заходишь трупом. Часть магазинов не работает. Карта врет последний скрин.
 

Вложения

  • 1.webp
    18,5 КБ · Просмотры: 52
  • 2.webp
    191,1 КБ · Просмотры: 55
  • 3.webp
    174,9 КБ · Просмотры: 55
  • 4.webp
    175,2 КБ · Просмотры: 62
Последнее редактирование:
Не ожидал такого на Яве. Из того что описали моя сборка тогда в разы более рабочая чем эта. И это на совсем других технологиях... Интересно тогда почему такие изменения на сервере и какая была базовая сборка до начала ужастиков на сервере?
 
Геодату можно выпиливать смело, ее явно делал человек под очень большой дозой чистого спирта или героина. Не в обиду. Я просто сходил в Руне на паром, что бы зайти на него потребовалось 50 или 70 кликов что бы попасть туда куда надо.Так идеи ништяков очень даже неплохи, но к примеру Песни и Танцы НПЦ дает чуть ли не на 96 часов но после перезагрузки все пропадает, ништяки ништяками но сам сервер походу из-за них страдает. Было бы неплохо ГМом побегать, проверить боссов и так далее.
 
Оверпостинг
Чара у тебя нет при регистрации видимо из-за клиента не стандартного, могу скинуть чистый Клинт. В гиране страйдеры с статической атакой и уроном, всегда по 10. ГМа выдам без проблем
Что при перезаходе трупом это странно очень, проверю

Огромное спасибо за отзывы, любая мелочь полезна и будет 100% исправлена.
Геодата пьяна, согласен, свой движок и недоработан еще до конца. Будет сделано
Бафы добавлю проверки, еще нашел баг при переливе стат dex-con или в другую сторону уперевшись в максимальное значение то при перезаходе может пропасть на несколько секунд параметр, внесу изменения в менеджер.
 
Последнее редактирование модератором:

Геодата и позиции​



1. Движок геодаты был поправлен, геодата была обновлена. Прошу проверить пожалуйста еще раз.
2. Бафы по 10 часов, после перезагрузки не пропадают. Бафы сейчас только в Community Board





 
Очень здоровая фиксация. У вас же тоже самое. Как про Яву кто-то начинает так вот и вы!
 

GameGuard, Защита от подмена пакетов​



Реализована защита от подмены пакетов клиент <---> сервер с генерацией по Timestamp и хешами.
  • Алгоритм: SHA-1 (160 бит на выходе)
  • Используется: первые 8 байт = 64 бита
  • Энтропия: 2^64 ≈ 18.4 квинтиллиона комбинаций
Данные для хеша:
  • timestamp (8 байт) — текущее время в миллисекундах
  • random1 (4 байта) — случайное число
  • random2 (4 байта) — случайное число
  • secret_key (25 байт) — статический ключ "*******"
В дальнейшем будет обновлен до SHA-256 или SHA-3 для того чтобы использовать больше байт хеша (12-16 вместо 8) с использованием динамичного секретного ключа.
Добавление HMAC вместо простого хеша.

Реализован dsetup.dll с проверкой на его наличие, отправка уникальных ответных пакетов.
Далее.... реализация защиты от реверс-инжиниринга, и переход на SHA-256 для улучшения защиты.

Файл dsetup будет идти с сборкой либо привязанный к 127.0.0.1 либо с файлом конфигурации для смены ключа и адреса.

Рефакторинг логов,
мелкие фиксы по формулам





(на 127.0.0.1 без конфига)
 
В чем смысл этого, если пакеты сейчас подменяются не сторонними тулзами, а перехуками основных функций в памяти ДО всех ваших хешей. Т.е любые модификации пакетов будут происходить в валидном пайплайне и валидно хешиться вашими костылями.
 
Если будет инструкция эмуляции такх действий без проблем сделаем и для такого защиту, мой вариант спасет только от самых простых подмен, конечно есть множества вариантов наредить в наше время.

Именно для этого и был заведен топик на форуме чтоб более углубиться во все это и сделать действительно рабочий проект.
 
Это делается функционалом адрика. Просто, банально и без изысков.
 
Реакции: kick
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…