Всё о сервере, форум!
Основы программирования
ИНФОРМАЦИОННО-РАЗВЛЕКАТЕЛЬНЫЙ ПОРТАЛ

PrR[ Проект SAMP - Romashka [0.3e] ™18+™

Pawn :: Основы скриптинга
Функция public

Функции в 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); // Если в функцию передает обычное число



Логин: Пароль:
Забыли пароль?Регистрация
При копировании материала с сайта активная ссылка обязательна!
Сайт управляется SiNG cms © 2010-2015