Guten Tag,
ich arbeite derzeit erneut an meinem Adminsystem [MySQL], letztendlich stellt sich aber bei bestimmten Commands mir eine Frage.
Sagen wir mal so, ich arbeite derzeit an einem Timeban System, welches wie folgt aufgebaut ist.
ocmd:tban(playerid,params[])
{
new pID,reason[31],zeit,string[256],cmd[15],zeitdauer;
if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,COLOR_GRAU,"Du kannst diesen Befehl nicht benutzen.");
if(sscanf(params,"udss",pID,zeit,cmd,reason))return SendClientMessage(playerid,COLOR_WRONG,"Benutze: /tban [ID/Teilname][Zeit][Minuten/Stunden/Tage/Wochen][Grund]");
if(strlen(reason) > 30)return SendClientMessage(playerid,COLOR_WRONG,"Benutze: /tban [ID/Teilname][Zeit][Minuten/Stunden/Tage/Wochen][Grund]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,COLOR_GRAU,"Der angegebene Spieler ist nicht eingeloggt.");
if(IsPlayerNPC(pID))return SendClientMessage(playerid,COLOR_GRAU,"Einen NPC kannst du nicht timebannen.");
if(SpielerInfo[playerid][pAdminlevel] == 3)
{
if(SpielerInfo[pID][pAdminlevel] > SpielerInfo[playerid][pAdminlevel])return SendClientMessage(playerid,COLOR_GRAU,"Diesen Befehl kannst du bei dieser Person nicht benutzen.");
}
if(strcmp(cmd,"Wochen",true) == 0)
{
zeitdauer = gettime()+(60*60*24*7*zeit);//in wochen
format(string,sizeof(string),"%s hat den Spieler %s für %i Woche/n gebannt, Grund: %s",SpielerInfo[playerid][pName],SpielerInfo[pID][pName],zeit,reason);
SendClientMessageToAll(COLOR_ROT,string);
SpielerInfo[playerid][pTimeban] = zeitdauer;
SpielerInfo[playerid][pGebannt] = 1;
BanUser(pID,SpielerInfo[playerid][pName],reason,zeitdauer);
return 1;
}
if(strcmp(cmd,"Tage",true) == 0)
{
zeitdauer = gettime()+(60*60*24*zeit);//in tagen
format(string,sizeof(string),"%s hat den Spieler %s für %i Tag/e gebannt, Grund: %s",SpielerInfo[playerid][pName],SpielerInfo[pID][pName],zeit,reason);
SendClientMessageToAll(COLOR_ROT,string);
SpielerInfo[playerid][pTimeban] = zeitdauer;
SpielerInfo[playerid][pGebannt] = 1;
BanUser(pID,SpielerInfo[playerid][pName],reason,zeitdauer);
return 1;
}
if(strcmp(cmd,"Stunden",true) == 0)
{
zeitdauer = gettime()+(60*60*zeit);//in stunden
format(string,sizeof(string),"%s hat den Spieler %s für %i Stunde/n gebannt, Grund: %s",SpielerInfo[playerid][pName],SpielerInfo[pID][pName],zeit,reason);
SendClientMessageToAll(COLOR_ROT,string);
SpielerInfo[playerid][pTimeban] = zeitdauer;
SpielerInfo[playerid][pGebannt] = 1;
BanUser(pID,SpielerInfo[playerid][pName],reason,zeitdauer);
return 1;
}
if(strcmp(cmd,"Minuten",true) == 0)
{
zeitdauer = gettime()+(60*zeit);//in minuten
format(string,sizeof(string),"%s hat den Spieler %s für %i Minute/n gebannt. Grund: %s",SpielerInfo[playerid][pName],SpielerInfo[pID][pName],zeit,reason);
SendClientMessageToAll(COLOR_ROT,string);
SpielerInfo[playerid][pTimeban] = zeitdauer;
SpielerInfo[playerid][pGebannt] = 1;
BanUser(pID,SpielerInfo[playerid][pName],reason,zeitdauer);
return 1;
}
return 1;
}
{
new pID,reason[31],zeit,string[256],cmd[15],zeitdauer;
if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,COLOR_GRAU,"Du kannst diesen Befehl nicht benutzen.");
if(sscanf(params,"udss",pID,zeit,cmd,reason))return SendClientMessage(playerid,COLOR_WRONG,"Benutze: /tban [ID/Teilname][Zeit][Minuten/Stunden/Tage/Wochen][Grund]");
if(strlen(reason) > 30)return SendClientMessage(playerid,COLOR_WRONG,"Benutze: /tban [ID/Teilname][Zeit][Minuten/Stunden/Tage/Wochen][Grund]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,COLOR_GRAU,"Der angegebene Spieler ist nicht eingeloggt.");
if(IsPlayerNPC(pID))return SendClientMessage(playerid,COLOR_GRAU,"Einen NPC kannst du nicht timebannen.");
if(SpielerInfo[playerid][pAdminlevel] == 3)
{
if(SpielerInfo[pID][pAdminlevel] > SpielerInfo[playerid][pAdminlevel])return SendClientMessage(playerid,COLOR_GRAU,"Diesen Befehl kannst du bei dieser Person nicht benutzen.");
}
if(strcmp(cmd,"Wochen",true) == 0)
{
zeitdauer = gettime()+(60*60*24*7*zeit);//in wochen
format(string,sizeof(string),"%s hat den Spieler %s für %i Woche/n gebannt, Grund: %s",SpielerInfo[playerid][pName],SpielerInfo[pID][pName],zeit,reason);
SendClientMessageToAll(COLOR_ROT,string);
SpielerInfo[playerid][pTimeban] = zeitdauer;
SpielerInfo[playerid][pGebannt] = 1;
BanUser(pID,SpielerInfo[playerid][pName],reason,zeitdauer);
return 1;
}
if(strcmp(cmd,"Tage",true) == 0)
{
zeitdauer = gettime()+(60*60*24*zeit);//in tagen
format(string,sizeof(string),"%s hat den Spieler %s für %i Tag/e gebannt, Grund: %s",SpielerInfo[playerid][pName],SpielerInfo[pID][pName],zeit,reason);
SendClientMessageToAll(COLOR_ROT,string);
SpielerInfo[playerid][pTimeban] = zeitdauer;
SpielerInfo[playerid][pGebannt] = 1;
BanUser(pID,SpielerInfo[playerid][pName],reason,zeitdauer);
return 1;
}
if(strcmp(cmd,"Stunden",true) == 0)
{
zeitdauer = gettime()+(60*60*zeit);//in stunden
format(string,sizeof(string),"%s hat den Spieler %s für %i Stunde/n gebannt, Grund: %s",SpielerInfo[playerid][pName],SpielerInfo[pID][pName],zeit,reason);
SendClientMessageToAll(COLOR_ROT,string);
SpielerInfo[playerid][pTimeban] = zeitdauer;
SpielerInfo[playerid][pGebannt] = 1;
BanUser(pID,SpielerInfo[playerid][pName],reason,zeitdauer);
return 1;
}
if(strcmp(cmd,"Minuten",true) == 0)
{
zeitdauer = gettime()+(60*zeit);//in minuten
format(string,sizeof(string),"%s hat den Spieler %s für %i Minute/n gebannt. Grund: %s",SpielerInfo[playerid][pName],SpielerInfo[pID][pName],zeit,reason);
SendClientMessageToAll(COLOR_ROT,string);
SpielerInfo[playerid][pTimeban] = zeitdauer;
SpielerInfo[playerid][pGebannt] = 1;
BanUser(pID,SpielerInfo[playerid][pName],reason,zeitdauer);
return 1;
}
return 1;
}
Der Wert wie lange der Spieler gebannt ist wird halt in der Zeile gesetzt, aber wie bekomme ich den Wert jetzt runtergezählt und sobald er wieder bei 0 ist, den Spieler entsperrt?
stock BanUser(playerid,admin[],reason[],zeit = -1)
{
new query[256];
gettime(stunde,minute,sekunde);
getdate(jahr,monat,tag);
format(query,sizeof(query),"Admin: %s * Zielperson: %s * Grund: %s * Zeit: %i",admin,SpielerInfo[playerid][pName],reason,zeit);
Log("Bannedsqllog",query);
SavePlayer(playerid);
TogglePlayerControllable(playerid,0);
SetCameraBehindPlayer(playerid);
SpielerInfo[playerid][pGebannt] = 1;
SetTimerEx("KickDelayed",100,0,"i",playerid);
return 1;
}
{
new query[256];
gettime(stunde,minute,sekunde);
getdate(jahr,monat,tag);
format(query,sizeof(query),"Admin: %s * Zielperson: %s * Grund: %s * Zeit: %i",admin,SpielerInfo[playerid][pName],reason,zeit);
Log("Bannedsqllog",query);
SavePlayer(playerid);
TogglePlayerControllable(playerid,0);
SetCameraBehindPlayer(playerid);
SpielerInfo[playerid][pGebannt] = 1;
SetTimerEx("KickDelayed",100,0,"i",playerid);
return 1;
}