[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Как создать Глобальную Функцию (CreateNative Взято с world-source.ru)
Как создать Глобальную Функцию
rootДата: Воскресенье, 03.02.2013, 01:28 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 561
Статус: Offline
CreateNative(const String:name[], NativeCall:func); 

Позволяет создать функцию, которую можно вызвать из любого вашего SM скрипта. 
Делать это нужно в событии AskPluginLoad2, ниже пример. 

Создайте a.sp с таким содержимым, скомпилируйте и запустите скрипт: 

Код
#include <sourcemod>  

public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)  
{  
      CreateNative("my_func", Native_my_func);  
      CreateNative("my_bool_func", Native_my_bool_func);  
      return APLRes_Success;  
}  

public Native_my_func(Handle:plugin, numParams) return GetNativeCell(1) + GetNativeCell(2);  
public Native_my_bool_func(Handle:plugin, numParams) return GetNativeCell(1) > GetNativeCell(2);


Теперь создайте файл my_funtion.inc с таким содержимым и киньте его в 
addons/sourcemod/scripting/include 

Код
native my_func(num1, num2);  
native bool:my_bool_func(num1, num2);


Создайте b.sp с таким содержимым, скомпилируйте и запустите скрипт: 

Код
#include <sourcemod>  
#include <my_funtion>  

public OnPluginStart()  
{  
      PrintToServer("2 + 1 = %d", my_func(2, 1)); // 3  
      PrintToServer("2 + 5 = %d", my_func(2, 5)); // 7  
      PrintToServer("2 > 1 (%d)", my_bool_func(2, 1)); // 1  
      PrintToServer("2 > 5 (%d)", my_bool_func(2, 5)); // 0  
}


GetNativeCell(x) - возвращает целое число (x - номер аргумента в функции) 

GetNativeString(x, String:buffer[], maxlength, &bytes=0); 
Возвращает SP_ERROR_NONE, если строка получена, или любое целое число, если произошла ошибка. 

GetNativeArray(x, any:local[], size); 
Возвращает SP_ERROR_NONE, как и выше (так получаем массив)
 
Форум » Форум » Уроки SourceMod (SourcePawn) Скриптинга » Как создать Глобальную Функцию (CreateNative Взято с world-source.ru)
  • Страница 1 из 1
  • 1
Поиск: