Apple - Інформаційно-розважальний UO портал
[ITEMDEF i_gold_giver] >NAME=Gold giver
Де SRC є зверненням до об'єкта, який 2 разу клікнув на грейвстон. У разі, якщо двічі клікнув чар, то зв'язок утворюється між чаром і кликнутым об'єктом. Зв'язок проходить від клікнутих об'єктів до чару, і всі скриптові дії пов'язані з SRC будуть здійснюватися тільки над чаром.
Далі слідує ACT (від англ. Action - дія), не просто дія, а звернення до об'єкта над яким було зроблено останню дію. У разі цей об'єкт - ітем i_gold. Вчинено дію з виготовлення i_gold, і воно є останнім по відношенню до чару. Тому створюється ще один зв'язок між i_gold і чаром. І останньою стадією в цьому скрипті є вказівка amount (кількості). І bounce (покласти у бекпак). Return 1 – зупинити дію на даному моменті. Зв'язок створюється лише на 1 мить наступної команди і в наступному рядку треба описувати ще раз стадію зв'язку.
Не можна писати так:
SRC.NEWITEM=i_gold ACT.AMOUNT // SRC відсутній ACT.BOUNCE // SRC відсутній RETURN 1
Оскільки зв'язок створено першому моменті і першому вона переривається. Звичайно це не означає, що неможливе поєднання просто act.amount, але в даному випадку воно недоречне.
Ще один приклад одностороннього звернення:
[ITEMDEF i_alchemical_giver_death] >NAME=AutoKiller
On=@STEP IF! (0 ==1) SRC.TAG.GIVEDEATH=1 SRC.NEWITEM=i_giver_death SRC.ACT.TYPE=t_eq_script SRC.ACT.TIMER=1 SRC.ACT .LINK= SRC.ACT.EQUIP RETURN 1 ENDIF
[ITEMDEF i_giver_death] >NAME=Death giver
On = @ TIMER CONT.HITS = 0 LINK.SAY Ви не повинні йти на мене! CONT.TAG.GIVEDEATH = REMOVE
У цьому скрипті звернення йде до чару,який настав на символ. Створюється ітим і вішається на нього з таймером, що дорівнює одній секунді. А на ітемі пишемо якщо таймер досягне 0, то CONT.HITS = 0, значить чар помирає якщо він не invul. У таймерах команди завжди є CONT. Оскільки SRC. він не сприйме і сенсу у ньому не буде.
CONT (від англ. To contain - "утримувати") - це звернення до об'єкта, якому належить цей предмет. В даному випадку цей об'єкт "Чар", який настав на символ і отримав монетку з таймером 1, і "в якому" лежить ця монета. Далі віддана команда сказати "Ти ніколи більше не наступиш на мене!" Тут вже не CONT, а LINK.SAY тому, що раніше я вказав, що LINK= , що означає, що значення LINK дорівнює серійному номеру (або, якщо бути точним, унікальному номеру) предмета, на який настав чар. Далі йде звернення до предмета який я наступив - здавалося, що відбувається двостороннє звернення, але ні - це негаразд, т.к. звертався не скриптер, а безпосередньо сам ітем i_giver_death.
LINK (від англ. to link - з'єднувати) - це ще одне ключове слово, яке можна використовувати безпосередньо як покажчик.
У предметах, крім лінка, є ще різні параметри (наприклад: MORE, MORE2). Але головна відмінність їх від лінка, те, що використовуючи їх не можна робити дії над потрібним предметом. Наприклад, не можна вказавши MORE2= сказати MORE2.SAY You will never step on me!. Сфера просто не зрозуміє.
LINK – це покажчик на унікальний предмет. Спочатку LINK = 04FFFFFFF
ON=@EQUIP IF (==04FFFFFFF) BOUNCE RETURN 1 ELSE RETURN 0 ENDIF
У цьому вся скрипті немає команд SRC і ACT т.к. вони тут не потрібні, і вже створений і команда Bounce посилається самому собі. Тобто. як ми пишемо (.HITS 300), (.GM),(.ALLSKILLS) і т.д.
То все ж таки, що таке двостороннє звернення? Коли об'єкт звертається до предмета і навпаки, виконує дії доручені об'єктом. Вони можуть бути як складними, так і простими, але обидва містять інформацію про зв'язок один з одним.
ITEMDEF i_rock_to_move] >NAME=Link checker
On=@DCLICK LINK= TARGETG RETURN 1
ON=@TARGON_GROUND P= LINK.SAY Ooo it's good i did it! LINK.SALUTE RETURN 1
Ось приклад простого двостороннього звернення. Чар двічі клікне на камінь, LINK записує UID чара, а камінь викликає ціль. Тут немає SRC, т.к. не чар викликає ціль, а сам камінь і він уже пропонує чару застосувати ціль. Тут зв'язок спостерігається лише між метою та чаром. Якщо чар вкаже землю, то P координата становища каменю змінюється той P, що вказав чар, тобто. знову зв'язок між чаром та каменем. Далі камінь примушує чара сказати "То добре я зробив це!" та виконати команду (.Salute)
UID - як казав це унікальний номер того предмета чи об'єкта, який ми вказуємо.
Але, крім того, UID можна використовувати як частину поінтера і вказати на потрібний нам об'єкт.
On=@Spellcast - як правило, в spheretables.scp ставлять, тому не пишуть (Src.argn і src.uid) оскільки дія вже має на увазі, що виконує Чар.
Крім цього, UID може вказати на змінні чара або ітема. Можна написати приклад:
U > де UID вказує інтерпретатору, що слід звернутися до серійника 04000f3c, а далі звернутися до змінної NAME, та присвоїти цій змінній значення "Connected". Можна також написати так:
3. Покажчики: TARG та TOPOBJ
Targ – це покажчик останньої мети. Відповідно покажчик TARG вказує на об'єкт, який було обрано (єзважаючи на обраний спеціальним курсором "вибрати мету" - курсором у вигляді прицілу).
TopOBJ - це звернення до об'єкта, що містить даний предмет. Якщо, наприклад, цей предмет лежить у бекапі чара, то звернення буде до чару. Якщо у бекпаку, який лежить у бекпаку чара, то звернення все одно буде до чару.
Якщо в скрині, в коробці, то звернення до скрині. Тобто. звернення відбувається до об'єкта містить ітом.
Ось наведу приклад:
[ITEMDEF i_remover_magic] NAME=Remover DEFNAME=i_remover_magic >TYPE=T_wand
Магічний Видавець(Інвіз) RETURN 1
Гей, ! Кого в цей SRC.SAY=
якщо ти збираєшся видалити? TARGET RETURN 1
ON=@TARGON_CHAR IF ( ) SRC.TARG.REMOVE RETURN 1 ELSE SRC.MESSAGE=
Ти не можеш видалити чару
таким чином! RETURN 1 ENDIF
Я не видаляю речі SRC.MESSAGE=
зі свого бекпака! RETURN 1 Else SRC.TARG.REMOVE RETURN 1 ENDIF
Приклад не найважчий, тому я не пояснюватиму його. Спробуйте розібратися самі – це допоможе вам краще зрозуміти викладений матеріал.
4. Оператори FINDID, FINDTYPE, FINDLAYER
За допомогою цих операторів можна знайти предмет у потрібного нам чара (або у потрібному контейнері) і зробити над цим предметом якусь дію.
у першому змінюємо ім'я будь-якого знайденого предмета в об'єкта, що відноситься до base & у другому знаходимо будь-який предмет типу t_gold і викидаємо його
в третьому звертаємося до Layer(30) і видаляємо перший ітом, що попався, що знаходиться в цьому шарі.
Назва цих операторів утворена так:
Поінтери, що вказують безпосередньо на об'єкт:
Src - Звернеться до об'єкта, що активував дію. Act - Цей покажчик звертається до об'єкта останньогодії. Cont - Цей покажчик унікальний для ітіму, і звертається до власника ітіму. Targ - Звертається до останньої мети. Topobj - Звертається до об'єкта, що містить предмет (можливо в декількох контейнерах).
Вказівники, що вказують на унікальний номер об'єкта (UID):
Link - Вказує на унікальний UID якогось об'єкта Uid - Звертається до певного UID
Оператори-покажчики, що вказують на якийсь предмет у "контейнері"
Findid - Цей покажчик знаходить перший випадковий ітем подібного ID Findtype - Вказує на перший випадковий ітем подібного типу Findlayer - Вказує на шар або перший предмет, знайдений у цьому шарі
Ось у принципі і все. Успіхів вам у ваших починаннях!