Перечитай описание и еще раз поправь все, про удар чака ты(см. выше мое сообщение), видимо, не читал
Где ты подчеркнул прямую связь с DotA Allstars?
...мда... Думал скрины как скрины, а тут барабан 500х500
Ты так не уважаешь хгмовцев, что хочешь чтобы такое было на главной?)
Он неверно тестил, тестируют при выполнении n запросов
дня может три уже хотел написать эту функцию, писал ее не для использования, хотел просто увидеть какого она будет масштаба, кстати, думал она будет меньше
функция из 161 строки
сам тест проводил так как думал она себя хорошо покажет, результат так то уныл, но функцию можно использовать)
Самая быстрая функция расчета числа однотипных предметов в шестислотном инвентаре.
работа через (GetItemTypeId(UnitItemInSlot(u, slot ))== typeId))
Ошибок нет, написано под перенасыщением мозга кровью для толстых алгоритмов дабы снизить затраты ресурсов машины.
Слабым не изучать
Возможен всплеск неконтролируемой агрессии.
function
function CountItemInInventory takes unit u, integer a returns integer
if GetItemTypeId(UnitItemInSlot(u,0))==a then
if GetItemTypeId(UnitItemInSlot(u,1))==a then
if GetItemTypeId(UnitItemInSlot(u,2))==a then
if GetItemTypeId(UnitItemInSlot(u,3))==a then
if GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 6
endif
return 5
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 5
endif
return 4
elseif GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 5
endif
return 4
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 4
endif
return 3
elseif GetItemTypeId(UnitItemInSlot(u,3))==a then
if GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 5
endif
return 4
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 4
endif
return 3
elseif GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 4
endif
return 3
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 3
endif
return 2
elseif GetItemTypeId(UnitItemInSlot(u,2))==a then
if GetItemTypeId(UnitItemInSlot(u,3))==a then
if GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 5
endif
return 4
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 4
endif
return 3
elseif GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 4
endif
return 3
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 3
endif
return 2
elseif GetItemTypeId(UnitItemInSlot(u,3))==a then
if GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 4
endif
return 3
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 3
endif
return 2
elseif GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 3
endif
return 2
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 2
endif
return 1
elseif GetItemTypeId(UnitItemInSlot(u,1))==a then
if GetItemTypeId(UnitItemInSlot(u,2))==a then
if GetItemTypeId(UnitItemInSlot(u,3))==a then
if GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 5
endif
return 4
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 4
endif
return 3
elseif GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 4
endif
return 3
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 3
endif
return 2
elseif GetItemTypeId(UnitItemInSlot(u,3))==a then
if GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 4
endif
return 3
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 3
endif
return 2
elseif GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 3
endif
return 2
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 2
endif
return 1
elseif GetItemTypeId(UnitItemInSlot(u,2))==a then
if GetItemTypeId(UnitItemInSlot(u,3))==a then
if GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 4
endif
return 3
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 3
endif
return 2
elseif GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 3
endif
return 2
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 2
endif
return 1
elseif GetItemTypeId(UnitItemInSlot(u,3))==a then
if GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 3
endif
return 2
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 2
endif
return 1
elseif GetItemTypeId(UnitItemInSlot(u,4))==a then
if GetItemTypeId(UnitItemInSlot(u,5))==a then
return 2
endif
return 1
elseif GetItemTypeId(UnitItemInSlot(u,5))==a then
return 1
endif
return 0
endfunction
Результаты теста функции на скорость (Warcraft 1.24e):
Тела участников:
Function with loop
...
local integer b = 0
local integer c = 0
loop
if GetItemTypeId(UnitItemInSlot(u,b))==a then
set c = c + 1
endif
set b = b + 1
exitwhen b > 5
endloop
return c
...
Function without loop
...
local integer c
if GetItemTypeId(UnitItemInSlot(u,0))==a then
set c = 1
else
set c = 0
endif
if GetItemTypeId(UnitItemInSlot(u,1))==a then
set c = c + 1
endif
if GetItemTypeId(UnitItemInSlot(u,2))==a then
set c = c + 1
endif
if GetItemTypeId(UnitItemInSlot(u,3))==a then
set c = c + 1
endif
if GetItemTypeId(UnitItemInSlot(u,4))==a then
set c = c + 1
endif
if GetItemTypeId(UnitItemInSlot(u,5))==a then
set c = c + 1
endif
return c
...
my func
Выше код же
Таблица результатов
Функция
Мин. средняя скорость, сек
Макс. средняя скорость, сек
Соотношение
with loop
0.0000 64
0.0000 67
1
without loop
0.0000 56
0.0000 58
0.88
my func
0.0000 54
0.0000 57
0.85
Время, необходимое для записи результата - 0.0000 033
Тест выполнялся с тремя одинаковыми предметами в первых трех слотах, остальные слоты были пусты
тест-код
integer LounchCount = 0
function testfunc takes nothing returns nothing
local integer w
local real o
set LounchCount = LounchCount + 1
if LounchCount < 20 then
set w = StopWatchCreate()
call CountItemInInventory0(gg_unit_Hblm_0000, 'rat6')
set o = StopWatchMark(w)
call StopWatchDestroy(w)
call BJDebugMsg( "test_myfunc " + I2S(CountItemInInventory0(gg_unit_Hblm_0000, 'rat6')))
elseif LounchCount > 19 and LounchCount < 40 then
set w = StopWatchCreate()
call CountItemInInventory1(gg_unit_Hblm_0000, 'rat6')
set o = StopWatchMark(w)
call StopWatchDestroy(w)
call BJDebugMsg( "test_withloop " + I2S(CountItemInInventory1(gg_unit_Hblm_0000, 'rat6')))
else
set w = StopWatchCreate()
call CountItemInInventory2(gg_unit_Hblm_0000, 'rat6')
set o = StopWatchMark(w)
call StopWatchDestroy(w)
call BJDebugMsg( "test_withoutloop " + I2S(CountItemInInventory2(gg_unit_Hblm_0000, 'rat6')))
if LounchCount > 59 then
set LounchCount = 0
endif
endif
call DisplayTimedTextToPlayer( Player(0), 0., 0., 45., R2SW(o,10,10))
set w = StopWatchCreate()
set o = StopWatchMark(w)
call StopWatchDestroy(w)
call DisplayTimedTextToPlayer( Player(0), 0., 0., 45., "difference " + R2SW(o,10,10))
endfunction
//===========================================================================
function InitTrig_batest2 takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterPlayerChatEvent(t,Player(0),"a",true)
call TriggerAddAction(t,function testfunc)
set t = null
call DoNotSaveReplay()
endfunction
Клоуну еще улыбку сделать двустороннюю(одна часть лица с улыбкой, другая с грустью), так есть впечатление, что это робот-клоун, также есть минус в дитализации, почему бы не поседеть 20-30 минут делая яснее всю форму?
школьно слишком, рисуй на обычной белой(чистой) бумаге, а не на тетрадном листе.
Возьми карандаш в руки .7 и больше ММ диаметром и твори, само то для новичка
Я раньше рисовал карандашом и фотографировал на зеркальный, ловил аргазм когда отблеск от графита был на снимке, нереально красиво, имхо
Никогда не рисуй цветными карандашами, если у тебя одна толстота, выглядит некачественно
Посмотри на твой "арт" нарисованный ручкой, он выглядит качественнее из-за тонкой "кисти"
Единственный "арт", который мне понравился из твоей коллекции, хоть тут смешан чистый "труд" с потоком мыслей
Понравилась прорисоква "Джакиро", хоть и у него зад от "Висейдж"
Урса жостко получился) только с ногами шлак
» WarCraft 3 / Dota imba 3.81 AI ENG
Где ты подчеркнул прямую связь с DotA Allstars?
...мда... Думал скрины как скрины, а тут барабан 500х500
Ты так не уважаешь хгмовцев, что хочешь чтобы такое было на главной?)
Ред. alpha
» WarCraft 3 / Dota imba 3.81 AI ENG
скриншоты процентрируй, если есть возможность
Ред. alpha
» Teranozaur's workshop / XGM Logo: New EDGE
посмотри hq.dpics.org/wallpapers/57i/XXX_(Triple_X)%2C_2002%2C_Vin_Diesel...
» WarCraft 3 / Библиотека функций
функция из 161 строки
» WarCraft 3 / Библиотека функций
работа через (GetItemTypeId(UnitItemInSlot(u, slot ))== typeId))
Возможен всплеск неконтролируемой агрессии.
Тест выполнялся с тремя одинаковыми предметами в первых трех слотах, остальные слоты были пусты
» Teranozaur's workshop / Other
» Teranozaur's workshop / Other
» Teranozaur's workshop / XGM Logo: New EDGE
» Teranozaur's workshop / XGM Logo: New EDGE
» Teranozaur's workshop / Other
» Teranozaur's workshop / Other
» Teranozaur's workshop / Teranozaur's workshop
» Teranozaur's workshop / Teranozaur's workshop
» Блог Кета Голосова / Патитайм
» Teranozaur's workshop / Winter Wars
» WarCraft 3 / Freelancer
Скриншоты попроси сделать друзей
» Brain Gears / Brain Gears
» Блог Кета Голосова / Патитайм
» Teranozaur's workshop / landscape
Возьми карандаш в руки .7 и больше ММ диаметром и твори, само то для новичка
Я раньше рисовал карандашом и фотографировал на зеркальный, ловил аргазм когда отблеск от графита был на снимке, нереально красиво, имхо
» Teranozaur's workshop / Teranozaur's workshop
Посмотри на твой "арт" нарисованный ручкой, он выглядит качественнее из-за тонкой "кисти"
» Teranozaur's workshop / Other
Понравилась прорисоква "Джакиро", хоть и у него зад от "Висейдж"
Урса жостко получился) только с ногами шлак