Pushistik↯❤
Команда форума
- Регистрация
- 6 Июл 2017
- Сообщения
- 393
- Реакции
- 97
- Баллы
- 28
[SourcePawn] Урок 12 - metodmap
<= К содержанию
metodmap - Это структура описывающая методы для работы с определенным типом и свойства этого типа.Рассмотрим пример для типа MyType (тип придумал):
PHP:
methodmap MyType // Указывает название типа.
{
// Если в названии написано Тип < Базовый_тип (например MyType < Handle)
// То это говорит о том, что наш тип является производным от базового типа
// ****************************************
// ************* МЕТОДЫ *****************
// ****************************************
// Метод MyFunc1 имеет тип void, следовательно он просто выполняет какое-то действие.
// Используем как и все методы MyObj.MyFunc1("arg");
public void MyFunc1(const char[] szArg1)
{
// Реализация метода
}
// Метод MyFunc2 имеет тип int, значит что он возвращает целочисленное значение.
// Ключевое слово native указывает на то что ф-я является внешней и реализуется в другом месте плагина или другим плагином или расширением
public native int MyFunc2(int iArg1);
// Метод MyFunc3
// Ключевое слово static указывает что ф-я должна вызываться не от экземпляра типа, а от самого типа
// Пример:
// MyType MyObj = CreateMyType();
// MyObj.MyFunc2(3); // Вызов ф-и экземпляром типа
// MyType.MyFunc3(7); // Вызов ф-и типом
public static native bool MyFunc3(int iArg1);
// Пример из реального типа
// Это выражение уже устарело, но его всё еще можно встретить.
// Оно указывает что тип, параметры и реализация метода идентичны указанной ф-и
// Конкретно это выражение говорит:
// WritePackCell(hDataPack, 8); // Использовали
// hDataPack.WriteCell(8); // А теперь надо так
public WriteCell() = WritePackCell;
// ****************************************
// ************* СВОЙСТА *****************
// ****************************************
// Свойство Position
property int Position
{
// Со свойствами работать просто. Им либо присваиваются значения, либо получают их значения.
// Имя get говорит о том, что можно получать значение этого свойства
public get()
{
// Возвращаем значение. Об this.Index расскажу позже
return GetPosition(this.Index); // Ф-я GetPosition придумана
}
// Имя set говорит о том, что можно присваимать значение этому свойству
public set(int iPos)
{
return SetPosition(iPos); // Ф-я SetPosition придумана
}
}
// Так же устаревшая форма записи, которая использовалась только для перехода на новый синтаксис.
property int Position
{
public get() = GetPackPosition;
public set() = SetPackPosition;
}
// Подробнее об this.Index
// В каждом metodmap есть скрытый параметр this
// Он указывает на текущий объект
// Например
// MyType MyObj = CreateMyType();
// MyObj.MyFunc2(3); // Вызов ф-и экземпляром типа
// В любом свойстве или методе параметр this будет указывать на объект MyObj
// Это свойство получает индекс объекта
// Например, если у нас есть тип Player,
// где каждый экземпляр это игрок,
// то чтобы через объект получить индекс игрока
// (по сути сам объект типа Player может быть равен индексу, или же serialid, или userid, или вообще использовать собсвтенный счетчик)
// используется это свойство
property int Index
{
// Свойство можно только получать
public get()
{
// Приводим текущий объект к типу int
return view_as<int>(this);
}
}
};
<= К содержанию
Последнее редактирование: