PDA

Просмотр полной версии : [Function] CallLocalFunction CallRemoteFunction и funcidx



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

Unreal
12.11.2014, 11:10
я так и не понел т.к можно и так

if(newkeys == KEY_FIRE) return OnPlayerCommandText(playerid,"/test"); // Мы вызовем команду /test с дополнительными параметрами

DeimoS
12.11.2014, 12:31
я так и не понел т.к можно и так

if(newkeys == KEY_FIRE) return OnPlayerCommandText(playerid,"/test"); // Мы вызовем команду /test с дополнительными параметрами

Сейчас ты вызываешь просто команду, без каких-либо параметров. Как, собственно, и в уроке
Не понял сути темы - перепрочти ещё раз.

$continue$
13.03.2015, 00:27
Отличный урок:)