Я создал маленькую функцию, которая должна мне возвращать число. Оно понадобится мне в дальнейшем как универсальная функция, чтоб ее не писать заново в каждом нужном триггере.
Вот первая часть
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 переменными?
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
11
9 лет назад
0
Точнее тут даже вопрос в том, как узнать равкод предмета и поставить ее в первую функцию. Равкод это integer или string?
0
28
9 лет назад
0
попробуй не 0 а 0.0
равкод это инт
и вместо
if ( whichItem == 'I01C' ) then
        return 20
    else
        return 0
    endif
лучше
if ( whichItem == 'I01C' ) then
        return 20
endif
return 0
и если ты планируешь делать много таких проверок(с разными равкодами) то лучше юзать бд
0
11
9 лет назад
0
nvc123:
попробуй не 0 а 0.0
равкод это инт
и вместо
if ( whichItem == 'I01C' ) then
        return 20
    else
        return 0
    endif
лучше
if ( whichItem == 'I01C' ) then
        return 20
endif
return 0
и если ты планируешь делать много таких проверок(с разными равкодами) то лучше юзать бд
попробовал. в первой функции все норм там значит.
проблема во второй
0
15
9 лет назад
0
возможно вместо переменной типа item вы должно передавать itemtype?
0
11
9 лет назад
0
LOR_D:
возможно вместо переменной типа item вы должно передавать itemtype?
нет
0
33
9 лет назад
Отредактирован Кет
0
Farrien, а почему ты передаёшь функции юзердату? Что в ней записано? По логике твоей функции она должна принимать ItemTypeId.
(Возможно, если юзердата пустая, она и передаёт null, что вызывает описанную ошибку, но я не уверен.)
2
28
9 лет назад
2
возможно конфликт имён
2
29
9 лет назад
2
Не понимаю смысла real, если всеравно потом конвертишь в int
0
28
9 лет назад
0
alexprey, just for fun
alexprey, функция ведь возвращает всеравно целое значение
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.