ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Как вызвать функцию Moonloader'а из SF плагина? (https://forum.antichat.xyz/showthread.php?t=1489214)

Ya Zaregalsya 14.09.2023 15:18

Хочется пользоваться крутыми функами муна из нашего убогенького сф плагина(

вайега52 14.09.2023 15:38

Цитата:

Сообщение от Ya Zaregalsya

Хочется пользоваться крутыми функами муна из нашего убогенького сф плагина(

сомневаюсь что это можно реализовать как-то кроме реверса мунлоадера, но тогда вопрос в другом, не проще ли напрямую вызывать функции (большинство) из игры/сампа?)

Ya Zaregalsya 14.09.2023 16:02

Цитата:

Сообщение от why ega

сомневаюсь что это можно реализовать как-то кроме реверса мунлоадера, но тогда вопрос в другом, не проще ли напрямую вызывать функции (большинство) из игры/сампа?)

За каждой простенькой функой Муна стоит куча кода. Нельзя просто позвонить в ГТА и в одну строчку попросить её сделать многие простые вещи. Вот к примеру собовская функция для применения анимации к локальному игроку:

C++:





Код:

void
GTAfunc_PerformAnimation
(
const
char
*
szBlockName
,
const
char
*
szAnimName
,
int
iTime
,
bool
bLoop
,
bool
bUpdatePosition
,
bool
bInterruptable
,
bool
bFreezeLastFrame
,
bool
bRunInSequence
,
bool
bOffsetPed
,
bool
bHoldLastFrame
)
{
CAnimBlock
*
pBlock
=
pGameInterface
->
GetAnimManager
(
)
->
GetAnimationBlock
(
szBlockName
)
;
if
(
pBlock
)
{
bool
bLoaded
=
true
;
if
(
!
pBlock
->
IsLoaded
(
)
)
{
int
iTimeToWait
=
50
;
// load animations
pGameInterface
->
GetStreaming
(
)
->
RequestAnimations
(
pBlock
->
GetIndex
(
)
,
4
)
;
pGameInterface
->
GetStreaming
(
)
->
LoadAllRequestedModels
(
)
;
while
(
!
pBlock
->
IsLoaded
(
)
&&
iTimeToWait
!=
0
)
{
iTimeToWait
--
;
Sleep
(
10
)
;
}
if
(
iTimeToWait
==
0
)
bLoaded
=
false
;
}
if
(
bLoaded
)
{
// allow tasks to be removed
pPedSelf
->
GetPedIntelligence
(
)
->
GetTaskManager
(
)
->
Flush
(
TASK_PRIORITY_PRIMARY
)
;
// removes temporary tasks caused by events like falling
pPedSelf
->
GetPedIntelligence
(
)
->
GetTaskManager
(
)
->
RemoveTask
(
TASK_PRIORITY_EVENT_RESPONSE_TEMP
)
;
// remove jumping task
CTask
*
jumpTask
=
pPedSelf
->
GetPedIntelligence
(
)
->
GetTaskManager
(
)
->
FindActiveTaskByType
(
211
)
;
if
(
jumpTask
)
{
pPedSelf
->
GetPedIntelligence
(
)
->
GetTaskManager
(
)
->
RemoveTask
(
TASK_PRIORITY_PRIMARY
)
;
}
// more removals if needed ever
//pPedSelf->GetPedIntelligence()->GetTaskManager()->RemoveTask(TASK_PRIORITY_EVENT_RESPONSE_NONTEMP);
//pPedSelf->GetPedIntelligence()->GetTaskManager()->RemoveTask(TASK_PRIORITY_PHYSICAL_RESPONSE);
//pPedSelf->GetPedIntelligence()->GetTaskManager()->RemoveTask(TASK_PRIORITY_MAX);
//pPedSelf->GetPedIntelligence()->GetTaskManager()->RemoveTask(TASK_PRIORITY_PRIMARY);
// set flags
int
flags
=
0x10
;
// // Stops jaw fucking up, some speaking flag maybe
if
(
bLoop
)
flags
|=
0x2
;
// flag that triggers the loop (Maccer)
if
(
bUpdatePosition
)
{
// 0x40 enables position updating on Y-coord, 0x80 on X. (Maccer)
flags
|=
0x40
;
flags
|=
0x80
;
}
if
(
!
bFreezeLastFrame
)
flags
|=
0x08
;
// flag determines whether to freeze player when anim ends. Really annoying (Maccer)
// create a new task
CTask
*
pTask
=
pGameInterface
->
GetTasks
(
)
->
CreateTaskSimpleRunNamedAnim
(
szAnimName
,
pBlock
->
GetName
(
)
,
flags
,
4.0f
,
iTime
,
!
bInterruptable
,
bRunInSequence
,
bOffsetPed
,
bHoldLastFrame
)
;
if
(
pTask
)
{
pTask
->
SetAsPedTask
(
pPedSelf
,
TASK_PRIORITY_PRIMARY
)
;
}
}
else
{
// TODO: unload unreferenced blocks later on
pGameInterface
->
GetStreaming
(
)
->
RequestAnimations
(
pBlock
->
GetIndex
(
)
,
8
)
;
}
}
}



А так это выглядит в мунлоадере:

Lua:





Код:

requestAnimation
(
"animName"
)
taskPlayAnim
(
1
,
"animLib"
,
"animName"
,
9
,
false
,
false
,
false
,
false
,
-
1
)



Соответственно и потенциальных багов от использования муновских функций меньше.

Dark_Knight 02.10.2023 21:02

Луа - это луа. Плюсы это плюсы. Нехер тянуть такое в СФ, когда оно и там так есть.

Ya Zaregalsya 03.10.2023 03:39

Цитата:

Сообщение от Dark_Knight

Луа - это луа. Плюсы это плюсы. Нехер тянуть такое в СФ, когда оно и там так есть.

В СФ всё есть, потому что ты так сказал? СФ уступает Муну по функционалу. Действия, которые делаются в Муне в одну строчку, в СФ требуют сложной совершенно неочевидной последовательности действий. СФ код небезопасен, в его функции не зашиты никакие проверки, что приводит к крашам в игре. В СФ меньше функций по сравнению с Муном, а из тех что есть многие просто не работают. Никто не знает как в СФ применить анимку без рпс, как манипулировать камерой, как эмулировать пакет, и многое другое, потому что это всё в САМПФУКСе просто не работает и работать не будет, ведь проект уже закрыт. Даже самповские функции там работают криво. Я уже тысячу раз пожалел, что вообще начал работу на этом старье, просто других вариантов тогда ещё не было. Единственный нормальный варик сейчас это сдк от адского дрочилы, чел просто красава, собрал в своём сдк всё что нужно, к сожалению мне слишком запарно переносить туда весь свой проект. А что касается Муна, насколько мне известно, он как и сам Люа, написан на Си-шке, и тяжело понять почему нельзя было просто немного его переделать и выпустить нормальный сдк для С++, впрочем это уже и не нужно.

chapo 03.10.2023 03:43

Цитата:

Сообщение от Ya Zaregalsya

В СФ всё есть, потому что ты так сказал? СФ уступает Муну по функционалу. Действия, которые делаются в Муне в одну строчку, в СФ требуют сложной совершенно неочевидной последовательности действий

так юзай плагин сдк, там функций больше чем в муне, да и работают они абсолютно так же (потому что мун вызывает именно эти игровые функции)

ARMOR 03.10.2023 03:50

Цитата:

Сообщение от Ya Zaregalsya

А что касается Муна, насколько мне известно, он как и сам Люа, написан на Си-шке, и тяжело понять почему нельзя было просто немного его переделать и выпустить нормальный сдк для С++, впрочем это уже и не нужно.

Потому что комьюнити сампа слишком тупое чтобы писать на плюсах, а на писать на луа может даже первокласник.

Gorskin 03.10.2023 04:02

Цитата:

Сообщение от ARMOR

Потому что комьюнити сампа слишком тупое чтобы писать на плюсах, а на писать на луа может даже первокласник.

Lua - высокоуровневый ЯП. У многих луа ограничивается только использованием функций из Moonloader API. Для самперов луа скриптинг ограничивается только этим и банальными imgui окнами. Не стоит говорить что даже первоклассник напишет скрипт, максимум выведет print("Hello man") и назовёт своё изобретение скриптом. Сам синтаксис луа приятен и понятен глазу.

ARMOR 03.10.2023 04:07

Цитата:

Сообщение от Gorskin

Lua - высокоуровневый ЯП. У многих луа ограничивается только использованием функций из Moonloader API. Для самперов луа скриптинг ограничивается только этим и банальными imgui окнами. Не стоит говорить что даже первоклассник напишет скрипт, максимум выведет print("Hello man") и назовёт своё изобретение скриптом. Сам синтаксис луа приятен и понятен глазу.

Когда я поставил в сравнении луа с плюсами для разработки модификаций для сампа можно было понять что человек который решил написать что-то под GTA SA быстрее сможет написать что-то на луа чем на крестах, как минимум потому что тут нет например такой жесткой типизации.

Ya Zaregalsya 03.10.2023 04:09

Цитата:

Сообщение от chapo

так юзай плагин сдк, там функций больше чем в муне, да и работают они абсолютно так же (потому что мун вызывает именно эти игровые функции)

Так говорю же сдк от адского дрочилы это лучший варик сейчас. Он включает в себя плагин сдк, ракнет и имгуй. Раньше работа с плагин сдк означала, что ты не сможешь взаимодействовать с сампиком, а у адского дрочилы всё в одном.

Цитата:

Сообщение от ARMOR

Когда я поставил в сравнении луа с плюсами для разработки модификаций для сампа можно было понять что человек который решил написать что-то под GTA SA быстрее сможет написать что-то на луа чем на крестах, как минимум потому что тут нет например такой жесткой типизации.

Учитывая какую простую ***ню обычно пишут новички на Люа, они бы не заметили разницы по сравнению с С++, и просто игнорили 90% его возможностей. А с ростом сложности проекта, удобство С++ только возрастает. Для опытного прогера С++ код намного читабельнее, как раз из-за строгой типизации, продвинутого синтаксиса, заголовочных файлов, и конечно интеграции с IDE, которая будет подсвечивать все твои ошибки и выводить сигнатуру всех функций. Единственная причина почему Люа так заходит новичкам, заключается в том, что ты можешь писать код в обычный текстовик, нажать Ctrl+S и всё будет работать. Чтобы начать писать на C++, ты должен поставить тяжеловесную среду разработки, собрать проект, подключить все зависимости и каждый раз всё это компилировать. Ну а сам кодинг на С++ не представлял бы особой сложности для новичков, будь там такой же хороший SDK как Мунлоадер и не будь такой муторной установки и сборки прокетов.

kin4stat 03.10.2023 06:37

Цитата:

Сообщение от Ya Zaregalsya

Для опытного прогера С++ код намного читабельнее, как раз из-за строгой типизации, продвинутого синтаксиса, заголовочных файлов, и конечно интеграции с IDE

Держи, читай

C++:





Код:

template

inline
constexpr
bool
apply_is_noexcept
=
false
;
template

inline
constexpr
bool
apply_is_noexcept
>
=
noexcept
(
std
::
invoke
(
std
::
declval

(
)
,
std
::
get
>
-
Is
-
1
>
(
std
::
declval

(
)
)
.
.
.
)
)
;
template

constexpr
decltype
(
auto
)
apply_reversed
(
F
&&
f
,
Tuple
&&
tup
)
noexcept
(
apply_is_noexcept
>
>>
)
{
return
[
&
]

(
std
::
index_sequence

)
{
return
std
::
invoke
(
std
::
forward

(
f
)
,
std
::
get
>
-
Is
-
1
>
(
std
::
forward

(
tup
)
)
.
.
.
)
;
}
(
std
::
make_index_sequence
>
>
{
}
)
;
}


Ya Zaregalsya 03.10.2023 09:00

Цитата:

Сообщение от kin4stat

Держи, читай

C++:





Код:

template

inline
constexpr
bool
apply_is_noexcept
=
false
;
template

inline
constexpr
bool
apply_is_noexcept
>
=
noexcept
(
std
::
invoke
(
std
::
declval

(
)
,
std
::
get
>
-
Is
-
1
>
(
std
::
declval

(
)
)
.
.
.
)
)
;
template

constexpr
decltype
(
auto
)
apply_reversed
(
F
&&
f
,
Tuple
&&
tup
)
noexcept
(
apply_is_noexcept
>
>>
)
{
return
[
&
]

(
std
::
index_sequence

)
{
return
std
::
invoke
(
std
::
forward

(
f
)
,
std
::
get
>
-
Is
-
1
>
(
std
::
forward

(
tup
)
)
.
.
.
)
;
}
(
std
::
make_index_sequence
>
>
{
}
)
;
}



Учитывая, что это функционал для метапрограммирования, то он ещё вполне читабельный. Кроме шуток, открой код любого новичка в Lua, прикинь как это выглядело бы в C++, и обнаружишь, что при переносе на плюсы он по прежнему останется простым. А с использованием возможностей языка, его наоборот можно сделать ещё понятнее. Писать на С++ понятным читабельным образом или писать на С++ как чорт это личный выбор каждого.

F0RQU1N and 03.10.2023 09:07

какую тебе надо вызывть? название

Ya Zaregalsya 03.10.2023 09:18

Цитата:

Сообщение от F0RQU1N and

какую тебе надо вызывть? название

Всё что связано с анимками например. setFixedCameraPosition, pointCameraAtPoint, restoreCamera, ради них тоже пришлось писать скрипт на Люа, потому что СФ *** знает как управлять камерой. Спавн НПС, в СФ можно спавнить только педов, которые находятся под управлением локального игрока. Все возможные функции, начинающиеся со слова attach. Любой способ эмулировать пакеты.

F0RQU1N and 03.10.2023 09:20

Цитата:

Сообщение от kin4stat

Держи, читай

C++:





Код:

template

inline
constexpr
bool
apply_is_noexcept
=
false
;
template

inline
constexpr
bool
apply_is_noexcept
>
=
noexcept
(
std
::
invoke
(
std
::
declval

(
)
,
std
::
get
>
-
Is
-
1
>
(
std
::
declval

(
)
)
.
.
.
)
)
;
template

constexpr
decltype
(
auto
)
apply_reversed
(
F
&&
f
,
Tuple
&&
tup
)
noexcept
(
apply_is_noexcept
>
>>
)
{
return
[
&
]

(
std
::
index_sequence

)
{
return
std
::
invoke
(
std
::
forward

(
f
)
,
std
::
get
>
-
Is
-
1
>
(
std
::
forward

(
tup
)
)
.
.
.
)
;
}
(
std
::
make_index_sequence
>
>
{
}
)
;
}



это пиздец... кто такую хуету может написать

Цитата:

Сообщение от Ya Zaregalsya

Всё что связано с анимками например. setFixedCameraPosition, pointCameraAtPoint, restoreCamera, ради них тоже пришлось писать скрипт на Люа, потому что СФ *** знает как управлять камерой. Спавн НПС, в СФ можно спавнить только педов, которые находятся под управлением локального игрока. Все возможные функции, начинающиеся со слова attach. Любой способ эмулировать пакеты.

по строчке например

Цитата:


setFixedCameraPosition

ищи в иде где функа биндится и по адресу вызывай

Ya Zaregalsya 03.10.2023 09:32

Цитата:

Сообщение от F0RQU1N and

это пиздец... кто такую хуету может написать

по строчке например

ищи в иде где функа биндится и по адресу вызывай

Нифига не понял, чё за строки, какие бинды. Если знаешь как вызывать функи из Муна, можешь написать коротенький гайд, думаю с него будет спрос.

Digger Man52 03.10.2023 10:35

Цитата:

Сообщение от Ya Zaregalsya

Нифига не понял, чё за строки, какие бинды. Если знаешь как вызывать функи из Муна, можешь написать коротенький гайд, думаю с него будет спрос.

отреверси мун, найди функцию, вызывай функцию, но нужна ли тебе зависимость от муна? нет бы написать хук самому

F0RQU1N and 03.10.2023 11:09

Цитата:

Сообщение от Ya Zaregalsya

Нифига не понял, чё за строки, какие бинды. Если знаешь как вызывать функи из Муна, можешь написать коротенький гайд, думаю с него будет спрос.

https://forum.antichat.xyz/attachments/28387098/

ищещь по строке название функции тебе нужной

переходишь по хрефу и видишь что чуть выше куда то записывается адрес функции

https://forum.antichat.xyz/attachments/28387098/

переходишь в нее

https://forum.antichat.xyz/attachments/28387098/

видишь 7 аргументов, скорее всего первый это какой-то контекст у lua или сол2(сам посмотри в дебагере что туда передается и откуда, мне лень) а остальные шесть скорей всего то что передается в луашную функу

Ya Zaregalsya 03.10.2023 11:39

Цитата:

Сообщение от F0RQU1N and

ищещь по строке название функции тебе нужной
переходишь по хрефу и видишь что чуть выше куда то записывается адрес функции

переходишь в нее

видишь 7 аргументов, скорее всего первый это какой-то контекст у lua или сол2(сам посмотри в дебагере что туда передается и откуда, мне лень) а остальные шесть скорей всего то что передается в луашную функу

Ух нифига вот это полезный ответ! Можешь подкинуть какой-то вводной урок подо всю эту хуёвину? А то я не бум-бум во всём энтом реверсинге.

вайега52 03.10.2023 11:53

Цитата:

Сообщение от Ya Zaregalsya

Ух нифига вот это полезный ответ! Можешь подкинуть какой-то вводной урок подо всю эту хуёвину? А то я не бум-бум во всём энтом реверсинге.

https://youtube.com/playlist?list=PL...x3KAsTAqldsXjk

RTD 03.10.2023 15:40

Цитата:

