 |
|

14.09.2023, 15:18
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Хочется пользоваться крутыми функами муна из нашего убогенького сф плагина(
|
|
|

14.09.2023, 15:38
|
|
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами:
2055431
Репутация:
3
|
|
Сообщение от Ya Zaregalsya
Хочется пользоваться крутыми функами муна из нашего убогенького сф плагина(
сомневаюсь что это можно реализовать как-то кроме реверса мунлоадера, но тогда вопрос в другом, не проще ли напрямую вызывать функции (большинство) из игры/сампа?)
|
|
|

14.09.2023, 16:02
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Сообщение от 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
)
Соответственно и потенциальных багов от использования муновских функций меньше.
|
|
|

02.10.2023, 21:02
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Луа - это луа. Плюсы это плюсы. Нехер тянуть такое в СФ, когда оно и там так есть.
|
|
|

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

03.10.2023, 03:43
|
|
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами:
5046982
Репутация:
183
|
|
Сообщение от Ya Zaregalsya
В СФ всё есть, потому что ты так сказал? СФ уступает Муну по функционалу. Действия, которые делаются в Муне в одну строчку, в СФ требуют сложной совершенно неочевидной последовательности действий
так юзай плагин сдк, там функций больше чем в муне, да и работают они абсолютно так же (потому что мун вызывает именно эти игровые функции)
|
|
|

03.10.2023, 03:50
|
|
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами:
3831395
Репутация:
183
|
|
Сообщение от Ya Zaregalsya
А что касается Муна, насколько мне известно, он как и сам Люа, написан на Си-шке, и тяжело понять почему нельзя было просто немного его переделать и выпустить нормальный сдк для С++, впрочем это уже и не нужно.
Потому что комьюнити сампа слишком тупое чтобы писать на плюсах, а на писать на луа может даже первокласник.
|
|
|

03.10.2023, 04:02
|
|
Познавший АНТИЧАТ
Регистрация: 15.10.2017
Сообщений: 1,407
С нами:
4514423
Репутация:
183
|
|
Сообщение от ARMOR
Потому что комьюнити сампа слишком тупое чтобы писать на плюсах, а на писать на луа может даже первокласник.
Lua - высокоуровневый ЯП. У многих луа ограничивается только использованием функций из Moonloader API. Для самперов луа скриптинг ограничивается только этим и банальными imgui окнами. Не стоит говорить что даже первоклассник напишет скрипт, максимум выведет print("Hello man") и назовёт своё изобретение скриптом. Сам синтаксис луа приятен и понятен глазу.
|
|
|

03.10.2023, 04:07
|
|
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами:
3831395
Репутация:
183
|
|
Сообщение от Gorskin
Lua - высокоуровневый ЯП. У многих луа ограничивается только использованием функций из Moonloader API. Для самперов луа скриптинг ограничивается только этим и банальными imgui окнами. Не стоит говорить что даже первоклассник напишет скрипт, максимум выведет print("Hello man") и назовёт своё изобретение скриптом. Сам синтаксис луа приятен и понятен глазу.
Когда я поставил в сравнении луа с плюсами для разработки модификаций для сампа можно было понять что человек который решил написать что-то под GTA SA быстрее сможет написать что-то на луа чем на крестах, как минимум потому что тут нет например такой жесткой типизации.
|
|
|

03.10.2023, 04:09
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Сообщение от chapo
так юзай плагин сдк, там функций больше чем в муне, да и работают они абсолютно так же (потому что мун вызывает именно эти игровые функции)
Так говорю же сдк от адского дрочилы это лучший варик сейчас. Он включает в себя плагин сдк, ракнет и имгуй. Раньше работа с плагин сдк означала, что ты не сможешь взаимодействовать с сампиком, а у адского дрочилы всё в одном.
Сообщение от ARMOR
Когда я поставил в сравнении луа с плюсами для разработки модификаций для сампа можно было понять что человек который решил написать что-то под GTA SA быстрее сможет написать что-то на луа чем на крестах, как минимум потому что тут нет например такой жесткой типизации.
Учитывая какую простую ***ню обычно пишут новички на Люа, они бы не заметили разницы по сравнению с С++, и просто игнорили 90% его возможностей. А с ростом сложности проекта, удобство С++ только возрастает. Для опытного прогера С++ код намного читабельнее, как раз из-за строгой типизации, продвинутого синтаксиса, заголовочных файлов, и конечно интеграции с IDE, которая будет подсвечивать все твои ошибки и выводить сигнатуру всех функций. Единственная причина почему Люа так заходит новичкам, заключается в том, что ты можешь писать код в обычный текстовик, нажать Ctrl+S и всё будет работать. Чтобы начать писать на C++, ты должен поставить тяжеловесную среду разработки, собрать проект, подключить все зависимости и каждый раз всё это компилировать. Ну а сам кодинг на С++ не представлял бы особой сложности для новичков, будь там такой же хороший SDK как Мунлоадер и не будь такой муторной установки и сборки прокетов.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|