@ProLua

Страница 292 из 307
Particle
11.05.2018
13:41:30
table.insert делает массив, а {[2] = 5, [3] = 10, [4] = 1} это типа хеш
а без инсерта не массив? То, что я заключаю в скобки {} массивом не является?

Рома
11.05.2018
13:41:52
{1, 2, 3} так массив

https://learnxinyminutes.com/docs/lua/

Google
Philipp
11.05.2018
13:43:59
Таблица не массив

Particle
11.05.2018
13:44:05
{1, 2, 3} так массив
а нет способа создать массив, без инсерта, с указанием имен ключей?

Philipp
11.05.2018
13:44:14
Particle
11.05.2018
13:44:34
угу, спасибо, только у меня не доступен сайт =(

Рома
11.05.2018
13:44:47
а нет способа создать массив, без инсерта, с указанием имен ключей?
https://learnxinyminutes.com/docs/lua/ нужно немножко хоть читать о языке, прежде чем использовать

роскомнадзор?

Philipp
11.05.2018
13:45:07
Ага

Particle
11.05.2018
13:45:12
нет

ничё не пишет, пишет что каннт риач

Рома
11.05.2018
13:48:20
кароч есть такой умный человек Роберту Иерусалимски он подумал: вот в других языках есть массивы и хеши а чтобы сделать самый няшный язык, нужно выкинуть все лишнее по этому таблица: если есть первый элемент - значит массив и может быть хеш, если нет - хеш и дырки среди эелементов это признак что массив закончился

Particle
11.05.2018
13:49:43
ясно, благодарю!

Philipp
11.05.2018
13:50:12
Карочи, массив – это хэш с последовательными цифровыми индексами без дырок в Луа

Google
Snusmumriken
11.05.2018
13:50:16
Держите массивы без дырок, используйте table.insert/table.remove.

Particle
11.05.2018
13:50:36
мне как раз дырявый ннада

Snusmumriken
11.05.2018
13:50:41
Зачем?

Если тебе действительно нужны дырявые массивы - ты скорее всего делаешь что-то не то.

Particle
11.05.2018
13:51:01
для определения loaded dice

Particle
11.05.2018
13:51:18
то

Philipp
11.05.2018
13:51:29
Зачем тебе массивы с дырками?

Snusmumriken
11.05.2018
13:51:34
Конкретно.

Particle
11.05.2018
13:51:38
для определения loaded dice

Snusmumriken
11.05.2018
13:51:41
Конкретно.

Particle
11.05.2018
13:51:56
эмитировать кость со смещенным центром

Snusmumriken
11.05.2018
13:51:56
Код приведи, обрамлённый тремя "`" с обеих сторон.

В каком смысле, и зачем тут таблицы, если "кость со смещённым центром" - это, как правило, функция?

Particle
11.05.2018
13:53:09
мне нужна возможность задавать вероятности для выпадения конкретных значений

Snusmumriken
11.05.2018
13:53:14
Возьми какую-нибудь косинусоиду, наложи её на прямую, кидай рандом от 0 до 1 со смещением, прогоняй через функцию и умножай на 6 с округлением.

Particle
11.05.2018
13:53:17
{[2] = 5, [3] = 10, [4] = 1}

Рома
11.05.2018
13:53:43
тогда можно остальным 0 поставить

Philipp
11.05.2018
13:54:45
Попробуй вот это https://github.com/kennyledet/Algorithm-Implementations/blob/master/Weighted_Random_Distribution/Lua/Yonaba/weighted_random.lua https://gist.github.com/TeoTwawki/87d5dab7e4515f4a2981df7ea8e0a798

Sergey
11.05.2018
13:55:29
я не знаю есть ли такая функция
local r = assert(xmlreader.from_string(xml)) while (r:read()) do local leadingws = (' '):rep(r:depth()) if (r:node_type() == "element") then io.write(("%s%s:"):format(leadingws, r:name(),r:next_node())) while (r:move_to_next_attribute()) do io.write((' %s=%q'):format(r:name(), r:value())) end io.write('\n') end end http://asbradbury.org/projects/lua-xmlreader/doc/ в либе не могу понять какая функция отвечает за чтение внутри блока ошибка выходит

Google
Насибуллин
11.05.2018
13:56:30
reader:read() Moves the position of reader to the next node in the stream. Returns true if the node was read successfully, false if there are no more nodes to be read.

@sergey_voip

Philipp
11.05.2018
13:57:59
если бы для меня были понятны эти косинусовиды =)
Так, напомни, чем ты занимаешься? Просто интересно)

Particle
11.05.2018
13:58:38
игру пытаюсь сделать =/

Snusmumriken
11.05.2018
14:00:04


ИЛИ есть ещё один способ который я напишу минут через десять-двадцать.

Philipp
11.05.2018
14:00:45
Snusmumriken
11.05.2018
14:00:52
Настольную

Насибуллин
11.05.2018
14:01:00
О, снус, а чо за тема рисовать функции через кривые безье

это типа удобно?

Dadaskis
11.05.2018
14:01:38
TextureManager = { textures = {}, loadTexture = function(fileName, textureName, isOpaque) print("loadTexture") print(fileName .. " | " .. textureName .. " | " .. isOpaque) local textureID = Engine.loadTexture(fileName, isOpaque) textures[textureName] = textureID print("loaded") end, getTexture = function(textureName) return textures[textureName] end } Почему textures[textureName] - ошибка? textureName = "Stone"

Snusmumriken
11.05.2018
14:02:07
Particle
11.05.2018
14:04:56
чёт я и это не понимаю. Надо про кривые почитать.

