0
12
14 лет назад
0

» WarCraft 3 / Библиотека функций

Enein:
убрал коменты и отступы, заменил константы циферками. да ты молодец!
Не буду повторять сообщение диода, что лучше новые уникальне значения, чем обращения к глобалкам, плюс проверь неточно выжидает!
0
12
14 лет назад
0

» WarCraft 3 / Библиотека функций

DioD:
ваши гениальные умственные способности позволили улучшить и без того совершенную функцию. (улучшили точность на 0%)
хотя ваша вера в то, что вы умнее разработчиков игры радует
Стандарт
function PolledWait takes real duration returns nothing
    local timer t
    local real  timeRemaining
    if (duration > 0) then
        set t = CreateTimer()
        call TimerStart(t, duration, false, null)
        loop
            set timeRemaining = TimerGetRemaining(t)
            exitwhen timeRemaining <= 0
            // If we have a bit of time left, skip past 10% of the remaining
            // duration instead of checking every interval, to minimize the
            // polling on long waits.
            if (timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD) then
                call TriggerSleepAction(0.1 * timeRemaining)
            else
                call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL)
            endif
        endloop
        call DestroyTimer(t)
    endif
Чуствуешь разницу теперь
0
12
14 лет назад
0

» WarCraft 3 / Библиотека функций

1)Аналог игрового ожидания
2)Я(9thNerZul)
function Wait takes real duration returns nothing
    local timer t
    local real  i
    local real y
    if duration>0 then
    set y=duration-0.1
    set t=CreateTimer()
    call TimerStart(t,y,false,null)
    loop
    set i=TimerGetRemaining(t)
    exitwhen i<=0
    call TriggerSleepAction(0)
    endloop
    call DestroyTimer(t)
    endif
    set t=null
endfunction
Вроде норм учитывая задержку триггерслип, поправте если неправильно
0
12
14 лет назад
0

» WarCraft 3 / Библиотека функций

9thNerZul, а зачем использовать какие-то гуишные конструкции?
Уговорил жаль что сразу написал а так;
function UHI takes unit u, integer ii returns boolean
return GetItemTypeId(UnitItemInSlot(u,0x00))==ii or GetItemTypeId(UnitItemInSlot(u,0x01))==ii or GetItemTypeId(UnitItemInSlot(u,0x02))==ii or GetItemTypeId(UnitItemInSlot(u,0x03))==ii or GetItemTypeId(UnitItemInSlot(u,0x04))==ii or GetItemTypeId(UnitItemInSlot(u,0x05))==ii
endfunction
Уж если совсем оптимизировать^^ и вот проверка на количество айтемов без лупов:
1)Функция берёт юнита, берёт код предмета и возвращает кол-во предметов в инвентаре у взятого юнита^^
2)Автор я(9thNerZul)
3)ниже
function UCI takes unit u, integer ii returns integer
    local integer ic=0
    if GetItemTypeId(UnitItemInSlot(u,0x00))==ii then
    set ic=ic+1
    endif
    if GetItemTypeId(UnitItemInSlot(u,0x01))==ii then
    set ic=ic+1
    endif
    if GetItemTypeId(UnitItemInSlot(u,0x02))==ii then
    set ic=ic+1
    endif
    if GetItemTypeId(UnitItemInSlot(u,0x03))==ii then
    set ic=ic+1
    endif
    if GetItemTypeId(UnitItemInSlot(u,0x04))==ii then
    set ic=ic+1
    endif 
    if GetItemTypeId(UnitItemInSlot(u,0x05))==ii then
    set ic=ic+1
    endif    
    return ic
endfunction
4,5)описанов пункте 1
Поместил в теге, Ы
9thNerZul добавил:
в твоем третьем примере возвратится номер слота в кж-шной нумерации (на единицу меньше).
И чё? ты пользуешь bj функции?
а если у героя 2 таких предмета?
Элементарно, возвратит первый из них^^.
0
12
14 лет назад
0

» WarCraft 3 / Библиотека функций

Enein:
типа bj_MAX_INVENTORY
а это разве не константа? =/
Ну дак, зачем же к ней обращаться то если можно самому всё вставить!
0
12
14 лет назад
0

» WarCraft 3 / Библиотека функций

DioD:
Зачем постить функции которые есть в БЖ?
В бж есть функция кол-ва предметов???+ всё оптимизированно, и без самих bj функций типа bj_MAX_INVENTORY.. пусть умрёт бж.. вперёд всё ручками...
0
12
14 лет назад
0

» WarCraft 3 / Библиотека функций

Я тут немного подумал и решил добавить свои функции чтобы узнавать инфу по предметам. Новичкам может пригодятся:
function UHI takes unit u, integer ii returns boolean
local integer ix=0
loop
exitwhen ix>5
if GetItemTypeId(UnitItemInSlot(u, ix))==ii then
return true
endif
set ix=ix+1
endloop
return false
endfunction
//
function UCI takes unit u, integer ii returns integer
local integer ix=0
local integer ic=0
loop
exitwhen ix>5
if GetItemTypeId(UnitItemInSlot(u,ix))==ii then
set ic=ic+1
endif
set ix=ix+1
endloop
return ic
endfunction
//
function UIS takes unit u, integer ii returns integer
local integer ix=0
loop
exitwhen ix>5
if GetItemTypeId(UnitItemInSlot(u, ix))==ii then
return ix
endif
set ix=ix+1
endloop
return 0
endfunction
П.С. первая проверяет есть ли такой-то предмет у юнита, вторая сколько таких-то предметов у юнита( впринципе можно использовать в условии вместо первой( к примеру UCI>0)), ну а третья возращает номер слота в котором находится такой-то предмет. Зы удобно)
1
12
15 лет назад
1

» WarCraft 3 / Защита BattleNet

и чё теперь нельзя будут свои нативки??
1
12
15 лет назад
1

» Прочее / XGM 2009

а я где)
1
12
15 лет назад
1

» WarCraft 3 / Бухарики 1.7

Качаю посмотрим что из себя представляет она
0
12
15 лет назад
0

» Музыка и Звук / Хип-хоп, рэп

кто нить слушал Варчун-Моя игра