Что такое pawn и с чем его едят | Pawno-Info.Ru
Pawn (прежнее название — Small) — простой, не типизированный 32-битный скриптовый язык программирования с синтаксиcом, подобным языку Си. Компилятор генерирует P-код (или байт-код), запускаемый на абстрактной машине. Файлы исходного кода Pawn имеют расширение .pwn. Скомпилированные и готовые к исполнению файлы получают расширение: .amxПо-русски
Pawno — это программа для создания/редактирования геймодов для SA:MP.Проекты сохраняются в формате .pwn,которые после можно открыть с помощью pawno.Для запуска мода вам понадобится файл с расширением .amx который создается при комплинировании проекта в pawno.Формат .amx вы не сможете открыть через pawno,но в этом есть и свои плюсы!
Где используется pawno
Grand Theft Auto: San Andreas Multiplayer
Язык Pawn активно используется для написания игровых режимов/сценариев, использующие API, для собственных серверов популярного неофициального мультиплеера San Andreas Multiplayer игры Grand Theft Auto: San Andreas.
Counter Strike: AmxModX и SourceMod
Язык Pawn используется в написании плагинов для модулей AmxModX и SourceMod, которые позволяют выполнять сценарии на серверах мультиплеера игры Counter Strike.
Особенности и история
Введение в язык Pawn и в понятие абстрактной машины было описано как перспектива программистов, и опубликовано в журнале доктора Добба в октябре 1999 года. Язык был разработан для начинающих программистов, которые допускали множество ошибок, связанных с освобождением памяти компьютера.
Основой для Pawn был взят язык Си. Целью разработчиков было упростить и изменить язык Си таким образом, чтобы синтаксис языка позволял избегать или обходить те ошибки, которые допускают неопытные программисты. Выбор языка Си определило то, что этот язык в тот момент достиг максимума своего развития и был довольно популярен.
Pawn очень похож на другие языки, однако он от них фундаментально отличается
Pawn, как язык, не имеет встроенных ресурсов памяти.
Pawn не объектно-ориентированный язык. Pawn является процедурным и полагается на подпрограммы и Callback’и. Так же у него нету Си-подобных структур.
Pawn однопоточный язык программирования.
Типы данных
В языке Pawn существует только 3 типа данных:
Целые числа, Integer ( при объявлении переменной тип данных указывать не требуется, new Переменная; )
Числа с плавающей точкой ( new Float:Переменная; )
Логический тип, булев или Boolean ( new bool:Переменная; )
Ну вот и все!Многое взято из википедии,немного лишь своего написал.Желаю вам стать классными скриптерами или еще лучше чем вы сейчас!Ну что интересно?Кстати один интересный факт я и pawn ровесники(1998г.)
Pawn — это… Что такое Pawn?
Pawn (прежнее название — Small)[1] — простой, не типизированный 32-битный скриптовый язык программирования с синтаксиcом, подобным языку Си. Компилятор генерирует P-код (или байт-код), запускаемый на абстрактной машине. Файлы исходного кода Pawn имеют расширение .pwn. Скомпилированные и готовые к исполнению файлы получают расширение .amx
История языка
Введение в язык Pawn и в понятие абстрактной машины было описано как перспектива программистов, и опубликовано в журнале доктора Добба[3] в октябре 1999 года. Язык был разработан для начинающих программистов, которые допускали множество ошибок, связанных с освобождением памяти компьютера.[4]
Основой для Pawn был взят язык Си. Целью разработчиков было упростить и изменить язык Си таким образом, чтобы синтаксис языка позволял избегать или обходить те ошибки, которые допускают неопытные программисты. Выбор языка Си определило то, что этот язык в тот момент достиг максимума своего развития и был довольно популярен.
Особенности языка
Pawn очень похож на другие языки, однако он от них фундаментально отличается
- Pawn, как язык, не имеет встроенных ресурсов памяти.
- Pawn не объектно-ориентированный язык. Pawn является процедурным и полагается на подпрограммы и Callback’и. Так же у него нет Си-подобных структур.
- Pawn однопоточный язык программирования.
Применение языка
Grand Theft Auto: San Andreas Multiplayer
Язык Pawn активно используется для написания игровых режимов/сценариев, использующие API, для собственных серверов популярного неофициального мультиплеера San Andreas Multiplayer игры Grand Theft Auto: San Andreas.
Counter Strike: AmxModX и SourceMod
Типы данных
В языке Pawn существует 4 типа данных:
Примеры кода
«Hello World» выглядит так же как и в Си:
#include <core> main() { print("Hello World!"); return 1; // Возвращает 1 }
Пример создания и использования массива для целочисленных значений
#include <core> main() { new array[4]; // Инициализация массива с 4 элементами array[0] = 43; // Изменение значения элемента с индексом 0 array[1] = 10; // Изменение значения элемента с индексом 1 array[2] = 799; // Изменение значения элемента с индексом 2 array[3] = 1212; // Изменение значения элемента с индексом 3 return 1; // Возвращает 1 }
Пример цикла и оператора if-else
#include <core> main() { for(new i = 0; i < 10; i++) { if(i != 9) printf("%d,", i); else print("девять"); } return 1; // Возвращает 1 }
Примечания
Ссылки
Изучаем язык pawn [урок 1] | Pawno-Info.Ru
Урок №1 — основы.1. Что такое pawno.
Pawn — язык программирования используемый в SAMP для создания модов и фильтрскриптов.
Для их написания используется программа pawno которая поставляется вместе с сервером.
2. Открываем pawno.
Для начала вам нужно скачать сам сервер.Скачиваем его с сайта sa-mp.com. Напоминаю сейчас актуальна версия 0.3e.
Затем заходим в только что распакованную папку и заходим в находящуюся там папку pawno. В ней вы увидите прогу/файл pawno.exe, лучше сделайте у себя на рабочем столе ее ярлык.
Итак щелкаем по созданному ярлыку и видим довольно простой интерфейс.
3. Делаем первые шаги.
Вверху вы увидите панель на которой вам нужно нажать кнопку с белым листом, тем самым мы создадим новый файл.
Итак что вы видите? Куча непонятных слов и скобочек, так давайте разберемся что и зачем там нужно.
В самом верху мы видим:
#include (инклюды) — это своеобразные файлы, которые содержат в себе (новые) функции. К примеру include подключает все стандартные функции (без него ваш сервер не будет работать).
Найдём в моде такие строчки:
PHP:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}
public OnPlayerCommandText(playerid, cmdtext[]) — это паблик. Они вызываются при определенном действии на сервере. Вот этот паблик вызывается если игрок введет какую нибудь команду.// Do something here — это комментарий.Игноируется компилятором.В основном они нужны что бы не запутаться в своем скрипте(например указать зачем нужна созданная вами команда) или закомментировать ненужный кусок кода.
Теперь давайте сохраним этот файл с помощью кнопки в виде дискеты(лучше всего в папке сервера gamemodes, там все моды подключаемые к серверу и должны находиться) с именем test(можете назвать по другому только не ставьте пробелы в названии).Затем нажмем на кнопку в виде окна с шестеренкой которая напротив синей стрелочки, тем самым вы скомпилируете мод.
И если у вас вылезло окно с таким текстом:
PHP:
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
То значит все в порядке.Если вылезла какая нибудь ошибка или предупреждение то в ней будет написано в какой именно строке это произошло.
Понравилось, поставь +
Следующий урок очень скоро.
Pawno — это… Что такое Pawno?
Pawn (прежнее название — Small)[1] — простой, не типизированный 32-битный скриптовый язык программирования с синтаксиcом, подобным языку Си. Компилятор генерирует P-код (или байт-код), запускаемый на абстрактной машине. Файлы исходного кода Pawn имеют расширение *.pwn. Скомпилированные и готовые к исполнению файлы получают расширение: *.amx
История языка
Введение в язык Pawn и в понятие абстрактной машины было описано как перспектива программистов, и опубликовано в журнале доктора Добба[3] в октябре 1999 года. Язык был разработан для начинающих программистов, которые допускали множество ошибок, связанных с освобождением памяти компьютера.[4]
Основой для Pawn был взят язык Си. Целью разработчиков было упростить и изменить язык Си таким образом, чтобы синтаксис языка позволял избегать или обходить те ошибки, которые допускают неопытные программисты. Выбор языка Си определило то, что этот язык в тот момент достиг максимума своего развития и был довольно популярен.
Особенности языка
Pawn очень похож на другие языки, однако он от них фундаментально отличается
- Pawn, как язык, не имеет встроенных ресурсов памяти.
- Pawn не объектно-ориентированный язык. Pawn является процедурным и полагается на подпрограммы и Callback’и. Так же у него нету Си-подобных структур.
- Pawn однопоточный язык программирования.
Применение языка
Grand Theft Auto: San Andreas Multiplayer
Язык Pawn активно используется для написания игровых режимов/сценариев, использующие API, для собственных серверов популярного неофициального мультиплеера San Andreas Multiplayer игры Grand Theft Auto: San Andreas.
Counter Strike: AmxModX и SourceMod
Типы данных
В языке Pawn существует только 3 типа данных:
Примеры кода
Пример создания и использования массива для целочисленных значений
#include <core> main() { new array[4]; // Инициализация массива с 4 элементами array[0] = 43; // Изменение значения элемента с индексом 0 array[1] = 10; // Изменение значения элемента с индексом 1 array[2] = 799; // Изменение значения элемента с индексом 2 array[3] = 1212; // Изменение значения элемента с индексом 3 return 1; // Возвращает 1 }
Пример цикла и оператора if-else
#include <core> main() { for(new i = 0; i < 10; i++) { if(i != 9) printf("%d,", i); else print("девять"); } return 1; // Возвращает 1 или true }
Примечания
Ссылки
pawn — Викисловарь
Содержание
- 1 Английский
- 1.1 pawn I
- 1.1.1 Морфологические и синтаксические свойства
- 1.1.2 Произношение
- 1.1.3 Семантические свойства
- 1.1.3.1 Значение
- 1.1.3.2 Синонимы
- 1.1.3.3 Антонимы
- 1.1.3.4 Гиперонимы
- 1.1.3.5 Гипонимы
- 1.1.4 Родственные слова
- 1.1.5 Этимология
- 1.1.6 Фразеологизмы и устойчивые сочетания
- 1.2 pawn II (существительное)
- 1.2.1 Морфологические и синтаксические свойства
- 1.2.2 Произношение
- 1.2.3 Семантические свойства
- 1.2.3.1 Значение
- 1.2.3.2 Синонимы
- 1.2.3.3 Антонимы
- 1.2.3.4 Гиперонимы
- 1.2.3.5 Гипонимы
- 1.2.4 Родственные слова
- 1.2.5 Этимология
- 1.2.6 Фразеологизмы и устойчивые сочетания
- 1.3 pawn II (глагол)
- 1.3.1 Морфологические и синтаксические свойства
- 1.3.2 Произношение
- 1.3.3 Семантические свойства
- 1.3.3.1 Значение
- 1.3.3.2 Синонимы
- 1.3.3.3 Антонимы
- 1.3.3.4 Гиперонимы
- 1.3.3.5 Гипонимы
- 1.3.4 Родственные слова
- 1.3.5 Этимология
- 1.3.6 Фразеологизмы и устойчивые сочетания
- 1.4 pawn III
- 1.4.1 Морфологические и синтаксические свойства
- 1.4.2 Произношение
- 1.4.3 Семантические свойства
- 1.4.3.1 Значение
- 1.4.3.2 Синонимы
- 1.4.3.3 Антонимы
- 1.4.3.4 Гиперонимы
- 1.4.3.5 Гипонимы
- 1.4.4 Родственные слова
- 1.4.5 Этимология
- 1.4.6 Фразеологизмы и устойчивые сочетания
- 1.5 pawn IV
- 1.5.1 Морфологические и синтаксические свойства
- 1.5.2 Произношение
- 1.5.3 Семантические свойства
- 1.5.3.1 Значение
- 1.5.3.2 Синонимы
- 1.5.3.3 Антонимы
- 1.5.3.4 Гиперонимы
- 1.5.3.5 Гипонимы
- 1.5.4 Родственные слова
- 1.5.5 Этимология
- 1.5.6 Фразеологизмы и устойчивые сочетания
- 1.1 pawn I
Морфологические и синтаксические свойства[править]
ед. ч. | мн. ч. |
---|---|
pawn | pawns |
pawn
Существительное.
Корень: -pawn-.
Произношение[править]
- МФА: [pɔːn]
Семантические свойства[править]
Значение[править]
- шахм. пешка ◆ Отсутствует пример употребления (см. рекомендации).
- перен. пешка, марионетка, орудие в чьих-либо руках ◆ Отсутствует пример употребления (см. рекомендации).
Синонимы[править]
Антонимы[править]
Гиперонимы[править]
Гипонимы[править]
Родственные слова[править]
Ближайшее родство | |
Этимология[править]
От ??
Фразеологизмы и устойчивые сочетания[править]
Для улучшения этой статьи желательно:
|
pawn II (существительное)[править]
Морфологические и синтаксические свойства[править]
ед. ч. | мн. ч. |
---|---|
pawn | pawns |
pawn
Существительное.
Корень: —.
Произношение[править]
- МФА: [pɔːn]
Семантические свойства[править]
Значение[править]
- заклад, залог ◆ Отсутствует пример употребления (см. рекомендации).
- заложник ◆ Отсутствует пример употребления (см. рекомендации).
Синонимы[править]
Антонимы[править]
Гиперонимы[править]
Гипонимы[править]
Родственные слова[править]
Ближайшее родство | |
Этимология[править]
От ??
Фразеологизмы и устойчивые сочетания[править]
Для улучшения этой статьи желательно:
|
Морфологические и синтаксические свойства[править]
Инфинитив | pawn |
3-е л. ед. ч. | pawns |
Прош. вр. | pawned |
Прич. прош. вр. | pawned |
Герундий | pawning |
pawn
Глагол, правильный.
Корень: —.
Произношение[править]
- МФА: [pɔːn]
Семантические свойства[править]
Значение[править]
- закладывать, отдавать в залог ◆ Отсутствует пример употребления (см. рекомендации).
- гарантировать, ручаться ◆ Отсутствует пример употребления (см. рекомендации).
Синонимы[править]
Антонимы[править]
Гиперонимы[править]
Гипонимы[править]
Родственные слова[править]
Ближайшее родство | |
Этимология[править]
От ??
Фразеологизмы и устойчивые сочетания[править]
Для улучшения этой статьи желательно:
|
Морфологические и синтаксические свойства[править]
pawn
Существительное.
Корень: —.
Произношение[править]
- МФА: [pɔːn]
Семантические свойства[править]
Значение[править]
- устар. павлин ◆ Отсутствует пример употребления (см. рекомендации).
Синонимы[править]
- peacock
Антонимы[править]
Гиперонимы[править]
Гипонимы[править]
Родственные слова[править]
Ближайшее родство | |
Этимология[править]
От ??
Фразеологизмы и устойчивые сочетания[править]
Для улучшения этой статьи желательно:
|
Морфологические и синтаксические свойства[править]
ед. ч. | мн. ч. |
---|---|
pawn | pawns |
pawn
Существительное.
Корень: —.
Произношение[править]
- МФА: [pɔːn]
Семантические свойства[править]
Значение[править]
- устар. галерея, крытая колоннада ◆ Отсутствует пример употребления (см. рекомендации).
Синонимы[править]
Антонимы[править]
Гиперонимы[править]
Гипонимы[править]
Родственные слова[править]
Ближайшее родство | |
Этимология[править]
От ??
Фразеологизмы и устойчивые сочетания[править]
Для улучшения этой статьи желательно:
|
Урок №1 Состав языка Pawn — Manuals — PAWNO-RUS.RU
By odosenok 1. Введение. Суть перехватов.
В данном уроке я постараюсь рассказать про то, что такое перехваты. Мы разберем некоторые примеры перехватов функций, покажем пример, где эти перехваты могут пригодиться.
Что такое перехваты? Зачастую возникает ситуация, когда нам необходимо как-то изменить действия, происходящие в функции. Но редактирование уже имеющейся функции (как правило, это стандартные функции) не есть лучший вариант. Почему? Если мы хотим внести какие-то дополнительные действия в нужную нам функцию, придется открывать файл, в котором содержится данная функция, ее редактировать. А если выйдет новая версия файла a_samp? Все наши действия придется повторить сначала, теперь уже в новом файле.
Для того собственно и придуман перехват. Так, мы перехватываем заранее объявленную функцию, вследствие чего меняется порядок вызова функций:
Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту code.
Обратите внимание: в цепочке перехватов присутствуют несколько перехваченных функций. Отсюда можно сделать вывод, что число перехватов не ограничено никем и ничем. Более того, перехваты функций — это лишь смена названий каждой последующей функции препроцессором (перед началом компиляции), каждая из которых вызывается впоследствии системой.
Для перехвата функций нам потребуются некоторые директивы (#define, #if defined, #endif), а также сами функции, которые мы внедряем в перехваты.
2. Построение перехватов.
Давайте попробуем немного проанализировать перехват функций, не имея пока что представления о том, как их правильно перехватывать.
У нас есть функция A. Мы хотим, чтобы в ней происходил вывод текста «Hello world» в логи сервера. Как говорили ранее, внедрять этот текст в код функции A мы не будем (потому, что если выйдет обновление версии файла, в котором содержится эта функция, мы утратим свои корректировки в данной функции). Значит, нам нужно сделать так, чтобы это изменение могли внести без изменения кода файла.
Рассмотрим следующий вариант:
Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту code.
В данном варианте мы создали макрос. Так, при использовании «InterceptFunctionA()» сначала в логи сервера будет вноситься наш текст, а затем вызываться сама функция. Но в данном методе есть два нюанса: во-первых, у нас теперь новое название функции (а мы не хотим поправлять его во всем моде), во-вторых, данный метод нам не подойдет, если вместе с данной функцией мы хотим выполнить еще с десяток других действий.
Так я постарался дать понять Вам, что на самом деле перехваты не создают визуальных неудобств: функция будет называться так, как называлась, свой код в макросы вы не вписываете.
В общем и целом метод перехватов, которому мы сейчас обучаемся, выглядит следующим образом:
Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту code.
Каждый перехватчик есть ни что иное как отдельная функция. И, соответственно, в ходе перехватов мы поочередно вызываем функции, в которых прописаны Ваши действия перехватчика.
Перехваты нативных функций и функций, вызывающихся автоматически, несколько отличаются. Поэтому урок мы немного разделим.
Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту spoiler.
Как правило, перехваты применяются тогда, когда одну и ту же функцию необходимо использовать по-разному в разных файлах. С помощью перехватов мы можем в каждом файле перехватывать отдельные функции и вносить корректировки в их работу.
3. Перехваты функций: за и против.
В каждой ситуации есть сторонники какой-либо идеи и ее противники. Сейчас я постараюсь рассказать основные аспекты использования перехвата функций. А использовать их или нет — решать Вам.
1. Вы можете манипулировать одной и той же функцией по-разному в разных файлах. Это значит, что Вам не придется каждый раз добавлять различные проверки на то, подключен ли какой-либо файл, чтобы внести код «под него». Так, Вам достаточно лишь подключить нужный файл, чтобы вся цепочка вызовов работала как следует. Соответственно, при отключении файла проблем также не возникнет.
2. Перехват функций есть ни что иное как последовательные вызовы функций. Несомненно, на вызов функций уходит какая-то часть времени, но это время ничтожно для того, чтобы Ваш сервер действительно стал подтормаживать.
3. Если перехватываемую функцию использовать до того, как она перехвачена, функционировать она не будет (как Вы хотите). При этом про проблему в перехвате подумаете далеко не сразу. И главное — компилятор Вам не даст понять, что у Вас это не сработает, ведь со стороны его логики все сделано правильно. Поэтому перехватам вводят альтернативу: создают новую функцию с постфиксом «Ex», в которую уже помещают код перехвата и вызов самой функции:
Пожалуйста войдите или зарегистрируйтесь чтобы увидеть эту code.
Нюанс данной реализации в том, что теперь Вам придется использовать только ПерехватываемаяФункцияEx, о чем Вы можете забыть и вызвать не данную функцию, а ее оригинал.
4. Авторское право.
Автор данной статьи: @odosenok
Отдельное спасибо за разъяснения: Daniel_Cortez
Архитектура Pawn(SA-MP) проекта — ziggi — blog
В этой статье я хочу посоветовать Pawn скриптерам то, как нужно устраивать внутреннюю часть вашего SA-MP проекта. Далеко не секрет, что большая часть скриптеров хранят свои режимы всего в одном .pwn файле. Эта мода пошла от режимов Pen и The Godfather. В действительности, это решение является довольно непрактичным, ибо при увеличении количества кода, его сложность значительно увеличивается.
Чтобы избежать усложнения проекта при его расширении, вам достаточно правильно спроектировать архитектуру вашего проекта до его реализации, или провести рефакторинг уже существующего проекта.
Подготовка
У нас есть каталог projects/, в котором будут храниться все наши Pawn проекты. Конечно, вам потребуется компилятор, лучше всего компилятор не хранить в каждом проекте, а вынести в отдельный каталог compiler/. Проекты будут храниться в каталогах projects/project_1, projects/project_2, где project_1 и project_2 — названия ваших проектов.
В итоге, площадка для разработки должна выглядеть следующим образом:
compiler includes a_actor.inc a_http.inc a_npc.inc a_objects.inc a_players.inc a_sampdb.inc a_samp.inc a_vehicles.inc core.inc datagram.inc file.inc float.inc string.inc time.inc libpawnc.so pawncc pawncc.exe pawncc.pdb pawnc.dll pawnc.pdb project_1 project_2
Я рекомендую использовать версию Pawn компилятора от Zeex. Эта версия отличается исправлением некоторых ошибок, введением небольшого количества новых возможностей и версией для Linux.
Проектирование проекта
Для тестирования удобно будет расположить сервер в каталоге с проектом, поэтому файлы samp-npc.exe, samp-server.exe, server.cfg и каталоги gamemodes/ scriptfiles/, plugins/ будут расположены в каталоге проекта.
Исходные коды проекта будут размещаться в отдельном каталоге sources/.
Для компиляции проекта нам понадобится исполняемый файл make.bat для Windows и make.sh для Linux, создайте файл make.bat и make.sh в каталоге проекта и поместите туда, изменив в нём имя проекта project_1 на своё, следующее содержимое:
make.bat:
set name=project_1 ..\compiler\pawncc.exe -;+ -(+ -i../compiler/includes sources\%name%.pwn if exist %name%.amx ^ move %name%.amx gamemodes\ pause
make.sh:
#/bin/bash export LD_LIBRARY_PATH=$(pwd)"/../compiler/:$LD_LIBRARY_PATH" NAME=project_1 ./../compiler/pawncc "-;+" "-(+" "-i../compiler/includes" sources/$NAME.pwn if [ $(stat -c%s "$NAME.amx") -gt 0 ]; then mv $NAME.amx gamemodes/ else rm $NAME.amx fi
В итоге, мы получили такую структуру проекта:
project_1 gamemodes plugins scriptfiles sources make.bat make.sh samp-npc.exe samp-server.exe server.cfg
Далее необходимо создать шаблон структуры файлов проекта. Я порекомендую наиболее полный, по моему мнению, вариант.
- Каталог admin/, в котором будут расположены все функции администратора. Файлы: admin/commands.inc, admin/menu.inc, admin/kick.inc, admin/ban.inc, admin/jail.inc, admin/mute.inc. В принципе, по их названию понятно, что в них должно находиться. Ещё нужен файл admin/admin.inc, который будет объединять всё из admin/. И в котором будут находиться небольшие функции, которые не заслужили отдельного файла.
- Каталог core/, в котором будут храниться функции, связанные с ядром системы. Например, там может находится файл core/log.inc, в котором будет реализована система логирования. Файл core/lang.inc, в котором будет реализована система многоязычности.
- Каталог gang/, в котором расположены все функции, связанные с бандой. Файлы: gang/commands.inc, gang/menu.inc, gang/level.inc. Ещё нужен файл gang/gang, который будет объединять всё из gang/. И в котором будут находиться небольшие системки, которые не заслужили отдельного файла.
- Каталог lang/, в котором будут храниться различные локали, нужные при компиляции.
- Каталог lib/, в котором расположены библиотеки с функциями, такие как mxINI.inc, a_mysql.inc, foreach.inc и другие.
- Каталог player/, в котором расположены все функции игрока. Файлы: player/commands.inc, player/menu.inc, player/level.inc, player/vip.inc. Ещё нужен файл player/player.inc, который будет объединять всё из player/. И в котором будут находиться небольшие системки, которые не заслужили отдельного файла. А системы, которые можно (и нужно) разделить следует поместить в подкаталог, например player/weapon/, в котором будут находиться файлы, с реализацией системы оружия игрока (например: drop.inc, skill.inc, weapon.inc).
- Каталог protect/, в котором будут расположены различные античиты и защиты. Вот примерный список: protect/armour.inc, protect/chat.inc, protect/health.inc, protect/idle.inc, protect/jetpack.inc, protect/ping.inc, protect/rconlogin.inc, protect/speed.inc, protect/weapon.inc.
- Каталог quest/, в котором расположены скрипты всех заданий режима(например: quest/trucker.inc, quest/cashbox.inc). И файл quest/quest.inc, в котором расположена сама система заданий и которая объединяет все задания из каталога quest/.
- Каталог services/, в котором расположены услуги режима, которые доступны игроку. Например: services/bank.inc, services/business.inc, services/housing.inc, services/skinshop.inc, services/weaponshop.inc, services/bar.inc, services/fastfood.inc, services/lottery.inc, services/vehshop.inc
- Каталог system/, в котором расположены системы режима, не вошедшие в другие категории. Например: system/deathmath.inc, system/race.inc, system/weather.inc.
- Каталог vehicle/, в котором расположены функции, для работы с транспортом. Например: vehicle/damage.inc, vehicle/menu.inc, vehicle/radio.inc. Ещё нужен файл vehicle/vehicle.inc, который будет объединять всё из vehicle/.
- Нам обязательно понадобится файл config.inc, в котором будут храниться все настройки режима.
- Ну и конечно файл project_1.pwn — это главный файл проекта, который объединяет все системы в единое целое.
Получается такое дерево структуры файлов проекта:
gamemodes plugins scriptfiles sources admin admin.inc ban.inc commands.inc jail.inc kick.inc mute.inc menu.inc core db.inc lang.inc log.inc world.inc gang level.inc commands.inc menu.inc gang.inc lang en.inc ru.inc lib a_mysql.inc foreach.inc mxINI.inc player weapon drop.inc skill.inc weapon.inc commands.inc menu.inc level.inc vip.inc player.inc protect armour.inc chat.inc health.inc idle.inc jetpack.inc ping.inc rconlogin.inc speed.inc weapon.inc quest cashbox.inc trucker.inc quest.inc services bank.inc bar.inc business.inc fastfood.inc housing.inc lottery.inc skinshop.inc vehshop.inc weaponshop.inc system deathmath.inc race.inc weather.inc vehicle damage.inc menu.inc radio.inc vehicle.inc config.inc project_1.pwn announce.exe make.bat make.sh samp-npc.exe samp-server.exe server.cfg
Послесловие
Предложенный метод расположения файлов проекта не является истинно правильным, все, предложенные здесь, решения можно оспорить и, возможно, улучшить. Но построение архитектуры проекта на основе предложенной модели будет много лучше чем то, что наблюдается в настоящее время в большинстве проектов.
Язык Пешка
Встроенный язык сценариев
pawn — это простой, не типизированный 32-битный язык расширения с C-подобным синтаксисом. Пешечная «исходная» программа компилируется в двоичный файл для оптимального выполнения скорость. Компилятор пешки выводит P-код (или байт-код), который впоследствии запускается на абстрактной машине. Скорость исполнения, стабильность, простота и небольшой след были важными критериями дизайна как для языка, так и для абстрактная машина.
с первого взгляда
Для получения любой информации, не указанной в этом списке, просмотрите эту страницу. С надеждой Вы найдете то, что ищете.
Введение
Введение в язык пешек и абстрактную машину из точка зрения программиста была опубликована в октябре 1999 года Журнал доктора Добба — но в то время, язык назывался малым. Более подробный, чем статья, и более подходящий для неопытных программистов, это руководство.Пособие содержит краткое (учебное пособие) обзор языка, справочник по языку, программные заметки на реферате машина, случайные заметки о том, почему и как многие языковые функции, и справочный материал.
- Пешка
- — это простой, C-подобный язык. пешка
- — надежный язык с компилятором, который выполняет максимум статических проверок, и рефератом машина с (статической) проверкой P-кода и динамическими проверками.
- Для целей переноса пешка пишется как можно больше в ANSI C; Big Endian по сравнению с Little Endian обрабатывается.
- Для обеспечения интернационализации и локализации pawn поддерживает Unicode / UCS-4 и UTF-8, а также кодовые страницы. Компилятор может конвертировать введенный исходный код в определенной кодовой странице для Unicode; он также поддерживает файлы исходного кода в Формат UTF-8.
- пешка быстро (особенно с ассемблерной реализацией Марка Питера и / или его компилятором «точно в срок»)
- пешка маленькая. Он был установлен на микроконтроллере Atmel ATmega128, Микроконтроллеры Philips LPC2138 и LPC2106 (ядро ARM7TDMI с оперативной памятью 32 КиБ), а также на MSP430F1611 от Texas Instrument (ядро MSP430 с оперативной памятью 10 КиБ и 48 КБ Flash ROM).Использование кода накладывается на , которые загружаются по требованию, Пешка может запускать большие скрипты в маленькой памяти.
- Документирование исходного кода можно сделать с помощью «комментариев к документации»; Компилятор пешки извлекает эти комментарии, объединяет их с информацией выводит из исходного кода и пишет файл XML, который сразу для просмотра (и печати) с веб-браузером. пешка
- поддерживает состояний и автоматов на языке, включая локальные переменные состояния.
- пешка бесплатно , и она опубликована под Apache License 2.0, плюс пункт об исключении, чтобы явно разрешить статическое связывание библиотеки с коммерческими приложениями.
- Дополнительные функции … см. Отдельную «страницу функций»
Зачем закладывать сейчас, когда есть Java, Lua, REXX и многие другие? Хорошо, когда мне нужен языковой инструментарий, исполняемый код которого может быть встроен в файлы ресурсов или форматы файлов анимации, которые имели хороший интерфейс к нативному функции, которые добавили немного накладных расходов к основному приложению и могли работать на платформы и микроконтроллеры с (очень) небольшим объемом оперативной памяти, и это было довольно быстро, Я не мог найти существующий инструментарий, который соответствовал бы моим потребностям.Смотрите также список языковых возможностей.
В отличие от многих языков, пешка не предназначена для написания полноценных символов. приложения в. пешка цель сценарий функциональность предоставляется приложением или устройством. Это по назначению похоже на Microsoft Visual Basic для приложений, только быстрее и меньше (и без проблем установки).
Пешкабыла общедоступна с 1998 года и стабильно улучшение: больше ошибок, несколько ошибок, новые функции и увеличение производительности.Есть еще регулярные обновления и патчи: исправлять ошибки, добавлять функции или просто повышать удобство использования.
Стоит упомянуть еще пару моментов:
- пешка предоставляется , а . Я предлагаю поддержку и ценю обратную связь, но нет никаких гарантий или подразумеваемой ответственности.
- Инструментарий пешки состоит из компилятора и абстрактной машины (или
«виртуальная машина»). В настройках по умолчанию абстрактная машина встроена в
приложение (для легкого взаимодействия с объектами приложения и для
лучшая производительность), в то время как компилятор является отдельным исполняемым
приложение запускается как внешний процесс.
При встраивании компилятора в приложение, обратите внимание, что основной функцией компилятораpc_compile ()
является , а не реентера. Другими словами, компилируйте только один скрипт за раз.
Начало работы
Первый вопрос: что вам нужно? Если вы используете Microsoft Windows, скачать набор пешек в виде самораспаковывающегося установочного файла; это дает все, что вам нужно для начала:
- бинарных файлов для Win32
- редактор и среда разработки (Quincy IDE)
- полный источник всех инструментов / библиотек
- вся документация (формат Adobe Acrobat)
Пользователи Linux должны собрать инструментарий из исходного кода.Вы можете получить источник код из проекта GitHub. Файл «README.TXT» (в проекте GitHub) содержит раздел для сборки двоичные файлы из исходного кода, используя Генератор make-файлов CMake. Вам также следует скачать два файла документации «Руководство по языку» и «Руководство по внедрению». «Руководство по внедрению» сообщит вы о параметрах и конфигурациях, которые у вас есть в создании двоичных файлов, и «Путеводитель по языку» научит вас языку пешки. Если вы новичок в программирование, тонкое руководство «Нежное введение в программирование» призвано помочь ты с первых шагов.
Предполагая, что вы получили (каким-то образом) исполняемую версию пешки компилятор и время выполнения пешки, вы должны поместить его в каталог. Тем не мение, компилятор пешки также должен найти «включаемые файлы». На многих действующих систем, компилятор пешки может автоматически читать эти заголовочные файлы из каталога «include», который находится ниже каталога, в котором находится компилятор само по себе. Таким образом, если компилятор пешки находится в каталоге «C: \ WhatEver \ Pawn», я предложить вам также создать каталог «C: \ WhatEver \ Pawn \ include» и скопировать ».Inc «файлы там. Если ваша операционная система не совместима с Win32 или Linux, компилятор пешки может не знать, как найти каталог «include» и вы должны указать это самостоятельно с параметром командной строки «-i» (когда запуск компилятора).
Что за вашей спиной, найдите один из примеров сценариев (например, «hello.p») и скомпилируйте это с:
Это должно привести к созданию «hello.amx», который затем можно запустить:pawncc привет
привет пешка
Многие приложения, использующие pawn, запускают pawn compiler как дочерний процесс; то есть компилятор пешки часто является отдельной, автономной программой. абстрактная машина, однако, почти никогда не является отдельным процессом: обычно вы хотите, чтобы абстрактная машина была интегрирована в приложение, чтобы скрипты Можете позвонить в приложение. Другими словами, вы можете использовать «pawncc» как есть, но вы не будете использовать «пешку» как есть. Вот почему пешка остается короткой и тупой, «pawnrun» — это программа, которая в основном разработана в руководстве по пешкам, чтобы показать вам что вы должны сделать как минимум, чтобы встроить пешку в программу.
Поддержка
Пожалуйста, посетите проект GitHub для поддержки пешки.Обратите внимание, однако, что пешка обычно встраивается в другой продукт — приложение или устройство. В этом случае вам может понадобиться попросить поддержки на сайте или форуме этого продукта. (См. Также страницу Где используется пешка?).
Пешка — это бесплатный продукт, который поддерживается в основном в свободное время. Мы делаем не деньги от продукта, ни от программного обеспечения, ни от руководства, ни от служба поддержки. Поэтому мне нужно попросить вас о терпении, когда мы медленно реагируем на ваши вопросы или. Очевидно, что если вам действительно нужно поддержки или пользовательские Версия пешки, вы всегда можете нанять нас.
скачиваний
Если вы хотите узнать больше, вам нужно скачать хотя бы один или оба руководства. Книга «Язык» содержит синтаксис языка пешки, и «Руководство по внедрению» охватывает функции интерфейса абстрактного машины и различные справочные материалы. Если вы новичок в программировании, сначала прочитайте буклет «Введение в программирование» (всего 12 страниц). Вы должны иметь возможность просматривать или распечатывать файлы Adobe Acrobat («PDF»), например, через Acrobat Reader.
Полная установка, Microsoft Windows |
|
Исходный код архивов |
Документация |
Документация для пешки в формате PDF.Вы можете скачать отдельные документы из проекта GitHub. Кроме того, все документы также содержатся в самораспаковывающемся настройка для Microsoft Windows. |
Регрессионный тест |
|
Исключительная оговорка к лицензии Apache версии 2.0
В качестве специального исключения для Apache License 2.0 (и ссылаясь на определения в Разделе 1 этой лицензии), вы можете связать, статически или динамически, «Работа» с другими модулями для создания исполняемого файла файл, содержащий части «Работа», и распространять этот исполняемый файл в Форма «Объект» на условиях по вашему выбору, без каких-либо дополнительных требования, перечисленные в разделе 4 лицензии Apache 2.0. Это исключение применяется только для перераспределений в форме «Объект» (не в форме «Источник») и только если нет были внесены изменения в «Работу».
Запрошенная помощь
- Как я уже сказал, мой первый приоритет — устранение ошибок. Если вы сталкиваетесь плохие проблемы генерации кода или другие ошибки, пришлите мне самую короткую программу это иллюстрирует ошибку. Я буду благодарен за это.
- пешка работает под Microsoft DOS, все версии Microsoft Windows (включая Windows CE), Linux, MacOS, FreeBSD, XBox, PlayStation, FreeRTOS (на архитектуре ARM7) и µC / OS-II.Если вы смогли перенести пешку в другое окружение, пожалуйста, пришлите мне меняется. Другие будут благодарны за это.
- Документация улучшается, я думаю, но я не очень хороший критик моя собственная работа Комментарии к моему письму (особенно ошибки и непонятные абзацы) ценятся.
Чтобы связаться со мной, отправьте письмо на thiadmer @ compuphase.com. Обратите внимание, что я регулярно за границей, и иногда мне нужно 8 дней, чтобы ответить на Эл. адрес.
определение пешки в Свободном словаре
пешка 1
(pôn) n.1. Что-то предоставлено в качестве обеспечения кредита; залог или гарантия.
2. Условие удержания в залог при выплате займа: драгоценные камни в залоге.
3. человек, служащий в качестве обеспечения; заложник.
4. Акт залога.
тр.в. пешек , пешек · , пешек1. Чтобы отдать или депонировать (личное имущество) в качестве обеспечения для оплаты заемных денег.
2. Рискать; опасность: залог чести.
Фразовый глагол: пешка отЧтобы избавиться от мошенничества или избавиться от него: попытался заложить поддельный драгоценный камень как бриллиант.
[среднеанглийский паун, из древнеанглийского сковороды, , возможно, германского происхождения ; сродни старому немецкому пфанту.]
pawn’a · ble прил.
пешка н.
пешка (pônər), paw’nor ′ (-nôr ‘) n.
пешка 2
(pôn) n.1. Сокр. P Игры Шахматная фигура с наименьшей ценностью, которая может двигаться вперед на один квадрат за раз или на два квадрата в первом ходу, захватывать другие фигуры только по диагонали вперед на одно деление и повышаться до любой другой фигуры чем король по достижении восьмого ранга.
2. Физическое или юридическое лицо, используемое для достижения целей другого: слаборазвитой нации, которая была пешкой в международной политике.
[Среднеанглийский язык, из древне-французского pedon, paon, из средневековой латыни pedō, pedōn-, , пехотинец , из поздней латыни, , тот, у кого широкие растопыренные ноги , из латинского pēs, ped-, футов ; см. вложения в индоевропейские корни.]
пешка
(pɔːn) vb ( tr )1. (Банковское дело и финансы) для внесения депозита (статья) в качестве обеспечения для погашения кредита, особенно у ломбарда
2. на кол: для обеспечения чести.
n3. (Банковское дело и финансы) статья, депонированная в качестве обеспечения
4. (Банковское дело и финансы) условие такого депонирования (особенно в фразе в пешке )
5 человек или вещь, которая находится в безопасности, особенно заложник
6. (Банковское дело и финансы) акт залога
[C15: из старой французской безопасности , из латинской ткани панн , очевидно, потому что одежду часто оставляли в качестве поручителя; сравнить пешку среднего фламандского , пешка , германский залог , залог ]
пешка n
пешка (pɔːn) n 1. (Шахматы и шашки) — шахматист самой низкой теоретической ценности ограничено движениями вперед на один квадрат за раз с возможностью выбора двух квадратов на начальном ходу: захват только с диагональным ходом.Аббревиатура: P Сравнить часть 12
2. человек, группа и т. Д., Управляемые другим
[C14: из англо-норманнского poun, из древнеанглийского pehon , из средневековой латыни pedō пехотинец, с латыни фунтов футов]
пешка1
(pɔn)вт
1. для обеспечения в качестве обеспечения, как для заимствованных денег, особенно с ломбардом.
2. в залог; акций; риск: заложить свою жизнь.
н.3. состояние закладывания: заложенные драгоценности.
4. то, что заложено.
5. человек, служащий в качестве обеспечения; заложник.
6. Акт залога.
[1490–1500; <Средне-французский сковорода; Старинная французская кастрюля (d) , брюк, appar. <Западногерманский; сравнить пруд Old Frisian , Old Saxon, средне-голландский пант , German Pfand ]
pawn’a • ble, прил.
пешка • er (ˈpɔ nər) paw’nor (-nər, -nɔr) n.
пешка 2
(pɔn)n.
1. одна из восьми шахматных фигур одного цвета и наименьшего значения, usu. перемещается на одну клетку по вертикали и захватывает по диагонали.
2. человек, который используется или манипулирует для достижения целей другого человека.
[1325–75; Средний английский фунтов poon, paon, ранее pe (h) на буквально, ходок; см. peon 1 ]пешка
Участие в прошлом: заложено
Gerund: пешка
ИмперативныйПредставленныйПредельныйПредставляемыйПредставленныйПредставленныйПредставлениеПоследнийПрекрасныйПродвижениеФьюктовВ будущемПодвижной
претерит |
---|
Я закладывал |
вы закладывается |
он / она / оно закладывается |
мы закладывали |
вы закладывали |
они закладываются |
Present Continuous |
---|
Я закладывая |
вы закладывая |
он / она / оно закладывая |
мы закладывая |
вы закладывая |
они закладывая |
Present Perfect |
---|
Я заложил |
, которую вы заложили |
он / она / она заложили |
, которую мы заложили |
, которую вы заложили |
я закладывал |
вы закладывали |
он / она / она закладывала |
мы закладывали |
вы закладывали |
Past Perfect |
Я заложил |
Вы заложили | 90 281
он / она / она / она заложили |
, которую мы заложили |
, которую вы заложили |
они заложили |
он / она / она будет закладывать |
мы будем закладывать |
вы будете закладывать |
они будут закладывать |
у вас будет заложено |
он / она / она будет заложено |
у нас будет заложено |
у вас будет заложено |
у них будет заложено |
Я буду закладывать |
Вы будете закладывать |
он / она я буду закладывать |
мы будем закладывать |
вы будете закладывать |
они будут закладывать |
присутствует совершенный непрерывный | |
---|---|
у вас есть | было залогом |
он / она / она закладыванием | |
мы закладывали | |
вы закладывали | |
они закладывали |
90808
Прошлое Perfect Continuous | |
---|---|
я закладывал | |
вы закладывали | |
он / она / она закладывала | |
вы закладывали | вы закладывали |
Условно | ||
---|---|---|
Я бы стал залогом | ||
Вы бы заложили | ||
он / она / она / она бы заложили | ||
мы бы заложили | ||
было бы пешкой |
Условное прошлое |
---|
Я бы заложил |
вы бы заложили |
он / она / она бы заложили | мы вы бы заложили |
они бы заложили |
пешка — Викисловарь
Английский [править]
Произношение [редактировать]
Этимология 1 [править]
От среднего английского пешка , pown , poune , poune , powne , paun , от англо-нормандского paun , poun («пешка, пешеход») (= старый французский по , по , по ), из поздней латыни pedō, pedonis («footsoldier»), из латыни pes, ped- («foot»).Дуплет Пион .
Существительное [править]
пешка ( во множественном числе пешек )
- (шахматы) Самая распространенная шахматная фигура или похожая фигура в аналогичной игре. В шахматах у каждой стороны по восемь; ходы только вперед, а атаки только вперед по диагонали или пассивно.
- (фигурально) Кто-то, кому манипулируют или используют для какой-то цели.
Несмотря на то, что пешка богов, ее отъезд является основной причиной Троянской войны.
Синонимов [править]
Переводы [править]
шахматная фигура
|
человек, которым манипулируют
См. Также [редактировать]
Этимология 2 [править]
От средне-французского до («залог, безопасность»), по-видимому, от германского языка (сравните средне-голландский , пант , старогорский , пфант ).
Существительное [править]
пешка ( исчисляемое и неисчисляемое , множественное число пешек )
- (неисчислимо) Состояние удержания в качестве обеспечения займа или залога.
- На этом этапе все наши драгоценности были в пешке .
- Пример залога чего-то.
- 1595 9 декабря (первое известное представление) , Уильям Шекспир, «Жизнь и смерть короля Ричарда Второго», в г.Уильям Шекспир. Комедии, истории и трагедии: опубликовано по подлинным оригинальным копиям (первый фолио), Лондон: напечатано Исааком Иаггардом и Эдом [Уордом] Блаунтом, опубликовано 1623, OCLC 606515358 , [Акт II, сцена i ]:
- ,
- ,
, выкупить из разорения пешку , корону порока.
- ,
- 1595 9 декабря (первое известное представление) , Уильям Шекспир, «Жизнь и смерть короля Ричарда Второго», в г.Уильям Шекспир. Комедии, истории и трагедии: опубликовано по подлинным оригинальным копиям (первый фолио), Лондон: напечатано Исааком Иаггардом и Эдом [Уордом] Блаунтом, опубликовано 1623, OCLC 606515358 , [Акт II, сцена i ]:
- (Можем ли мы датировать эту цитату Джона Донна и предоставить название, полное имя автора и другие детали?)
- Поскольку утренняя роса — это пешка вечерней упитанности, так что, Господи, пусть комфорт этого дня станет залогом завтрашнего дня.
- (теперь редко) Предмет, предоставленный в качестве обеспечения по ссуде или в качестве залога.
- c. 1603–1606 , Уильям Шекспир, «Трагедия короля Лира», в г. Г-н Уильям Шекспир. Iaggard и Ed [ward] Blount, опубликованные 1623, OCLC 606515358 , [Act I, scene i]:
Моя жизнь, которую я никогда не держал, но как пешка / Вести борьбу против своих врагов.
- c. 1603–1606 , Уильям Шекспир, «Трагедия короля Лира», в г. Г-н Уильям Шекспир. Iaggard и Ed [ward] Blount, опубликованные 1623, OCLC 606515358 , [Act I, scene i]:
- , New York, 2001, p.106:
- Брокеры, берущие пешек , кусающие пользователей, я не допущу; все же […] я буду терпеть какое-то использование.
- Шаблон: RQ: бекон о ростовщичестве
- Что касается залога или залога, мужчины не будут брать пешек без использования [т.е. интерес].
- (редко) Ломбард; ломбард.
Переводы [править]
экземпляр что-то закладывает
Глагол [править]
пешка ( единственное простое настоящее третье лицо пешек , настоящее причастие пешек , простое прошлое и причастие прошлого пешек )
- В залог; ставить или делать ставки.
- предоставить в качестве обеспечения займа денег; особенно, чтобы внести (что-то) в ломбард.
- 1904 , Генри Уоррен, Руководство клиента по банковскому делу (стр. 7)
- Определенная и, вероятно, значительная часть его так называемых денежных средств по требованию и с коротким сроком уведомления будет состоять из двухнедельных авансов, сделанных членам фондовой биржи против заложенных акций и долей.
- 1965 , Боб Дилан, Как Роллинг Стоун
- Но тебе лучше взять свое кольцо с бриллиантом, тебе лучше пешку , детка.
- 1904 , Генри Уоррен, Руководство клиента по банковскому делу (стр. 7)
Синонимов [править]
- (для хранения в ломбарде): скакать
Переводы [править]
отдать в качестве обеспечения по кредиту
См. Также [редактировать]
Этимология 3 [править]
Существительное [править]
пешка ( исчисляемое и неисчисляемое , множественное число пешек )
- Альтернативная форма Паан
- 1832 , Меер Хасан Али, Наблюдения за мусульманами Индии :
Поднос, заполненный пешками , приготовленный с использованием обычных ингредиентов, таких как лаймовый котлет (горькая камедь), бетель-орех, табак , специи и т. д.
- 1892 , Журнал Чемберса (том 69, страница 320)
- На наш английский вкус пешка очень оскорбительна; но уроженцы Индии наслаждаются этим и считают это необходимостью. Его много едят мусульмане обоих полов и жители Бенгалии.
- 1832 , Меер Хасан Али, Наблюдения за мусульманами Индии :
Этимология 4 [править]
(Эта этимология отсутствует или неполная. Пожалуйста, добавьте к ней или обсудите ее в Eymology scriptorium.)
Существительное [править]
пешка ( во множественном числе пешек )
- Галерея.
Этимология 5 [править]
Глагол [править]
пешка ( единственное простое настоящее третье лицо пешек , настоящее причастие пешек , простое прошлое и причастие прошлого пешек )
- (видеоигры) Альтернативная форма pwn
анаграмм [править]
,Pawn Tutorial — AlliedModders Wiki
Примечание: Это руководство довольно жестко запрограммировано в AMX Mod X. Оно должно быть общим для режима.
Это руководство разработано, чтобы дать вам более глубокий обзор основ программирования в Pawn.
Pawn — это встраиваемый, (почти) не типизированный, простой в использовании язык сценариев, скомпилированный для виртуальной машины. AMX Mod X использует Pawn для маршрутизации функций сценариев на движок Half-Life, используя Pawn Virtual Machine и Metamod (Pawn написан на C, Metamod написан на C ++).Пока вы пишете сценарии Pawn в текстовом редакторе, сценарии должны быть скомпилированы с помощью «Компилятора», который создает двоичный файл для AMX Mod X. Команда AMX Mod X распространяет специально модифицированный компилятор Pawn.
Программирование сценариев в Pawn относительно простое и не имеет понятий на других языках, которые не нужны для общего использования, таких как указатели, векторы, структуры, классы, распределение и так далее.
Языковые парадигмы
Pawn изначально назывался «Small», чтобы подчеркнуть размер языковой спецификации.Язык жертвует многими функциями, которые есть в современных языках, для достижения простоты и скорости, которые необходимы для встроенного использования.
- Не печатать
- Пешка имеет только один тип данных — «ячейка». Это размер интегрального указателя процессора (4 байта для 32-битного процессора, 8 байтов для 64-битных процессоров). Это имеет два основных значения: байт-код Pawn зависит от процессора, а указатели могут помещаться внутри ячейки.
- Tagging — Pawn позволяет создавать слабо статически типизированные «теги», которые могут быть связаны с переменными для перегрузки примитивных операторов.Например, Pawn не имеет понятия чисел с плавающей точкой (только целые числа). Вместо этого операторы перегружены тегом Float :, чтобы перенаправить вычисления на новые функции. Проверка тегов применяется только как предупреждение. Если вы используете SourcePawn (для SourceMod), на самом деле есть второй тип: String. В строке буквы хранятся в виде отдельных байтов … по существу, в каждой ячейке хранится 4 символа.
- Поскольку Pawn имеет только один тип данных, он не поддерживает структуры, записи, объекты или что-либо еще.
- Пешка поддерживает массивов ячеек, что приводит к массивам в стиле C для струн.
- Нет мусора
- Пешка не имеет встроенного выделения «кучи». Все переменные хранятся в стеке или в разделе данных. Следовательно, сборка мусора не требуется, а утечка памяти невозможна только из спецификации языка.
- процедурный
- Пешка полностью состоит из одиночных, не вложенных подпрограмм.Здесь нет лямбда-функций, функций-членов, конструкторов и так далее. Функции могут быть как внутренними (внутри скрипта), так и общедоступными (открытыми для виртуальной машины по имени, как в C extern).
- Нет безопасности потока
- Пешка предназначена для однопоточных экземпляров.
Особенности реализации
- Кроссплатформенный совместимый компилятор, который выводит байт-код и отлаживает информацию о просмотре.
- Кросс-платформенно-совместимая виртуальная машина (ВМ) с поддержкой отладочного просмотра, остановки / остановки выполнения и взаимодействия со сценариями из библиотек C / C ++.
- JIT-компилятор IA32 для значительного увеличения времени выполнения скрипта.
Поскольку следы VM и JIT настолько малы, Pawn идеально подходит для игр, которым требуется простая и очень быстрая система событий, встроенные устройства или приложения и системы реального времени.
Лицензия
Pawn лицензируется по лицензии ZLib / libpng_License.
Переменные — это простые структуры для хранения данных в течение определенного периода времени в вашем скрипте.
Типы
Small имеет всего три типа данных для объявления переменных.Тип переменной по умолчанию — обычное целое число или целое число. Имя переменной для обратной совместимости должно содержать не более 19 символов и ДОЛЖНО начинаться с буквы. Он может содержать символы A-Z, a-z, 0-9 и подчеркивание («_»). Важно отметить, что имена переменных чувствительны к регистру — «myvar», «MyVaR» и «MYVAR» являются тремя отдельными символами.
целых
Самый простой тип данных в Pawn — это целое число. Целые числа являются целыми числами. Чтобы объявить новую целочисленную переменную, используйте оператор «new» следующим образом:
new a // Объявляем пустую переменную "a" new b = 5 // Объявляем переменную "b" и устанавливаем ее в 5.new c = 5.0 // Это неверно, технически не целое число! new d = "hello" // "hello" тоже не число, это недопустимо. // Вы также можете объявить несколько переменных в одной строке: новый е, ж, г, ч новый х = 7, у = 3 new z = 1_000_000 // Pawn поддерживает такие числа. Поэтому большие значения легче читать.
Поплавки
Вы также можете объявить переменную как «Float», что означает, что она может хранить числа с десятичными разрядами. Это так называемые числа с плавающей запятой:
new Float: a // Объявляем пустую переменную с плавающей точкой "a" новый Float: b = 5.3 // Это объявит новую переменную "b" и присвоит ей 5.3. new Float: c = 5 // Это верно, но компилятор выдаст вам предупреждение. новый F.