Abend.. ich weiß zwar das das was ich machen will in den Folgenden codes eingebaut ist, aber wollte halt erstmal das sstem testen..
Ich schick euch erstmal einige Codes
enum TicketStats
{
TicketOwner[MAX_PLAYER_NAME],
TicketText[256],
TicketArt,
TicketStatus,
TicketBearbeiter[MAX_PLAYERS]
};
new Ticket[MAX_PLAYERS][TicketStats];
public OnPlayerText(playerid, text[])
{
if(Ticket[playerid][TicketStatus] == 3)
{
new adminname[MAX_PLAYER_NAME], xid, string[128];
xid = Ticket[playerid][TicketBearbeiter];
GetPlayerName(playerid, adminname, sizeof(adminname));
format(string, sizeof(string), "%s %s", adminname, text);
SendClientMessage(xid, COLOR_GRAU, string);
SendClientMessage(playerid, COLOR_GRAU, string);
return 0;
}
if(Ticket[playerid][TicketStatus] == 2)
{
new spielername[MAX_PLAYER_NAME], xid, string[128];
xid = Ticket[playerid][TicketBearbeiter];
GetPlayerName(playerid, spielername, sizeof(spielername));
format(string, sizeof(string), "%s %s", spielername, text);
SendClientMessage(xid, COLOR_GRAU, string);
SendClientMessage(playerid, COLOR_GRAU, string);
return 0;
}
return 1;
}
if(strcmp(cmdtext,"/tickets",true) == 0)
{
if(pInfo[playerid][pAdmin] > 0)
{
new string1[256];
SendClientMessage(playerid, COLOR_ORANGE, "------Ticketsystem-----");
for(new i=0; i<MAX_PLAYERS; i++)
{
if(Ticket[i][TicketStatus] == 1)
{
format(string1, sizeof(string1), "[TicketID: %d | Ersteller: %s | Frage: %s ]", i, Ticket[i][TicketOwner], Ticket[i][TicketText]);
SendClientMessage(playerid, COLOR_ORANGE, string1);
}
}
}
else return SendClientMessage(playerid,COLOR_GRAU,"Du bist kein Admin!");
return 1;
}
ocmd:ct(playerid,params[])
{
new xid;
if(Ticket[playerid][TicketStatus] == 3)
{
Ticket[xid][TicketStatus] = 0;
Ticket[playerid][TicketStatus] = 0;
new adminname[MAX_PLAYER_NAME],spielername[MAX_PLAYER_NAME], string[128];
GetPlayerName(playerid, adminname, sizeof(adminname));
GetPlayerName(xid, spielername, sizeof(spielername));
format(string, sizeof(string), "%s hat dein Ticket geschlossen!", adminname);
SendClientMessage(xid, COLOR_GRAU, string);
SendClientMessage(playerid, COLOR_GRAU, "Du hast das Ticket geschlossen!");
KillTimer(HaveTicketTimer(xid));
}
else return SendClientMessage(playerid,COLOR_GRAU,"Du hast kein offenes Ticket!");
return 1;
}
ocmd:at(playerid,params[])
{
new xid, adminname[MAX_PLAYER_NAME], spielername[MAX_PLAYER_NAME], string[128];
GetPlayerName(playerid, adminname, sizeof(adminname));
GetPlayerName(xid, spielername, sizeof(spielername));
if(Ticket[xid][TicketStatus] != 1) return SendClientMessage(playerid, COLOR_GRAU, "Ticket nicht vorhanden oder bereits in Bearbeitung.");
else
{
format(string, sizeof(string), "%s hat dein Ticket angenommen.", adminname);
SendClientMessage(xid, COLOR_ORANGE, string);
format(string, sizeof(string), "Du hast das Ticket von %s angenommen.", spielername);
SendClientMessage(playerid, COLOR_ORANGE, string);
Ticket[xid][TicketStatus] = 2;//user
Ticket[xid][TicketBearbeiter] = playerid;
Ticket[playerid][TicketStatus] = 3;//ich
Ticket[playerid][TicketBearbeiter] = xid;
for(new i=0; i<MAX_PLAYERS; i++)
{
if(pInfo[i][pAdmin] > 0)
{
format(string, sizeof(string), "%s hat das Ticket von %s angenommen [TicketID: %d]", adminname, spielername, xid);
SendClientMessage(i, COLOR_ORANGE, string);
}
}
}
return 1;
}
ocmd:report(playerid,params[])
{
new sendername[MAX_PLAYER_NAME], str1[256], reason[128];
GetPlayerName(playerid, sendername, sizeof(sendername));
Ticket[playerid][TicketOwner] = sendername;
if(sscanf(params,"s",reason))return SendClientMessage(playerid,COLOR_GRAU,"Fehler: /report [Text]");
{
if(HaveTicket == 0)
{
format(str1, sizeof(str1), "%s", reason);
Ticket[playerid][TicketText] = str1;
Ticket[playerid][TicketArt] = 1;
Ticket[playerid][TicketStatus] = 1; // Status 1 = ertsellt | 2 = angenommen | 0 = keiner
SendClientMessage(playerid,COLOR_GRAU,"{AAFFCC}Dein Ticket wurde erstellt..");
SendClientMessage(playerid,COLOR_GRAU,"{AAFFCC}Wenn das Ticket nach 5 min. nicht beantwortet wird, wird dieses automatisch gelöscht");
HaveTicket = 1;
SetTimer("HaveTicketTimer", 300000, 0);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(pInfo[i][pAdmin] > 0)
{
format(str1, sizeof(str1), "%s hat folgendes Ticket erstellt: %s [TicketID:%d] ", sendername, reason, playerid);
SendClientMessage(i, COLOR_ORANGE, str1);
}
}
}
else
{
SendClientMessage(playerid,0xAA3333FF,"Du hast schon ein Ticket erstellt!");
Ticket[playerid][TicketArt] = 0;
Ticket[playerid][TicketStatus] = 0;
}
}
return 1;
}
Und zwar möchte ich das ich mit /at das Ticket annehme, was zuerst geschrieben wurde.. ein kleines Beispiel..
User 1 hat Report und hat Ticketid 0
user 2 hat Report und hat Ticketid 1
und so weiter bis 100 oder whatever
ich weiß nur nicht wie ich bei /Report und bei /at das einstelle.. bei /ct soll er natürlich das Ticket mit der Ticketid löschen..
Könnt ihr mir da helfen? ich verzweifel langsam..
//edit was hinzugefügt