Сообщение от F0RQU1N and

ищещь по строке название функции тебе нужной
переходишь по хрефу и видишь что чуть выше куда то записывается адрес функции

переходишь в нее

видишь 7 аргументов, скорее всего первый это какой-то контекст у lua или сол2(сам посмотри в дебагере что туда передается и откуда, мне лень) а остальные шесть скорей всего то что передается в луашную функу

Нет, это не верно. То что ты нашел это какие-то внутренности для sol2.

Все луа функции это lua_CFunction -> int (__cdecl*)(lua_State* L)

Переходить нужно по этому

https://forum.antichat.xyz/attachments/28387209/

Далее идешь на lua_pushcclosure и видишь функцию которая туда передается

https://forum.antichat.xyz/attachments/28387209/

sub_10072F70 это и есть "setFixedCameraPosition"

Вот, достает аргументы с луа стека и вызывает установку позиции камеры

https://forum.antichat.xyz/attachments/28387209/

Вызвать это будет не так-то просто, потому что надо получить 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
)



и ждем выстрела в колено

Во втором случае захардкодили кое-как одну функцию и все равно обмазались калом во время процесса реверсинга

F0RQU1N and 03.10.2023 15:48

Цитата:

Сообщение от RTD

Нет, это не верно. То что ты нашел это какие-то внутренности для sol2.
Все луа функции это lua_CFunction -> int (__cdecl*)(lua_State* L)
Переходить нужно по этому

Далее идешь на lua_pushcclosure и видишь функцию которая туда передается

sub_10072F70 это и есть "setFixedCameraPosition"
Вот, достает аргументы с луа стека и вызывает установку позиции камеры

Вызвать это будет не так-то просто, потому что надо получить 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
)



и ждем выстрела в колено
Во втором случае захардкодили кое-как одну функцию и все равно обмазались калом во время процесса реверсинга

понятно, увидел что кол-во аргументов похожее кроме первого что я и подумал либо стейт либо контекст какой-то

kin4stat 03.10.2023 17:43

Цитата:

Сообщение от F0RQU1N and

это пиздец... кто такую хуету может написать

Ну я писал, и что?

А в чем проблема обратного std::apply?

Dark_Knight 03.10.2023 23:23

Цитата:

Сообщение от Ya Zaregalsya

В СФ всё есть, потому что ты так сказал? СФ уступает Муну по функционалу. Действия, которые делаются в Муне в одну строчку, в СФ требуют сложной совершенно неочевидной последовательности действий. СФ код небезопасен, в его функции не зашиты никакие проверки, что приводит к крашам в игре. В СФ меньше функций по сравнению с Муном, а из тех что есть многие просто не работают. Никто не знает как в СФ применить анимку без рпс, как манипулировать камерой, как эмулировать пакет, и многое другое, потому что это всё в САМПФУКСе просто не работает и работать не будет, ведь проект уже закрыт. Даже самповские функции там работают криво. Я уже тысячу раз пожалел, что вообще начал работу на этом старье, просто других вариантов тогда ещё не было. Единственный нормальный варик сейчас это сдк от адского дрочилы, чел просто красава, собрал в своём сдк всё что нужно, к сожалению мне слишком запарно переносить туда весь свой проект. А что касается Муна, насколько мне известно, он как и сам Люа, написан на Си-шке, и тяжело понять почему нельзя было просто немного его переделать и выпустить нормальный сдк для С++, впрочем это уже и не нужно.

Хуйню несешь. Полнейшую. СФ проигрывает лишь документацией, но твоя тупая бошка не умеет ничего, кроме заучиванния. Иди в луа и дрочи там на виртуальную машину сколько хочешь. Там тоже есть некий ооп даже. Кому нужно тот все знает.

Может смотреть плагин СДК, можешь мта блю, но еще раз повторю. Твоя бошка ничего крмое заучивания не умеет.

Ya Zaregalsya 04.10.2023 04:44

Цитата:

Сообщение от Dark_Knight

Хуйню несешь. Полнейшую. СФ проигрывает лишь документацией, но твоя тупая бошка не умеет ничего, кроме заучиванния. Иди в луа и дрочи там на виртуальную машину сколько хочешь. Там тоже есть некий ооп даже. Кому нужно тот все знает.
Может смотреть плагин СДК, можешь мта блю, но еще раз повторю. Твоя бошка ничего крмое заучивания не умеет.

По факту ты много пиздишь и ничем не подкрепляешь свои слова. Много ты сам написал сф плагинов, в которых была работа с одиночкой?

Цитата:

Сообщение от Dark_Knight

PluginSDK юзай для такого. game api хромает в СФ.

Цитата:

Сообщение от Dark_Knight

Как по мне, функционал апи в ПСДК куда массивней по сравнению апи с СФ.

Цитата:

Сообщение от Dark_Knight

Честно, работу с синглом через СФ никогда не практиковал.

По факту ты сам нихуя не умеешь и даже не пробовал, а распинаешься тут как гуру модинга. Любой дебил может прочитать/собрать битстрим и написать чит для аризонки, но даже самп часть в СФ хромает, там нет нормальных структур пакетов, неполный список рпс, и напрочь не работает эмуляция пакетов. А по части одиночки он просто берёт глубокую глотку. И в отличие от тебя я со всем этим работал последние несколько лет и знаю, сколько сотен, или даже тысяч часов у тебя уйдёт на то, чтобы попытаться на СФ повторить то, что работает в Муне в пару строчек из коробки. По сути СФ ближе к голому аси плагину, чем к муну. 90% времени будет уходить на ковыряние под капотом и попытки выяснить как выполнить простые задачи, вместо того чтобы работать над самим проектом, и в половине случаев у тебя ничего не выйдет и придётся выдумывать костыль. Про документацию без комментариев, её просто нет ни в каком виде! Если бы разрабы муна опубликовали сурсы на гитхабе, это была бы лучшая документация к сф плагину, чем всё что есть на этом форуме.

ARMOR 04.10.2023 05:07

Цитата:

Сообщение от Ya Zaregalsya

По факту ты много пиздишь и ничем не подкрепляешь свои слова. Много ты сам написал сф плагинов, в которых была работа с одиночкой?

По факту ты сам нихуя не умеешь и даже не пробовал, а распинаешься тут как гуру модинга. Любой дебил может прочитать/собрать битстрим и написать чит для аризонки, но даже самп часть в СФ хромает, там нет нормальных структур пакетов, неполный список рпс, и напрочь не работает эмуляция пакетов.

Бетмен когда узнал что он нихуя не шарит в SF кодинге просидев в помощи по SF дохуя часов. ( А ещё раньше вроде как принимал участие в разработке самого SAMPFUNCS ):

https://media.tenor.com/CLbD1dtaQnUA...1%83%D0%B5.gif

Вообще не пойму твоих доебов по поводу того что в SF нельзя работать с самой ГТАшкой, я никогда не писал на SF но посидев в сурсе стандартного проекта увидел что ОКАЗЫВАЕТСЯ там есть класс CGame который хранит в себе более ста методов для работы с игрой, начиная от получения информации об игроке заканчивая даже получением класса для работы с RenderWare. Мне самому стало интересно как работать с этим классом, и потратив всего 5 минут я нашёл на форуме информацию! Нужно всего лишь написать GAME-> и всё! Темболее то что в папке с проектом есть ещё одна папочка которая называется GameAPI и в которой лежит дохуя файлов даже названых как файлы в Plugin SDK.

Непонимаю как ты об этом не знал учитывая то что:

Цитата:

Сообщение от Ya Zaregalsya

я со всем этим работал последние несколько лет и знаю, сколько сотен, или даже тысяч часов

По этому можно понять что ты или глупый и за НЕСКОЛЬКО ТЫСЯЧ ЧАСОВ написания плагинов на сампфунксе даже не разобрался с чём именно ты работаешь, или рофлишь.

https://forum.antichat.xyz/attachments/28387483/

Ya Zaregalsya 04.10.2023 05:18

Цитата:

Сообщение от ARMOR

Бетмен когда узнал что он нихуя не шарит в SF кодинге просидев в помощи по SF дохуя часов. ( А ещё раньше вроде как принимал участие в разработке самого SAMPFUNCS ):

https://media.tenor.com/CLbD1dtaQnUA...1%83%D0%B5.gif

Вообще не пойму твоих доебов по поводу того что в SF нельзя работать с самой ГТАшкой, я никогда не писал на SF но посидев в сурсе стандартного проекта увидел что ОКАЗЫВАЕТСЯ там есть класс CGame который хранит в себе более ста методов для работы с игрой, начиная от получения информации об игроке заканчивая даже получением класса для работы с RenderWare. Мне самому стало интересно как работать с этим классом, и потратив всего 5 минут я нашёл на форуме информацию! Нужно всего лишь написать GAME-> и всё!

Непонимаю как ты об этом не знал учитывая то что:

По этому можно понять что ты или глупый, или рофлишь.

