[Урок] Изучаем язык Pawn Часть 1
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
Pr0C
Известный
Недавно решил сделать что-нибудь полезное для портала и увидел, что уроков по Pawn практически нет, а так как я долгое время занимался им, то начинаю свою серию уроков по этому не очень популярному, но легкому в изучении языку программирования. Приступим.
В первом уроке я расскажу о синтаксисе языка, константах, переменных, выводе данных, конструкции if-else а так же о парочке мелких но полезных функциях.
Начнем с синтаксиса. Тем, кто знает язык C++ практически не придется изучать синтаксис языка Pawn, так как он мало чем отличается от C++. Это было реализовано разработчиками Павн за счет того, что они делали его облегченной копией Си. Покажу синтаксис языка на примере создания переменной, использовании ее в конструкции if-else и выводе текста в чат.
Хочу сказать наперед, что в данной части я не буду использовать паблики (кто знает что это, тот поймет), а буду просто показывать как правильно пишется код.
Как видите, текст должен заключаться в двойные кавычки « и в конце выполнения функции должна стоять точка с запятой ;
Теперь объясню этот код.
new a = 5; — здесь мы создаем переменную a и присваиваем ей значение 5. Как видите, в Pawn для объявления переменной, следует написать: new имя переменной; Если мы сразу хотим присвоить значение переменной, то после имени переменной пишем = и значение. Как и в большинстве других языков, в Pawn есть несколько типов переменных. Это: string (строка), integer (целое число), boolean (не знаю как правильно объяснить. переменным типа boolean можно присваивать true либо false, тоисть «истинно» либо «ложно») и float (число с точкой). Ниже покажу как создавать переменные этих типов:
new stroka[128]; //Переменная типа string с размером в 128 символов new chislo; //Переменная типа integer new peremennaya:bool; //Переменная типа boolean new pos_x:float; //Переменная типа float
Думаю здесь все понятно. Что-бы потом присвоить значение переменной, достаточно написать имя переменной = значение. Так же, имена переменных должны начинаться с маленькой буквы (строчной). Пойдем дальше.
if(a == 5) — если переменная a равна 5, то. (думаю вы уже поняли, что в скобках возле if, пишется условие)
SendClientMessage(playerid, 0xFFFFFF, «Переменная a равна 5»);SendClientMessage — это функция, которая отправляет игроку текст в чат. playerid — это id игрока, в большинстве пабликов (потом объясню что это) скрипта, она принимает id игрока от имени которого вызывается функция. 0xFFFFFF — это цвет текста, который мы выводим в чат (в данном случае белый). «Переменная a равна 5» — это думаю и так понятно, текст который мы выводим в чат.
Ну а дальше в коде стоит else (тоисть, если условие введенное в конструкции if ложно) то выводится другой текст.
Ну что же, синтаксис, переменные и вывод данных мы разобрали. Теперь разберем константы, массивы и подключение инклудов.
Константы — это такие переменные, которые не меняют свое значение на протяжении работы скрипта (как поменять значение константы я все таки нашел 🙂 покажу в конце урока). Объявляются они достаточно просто (желательно объявлять в начале скрипта/мода)
#define ИМЯ_КОНСТАНТЫ Значение
Имя константы я не зря написал именно большими буквами, так как оно должно писаться только заглавными буквами. Значение может иметь любой формат, только если оно текстовое (типа string), то должно заключаться в двойные кавычки. И еще константы не поддерживают тип boolean.
Потом константы можно использовать например в выводе данных в чат:
#define HOT_DOG_CENA 150 #define COLOR_WHITE 0xFFFFFF SendClientMessage(playerid, COLOR_WHITE, HOT_DOG_CENA);
Так мы вывели в чат число 150 белым цветом. Только что чуть не написал текст по формату PHP и вспомнил об функции format. (Просто в PHP переменные и константы вместе с текстом можно соединять просто точкой, а в Pawn такое не пройдет). Функция format используется для записи в переменную отформатированного текста (текст со значениями переменных).
Перед использованием данной функции обязательно нужно создать переменную, в которую запишется текст.
#define HOTDOG_CENA 150 #define COLOR_WHITE 0xFFFFFF new playername[5] = "Pr0C"; new string[128]; format(string, sizeof(string), "%s, цена хот-дога равна %d", playername, HOTDOG_CENA); SendClientMessage(playerid, COLOR_WHITE, string);
Как видите, мы сделали 2 константы, первая это HOTDOG_CENA со значением 150, а вторая это COLOR_WHITE со значением 0xFFFFFF (белый цвет). Дальше мы сделали переменную с именем игрока и переменную string с размером в 128 символов (больше делать нету смысла, так как в одной строке чата вмешается максимум 128 символов, только сервер нагрузите излишним употреблением памяти). Потом в функции format мы написали имя переменной, в которую запишется отформатированный текст. Дальше sizeof(string) — здесь мы узнали размер переменной string (в format обязательно нужно указывать размер переменной), потом мы написали текст который будет форматироваться. А здесь расскажу поподробнее. При форматировании текста с помощью format, можно указывать место, где будет выводится значение из переменной/константы (может и не совсем правильно объяснил, но думаю понятно 🙂 ). При форматировании текста в Pawn существуют специальные вставки ( 🙂 ).
%s — это вставка переменной типа string
%d — типа integer
%f — типа float
Потом после текста, пишутся переменные и константы в таком порядке, в каком они были объявлены в форматируемом тексте. Ну и потом можно свободно использовать нашу переменную. У многих новичков я часто замечал одну и ту же ошибку — создание нескольких переменных для записи в них форматируемого текста. Если вы уже воспользовались переменной с отформатированным текстом и она вам уже больше не нужна, то не нужно создавать еще одну. Запишите новый текст в нее заново. Функция format автоматически очищает переменную и записывает в нее ваш текст.
На этом первая часть урока заканчивается. Я собирался рассказать в ней еще и об массивах, но честно говоря лень пока писать дальше 🙂 Встретимся уже в следующей части, в ней я расскажу о массивах, пабликах (public), пользовательских функциях (stock) и возможно еще о циклах (for и while).
Еще я обещал, что покажу как можно перезаписать значение константы. Раз уж обещал, надо сделать.
#define CONSTANTA 1 //Создаем в начале скрипта константу со значением 1 #undef CONSTANTA //Удаляем константу new const CONSTANTA = 5; //создаем ту же константу со значением 5
Это много кому покажется бесполезным, но когда я писал систему загрузки фракций из базы данных, мне это очень пригодилось 🙂 Правда я не советую вам пользоваться перезаписью константы где-то в середине мода, особенно в функциях. Иначе она может просто пропасть 🙂 Но это уже ваше дело. Практикуйтесь, спрашивайте. Всем помогу и отвечу.
P.S. В некоторых местах я объяснял не совсем правильно, вы уж извините, просто большую часть языка я изучал на зарубежных порталах и не знаю как правильно объяснить по русски. Но я старался объяснить как можно понятнее. Думаю вы простите меня 🙂
Pawn язык программирования обучение
Быстрый переход в группу «Пользователи», без надобности написания постов и ожидания.
Маппинг для сервера
Если вы хотите обновить Ваш сервер новыми доработками — то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей
Моды для сервера
Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.
Программы для скриптера
Подборка удобных программ для скриптера
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
Гарольд
Изучающий
Здравствуйте, уважаемые пользователи портала.
С этого дня я буду выкладывать уроки по изучению языка Pawn.
Раздел I. Что же такое ‘Pawn’?
Pawn — простой язык программирования с открытым исходным кодом.
Файл исходного кода Pawn имеет формат .pwn или .p
Скомпилированный файл имеет формат .amx
Он был написан для начинающих программистов. Почему для начинающих? Потому что синтаксис Pawn очень и очень упрощён.
Сейчас этот язык используется в программировании модов для SA-MP, а также для Counter Strike.
Раздел II. Что необходимо для программирования.
Компилятор языка Pawn + чистый сервер от SA-MP Team:
Раздел III. Мой первый мод
После того, как вы скачали сервер, можно приступить к работе.
Открываем файл pawno.exe в папке pawno
Нажимаем на чистый лист в левом верхнем углу
Вуаля! Перед нами стандартный код для сервера SA-MP.
Удаляем оттуда абсолютно всё.
И нажимаем Run/Compile.
Итак, вы спешите открыть samp-server.exe.
А чего вы хотели от пары строк?
Это подключение «библиотек функций».
Хранятся они в папке СЕРВЕР/pawno/include.
Но вы можете подключить библиотеку из другого места в папке с сервером.
Для этого вам нужно заменить «» на «../Любая_Папка/Название_Инклуда.inc»
Эти стрелочки и кавычки указывают путь к директории с инклудами. Если вы будете использовать стрелочки «< >«, то ваш инклуд будет загружаться непосредственно из папки pawno/include.
А в случае использования кавычек — тут вы можете открыть любую папку (в пределах папки сервера).
Это основная функция. Первым делом в amx-моде всегда загружается main.
Если у вас не будет данной функции в моде, всё скомпилируется нормально, но вот при запуске сервера выведет ошибку:
Invalid index parameter (bad entry point)
Фигурные скобки — это тело функции.
При загрузки функции main() будет выполнена только та часть кода, которая отмечена фигурными скобками «< >«.
Скобки после main() — это аргументы функции. О них позже.
Эта функция подключается из инклуда
Данная функция выводит сообщение в консоль.
ВНИМАНИЕ: Текст в Pawn, как и в других языках программирования, отмечены кавычками.
То компилятор выдаст ошибку:
Invalid expression, assumed zero
На сегодня думаю всё.
Ждите новых уроков