![]() |
Цитата:
Return возвращает управление в место вызова процелуры, независимо от того, откуда она была вызвана, да? А в чём отличие GoSub от goto? |
Что ж за непруха, у меня оказывается версия мафии 1.1 :fp: если подменить екзешник заработает или надо другую мафу качать!?
GoSub возвращает в тоже место скрипта через ретурн ;) |
Цитата:
Цитата:
Цитата:
А GoSub - переход с возвратом и используется вместе с Return. Всё становится проще и не надо огород городить. Причём, из под метки, переход на которую вызван оператором GoSub, можно тоже с помощью этого оператора перейти на другую процедуру, а оттуда на третью и т.д., и движок в многочисленных Return не запутается, я проверил. Можно мутить "матрешку" с рекурсивным вызовом процедур. Если внимательно посмотришь скрипт, у меня там есть такое. Цитата:
Там в инсталляторе есть выбор версии игры. Они знают, что почём ) Я, пока что, только в скриптописании более-менее разобрался. UPD: Нашёл ошибку. Сейчас заново буду архивы перезаливать. Цитата:
UPD2: Вот теперь похоже, что всё работает ) Ver. 1.1 https://drive.google.com/file/d/1A3I...ew?usp=sharing Ver. 1.2 https://drive.google.com/file/d/1bkU...ew?usp=sharing Ver. 2.0 https://drive.google.com/file/d/1PQW...ew?usp=sharing Ver. 2.1 https://drive.google.com/file/d/1lx1...ew?usp=sharing Хотя я допускаю, что ещё могут возникнуть вопросы к аудиофайлам. |
KlassenAS, Круто, собрал :D А я не понял про v2.0, там написано, что на первой станции ориг. музыка, а в скрипте и в папке radio там файлы от 4 станции. Это как?
|
Цитата:
Я ж копировал из версии 2.1 Опять перезаливать ) В этой версии аудиофайлы чисто для иллюстрации работы скрипта. При отсутствующих файлах скрипт нормально работать не будет. UPD: Исправил, перезалил, заменил ссылку. У меня есть ещё подозрение, что некоторые mp3 игра не понимает и воспроизводит вместо них тишину. Надо проверить и пошаманить над форматом, если что. |
Цитата:
Я правильно понимаю, версия 2.0 отличается от версии 2.1 тем что в ней нет оригинальной музыки из Мафии и треки из 3-х радиостанций разбиты на 4 радиостанции по 15 штук? Добавлено через 21 минуту Цитата:
Могу предложить попробовать exe отверсии 1.2 - https://dropmefiles.com/AOM8W Game.exe наверное от версии 1.0 - https://dropmefiles.com/i1JqV |
Цитата:
Наличие треков в папке необходимо просто потому, что без них стабильная работа скрипта не гарантирована. А там уже пусть пользователь заменяет их своими записями, по вкусу. |
Цитата:
|
Abradox, я не допёр, а нафига я извлекал блюз Cab Calloway "St James Infirmary Blues" из того видео и добавлял его в четвёртую радиостанцию, если эта песня у нас уже есть в "Radio Definitive"?
Трек 01-22 Кстати, оказалось, что именно его 03-26 игра и не воспроизводит, скрипт его после ожидания пропускает и запускает следующий. Можем сделать так: Раз эта песня уже есть в Radio Definitive, то выбери, какой вариант тебе больше нравится, из дефинитива или из видео. Если из видео, то я его конвертирую в ogg и заменю им дефинитивовский. Забавно, оказывается, в нём не был удалён один из тэгов. После удаления игра стала его воспроизводить нормально. Но это не отменяет того, что эта песня у нас в двух экземплярах. |
Ну и пусть в двух экземплярах, ничего страшного. Они немного отличаются, да и могут ведь на разных станциях одинаковые композиции появляться :)
Abradox, а у тебя wav-файлы на первой станции воспроизводятся? |
Цитата:
Тогда сейчас заново заархивирую с исправленным треком и снова перезалью. Как ни стараюсь, больше не нахожу, к чему придраться. UPD: Обновил архивы, перезалил, обновил ссылки для версий 2.1 и 2.0 Ждём день, если больше никто ни до чего не докопается, и обойдётся без исправлений, то оформим релиз. UPD: Цитата:
Сможешь отслеживать номера воспроизводимых треков. Получишь точный ответ на вопрос. У меня всё работает. Кстати, я только что снова архивы 2.0 и 2.1 обновил ) UPD: У меня родился коварный план: Что, если запоминать последние пять машин, в которые садился Томми, и запоминать состояние радио в этих машинах. Номер активной радиостанции или выкл, номера треков, их позиции, и если Томми повторно садится в одну из этих машин, то восстанавливать их? А когда Томми лезет в какую-то новую машину, не ту, в которую сел первой в начале миссии, и не в ту, в которой был в последний раз, то присваивать радио рандомное состояние. Всё это в рамках одной миссии, естественно. При переходе в новую миссию или при загрузке сейва всё будет сбрасываться. Элемент реализьма ) |
Цитата:
Цитата:
Цитата:
|
Я не знал что она уже есть в Mafia Defenitive Edition :D
Если хочешь, то можешь заменить ее на другой трек, из тех что мы отбраковали ранее, или можешь оставить т.к. они всё-таки отличаются. Цитата:
Добавлено через 3 минуты Цитата:
Я только за, крутой мод получается. |
Цитата:
Может, сконвертировать их, нафиг, в ogg да кинуть в папку? Тогда точно проблем не будет. Цитата:
Исправлено. Цитата:
В моём злом уме уже зреет жуткая логика замысловатого алгоритма.:devil: Цитата:
Я её оставил. Цитата:
|
Странно, почему у меня работают wav-файлы, а у Firefox3860 нет? :hz:
|
Цитата:
У меня версия 1.2 репак от R.G. Element Arts. Тоже не понимаю. Загадка природы. Жумбактас! |
У меня 1.0 обычная, английская.
А у вас sounds не распакованы? Щас положил Coucou из dta в sounds - заиграла как следует. Получается, игра смотрит в dta только если путь указывает на папку music? |
У меня тоже версия 1.2 (steam) и папка sounds распакована.
|
У меня распакована только sounds/music
В папке sounds лежат только звуки оружия из сборки модов. Может, это у тебя особенность работы версии 1.0? Попробуй для разнообразия поставить ещё 1.2 и сравнить. С другой стороны, у нас и так уже есть ограничения по версиям игры, связанные с патчером. Не вижу смысла заставлять игроков выбирать только версию 1.2 Думаю, лучше положить эти файлы в папку radio, чтобы игра к архивам не обращалась. Цитата:
Сути это, конечно, не меняет. Без разницы, присваивать значение пяти переменным, или 50. Главное - логика процесса. |
Понятно. А ну и пусть тогда не воспроизводятся, я всё равно не хотел их в скрипт добавлять :)
|
Написал процедуру, чтобы скрипт помнил последние девять тачек, в которых побывал Томми и радиостанции в них.
Также, теперь в каждой тачке, которая не первая, радиостанция или выкл задаются рандомно. Перезалил архивы, обновил ссылки для 2.0 и 2.1. Сам скрипт, если кому интересно подобное чтение: Развернуть для просмотраКод:
//Radio Script Ver. 2.1 26-10-2020 By KlassenAS For Abradox [свернуть] |
Цитата:
Цитата:
Цитата:
На девять тачек наверное многовато даже для фрирайда ;) Хотя это мега круто :) |
Цитата:
Даже включили его в архив. Он как раз и сделан для версий 1.0 и 1.2 Работает во всех сценах, без исключения, специально в сцены импортировать не нужно. Цитата:
Плюс у тебя целый гараж Сальери. При старте новой миссии или загрузке сейва все скриптовые "запоминалки" сбрасываются, но зато в рамках одной миссии раздолье ) Плюс, запоминание авто безупречно работает только с авто из сцены, а тачки из трафика, иногда, запоминает по два раза. Хз, почему. Следовательно, с учётом игровых глюков, для пяти авто нужен резерв. Поэтому девять. Три тачки запоминать, или девять - скрипт от этого принципиально сложнее не становится, в нём лишь появляется больше копипаста с однообразными блоками команд. То же самое, если приспичит увеличить количество радиостанций с 4 до 100. По три дополнительных переменных на каждую радиостанцию, всё остальное - копипаст с исправлением номеров. |
Цитата:
В общем это не сложно, но играть приятнее. Треки из Mafia Defenitive Edition и те что мы подобрали сами, очень хорошо подходят к атмосфере оригинальной Mafia. |
чуток оптимизации скрипту..
1. а есть необходимость определять акторы 1-11 актором скрипта? оно сработает только один раз(при старте скрипта), а при этом данный стек все равно пустой. 2. фильтр перед Label dan_on-овский не мешает в сценах2 и его не требуется удалять. он просто инактивирует скрипт в миссиях без плеер_актора. а вот флт4 обнулить не мешает ниже, ога. 3. аналогично актор_стеку, стек флт-х также при старте скрипта пустой. другими словами говоря, изначально все значения переменных равны 0 и нет необходимости в командах типа Let Flt[]=0 (кроме флт4). А присвоение значение "-1" компактнее сделать через вектор. Итого кусочек скрипта наверное может выглядеть так: Human_GetProperty 0,4,Energy If Flt[4]=0,-1,dan_on Act_SetState 100,Off Label dan_on CityMusic_Off Let Flt[4]=0 vect_set 9,-1,-1,-1 vect_set 12,-1,-1,-1 vect_set 21,-1,-1,-1 vect_set 24,-1,-1,-1 vect_set 27,-1,-1,-1 |
Цитата:
Цитата:
Цитата:
Умён! Я не был уверен, что переменные создаются с нулём и страховался от возможных рандомных значений. Кроме того, мне нужно было расписать значение каждой переменной и комментарий к ней, чтобы не запутаться. Всё-таки удержать в голове значения и назначение тридцати переменных - задача нетривиальная. Большое спасибо за советы и замечания! Поколдую теперь немного над оптимизацией. Тем более, у меня ещё была мысль насчёт процедуры создания потоков. Тоже оптимизировать и выкинуть одну переменную. UPD: Поработал над оптимизацией версий 2.0 и 2.1 В архив с версией 2.1 положил папку sounds с шестью wav-файлами. чтобы гарантированно воспроизводились у всех. Ждём день. если новых замечаний и идей для улучшения не найдётся, тогда, наконец-то, оформим релиз. Ver. 2.1 https://drive.google.com/file/d/1jQK...ew?usp=sharing Ver. 2.0 https://drive.google.com/file/d/1bJV...ew?usp=sharing Развернуть для просмотраКод:
//Radio Script Ver. 2.1 27-10-2020 By KlassenAS For Abradox [свернуть] UPD: Прошло даже два дня. Новых косяков не обнаружилось. Идей для улучшения и большего усложнения скрипта пока нет. Все работает, как задумано. Думаю, можно оформить релиз. Вопрос: А как будем оформлять? |
Вроде скрипт не должен был затрагивать сюжетную музыку?
В Миссии Creme de la Creme, когда в аэропорту глохнет машина, то при выходе из нее перестает играть сюжетная музыка. Включается она уже только в катсцене с падением самолета. Добавлено через 2 минуты Цитата:
|
Ребята, у меня уже складывается впечатление, что я попал на экзамен по высшей математике))
|
Цитата:
Потому, что активная команда SityMusic_Off только в начале скрипта. И, при выходе из машины, скрипт либо уничтожает аудиопотоки, если радио играло, либо не делает ничего. По крайней мере, по логике так. Буду разбираться, чё как. Цитата:
Разработка подобного сложного алгоритма - обычное дело, когда пишешь курсач по программированию ) Я больше скажу - программа, которую я писал для дипломной работы, лишь пять раз объёмнее этого скрипта. UPD: Наконец-то дошли руки. Действительно, была ошибка в логике скрипта. После того, как я сделал, чтобы радио по умолчанию при старте скрипта было выключено, потоки не создавались, а при выходе из машины либо при выключении радио, уничтожались, я не уследил за логикой и при выходе из машины, при выключенном радио, скрипт выполнял ненужную процедуру уничтожения потоков. Любопытно, что не имея доступа к "своим" потокам, скрипт уничтожал "чужие" потоки, вырубая миссионную музыку. Жаль только, что это работает лишь в отношении потоков, созданных в миссии, а не загруженных из сохранения. Как бы то ни было, я дописал в обработку выхода из машины пару строк, чтобы процедура не выполнялась, когда не нужна. Теперь конфликта с миссионной музыкой нет. Обновлённые версии скриптов: Ver. 2.1 https://drive.google.com/file/d/1ARu...ew?usp=sharing Ver. 2.0 https://drive.google.com/file/d/1kb0...ew?usp=sharing Ver. 1.1 https://drive.google.com/file/d/13kA...ew?usp=sharing |
Цитата:
Надо как-нибудь целый релиз тогда оформить... |
Цитата:
Я подумал: при старте скрипта все треки на радио начинают играть с начала. Это неправильно. Ведь радио не начинает эфир тогда, когда мы его включаем. Надо при первом включении радио позиции треков рандомизировать. Но рандомизировать-то надо по уму! Надо чтобы случайное значение укладывалось в длительность трека. А как узнать длительность трека? Ведь такой скриптовой функции нет. Гипотеза: если указать потоку с помощью команды Stream_SetPos некорректное значение, заведомо выходящее за пределы длительности трека, например 4 000 000, то потоку присвоится максимально возможное значение, соответствующее окончанию трека, и считав его с помощью команды Stream_GetPos мы узнаем длину трека. Проверил гипотезу экспериментом. Let Flt[15]=4000000 Stream_SetPos 0,15 Stream_GetPos 0,15 FreeRide_ScoreSet Flt[15] И получил неожиданный результат: После попытки присвоения потоку некорректного значения позиции, команда Stream_GetPos показывает погоду на Марсе! Т. е. возвращает рандомное значение. Правда, чаще всего в диапазоне от 3 000 до 15 000 миллисекунд, и нам это не вполне подходит. Таким образом, мы можем, при первом включении радио, смело назначать трекам рандомные позиции в диапазоне от 0 до 5 минут, а если рандомное значение выйдет за пределы реальной длительности трека, то ничего плохого не будет, значение будет рандомизировано по новой. А реализовать эту фичу - пара пустяков. Четыре строки в начале скрипта. Что я уже и сделал. Для версий 2.1 и 2.0 архивы по ссылкам обновлены. |
Цитата:
Как обстоит дело с выключением сюжетной музыки при выходе из машины в аэропорту в миссии Сливки общества (Creme de la Creme)? P.S. пока разработка идет, и до релиза ещё не дошло, давай лучше ссылку на файл script.sc, чтобы не перекачивать каждый раз архив в 236 мнгабайт, ведь по трекам изменений уже не будет. |
Кста не знаю вспоминал ли кто-то уже тут, но команда stream_create отлично воспринимает ссылки на онлайн радио (вот прям так, в формате stream_create x,"http://87.230.103.107:80/top100station.mp3" - это мой старый пример, ссылка дохлая уже давно походу). Правда сам поток как я понял должен быть строго в .mp3 закодирован, иначе игра тупо виснет. И ещё года четыре назад, когда я это выкупил именно такое онлайн радио уже было практически не найти... Я не сильно компетентен в кодировке потокового музла, может можно какой-то костыль придумать и себе во фрирайд пускать какую-то oldies радиостанцию и сейчас, я хз)
|
Цитата:
Если бы можно было определять длительность трека, я бы засекал, сколько времени радио было выключено, и при включении перематывал трек и/или переключал на следующий и ещё перематывал на нужное время, чтобы имитировать продолжение эфира, пока радио выключено. А если бы не было глюка из-за сохранения потоков, то этого вопроса вообще бы не было и скрипт был вдвое проще и всё работало бы по фен-шую. А так довольствуемся тем, что есть. Цитата:
Цитата:
Цитата:
И даже есть отдельная версия скрипта - 1.2, ориентированная именно на реальное радио. Блин, если бы я умел правильно писать dll и знал, как из собственного кода обратиться к функциям движка, чтобы получить доступ к акторам и их свойствам, я бы этот скрипт сделал в виде asi плагина, и плеер у меня работал бы из самой dll, и никаких проблем бы не было. А плейлист бы считывался из ini-файла. И работало бы и любое радио, и любые аудио форматы. Так-то я в Delphi программы писать умею, можно и плагин замутить. Только я не знаю, как реализовать обмен данными с игровым движком. UPD: Вот сами скрипты в виде сферических коней в вакууме: Ver. 2.1 https://drive.google.com/file/d/1zjl...ew?usp=sharing Ver. 2.0 https://drive.google.com/file/d/1MOs...ew?usp=sharing |
KlassenAS, если рассмотреть на этом примере? Подойдет ли он для Мафии?
оффтоп |
Цитата:
Здесь нет информации о том, как из dll обращаться к функциям движка и обмениваться с ним данными. Тупо присосались к процессу и вывели окошко с текстом и кнопкой ОК. Я такой плагин хоть щас могу сделать. Толку будет, как от козла молока. Вопрос ведь в том, как к акторам доступ получить. В идеале, к некоторым функциям, вызываемым командами из скриптов. В частности, это необходимо для определения нахождения Томми в машине и для сравнения машин. |
Цитата:
|
Цитата:
Мож если не лень будет даже погуглю как оно работает вообще) |
Цитата:
Плохая идея. Вся музыка лицензированная, без официальной покупки прав такую интернет-радиостанцию забанят нафиг. Другое дело, если написать программу, которая локально, на компе будет имитировать радиоэфир, крутить треки, притворяясь сервером, к которому игра сможет обращаться по ссылке. Т.к. "вещание" и игра будут работать на одном компе, это освободит от потребности в интернет-подключении и избавит от подвисаний при загрузке. Кроме того, по моим наблюдениям, игра игнорирует интернет-поток при сохранении, и глюков с непрошенным воспроизведением после этого не происходит. Так же можно было бы имитировать любое количество радиостанций. Но я хз, как такое реализовать. Хотя такую программу тоже можно под asi плагин оформить, это был бы большой плюс. |
Как отделить городскую музыку от миссионной?
Нужно чтобы при выходе из машины городская музыка не играла, а миссионная в миссиях играла. |
Текущее время: 11:46. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.11 Release Candidate 2
Copyright ©2000 - 2025, vBulletin Solutions Inc. Перевод: zCarot