Я попытаюсь немного обьяснить суть скриптинга .
Если вы хотя бы немного знаете англиский то вам
будет гораздо легче
========================================УРОК №1=========================================
Итак начнём.......
Вот пример скрипта катаны в сфере 0.54(spheresvr 0.54)
пока для вас это всего лишь набор символов, но не надолго )
[ITEMDEF 013fe]
DEFNAME=i_katana
TYPE=t_weapon_sword
DAM=5,26
SKILL=Swordsmanship
REQSTR=10
TWOHANDS=N
SPEED=55
WEIGHT=8.0
RESOURCES=8 i_ingot_iron
SKILLMAKE=BLACKSMITHING 69.1
On=@Create
HITPOINTS={9 13}
CATEGORY=Provisions - Weapons
SUBSECTION=Swords
DESCRIPTION=Katana
рассмотрим каждую строку
[ITEMDEF 013fe] это уникальное имя катаны в сфере (уникальное потому что у всех вещей должен
быть разный ITEMDEF, естественно у одной и той же катаны одинаковые ITEMDEF)
DEFNAME=i_katana это то же что и ITEMDEF (приставка "i_" означает что это вещь то есть item,
можете конечно исковеркать как вам заблагоразумиться, но такая запись считаеться
намного читабельней.)
TYPE=t_weapon_sword это ТИП вещи в данном случае это t_weapon_sword если перевести
то weapon это оружие, а sword это меч, то есть это тип оружие меч, также можут быть и другие типы
вещей например t_weapon_mace оружие булава\кувалда\молот и т.д.
(приставка "t_" означает что это ТИП)
DAM=5,26 это урон наносимый оружием от 5 до 26 у.е.(это не доллары ) сфера будет наугад,
рандомом (от слова Random) выбирать число из этого промежутка
SKILL=Swordsmanship это скилл(умение) который будет у вас расти при использовании этого оружия
в данном случае Swordsmanship ну естественно чем больше этот скилл тем качественне вы его
используете
REQSTR=10 сокращённое requirement strength, то есть тебуемая сила для использования
в данном случае силы требуется всего лишь 10 для того чтобы взять это оружие
TWOHANDS=N two hands переводиься как двуручное, стоит "N" то есть нет если надо чтоб это
оружие было двуручным повтавьте Y (да)
SPEED=55 скорость атаки (без комментариев)
WEIGHT=8.0 вес вещи (без комментариев)
RESOURCES=8 i_ingot_iron ресурсы из которых делаеться эта вещь в данном случае из 8 ирон
инготов (8 iron ingots)
SKILLMAKE=BLACKSMITHING 69.1 скилл при котором делаеться(куётся) эта вещь
в данном случае требуеться БС Blacksmithing 69.1 (многовато )
On=@Create триггер который указывает что происходит при создании вещи (эти действия не заметны)
HITPOINTS={9 13} количество "жизней" вещи в данном случае интервал от 9 до 13 едениц жизни
то есть при создании вещи еёй присваиваеться количество жизней в определённом интевале
так же в этом триггере можно указывать цвет каким будет катана при создании командой:
COLOR=XXXX под "XXXX" подразумеваеться номер цвета это выглядело бы так:
On=@Create
HITPOINTS={9 13}
COLOR=0234
также цвет может быть в интервале COLOR={0234 3466} то есть сфера будет рандомом какой нибудь
цвет из этого промежутка
CATEGORY=Provisions - Weapons Это для проги AXIS
SUBSECTION=Swords Это для проги AXIS
DESCRIPTION=Katana Это для проги AXIS
Лана поехали дальше!
Хотите чтоб катана была не простая, а МАГИЧЕСКАЯ ?
нет ничего проще!
[ITEMDEF 013fe]
DEFNAME=i_katana
TYPE=t_weapon_sword
DAM=5,26
SKILL=Swordsmanship
REQSTR=10
TWOHANDS=N
SPEED=55
WEIGHT=8.0
RESOURCES=8 i_ingot_iron
SKILLMAKE=BLACKSMITHING 69.1
On=@Create
HITPOINTS={9 13}
ON=@equip
src.swordsmanship = (<src.swordsmanship> + 10.0)
src.tactics = (<src.tactics> + 5.0)
ON=@Unequip
src.swordsmanship = (<src.swordsmanship> - 10.0)
src.tactics = (<src.tactics> - 5.0)
CATEGORY=Provisions - Weapons
SUBSECTION=Swords
DESCRIPTION=Katana
Вы увидили что добавились строки:
ON=@equip
src.swordsmanship = (<src.swordsmanship> + 10.0)
src.tactics = (<src.tactics> + 5.0)
ON=@Unequip
src.swordsmanship = (<src.swordsmanship> - 10.0)
src.tactics = (<src.tactics> - 5.0)
ON=@equip триггер который указывает что происходит при одевании вещи
src.swordsmanship = (<src.swordsmanship> + 10.0) показывает что надо одевшему вещь
повысить скилл swordsmanship на 10
на этом остановимся по больше
приставка "src" показывает что команду надо выпонить на том кто возбудил действие
т.е. на том кто оденет вещь, а не на том кто её сковал и т.п.
swordsmanship это то что нужно изменить на его месте могла быть любая переменная скилл,стат и т.д.
сама строка src.swordsmanship = (<src.swordsmanship> + 10.0) показывает что к скиллу
swordsmanship надо прибавить 10 также можно за место 10 присвоить интервал или что то другое
например:
src.swordsmanship = (<src.swordsmanship> + <src.swordsmanship>/3) т.е. мы прибавили к нашему
скиллу 1\3 того что у нас было до надевания.
src.tactics = (<src.tactics> + 5.0) то же что и с src.swordsmanship = (<src.swordsmanship> + 10.0) только
скилл tactics
ON=@Unequip триггер который указывает что происходит при снимании вещи
src.swordsmanship = (<src.swordsmanship> - 10.0)
src.tactics = (<src.tactics> - 5.0)
всё также как и при предыдущем триггере
Это была стандартная вещь сферы, а теперь как должна выглядеть ВАМИ созданая вещь
[ITEMDEF i_katana_my]
DEFNAME=i_katana_my
NAME=Weapon Crafted by me!
TYPE=t_weapon_sword
DAM=9,46
ID=i_katana
SKILL=Swordsmanship
REQSTR=82
TWOHANDS=N
SPEED=55
WEIGHT=8.0
RESOURCES=8 i_ingot_blackrock,8 i_ingot_dragon
SKILLMAKE=BLACKSMITHING 90.0
On=@Create
HITPOINTS={23 44}
CATEGORY=Provisions - Weapons
SUBSECTION=Swords
DESCRIPTION=My Katana
итак что я добавил
NAME=Weapon Crafted by me! - имя этой вещи "Weapon Crafted by me!"
ID=i_katana - как выглядит эта вещь, а выглядеть она будет как катана
Изменил количество ресурсов требуемых для создания этой вещи и требуемый скилл.
Если хотите сделать насколько ресурсов разделяйте их запятой ","
может её ещё покрасить ?!
[ITEMDEF i_katana_my]
DEFNAME=i_katana_my
NAME=Weapon Crafted by me!
TYPE=t_weapon_sword
DAM=9,46
ID=i_katana
SKILL=Swordsmanship
REQSTR=82
TWOHANDS=N
SPEED=55
WEIGHT=8.0
RESOURCES=8 i_ingot_blackrock,8 i_ingot_dragon
SKILLMAKE=BLACKSMITHING 90.0
On=@Create
HITPOINTS={23 44}
COLOR=2486
CATEGORY=Provisions - Weapons
SUBSECTION=Swords
DESCRIPTION=My Katana
А теперь как насчёт того чтобы эта вещь мне добовляла ловкости (DEX)
[ITEMDEF i_katana_my]
DEFNAME=i_katana_my
NAME=Weapon Crafted by me!
TYPE=t_weapon_sword
DAM=9,46
ID=i_katana
SKILL=Swordsmanship
REQSTR=82
TWOHANDS=N
SPEED=55
WEIGHT=8.0
RESOURCES=8 i_ingot_blackrock,8 i_ingot_dragon
SKILLMAKE=BLACKSMITHING 90.0
On=@Create
HITPOINTS={23 44}
COLOR=2486
ON=@equip
src.dex = (<src.dex> + 30)
ON=@Unequip
src.dex = (<src.dex> - 30)
CATEGORY=Provisions - Weapons
SUBSECTION=Swords
DESCRIPTION=My Katana
как видите принцип тотже.
Так же возможны и комбинации
[ITEMDEF i_katana_combination]
DEFNAME=i_katana_combination
NAME=Weapon Crafted by me!
TYPE=t_weapon_sword
DAM=9,46
ID=i_katana
SKILL=Swordsmanship
REQSTR=82
TWOHANDS=N
SPEED=55
WEIGHT=8.0
RESOURCES=8 i_ingot_blackrock,8 i_ingot_dragon
SKILLMAKE=BLACKSMITHING 90.0
On=@Create
HITPOINTS={23 44}
COLOR=2486
ON=@equip
src.dex = (<src.dex> + 30)
src.swordsmanship = (<src.swordsmanship> + 10.0)
src.tactics = (<src.tactics> + 5.0)
ON=@Unequip
src.dex = (<src.dex> - 30)
src.swordsmanship = (<src.swordsmanship> - 10.0)
src.tactics = (<src.tactics> - 5.0)
CATEGORY=Provisions - Weapons
SUBSECTION=Swords
DESCRIPTION=My Katana
Всё просто!
PS:
ON=@equip
src.dex = (<src.dex> + 30) // src.magery = (<src.magery> + 999999.9)
"//" то что стоит после "//" читаться сферой не будет
можете делать для себя пояснения
src.dex = (<src.dex> + 30) // прибавить к дексу 30
или то что вам фантазия подскажет
PSS: будут вопросы, хотите следующий урок, в общем если вы от меня что-то хотите
вот моя аска 398756748
PSSS: не присылайте письма с просьбами типа "напиши плиз скрипт на ..."
PSSSS: только за деньги )))))
************************************************** ************FAQ*********************************** *************************************
Q: Почему когда я в скрипте пишу DAM=5,26 то урон совсем не совпадает с тем что написал я ?
A: 1) у вас около 3000.0 скила swordsmanship или наоборот
2) у того по кому вы бьёте много DEF'а
3) у вас стоит скрипт на урон (типа Combat_Damage)
4)если у вас нет 1-3 пункта ещё раз повторяю сфера это делает рандомом, в неё уже "вшиты"
многие скрипты которые не посмотришь =( , и вообще эта штука не доделана(версия 0.55),
так что учудить она может что угодно =)
Q: зачем эти пробелы:
ON=@Unequip
src.dex = (<src.dex> - 30)
A: для удобства, так легче ориентироваться.
Q: Почему от переменной SPEED не чего не меняется ?
A: 1) Это бывает на некоторых сферах типо 0.53-0.54 да и нетолько.........
Q: Почему когда я двуручному оружию ставлю TWOHANDS=N оружие всёравно берётся только
в две руки ?
A: 1) Это бывает на некоторых сферах типо 0.53-0.54.
Q: Что такое AXIS ???
A: это прога для ГМ'ов
Q: Что такое "прога" ???
A: это программа =))))))))
======================================УРОК №2===========================================
Теперь рассмотрим скрипт на посох который я написал когда только учился скриптингу (словно я
для этого его и писал)
[ITEMDEF i_staff_ol]
DEFNAME= i_staff_ol
TYPE=t_weapon_mace_staff
ID=i_staff_black
NAME=Chaos Staff Of Lightning
DAM=8,33
SKILL=Macefighting
REQSTR=35
TWOHANDS=Y
SPEED=35
WEIGHT=11.0
SKILLMAKE=CARPENTRY 100.0
RESOURCES=899 i_log
On=@Create
HITPOINTS={31 70}
COLOR=044d
ON=@DCLICK
if <src.timer> > 0
src.sysmessage You can't cast spell yet
return 1
else
IF <SRC.RESTEST 2 i_reag_dead_wood>
TARGET=Select Target
return 1
else
src.SAY Not enought resurse
return 1
endif
endif
On=@Targon_ground
return 1
On=@Targon_item
return 1
ON=@TARGON_CHAR
if (<src.targ.distance>>=9)
src.sysmessage Target to far away. Come closer.
return 1
else
src.timer=3
SRC.CONSUME=2 i_reag_dead_wood
src.targ.spelleffect 30 750
src.targ.sfx snd_spell_lightning
endif
CATEGORY=Magic Weapons
SUBSECTION=ViTaL Items
DESCRIPTION=Chaos staff
Для начало внесите себе эту вещь в скрипт и по юзайте её
************************************************** ************************************************** ****************************************
[ITEMDEF i_staff_ol]
DEFNAME= i_staff_ol
TYPE=t_weapon_mace_staff
ID=i_staff_black
NAME=Chaos Staff Of Lightning
DAM=8,33
SKILL=Macefighting
REQSTR=35
TWOHANDS=Y
SPEED=35
WEIGHT=11.0
SKILLMAKE=CARPENTRY 100.0
RESOURCES=899 i_log
On=@Create
HITPOINTS={31 70}
COLOR=044d
это мы разобрали на прошлом уроке.
ON=@DCLICK триггер который указывает что происходит при двойном нажатии на вещь
if <src.timer> > 0
src.sysmessage You can't cast spell yet
return 1
else
IF <SRC.RESTEST 2 i_reag_dead_wood>
TARGET=Select Target
return 1
else
src.SAY Not enought resurse
return 1
endif
endif
при использовании вещи вы увидили что для того чтобы юзать её вам нужен реагент dead wood
в двух экземлярах, и при чём есть задержка каста.
Для того чтобы начать сначала надо залезть в конец, а мы сделаем наоборот и начнём сконца
и придём в начало.(перемудрил немного)
if <src.timer> > 0 само слово IF переводится как "если" больше ничего вам знать и не надо и
не надо ломать голову над статьёй "Использование условного оператора IF" !!!
если перевести это с языка сферы на русский тут написано "если таймер больше нуля"
src.timer штука интересная действет в разных случаях по разному советую подробно про него
почитать. А в нашем случае "если таймер больше нуля" просто идёт проверка на то как давно
была была юзана шмотка
src.sysmessage You can't cast spell yet я думаю вы уже догадались что эта строка
выводит сообщение "You can't cast spell yet"
return 1 вернуться к началу скрипта
а теперь посмотрим на него целиком
if <src.timer> > 0
src.sysmessage You can't cast spell yet
return 1
если таймер больше нуля то
вывести на экран сообщение You can't cast spell yet
вернуться к началу
даже пояснять не надо 3)
else "остальное"
IF <SRC.RESTEST 2 i_reag_dead_wood>
RESTEST это проверка чего либо на наличие и/или количество
если есть два реагента dead wood то...
заметьте что название требуемого ресурса написано как в DEFNAME(можно и как в ITEMDEF)
TARGET=Select Target команда "TARGET=" указывает сфере что для дальнейших действий
нужна цель, TARGET так и переводится цель, то что написано после "=" это высветиться на
экране подобно команде src.sysmessage то есть у вас на мониторе будет написано "Select Target"
и опять return 1
опять else
src.SAY Not enought resurse src.SAY тоже самое что и src.sysmessage, но это сообщение
будет над вами и его будут видеть другие игроки. У вас на мониторе будет написано
"Not enought resurse"
опять return 1
endif означает что оператор IF закончен
теперь полностью
if <src.timer> > 0
src.sysmessage You can't cast spell yet
return 1
else
IF <SRC.RESTEST 2 i_reag_dead_wood>
TARGET=Select Target
return 1
else
src.SAY Not enought resurse
return 1
endif
endif
если таймер больше нуля то
вывести на экран сообщение You can't cast spell yet
вернуться к началу
в остальном
если имеится 2 реагента dead wood то
Назначить цель
вернуться к началу
в остальном
Сказать Not enought resurse
вернуться к началу
Окончить "если"
Окончить "если"
On=@Targon_ground триггер который указывает что происходит если выбрана цель земля(пол)
return 1
On=@Targon_item триггер который указывает что происходит если выбраная цель вещь
return 1
ON=@TARGON_CHAR который указывает что происходит если выбраная цель NPC\PC
src.distance это расстояние, приставка "targ" показывает что это связано с целью
if (<src.targ.distance>>=9) // если расстояние до цели больше равно девяти то
src.sysmessage Target to far away. Come closer. // вывести сообщение
//"Target to far away. Come closer."
return 1 // вернуться к началу
else // в остальном
src.timer=3 // присвоить таймеру значение три
SRC.CONSUME=2 i_reag_dead_wood // забрать два реагента dead wood
src.targ.spelleffect 30 750 // выполнить спил эффект 30 мощьностью 750 на цель
src.targ.sfx snd_spell_lightning // выполнить звук snd_spell_lightning
endif // Окончить "если"
То есть при дабл клике мы проверяем кончился таймер или нет, если нет то выводится
соответствующее сообщение, если да то идёт проверка на наличие ресурса если ресурс не найден,
то выводится соответствующее сообщение, если да то появляется "таргет" и выводиться сообщение.
Таргет можно назначить только на NPC\PC. В триггере ON=@TARGON_CHAR первым делом идёт
проверка на расстояние (если не будет этого то мы можем назначить таргет на когонибудь и бить
его с другово конца карты), если расстояние больше или равно девяти то выводится
соответствующее сообщение, если нет то ставиться таймер забираеться ресурс, кастуется
заклинание 30 с силой 750 и воспроизводится соответствующеий звук.
Хм... вот тут точно перемудрил, надеюсь разберётесь.
PS: будут вопросы, хотите следующий урок, в общем если вы от меня что-то хотите
вот ммоя аска 398756748
Модеры не серчайте что я скрипты не выделил из-за этого они становяться нечитабельны
Отредактировано visp (2009-01-02 17:59:49)