Antwort schreiben  Thema schreiben 
Seiten (2): « Erste [1] 2 Nächste > Letzte »
Verfasser Nachricht
WinterFrost
Moderator a.D.


Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010

Status: Offline
Danke erhalten: 3152
Beitrag: #1
xPSP  [LUA TUT]Multi Hallo Welt

In diesem Tutorial zeige ich euch, wie ihr ein "Multi Hallo Welt" Programm in LUA erstellt.
Es wäre nicht schlecht, wenn ihr bereits ein "normales" Hallo Welt Programm erstellt habt, es ist aber nicht nötig.
Um den Code richtig zu verstehen, müsst ihr euch dieses Tutorial allerdings aufmerksam durch lesen.

Was wir benötigen:

  • Eine PSP mit CFW
  • Etwas Gedult
Das "Homebrew" wird so aussehen:



Aber schreiten wir endlich zur Tat.
Zuerst erstellen wir eine script.lua Datei.
Öffnet diese jetzt mit einem Text Editor und gebt ganz oben schon mal die Farben ein.

Code:
--Legende
--Farben
white = Color.new(255,255,255)
black = Color.new(0,0,0)
red = Color.new(255, 0, 0)
green = Color.new(0, 255, 0)
blue = Color.new(0,0,255)
orange = Color.new(235,115,0)
yellow = Color.new(255,255,0)
gray = Color.new(160,160,160)

Ich denke das sollte klar sein, für die jenigen von euch die nicht wissen was es damit aus sich hat, erkläre ich es nochmal.
--Legende und --Farben habe keine Bedeutung, sie sind sozusagen Notizen, die ihr anfertigen könnt.

Code:
Color.new(Zahl,Zahl,Zahl)

definiert eine Farbe, es müssen alle Farben in Zahlenwerten angeben werden.

Denn ersten Teil des Codes hätten wir also schonmal, also machen wir doch direkt weiter.

Unter die Farbdefinitionen, gebt ihr jetzt folgendes ein.

Code:
while true do
screen:print(150,120,"Druecke X um einen Text einzublenden.", red)
screen:print(150,130,"Druecke O um zu beenden", red)

Mit

Code:
while true do

setzen wir alles in eine Schleife, sodass der Text, der angezeigt werden soll, durchgehend angezeigt wird und in userem Falle die Tasten durchgehend abgefragt werden.

Code:
screen:print

gibt an wo und in welcher Farbe ein beliebiger Text angezeigt werden soll.
Die Zahlen dort hinter sind die X und Y Achsen auf dem PSP Bildshirm.
Danach folgt der Text der angezeigt werden soll, diesen könnt ihr beliebig verändern.
Hinter dem Text steht die Farbe in dem der Text angezeigt werden soll.
Direkt unter dem Codestück kommt

Code:
pad =Controls.read()

Dieser Befehl ermöglicht es, dass man die Tasten in LUA überhaupt erst verwenden kann.
Näturlich braucht man zu diesem Befehl auch Tasten.
Kommen wir zum nächsten Teil des Codes

Code:
if pad:cross() then
screen:print(167,1,"Multi Hallo Welt by WinterFrost", green)
else
if pad:circle() then
System.Quit()
end
end

Ich "übersetze" das jetzt mal auf Deutsch, dann ist es verständlicher.
Wenn du X drückst, dann blende Multi Hallo Welt by WinterFrost ein.
Aber, wenn du Kreis drückst, dann verlasse das Programm.
if ist immer wenn, pad:cross ist die X Taste, aber die Tasten führe ich hier nicht weiter aus.
then ist dann und

Code:
screen:print

kennen wir bereits.
Machen wir weiter.
else ist aber und

Code:
System.Quit

ist ein Befehl, der das Programm beendet und in die XMB zurückkehrt.

Code:
end
end

beendet die beiden if Befehle.

Der Größe und schwierigste Teil des Codes ist nun geschafft, jetzt bringen wir das ganze noch auf den Bildshirm und beenden das Script mit

Code:
screen.flip()
screen.waitVblankStart()
end

Code:
screen.flip()

bringt nun alles auf den Bildshirm, ohne diesen Befehl, würde das ganze Script nicht funktionieren.

Code:
screen.waitVblankStart()

würde angeben wie lange der Text angezeigt werden soll, man würde die LUA Sekundenzählzeit einfach in die Klammer schreiben, da wir das ganze aber vorher in eine while Schleife gesetzt haben, bleibt die Klammer einfach leer.

Code:
end

schließt das ganze Script , ab hier ist Schluss.

Hier ist noch einmal der ganze Code.

Code:
white = Color.new(255,255,255)
black = Color.new(0,0,0)
red = Color.new(255, 0, 0)
green = Color.new(0, 255, 0)
blue = Color.new(0,0,255)
orange = Color.new(235,115,0)
yellow = Color.new(255,255,0)
gray = Color.new(160,160,160)

while true do
screen:print(150,120,"Druecke X um einen Text einzublenden.", red)
screen:print(150,130,"Druecke O um zu beenden", red)
pad =Controls.read()
if pad:cross() then
screen:print(167,1,"Multi Hallo Welt by WinterFrost", green)
else
if pad:circle() then
System.Quit()
end
end
screen.flip()
screen.waitVblankStart()
end


DownloadDownload (script + eboot.pbp)

Ich hoffe das Tutorial hat euch gefallen.

MfG

Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2010 15:56 von WinterFrost.

05.11.2010 14:02
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Unbekannt (Nov-27-2010), James_Cutter (Nov-5-2010), XiaDao (Nov-5-2010), -blue7 (Nov-5-2010), Vera (Nov-5-2010), greenieZ (Nov-5-2010)
The Z
Super Moderator
***


Beiträge: 12.921
Gruppe: Super Moderator
Registriert seit: Jan 2010

Status: Abwesend
Danke erhalten: 14513
Beitrag: #2
RE: [LUA TUT]Multi Hallo Welt

Cool, kann man sie mittels exploit auch auf ner ofw angezeigt bekommen?!

05.11.2010 14:35
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
WinterFrost
Moderator a.D.


Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010

Status: Offline
Danke erhalten: 3152
Beitrag: #3
RE: [LUA TUT]Multi Hallo Welt

Eventuell über den HBL, ich habe es aber nicht versucht.

MfG

05.11.2010 14:44
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Namenloser
Redakteur a.D.
*


Beiträge: 2.683
Gruppe: User
Registriert seit: Apr 2009

Status: Offline
Danke erhalten: 2111
Beitrag: #4
xPSP  RE: [LUA TUT]Multi Hallo Welt

if pad:cross() then
screen:print(167,1,"Multi Hallo Welt by WinterFrost", green)
else
if pad:circle() then
System.Quit()
end
end

Ich finde das else unnötig :P Denn es ist ja klar falls nicht X Gedrückt wird das er eine andere taste einließt. Könnte man auch einfach schließen:
if pad:cross() then
screen:print(167,1,"Multi Hallo Welt by WinterFrost", green)
end
if pad:circle() then
System.Quit()
end

Kürzer wird der Code deswegen auch nicht aber ok :D

PS, gehört das :
screen:print(150,120,"Druecke X um einen Text einzublenden.", red)
screen:print(150,130,"Druecke O um zu beenden", red)

nicht auch in die While ( vor dem pad ) ? Sonst wird der Text ja nur für eine Millionstel Sekunde angezeigt

Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2010 15:12 von Namenloser.

05.11.2010 15:12
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
WinterFrost
Moderator a.D.


Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010

Status: Offline
Danke erhalten: 3152
Beitrag: #5
xPSP  RE: [LUA TUT]Multi Hallo Welt

Namenloser :
PS, gehört das :
screenTonguerint(150,120,"Druecke X um einen Text einzublenden.", red)
screenTonguerint(150,130,"Druecke O um zu beenden", red)

nicht auch in die While ? Sonst wird der Text ja nur für eine Millionstel Sekunde angezeigt


Ja, habe ich doch geschrieben oder nicht?

MfG

EDIT: else hab ich mit rein genommen, um die Bedeutung nochmal zu erläutern.

Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2010 15:17 von WinterFrost.

05.11.2010 15:13
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
m33
Mod a.D.
*


Beiträge: 4.744
Gruppe: User
Registriert seit: Jul 2010

Status: Abwesend
Danke erhalten: 2785
Beitrag: #6
RE: [LUA TUT]Multi Hallo Welt

Ne per Exploit auf dem HBL kann mans nicht abspielen Sad
Der HBL hat keinen Lua HM Support, nur PGE Lua Wink


Signatur entfernt da sie nicht den Forenregeln entsprach!
05.11.2010 15:18
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
WinterFrost (Nov-5-2010)
Namenloser
Redakteur a.D.
*


Beiträge: 2.683
Gruppe: User
Registriert seit: Apr 2009

Status: Offline
Danke erhalten: 2111
Beitrag: #7
xPSP  RE: [LUA TUT]Multi Hallo Welt

Ich meine so:

Zitat:
white = Color.new(255,255,255)
black = Color.new(0,0,0)
red = Color.new(255, 0, 0)
green = Color.new(0, 255, 0)
blue = Color.new(0,0,255)
orange = Color.new(235,115,0)
yellow = Color.new(255,255,0)
gray = Color.new(160,160,160)

while true do
pad =Controls.read()
screenTonguerint(150,120,"Druecke X um einen Text einzublenden.", red)
screenTonguerint(150,130,"Druecke O um zu beenden", red)
if pad:cross() then
screenTonguerint(167,1,"Multi Hallo Welt by WinterFrost", green)
else
if pad:circle() then
System.Quit()
end
end
screen.flip()
screen.waitVblankStart()
end


Du hast den Text auserhalb der While und nur den Text bei dem Pad drinnen.

Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2010 15:26 von Namenloser.

05.11.2010 15:25
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
WinterFrost (Nov-5-2010)
WinterFrost
Moderator a.D.


Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010

Status: Offline
Danke erhalten: 3152
Beitrag: #8
RE: [LUA TUT]Multi Hallo Welt

Tut mir Leid aber ich verstehe immernoch nicht richtig was du meinst.
Der Text muss in einer while schleife stehen, denn er wird dauerhaft angezeigt.

MfG

05.11.2010 15:31
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Camaro8000
Homebrew-Liebhaber
*****


Beiträge: 1.372
Gruppe: User
Registriert seit: Jul 2009

Status: Offline
Danke erhalten: 491
Beitrag: #9
RE: [LUA TUT]Multi Hallo Welt

Ich glaube das meint Namenloser:


So hast du es...

Code:
[...]
yellow = Color.new(255,255,0)
gray = Color.new(160,160,160)

screen:print(150,120,"Druecke X um einen Text einzublenden.", red)
screen:print(150,130,"Druecke O um zu beenden", red)
while true do
pad =Controls.read()
if pad:cross() then
[...]


...und so muss es sein:

Code:
[...]
yellow = Color.new(255,255,0)
gray = Color.new(160,160,160)

while true do
screen:print(150,120,"Druecke X um einen Text einzublenden.", red)
screen:print(150,130,"Druecke O um zu beenden", red)
pad =Controls.read()
if pad:cross() then
[...]


thumb



Stolzer Schwalbe-Fahrer Smile

Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2010 15:37 von Camaro8000.

05.11.2010 15:36
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
Namenloser (Nov-5-2010), WinterFrost (Nov-5-2010)
WinterFrost
Moderator a.D.


Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010

Status: Offline
Danke erhalten: 3152
Beitrag: #10
RE: [LUA TUT]Multi Hallo Welt

Ich meine das ist egal, solange ich das screen.flip() in einer Schleife habe.

MfG

EDIT: Zumindest habe ich es jetzt verstanden xD
EDIT2: es geht beides, so wie Namenloser es meint läuft es aber stabiler, also werde ich es ändern.
Danke.
EDIT3: Fertig.
MfG

Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2010 15:56 von WinterFrost.

05.11.2010 15:40
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
m33 (Nov-5-2010), Namenloser (Nov-5-2010), Camaro8000 (Nov-5-2010)
Dark_Monkey
Experte
****


Beiträge: 641
Gruppe: User
Registriert seit: Aug 2009

Status: Offline
Danke erhalten: 193
Beitrag: #11
xPSP  RE: [LUA TUT]Multi Hallo Welt

Code:
//Farben definieren
white = Color.new(255,255,255)
black = Color.new(0,0,0)
red = Color.new(255, 0, 0)
green = Color.new(0, 255, 0)
blue = Color.new(0,0,255)
orange = Color.new(235,115,0)
yellow = Color.new(255,255,0)
gray = Color.new(160,160,160)
color = {white,red,green,blue,orange,yellow,gray}

//Allgemeine Variablen definieren
i = 1
pad = Controls.read()



//Main
while true do

    screen:print(150,120,"Druecke X um die Textfarbe zu ändern.", red)
    screen:print(150,130,"Druecke O um zu beenden", red)
    screen:print(167,1,"Hello World", color[i])

    if pad:cross() then

        color = color +1

        if (color < 6) then

            color = 0

        end

    end

    if pad:circle() then

        System.Quit()

    end

    screen.flip()
    screen.waitVblankStart()

end


Das wäre ein neutrales Hello World.
Hab schon lange kein Lua mehr geschrieben aber trotzdem.

Wir definieren einen tabel Namens "color" in den setzen wir die vorherigen Farben werte ein.

Dann definieren wir noch einen zähler. da wir nacher die variablen position im table angeben müssen.

d.h.:

color = {white,red,green,blue,orange,yellow,gray}

ist gleich

color[0] = white
color[1] = red
color[2] = green
color[3] = blue
color[4] = orange
color[5] = yellow
color[6] = gray

der zähler steht auf 1 also color[i] wäre dann das gleiche wie color [1] also red. Der test wird in Rot angezeigt.

mit einem druck auf die X wird der zähler um 1 erhöht, also ist i gleich 2, das wiederum bedeutet das color[i] leich color[2] also green.

das geht weiter bis 6.

Falls jetzt nochmal X gedrückt wird müssen wir angebe das i wieder auf 0 gesetzt wird, da color[7] keine definitioin also keinen wert hat.

von 0 kann dann wider bis zu 6 hochgezählt werden.

Für fragen stehe ich offen


durchgestrichen
05.11.2010 16:46
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
m33
Mod a.D.
*


Beiträge: 4.744
Gruppe: User
Registriert seit: Jul 2010

Status: Abwesend
Danke erhalten: 2785
Beitrag: #12
xPSP  RE: [LUA TUT]Multi Hallo Welt

Dark_Monkey :

Code:
//Farben definieren
white = Color.new(255,255,255)
black = Color.new(0,0,0)
red = Color.new(255, 0, 0)
green = Color.new(0, 255, 0)
blue = Color.new(0,0,255)
orange = Color.new(235,115,0)
yellow = Color.new(255,255,0)
gray = Color.new(160,160,160)
color = {white,red,green,blue,orange,yellow,gray}

//Allgemeine Variablen definieren
i = 1
pad = Controls.read()



//Main
while true do

    screen:print(150,120,"Druecke X um die Textfarbe zu ändern.", red)
    screen:print(150,130,"Druecke O um zu beenden", red)
    screen:print(167,1,"Hello World", color[i])

    if pad:cross() then

        color = color +1

        if (color < 6) then

            color = 0

        end

    end

    if pad:circle() then

        System.Quit()

    end

    screen.flip()
    screen.waitVblankStart()

end


Das wäre ein neutrales Hello World.
Hab schon lange kein Lua mehr geschrieben aber trotzdem.

Wir definieren einen tabel Namens "color" in den setzen wir die vorherigen Farben werte ein.

Dann definieren wir noch einen zähler. da wir nacher die variablen position im table angeben müssen.

d.h.:

color = {white,red,green,blue,orange,yellow,gray}

ist gleich

color[0] = white
color[1] = red
color[2] = green
color[3] = blue
color[4] = orange
color[5] = yellow
color[6] = gray

der zähler steht auf 1 also color[i] wäre dann das gleiche wie color [1] also red. Der test wird in Rot angezeigt.

mit einem druck auf die X wird der zähler um 1 erhöht, also ist i gleich 2, das wiederum bedeutet das color[i] leich color[2] also green.

das geht weiter bis 6.

Falls jetzt nochmal X gedrückt wird müssen wir angebe das i wieder auf 0 gesetzt wird, da color[7] keine definitioin also keinen wert hat.

von 0 kann dann wider bis zu 6 hochgezählt werden.

Für fragen stehe ich offen


Das ist aber für Einsteiger zu schwer...


Signatur entfernt da sie nicht den Forenregeln entsprach!
05.11.2010 16:49
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
WinterFrost (Nov-5-2010)
WinterFrost
Moderator a.D.


Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010

Status: Offline
Danke erhalten: 3152
Beitrag: #13
RE: [LUA TUT]Multi Hallo Welt

Aha... und warum postest du das, wenn ich fragen darf?

MfG

05.11.2010 16:51
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Dark_Monkey
Experte
****


Beiträge: 641
Gruppe: User
Registriert seit: Aug 2009

Status: Offline
Danke erhalten: 193
Beitrag: #14
RE: [LUA TUT]Multi Hallo Welt

Fände ich ein alternatives beispiel und ist für einsteiger auch geeignet

Will damit aber auch keine kretik an deinem Hello World ausüben


durchgestrichen
05.11.2010 16:53
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
WinterFrost
Moderator a.D.


Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010

Status: Offline
Danke erhalten: 3152
Beitrag: #15
RE: [LUA TUT]Multi Hallo Welt

Achsoo... ich hatte mich schon gewundert, warum du das in meinen Thread postest und nicht einen eigenen aufmachst.

MfG

05.11.2010 16:56
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Seiten (2): « Erste [1] 2 Nächste > Letzte »
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xPSP [TUT] VLF Hallo Welt. Ceikor 20 7.085 08.11.2010 16:22
Letzter Beitrag: philleb

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang