#Djuga
Специалист
Автоматоны в Pawn
[HR][/HR]
Доброго времени уважаемые пользователи портала. В этом уроке я хотел бы рассказать вам об автоматонах, раннее уже была создана тема, но я затрону их более подробно, да и тем более она лежит в архиве.
Что такое автоматоны?
Автоматоны - это система, которая позволяет определить несколько одинаковых функций, но к сожалению это не перегрузки (а так хотелось(а может и да?))).
Для чего они применяются?
С их помощью можно несколько упростить написание двух и более методов, в случае с автоматонами это будут некие состояния функций.
Как же их использовать?
Итак, сейчас я вам покажу несколько примеров использования автоматонов, которые мы подробно разберём
PHP:
public OnGameModeInit()
{
state messageTo:admins; // Установка текущего состояния
SendMessage("Test message"); // Вызов функции
}
forward SendMessage(message[]);
public SendMessage(message[]) <messageTo:admins>
{
for(new i = GetPlayerPoolSize(); —i != -1;) if(IsPlayerAdmin(i)) SendClientMessage(i,-1,message);
}
public SendMessage(message[]) <messageTo:players>
{
for(new i = GetPlayerPoolSize(); —i != -1;) SendClientMessage(i,-1,message);
}
Так вот, это определяет для данной функции состояние (messageTo
Ну, а в случае если мы установим состояние (messageTo
Я надеюсь вам было не сложно понять как их использовать, и текущих знаний я думаю хватит для использования атоматонов, ну а для тех, кто хочет углубиться - мы продолжаем!
Что такое Entry()?
Entry() - функция, которая вызывается при установке состояния, и сейчас мы рассмотрим пример, а я попытаюсь объяснить.
PHP:
public OnGameModeInit()
{
state messageTo:admins; // Установка текущего состояния
SendMessage("Test message"); // Вызов функции
}
forward SendMessage(message[]);
public SendMessage(message[]) <messageTo:admins>
{
for(new i = GetPlayerPoolSize(); —i != -1;) if(IsPlayerAdmin(i)) SendClientMessage(i,-1,message);
}
public SendMessage(message[]) <messageTo:players>
{
for(new i = GetPlayerPoolSize(); —i != -1;) SendClientMessage(i,-1,message);
}
entry() <messageTo:admins>
{
new hour,minute,second;
gettime(hour,minute,second);
printf("Всем администраторам было отправлено сообщение в %02d:%02d:%02d",hour,minute,second);
}
Всё на самом деле просто она вызывается перед ф-цией SendMessage, то есть на данном моменте: "state messageTo:admins".
Просто, правда? Ладно, идем дальше, и думаю хватит.
Всевозможные объявления автоматонов
Итак, автоматоны можно объявлять несколькими способами:
1.) С одним состоянием:
PHP:
public SendMessage(message[]) <messageTo:admins>
PHP:
public SendMessage(message[]) <messageTo:admins, messageTo:players>
PHP:
public SendMessage(message[]) <>
[HR][/HR]
Домашнее задание
Итак, всё вполне просто. Напишите регистрацию/авторизацию двумя методами - если подключение к базе не удалось, то регистрация будет на файлах, если удалось - на MySQL. Дерзайте!
[HR][/HR]
При размещении на других порталах, указывайте автора -#Djuga
Последнее редактирование:
