Mafia-Game Forum

Mafia-Game Forum (https://mafia-game.ru/forum/index.php)
-   Скриптинг (https://mafia-game.ru/forum/forumdisplay.php?f=10)
-   -   Вопросы по скриптингу (https://mafia-game.ru/forum/showthread.php?t=23)

Firefox3860 25.10.2019 16:32

CurtisTea, привет )
Не использовал такую команду, но интересно стало. Видимо, она может сделать объект (полу)прозрачным.
В справочнике написано, что у - это номер переменной со значением альфы. То есть не само её значение.
Ещё, как я понял, в качестве фрейма надо указывать конкретный объект 4ds-модели, а не всю модель.

CurtisTea 25.10.2019 17:27

Цитата:

Сообщение от Firefox3860
Ещё, как я понял, в качестве фрейма надо указывать конкретный объект 4ds-модели, а не всю модель.

Воу, да, ты прав, так и работает) Именно это я и не мог понять, спасибо

Tosyk 10.11.2019 19:40

Подскажите как настроить горячие клавиши во фрирайде для изменения FOV камеры

edit
нашёл: http://mafiascene.com/forum/viewtopi...3ac761e#129859

fuchs11 23.03.2020 17:55

Цитата:

Сообщение от GOLOD55 (Сообщение 944)
нака доку по скрипткомандам. видимо свежовее чем у тя..
http://dropmefiles.com/JsMi4

У кого-нибудь сохранилось? Перезалейте пожалуйста

Firefox3860 23.03.2020 18:49

Цитата:

Сообщение от fuchs11 (Сообщение 9028)
У кого-нибудь сохранилось? Перезалейте пожалуйста

На. Там ещё несколько интересных документов

https://drive.google.com/drive/u/0/f...c4kdZ6YEVFSN_t

CurtisTea 27.10.2020 18:04

Ребя, я тут немного ударился в оптимизацию кода и есть пара вопросов, которые хотелось бы точно выяснить) Заранее извиняюсь если вопросы покажутся нубацкими:shy:

Как работают скрипты вообще? Я так понимаю сперва выполняется 1 строчка 1-го скрипта в сцене, потом 1 строчка 2-го скрипта... 1 строчка последнего, далее 2 строчка 1-го, 2 строчка 2-го и так далее, верно? Что в таком случае делает commandblock? Выполняет строчки своего скрипта, пока не наткнется на commandblock 0 и только тогда переходит к следующему?

Если инактивится скрипт (командой act_setstate), он останавливается на определенной строчке или его работа сбрасывается полностью (как при смене миссии)? Если его инактивить и заактивить обратно, он запустится с определённой строчки когда он стал неактивным или с самого начала?

P.S. просто хочется понимать точную суть происходящего, а не на уровне "с коммандблок скрипт работает быстрее")

KlassenAS 27.10.2020 18:18

Цитата:

Сообщение от CurtisTea (Сообщение 12913)
Как работают скрипты вообще? Я так понимаю сперва выполняется 1 строчка 1-го скрипта в сцене, потом 1 строчка 2-го скрипта... 1 строчка последнего, далее 2 строчка 1-го, 2 строчка 2-го и так далее, верно? Что в таком случае делает commandblock? Выполняет строчки своего скрипта, пока не наткнется на commandblock 0 и только тогда переходит к следующему?

Совершенно верно. Команды между CommandBlock 1 и CommandBlock 0 выполняются без прерываний на иные задачи. Поэтому с коммандблоками нужно быть внимательным. Чтобы внути не оказался бесконечный цикл, например.
А самый простой способ намертво повесить игру выглядит так:
CommandBlock 1
Wait 100
Поскольку команда ожидания под коммандблоком, игра ждёт окончания ожидания, не переходя к другим задачам. Но к этим другим задачам, как раз относится отсчёт времени ) Игра ждёт, но время не идёт.
Цитата:

Сообщение от CurtisTea (Сообщение 12913)
Если инактивится скрипт (командой act_setstate), он останавливается на определенной строчке или его работа сбрасывается полностью (как при смене миссии)? Если его инактивить и заактивить обратно, он запустится с определённой строчки когда он стал неактивным или с самого начала?

Хз, но есть очень простой и эффективный способ проверить.
В одном скрипте пишешь:
Dim_Flt 1
Let Flt[0]=0
Label 1
Lel Flt[0]=Flt[0]+1
FreeRide_ScoreSet Flt[0]
Wait 1000
GoTo 1
А из другого скрипта его активируешь/деактивируешь по таймеру или по нажатию какой-нибудь клавиши.
И сразу видно, продолжает скрипт работу после повторной активации или начинает заново.
Экспериментом скриптинг не испортишь )

1MAMOHT1 27.10.2020 19:49

Цитата:

Сообщение от CurtisTea (Сообщение 12913)
Если инактивится скрипт (командой act_setstate), он останавливается на определенной строчке или его работа сбрасывается полностью (как при смене миссии)? Если его инактивить и заактивить обратно, он запустится с определённой строчки когда он стал неактивным или с самого начала?

Цитата:

Сообщение от KlassenAS (Сообщение 12914)
Хз, но есть очень простой и эффективный способ проверить.

Даже любопытно стало...
Да продолжает из тела скрипта, счетчик не обнуляется ;)

CurtisTea 28.10.2020 16:12

Спасибо) Тогда ещё вопрос: влияет ли на загруженность движка количество переменных/акторов/фреймов, резервируемых в скрипте (даже если не все они используются)?
Проверил через getticktime - уменьшения скорости не показало, но и не факт что должно было.

KlassenAS 28.10.2020 16:45

Цитата:

Сообщение от CurtisTea (Сообщение 12926)
Спасибо) Тогда ещё вопрос: влияет ли на загруженность движка количество переменных/акторов/фреймов, резервируемых в скрипте (даже если не все они используются)?
Проверил через getticktime - уменьшения скорости не показало, но и не факт что должно было.

Переменная типа Float занимает в памяти 4 байта.
Даже с сотней переменных и полкилобайта не наберёшь.
С акторами и фреймами картина примерно такая же - это, по сути переменные с набором идентификаторов и свойств, через которые движок обращается к конкретным моделям.
Для движка это - капля в море.
Для сравнения - качественная модель авто для игры - от 1Мб и более. И вот они движок и проц грузят )
А что до скриптов - хоть километровый скрипт напиши, игра и не заметит.
Орять же - можно провести эксперимент.
Dim_Flt 2
Dim_Act дофига
Label 1
GetGameTime 0
FindActor 0
//тут можно сотню команд натолкать
FindActor X
И смотрим, сколько времени ушло на команды
CommandBlock 1
GetGameTime 1
Let Flt[0]=Flt[1]-Flt[0]
FreeRide_ScoreSet Flt[0]
CommandBlock 0
Wait 500
GoTo 1
Увеличиваем количество акторов и команд в неразумных пределах, с помощью копипаста, и смотрим, как увеличивается время выполнения.
Если количество команд и акторов увеличилось вдвое, и время увеличилось вдвое - значит, движок работает всё с той же скоростью.
Если количество акторов и команд увеличилось в 10 раз, а время выполнения в 15 раз - то движок начал тормозить )

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


Текущее время: 15:05. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.11 Release Candidate 2
Copyright ©2000 - 2024, vBulletin Solutions Inc. Перевод: zCarot