ExabyteDE Posted December 2, 2012 Share Posted December 2, 2012 Hey, ich habe ein kleines problem, und zwar hab ich sozusagen eine uhr gescriptet und die zeigt dann halt ne zeit an zb jetzt : 21:40.. okay alles gut und recht aber sobald die zahlen unter 10 gehen steht nur noch 1 zeichen da also zb: 8:3 und das sieht sch... aus ich habs schon hiermit versucht: if ( zeit < 10 ) then zeit = tonumber ( "0"..zeit ) end aber das spuckt auch wieder nur 1 zeichen raus.. kennt jemand ne lösung wie ich eine 1 zu einer 01 machen kann? ich hoffe ihr wisst was ich mein und bedanke mich schonmal im vorraus Link to comment
Ka3ax Posted January 19, 2013 Share Posted January 19, 2013 ich bin neu in MTA, aber grundsätzlich ist es so das Integer (die Zahlen) ohne die Führende Null gespeichert werden. Ich denke das liegt an der Schonung der Ressourcen. ...aber zurück zu deinem Problem. Du musst eigentlich nur deine Uhrzeit im String zwischenspeichern und wenn die Uhr- oder Minuten Zeit unter 10 fällt, eine null dran hängen. String sieht die Uhrzeit dann als Zeichenkette an und schmeißt die null nicht weg. Soviel zur Theorie, meine Kenntnisse in der LUA sind aber zu schlecht um dir jetzt einen fertigen Code zu geben. Du musst aber dieses "tonumber" weglassen und die Variable "zeit" als String deklarieren. OOOODER, wenn man in LUA keine Variablen deklaration machen kann, dann gibst du in der If-Verzweigung bevor die eigentlich zahl ausgegeben wird, eine 0 aus. So sieht der Benutzer es als eine Zahl obwohl die Zahl eigentlich aus zwei besteht if ( zeit < 10 ) then outputChatBox( "0"..zeit ) end Link to comment
ExabyteDE Posted January 20, 2013 Author Share Posted January 20, 2013 ehm danke, aber das problem ist schon längst gelöst meine lösung ist genau das was du auch vorgeschlagen hast: local sekunden = getElementData ( localPlayer, "sekunden" ) local minuten = getElementData ( localPlayer, "minuten" ) if ( minuten ~= false and sekunden ~= false ) then if ( sekunden < 10 ) then sekunden = "0"..tostring ( sekunden ) end local text = "Restliche Zeit: "..minuten..":"..sekunden outputChatBox ( text ) end Link to comment
Ka3ax Posted January 20, 2013 Share Posted January 20, 2013 Ah cool, freut mich. Es gibt also doch eine function die es in String umwandelt. Link to comment
krischkros Posted April 3, 2013 Share Posted April 3, 2013 CTime = inherit(CObject) function CTime.constructor(self) end -- Vereinfachte Version. Ich habe das absichtlich entfernt, da du auch etwas üben solltest.. -- Wunder dich nicht, warum ich so faul bin vorerst Variablen dafür anzulegen function CTime:getRealTime() local time = getRealTime() return string.format("%s:%s:%s", time.hour < 10 and "0"..time.hour or time.hour, time.minute < 10 and "0"..time.minute or time.minute, time.second < 10 and "0"..time.second or time.second ) end --[[ Ich habe hier den ternären Operator angewendet Erläuterung: (Bedingung) and (wenn true) or (wenn false) Beispielsituation: time = 9 (9 < 10) ist ja true also (true) and ("0"..9) or (9) -- das ist nur ein visuelles theorietisches Beispiel ]] -- der ganze Rest.. also der Konstruktor ist für dich irreleveant. -- Im Prinzip musst du nur die Funktion unten kopieren. -- mfg Output wäre z.B. "09:11:05" Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now