|
Verfasser |
Nachricht |
WinterFrost
Moderator a.D.
Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010
Status:
Offline
Danke erhalten: 3152
|
[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.
--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.
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.
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
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.
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
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
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 drückst, dann blende Multi Hallo Welt by WinterFrost ein.
Aber, wenn du 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
kennen wir bereits.
Machen wir weiter.
else ist aber und
ist ein Befehl, der das Programm beendet und in die XMB zurückkehrt.
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
screen.flip()
screen.waitVblankStart()
end
bringt nun alles auf den Bildshirm, ohne diesen Befehl, würde das ganze Script nicht funktionieren.
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.
schließt das ganze Script , ab hier ist Schluss.
Hier ist noch einmal der ganze 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
Download (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 |
|
Folgende User bedanken sich: |
|
The Z
Super Moderator
Beiträge: 12.921
Gruppe: Super Moderator
Registriert seit: Jan 2010
Status:
Abwesend
Danke erhalten: 14513
|
RE: [LUA TUT]Multi Hallo Welt
Cool, kann man sie mittels exploit auch auf ner ofw angezeigt bekommen?!
|
|
05.11.2010 14:35 |
|
|
|
WinterFrost
Moderator a.D.
Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010
Status:
Offline
Danke erhalten: 3152
|
RE: [LUA TUT]Multi Hallo Welt
Eventuell über den HBL, ich habe es aber nicht versucht.
MfG
|
|
05.11.2010 14:44 |
|
|
|
Namenloser
Redakteur a.D.
Beiträge: 2.683
Gruppe: User
Registriert seit: Apr 2009
Status:
Offline
Danke erhalten: 2111
|
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 |
|
|
|
WinterFrost
Moderator a.D.
Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010
Status:
Offline
Danke erhalten: 3152
|
RE: [LUA TUT]Multi Hallo Welt
PS, gehört das :
screen rint(150,120,"Druecke X um einen Text einzublenden.", red)
screen rint(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 |
|
|
|
m33
Mod a.D.
Beiträge: 4.744
Gruppe: User
Registriert seit: Jul 2010
Status:
Abwesend
Danke erhalten: 2785
|
RE: [LUA TUT]Multi Hallo Welt
Ne per Exploit auf dem HBL kann mans nicht abspielen
Der HBL hat keinen Lua HM Support, nur PGE Lua
Signatur entfernt da sie nicht den Forenregeln entsprach!
|
|
05.11.2010 15:18 |
|
Folgende User bedanken sich: |
|
Namenloser
Redakteur a.D.
Beiträge: 2.683
Gruppe: User
Registriert seit: Apr 2009
Status:
Offline
Danke erhalten: 2111
|
RE: [LUA TUT]Multi Hallo Welt
Ich meine so:
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()
screen rint(150,120,"Druecke X um einen Text einzublenden.", red)
screen rint(150,130,"Druecke O um zu beenden", red)
if pad:cross() then
screen rint(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 |
|
Folgende User bedanken sich: |
|
WinterFrost
Moderator a.D.
Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010
Status:
Offline
Danke erhalten: 3152
|
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 |
|
|
|
Camaro8000
Homebrew-Liebhaber
Beiträge: 1.372
Gruppe: User
Registriert seit: Jul 2009
Status:
Offline
Danke erhalten: 491
|
RE: [LUA TUT]Multi Hallo Welt
Ich glaube das meint Namenloser:
So hast du es...
[...]
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:
[...]
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
[...]
Stolzer Schwalbe-Fahrer
Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2010 15:37 von Camaro8000.
|
|
05.11.2010 15:36 |
|
Folgende User bedanken sich: |
|
WinterFrost
Moderator a.D.
Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010
Status:
Offline
Danke erhalten: 3152
|
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 |
|
Folgende User bedanken sich: |
|
Dark_Monkey
Experte
Beiträge: 641
Gruppe: User
Registriert seit: Aug 2009
Status:
Offline
Danke erhalten: 193
|
RE: [LUA TUT]Multi Hallo Welt
//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 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 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 |
|
|
|
m33
Mod a.D.
Beiträge: 4.744
Gruppe: User
Registriert seit: Jul 2010
Status:
Abwesend
Danke erhalten: 2785
|
RE: [LUA TUT]Multi Hallo Welt
//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 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 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 |
|
Folgende User bedanken sich: |
|
WinterFrost
Moderator a.D.
Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010
Status:
Offline
Danke erhalten: 3152
|
RE: [LUA TUT]Multi Hallo Welt
Aha... und warum postest du das, wenn ich fragen darf?
MfG
|
|
05.11.2010 16:51 |
|
|
|
Dark_Monkey
Experte
Beiträge: 641
Gruppe: User
Registriert seit: Aug 2009
Status:
Offline
Danke erhalten: 193
|
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 |
|
|
|
WinterFrost
Moderator a.D.
Beiträge: 2.667
Gruppe: Mod a.D.
Registriert seit: Aug 2010
Status:
Offline
Danke erhalten: 3152
|
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 |
|
|
|
|