Главная Форум Файлы
Справка Сообщество Календарь Сообщения за день Поиск

Вернуться   Mafia-Game Forum > Mafia: The City Of Lost Heaven > Скриптинг
Расширенный поиск

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2020, 10:37   #1
Kaiser вне форума Kaiser
Аватар для Kaiser
Mafia Modding Crew
Сообщений: 229
Репутация: 242
Kaiser has a spectacular aura about Kaiser has a spectacular aura about Kaiser has a spectacular aura about
Judge
Информация о репутации (Kaiser)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Kaiser / 242
Judge
159
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Ребята! Коллеги! Друзья!

Помогите разобраться со скриптом пожалуйста.

Намедни мне Фаерфокс прислал один скрипт, который к сожалению, нормально отказался работать. И мы не можем понять почему.

На деле происходит следующее:

1. Я сажусь в авто, городская музыка выключается и включается радио.
2. Я выхожу из авто, радио продолжает играть, хотя должно выключаться.
3. Я снова сажусь в авто и радио начинает играть сначала.

Фактически, радио должно включаться при посадке в авто и выключаться при выходе из него.

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


dim_act 2
dim_frm 1
dim_flt 5
findactor 0, "Tommy"
findactor 1, "fire"

let flt[0]=0

label 1
wait 100
compareownerwithex 0, 1, 101, 102

label 101
if flt[0]=1,-,1
citymusic_off
stream_create 0, "sounds\music\fireradio.ogg"
stream_play 0
wait 2000
let flt[0]=0
goto 1

label 102
if flt[0]=0,-,1
stream_stop 0
citymusic_on
wait 2000
let flt[0]=1
goto 1
[свернуть]
__________________
Моя моддинговая страничка: https://vk.com/kaiser_edition
цитата
Старый 04.10.2020, 11:53   #2
KlassenAS вне форума KlassenAS
Аватар для KlassenAS
Senior Member
Сообщений: 341
Репутация: 287
KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough
Enforcer
Информация о репутации (KlassenAS)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
KlassenAS / 287
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Цитата:
Сообщение от Kaiser Посмотреть сообщение
Ребята! Коллеги! Друзья!
Помогите разобраться со скриптом пожалуйста.
У тебя проблема с присвоением значения переменой flt[0]
Проследи логику:
Переменная равна 0
Далее проверяем наличие Тома в машине.
И смотрим значение переменной.
1 Томми в машине:
Если переменная 0 - музыка не играет, включить и присвоить ей 1
если переменная 1 - музыка уже играет, ничего делать не нужно

2 Томми не в машине
Если переменная 0 - музыка не играет, ничего делать не нужно
Если переменная 1 - выключить музыку и присвоить переменной 0

И вот в этом присвоении переменных, вроде, путаница затесалась.

Во-первых, если я не ошибаюсь, номер аудиопотока может быть одновременно и переменной.
Тогда stream_create 0 и stream_play 0 обращаются к переменной flt[0], используемой для логики включения/выключения. Возникает конфликт, ведь значение переменной меняется и ты пытаешься остановить не тот аудиопоток, который запустил.

Попробуй использовать вторую переменную:
let flt[1]=0

И через неё упралять аудиопотоком:
stream_create 1
stream_play 1
stream_stop 1

Должно помочь, вроде.

Также стоит проверить сравнение условий включения/выключения

Под лабелом 101 сделай
if flt[0]=0,-,1
let flt[0]=1

Под лабелом 102 сделай
if flt[0]=1,-,1
let flt[0]=0

Так больше будет соответствовать логике скрипта.

Вместо findactor nn, "Tommy" лучше использовать getactiveplayer nn, эта команда универсальна и не привязана к используемой модели персонажа.

И ещё я не понял, что это за актор "fire"?
У тебя радио будет включатся только если Томми садится в одну конкретную машину?
Почему бы, в принципе, не проверить его нахождение в любой машине?
Используешь ещё одну переменную.
Присваиваешь ей вначале скрипта let flt[2]=-1
И запрашиваешь у игры номер сиденья в машине, на котором сидит Томми:
Human_GetSeatidx 0,2 (актор чела, переменная с номером сиденья)
И дальше проверяешь значение переменной:
If Flt[2]=-1,102,101
Если переменная осталась равна -1, чел не в машине, идём на метку 102
Если переменная изменилась, чел в машине, идём на метку 101.
Ладно, я тебе щас по-своему скрипт напишу, и всё )
И фреймы в скрипте не используются, их можно не объявлять

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



Dim_Act 2 //Два актора
Dim_Flt 3 //Три переменных
GetActivePlayer 0 //Получаем актора игрока

Let Flt[0]=0 //Переменная для логики вкл/выкл
Let Flt[1]=0 //Переменная для аудиопотока
Let Flt[2]=-1 //Переменная для сидения в машине

Label CHECK
Wait 100
Human_GetSeatIdx 0,2 //Запрашиваем номер сиденья
If Flt[2]=-1,CAR_OUT,-1 //Если получили, идём дальше, если не получили, идём к метке CAR_OUT

If Flt[0]=0,-,CHECK //Если музыка не играет, идём дальше, иначе возвращаемся к проверке
CityMusic_Off
Stream_Create 1, "sounds\music\fireradio.ogg"
Stream_Play 1
Let Flt[0]=1 //Запоминаем, что музыка играет
Wait 2000 //Ждём
GoTo CHECK //Возвращаемся к проверке

Label CAR_OUT //Если не в машине
If Flt[0]=1,-,CHECK //Если музыка играет, идём дальше, иначе возвращаемся к проверке
Stream_Stop 1
CityMusic_On
Let Flt[0]=0 //Запоминаем, что музыка не играет
Wait 2000 //Ждём
GoTo CHECK //Возвращаемся к проверке

[свернуть]


Вроде, всё верно, проверяй )

А ещё можно расширить скрипт и рандомно воспроизводить одну из нескольких аудиозаписей. Хоть сто песен можно в скрипт воткнуть. Только затрахаешься строки кода копипастить и имена файлов прописывать )

Последний раз редактировалось KlassenAS; 04.10.2020 в 14:02.
цитата
Поблагодарили: 2
Firefox3860 (04.10.2020), Kaiser (04.10.2020)
Старый 04.10.2020, 15:17   #3
Firefox3860 вне форума Firefox3860
Аватар для Firefox3860
Mafia Modding Crew
Сообщений: 687
Репутация: 773
Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold Firefox3860 is a splendid one to behold
Priest
Информация о репутации (Firefox3860)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
Enforcer
260
Firefox3860 / 773
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
KlassenAS, Спасибо за хороший разбор логики. Видимо, основная проблема была в конфликте переменной потока с логической переменной. Я этого не заметил.

Ещё круто, что ты показал команду Human_GetSeatidx. Наверное, это лучший способ отслеживания сидения чела в любой машине

Последний раз редактировалось Firefox3860; 04.10.2020 в 15:19.
цитата
Поблагодарили: 2
Kaiser (04.10.2020), KlassenAS (04.10.2020)
Старый 04.10.2020, 15:21   #4
KlassenAS вне форума KlassenAS
Аватар для KlassenAS
Senior Member
Сообщений: 341
Репутация: 287
KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough
Enforcer
Информация о репутации (KlassenAS)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
KlassenAS / 287
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Цитата:
Сообщение от Firefox3860 Посмотреть сообщение
Ещё круто, что ты покакзал команду Human_GetSeatidx. Наверное, это лучший способ отслеживания сидения чела в любой машине
Я этот способ использовал, когда писал систему скриптов для Sity Bars +, чтобы тачка, припаркованная возле загружаемой локации, типа отеля или порта, при возвращении была на месте.

А подсказал мне этот способ GOLOD55, за что ему огромное спасибо! )