Показательно, что из 2-х челов, наиболее яро защищающих сф плагин, один никогда ничего не писал для сингла, второй вообще только скачал стандартный проект. За то написав несколько бесполезных оффтоп сообщений, вы уже оцениваете чей-то интеллект. Если ты открыл сф плагин и полистал основные классы, то по части сингла твои знания уже примерно на уровне дарк кнайта. Теперь попробуй без эмуляции рпс применить к актёру анимку, заспавнить нпс актёра, зааттачить объект к кости, эмулировать пакет — вещи, которые в Муне делаются в пару строчек. Потом приходи снова и я дам тебе ещё кучу квестов, чтобы ты мог на личном опыте убедиться, что СФ начисто всирает муну, и немного опустить свою раздутую самооценку. Чем больше ты интересуешься СФ, тем меньше тебе будет интересен СФ и более интересен ПлагинСДК или Мунлоадер. Так что лучше сразу качай сдк от адского дрочилы и не трать время на давно заброшенный сампфункс.

ARMOR 04.10.2023 07:13

Цитата:

Сообщение от Ya Zaregalsya

Показательно, что из 2-х челов, наиболее яро защищающих сф плагин, один никогда ничего не писал для сингла, второй вообще только скачал стандартный проект. За то написав несколько бесполезных оффтоп сообщений, вы уже оцениваете чей-то интеллект. Если ты открыл сф плагин и полистал основные классы, то по части сингла твои знания уже примерно на уровне дарк кнайта. Теперь попробуй без эмуляции рпс применить к актёру анимку, заспавнить нпс актёра, зааттачить объект к кости, эмулировать пакет — вещи, которые в Муне делаются в пару строчек. Потом приходи снова и я дам тебе ещё кучу квестов, чтобы ты мог на личном опыте убедиться, что СФ начисто всирает муну, и немного опустить свою раздутую самооценку. Чем больше ты интересуешься СФ, тем меньше тебе будет интересен СФ и более интересен ПлагинСДК или Мунлоадер. Так что лучше сразу качай сдк от адского дрочилы и не трать время на давно заброшенный сампфункс.

Вот, держи тебе код воспроизведения анимации прямо как в мунлоадере! Если ты не знаешь как работают игровые опкоды да и вообще сама система игры - чем ты на*** занимался эти несколько тысяч часов? Писал недорванки ебаные и работал онли с битстримами?

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. Гений блядь. Называешь всех ЧСВшными идиотами хоть сам блядь держишь свое мнение поверх других когда тебе уже высказали что ты не прав, а ты дальше за свое "А ВОТ ПОЧЕМУ НЕ СДЕЛАТЬ ТАКОЕ ЖЕ АПИ КАК У МУНЛОАДЕРА, ТАМ ВЕДЬ ВСЁ ТАК ПРОСТО?!?!?!"

Ya Zaregalsya 04.10.2023 08:31

Цитата:

Сообщение от ARMOR

Вот, держи тебе код воспроизведения анимации прямо как в мунлоадере! Если ты не знаешь как работают игровые опкоды да и вообще сама система игры - чем ты на*** занимался эти несколько тысяч часов? Писал недорванки ебаные и работал онли с битстримами?

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. Гений блядь. Называешь всех ЧСВшными идиотами хоть сам блядь держишь свое мнение поверх других когда тебе уже высказали многое, а ты дальше за свое "А ВОТ ПОЧЕМУ НЕ СДЕЛАТЬ ТАКОЕ ЖЕ АПИ КАК У МУНЛОАДЕРА, ТАМ ВЕДЬ ВСЁ ТАК ПРОСТО?!?!?!"

Дорогой всем насрать на твоё, моё и чьё-либо мнение, если оно подкреплено онли тупыми оскорблениями. Если ты что-то знаешь, то говори информативно. Челы выше попытались дать полезный совет, а ты с кнайтом пришёл чисто вылить желчь и прокачать чсв. Только что ты говорил, что охуенных классов сампфункса достаточно для всего, а в итоге хакаешь функцию из клео. Почему ты не заюзал для этого офигенные методы сампфункса для работы с камерой, спавна цивил педов и эмуляции пакетов. Потому что они кем-то писались, но так и не были доведены до ума, и в итоге нихрена не работает. И это не игровой опкод, а самописная функция из клео либы, которая позволяет вызывать анимки в упрощённом виде, выше был пример из собейта, как реально применяется анимация с использованием только игровых функций.

