Kober(BRUC) 99 Опубликовано 7 Июня 2016 Добрый вечер. Я вот пытаюсь разобраться с nil. Код(пример кода): function my_function() if (db.actor ~= nil) then local obj = alife():create("предмет", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end Как я понимаю вторая строка проверяет ГГ - это актор или нет? Если нет(я так решил потому что nil - это false), то спавним в инвентарь ГГ предмет. Вопросы: 1) Правильно ли я понял? 2) Зачем нужна эта проверка на nil? Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 7 Июня 2016 @dsh, а можно тогда пожалуйста объяснить в каких случаях нужна проверка на nil? Я вот понять все не могу. Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 8 Июня 2016 Добрый день. Есть у меня допустим такой код: function grenage () alife():create("grenade_f1",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id()) alife():create("grenade_rgd5",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id()) end И таких функций несколько. Только создается разные предметы. Например место гранат аптечки и бинты. Здесь как я понимаю переменная local не подойдет. Так как функций несколько, а local ставится только перед одной функцией(как я понял). В целом я хочу упростить эти функции. Т.е. вместо "db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())" написать так(в начале скрипта): position = db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id()) Ну, а потом уже функции в которых заместо "db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())" будет писаться просто position. Вот так: position = db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id()) function grenage() alife():create("grenade_f1",position alife():create("grenade_rgd5",position end function med() alife():create("bandage",position alife():create("medkit",position end Будет ли все это дело работать. И еще на последок. Если я сделаю отдельный скрипт где будут "тонны" этих сокращений, можно ли тогда их вызывать. Если да, то как? Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 19 Июня 2016 Добрый вечер. Потихоньку изучая lua столкнулся с такой проблемой: при вызове этого(не в сталкере): number_tbl = { 1, 2, 3, 4, 5, 6, 7, 8, 9} data = math.random(#number_tbl) print(data) Всегда получается число "8". Мне интересно, почему? Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 19 Июня 2016 @naxac, а в сталкере это тоже нужно делать? Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 27 Июня 2016 Есть "ужасный" код: random = true say_tbl = { "Текст1", "Текст2", "Текст3", "Текст4", "Текст5", "Текст6", "Текст7", "Текст8", "Текст9", "Текст10"} data = math.randomseed(os.time()) data = math.random(1,10) if random and data == 1 then print(say_tbl[1]) elseif random and data == 2 then print(say_tbl[2]) elseif random and data == 3 then print(say_tbl[3]) elseif random and data == 4 then print(say_tbl[4]) elseif random and data == 5 then print(say_tbl[5]) elseif random and data == 6 then print(say_tbl[6]) elseif random and data == 7 then print(say_tbl[7]) elseif random and data == 8 then print(say_tbl[8]) elseif random and data == 9 then print(say_tbl[9]) elseif random and data == 10 then print(say_tbl[10]) end Хотел сделать его попроще и изменил вот на это: random = true say_tbl = { "Текст1", "Текст2", "Текст3", "Текст4", "Текст5", "Текст6", "Текст7", "Текст8", "Текст9", "Текст10"} data = math.randomseed(os.time()) data = math.random(#say_tbl) if random == true or random == nil then print(data) end Но вот беда. Вместо текста появляются числа от одного до десяти. Как это дело исправить? Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 27 Июня 2016 Добрый день. Есть такой код: language = eng -- ru or eng random_shpare = true -- Шар вкл/выкл say_tbl_ru = { -- Таблица с русскими ответами "да", "нет", "возможно", "не знаю"} say_tbl_eng = { -- Таблица с английскими ответами "Yes", "No", "Possible", "Don't know"} function random_shpare_language() if language == ru then -- Если глобальная переменная language равна ru sphare_ru() -- То вызываем эту функцию elseif language == eng then -- Если глобальная переменная language равна eng sphare_eng() -- То вызываем эту end end data_ru = math.randomseed(os.time()) data_ru = math.random(#say_tbl_ru) data_eng = math.randomseed(os.time()) data_eng = math.random(#say_tbl_eng) function sphare_ru() if random_shpare == true -- Если Шар включен(true) or random_shpare == nil then -- Или равен любому другому значению кроме false print(say_tbl_ru[data_ru]) -- То выводим данный текст end end function sphare_eng() if random_shpare == true -- Если Шар включен(true) or random_shpare == nil then -- Или равен любому другому значению кроме false print(say_tbl_eng[data_eng]) -- То выводим данный текст end end random_shpare_language() Сам код работает, но вот смена языка нет. Всегда текст появляется на русском. Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 8 Июля 2016 Добрый день. Написал такой код: all_tbl = { q, w, e, r, t, y, u, i, o, p, a, s, d, f, g, h, j, k, l, z, x, c, v, b, n, m, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0} local on = true function zoz() if on then oz() end end function oz() for fg = 1, 15 do math.randomseed(os.time()) random = math.random(#all_tbl) print(all_tbl[random]) end end zoz() Но значения берутся не из таблицы, а равны nil. В чем же проблема? Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 11 Июля 2016 Добрый день. Возможно ли узнать последнюю букву из: local one = zero В данном случае эта буква "o". Слово может быть любое. Соответственно и количество букв в слове может быть любое(относительно). Важна ли информация из последнего сообщениями или нет - не знаю. На всякий случай. Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 11 Июля 2016 @Charsi, а можно поподробнее про это? Там статья напрмер? Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 22 Июля 2016 @KitkaT.Net, товарищ naxac писал недавно: Перед FILTERS_PLACE=math.random(2) напиши math.randomseed(os.time()) Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 14 Ноября 2016 (изменено) Добрый день. Есть переменная и таблица заполненная значениями. Размер таблицы 26 элементов.Мне нужно проверить равно ли значение переменной значению элементов таблицы. Проверить с помощью конструкции if. Элементов аж 26, мне нужно все элементы перебирать или есть какой-то более простой способ?На ум приходит только это: for i=1, #tbl_name do if (tbl_name[i] == variable_name) then -- Наши действия... -- Остановили цикл: break end end Изменено 14 Ноября 2016 пользователем Kober(BRUC) Поделиться этим сообщением Ссылка на сообщение
Kober(BRUC) 99 Опубликовано 18 Марта 2017 Добрый день!Можно ли силами Lua подключиться к процессу и в определённый адрес записать значение? Поделиться этим сообщением Ссылка на сообщение