Я создал маленькую функцию, которая должна мне возвращать число. Оно понадобится мне в дальнейшем как универсальная функция, чтоб ее не писать заново в каждом нужном триггере.
Вот первая часть
function ItemIAS takes integer whichItem returns real
    if ( whichItem == 'I01C' ) then
        return 20
    else
        return 0
    endif
endfunction
Вот вторая часть (триггер, где нужна первая func)
function ItemIAS_A takes nothing returns nothing
    local item i=GetManipulatedItem()
    local integer irc=GetItemUserData(GetManipulatedItem())
    local integer pn=GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))
    local real ias=ItemIAS(irc)
    set udg_Unit_IAS[pn] = (udg_Unit_IAS[pn] + R2I(ias))
endfunction
Но у меня ошибка "Cannot convert null to real" на строке "local real ias=ItemIAS(irc)".
Что сделать?

Farrien, попробуй скопировать функции в отдельную карту и глянь будет ли там работать
и зачем ты написал udg_ перед 2 переменными?
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
alexprey, just for fun
alexprey, функция ведь возвращает всеравно целое значение
11
Кет:
Farrien, а почему ты передаёшь функции юзердату? Что в ней записано? По логике твоей функции она должна принимать ItemTypeId.
(Возможно, если юзердата пустая, она и передаёт null, что вызывает описанную ошибку, но я не уверен.)
Я и GetItemTypeId пробовал. Все равно null. По идее должно передать в виде integer рав код итема, но не хочет.
33
Farrien, может, событие не то? Но это точно GetItemTypeId() должно быть.
29
GetConvertedPlayerId
Разве не просто GetPlayerId?
function ItemIAS takes integer whichItem returns real
    if ( whichItem == 'I01C' ) then
        return 20
    else
        return 0
    endif
endfunction
Функция разве не должна всегда заканчиваться return'ом? перепиши так
function ItemIAS takes integer whichItem returns real
    if ( whichItem == 'I01C' ) then
        return 20
    endif
    return 0
endfunction
33
Функция разве не должна всегда заканчиваться return'ом? перепиши так
Дык главное, чтобы она в любом случае делала return. А так получается в любом варианте.
29
Кет, многие компиляторы это не любят. Честно уже не помню как в jass
11
nvc123:
Farrien, ты проверил код на конфликт имён?
Да. Он просто в вызове функции не хочет брать вот этот код предмета 'I01C'. По идее это integer, но его не понимает как integer.
28
Farrien, попробуй скопировать функции в отдельную карту и глянь будет ли там работать
и зачем ты написал udg_ перед 2 переменными?
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.