UoKit.com Форумы > Ultima Online : Dev > Sphere Server > Sphere Server 0.56 - Sphere X
Страницы: 1, 2
Moll Dayer
Всем привет !
Помогите пожалуйста со скриптом на армор.

Вот часть скрипта, которая на ту или иную шмотку дает рандомный скилл из перечисленных (при крафте).

Код
ON=@Create
    Color=Color_o_darksteel
    HitPoints=50
        TAG.SKILL=<hval {SKILL_WRESTLING 1 SKILL_SWORDSMANSHIP 1 SKILL_FENCING 1 SKILL_PARRYING 1 SKILL_MACEFIGHTING 1}>
ON=@Equip
    SRC.MAXHITS +=3
        try SRC.<SERV.SKILL.<TAG0.SKILL>.KEY>=<hval <SRC.<SERV.SKILL.<TAG0.SKILL>.KEY>>+1>

ON=@UnEquip
    SRC.MAXHITS -=3
        try SRC.<SERV.SKILL.<TAG0.SKILL>.KEY>=<hval <SRC.<SERV.SKILL.<TAG0.SKILL>.KEY>>-1>


Пытаюсь сделать подобное на модификаторы такие как char_spell_critical_damage, char_speed_damage, modfizdamage а так же на статы STR INT DEX. Но ничего не выходит, так как эти модификаторы не являются скиллом. Подскажите, как правильно прописать, чтоб на создаваемую вещь, рандомно вешался один из модификаторов и статов.

Заранее спасибо !
Вверх
Sirocco
try SRC.<TAG0.SKILL>
Вверх
Moll Dayer
Цитата(Sirocco @ 1.12.2021, 17:11)

try SRC.<TAG0.SKILL>

Спасибо, но такой вариант тож к сожалению не работает
Вверх
d`ArcZeal
Код

[ITEMDEF I_TROPICAL_BRACELET]
ID=I_BRACELET_GOLD
NAME=Tropical bracelet
VALUE=350

ON=@CREATE
COLOR=0B7E
TAG.SKILLBONUS=250
TAG.SKILLID=Wrestling


На игрока ивент:
Код

ON=@ITEMEQUIP
IF !(<ACT.DTAG0.SKILLBONUS>==0) && !(<ISEMPTY <ACT.TAG.SKILLID>>)
SRC.<ACT.TAG0.SKILLID>=<EVAL (<SRC.<ACT.TAG0.SKILLID>>+<ACT.TAG0.SKILLBONUS>)>
ENDIF


Код

ON=@ITEMUNEQUIP
IF !(<ACT.DTAG0.SKILLBONUS>==0) && !(<ISEMPTY <ACT.TAG.SKILLID>>)
SRC.<ACT.TAG0.SKILLID>=<EVAL <SRC.<ACT.TAG0.SKILLID>>-<ACT.TAG0.SKILLBONUS>>
ENDIF

Вверх
Eternium
Насколько я понимаю автор просил реализовать (бонусы которых нет в дефолт сфере)
Перечисляя пример выше: char_spell_critical_damage, char_speed_damage, modfizdamage
Разумеется выше скрипт что он для примера скинул не будет работать,
Нужно:

1) Создать Массив (коллекцию) “особых умений”
2) Сделать сценарий с событиями этих умений и взаимодействия с ними
3) Повесить события (прописать в сфере)
4) Уже потом написать метод (функцию) (рандома или чего он там желает) и ее привязать на Тригер экипировки и снятия
PS: Это один из вариантов, уверен что есть и более простые решения.
Вверх
Sirocco
Цитата(Moll Dayer @ 3.12.2021, 0:37)

Спасибо, но такой вариант тож к сожалению не работает

Вот только мне не рассказывайте...

TAG.SKILL = STR

Вверх
Moll Dayer
Цитата(d`ArcZeal @ 4.12.2021, 10:56)

Код

[ITEMDEF I_TROPICAL_BRACELET]
ID=I_BRACELET_GOLD
NAME=Tropical bracelet
VALUE=350

ON=@CREATE
COLOR=0B7E
TAG.SKILLBONUS=250
TAG.SKILLID=Wrestling


На игрока ивент:
Код

ON=@ITEMEQUIP
IF !(<ACT.DTAG0.SKILLBONUS>==0) && !(<ISEMPTY <ACT.TAG.SKILLID>>)
SRC.<ACT.TAG0.SKILLID>=<EVAL (<SRC.<ACT.TAG0.SKILLID>>+<ACT.TAG0.SKILLBONUS>)>
ENDIF


Код

ON=@ITEMUNEQUIP
IF !(<ACT.DTAG0.SKILLBONUS>==0) && !(<ISEMPTY <ACT.TAG.SKILLID>>)
SRC.<ACT.TAG0.SKILLID>=<EVAL <SRC.<ACT.TAG0.SKILLID>>-<ACT.TAG0.SKILLBONUS>>
ENDIF



Я наверно не правильно изложил мысль, так как это не совсем то. Но все равно спасибо !


Цитата(Eternium @ 4.12.2021, 15:14)

Насколько я понимаю автор просил реализовать (бонусы которых нет в дефолт сфере)
Перечисляя пример выше: char_spell_critical_damage, char_speed_damage, modfizdamage
Разумеется выше скрипт что он для примера скинул не будет работать,
Нужно:

1) Создать Массив (коллекцию) “особых умений”
2) Сделать сценарий с событиями этих умений и взаимодействия с ними
3) Повесить события (прописать в сфере)
4) Уже потом написать метод (функцию) (рандома или чего он там желает) и ее привязать на Тригер экипировки и снятия
PS: Это один из вариантов, уверен что есть и более простые решения.


Модификаторы char_spell_critical_damage, char_speed_damage, modfizdamage и другие прописаны в сфере и есть на других вещах. Их можно прописать напрямую, но как сделать чтоб рандомно выдавал один из этих модификаторов, пока не могу понять...

Цитата(Sirocco @ 4.12.2021, 15:59)

Вот только мне не рассказывайте...

TAG.SKILL = STR


Прописывал на сам item, прописывал на ON=@Create - эффекта нет.
Можно конечно прописать на ON=@EQUIP / ON=@UNEQUIP через scr, но в таком случае рандом не слепишь. Возможно я что-то не то делаю.

Вверх
d`ArcZeal
Код

[ITEMDEF I_FORCE_FEMALE_PLATEMAIL_CHEST]
NAME=Force female platemail chest
ID=I_ARMOR_FEMALE_PLATE
ARMOR=FORCE_PLATE_ARMOR_AR
VALUE=100

ON=@CREATE
FORCE_ARMOR_GENERATOR


Код

[FUNCTION FORCE_ARMOR_GENERATOR]
HITPOINTS=FORCE_ARMOR_HITPOINTS
COLOR=COLOR_O_FORCE

TAG.EXPERIENCEBONUS=<EVAL {1 4 2 3 3 2 4 1}>

TAG.STATBONUS=<EVAL {1 10 2 9 3 8 4 7 5 6 6 5 7 4 8 3 9 2 10 1}>
DORAND 3
TAG.BONUS_STAT=Str
TAG.BONUS_STAT=Dex
TAG.BONUS_STAT=Int
ENDDO

Не понятно, почему у тебя не выходит. По этому примеру и примеру выше можно прописать любые бонусы.

P.S. char_spell_critical_damage, char_speed_damage, modfizdamage не использовал ранее.
Вверх
Moll Dayer
Цитата(d`ArcZeal @ 6.12.2021, 8:10)


Не понятно, почему у тебя не выходит. По этому примеру и примеру выше можно прописать любые бонусы.

P.S. char_spell_critical_damage, char_speed_damage, modfizdamage не использовал ранее.


Спасибо ! Уже больше похоже на правду. Во всяком случае сфера не плюется при создании вещей.
Но почему-то при одевании, вещь + не дает.

Код


[FUNCTION DARKSTEEL_ARMOR_GENERATOR]
HITPOINTS=50
COLOR=COLOR_O_DARKSTEEL

TAG.EXPERIENCEBONUS=<EVAL {1 4 2 3 3 2 4 1}>

TAG.STATBONUS=<EVAL {1 10 2 9 3 8 4 7 5 6 6 5 7 4 8 3 9 2 10 1}>
DORAND 3
TAG.BONUS_STAT=Str
TAG.BONUS_STAT=Dex
TAG.BONUS_STAT=Int
ENDDO



Код

[ITEMDEF 04577]
DefName=i_DARKSTEEL_FEMALE_PLATEMAIL
Name=Darksteel Female Platemail Chest
Id=i_Armor_female_plate
Armor=35
ReqStr=15
Weight=4
Value=47
CATEGORY=Provisions - Armor - Colored
SUBSECTION=Darksteel
DESCRIPTION=Female Platemail
Resources=22 i_ingot_darksteel
SkillMake=BLACKSMITHING 40.0

ON=@Create
        DARKSTEEL_ARMOR_GENERATOR


То есть, функция работает но почему не дает рандомный + к статам не пойму...
Вверх
d`ArcZeal
Чтобы вот это работало:
Код

TAG.STATBONUS=<EVAL {1 10 2 9 3 8 4 7 5 6 6 5 7 4 8 3 9 2 10 1}>
DORAND 3
TAG.BONUS_STAT=Str
TAG.BONUS_STAT=Dex
TAG.BONUS_STAT=Int
ENDDO


Ивент на персонажа:
Код

ON=@ITEMUNEQUIP
IF !(<ACT.DTAG0.STATBONUS>==0) && !(<ISEMPTY <ACT.TAG.BONUS_STAT>>)
SRC.<ACT.TAG0.BONUS_STAT>=<EVAL <SRC.<ACT.TAG.BONUS_STAT>>+-<ACT.DTAG0.BONUS_STAT>>
ENDIF

ON=@ITEMEQUIP
IF (<ACT.DTAG0.STATBONUS> > 0)
    IF !(<ISEMPTY <ACT.TAG.BONUS_STAT>>)
    SRC.<ACT.TAG0.BONUS_STAT>=<EVAL (<SRC.<ACT.TAG.BONUS_STAT>>+<ACT.DTAG0.STATBONUS>)>
    ENDIF
ENDIF

TAG название ты можешь дать какой удобно. Это не дефолт система.
Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.