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