Содержание урока:
1. Предыстория
2. Программы
3. Находим персонажа
4. Ставим персонажа
1. Предыстория
Все вы наверняка хотите научиться делать CLEO-скрипты. Этот урок поможет вам воплотить мечту в реальность. Но это не очень быстро и легко!
Чтобы научиться делать годные скрипты потребуются месяцы или даже годы…. Но не буду вас расстраивать, у вас всё точно получится! Это первый урок из нескольких.
2. Программы
В этом разделе я познакомлю вас с программами, которые нужны для создания мода.
Нам понадобятся: Sanny Builder 3 (создание скриптов) и Ped Editor (просмотр моделей персонажей).
3. Находим персонажа
Теперь нам предстоит найти название персонажа. Когда вы откроете Ped Editor, у вас появится интерфейс программы.
Теперь пролистайте строку с персонажами вниз и найдите подходящего. В моём случае это HMORI.
Не закрывая программу, открываем Sanny Builder 3, в которой будем создавать уже сам скрипт, который поставит персонажа на локацию.
3. Ставим персонажа
Теперь пришло время самым интересным действиям — созданию CLEO-cкрипта. Когда вы открыли окно, вы увидите лишь пустой экран. Но нажмите вот на этот значок: .
Появится уже немного другое окно, выглядит как простой текстовый документ:
В первой строке нам нужно лишь написать:
{$VERSION 3.1.0027}
{$CLEO .cs}
//————-MAIN—————
Это начало скрипта. Потом нужно написать переход и проверку загрузки персонажа:
:NONAME_1
Model.Load(здесь указывается название модели персонажа после символа «#», в моём случае это: #HMORI)
038B: load_requested_models
Далее пишем:
1@ = Actor.Create(CivMale, #HMORI, )
Actor.Angle(1@) =
Это место, куда должен быть поставлен персонаж и угол разворота.
Чтобы узнать эти координаты, нужно зайти в игру. Просто нажмите на , и игра запустится без титров, так быстрее.
Далее загружаем игру, выходим на улицу, встаём на нужное место и скрываем игру.
Разворачиваем Sanny Builder 3, ставим курсор после «CivMale, #HMORI,». Потом нажимаем Shift+Ctrl+C. Координаты будут вставлены. В моём случае это вот так выглядит:
{$VERSION 3.1.0027}
{$CLEO .cs}
//————-MAIN—————
:NONAME_1
Model.Load(#HMORI)
038B: load_requested_models
1@ = Actor.Create(CivMale, #HMORI, 2486.9573, -1656.5065, 13.3479)
Actor.Angle(1@) =
А там, где написано «Actor.Angle(1@) =», нужно нажать Shift+Ctrl+E и появится угол разворота игрока. Вот так получится:
{$VERSION 3.1.0027}
{$CLEO .cs}
//————-MAIN—————
:NONAME_1
Model.Load(#HMORI)
038B: load_requested_models
1@ = Actor.Create(CivMale, #HMORI, 2486.9573, -1656.5065, 13.3479)
Actor.Angle(1@) = 178.8208
end_thread
В конце мы также поставили метку окончания скрипта (end_thread)
Всё, теперь скрипт закончен и игра не вылетит! Можно конвертировать скрипт и посмотреть что получилось, для этого нажмите на или F6.
Далее назовите свой файл и сохраните. Если вылетела ошибка, значит вы сделали что-то неправильно! Перепроверьте это:
{$VERSION 3.1.0027}
{$CLEO .cs}
//————-MAIN—————
:NONAME_1
Model.Load(#HMORI)
038B: load_requested_models
1@ = Actor.Create(CivMale, #HMORI, 2486.9573, -1656.5065, 13.3479)
Actor.Angle(1@) = 178.8208
end_thread
Всё, заходим в игру.
Выбранный персонаж стоит.
В следующем уроке мы будем назначать персонажу анимацию.
Вам нужно скачать программу по имени «Sanny Builder» ее надо установить.
Запускаем программу. Нажимаем наверху кнопку «Файл» затем — Создать.
Любое клео начинается с строчки {$CLEO .cs}, если вы ее не вводите в начало скрипта то у вас будет крашить.
У нас получается :
{$CLEO .cs}
Затем нам надо перейти к функции добавляем :
gosub @cheat_master
У нас получается :
{$CLEO .cs}
gosub @cheat_master
Пишем
:cheat_master
У нас теперь получается :
{$CLEO .cs}
gosub @cheat_master
:cheat_master
И чтобы нас не крашило когда мы выполняем функцию
Пишем после функции «:cheat_master» :
wait 0
Получается :
{$CLEO .cs}
gosub @cheat_master
:cheat_master
wait 0
Чтобы на нажатии например кнопки минус наш код выполнялся пишем после этих проделанных действие :
if 0AB0: key_pressed 109
Получается :
{$CLEO .cs}
gosub @cheat_master
:cheat_master
wait 0
if 0AB0: key_pressed 109
Потом пишем ( обязательно!!! ) :
jf @cheat_master
Получается :
{$CLEO .cs}
gosub @cheat_master
:cheat_master
wait 0
if 0AB0: key_pressed 109
jf @cheat_master
Сейчас пишем код :
0AF8: «Hello World!» color 0xFFFFFF // 0xFFFFFF — это ваш цвет сообщение //
И у нас получается :
{$CLEO .cs}
gosub @cheat_master
:cheat_master
wait 0
if 0AB0: key_pressed 109
jf @cheat_master
0AF8: «Hello World!» color 0xFFFFFF // 0xFFFFFF — это ваш цвет сообщение //
Все! Чтобы скомпилировать нажимаем F6
Если вы сделали все правильно и Sanny Builder не выдал ни ошибка!
То я вас поздравляю вы сделали свой первый Cleo-Скрипт!
Заходим в игру и нажимаем кнопку «Минус» и у нас в чате высветиться сообщение «Hello World»
Если кому-то я помог выдайте репутацию пожалуйста
Что такое скриптинг?
От слова script – сценарий, то есть последовательность каких-либо действий. А скриптинг – процесс создания этой последовательности. Для GTA это значит: писать миссии либо более простые вещи (например, давать игроку новые возможности). Тех, кто пишет скрипты, называют скриптерами. Основа любого скрипта – это опкоды (операционные коды), а они сами базируются на переменных, в которые записываются нужные для правильной работы скрипта значения (цифровые, то есть числа целые 1, 2, -1, -2… либо дробные, обязательно с точкой 1.2, -2.3; или аналоговые, то есть люди, авто, объекты). Могут иметь вид 0@, 1@, 2@…33@ или $0, $1, $2… или $»текст на латинице без пробелов и кавычек». Разница между @ и $ такая: первые переменные действуют лишь в рамках одного скрипта (или потока), а вторые можно спокойно использовать на всём протяжении main.scm (наглядный пример: $PLAYER_CHAR).
Как записать значение в переменную?
2@ = 0 // в переменную 2@ записан нуль
00BF: $1 = current_time_hours, $2 = current_time_minutes // в переменные $1, $2 записано текущее игровое время (часы, минуты соответственно).
009A: 2@ = create_actor_pedtype 4 model #MALE01 at 0.0 0.0 0.0 // в переменную 2@ записан актёр
00A5: 0@ = create_car #PONY at 0.0 0.0 0.0 // в переменную 0@ записана машина
Переменную, в которую записывают актёра или авто, принято называть именем. Т.е. в примерах выше 2@ – имя актёра, 0@ – имя транспорта.
Как открыть main.scm?
Самая удобная программа – Sanny Builder. Свежую версию можно найти на sannybuilder.com, и там же на форуме задать интересующий вопрос. Полезные советы: 1) если курсор стоит на модели (она отличается символом # в начале), то в нижней панели слева появляется ID; 2) в современном SB есть много ключевых слов, набрав которые и поставив точку, можно получить список доступных действий, например: Actor, Car, Model; 3) нажатие Сtrl+Alt+1 вызовет Редактор координат, где при запущенной игре будет отображаться текущее положение игрока, а также его можно использовать как телепорт; 4) нажатие Сtrl+Alt+2 вызовет список опкодов; 5) если компиляция скрипта выдала ошибку, не спеши кликать ОК, если не знаешь причину бага, а нажми для начала Помощь; 6) при первом запуске программы нажми F10 или зайди в Сервис > Настройки и выбери себе язык и обязательно укажи папку GTA SA.
Как писать миссии?
Подробная справка прилагается к SB. Вызвать можно нажатием F12 или Справка > Помощь.
Как припарковать транспорт и поставить пикап?
Проще через IPL, но некоторым не нравится, что там иногда угол поворота машины бывает не тот, который нужен. И главное: для этих опкодов модель загружать не нужно.
09E2: 0@ = parked_car_generator_w_numberplate #BF400 -1 -1 0 alarm 0 door_lock 0 0 10000 plate «HOMEP_69» at X Y Z angle 0.0 // или…
014B: 0@ = init_parked_car_generator #BF400 -1 -1 1 alarm 0 door_lock 0 0 10000 at X Y Z angle 0.0 // 0@ – имя автогенератора, #BF400 – модель авто (можно писать ID, т.е. в данном случае 581), 2 цифры далее – цвет, X Y Z – координаты, 0.0 – угол; plate – номерной знак (в кавычках, не больше 8 латинских символов)
014C: set_parked_car_generator 0@ cars_to_generate_to 101 // это включает генератор, если вместо 101 написать 0, машина появляться не будет
Для пикапа:
0213: $0 = create_pickup #INFO type 3 at X Y Z // обычный пикап-значок
032B: $0 = create_weapon_pickup #teargas type 15 ammo 15 at X Y Z // оружие
$0 – имя пикапа, #INFO и #teargas – модель (оружие или значок, можно ID); type – тип (3 – одноразовый, 15 – многоразовый); ammo – количество боеприпасов; X Y Z – координаты
Как изменить оружие банд и число гангстеров в определённом районе?
0237: set_gang 0 weapons_to 23 32 1 // 0 – ID банды (0 == Ballas, 1 == Grove Street Families, 2 == Los Santos Vagos, 3 == San Fierro Rifa, 4 == Da Nang Boys, 5 == Mafia, 6 == Mountain Cloud Triad, 7 == Varrio Los Aztecas); 23 32 1 – это оружие (0 – кулaки, 1 – кастет, 2 – клюшка для гольфа, 3 – дубинка для копов, 4 – ножик, 5 – бита, 6 – лопата, 7 – кий, 8 – кaтaнa, 9 – пила, с 10 до 14 – дилдо и цветы, 15 – трость, 16 – гранаты, 17 – слезоточивый газ, 18 – мoлoтoвы, 22 – пистолет, 23 – с глушаком, 24 – Desert Eagle, 25 – дробоган, 26 – обрез, 27 – мощный дробоган, 28 – Mac 10, 29 – MP5, 30 – AK47, 31 – M4, 32 – Tec9, 33 – винтовка, 34 – снайперка, 35 – РПУ, 36 – ракетница с самонаводкой, 37 – огнемёт, 38 – старый добрый Mиниган, 41 – баллончик с краской, 42 – огнетушитель)
076C: set_zone ‘SUN1’ gang 1 density_to 30 // SUN1 – имя района (см. в Справке SB: Документация по SCM > GTA SA > Типы зон); 1 – знакомый ID; 30 – плотность (в процентах от населения этого района)
Какие есть особые опкоды?
015D: set_gamespeed 0.0 // скорость игры (1.0 – обычная; этот опкод используется в режиме Bullet Time)
01EB: set_traffic_density_multiplier_to 0.0 // отключает движение на дорогах
0110: clear_player $PLAYER_CHAR wanted_level // очистить уровень розыска
01F7: set_player $PLAYER_CHAR ignored_by_cops 1 // копы игнорируют
02AB: set_actor $PLAYER_ACTOR immunities BP 1 FP 1 EP 1 CP 1 MP 1 // установить иммунитет
0330: set_player $PLAYER_CHAR infinite_run 1 // бесконечный спринт
0331: set_player $PLAYER_CHAR fast_reload 1 // быстрая перезарядка оружия (не у всех видов)
0335: enable_free_respray 1 // халявные перекраски
03BF: set_player $PLAYER_CHAR ignored_by_everyone 1 // все игнорируют
03DE: set_pedestrians_density_multiplier_to 0.0 // отключает людской поток на улицах
055D: make_player $PLAYER_CHAR fireproof 1 // огнеупорность
0572: enable_taxi_nitros 1 // все такси с азотоускорением
0629: change_integer_stat 181 to 4 // можно свободно гулять по SA без звёзд розыска
0631: put_actor 0@ in_group $PLAYER_GROUP // актёр будет следовать за игроком
0632: release_group $PLAYER_GROUP // отпустить актёров из группы
06C8: enable_riot 1 // включает бунт (только в LS)
06D0: enable_emergency_traffic 0 // отключает спецслужбы
07A7: put_jetpack_on_actor $PLAYER_ACTOR // джетпак
0879: enable_gang_wars 1 // включает войну за территории
08C6: set_actor $PLAYER_ACTOR stay_on_bike 1 // игрок не падает с байка
08FD: enable_heat_visuals 1 // включение (0 – выключение) эффекта «жарка» при высокой температуре окружающей среды
09C7: change_player $PLAYER_CHAR model_to #MODEL // замена своей модели (сначала надо загрузить новую)
09E6: set_burglary_houses_accessible 1 // доступ в жилые дома
09E9: car 3@ add_single_nitro // одноразовый нитроазот
0A24: enable_military_zones_wanted_level 1 // отключение охраны на военных зонах
0A3D: enable_prostitutes_pay_you 1 // шлюхи платят тебе
Как убрать эффект NFS MW в моде Night Crimes?
1) открыть в SB файл data/script/main.scm
2) найти строку create_thread @Noname_9 (Сtrl+F)
3) удалить либо закомментировать (Сtrl+Q), чтобы игра игнорировала поток Noname_9
4) компилировать (F6) и запустить игру (F8)
P.S. Для проверки, тот ли это поток, найди Noname_9, там должно быть написано
02E3: 12@ = car $11883 speed
if
12@ >= 30.0
else_jump @Noname_9
Как изменить количество денег?
0109: player $PLAYER_CHAR money += X // X – положительное или отрицательное целое число, в зависимости от которого денег прибавят или отнимут
Как сделать, чтобы актёр или автомобиль шёл по определённому пути?
05D6: clear_scmpath
05D7: add_point_to_scmpath X Y Z // X Y Z – координаты добавляемой точки в маршруте
05D8: AS_assign_scmpath to_actor $PLAYER_ACTOR flags 4 0 // для актёра: 4 – скорость (до 7)
06BB: set_actor -1 drive_car 1@ speed 10.0 along_SCM_path // для машины: 10.0 – скорость
Как выбрать случайного пешехода?
:Noname
wait 0
if and
06FF: any_ped_near_actor $PLAYER_ACTOR in_range 20.0 // радиус
Player.Defined($PLAYER_CHAR)
else_jump @Noname
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to -1 closest_ped_to 1@
if
not 1@ == -1
else_jump @Noname
Как сделать чтобы банды не приставали?
0746: set_acquaintance 1 of_actors_pedtype 7 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 8 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 9 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 10 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 11 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 12 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 13 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 14 to_actors_pedtype
Как сделать актёра другом или врагом?
077A: set_actor $Actor acquaintance 4 to_actors_pedtype 0 // acquaintance бывают такие: 1 – уважение, 2 – симпатия, 3 – неприязнь, 4 – вражда
Что такое CLEO?
Библиотека CLEO шагнула в новое измерение, и перед нами четвертая версия этого проекта. Теперь библиотека CLEO поддерживает игры GTA III и GTA VC, что это открывает новые возможности для разработчиков скриптов на данных платформах.
Возможности
• Новые опкоды
CLEO 4 имеет в наличии 100 полезных опкодов, которые позволяют работать с внешними файлами, изменять данные в памяти игры, вызывать игровые функции со своими параметрами, а также многое другое. В четвертой версии появились новые опкоды для работы со звуками, форматирования текста, была добавлена возможность выводить на экран тексты без использования внешних текстовых файлов (.gxt, .fxt). Чтобы оценить новые достижения и использовать их в ваших скриптах, установите последнюю версию библиотеки CLEO 4.
• Плагины
CLEO-плагины — это обычные DLL-файлы, но имеющие расширение .CLEO. При запуске библиотека CLEO ищет в папке <игра>CLEO файлы с данным расширением и пытается загрузить их. В случае удачной загрузки плагин начинает работать и выполнять те функции, для которых он написан.
CLEO 4 позволяет создавать новые опкоды, используя исходные коды CLEO SDK. В стартовом комплекте библиотеки можно найти три примера таких плагинов:
• IniFiles.cleo — работа с INI файлами;
• FileSystemOperations.cleo — работа с файлами и папками.
• IntOperations.cleo — битовые операции над целыми
Процедура установки плагина очень проста: просто скопируйте файл в папку <игра>CLEO. Чтобы прекратить пользование плагином — удалите файл или измените его расширение. Список доступных плагинов можно найти на этой странице.
• Добавление скриптов
Начиная с CLEO 3, в игру можно добавлять новые скрипты, написанные в редакторе Sanny Builder, без необходимости начала новой игры. Все, что требуется для добавления такого скрипта в игру — это поместить его в папку <игра>CLEO. После запуска новой или сохраненной игры скрипт начнет работу. Для удаления скрипта из игры — удалите соответствующий файл.
CLEO 4 разрабатывалась для трех версий exe: 1.0 us, 1.0 eu и 1.01 eu. Таким образом, существует 8 разных exe, с которыми совместима библиотека:
Оригинальное имя
Описание
Версия игры
Размер
gta_sa.exe
оригинальный 1.0 us
1.0
14 405 632 байт
gta_sa.exe
публичный no-dvd 1.0 us
1.0
14 383 616 байт
gta_sa_compact.exe
listener’s exe
1.0
5 189 632 байт
gta_sa.exe
оригинальный 1.01 eu
1.01
14 405 632 байт
gta_sa.exe
публичный no-dvd 1.01 eu
1.01
15 806 464 байт
gta_sa.exe
версия от 1С
1.01
15 806 464 байт
gta_sa.exe
оригинальный 1.0 eu
1.0
неизвестно
gta_sa.exe
публичный no-dvd 1.0 eu
1.0
14 386 176 байт
Установка
СLEO 4 распространяется в виде автоматического инсталлятора. Для установки библиотеки запустите инсталлятор и следуйте его инструкциям.
CLEO 4 использует 3 файла в работе: vorbisFile.dll, vorbishooked.dll, cleo.asi.
CLEO 4 для San Andreas для проигрывания звуковых файлов требует установленной библиотеки BASS.dll версии 2.4, которую можно скачать с официального сайта Un4seen Developments Ltd. Устанавливается BASS.dll очень просто — нужно просто скопировать файл bass.dll в корневую директорию игры GTA San Andreas.
Распространение библиотеки CLEO
Если вы написали скрипт, использующий библиотеку CLEO и (или) ее плагины, вы можете также распространять вместе с ним необходимые файлы. Вы можете указать ссылку на данную страницу, чтобы пояснить, как необходимо пользоваться библиотекой и сопутствующими файлами.
Версия 7.5 дарит возможность генерировать CLEO-скрипты! Принцип написания скриптов и основные возможности не отличаются от основной ветки генератора. Но в этом режиме есть некоторые особенности, о которых стоит рассказать.
Подключение и настройка написана в разделе
Установка и настройка. Компиляция скриптов
. Главное отличие в этой настройке: нам надо подключать библиотеки GTA.III.CLEO
, GTA.VC.CLEO
или GTA.SA.CLEO
. Также здесь нужно указывать папку с игрой, так как метод SetMainSCMFolder недоступен:
static void Main( string[] args ) {
// Куда сохранять FXT-файлы
Generator.SetFXTFolder( @»D:ProgrammGTA_SA Career v2.0modloaderwmysteriocleocleo_text» );
Generator.SetGTAFolder( @»D:ProgrammGTA_SA Career v2.0″ );
Generator.SetSannyBuidlerFolder( @»D:ProgrammSanny Builder 3″ );
//Generator.Start<MAIN>();
Generator.Compile<MAIN>( false );
Между символами <
и >
указывается тип, который наследует Thread
, Mission
или MissionCustom
. Чтобы создать CLEO-поток, достаточно этого кода:
public class MAIN : Thread {
public override void START( LabelJump label ) {
Мы видим, что никак отличий в коде в сравнении с MAIN.scm потоком не наблюдается. Команда end_thread
будет заменена на опкод 0A93: end_custom_thread
. Такие же манипуляции будут с другими командами, которые используются только в CLEO.
Обратите внимание на название класса. Генератор будет использовать его как название файла. Особых ограничений на название не накладывается, но рекомендую использовать прописные символы в имени класса.
По умолчанию скрипт компилируется с расширением CS или СМ в папку ИГРАCLEO
. Если нужно изменить эти свойства, то здесь используется система атрибутов:
public class MAIN : Thread {
public override void START( LabelJump label ) {
Всего таких атрибутов 3; Вы можете использовать только те, которые нужны, игнорируя остальные. Код выше сохранит скрипт по этому пути: ИГРАCLEONEW_DIRMAIN.H
.
Убедитесь, что путь содержит все нужные папки на жестком диске!
Атрибут EnableThreadSaving
реализует опкод 0A95
, но без его явного вызова. Этот атрибут, как и Extension
, не применяется к миссиям и будет игнорироваться.
Компиляция нескольких скриптов
Компиляция нескольких скриптов
Если есть необходимость компиляции целой пачки скриптов, то нам достаточно несколько раз вызывать метод Compile:
Generator.Compile<SCRIPT1>();
Generator.Compile<SCRIPT2>();
Generator.Compile<SCRIPT3>();
Generator.Compile<SCRIPTN>();
Обратите внимание, что если использовать команду
create_thread<SCRIPT_NAME>();
то поток SCRIPT_NAME будет включен в финальную сборку и скомпилируется самостоятельно вместе с исходным скриптом!
Вам нужно скачать программу по имени «Sanny Builder» ее надо установить.
Затем нам надо перейти к функции добавляем :
У нас теперь получается :
И чтобы нас не крашило когда мы выполняем функцию
Пишем после функции «:cheat_master» :
wait 0
Чтобы на нажатии например кнопки минус наш код выполнялся пишем после этих проделанных действие :
if 0AB0: key_pressed 109
Потом пишем ( обязательно. ) :
Все! Чтобы скомпилировать нажимаем F6
Если вы сделали все правильно и Sanny Builder не выдал ни ошибка!
То я вас поздравляю вы сделали свой первый Cleo-Скрипт!
Заходим в игру и нажимаем кнопку «Минус» и у нас в чате высветиться сообщение «Hello World»
Источник
Руководство по скриптингу
Что такое скриптинг?
Как открыть main.scm?
Самая удобная программа – Sanny Builder. Свежую версию можно найти на sannybuilder.com, и там же на форуме задать интересующий вопрос. Полезные советы: 1) если курсор стоит на модели (она отличается символом # в начале), то в нижней панели слева появляется ID; 2) в современном SB есть много ключевых слов, набрав которые и поставив точку, можно получить список доступных действий, например: Actor, Car, Model; 3) нажатие Сtrl+Alt+1 вызовет Редактор координат, где при запущенной игре будет отображаться текущее положение игрока, а также его можно использовать как телепорт; 4) нажатие Сtrl+Alt+2 вызовет список опкодов; 5) если компиляция скрипта выдала ошибку, не спеши кликать ОК, если не знаешь причину бага, а нажми для начала Помощь; 6) при первом запуске программы нажми F10 или зайди в Сервис > Настройки и выбери себе язык и обязательно укажи папку GTA SA.
Подробная справка прилагается к SB. Вызвать можно нажатием F12 или Справка > Помощь.
Как припарковать транспорт и поставить пикап?
Какие есть особые опкоды?
Как убрать эффект NFS MW в моде Night Crimes?
Как изменить количество денег?
Как сделать, чтобы актёр или автомобиль шёл по определённому пути?
Как выбрать случайного пешехода?
Как сделать чтобы банды не приставали?
0746: set_acquaintance 1 of_actors_pedtype 7 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 8 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 9 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 10 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 11 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 12 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 13 to_actors_pedtype 0
0746: set_acquaintance 1 of_actors_pedtype 14 to_actors_pedtype
Как сделать актёра другом или врагом?
Библиотека CLEO шагнула в новое измерение, и перед нами четвертая версия этого проекта. Теперь библиотека CLEO поддерживает игры GTA III и GTA VC, что это открывает новые возможности для разработчиков скриптов на данных платформах.
• Плагины
CLEO 4 разрабатывалась для трех версий exe: 1.0 us, 1.0 eu и 1.01 eu. Таким образом, существует 8 разных exe, с которыми совместима библиотека:
Оригинальное имя | Описание | Версия игры | Размер |
gta_sa.exe | оригинальный 1.0 us | 1.0 | 14 405 632 байт |
gta_sa.exe | публичный no-dvd 1.0 us | 1.0 | 14 383 616 байт |
gta_sa_compact.exe | listener’s exe | 1.0 | 5 189 632 байт |
gta_sa.exe | оригинальный 1.01 eu | 1.01 | 14 405 632 байт |
gta_sa.exe | публичный no-dvd 1.01 eu | 1.01 | 15 806 464 байт |
gta_sa.exe | версия от 1С | 1.01 | 15 806 464 байт |
gta_sa.exe | оригинальный 1.0 eu | 1.0 | неизвестно |
gta_sa.exe | публичный no-dvd 1.0 eu | 1.0 | 14 386 176 байт |
СLEO 4 распространяется в виде автоматического инсталлятора. Для установки библиотеки запустите инсталлятор и следуйте его инструкциям.
CLEO 4 использует 3 файла в работе: vorbisFile.dll, vorbishooked.dll, cleo.asi.
Распространение библиотеки CLEO
Если вы написали скрипт, использующий библиотеку CLEO и (или) ее плагины, вы можете также распространять вместе с ним необходимые файлы. Вы можете указать ссылку на данную страницу, чтобы пояснить, как необходимо пользоваться библиотекой и сопутствующими файлами.
Источник
Как написать клео самп
Нужно уверенно знать:
Как начать писать скрипты:
Уроков по основам скриптинга на павне не так уж много, и не такие они ёмкие.
Почитайте о таком языке как PHP и других подобных, они похожи между собой, да и знания не помешают.
Желаю Вам удачи и успехов в написании скриптов.
P.S. Данная статья, возможно, будет дополнена.
— Вот ты говорил, город — сила, а здесь слабые все.
— Город — это злая сила. Сильный приезжает — становится слабым. Город забирает силу. Вот и ты пропал…© Брат
— Разве вы не хотели бы жить вечно?
— Если в моде останутся штаны со стрелками то нет.© X-Files
Источник
Как написать клео самп
1. Собственно, как же делать эти скриптики и что вообще для этого нужно? Для начала нужно зайти на сайт http://sannybuilder.com/ и скачиваем оттуда свежий Sanny Builder и библиотеку Cleo 3.
Итак, чтобы наш скрипт шел отдельно от main.scm, вставляем такое вот в начале скрипта:
Как вы наверняка заметили, мануал учит вас создавать потоки так:
и закрывать его так:
так вот, при создании клео-скрипта закрывать поток не нужно, а открывается он просто вот так:
В скриптах вы можете помечать для себя что-либо, чтобы не забыть вот так: // заметка. Например вы создаете поток:
Как вы заметили там есть wait 0 всегда вставляйте эту строчку, иначе игра может вылететь.
А теперь приведу пример простенького скрипта, дающего броню при нажатии Num+
Как вы можете заметить в скрипте есть jf @Armour и jump @Armour, так вот из-за этого скрипт повторяемый :), для того, чтобы не выдало ошибку при компилировании скрипта, мы и вставляли в начале 0000: NOP
Тут может быть не очень понятно, так оно и есть, но у вас в руках есть отличный мануал. ах дааа, главное чуть не забыл. Откуда же я узнал, что клавииша Num+ имеет номер 107. В мануале написано про клавиши, но это про main.scm, а мы делаем клео сприпт. Чтобы узнать код нужной вам клавиши жмем в SannyBuilder`е Справка-Помощь-CLEO 3 Code Library-Список значений кнопок для 0AB0. В графе Decial нужный нам код, напротив название клавиши.
Рекомендую открывать чужие простенькие скриптики и разбираться в них. ТАк вы поймете всё быстрее. Откройте напимер мой скрипт AutoHydravlic, там при нажатии F5 на машину устанавливается гидравлика. Откройте, посмотрите. Скачать можете в соседней теме.
Ну а для загрузки Запуск-Декомпилировать. Дерзайте smile И еще раз, рекомендую сперва попросматривать чужие скриптики. cool
Copyright Lomtik
Кто хочет забанить Витю ставьте + в репу!
Источник
Уроки CLEO. Урок №1: ставим персонажа на локацию
1. Предыстория
2. Программы
3. Находим персонажа
4. Ставим персонажа
Все вы наверняка хотите научиться делать CLEO-скрипты. Этот урок поможет вам воплотить мечту в реальность. Но это не очень быстро и легко!
Чтобы научиться делать годные скрипты потребуются месяцы или даже годы. Но не буду вас расстраивать, у вас всё точно получится! Это первый урок из нескольких.
В этом разделе я познакомлю вас с программами, которые нужны для создания мода.
Нам понадобятся: Sanny Builder 3 (создание скриптов) и Ped Editor (просмотр моделей персонажей).
3. Находим персонажа
Теперь нам предстоит найти название персонажа. Когда вы откроете Ped Editor, у вас появится интерфейс программы.
Теперь пролистайте строку с персонажами вниз и найдите подходящего. В моём случае это HMORI.
Не закрывая программу, открываем Sanny Builder 3, в которой будем создавать уже сам скрипт, который поставит персонажа на локацию.
3. Ставим персонажа
Теперь пришло время самым интересным действиям — созданию CLEO-cкрипта. Когда вы открыли окно, вы увидите лишь пустой экран. Но нажмите вот на этот значок: .
Появится уже немного другое окно, выглядит как простой текстовый документ:
В первой строке нам нужно лишь написать:
Это начало скрипта. Потом нужно написать переход и проверку загрузки персонажа:
:NONAME_1
Model.Load(здесь указывается название модели персонажа после символа «#», в моём случае это: #HMORI)
038B: load_requested_models
Это место, куда должен быть поставлен персонаж и угол разворота.
Чтобы узнать эти координаты, нужно зайти в игру. Просто нажмите на , и игра запустится без титров, так быстрее.
Далее загружаем игру, выходим на улицу, встаём на нужное место и скрываем игру.
Разворачиваем Sanny Builder 3, ставим курсор после «CivMale, #HMORI,». Потом нажимаем Shift+Ctrl+C. Координаты будут вставлены. В моём случае это вот так выглядит:
А там, где написано «Actor.Angle([email protected]) =», нужно нажать Shift+Ctrl+E и появится угол разворота игрока. Вот так получится:
В конце мы также поставили метку окончания скрипта (end_thread)
Всё, теперь скрипт закончен и игра не вылетит! Можно конвертировать скрипт и посмотреть что получилось, для этого нажмите на или F6.
Далее назовите свой файл и сохраните. Если вылетела ошибка, значит вы сделали что-то неправильно! Перепроверьте это:
Всё, заходим в игру.
Выбранный персонаж стоит.
В следующем уроке мы будем назначать персонажу анимацию.
Источник
Adblock
detector
Эйоу, здарова гитта тащер.
Сегодня мы будем учиться делать cleo скрипты.
С помощью cleo можно сделать: Миссию и обычный скрипт.
Хорош воду гнать, го учиться.
Подготовка:
-ПК(консолька не подойдет 🙁 )
-ЖТА:СА на твой ПэКа
-Android
-ЖТА:СА на твой Android
-Cleo библиотека на твою ЖТА:СА на Android(Сам ищи)
-Cleo библиотека на твою ЖТА:СА на пк(https://www.cleo.li)
-Sanny Builder(SannyBuilder.com)
-Руки из правильного места и чучуть мозгов(вроде-бы у всех есть)
И так подготовка закончена.
Теперь ставишь ЖТА, cleo и Билдер, после чего открываешь санный билдер, БЕАЧ
Указываешь в настройках место где у тебя стоит ЖТА.
И все ты готов.
Теория(можно не читать):
*.cs — Custom Script — основной вид скриптовтов для ПК версии ГТА
*.cm — Custom Mission — основной вид внешних миссий для ПК версии ГТА
*scm — Хз как расшивровать, но тут сам игровой скрипт, но мы не будем им пользоваться(все внутрении миссии, пикапы и прочее)
*.csa — Custom Script Android — Автозагружаемый вид скриптов для Android версии ГТА
*.csi — Custom Script I(что на i) — Вызываемый(через cleo menu) вид скриптов для Android версии ГТА
Теория кончилась.
Практика:
Открываешь SB.
Жмакаешь Contol+N.
Тут типа надо скрипт писать, кекъ
Ну пишешь значит:
{$Cleo .формат} форматы читай выше,scm не используй
Эта строчка позволяет компилятору узнать, что ему копмилировать и в каком формате.
Дальше
0000:
«0000» — это операционный код(опкод), «:» — это отделение опкода от аргументов. У данного опкода нету аргументов, посему мы ничего не пишим.
Этот опкод нужен, что бы избежать ошибки при прыжке на первую метку.
Но лучше его писать всегда.
thread «MyFirstScritp»
Это можно и не писать, но лучше написать, потом объясню зачем это нужно
И в конец end_thread.
Это что бы когда скрипт закончит свою работу игра не вылетала
Все, первый скрипт готов, но он не сохранен.
Жмем F6 и указываем путь. У меня это «C:Program Files (x86)Advance RolePlaySan Andreas Multiplayercleo»
И название не забудь. Желательно, что бы название совпадало с тем, что написано в thread
Все, скрипт готов, но он ни чего не делает:(. НАДО ИСПРАВИТЬ!
Можно например написать(между thread и end_thread):
Player.Money($PLAYER_CHAR) += 228
или
0109: player $PLAYER_CHAR money += 100
Это одно и тоже. У некоторых опкодов есть более человеко-понятный вид
Теперь разберем:
0109 — опкод.
: — разделение опкода и аргументов.
player — это часть описания опкода, что бы сделать его понятнее, можно не писать(это не аргумент)
$Player_Char — глобальная переменная отвечающая за данные игрока. (это аргумент)
money — это часть описания опкода, что бы сделать его понятнее, можно не писать(это не аргумент)
+= — это действие которое неободимо совершить. (это необходимо писать)
100 — это операнд, количество денег.
И разберем первый вариант:
Player — это сложно объяснить, но это нужно.
Money — это то, что мы будем изменять
$Player_Char — глобальная переменная отвечающая за данные игрока. (это аргумент)
+= — это действие которое неободимо совершить. (это необходимо писать)
228 — это операнд, количество денег.
Итог:
-У нас есть программы для скриптинга
-У нас есть небольшой, но рабочий скрипт.
-Мы знаем уже два опкода.
-
#1
Создание собственного скрипта анимаций.
Для этого нам нужны будут Sanny Builder 3(дальше SB), обновленные файлы базы опкодов Cleo 4(Как установить будет описано в архиве), инклуд клавиш(Как установить будет описано в архиве), Anim manager, любой скин игрока и прямые руки.
Немного информации. Анимации в GTA SA храняться в трех местах. Это ped.ifp, anim.img и gta3.img. Анимации с anim.img такие самые, как в gta3.img. Так что в скриптах используются анимации с ped.ifp и gta3.img
Теперь перейдем к поиску анимации. Для начала будем их искать в ped.ifp. Открываем Anim manager, загружаем в него наш скин. Для на панели инструментов выбераем «Preview» и нажимаем «Load model«. Скрин.
Теперь открываем ped.ifp и видем такой список. В нем есть 3 вещи, которые нам нужны. Это названия архива анимаций, название анимации и время анимации. После того как выбрали анимацию запихиваем её в скрипт. Я уже написал небольшой скрипт, который уже готовый для компилирования.
{$CLEO} //Пишем это для того, чтобы у нас при компилировании скрипт был формата CS, а не scm. SCM-скрипты не работают в сампе.
{$include includesvk_keys.txt} //Подключаем инклуд для того, чтобы не смотреть значения клавиш в справке SB
0000://Пмшем это для того, чтобы у нас при компилировании скрипта не было ошибки "Переход на нулевой оффсет"
while true
wait 0
if and//Данная строка проверяет условия для дальнейшей работы скрипта.
0AB0: key_pressed VK_SHIFT //Нажата клавиша Левый Шифт
0AB0: key_pressed VK_3 //Нажата клавиша 3
not actor.Driving($PLAYER_ACTOR) //Игрок не за рулем
Player.CanMove($PLAYER_CHAR) = True //Игрок может двигаться. Это условие пишем, чтобы мы не могли использовать анимацию под тазером.
then //Если все условия выполнены, то скрипт идет дальше.
Player.CanMove($PLAYER_CHAR) = True
0812: AS_actor $PLAYER_ACTOR perform_animation "DOOR_LHINGE_O" IFP_file "PED" 50.0 loopA 0 lockX 0 lockY 0 lockF 1 time 90 //Где $PLAYER_ACTOR - это глобальная переменная ped'a которым мы играем с SAMP. DOOR_LHINGE_O - название анимации, "PED" - где именно храниться анимация. 50.0, 0, 0, 0, 1 - я сам не знаю, что это. 90 - время проигрывания анимации. Его мы узнаем в anim manager.
end//Заканчиваем проверку условий
end
.
Компилируем(Нажимем F6 или «Запуск» -> «Компилировать») и проверяем в игре.
Теперь будем искать анимации в gta3.img. Ищем их так же само, как и в ped.ifp. После того, нашли анимацию ставляем это в SB.
{$CLEO} //Пишем это для того, чтобы у нас при компилировании скрипт был формата CS, а не scm. SCM-скрипты не работают в сампе.
{$include includesvk_keys.txt} //Подключаем инклуд для того, чтобы не смотреть значения клавиш в справке SB
0000://Пишем это для того, чтобы у нас при компилировании скрипта не было ошибки "Переход на нулевой оффсет"
while true
wait 0
if and//Данная строка проверяет условия для дальнейшей работы скрипта.
key_pressed VK_SHIFT //Нажата клавиша Левый Шифт
key_pressed VK_3 //Нажата клавиша 3
not actor.Driving($PLAYER_ACTOR) //Игрок не за рулем
Player.CanMove($PLAYER_CHAR) = True //Игрок может двигаться. Это условие пишем, чтобы мы не могли использовать анимацию под тазером.
then //Если все условия выполнены, то скрипт идет дальше.
04ED: load_animation "ON_LOOKERS" //Загружаем архив анимаций.
if //Если
04EE: animation "ON_LOOKERS" loaded //Архив анимаций загружен.
then //Тогда
0615: define_AS_pack_begin 18@ //
0605: actor -1 perform_animation_sequence "LKAROUND_IN" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_LOOP" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_LOOP" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_OUT" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0616: define_AS_pack_end 18@
0618: assign_actor $PLAYER_ACTOR to_AS_pack 18@
061B: remove_references_to_AS_pack 18@
04EF: release_animation "ON_LOOKERS"
end
end//Заканчиваем проверку условий
end
Этот скрипт будет проигрывать вот такую анимацию по нажатию клавиш Левый Шифт и 3. В нем меняем только клавиши, архив анимаций и название анимаций.
Теперь как совместить несколько анимаций. Пример.
{$CLEO} //Пишем это для того, чтобы у нас при компилировании скрипт был формата CS, а не scm. SCM-скрипты не работают в сампе.
{$include includesvk_keys.txt} //Подключаем инклуд для того, чтобы не смотреть значения клавиш в справке SB
0000://Пишем это для того, чтобы у нас при компилировании скрипта не было ошибки "Переход на нулевой оффсет"
while true
wait 0
//Начало первой анимации
if and//Данная строка проверяет условия для дальнейшей работы скрипта.
key_pressed VK_SHIFT //Нажата клавиша Левый Шифт
key_pressed VK_2 //Нажата клавиша 2
not actor.Driving($PLAYER_ACTOR) //Игрок не за рулем
Player.CanMove($PLAYER_CHAR) = True //Игрок может двигаться. Это условие пишем, чтобы мы не могли использовать анимацию под тазером.
then //Если все условия выполнены, то скрипт идет дальше.
04ED: load_animation "ON_LOOKERS" //Загружаем архив анимаций.
if //Если
04EE: animation "ON_LOOKERS" loaded //Архив анимаций загружен.
then //Тогда
0615: define_AS_pack_begin 18@ //
0605: actor -1 perform_animation_sequence "LKAROUND_IN" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_LOOP" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_LOOP" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_OUT" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0616: define_AS_pack_end 18@
0618: assign_actor $PLAYER_ACTOR to_AS_pack 18@
061B: remove_references_to_AS_pack 18@
04EF: release_animation "ON_LOOKERS"
end
end//Заканчиваем проверку условий
//Конец первой анимации
//Начало второй анимации
if and//Данная строка проверяет условия для дальнейшей работы скрипта.
0AB0: key_pressed VK_SHIFT //Нажата клавиша Левый Шифт
0AB0: key_pressed VK_3 //Нажата клавиша 3
not actor.Driving($PLAYER_ACTOR) //Игрок не за рулем
Player.CanMove($PLAYER_CHAR) = True //Игрок может двигаться. Это условие пишем, чтобы мы не могли использовать анимацию под тазером.
then //Если все условия выполнены, то скрипт идет дальше.
Player.CanMove($PLAYER_CHAR) = True
0812: AS_actor $PLAYER_ACTOR perform_animation "DOOR_LHINGE_O" IFP_file "PED" 50.0 loopA 0 lockX 0 lockY 0 lockF 1 time 90 //Где $PLAYER_ACTOR - это глобальная переменная ped'a которым мы играем с SAMP. DOOR_LHINGE_O - название анимации, "PED" - где именно храниться анимация. 50.0, 0, 0, 0, 1 - я сам не знаю, что это. 90 - время проигрывания анимации. Его мы узнаем в anim manager.
end//Заканчиваем проверку условий
//Конец первой анимации
end
Чтобы вам не мучаться я написал готовые части скрипта. Их вставляем как показанно на примере выше.
Для анимаций с ped.ifp
//Начало анимации
if and
0AB0: key_pressed Клавиша
0AB0: key_pressed Клавиша
not actor.Driving($PLAYER_ACTOR)
Player.CanMove($PLAYER_CHAR) = True
then
Player.CanMove($PLAYER_CHAR) = True
0812: AS_actor $PLAYER_ACTOR perform_animation "Название анимации" IFP_file "PED" 50.0 loopA 0 lockX 0 lockY 0 lockF 1 time 90
end
//Конец анимации
Для анимаций с gta3.img
//Начало анимации
if and
key_pressed Клавиша
key_pressed Клавиша
not actor.Driving($PLAYER_ACTOR)
Player.CanMove($PLAYER_CHAR) = True
then
04ED: load_animation "Название архива анимации"
if //Если
04EE: animation "Название архива анимации" loaded
then //Тогда
0615: define_AS_pack_begin 18@ //
0605: actor -1 perform_animation_sequence "Название анимации" IFP_file "Название архива анимации" 4.0 loop 0 0 0 0 time -1
0616: define_AS_pack_end 18@
0618: assign_actor $PLAYER_ACTOR to_AS_pack 18@
061B: remove_references_to_AS_pack 18@
04EF: release_animation "Название архива анимации"
end
end
//Конец анимации
Sten_Smith
Гость
-
#2
Спасибо за урок помог хочу сделать свой собственный бот грузчик или же фермер
-
#3
dark ты ведт должен знать что данную анимку видищь тока ты.
Чтобы видели другие пакет отправлять надо.
-
#4
dark ты ведт должен знать что данную анимку видищь тока ты.
Чтобы видели другие пакет отправлять надо.
ЛОЛ
-
#5
Чё лол попробуй сделай.
-
#6
Чё лол попробуй сделай.
Если я сделаю, то с тебя касарь. Пнятненько?
-
#7
с ped слабо если ,не сделаешь с данными опкодами с тебя касарь.
-
#8
Вопрос захожу в игру, и варнинги много много много
-
#9
Вопрос захожу в игру, и варнинги много много много
Про что я и говорю.Там уже надо другой код.
-
#10
Про что я и говорю.Там уже надо другой код.
Не, все ебашит как надо, только что проверял:D
-
#11
С инклундом хорошо придумано