PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zwei kleine LUA Fragen



xan
10.08.2008, 20:33
Hi,
ich habe gestern angefangen LUA zu lernen und nun auch gleich ein zwei Fragen:


Zunächst, welchen Sinn hat das Semikolon (;)? Einige setzen es am ende jeder Funktion, andere lassen es komplett weg. Ich kann PHP und da ist es so, dass jede Funktion mit einem Semikolon abgeschlossen werden muss, ist das in LUA optional?
Wenn ich ein Script editiere, muss dann erst GMod neugestartet werden damit die Änderungen übernommen werden, oder gibt es einen Konsolenbefehl der dieses Erledigt?


PS: Mein erstes Script ;) (es funktioniert sogar)
function ParsePlayerText(ply, text)
//!health
if string.find( text, "!health") == 1 then //wenn "!health" an erster stelle
if ply:Alive() != true then //wenn Palyer nicht am leben
ply:ChatPrint( "You are dead.")
else
ply:SetHealth(ply:Health() + 100)
ply:ChatPrint( "Added 100 health.")
end
return ""
end

//!equip
if string.find( text, "!equip") == 1 then
if ply:Alive() != true then
ply:ChatPrint( "You are dead.")
else
ply:Give("weapon_crowbar")
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("weapon_pistol")
ply:Give("weapon_357")
ply:Give("weapon_smg1")
ply:Give("weapon_ar2")
ply:Give("weapon_crossbow")
ply:Give("weapon_frag")
ply:Give("weapon_rpg")
ply:Give("gmod_camera")
ply:Give("gmod_tool")
ply:ChatPrint( "Added equipment.")
end
return ""
end

//!ammo
if string.find( text, "!ammo") == 1 then
if ply:Alive() != true then
ply:ChatPrint( "You are dead.")
else
ply:GiveAmmo(100,"pistol")
ply:GiveAmmo(100,"357")
ply:GiveAmmo(100,"smg1")
ply:GiveAmmo(100,"ar2")
ply:GiveAmmo(100,"ar2altfire")
ply:GiveAmmo(100,"crossbow")
ply:ChatPrint( "Added ammo.")
end
return ""
end

//!info
if string.find( text, "!info") == 1 then
ply:ChatPrint( "!health - Adds 100 health.")
ply:ChatPrint( "!equip - Adds all weapons")
ply:ChatPrint( "!ammo - Adds ammo")
return ""
end

return text
end
hook.Add("PlayerSay", "ParsePlayerText", ParsePlayerText)

MfG
xan

BennyG
10.08.2008, 20:36
1. Unnötig,manche machen es nur so da sie es aus anderen Sprachen kennen.

2.Es kommt drauf an um was für ein Script es sich handelt.
Bei ein autorun Script nimmst du


lua_openscript pfad/zur/datei.lua

Bei einen SEnt/SWep


lua_reloadents

Scarecrow
11.08.2008, 12:31
Ja, xan1, dein Code sieht sehr gut strukturiert aus und es ist auch alles von der Syntax her richtig. Ich denke, man wird noch einiges von dir hören :)

PS: Jetzt auf dein Code-Beispiel bezogen.

RP-01
11.08.2008, 12:45
Wie schon von BennyG gesagt=unnötig!

Das findest du meistens nur bei Waffen die mit nem editor gemacht sind!

(Das finde ich lustig: Ungefähr den selben Skript hab ich auch gemacht bloß das der auch noch dein Leben modifiziert also das es immerwieder auf 500 geht und statt "ply" da "P" steht!)



Ich bin kein Jahrgang 95 das war my sis

Das( oben /\ ) is meine Signatur
||||

€r!k
11.08.2008, 13:36
Wie schon von BennyG gesagt=unnötig!

Das findest du meistens nur bei Waffen die mit nem editor gemacht sind!

(Das finde ich lustig: Ungefähr den selben Skript hab ich auch gemacht bloß das der auch noch dein Leben modifiziert also das es immerwieder auf 500 geht und statt "ply" da "P" steht!)



Ich bin kein Jahrgang 95 das war my sis

Das( oben /\ ) is meine Signatur
||||
Ich finde es schön, dass du Sachen wiederholen kannst. Das zeugt wahrscheinlich davon, dass du Verstanden hast was da Steht. Und gleichzeitig selbst noch Dinge dazuschreibst die keinen Interessieren ist wirklich mit einem hohen Intelligenzgrad verbunden.

Aero
11.08.2008, 14:42
Bei C++ ist es so, dass das ; für ein Befehlsende steht. Also sagen wir damit dem Computer ->
Ey du, hier ist der befehl zu ende!
Ich bin mir nicht sicher ob es in LUA auch so ist, aber LUA sieht sehr nach C++ aus, aber naja..

Scarecrow
11.08.2008, 16:16
Ich bin mir nicht sicher ob es in LUA auch so ist...

Hättest du alle Posts in diesem Thread gelesen, dann wüsstest du es besser.

Pac_187
11.08.2008, 18:16
Ich ergänze dann doch einmal was zu Benny's Beitrag!

Sollte dein Script Client-Seitig sein so nutzt du den
Consolenbefehl:

lua_openscript_cl

Denn sonst werden dir Fehler angezeigt und du wunderst dich warum,
obwohl doch alles richtig ist ;)