Где то не хватает end

Naydan

Новичок
5 Дек 2017
6
0
1
#1
Код:
function Transform( keys )
    local caster = keys.caster
    local ability = keys.ability
    local level = ability:GetLevel()

    local duration = ability:GetLevelSpecialValueFor("duration",level - 1)
    local modifier_one = keys.modifier_one
    local modifier_two = keys.modifier_two
    local modifier_three = keys.modifier_three

    -- Deciding the transformation level
    local modifier
    if level == 1 then modifier = modifier_one
    else if level == 2 then modifier = modifier_two
    else modifier = modifier_three
    end
end
    ability:ApplyDataDrivenModifier(caster, caster, modifier, {duration = duration})
    caster:AddNewModifier(caster,ability,"modifier_elder_dragon_form_model_lua",{duration = duration})
end
Вроде бы 2 конца для 2х "если" и конец самой функции, но в игре выдает ошибку что именно в этой функции где то не хватает конца
Пробовал вписывать еще end но все равно та же ошибка
Что не так?
 

ZLOY

Супермодератор
Команда форума
27 Июн 2016
526
25
28
#5
Вот так и уничтожаются зачатки разума у новичков
 
20 Дек 2016
164
14
18
#8
Код:
function Transform( keys )
    local caster = keys.caster
    local ability = keys.ability
    local level = ability:GetLevel()

    local duration = ability:GetLevelSpecialValueFor("duration",level - 1)
    local modifier_one = keys.modifier_one
    local modifier_two = keys.modifier_two
    local modifier_three = keys.modifier_three

    -- Deciding the transformation level
    local modifier
    if level == 1 then 
        modifier = modifier_one
    else
        if level == 2 then 
            modifier = modifier_two
        else 
            modifier = modifier_three
        end
    end
    ability:ApplyDataDrivenModifier(caster, caster, modifier, {duration = duration})
    caster:AddNewModifier(caster,ability,"modifier_elder_dragon_form_model_lua",{duration = duration})
end
Я вначале не отнесся серьезно к этому вопросу, но вообще-то это должно работать и так, что видно при нормальной расстановке табуляций. Понятно, что elseif удобнее, но ведь это не отменяет конструкций типа if ... else if ... end end.

P.S.
И для подобных задач лучше и проще использовать массив:
Код:
...
local modifiers = { keys.modifier_one, keys.modifier_two, keys.modifier_three }
local modifier = modifiers[ level ]
...
 

Илья

Супермодератор
Команда форума
25 Сен 2015
2,304
22
38
#9
Ну, в теории может работать, если судить по логике и другим языкам. А может и нет, смотря как парсер настроен. В данном случае человек пишет, что в таком варианте ошибка с end. Без лога остается верить ему на слова.
 

Онлайн статистика

Пользователей онлайн
1
Гостей онлайн
11
Всего посетителей
12

Статистика форума

Темы
1,411
Сообщения
12,295
Пользователи
671
Новый пользователь
lesssayj

Поделиться страницей