Перейти к публикации
Форум - ComputerCraft

LaineBlog

  • записи
    3
  • комментариев
    17
  • просмотра
    6 324

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

Laine_prikol

2 120 просмотров

Итак, сегодня я буду рассказывать как я пишу мод на 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 я бы был рад!

  • Like 3


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


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

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

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

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


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

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

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

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

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

  • Like 2

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


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

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

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

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

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


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

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

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

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


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

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

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

На cleo или moonloader'e?

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


Ссылка на комментарий
скажите хоть что это?

SAMP - мод для игры GTA San Andreas который позволяет играть по сети в GTA San Andreas

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×