g
Суббота
27.04.2024
15:53
 
Все для редактирования и создания игр
 
Приветствую Вас Новичок | RSS|Главная | Каталог статей | Регистрация | Вход

Каталог статей

Главная » Статьи » Игры » GTASA

Как написать качественный Cleo-скрипт для GTA SA?

   

   Для того, чтобы Cleo-скрипт получился качественным и при работе не приводил к различным конфликтам и ошибкам с последующим вылетом, нужно соблюдать следующие простые правила:

1. Загрузка моделей
Перед тем, как создавать актёра, транспорт или объект, необходимо загрузить в память соответствующую модель командой model.load(ID_number), где ID_number – уникальный номер модели в игре (целое число). Вместо номера можно писать и название модели с решеткой (#Model_name), но здесь существует вероятность того, что при компиляции скрипта появится отчёт об ошибке. В версии 3.04 программы SannyBuilder предусмотрена возможность конвертации ИД номера в имя модели и обратно – для этого нужно вставить текстовый курсор между любыми двумя буквами имени (или цифрами номера) и нажать Ctrl+Alt+H.

     Если загружается одновременно несколько моделей, то после блока команд model.load рекомендуется написать опкод:

038B: load_requested_models
      Следует помнить, что модели загружаются в память не одномоментно, поэтому нельзя писать команду создания актёра (транспорта, объекта) сразу после команд загрузки моделей. Если модель ещё не загружена в память, а игра уже пытается что-то создать, то произойдёт ошибка с вылетом. Поэтому перед тем, как создавать что-либо нужно проверять, загружена ли в память соответствующая модель опкодом model.Available(ID_number).
После того, как актёр (транспорт, объект) создан, то модель уже больше не нужна – следует удалить её из памяти командой model.Destroy(ID_number). Рекомендуется загружать модели непосредственно перед использованием, а удалять из памяти сразу после того, как актёр (объект, транспорт) создан и модели уже больше не нужны. Пример создания нескольких автомобилей выглядит так (для актёров и объектов алгоритм будет тот же, отличаться будут только команды создания):
model.Load(528)
model.Load(601)
038B: load_requested_models
while true
wait 0
if and
model.Available(528)
model.Available(601)
then
break
end
end
car.Create(0@ 528 -2029.8625, 140.4657, 28.8359)
model.Destroy(528)
car.Create(1@ 601 -2023.8625, 140.4657, 28.8359)
model.Destroy(601)

    Предварительно загружать нужно не только модели. При использовании звуков, анимаций и т.п. также может понадобиться предварительная загрузка. 
2. Отличия CLEO-кодинга от редактирования main.scm
Первое отличие в командах окончания кода. Если скрипт не зациклен (не выполняется бесконечно), то во избежание вылетов следует завершать код командой окончания потока. Завершающая команда в Cleo-скрипте:
0A93: end_custom_thread

    В Cleo-миссиях, как и в потоках main.scm завершающей командой будет являться 004E: end_thread

Второе отличие – в Cleo-скрипте не применяется команда создания потока create_thread.
Третье отличие – в Cleo-скриптах (и миссиях) не применяются глобальные переменные ($0, $1…). Исключение составляют глобальные переменные из файла CustomVariables.ini - $PLAYER_CHAR, $PLAYER_ACTOR и др. Зато Вы можете свободно использовать локальные переменные (0@ - 33@ в Cleo скриптах и 0@ - 1023@ в Cleo миссиях. Переменные 32@ и 33@ являются таймерами – значение, записанное в них, увеличивается с каждой миллисекундой на единицу. Понятно, что бессмысленно применять переменные-таймеры для других целей).
    Некоторые опкоды могут применяться только в миссиях, и их применение в потоках может вызвать ошибку. В этом случае к опкоду прилагается соответствующий комментарий – Mission only (если опкод найден в Поиске опкодов).
3. 0A95
   Если в скрипте создаётся объект, пикап или парковочный генератор то следует добавить в код команду:
0A95: enable_thread_saving
Вообще данная команда делает так, что при сохранении игры значения, записанные в локальных переменных данного скрипта, сохраняются в отдельном Cleo-сэйве. 
Если, например, скрипт создаёт объекты, а данная команда в код не добавлена, то при сохранении игры сохранятся и объекты. И тогда, если скрипт будет удалён из клео-папки, то на карте объект всё равно останется, а если скрипт удалён не будет, то в игре при запуске появятся 2 одинаковых объекта. То же самое касается и парковочных генераторов, и пикапов. Например, код клео-скрипта, создающего парковочный генератор, должен выглядеть так:
{$CLEO}
0a95: enable_thread_saving
014B: 0@ = init_parked_car_generator 528 color -1 -1 1 alarm 0 door_lock 0 0 10000 at -2029.1075 179.1367 28.8359 angle 90.0
014C: set_parked_car_generator 0@ cars_to_generate_to 101
0A93: end_custom_thread

4. Проверки на существование
Перед проведением какого-либо действия (проверка, команда) над актёром, транспортом или объектом необходимо делать проверку на существование. Актер (транспорт, объект) может быть удалён не только из того скрипта, которым он был создан, но и другим скриптом или игрой, а попытка произвести действие над несуществующим игровым объектом ведёт к вылету. Проверки на существование машины, актёра и объекта выглядят следующим образом:
056D: actor 0@ defined
056E: car 0@ defined
03CA: object $2727 exists

    Для проверки существования игрока (CJ) есть особая проверка:
0256: player $PLAYER_CHAR defined
Пример применения проверки:
If
056E: car 0@ defined
then
02AC: set_car 0@ immunities BP 1 FP 1 EP 1 CP 1 MP 1
end

5. Remove References
Если вы создадите в скрипте транспорт (или актёра, объект) с помощью команды create, то он будет иметь "уникальный” статус (references). Уникальный транспорт, в отличие от обычного, не удаляется игрой в тех случаях, когда игрок отходит на большое расстояние от него. Уникальный статус может иметь не только машина, созданная скриптом. Если, например, "поймать” созданную игрой машину с помощью опкода:
0327: $TEMPVAR_ACTOR_CAR = get_random_car_with_model -1 in_rectangle_cornerA $111 $112 cornerB $114 $115
то у данной машины будет включен флаг уникальности, и она уже не исчезнет, даже если игрок отойдёт от неё на большое расстояние. Превратить машину из уникальной в обычную (убрать флаг уникальности) можно командой:
01C3: remove_references_to_car $IMPORT_CAR // Like turning a car into any random car
    Данную команду можно применять для всех видов транспорта кроме поездов (для поездов есть отдельная команда). Подобные команды есть и для других типов игровых объектов: актёров, объектов, эффектов частиц и др. При превращении игрового объекта из уникального в обычный с указателем, записанным в переменную, ничего не происходит (как и при удалении). После отключения флага уникальности над машиной (актёром, объектом) по-прежнему можно производить различные действия – до тех пор, пока машина (актёр, объект) не будет удалена.
Наличие или отсутствие флага уникальности не зависит от того, записан ли указатель на игровой объект в каком-то скрипте или нет. Поэтому, если у игрового объекта будет убран уникальный статус или игровой объект будет удалён, то это действие произойдёт независимо от того, в скольких скриптах указатель на данный игровой объект записан в переменную.
     Существуют лимиты на количество транспорта (или актёров), которые одновременно могут существовать в игре. Так как уникальные игровые объекты игра самостоятельно не удаляет, то, если вы создаёте много транспортных средств или актёров, вы должны удалять старые машины или актёров перед созданием новых (или убирать у них флаги уникальности).
      И последнее в данном вопросе. Некоторые считают, что команда remove_references "безопасна” и перед её выполнением не обязательно делать проверку на существование того, к чему применяем команду. Мой опыт показывает, что это не так – были случаи вылетов игры, когда в скриптах проверка отсутствовала.
6. Ожидание
Существует опкод 0001: wait 0 ms , который приостанавливает выполнение скрипта на указанное время в миллисекундах (1 с = 1000 мс). С данной командой связано следующее правило: если выполнение скрипта начинается с какой-то метки, а потом возвращается наверх – на эту же метку, то за это время должно быть выполнено хотя бы одно ожидание, иначе игра зависнет. Вы можете применять ожидание и в других случаях – например, для приостановки работы скрипта на определённое время. Если же особой нужды в ожидании нет, то применять эту команду не следует – даже нулевое ожидание замедляет работу кода. Дело в том, что все установленные скрипты выполняются по очереди, а при опкоде wait происходит переключение на следующий скрипт в очереди. По этой же причине нельзя вставлять wait между проверкой на существование и последующей командой – то, к чему применялась проверка, может быть удалено другим скриптом или игрой и произведённая проверка окажется бесполезной.

Как искать ошибки в скриптах?

     Облегчить поиск ошибок в скриптовых файлах может Cleo-плагин ScmLog (взять можно на sannybuilder.com). Установка плагина проста – для этого нужно скопировать файлы scmlog.ini и scmlog.cleo в папку CLEO. Если плагин установлен, то после выхода из игры (или вылета при ошибке) в папке CLEO будет создан файл scmlog.txt, в котором будет приведён список опкодов (лог), выполненных всеми установленными скриптами. Если игра вылетела, то последним в логе будет указан опкод, при выполнении которого возникла ошибка (название скрипта тоже будет указано).


Источник: http://gameshaker.ucoz.ru/
Категория: GTASA | Добавил: gameshaker (31.03.2012) | Автор: Den_spb E
Просмотров: 7980 | Комментарии: 1 | Теги: Cleo library, скрипт, Cleo-, для GTA SA, Cleo3, Качественный, Как написать
Всего комментариев: 1
0
1 kjk   (04.11.2012 16:07) [Материал]
сперли с сайта

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Последние файлы
UnWorld (Unreal Engine 1.5-2)(редактор уровней Harry Potter)
(Комментариев:0)
(Загрузок:2295)
Серия игр:Гарри Поттер " Harry Potter"
(Комментариев:0)
(Загрузок:1482)
Top 10 Flash Games(флеш игр) по версии GamesHaker.ucoz.ru pack10
(Комментариев:0)
(Загрузок:1575)
Top 10 Flash Games(флеш игр) по версии GamesHaker.ucoz.ru pack9
(Комментариев:0)
(Загрузок:1071)
Top 10 Flash Games(флеш игр) по версии GamesHaker.ucoz.ru pack8
(Комментариев:0)
(Загрузок:581)
Top 10 Flash Games(флеш игр) по версии GamesHaker.ucoz.ru pack5
(Комментариев:0)
(Загрузок:596)
Top 10 Flash Games(флеш игр) по версии GamesHaker.ucoz.ru pack6
(Комментариев:0)
(Загрузок:531)
Категории раздела
GTASA [29]
S.T.A.L.K.E.R [0]
GTAIV [4]
CS1.6 [1]
Test Drive Unlimited [7]
Crysis [3]
World Racing 2 [1]
Far Cry [3]
Crashday [2]
Left4Deat [0]
FlatOut2 [0]
The sims [0]
Need For Speed [0]
Serious Sam [1]
Mafia [0]
В тылу врага [0]
Другие игры [0]
Наш опрос
Игры какого типа вы предпочитаете делать?
Всего ответов: 103
Статистика

Онлайн всего: 3
Гостей: 3
Пользователей: 0
Зарег. на сайте
Всего: 3673
Новых за месяц: 1
Новых за неделю: 0
Новых вчера: 0
Новых сегодня: 0
Из них
Админинистраторов:1
Модераторов:0
Проверенных:0
Обычных юзеров:3672
Из них
Парней:3193
Девушек:480
Статистика файлов
Новостей:178
Файлов:494
Статьи:198
Фото:450
Коментариев:162
Форма входа
Поиск



Социум
Друзья сайта
продвижение сайта в поисковых системах GanGstA Game's TOP-100 CounterRambler's Top100 TOP Яндекс.Метрика
продвижение самостоятельно самостоятельное продвижение сайтоврегистрация сайта в каталогах Все для редактирования и создания игр с нуля.Игрострой.Новости моддинга и игростроя.Уроки рисования. Рейтинг SIMPLETOP.NET раскрутка сайта

Бесплатная регистрация в поисковых системах

Locations of visitors to this page

Graffiti Decorations(R) Studio (TM) Site Promoter ТОП GTA-GAME
О сайте Новое в галерее

Здравствуйте уважаемые любители игростроя! Этот сайт создан специально для вас! Здесь есть всё что нужно для редактирования и созданию игр, в том числе и без программирования... На этом сайте вы найдёте очень много файлов статей для редактирования игор. Также на сайте есть очень много различных файлов к играм, программ, патчей, трейнеров и др., для таких известных игор как GTASA, NFS, CS1.6, Crysis и др. Также есть различные программы связаны с играми, для создания 3D-моделей, для извлечения ресурсов из разных игор. На сайте очень много картинок, скриншотов и обоев на рабочий стол из игор. Здесь вы найдёте всё необходимое для создания модификаций к вашим любимым играм, а так же создания собственных игр. Для игроделов на сайте можно скачать необходимые для этого инструменты (конструкторы игр, движки), изучить необходимую литературу (статьи, журналы, книги) и т.д. На нашем форуме вы всегда сможете спросить совет или поделиться своими наработками. Если у вас имеются интересные файлы, то вы так же можете разместить их на нашем сайте.Ващей фантизии нет границ? Тогда вперёд, покажите всем на, что вы способны! А наш сайт вам в этом поможет. Играйте, создавайте, модифицируйте, удивляйте людей! И может быть через какое то время весь мир узнает о Вас!
Подробно о сайте >>>

Ubisoft транспорт GTA IV 3d модели GTA SA Crytek nfs_shift моделирование Новый pc играть Как обзор правильно статьи Туториал Как создать журнала редактор photoshop игровые Моды новое Демо стиле красивый научиться TDU смотреть иностранный локацию pdf интернет персонаж Рисуем персонажа game программирования фон Фотошоп GTA flash ADOBE уроки спрайт графика мод игра FPS журнал 2013 игр GDC программы Выдиралки данных моддинг рисование конструктор версия игры для 3D моделей studio Tools создания скачать новости вышел Android на Nvidia демонстрация CryENGINE анонс Unity Игровая движка текстур выпуск игрового Видео игрострой движок 2D SDK игровой Нарисовать графику GameDev урок 3ds Max sa создание авто Grand Theft Auto из рисовать Флеш Top



Гостевая книга                   Последние комментарии
Администрация не несет ответственности за корректность и достоверность информации в статьях и надежность всех упоминаемых URL-адресов. Все названия и логотипы в файлах и статьях являются собственностью их законных владельцев и не используются в качестве рекламы продуктов или услуг. Материалы портала распространяются согласно условиям лицензии
CreativeCommons.
© 2024
Рейтинг@Mail.ru