KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: [HILFE]LUA Problem
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
HI.
Ich lerne gerade LUA und bin auf ein Problem gestoßen.
Ich hab ein Menü, mit 3 Funktionen:

Code:
f={}
f[1]=function ()
screen:clear()
screen:print(200,150,"Endlich funzt richtig",yellow)
end
f[2]=function ()
screen:blit(0,0,"bild2")
end
f[3]=function ()
System.Quit()
end


Das ist ja jetzt nur wenn ich X gedrückt halte. Wie schaff ich es jetzt, dass man X Drückt und das Bild/Text da bleibt ohne zu verschwinden

Hier das komplette Script:
http://ul.to/rvww7a

push

Code:
f={}
f[1]=function ()
    while not pad:circle() do
        pad =Controls.read()
        screen:clear()
        screen:print(200,150,"Endlich funzt richtig",yellow)
        screen.flip()
        screen.waitVblankStart()
    end
end
f[2]=function ()
    while not pad:circle() do
        screen:blit(0,0,"bild2")
        screen.flip()
        screen.waitVblankStart()
    end
end
f[3]=function ()
    System.Quit()
end


dann wirds solange angezeigt, bis du kreis drückst.

bekommst nachher noch ein danke.

Und wie binde ich dann ne weitere lua datei ein? ich hab das mit require(text) versucht, hab aber net zum laufen gebracht
dofile("Datei.lua")
Ist aber PGE lua
require "Der Name ohne .lua"

Bsp. Wenn du O drückst, wird continue.lua geladen:

Schwarz = Color.new(0,0,0)
Bild = Image.load("bild.jpg")

while true do
screen:blit(Bild)
screen:print(0,0, "Hallo", Schwarz)
pad = Controls.read()
if pad:circle()
then require "continue"
screen.flip()
screen.waitVblankStart()
end
öhh, dofile läuft. auch bei hm lua
aber er will ja das das bild DABLEIBT

Zitat:
Das ist ja jetzt nur wenn ich X gedrückt halte. Wie schaff ich es jetzt, dass man X Drückt und das Bild/Text da bleibt ohne zu verschwinden


also wäre ne möglichkeit:

Code:
f={}
taste1 = false
taste2 = false
f[1]=function ()
if pad:cross() then
     taste1 = true
end
if taste1 == true then
     screen:clear()
     screen:print(200,150,"Endlich funzt richtig",yellow)
end
end
f[2]=function ()
if pad:circle() then
     taste2 = true
end
if taste2 == true then
     screen:blit(0,0,"bild2")
end
end
f[3]=function ()
     System.Quit()
end

James_Cutter :
aber er will ja das das bild DABLEIBT

Zitat:
Das ist ja jetzt nur wenn ich X gedrückt halte. Wie schaff ich es jetzt, dass man X Drückt und das Bild/Text da bleibt ohne zu verschwinden


also wäre ne möglichkeit:

Code:
f={}
taste1 = false
taste2 = false
f[1]=function ()
if pad:cross() then
     taste1 = true
end
if taste1 == true then
     screen:clear()
     screen:print(200,150,"Endlich funzt richtig",yellow)
end
end
f[2]=function ()
if pad:circle() then
     taste2 = true
end
if taste2 == true then
     screen:blit(0,0,"bild2")
end
end
f[3]=function ()
     System.Quit()
end


Du hast
pad = Controls.read()
vergessen Wink

Wenn er durch X/O versacht das eine neue lua geladen wird, muss er in der neuen lua datei ebenfalls das bild abrufen ^^

m33 :

James_Cutter :
aber er will ja das das bild DABLEIBT

Zitat:
Das ist ja jetzt nur wenn ich X gedrückt halte. Wie schaff ich es jetzt, dass man X Drückt und das Bild/Text da bleibt ohne zu verschwinden


also wäre ne möglichkeit:

