- 387
- 135
МожноНельзя просто позвонить в ГТА и в одну строчку попросить её сделать многие простые вещи
Да, но этот код не внутри муна, а внутри самой ГТА. Мун реализует большинство своего функционала через игровые опкоды.За каждой простенькой функой Муна стоит куча кода.
Используя нетрудные манипуляции с IDA (можно через другой дизассемблер), открыв бинарник муна, мы ищем в строках (shift + f12) название нужной нам функции (пройдемся по твоему примеру):А так это выглядит в мунлоадере:
Соответственно и потенциальных багов от использования муновских функций меньше.Lua:requestAnimation("animName") taskPlayAnim(1, "animLib", "animName", 9, false, false, false, false, -1)
Нифига не понял, чё за строки, какие бинды. Если знаешь как вызывать функи из Муна, можешь написать коротенький гайд, думаю с него будет спрос.это пиздец... кто такую хуету может написать
по строчке например
ищи в иде где функа биндится и по адресу вызывай
отреверси мун, найди функцию, вызывай функцию, но нужна ли тебе зависимость от муна? нет бы написать хук самомуНифига не понял, чё за строки, какие бинды. Если знаешь как вызывать функи из Муна, можешь написать коротенький гайд, думаю с него будет спрос.
Нифига не понял, чё за строки, какие бинды. Если знаешь как вызывать функи из Муна, можешь написать коротенький гайд, думаю с него будет спрос.
Ух нифига вот это полезный ответ! Можешь подкинуть какой-то вводной урок подо всю эту хуёвину? А то я не бум-бум во всём энтом реверсинге.Посмотреть вложение 216730
ищещь по строке название функции тебе нужной
переходишь по хрефу и видишь что чуть выше куда то записывается адрес функции
Посмотреть вложение 216731
переходишь в нее
Посмотреть вложение 216732
видишь 7 аргументов, скорее всего первый это какой-то контекст у lua или сол2(сам посмотри в дебагере что туда передается и откуда, мне лень) а остальные шесть скорей всего то что передается в луашную функу
Ух нифига вот это полезный ответ! Можешь подкинуть какой-то вводной урок подо всю эту хуёвину? А то я не бум-бум во всём энтом реверсинге.
Нет, это не верно. То что ты нашел это какие-то внутренности для sol2.Посмотреть вложение 216730
ищещь по строке название функции тебе нужной
переходишь по хрефу и видишь что чуть выше куда то записывается адрес функции
Посмотреть вложение 216731
переходишь в нее
Посмотреть вложение 216732
видишь 7 аргументов, скорее всего первый это какой-то контекст у lua или сол2(сам посмотри в дебагере что туда передается и откуда, мне лень) а остальные шесть скорей всего то что передается в луашную функу
lua_getglobal(L, "setFixedCameraPosition");
lua_pushnumber(L, x);
lua_pushnumber(L, y);
lua_pushnumber(L, z);
lua_pushnumber(L, rx);
lua_pushnumber(L, ry);
lua_pushnumber(L, rz);
lua_pcall(L, 6, 0, 0);
lua["setFixedCameraPosition"](1,2,3,4,5,6)
понятно, увидел что кол-во аргументов похожее кроме первого что я и подумал либо стейт либо контекст какой-тоНет, это не верно. То что ты нашел это какие-то внутренности для sol2.
Все луа функции это lua_CFunction -> int (__cdecl*)(lua_State* L)
Переходить нужно по этому
Посмотреть вложение 216749
Далее идешь на lua_pushcclosure и видишь функцию которая туда передается
Посмотреть вложение 216750
sub_10072F70 это и есть "setFixedCameraPosition"
Вот, достает аргументы с луа стека и вызывает установку позиции камеры
Посмотреть вложение 216753
Вызвать это будет не так-то просто, потому что надо получить lua_State* от moonloader, в котором зарегистрированы эти функции. Уже пахнет насилием и хуками мунлоадера или луа скриптом заглушкой который по братски сделает require плагина и не будет выгружаться, а в плагине конечно должна быть точка входа lualib_open, сам плагин измазан глобальной переменной и с заряженным патроном в револьвере, ждать момента когда можно будет прострелить колено
Ладно построили велосипед с палками вместо колес, вызываем луа функцию из С без враперов
Красота...Lua:lua_getglobal(L, "setFixedCameraPosition"); lua_pushnumber(L, x); lua_pushnumber(L, y); lua_pushnumber(L, z); lua_pushnumber(L, rx); lua_pushnumber(L, ry); lua_pushnumber(L, rz); lua_pcall(L, 6, 0, 0);
Но можно же вызвать сразу нормальную С функцию, вот же указатель в v1 и this в v2, а остальное наши аргументы. Окей, сидите под дебагерами и реверсите
В любом случае если и получится, то запах не очень. В первом случае обмазались калом чтобы получить lua_State* и потом заюзали враперы на lua api, получилосьи ждем выстрела в коленоC++:lua["setFixedCameraPosition"](1,2,3,4,5,6)
Во втором случае захардкодили кое-как одну функцию и все равно обмазались калом во время процесса реверсинга
Ну я писал, и что?это пиздец... кто такую хуету может написать
Хуйню несешь. Полнейшую. СФ проигрывает лишь документацией, но твоя тупая бошка не умеет ничего, кроме заучиванния. Иди в луа и дрочи там на виртуальную машину сколько хочешь. Там тоже есть некий ооп даже. Кому нужно тот все знает.В СФ всё есть, потому что ты так сказал? СФ уступает Муну по функционалу. Действия, которые делаются в Муне в одну строчку, в СФ требуют сложной совершенно неочевидной последовательности действий. СФ код небезопасен, в его функции не зашиты никакие проверки, что приводит к крашам в игре. В СФ меньше функций по сравнению с Муном, а из тех что есть многие просто не работают. Никто не знает как в СФ применить анимку без рпс, как манипулировать камерой, как эмулировать пакет, и многое другое, потому что это всё в САМПФУКСе просто не работает и работать не будет, ведь проект уже закрыт. Даже самповские функции там работают криво. Я уже тысячу раз пожалел, что вообще начал работу на этом старье, просто других вариантов тогда ещё не было. Единственный нормальный варик сейчас это сдк от адского дрочилы, чел просто красава, собрал в своём сдк всё что нужно, к сожалению мне слишком запарно переносить туда весь свой проект. А что касается Муна, насколько мне известно, он как и сам Люа, написан на Си-шке, и тяжело понять почему нельзя было просто немного его переделать и выпустить нормальный сдк для С++, впрочем это уже и не нужно.
По факту ты много пиздишь и ничем не подкрепляешь свои слова. Много ты сам написал сф плагинов, в которых была работа с одиночкой?Хуйню несешь. Полнейшую. СФ проигрывает лишь документацией, но твоя тупая бошка не умеет ничего, кроме заучиванния. Иди в луа и дрочи там на виртуальную машину сколько хочешь. Там тоже есть некий ооп даже. Кому нужно тот все знает.
Может смотреть плагин СДК, можешь мта блю, но еще раз повторю. Твоя бошка ничего крмое заучивания не умеет.
PluginSDK юзай для такого. game api хромает в СФ.
Как по мне, функционал апи в ПСДК куда массивней по сравнению апи с СФ.
По факту ты сам нихуя не умеешь и даже не пробовал, а распинаешься тут как гуру модинга. Любой дебил может прочитать/собрать битстрим и написать чит для аризонки, но даже самп часть в СФ хромает, там нет нормальных структур пакетов, неполный список рпс, и напрочь не работает эмуляция пакетов. А по части одиночки он просто берёт глубокую глотку. И в отличие от тебя я со всем этим работал последние несколько лет и знаю, сколько сотен, или даже тысяч часов у тебя уйдёт на то, чтобы попытаться на СФ повторить то, что работает в Муне в пару строчек из коробки. По сути СФ ближе к голому аси плагину, чем к муну. 90% времени будет уходить на ковыряние под капотом и попытки выяснить как выполнить простые задачи, вместо того чтобы работать над самим проектом, и в половине случаев у тебя ничего не выйдет и придётся выдумывать костыль. Про документацию без комментариев, её просто нет ни в каком виде! Если бы разрабы муна опубликовали сурсы на гитхабе, это была бы лучшая документация к сф плагину, чем всё что есть на этом форуме.Честно, работу с синглом через СФ никогда не практиковал.
Бетмен когда узнал что он нихуя не шарит в SF кодинге просидев в помощи по SF дохуя часов. ( А ещё раньше вроде как принимал участие в разработке самого SAMPFUNCS ):По факту ты много пиздишь и ничем не подкрепляешь свои слова. Много ты сам написал сф плагинов, в которых была работа с одиночкой?
По факту ты сам нихуя не умеешь и даже не пробовал, а распинаешься тут как гуру модинга. Любой дебил может прочитать/собрать битстрим и написать чит для аризонки, но даже самп часть в СФ хромает, там нет нормальных структур пакетов, неполный список рпс, и напрочь не работает эмуляция пакетов.
я со всем этим работал последние несколько лет и знаю, сколько сотен, или даже тысяч часов
Показательно, что из 2-х челов, наиболее яро защищающих сф плагин, один никогда ничего не писал для сингла, второй вообще только скачал стандартный проект. За то написав несколько бесполезных оффтоп сообщений, вы уже оцениваете чей-то интеллект. Если ты открыл сф плагин и полистал основные классы, то по части сингла твои знания уже примерно на уровне дарк кнайта. Теперь попробуй без эмуляции рпс применить к актёру анимку, заспавнить нпс актёра, зааттачить объект к кости, эмулировать пакет — вещи, которые в Муне делаются в пару строчек. Потом приходи снова и я дам тебе ещё кучу квестов, чтобы ты мог на личном опыте убедиться, что СФ начисто всирает муну, и немного опустить свою раздутую самооценку. Чем больше ты интересуешься СФ, тем меньше тебе будет интересен СФ и более интересен ПлагинСДК или Мунлоадер. Так что лучше сразу качай сдк от адского дрочилы и не трать время на давно заброшенный сампфункс.Бетмен когда узнал что он нихуя не шарит в SF кодинге просидев в помощи по SF дохуя часов. ( А ещё раньше вроде как принимал участие в разработке самого SAMPFUNCS ):
Вообще не пойму твоих доебов по поводу того что в SF нельзя работать с самой ГТАшкой, я никогда не писал на SF но посидев в сурсе стандартного проекта увидел что ОКАЗЫВАЕТСЯ там есть класс CGame который хранит в себе более ста методов для работы с игрой, начиная от получения информации об игроке заканчивая даже получением класса для работы с RenderWare. Мне самому стало интересно как работать с этим классом, и потратив всего 5 минут я нашёл на форуме информацию! Нужно всего лишь написать GAME-> и всё!
Непонимаю как ты об этом не знал учитывая то что:
По этому можно понять что ты или глупый, или рофлишь.
Вот, держи тебе код воспроизведения анимации прямо как в мунлоадере! Если ты не знаешь как работают игровые опкоды да и вообще сама система игры - чем ты нахуй занимался эти несколько тысяч часов? Писал недорванки ебаные и работал онли с битстримами?Показательно, что из 2-х челов, наиболее яро защищающих сф плагин, один никогда ничего не писал для сингла, второй вообще только скачал стандартный проект. За то написав несколько бесполезных оффтоп сообщений, вы уже оцениваете чей-то интеллект. Если ты открыл сф плагин и полистал основные классы, то по части сингла твои знания уже примерно на уровне дарк кнайта. Теперь попробуй без эмуляции рпс применить к актёру анимку, заспавнить нпс актёра, зааттачить объект к кости, эмулировать пакет — вещи, которые в Муне делаются в пару строчек. Потом приходи снова и я дам тебе ещё кучу квестов, чтобы ты мог на личном опыте убедиться, что СФ начисто всирает муну, и немного опустить свою раздутую самооценку. Чем больше ты интересуешься СФ, тем меньше тебе будет интересен СФ и более интересен ПлагинСДК или Мунлоадер. Так что лучше сразу качай сдк от адского дрочилы и не трать время на давно заброшенный сампфункс.
void playAnim(int playerHandle, const char* animation, const char* IFP, float frameDelta, bool loop, bool lockX, bool lockY, bool lockZ, bool lockF, int time) {
char str[256];
sprintf(str, "04ED: \"%s\"", IFP);
SF->getCLEO()->callOpcode(str);
sprintf(str, "04EE: \"%s\"", IFP);
SF->getCLEO()->callOpcode(str);
sprintf(str, "0605: %d \"%s\" \"%s\" %f %d %d %d %d %d", playerHandle, animation, IFP, frameDelta, loop, lockX, lockY, lockZ, lockF, time);
SF->getCLEO()->callOpcode(str);
}
Дорогой всем насрать на твоё, моё и чьё-либо мнение, если оно подкреплено онли тупыми оскорблениями. Если ты что-то знаешь, то говори информативно. Челы выше попытались дать полезный совет, а ты с кнайтом пришёл чисто вылить желчь и прокачать чсв. Только что ты говорил, что охуенных классов сампфункса достаточно для всего, а в итоге хакаешь функцию из клео. Почему ты не заюзал для этого офигенные методы сампфункса для работы с камерой, спавна цивил педов и эмуляции пакетов. Потому что они кем-то писались, но так и не были доведены до ума, и в итоге нихрена не работает. И это не игровой опкод, а самописная функция из клео либы, которая позволяет вызывать анимки в упрощённом виде, выше был пример из собейта, как реально применяется анимация с использованием только игровых функций.Вот, держи тебе код воспроизведения анимации прямо как в мунлоадере! Если ты не знаешь как работают игровые опкоды да и вообще сама система игры - чем ты нахуй занимался эти несколько тысяч часов? Писал недорванки ебаные и работал онли с битстримами?
C++:void playAnim(int playerHandle, const char* animation, const char* IFP, float frameDelta, bool loop, bool lockX, bool lockY, bool lockZ, bool lockF, int time) { char str[256]; sprintf(str, "04ED: \"%s\"", IFP); SF->getCLEO()->callOpcode(str); sprintf(str, "04EE: \"%s\"", IFP); SF->getCLEO()->callOpcode(str); sprintf(str, "0605: %d \"%s\" \"%s\" %f %d %d %d %d %d", playerHandle, animation, IFP, frameDelta, loop, lockX, lockY, lockZ, lockF, time); SF->getCLEO()->callOpcode(str); }
А я бы посмотрел в сколько строк ты бы это оформил на Plugin SDK. Гений блядь. Называешь всех ЧСВшными идиотами хоть сам блядь держишь свое мнение поверх других когда тебе уже высказали многое, а ты дальше за свое "А ВОТ ПОЧЕМУ НЕ СДЕЛАТЬ ТАКОЕ ЖЕ АПИ КАК У МУНЛОАДЕРА, ТАМ ВЕДЬ ВСЁ ТАК ПРОСТО?!?!?!"
Мун не зависит от Клео, если правильно помнюМун сам для работы с синглом вызывает клео опкоды