Суть моего вопроса была в том, как вызывать функции мунлоадера по тому же принципу, как из сф вызывается клео, чтобы закрыть недочёты сампфункса. Правильным ответом на вопрос было сказать, что не нужно вызывать функцию Муна, потому что Мун сам для работы с синглом вызывает клео опкоды, которые так же можно вызывать из СФ. Для меня это откровение, так же как и для всех кто начал писать моды для сампа в эпоху мунлоадера. Вместо этого ты решил обзываться и пиздеть на тему, в которой нифига не разбираешься, потому что только впервые открыл сф проект. Теперь я изучу возможности КЛЕО подробнее. Оказывается в вики есть целая страница, с опкодами КЛЕО и их аналогами в Мунлоадере: https://wiki.blast.hk/ru/moonloader/opcodes

На этом вопрос можно считать решённым. Если кто-то знает, как заставить СФ эмулировать пакеты, то расскажите об этом здесь. Печально, что на этом форуме столько экспертов, но 90% их сообщений это бесполезное токсичное дерьмо. И извлекать из вас полезную инфу сложнее, чем принимать роды.

вайега52 04.10.2023 09:23

Цитата:

Сообщение от Ya Zaregalsya

Мун сам для работы с синглом вызывает клео опкоды

Мун не зависит от Клео, если правильно помню

Ya Zaregalsya 04.10.2023 09:36

Цитата:

Сообщение от why ega

Мун не зависит от Клео, если правильно помню

Я тоже так думал, пока не зашёл на ту страницу и не прочитал подзаголовок:

Цитата:


Почти все возможности взаимодействия с игрой в MoonLoader реализованы посредством эмуляции опкодов, которые используются в игре для программирования миссий. Многие опкоды не вошли в релиз MoonLoader с самой первой версии, часть вошедших опкодов позже была заменена встроенными реализациями в обновлениях.
Следующая таблица содержит все опкоды игры, где каждому опкоду соответствует его аналог в Lua и комментарий о различиях или причинах отсутствия.
Отсутствие пояснения к опкоду в третьей колонке означает, что Lua функция напрямую эмулирует опкод игры без каких-либо изменений в поведении.

https://wiki.blast.hk/ru/moonloader/opcodes

Dark_Knight 04.10.2023 11:08

Вечером расскажу почему ты несёшь ахинею полную и сравниваешь несравнимое. Обсуждение далеко не окончено.

Ya Zaregalsya 04.10.2023 11:22

Цитата:

Сообщение от Dark_Knight

Вечером расскажу почему ты несёшь ахинею полную и сравниваешь несравнимое. Обсуждение далеко не окончено.

Расскажи лучше что-нибудь полезное.

ARMOR 04.10.2023 12:22

Цитата:

Сообщение от Ya Zaregalsya

Я тоже так думал, пока не зашёл на ту страницу и не прочитал подзаголовок:

https://wiki.blast.hk/ru/moonloader/opcodes

А где там хоть что-то указанное про Клео? Ты даже не знаешь что такое опкоды блядь. Опкоды используются для вызова ИГРОВЫХ СКРИПТОВ которые по началу есть в игре. Опкоды можно вызывать с помощью Plugin SDK и без Клео.

Ya Zaregalsya 04.10.2023 12:42

Цитата:

Сообщение от ARMOR

А где там хоть что-то указанное про Клео? Ты даже не знаешь что такое опкоды блядь. Опкоды используются для вызова ИГРОВЫХ СКРИПТОВ которые по началу есть в игре. Опкоды можно вызывать с помощью Plugin SDK и без Клео.

Помимо дефолтных опкодов есть ещё 100+ опкодов из клео либы, они тоже есть в муне. Также сам вызов этих опкодов насколько я понимаю осуществляется при помощи клео.

Dark_Knight 04.10.2023 23:11

1. Приношу за оскорбление

2.

вайега52 15.10.2023 14:00

Цитата:

Сообщение от Ya Zaregalsya

Я тоже так думал, пока не зашёл на ту страницу и не прочитал подзаголовок:

У муна своя реализация клео-опкодов (т.е. аналогичные функции, как написано на вики), мун юзает опкоды только тогда, когда речь идет про работу с сампом, а точнее с сампфунксом, который регистрирует свои опкоды и мун вызывает их, но самому муну не нужен клео

imring 15.10.2023 18:07

Цитата:

Сообщение от why ega

У муна своя реализация клео-опкодов (т.е. аналогичные функции, как написано на вики), мун юзает опкоды только тогда, когда речь идет про работу с сампом, а точнее с сампфунксом, который регистрирует свои опкоды и мун вызывает их, но самому муну не нужен клео

для вызова опкодов не обязателен клео, ибо в гта своя реализация scm. к примеру (сурс):


Время: 13:38