Последний раз редактировалось KlassenAS; 04.10.2020 в 15:33.
цитата
Поблагодарил:
Kaiser (04.10.2020)
Старый 04.10.2020, 18:24   #5
GOLOD55 вне форума GOLOD55
VIP
Сообщений: 100
Репутация: 152
GOLOD55 has a spectacular aura about GOLOD55 has a spectacular aura about
Thug
Информация о репутации (GOLOD55)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
GOLOD55 / 152
Thug
100
Judge
159
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
возможно, саунд_стрим лучше вдобавок хорошенько отдестроить после выключения, а то у мафы бажок был...что-то типа перезапуска стрима при юзании хнопички ESC.
цитата
Поблагодарили: 3
Abradox (22.10.2020), Kaiser (04.10.2020), KlassenAS (04.10.2020)
Старый 04.10.2020, 18:41   #6
Kaiser вне форума Kaiser
Аватар для Kaiser
Mafia Modding Crew
Сообщений: 229
Репутация: 242
Kaiser has a spectacular aura about Kaiser has a spectacular aura about Kaiser has a spectacular aura about
Judge
Информация о репутации (Kaiser)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Kaiser / 242
Judge
159
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
2 KlassenAS

Спасибо огромное, поставил твой скрипт, все прекрасно работает. Только вот оно работает во всех автомобилях, а мне бы надо в одном. Тогда мне гетактивплейер просто заменить на нужный мне файндактор?
__________________
Моя моддинговая страничка: https://vk.com/kaiser_edition
цитата
Поблагодарил:
KlassenAS (04.10.2020)
Старый 04.10.2020, 19:53   #7
KlassenAS вне форума KlassenAS
Аватар для KlassenAS
Senior Member
Сообщений: 341
Репутация: 287
KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough
Enforcer
Информация о репутации (KlassenAS)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
KlassenAS / 287
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Цитата:
Сообщение от Kaiser Посмотреть сообщение
Только вот оно работает во всех автомобилях, а мне бы надо в одном. Тогда мне гетактивплейер просто заменить на нужный мне файндактор?
GetActivePlayer 0 - это поиск управляемого игроком персонажа. К машине отношения не имеет.
А тебе нужно конкретное авто.
Я сделал, чтобы работало во всех, потому, что посчитал, что так лучше )
Тогда сделаем с одной:

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



Dim_Act 2 //Два актора
Dim_Flt 2 //Две переменных
GetActivePlayer 0 //Получаем актора игрока
FindActor 1, "fire" //Получаем актор с нужной машиной

Let Flt [0] = 0 //Переменная для логики вкл/выкл
Let Flt [1] = 0 //Переменная для аудиопотока

Label CHECK
Wait 100
CompareOwnerWithEx 0, 1, -, CAR_OUT //Проверяем, сидит ли игрок в конкретной машине, если да, идём дальше, если нет, идём к метке CAR_OUT

If Flt [0] = 0, -, CHECK //Если музыка не играет, идём дальше, иначе возвращаемся к проверке
CityMusic_Off
Stream_Create 1, "sounds\music\fireradio.ogg"
Stream_Play 1
Let Flt [0] = 1 //Запоминаем, что музыка играет
Wait 2000 //Ждём
GoTo CHECK //Возвращаемся к проверке

Label CAR_OUT //Если не в машине
If Flt [0] = 1, -, CHECK //Если музыка играет, идём дальше, иначе возвращаемся к проверке
Stream_Stop 1
Stream_Destroy 1 // Уничтожаем аудиопоток, как посоветовал GOLOD55
CityMusic_On
Let Flt [0] = 0 //Запоминаем, что музыка не играет
Wait 2000 //Ждём
GoTo CHECK //Возвращаемся к проверке

[свернуть]

Последний раз редактировалось KlassenAS; 04.10.2020 в 19:54.
цитата
Поблагодарил:
Kaiser (04.10.2020)
Старый 04.10.2020, 20:06   #8
Kaiser вне форума Kaiser
Аватар для Kaiser
Mafia Modding Crew
Сообщений: 229
Репутация: 242
Kaiser has a spectacular aura about Kaiser has a spectacular aura about Kaiser has a spectacular aura about
Judge
Информация о репутации (Kaiser)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Kaiser / 242
Judge
159
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
2 KlassenAS

Некорректно работает. Срабатывает в одной машине, но! Садишься в машине запускается первая секунда трека, после чего выключается. После чего опять включается на секунду и так по кругу.

Причем, когда выходишь из машины, тогда начинает проигрываться нормально.
__________________
Моя моддинговая страничка: https://vk.com/kaiser_edition

Последний раз редактировалось Kaiser; 04.10.2020 в 20:07.
цитата
Старый 04.10.2020, 20:15   #9
KlassenAS вне форума KlassenAS
Аватар для KlassenAS
Senior Member
Сообщений: 341
Репутация: 287
KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough KlassenAS is a jewel in the rough
Enforcer
Информация о репутации (KlassenAS)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Judge
159
KlassenAS / 287
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Цитата:
Сообщение от Kaiser Посмотреть сообщение
2 KlassenAS

Некорректно работает. Срабатывает в одной машине, но! Садишься в машине запускается первая секунда трека, после чего выключается. После чего опять включается на секунду и так по кругу.

Причем, когда выходишь из машины, тогда начинает проигрываться нормально.
Хз, может, опечатку допустил, или движку пробелы мои в скриптах не понравились.
Убрал лишнее, пробуем ещё раз:

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



Dim_Act 2
Dim_Flt 2
GetActivePlayer 0
FindActor 1, "fire"

Let Flt[0]=0
Let Flt[1]=0

Label CHECK
Wait 100
CompareOwnerWithEx 0,1,-,CAR_OUT

If Flt[0]=0,-,CHECK
CityMusic_Off
Stream_Create 1, "sounds\music\fireradio.ogg"
Stream_Play 1
Let Flt[0]=1
Wait 2000
GoTo CHECK

Label CAR_OUT
If Flt[0]=1,-,CHECK
Stream_Stop 1
Stream_Destroy 1
CityMusic_On
Let Flt[0]=0
Wait 2000
GoTo CHECK

[свернуть]

Последний раз редактировалось KlassenAS; 04.10.2020 в 20:19.
цитата
Поблагодарил:
Kaiser (04.10.2020)
Старый 04.10.2020, 20:22   #10
Kaiser вне форума Kaiser
Аватар для Kaiser
Mafia Modding Crew
Сообщений: 229
Репутация: 242
Kaiser has a spectacular aura about Kaiser has a spectacular aura about Kaiser has a spectacular aura about
Judge
Информация о репутации (Kaiser)
×
За активное участие в жизни форума и помощь пользователям вы можете получить очки репутации. За определённое количество очков репутации вам будет присвоенно соответствующее звание. Полученное звание всегда будет отображаться в нижней части области Вашего профиля, слева от сообщения.
Detective
0
Gangster
55
Thug
100
Kaiser / 242
Judge
159
Enforcer
260
Priest
396
Snitch
780
Hitman
800
Councilor
1200
Deputy
2501
Overseer
4896
Press
6020
Don
20000
Пробежался по скрипту, вроде он без изменений. Что принципиально изменено?
__________________
Моя моддинговая страничка: https://vk.com/kaiser_edition
цитата
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

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

Регистрация
×
Чтобы оставлять на форуме Mafia-Game Forum сообщения, необходимо сначала зарегистрироваться.
Пожалуйста, укажите ваше имя пользователя, адрес электронной почты и прочую обязательную информацию о себе в форме ниже.
Имя:
Пароль / Адрес электронной почты
Пароль:
Подтвердите пароль:
Адрес электронной почты:
Подтвердите адрес:
Реферер
Если вы пришли на этот форум по совету одного из участников, то, пожалуйста, введите его имя пользователя.
Реферер:
Время на форуме может быть выставлено в соответствии с тем, где вы находитесь. Выберите свой часовой пояс из списка ниже.
Учитывать переход на летнее или зимнее время (DST).
Получать электронные письма
Время от времени администрация может посылать вам сообщения по электронной почте.

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

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

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