Sphere: Создание простого trigger
Triggers - это наиболее
мощная часть скрипта сферы с которой вы будете иметь дело. Tiggers будут
встречаться и в простых скриптах, на пару строк, и в гигантских скриптах,
на много страниц. С целью обучения мы допишем скрипт claymore, который мы
создавали на предыдущем обучении. Этот скрипт превратит меч claymore в
волшебное оружие, которое будет добавлять 5 к силе игрока. Вообще, прежде
чем писать любой скрипт, вы должны точно знать, что вы хотите получить. Мы
хотим, что бы в нашем скрипте происходили следующие вещи: +5 STR -
прибавлялось при экипировке, -5 SRT - отнималось при де экипировке.
Сначала сфокусируемся на добавлении силы.
Во-первых, надо определить какой trigger нам для этого нужен. Это trigger
на экипировку: ON=@EQUIP SRC.STR=<SRC.STR>+5
Здесь написано, что сила (STR), человека (SRC),
который оборудовал item, увеличилась на 5. Это самый простой способ
изменить переменную в сфере. Заканчиваем строчкой: RETURN 0
Хотя инструкция RETURN не всегда необходима, и
НЕ необходима в этом случае, это будет хорошим тоном в написании скрипта.
Вы можете использовать RETURN 0 или RETURN 1. RETURN 0 - закончит скрипт и
разрешит выполнение всех действий связанных с trigger. RETURN 1 - завершит
скрипт без выполнения действий указанных в нём от начала, то есть в нашем
случае item просто не будет оборудован.
Терпеть напишем подобный скрипт для раз
экипировки. И выглядеть это будет следующим
образом: ON=@UNEQUIP SRC.STR=<SRC.STR>+(-5) RETURN 0
Обратите внимание, что вместо того, что бы
вычесть 5 от STR мы прибавили отрицательное пять. Это из-за ограничения
языка сферы. Для вычитания вы должны всегда прибавлять отрицательное
число. -5 не обязано выделяться круглыми скобками, но это делает скрипт
легче читаемым.
Законченный скрипт выглядит следующим
образом: [ITEMDEF i_magic_claymore] ID=013b7 NAME=claymore of
strength TYPE=t_weapon_sword WEIGHT=14 SKILL=swordsmanship DAM=15,43 REQSTR=50 TWOHANDS=Y
ON=@CREATE HITPOINTS=115,150
ON=@EQUIP SRC.STR=<SRC.STR>+5 RETURN
0
ON=@UNEQUIP SRC.STR=<SRC.STR>+(-5) RETURN 0
|