Code:
f={}
taste1 = false
taste2 = false
f[1]=function ()
if pad:cross() then
     taste1 = true
end
if taste1 == true then
     screen:clear()
     screen:print(200,150,"Endlich funzt richtig",yellow)
end
end
f[2]=function ()
if pad:circle() then
     taste2 = true
end
if taste2 == true then
     screen:blit(0,0,"bild2")
end
end
f[3]=function ()
     System.Quit()
end


Du hast
pad = Controls.read()
vergessen Wink


nope, das käme in der while schleife:

Code:
f={}
taste1 = false
taste2 = false
f[1]=function ()
if pad:cross() then
     taste1 = true
end
if taste1 == true then
     screen:clear()
     screen:print(200,150,"Endlich funzt richtig",yellow)
end
end
f[2]=function ()
if pad:circle() then
     taste2 = true
end
if taste2 == true then
     screen:blit(0,0,"bild2")
end
end
f[3]=function ()
     System.Quit()
end

--und dann die schleife:
while true do --mainloop
     screen:clear()
     pad = Controls.read()
     f[1]()
     f[2]()
     --und f[3](), wenn du das prog. verlassen willst
     screen:flip()
     screen.waitVblankStart()
end

James_Cutter :

m33 :

James_Cutter :
aber er will ja das das bild DABLEIBT

Zitat:
Das ist ja jetzt nur wenn ich X gedrückt halte. Wie schaff ich es jetzt, dass man X Drückt und das Bild/Text da bleibt ohne zu verschwinden


also wäre ne möglichkeit:

Code:
f={}
taste1 = false
taste2 = false
f[1]=function ()
if pad:cross() then
     taste1 = true
end
if taste1 == true then
     screen:clear()
     screen:print(200,150,"Endlich funzt richtig",yellow)
end
end
f[2]=function ()
if pad:circle() then
     taste2 = true
end
if taste2 == true then
     screen:blit(0,0,"bild2")
end
end
f[3]=function ()
     System.Quit()
end


Du hast
pad = Controls.read()
vergessen Wink


nope, das käme in der while schleife:

Code:
f={}
taste1 = false
taste2 = false
f[1]=function ()
if pad:cross() then
     taste1 = true
end
if taste1 == true then
     screen:clear()
     screen:print(200,150,"Endlich funzt richtig",yellow)
end
end
f[2]=function ()
if pad:circle() then
     taste2 = true
end
if taste2 == true then
     screen:blit(0,0,"bild2")
end
end
f[3]=function ()
     System.Quit()
end

--und dann die schleife:
while true do --mainloop
     screen:clear()
     pad = Controls.read()
     f[1]()
     f[2]()
     --und f[3](), wenn du das prog. verlassen willst
     screen:flip()
     screen.waitVblankStart()
end


Achso. Big Grin

So nächste Frage:

Ich hab jetzt einen einfachen Timer gecodet. Jetzt will ich nicht, dass die Zahlen einfach auf gelistet sind sondern richtig in h.min.sec dargestellt wird
Wie ist denn der Befehl für einen Timer?

Code:
weiss = Color.new(255,255,255)
black = Color.new(0,0,0)
rot = Color.new(255,0,0)
green = Color.new(0,255,0)
blau = Color.new(0,0,255)  
zaehler = Timer.new()

while true do
screen:clear()
screen:print(212,15,"Timer Test",blau)
screen:print(212,269,"Mit Select zurueck",blau)
pad = Controls.read()

zaehler:start()
runtime = zaehler:time()
screen:print(220,100,runtime,weiss)

if pad:cross() then
zaehler:stop()
end

if pad:circle() then
zaehler:reset(0)
end

if pad:select() then
dofile("script.lua")
end

screen.flip()
screen.waitVblankStart()
end


So mein Code. Wenn ich aber X drücke um den Timer zustoppen, läuft er nur langsam weiter

Seiten: 1 2
Referenz-URLs