Показать сообщение отдельно
Старый 28.01.2005, 18:07   #87
Vam

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Уроки скриптологии

2Mitrich:
не мог бы ты поподробнее раскрыть возможности работы с PROTOTYPE и INSTANCE
CLASS имеет жесткий набор переменных, в нем ничего нельзя изменить. Последовательность полей и их размер задаются в экзешнике. При загрузке экзешником класса из дат файла производится проверка его размера, и если он не совпадает с заданным в экзешнике, получаем ошибку, "дат файл негодный, выполните компиляцию по-новому", и программа прекращает свою работу, можешь проверить!
PROTOTYPE является производной от класса и инициализирует переменные класса конкретными значениями. Могут быть инициализированы или все переменные или только их часть. Прототипов от класса можно сделать сколь угодно много с разной инициализацией. Например, один прототип от класса C_NPC может описывать общие параметры всех монстров, а другой прототип общие параметры всех людей и т.д.
INSTANCE является производной от класса или от прототипа, помимо инициализации переменных класса она выполняет и другие функции. Внутри инстанции могут вызываться многие специальные функции, первым параметром которых является ссылка на на саму инстанцию (self). Эти функции работают с переменными конкретно этой инстанции и никакой другой, если это явно не указано. Инстанций может быть реализовано очень много, например, каждый конкретный НПС и т.д. Если инстанция произведена от прототипа, то в ней нет надобности производить инициализацию тех переменных, которые были инициализированы в прототипе (если, конечно, нет на то необходимости).

Если кто знает С++, то в реализации классов и их производных в скриптах нет ничего сложного, но по сравнению с С++ немного запутано. В С++ всей этой классовой иерархии скриптов соответствует простой класс с объявленными для него функциями.
Надеюсь большинству понятны мои высказывания. *:)
Ответить с цитированием