Hallo Community :)!
Hiermit zeige ich euch wie man ein Warn system erstellt, bin noch Anfänger aber ich denke das klappt schon
Ich werde euch zeigen wie ihr spieler verwarnen könnt b.z.w bei 3Warns Gleich bannen tut.
Und wie ihr den User wieder die Warns entziehen könnt.
Ich Arbeite mit PVar´s..
Fangen wir an.
Für den befehel braucht ihr ocmd b.z.w ich arbeite hier im Tutorialmit ocmd
#include <ocmd>
if(IsPlayerAnAdmin(playerid,3))//IsPlayerAnAdmin ist die Abfrage ob der Spieler admin ist playerid ist der Spieler der den Befehl ausführt und die 3 welcher Adminrang er sein soll um den befehl auszuführen.
new pID,text[128],text2[128],string[128]//pID = playerid, text/2[128]=Das er ein Text von 128Zeichen erhalten darf string= Wird an den User, Usern ausgegeben
if(sscanf(params,"us",pID,text))return SendClientMessage(playerid,GRAU,"Verwendung: /warn [playerid][Grund]");//if = Eine Abfrage.. us.. u=Der Spieler.. s = text.. GRAU die Farbe
format(string,sizeof(string),"%s wurde von %s gewarnt Grund: %s",SpielerName(pID),SpielerName(playerid),text);
format = er formatiert den text sobald der Befehl ausgeführt wird! string = wie oben genannt er gibt den Text an den usern aus. sizeof = länge %s = Der Spieler b.z.w den Text und hinter den Komma dann sind SpielerName das ist ein stock da werden wir gleich zu kommen.
Hinter den Komma entscheidet ihr was er macht soll er als %s ein Spieler oder ein Text nehmen deswegen SpielerName(playerid) e.t.c
SendClientMessageToAll(ROT,string);//SendClientMessageToAll = Sollte klar sein er gibt eine Nachricht an alle User auf dem Server aus. string = was wir oben gemacht haben und dass was ich 2x erklärt habe :)
SendClientMessage(pID,ROT,"[Server]: Wenn du 3Warnungen hast wirst du automatisch gebannt! Pass Auf!");
Diesmal soll er nur ein Text an pID = an den spieler schicken.
SetPVarInt(pID,"Warns",GetPVarInt(pID,"Warns")+1);// SetPVarInt = er setzt in seiner Account datei ein Warn höhrer "Warns" ist das wo wir noch zu kommen.
pID = der spieler von dem der Warn erhöht werden soll GetPVarInt = er wird den warn erhalten +1 = 1Warn höhrer
if(GetPVarInt(pID,"Warns")==3)// Er fragt ab was er machen soll wenn der Spieler ==3 ( 3Warns ) hat.
{
format(text2,sizeof(text2),"%s wurde von %s gebannt. Grund: 3Warnungen",SpielerName(pID),SpielerName(playerid),text);
SendClientMessageToAll(ROT,string);
SetPVarInt(pID,"Banned",1);
Kick(pID);
return 1;
}
format habe ich bereits erklärt.. SendClientMessage auch %s auch.
SetPVarInt = er setzt in der Account datei den Banned auf 1 = er wird/wurde gebannt und kann dann nicht mehr auf dem Server connnecten.
Kick(pID); er kickt den Spieler dannn das er nicht weiter spielen kann und Gebannt ist.
Am ende sieht es so aus
ocmd:warn(playerid,params[])
{
if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,DROT,"Du bist nicht befugt diesen befehel zu nutzen!");
new pID, text[128], string[128], text2[128];
if(sscanf(params,"us",pID,text))return SendClientMessage(playerid,GRAU,"Verwendung: /warn [playerid][Grund]");
format(string,sizeof(string),"%s wurde von %s gewarnt Grund: %s",SpielerName(pID),SpielerName(playerid),text);
SendClientMessageToAll(ROT,string);
SendClientMessage(pID,ROT,"[Server]: Wenn du 3Warnungen hast wirst du automatisch gebannt! Pass Auf!");
SetPVarInt(pID,"Warns",GetPVarInt(pID,"Warns")+1);
if(GetPVarInt(pID,"Warns")==3)
{
format(text2,sizeof(text2),"%s wurde von %s gebannt. Grund: 3Warnungen",SpielerName(pID),SpielerName(playerid),text);
SendClientMessageToAll(ROT,string);
SetPVarInt(pID,"Banned",1);
Kick(pID);
return 1;
}
return 1;
}
ocmd:dwarn(playerid,params[])
{
if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,DROT,"Du bist nicht befugt diesen befehel zu nutzen!");
new pID;
if(sscanf(params,"u",pID))return SendClientMessage(playerid,GRAU,"Verwendung: /dwarn [playerid]");
SendClientMessage(pID,GRAU,"[Server]: Ein Admin hat dir ein Warn entzogen!");
SetPVarInt(pID,"Warns",GetPVarInt(pID,"Warns")-1);
return 1;
}
SetPVarInt und -1 er setzt den Spieler 1Warn runter!
nun gehen wir zu
stock Spielerladen // oder wie ihr das genannt habt.
SetPVarInt(playerid,"Warns",dini_Int(Spielerdatei,"Warns"));// er soll den Spieler mit seine Warns laden.
dan gehen wir zu SpielerSpeichern
dini_IntSet(Spielerdatei,"Warns",GetPVarInt(playerid,"Warns")); // er speichert in der Dini datei seine Warns
der stock SpielerName unten im script wo die anderen stock´s sind
stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME]; // er erstellt ein name und den Max. player auf dem Server damit er jeden meinen kann
GetPlayerName(playerid,name,sizeof(name));
return name;
}
So ich hoffe das Tutorial war verständlich und ich hoffe es hat euch gefallen.
Wenn fragen oder Probleme sind gerne hier rein schreiben oder per PN schreiben.
Ich bin Anfänger sry wenn fehler sind wenn ich was falsch erklärt habe ihr dürft es gerne rein schreiben
Mit Freundlichen Grüßen
Pascal