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

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

Ответ
 
Feronetick

offline
Опыт: 86
Активность:
Ошибка в коде
Пробовал пользоваться поиском, но ничего не нашёл.
Суть функции: заменять один предмет другим, если его значение не сповпадает с номером игрока и наоборот. Итог - руна заменяется только первым (включенным) предметом и при прямой передаче предмет тоже не хочет заменяться. Прошу помочь найти мою ошибку.
Код:
function ReplaceItem takes nothing returns nothing

local item ibm = GetManipulatedItem()
local unit u = GetTriggerUnit()
local integer id = GetItemUserData(ibm)
local integer index = GetItemIndex(ibm)
local location il = GetItemLoc(ibm)

if(UnitInventoryCount(u)<UnitInventorySizeBJ(u))then
                if((GetItemTypeId(ibm)==udg_IRS_Dummy[index])and(id==0))then
                    call UnitAddItemById(u,udg_IRS_Enabled[index])
                    call SetItemUserData(GetLastCreatedItem(),GetConvertedPlayerId(GetOwningPlayer(u)))
                endif
                if((GetItemTypeId(ibm)==udg_IRS_Dummy[index])and(id!=0)and(id!=GetConvertedPlayerId(GetOwningPlayer(u))))then
                    call UnitAddItemById(u,udg_IRS_Disable[index])
                    call SetItemUserData(GetLastCreatedItem(),id)
                endif
                if((GetItemTypeId(ibm)==udg_IRS_Dummy[index])and(id==GetConvertedPlayerId(GetOwningPlayer(u))))then
                    call UnitAddItemById(u,udg_IRS_Enabled[index])
                    call SetItemUserData(GetLastCreatedItem(),id)
                endif
                if((GetItemTypeId(ibm)==udg_IRS_Disabled[index])and(id==GetConvertedPlayerId(GetOwningPlayer(u))))then
                    call RemoveItem(ibm)
                    call UnitAddItemById(u,udg_IRS_Enabled[index])
                    call SetItemUserData(GetLastCreatedItem(),id)
                endif
                if((GetItemTypeId(ibm)==udg_IRS_Enabled[index])and(id!=GetConvertedPlayerId(GetOwningPlayer(u)))and(id!=0))then
                    call RemoveItem(ibm)
                    call UnitAddItemById(u,udg_IRS_Disable[index])
                    call SetItemUserData(GetLastCreatedItem(),id)
                endif
            else
                if(GetItemTypeId(ibm)==udg_IRS_Dummy[index])then
                    call RemoveItem(ibm)
                    call CreateItemLoc(udg_IRS_Dummy[index],il)
                    if(id==0)then
                        call SetItemUserData(GetLastCreatedItem(),GetConvertedPlayerId(GetOwningPlayer(u)))
                    else
                        call SetItemUserData(GetLastCreatedItem(),id)
                    endif
                endif
            endif
call RemoveLocation(il)
endfunction

Отредактировано Feronetick, 01.01.2011 в 22:15.
Старый 01.01.2011, 16:56
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
Feronetick:
endfuction
endfunction
Старый 01.01.2011, 17:30
Feronetick

offline
Опыт: 86
Активность:
Суть не в опечатке. Я просто вырезал из функции кусок кода, который работает некорректно. Немного пришлось дописывать прямо тут. Поэтому опечатки могут иметь место. В оригинале же их нет. Тем более я говорил, что функция работает наполовину.
Старый 01.01.2011, 22:15
Ответ

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

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

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

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



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