Опять немного лирики - для начинающих устрою краткий факью по поинтерам.
Что такое поинтер? Как уже говорилось в предыдущей статье, терминологию я использую исключительно свою, но слово поинтер это небольшое исключение, его я подцепил в хорошеи програмке(к сожалению, не распространенной, т.к. девелопер ушел в РанУО так и не доведя программу до идеала) SSeditor, ака Sphere Script Editor.
pointer(англ.) - указатель Поинтер - это как бы приставка, указывающая на игровой объект, будь то предмет, игрок, регион или что-то другое. Волт например, вам надо чтобы при двоёном клике на предмет его цвет менялся на карсный, а игроку вылетало сообщение
"Hello!". Вам же надо каким-то образом различить, какая команда относится к игроку, а какая к предмету, ведь сфера сама не может понять, что цвет надо сменить не игроку, а сообщение должно вылезти не у предмета. Вот для этого поинтеры и существуют.
Сразу попробуем рабить поинтерры на определенные группы, мне в голову пришло только две - прямые и косвенные поинтеры.
1. Прямые src. act. region. sector. TOPOBJ. cont. targ. [] serv. 2. Косвенные uid. def. link.Примечание: [] значит отсутствие поинтера, советую запомнить, т.к. в мануалах .56 уже используется такои термин. В отличие от переменных, различие между поинтеррами достаточно расплывчатое.
Начну я с прямых, так как эта группа проще. Прямые поинтерры используются ВСЕГДА. Очень сложно наити скрипт без их участия, да и то просто напросто вы не поимете что там етсь поинтеры, хотя на самом деле поинтер есть всегда. Вот например, есть триггер
On=@dclick, посмотрим, какие поинтеры будут на что указывать.
------
src- тот кто делает двоиной клик
[] - сам предмет, в чьем блоке написан триггер, и он же предмет, по которому щелкают
cont - контеинер, в котором находится предмет
TOPOBJ - верхний контеинер или если его нету, то УИД самого предмета.
region - регион, в котором находится предмет или сам контеинер
----
вот видите сколько? А это ведь далеко не предел! Сеичас вам дам кратенькую характеристику каждого поинтера, для того чтобы было легче ориентироваться.
SRC.(source - источник) - указывает на объект, вызвавший деиствие. Особенно важно это не забыть в функциях, ведь там SRC. указывает на объект, которым была функция задеиствована, а не на объект, на который функция деиствует.
ACT.(action - деиствие) - обычно указывает на последний объект, которым/на который было совершенно действие.
TARG.(target - цель) - обычно указывает на объект, на который было направленно прицелом.
CONT.(container - контеинер) - указывает на контеинер, в котором объект хранится, например на сундук, в котором он лежит. В триггерах может так же использоаться как указатель на объекта-игрока, хранящего этот предмет.
TOPOBJ.(top object - верхний объект) - в отличии от CONT. указывает на самый верхний контеинер, то етсь если предмет лежит в восемнадцатои сумке бэкпака игрока, то указывать поинтер будет не на 18ую сумку, а на самого игрока. Удобно проверять находится ли предмет в сумке.
Знаменитая проверка, о которои только что говорил, выглядит так:
Код
IF (<TOPOBJ.uid> != <src.uid>)
message Item isn't in your pack!
ENDIF
REGION. - указывает на регион, в котором находится объект.
SECTOR. - указывает на сектор, в котором находится объект.
SERV. указатель на сервер, т.е. указанные действия будут производится от имени консоли. Частый пример ->
<serv.name> выводит название сервера.
Заметка: с поинтерами region/sector/serv очень часто используют команду allclients, т.е. аргумент команды будет действовать на всех игроков в регионе/секторе/сервере, например .serv.allclients say 1 2 3 заставит всех игроков на сервере сказать "1 2 3".[] - указывает на того, на ком висит триггер или на кого направленно деиствие функции.
Надеюсь, это понятно. Вот примеры поинтеров для некоторых триггеров:
Код
------@TARGON_ITEM-------
:Триггер для предмета:
src. - Тот кто нацеливается прицелом
[] - сам предмет, которым был вызван прицел
cont. - контеинер, в котором находится предмет
TOPOBJ. - верхний контеинер или если его нету, то УИД самого предмета.
TARG. - объект, на который нацеливаются(в данном триггере это только предмет)
----------------------
Код
------@ITEMEQUIP-------
:Триггер для игрока:
[] - сам игрок, которй одевает, и на котором висит триггер.
act. - объект, который одевается
----------------------
И т. д.
Надеюсь, с прямыми поинтерами все понятно. Хотя, хочу заметить, что есть такая вещь как src.act. и она используется очень даже часто. Чаще всего это для указания на объекты, созданные newitem или newnpc. Пример :
Код
On=@dclick
src.newitem=i_gold
src.act.amount=2000
src.act.bounce
При двойном клике создатся одна монета, потом её коичество станет 2000 и они упадут в пак игрока src.
НО: в Р-сферах и .56 src.act. моно заменять new. что намного облегчает просмотр скрипта (IMG:
style_emoticons/default/smile.gif)
Вторая группа - Косвенные. О неи покороче. Это поинтерры, которые вы задаете сами(хотя act. вы тоже можете задать сами 8) ). Чтобы задать поинтер, надо указать его значения. Для каждого это делается по-своему.
LINK. - просто пишите link=УИД и дальше через link. вы сможете обращаться к предмету, УИД которого вы записали в link. Для ключеи link это УИД двереи, которые они открывают.
UID. - используется с указанием аргумента - УИД нужного объекта. Например нужно обратиться к игроку, чеи УИД записан в var.uid - тогда пишем uid.<var.uid>.действие
DEF. - смотри использование в статье про переменные.
OBJ. - в Р-сферах и .56 свободный поинтер, который как линк можно задать в любое время. OBJ - глобальная переменная(см. про переменные) (IMG:
style_emoticons/default/wink.gif)
Использование как и у прямых поинтеров, разница только та, что косвенные поинтеры не зависят от триггера, т.к. они задаются вручную. Примеры поинтерров - каждый скрипт, потому ссылками я вас и не снабжаю (IMG:
style_emoticons/default/smile.gif)
P.S. УИД это Уникальный Индетификатор(думается мне, что на англицком звучит это как Unical Indetificator), это уникальный номер каждого игрового объекта. Если говорить о переменнои, то это переменные uid или serial.для forum.uokit.com © NFix