Sers Leude,
mein Mute System entmutet den Spieler nicht nach Zeit angeabe:
ocmd:mute(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,HELLROT,"AdmCmd: Du besitzt keine Rechte, um diesen Befehl zu benutzen!");
{
new pID;
new reason[64];
new time;
if(sscanf(params,"uis",pID,time,reason))return SendClientMessage(playerid,HELLROT,"AdmCmd: Benutze /mute [SpielerID] [Zeit(Minuten)] [Grund]");
if(!IsPlayerConnected(pID))return SCM(playerid,HELLROT,"AdmCmd: Der Spieler befindet sich zurzeit nicht auf dem Server!");
{
if(isPlayerAnAdmin(pID,1))
{
SendClientMessage(playerid,HELLROT,"AdmCmd: Du kannst keine Admins muten!");
return 1;
}
else if(time > 0 && time < 999999)
{
new string[128],tmptime = time;
format(string,sizeof(string),"%s wurde vom Administrator %s für %i Minuten gemutet. Grund: %s",SpielerName(pID),SpielerName(playerid),tmptime,reason);
SendClientMessageToAll(HELLROT,string);
SetPVarInt(pID,"Mute",1);
return 1;
}
}
return 1;
}
}
Mute spinnt
- John_Sanclear
- Geschlossen
- Erledigt
-
-
Poste mal die Errors, bitte.
-
Da kommen keine Errors alles funktioniert, nur der Spieler wird nicht entmutet
Wenn ich 2 Minuten eingebe, sollte es ja anch 2 Minuten entmuten funk aber nicht -
Zitat
SetPVarInt(pID,"Mute",1);
Du lässt das auf 1 setzten, aber wo ist der Timer dazu? -
Hab ich glaub keinen, wie erstell ich den und wohin soll ich das einfügen?
-
SetTimerEx("PublicName",ZeitInMillisekunden,true = wiederholen false = nicht,"i",pID);
Das in den Code rein bei SetPVarInt.
Dann machst du noch den Public wo du das wieder auf 0 setzt -
Das in den Code rein bei SetPVarInt.
Wie meinst du das?
-
ocmd:mute(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,HELLROT,"AdmCmd: Du besitzt keine Rechte, um diesen Befehl zu benutzen!");
{
new pID;
new reason[64];
new time;
if(sscanf(params,"uis",pID,time,reason))return SendClientMessage(playerid,HELLROT,"AdmCmd: Benutze /mute [SpielerID] [Zeit(Minuten)] [Grund]");
if(!IsPlayerConnected(pID))return SCM(playerid,HELLROT,"AdmCmd: Der Spieler befindet sich zurzeit nicht auf dem Server!");
{
if(isPlayerAnAdmin(pID,1))
{
SendClientMessage(playerid,HELLROT,"AdmCmd: Du kannst keine Admins muten!");
return 1;
}
else if(time > 0 && time < 999999)
{
new string[128],tmptime = time;
format(string,sizeof(string),"%s wurde vom Administrator %s für %i Minuten gemutet. Grund: %s",SpielerName(pID),SpielerName(playerid),tmptime,reason);
SendClientMessageToAll(HELLROT,string);
SetPVarInt(pID,"Mute",1);
SetTimerEx("PublicName",ZeitInMillisekunden,true = wiederholen false = nicht,"i",pID);
return 1;
}
}
return 1;
}
}
So mein ich das -
ZeitInMilliSekunde wie soll ich das machen, weil es kann sein das ich mal
5Min mache oder 10 min vllt auch 30Min ? Verstehste was ich meine. -
Hier kannst du die Zeit in Millisekunden umrechnen lassen: http://metricconversion.biz/de/zeit-umrechnung.html
-
-
Ja ich meine aber, dass wenn ich /mute SpielerID MINUTE Grund
Wenn ich z.B 20 Min eingebe. Muss ich dann für jede Minute ein Timer erstellen? -
Man kann ja schreiben das 1 Minute 60 Sekunden sind und die Zahl die du eintippst * 60000 Millisekunden genommen wird und somit sollte die länge des TBans entstehen.
-
Ohne Timer bitte...
UnmutePlayer(playerid, minuten)
{
DeletePVar(playerid, "muteTill");
return 1;
}MutePlayer(playerid, minuten)
{
SetPVarInt(playerid, "muteTill", gettime()+(minuten*60));
return 1;
}public OnPlayerText(playerid, text[])
{
if(GetPVarInt(playerid, "muteTill") > gettime())
{
new str[128];
format(str,sizeof(str), "Fehler: Du hast Sprechverbot. %d Sekunden bis du wieder sprechen kannst!", GetPVarInt(playerid, "muteTill")-gettime());
SendClientMessage(playerid, 0xFF0000FF, str);
return 0;
}
//...
return 1;
}Dieser kleine Code ist ein vollständig funktionierendes Mute-System inklusive der Angabe wie lange man noch gemutet ist beim Versuch etwas zu schreiben.
//Edit: UnmutePlayer(playerid) hinzugefügt
-
ocmd:mute(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,HELLROT,"AdmCmd: Du besitzt keine Rechte, um diesen Befehl zu benutzen!");
{
new pID;
new reason[64];
new time;
if(sscanf(params,"uis",pID,time,reason))return SendClientMessage(playerid,HELLROT,"AdmCmd: Benutze /mute [SpielerID] [Zeit(Minuten)] [Grund]");
if(!IsPlayerConnected(pID))return SCM(playerid,HELLROT,"AdmCmd: Der Spieler befindet sich zurzeit nicht auf dem Server!");
{
if(isPlayerAnAdmin(pID,1))
{
SendClientMessage(playerid,HELLROT,"AdmCmd: Du kannst keine Admins muten!");
return 1;
}
else if(time > 0 && time < 999999)
{
new string[128],tmptime = time;
format(string,sizeof(string),"%s wurde vom Administrator %s für %i Minuten gemutet. Grund: %s",SpielerName(pID),SpielerName(playerid),tmptime,reason);
SendClientMessageToAll(HELLROT,string);
SetPVarInt(pID,"Mute",1);
SetTimerEx("MuteTime",6000,false,"i",pID);
return 1;
}
}
return 1;
}
}public MuteTime(playerid)
{
new pID;
SetPVarInt(pID,"Mute",0);
return 1;
}So sieht das aus, leider kann die Person trotzdem was schreiben obwohl siehe hier.
public OnPlayerText(playerid, text[])
{
new pID;
if(GetPVarInt(pID,"Mute") >= 1) return 0; -
breadfish.de
Hat das Thema geschlossen.