PDA

Просмотр полной версии : Вопросы по скриптингу


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

Пёс-Призрак
29.03.2018, 16:47
что имелось ввиду "мутить гексом"?

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

Приветствую! Очень рад ответу. Делаю глобальную адаптацию (насколько это возможно для меня, никогда модингом не занимался) зимних модов (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
Ещё, как я понял, в качестве фрейма надо указывать конкретный объект 4ds-модели, а не всю модель.
Воу, да, ты прав, так и работает) Именно это я и не мог понять, спасибо

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

edit
нашёл: http://mafiascene.com/forum/viewtopic.php?p=129859&sid=377a59bc2f262322d1a26a93e3ac761e#129859

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

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

Firefox3860
23.03.2020, 18:49
У кого-нибудь сохранилось? Перезалейте пожалуйста
На. Там ещё несколько интересных документов

https://drive.google.com/drive/u/0/folders/1YMJR4RxGxDX5pOALfVc4kdZ6YEVFSN_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
Как работают скрипты вообще? Я так понимаю сперва выполняется 1 строчка 1-го скрипта в сцене, потом 1 строчка 2-го скрипта... 1 строчка последнего, далее 2 строчка 1-го, 2 строчка 2-го и так далее, верно? Что в таком случае делает commandblock? Выполняет строчки своего скрипта, пока не наткнется на commandblock 0 и только тогда переходит к следующему?
Совершенно верно. Команды между CommandBlock 1 и CommandBlock 0 выполняются без прерываний на иные задачи. Поэтому с коммандблоками нужно быть внимательным. Чтобы внути не оказался бесконечный цикл, например.
А самый простой способ намертво повесить игру выглядит так:
CommandBlock 1
Wait 100
Поскольку команда ожидания под коммандблоком, игра ждёт окончания ожидания, не переходя к другим задачам. Но к этим другим задачам, как раз относится отсчёт времени ) Игра ждёт, но время не идёт.
Если инактивится скрипт (командой 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
Если инактивится скрипт (командой act_setstate), он останавливается на определенной строчке или его работа сбрасывается полностью (как при смене миссии)? Если его инактивить и заактивить обратно, он запустится с определённой строчки когда он стал неактивным или с самого начала?

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

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

KlassenAS
28.10.2020, 16:45
Спасибо) Тогда ещё вопрос: влияет ли на загруженность движка количество переменных/акторов/фреймов, резервируемых в скрипте (даже если не все они используются)?
Проверил через 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
Вроде скрипт не должен был затрагивать сюжетную музыку?
В Миссии Creme de la Creme, когда в аэропорту глохнет машина, то при выходе из нее перестает играть сюжетная музыка. Включается она уже только в катсцене с падением самолета.
Ты темой промахнулся )
Я проверю, но уйдёт время, у меня сохранения заглючило, теперь всё с начала прохожу.
Ты тоже проверь, загрузи без скрипта. Вдруг, так и должно быть, а мы забыли.

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

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

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

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

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

Melhior
08.02.2021, 15:29
Всем привет. Кто нибудь знает как заставить Томми брать предмет(модель фонаря, а не лайт) в левую руку?
Может
human_linktohand xx, yy[, HAND, MOVE, LEFT, RIGHT] ?

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

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

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

alex5995
09.02.2021, 08:06
Я по всякому пробовал, в том числе иhuman_linktohand 0,0,left ? где 0-Том, другой 0-фрейм фонаря.
Скрипт смогу выложить вечером после работы, дома с ним ковырялся.

alex5995
09.02.2021, 18:07
И скрипт бы посмотреть не помешало бы.

=скрипты фонаря из 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

Melhior
10.02.2021, 14:10
Модель фонаря как вставлена? Как Things? Почему второй параметр у human_linktohand 18? Ведь берется номер фрейма, а не номер оружия.

Если брать этот кусок,
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
а findframe 0,"f_light" это модель фонаря, то должно быть human_linktohand 0, 0, LEFT

alex5995
10.02.2021, 15:09
Модель фонаря как вставлена как Things в BSV6.
Ведь берется номер фрейма, а не номер оружия.
Я пробовал и так и эдак в разных вариантах.
а findframe 0,"f_light" это модель фонаря, то должно быть human_linktohand 0, 0, LEF
Да я и так вроде тоже делал. Ты сам пробовал на практике, у тебя работает?

Melhior
10.02.2021, 15:38
Да я и так вроде тоже делал. Ты сам пробовал на практике, у тебя работает?
Я сигарету давал. Всё работало. Могу предложить такой костыль: В MWE привязываешь модель фонаря к руке. Для этого фонарь размещаешь в руке и в Parent фонаря вместо Primary sector прописываешь Tommy.l_hand. Сохраняешь. А потом в скриптах через frm_seton спрятать.

Правда не уверен будет ли фонарь перемещаться вместе с игроком. Но попробуй. Лично я так привязываю фрейм камеры, а потом скриптом делаю камера лок и фиксирую командблоками и бесконечным циклом.
И получается вот так (первые 16 секунд)
DQtFrv1VTxM

alex5995
10.02.2021, 17:01
Ладно, спасибо, поковыряюсь ещё на досуге. Уж больно нелепо смотрится поднятая рука с лайтом без модельки фонаря. Не понятно только, если возможно прикрепить лайт к руке, то почему нельзя сделать это с предметом.
В принципе идея изначально вставить модель в руку Томми и засетонить фрейм модели на нуль не плоха, но есть маленький нюанс - после загрузки сохранения 0 меняется на 1. И если Томми не будет поднимать руку, то вполне приемлем такой вариант. Но если он будет использовать двуручное оружие, биту, к примеру. Какую картину игрок будет лицезреть? Ладно если фонарь(лайт) включен, полбеды, можно с этим как-то смириться, да и в любом случае видимо придётся. Вот не плохо было бы сделать: если левая рука занята то фонарь(модель) падал бы на пол.

Добавлено через 55 минут
А лучший вариант реализации фонаря - прикрепить лайт на лоб Томми и обойтись без всех этих заморочек.

GOLOD55
19.02.2021, 10:56
если модельки фонаря нет и расчетном месте, то неплохо б ее поискать и проверить что она вообще отрисована в игре(напр сетон1, компас и тп.), а еще может косяк с самой моделью(геометрия не центрована в занозе и получается смещение относительно руки), а еще может нужна хайполимодель Томми(там системные допдумми в кистях).

alex5995
19.02.2021, 14:42
Для меня это всё сложно: "хайполимодель", "системные допдумми в кистях" - тёмный лес для меня. И в Занозе я к сожалению не шарю.
Лайт привязан к левой руке Томми и когда он поднимает руку вместе с рукой позиционируется выше и лайт. Нельзя ли изначально как-то сместить лайт позиционно относительно левой руки повыше на метр-полтора? Проще говоря "убедить лайт" в том, что рука находится выше. Ну как-то так.
Идею реализации фонаря взял из Boz мода.

Abradox
19.02.2021, 16:10
хайполимодель Тома - эта модель, которая используется в катсценах (заставках на игровом движке). Она более детализирована, в ней отдельные глазные яблоки (у обычной модели глаза нарисованы на текстуре головы), кисти рук, на которых раздельные пальцы.

Firefox3860
19.02.2021, 16:39
alex5995, фонарь нужен в руке в определённый момент или на протяжении всей миссии?

upd: понял, в моменте.

Могу предложить такой вариант. Сначала создать дополнительный фрейм для фонаря. В BSV - тип other без скрипта. Эти детекторы в игре невидимы. Надо привязать его жёстко к руке Тома на всё время, прописав ему в Parent строку "Tommy.l_hand" и настроив положение в MWE. Этот объект будет играть роль якоря для модели фонаря, которую в нужный момент надо расположить в его месте. Чтобы расположить один фрейм на месте другого, придётся использовать команды считывания и назначения координат и ротаций. То есть сначала считать место якоря - frm_getworldpos и frm_getworldrot, потом назначить его фонарю - frm_setpos и frm_setrot. Команды со словом "world" нужны, потому что якорь привязан к руке, а место для фонаря надо получить относительно Prim-сектора. после перемещения фонарь надо привязать к якорю командой frm_linkto.

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

Фонарь должен быть именно простой моделью (Building), а не физ. объектом (Things), потому что актор физ. объекта не позволит ему перемещаться в пространстве вместе с фреймом.

alex5995
19.02.2021, 17:27
фонарь нужен в руке в определённый момент или на протяжении всей миссии?
В моменте, когда Том поднимает руку. Естественно, если выбран в инвентаре. Неплохо было-бы если он исчезал(модель, не лайт) при использовании биты, автомата, кулаков тоже.
А лучший вариант реализации фонаря - прикрепить лайт на лоб Томми и обойтись без всех этих заморочек
Или просто повыше на метр, что-бы не использовать скрипт анимации для подсветки поверхностей столов, полок, стеллажей.

Firefox3860
19.02.2021, 17:34
alex5995, а я так и не понял, чем варианты с human_linktohand и тем, чтобы сделать фонарь оружием, не подходят?

А лучший вариант реализации фонаря - прикрепить лайт на лоб Томми и обойтись без всех этих заморочек.Тогда можно просто привязать модель фонаря к тому с заданными координатами и только скрывать и показывать лайт когда надо.

alex5995
19.02.2021, 18:28
Изначально я планировал сделать модель фонаря в виде масляной лампы как в пенумбре или амнезии, так как лайт освещает всё пространство вокруг Г.Г. , т.е. не направленно. Направленный поток света, как это реализовано в Boz моде не освещает стены впереди из-за их больших полигонов(экономия ресурсов?).
чем варианты с human_linktohand и тем, чтобы сделать фонарь оружием, не подходят?
Я не знаю как это сделать на практике ориентируясь по советам твоим, GOLOD55'а и Melhior'а. Надо конечно со всем этим повозиться, но как убирать(визуально) модель из рук при применении двуручного оружия? Скриптом? А если без оружия, на кулачках мочить врагов, с фонарём в руке? Не серьёзно, так можно лампу разбить и врага маслом облить:D:angry:
Тогда можно просто привязать модель фонаря к тому с заданными координатами и только скрывать и показывать лайт когда надо
Так ведь лайт жёстко привязан к руке и в первую очередь важен именно он, а не модель, которая чисто для эстетики и реализма. Координаты неиспользуемого лайта вообще левые и как я понимаю при включении фонаря он перемещается во фрейм руки.
https://mafia-game.ru/forum/imgcache/2021/02/19/scq7pjuxubayxuegjjegxmb.jpg (http://vfl.ru/fotos/af5dbc7f33398397.html)
Нельзя ли сделать, что бы лайт перемещался во фрейм повыше этой самой руки?

Firefox3860
20.02.2021, 16:44
Нельзя ли сделать, что бы лайт перемещался во фрейм повыше этой самой руки?Не понимаю, повыше - это куда? и зачем, если он уже к руке привязан?

alex5995
20.02.2021, 19:17
Я изложу свои суждения по дилетански, не силён я в механике движка игры, уж не обессудь.
Изначально лайт расположен в координатах где-то там... Если мы подобрали фонарь и включили его лайт по скриптовой команде перемещается в руку. Как я понимаю, к кисти руки прикреплён фрейм, который перемещается с этой кистью и моделью в целом в пространстве карты и "тащит" за собой лайт. У фрейма(руки) меняющиеся координаты, программа считывает местоположение руки и задаёт каждые новые координаты лайту. Я это к тому что: обязательно ли фрейм должен быть в кисти руки, почему бы не сместить его по оси "y" (или "z"?) относительно руки на определённую высоту. Ну как бы обхитрить программу. Какая ей разница где находится рука модели.
зачем, если он уже к руке привязан?
Затем что кисть опущенной руки с лайтом находится слишком низко и не освещает поверхности выше метра. Приходится использовать скрипт анимации поднятия руки, что не удобно - персонаж во время проигрывании анимки не управляем.
Firefox3860, что-бы точно понимать суть моих вопросов глянь прохождение Парадонца на ю-тубе, где используется фонарь. Mafia Undertown - Darkness.

Firefox3860
22.02.2021, 01:37
Я это к тому что: обязательно ли фрейм должен быть в кисти руки, почему бы не сместить его по оси "y" (или "z"?) относительно руки на определённую высоту. Ну как бы обхитрить программу. Какая ей разница где находится рука модели.Ну в принципе, да. Можно задать фрейму-якорю любое местоположение относительно руки, и к нему будет привязываться лайт. Только рука будет двигаться при ходьбе, лучше тогда просто к самому тому привязать, чтобы лайт не носило по всему пространству вокруг.

alex5995
22.02.2021, 12:29
Можно задать фрейму-якорю любое местоположение относительно руки, и к нему будет привязываться лайт
лучше тогда просто к самому тому привязать
Вот об этом я и талдычу уже который пост. Не подскажешь, как это сделать практически?

KlassenAS
22.02.2021, 18:20
Вот об этом я и талдычу уже который пост. Не подскажешь, как это сделать практически?
Когда привязываешь фрейм А к фрейму В , то местоположение фрейма В становится нулевыми координатами для фрейма А.
Поэтому просто задаёшь фрейму А координаты командой frm_setpos (или как её там) и это будут координаты фрейма А относительно фрейма В.
После привязывания фрейма, естественно.

Firefox3860
23.02.2021, 20:03
Вот об этом я и талдычу уже который пост. Не подскажешь, как это сделать практически?А у тебя в миссии есть актор Тома в явном виде? Во фрирайде, например, его нет (игра автоматически вставляет). Если есть, то надо сделать так. Сначала загружаешь файл миссии в BSV. Создаёшь объект other без скрипта. Потом открываешь миссию в MWE любой версии, находишь этот фрейм. В окне свойств в строке Parent пишешь ему имя актора Тома. Теперь фрейм привязан к нему, и его координаты отсчитываются от него. Теперь можно задать эти координаты уже как тебе надо, хоть повыше, хоть пониже. По идее, таким образом фрейм должен везде следовать за Томом, сохраняя заданное смещение.

alex5995
23.02.2021, 20:37
у тебя в миссии есть актор Тома в явном виде
Для своих модов я беру чистую сцену их папки "Modding", скачанную из интернета. Уж не знаю, актор Тома здесь в явном виде или игра его автоматически вставляет.
Если есть, то надо сделать так
А если нет, что надо сделать?
таким образом фрейм должен везде следовать за Томом
А как привязать лайт к фрейму, что писать в скрипте вместо "Tommy.l_hand"?

Firefox3860
23.02.2021, 22:02
Для своих модов я беру чистую сцену их папки "Modding", скачанную из интернета.Значит, есть. Там он Tommy называется, стандартно.
А как привязать лайт к фрейму, что писать в скрипте вместо "Tommy.l_hand"?Название того объекта, к которому надо привязать, то есть этого фрейма. Только это не вместо "Tommy.l_hand", а в команде findframe для последующей привязки командой frm_linkto.

правда, я не уверен, сработает ли такая привязка с лайтом. изначально я предполагал, что это будет модель фонаря.

alex5995
23.02.2021, 23:06
Ладненько, с фонарём надеюсь как нибудь разберусь, когда вернусь к этому предмету. В последнее время делаю в максе городские локации - входябельные здания, улицы, заборы и т.п. Когда есть возможность(и желание) всем этим заниматься всё свободное время на это уходит, как-то пока не до фонаря. Или может фонарь стал мне как-бы до фонаря:).
Есть ещё одна проблема, буквально на ровном месте, а именно: не деактивируются скрипты "poster1_2"..."poster1_6" кликая на "poster1_1" в контекстном меню.
Имеется шесть скриптов с одинаковыми координатами. При нажатии кнопки действия(Е) вызываю контекстное меню выбора, где выбираю один из постеров(в данном случае "poster1_1"). После чего остальные скрипты должны деактивироваться, а меню убраться из экрана и стать недоступным. Этого почему-то не происходит. Пробовал всяко, и через эвенты тоже - результат нулевой. Что я делаю не так?

dim_act 8
dim_flt 1

findactor 0,"poster1_1"
findactor 1,"Tommy"
findactor 2, "poster1end"
findactor 3,"poster1_2"
findactor 4,"poster1_3"
findactor 5,"poster1_4"
findactor 6,"poster1_5"
findactor 7,"poster1_6"

label 1
detector_waitforuse 99970004
///detector_setsignal 0, 1
mission_objectivesclear
mission_objectives 99970000
wait 200
setevent 2, 1, 2 /с эвентами тоже не работает/
wait 300
act_setstate 3, inactive
act_setstate 4, inactive
act_setstate 5, inactive
act_setstate 6, inactive
act_setstate 7, inactive

--или скриптом /poster1end/--

dim_act 6
dim_flt 1

findactor 0, "poster1_1"
findactor 1, "poster1_2"
findactor 2, "poster1_3"
findactor 3, "poster1_4"
findactor 4, "poster1_5"
findactor 5, "poster1_6"

label 101
goto 101

event 1
wait 300
///act_setstate 0, inactive
act_setstate 1, inactive
act_setstate 2, inactive
act_setstate 3, inactive
act_setstate 4, inactive
act_setstate 5, inactive

GOLOD55
28.02.2021, 23:23
а может у фонаря не настроен тип_удерживания в предметах.деф.
-
уж не помню подробности с убиранием юзалок..но на крайняк чтоб убрать юзалку можно переместить(напр на -10м по вертикали), и чтоб обновить ее положение нужно делать act_setstate хх, active. тогда юзалка сместится на 10м вниз и станет недоступной(ибо у нее радиус порядка метра).

alex5995
01.03.2021, 11:43
может у фонаря не настроен тип_удерживания в предметах.деф.
В predmety.def много неизвестных параметров, может там нужно как-то настроить тип удержания предмета. Все мои добавленные предметы(ключи, девайсы и т.д. ) берутся либо в правую руку, либо в обе руки, либо сразу в инвентарь - здесь всё понятно.
юзалка сместится на 10м вниз и станет недоступной
Вроде скрипты в отличие от физ. объектов не смещаюся по команде др. скрипта. Да и зачем такие сложности. Что странно и не понятно , почему не работает act_setstate хх, inactive. Никогда такой проблемы не было, вроде всё элементарно. Деактивировать пробовал всяко: нажатием клавиши, изменением хп нпс, с эвентами и без. Может проблема в том, что эти скрипты находятся примерно в одних координатах. Но, если ты видел скрипты кодового замка в моём моде, там всё работало как надо.

alex5995
03.03.2021, 19:53
GOLOD55, я и не знал, что неактивный скрипт тоже юзается. Спасибо за инфу.
Деактивировать пробовал всяко
Может я где-то до этого напартачил и ошибка моя в чём-то другом, но поменяв act_setstate хх, OFF на act_setstate хх, off деактивация скриптов заработала, только по прежнему юзаются.
уж не помню подробности с убиранием юзалок
Может вспомнишь как убрать эти юзалки?

GOLOD55
05.03.2021, 00:22
а если после off-ов сесть в тачку и выйти, то юзалки по-прежнему активны?
А то по идее статусы юзалок обновляются при ентом.

Как убить юзалку я не помню(и хз можно ли; надо либо плеером ее юзать, либо ..енеми натравить попробовать лол(через enemy_use_detector)), но переместить в недоступное место и обновить - вполне надежно.

alex5995
05.03.2021, 12:12
а если после off-ов сесть в тачку и выйти
В моде, над которым щас работаю тачек нет, да и юзалки находятся в комнатах. Это не в фрирайде, карту локации леплю в максе и ставлю на чистую сцену. Енеми натравить попробовать тоже не вариант. Видимо придётся отказаться от этой фишки вообще, либо пользовать как есть, что не совсем комильфо. И что не понятно: в моём кодовом замке ненужные юзалки убирались после правильного подбора кода(andertown mod, dungeon). Надо будет покопаться в этих скриптах, давно их написал, не помню что да как. Ладно, спасибо за содействие.

GOLOD55
14.03.2021, 23:39
а шо если actor_delete? оно суровее.

alex5995
15.03.2021, 14:20
пробовал, тоже бестолку

CurtisTea
04.05.2021, 19:24
На моей памяти даже при off'е скрипта юзалка все равно оставалась и исчезала только когда её заюзаешь. И когда я такие механики писал то делал именно как Голод описал выше: прячешь куда-то ненужную юзалку (её актор) и активишь ещё раз чтоб обновить её (юзалки) местоположение. Я кажется перед этим ещё и инактивил её чтоб сработало... не помню точно

alex5995
07.05.2021, 10:06
CurtisTea, Идея в целом такова. На стене постер с отсылкой на известную игру. Нужно с одной попытки угадать к какой именно игре относится данная отсылка. При нажатии кнопки действия на постер появляется меню выбора из 10 названий разных игр. Вторым кликом выбираем строку в меню. Далее, независимо от результата постер не должен юзаться. Т.е. не должно быть второй попытки, иначе какой смысл во всём этом.
https://disk.yandex.ru/i/ye3262aLExOkiw

CurtisTea
07.05.2021, 18:49
Отлично, значит каждый детектор при его юзании должен делает что ты там задумал, а потом ныкать все детекторы (в том числе и себя) куда-то в недоступное место и активить их заново.

alex5995
08.05.2021, 14:54
потом ныкать все детекторы (в том числе и себя) куда-то в недоступное место
Да я и это пробовал, не ныкаются, на месте остаются. И я не понял, зачем их активировать, они же и так активны?

CurtisTea
09.05.2021, 05:54
зачем их активировать, они же и так активны
Ты их заново активишь на новом месте. Если не работает попробуй сперва инактивить, можешь ещё обновить местоположение через actorupdateplacement. Короче дай игре понять что ты сдвинул эти детекторы и что их надо заактивить уже в другом месте.

alex5995
09.05.2021, 07:21
А вот команду actorupdateplacement я не применял, насколько помнится. Ладно, спасибо, займусь этим позже. Сейчас не до скриптов, с картой города вожусь в Максе, столько комнат и каждую надо как-то обставить. Гемор ещё тот.
И всё же не понимаю зачем заново активить детекторы, они же больше не нужны. Да и движок не помешало бы разгрузить от лишних скриптов.

CurtisTea
10.05.2021, 12:16
Если ты их заново не заактивишь они останутся на том месте где были. Ну и ничего тебе не мешает выключить их после успешного перемещения)

GOLOD55
18.05.2021, 01:31
активирование обновляет местоположение юзалки сдвинутого детектора, ога, шо ж непонятного.

alex5995
31.05.2021, 19:13
Привет всем. Может кто-нибудь помочь мне разрешить один вопрос?
Нужно придать модели человека позу спящего за столом. В энциклопедии анимаций ничего подходящего не нашёл.

Abradox
31.05.2021, 19:22
В энциклопедии анимаций ничего подходящего не нашёл.А как же поза водителя убитого за рулем или пассажира?

alex5995
31.05.2021, 19:39
А вот там я и не смотрел. Короче, идея такова. Заходим в комнату - за столом застрелившийся полицейский, лужа крови, предсмертная записка.
Убитый за рулём или пассажир в этой ситуации будут выглядеть более-менее естественно?

Firefox3860
31.05.2021, 19:49
Вспомнилась подходящая анимация. В баре сальери когда сидят люди за стойкой (например, 16 миссия), если их побить, то упадут на стойку руками и лицом. Надо только как-то определить имя анимации.

