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)

dimych 22.03.2018 17:44

Вопросы по скриптингу
 
Если поставить скрипт снега в 1 миссии, то в конце в доме Тома идет снег. Можно это исправить или нет?
И тоже самое в 15 миссии (Везет же гаду), в ролике на переезде, что бы снег не шел внутри сторожки. Или можно сделать снег только в некоторых эпизодах миссии, например - Итальянский садик, подрыв машины и Радуга со снегом, а переезд и порт без снега?

Firefox3860 22.03.2018 19:36

Определённую область можно изолировать от осадков. Но это не по скриптам вопрос. Это делается либо с помощью лайт-секторов, либо с помощью спец. dummy-объектов.

dimych 23.03.2018 20:06

Не могу вставить скрипт снега в интермеццо 2-4 (INTERMEZZO02, INTERMEZZO03, INTERMEZZO04), хотя в первое интро снег замечательно встал. В тех scene2.bin пустой раздел Init Scripts. Пробовал в DCED добавить GameInitEnd - прога виснет намертво. Как вставить туда снег?

Какая еще программа позволяет вставлять GameInitEnd в scene2.bin?

GOLOD55 28.03.2018 13:19

боюсь ето тока гексом мутить

dimych 29.03.2018 16:25

Цитата:

Сообщение от GOLOD55 (Сообщение 296)
боюсь ето тока гексом мутить

Приветствую! :) Очень рад, что ты (Вы) нужное подчеркнуть объявился на форуме! Очень надеюсь, что ты (Вы), как и Квантум, знаешь как можно убрать у прохожих зонты когда идет снег?
На старом форуме Квантум выложил скриншот со снегом и прохожими без зонтов и намекнул, что сделал это через экзешник, но больше не заходил и не рассказал как же этого добиться?
P.S. Извини, я не силен в модинге...что имелось ввиду "мутить гексом"?

Пёс-Призрак 29.03.2018 16:47

Цитата:

Сообщение от dimych (Сообщение 330)
что имелось ввиду "мутить гексом"?

http://salieri-bar.narod.ru/index/0-28

GOLOD55 01.04.2018 22:01

могу замутить инитскрипт. в каких миссиях нужно? или в не оригинальных(тогда заливай_ка).
-
зонтик хорошая вещь че, - еще им можно отравить скрипачей:)
контролируется он екзешником ога. по-хорошему можно(нужно) выследить оное и сделать развилку типа 'если погода но снег, то обходим зонтикование(и еще там подмена челоанимок кстати)'. можно и в валенки обуть ентих...бедолаг:)

Abradox 01.04.2018 23:30

Извините что пишу не по теме. GOLOD55, как там новая версия патчера? Планируется к выходу?

GOLOD55 02.04.2018 01:17

да покамест никакие работы не ведутся.

Abradox 02.04.2018 03:46

пичаль

dimych 03.04.2018 21:26

Цитата:

Сообщение от GOLOD55 (Сообщение 489)
могу замутить инитскрипт. в каких миссиях нужно? или в не оригинальных(тогда заливай_ка).
-
зонтик хорошая вещь че, - еще им можно отравить скрипачей:)
контролируется он екзешником ога. по-хорошему можно(нужно) выследить оное и сделать развилку типа 'если погода но снег, то обходим зонтикование(и еще там подмена челоанимок кстати)'. можно и в валенки обуть ентих...бедолаг:)

Приветствую! Очень рад ответу. Делаю глобальную адаптацию (насколько это возможно для меня, никогда модингом не занимался) зимних модов (Snow mod, Sweet Winter) под оригинальные миссии и фрирайд.
Зимой, под снежком будет гораздо логичнее без зонтов. Это неоднократно подмечали и обзорщики модов (Paradonz и другие), да и багов с ними хватает.
Насколько понял, есть два способа убрать зонты - через экзешник и скриптом. Это нужно сделать во всех миссиях и фрирайде.

Конечно, следующий вопрос упирается в зимнюю одежду и обувь (валенки это круто :), но боюсь немного не традиционно). Некоторых мужских персонажей прохожих и переделывать не надо - они в ботинках, пальто и шляпах. А женские персонажи практически все одеты по летнему и с этим нужно что то делать.

Буду рад любой помощи. Заранее благодарю.

Kaiser 12.04.2018 20:20

Ребята, поясните пожалуйста следующие команды:

door_getstate xx, yy

найти текущее состояние двери

xx - актор двери
yy - считываемое значение(0,1,2,3?)

Непонятно, YY сколько всего можно ставить значение? И что вообще эти значения значат? Может быть это значение можно записать в переменную...

А на эти команды, даже описания нет...

garage_releasecars

garage_show

GOLOD55 14.04.2018 04:11

нака доку по скрипткомандам. видимо свежовее чем у тя..
http://dropmefiles.com/JsMi4

Kaiser 15.04.2018 20:55

Возможно ли одному энеми дать в обе руки по вещи?

Kaiser 17.04.2018 21:25

Ребята, помогите пожалуйста. Нашел такую команду "getenemyaistate" на пароходе, которая прописана в скрипте под названием "паника всем".

Решил ее попробовать использовать. Написал простенький скрипт, суть которого в том, чтобы при выстреле Тома, музыка отключалась.

Вот скрипт:

commandblock 1
dim_act 2
dim_flt 4
dim_frm 1
findactor 0, "Tommy"
findframe 0, "14_Coucou"
commandblock 0

label 101
getenemyaistate 0, 3
if flt[3] < 1, -1, 101
wait 1000
frm_seton 0, 0
wait 1000
end

Проблема в том, что если я ставлю условие "больше" или "меньше" единицы, то
музыка не играет вовсе изначально. Если ставлю "равно" единице, то играет, но не отключается при первом выстреле.

Еще такой вариант думал:

Развернуть для просмотра

dim_act 2
dim_flt 4
dim_frm 1
findactor 0, "Tommy"
findframe 0, "14_Coucou"

label 101
getenemyaistate 0, 0
if flt[0] = 1, 102, 101
wait 1000
goto 101

label 102
commandblock 1
frm_seton 0, 0
wait 1000
commandblock 0
end
[свернуть]

GOLOD55 18.04.2018 19:15

поюзай вместо getenemyaistate команды get_pm_...
---
в лев.руку можно сунуть ченить, тока если human_linktohand не справится, то боюсь придется "вручную", - типа: модел_креате, линк к руке, позиционирование; или изначально предмет расположить в руке, смотря зачем и што с ним будет.

Kaiser 18.04.2018 21:50

В общем эта команда:getenemyaistate очень даже рабочая. Оказывается, я не к тому прикреплял актору! Теперь у меня все работает!

Kaiser 05.09.2018 19:49

Ребята! Коллеги! Друзья! Помогите советом решить одну старую проблемку. Дело в том, что я до сих пор умею только запускать таймер и делать так, что типо время вышло, игра закончена. Но у меня не получается сделать второе условие: чтобы если игрок успел до конца таймера (например поюзал нужную дверь), то таймер бы отключился вместе с условием проигранной миссии. Как это сделать? В одном скрипте? В двух? Наведите хотя бы на мысль.

GOLOD55 08.09.2018 19:05

а timeroff тупо не помогает?
пошмотри как таймеры в екстриме сделаны, там ж их куча. там же и непроигрыш подмиссии если юзер успел выполнить условия, полагаю.

CurtisTea 25.10.2019 15:26

Привет, ребят)
Кто знает как работает команда frm_setalpha X,Y? Перебирал для Y разные параметры и ничего, никак не могу разобраться.

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, чтобы всё быстро и легко делать в блокноте, и не лезть в сцену триста раз.

KlassenAS 30.10.2020 19:10

Цитата:

Сообщение от Abradox (Сообщение 12958)
Вроде скрипт не должен был затрагивать сюжетную музыку?
В Миссии Creme de la Creme, когда в аэропорту глохнет машина, то при выходе из нее перестает играть сюжетная музыка. Включается она уже только в катсцене с падением самолета.

Ты темой промахнулся )
Я проверю, но уйдёт время, у меня сохранения заглючило, теперь всё с начала прохожу.
Ты тоже проверь, загрузи без скрипта. Вдруг, так и должно быть, а мы забыли.

Kaiser 16.12.2020 21:12

У кого-нибудь бывало такое, чтобы команда отключения городской музыки не срабатывала?

KlassenAS 16.12.2020 21:35

Цитата:

Сообщение от Kaiser (Сообщение 13470)
У кого-нибудь бывало такое, чтобы команда отключения городской музыки не срабатывала?

У меня такого не бывало. У меня было наоборот - если есть работающий поток, доже если его громкость равна 0 то городская музыка не включалась.
Но чтобы не отключалась - этого не было.
Можно больше подробностей?
Например, в миссии с поездками по городу перед перестрелкой в музее в городе всё время играет напряжённая музыка.
Но это не городская музыка, а созданная в скрипте с помощью потока.
А значит, её этой командой не вырубить.
Поэтому важно, как и при каких обстоятельствах ты используешь команду CityMusic_Off

Kaiser 21.01.2021 18:56

Народ, есть у кого-нибудь скрипт, который считывает пройденное расстояние и выводит его в доллары? Мне просто нужно как-то 500 м отсчитать в игре.

alex5995 08.02.2021 12:46

Всем привет. Кто нибудь знает как заставить Томми брать предмет(модель фонаря, а не лайт) в левую руку?

Melhior 08.02.2021 15:29

Цитата:

Сообщение от alex5995 (Сообщение 13894)
Всем привет. Кто нибудь знает как заставить Томми брать предмет(модель фонаря, а не лайт) в левую руку?

Может
human_linktohand xx, yy[, HAND, MOVE, LEFT, RIGHT] ?

alex5995 08.02.2021 21:48

Не получается, не хочет ничего брать в левую руку.

Melhior 09.02.2021 01:37

Цитата:

Сообщение от alex5995 (Сообщение 13900)
Не получается, не хочет ничего брать в левую руку.

Ты хоть так прописал? human_linktohand 0,0,left ? где 0-Том, другой 0-фрейм фонаря.
И скрипт бы посмотреть не помешало бы.

alex5995 09.02.2021 08:06

Я по всякому пробовал, в том числе и
Цитата:

Сообщение от Melhior (Сообщение 13902)
human_linktohand 0,0,left ? где 0-Том, другой 0-фрейм фонаря.

Скрипт смогу выложить вечером после работы, дома с ним ковырялся.

alex5995 09.02.2021 18:07

Цитата:

Сообщение от Melhior (Сообщение 13902)
И скрипт бы посмотреть не помешало бы.

=скрипты фонаря из Boz мода, добавил модельку фонаря(f_light)=
------------------------------------------------------------------------
act_setstate -1, inactive

dim_act 1
dim_flt 9
dim_frm 3
findactor 0, "Tommy"
findframe 0, "2baterka_light"
findframe 1, "Tommy.l_hand"
findframe 2, "f_light"

label 1
commandblock 0
commandblock 1
human_getiteminlhand 0, 0
human_getiteminlhand 0, 2
human_linktohand 0, 18, LEFT

if flt[0] = flt[8], -1, ZMENA

label 2
let flt[8] = flt[0]
getactivecamera 2
frm_getworldpos 1, 1
frm_setpos 0, 1
frm_setpos 2, 1
//frm_getworldrot 1, 4
frm_getworldrot 3, 4
//let flt[4] = flt[4] + flt[9]
//let flt[4] = flt[4] / 2
//let flt[5] = flt[5] + flt[10]
//let flt[5] = flt[5] / 2
//let flt[6] = flt[6] + flt[11]
//let flt[6] = flt[6] / 2
//let flt[7] = flt[7] + flt[12]
//let flt[7] = flt[7] / 2
frm_setrot 0, 4
goto 1

label ZMENA
if flt[0] = 18, -1, VYP
frm_seton 0, 1
frm_setpos 2, 1
goto 2

label VYP
frm_seton 0, 0
frm_setpos 2, 0
goto 2
---------------------------------------------------------------------------
act_setstate -1, inactive

dim_act 1
dim_flt 5
dim_frm 5

findactor 0,"Tommy"
findframe 0, "2baterka_light"
findframe 1, "f_light"
frm_seton 0, 0
frm_seton 1, 0

label 1
human_isweapon 0, 0, 18
if flt[0] = 1, -1, 1

label 2
ctrl_read 1,CLUTCH1
if flt[1]=0, 2, -1
if flt[0]=0, 3, -1
let flt[0]=0
frm_seton 0, 1
frm_seton 1, 1
wait 300
goto 2

label 3
let flt[0]=1
frm_seton 0, 0
frm_seton 1, 0
wait 300
goto 2
---------------------------------------------------------------------------
=моё ноу-хау - Томми поднимает пустую левую руку , чтоб посветить места повыше=

act_setstate -1, inactive

dim_act 1
dim_flt 4
dim_frm 1
findactor 0,"Tommy"

label 101
ctrl_read 1,SPEEDLIMIT1
if flt[1]=0, 101, -1
player_lockcontrols 1
person_playanim 0, "RadMavani02R.i3d", 0, simple
wait 2000
player_lockcontrols 0
wait 500
goto 101
----------------------------------------------------------------------

dim_act 5
dim_frm 1
dim_flt 1

findactor 0,"Tommy"
findactor 1,"f_light2"
findactor 2,"2baterkaon"
findactor 3, "2baterka"
findactor 4, "f_light_overview"
findframe 0,"f_light"

label 1
detector_waitforuse
frm_seton 0, 0
playsound "skog1.wav", 1, 50, 1, 2
wait 200
human_addweapon 0, 18, 0, 0
wait 500
///human_linktohand 0, 18, LEFT
console_addtext 3418
act_setstate 2, active
act_setstate 3, active
act_setstate 4, active
end


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

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