Hallo liebe Community,
Ein Englisches Tutorial wird folgen, sobald ich dafür Zeit habe.
Da ich sehr viele Anfragen in Skype erhalten habe, und ich da nicht hinterherkomme, habe ich mich dazu entschlossen hier im Forum ein Tutorial zu schreiben.
Dies ist das erste Tutorial. Weitere werden folgen.
Schauen wir uns erstmal den Quellcode an, um erstmal einen einblick zu bekommen, wie das ungefähr aussehen muss.
Dies ist erstmal ein kleines Tutorial um die Funktionen erstmal kennen zu lernen.
INFO: Der Quelltext darf weiter gegeben werden! Nur soll im Quelltext mein Name darin stehen bleiben.
Um in LUA Programmieren zu können, empfehle ich den Editor Notepad++
So dann fangen wir mal, mit den einfachsten Befehlen an;
[lua]print("Hallo, Welt!")[/lua]
Hier haben wir der Befehl "print" Der Befehl "print" dient dazu das etwas auf dem Bildschirm ausgegeben wird. Deshalb haben wir hier
[lua]print("Hallo Welt!")
-- Hier haben wir den Befehl print("Hallo Welt!") in den Klammern kann auch dein Belibiger Text stehen z.B.
[/lua]
hier zeigen wir das hier dein weiterer Text stehen könnte
[lua]print("Hallo liebe Welt!")
-- Hier haben wir einfach Hallo Welt mit einem Wort erweitert und zwar "liebe"
[/lua]
Hier sehen wir das ich in dem Quelltext einige Kommentare mit rein geschrieben habe.
Sehen wir uns erstmal wieder den Befehl dazu an:
[lua]-- Dies ist ein Kommentar[/lua]
Da sehen wir das ich -- genommen habe um ein beliebiges Kommentar zu schreiben. Achtet aber darauf das es nur eine Zeile geht. Um über mehrere Zeilen ein Kommentar zu schreiben benutzen wir den Befehl:
[lua]
--[[
Dies ist ein Kommentar.
Dieses Kommentar geht über mehrere Zeilen.
Du kannst es gerne mal ausprobieren.
]][/lua]
Herzlichen Glückwunsch! Du hast gerade dein eigenes kleines Programm geschrieben, wo du einige kleine Grundlagen erstmal gelernt hast!
Nun machen wir etwas Komplexeres, und zwar "Programmieren" wir jetzt einige Funktionen.
Ich versuche es so gut wie möglich zu erklären. Also wenn ich etwas auslassen sollte, dass euch aufgefallen ist, so schreibt mir doch bitte eine PN damit ich das umändern kann.
Nun Programmieren wir etwas komplexes. Keine Sorge wir gehen jeden einzelnen Code durch. Ich nehme jetzt einen Quelltext, von einem anderem Projekt was ich mal geschrieben habe.
Gucken wir uns das Gewurstel mal an:
[lua]function OnPlayerCommandText(playerid, cmdtext)
local cmd,params = GetCommand(cmdtext);
if cmdtext == "/ahelp" then
CMD_AdminHelp(playerid);
elseif cmd == "/kick" then
CMD_Kick(playerid,params);
elseif cmd == "/ban" then
CMD_Ban(playerid,params);
elseif cmd == "/kill" then
CMD_Kill(playerid,params);
elseif cmd == "/tp" then
CMD_Teleport(playerid,params);
elseif cmd == "/giveitem" then
CMD_GiveItem(playerid,params);
elseif cmd == "/time" then
CMD_Time(playerid,params);
elseif cmd == "/name" then
CMD_Name(playerid,params);
elseif cmd == "/color" then
CMD_Color(playerid,params);
end
end
function CMD_AdminHelp(playerid)
if IsPlayerAdmin(playerid) == 1
then
for i = 0, 8
do
SendPlayerMessage(playerid,255,255,255,"");
end
SendPlayerMessage(playerid,255,255,255,"Admin help:");
SendPlayerMessage(playerid,255,250,200,"/kick /ban /kill /tp /giveitem /name /color");
else
SendPlayerMessage(playerid,255,250,200,"(Server): You are not admin!");
end
end
function CMD_Kick(playerid, params)
if IsPlayerAdmin(playerid) == 1
then
local result,id,reason = sscanf(params,"ds");
if result == 1
then
if IsPlayerConnected(id) == 1
then
for i = 0, MAX_SLOTS - 1
do
SendPlayerMessage(i,255,0,0,string.format("%s %s %s %s%s %s %s","(Server):",GetPlayerName(id),"has been kicked by",GetPlayerName(playerid),".","Reason:",reason));
end
Kick(id);
else
SendPlayerMessage(playerid,255,250,200,string.format("%s %d %s","(Server): Player ID",id,"is not connected with server."));
end
else
SendPlayerMessage(playerid,255,250,200,"Use: /kick (playerid) (reason)");
end
else
SendPlayerMessage(playerid,255,250,200,"(Server): You are not admin!");
end
end
function CMD_Ban(playerid, params)
if IsPlayerAdmin(playerid) == 1
then
local result,id,reason = sscanf(params,"ds");
if result == 1
then
if IsPlayerConnected(id) == 1
then
for i = 0, MAX_SLOTS - 1
do
SendPlayerMessage(i,255,0,0,string.format("%s %s %s %s%s %s %s","(Server):",GetPlayerName(id),"has been banned by",GetPlayerName(playerid),".","Reason:",reason));
end
Ban(id);
else
SendPlayerMessage(playerid,255,250,200,string.format("%s %d %s","(Server): Player ID",id,"is not connected with server."));
end
else
SendPlayerMessage(playerid,255,250,200,"Use: /ban (playerid) (reason)");
end
else
SendPlayerMessage(playerid,255,250,200,"(Server): You are not admin!");
end
end
function CMD_Kill(playerid, params)
if IsPlayerAdmin(playerid) == 1
then
local result,id = sscanf(params,"d");
if result == 1
then
if IsPlayerConnected(id) == 1
then
SendPlayerMessage(id,255,250,200,string.format("%s %s","You have been killed by",GetPlayerName(playerid)));
SendPlayerMessage(playerid,255,250,200,string.format("%s %s","You killed",GetPlayerName(id)));
SetPlayerHealth(id,0);
else
SendPlayerMessage(playerid,255,250,200,string.format("%s %d %s","(Server): Player ID",id,"is not connected with server."));
end
else
SendPlayerMessage(playerid,255,250,200,"Use: /kill (playerid)");
end
else
SendPlayerMessage(playerid,255,250,200,"(Server): You are not admin!");
end
end
function CMD_Teleport(playerid, params)
if IsPlayerAdmin(playerid) == 1
then
local result,from_id,to_id = sscanf(params,"dd");
if result == 1
then
if IsPlayerConnected(from_id) == 1
then
if IsPlayerConnected(to_id) == 1
then
SendPlayerMessage(from_id,255,250,200,string.format("%s %s","You have been teleported to",GetPlayerName(to_id)));
SendPlayerMessage(to_id,255,250,200,string.format("%s %s","To you has teleported",GetPlayerName(from_id)));
local x,y,z = GetPlayerPos(to_id);
SetPlayerPos(from_id,x + 50,y,z);
else
SendPlayerMessage(playerid,255,250,200,string.format("%s %d %s","(Server): Player ID",to_id,"is not connected with server."));
end
else
SendPlayerMessage(playerid,255,250,200,string.format("%s %d %s","(Server): Player ID",from_id,"is not connected with server."));
end
else
SendPlayerMessage(playerid,255,250,200,"Use: /tp (fromplayerid) (toplayerid)");
end
else
SendPlayerMessage(playerid,255,250,200,"(Server): You are not admin!");
end
end[/lua]
Ich musste alles leider erstmal kürzen, da es nur 10.000 Zeichen zur Verfügung stehen.
Im Anhang könnt ihr euch das Script Herunterladen.
Weitere Erklärungen im weiteren Beitrag.