Всем привет, собственно, краткие основы программирования в pawn.
В pawn существует всего 4 типа данных. Каждый тип данных имеет определенный размер, т.е. сколько байтов выделяется в оперативной памяти для записи переменной данного типа, и диапазон значений.
1. Целые числа (Integer). Данная переменная объявляется так: new primer; Переменная "primer" изначально равна нулю. Так же, можно задать ей начальное значение. Пример:
Код
new primer1 = 3;
Соответственно, теперь переменная primer1 равна 3.
2. Числа с плавающей точкой (Float). Объявляется:
Код
new Float:primer;
Изначальна равна 0.0, но как и с целым числом ей можно задать начальное значение.
Код
new Float:primer = 9.87654321;
3. Символьный (char) Данный тип данных объявляется как массив (к ним перейдем чуть-чуть позже) Пример:
Код
new primer[12] = "Hello World";
Мы объявили массив длинной в 12 символов, который содержит строку "Hello World". Букв в данной строке 11, но массив состоит из 11+1 ячеек, т.к. любая строка должна заканчиваться символом "NULL", который занимает 1 ячейку.
4. Логический тип (bool) Этот тип данных имеет всего 2 значения true (истина, 1) и false (ложь, 0). Объявляется:
Код
new bool:primer;
Изначально принимает значение "false", но как и выше, можно задать значение "true".
Операции сравнения:
Код
< меньше, чем <= меньше или равно > больше, чем >= больше или равно == равно != не равно
Логические бинарные операции:
Код
&& и (выполнение сразу нескольких условий) || или (выполнение хотябы одного из 2-х и более условий) ! отрицание
Пример: (x>0 && x<10) - x больше нуля и меньше 10 (x == 1 || x>10) - x равен 1 либо х больше 10 (!x) - х равен 0
Условные операторы if/else: Использование:
Код
if(условие) оператор_1; else оператор_2;
Если if или else содержит более одного оператора, то они заключаются в фигурные скобки {}.
Дословно: if - переводится "если", else - переводится "иначе". Так же, в else так же можно задать свое условие, но требуется писать else if. Например:
Результатом такой операции будет выражение_1, если условие истинно, иначе - выражение_2. Например: ((x>1) ? (y+1) : (y = 0)); Если "x" больше 1, то к переменной "y" прибавляется 1. Если "x" меньше либо равен 1, то переменной "y" присваивается значение 0.
1. Цикл for Строение цикла:
Код
for(объявление переменной; условие; инкремент) { //тело цикла }
Например, создадим цикл, который будет всем игрокам сервера выдавать 1$
Этот цикл менее, чем за секунду выдает всему серверу 1$, намного проще и быстрее, чем всё делать вручную.
2. Цикл while Строение цикла:
Код
while(условие) { //тело цикла }
Пример:
Код
new i; while(i<GetPlayerPoolSize()) { i++; GivePlayerMoney(playerid, 1); }
3. Цикл do while Строение:
Код
do { //тело цикла } while(условие);
Пример:
Код
new i; do { GivePlayerMoney(playerid, 1); i++; } while(i<GetPlayerPoolSize());
Наиболее простой для использования цикл for, мое личное мнение.
Массив - это группа расположенных друг за другом элементов в памяти переменных одного типа и имеющих одно общее имя.
Массивы бывают одномерные, двумерные и трехмерные. Пример:
Код
new Massive[5]; //- одномерный массив с 5 столбцами. (считается от 0 до 4)
Код
new Massive[3][6]; // - двумерный массив с 3 столбцами и 6 строками, а т.е. 18 полей для хранения данных.
Define - это функция, которая упрощает работу скриптерам в pawn. Рассмотрим пару примеров.
Код
#define SCM SendClientMessage #define SPD ShowPlayerDialog
Данный макрос заменяет везде "SCM" на SendClientMessage, а SPD на ShowPlayerDialog. Т.е. скриптеру, который пишет какой-либо код, больше не придется писать длинный код "SendClientMessage" и "ShowPlayerDialog", теперь он может обойтись "SCM" и "SPD". Разберем макрос потруднее.
Функция GetVehicleDistanceFromPoint проверяет дистанцию транспорта до определенной точки. С помощью данного макроса мы сделали себе функцию, которая проверяет находится ли автомобиль в нужном нам расстоянии от нужной нам точки.
На этом я закончу свой урок, тема будет обновляться, так же можете задавать свои вопросы.
Сообщение отредактировал [CM]JacobMaster - Пятница, 03.11.2017, 18:25