I'm Scripter
Ученик
Здравствуйте читатели форума pawno-info.ru, я приветствую вас в этой теме с обновленным уроком по переменным, массивам и enum'ам.
Надеюсь, прочитав этот урок, вы найдете для себя много нового. Давайте начнем с простого.
Переменные и как ими пользоватся
Сначала нам надо узнать, что вообще такое эти переменные. Переменная - это хранилище данных, куда мы можем записывать
различные данные для их последующего вызова. Тоесть действия с переменными предельно просты: запись информации,вывод и
использование информации. Если присмотрется ближе, то список можно пополнить еще одним пунктом - объявление переменной.
Каждая переменная имеет свое название, чтобы компилятор мог отличить друг от друга переменные, название мы задаем при
объявлении. Оператор объявления переменной - new. Вот пример объявления новой переменной:
PHP:
new MyFirstVariable;
но помните, что павн не поддерживает кириллицу (это вам не 1с)! Перейдем к следующему пункту - запись информации. Запись
информации осуществляется с помощью оператора присвоения или различных функций. Рассмотрим оператор присвоения:
PHP:
MyFirstVariable = 3;
= ) с оператором сравнения ( == ). Вот пример оператора объявления и оператора присвоения соединенных вместе:
PHP:
new MySecondVariable = 3;
Из пункта запись информации вытекает пункт - изменение информации. Изменять информацию мы можем как с помощью оператора
присвоения,так и с помощью специальных операторов, список приведен ниже.
PHP:
//+= - оператор прибавления числа, выглядит так:
Variable += 3;// прибавляем к текущему значению переменной 3
//-= - оператор отнятия числа от текущего значения переменной, выглядит так:
Variable -= 3;// отнимаем от текущего значения переменной 3
//++ - оператор инкримента или прибавления числа один, выглядит так:
Variable++;// прибавляем к текущему значению переменной 1
//-- - оператор декримента или отнятия числа один, выглядит так:
Variable--;// отнимаем от текущего значения переменной 1
"преобразовываются" в значения которые записаны в переменной. Вот несколько примеров:
PHP:
new variable = 3;
if(variable == 3)//пример в условии
{
GivePlayerWeapon(playerid,variable,3);//пример с playerid и variable, playerid ведь тоже переменная
}
объявленные в самом начале мода или не в пабликах/функциях (т.е не состоящие в фигурных скобках) называются глобальными (т.е
действуют абсолютно во всем моде), а состоящие в скобках - локальными. Локальные переменные дейсвуют во всех скобках
открытых после нее и "самоуничтожается" когда исполнение кода дойдет до закрытия скобок. Пример:
PHP:
new Global;//глобальная переменная
public OnGameModeInit()
{
new Local;//локальная переменная
if(!local)
{
new DeepLocal;//локальная переменная "ниже уровнем"
}
}
переменной двоеточием, они определяют тип данных в переменной. Известные нам теги:
Код:
bool,Float,Text,3DText,Player3DText и так далее
Как я уже говорил, теги определяют тип данных в переменной, вот основные типы которые вам понадобятся:
Код:
Integer - целочисленный тип или целое число, стандартный тип в павн, тег не требуется. (примеры: 3, -23, 2032)
Float - вещественный тип или число с плавающей точкой или десятичная дробь, обычно используется для записи
здоровья/координат. (примеры: -3.321, 7.213, 213.3)
Bool - логический тип или boolean или ложь/правда, может иметь только два значения ложь и правда (true или false, по
аналогии это 1 и 0, хотя числа использовать нельзя). (примеров не даю, все и так понятно)
PHP:
new IntVariable = 33;//переменная с типом integer
new Float:FltVariable = 56.213;//переменная с типом Float
new bool:TrueFalse = true;//переменная логического типа
PHP:
new Variable = 'a';
буквы разного регистра считаются РАЗНЫМИ!
Массивы
Для того, чтобы представить, что такое массивы, нам надо представить таблицу, в которой есть строки и столбцы. Массивы
бывают двух видов - одномерные и двумерные (есть еще тремерные (не знаю как пишется, правда), но извращатся с ними не стоит)
, теперь вернулись к нашей мысленной табличке и представили, что у нас есть 1 строка и некоторое кол-во столбцов в которые
записываются данные (цифра или буква или другие данные (зависит от тега)) - это одномерный массив, а теперь подключим еще и
строки, это уже будет двумерный массив. Примеры:
PHP:
new MyFirstMassive[12];//это одномерный массив с 12 "столбцами"
new MySecondMassive[2][5];//это двумерный массив с 2 "столбцами" и 5 "строками", т.е получается 10 слотов для хранения
данных, если угодно - полей
MyFirstMassive[0] = 3;//мы присвоили первому элементу массива ("поля" называются элементами, членами и тд)
MySecondMassive[1][3] = 4;//мы присвоили 1 "столбцу" и 3 "строке" и сответственно какому-то "полю" т.е члену или элементу
массива значение 4.
скриптинга идет с 0, то цифра указанная как размер массива в операциях с массивом использоватся не может (максимальная цифра
будет: размер массива - 1).
Также следует знать оператор который определяет размер массива и называется он sizeof, примеры:
PHP:
new Massive[5];
if(sizeof(Massive) == 5) return print("sizeof of massive = 5");
//а вот если массив двумерный и надо узнать "второй" размер, то поступаем так
new MassiveTwo[4][5];
if(sizeof(MassiveTwo[]) == 5) return print("second sizeof of massive = 5");
PHP:
new Float:floatmassive;
Так же существует еще один прием с массивами
PHP:
new Massive[5] = 43;//все члены массива изначально будут равны 43
реализовано немного по другому. Для начало, что такое строки или строковый тип данных (которого в павн нет), это переменные
несущие набор букв/знаков/цифр как информацию. Как вы уже помните, я говорил, что переменной можно задать значение
буквы/знака или цифры как символа (смысла в этом нет, если это просто переменная), а вот если у нас массив, то каждому
элементу массива можно задать определенный символ и при выводе всего массива вместе, то получится текст. Все предельно
просто, мы можем либо задавать текст определенными функциями, либо оператором присвоения, чем мы сейчас и займемся.
PHP:
new StringMassive[128];//как размер укажем максимальное кол-во символов
StringMassive = "Hello World!";//скобки не одинарные, при присвоении массиву строкого значения скобки должны быть двойными
new StringMassiveTwo[128] = "Hello World! vol.2";//также можно присвоить строковое значению массиву прямо при присвоении
StringMassiveTwo[0] = 0;//таким образом можно обнулить строку.
PHP:
//Если массив одномерный
new Massive[3] = { //оператор присвоение и открытие фигурной скобки
2,3,5//через запятую перечисляем значения
};//закрытие скобки и точка с запятой
//если массив двумерный
new MassiveTwo[3][5] = {
{1,2,3,4,5},//каждый "столбец" обозначается отдельными фигурными скобками, отделяются каждые скобки запятыми
{6,7,8,9,10},
{11,12,13,14,15}
};
//если мы имеем дело со строками
new StringMassive[3][128] = {"fsdfafs","fdsagas","fdsgsd"};//важно помнить, что нам надо выделить элементы еще и под буквами
Enum'ы
А теперь заключительная часть урока, енумы. Енумы на самом деле очень полезная вещь, она позволяет определить структуру
массива, зачем это надо я сейчас обьясню. Например: у нас есть один массив, в котором мы хотим видеть несколько типов
данных, например логический чередуется с целочисленным и завершается все это строкой которая нам совершенно не нужна до
этого. Но как же это реализовать? Мы будем использовать енумы.
PHP:
enum MyEnum //сначала идет оператор enum и через пробел название енума
{//открытие фигурной скобки
IntType,//через запятую члены будущего массива, именно так задается структура будущего массива
bool:Boolean,
string[128]//и венчает все это массив о котором мы говорили
};//закрытие фигурной скобки и точка с запятой
//итак структура определена, теперь делаем массив
new EnumMassive[MyEnum];//название енума или, если угодно, структуры суем туда где должен был быть размер
EnumMassive[IntType] = 3;//целочисленный тип
EnumMassive[Boolean] = true;//логический тип
EnumMassive[string] = "Hello World! vol.3";//и массив
EnumMassive[string][4] = 'o';//вот так будет выглядеть массив
//так же можно присвоить значение члену структуры прямо в енуме, думаю понятно как это работает
Урок написан REALman'ом. Версия 2.0, отредактировано 18.06.2011.
