Jump to content

Zahlen umwandeln ( 1 -> 01 )


Recommended Posts

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 :D

Link to comment
  • 1 month later...

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

ehm danke, aber das problem ist schon längst gelöst xD

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
  • 2 months later...
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

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...