Jump to content
  • 0

pomoc [LUA] 2 dimenzionálny array


Guyy

Dotaz

Zdravím. Robím si Movement Recorder do CS:GO a mám problém z výpisom pozíc zo súboru do array-u a následným zistením maximalného čísla prvej "dimenzie" (array[ i ][ j ]). No problém je, že sa mi to "nevloží" do arrayu takže potom "PainTraverse" callback sa vôbec nevyvolá kvôli loopu ktorý tam je. Resp. kód vyzerá takto:

-- mapfile
[Start]
Count=1
1PosX=1262
1PosY=-73
1PosZ=-103


-- Recorder.lua

-- FileSys.GetVarStringFromFile(PathLocation, string:name, string:category, string:defaultvalue)
local movementpoint = { }

for i = 1, count do
 table.insert(movementpoint[i][0], FileSys.GetVarStringFromFile(mapfile, i.."PosX", "Start", "0"))
 table.insert(movementpoint[i][1], FileSys.GetVarStringFromFile(mapfile, i.."PosY", "Start", "0"))
 table.insert(movementpoint[i][2], FileSys.GetVarStringFromFile(mapfile, i.."PosZ", "Start", "0"))
end

"count"  ktorý je v loope je braný zo súboru. Zistovanie maximalného čísla prvej dimenzie potrebujem na vykreslenie circle na danej pozícií, kvôli tomu loopu sa tam nevyvolá nič..

for i = 1, #movementpoint do
...
end

 

Skúšal som do loopov nastaviť manualne maximalne hodnoty a aj tak to nešlo, čo ma privádza k tomu, že zápis pozícií do array-u bude zlý.

Nepredpokladám, že to tu niekto niekedy robil ale niekto kto vie lua mi určite bude vedieť pomôcť, predsta len je to array ktorý je vo všetkých LUA API rovnaký. Ďakujem za pomoc :)

Edited by Guyy
Link to comment
Share on other sites

5 odpovědí na tuto otázku

Recommended Posts

  • 0

Asi bych volil neco takoveho...

local movementpoint = {}

for i = 1, count do
	movementpoint[i] = {}
	movementpoint[i][0] = FileSys.GetVarStringFromFile(mapfile, i.."PosX", "Start", "0"))
	movementpoint[i][1] = FileSys.GetVarStringFromFile(mapfile, i.."PosY", "Start", "0"))
	movementpoint[i][2] = FileSys.GetVarStringFromFile(mapfile, i.."PosZ", "Start", "0"))
end

 

Link to comment
Share on other sites

  • 0
před 1 hodinou, ATomas said:

Asi bych volil neco takoveho...


local movementpoint = {}

for i = 1, count do
	movementpoint[i] = {}
	movementpoint[i][0] = FileSys.GetVarStringFromFile(mapfile, i.."PosX", "Start", "0"))
	movementpoint[i][1] = FileSys.GetVarStringFromFile(mapfile, i.."PosY", "Start", "0"))
	movementpoint[i][2] = FileSys.GetVarStringFromFile(mapfile, i.."PosZ", "Start", "0"))
end

 

To som skúsil hneď po tom ako som napísal tento topic, lebo ma napadlo, že v pawne som to robil takto, tak to zrobim aj tu. Ani toto nepomohlo.

Link to comment
Share on other sites

  • 0

Podle mě je syntax table.insert podle dokumentace odlišně.

table.insert (table, [pos,] value)

-- tim padem bych zkusil jinak

table.insert(movementpoint, {file x, file y, file z}) -- append na konec array
table.insert(movementpoint, i, {file x, file y, file z}) -- na danou čtenou pozici, ale v podstatě je to totéž co výše


-- druhá dimenze musí bejt taky table, 
-- ideálně lua table index začíná od 1

 

Link to comment
Share on other sites

  • 0
On 5. 3. 2021 at 9:00, HighPrint said:

Muzes ten loop vypsat? Jestli se vubec ten loop vola 

Ten loop sa vyvolá, dokonca toľko krát koľko je "Count" v súbore ale už movementpoint[x][x] už vypísať nemôžem a to neviem prečo. Tá správa je formatovaná takže by to isť malo ale mne správa nepríde, ked to odstránim tak ide.

On 5. 3. 2021 at 10:36, mxco said:

Podle mě je syntax table.insert podle dokumentace odlišně.


table.insert (table, [pos,] value)

-- tim padem bych zkusil jinak

table.insert(movementpoint, {file x, file y, file z}) -- append na konec array
table.insert(movementpoint, i, {file x, file y, file z}) -- na danou čtenou pozici, ale v podstatě je to totéž co výše


-- druhá dimenze musí bejt taky table, 
-- ideálně lua table index začíná od 1

 

Skusil som to prvé a aj druhé.. Ani pri jednom sa mi marker nezobrazil. Možné je že mám zlé zobrazenie. Lenže nemám ako zistiť ktoré je zle lebo ako som písal vyžšie, nemôžem si vypísať movementpoint[x][x]. Skúsim sa na to ešte keď tak opýtať na fóre aj keď ma pravdepodobne každý pošle kade lahšie keďže csgo komunita.. Ale ďakujem za ochotu.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...