HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 14.09.2023, 15:18
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

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

  #2  
Старый 14.09.2023, 15:38
вайега52
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами: 2055431

Репутация: 3


По умолчанию

Цитата:
Сообщение от Ya Zaregalsya  

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

  #3  
Старый 14.09.2023, 16:02
Ya Zaregalsya
Постоянный
Регистрация: 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
)


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

  #4  
Старый 02.10.2023, 21:02
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

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

  #5  
Старый 03.10.2023, 03:39
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Цитата:
Сообщение от Dark_Knight  

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

  #6  
Старый 03.10.2023, 03:43
chapo
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами: 5046982

Репутация: 183


По умолчанию

Цитата:
Сообщение от Ya Zaregalsya  

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

  #7  
Старый 03.10.2023, 03:50
ARMOR
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами: 3831395

Репутация: 183


По умолчанию

Цитата:
Сообщение от Ya Zaregalsya  

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

  #8  
Старый 03.10.2023, 04:02
Gorskin
Познавший АНТИЧАТ
Регистрация: 15.10.2017
Сообщений: 1,407
С нами: 4514423

Репутация: 183


По умолчанию

Цитата:
Сообщение от ARMOR  

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

  #9  
Старый 03.10.2023, 04:07
ARMOR
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами: 3831395

Репутация: 183


По умолчанию

Цитата:
Сообщение от Gorskin  

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

  #10  
Старый 03.10.2023, 04:09
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Цитата:
Сообщение от chapo  

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

Цитата:
Сообщение от ARMOR  

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





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.