Size: a a a

2020 December 11

S

Snusmumriken in pro.lua
?
for a=1,#subData do
for b=1,#subData[a].nums do
for c = 1,#subData[a].nums[b] do

local x = subData[a].nums[b][c][1]

if x>=677 and x <= 860 then
local n = 3
subData[a].nums[b][c][1] = subData[a].nums[b][c][1]+n
subData[a].nums[b][c][1] = subData[a].nums[b][c][2]+n
subData[a].nums[b][c][3] = subData[a].nums[b][c][3]

elseif x>=860 and x <= 920  then
local n=4
subData[a].nums[b][c][1] = subData[a].nums[b][c][1]+n
subData[a].nums[b][c][1] = subData[a].nums[b][c][2]+n
subData[a].nums[b][c][3] = subData[a].nums[b][c][3]


elseif x>=920 and x <= 1039 then
local n=5
subData[a].nums[b][c][1] = subData[a].nums[b][c][1]+n
subData[a].nums[b][c][1] = subData[a].nums[b][c][2]+n
subData[a].nums[b][c][3] = subData[a].nums[b][c][3]


elseif x>=1039 and x <= 1061 then
local n = 21
subData[a].nums[b][c][1] = subData[a].nums[b][c][1]+n
subData[a].nums[b][c][1] = subData[a].nums[b][c][2]+n
subData[a].nums[b][c][3] = subData[a].nums[b][c][3]


elseif x>=1061 and x <= 1346 then
local n = 24
subData[a].nums[b][c][1] = subData[a].nums[b][c][1]+n
subData[a].nums[b][c][1] = subData[a].nums[b][c][2]+n
subData[a].nums[b][c][3] = subData[a].nums[b][c][3]


elseif x>=1346 and x <= 1382 then
local n = 33
subData[a].nums[b][c][1] = subData[a].nums[b][c][1]+n
subData[a].nums[b][c][1] = subData[a].nums[b][c][2]+n
subData[a].nums[b][c][3] = subData[a].nums[b][c][3]


end

end
end
end
Ещё есть одна штучка. Таблицы это ссылки.
local nums = subData[a].nums
nums[b][c][1] = nums[b][c][1] + n

Всё, ты изменил subData[a].nums.[b][c][1], но гораздо короче.
источник

?

? in pro.lua
Спасибо большое, уже решил
источник

?

? in pro.lua
Косо криво пока, но результат то что надо
источник

?

? in pro.lua
Может кому пригодится, нашел на просторах инета.
источник

?

? in pro.lua
function table.save(tbl,file)
       -- recursively saves table data to a file, human-readable and indented
       -- supported types: number, string, boolean, tables of the same
       local f,err = io.open(file,"w")
       if err then
               print("Error: Unable to open file for writing: "..file.."\nDetails: "..err)
               return
       end
       local indent = 1

       -- local functions to make things easier
       local function exportstring(s)
               s=string.format("%q",s)
               s=s:gsub("\\\n","\\n")
               s=s:gsub("\r","")
               s=s:gsub(string.char(26),""..string.char(26).."")
               return s
       end
       local function serialize(o)
               if type(o) == "number" then
                       f:write(o)
               elseif type(o) == "boolean" then
                       if o then f:write("true") else f:write("false") end
               elseif type(o) == "string" then
                       f:write(exportstring(o))
               elseif type(o) == "table" then
                       f:write("{\n")
                       indent = indent + 1
                       local tab = ""
                       for i=1,indent do tab = tab .. "        " end
                       for k,v in pairs(o) do
                               f:write(tab .. "[")
                               serialize(k)
                               f:write("] = ")
                               serialize(v)
                               f:write(",\n")
                       end
                       indent = indent - 1
                       tab = ""
                       for i=1,indent do tab = tab .. "        " end
                       f:write(tab .. "}")
               else
                       print("unable to serialzie data: " .. tostring(o))
                       f:write("nil, -- ***ERROR: unsupported data type!***")
               end
       end

       -- here's the actual save process
       f:write("return {\n")
       for k,v in pairs(tbl) do
               f:write("       [")
               serialize(k)
               f:write("] = ")
               serialize(v)
               f:write(",\n")
       end
       f:write("}")
       f:close()
end

function table.load(file)
       local data,err = loadfile(file)
       if err then return nil,err else return data() end
end
источник

?

? in pro.lua
Я для своих нужд немного правил, косо криво пока, но то что надо было срочно сделать, сделал, но в целом вот оригинал .
источник
2020 December 12

LU

Lucky Uk in pro.lua
алярм! спамбот атакует
источник

H

Hello, World! in pro.lua
источник

AY

Arslan Yulbirdin in pro.lua
Тссс..! Пускай спит, выходные же
источник
2020 December 13

EV

Eduard Voronkin in pro.lua
обязан ли я после lua_call чистить стек (lua_pop)? или след вызов lua_call сам это сделает?
источник

EV

Eduard Voronkin in pro.lua
источник

S

Snusmumriken in pro.lua
lua_call помнится очищает и функцию и аргументы, внутри должны оставаться только возвращённые аргументы из вызванной функции. То что было над функцией остаётся.
источник

EV

Eduard Voronkin in pro.lua
Внутри? Где внутри?
Грубо говоря, lua_call положит на стек столько возвращаемых значений, сколько я попрошу (если функция ничего не вернула, когда должна была, то положит NILы).
И вопрос такой: нужно ли мое стек от этих NILов чистить? Или я могу просто проверить, что если на стеке не то, что мне нужно (lua_isnumber, например), то просто забить?
источник

EV

Eduard Voronkin in pro.lua
И следущий lua_call этой же функции все подчистит
источник

EV

Eduard Voronkin in pro.lua
Snusmumriken
lua_call помнится очищает и функцию и аргументы, внутри должны оставаться только возвращённые аргументы из вызванной функции. То что было над функцией остаётся.
Что означает очищает функцию?
источник

S

Snusmumriken in pro.lua
Eduard Voronkin
Внутри? Где внутри?
Грубо говоря, lua_call положит на стек столько возвращаемых значений, сколько я попрошу (если функция ничего не вернула, когда должна была, то положит NILы).
И вопрос такой: нужно ли мое стек от этих NILов чистить? Или я могу просто проверить, что если на стеке не то, что мне нужно (lua_isnumber, например), то просто забить?
> Внутри? Где внутри? 
Внутри стека.
> Грубо говоря, lua_call положит на стек столько возвращаемых значений, сколько я попрош
у (если функция ничего не вернула, когда должна была, то положит NILы).
Вроде того.
> И вопрос такой: нужно ли мое стек от этих NILов чистить?
Нет, за редким исключением.
> Что означает очищает функцию?
Что делает lua_call? (подсказка: запускает функцию). Где лежит ссылка на функцию? (подсказка: в стеке). Откуда lua_call вычищает функцию? (подсказка: из стека).

Во время сишного программирования, тебе крайне желательна какая-нибудь функция, которая умеет печатать содержимое стека.
источник

S

Snusmumriken in pro.lua
Например вот такая:

void luax_printstack (lua_State *L) {
 int top=lua_gettop(L);
 for (int i=1; i <= top; i++) {
   printf("%d\t%s\t", i, luaL_typename(L,i));
   switch (lua_type(L, i)) {
     case LUA_TNUMBER:
       printf("%g\n",lua_tonumber(L,i));
       break;
     case LUA_TSTRING:
       printf("%s\n",lua_tostring(L,i));
       break;
     case LUA_TBOOLEAN:
       printf("%s\n", (lua_toboolean(L, i) ? "true" : "false"));
       break;
     case LUA_TNIL:
       printf("%s\n", "nil");
       break;
     default:
       printf("%p\n",lua_topointer(L,i));
       break;
   }
 }
}

И ты такой берёшь, и выводишь стек в разные моменты жизнедеятельности.
источник

EV

Eduard Voronkin in pro.lua
Понял, спасибо!
источник

EV

Eduard Voronkin in pro.lua
Snusmumriken
> Внутри? Где внутри? 
Внутри стека.
> Грубо говоря, lua_call положит на стек столько возвращаемых значений, сколько я попрош
у (если функция ничего не вернула, когда должна была, то положит NILы).
Вроде того.
> И вопрос такой: нужно ли мое стек от этих NILов чистить?
Нет, за редким исключением.
> Что означает очищает функцию?
Что делает lua_call? (подсказка: запускает функцию). Где лежит ссылка на функцию? (подсказка: в стеке). Откуда lua_call вычищает функцию? (подсказка: из стека).

Во время сишного программирования, тебе крайне желательна какая-нибудь функция, которая умеет печатать содержимое стека.
>Нет, за редким исключением.

Сейчас провел эксперимент - NILы остаются
источник

S

Snusmumriken in pro.lua
Правильно, если ты их ожидаешь — они остаются, и их надо чистить.
lua_pop(L, n);
источник