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

Naydan

Пользователь
5 Дек 2017
20
3
Проект
Polygon of farming
Код:
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
953
182
Вот так и уничтожаются зачатки разума у новичков
 
20 Дек 2016
892
170
Код:
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 ]
...
 
  • Нравится
Реакции: -ExotiC-

Илья

Друзья CG
25 Сен 2015
2,348
41
Ну, в теории может работать, если судить по логике и другим языкам. А может и нет, смотря как парсер настроен. В данном случае человек пишет, что в таком варианте ошибка с end. Без лога остается верить ему на слова.
 
Реклама: