Jop das geht auch. Alternativ gibt es auch string.len(string)
Beiträge von sbx320
-
-
Äh da hast du irgendwas durcheinander gebracht
Lua
Alles anzeigenfunction RespawnArmy (player, seat) local armyVehicles = { Army1, Army2, Army3, Army4, Army5, Army6, Army7, Army8, Army9, Army10, Army11, Army12, Army13, Army14, Army15, Army16, Army17, Army18, Army19, Army20, Army21, Army22 } if (getElementData(player,"Fraktion") == 4) then if (getElementData(player,"Rank") == 5) then for index, veh in ipairs(armyVehicles) do if (not getVehicleOccupant(veh)) and #getVehicleOccupants(veh) == 0 then respawnVehicle( veh ) end end end end end addCommandHandler ( "calls", RespawnArmy )
-
Du hast bei meinem Code das # vergessen. Ein # vor einer Table gibt die Größe der Table zurück. Wenn niemand im Auto sitzt sollte die Größe 0 sein. Da getVehicleOccupants den Fahrersitz als [0] einträgt, muss zusätzlich noch eine Überprüfung für den Fahrersitz via getVehicleOccupant gemacht werden.
Außerdem frag ich mich wieso hier versucht wird den (Element-)Typ des Passagiers zu bestimmen. Der ist entweder player, ped oder false.
-
Doch das geht. Siehe dazu http://lua-users.org/wiki/SimpleLuaClasses
Ein Aufruf von
funktioniert z.B.Durch setmetatable wird "obj" in "myObject.create" gesagt, dass es die Eigenschaften von "myObject" annehmen soll. myObject hat wiederum einen Tableeintrag namens "__index". Wenn __index jetzt eine Table ist wird bei einem fehlgeschagenem Versuch etwas in "obj" zu finden in der Table (In diesem Fall "myObject") weitergesucht.
-
-
Moin,
aktuell scripte ich recht viel mit Metatablen bzw. Klassen. Jetzt ist mir bei einem setTimer jedoch aufgefallen, dass sich die Adresse der Table selbstständig und automatisch ändert.
Lua
Alles anzeigenmyObject = {} myObject.__index = myObject function myObject.create() local obj = {} setmetatable(obj,myObject) return obj end function myObject:doStuff() outputChatBox("Toller Text!") end function timerCall(objectInstance) outputDebugString(tostring(objectInstance)) -- INFO: table: 03D4EA60 objectInstance:doStuff() -- attempt to call method doStuff (a nil value) end local tollesObj = myObject.create() outputDebugString(tostring(tollesObj)) -- INFO: table: 03D4DF20 setTimer(timerCall, 1000, 1, tollesObj) outputDebugString(tostring(tollesObj)) -- INFO: table: 03D4DF20
Wieso ändert sich die Adresse von "tollesObj" einfach so? Irgendwo muss da ja n Fehler drin sein.
MrX
-
Zitat von http://wiki.multitheftauto.com/wiki/OnMarkerHit
The source of this event is the marker that got hit by the element.
Code
Alles anzeigenlocal MarkerOut = createMarker(2561.3251953125, -1292.5541992188, 1054.640625, "cylinder", 2, 255, 0, 0, 0) function Tel(element, matchingDimension) if getElementType( element ) == "player" then setElementPosition(element, 2027.2878417969, 1917.7205810547, 12.337401390076) setElementInterior(element, 46) end end addEventHandler("onMarkerHit", MarkerOut, Tel)
-
In Zeile 1 fehlt die ')' Klammer und in Zeile 6 muss das Player von "thePlayer" kleingeschrieben werden.
Tipp: Schau dir die Ausgabe des Servers an. Der gibt dir bei solchen Fehlern eigentlich immer eine Fehlermeldung aus, die dir sagt wo sich der Fehler befindet.