Interested Article - Pawn
- 2020-02-25
- 1
Pawn (прежнее название — Small ) — простой, типизированный 32-битный скриптовый язык программирования с синтаксисом , подобным языку Си . Компилятор генерирует P-код (или байт-код ), запускаемый на абстрактной машине . Файлы исходного кода Pawn имеют расширение .pwn ; скомпилированные и готовые к исполнению — .amx . Популярный язык программирования для игровых серверов Grand Theft Auto San Andreas Multiplayer (GTA SA-MP) и Counter-Strike 1.6 . Имеет необычный компилятор, а также редактор кода — Pawno.
История языка
Введение в язык Pawn и в понятие абстрактной машины было описано как перспектива программистов, и опубликовано в журнале доктора Добба в октябре 1999 года . Язык был разработан для начинающих программистов , которые допускали множество ошибок, связанных с освобождением памяти компьютера .
Основой для Pawn был взят язык Си . Целью разработчиков было упростить и изменить язык Си таким образом, чтобы синтаксис языка позволял избегать или обходить те ошибки, которые допускают неопытные программисты. Выбор языка Си определило то, что этот язык в тот момент достиг максимума своего развития и был довольно популярен .
Особенности языка
- Pawn — это Си-подобный скриптовый язык.
- Можно подключать файлы ( #include ).
- Pawn — это скриптовый язык с компилятором, который выполняет статические проверки, и с , которая (статически) выполняет верификацию P-кода и динамическую проверку.
- С целью портирования , Pawn был написан на ANSI C .
- Pawn поддерживает Unicode/UCS-4 и UTF-8 , а также кодовые страницы . Компилятор может преобразовать введённый исходный код в особую кодовую страницу Unicode; он также поддерживает файлы исходного кода в кодировке UTF-8.
- Он был установлен на микроконтроллеры Atmel ATmega128, Philips LPC2138 и LPC2106 (ядро ARM7TDMI с 32 КБ ОЗУ), а также на Texas Instrument MSP430F1611 (ядро MSP430 с 10 КБ оперативной памяти и 48 КБ Flash ROM). Pawn позволяет запускать большие скрипты с небольшим объёмом памяти.
- Документирование исходного кода может быть сделано с помощью «комментариев документации»; компилятор Pawn извлекает эти комментарии, объединяет их с информацией из исходного кода и записывает в XML -файл, который можно просмотреть (и распечатать) с помощью веб-браузера .
- Pawn поддерживает состояния и автоматы, включая переменные локальных состояний.
- Особенность Pawn заключается в его простоте и интуитивности. Синтаксис языка очень похож на C/C++, поэтому программисты, знакомые с этими языками, смогут быстро освоить Pawn. Кроме того, в Pawn есть множество встроенных функций, которые упрощают разработку и позволяют быстро достичь нужного функционала. Он предоставляет разработчикам возможность создавать и управлять внутриигровыми сценариями, добавлять новые возможности и изменять поведение игры.
Типы данных
В языке Pawn существует 4 типа данных:
-
Целые числа
, Integer (при объявлении переменной тип данных указывать не требуется,
new Переменная;
) -
Числа с плавающей точкой
(
new Float:Переменная;
) -
Логический тип
, булев или Boolean (
new bool:Переменная;
) - Символ
Примеры кода
«Hello World» выглядит почти так же, как и в Си :
main()
{
print("Hello World!");
}
Пример создания и использования массива для целочисленных значений:
#include <core>
main()
{
new array[4]; // Инициализация массива с 4 элементами
array[0] = 43; // Изменение значения элемента с индексом 0
array[1] = 10; // Изменение значения элемента с индексом 1
array[2] = 799; // Изменение значения элемента с индексом 2
array[3] = 121332; // Изменение значения элемента с индексом 3
return 1; // Возвращает 1
}
Пример цикла и оператора if-else:
#include <core>
main()
{
new i;
for(i = 0; i < 10; i++)
{
if (i != 9)
{
printf("%d", i);
}
else
{
print("девять");
}
}
return 1; // Возвращает 1
}
Пример использование переменных:
#include <core>
main()
{
new a = 3;
new b = 1;
printf("А равно = %d, а Б = %d", a, b); // При старте будет писать: А равно = 3, а Б = 1.
return 1; // Возвращает 1
}
Пример использования операторов выражения:
#include <core>
main()
{
new a = 1;
new b = 2;
new c = 3;
if(a < b) print("A меньше B"); // При старте будет писать: A меньше B
if(c != a) print("C не равняется A"); // При старте будет писать: C не равняется A
if(a == 1 && a != b) print("A равняется 1 и не равняется B"); // При старте будет писать: A равняется 1 и не равняется B
if(b == 2 || c == 3) print("B равняется 2 или C равняется 3"); // При старте будет писать: B равняется 2 или C равняется 3
return 1; // Возвращает 1
}
Применение языка
Некоторые примеры использования языка Pawn :
- Grand Theft Auto: San Andreas Multiplayer — для написания игровых режимов/сценариев, использующих API, для собственных серверов популярного неофициального мультиплеера San Andreas Multiplayer игры Grand Theft Auto: San Andreas .
- AmxModX — в написании плагинов для AmxModX, которые позволяют выполнять сценарии на серверах игр на движке GoldSrc . Самыми популярными являются применения в играх Half-life и Counter-Strike
- SourceMod — в написании плагинов для модулей , которые позволяют выполнять сценарии на серверах игр Half-Life 2: Deathmatch , Counter-Strike: Source и других игр на движке Source .
- WOWCube — написание прикладных игр для этой игровой консоли , и его эмулятора .
Примечания
- ↑ (англ.) . Дата обращения: 13 июля 2011. Архивировано из 31 августа 2012 года.
- (4 марта 2008). Архивировано из 14 августа 2012 года.
- (англ.) . Архивировано из 14 августа 2012 года.
- ↑ (англ.) . Дата обращения: 19 июля 2011. Архивировано из 14 августа 2012 года.
- www.amxmodx.org. Дата обращения: 10 апреля 2019. 10 апреля 2019 года.
- Dean Takahashi (2018-05-30). . VentureBeat . из оригинала 2 июня 2021 . Дата обращения: 28 июня 2018 .
Ссылки
- (англ.) — официальный сайт
- — портал, форум по программированию на языке Pawn
- — библиотека содержит всю документацию по скриптам и описание функций SAMP
- 2020-02-25
- 1