Sergey
11.05.2018
14:05:47
reader:read() Moves the position of reader to the next node in the stream. Returns true if the node was read successfully, false if there are no more nodes to be read.
local r = assert(xmlreader.from_string(xml)) while (r:read()) do local leadingws = (' '):rep(r:depth()) if (r:node_type() == "element") then io.write(("%s%s:"):format(leadingws, r:name())) while (r:move_to_next_attribute()) do io.write((' %s=%q'):format(r:name(), r:value())) print("text",r:read("variant")) print("tttt",r:move_to_element("variant")) end io.write('\n') end end Сделал так но он мне возврашает только true

Насибуллин
11.05.2018
14:06:08
кто он?\

ты же сам сказал '''Можешь заюзать кривые безье для функции.'''

Dadaskis
11.05.2018
14:06:57
В моем коде ошибка или опять аномалии? ._.

TextureManager = { textures = {}, loadTexture = function(fileName, textureName, isOpaque) print("loadTexture") print(fileName .. " | " .. textureName .. " | " .. isOpaque) local textureID = Engine.loadTexture(fileName, isOpaque) textures[textureName] = textureID print("loaded") end, getTexture = function(textureName) return textures[textureName] end } Почему textures[textureName] - ошибка? textureName = "Stone"

Philipp
11.05.2018
14:09:16
Нихера не понял

Google
Philipp
11.05.2018
14:09:28
Давай всё с начала

И плюс я не уверен что так можно делать

У тебя textures находится внутри TextureManager

В функцию нужно либо явно передавать TextureManager.textures, либо вынести textures из TextureManager

Dadaskis
11.05.2018
14:11:34
Если его сделать local в файле то он исчезнет после исполнения файла?

Philipp
11.05.2018
14:11:47
TextureManager = {} TextureManager.textures = {} TextureManager.loadTexture = function(fileName, textureName, isOpaque) print("loadTexture") print(fileName .. " | " .. textureName .. " | " .. isOpaque) local textureID = Engine.loadTexture(fileName, isOpaque) TextureManager. textures[textureName] = textureID print("loaded") end, TextureManager.getTexture = function(textureName) return TextureManager.texture[textureName] end

Чет типа такого

Короче, кури области видимости

Dadaskis
11.05.2018
14:14:07
Всё, благодарю за починку.

Philipp
11.05.2018
14:14:17
Да не за что

Насибуллин
11.05.2018
14:15:24
область видимости это scope Чтобы проще было в гугле вбить

Philipp
11.05.2018
14:15:25
Так делать не стоит

Лучше огранизовать в качестве класса (прототипа) с передачей через self

типа manager:getTexture(name)

И внутри уже self.textures[textureName]

@Dadaskis

Dadaskis
11.05.2018
14:16:39
Ок, перепишу позже.

Particle
11.05.2018
14:20:29
вкурил картинку, вроде. Но тут работает только с правильной последовательностью чисел?

Snusmumriken
11.05.2018
14:21:52
чёт я и это не понимаю. Надо про кривые почитать.
Карочи, альтернатива: Готовишь таблицу типа dices = { [1] = 3, [2] = 1, [6] = 2, [3] = 2 } Преобразуешь её в равномерную таблицу: function normalize(dices) local res = {} for k, v in pairs(dices) do for i = 1, v do res[#res + 1] = k end end return res end В результате, нормализованная таблица начинает выглядеть вот так: foo = normalize(dices) ==> foo = {1, 1, 1, 2, 6, 6, 3, 3} Берёшь из неё случайное число.

Google
Snusmumriken
11.05.2018
14:21:53
Всё.

Ну там, function roll(dices) return dices[math.random(#dices)] end

Particle
11.05.2018
14:23:09
спасибо!)

Sergey
11.05.2018
14:23:12


local r = assert(xmlreader.from_string(xml)) while (r:read()) do local leadingws = (' '):rep(r:depth()) if (r:node_type() == "element") then — io.write(("%s%s:"):format(leadingws, r:name())) while (r:move_to_next_attribute()) do — io.write((' %s=%q'):format(r:nme(), r:value())) — print("text",r:read("variant")) print("DATA",r:name(),r:value(),"text",r:read_string("variant"),r:read()) end — io.write('\n') end end

Насибуллин
11.05.2018
14:28:45
Sergey Kletsov, [11.05.18 17:23] local r = assert(xmlreader.from_string(xml)) while (r:read()) do local leadingws = (' '):rep(r:depth()) if (r:node_type() == "element") then — io.write(("%s%s:"):format(leadingws, r:name())) while (r:move_to_next_attribute()) do — io.write((' %s=%q'):format(r:nme(), r:value())) — print("text",r:read("variant")) print("DATA",r:name(),r:value(),"text",r:read_string("variant"),r:read()) end — io.write('\n') end end

вот так пеши

всмысле в `

три бектика

может поможет кто

Влад
11.05.2018
17:46:10
Да, я вот это нашёл и оно вполне подходит!

Dadaskis
11.05.2018
18:49:05
В Lua аналогов continue кроме goto нет?

Рома
11.05.2018
18:49:54
в Lua есть goto??

Tverd
11.05.2018
18:50:28
в 5.2 вроде появилась

Lucky
11.05.2018
18:56:19
используй goto, ничего другого нет.

работает в luajit и в Lua свежее 5.1

Philipp
11.05.2018
18:59:44
Можно костылём

Каким-нибудь условием

Типа if i == 1 then skip = true end

Страница 292 из 307