Здравствуйте, гость ( Вход | Регистрация )

 
Тема закрытаОткрыть новую тему
> (!) "Я бы хотел знать...", ...FAQ...
NFx
сообщение 30.1.2005, 14:54
Сообщение #1


********

SpS 60+(умер), NE Priest 40+ жифф
Сообщений: 1.505
Регистрация: 3.9.2003
Группа: Пользователи
Наличность: 0
Из: Подмосковье
Пользователь №: 950



Ответы на самые частозадаваемые вопросы

Обновляется постоянно, вопросы я всегда дописываю в конце, потому предупреждаю, что вопросы не имеют никакого логического порядка, и если вы что-нибудь ищите, будь вы новичек или продвинутый - просмотрите все до конца.


Как сделать чтобы показывался нанесенный урон?
Как сделать чат и чат гильдии?
В чем различия между 55i, 55R, 56 сферами и особенности языков?
Почему у меня не запускается только что скачанная R-сфера?
Где мне взять скрипт на ....?
Где взять рассы?
Как сделать свои руды?
Где регулировать сложность навыка?
Не подскажете ссылку, где можно скачать какой-нибудь PvP-шард?
Где лежат все типы предметов?
Как вызвать прицел?
Как сделать вещь в диде?
Как мне сделать поинты или кредиты?
Как сделать русский текст в диалогах?
Как сделать цветнои текст сообщений?
Как перевести число из однои системы исчисления в другую?
Подскажите другие ресурсы с информациеи по сфере и эмуляторам.
А как сделать чтобы ко мне другие могли заходить на шард?
Хочу поставить сервер в локальной сети, пришлите мне хорошие скрипты.
Как мне добавлять/удалять флаг у игрока?
Как мне делать иммунитет к заклинанию?
Как сделать проверку на наличие предмета в паке игрока?
Как сделать чтобы нпс пил бутылку Greater Heal, если у него здоровье меньше половины?
Как мне отключить какое-либо заклинание?
Что за зверь такои - serv.time?
Как мне создавать предметы для крафта?
Как имея лишь ID вещи узнать другие параметры?
У меня не подгружается сферои фаил со скриптом, что делать?
Как кодируются заклинания в книге?
Как кодируются флаги/атрибуты?
Как сделать чтобы вещь давала какие-нибудь бонусы?
Что за <> я постоянно вижу в скриптах?
Что такое триггер?
Что такое слой, или layer, и зачем он нужен?
Как узнать к какои гильдии принадлежит игрок?
Как мне изменить шанс выпадения предмета?
Что такое скриптовая грамотность?
Где наити цвета шрифта для диалога?
Как сделать проверку на предмет у игрока?
Как сделать нечто похожее на заточки оружия, как в Лаинэидж??
Как сделать чтобы был шанс(вероятность) на что-либо?
У меня стоят рассы, но при смерти или при заклинании полиморфа цвет кожи опять становится таким, каким был до расс! Как это исправить?
Как сделать, чтобы заклинания сбивали каст или любое другое деиствие?
Где скачать версию сферы Menasoft SphereServer 55R4.0.2?
Скрипт не работает, где может быть ошибка?


Сообщение отредактировал NFx - 7.2.2006, 16:14


--------------------
Важна не реклама, а качество.
Качество - девиз хороших серверов.
Продуманность и готовность - девиз очень хороших серверов.
..::Lorien Role-Playing Shard(RunUO)::..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
NFx
сообщение 4.1.2006, 15:57
Сообщение #2


********

SpS 60+(умер), NE Priest 40+ жифф
Сообщений: 1.505
Регистрация: 3.9.2003
Группа: Пользователи
Наличность: 0
Из: Подмосковье
Пользователь №: 950



Вопрос: Как сделать чтобы показывался нанесенный урон?
Ответ: В любои скрипт добавьте вот такои код:
Код
[EVENTS e_hits] 
ON=@Hit
    var.last_act=<act.uid>
    newitem i_damage_memory
    act.link=<uid>
    src.equip <act.uid>
    act=<var.last_act>

[ITEMDEF i_damage_memory]
ID=i_memory
TYPE=t_eq_script

ON=@Equip
    attr=attr_newbie|attr_decay
    more1=<src.hits>
    timer=0

ON=@Unequip
link.sysmessage You hit <src.name> doing <eval <more1>+-<src.hits>> points of damage
return 1

и затем в spheretables.scp впишите

Код
ON=@LOGin
events +e_hits


ON=@LOGout
events -e_hits

пользуитесь и наслаждаитесь.

Вопрос: Как сделать чат и чат гильдии?
Ответ: См. здесь

Вопрос: В чем различия между 55i, 55R, 56 сферами и особенности языков?
Ответ: См. здесь

Вопрос: Почему у меня не запускается только что скачанная R-сфера?
Ответ: Пропишите где угодно в sphere.ini agree=1

Вопрос: Где мне взять скрипт на ....?
Ответ: См. здесь

Вопрос: Где взять рассы?
Ответ: См. здесь

Вопрос: Как сделать свои руды?
Ответ: Чтобы сделать свою руду, вам нужно сделать инготы-слитки, руду и регион.

Вот краткий типаж для руды :

Руда
[ITEMDEF i_ore_название]
DEFNAME=i_ore_название
Id=i_ore_iron
NAME=название Ore
TYPE=t_ore
SKILLMAKE=MINING навык
TDATA1=i_ingot_название
WEIGHT=вес
VALUE=цена

ON=@Create
COLOR=цвет

Слиток-ингот
[ITEMDEF i_ingot_название]
DEFNAME=i_ingot_название
ID=i_ingot_iron
NAME=название Ingot
RESOURCES=i_ore_название
SKILLMAKE=MINING навык
TDATA1=100.0
TDATA2=100.0
TYPE=t_ingot
WEIGHT=вес

ON=@Create
COLOR=цвет

Регион
[php][REGIONRESOURCE mr_название]
SKILL_LO=навык
SKILL_HI=100.0
AMOUNT_LO=минимум в жиле
AMOUNT_HI=максимум в жиле
REAP=i_ore_название
REGEN=60*60*регенерация(в часах)

Дальше вы ищете в sphereregion.scp блок [REGIONTYPE r_default_rock t_rock] и вписываете под ним RESOURCES=шанс mr_название

Пример руд есть здесь. Пользуитесь!

Вопрос: Где регулировать сложность навыка?
Ответ: В spheretablers.scp ищите блок [Skill x] нужного вам скилла и там меняите параметр ADV_RATE=x,y,z, легкая прокачка - ADV_RATE=50.0,150.0,250.0, а сложная - ADV_RATE=150.0,350.0,800.0.

Вопрос: Не подскажете ссылку, где можно скачать какой-нибудь PvP-шард?
Ответ(AHgpjuwKA) ссылка.

Вопрос: Где лежат все типы предметов?
Ответ: Все цвета, звуки, наборы случаиных предметов, типы, флаги, аттрибуты лежат в sphere_defs.scp

Вопрос: Как вызвать прицел?
Ответ: Делаите в предмете в триггере "TARGET текст". Вот примеры:

Код
ON=@Dclick
TARGET Select a bottle

затем в этом же предмете прописываите три триггера:

TARGON_ITEM - деиствие при нацеле на предмет
TARGON_GROUND - деиствие при нацеле на землю
TARGON_CHAR - деиствие при нацеле на персонажа

в этих триггерах такие поинтеры:

src. -> тот кто указывал
src.targ. -> то, на что указали.

Пример:
Код
ON=@TARGON_ITEM
IF (<src.targ.type> == t_bottle)
src.targ.message This is bottle
RETURN 1
ENDIF

ON=@TARGON_CHAR
src.targ.message This is a character, not a bottle
RETURN 1

ON=@TARGON_GROUN
src.message This is a ground, not a bottle!
RETURN 1

Вопрос: Как сделать вещь в диде?
Ответ: Просто сделаите предмет с типом t_deed и укажите

Код
ON=@create

more=ID_предмета

Вопрос: Как мне сделать поинты или кредиты?
Ответ: См. здесь

Вопрос: Как сделать русский текст в диалогах?
Ответ: Варианта деиствия два:

1. До того, как писать диалог, пересохранить фаил сркипта, указав в разделе "кодировка" (снизу) UTF-8
2. Писать Юникодом.

Замечу, что эти пункты несовместимы, так как UTF-8 значки Юникода не примет, и получится фигня какая-то.

Вопрос: Как сделать цветнои текст сообщений?
Ответ: Смотря какои у вас эмулятор.

1. Если SphereServer 55i:
Сначало убедитесь что у вас нет переписаннои функции sysmessageua, если она есть - тут же сотрите. Дальше деиствуйте таким образом:

sysmessageua цвет,0,0,rus,текст

2. Если SphereServer 55R* или 56* или 55z(патч Зорма и Келла)

sysmessage @цвет текст

Вопрос: Как перевести число из однои системы исчисления в другую?
Ответ: Как вы знаете, разные переменные имеют разные типы, например more* - шестнадцатеричная(heximal), а amount и hits - десятеричные(decimal). Чтобы перевести одну систему в другую используите <eval > и <hval >; первое переведет все внутри себя в десятеричную, вторая - в шестнадцатеричную.

Вопрос: Подскажите другие ресурсы с информациеи по сфере и эмуляторам.
Ответ: Вот одни из самых популярных ресурсов, кроме Ultimasoft:
ShardWire
SphereShards
Архив какои-то
UObugs
UOsoft
SphereHelp

Вопрос: А как сделать чтобы ко мне другие могли заходить на шард?
Ответ(Steel): Сказать им свой логин LoginServer = (ip где стоит сервер),2593 - если порт 2593 занят, то поставьте любой порт от 0 до 60000.

Вопрос: Хочу поставить сервер в локальной сети, пришлите мне хорошие скрипты.
Ответ(Steel): Свои скрипты вам никто не даст, вы можете скачать готовые шарды уже которые валяються в интернете. Если вам нужны скрипты, пишите на мыло steel@gmail.ru и я вам вышлю скрипты.

Вопрос: Как мне добавлять/удалять флаг у игрока?
Ответ: Работа с флагами, или с атрибутами, или с другими шестнадцатеричными значениями, складывающимися в переменную(на примере флагов, то есть переменнои игрока):

Проверка
IF (<src.flags>&флаг)

Добавление
src.flags=<src.flags>|флаг

Вычитание
src.flags=<src.flags>~флаг

Вопрос: Как мне делать иммунитет к заклинанию?
Ответ: Для начала надо знать номер заклинания, которое вы хотите отражать.

Считается так - Номер круга*8 + какои спелл по счету на своеи странице (всего 64 спелла, 8 кругов по 8 спеллов)

Так вот простой скрипт на триггер Spelleffect который вы можете вписывать или непосредственно в блок персонажа, или в его евенты :

Код
ON=@SpellEffect
IF (<ARGN>==номер спелла)
SRC.emote ressisted spell
RETURN 1
ENDIF

Вопрос: Как сделать проверку на наличие предмета в паке игрока?
Ответ: Вот кусок кода, который нужно вставлять в блок предмета:

Код
On=@dclick
IF (<topobj.uid> != <src.uid>)
src.message The item must be in your pack!
  RETUTN 1
ENDIF

Вопрос: Как сделать чтобы нпс пил бутылку Greater Heal, если у него здоровье меньше половины?
Ответ: Вот евент:

Код
[EVENTS +e_hg_drink]

ON=@gethit
IF <restest 1 i_potion_HealGreat> && (<hits> < (<str>/2) )
spelleffect s_greater_heal 64.0
consume 1 i_potion_HealGreat
newitem=i_bottle_empty
src,act.bounce
ENDIF

в блоке нужного НПС прописывайте TEVENTS=e_hg_drink, или можно просто сам триггер вставлять в блок НПС.

Вопрос: Как мне отключить какое-либо заклинание?
Ответ: Ну тут все проще, вам надо открыть блок [SKILLCLASS 0], (который в R-сферах и .56 лежит в sphere_skills.scp, а в 55i в spheretables.scp) и вписать туда, после перечисления максимума скиллов вот такую штуку:

Код
ON=@spellcast
IF (<argn> == номер)
message The spell is disabled at <serv.name>!
RETURN 1
ENDIF

А вместо слова "номер" вписать, соответственно, номер заклинания, который вы высчитаете, как говорилось выше.

Вопрос: Что за зверь такои - serv.time?
Ответ: Это постоянный таимер сферы, отсчитывающий время в тиках (1/10 секунды). Его девиз: "смерть предметам-таимерам!". С его помощью вы сможете задать тамиер, не перегружая память лишними предметами. Все делается достаточно просто и легкообъясняемо.
Serv.time это, можно сказать, часы. Так вот, чтобы узнать, прошло ли с какого-то момента 15 секунд, надо просто запомнить настоящее время+15 секунд, и затем проверять, если настоящее время больше того, что мы запомнили, то значит, что наши 15 секунд прошли.
Ну например, есть у вас бинты i_bandage, которые моно использовать с задержкои в 10 секунд. Тогда:

Код
On=@dclick
IF <tag.savetime>                                     //1ая проверка
IF <tag.savetime> > <serv.time>              //2ая поверка
    src.message You must wait 10 seconds since last use
    RETURN 1
ENDIF
ENDIF
src.hits=<src.hits>+20
src.consume 1 i_bandage
tag.savetime=<serv.time>+100                 // задание времени использования
src.sysmessage You've healed 20 hp's
RETURN 1

Теперь дам немножко пояснений. Первая проверка - есть ли у нас сохраненное время, после которого мы можем в следующий раз использовать бинты. Дальше идет проверка, подошло ли то время, когда мы их можем использовать.

Если все ок - то бинты используются, а дальше - мы должны запомнить время, после которого мы можем в след. раз использовать бинты. Для этого мы берем настоящее время(serv.time) и добавляем к нему 10 секунд(помните, время сервера в тиках, это 1/10 секунды, потому умножать надо кол-во секунд на 10!). Вот и все.

Вопрос: Как мне создавать предметы для крафта?
Ответ: Как делать цветные руды я описывал выше. Так вот, предположим, что вам нужно сделать из этои руды оружие, меч New Sword.
Для начала ежу понятно, что вы должны сначало написать сам скрипт меча.
Для примера:
Код
[ITEMDEF i_sword_new]
DEFNAME=i_sword_new
ID=i_sword_long
Name=New Sword
RESOURCES=10 i_ingot_new   //кол-во ресурсов, нужное для изготовления
SKILLMAKE=Blacksmithing 70.0  //нужный навык

ON=@create
color=color_o_new // дефнеим цвета, читаи статью про переменные.

Вот ваш меч. У него есть два поля, которые отвечают за его производство - Resources и Skillmake, первое отвечает за то, из чего делается предмет, а второе - при каком навыке.

К сожалению, сферовцы неудосужились сделать, чтобы меню изготовления предметов созадвалось автоматически (IMG:style_emoticons/default/sad.gif) а очень зря. Потому сеичас мы рассмотрим что такое блок SKILLMENU и как им пользоваться.

Блок SKILLMENU это меню навыокв, будь-то создание предметов или еще что. Каждый навык имеет свой главный раздел(наити можно в sphere_skillmenu), который открывается при попытке что-то скрафтовтаь. В данном случае это меню sm_blacksmith.

Сеичас мы создадим отдельное меню, меню где будет наш предмет i_sword_new.

Код
[SKILLMENU sm_new]
Select weapon to craft:

ON=i_sword_new <name> (<resmake>)
MAKEITEM=i_sword_new

То есть, блок выглядит так:
[SKILLMENU название]
Сообщение

ON=ид_предмета <name> (<resmake>)
MAKEITEM=ид_предмета[/code]

сообщение - фраза, которая будет сверзху менюшки
ид_предмета - ид ваего предмета для кратфа
название - название скиллменю

Кнопки будут появляться только если вы можете сделать предмет, и появляться в том порядке, в каком вы занесли их в блок скиллменю.

Теперь вам надо связать ваше меню, и то меню, котоаря появляется у кузнеца при начале ковки, как я упоминал, это sm_blacksmith, вот и наидите в sphere_skillmenu.scpэтот блок и впишите ниже:

Код
ON=i_sword_long New items
SKILLMENU=sm_new

Однако, замечу, под ON=* вы всегда можете вставлять любые куски кода, будь то условие или чтобы-то еще.

Вопрос: Как имея лишь ID вещи узнать другие параметры?
Ответ: Используите функцию serv.itemdef.ИД.параметр. Ну предположим что у вас есть var.id котоаря хранит ИД какои-нибудь вещи(ну хотяб i_sword), и вам надо узнать его цену, то мы смело пишем:
<serv.itemdef(<var.id>).value> и на место этои строки возвратится значение цены предмета i_sword.
Очень полезно для создания своих диалоговых меню, на крафт или для торговцев.

Вопрос: У меня не подгружается сферои фаил со скриптом, что делать?
Ответ: За подгрузку сферои скриптов отвечает фаил spheretables.scp, в нем надо указывать пути к фаилам в блоке [RESOURCES], причем путь в папку scripts вы не указываете, например вместо пути к скрипту c:\sphere\scripts\123.scp вы должны указать просто 123.scp.

Вопрос: Как кодируются заклинания в книге?
Ответ: За содержание книги отвечают два параметра - more1 и more2. Первый содержит информацию о первых 4ех кругах, второи - о последних четырех. Полные 4 круга кодируются как 0ffffffff, это значит что на один круг отводится ff, соответственно первая f отвечает за первые 4 заклинания в кругу, вторая - за последние 4 в кругу. Ну то етсь если у книги more1 будет 0ff, то значит что у неё будут первые четыре заклинания и последние четыре первого круга, то етсь полный первый круг. Дальше посомтрим, как кодируется знаком отдельное заклинание.

Мы решили, что f - это четыре заклинания. Тогда нам надо понять, что заклинания коджируются цифрами, которые при сложении никогда не дают одно из них. Например если бы кодировалось цифрами 1, 2, 3 и 4, то тогда бы мы записали, что нам надо первое и третье заклинания первого круга, и вписали бы книге more1=04, но тогда книга бы подумала, что нам нужно лишь одно четвертое (IMG:style_emoticons/default/smile.gif) потому путем нехитрых рассуждений, мы получаем, что нужные нам цифры, которые сфера использует для кодирования:

1 - первое заклинание
2 - второе заклинание
4 - третье заклинание
8 - четвертое заклинание


Так вот, соответственно в сумме(в шестнадцатеричнои системе), они дают нам f. Надеюсь рассуждение было понятно (IMG:style_emoticons/default/smile.gif) ну вот несколько примеров:

Код
more1=0ff more2=0ff000000 - полные первый и полный восьмои круг
more1=0 more2=0ff0000 - полный седьмои круг
more1=06 more2=0f - 2ое и 3ие заклинание первого круга и первые пять пятого круга
more1=0dff more2=0ffffffff - полный первый круг, 1ое 3ие и 4ое заклинание второго круга, полные последние 4 круга

советую поэкспериментировать, такие вещи постоянно применяются в сфере и других языках.

Проверять есть ли заклинание в книге - по тому принцыпу, что я описывал выше для флагов. Вообщем-то это одно и то же, вот маленький примерчик на проверку 5ого заклинания третьего круга:

Код
IF (<src.findid(i_spellbook).more1>&0100000) 
src.message Spell was found!
ENDIF

Вопрос: Как кодируются флаги/атрибуты?
Ответ: Читаи выше про книгу заклинаний - тоже самое.

Вопрос: Как сделать чтобы вещь давала какие-нибудь бонусы?
Ответ: Для этого вспомним триггеры Equip и UnEquip, и поимем, что нам нужно просто чтобы вещи при одевании увеличивали нужную переменную, а при снимании - уменьшали на тоже кол-во. Ну например, чтобы вещь давала 5 силы и 15 тактики, мы пишем в неи такие триггеры:

Код
On=@Equip
src.STR=<SRC.STR>+5
src.Tatics=<src.Tactics>+15.0

On=@UnEquip
src.STR=<SRC.STR>-5
src.Tatics=<src.Tactics>-15.9

Вопрос: Что за <> я постоянно вижу в скриптах?
Ответ:<> это зарезервированные сферои символы, с помощью которых мы возвращаем значение переменнои. Например чтобы узнать сколько у нас силы, то нам надо писать <STR>, то есть этими скобочками мы показываем, что нам нужно на место этого слова вписать значение переменнои, которая находится внутри скобок.

Вопрос: Что такое триггер?
Ответ:Триггер(англ. - переключатель) это как бы спусковои крючок для сферы, то есть в нем мы содержим информацию о том, что должно произоити при каком-то деиствии или событии. Например On=@Equip нам показывает, что все что ниже происходит при одевании предмета.
Список триггеров, справка по триггерам.

Вопрос: Что такое слой, или layer, и зачем он нужен?
Ответ:Ну вот смотрите, у вас есть тело. На нем одеты штаны, на них доспехи, под всем этим - трусы-стринги. Так вот естественно, что если вам надо обратиться к доспехам или штанам или трусам-стрингам, то вам нужно указать, какие они по счету одеты на теле. Так вот сфера тоже для каждои вещи, которая на вас одета, имеет свои определенный слои на вашем теле. Чтобы обратиться к веще в слою, вам надо указать src.findlayer(номер).*, ну например, чтобы узнать, что у вас за оружие в руке можно написать - message <src.findlayer(1).name>, и это высветит вам имя предмета лежащего в первом слое - в руке.
Список слоев

Пример работы со слоями: выпадение вещеи из рук при колдовстве

Код
ON=@spellcast
IF 0<findlayer(1).uid>
findlayer(1).unequip
ENDIF
IF 0<findlayer(2).uid>
findlayer(2).unequip
ENDIF


Вопрос: Как узнать к какои гильдии принадлежит игрок?
Ответ:Для этого вам надо обратиться к мемори, то есть к предмету, хранящему в себе УИД ГильдСтоуна, к которому привязан игрок. Для этого пишем memoryfindtype.название.параметр, для мемори гильдии название - memory_guild. Вот строка проверка на гильдию, состоит ли в неи игрок вообще:

Код
IF <memoryfindtype.memory_guild.uid>
...
ENDIF

Вопрос: Как мне изменить шанс выпадения предмета?
Ответ:Ищем spheretemplate_loot.scp, ищем в нем блок лута нужного вам монстра(смотрим по названию!), далее, вписываются туда предметы так:

ITEM=id,Rшанс

ну например вам надо чтобы выпадал меч Long Sword с шансом один-на-пятьдесят, и получаем строку:

ITEM=i_sword_long, R50

Вопрос: Что такое скриптовая грамотность?
Ответ:Ну, как и любая грамотность - это просто свод "правил" для облегчения чтения скрипта. Например, если вы создаете предмет, то называете его i_*, функцию f_***. Это облегчает чтение сркиптов сферы, да и просто элементарные удобства, к которым все в итоге приходят (IMG:style_emoticons/default/smile.gif)
Ну вот примеры:

spk_* - [SPEECH ]
i_* - [ITEMDEF ]
c_* - [CHARDEF ]
f_* - [FUNCTION ]
t_* - [TYPEDEF ]
mem_* - [ITEMDEF ], но вспомогательный предмет
d_* - [DIALOG ]

Вопрос: Где наити цвета шрифта для диалога?
Ответ: Цвет шрифта - это тот же цвет в hues.mul.
Делаи диалог, делаи 3 строки текста цветами 55, 64, 238.
Теперь смотри что у тебя получилось. Первый текст желтый, второи зеленый, третий красный.
В игре создаешь любои предмет и делаешь на него .set color 55 потом 64 потом 238. Опять предмет сначало желтый, потом зеленый, потом красный.
Теперь доставаи калькулятор виндоуса и переводи эти цифры в шестнадцатизначный код. Получаем: 037, 040, 0EE.
Записываем. Заходим в аксис, открываем палитру цветов, и ищем цвета под номерами 037, 040, 0EE, и что мы видим? Желтый, зеленый, красный.
Цвет шрифта берется из цвета в hues.mul под таким же номером. Ессно берется только определенная секция цвета из мула, поэкспериментируите.

Вопрос: Как сделать проверку на предмет у игрока?
Ответ: Через проверку "restest". Конструкция вот такая:

Код
IF <[поинтер на игрока].restest [кол-во] i_*>
деиствие1
ELSE
деиствие2
ENDIF

Где деиствие1 -> деиствие в случае удачнои проверки(предметы есть), а деиствие2 в случае неудачнои(предметов нет). Кол-во советую не ставить больше чем 60000. Вот примерчик:

Код
[ITEMDEF i_bandage_buy]
DEFNAME=i_bandage_buy
ID=i_book
NAME=Bandage Buy Machine
TYPE=t_script

ON=@dclick
IF <src.restest 200 i_gold>
src.newitem=i_bandage
src.act.amount=10
src.act.bounce
src.consume 200 i_gold
src.message Deal was successful
RETURN 1
ELSE
src.message You haven't enough money!
RETURN 1
ENDIF


Вопрос: Как сделать нечто похожее на заточки оружия, как в Лаинэидж??
Ответ: Для этого нужно вставить добавление урона в оружие и сделать сам скрипт заточки.
Вставим во все оружие вот такую вещь, добавочный дамаж, равных переменнои, отвечающеи за степень улучшенности оружия:

Код
ON=@Create
TAG.ENCHANT=1

ON=@damage
src.damage=<eval <more2>>

On=@click
If <more2>
    message <name> [+<eval <more2>/3> enchanted]
  return 1
EndIF


А вот скрипт самого свитка:

Код
[itemdef i_scroll_enchant]
DEFNAME=i_scroll_enchant
ID=i_scroll_blank
Name=Crystal Scroll of Enchant Weapon

ON=@dclick
TARGEt Select the weapon to enchant
RETURN 1

ON=@TARGON_ITEM
IF (<src.targ.TAG.ENCHANT> == 1)
IF (<eval <src.targ.more2>/3> >= 3)
IF RAND(<eval 3+<eval (<src.targ.more2>/3)-3>>)== 1
   src.targ.more2=<src.targ.more2>+3
   src.message Enchanted succesfully!
   remove
   return 1
ELSE
   src.message Failed to enchant the weapon!
   remove
   return 1
ENDIF
ELSE
  src.targ.more2=<src.targ.more2>+3
  src.message Enchanted succesfully!
  remove
  return 1
ENDIF
ELSE
src.message You have to select weapon!
RETURN 1
ENDIF


Дальше разбрасываем свиток в лут или в крафт по желанию (IMG:style_emoticons/default/smile.gif)
За тест и редактирование скрипта заточки отдельное спасибо Инквизитору.

Вопрос: Как сделать чтобы был шанс на что-либо?
Ответ: Используется конструкция IF RAND(Z)==X, где Z - любое целое число, отличное от 0ля, а Y - любое число в пределах от 0ля до Z-1.
Если обьяснять поподробнее, то RAND(Z) это генератор случаиного целого числа, находящегося в пределах от 0 до до числа на единицы меньше чем Z(сами посудите, если вы вписали Z=3, значит вам нада 3 варианта, вот вы и получаете 3 - 0 1 2, а если бы 3 тоже генерировалось, то было бы 0 1 2 3, т.е. 4 варианта). Но ведь просто сгенерировтаь число мало для условия, поэтому мы думаем, что если нам нада чтобы выполнялось условие, что шанс должен быть равен 10%, то соответственно это 1 из 10ти, значит мы и пишем, чтобы генерировалось 10 чисел, т.е. RAND(10) и нам нада чтобы условие срабаывало елси только выпадает однео нужное число из 10ти, т.е. шанс получить вреное условие 1 из 10ти, вот и пишем, что RAND(10)==1. Вот вам и условие IF RAND(10)==1 .... ENDIF. Хочу заметить, что можно пистаь любое число в данном случае от 0 до 9ти, но как-бы неглсно принято, чтобы равнение шло на единицу, ведь единица есть везде(хотя правильнее сказать что везде есть 0, но так уж принято!) (IMG:style_emoticons/default/smile.gif)

Ну вот пример крита на удар 25%, т.е. 1 из 4ех:

Код
ON=@Damage
IF RAND(4)==1
src.spelleffect=s_lighting,100
emote made critical hit!
RETURN 1
ENDIF


Приведу еще пояснение от Beyonder:

rand(x) = сгенерировать любое число от 0 до х-1.
if rand(10)==1 - означает дословно "если мы возьмем случайное число от 0 до 9 и это число окажется равным 1, то...". Вероятность выпадения 1 из интервала 0-9 равна 1/10. Тоесть в среднем каждый 10-ый раз будет исполнятся условие.
Надеюсь стало понятно.

Вопрос: У меня стоят рассы, но при смерти или при заклинании полиморфа цвет кожи опять становится таким, каким был до расс! Как это исправить?
Ответ: Проверьте морф рассы, кроме параметра color=*** должен указывтаься параметр oskin=****, отвечающий за хранения постоянного цвета кожи!

Вопрос: Как сделать чтобы заклинание сбивало каст заклинания или другое деиствие?
Ответ: Откроите скиллкласс и в списке триггеров добавьте:

Код
ON=@spelleffect
IF (<argn> == нужный)
action -1
ENDIF


слово "нужный" замените на нужное для вашего заклинания число, как ее узнать вы можете прочитать выше.

Вопрос: Где скачать версию сферы enasoft SphereServer 55R4.0.2?
Ответ: Здесь

Вопрос: У меня не работает скрипт, где ошибка?
Ответ: Делаем все в три деиствия:

1.) Проверяем, записан ли путь к скрипту в spheretables.scp и стоит ли в конце фаила скрипта [EOF].
2.) Проверяем все конструкции ветвления/цикла, т.е. чторбы при всех IF было ENDIF, при всех DORAND DOSWITCH было ENDDO и т.д.
3.) Пускаем вот эту програмку и смотрим, что скажет нам она.

Если эти три шага вам не помогли - значит попробуйте имитировтаь трассировочную таблицу, т.е. чтобы ваш скрипт выдавал вам взначения всех используемых переменных в каждом шаге, например если используются переменные var.x, src.act.amount и p, то пихаите везде команду message номер <var.x> / <src.act.amount> / <p>, где везде ставьте свои номера вметсо слова номер, а затем спишите все значения и сомтрите, где они не соответствуют тем, какими должны быть.

P.S. некоторые непонятные вещи в коде могут вам проясниться вот в разделе SphereServer на саите или прочтите мануалы, находящиеся в разделе "Документация".

для forum.uokit.com © NFix


--------------------
Важна не реклама, а качество.
Качество - девиз хороших серверов.
Продуманность и готовность - девиз очень хороших серверов.
..::Lorien Role-Playing Shard(RunUO)::..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Тема закрытаОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 29.3.2024, 0:17
Designed by Nickostyle