Как создать пикап сохранения

Здравствуйте в этом уроке я расскажу как создать пикап СОХРАНЕНИЯ.
Этого в мануале нет такое знание прийдёт лишь с опытом ,но кому лень ждать ,
тому всё подробно опишу .Итак ,мы будем делать наш внешний скрипт с помощью Sanny Builder 3 ,а
в дальнейшем просто SB (скачать можете с SANNYBUILDER.COM)
Итак откроем его и нажмём создать новый Файл (Есле же вы открываете его первый раз, то вам нужно будет его настроить ,указать главную дирректорию игры и т.д )
и увидим там пустые строчки которые нам предстоить заполнить опкодами (специальными командами которые воспринимает игра)
Раз мы пишем внешний скрипт то в первую очередь зададим формат будущего файла .
Делается это директивой {$CLEO .cs} (она указывает что компилируемый файл получит расширение custom script что в сокращении и есть CS)
Пишем на первой строчке её (учтите на одной строке одна команда т.е один опкод)
{$CLEO .cs}
Затем нам нужно загрузить в память игры значок сохранения ,делается это командами
model.load(#модель ) //там где написано модель нужно написать модель в нашем случае это #PICKUPSAVE ,но учтите этот файл не имеет заголовка поэтому нужно написать так
model.load(1277) // 1277 это id обьекта #PICKUPSAVE т.е написать числовой номер этого обьекта.
Но этим опкодом мы только обьявили те модели которые будем загружать так что нужно написать на следущей строчке
038B: load_requested_models // а вот эти кодом мы загрузили модель в память .Учтите вы можете обьявить больше моделей (каждое обьявление на новой строчке !) но загрузить их нужно будет только один раз ,поэтому этот опкод пишется один раз ,да и знайте что" //" это начало коментария и компилятор (это такя вещь которая все наши опкоды переводит на понятный игре язык ) не обратит на него внимания ,поскольку они служат для удобного ореинтирования в скрипте ,коментарий это что то наподобии заметки на рабочем столе
Затем нужно проверить модели на загруженность иначе если модели не загрузились а мы уже что то с ними делаем то произойдёт вылет .Для начала сделаем метку
:NONAME_10 // это и есть метка чтобы её создать пишем двоеточие а затем имя метки
Метки скриптеры создают чаще всего для проверок, как в нашем случае.
После метки напишим команду
wait 0 ms //это задержка в 0 милли секунд т.е задержки нет но писать это команду после меток обязательно(если не напишете ,то ждите вылета) и иногда нужно писать wait 100 ms т.е давать задержку чтобы игра передохнула .Затем напишем
if and // это обьявление количества условий у нас их два поэтому пишем if and (скрипт не начнёт выполнятся дальше пока все условия не станут положительными),но если условие одно то нужно написать просто if а если условий ну допустим три и для дальнейшего выполнения скрипта нужно чтобы выполнилось хоть одно из них то напишем if or
Итак, далее пишем что нам нужно проверять ,а проверять мы будем обьект на загруженность и игрока на существование
для этого пишем
model.available(1277)//это и есть проверка на загруженность модели
0256: player $PLAYER_CHAR defined //проверка игрок существует
else_jump @noname_10 //т.е это будет звучать так :если модель загруженна и игрок существует то выполнение скрипта пойдёт дальше если же нет то перепрыгнем на метку
@noname_10 и с неё начнём повторное выполнение команд model.available(1277) и player $PLAYER_CHAR defined короче данный цикл будет происходить до тех пор пока условие модель загруженна и игрок существует не станет правдой .
ВОт что у нас пока получилось :
{$CLEO .cs}
wait 100 //задержка для большей безопасности
model.load(1277)
038B: load_requested_models
:NONAME_10
wait 0 ms
if and
0256: player $PLAYER_CHAR defined
model.available(1277)
else_jump @noname_10
И ПРИСТУПИМ К ДАЛЬНЕЙШЕМУ ИЗУЧЕНИЮ ...
Раз мы загрузили и проверили модель то сейчас можно её создать
делается это командой
0213: $BUY_ASSET_PICKUPS = create_pickup 1277 type 15 at 1182.986 -1324.592
13.5783 // писать на одной строчке
1277 - это модель создоваемого обьекта (пикапа сохранения)
$BUY_ASSET_PICKUPS это глобальная переменная(вообще их не желательно применять т.к это может вызвать ошибку ,НО эта переменная исключение!) в которую будет записанна созданная модель т.е в дальнейших своих действиях мы можем не писать 1277 а вместо этого написать $BUY_ASSET_PICKUPS
во многих случаях это будет очень удобно
1182.986, -1324.592, 13.5783 -это координаты создаваемого пикапа .Их можно узнать с помощью любого телепортера а так же sb имеет в наличии встроенный редактор координат(сервис/инструменты /редактор координат - гта должна быть включенна
там также есть галочка внизу 1.1 есле её нажать то вы получите телепортер для версии игры 1.1)
Type - это тип пикапа, есть следующие типы:
1 - за деньги, регенерируется почти сразу
2 - бесплатно, регенерация за 30 минут игрового времени, надо отойти недалеко
3 - бесплатно, одноразовый
9,11 - бомба
15 - регенерируется за 6 часов игрового времени или за 6 минут
мы выбрали тип 15 т.к в игре после сохранения проходит 6 часов

ну вот у нас есть пикап сохраннения ,НО пока нерабочий .
Для того чтобы он стал полноценным ,нужно добавить ещё одну проверку
на поднятость пикапа .
Создаём ещё одну метку к примеру с названием
:noname_11
wait 100 // пишем задержку иначе может вылететь
if //обьявляем количество условий т.е у нас оно одно
0214: pickup $BUY_ASSET_PICKUPS[0] picked_up //проверка на поднятость пикапа
else_jump @noname_11//если игрок не поднял пикап т.е условие не выполнено то выполнение скрипта начнётся с метки @noname_11 и это будет повторятся до тех пор условие не будет выполнено т.е пикап станет поднятым
Если всё прошло успешно то нужно показать экран сохранения .Делается это командой
03D8: show_save_screen //это то самое меню откуда вы сохраняетесь
ну и чтобы память игры не загрязнить нужно сделать обязательно удаление этого пикапа .Сделаем это так
model.Destroy( $BUY_ASSET_PICKUPS)//надеюсь вы не забыли что $BUY_ASSET_PICKUPS это и есть модель 1277
0215: destroy_pickup $BUY_ASSET_PICKUPS//ну и уничтожение самого пикапа
ну и как бы чтобы можно опять было сохранится то начнём заново выполнение скрипта с метки @noname_10 т.е напишем
jump @noname_10
ВОТ КОД который должен был у вас получится :
{$CLEO .cs}
wait 100
0247: load_model 1277
038B: load_requested_models
:NONAME_10
wait 0
00D6: if and
0248: model 1277 available
0256: player $PLAYER_CHAR defined
004D: jump_if_false @NONAME_10
0213: $BUY_ASSET_PICKUPS = create_pickup 1277 type 15 at 1182.986 -1324.592 13.5783
:noname_11
wait 100
if
0214: pickup $BUY_ASSET_PICKUPS[0] picked_up
else_jump @noname_11
00A1: put_actor $PLAYER_ACTOR at 1187.1106 -1323.4843 13.559//Раннее я это не написал но вы лучше этот опкод напишите ,чтобы игрок не оставался на месте сохраннения и всегда не поднимал пикап (этот опкод телепортирует)и помните что // это коментарий .
03D8: show_save_screen
model.Destroy(1277)
0215: destroy_pickup $BUY_ASSET_PICKUPS
jump @noname_10
Сравните этот код и тот который получился у вас.Если у вас что нибудь не так то исправте .Когда всё проверели то нажмите заветную кнопку "компилировать"(вверху, напоминает зелёного бегущего человечка)
Задайте любое имя вашему Файлу .
Сохраните этот скрипт в папке клео (находится должна в директории игры)
Запускайте игру и наслаждайтесь СВОИМ творением.
Удачи в скриптинге !Да и читайте мануал который идёт вместе с Sanny Builder...
(Полезно для мозговой деятельности)

 Просмотров: 24.8k