Jump to content

Search the Community

Showing results for tags 'aion'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Main information
    • News
    • Rules
  • Aion
    • Услуги
    • Articles
    • Guide
    • AionCMS
    • Client
    • Server Builds
    • Soft
    • Sandbox
    • Help
  • Linage
    • Server Builds
  • ArcheAge
    • Articles
  • DevOps practice
    • Articles
    • Ready practices
    • Useful files
  • Others
    • Questions

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me

Found 12 results

  1. Многим известно, что шанс отразить магическую атаку равен: шанс % = (маг. защита цели - маг. точность атакующего)/10 почти верно), но есть ньюансы Оригинальная формула выглядит так: int resistChance = (int) ((float)((int) ((float)((targetMagResist - attackerHitAcc) * 1) + magResistLvlAdj)); if (resistChance > 900) { resistChance = 900; } else if (resistChance < 0) { resistChance = 0; } return RandomUtil.getIntInRange(1, 1000) > resistChance; Как видно из формулы шанс отразить маг атаку не может превышать 90% Но самое интересно здесь это разница в уровне, при чём оно не зависит игрок или НПС int lvlDiff = target.getCreatureStats().getLevel() - attacker.getCreatureStats().getLevel(); if (4 < lvlDiff) { return (lvlDiff - 4) * 100; } if (lvlDiff < -4) { return (lvlDiff + 4) * 100; } return 0; Так же не стоит забывать, что если цель игрок, то точность атакующего меняется следующим образом if (attacker instanceof Player) { attackerHitAcc += hitAccMod; } где hitAccMod - это мод который прописан в скилах <effect_acc_mod1/2>
  2. Пакет CM_CASTSPELL в конце имеет 4 байта недочитанного буфера Пример: 65a20000 Это checkSum скила, основанного на: move_casting charging_delay motion_name motion_play_speed no_jump_cancel При определённой формуле вычисляется чек-сумма, и сравнивается с тем, что присылает клиент. На основе этого можно делать защиты от "подмены" скилов... Формулу не выложу, но чек-сумму могу скинуть на любую версию)))
  3. Ввиду того, что нам удалось найти оригинальную формулу дамага))) Написали калькулятор дамага, для того, чтоб можно было сравнить и узнать, соответствует ли сервер (фришка) на котором вы играете официальной версии Калькулятор пока рассчитывает только дамаг от магических скилkов, но скоро добреемся и до физ дамага. В общем, по ходу дела будем дорабатывать. Пример работы калькулятор на примере скила Гнеф Эфры (skill id 19503) Скилл имеет рандомный дамаг из 20 вариантов, калькулятор показывает все варианты дамага. Сам калькулятор можно найти по ссылке
  4. Это базовые значение. Еда, напитки и т.д. суммируются к этим значениям.
    Скрытый контент.
    Контент можно открыть если купить автору месячный запас кофе
  5. Итак) самая незаконченная тема разработки эмулятора aion это motion_time Как оказалось всё гораздо проще чем на самом деле казалось! Из клиента берутся следующие файлы
    Скрытый контент.
    Далее) В файле client_skills.xml есть атрибут motion_name пример: <motion_name>spindash</motion_name> Так вот, берём это значение добавляем
    Скрытый контент.
    Благодарности принимаю в виде пожертвований в "фонд рукожопых программистов"))
  6. Это клиенты Live версии (версии, которые были от 1.9 - 8.2. Тут нет классики), которые были собраны мной на протяжении 11 лет работы с Aion. Клиенты могут быть модифицированы, стартовые экраны, локализация. Изменения даты клиента в этих клиентах не было замечено. В данный момент наша команда предлагает получение любого клиента из списка за символическое пожертвование в 5$. Эти деньги идут на оплату сервера форума и других систем нашей команды. Также с этих денег будет оплачиваться сервер нашей cloud платформы, на которой и размещаются эти клиенты. Платить или нет - выбор каждого. Мы лишь предлагаем вариант, которым можно получить клиент. Чтобы получить клиент - необходимо написать мне в личные сообщение об этом и я предоставлю всю информацию. Также можно запросить проверку клиента на модификации и скриншоты архива с клиентом. В списке Вы видите номер сборки клиента по Game.dll. Список доступных клиентов на данный момент: Live 1.9 NA Live 2.1 NA Live 2511.302.329.4006 EU Live 2711.907.1018.4770 RU Live 2711.907.1018.4770 NA Live 3012.509.604.5722 NA Live 3513.1121.0122.6653 NA Live 3512.1004.1106.6382 RU Live 4313.403.1112.7588 NA Live 4313.403.807.7337 RU Live 4514.319.616.8232 NA Live 47515.924.310.9021 NA Live 47514.924.1125.8751 RU Live 4815.107.1013.9672 NA Live 4815.107.707.9356 RU Live 4916.925.218.10215 NA Live 5116.420.1129.11322 NA Live 5317.1019.411.11706 NA Live 5818.823.109.12545 NA Live 5817.823.1127.12407 RU Live 6218.411.918.13569 EU Live 6219.411.109.14040 NA Live 6218.411.628.13210 RU Live 6519.808.326.14249 NA Live 7019.1226.827.14836 NA Live 7019.1226.130.14122 RU Live 7220.925.131.15250 NA Live 7520.1218.421.15451 RU Live 7720.603.1118.16350 NA Live 7720.603.1118.16350 RU Live 7921.217.812.17942 NA Live 7921.217.909.18216 NA Live 80.21.429.17223 KR Live 8021.602.916.18284 NA Live 8021.602.916.18285 RU Live 8021.602.1021.18546 NA Live 82.21.1104.18669 KR P.s. список клиентов будет пополняться по мере их получения.
  7. Новый, улучшенный, обновленный))) Сниффер построен на базе PacketSamurai, но переписано 96% кода, от оригинала осталось только начальное окно, со временем и его изменим. Что нового: - Java 17 - Поддержка Npcap последней версии, вместо WinCap, который морально устарел - Поддержка совместной работы сниффера и winshark - Поддержка всех видов сетевых интерфейсов, в том числе loopback - вместо pcap используется pcap4j - Никаких xml протоколов, все пакеты имеют вид и структуру как в java emu в отдельной библиотеки. Исходный код пакетов размещён в публичной доступен, и любой желающий может присоединится к доработке пакетов под разные версии Aion На текущий момент сниффер поддерживает версию 4.6 (4.5.1.4) Релиз: aion-sniffer-1.0.0-alfa Репозиторий пакетов Примечание: Если вы хотите помочь с разработкой пакетов для различных версий Aion, вы можете дорабатывать пакеты в отдельном ветке открытого репозитория, и предлагать реквесты. Авторство в доработанных пакетах будет сохранено.
  8. Тема для размышлений. То есть тут публикуется какая-то идея, частично и полностью реализована в моих работах. Ни чего из ниже описано не будет выпущено в открытый доступ. Геобирдер на текущий момент: Работает в автоматическом режиме. Парсит только нужные меши Выборку мешей производит на основе cryEngine движка и твердых физических тел. Парсит двери и добавляет в гео Лавы, костры и другое так же добавляются в гео файл. Одна локация, один файл. Геобилдер не создает .geo файлы. Это выдуманное гавно от начальных криворуких разработчиков. Данный геобилдер создает файлы .j3o поддерживаемые jmonkey движком. В ГС полностью меняется загрузка файлов, на основе официальной поддержки .j3o файлов. Поддерживает просмотр файлов в 3d редакторе. Геобирдер доступен только для приватной разработки.
  9. Это клиенты Classic версии (отдельная ветка игры Aion, которую основали на базе 2.7 версии и представили ее как 1.2 в конце 2020 года). Все клиенты из списка ниже полностью чистые - т.е. они остались такими как их выпустил тот или иной официальный сервер (локализатор) В данный момент наша команда предлагает получение любого клиента из списка за символическое пожертвование в 5$. Эти деньги идут на оплату сервера форума и других систем нашей команды. Также с этих денег будет оплачиваться сервер нашей cloud платформы, на которой и размещаются эти клиенты. Платить или нет - выбор каждого. Мы лишь предлагаем вариант, которым можно получить клиент. Чтобы получить клиент - необходимо написать мне в личные сообщение об этом и я предоставлю всю информацию. Также можно запросить проверку клиента на модификации и скриншоты архива с клиентом. В списке Вы видите номер сборки клиента по Game.dll. Первая цифры говорят о версии клиента (1 - 1.2, 15 - 1.5), вторые цифры - говорят о версии движка, третьи цифры - версия изменений по контенту, четвертые цифры - кол-во общих изменений в клиенте. Список доступных клиентов классической версии корейского сервера (KR): 1.20.1211.197 1.21.101.222 15.21.113.241 15.21.308.358 15.21.322.388 17.21.407.411 17.21.528.552 17.21.608.608 17.21.625.704 17.21.727.897 17.21.803.925 19.21.825.1042 19.21.930.1267 19.21.1007.1326 19.21.1015.1369 20.21.1109.1567 Список доступных клиентов классической версии американского сервера (NA): 121.106.608.606 121.106.629.730 121.106.723.876 121.106.817.989 121.106.910.1157 121.106.917.1224 1521.324.1005.1300 1521.324.1019.1390 P.s. Cписок клиентов будет пополняться по мере выхода новых версий на корейских и американских серверах классики.
  10. Тема для размышлений. То есть тут публикуется какая-то идея, частично и полностью реализована в моих работах. Ни чего из ниже описано не будет выпущено в открытый доступ. Спешу поделится замечательной новостью. Нам удалось написать ИИ, который парсит клиент, интернет и сборки серверов в поисках квестов на основе версии. В итоге мы получаем замечательный json 😃 Как видно из файла, мы получаем ID квеста, шаг, и что на этом шаге нужно сделать. В текущий момент переписываем весь квест движок, и избавляемся от хард-кодинга квестов в классах. Дата релиза и тестов скоро. (релиза не будет, частная разработка) Updated: Квестовый движок переехал в отдельный микросервис, по технологии микросерсвисов java.
  11. … или почему комьюнити фришек всегда жалуется и будет жаловаться на дроп. Итак, если вы заглянули в эту статью, то я думаю вы представляете себе, что такое фришка Aion, эмулятор сервера и так далее. Так вот, однажды когда мне попался исходный код фришек, я сначала не поверил своим глазам, но перепроверив все открытые исходники, убедился, что так оно и есть, и это кошмар. Как рассчитывается дроп в оригинальном Aion? У моба/НПЦ, которого игрок пытается убить, есть много гипотетических ящиков с дропом. 1 ящик, это основной дроп для типа моба, там лежат предметы, которые так или иначе выпадут в дроплист с определённым шансом. 2-N – ящиков с различными наборами предметов, с которого может выпасть один, и только один предмет. У каждого предмета есть свой шанс на выпадение. Однако формула расчета тут везде разная. Для основного дропа, каждый предмет рассчитывается отдельно. Если выражаться условно то в этот ящик закидываются столько удочек, сколько предметов в ящике. Если 4 предмета, то 4 удочки, и тянеееем. Зацепилось что-то вытащили. Таким образом из основного дроп ящика, можно вытащить практически каждый предмет. Для дополнительных ящиков, работает немного другая система. Берется ящик со всеми в ней предметами, допустим ящик с синими шмотками, перемешивается, после чего туда закидывается удочка, и тянется, если что-то зацепилось, оно выпадет игроку, если нет, то уж извините. Но для каждого доп ящика, удочка кидается одна, и один раз. Шанс вытащить предмет из доп.дропа = сумме шансов для каждого отдельного предмета в ящике. Это значит, что если в ящике 10 предметов с шансом 10, то обязательно выпадет предмет. Теперь как это работает на фришках. В принципе, это работает почти так же как в оригинале. за исключением того, что: в ящиках лежит всякое гавно. да да да. Там такой хлам лежит дикий, что просто можно мозг сломать. для доп.дропа, система на фришках работает иначе. Из ящика берется случайный предмет, кладется в пустую большую коробку, и закидывается удочка. Допустим – из ящика с синим шмотом, берется случайный предмет, кладется в другой – пустой – ящик, и туда закидывается удочка. Если ничего не зацепилось, то синего шмота не видать. В общем так, для каждого ящика. Размер пустого ящика зависит от процента на предмете. Если процент 10, то ящик в 10 раз больше, если процент 1, то ящик в 100 раз больше. Разберем код: 1) class NpcDrop Цикл по каждой группе (ящик предметов) дропа в мобе. for (DropGroup dg : this.dropGroup) { if (dg.getRace() == Race.PC_ALL || dg.getRace() == race) index = dg.dropCalculator(result, index, dropModifier, race, groupMembers); } 2) class DropGroup Берем случайный предмет из группы if (this.useCategory.booleanValue()) { Drop d = this.drop.get(Rnd.get(0, this.drop.size() - 1)); return d.dropCalculator(result, index, dropModifier, race, groupMembers); } 3) class Drop По шансу этого предмета, определяем, выдает он или нет. if (Rnd.get() * 100.0F < percent) Надеюсь мне удалось объяснить вам как это действует. Попробую показать на картинке, где шанс выбить шмотку будет виден нагляднее. А почему, спросите вы? Потому-что человек, который писал первую версию фришного сервера, был далекий от игровой механики, и до ума не довел. А те кто открывают сервера по сей день, покупают “корявые” сборки у “криворуких” разработчиков. Вот так вот. Нынешние разработчики не могут сделать систему взвешенного выбора) - random weighted selection Пример кода для java public class RandomizeDrop { private List<RandomizeEntry> entries = new ArrayList<>(); private double accumulatedChance; private Random rand = new Random(); // Собираем суммированную шкалу public void addEntry(int object, float chance) { accumulatedChance += chance; RandomizeEntry ent = new RandomizeEntry(); ent.object = object; ent.accumulatedWeight = accumulatedChance; entries.add(ent); } // По шкале, селектим нужный предмет public int getRandom() { double r = rand.nextDouble() * accumulatedChance; int returnedObj = entries.get(0).object; for (RandomizeEntry entry : entries) { if (r >= entry.accumulatedWeight) { returnedObj = entry.object; } } return returnedObj; } } Спасибо за внимание!)
×
×
  • Create New...