[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Использование функций и команды return (Взято с world-source.ru)
Использование функций и команды return
rootДата: Воскресенье, 03.02.2013, 01:39 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
Функции часто используют для того, чтобы не повторять один и тот же код много раз в скрипте. Функция может быть вызвана только из другой функции и делается это так: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;  
}
 
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Использование функций и команды return (Взято с world-source.ru)
  • Страница 1 из 1
  • 1
Поиск: