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 - Вказує на шар або перший предмет, знайдений у цьому шарі

Ось у принципі і все. Успіхів вам у ваших починаннях!