Hallo liebe Community!
Ich mache nun ein Report system mit Dialoge.
Ich hoffe es gefällt euch ich scripte es auf meine art und weise und möchte keine dumme Kommentare hören
das ich dass falsch scripte etc..
Weil sowas könnt ihr euch Sparen weil ich gebe 1000% drauf das dass Report system klappen wird. ( Jeden falls bei mir )
Nun Viel Spaß =)
Als erstes brauchen wir das inlucde ocmd. Ihr könnt es gerne bei OnPlayerCommandText machen aber ich mache es mit ocmd.
oben im script wo #include <a_samp> steht machen wir eine zeile darunter #include <ocmd> //#include = er inluciert ein include :D ocmd = Command-Prrozessor ein include was man sich Downlaoden muss
Was ist OCMD?
Ocmd ist ein Command-Prozessor womit man größere Befehle scripten kann und auch leichter ist.
Nun gehen wir paar zeilen runter bei den includes und machen die Dialoge
#define DIALOG_REPORT 1 // #define -->Definiert etwas -->DIALOG_REPORT--> Ist der
name ihr könnt es auch anders nennen --> 1 = Der 1Dialog. Wenn ihr
mehrere Dialoge habt dan müsst ihr die Zahl anpassen
#define DIALOG_BESCHWERDE 2
#define DIALOG_FRAGE 3
#define DIALOG_HILFE 4
Wenn ihr nun das include ocmd includiert habt macht ihr bei einer beliebigen stelle die ocmd Command am besten ihr macht ein Kommentar.
//OCMD-Commands
Wenn ihr eine Stelle gefunden habt, macht am besten über OnPlayerCommandText.. Dann macht ihr das so
ocmd:report(playerid,params[])
{
return 1;
}
//ocmd = der command-prozessor.. report = der name könnt ihr auch anders nennen... playerid = der player der den befehl ausführt.
params[] = parameter die wir hier nicht brauchen
Dann macht ihr über return 1; das hier
ShowPlayerDialog(playerid,DIALOG_REPORT,DIALOG_STYLE_LIST,"Report","Beschwerde gegen ein User\nFrage an die Admins\nHilfe","Wählen","Abbrechen");// ShowPlayerDialog = Er zeigt den Spieler den Spieler ein Dialog an = DIALOG_REPORT Den wir definiert haben.. DIALOG_STYLE_LIST = Der Dialog style ist eine Liste und "Report" ist die Überschrift.
"Was da drinne steht Beschwerde gegen user" etc ist der Text wasim Dialog drinne steht und Wählen und Abbrechen sind die 2Buttons
Nun gehen wir zu OnDialogResponse
dann machen wir..
if(dialogid == DIALOG_REPORT)
{
return 1;
}
if ist eine anfrage er fragt hier ab was wir für ein Dialog verwenden möchten. In unseren fall DIALOG_REPORT und dialogid ist der dialog den wir definiert haben.
Da drinne machen wir nun
if(response == 0)
{
SendClientMessage(playerid,ROT,"Sie haben das --/report-- Menü verlassen.");
}
Er fragt nun hier ab was er mit den Button machen soll response = Der Button 0 = Der rechte Button in useren fall Abbrechen!
Nun fragen wir den Link Button gleich darunter ab was der machen soll..
Er soll die liste aufzählen das werde ich schnell machen..
if(response==1)
{
if(listitem==0)
{
ShowPlayerDialog(playerid,DIALOG_BESCHWERDE,DIALOG_STYLE_INPUT,"Report ( Beschwerde über ein User )","Bitte geben sie ihre Beschwerde ein.\nSchreiben sie anschließend den Name + ID.\nBeispiel: Pascal ID:14","Report","Abbrechen");
return 1;
}
if(listitem==1)
{
ShowPlayerDialog(playerid,DIALOG_FRAGE,DIALOG_STYLE_INPUT,"Report ( Frage an Admins )","Bitte stellen sie ihr Frage und schreiben sie es hier rein","Report","Abbrechen");
return 1;
}
if(listitem==2)
{
ShowPlayerDialog(playerid,DIALOG_HILFE,DIALOG_STYLE_INPUT,"Report ( Hilfe )","Sie benötigen Hilfe? Schreiben sie es hier rein für was sie Hilfe benötigen!","Report","Abbrechen");
return 1;
}
return 1;
}
Das ist nun alles habe eig nun alles erklärt außer listitem.
listitem ist die Liste in welcher reinfolge er es auflistet es fängt mit 0 an das ist sozusagen das 1 was angezeigt wird.
Und darunter erstellen wir die nächsten Teile.
Wir fragen nun ein neuen Dialog ab. ( DIALOG_BESCHWERDE )
if(dialogid == DIALOG_BESCHWERDE)
{
return 1;
}
Dann da rein wieder
if(response == 0)
{
return 1;
}
if(response == 1)
{
return 1;
}
nun erstellen wir bei response == 1 das hier
new string[128],string2[128];//new = Erstellt eiene neue variable string/2 = Das er die nachricht ausgibt denn die strings werden wir formatieren
und [128] = Eine Array größe, die, die länge des textes bestimmt!
Nun erstellen wir das format
format(string,sizeof(string),"%s hat ein Report abgeschickt. Katogorie: Beschwerde über ein User",SpielerName(playerid));
Nun formatieren wir den text der an die Admins geschickt wird. format = formatierung, string = die variable.. sizeof = er bestimmt die länge der Array größe, %s ein Text bzw name bsp: Pascal hat ein Report abgeschickt.. SpielerName(playerid) = SpielerName ist ein stock playerid sagte ich bereits
SendAdminMessage(DROT,string);
format(string2,sizeof(string2),"Report-Text: %s",inputtext);
SendAdminMessage(DROT,string2);
SendClientMessage(playerid,Gelb,"Ihr Report wird gerade überprüft, haben Sie ein wenig Geduld.");
Und hier schickt er alles an die Admin und string2 wird da auch formatiert
Dann wird eine Message an den player geschickt das sein Report bearbeitet wird.
Und dass machen wir mit alle dialoge.
if(dialogid == DIALOG_FRAGE)
{
if(response==0)
{
return 1;
}
if(response==1)
{
new string[128],string2[128];
format(string,sizeof(string),"%s hat ein Report abgeschickt. Katogorie: Frage an die Admins",SpielerName(playerid));
SendAdminMessage(DROT,string);
format(string2,sizeof(string2),"Report-Text: %s",inputtext);
SendAdminMessage(DROT,string2);
SendClientMessage(playerid,Gelb,"Ihr Report wird gerade überprüft, haben Sie ein wenig Geduld.");
return 1;
}
return 1;
}
if(dialogid == DIALOG_HILFE)
{
if(response==0)
{
return 1;
}
if(response==1)
{
new string[128],string2[128];
format(string,sizeof(string),"%s hat ein Report abgeschickt. Katogorie: Hilfe",SpielerName(playerid));
SendAdminMessage(DROT,string);
format(string2,sizeof(string2),"Report-Text: %s",inputtext);
SendAdminMessage(DROT,string2);
SendClientMessage(playerid,Gelb,"Ihr Report wird gerade überprüft, haben Sie ein wenig Geduld.");
return 1;
}
return 1;
}
Unten im Script kommt das rein
die stocks werde ich nun nicht erklären
stock SendAdminMessage(color,const message[])
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && IsPlayerAnAdmin(i,1))
{
SendClientMessage(i,color,message);
}
}
return 1;
}
stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}
Ich hoffe es hat euch Gefallen wenn ich was flasch erklärt habe dann dürft ihr das gerne sagen.
Ich bin selber noch Anfänger und versuche alles =)
Es hat nun 7150Zeichen verbraucht das Tutorial.
Mit Freundlichen Grüßen Pascal