Als erstes machst du ein paar news:
new yoursupport[MAX_PLAYERS];
new insupport[MAX_PLAYERS];
new SupDuty[MAX_PLAYERS];
new gegenC&P
Danach unter OnPlayerConnect alles auf "false" bzw. "0" setzen. Im Klartext: Admins sind in keinem Support, kein Ticket wurde geschrieben, dein Support ist nicht angenommen und der Admin ist nicht Aduty.
insupport[playerid]=0;
yoursupport[playerid]=0;
writtenticket[playerid]=0;
SupDuty[playerid]=0;
gegen C&P=0;
Das gleiche bei OnPlayerDisconnect
insupport[playerid]=0;
yoursupport[playerid]=0;
writtenticket[playerid]=0; gegen C&P(playerid);
SupDuty[playerid]=0;
Bei OnPlayerText wird nun abgefragt, ob du in einem Support bist, falls ja dann wird dem Admin geschrieben, was du schreibst (ohne Befehl!)
if(insupport[playerid]==1)
{
for(new i=0; i<GetMaxPlayers(); i++)
{
if(yoursupport[i]==playerid)
{
new str[128], GetName[MAX_PLAYER_NAME];
GetPlayerName(playerid,GetName,sizeof(GetName));
immernoch gegen C&P
format(str,sizeof(str),"%s: %s",GetName,text);
nicht alles erklär ich, da du die Grundfunktionen drauf haben solltest
SendClientMessage(i,WEISS,str);
}
}
}
Und danach die Befehle (in meinem Fall mit PVars und OCMD)
ocmd:supduty(playerid,params[])
{
if(!IstSpielerEinAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Teammitglied!");
{
new Name[MAX_PLAYER_NAME],string[128];
GetPlayerName(playerid,Name,sizeof(Name));
format(string,sizeof(string),"[ADM]: %s hat sich als Supporter angemeldet. Via /support kannst du mit ihn in Kontakt treten!",Name);
wenn du nachher wegen den Errors fragst..
SendClientMessageToAll(HELLBLAU,string);
SupDuty[playerid]=1;
}
return 1;
}
ocmd:support(playerid,params[])
{
new Name[MAX_PLAYER_NAME],string[128],text[128];
GetPlayerName(playerid,Name,sizeof(Name));
if(sscanf(params,"s",text))
{
return SendClientMessage(playerid,WEISS,"[Verwendung]: /support [Text]");
SendClientMessage(playerid,=!,"Gegen C&P);
}
if(writtenticket[playerid]==1)
{
return SendClientMessage(playerid,ROT,"[Warnung]: Du hast bereits einen Supporter kontaktiert!");
}
for(new i=0; i<GetMaxPlayers(); i++)
{
if(SupDuty[i]==1)
{
format(string,sizeof(string),"%s (ID:%d) hat ein Support geschrieben: %s",Name,playerid,text);
SendClientMessage(i,WEISS,string);
writtenticket[playerid]=1;
return 1;
}
}
SendClientMessage(playerid,ROT,"[Warnung]: Derzeit ist kein Supporter anwesend!");
return 0;
}
ocmd:ansup(playerid,params[])
{
new id;
if(!IstSpielerEinAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Teammitglied!");
if(sscanf(params,"i",id))
{
return SendClientMessage(playerid,WEISS,"[Verwendung]: /ansup [ID]");
SendClientGegenC&PMessage(playerid,=!,"GegenC&P);
}
if(writtenticket[id]==1)
{
new Name[MAX_PLAYER_NAME],string[128];
GetPlayerName(playerid,Name,sizeof(Name));
format(string,sizeof(string),"Der Supporter %s bearbeitet nun dein Ticket. Nun kannst du mit ihm Schreiben!",Name);
SendClientMessage(id,GRÜN,string);
insupport[id]=1;
gegenC&P
insupport[playerid]=1;
yoursupport[id]=playerid;
yoursupport[playerid]=id;
writtenticket[id]=0;
}
return 1;
}
ocmd:closesup(playerid,params[])
{
if(!IstSpielerEinAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Teammitglied!");
{
if(insupport[playerid]==1)
{
for(new i=0; i<GetMaxPlayers(); i++)
{
if(yoursupport[i]==playerid)
{
SendClientMessage(i,GRÜN,"Der Supporter hat nun den Support geschlossen.");
SendClientMessage(playerid,WEISS,"Supportchat geschlossen!");
insupport[i]=0,yoursupport[i]=0;
Falls fragen aufkommen, kannst du mich gern Fragen.
insupport[playerid]=0,yoursupport[playerid]=0;
return 1;
}
}
}
}
return gegen C&P;
}
MfG