#1 Переменные
|
|
Len1n |
Дата: Среда, 08.07.2015, 14:03 | Сообщение # 1
|
Боец
Сообщений: 89
Статус: Offline
|
Всем привет, с вами Владимир Ильич. Я с удовольствием начну курс уроков по своим старым темам, расписав вам максимально точно и понятно. Начнем мы с переменных. Что же такое переменная? Переменная - область памяти, имеющая адрес или имя. В математике, является символом, обозначающим какое-либо значение. Но, нам подходит первый вариант. **** Типы переменных: - Integer (new int;) - Целочисленный тип переменных. Является основным типом в использовании переменных.
- Float (new Float:fl;) - Вещественный тип переменных. Используется исключительно в координатах / различных показателях
- String (new str[64];) - Строковый тип переменных. Используется в различных текстах, начиная с print'ов, заканчивая диалогами
- Boolean (new Bool:boolean;) - Логический тип переменных. Используется для хранения ответов типа да/нет.
- PlayerTextDraw (new PlayerText:ptdraw;) - Тип переменных используемых только для хранения ID определенного PlayerTextDraw'а
- TextDraw (new Text:tdraw;) - Подобен предыдущему типу, но TD являются исключительно глобальными.
- Menu (new Menu:mymenu;) - Подобен предыдущим двум типам, но вместо ID TextDraw'ов сохраняется ID меню.
**** Так же, существуют понятия, как "Локальная" переменная и "Глобальная переменная". Локальная переменная - переменная, созданная в определенном участке кода, будь то коллбек, или же обычная проверка: Код new clowncarid = 468; // Глобальная переменная new clownarray[500]; // Глобальный массив с переменными stock CallBack(clownid, clowncar){ if(clownarray[clownid]<1) { // Проверка является участком кода return 0; new clown_back = -1 * clownid; // Локальная переменная, работает только в данном участке printf("Clown %d not in clownarray. clown_back = %d", clownid, clown_back); } else if(carid == clowncarid) return 1; else return 2; } * Массив целочисленных переменных создается подобно String'у, но используется по другому ** Boolean тип занимает ровно столько-же памяти, сколько и Integer, хотя должен занимать ровно 1 бит [в 32 раза меньше Integer] *** Три последних типа переменных являются подклассом переменных с типом int, и используются исключительно для работы с функциями, для которых предназначены **** Переменные чувствительны к регистру | Спасибо SeX-PrO-AdReNaLiN за напоминание
Примеры использования: 1 Пример: У нас есть проверка на вход игрока (logged). Нужно узнать, вошел ли он под свой аккаунт, или нет, а после изменить это значение на противоположное. Все это выглядит примерно так: Код new bool:logged[MAX_PLAYERS]; // Создание массива logged, размером в MAX_PLAYERS [0.3z = 500, 0.3.7 = 1000] ячеек, с типом bool. if(logged[playerid]) { logged[playerid]=false; printf("Элемент массива logged, под номером %d, принял значение = %d", playerid, logged[playerid]; } else { logged[playerid]=true; printf("Элемент массива logged, под номером %d, принял значение = %d", playerid, logged[playerid]; } Это полноценная структура проверки.
2 Пример, использование строк [String]: Цитата new str[64], name[24]; // Создание массивов для хранения полной строки и ника игрока GetPlayerName(playerid, name, 24); // Узнаем ник у playerid format(str, 64, "Поздравляю тебя, %s, ты вполне способный ученик", name); // форматируем текст SendClientMessage(playerid, -1, str); // отправляем клиентское сообщение Это полноценная структура форматирования переменных путем использования format (Более быстрый, нежели strcat в некоторых случаях).
3 Пример: Нам нужно узнать координаты одного игрока с нужным нам идом и вывести их другому игроку. Все это будет выглядеть примерно так: Код new Float:coord[3], str[64], GetID; // Создание массива с координатами, массива для строки, идом игрока GetID=25; // установка ID нужного игрока, напимер clickedplayerid из OnPlayerClickPlayer GetPlayerPos(GetID, coord[0], coord[1], coord[2]); // Узнаем позицию игрока с Идом GetID и записываем их в массив с координатами format(str, 64, "У игрока с ID %d, координаты [%f X] [%f Y] [%f Z]", GetID, coord[0], coord[1], coord[2]); // Форматируем текст добавляя переменную с ID и 3 вещественных числа (координаты) SendClientMessage(playerid, -1, str); // Отправляем Клиентское сообщение
Здесь, еще раз используя форматирование, мы отредактировали строку, указав нам координаты игрока с ID 25.
* Данные примеры имеют полное право не работать в связи с отсутствующими необходимыми проверками на валидность. ** Данные примеры взяты из моего прошлого урока, но немного изменены. *** Публичное использование материала из этой статьи разрешено каждому пользователю.
Связь со мной: Skype: po61-rap E-Mail: len1nthe@gmail.com
if(time>=1500 && rep<500) { cout « "200 репы накручено!"; rep+=200; }
Сообщение отредактировал Len1n - Суббота, 18.07.2015, 10:27 |
|
|
|
Enrique_iBlack |
Дата: Среда, 08.07.2015, 19:48 | Сообщение # 2
|
Новичок
Сообщений: 16
Статус: Offline
|
Про enum(ки)забыл
Сообщение отредактировал Enrique_iBlack - Среда, 08.07.2015, 19:48 |
|
|
|
Len1n |
Дата: Среда, 08.07.2015, 21:50 | Сообщение # 3
|
Боец
Сообщений: 89
Статус: Offline
|
Enrique_iBlack, enum не является переменной, но является списком. Код enum exet{ lol, lol1, lol2, rampage }; Код new vasya[exet]; vasya[lol]=1; vasya[lol1]=5; vasya[lol2]=3; vasya[rampage]=vasya[lol2]*vasya[lol1]; Абсолютно равен Код new vasya[4]; vasya[0=1; vasya[1]=5; vasya[2]=3; vasya[3]=vasya[2]*vasya[1];
Но, в enum можно помещать различные типы переменных.
Связь со мной: Skype: po61-rap E-Mail: len1nthe@gmail.com
if(time>=1500 && rep<500) { cout « "200 репы накручено!"; rep+=200; }
Сообщение отредактировал Len1n - Четверг, 09.07.2015, 09:40 |
|
|
|
[CM]OlegEhtler |
Дата: Пятница, 17.07.2015, 14:53 | Сообщение # 4
|
100$
Сообщений: 633
Статус: Offline
|
Вообще нечего не понятно :/
|
|
|
|
SeX-PrO-AdReNaLiN |
Дата: Пятница, 17.07.2015, 17:52 | Сообщение # 5
|
Авторитет
Сообщений: 1310
Статус: Offline
|
Для новичков правдо непонятно,начни с объяснений типо что такое переменные для чего они нужны простыми славами ("хранилище данных"). Что они чувствительны к регистру, локальные и глобальные переменные о которых ты забыл прописать,операторы (к примеру оператор присвоения. Обьязательно) и многое другое
user N over 99999
|
|
|
|
Len1n |
Дата: Суббота, 18.07.2015, 10:02 | Сообщение # 6
|
Боец
Сообщений: 89
Статус: Offline
|
Цитата SeX-PrO-AdReNaLiN ( ) Для новичков правдо непонятно,начни с объяснений типо что такое переменные для чего они нужны простыми славами ("хранилище данных"). Что они чувствительны к регистру, локальные и глобальные переменные о которых ты забыл прописать,операторы (к примеру оператор присвоения. Обьязательно) и многое другое Честно говоря, мне не хочется забивать уроки огромной кучей текста. Или же забивать раздел 100500 уроками по одним только переменным. Про глобальные переменные я хотел объяснить в кратце в одном из уроков, не всю информацию сразу же.
Связь со мной: Skype: po61-rap E-Mail: len1nthe@gmail.com
if(time>=1500 && rep<500) { cout « "200 репы накручено!"; rep+=200; }
|
|
|
|
vladua100 |
Дата: Среда, 19.08.2015, 10:45 | Сообщение # 7
|
Боец
Сообщений: 104
Статус: Offline
|
Я, скорее всего, сейчас открою вам пару секретов:
В pawn нет типов данных. Единственный тип в pawn - ячейка
Тэг "bool" не значит, что переменная может принимать только bool:0 и bool:1.По этому он вам ничего и не должен, ведь в переменную с этим тэгом вы можете записать все, что хотите
Использование ключевых слов public/static/stock перед названиями функции не значит, что это другой способ объявить функцию. Public, например, используется для того, чтобы функция была видимой для виртуальной машины. То есть public позволяет серверу напрямую вызывать функцию. Эти ключевые слова можно использовать не только с функциями.
|
|
|
|
[CM]Читак228 |
Дата: Среда, 19.08.2015, 12:14 | Сообщение # 8
|
Боец
Сообщений: 68
Статус: Offline
|
спасибо, я хочу научиться сосдавать моды и скрипты самп!!, а так тема полезная
|
|
|
|
TheMoOmer |
Дата: Четверг, 29.10.2015, 10:58 | Сообщение # 9
|
Боец
Сообщений: 111
Статус: Offline
|
Пазязя,сделай попроще,а то вот мне как начинающему пользователю ничего не понятно на самом деле,как в принципе и большей части !
|
|
|
|