Hey,
ich versuche grade das man einen Spieler der offline ist
zuentmuten nur leider klappt es nicht
ocmd:offunmute(playerid,params[])
{
new pID[35],query[256];
if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied./Du hast nicht den jeweiligen Adminrang.");
if(sscanf(params,"s[35]",pID)) return SendClientMessage(playerid,WRONGCMD,"BENUTZE: Offunmute [Name]");
new count = cache_get_field_content_int(0,"count");
if(count)
{
SendClientMessage(playerid,GRAU,"Der Spieler wurde nicht in der Datenbank gefunden.");
//mysql_format(mycon,query, sizeof(query), "UPDATE `"#SERVERTAG"_Account` SET `MuteTime` = '0', `Muted` = '0' WHERE `Name` = '%s'",pID);
}
else
{
//SendClientMessage(playerid,GRAU,"Der Spieler wurde nicht in der Datenbank gefunden.");
mysql_format(mycon,query, sizeof(query), "UPDATE `"#SERVERTAG"_Account` SET `MuteTime` = '0', `Muted` = '0' WHERE `Name` = '%s'",pID);
}
return 1;
}
Wäre top wenn ihr mir helfen könntet
MySQL R7 OffUnmute
- PermanenT
- Geschlossen
- Erledigt
-
-
Und was genau klappt nicht?
-
Er wird nicht entmuted
-
Soweit ich weiß, kann man Integers nicht in Hochkommata setzen. Wenn ich mich irre, ignoriert den Post bitte.
-
Wie bitte?
-
-
Schonmal an einer SELECT anweisung gedacht?
welchen sinn soll der haben?
new count = cache_get_field_content_int(0,"count");
wenn du vorher garnicht abfragst ob es den user gibt via SELECT -
ocmd:offunmute(playerid,params[])
{
new pID[35],query[256],string[124];
if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied./Du hast nicht den jeweiligen Adminrang.");
if(sscanf(params,"s[35]",pID)) return SendClientMessage(playerid,WRONGCMD,"BENUTZE: Offunmute [Name]");
mysql_format(mycon, query, sizeof(query), "SELECT COUNT(*) AS `count` FROM `"#SERVERTAG"_Account` WHERE `Name` = '%s'",pID);
new count = cache_get_field_content_int(0,"count");
if(count)
{
SendClientMessage(playerid,GRAU,"Der Spieler wurde nicht in der Datenbank gefunden.");
mysql_format(mycon,query, sizeof(query), "UPDATE `"#SERVERTAG"_Account` SET `MuteTime` = '0', `Muted` = '0' WHERE `Name` = '%s'",pID);
}
else
{
format(string,sizeof(string),"Du hast den Spieler %s entmuted",pID);
SendClientMessage(playerid,GRAU,string);
mysql_format(mycon,query, sizeof(query), "UPDATE `"#SERVERTAG"_Account` SET `MuteTime` = '0', `Muted` = '0' WHERE `Name` = '%s'",pID);
}
return 1;
}
So? -
Der Code ist auch der reinste Rotz, abgesehen das ein spieler nie mehr als 24 Zeichen haben wird daher reicht da auch MAX_PLAYER_NAME bei pID.
cache_get_field_content_int funktioniert ohne query davor auch nicht daher solltest du abprüfen ob der Spieler vllt direkt schon gemutet ist oder nicht
und bei der funktion mysql_function_query wirst du eine funktion aufrufen und dort kannst du alles auslesen.
ocmd:offunmute(playerid,params[])
{
new pID[35],query[256];
if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied./Du hast nicht den jeweiligen Adminrang.");
if(sscanf(params,"s[35]",pID)) return SendClientMessage(playerid,WRONGCMD,"BENUTZE: Offunmute [Name]");
mysql_format(mycon,query, 256, "SELECT `Muted` FROM `"#SERVERTAG"_Account` WHERE `Name` = '%e' LIMIT 1",pID);
mysql_function_query(mycon,query,true,"@MYSQL_QUERY_FINISH_MUTED_CHECK","is",playerid, pID);
return 1;
}In der Funktion kannst du gleich gewisse parameter übergeben wie die playerid von dem spieler der das eingegeben hat dann kannst du diesem gleich eine nachricht schicken und natürlich den eingegeben namen um das Update query auszuführen und nicht vergessen die string mit dem platzhalter %e zu escapen
forward @MYSQL_QUERY_FINISH_MUTED_CHECK(playerid,pName[]);
@MYSQL_QUERY_FINISH_MUTED_CHECK(playerid,pName[]){
new bool:muted = !!cache_get_field_content_int(0,"Muted");
if(!muted)return SendClientMessage(playerid,-1,"Der Spieler wurde nicht gefunden");
new query[256];
format(query,64,"Du hast %s entmuted",pName);
SendClientMessage(playerid,-1,query);
mysql_format(mycon,query, 256, "UPDATE `"#SERVERTAG"_Account` SET `MuteTime` = '0', `Muted` = '0' WHERE `Name` = '%e' LIMIT 1",pName);
mysql_tquery(mycon,query,"","");
return 1;
}//edit LIMIT 1 nicht vergessen
-
Der Code ist auch der reinste Rotz, abgesehen das ein spieler nie mehr als 24 Zeichen haben wird daher reicht da auch MAX_PLAYER_NAME bei pID.
cache_get_field_content_int funktioniert ohne query davor auch nicht daher solltest du abprüfen ob der Spieler vllt direkt schon gemutet ist oder nicht
und bei der funktion mysql_function_query wirst du eine funktion aufrufen und dort kannst du alles auslesen.
ocmd:offunmute(playerid,params[])
{
new pID[35],query[256];
if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied./Du hast nicht den jeweiligen Adminrang.");
if(sscanf(params,"s[35]",pID)) return SendClientMessage(playerid,WRONGCMD,"BENUTZE: Offunmute [Name]");
mysql_format(mycon,query, 256, "SELECT `Muted` FROM `"#SERVERTAG"_Account` WHERE `Name` = '%e' LIMIT 1",pID);
mysql_function_query(mycon,query,true,"@MYSQL_QUERY_FINISH_MUTED_CHECK","is",playerid, pID);
return 1;
}In der Funktion kannst du gleich gewisse parameter übergeben wie die playerid von dem spieler der das eingegeben hat dann kannst du diesem gleich eine nachricht schicken und natürlich den eingegeben namen um das Update query auszuführen und nicht vergessen die string mit dem platzhalter %e zu escapen
forward @MYSQL_QUERY_FINISH_MUTED_CHECK(playerid,pName[]);
@MYSQL_QUERY_FINISH_MUTED_CHECK(playerid,pName[]){
new bool:muted = !!cache_get_field_content_int(0,"Muted");
if(!muted)return SendClientMessage(playerid,-1,"Der Spieler wurde nicht gefunden");
new query[256];
format(query,64,"Du hast %s entmuted",pName);
SendClientMessage(playerid,-1,query);
mysql_format(mycon,query, 256, "UPDATE `"#SERVERTAG"_Account` SET `MuteTime` = '0', `Muted` = '0' WHERE `Name` = '%e' LIMIT 1",pName);
mysql_tquery(mycon,query,"","");
return 1;
}//edit LIMIT 1 nicht vergessen
Gute Lösung, von IPrototypeI erwartet man natürlich nichts anderes.
-
Danke, Was bewirkt das LIMIT 1?
-
Danke, Was bewirkt das LIMIT 1?
Das maximal nur 1 EIntrag aktualisiert wird/ ausgelesen. Es ist doch unnötig das die ganzen Einträge durchgegangen werden, wenn sowieso nur ein EIntrag vorhanden ist.
-
Okay,
Danke sehr -
breadfish.de
Hat das Thema geschlossen.