Сайт восстановлен из веб архива. Сейчас он доступен только для чтения, скачивание материалов также недоступно. Если у вас до сих пор есть какие-то вопросы по разработке серверов CRMP, вы можете перейти на актуальный портал: https://pawno-rus.com

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

Уважаемый гость, если у Вас возникли проблемы с регистрацией, просьба обратиться в тех.поддержку или на почту admin@pawno-crmp.ru

Для полного доступа ко всем функциям форума, Вам необходимо зарегистрироваться и авторизоваться.

Фотография
Урок

Введение по pawn

- - - - - criminal russia crmp pawno уроки crmp крмп

  • Закрытая тема Тема закрыта
В этой теме нет ответов

#1
offline   MotoSport

MotoSport
  • 241
    • Сообщений: 916
    • Регистрация: 08.03.15

Введение.

Для начала надо знать:
1. Pawn - язык программирования. Приспособлен для создание модов и скриптов в SA-MP.
2. Чтобы использовать данный язык, нужна программа Pawno.

Неплохо знать английский язык, т.к. именно на нём записаны все функции и калбеки.

Оглавление:
Урок 1. Начало.
Урок 2. Паблики.
Урок 3. Функции.
Урок 4. Переменные.
Урок 5. Проверки.
Урок 6. Создание новых пабликов.
Урок 7. Таймер.
Урок 8. Циклы.
Урок 9. #define.
Урок 10. enum.
Дополнение 1. Работа с dcmd.
Дополнение 2. Работа с strtok.

Урок 1. Начало.
Если вы делаете мод, то сначала стоит записать данные строки:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

a_samp.inc - это файл, содержащий в себе все функции и паблики sa-mp.

Урок 2. Паблики.
Паблики (public), иногда их называют калбеки (callbacks).
Callback, переводится как "функция, вызываемая автоматически".
Это процедуы, которые определяют, что будет
выполняться при данном действии, будь то игрока написал что то в чате,
или запустился мод. Каждый калбек имеет определённое название и определённые параметры.
Пример паблика:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Данный паблик паблик отвечает за то, что будет, когда игрок сдохнет.
playerid - ИД того, кто погиб
killerid - ИД того, кто убил игрока
reason - причина (в смысле, каким оружием)

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

В конце каждого паблика должен стоять return.
Если паблик находится в моде, то вводим return 1;
Если паблик находится в скрипте, то вводим return 0;
Если установить return 1; в скрипте, то выйдет такая ситуация:
паблик в скрипте работать не будет!
Исключение: OnPlayerText.
Основные паблики.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Практика.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Урок 3. Функции.
Функции - они и в Африке функции. Каждая функция, как и паблик,
имеет определённые параметры. Синтаксис нативной функции:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Данная функция даёт игроку playerid деньги money.

Может быть функция с одним параметром, например:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Данная функция определяет число денег у игрока playerid. Cама по себе бесполезна,
используется для других фукнций.
Основные функции.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

И теперь практика!

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Урок 4. Переменные.
Строго говоря это адреса памяти, имеющие определённое значение.
Говоря проще, это некое слово, имеющие числовое значение

Существуют несколько видов переменных:
1. серверные переменные,
2. переменные игроков,
3. текстовые переменные.

1. Серверные переменные.

Так будем называть общие переменные.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Создана перменная server_players со значением 0.

Присвоение значения:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Переменной server_players присвоено значение 5.

Функция прибавление к значению опред. числа:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Функция отнятия из значения опред. числа:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

+1 к значению:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

-1 к значению:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

К переменной можно присвоить значение функции.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Также к переменной можно присвоить ИД, например, транспорта.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Практика.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

2. Переменные игроков.

Переменная, которая приклепляется к каждому игроку на сервере.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Создана переменная player со значением 0.

На данном этапе каждый игрок имеет значение 0.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Переменной player одного игрока playerid присваивается значение 5.

Также с данной переменной совершаются все действия серверной переменной.

