Kann mir jemand helfen?
Die Zugangsdaten, Passwort und/oder Benutzername sind falsch ![]()
mfg. ![]()
Kann mir jemand helfen?
Die Zugangsdaten, Passwort und/oder Benutzername sind falsch ![]()
mfg. ![]()
format(str,sizeof(str),"Spieler: %s | Text: %s\n",besitzer,text);
So wirst du nur immer 1nen Eintrag haben, du musst es so schreiben:
format(str,sizeof(str),"%sSpieler: %s | Text: %s\n",str,besitzer,text);
mfg. ![]()
Okay, jetzt brauch ich nur nochmal die strcat-Funktion erklärt, weil ich Besitzer und Text mit dieser Zusammenfügen möchte und das ganze dann in einem Dialog ausgeben möchte.
Nutze doch einfach...format da kannst du das alles zusammenfügen ![]()
Die Version von ElDiabolo: sieht mir Ressourcensparender aus :o
Wenn du sscanf in deinem Script schon nutzt, kannst du das natürlich auch verwenden ![]()
public BlaBlub() {
new string[256],query[64],besitzer[32],text[32];
format(query, sizeof query, "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'");
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format(string) == 1)
{
sscanf(string,"p<|>s[32]s[32]",besitzer,text);
printf("**Spieler: %s | Text: %s**",besitzer,text);
}
mysql_free_result();
}
Der | kommt von dem MySQL-Result ![]()
mfg. ![]()
Hier eine Lösung:
public BlaBlub() {
new string[256],query[64];
format(query, sizeof query, "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'");
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format(string) == 1)
{
printf("**Spieler: %s | Text: %s**",BESITZER(string),TEXT(string));
}
mysql_free_result();
}
stock TEXT(const string[]) {
new tmp[32];
strcat(tmp,string),strdel(tmp,0,strfind(string,"|")+1);
return tmp;
}
stock BESITZER(const string[]) {
new tmp[32];
strcat(tmp,string),strdel(tmp,strfind(string,"|"),strlen(tmp));
return tmp;
}
mfg. ![]()
BlueG R5
Dann kannst du es einfach so machen:
new string[256],query[64];
format(query, sizeof query, "SELECT `Besitzer`,`Text` FROM `Tickets` WHERE `Status` = '0'");
mysql_query(query);
mysql_store_result();
mysql_fetch_row(string);
mysql_free_result();
//In string steht dann alles drinnen
mfg. ![]()
Gut zu wissen wäre, welche MySQL-Plugin Version du nutzt.
mfg. ![]()
format(str, sizeof(str), "{%s}%s{FFFFFF}: %s", HexToStr(GetPlayerColor(playerid)), name, text);
Du kannst das auch einfach shiften und so machen:
format(str, sizeof(str),"{%06x}%s{FFFFFF}: %s",GetPlayerColor(playerid) >>> 8,name,text);
Dann brauchst du diese Funktion nicht ![]()
wenn du hier 10 eingibst erhältst du als rückgabe wert 10.
Daher kannst du das mit dem Operator nicht gleichsetzen
Tatsache
Gar nicht darauf geachtet ![]()
mfg. ![]()
funktioniert nicht
Doch...
Ob man jetzt folgendes macht:
new bool:x = !!SendClientMessage(0,-1," ");
printf("%s",(x == false) ? ("Funzt") : ("not"));
oder das hier:
new bool:x = bool:SendClientMessage(0,-1," ");
printf("%s",(x == false) ? ("Funzt") : ("not"));
Macht im Endeffekt keinen Unterschied, da beides den Wert in einen Bool konvertiert...
mfg. ![]()
mit dem makro meinte ich warum IntToBool nicht als als Makro sondern als funktion.
Das kommt doch nicht von mir
Was weiß ich..wieso das wer so gemacht hat...wieso überhaupt Makro oder Funktion...2 Ausrufezeichen kann man auch mal so setzen ![]()
Das sollte normal nicht erscheinen.
//Edit:
...stell dir vor du willst es vergleichen..mit einem Boolean Wert ![]()
mfg. ![]()
warum kein makro
Hö?! ![]()
Was auch geht, anstatt das mit dem !! zu machen, kann man das auch direkt casten, indem man einfach folgendes macht:
stock bool:IntToBool(int_value) return bool:int_value;
Achso um das mal zu erwähnen:
stock IntToBool(int_value) return !!int_value; //Das gibt einen Warning, weil die Funktion als bool gekennzeichnet sein muss!
//Richtig wäre:
stock bool:IntToBool(int_value) return !!int_value;
mfg. ![]()
Meine Frage ist nun, was das "!!" nach dem Return bedeutet..
Schau dir doch den Namen der Funktion an ![]()
Das wandelt einen Int Wert in einen bool Wert um ![]()
Wofür ist hier das "\"?
Um dem Compiler zu sagen, dass das Makro in der nächsten Zeile weitergeht ![]()
mfg. ![]()
Wie kann man bei OnPlayerText machen das der Name nicht wie z.b. Fabi.StaR angezeigt wird sondern Fabi StaR angezeigt wird?
//Edit: Das von Prototypel ist besser ![]()
erscheint mir die Usage nachricht..
Ja...nicht nur Copy Pasten
Achte doch bei SendClientMessage...auf den User ![]()
mfg. ![]()
Was kommt beim "????" rein um den Text zu sehen?
Musst es so machen:
dcmd_pm(playerid,params[])
{
new PMplayer1,string[128];
if(sscanf(params,"us[128]",PMplayer1,string)) return SendClientMessage(playerid, COLOR_WHITE, "** Usage: /pm (PlayerID) (Text)");
if(PMplayer1 == playerid) return SendClientMessage(playerid, COLOR_MAUVE, "* You can not send yourself a PM.");
if(!(IsPlayerConnected(PMplayer1) && PMplayer1 != INVALID_PLAYER_ID)) return SendClientMessage(playerid, red, "** Invalid Player.");
GetPlayerName(PMplayer1, PmReceiver, sizeof(PmReceiver));
format(string,sizeof(string),"* PM to %s (ID: %d): %s ", PmReceiver, PMplayer1, string); // Was kommt denn hier rein um den Text zu sehen?
SendClientMessage(playerid,grey,string);
return 1;
}
mfg. ![]()
~
Das ist eine Tilde ![]()
~w~ ist richtig, aber z.B. ~w~~ ist falsch oder ~~w~~ oder ~~w~...
An deinem Beispiel oben ist nichts falsch, aber änderst du den Text irgendwann mit TextDrawSetString?
mfg. ![]()
return strval(iText);
Das bewirkt, dass wenn er z.B. 099 hat, die 0 vorne verschwindet und ich dachte er will sie haben.
Schau dir mein Beispiel an, das ist die simpelste Methode dafür, format hat diese Funktion mit den nullen schon ![]()
mfg. ![]()
Mach es einfach so:
stock FMEx(iNum)
{
new szStr[4]; //000 + Null Char
format(szStr,sizeof(szStr),"%03d",iNum);
return szStr;
}
Der String brauch 4 Cells 3 für die Zahl und einen für den Null-Char ![]()
mfg. ![]()
Frage 1 wozu if(!strcmp(cmdtext,"/desk", true ))---dort das ! bei (!strcmp
Das ! prüft in einer if-Abfrage ob der Wert 0 ist.
Frage 2 wie leite ich zusätzlich die Spielerid/Spielernamen weiter also einzeln oder am besten beides
Naja, einfach so:
if(!strcmp(cmdtext,"/desk", true ))
{
SendClientMessage(playerid,GREEN,"Du hast das Desktop-freeze verlassen .");
TogglePlayerControllable(playerid,0);
new string[35 + MAX_PLAYER_NAME],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
format(string,sizeof string,"%s hat den Desktop-freeze verlassen!",name);
return SendMessageToAdmins(-1,string);
}
mfg. ![]()
if(!PlayerInfo[playerid][pAdmin]==1)
Nein, einfach nur so:
if(!PlayerInfo[playerid][pAdmin])
mfg. ![]()