[ai] Пара Несложных Вопросов
Есть несколько вопросов к професионалам в AI.
Хочу понять на каком языке написан код в файле AI.obj?
Как Саурон сделал компайлер или де-компайлер, не понял, откуда у него синтаксис или сам язык взялся?
Научится писать можно по примерам или по синтаксису. Вы я вижу пишите что-то пошоже на С++, а потом компилите с помощью Сауроновского "Наска".
Есть инжектор, который меняет или добавляет код. Наск - компилит. А вот де-компилятор найти не могу, или он под носом лежит а не вижу...
Как переводить код из AI.obj в С/C++ код?
(Например, хочу сделать проверку на всех кто бил РБ, как-то. Чтобы клану получить очки за килл РБ то все должны быть из одного клана , тогда добавить клану очки, если нет то 0 очков.
Скилл Фрэнзи, как в Камале сделать.)
AI напоминает ассемблер. Так-же имеет стек.
Вот например...
push_const 40
add
fetch_i
push_const 1
equal
branch_false L2
Такая конструкция равна if(talker == 1) { }
Сначала в стек забивают идентификатор talker(40), затем константу 1.
Далее оператор equal сравнивает данные помещенные в стек и если истинна, то продолжает движение вниз, если ложь, то переходит к метке L2.
Учить С/C++ для понятия наска не надо, это не есть с++. Просто немного общий синтакс.
Для понятия синтакса наска достаточно знаний PHP...ну или ява-скрипта.
Начальные знания ассемблера не поменают, если собрался рыть голыми руками ai.obj
Декомпилятор ищи на постпацифике, он написан на PHP и тоже от саурона.
Так-же там выкладывали уже весь декомпилированный ai.obj.
Сделать такой компилятор не составит труда для опытного человека.
Команды в ai.obj говорят за себя, что они делают.
Остается посмотреть на примеры, понять логику, и эксперементировать.
Как сделать то или другое я не смогу...с оффом почти год не занимался.
Все знания в области ai уплыли до нуля.
Вот еще приведу примерную детализацию...
NASC:
myself::ShowPage(talker,"mypage.htm");
return;
}
---------
AI:
variable_begin
"talker"
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end
push_event // myself
push_const 704
add <-- Добавить
fetch_i <-- Пропихнуть int
push_event // talker
push_const 40
add <-- Добавить
fetch_i <-- Пропихнуть int
S881. "mypage.htm"
push_string S881 <-- Строку в стек
func_call 184680516 // func[ShowPage]
shift_sp -2 <-- Сдвиг стека (аля очистка)
shift_sp -1 <-- Сдвиг стека (аля очистка)
exit_handler
— Ålderdom - ingen glädje..
Спасибо огромное!!!
Ещё не пойму.
Например, по квесту на саб или на ноблес получаешь мешочки [ingredient_pouch1]. В Itemdata.txt написано
item_skill=[s_ingredient_pouch_1], тоесть идём в SkillData.txt и там есть такой скилл skill_name = [s_ingredient_pouch_1] в нём нет ничего интерестного кроме этой строки: effect = {{i_restoration_random;{{{{[quicksilver];2}};30};{{{[moonstone_shard];2}};30};{{
{[decaying_bone];1}};20};{{{[infernium_ore];1}};20}}}} которая рандомно выбирает получаемый предмет.
А где собственно обращение к AI.obj, ведь както он должен это вычислять?
Собственно i_restoration_random которая указана тут и делает все чудеса с указанным списком предметов.
Я напомню что ai.obj нужен ТОЛЬКО для работы с NPC!
Тоесть выключив l2npc сервер, вы можете с таким-же успехом использовать этот скилл и получить рандомный предмет.
Иногда конечно совмещают ai и другие функции связанные с итемами...но это тоже косвенно затрагивает npc.
Тобишь физически AI класс включается в полную мощь только тогда, когда его использует какойнибудь npc.
Вот например во времена C1 реализовывали свитки телепорта в разные тауны таким образом:
К итему крепили скилл -> к скилу крепили саммон невидимого npc -> к npc крепили ai который телепортит хозяина саммона и тут-же деспауинтся.
— Ålderdom - ingen glädje..
синтаксис АИ в наск коде унаследован от НЦСОФТа
оригинальный кусок от кода нцсофта 2003 года является частю L2Tools1.6
из етого куска можно увидеть что там приамо запрограмированы дыры для експлойтов :)
вашу фишку с райдбосами в аи сделать нельзя
ето дело длл и другой темы
Спасибо всем за ответы.
AbsT: Собственно i_restoration_random которая указана тут и делает все чудеса с указанным списком предметов.
Так значит функция i_restoration_random не является частью АЙ, а сама по себе.
Где можно взять полный список этих функций (хоть от С1) ?
Поидее можно сделать так как ты написал, засумонить невидемого НПС и задать ему АЙ, что-бы делалось то что не возможно без АЙ. Поэтому и хочу узнать насколько можно обходится без него, а только с помощью функций предметов или скиллов.
Нашел декомпилятор от Саурона, такой глючной вещи я ещё не видел. (толь корейцы криво пишут, толь Саурон не в трезвом виде писал)
Если тыкнёте меня носом в корейские соурсе-коды АЙ буду очень благодарен (не могу найти), а то незнаю уж кого венить в кривоте и безграмотности кода.
kostimus: Где можно взять полный список этих функций (хоть от С1) ?
Поидее можно сделать так как ты написал, засумонить невидемого НПС и задать ему АЙ, что-бы делалось то что не возможно без АЙ. Поэтому и хочу узнать насколько можно обходится без него, а только с помощью функций предметов или скиллов.
Нашел декомпилятор от Саурона, такой глючной вещи я ещё не видел. (толь корейцы криво пишут, толь Саурон не в трезвом виде писал)
Если тыкнёте меня носом в корейские соурсе-коды АЙ буду очень благодарен (не могу найти), а то незнаю уж кого венить в кривоте и безграмотности кода.
тыкнуть носом?
найдите кнопку "Search"
нажните ее
введите слово "opensource*"
нажмите "Perform the search"
самый первый пост который найдётся как рас то что нужно
там дальше есть директория "skript"
а там прямо кладовая информации по АИ, и всё в текстовом формате
и даже оригинальный файл от нецосфта там валяется - бери нехочю
smeli, Ты сам понял что написал?
6 строк непонятного мануала вместо одной строчки с ссылкой на тему или архив.
"нажмите ее" - Что такое ее? (ее - это Элвел Элдер, других незнаю... сорри)
kostimus: smeli, Ты сам понял что написал?
6 строк непонятного мануала вместо одной строчки с ссылкой на тему или архив.
"нажмите ее" - Что такое ее? (ее - это Элвел Элдер, других незнаю... сорри)
ну извините если непонравилось
По твоему мануалу сделал поиск на форуме.
Нашел эту тему и твой 32bit сервер. 32bit этож самопал, как ЯВАвские сервера. Там и структура немного другая. Кто как хочет так и пишет.
Так про какой поиск ты говорил, где та тема ?
32битный сервер не есть самопал, а является ПЕРВЫМ официальным сервером который вытек еще во времена первых хроник.
В данном случае на ПП лежит с1 сервер с эктендером(длл), которая немного расширяет функционал.
х64 и х86 сервера отличаются конечно-же, скрипты другие там...итд.
Но сходство почти 90%. Да и в аи мало что изменилось.
— Ålderdom - ingen glädje..
AbsT, спасибо за хорошее обьяснение. Просто СМЕЛИ (спасиба за сервер) поленился рассказать про то что он выложил.
Вот цитата:
-------------------------------------------------
Q. Что этo?
A. Это 32х битный интерлюд сервер с открытыми исходниками
Q. Неужели исходники экстендера включены?
A. Да, и не только, еще там часть исходников оригинального сервера NCSOFT
Q. Почему это не х64 битная версия?
A. Найти х64х битную версия не составляет труда, тут (x86) 32 битная версия. У вас теперь есть выбор, разве ето плохо?
....
------------------------------------------------
Я прочитав это понимаю тоже самое, когда пишут описание про ЯВА сервер. По описанию пахнет самопалом.
Я даже не качал, так как не написано, что это 90% ОФФ.
Надо было бы как-то лучше описать серверок, и ТО ЧТО ВНЁМ НЕ СОВПАДАЕТ с ПТС версией от НСсофта. Чтто вошло в пак? (написанно только про игровые фишки сервера.)
Дальше где то СМЕЛИ написал, что он исходил из версии С3. Почему не написать чем сервер отличен от С3 ПТС, по структуре сервера, а не про игровые добавки.
ехх....
ведь ето ветка для оффа, как тут может попатсь самопал или ява?
как написать что ето за сборка чтоб всем было понятно... для етого талант нужен,
а он у меня напроч отсутствует и притом во всех сферах жизни, не только в сфере л2
процентально сколько тут оффа указать невозможно. первичный вариант был
Ц1 офф "sina" со всеми експлойтами, 100% офф
поскольку множество експлойтов профиксено, ето узне не 100% офф
дальше... в оригинальном ц1 100% оффе невозможно плавать, моргать глазами,
ездить на страйдерах, и так далее и так далее.
от ц1 остался только движок игры, а всю обшивку и много других деталей
народные мастера изменили
описать что несоответствует с Ц1ОФФОМ невозможно
ц Ц3 сравнить по структуре трудно, поскольку с Ц3 на оффе было много изменений,
но работали все функции Ц1, движок остался тот же самый
Ц4 ето первый 64битник, функции Ц1 начинают убирать, сильно меняют движок
движок ц1 хорош тем что в нём больше свободы. например гномы могут изготовлять
по рецептам без огрничений, на страйдерах можно воевать, можно реснуть перса на поле битвы,
нелзя самонить страидеров так чтоб они за дверями очютились, двери непростреливаюстя,
карма нелечистя посредством вырачивание НПЦ гремлинов и так далее и так далее
ето изначяльная игра л2. класика
самопалные вещи есть. например система ауто соулшотов, combat points - етого небыло в ц1
их пришлось делать народным мастерам самим
от оригинального АИ ц1 осталось почьти ничего - я взял АИ от Ц4 и переделал чтоб работана на Ц1
потребовалось пол года програмирования для етого. зато теперь в АИ кое-что понимаю :)
кстати за ето огромное спасибо ла2гвардам
(кстати в оригинальном АИ експлойт сидел на експлойте, а дыра на дыре)
что вошло в пак?
попробую описать
1. геодаты нет, но она есь сдесь на форуме в паке ц6
2. html от Ц4 плюс немножко самопалов для ГМ шопов и т.п.
3. скрипты переделаные из Ц4 в Ц1 на сколько ето возможно.
самый худший момент ето skllls.
4. сервер над которым работали почти все извесности л2 офф девелопинга
как на приамую так и косвенно
как я понимаю неизменисля только logd.eхe. всё остальное было похексено
до костей а к етому ещё налепили дллок
5. админка l2z для ц1 и разные tools
по моему описать неудалось......
чего нету на офф и есть сдесь?
1. нцсофт продаёт epik collection, туда вошли все клиенты игры. а где их играть?
етот сервер поддерживает клиентов от ц3 до ц6 включительно, а также имеет
90% поддержки камаель, хелбоуд, грациа
2. хотел написать летающие корабли, но с Грация они появились и на оффе :)
3. видимые шлема. нцсофт обещял ето сделать давно, кто-то ведь должен ето обещяние сдержать
4. игровое воросвство на почьве АИ (убивать можно, а воровать нельзя, да? ) ету фишку совсем легко убрать, как и систему антигриндинг :)
совсем забыл - клановые войны по другому работают на ц1 движке
а ещё тут ест войны алиансов
Спасибки СМЕЛИ за историю Л2, я с ней плохо знаком просто. Пришёл во времина С4, а до этого на Рагнарьке сидел. Поэтому и не знаком совсеми подробностями фришек. И кто, где, чего у НСсофта стырил.
Это 95% описание сборки для людей которые хотят понять, а не просто установить незная что это. Из описания немного видно, что ты собрал навороченный сервер, и что всё что ты понаделывал можно убрать. Зачем? Мне наоборот интерестно Модингом заниматься, чем гнаться за ОФФ сервер. Ведь Роливеки НСсофта отнюдь не безупречны, и есть о чём задуматься. Считаю БсФГ - шедевром.
Там ты выложил "стабильную" сборку, её source code есть? или только С1 от НСсофта?
Могу тебе подкинуть идею с кораблями:
Напиши летающие корабли, но которыми можно управлять. Тоесть НПС Капитан. При разговоре с ним есть выбор: вперёд, вправо, влево, угол 30 вверх, угол 30 вниз и т.д.
Эти корабли можно купить в КХ за много денег. Позволяют перевозить и воевать на них. Например высадиться на замок сверху. Можно сделать корабль с ХП и защитой. НПС, проверяет если никого живого на корабле нету, то уничтожить кораблик или вернуть в порт. Такая идея, сильно не бить. Это тебе, что-бы не жалел о том что ОФФ корабли написал.
у НЦСОФТа сервра ети небыли украдены.
поскольку оказалось что в них сотни багов, надо было решать как быстро их изловить
неповредив оффу и репутации компании.
решили изложит все 3 сервера в свободный доступ. тут быстро нашлись все баги и были исправлены
тогда НЦСОФТ выпускает Ц2 в котором поменялись все опкоды
казалось что фришкам дальше ц1 неуйти, но народные мастера изучили кодировку пакетов
раскодировали и поменяли опкоды, етого НЦСОФТы наверное неожидали
(ето дало не только продвижение дальше, но и открыло дорогу хлапексам и читерам)
поскольку свободный доступ показал свои премущества: быстрая популярность и быстрая правка багов
то НЦСОФТ отдала на свободный доступ и Ц4ПТС поскольку новая платформа - новые баги
НЦСОФТЫ отдали ее после выпуска Ц5 и небоялись поскольку в 2008 планировалось
выпустить Л3. но тут НЦСОФТу неповезло, програмеры увели большую часть кода
и пришлось проект л3 сворачивать. вместо него начялась ера L2 Chaotic Throne
без "C1 Sina" ещё в свободном доступе есть сервера "C0 Prelude" и "C1 Meifu"
соурцы есть все которых я сумел достать
несумел достать только наработки китайцев: Aja, ezme, torune, zzcat
а также русских: kvoхi (ла2гварды), humor dvarf (он предложил ещё подождать), testdude (никакого ответа)
и конечно абсолютно всё что я сам сделал :)
...........скачять можно в том же посте
идея про кораблики хорошая, только работы много а отдачи никакой
поскольку я разрабатываю етот пак уже почти два года, я знаю что живых серверов
по нему нету ни одного.
А так разработка подходит к концу. Осталось запрограмировать чтоб CW от ц1
работали на ц4+ и ещё дуели и TvT
Кто захочет продолжить - милости просим
кстати тут есть много уникального что я сделал
но описания етих работ я неделал, решил передать устно тому кто продолжит
работу над паком
например "управление отрядом воинственых неписей" или "возможность запомнить некое место
и телепортироватся обратно туда" или "подкуп некоторых неписей чтоб они хвалили тебя"
(етот подкуп найдётся быстро если кто бросит неписям которые бегут к пц чтоб поговорить
одноручное оружие, а другиe сами по себе ненайтутся поскольку ето самопалные скилы
которых на вючку недобавил)
есть ГМ хелперы __jurga __jonas __otto __kristina
..... да разве сразу вспомнить всё что я понаделал за ети два года :)
Если сервер так же стабилен и хорош как С4 64-битник, то займусь им лучше. Не пойми неправельно, у меня плохое впечатление о Яве и нехочу разачаровываться снова, а проблема явы не в програмистах, а в корне проэкта. Ява, не язык для серьёзных серверов. И те кто выбрали Яву, здорово ошиблись. Ладно, тут не тема про почему Ява не так хороша как надо.
А так твоя сборка сервера довольно хороша тем что есть глина(source code) с которой можно работать.
Ты добавил много интерестного, за что спасибо. Буду смотреть.
Вот не совсем понял одного момента: "НЦСОФТ отдала на свободный доступ и Ц4ПТС" - под какой лицензией, или просто тупо выложила, сделав вид что украли? Так как в их EULA написано, что нельзя даже емулировать работу их серверов и клиентов, не говоря уже о запуске оригенала.
kostimus: Если сервер так же стабилен и хорош как С4 64-битник
было время - все фришки были на основе етого ц1 сервера, даже со всеми тогдашними багами :)
сервер сам по себе стабилен, на Ц++ написан
но уязвим неким експлойтам
старые експлойты профиксены все
а новые....
я починил все мне извесные експлойты, а извенсого было мало -
сам я не читер, а информацию мне никто непсотавляет
некоторые експлойты просто неработают сдесь
а вот некоторые сышал могут сервер положить
один читер мне сказал "профиксь такои-то такои-то експлойт"
я говорыи "конечно, а как его вызвать, когда я низнаю что чинить, то..."
ну и етот читер замолк навсегда, потому что понял что мне информация недоступна
kostimus: А так твоя сборка сервера довольно хороша тем что есть глина(source code) с которой можно работать.
два года назад, про Ц4ПТС было мало извесно, все ушли на фронт - в приватный девелопинг
теперь очень много исходников и для Ц4ПТС,
только я собрал всё для своего пака, а вот для Ц4 каждый собирает для себя, все паки что выложены
имеют те или другие баги. тут нужно ещё 2 года поработать чтоб всё собрать и починить так чтоб
вышел добротный Ц4 пак.
никто нерешается братся за ето в открытую, хотя приватных паков и ктомуже отличных есть десятки
kostimus: Вот не совсем понял одного момента: "НЦСОФТ отдала на свободный доступ и Ц4ПТС" - под какой лицензией, или просто тупо выложила, сделав вид что украли? Так как в их EULA написано, что нельзя даже емулировать работу их серверов и клиентов, не говоря уже о запуске оригенала.
они всё ето хитроумно делают через китай
китайцы имеют больше, например 100% знаю что они
имеют полные исходники Prelude NPC сервера
всё сперва появляется у китайцев
возможно что по задумкке НЦСОФТа ето должно было невыйти изза прeдела китая
но вышла иголка из мешка....
а EULA не на камне выточена, они ее каждые пол года меняют
в те времена она было совсем другая нежели теперь
Буду копать и разбираться, так как не охота очередной интерлюд клепать.
Если будут проблемы с компиляцией, буду отписывать.
А что там со скилами, ты написал в 13 посте тут: "3. скрипты переделаные из Ц4 в Ц1 на сколько ето возможно.
самый худший момент ето skllls."
Так можнож было двигло переделать в Ц4 для полного понимания скриптов, чем скрипты переделать. И в последнем посте написал что у людей есть сорцы от Ц4. Взять их и подправить.
А для Ц4ПТС я только экстэндеры нахожу, а сорца невижу вообще. Не прикалывает меня вешать хуки на процесы.



