Система LootDrop от автора FkoFF, так же известного как PeeKay. Суть системы: добавляет юнитам нестандартные дроплисты.
Импорт:
Шаг 1: Создайте в карте, в которую будете импортировать наработку переменные хэш-таблицы c именем LootS и LootSc; они потребуются для корректной работы системы. Шаг 2: Скопируйте содержимое Custom Code (самого верхнего триггера, с иконкой свитка и названием карты) себе в карту. Шаг 2: В любой из триггеров инициализации карты добавьте строчку "call LootSysInitial()", без ковычек. Шаг 3: Скопируйте себе в карту триггер LootUnitDie. Шаг 4: Создайте базу данных для своей карты. Подробнее чуть ниже. Шаг 5: Наслаждайтесь безбажной работой системы.
Code
function LootSysInitial takes nothing returns nothing set udg_LootS = InitHashtable() set udg_LootSc = InitHashtable() endfunction
function LootAddUnit takes integer unitcode, integer itemcode, integer chance returns nothing local integer int=LoadInteger(udg_LootS,unitcode,0) if int > 0 then set int=int+1 else set int=1 endif if chance > 100 then set chance = 100 elseif chance < 0 then set chance = 1 endif call SaveInteger(udg_LootS,unitcode,0,int) call SaveInteger(udg_LootS,unitcode,int,itemcode) call SaveInteger(udg_LootSc,unitcode,int,chance) endfunction
function LootAddUnitList takes integer source, integer target returns nothing local integer forloop = 1 local integer looplimit = LoadInteger(udg_LootS,source,0)
function LootFromUnit takes unit u returns nothing local integer unitcode = GetUnitTypeId(u) local integer randint =0 local integer l = 1 local real x=GetWidgetX(u) local real y=GetWidgetY(u) local integer howmuchitems =LoadInteger(udg_LootSc,unitcode,0)
if howmuchitems < 0 then set howmuchitems = 1 elseif howmuchitems > 10 then set howmuchitems = 10 endif
loop exitwhen l>howmuchitems set randint =GetRandomInt(1,LoadInteger(udg_LootS,unitcode,0))
if GetRandomInt(1,100)<LoadInteger(udg_LootSc,unitcode,randint) then call CreateItem(LoadInteger(udg_LootS,unitcode,randint),x,y) set l=l+1 endif endloop