Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Использование функций и команды return
_wS_ Дата: Вторник, 06.03.2012, 22:53:26 | Сообщение # 1
Функции часто используют для того, чтобы не повторять один и тот же код много раз в скрипте. Функция может быть вызвана только из другой функции и делается это так: my_func(arg1, arg2, ..., arg32);

my_func - имя самой функции, должно быть уникальным. В скобках различные параметры, которые вы можете передать, если это нужно. В SourceMod есть "допустимый" предел параметров: 32. Вы можете вызвать функцию и без них, например просто my_func();

Код
#include <sourcemod>

public OnPluginStart()
{
     my_func();
}

my_func()
{
     LogMessage("Скрипт включен");
}


Функция может что-то возвращать, например число, умноженное на 3:

Код
#include <sourcemod>

public OnPluginStart()
{
     new x = my_func(2);
     PrintToServer("x = %d", x);
}

my_func(Num)
{
     return Num * 3;
}


Num - это имя параметра, которое может быть каким угодно. Сами его придумывайте, главное чтобы было ясно, что это такое. Вот еще пример, проверяем есть ли на сервере главный админ:

Код
#include <sourcemod>

public OnPluginStart()
{
     new bool:xz_var = check_full_admin();
     if (xz_var) PrintToChatAll("На сервере есть главный админ");
     else PrintToChatAll("Главного админа нет");

     // Но можно было не создавать переменную xz_var, а просто сделать так:
     if (check_full_admin()) PrintToChatAll("На сервере есть главный админ");
     else PrintToChatAll("Главного админа нет");
}

bool:check_full_admin()
{
     for (new i = 1; i <= MaxClients; i++)   
     {   
         if (IsClientInGame(i) && GetUserFlagBits(i) & ADMFLAG_ROOT)
         {
             // Админ найден, возвращаем true (правда)
             return true;
         }
     }
     // Админ не найден, возвращаем false (ложь)
     return false;
}


Если функция встречает команду return, то весь код в этой функции, который находится ниже команды return, будет проигнорирован и функция завершит свою работу. Если функция должна вернуть true или false, то перед ее именем нужно добавить bool:. Если возвращает строку, String:, если Handle, то Handle:, еще есть Float: и тд. Т.е. это зависит от того, что функция должна вернуть. Эти приставки нужно добавлять и перед параметрами в скобках.

Код
#include <sourcemod>

public OnPluginStart()
{
     new Float:x = 1.2;
     new Float:y = 2.1;
     PrintToServer("%.1f + %.1f = %.1f", x, y, sum_float(x, y));
}

Float:sum_float(Float:x, Float:y)
{
     return x + y;
}
 
  • Страница 1 из 1
  • 1
Поиск: