[DUОS] | Дата: Вторник, 08 Июня 2010, 15:34:15 | Сообщение # 1 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Code function ItemInUnitSlot takes integer i, unit u returns integer local integer id = GetItemTypeId(UnitItemInSlot(u,i)) if id == GetItemTypeId(UnitItemInSlot(u,0)) then return 1 elseif id == GetItemTypeId(UnitItemInSlot(u,1)) then return 2 elseif id == GetItemTypeId(UnitItemInSlot(u,2)) then return 3 elseif id == GetItemTypeId(UnitItemInSlot(u,3)) then return 4 elseif id == GetItemTypeId(UnitItemInSlot(u,4)) then return 5 elseif id == GetItemTypeId(UnitItemInSlot(u,5)) then return 6 endif return 0 endfunction
function IsUnitItemSlotFilled takes unit hero, integer slot returns boolean if UnitItemInSlot(hero,slot) != null then return true else return false endif endfunction
function IsUnitItemSlotEmpty takes unit hero, integer slot returns boolean return IsUnitItemSlotFilled(hero,slot) == false endfunction
function UnitGetItemSlotsRemaining takes unit hero returns integer local integer i = 0 local integer count = 0 loop exitwhen i > 6 if UnitItemInSlot(hero,i) == null then set count = count + 1 endif set i = i + 1 endloop return count endfunction
function GetItemSlotsFilled takes unit hero returns integer local integer i = 0 local integer count = 0 loop exitwhen i > 6 if UnitItemInSlot(hero,i) != null then set count = count + 1 endif set i = i + 1 endloop return count endfunction
function GetItemTypeCountUnit takes integer itemID, unit hero returns integer local integer i = 0 local integer count = 0 loop exitwhen i > 6 if GetItemTypeId(UnitItemInSlot(hero,i)) == itemID then set count = count + 1 endif set i = i + 1 endloop return count endfunction
function CombineSameItemTypeItems takes unit hero, integer howMany, integer itemID, integer targetItemID returns nothing local integer i = 0 local integer count = GetItemTypeCountUnit(itemID,hero) if count != howMany then // If items needed aren't enough for the combination, // forget about it. return else // Combine items. loop exitwhen i > 6 if GetItemTypeId(UnitItemInSlot(hero,i)) == itemID then call RemoveItem(UnitItemInSlot(hero,i)) endif set i = i + 1 endloop call UnitAddItem(hero,CreateItem(targetItemID,GetUnitX(hero),GetUnitY(hero))) endif endfunction
function Recipe2 takes unit hero, integer item1ID, integer item2ID, integer targetItemID returns nothing if item1ID == item2ID then call CombineSameItemTypeItems(hero,2,item1ID,targetItemID) else call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item1ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item2ID,hero) - 1)) call UnitAddItem(hero,CreateItem(targetItemID,GetUnitX(hero),GetUnitY(hero))) endif endfunction
function Recipe3 takes unit hero, integer item1ID, integer item2ID, integer item3ID, integer targetItemID returns nothing if item1ID == item2ID == item3ID then call CombineSameItemTypeItems(hero,3,item1ID,targetItemID) else call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item1ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item2ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item3ID,hero) - 1)) call UnitAddItem(hero,CreateItem(targetItemID,GetUnitX(hero),GetUnitY(hero))) endif endfunction
function Recipe4 takes unit hero, integer item1ID, integer item2ID, integer item3ID, integer item4ID, integer targetItemID returns nothing if item1ID == item2ID == item3ID == item4ID then call CombineSameItemTypeItems(hero,4,item1ID,targetItemID) else call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item1ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item2ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item3ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item4ID,hero) - 1)) call UnitAddItem(hero,CreateItem(targetItemID,GetUnitX(hero),GetUnitY(hero))) endif endfunction
function Recipe5 takes unit hero, integer item1ID, integer item2ID, integer item3ID, integer item4ID, integer item5ID, integer targetItemID returns nothing if item1ID == item2ID == item3ID == item4ID == item5ID then call CombineSameItemTypeItems(hero,5,item1ID,targetItemID) else call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item1ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item2ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item3ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item4ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item5ID,hero) - 1)) call UnitAddItem(hero,CreateItem(targetItemID,GetUnitX(hero),GetUnitY(hero))) endif endfunction
function Recipe6 takes unit hero, integer item1ID, integer item2ID, integer item3ID, integer item4ID, integer item5ID, integer item6ID, integer targetItemID returns nothing if item1ID == item2ID == item3ID == item4ID == item5ID == item6ID then call CombineSameItemTypeItems(hero,5,item1ID,targetItemID) else call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item1ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item2ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item3ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item4ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item5ID,hero) - 1)) call RemoveItem(UnitItemInSlot(hero,ItemInUnitSlot(item6ID,hero) - 1)) call UnitAddItem(hero,CreateItem(targetItemID,GetUnitX(hero),GetUnitY(hero))) endif endfunction Библиотека Jass-функций для работы с предметами и их скрещиванием. Умеет делать следующее: - Подсчёт предметов одного типа у героя. - Скрещивание n одинаковых предметов у героя. - Скрещивание предметов разных типов в определённый. - Определение, заполнен или свободен слот. Оцениваем, критикуем, комментим.
|
|
|
|
windrunner | Дата: Вторник, 08 Июня 2010, 16:46:43 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
| мб вместо того,чтобы ядро оада выкладывать по отдельности мб открытый оад выложишь?=) Добавлено (08-06-2010, 16:44) ---------------------------------------------
Quote (MaSer) Посмотрел первую функцию, разочаровался и вышел из темы. а ты бы как предложил?Добавлено (08-06-2010, 16:44) --------------------------------------------- Хотя там лучше циклом,чем так Добавлено (08-06-2010, 16:46) ---------------------------------------------
Quote (|DUОS|) function IsUnitItemSlotEmpty takes unit hero, integer slot returns boolean return IsUnitItemSlotFilled(hero,slot) == false endfunction бж разводим да?=)
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
|
|
|
|