Автовызываемые функции в скриптах

From SA-MP Wiki

Jump to: navigation, search


Перед тем как мы продолжим, Вам необходимо ознакомится с вызываемыми функциями. Это отрывки кода, которые уже есть в Вашем режиме и выглядят они примерно так:

public OnPlayerDisconnect(playerid, reason)
 {
 	printf("OnPlayerDisconnect(%d, %d)", playerid, reason);
 	return 1;
 }

Это вызываемая функция OnPlayerDisconnect, это означает, что эта секция кода вызывается сервером, когда игрок отключается,так что если хотите показать большое сообщение на экране, когда игрок покидает сервер, нужно код для этого вписать здесь. Все вызываемые функции, которые использует игра есть в Вашем файле и Вы не можете создавать свои собственные вызываемые функции. некоторые из них присутствуют в том же виде, что и пример сверху, но некоторые (например "OnPlayerCommandText", "OnPlayerRequestClass", "OnGameModeInit" и "main" (который по сути не является вызываемой функцией и только лишь выводит название вашего режима)) немного отличаются, это сделано для того, чтобы игра работала нормально и чтобы показать, что в этом блоке нужно делать. Вы также можете использовать другие, похожие блоки (as we are about to) которые выглядят также, но являются функциями, их вызываете Вы сами. Вот функция под названием "IMadeThis" (обратите внимание, что пробелы запрещены).

public IMadeThis()
 {
 	// Это комментарий, который компилятор проигнорирует
 
 	/* Это
 	моя
 	функция */
 
 	print("Это будет написано в окне сервера");
 	return 0;
 }

Стоит также заметить, что Вы можете писать комментарии прямо в коде, все, что находиться в одной линии после "//" будет проигнорировано компилятором, также как и все, что находится между "/*" и "*/". Поскольку наша функция не вызывается игрой автоматически, нам придется вызвать ее самостоятельно через любой из автовызываемых функций, это предельно просто так как большинство команд, которые Вы используете в коде уже являются созданными функциями, так что, если Вы напишете

IMadeThis();

в автовызываемой функции OnPlayerDisconnect (разумеется, между "{" и "}", а также перед "return 1;" то эта функция будет вызываться и печатать сообщение в окно сервера, когда Вы отключитесь от него. Но обычно нам не нужно писать сообщения в окно сервер, поэтому все функции "print" и "printf" стоит удалить, если они не приносят Вам практической пользы (например, вывод важной информации об игровом процессе, которая может понадобиться Вам, как админу), чтобы не засорять окно и лог сервера.