XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Тзинч

offline
Опыт: 4,948
Активность:
2 в 1
Привет форумисты!
Пожалуйста помогите!
Вот суть проблемы: у меня есть 2 одинаковых предмета (руны Лэр), хочу чтобы они объединились в один предмет (руна Лэрн).
Лучше с подробным обьяснением или с картой-примером!
P.S.Чтобы не только я понял, но и другие!
Старый 03.11.2008, 10:25
V1ctor1ous

offline
Опыт: 23,781
Активность:
by Alex_Hell
создавай 3 переменных
UIS_Index (Целочисленная)
UIS_ItemCount (Целочисленная Массив)
UIS_ItemId (Целочисленная Массив)

Код:
function UIS_CheckAction takes unit u, integer i returns boolean
    local integer array items
    local integer array drop
    local integer x = 0
    local integer v
    local integer d
    local integer g = -1
    loop
        exitwhen x > 5
        set items[x] = GetItemTypeId(UnitItemInSlot(u,x))
        set x = x + 1
    endloop
    set x = i
    loop
        exitwhen x > i + 5
        if udg_UIS_ItemId[x] > 0 then
            set v = 0
            set d = 0
            loop
                exitwhen d > 5
                if v < udg_UIS_ItemCount[x] then
                    if items[d] == udg_UIS_ItemId[x] then
                        set v = v + 1
                        set g = g + 1
                        set drop[g] = d
                    endif
                else
                    exitwhen true
                endif
                set d = d + 1
            endloop
            if v < udg_UIS_ItemCount[x] then
                return false
            endif
        endif
        set x = x + 1
    endloop
    set x = 0
    loop
        exitwhen x > g
        call RemoveItem(UnitItemInSlot(u,drop[x]))
        set x = x + 1
    endloop
    return true
endfunction
//===========================================================================
function UIS_Check takes unit u returns integer
    local integer i = 0
    loop
        exitwhen i == udg_UIS_Index
        if UIS_CheckAction(u,i) then
            return udg_UIS_ItemId[i+6]
        endif
        set i = i + 7
    endloop
    return -1
endfunction
//===========================================================================
function Trig_PickItem_Actions takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local integer id = UIS_Check(u)
    local item f = null
    if id > -1 then
        set f = CreateItem(id,GetUnitX(u)+10,GetUnitY(u))
        call UnitAddItem(u,f)
        set f = null
    endif
    set u = null
endfunction
//===========================================================================
function UIS_RegisterItem takes integer a1, integer a2, integer a3, integer a4, integer a5, integer a6, integer n returns nothing
    local integer x = udg_UIS_Index
    local integer v
    set udg_UIS_ItemId[udg_UIS_Index]   = a1
    set udg_UIS_ItemId[udg_UIS_Index+1] = a2
    set udg_UIS_ItemId[udg_UIS_Index+2] = a3
    set udg_UIS_ItemId[udg_UIS_Index+3] = a4
    set udg_UIS_ItemId[udg_UIS_Index+4] = a5
    set udg_UIS_ItemId[udg_UIS_Index+5] = a6
    set udg_UIS_ItemId[udg_UIS_Index+6] = n
    loop
        exitwhen x > udg_UIS_Index + 5
        if udg_UIS_ItemId[x] > 0 then
            set udg_UIS_ItemCount[x] = 1
            set v = udg_UIS_Index
            loop
                exitwhen v > udg_UIS_Index + 5
                if v != x then
                    if udg_UIS_ItemId[v] == udg_UIS_ItemId[x] then
                        set udg_UIS_ItemId[v] = 0
                        set udg_UIS_ItemCount[x] = udg_UIS_ItemCount[x] + 1
                    endif
                endif
                set v = v + 1
            endloop
        endif
        set x = x + 1
    endloop
    set udg_UIS_Index = udg_UIS_Index + 7
endfunction
//===========================================================================
function InitTrig_ItemS takes nothing returns nothing
    set gg_trg_ItemS = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_ItemS,EVENT_PLAYER_UNIT_PICKUP_ITEM)
    call TriggerAddAction(gg_trg_ItemS,function Trig_PickItem_Actions)
    set udg_UIS_Index = 0
    //Registration Item Pucks ->>
    //
    //call UIS_RegisterItem(item1,item2,item3,item4,item5,item6,result)
    //item1,item2.. = items, which are necessary to update
    //if need less than 6 items, fill other parametres in 0
    //result = new item, which will be created
    call UIS_RegisterItem('I000','I000',0,0,0,0,'I002') 
endfunction

Примечание I000 - равкоды твоих рун,I002- то,что должно получиться.
Старый 03.11.2008, 10:33
Тзинч

offline
Опыт: 4,948
Активность:
Люд тему сверните! Она отображает смысл другой темы!
Старый 03.11.2008, 10:36
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
V1ctor1ous, чето ты тут намудрил! проще можно делать тригёром.

код


» код
Событие - юнит получает предмет
Условие - Кол-во предметов Твой предмет >= 2
Действие - IF - В слоте 1 Твой предмет
Then - Удалить предмет в слоте 1
Else - ничего
IF - В слоте 2 Твой предмет
Then - Удалить предмет в слоте 2
Else - ничего
IF - В слоте 3 Твой предмет
Then - Удалить предмет в слоте 3
Else - ничего
IF - В слоте 4 Твой предмет
Then - Удалить предмет в слоте4
Else - ничего
IF - В слоте 5 Твой предмет
Then - Удалить предмет в слоте 5
Else - ничего
IF - В слоте 6 Твой предмет
Then - Удалить предмет в слоте 6
Else - ничего
Дать предмет герою 2Предмет

конец кода


Можно ещё с помощью цикла!
Старый 03.11.2008, 10:44
Scorched

offline
Опыт: 7,912
Активность:
можно спросить, зачем ты создал две одинаковые темы?
http://xgm.guru/forum/showthread.php?p=462376&h=1#post462376
Старый 03.11.2008, 11:34
S

offline
Опыт: 43,833
Активность:
Цитата:
Люд тему сверните! Она отображает смысл другой темы!

закрыто ибо подобная тема уже есть
Старый 03.11.2008, 11:47
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 17:45.