Четверг, 25.04.2024, 03:43
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Игры серии ГТА » Скриптинг » Создание миссий (У миссий много отличий от обычных потоков...)
Создание миссий
VitalДата: Четверг, 05.01.2012, 23:33 | Сообщение # 1
Группа: Проверенные
Сообщений: 206
Статус: Offline
Здесь задавайте свои вопросы по созданию миссий. Структура, особые правила и тому подобные вопросы.
------------------------------------------------
Вот мой первый вопрос:
Имеется такая вещь, как mission_cleanup. Я слышал, что она возвращает в исходные позиции многие параметры: камеру, радар, худ и прочее. Где-то было сказано, что это и очищает игру от всего, что было создано в миссии. Хотел бы узнать подробнее. Например, если я загружал модели, создавал актеров и машины, то в конце миссии (там, где mission_cleanup) не нужно будет писать model.destroy, car/actor/object/marker/pickup.removereferences и т.п. команды? То есть, абсолютно ли все, что создано в процессе миссии, удалится, или придется кое-какие вещи удалять самому? И еще: можно ли эту команду очищения использовать и в обычных потоках, или это относится только к миссиям?


SCRIPTER

Сообщение отредактировал Vital - Четверг, 05.01.2012, 23:35
 
DK22PacДата: Пятница, 06.01.2012, 00:02 | Сообщение # 2
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
По-моему, некоторые опкоды просто добавляют создающийся обьект в клинап-лист. А эта команда удаляет всё из этого листа.
Посмотри в IDA ссылки на
Code
0x4637E0     CMissionCleanupLis::add(char type, dword handle)

перед тем, как добавить обьект в клинап-лист, игра проверяет, является ли поток миссией (это моё предположение, посмотрел опкод destroy_actor, там идёт проверка CScriptThread.field_C6)


Сообщение отредактировал DK22Pac - Пятница, 06.01.2012, 00:08
 
ILYALIONДата: Четверг, 02.02.2012, 15:04 | Сообщение # 3
Группа: Проверенные
Сообщений: 325
Статус: Offline
Пытаюсь написать название миссии таким способом:
Code
054C: use_GXT_table 'NEIZV'            
00BA: text_styled 'NEIZV1' 1000 ms 2
Надписи нет. Я создал FXT файл "NEIZV" и в нем прописал название в строке "NEIZV1". Возможно, текст выводится из-за fxt файла?
 
GTAshnikДата: Четверг, 02.02.2012, 19:01 | Сообщение # 4
Группа: Пользователи
Сообщений: 24
Статус: Offline
Quote (ILYALION)
Надписи нет. Я создал FXT файл "NEIZV" и в нем прописал название в строке "NEIZV1". Возможно, текст выводится из-за fxt файла?

Эм... название строки в FXT файле, должно совпадать с названием в скрипте. Т.е. если ты дал строке в FXT файле название, например "GTA" и в эту строку записал название миссии, то и в скрипте ты должен прописать "GTA", а не "GTA1", "GTA2" и т.д.
Так же если отсутсвует Gxthook.cleo подобная проблема так же может возникнуть...
 
ILYALIONДата: Четверг, 02.02.2012, 19:38 | Сообщение # 5
Группа: Проверенные
Сообщений: 325
Статус: Offline
GTAshnik, Gxthook.cleo есть, прописал правильно. В других скриптах с текстами из fxt текст показывается, а в данном случае - нет.
 
Den_spbДата: Четверг, 02.02.2012, 20:13 | Сообщение # 6
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Gxthook.cleo по-моему несовместим с CLEO4 (если она установлена). Но в CLEO4 есть опкоды вывода текста, позволяющие обойтись без Gxthook.cleo.
 
ILYALIONДата: Четверг, 02.02.2012, 20:43 | Сообщение # 7
Группа: Проверенные
Сообщений: 325
Статус: Offline
Den_spb, у меня установлена свежая CLEO 4, н текста всё-равно нет.
 
VitalДата: Пятница, 17.02.2012, 15:57 | Сообщение # 8
Группа: Проверенные
Сообщений: 206
Статус: Offline
Den_spb, лично у меня на четвертой версии текст работает.
ILYALION, проверь, правильно ли ты создал fxt файл. И еще: зачем тебе опкод 054С? Лично я без него вывожу текст и все прекрасно. Это же fxt, а не gxt, вроде выбирать этот опкод тогда не нужен.
--------------------------------
Еще вопрос от меня.
Можно ли (думаю, да) делать миссии в виде обычных потоков (я пишу на mpack, так что оригинальных возможностей нету, ничего не сможет накладываться друг на друга)? Просто у меня (для моего мода) есть идея делать миссии при помощи таблиц переходов. Таблица переходов будет начинать миссию, номер которой увеличивается по мере прохождения.


