Перейти к содержимому

LaineBlog

  • запись
    1
  • комментариев
    11
  • просмотров
    9 235

[Samp gamemode creation] Обзор языка программирования PAWN (часть 1)

Laine_prikol

12 670 просмотров

Итак, сегодня я буду рассказывать как я пишу мод на SAMP. Для начала разберёмся на каком языке пишут скрипты и моды для SAMP. Моды и скрипты в SAMP пишутся на языке PAWN. Pawn - это С-подобный скриптовый язык (как и lua) но, в отличии от lua, в Pawn скрипты именно компилируются,в байт код для запуска на абстрактной машине, а не интерпретируются как в Lua. Скажите - ну и что это даёт? А даёт это многое, например: компилятор pawn ещё до выполнение скрипта проверяет на наличие ошибок, и поэтому у вас никогда не будет внезапных ошибок в программе, также ещё скорость работы скрипта больше чем в том-же Lua, потому-что код скомпилирован в сразу понятный для машины код. Что такое pawn мы разобрались.

 

Давайте разберёмся с средой разработки, если в lua мы могли писать скрипты хоть в блокноте, то теперь нам нужна полноценная среда разработки.
1. Pawno - Очень простой редактор, в есть необходимый минимум чтобы писать скрипты на pawn.
blogentry-0-0-77889400-1489396166_thumb.png


Плюсы:
+ Малый размер (768 кб)
+ Идёт сразу с Samp server
+ Встроенный список функций из всех инклудов
+ Сразу есть все паблики и функции samp
Минусы:
- Подсветка синтаксиса сделана чисто для галочки (всего два цвета подсветки синий и чёрный)
- На windows начиная с vista надо запускать от имени админа
- На больших скриптах может вылетать

 

 

2. Notepad++ (с плагином nppexec) - Самый популярный редактор скриптов. Поддерживает плагины, и также множество языков программирования
blogentry-0-0-87342400-1489396159_thumb.png


Плюсы:
+ Расширяемость
+ Нормальная подсветка синтаксиса
+ Авто-табуляция кода
+ Удобная навигация по коду (можно сразу перейти к другой строке, и есть карта документа)
Минусы:
- Для поддержки pawn надо много чего настраивать.
- Нету Встроенного списока функций
Настройка плагина NppExec:
1. Выберите plugin manager
blogentry-0-0-71315900-1489396173_thumb.png
2. Откроется окно, ищём Nppexec, выбираем галочкой, жмём install, перезапускаем.
blogentry-0-0-41688900-1489396176_thumb.png
3. Должно появится в меню пункт, жмём
blogentry-0-0-59483000-1489396174_thumb.png
4. Откроется окно
blogentry-0-0-46710500-1489396175_thumb.png
вписываем туда код:

cd $(CURRENT_DIRECTORY) "Путь до pawncc.exe" "$(FILE_NAME)" -; -(


5. Нажимаем ok и компиляция начнётся


Но давайте перейдём к написанию программы "hello world!" Как я и сказал у меня samp вариант Pawn. Вот как выглядит hello world в pawn:

main(){	print("hello world!");}


Компилируем:
blogentry-18530-0-49339800-1489396885_thumb.png
Как видим, всё прошло успешно и компиляция завершена.

 


Вот как выглядела бы ошибка:
blogentry-18530-0-22886300-1489396999_thumb.png
С компиляцией разобрались, теперь нам надо запустить сервер, запускаем сервер и видем наше сообщение:
blogentry-18530-0-32421200-1489397235_thumb.png
Теперь хотелось-бы чтобы например: hello world писалось не в консоль сервра, а например игроку в чат. Для этого нужно использовать include, да-да как и в си или c++ pawn поддерживает include и константы #define, и даже команды пре-процесса #pragma. Теперь, давайте подключим include к нашему скрипту для того, чтобы подключить include надо в начале скрипта написать #include <a_samp>, тем самым мы подключили include для работы функций samp. Теперь мы можем создать код в нашем скрипте:

public OnPlayerConnect(playerid) // Создаём паблик чтобы при подключении игрока что-то происходило{	SendClientMessage(playerid, -1, "hello world"); // Функция отправки сообщения        return 1; // функция должна что-то возвращать}


Playerid - Ид игрока которому мы будем отправлять сообщение (в данном случае игроку который подключился к серверу)
-1 - Цвет сообщения (белый)
"hello world" - Строка которая будет отправляться.
Запускаем сервер, заходим в игру и видим наше сообщение:
blogentry-18530-0-26346100-1489398324_thumb.png
Ну вот и всё это был весь мой обзор языка pawn. ВНИМАНИЕ! Я некого не собираюсь учить (я сам учусь) это был просто мини-обзор языка Pawn. Потому-что никто на форуме не знает этот замечательный язык программирования. Если бы он был в OpenComputers я бы был рад!

  • Нравится 3


11 комментариев


Рекомендуемые комментарии

Слово "не кого" пишется, как "некого". Но в твоем тексте должно быть слово "ничего". Слово "встроинный" пишется через "Е".

А про Pawn никто не знает, потому что это форум, связанный с OpenComputers и Computercraft, а то есть с Lua.

Поделиться комментарием


Ссылка на комментарий

Слово "не кого" пишется, как "некого". Но в твоем тексте должно быть слово "ничего". Слово "встроинный" пишется через "Е".

А про Pawn никто не знает, потому что это форум, связанный с OpenComputers и Computercraft, а то есть с Lua.

Пусть пишет, мы не только лишь на Lua сидим

Сам в прошлом году для сампа писал бота :)

Поделиться комментарием


Ссылка на комментарий

Пусть пишет, мы не только лишь на Lua сидим

Сам в прошлом году для сампа писал бота :)

А я на vbs писал помню скрипт.

Поделиться комментарием


Ссылка на комментарий

А я на vbs писал помню скрипт.

Я где-то в году 2012 на php devel studio приколы делал и даже на gamemaker игры делал. У меня даже на диске папка с исходниками лежит

Поделиться комментарием


Ссылка на комментарий
Гость
Добавить комментарий...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...