Практика.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

3. Текстовые переменные.

Текстовые переменные - переменные, значением которых может быть только текст.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Такая переменная в основном используется для создания форматированного текста.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

%d - некое числовое значение
%s - некое текстовое значение

Переменной string присвоено текстовое значение, указанное в кавычках.

Есть ещё переменная, используемая для имени:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Cоздана переменная name.

Практика.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Урок 5. Проверки.

Проверка - функция, проверящая, выполняется ли данная функция. Если выполняется функция,
то и выполняется определённый код.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

В качестве проверки может использоваться:
1. сравнению переменных, либо значений функций,
2. выполняеться ли некая функция.

1. Сравнение переменных.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

В данной проверка произведено сравнение:
ЕСЛИ деньги_игрока >= (больше или равно) money
ТО выполнение_кода

Есть разных виды сравнений:

!= - не равно
>= - больше или равно
<= - меньше или равно
> - больше
< - меньше
== - равно

Практика.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

2. Выполнение определённой фукнции.

Проверяет, выполняеться ли данная функция.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Выполняется проверка, подключён ли игрок к серверу.

Практика.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Конечно, есть функия, использующаяся при невыполнениии проверки.

Называется else. Используется так.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Урок 6. Создание новых пабликов.

Новый паблик создаётся так:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Создаётся он для того, чтобы вызвать некоторые функции одновременно.

Например, функция установки денег.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Урок 7. Таймер.

Таймер - функция, вызвающая определённый паблик в определённое время.
Функция может вызваться единожды, либо повторяться через
заданные промежутки времени.

Для того, чтобы повесить таймер на определённый паблик,
создаётся такая фукнция.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

В 1 секунде - 1000 миллисекунд.

1000 - заданный промежуток времени в миллисекундах, после которого паблик запускается заново.
1 - тип таймер. Если установлено 1, то таймер перезапускается бесконечное кол-во раз. Если 0, то таймер вызывает
паблик только первый раз.

Примечание: не стоит ставить значение таймера < 100, это может вызвать нагрузку на процессор.

Пример использования:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Урок 8. Циклы.

Цикл - функция, которая перебирает все значения определённой
переменной, в указанных рамках.

Код цикла:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Примечание: не стоит ставить ограничение цикла на MAX_PLAYERS (500). Это вызывает большую
нагрузку на процессор.

Пример использования цикла.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Урок 9. #define.

Данная функция используется довольно редко. Позволяет на одно слово "поставить" другое.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Слово COLOR_ZEL теперь понимается компилятором как определённый код цвета.

Урок 10. enum
enum - это вещь, позволяющая создавать большее количество адресов одной переменной.
Пример:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Здесь у адреса PVar создаются подразделы PHealth, PArmour.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Теперь игрок может на одну переменную игрока ставить несколько адресов.
Под PVar подразумевается PHealth, либо PArmour.
Разумеется, enum можно юзать и в общей (серверной) переменной.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Пример использования.

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Дополнение 1. Работа с dcmd.

dcmd - командный процессор, с помощью которого можно более просто (обходя strtok) создавать команды с переменными.

Вообще сама функция dcmd создаётся при помощи define. Код:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Перед созданием самой команды надо обозначить её в OnPlayerCommandText(playerid,cmdtext[])

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

healplayer - название команды, 10 - кол-во символов в команде.

Сама команда создаётся так:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Дополнение 2. Работа с strtok.

strtok - функция, аналогичная dcmd. Позволяет создать команды с переменными.

Сама функция strtok .
 

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Переходим к паблику OnPlayerCommandText. Сначала пишем там код:

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Создаём саму команду:
 

Пожалуйста войдите или зарегистрируйтесь чтобы увидить ссылку.

Всё, команда создана.

Вот и весь Урок.
Автор: Не извесен.
 





Темы с аналогичным тегами Урок, criminal russia, crmp, pawno, уроки crmp, крмп

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных


Данную тему посетили 128 пользователей