Guten Tag, wenn ich mich selbst Mute dann kann ich nichts Schreiben und wenn ich in die Datenbank gucke steht da "mute" == 1 also ich bin noch gemutet, aber wenn ich Ingame gehe kann ich trotzdem noch Schreiben?
ocmd:mute(playerid,params[])
{
new pID;
new string[528];
new grund[64];
if(IsPlayerConnected(pID))
{
if(sInfo[playerid][alevel] < 2)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!");
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,GRAU,"Verwendung: /mute [PlayerID][Grund]");
if(sInfo[playerid][alevel] < sInfo[pID][alevel])
{
return SendClientMessage(playerid,ORANGE,"Du kannst keinen Admin muten, der einen höheren Rang als du besitzt!");
}
format(string,sizeof(string),"%s wurde von %s gemutet! Grund: %s",GetName(playerid),GetName(pID),grund);
for(new i=0; i<MAX_PLAYERS; i++) if(sInfo[i][alevel] > 0) SendClientMessage(i,ROT,string);
sInfo[pID][mute] = 1;
savePlayer(playerid);
}
return 1;
}
public OnPlayerText(playerid, text[])
{
if(sInfo[playerid][mute]==1)
{
SendClientMessage(playerid,0xFF000FFF,"Gemutet");
return 0;
}
return 1;
}
Mute klappt nicht
- PizzaHaus
- Geschlossen
- Erledigt
-
-
savePlayer(playerid);
zu
savePlayer(pID);Außerdem
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,GRAU,"Verwendung: /mute [PlayerID][Grund]");
zu
if(sscanf(params,"us[64]",pID,grund))return SendClientMessage(playerid,GRAU,"Verwendung: /mute [PlayerID][Grund]"); -
savePlayer(playerid);
zu
savePlayer(pID);Außerdem
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,GRAU,"Verwendung: /mute [PlayerID][Grund]");
zu
if(sscanf(params,"us[64]",pID,grund))return SendClientMessage(playerid,GRAU,"Verwendung: /mute [PlayerID][Grund]");warum überbaut saveplayer wenn er doch mit sinfo enum arbeitet...
wie speicherst du dein script ?
mysql oder dini ?
denn wenn du es so machstsInfo[pID][mute] = 1;
dann wird es eigendlich auch sofort gesetzt
und saveplayer an besten bei onplayerupdate saven
public OnPlayerUpdate(playerid)
{
savePlayer(playerid);
return 1;
}so zb
-
-
@Xtrats
Schau dir nochmal seinen Beitrag an. Er SETZT Mute bereits für die richtige ID auf 1.
Er speichert danach aber die Playerid ab und nicht die pID.Um Gottes Willen!
Bitte auf garkeinen Fall SavePlayer unter OnPlayerUpdate ausführen!wieso kein onplayerupdate habe ich auch so und es laggt nix am server..
es kommt nur drauf an wie er speichert...
ich arbeite mit mysql und alles geht super hatte auch voher überall
saveaccount nur es nervte mich.. -
Weil OnPlayerUpdate 20-30 mal die Sekunde aufgerufen wird.....
Bei mehreren Spielern kann das verheerende Laggs herbei führen.
Da ist es klüger einen Timer zu starten der alle 10 Minuten alle Spieler speichert. -
Beitrag von Xtrats ()
Dieser Beitrag wurde vom Autor gelöscht (). -
Ach wirklich? Kannst mir ja mal entsprechende Changelogs von den 0.3.7 Updates für OnPlayerUpdate zukommen lassen.
Bitte.... Bitte lass es einfach.....
Wenn du 30 mal in der Sekunde bei 50 Usern speicherst sind das 1500 Speicherung in der Sekunde. Das sind 90.000 Speicherungen in der Minute. Und du willst mir erzählen, dass hätte bei dir nicht gelaggt? Du laberst hier ziemlichen Bullshit.PS:
30 mal in der Sekunde ist nur ein Richtwert. Wenn der Spieler Auto fährt, schwimmt oder schießt liegen die Werte nochmal ein gutes Stück höher. -
Beitrag von Xtrats ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: du hast keine ahnung und fertig (). -
IsPlayerConnected Abfrage nach der sscanf Abfrage setzen sonst wird nur ID 0 abgefragt und nicht die eingebene ID
-
Code
Alles anzeigenocmd:mute(playerid,params[]) { new pID; new string[528]; new grund[64]; if(sInfo[playerid][alevel] < 2)return SendClientMessage(playerid,GRAU,"Du bist nicht befugt!"); if(sscanf(params,"us[64]",pID,grund))return SendClientMessage(playerid,GRAU,"Verwendung: /mute [PlayerID][Grund]"); if(IsPlayerConnected(pID)) return SendClientMessage(playeerid,ROT,"Der Spieler ist nicht online"); if(sInfo[playerid][alevel] < sInfo[pID][alevel]) return SendClientMessage(playerid,ORANGE,"Du kannst keinen Admin muten, der einen höheren Rang als du besitzt!"); format(string,sizeof(string),"%s wurde von %s gemutet! Grund: %s",GetName(playerid),GetName(pID),grund); for(new i=0; i<MAX_PLAYERS; i++) if(sInfo[i][alevel] > 0) SendClientMessage(i,ROT,string); sInfo[pID][mute] = 1; savePlayer(pID); return 1; }
So sollte der Befehl passen, speicherst und lädst du den auch den Wert von Mute, wenn ja und es sollte immer noch nicht funktionieren,
dann lass dir beim laden der Spielerdaten zum schluss den Wert von mute ausgebenprintf("Mute- Wert %d", sInfo[playerid][mute]);
//edit
Das ist zwar offtopic, jedoch Leute, welche unter OnPlayerUpdate die Spielerdaten andauernt speichern die haben keine Ahnung vom Skripten geschweige von Performance, ich glaube schlimmer kann man sein Skript nicht vergewaltigen.
-
breadfish.de
Hat das Thema geschlossen.