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

Реклама:

Naydan

Новичок
5 Дек 2017
6
0
1
18
Реакции
0 0 0
#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
610
42
28
17
Реакции
31 0 1
#5
Вот так и уничтожаются зачатки разума у новичков
 
20 Дек 2016
264
37
28
10
Реакции
30 0 0
#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,359
25
48
26
Реакции
11 1 0
#9
Ну, в теории может работать, если судить по логике и другим языкам. А может и нет, смотря как парсер настроен. В данном случае человек пишет, что в таком варианте ошибка с end. Без лога остается верить ему на слова.
 
Реклама: