Добавлен Sergey105
Возникла такая проблема , я сделал новую функцию по нанесению урона с учетом своих нужд в неё добавил параметр который если берет аргумент true то при уроне могут срабатывать все предметы которые есть (то есть пассивные эффекты такие как оглушение , крит , сплеш и многие другие ) но таких предметов допустим много . Вот не могу разобраться как сделать архитектуру системы обработки предметов которые есть у юнита если они сработали то дали бонус модификации .Функция урона применяется и для авто-атаки .
Если что-то не понятно спрашивайте
Пояснять если что в vjass или cjass
Если что-то не понятно спрашивайте
Пояснять если что в vjass или cjass
Принятый ответ
ledoed, давно не обращал внимание на мой вопрос не закрытый решил написать ledoed, ты меня все равно не понял ну тут моя вина все способности которые я пишу не как не связаны с стандартными только если как пустышка . Допустим есть предмет который позволяет нанести крит урон но внутри этого предмета нету не каких способностей я просто привязываю к предмету триггер со скилом (крита ) и если при атаке у юнита есть предмет этот то с шансом N срабатывает функция триггера
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Sergey105
private function Crit1 takes unit S, unit T, real D_s returns nothing
local structure_unit Struct_Source = 0
local real CC = 25.00
set Struct_Source = U2I(S)
set CC = CC/const_initia_divider
if (RRB(CC*Struct_Source.s_crit_c_divider)) then
if (Struct_Source.s_crit_d == .0) then
set Struct_Source.s_crit_c_divider = 0
set Struct_Source.s_crit_d = D_s*2.25
endif
endif
endfunction
*****************
private function FiltCritical takes nothing returns boolean
return false
endfunction
if (IdItem == 'frgd') then
call Crit1(c,t,d)
elseif (IdItem == 'srbd' )//and c != GetSpellAbilityUnit())
call Crit2(c,t,d)
endif
endfunction
///////
---------------------------------------------------------------
public function AddDamageSubject takes unit Ac, unit At, real Ad returns nothing
local integer i = 0
local item indexItem = null
local structure_unit Struct_Source = 0
set Struct_Source = U2I(Ac)
set Struct_Source.s_crit_c_divider = Struct_Source.s_crit_c_divider+1
loop
set indexItem = UnitItemInSlot(Ac, i)
if (indexItem != null) then
call activeItem(GetItemTypeId(indexItem),Ac,At,Ad)
endif
set i = i + 1
exitwhen i >= 6
endloop
set indexItem = null
set Ac=null
set At=null
set Ad=.0
endfunction
подобие этого липил но это фигня
сейчас же перешел полностью на cjass синтесис
и хочу нормальную построить архитектуру вот застрял на предметах
не могу понять как мне обрабатывать все предметы носимые героем при атаке или касте спелов
где "u"-твой юнит
"i"- номер слота
"it"-переменная типа item
ну запускать активки не советую тем юнитом на котором эта система лучше сделай дамиков которые это всё пулять будут
а активировать итемы функциями "UnitUseItem,UnitUseItemTarget,UnitUseItemTarget" и сделай если нужно в способностях итемов одинаковый ид приказа
но не активные
ledoed, что мне эти функции дадут ?
я предметами особо не занимался только способности делал
ledoed, это типо проверка есть ли предмет у юнита ?
Отредактирован ledoed
активный даёшь дамику а он активирует