alex5995
31.05.2021, 21:04
Надо только как-то определить имя анимации
В банке 19 миссии, если мы убиваем сидящих клерков, они тоже принимают подходящую позу. Знать бы, что это за анимация. В каком-то моде в баре морелло тоже что-то подобное видел.

Добавлено через 45 минут
Статическая анимация убитых нпс за столом наверняка дефолтная и заложена в движок, вряд ли она нам доступна.
Есть мысль дать персу обычную сидячую анимацию, а при входе в комнату поставить скрипт его умерщвления. Но не факт что модель примет правильную позицию по координате высоты, т.е. не провалится под столешницу и не воспарит над столом. При трагизме данного игрового момента это будет выглядеть нелепо.

Firefox3860
31.05.2021, 23:27
а, блин, наверняка же названия этих анимаций прописаны в скриптах самих людей, которые их используют. посмотри в 16 миссии скрипты людей, сидящих за барной стойкой.

alex5995
01.06.2021, 01:50
Точно, есть такое дело. Только слишком низко они пластаются, с такой анимкой мой мент точно в стол провалится. Видимо придётся коллизию под него подложить, чтоб повыше сидел. А в принципе то что надо, достаточно реалистично. Спасибо за инфу.

alex5995
01.06.2021, 07:22
Кто знает, по какому принципу определяется последовательность ID номеров в меню выбора? Как бы я не менял местами скрипты правильный ответ всегда оказывается наверху списка, и общий порядок тоже не меняется.
https://mafia-game.ru/forum/imgcache/2021/06/01/rbdrewcguhvzrpvv0cgcwg.jpg (http://vfl.ru/fotos/4a0d2d7334661564.html)

Напомню суть темы. На стене постер с отсылкой на известную игру. Нужно с одной попытки угадать к какой именно игре относится данная отсылка. При нажатии кнопки действия на постер появляется меню выбора из 6 названий разных игр. Далее выбираем строку в меню.

KlassenAS
01.06.2021, 13:49
Может, имеют значения имена скрипт-объектов? По алфавиту, например.

alex5995
01.06.2021, 16:12
Добавлено через 5 минут
ожет, имеют значения имена скрипт-объектов? По алфавиту, например.
Ну это было бы слишком просто. Как я понял здесь имеет значение количество зарезервированных объектов и переменных в скрипте. В главном скрипте на одного актора больше и есть переменная, потому и стоит первым номером. И наверняка есть ещё какой-то влияющий фактор, если судить по моим экспериментам. Я уравнял скрипты по количеству объектов, но идеала не достиг. На одном постере вроде всё норм, на другом бардак, с каждым новым заходом строки меняют своё местоположение.

alex5995
04.06.2021, 11:50
Ещё вопрос. Какой скриптовой командой можно восстановить работу скрипта с евентом, т.е. сбросить его в первоначальное состояние после разового применения? Именно отдельно взятым скриптом, а не автоматом и не перезагрузкой карты.

dim_act 2
dim_flt 2

findactor 0, "Tommy"
findactor 1, "gates_man"

label 101
goto 101

event 100
wait 200
human_getproperty 1, 0, Energy
if flt[0]=150,-1,2
human_getproperty 1,0,Energy
let flt[0]=flt[0]+50
human_setproperty 1,flt[0],Energy

label 101
goto 101

label 2
wait 200
end

Firefox3860
18.06.2021, 21:20
return

User
25.09.2021, 13:41
Нужен скрипт на фиксированную камеру при управлении автомобилем, кажись такая фича была в древнем "такси_моде", может у кого-нибудь есть что-то похожее?

moskvichovskiy
09.10.2023, 01:02
Привет всем. Подскажите скрипт включение - выключения грамофона, а то у меня постоянно играет, а хочется взаимодействовать с мафоном. Спасибо)

https://youtu.be/lzCkB8-Zlhs?si=HdoB7_EQ2iFYeV97

Firefox3860
09.10.2023, 02:51
moskvichovskiy, если не путаю, то в миссии по краже "сигар" из порта можно в одном деревянном строении, где охранники сидят, включить или выключить граммофон. Вот в его скрипте посмотри.

А мафон у тебя не слишком современный? :)

Abradox
09.10.2023, 09:01
Странно, то что радио работает строго в небольшой области вокруг него.
И магнитофон 90-х, по которому новости 70-х годов...

moskvichovskiy
09.10.2023, 09:23
moskvichovskiy, если не путаю, то в миссии по краже "сигар" из порта можно в одном деревянном строении, где охранники сидят, включить или выключить граммофон. Вот в его скрипте посмотри.

А мафон у тебя не слишком современный? :)

Хорошо посмотрю спасибо. Да запись можно поменять в любой момент, просто скачал почти первую попавшуюся запись радио, чисто для видео. А по поводу мафона, очень уж скан понравился)

Добавлено через 3 минуты
Странно, то что радио работает строго в небольшой области вокруг него.
И магнитофон 90-х, по которому новости 70-х годов...

Я в bsv так поставил дистанцию 5. А запись радио поменяю это не сложно. Цели сделать СССР у меня нет, так чисто карта по фану. Скорей что-то думерское)

Добавлено через 4 минуты
Странно, то что радио работает строго в небольшой области вокруг него.
И магнитофон 90-х, по которому новости 70-х годов...

А плавность звука по мере приближения или удаления от объекта я хз как сделать.

AngryBabka
12.10.2023, 11:39
moskvichovskiy, насчет плавности звука - проверь чтобы запись в моно была. В стерео она будет только так работать (резко и во всю громкость)

alex5995
03.11.2024, 04:53
Всем привет. Подскажите пожалуйста как сделать, когда Томми садится в тачку активизировался бы скрипт.

act_setstate -1, inactive

dim_act 2
dim_flt 5

findactor 0, "Tommy"
findactor 1, "stream27"

label 1
wait 500
stream_create 0, "sounds/music/stream27.ogg"
stream_play 0
stream_setloop 0, 20

label 2
getactorsdist 0, 1, 1
if flt[1] < 80, -1, 2
stream_fadevol 0, 3000, 1, 0
wait 3000
stream_stop 0
stream_destroy 0

Melhior
03.11.2024, 17:24
Всем привет. Подскажите пожалуйста как сделать, когда Томми садится в тачку активизировался бы скрипт.

act_setstate -1, inactive

dim_act 2
dim_flt 5

findactor 0, "Tommy"
findactor 1, "stream27"

label 1
wait 500
stream_create 0, "sounds/music/stream27.ogg"
stream_play 0
stream_setloop 0, 20

label 2
getactorsdist 0, 1, 1
if flt[1] < 80, -1, 2
stream_fadevol 0, 3000, 1, 0
wait 3000
stream_stop 0
stream_destroy 0

compareownerwithex ww, xx, yy, zz

проверить, сидит ли чел ww в тачке xx или нет.

Если актор ww в машине хх мы можем перенестись в другой Label zz если значение true
или мы переходим в другой Label zz при значении false

ww - актор проверяемого чела
xx - актор авто
yy ==Label в который переходим при значении true(выполнено)
zz == Label в который переходим при значении false(невыполнено)

alex5995
03.11.2024, 18:27
Разобрался со скриптом.

dim_act 3
dim_flt 4

findactor 0,"Tommy"
///findactor 1,"tommyho auto"
findactor 1,"car_home"
findactor 2,"stream1"

label 101
wait 1000
compareownerwithex 0, 1, -1, 101
wait 2000
act_setstate 2, active
wait 1000
end

В скрипте нужно указать конкретную тачку со своим названием. С "findactor 1,"tommyho auto" скрипт почему-то не работает. Значит если поменять тачку на любую другую музон звучать не будет.

alex5995
07.02.2025, 12:04
Подскажите, пожалуйста, скрипт для увеличения дальности прорисовки.

Abradox
07.02.2025, 15:59
Сам скрипт есть в модификации Mafia.WidescreenFix.asi (https://cloud.mail.ru/public/KZ73/JtCqiBoia) я не знаю чем его посмотреть.