CLEO ПРОГРАММИРОВАНИЕ ДОБРО ПОЖАЛОВАТЬ , МЕНЯ ЗОВУТ АЛЕКСАНДР. ДАННАЯ КНИГА ДЛЯ ТЕХ , КТО ХОЧЕТ НАУЧИТЬСЯ ЯЗЫКУ ПРОГРАММИРОВАНИЯ CLEO. Х ОЧЕШЬ ПИСАТЬ СВОИ CLEO СКРИПТЫ ИЛИ ВОЗМОЖНО НАПИСАТЬ СВОИ МИССИИ В GTA SA?. ТОГДА ДОБРО ПОЖАЛОВАТЬ! ДЛЯ ТОГО , ЧТОБЫ ПИСАТЬ СКРИПТЫ (CLEO) НЕОБХОДИМА ПРОГРАММА S ANNY BUILDER . ЕЁ МОЖНО НАЙТИ В ИНТЕРНЕТЕ , ОНА СОВЕРШЕННО БЕСПЛАТНАЯ И ЕЩЁ НА РУССКОМ ЯЗЫКЕ . ДУМАЮ ПРОБЛЕМ СО СКАЧКОЙ ПРОГРАММЫ НЕ ВОЗНИКНЕТ . ЛИЧНО МЫ БУДЕМ УЧИТЬСЯ ДЕЛАТЬ CLEO СКРИПТЫ. НАУЧИТЬСЯ ДЕЛАТЬ МИССИИ МОЖНО ЧЕРЕЗ СПРАВКУ В САМОЙ ПРОГРАММЕ (ТАМ ВСЁ НА РУССКОМ ). ПОСЛЕ СКАЧКИ SB (SANNY BUILDER ), ТРЕБУЕТСЯ УСТАНОВИТЬ CLEO (НА МОМЕНТ НАПИСАНИЯ ЭТОЙ КНИГИ, ПОСЛЕДНЯЯ ВЕРСИЯ 4.3). ТЕПЕРЬ СКАЧИВАЕМ SAMPFUNKS. ЭТОТ ПЛАГИН УСТАНАВЛИВАЕМ В ПАПКУ С ИГРОЙ И БИБЛИОТЕКУ В SB. ЭТО КОНЕЧНО НЕ ОБЯЗАТЕЛЬНО , НО БЕЗ SAMP FUNKS ВЫ НЕ СМОЖЕТЕ НАПИСАТЬ КРУТЫЕ CLEO СКРИПТЫ (ДАЖЕ ЭЛЕМЕНТАРНО С ИСПОЛЬЗОВАНИЕМ КОМАНД ). В ЭТОЙ КНИГЕ МЫ БУДЕМ ИЗУЧАТЬ ТОЛЬКО ОСНОВЫ ПРОГРАММИРОВАНИЯ НА CLEO. А ТАКЖЕ ИЗУЧИМ ЧАСТО ИСПОЛЬЗУЕМЫЕ ФУНКЦИИ . ПОСЛЕ ЧЕГО , НАПИСАНИЕ ИНТЕРЕСНЫХ CLEO БУДЕТ ЛИШЬ ЗАВИСЕТЬ ОТ ВАШЕГО ОПЫТА И ФАНТАЗИИ . АКТУАЛЬНУЮ НА ДАННЫЙ МОМЕНТ ВЕРСИЮ SB МОЖНО СКАЧАТЬ ТУТ: SANNY BUILDER - http://vk.cc/4a3WYY АВТОР – [CM]HIPS (СТАРЫЙ НИК – ANUGLEY ) СДЕЛАНО СПЕЦИАЛЬНО ДЛЯ САЙТА – CHEAT-MASTER.RU. ПЕРЕМЕННЫЕ КАК В ЛЮБОМ «НОРМАЛЬНОМ » ЯЗЫКЕ ПРОГРАММИРОВАНИЯ, В НЁМ ЕСТЬ ПЕРЕМЕННЫЕ. НО К СОЖАЛЕНИЮ В CLEO ПРОГРАММИРОВАНИИ ЕСТЬ ВСЕГО 33 ПЕРЕМЕННЫЕ (ОТ 0 ДО 33). ЧТО КАК РАЗ ГЛОБАЛЬНО ОГРАНИЧИВАЕТ ВОЗМОЖНОСТИ ПРИ СОЗДАНИИ CLEO СКРИПТОВ . ПЕРЕМЕННЫЕ В ЯЗЫКЕ ПРОГРАММИРОВАНИЯ НЕОБХОДИМЫ . БЕЗ НИХ ВЫ НЕ СМОЖЕТЕ СОЗДАТЬ CLEO СКРИПТЫ . НАВЕРНЯКА, ЕСЛИ ВЫ ЕЩЁ НЕ ИЗУЧАЛИ ЯЗЫКИ ПРОГРАММИРОВАНИЯ , СПРОСИТЕ : А ПОЧЕМУ?! ОТВЕТ ПРОСТ , КАК ИЗВЕСТНО, ПЕРЕМЕННЫЕ – ЭТО ЯЧЕЙКИ ПАМЯТИ , КОТОРЫЕ ХРАНЯТ В СЕБЕ ЧТО-ТО, ТО ЕСТЬ В ПЕРЕМЕННЫХ ХРАНИТЬСЯ ЛЮБАЯ ИНФОРМАЦИЯ ЗАНЕСЁННАЯ ЛИЧНО ВАМИ . Я ДУМАЮ ЭТО ВСЕМ ПОНЯТНО, ТАК КАК СКОРЕЕ ВСЕГО НА АЛГЕБРЕ ВЫ ЭТО КОГДА -ТО ПРОХОДИЛИ И ЗНАЕТЕ ЧТО ТАКОЕ ПЕРЕМЕННЫЕ . ПЕРЕМЕННЫЕ В ЯЗЫКЕ ПРОГРАММИРОВАНИЯ CLEO ОБОЗНАЧАЮТСЯ ЗНАКОМ «@». ТО ЕСТЬ УКАЗЫВАЕТСЯ ПРИМЕРНО ТАК : [НОМЕР ПЕРЕМЕННОЙ ]@. (ПРИМЕР : 3@). ДАВАЙТЕ ПОТРЕНИРУЕМСЯ , ДАВАЙТЕ СДЕЛАЕМ ЛЮБУЮ ФУНКЦИЮ С ИСПОЛЬЗОВАНИЕМ ПЕРЕМЕННЫХ. {$CLEO .cs} 0000: NOP repeat wait 0 until SAMP.Available() wait 1000 0B34: samp register_client_command "hips" to_label @hips repeat wait 0 until false :hips 0AF8: samp add_message_to_chat "Число: %s" color 0xFFFFFF 3@ 3@ == 5 Я НЕ ГОВОРИЛ ЧТО ЭТО БУДЕТ ЛЕГКО ДЛЯ ВАС. НА САМОМ ДЕЛЕ ЭТО ЭЛЕМЕНТАРНАЯ ФУНКЦИЯ . В БУДУЩЕМ, СОЗДАНИЕ ПОДОБНЫХ ФУНКЦИЙ НЕ СОСТАВИТ ДЛЯ ВАС ТРУДА . ТО ЕСТЬ , ПРИ ВВОДЕ КОМАНДЫ / HIPS, БУДЕТ ВЫВОД ТЕКСТА В ЧАТ , А ИМЕННО : «ВЫ ВВЕЛИ КОМАНДУ [ЦИФРА]». В ДАННОМ КОДЕ ПРИСУТСТВУЮТ ЦИКЛЫ, ОПКОДЫ И КОМАНДЫ . ОБ ЭТОМ ПОЗЖЕ . МОЖЕТ , КТО ПОНЯЛ , НО 3@ ЭТО И ЕСТЬ ПЕРЕМЕННАЯ. ТО ЕСТЬ КОМАНДА «samp register_client_command "hips" to_label @hips» ДАЁТ ПОНЯТЬ , ЧТО ПРИ ВВОДЕ КОМАНДЫ /HIPS ИДЁТ ПРЫЖОК НА МЕТКУ :HIPS И ОН СЧИТЫВАЕТ . ТО ЕСТЬ, МЫ ВВЕДЯ ТЕКСТ «3@ == 5» ДАЛИ ПОНЯТЬ ЧТО В ДАННОЙ ПЕРЕМЕННОЙ БУДЕТ ХРАНИТЬСЯ ЧИСЛО 5. И ВМЕСТО «%S» БУДЕТ ОТОБРАЖЕНО ЧИСЛО «5» ДУМАЮ ТЕПЕРЬ ВАМ ВСЁ ПОНЯТНО ОБ ПЕРЕМЕННЫХ, ДАВАЙТЕ ТЕПЕРЬ ПЕРЕЙДЁМ ДАЛЬШЕ . ВЕДЬ ЭТО НЕ ВСЁ . ОПКОДЫ ОПКОД (ОПЕРАЦИОННЫЙ КОД ) НЕОБХОДИМ ДЛЯ СОЗДАНИЯ ЛЮБЫХ СКРИПТОВ. ДАННЫЙ КОД ПОЗВОЛЯЕТ ПОНЯТЬ ЧТО НАМ НУЖНО ОТ КОМПИЛЯТОРА . ТО ЕСТЬ НАПРИМЕР . ОПКОД 0AF8 ВЫВОДИТ ТЕКСТ В ЧАТ . ТО ЕСТЬ НЕЛЬЗЯ ВЫВЕСТИ ТЕКСТ «HELLO» ЧЕРЕЗ ОПКОД 0000. ЭТО НЕВОЗМОЖНО. ЕСЛИ ВЫ УСТАНОВИЛИ SAMPFUNKS, ОПКОДОВ БУДЕТ 2140 (НА ДАННЫЙ МОМЕНТ ИХ ИМЕННО СТОЛЬКО ). НЕТ! НЕ БОЙТЕСЬ . ВАМ ИЗУЧАТЬ ВСЕ НЕ НУЖНО БУДЕТ , НЕОБХОДИМО ЛИШЬ ВЫУЧИТЬ ОСНОВНЫЕ , И ВЫ ИХ ВЫУЧИТЕ , ЕСЛИ ЧАСТО ПЫТАТЬСЯ ПИСАТЬ CLEO СКРИПТЫ. ВСЕ НЕОБХОДИМЫЕ ОПКОДЫ НА ДАННЫЙ МОМЕНТ МОЖНО НАЙТИ НА САЙТЕ gtag.gtagaming.com. ДАВАЙТЕ ПОСМОТРИМ ПРИМЕР ИСПОЛЬЗОВАНИЯ ОПКОДА И ВЕРНЁМСЯ К СТАРОМУ ПРИМЕРУ . {$CLEO .cs} 0000: NOP repeat wait 0 until SAMP.Available() wait 1000 0B34: samp register_client_command "hips" to_label @hips repeat wait 0 until false :hips 0AF8: samp add_message_to_chat "Вы ввели команду /hips" color 0xFFFFFF 0AF8: SAMP ADD_MESSAGE _TO_CHAT "Вы ввели команду /hips" COLOR 0XFFFFFF. НА ДАННЫЙ МОМЕНТ НАМ НУЖЕН ТОЛЬКО ЭТОТ УЧАСТОК КОДА. МОЖЕТ КТО ПОНЯЛ , НО ОПКОДОМ ЯВЛЯЕТСЯ ТЕКСТ – «0AF8». ТО ЕСТЬ , ЕСЛИ ВЫ БЫ НАПИСАЛИ ВМЕСТО НЕГО НАПРИМЕР 0B34, ТЕКСТ БЫ НЕ ПОЯВИЛСЯ . В ЭТОМ КОДЕ ЕСТЬ ЕЩЁ ОДНО ИСПОЛЬЗОВАНИЕ ОПКОДА, ЭТО ОПКОД – «0B34». ДАННЫЙ ОПКОД РЕГИСТРИРУЕТ ВИЗУАЛЬНУЮ КОМАНДУ В ИГРУ (ТО ЕСТЬ ЭТУ КОМАНДУ МОЖЕТ ВВЕСТИ ТОЛЬКО ЧЕЛОВЕК КОТОРЫЙ УСТАНОВИЛ ДАННЫЙ CLEO СКРИПТ ). Я ДУМАЮ ТЕПЕРЬ ВАМ ПОНЯТНО, ЧТО ТАКОЕ ОПКОДЫ . И МЫ НЕ БУДЕМ С ЭТИМ ДОЛГО ЗАТЯГИВАТЬ . ПЕРЕХОДИМ К СЛЕДУЮЩЕМУ УРОК, ДРУЗЬЯ. ЦИКЛЫ И ЗАДЕРЖКИ СЕЙЧАС ПОЙДЁТ РЕЧЬ О ЦИКЛАХ И ЗАДЕРЖКАХ . ОНИ НЕОБХОДИМЫ ДЛЯ РАБОТЫ СКРИПТА ТАКЖЕ КАК И ОПКОДЫ , КОМАНДЫ И Т .Д. ЦИКЛ ДАЖЕ ИСПОЛЬЗУЮТ ЧТОБЫ ИЗБЕЖАТЬ КРАШ ИГРЫ ПРИ ВХОДЕ . ТО ЕСТЬ, ДЕЛАЮТ ЗАДЕРЖКУ ДЛЯ ЗАПУСКА СКРИПТА, ЧТОБЫ ОН НЕ ЗАПУСТИЛСЯ РАНЬШЕ , ЧЕМ ИГРА. ЕСТЬ 4 ВИДА ЦИКЛОВ . САМЫЙ ИСПОЛЬЗУЕМЫЙ ЭТО: repeat // Тело (Что будет в цикле) until «команда». Например: repeat wait 1000 until false Данный цикл делает задержку перед использованием чеголибо 1000 миллисекунд. ТЕПЕРЬ ПЕРЕЙДЁМ К ЗАДЕРЖКАМ. НА САМОМ ДЕЛЕ ТУТ ВСЁ ПРОСТО. ЗАДЕРЖКУ ВЫСТАВЛЯЮТ ЧТОБЫ КОМАНДА ВЫПОЛНЯЛАСЬ НЕ СРАЗУ , А КОГДА НУЖНО (НАПРИМЕР , ЧЕРЕЗ 1-2 СЕКУНДЫ ). ЧТОБЫ ВЫСТАВИТЬ ЗАДЕРЖКУ, ПИШЕМ ПЕРЕД КОМАНДОЙ WAIT [СКОЛЬКО МИЛЛИСЕКУНД]. НО МНОГИЕ НАВЕРНОЕ ЗАМЕЧАЛИ, ЧТО ОЗНАЧАЕТ WAIT 0? ВЕДЬ СТАВИТЬ ЗАДЕРЖКУ НА 0 МИЛЛИСЕКУНД, ЭТО НЕ ИМЕЕТ СМЫСЛА . НА САМОМ ДЕЛЕ ЭТО ОЧЕНЬ ВАЖНО . ДАННУЮ ЗАДЕРЖКУ СТАВЯТ ДЛЯ ТОГО , ЧТОБЫ ИЗБЕЖАТЬ КРАШИ , ВЫЛЕТЫ И Т .Д. ТАКЖЕ, ЕСТЬ НУЛЕВОЙ ОПКОД (0000: NOP). ОН ТОЖЕ ПОМОГАЕТ УСТРАНИТЬ КРАШИ . ЕГО НЕОБХОДИМО НАПИСАТЬ В НАЧАЛЕ СКРИПТА (НО , ЕСЛИ ВАШ СКРИПТ И ТАК НЕ КРАШИТ ИГРУ , НЕ ОБЯЗАТЕЛЬНО И ПИСАТЬ ). ТЕПЕРЬ ДАВАЙТЕ ПЕРЕЙДЁМ К ВТОРОМУ ЦИКЛУ . ЕГО ИСПОЛЬЗУЮТ НЕ СЛИШКОМ ЧАСТО , НО ЕГО ВСЁ РАВНО НЕОБХОДИМО ЗНАТЬ . ЭТОТ ЦИКЛ – FOR . FOR <переменная цикла> = <начальное значение> TO/DOWNTO <конечное значение> [step = 1] < тело цикла> END <переменная цикла> - переменная, используемая в качестве счетчика итераций <начальное значение> - начальное значение переменной цикла (любое значение, включая имя модели) TO/DOWNTO- увеличивать или уменьшать переменную цикла <конечное значение> - конечное значение переменной цикла, при которой он заканчивает свою работу (любое значение, включая имя модели) <step> - шаг цикла: опциональная величина, на которую будет увеличиваться или уменьшаться переменная цикла после каждой итерации. По умолчанию равна 1 КАК Я ГОВОРИЛ , ДАННЫЙ ЦИКЛ ИСПОЛЬЗУЕТСЯ РЕЖЕ ВСЕГО . ТЕПЕРЬ ПЕРЕХОДИМ К СЛЕДУЮЩЕМУ ЦИКЛУ , ЭТО – WHILE. while [Условие] // Тело цикла end ДАННЫЙ ЦИКЛ БУДЕТ РАБОТАТЬ ВЕЧНО , ПОКА УСЛОВИЕ БУДЕТ «ИСТИННО ». КАК ТОЛЬКО ОНО БУДЕТ «НЕ ИСТИННО », ТО ЕСТЬ FALSE. РАБОТА ЦИКЛА ПРЕКРАЩАЕТСЯ. ПРИМЕР РАБОТЫ ЦИКЛА : while SAMP.Available wait 0 end В ДАННОМ СЛУЧАЕ , ЦИКЛ БУДЕТ РАБОТАТЬ ДО ТЕХ ПОР , ПОКА НЕ ЗАГРУЗИТЬСЯ SAMP. КАК ТОЛЬКО SAMP ЗАВЕРШИТ СВОЮ ЗАГРУЗКУ , ЦИКЛ ПРЕКРАТИТ СВОЮ РАБОТУ . ТАКЖЕ, ЕСТЬ ЦИКЛ Continue и Break. ДАННЫЙ ЦИКЛ МЫ НЕ БУДЕМ ИЗУЧАТЬ . ТАК КАК , ПИСАТЬ СКРИПТЫ С ПОМОЩЬЮ НЕГО СЛОЖНЕЕ , ЧЕМ ЧЕРЕЗ REPEAT И ОСТАЛЬНЫЕ . М ОЖНО НЕ ИСПОЛЬЗОВАТЬ ВЕДЬ ЕГО , ПРОСТО КОМПИЛЯТОР АВТОМАТИЧЕСКИ ПЕРЕВЕДЁТ КОД . ВСЁ. МЫ НАКОНЕЦ -ТО РАЗОБРАЛИ ВСЕ ЦИКЛЫ И ПЕРЕХОДИМ ДАЛЬШЕ… КОНСТАНТЫ КОНСТАНТЫ ОЧЕНЬ ПОХОЖЕ НА ПЕРЕМЕННЫЕ . ОНИ ТАКЖЕ ПРИСВАИВАЮТ К СЕБЕ ИДЕНТИФИКАТОР . НО, КОНСТАНТА ДОЛЖНА ЖЕ ЧЕМ-ТО ОТЛИЧАТЬСЯ , ВЕРНО? ВЕДЬ , ЕСЛИ БЫ ОНА НЕ ОТЛИЧАЛАСЬ , РАЗНИЦЫ БЫ НЕ БЫЛО МЕЖДУ ПЕРЕМЕННОЙ И КОНСТАНТОЙ . НУ ТАК ВОТ , К СОЖАЛЕНИЮ , ПРИСВОЕННЫЙ ИДЕНТИФИКАТОР КОНСТАНТЕ ИЗМЕНИТЬ НЕЛЬЗЯ ! ЭТО БОЛЬШОЙ МИНУС . ИМЯ КОНСТАНТЫ – ЛЮБОЙ ДОПУСТИМЫЙ ИДЕНТИФИКАТОР (ЛАТИНСКИЕ БУКВЫ , ЦИФРЫ И ЗНАК ПОДЧЁРКИВАНИЯ ). НЕ ДОПУСКАЕТСЯ ИСПОЛЬЗОВАНИЕ ПРЕОПРЕДЕЛЕННЫХ ИМЕН ВРОДЕ CONTINUE , TRUE , AND И Т .Д. ЗНАЧЕНИЕ – ЧИСЛО (МЕТКА, МОДЕЛЬ) СТРОКА – ВЫРАЖЕНИЕ (НАПРИМЕР : ПЕРЕМЕННАЯ ИЛИ КЛАСС ). ДРУГАЯ КОНСТАНТА . const [Имя константы] = [Значение] end А ВЫ ЧТО ДУМАЛИ, БУДЕТ ВСЁ ТРУДНО? НА САМОМ ДЕЛЕ НЕТ . ЭТО ДОСТАТОЧНО ПРОСТО , ЕСЛИ ЗНАТЬ ЧТО ДЕЛАТЬ . СЕЙЧАС Я ПОКАЖУ ПРИМЕР, КАК ИХ ИСПОЛЬЗОВАТЬ . ПРИМЕР: const PlayerMoney = $PLAYER_CHAR.Money end ДАННЫЙ ПРИМЕР Я ВЗЯЛ ИЗ СПРАВКИ SANNY BUILDER. Я ДУМАЮ ОН НЕ ДОЛЖЕН СОСТАВЛЯТЬ ВАМ ТРУДНОСТИ. Я ЧЕСТНО ГОВОРЯ , НЕ ПОЛЬЗУЮСЬ КОНСТАНТАМИ. ПО МНЕ ТАК , ПРОЩЕ ИСПОЛЬЗОВАТЬ ОБЫЧНЫЕ ГЛОБАЛЬНЫЕ И ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ . ИСПОЛЬЗУЮТСЯ ОНИ РЕДКО , НО ЕСЛИ ДЕЛАЕТЕ СЛОЖНЫЙ СКРИПТ , ПРОСТО НЕОБХОДИМЫ . УСЛОВИЯ УСЛОВИЙ НЕ СЛИШКОМ МНОГО В CLEO ПРОГРАММИРОВАНИИ , НО ВСЁ ЖЕ ИХ МНОГО . МЫ ПОГОВОРИМ О САМЫХ ИСПОЛЬЗУЕМЫХ . ЧАЩЕ ВСЕГО ИСПОЛЬЗУЮТ : IF, ELSE, LABEL. IF – ОЗНАЧАЕТ «ЕСЛИ» ELSE – ОЗНАЧАЕТ «ИНАЧЕ» LABEL – ПРЫГАЕТ НА ОПРЕДЕЛЁННУЮ ЧАСТЬ КОДА. ТАКЖЕ УСЛОВИЯ ЕСТЬ ДВУХ ВИДОВ. ЭТО: НИЗКОУРОВНЕВОЕ И ВЫСОКОУРОВНЕВОЕ . НИЗКОУРОВНЕВОЕ, ЭТО КОГДА ИСПОЛЬЗУЕТСЯ ПРОСТО УСЛОВИЕ , И НЕТУ «ПОД УСЛОВИЙ ». ВЫСОКОУРОВНЕВОЕ , ЭТО КОГДА ИСПОЛЬЗУЕТСЯ «ПОД УСЛОВИЯ ». ПРИМЕР ВЫСОКОУРОВНЕВОГО УСЛОВИЯ : if 0@ == true then SAMP.GetPlayerPing($PLAYER_ACTOR) end else jf 0@ end ТО ЕСТЬ , THEN – ОЗНАЧАЕТ «ТОГДА», END – ОЗНАЧАЕТ «КОНЕЦ». END ДОЛЖЕН СТОЯТЬ ПРОТИВОПОЛОЖНО УСЛОВИЮ , КОТОРОЕ ЕГО ОТКРЫВАЕТ. ЕСЛИ ЕГО ПОСТАВИТЬ В ДРУГОЕ МЕСТО , БУДЕТ ОШИБКА. Т АКЖЕ ЗАКРЫВАТЬ УСЛОВИЕ НУЖНО ОБЯЗАТЕЛЬНО. ИНАЧЕ ТОЖЕ БУДЕТ ОШИБКА. КОНЕЦ НУ ЧТО, ДРУЗЬЯ. НА ЭТОМ КУРС ОКОНЧЕН . ЖЕЛАЮ ВАМ ВСЕГО НАИЛУЧШЕГО. НАДЕЮСЬ , ПОСЛЕ ЧТЕНИЯ ДАННОЙ КНИГИ ВЫ СМОЖЕТЕ ПИСАТЬ УЖЕ СВОИ ПЕРВЫЕ CLEO СКРИПТЫ . АВТОР: [CM]HIPS (СТАРЫЙ НИК – ANUGLEY ). СДЕЛАНО СПЕЦИАЛЬНО ДЛЯ ПОРТАЛА – CHEAT-MASTER.RU. ВСЕМ ПОКА :).