SCRIPTER
 
Den_spbДата: Пятница, 17.02.2012, 20:40 | Сообщение # 9
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (Vital)
Den_spb, лично у меня на четвертой версии текст работает.

Насколько помню, Alien рекомендовал не использовать Gxthook.cleo с КЛЕО4.

Quote (Vital)
Можно ли (думаю, да) делать миссии в виде обычных потоков

Миссию (сюжетное задание игрока) можно оформить как в виде скрипта-потока, так и в виде скрипта-миссии. Ведь важно не то, что делает скрипт, а то, правильно ли он написан. Нужно помнить отличия скрипта-миссии от скрипта-потока и учитывать их при составлении кода.
 
VitalДата: Пятница, 17.02.2012, 22:19 | Сообщение # 10
Группа: Проверенные
Сообщений: 206
Статус: Offline
Den_spb, какие именно есть отличия? Т.е. не будет ли проблем, если я сделаю примерно такое построение миссии:
1)Подготовка
-блокировка других возможностей (которые вне миссии)
-загрузка необходимых моделей и ресурсов
2)Начало
-расстановка актеров и т.д.
-постановка задачи игроку
-вывод объяснений (текста)
3)Конец
-проверка условий выполнения миссии
-возвращаем все в исходное положение (возможности и т.д.)
При неудачном прохождении номер миссии остается тем же (я хочу через таблицы переходов), а при удачном-прибавляется, чтобы миссии шли по порядку.

Или есть какие-то другие нюансы?


SCRIPTER
 
Den_spbДата: Пятница, 17.02.2012, 23:00 | Сообщение # 11
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (Vital)
Den_spb, какие именно есть отличия?

Эти отличия и так известны:
- Количество локальных переменных (в скрипте-миссии - 1024 штуки, в скрипте-потоке - 32).
- Одновременно может быть запущен только один скрипт-миссия, а скриптов-потоков - много.
- Есть опкоды, которые можно применять только в скриптах-миссиях: 00D8: mission_cleanup, 0112: wasted_or_busted // mission only (и другие опкоды с комментарием "mission only") и т.д.
- Клео-поток завершается командой 0A93, клео-миссия - командой 004E.
Может что-то забыл, но основные отличия перечислил.
 
VitalДата: Пятница, 17.02.2012, 23:14 | Сообщение # 12
Группа: Проверенные
Сообщений: 206
Статус: Offline
Den_spb, у меня не клео миссии, и особо много переменных не требуется, я пишу в scr.scm (MPACK), как аддон к игре, так что проблемы с клео командами не встретятся biggrin
П.С. Я сделал один интересный трюк (я делал его и в Creator'е, над которым пока работаю). Я взял неиспользуемую статистику (номер 340) и стал записывать в нее флаг "занятости" (обычный способ почему-то не работал) и проверяю его в каждом скрипте. Таким образом, нельзя использовать несколько возможностей сразу (или использовать их на миссиях). Опкоды с mission_only не беру, для проверки, что игрока схватили копы есть 0741.
Ограничений в переменных, по сути, нету, ведь это не клео, так что глобальные можно брать.


SCRIPTER
 
DK22PacДата: Среда, 22.02.2012, 15:24 | Сообщение # 13
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Если хочешь добавить автоматизма, можно сделать так
Code
if onMission == 0
then
       StarterOffset = NumLastPassed Mission * 4
       StarterOffset += JumpTableOffset
       gosub [StarterOffset]
end


Сообщение отредактировал DK22Pac - Среда, 22.02.2012, 15:29
 
VitalДата: Пятница, 04.01.2013, 00:24 | Сообщение # 14
Группа: Проверенные
Сообщений: 206
Статус: Offline
DK22Pac, ого! surprised тут, я так понял, еще и адреса памяти, связанные с потоками? Я уже успел сделать через таблицы переходов, уже одна миссия работает, как следует.

Добавлено (04.01.2013, 00:24)
---------------------------------------------
Вот хочу спросить, нету ли ошибок в данном коде миссии (миссия тестовая, небольшая). Использовал mission_cleanup, который давно хотел проверить, но не уверен в его правильном использовании. После завершения миссии актёр и маркер удаляются, как обычно, т.е. актёр (если жив, начинает гулять) исчезает после смерти, тогда же исчезает и маркер. Исчезание происходит и на некотором расстоянии от игрока. Неужели mission_cleanup действительно настолько полезен?



SCRIPTER
 
Форум » Игры серии ГТА » Скриптинг » Создание миссий (У миссий много отличий от обычных потоков...)
  • Страница 1 из 1
  • 1
Поиск: