fragen zur LUA scriptsprache

Black Mordred

Vertrauter
kann mir mal jemand helfen?

Ich hab in der lock on datei "export.lua" ua. folgendes gefunden:

Code:
LoGetTargetInformation()       -- (args - 0, results - 1 (table of current targets tables)) 
LoGetLockedTargetInformation() -- (args - 0, results - 1 (table of current locked targets tables)) 
 this functions return the table of the next target data
 target =
 {
	ID ,                                  -- world ID (may be 0 ,when ground point track)
	type = {level1,level2,level3,level4}, -- world database classification
	country = ,                           -- object country
	position = {x = {x,y,z},   -- orientation X ort  
	            y = {x,y,z},   -- orientation Y ort
				z = {x,y,z},   -- orientation Z ort
				p = {x,y,z}}   -- position of the center  
	velocity =        {x,y,z}, -- world velocity vector m/s
	distance = ,               -- distance in meters
	convergence_velocity = ,   -- closing speed in m/s
	mach = ,                   -- M number
	delta_psi = ,              -- aspect angle rad
	fim = ,                    -- viewing angle horizontal (in your body axis) rad
	fin = ,                    -- viewing angle vertical   (in your body axis) rad
	flags = ,				   -- field with constants detemining  method of the tracking 
								--	whTargetRadarView		= 0x0002;	-- Radar review (BVR) 
								--	whTargetEOSView			= 0x0004;	-- EOS   review (BVR)
								--	whTargetRadarLock		= 0x0008;	-- Radar lock (STT)  == whStaticObjectLock (pinpoint) (static objects,buildings lock)
								--	whTargetEOSLock			= 0x0010;	-- EOS   lock (STT)  == whWorldObjectLock (pinpoint)  (ground units lock)
								--	whTargetRadarTrack		= 0x0020;	-- Radar lock (TWS)
								--	whTargetEOSTrack		= 0x0040;	-- Radar lock (TWS)  == whImpactPointTrack (pinpoint) (ground point track)
								--	whTargetNetHumanPlane	= 0x0200;	-- net HumanPlane
								--	whTargetAutoLockOn  	= 0x0400;	-- EasyRadar  autolockon
								--	whTargetLockOnJammer  	= 0x0800;	-- HOJ   mode

	reflection = ,             -- target cross section square meters
	course = ,                 -- target course rad
	isjamming = ,              -- target ECM on or not
	start_of_lock = ,          -- time of the beginning of lock
	forces = { x,y,z},         -- vector of the acceleration units 
	updates_number = ,         -- number of the radar updates
 }
die export.lua datei gibt die sachen aus (klar.. heisst ja auch export.lua). gibt es jetzt ein programm / möglichkeit um rauszufinden was es beim spielen ausgibt?

Beispiel: ich schalte im spiel eine Mig-29 auf, wie kann ich jetzt rausfinden, was genau ausgeben wird (also eigentlich nur die werte, die beim aufschalten der mig entstehen)

Ich hoffe ich habe euch jetzt nicht ganz verwirrt.


PS. gibt es irgendwas, womit ich die daten nutzbar machen kann?



