Hey, bin noch wie mann so will ein noob im scripten.
Ich hab eine frage, die wäre:
Wie kann ich jemanden den Report verschließen zb wenn er iwas sinnloses redet?
Sollte aber nach dem Relogg wieder weg sein.
Ich hoffe ihr könnt mir weiter helfen ![]()
Hey, bin noch wie mann so will ein noob im scripten.
Ich hab eine frage, die wäre:
Wie kann ich jemanden den Report verschließen zb wenn er iwas sinnloses redet?
Sollte aber nach dem Relogg wieder weg sein.
Ich hoffe ihr könnt mir weiter helfen ![]()
bei den new´s:
new reportoff[MAX_PLAYERS];
dann bei onplayercommandtext
dcmd(reportoff,9,cmdtext);
und dann ganz unten (auserhalb eines publics):
dcmd_reportoff(playerid, params[])
{
new pid;
new pname[MAX_PLAYER_NAME];
new adminname[MAX_PLAYER_NAME];
new string1[128];
new string2[128];
if(sscanf(params, "d",pid))
{
return SendClientMessage(playerid, 0xB90000FF, "Verwendung: /reportoff [PlayerID]");
}
GetPlayerName(playerid, adminname,sizeof adminname);
GetPlayerName(pid, pname, sizeof pname);
format(string1, sizeof string1, "Du hast die /report Funktion für %s deaktiviert!", pname);
format(string2, sizeof string2, "Admin %s hat die /report Funktion für dich deaktiviert!", adminname);
SendClientMessage(pid,0xB90000FF,string2);
SendClientMessage(playerid, 0xB90000FF, string1);
reportoff[playerid] = 1;
return 1;
}
musst halt noch dcmd und sscanf definieren. siehe meine signatur ;D
und eben noch dementsprechend bei deiner /report funktion:
if(reportoff[playerid] == 1)
{
//kein report
}
else
{
//report erlaubt
}
viel spass damit ![]()
Ach ja und um /report wieder einzuschalten:
dcmd_reporton(playerid, params[])
{
new pid;
new pname[MAX_PLAYER_NAME];
new adminname[MAX_PLAYER_NAME];
new string1[128];
new string2[128];
if(sscanf(params, "d",pid))
{
return SendClientMessage(playerid, 0xB90000FF, "Verwendung: /reporton [PlayerID]");
}
GetPlayerName(playerid, adminname,sizeof adminname);
GetPlayerName(pid, pname, sizeof pname);
format(string1, sizeof string1, "Du hast die /report Funktion für %s aktiviert!", pname);
format(string2, sizeof string2, "Admin %s hat die /report Funktion für dich aktiviert!", adminname);
SendClientMessage(pid,0xB90000FF,string2);
SendClientMessage(playerid, 0xB90000FF, string1);
reportoff[playerid] = 0;
return 1;
}
Ein Edit noch^^:
bei OnPlayerConnect():
reportoff[playerid] = 0;
Das ist dann aber für alle nicht für den Spieler ansich, daher reportoff durch new reportoff[MAX_PLAYERS]; und reportoff[playerid] ersetzen.
Stimmt Tschuldigung vergessen!
Bei den beiden Commands bitte noch:
reportoff[playerid] = 1;
mit
reportoff[pid] = 1;
ersetzen, der Admin soll sich ja nicht selbst bannen :>
danke für die schnelle hilfe ![]()
kriege es aber leider mit dem dcmd nicht recht gebacken :s
wäre es möglich diese 2 befehle cmd umzuschreiben?:s
FüR GODFATHER! (bei selfmade kommen errorz)
Oben unter den anderen "new"s einfügen:
new pReportBlock[MAX_PLAYERS]
Unter OnPlayerConnect:
pReportBlock[playerid]=0;
/togreport [playerid]
if(strcmp(cmd,"/togreport",true)==0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] < CHANGEME_CHANGEME_CHANGEME) { return 1; } //CHANGEME_CH...=Ab welchen Adminlevel das CMD benutzt werden darf
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /togreport [Playerid]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid) && (giveplayerid != INVALID_PLAYER_ID))
{
if(pReport[playerid]==0)
{
pReportBlock[giveplayerid]=0;
SendClientMessage(playerid,COLOR_GREY,"Report wurde für diesen Spieler wieder eingeschaltet!");
}
else
{
pReportBlock[giveplayerid]=1;
SendClientMessage(playerid,COLOR_GREY,"Report wurde für diesen Spieler ausgeschaltet!");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Falsche ID !");
return 1;
}
}
return 1;
}
/report
if(strcmp(cmd, "/report", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new pName[MAX_PLAYER_NAME]
GetPlayerName(playerid,pName, sizeof(pName));
if(pReportBlock[playerid] == 1) { return SendClientMessage(playerid,COLOR_GREY,"Du darfst dieses Befehl nicht benutzen!"); }
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "Verwendung: /report [text]");
return 1;
}
format(string, sizeof(string), "Report von %s: %s", pName, (result));
ABroadCast(COLOR_YELLOW,string,1);
SendClientMessage(playerid, COLOR_YELLOW, "Dein Report wurde an die Admins gesendet.");
}
return 1;
}
/report is aus nem irgendsonem alten GF-Edit kopiert, und ich habe es HIER geschrieben, es ist ungetestet.
Vielen Dank
Ist alles richtig gewesen, nur bei
new pName[MAX_PLAYER_NAME] hat ein Simikolon gefehlt oder wie auch imemr es geschrieben wird ![]()
danke danke^^
//edit, geht doch nicht, er sperrt den report einfach nicht
Es steht dort immer der report wurde wieder angeschaltet, aber er wird nicht gesperrt :s
Liegt dran weil er in der if Abfrage am Ende ein ==0 stehen hat und dann pReportBlock[giveplayerid] = 0;
Richtig ist es so:
if(strcmp(cmd,"/togreport",true)==0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pAdmin] < CHANGEME_CHANGEME_CHANGEME) { return 1; } //CHANGEME_CH...=Ab welchen Adminlevel das CMD benutzt werden darf
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /togreport [Playerid]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid) && (giveplayerid != INVALID_PLAYER_ID))
{
if(pReport[playerid]==0)
{
pReportBlock[giveplayerid]=1;
SendClientMessage(playerid,COLOR_GREY,"Report wurde für diesen Spieler wieder eingeschaltet!");
}
else
{
pReportBlock[giveplayerid]=0;
SendClientMessage(playerid,COLOR_GREY,"Report wurde für diesen Spieler ausgeschaltet!");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, "Falsche ID !");
return 1;
}
}
return 1;
}
Viel Spaß ![]()
vielen dank, werde es gleich einmal ausprbieren ![]()