Функции в Pawn начинаются со слова public.
- Стандартные или встроенные функции, они же автовызываемые, выполняются при каком-либо игровом событии. Они так и называются, в зависимости от того, при каком условии они выполнятся.
- Сама функция это программный блок, который может выполниться многократно в любом месте скрипта.
- Каждая функция обычно возвращает какое-либо значение.
- Функция может возвращать только целочисленное или логическое значение и строку.
- Вещественное значение функция возвратить не может. Но если, функция не требует возвращать какое-либо иное значение, то она должна возвращать логическое значение: «истина» (true) – эквивалентно 1 или «ложь» (false) эквивалентно 0.
Функция состоит из имени функции, круглых скобок и фигурных скобок.
- Имя функции чувствительно к регистру, как и у переменных.
- В круглых скобках указываются через запятую параметры функции.
- Число параметров функции может быть разное и может быть даже совсем без параметров.
- Return отвечает за возврат значения функции.
-
Пример стандартной функции:
public OnGameModeInit()
{
// Это тело функции
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
Обычная функция, как например, на вышеуказанном примере, если выполнила свои задачи правильно и до конца, должна возвратить true «истина».
Обратите внимание, что SetGameModeText то же функция и с параметром, указанным в скобках. Эта функция передает параметр, то есть текст, указанный в скобках в клиент сервера. Если вы запустите сервер, а затем клиент. В окне клиента, если там добавлен ваш сервер, вы увидите в колонке «mode» вашего сервера, этот текст.
Также можно создать свою функцию. Функция в таком случае будет называться пользовательской функцией.
Создадим простейшую функцию, но перед тем как ее создать, ее сначала нужно объявить следующим образом.
Пишем forward, затем через пробел имя функции и в круглых скобках параметры функции, если они не нужны, ничего не пишем, оставляем пустые скобки.
- Объявление нашей простейшей функции будет выглядеть следующим образом:
1 forward SayHello();
- Объявление функции должно быть обязательно перед самой функцией.
Теперь можно приступать к созданию функции.
public SayHello()
{
return print(”Hello, World!”);
}
Print – отображает текст в консоли сервера. Это функция не будет работать, до тех пор, пока ее не вызовешь. Чтобы ее вызвать, нужно написать имя функции и в скобках ее параметры.
1 SayHello();
Давайте проверим наш пример в действии.
- Вызовем функцию из функции OnGameModeInit. Для этого вышеуказанный код помещаем в тело данной функции как показано на примере ниже:
-
- Теперь скомпилируем мод и запустим сервер. И в консоли мы увидим текст «Hello, world».
Итак, переделаем наш пример и создадим функцию Say с параметром. Назовем этот параметр string.
Мы будем передавать в функцию строку. Строка – это массив, поэтому к имени параметра приписываем справа
пустые квадратные скобки, как показано на примере ниже:
public Say(string[])
{
return print(string);
}
Теперь, чтобы вызвать функцию, и передать тот же текст в консоль, пишем следующее:
1 SayHello("Hello, World!");
Так как как тело функции состоит из одной строки, эту функцию можно уместить в одну строку, как показано
на примере ниже. Но, если функция будет состоять более чем из 1 строки, то фигурные скобки придется
вернуть.
1 public Say(string[ ]) return print(string);
Если мы хотим передать какое-либо число в функцию, мы пишем просто имя параметра, если
вещественное число, то приписываем к имени параметра, впереди приставку Float:, если логическое, то
приставка bool:, в общем, все как у переменных:
forward Number(Float:value); // Если в функцию будет передаваться вещественное число
forward Number(bool:value); // Если в функцию будет передаваться логическое значение true или false
forward Number(value); // Если в функцию передает обычное число
|