georJik
11.06.2014, 20:09
Не увидел подобной темы, описывающей эти функции.
Так вот, опишу сначала первые две CallLocalFunction и CallRemoteFunction, далее funcidx
Обе функции вызывают нужную вам функцию. Различие CallRemoteFunction в том, что он может вызывать из подгруженных скриптов.
Рассмотрим подробнее параметры функции и посмотрим на примере.
CallLocalFunction("Test","i",5); // Вызываем функцию под названием Test и задаем параметр 5.
// Где-нибудь в моде
public Test(param) {
printf( (param % 2 == 0) ? ("%d делится на 2 без остатка!") : ("%d делится на 2 с остатком!") ,param);
return true;
}
И так,
"Test" - наименование вызываемой функции;
"i" - тип параметра ( Integer в нашем случае, целочисленное );
5 - параметр который мы задаем функции.
Также, к примеру нам нужно чтобы когда мы жали на кнопку у нас вызывалась команда.
if(newkeys == KEY_FIRE) return CallLocalFunction("OnPlayerCommandText", "is", playerid, "/test"); // Мы вызовем команду /test с дополнительными параметрами.
// Где-нибудь в моде
CMD:test(playerid,params[]) {
GivePlayerWeapon(playerid,24,25);
return true;
}
Типы параметров:
c - любой символ
d, i - целые числа
x - шестнадцатеричный код, например: 0xFFFFFFFF
f - число с плавающей точкой ( дробное )
s - строка
Важно: Функция вызывает только Public!
funcidx - возвращает идентификатор функции.
Пример использвания:
public Test()
{
printf("Идентификатор public Test: %d", funcidx("Test"));
return true;
}
Если функция возвращает значение -1, это означает одно - функции не существует.
Автор: georJik
Так вот, опишу сначала первые две CallLocalFunction и CallRemoteFunction, далее funcidx
Обе функции вызывают нужную вам функцию. Различие CallRemoteFunction в том, что он может вызывать из подгруженных скриптов.
Рассмотрим подробнее параметры функции и посмотрим на примере.
CallLocalFunction("Test","i",5); // Вызываем функцию под названием Test и задаем параметр 5.
// Где-нибудь в моде
public Test(param) {
printf( (param % 2 == 0) ? ("%d делится на 2 без остатка!") : ("%d делится на 2 с остатком!") ,param);
return true;
}
И так,
"Test" - наименование вызываемой функции;
"i" - тип параметра ( Integer в нашем случае, целочисленное );
5 - параметр который мы задаем функции.
Также, к примеру нам нужно чтобы когда мы жали на кнопку у нас вызывалась команда.
if(newkeys == KEY_FIRE) return CallLocalFunction("OnPlayerCommandText", "is", playerid, "/test"); // Мы вызовем команду /test с дополнительными параметрами.
// Где-нибудь в моде
CMD:test(playerid,params[]) {
GivePlayerWeapon(playerid,24,25);
return true;
}
Типы параметров:
c - любой символ
d, i - целые числа
x - шестнадцатеричный код, например: 0xFFFFFFFF
f - число с плавающей точкой ( дробное )
s - строка
Важно: Функция вызывает только Public!
funcidx - возвращает идентификатор функции.
Пример использвания:
public Test()
{
printf("Идентификатор public Test: %d", funcidx("Test"));
return true;
}
Если функция возвращает значение -1, это означает одно - функции не существует.
Автор: georJik