Всем привет!
Недавно начал оптимизировать все что до этого написал
И сейчас возникла необходимость Сокращать триггеры
Недавно начал оптимизировать все что до этого написал
И сейчас возникла необходимость Сокращать триггеры
есть триггеры которые делают почти одно и тоже
вот пример
вот пример
function Trig__Conditions takes nothing returns boolean
if(not(UnitHasItemOfTypeBJ(GetManipulatingUnit(),0x6F646566)==true))then
return false
endif
if(not(UnitHasItemOfTypeBJ(GetManipulatingUnit(),0x6F736C6F)==true))then
return false
endif
if(not(UnitHasItemOfTypeBJ(GetManipulatingUnit(),0x6F666972)==true))then
return false
endif
if(not(UnitHasItemOfTypeBJ(GetManipulatingUnit(),0x6F636F72)==true))then
return false
endif
if(not(UnitHasItemOfTypeBJ(GetManipulatingUnit(),0x6F76656E)==true))then
return false
endif
if(not(UnitHasItemOfTypeBJ(GetManipulatingUnit(),0x4930304C)==true))then
return false
endif
return true
endfunction
это условие которое проверяет если все предметы которые нужны есть у героя
его и хочу Оптимизировать
приглянулся этот пример
function tt_Cond takes unit u returns boolean
return(LoadBoolean(H,1,StringHash(("A"))))
endfunction
практически ничем не отличается от возвращаемого значения т.е True или False
но как превратить функцию которая возвращает boolean
чтобы она проверяла все 5 параметров и возвращала True когда у героя будут эти предметы?
чтобы она проверяла все 5 параметров и возвращала True когда у героя будут эти предметы?
как лучше использовать
return(LoadBoolean(H,1,StringHash(("A"))))
чтобы она проверяла 5 параметров?
или, как оптимизировать вот это?
function F_Remove_Items_Cond takes unit u, integer id1, integer id2, integer id3, integer id4, integer id5, integer id6 returns boolean
if(id1 == 0) then
else // != null
if (F_GetInventoryIndex(u, Item[id1]) > 0) then
else
return false
endif
endif
if(id2 == 0) then
else
if (F_GetInventoryIndex(u, Item[id2]) > 0) then
else
return false
endif
endif
if(id3 == 0) then
else
if (F_GetInventoryIndex(u, Item[id3]) > 0) then
else
return false
endif
endif
if(id4 == 0) then
else
if (F_GetInventoryIndex(u, Item[id4]) > 0) then
else
return false
endif
endif
if(id5 == 0) then
else
if (F_GetInventoryIndex(u, Item[id5]) > 0) then
else
return false
endif
endif
if(id6 == 0) then
else
if (F_GetInventoryIndex(u, Item[id6]) > 0) then
else
return false
endif
endif
return true
endfunction
Отредактирован ScorpioT1000
Отредактирован SoulRazor
у меня тоже самое реализовано но я использую Функции, причем несколько, этого и пытаюсь избежать
Отредактирован EugeAl
Отредактирован EugeAl
Отредактирован Makeba
Раз уж мы всем хгмом делаем наработку для крафтов, то вкачусь тожеВ луа я бы сделал так. Ну, если все предметы разные, без повторений.Отредактирован Centyrion
Изящно