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

Язык Lua. Общие вопросы программирования


Malandrinus

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

Доброго времени суток.

Наверное, это более подходящая тема. С темой сталкера вопрос связан косвенно, но к самой игре не имеет отношения.

Вопрос наверное простоват, но я что-то не могу понять (пока только учусь).

 

Имеется три таблицы, из первой берется рандомная строка, далее, необходимо условие: если эта строка равна какой-либо строке из второй таблицы, то, к возвращаемой строке, добавляется строка из третьей таблицы, а если не равно, то ничего не добавляется. Так вот, собственно, не могу понять, как провести сравнение Text_1 с со второй таблицей?

Дайте пожалуйста пинка в нужном направлении.

 

function Initialize()
table_1={
"String_1",
"String_2",
"String_3",
"String_4",
"String_5",
"String_6",
"String_7",
"String_8",
"String_9",
"String_10"
}

table_2={
"String_1",
"String_4",
"String_7",
"String_10"
}

table_3={
"String_1a",
"String_2a",
"String_3a",
"String_4a",
"String_5a",
"String_6a",
"String_7a",
"String_8a",
"String_9a",
"String_10a"
}
end

function Update()
Text_1 = table_1[math.random( #table_1 )]
    if Text_1 == table_2 then
        Text_2 = table_3[math.random( #table_3 )]
    end

    if Text_1 ~= table_2 then
        Text_2 = " "
    end
    
return  Text_1.." "..Text_2
end

 

Если важно, то это для программы Rainmeter.

 

userbar368.png

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


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

Вот сейчас читаю и понимаю, что все-таки наверно неправильно сформулировала мысль. Хотя козалось вроде все грамотно излагаю :)

Вторая таблица как-раз очень нужна. Там только строковые значения, без индексов.

Вся схема это попытка реализовать динамические новости (АМК и OGSE) для программы Rainmeter. Все было готово, но, как всегда захотелось чуть-чуть усложнить схему (чтоб было еще рендомнее :) ).

 

Тут надо не вернуть строку, а сделать присвоение. Типа:

если Text_1 == table_2 тогда
    Text_2 = "1"

если Text_1 ~= table_2 тогда
    Text_2 = "2"

А далее Text_2 передается в другую таблицу, откуда уже получается конечный результат.

Вобщем должно быть как-то так, надеюсь сейчас лучше изложила.

Пока писала возникла одна идейка, пойду попробую.

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

userbar368.png

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


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

Доброго времени суток.

Возник новый вопрос.

Возможно ли, время, представленное в секундах (как пример os.time), преобразовать в формат: год, месяц, день, час, минута.

Собственно сама задача, из реестра получаю дату установки ОС в секундах и надо привести к человеческой форме восприятия.

Есть ли какой-нибудь штатный способ перевода или придется реализовывать с помощью более сложного кода?

userbar368.png

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


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

Кактус_523, А причем тут os.date?

У меня есть число и его необходимо преобразовать в дату.

Или может я чего не понимаю? :)

userbar368.png

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


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

Доброго времени суток.

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

Мне необходимо из строки вида 12:34 получить те части строки, в которых цифры и преобразовать в числовое значение. С последним все оказалось просто, а вот с первым не очень.

Собственно вопрос: где можно подробно узнать как разобрать строку? И где можно найти информацию о значениях символов в паттернах?

К сожаленью самостоятельно ничего не смогла найти (то ли гугл у меня бракованный, то ли руки не оттуда растут :) ).

 

 

Что-то вы товарищь malandrinus больше сообщения принимать не можете :) Т.ч поблагодарю здесь, надеюсь сильно не накажут. Большое спасибо, буду изучать.

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

userbar368.png

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


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

Доброго времени суток.

Наверное вопрос опять из разряда примитивных, но все же спрошу.

Возможно ли с помощью Lua отследить процесс (запущен или нет), а если запущен, то узнать состояние окна (развернуто или свернуто на панель задач (в трей).?

Необходимо отслеживать несколько текстовых редакторов. Один способ у меня есть, но заинтересовала возможность реализации этого через Lua.

userbar368.png

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


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

Доброго времени суток.

И снова у меня вопрос из разряда элементарных-дурацких, но все же...

Получаю я строку, в которой у всех букв нижний регистр и мне необходимо преобразовать первую букву в верхний. В принципе, ничего сложного, с но почему-то при кодировке 1251 функция string.upper не работает.

Ну, и собственно вопрос: как быть? Можно ли изменить кодировку строки?

userbar368.png

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


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

Artos, о таком способе подумывала, но понадеялась, что есть какой-нибудь стандартный способ. Спасибо, теперь так и реализую.

 

Gun12, Твой вариант не сработал.

У меня тоже W7, но на сколько чистый Lua- не знаю :) Делаю скин для программы Rainmetr и штатных способов не нашла, поэтому и решила использовать скрипт. А строку получаю при парсинге страницы в интернете.

userbar368.png

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


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

Доброго времени суток.

И снова у меня вопрос из разряда элементарных-дурацких, но все же...

:)

Теперь решила сделать себе напоминалку праздников и дней рождения и все работает, но не могу разобраться, как удалить запись из таблицы. Собственно код

 

 

-- ["ММДД"] = {"Название праздника"," Описание либо имя","Год"}
table_1 = {
-- Январь
["0101"]    = {"День Рождения","Имя1","1988"},
["0131"]    = {"День Рождения","Имя1","1989"},
-- Февраль
["0201"]    = {"День Рождения","Имя1","1990"},
["0223"]    = {"День защитника отечества","текст"}
-- И так далее...
}

function Update()
    local y = SKIN:GetMeasure('Ms_Time_Year'):GetStringValue() -- Получаем год
    local m = SKIN:GetMeasure('Ms_Time_Month'):GetStringValue() -- Получаем месяц
    local d = SKIN:GetMeasure('Ms_Time_Day'):GetStringValue() -- Получаем день
    str = table_1[m..d]
    if str ~= nil then
        local tip = str[1]
        local nick = str[2]
        local yb = str[3]
        if yb ~= nil then
            age = tonumber(y) - tonumber(yb)
            msg = tip.."\n"..nick.."\nИсполнилось "..age
        else
            msg = tip.."\n"..nick
        end
        SKIN:Bang('!ShowMeterGroup Group1')
        SKIN:Bang('!SetOption', 'm_Script', 'Text', msg)
        return 1
    end
end

function NoRemind()
    table.remove(table_1, ???)

end

 

 

Вот не могу разобраться, как из таблицы удалить запись

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

userbar368.png

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


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

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