Lua Variablen ?
Übersicht

![]() |
eleXityehemals "BlackProgrammer"Betreff: Lua Variablen ? |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi erstma,
ich hab nen kleines problem, unzwar habe ich die benutzer einstellungen bei meinem game in einem lua script ausgelagert, welches ich mit den standart (axe.luascript) funktionen aufrufe, nun mein problem ist wie bekomme ich die werte die ich den variablen zuweise in bmax rein ?? Lua-Script Code: [AUSKLAPPEN] -- Globale einstellungen
re_driver = 0 re_width = 1024 re_height = 768 re_depth = 32 also das ich zb so ne funktion aufrufe lua_GetNumberOfVariable("re_width") gibts ja leider nicht oder ich hab nix gefunden mhh ich hoffe ihr versteh mich jetzt halbwegs und könnt mir helfen wäre sehr dankbar dafür ^^ mfg |
||
nVidia 570GTX | AMD Phenom II X6 | 8 GB RAM | 1TB | Win 7 Ultimate 64 SP1 | B3D, BMAX, BP, C#
Projekt : Worklog |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du ein Lua-Script nur für ein Paar einstellungen benutzen willst, würd ich dir eher zu einem einfachen Ini-Parser raten. | ||
![]() |
eleXityehemals "BlackProgrammer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
mhh danke für die schnelle antwort, leider benutze ich
lua für viele sachen, es muss ja eine möglichkeit geben die werte zu bekommen ? |
||
nVidia 570GTX | AMD Phenom II X6 | 8 GB RAM | 1TB | Win 7 Ultimate 64 SP1 | B3D, BMAX, BP, C#
Projekt : Worklog |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jo gleich wie du alle anderen Werte von LUA bekommst, da LUA eigentlich nur einen Variablentyp hat ... | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
eleXityehemals "BlackProgrammer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
du meinst also mit lua_CheckString usw... ?,
wüsste nicht wie das gehen sollte da man die funktionen ja bei den in bmax geschriebenen funktionen benutzt um die werte zu bekommen, oder ich hab gerade keine idee wie ich das dann machen sollte ?? |
||
nVidia 570GTX | AMD Phenom II X6 | 8 GB RAM | 1TB | Win 7 Ultimate 64 SP1 | B3D, BMAX, BP, C#
Projekt : Worklog |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich glaube sowas geht nicht... zumindest habe ich noch nicht gesehen wie das gehen soll
sowas brauche ich auch ich will variablen nach lua-skript übergeben (das geht, indem man ein script ausführt) - aber dann zurückholen hab ich noch nix gefunden... man kann aber eigene funktion aufrufen (so mache ich das jetzt): myfunc ("varname", varvalue) |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
eleXityehemals "BlackProgrammer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
hehe, diese methode ist mir ja auch bekannt, nur
ist es da ja umständlich für jede variable eine funktion zu schreiben ![]() xml oder ini, danke für eure hilfe. und ein frohes pfingstwochenende mfg Edit:// Ich mache das jetzt doch so wie du, mit funktionen die die werte auslesen und dann in einem type abspeichern wo ich sie dann raussuchen lassen kann, nach dem namen ![]() |
||
![]() |
Ratchet |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] lua_getglobal(L, "width")
lua_getglobal(L, "height") If (lua_isnumber(L, -2) = 0) Or (lua_isnumber(L, -1) = 0) then Print("Invalid configuration file!") End Else width = lua_tonumber(L, -2) height = lua_tonumber(L, -1) End If Es ist auch möglich alle Variablen mit einer Schleife durchzuscrollen, deren Name, Type, Wert usw rauszubekommen. Steht alles im "Programmieren mit Lua" Buch. Wer viel mit Lua arbeitet sollte sich das besorgen, lohnt sich wirklich (Amazon.de: Programmieren mit Lua). Aber das habe ich jetzt leider nicht hier. Falls du den Code brauchst, sag bescheid, ich poste ihn heute Abend. Zitat: ich glaube sowas geht nicht
Alles was in Lua existiert und passiert kann man von außen manipulieren. Wirklich ALLES ![]() |
||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ehrlich gesagt verstehe ich das mit -1 oder -2 nicht... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
eleXityehemals "BlackProgrammer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
mhh hab garnicht bemerkt das noch jmd
geantwortet hat ![]() also danke für den tip mit dem buch werde ich mir bestimmt mal zu gemüte führen ^^, ja also wenn du das vllt noch mit den -1, -2 erklären könntest, ich versteh das auch nicht so richtig, das wäre echt super mfg |
||
nVidia 570GTX | AMD Phenom II X6 | 8 GB RAM | 1TB | Win 7 Ultimate 64 SP1 | B3D, BMAX, BP, C#
Projekt : Worklog |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Each call (lua_getglobal) pushes the corresponding global value onto the top of the stack, so that the width will be at index -2 and the height at index -1 (at the top).
hm... geht der Speicher dann nicht irgendwann aus? andere Frage: wie kann man in Lua Script-Fehler "ermitteln" wenn ich jetzt z.B. luaL_dostring aufrufe.... irg. checke ich das nicht ah hab gefunden: Zitat: It returns 0 if there are no errors or 1 in case of errors.
|
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Ratchet |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: ehrlich gesagt verstehe ich das mit -1 oder -2 nicht...
Ganz einfach. Lua arbeitet mit eiem Stack. Das bedeutet alles was ich aufrufe landet im Stack und muss nacheinander abgearbeitet werden. Da ich in meinem Beispiel zwei mal lua_getglobal hintereinander aufrufe habe ich zwei Werte im Stack die dann den Index -1 und -2 haben. Der Lua Stack sieht dann so aus:
-1 ist halt der Unterste, -2 der vorletzte usw. Ganz ehrlich ist das mit den Indexen auch echt komisch. Ist halt eine andere Art der Programmierung. Theoretisch kann man das auch so machen, ist allerdings nicht getestet. Code: [AUSKLAPPEN] lua_getglobal(L, "width")
If lua_isnumber(L, -1) = 1 then width = lua_tonumber(L, -1) End If lua_getglobal(L, "height") If lua_isnumber(L, -1) = 1 then height = lua_tonumber(L, -1) End If Fehler anzeigen geht so: Code: [AUSKLAPPEN] Error = luaL_loadbuffer(Lua, Script, Script.Length, Filename)
If Error Then Print(String.FromCString(lua_tostring(Lua, -1))) lua_pop(Lua, -1) End If Ob du luaL_dostring oder luaL_loadbuffer aufrufst ist dabei egal. |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
aha... dann muß man wohl jedes mal auch lua_pop() verwenden - nachdem man die Variable abgefragt hat... das mit dem stack finde ich total sch... bei lua - ich meine wenn es optional wäre als Lib, dann OK - aber für alles nur solche stacks zu nutzen ist ganz schön heavy... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
eleXityehemals "BlackProgrammer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
oha ... so geht das also, naja das finde ich aber auch
ziemlich nervig anstat man da gleich eine funktion in lua hat die direkt den wert zurück gibt aber naja ![]() das wird so schon gehen danke für die erläuterung mfg |
||
nVidia 570GTX | AMD Phenom II X6 | 8 GB RAM | 1TB | Win 7 Ultimate 64 SP1 | B3D, BMAX, BP, C#
Projekt : Worklog |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ihr könnt euch doch auch aus den paar Zeilen eine eigene Funktion basteln. Also ungefähr so:
Code: [AUSKLAPPEN] Function Lua_GetVarNum( l, varname$ ) lua_getglobal(L, varname$) If lua_isnumber(L, -1) = 1 then Return lua_tonumber(L, -1) End Function (ungetestet) Das würde das ja dann doch viel vereinfachen. Ansonsten finde ich die Methode von Lua auch recht...blöd... |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann nutz das MicroC oder Squirrel Modul wenn du mit LUA net umgehen kannst. Ist halt keine simple "Minisprache", BM ist nen Witz gegenüber LUA und Python und dergleichen was die Sprache und ihre Fähigkeiten betrifft. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
LUA ist die einzige Basic-Like Scriptsprache
Zitat: Ist halt keine simple "Minisprache", BM ist nen Witz gegenüber LUA und Python
was ich bisher bei LUA gesehen habe, ist es einfacher als BM - bei Python sieht das vllt anders aus... aber Python ist mir schon zu fett... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann kratzt dur derzeit an der Oberfläche von LUA.
Und stimmt nicht, ist nicht die einzige. Der Macher der MicroC / Squirrel Module hatte noch ein 3tes Modul, das vorgänger Modul von MicroC, das war Basic Syntax. Binary Phoenix, bpscript Leider steht es als einziges net zum download, denke jedoch auf anfrage würden sie es auch rausgeben, ich habs sonst auch noch drauf. Obschon: MicroC ist effektiv nur pure C like syntax also kein gewurstel a la C++ und so und drum recht einfach zu nutzen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
MicroC scheint mir etwas zu sein was relativ unbekannt ist... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ist selbst entwickelt worden von ihnen.
Die weiterführung von BP Script. Nur das Squirrel Modul ist eine sonst auch genutzte Sprache ... Aber wenn man nicht LUA Power und Komplexität braucht für den eigenen Bedarf, ist MicroC eigentlich viel einfacher zu handhaben als das Riesenmonster LUA. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group