Перейти к контенту

Ковыряем ОП-2


Рекомендуемые сообщения

Я, конечно, заранее извиняюсь за кривокод (потому что Lua изучаю буквально на ходу), и программирование только хобби.

Пытаюсь поправить функцию buy_quest_item, чтобы она помимо предметов и денег могла еще и произвольные инфопоршни выдавать.

Вот кусок кода:

if not ini:section_exist(buy_item) then
		local money = tonumber( buy_item )
		if money then aem_manager.manage_money(money, "in")
		else news_manager.send_tip(db.actor, "Предмет \""..buy_item.."\" не найден.", nil, "nano", 30000)
		end
elseif string.sub(buy_item,1,3)="ip_" then db.actor:give_info_portion(string.sub(buy_item,4,string.len(buy_item)))
Суть в том, что если аргумент начинается с "ip_", то выдать инфопоршень равный аргументу за вычетом трех первых символов - "ip_".

Проблема простая - что-то накосячил в этом участке и не могу понять, что. :russian_ru:

Что же я мог упустить?

С возвращеньем меня.

Поделиться этим сообщением


Ссылка на сообщение

@Dennis_Chikin,

function buy_quest_item()
    local f = getFS()
    local flist = f:file_list_open_ex("$game_saves$", bit_or(FS.FS_ListFiles, FS.FS_RootOnly), "*.buy")
    if flist:Size() == 0 then return end

    fname = flist:GetAt(0):NameFull()
    local buy_item = string.sub(fname, 0, string.len(fname)-4)
    local ini = system_ini()
    if string.sub(buy_item, 0, 2) = "ip_"
    then db.actor:give_info_portion(string.sub(buy_item,3,string.len(buy_item))) 
    end
    return
    if not ini:section_exist(buy_item) then
        local money = tonumber( buy_item )
        if money then aem_manager.manage_money(money, "in")
        else news_manager.send_tip(db.actor, "Предмет \""..buy_item.."\" не найден.", nil, "nano", 30000)
        end
        return
    --    
    elseif db.actor:money() < 5 then
        news_manager.send_tip(db.actor, "Для покупки недостаточно денег.", nil, "nano", 30000)
    --elseif is_excluded_item(buy_item) then
        --news_manager.send_tip(db.actor, "Через меню игры можно покупать только квестовые предметы.", nil, "nano", 30000)
    
    else
        db.actor:disable_info_portion("mm_opt")
        aem_manager.manage_money(5, "out")
        sak.create_items_actor(buy_item, 1)
        
        local info
        for i =1,3 do
            info = "acv_halavshic"..tostring(i)
            if not has_alife_info(info) then
                db.actor:give_info_portion(info)
                break
            end
        end
    end

    local f1 = f:update_path("$game_saves$", fname)
    f:file_delete(f1)
end

 

Хммм... Вот текст всей функции. Переделал, но, похоже, опять что-то не то сделал. Мой участок - строки 9-12. Может, у меня синтаксис неправильный? Вроде if закрыл, return сделал.

Изменено пользователем BFG

С возвращеньем меня.

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...