d
d
folgende sachen gehen auch nicht :(



d
Anmerkung:
Code:
local file = io.open("./Temp/Export.log", "w")
	if file then
		io.output(file)
	end
ist immer im script dabei, ich führ es hier nur nicht extra auf!​

d

Code:
trg  = LoGetLockedTargetInformation()
io.write(string.format("ID=%d", trg.ID))
Code:
function LoGetLockedTargetInformation()
	return ID
	io.write(string.format("ID=%d", ID))
end
Code:
function LoGetLockedTargetInformation(ID)
	io.write(string.format("ID=%d", ID))
end
Code:
function LoGetLockedTargetInformation(_ID)
	io.write(string.format("ID=%d", _ID))
end
Code:
local trg = LoGetLockedTargetInformation()
	if trg then
	io.write(string.format("locked targets ,time = %.2f\n",t))
	for i, cur in pairs (trg) do
	    io.write(string.format("ID = %d, Country = %d", cur.ID, cur.Country))
Code:
 trg = LoGetLockedTargetInformation ()
	trg = 	{
	    ID 		= _tID,
	        }
io.write(string.format("ID=%d", _tID ))
 
Zuletzt bearbeitet:
scheinbar versteht das keiner :blink:


was ich machen will: IFF für die f-15

sprich: es soll überprüft werden, ob das aufgeschaltete ziel freundlich bzw. feindlich ist. ist es freundlich soll etwas passieren (was, ist vorerst noch nicht so wichtig), ist es feindlich, soll einfach nichts passieren.


kann mir da jemand helfen?


edit: wie verwende ich sowas?
Code:
LoGetObjectById() -- (args - 1 (number), results - 1 (table))
 Returned object table structure:
 { 
	Name = 
	Type =
	Subtype =
	Country = 
	Coalition = 
	LatLongAlt = { Lat = , Long = , Alt = }
	Heading =
 }
sprich wenn ich jetzt nur die die coalition wissen will?!?
 
Zuletzt bearbeitet:
bis jetzt schaut das ganze so aus (ich hoffe ich blamier mich jetzt nicht
bag.gif
, aber zu meiner verteidigung muss ich sagen, dass ich vorher noch nie was mit lua oä. gemacht hab.. )


Code:
[COLOR="Navy"]loca[/COLOR]l PlayerID=LoGetPlayerPlaneId();
[COLOR="Navy"]local[/COLOR] _isPlane;

	[COLOR="Navy"]if [/COLOR]PlayerID == [COLOR="Magenta"]6[/COLOR] [COLOR="Navy"]then[/COLOR]
			_isPlane = [COLOR="Magenta"]1[/COLOR]
	[COLOR="Navy"]else[/COLOR]
			_isPlane = [COLOR="Magenta"]0[/COLOR]
	[COLOR="Navy"]end[/COLOR]

[COLOR="Navy"]local[/COLOR] _Failure = LoGetMCState;

[COLOR="Navy"]if not[/COLOR] _Failure [COLOR="Navy"]then[/COLOR]
[COLOR="Navy"]	return;[/COLOR]
[COLOR="Navy"]else[/COLOR]
	_NoFailure = [COLOR="Magenta"]1[/COLOR]
[COLOR="Navy"]end[/COLOR]

[COLOR="Navy"]if[/COLOR] _NoFailure = [COLOR="Magenta"]1[/COLOR] [COLOR="Navy"]and[/COLOR] _isPlane = [COLOR="Magenta"]1[/COLOR] [COLOR="Navy"]then[/COLOR]
	_allOK =[COLOR="Magenta"] 1[/COLOR]
[COLOR="Navy"]else[/COLOR]
	_allOK = [COLOR="Magenta"]0[/COLOR]
[COLOR="Navy"]end[/COLOR]

[COLOR="Navy"]if [/COLOR]_allOK == 1 [COLOR="Navy"]and[/COLOR] [COLOR="DarkGreen"]-- ³[/COLOR]
[COLOR="DarkGreen"]-- FRIENDLY -> 		IFF - X[/COLOR]
[COLOR="Navy"]else[/COLOR]
[COLOR="DarkGreen"]-- HOSTILE 	-> no 	IFF - X[/COLOR]
[COLOR="Navy"]end[/COLOR]
³ für das was da reinkommen sollte brauch ich erstmal jemanden, der mir das vom 1./2. post erklärt ...

ist bis jetzt allerdings nur ein teil...
 
Zuletzt bearbeitet:
naja, sollte es gar nichts werden frag ich im lockon.ru forum...

da wirds ja hoffentlich jemanden geben, der das auf die reihe bekommt
 
soweit ich das verstanden hab funzt das so:
Code:
LoGetObjectById()
 { 
	Name = _VARIABLE1
	Type = _VARIABLE2
	Subtype = _VARIABLE3
	Country = _VARIABLE4
	Coalition = _VARIABLE5
usw...
 }



masterfrage:
wie kann ich rausfinden, ob etwas in einer tabelle ist?

also zb.

Code:
Tabelle = {
usa = land1
uk = land2
tdl = land3
...
}

wie kann ich jetzt rausfinden ob uk in der tabelle ist?


g
g
g

- ZWISCHENSTAND -

Code:
-- make shure that used only with F-15C

	PlayerID=LoGetPlayerPlaneId()
local _isPlane

	if PlayerID == 6 then
			_isPlane = true
	else
			_isPlane = false
	end


-- make shure no important failure


local _Failure = LoGetMCState;

if  _Failure == "RadarFailure" or "HUDFailure" then
		_NoFailure = true
else
		_NoFailure = false
end
	
-- convert countries


CountryCodeLookupTable=
	{
		["Belgium"]			=	"be",
		["Belgique"]		=	"be",
		["Belgien"]			=	"be",
		["Áåëüãèÿ"]			=	"be",

		["Canada"]			=	"ca",
		["Kanada"]			=	"ca",
		["Êàíàäà"]			=	"ca",

		["Denmark"]			=	"dk",
		["Danemark"]		=	"dk",
		["Äàíèÿ"]			=	"dk",

		["France"]			=	"fr",
		["Frankreich"]		=	"fr",
		["Ôðàíöèÿ"]			=	"fr",

		["Georgia"]			=	"ge",
		["Géorgie"]			=	"ge",
		["Georgien"]		=	"ge",
		["Ãðóçèÿ"]			=	"ge",

		["Germany"]			=	"de",
		["Allemagne"]		=	"de",
		["Deutschland"]		=	"de",
		["Ãåðìàíèÿ"]		=	"de",

		["Israel"]			=	"il",
		["Israël"]			=	"il",
		["Èçðàèëü"]			=	"il",

		["Netherlands"]		=	"nl",
		["Pays-Bas"]		=	"nl",
		["Niederlande"]		=	"nl",
		["Íèäåðëàíäû"]		=	"nl",

		["Norway"]			=	"no",
		["Norvège"]			=	"no",
		["Norwegen"]		=	"no",
		["Íîðâåãèÿ"]		=	"no",

		["Russia"]			=	"ru",
		["Russie"]			=	"ru",
		["Russland"]		=	"ru",
		["Ðîññèÿ"]			=	"ru",

		["Spain"]			=	"es",
		["Espagne"]			=	"es",
		["Spanien"]			=	"es",
		["Èñïàíèÿ"]			=	"es",

		["Turkey"]			=	"tr",
		["Turquie"]			=	"tr",
		["Turkei"]			=	"tr",
		["Òóðöèÿ"]			=	"tr",

		["UK"]				=	"uk",
		["Angleterre"]		=	"uk",
		["Großbritannien"]	=	"uk",
		["Âåëèêîáðèòàíèÿ"]	=	"uk",

		["Ukraine"]			=	"ua",
		["Óêðàèíà"]			=	"ua",

		["USA"]				=	"us",
		["Etats-Unis"]		=	"us",
		["ÑØÀ"]				=	"us",

		["Iran"]			=	"ir",

		["Iraq"]			=	"iq",

		["Greece"]			=	"gr",

		["Italy"]			=	"it",
	},
	


-- Collect target infos


LoGetLockedTargetInformation=function(target)
		target = {country = _tCountry},
	return target;
end,





-- Check if all available  
  
if _NoFailure == true and _isPlane == false then
 	_allOK = true
else
	_allOK = false
end
wenn ich jetzt auf "compile script" drücke kommt folgende fehlereldung:
[ERROR]unexpected symbol near '="' (116)

das ganze bezieht sich auf folgendes (braun markiert):

Code:
[COLOR="Sienna"]LoGetLockedTargetInformation=function(target)[/COLOR]
		target = {country = _tCountry},
	[COLOR="Blue"]return[/COLOR] target;
[COLOR="Blue"]end[/COLOR],





Anmerkung:

dieser Teil ist eine funktion. zum vergleich, es sollte von diesem typ sein:
Code:
function factorial(n)
   if n == 0 then
      return 1
   else
      return n * factorial(n - 1)
   end
 end

allerdings sollte statt einem wert (hier n) eine tabelle ausgegeben werden (hier target).
nur wie man sichs denken kann funktioniert der ganze schei*s nciht! :thunder:
 
Zuletzt bearbeitet:
--- scheinbar haben sich alle probleme gelöst: :-D ---

Eagle dynamics hat alle funktionen zum export aktiviert, nur diese nicht:

Code:
LoGetLockedTargetInformation()

und ohne die gibts kein IFF :(


Kurz gesagt: es ist alles umsonst :cry:


PS. danke übrigens noch an tommy. dein tipp hat funktioniert! :)
 
Zuletzt bearbeitet:
ich hab mich doch dazu überredet, noch etwas mit lua rumzubasteln.
hab zur erprobung des exportes mal folgendes gebastelt:

Code:
-- test

_time = LoGetMissionStartTime

local file = io.open("./Temp/Export.log", "w")
	if file then
		io.output(file)
	end
	


_tstart = LoGetMissionStartTime()

io.write(string.format("start = %.2f", _tstart))
// edit: es geht jetzt :lol:

ich hab zwar bis jetzt eigentlich nur mw scripts geschrieben, aber ich bring doch glatt lua zeugs hin (einfaches jedenfalls :ugly:)



dneue frage:

ich hab mich entschlossen die funktion jetzt mal zu testen:



PHP:
-- file
_time = LoGetMissionStartTime

local file = io.open("./Temp/Export.log", "w")
	if file then
		io.output(file)
	end
	

-- gen
_tstart = LoGetMissionStartTime()



_target = LoGetTargetInformation()
	_target = 	{
	            country			= _tCountry,
	            ID         		= _tID,
	            start_of_lock	= _tSoL,
				},


-- export
io.write(string.format("start = %.2f", _tstart))    -- working
-- test1
io.write(string.format("Country = %d", _tCountry))
io.write(string.format("ID = %d", _tID))
io.write(string.format("start of lock = %.2f", _tSoL))
die error enthält nichts darüber, aber in der export.log datei (wo das ganze reingespeichert werden soll) steht nur:
Code:
start = 43200.00

liegt das jetzt am script, oder an der funktion? :huh:
 
Zuletzt bearbeitet:
PHP:
local trg = LoGetLockedTargetInformation()
	if trg then
	io.write(string.format("locked targets ,time = %.2f\n",t))
	for i, cur in pairs (trg) do
	    io.write(string.format("ID = %d, Country = %d", cur.ID, cur.Country))
    end
    end
dieser teil ist so von ED beschrieben (country hab ich eingefügt). nur wird nichts exportiert. (in der error datei ist aber nichts zu finden)

es geht darum, va. das land des aufgeschalteten ziels zu exportieren (in eine datei). Kann es sein, dass das nur so lange drinnen steht, bis ich die aufschaltung breche?!?
irgendwie muss doch zum rausfinden sein, ob die funktion funktioniert :cry:


fneue version: (funktioniert zwar auch nicht :thunder: gibt aber keinen fehler)

PHP:
-- EXPORTTEST



-- file

local file = io.open("./Temp/Export.log", "w")
	if file then
		io.output(file)
	end

-- data
	
local _target = LoGetLockedTargetInformation()
	if _target then
		for i,cur in pairs(_target) do
			Country = _tCountry
			ID		= 	_tID
end
end

-- export

io.write(string.format("TargetCountry = %s, ID = %d", cur._tCountry, cur._tID))
 
Zuletzt bearbeitet:
Strange:

PHP:
tbl =   {
	a = 3,
	b = 33,
	c = 333,
	    }
	    

print (tbl.a)
print (tbl.b)
print (tbl.c)
das gibt dann 3, 33 und 333 aus, wie es soll

wenn ich's aber jetzt so mache:

PHP:
trg  = LoGetLockedTargetInformation()
io.write(string.format("ID=%d", trg.ID))
(die funktion gibt eine tabelle aus!)

gibts nichts aus :nono:


d
d
Ich hab jetzt mal das probiert:

Code:
funktion = {
	a = 1,
	b = 2,
	c = 3,
	        }
	        

trg = funktion

print (trg.a)
print (trg.b)
print (trg.c)
ausgegeben werden 1, 2 und 3 (auch in eine datei!)

die funktion von lock on sollte auch eine tabelle ausgeben (hier im beispiel funktion)

die tabelle speichere ich dann in eine variable (trg)
jetzt sollen aus der variable, die jetzt eine tabelle ist, verschiedene werte ausgegeben werden (hier a-c).

Im beispiel funktionierts, so aber nicht:



Code:
-- das legt die datei fest in welche exportiert wird
local file = io.open("./Temp/Export.log", "w")
	if file then
		io.output(file)
	end


trg  = LoGetLockedTargetInformation()
io.write(string.format("ID=%d", trg.ID))

--> strange!
 
Zuletzt bearbeitet:
1. Geh damit endlich in ein Forum, wo es auch Leute gibt, die diese Skriptsprache verstehen - hier hilft dir ja keiner.
2. Warum testest du nicht mit den gleichen Ausgabefunktionen? Einmal nimmst du print, einmal io.write. Wer sagt dir, dass dieses io.write macht was du denkst? Wenn es mit print funktioniert, dann nimm doch print um die Werte auszugeben...
 
1. hab inzwischen schon in einem lock on moddingforum mein problem beschrieben (antwort blieb allerdings noch aus) und auch noch ein paar andere lua programmierer gefragt. leider noch ohne ergebnisse..
aber immerhin hab ich die funktion zum laufen gebracht (dh. sie funktioniert).
trotzdem wüllt das genau 781 zeilen meiner error logfile :blink:

LuaExport::LuaExportAfterNextFrame: ./Config/export/test.lua:19: bad argument #2 to `format' (number expected, got table)
als ich das zum ersten mal gelesen habe, hab ich es entsprechend geändert, dass nur noch der benötigte wert aus der tablle exportiert werden soll -> nur dann ist er nil ...

naja.. wir werden sehen... wenn ich das endlich mal schaffe, kann ich endlich mit delphi (oä.) die dazugehörige anwendug machen (und damit kennt sich hier sicher jemand aus)

zu 2:

print gibt nur direkt im programmierfenster aus. mit write wird das ergebnis in eine datei geschrieben (oder exportiert)
dh. ich kann scripte die lockonspezifische funktionen (zb. Logetlockedtargetinformation) nicht per print ausgeben, beispiele (ohne nennenswerte funktionen) aber schon.