Beitrag von Kisa ()
Dieser Beitrag wurde vom Autor gelöscht ().
Hi, wieso updatet sich bei mir nur die Tabelle players und alle anderen nicht?
Was sagt denn deine MySQL Log?
Was sagt denn deine MySQL Log?
Die ist clean.
Setze mal das : SetPlayerName(playerID, newName);
Unter deinen MySQL Befehl rein
@Basti.StaR Wo genau? Ich muss den Namen erst setzen bevor ich die Tabellen update.
Der Name wird ja problemlos gesetzt und nur die "players" Tabelle aktualisiert sich.
Printe mal, um zu schauen was Passiert
Hmm, hat doch geklappt was du vorgeschlagen hast, das mit SetP layerName weiter runter setzen, wieso kann ich mir nicht erklären .
Noch eine letzte Frage:
Ich habe einen weiteren Befehl erstellt womit ich den Namen ändern kann von Spielern die nicht online sind. Der funktioniert problemlos, nur benötige ich eine Abfrage ob der Name bereits in Benutzung ist. Das kann ich ja eigentlich mit
if(mysql_num_rows() == 0)
{
}
machen, aber im Befehl frage ich ja auch ab ob der Name in der Datenbank existiert. Wie kriege ich beides unter einem Hut?
CMD:setnameoff(playerid, params[])
{
new dName[24], dNewname[24], cQuery[144];
if(pData[playerid][P_Admin] < 6) return
SendClientMessage(playerid, COLOR_RED, LV_Fail);
if(sscanf(params,"s[24]s[24]", dName, dNewname)) return
SendClientMessage(playerid, COLOR_RED, "Use: /setnameoff <name> <newname>");
if(!(4 < strlen(params[1]) < MAX_PLAYER_NAME)) return
SendClientMessage(playerid, COLOR_RED, "The name must be min 4 chars and max 23 chars!");
format(cQuery, sizeof(cQuery), "SELECT * FROM `players` WHERE Name = '%s'", dNewname);
mysql_query(MySQL, cQuery);
mysql_store_result();
format(cQuery, sizeof(cQuery), "SELECT * FROM `players` WHERE Name = '%s'", dName);
mysql_query(MySQL, cQuery);
mysql_store_result();
if(mysql_num_rows() > 0)
{
new Update[128];
format(Update, sizeof(Update), "UPDATE `players` SET Name = '%s' WHERE Name = '%s'", dNewname, dName);
mysql_query(MySQL, Update);
format(Update, sizeof(Update), "UPDATE `achievements` SET Name = '%s' WHERE Name = '%s'", dNewname, dName);
mysql_query(MySQL, Update);
format(Update, sizeof(Update), "UPDATE `achievements` SET Name = '%s' WHERE Name = '%s'", dNewname, dName);
mysql_query(MySQL, Update);
format(Update, sizeof(Update), "UPDATE `interface` SET Name = '%s' WHERE Name = '%s'", dNewname, dName);
mysql_query(MySQL, Update);
format(Update, sizeof(Update), "UPDATE `inventory` SET Name = '%s' WHERE Name = '%s'", dNewname, dName);
mysql_query(MySQL, Update);
format(Update, sizeof(Update), "UPDATE `playerskills` SET Name = '%s' WHERE Name = '%s'", dNewname, dName);
mysql_query(MySQL, Update);
format(Update, sizeof(Update), "UPDATE `unbans` SET Name = '%s' WHERE Name = '%s'", dNewname, dName);
mysql_query(MySQL, Update);
format(cQuery, sizeof(cQuery), "You've changed {FF0000}%s's{FFFFFF} Name to {FF0000}%s", dName, dNewname);
SendClientMessage(playerid, COLOR_RED, cQuery);
format(cQuery, sizeof(cQuery), "[Namechange] %s have set %s's Name to %s", GetName(playerid), dName, dNewname);
writeLog("Logs/General.txt", cQuery);
}
else
{
SendClientMessage(playerid, COLOR_RED, "This name doesn't exists!");
}
return 1;
}
Welche MySQL Version benutzt du?
Die Version R37
Alles anzeigenHey!
Ich habe mir vor kurzem einen kleinen Keybinder, mit Hilfe vom Autohotkey, erstellt. Alles schön und gut, jedoch habe ich folgendes Problem: Wenn ich nach vorne laufe und somit die "W" Taste drücke, und daraufhin beispielsweise 6 drücke -> Stoppt der Spieler und ich muss den Finger von der "W" Taste nehmen und nochmal auf diese gehen. Mir wurde bereits gesagt, dass ich dafür eine API benötige, jedoch habe ich bis jetzt keinen Codeschnipsel für mein Problem gefunden.
Ich danke bereits im Voraus für jede Antwort!
Grüße
@JustMe.77 soweit ich mich erinnern kann war es so:
if(mysql_num_rows())
{
//Wenn er Existiert
}
else
{
//Wenn er nicht Existiert
}
Das muss unter dein SELECT
Oder kürzer so:
if(!mysql_num_rows()) return SendClientMessage(playerid, COLOR_RED, "This name doesn't exists!");
Man hat in samp 1024 Global 3D Labels zur verfügung und 1024 Per-player 3D Text Labels
kann man die Per-player 3D Text Labels z.B. 1000 für ID 0 und 1000 für ID 1 erstellen ?
Man hat in samp 1024 Global 3D Labels zur verfügung und 1024 Per-player 3D Text Labels
kann man die Per-player 3D Text Labels z.B. 1000 für ID 0 und 1000 für ID 1 erstellen ?
Nein, die 1024 sind für alle Spieler.
Hi, ich habe ein Problem mit dem Haus System. Immer wenn der Server Restartet steht da Besitzer: Der Staat obwohl man das Haus gekauft hat. Entweder bin ich blind oder ka ^^. Hier der Code:
if(HouseInfo[Id][hOwnerId] != -1)
{
new Name[MAX_PLAYER_NAME];
format(query,sizeof(query),"SELECT UserName FROM `"AccTable"` WHERE UserId = '%d' LIMIT 1",HouseInfo[Id][hOwnerId]);
mysql_query(query);
mysql_store_result();
mysql_fetch_string(Name);
mysql_free_result();
format(query,sizeof(query),"%s{FF6633}Besitzer{FFFFFF}: %s\n",GetHouseName(Id),Name);
if(HouseInfo[Id][hRentable])
{
format(query,sizeof(query),"%s{FF6633}Mietbar:{FFFFFF} Ja\n{FF0000}Miete{FFFFFF}: %d\n",query,HouseInfo[Id][hRent]);
format(query,sizeof(query),"%s{FF6633}/Rent{FFFFFF} zum einmieten ",query,HouseInfo[Id][hRent]);
}
format(query,sizeof(query),"%s{FF6633}/Enter{FFFFFF} zum betreten",query,HouseInfo[Id][hRent]);
HousePickup[Id] = CreatePickup(1239,23,HouseInfo[Id][hEntX], HouseInfo[Id][hEntY], HouseInfo[Id][hEntZ], -1);
HouseLabel[Id] = Create3DTextLabel(query, COLOR_WHITE, HouseInfo[Id][hEntX], HouseInfo[Id][hEntY], HouseInfo[Id][hEntZ] + 0.2, 20.0, 0, 0);
}
else
{
format(query,sizeof(query),"%s{FF6633}Besitzer{FFFFFF}: Der Staat\n{FF6633}Preis{FFFFFF}: %d\n{FF6633}Level{FFFFFF}: %d\n{FF6633}/Buyhouse{FFFFFF} zum Kauf",GetHouseName(Id),HouseInfo[Id][hPrice],HouseInfo[Id][hLevel]);
HousePickup[Id] = CreatePickup(1273,23,HouseInfo[Id][hEntX], HouseInfo[Id][hEntY], HouseInfo[Id][hEntZ], -1);
HouseLabel[Id] = Create3DTextLabel(query, COLOR_WHITE, HouseInfo[Id][hEntX], HouseInfo[Id][hEntY], HouseInfo[Id][hEntZ] + 0.2, 20.0, 0, 0);
}
Send mal die Save Pubic bzw den Command, wo der Server gerstartet wird.
HouseUpdate(Id,option[])
{
new query[256];
if(!strcmp(option,"Icon",true))
{
if(HousePickup[Id] != -1)
{
Delete3DTextLabel(HouseLabel[Id]);
DestroyPickup(HousePickup[Id]);
}
if(HouseInfo[Id][hOwnerId] != -1)
{
new Name[MAX_PLAYER_NAME];
format(query,sizeof(query),"SELECT UserName FROM `"AccTable"` WHERE UserId = '%d' LIMIT 1",HouseInfo[Id][hOwnerId]);
mysql_query(query);
mysql_store_result();
mysql_fetch_string(Name);
mysql_free_result();
format(query,sizeof(query),"%s{FF6633}Besitzer{FFFFFF}: %s\n",GetHouseName(Id),Name);
if(HouseInfo[Id][hRentable])
{
format(query,sizeof(query),"%s{FF6633}Mietbar:{FFFFFF} Ja\n{FF0000}Miete{FFFFFF}: %d\n",query,HouseInfo[Id][hRent]);
format(query,sizeof(query),"%s{FF6633}/Rent{FFFFFF} zum einmieten ",query,HouseInfo[Id][hRent]);
}
format(query,sizeof(query),"%s{FF6633}/Enter{FFFFFF} zum betreten",query,HouseInfo[Id][hRent]);
HousePickup[Id] = CreatePickup(1239,1,HouseInfo[Id][hEntX], HouseInfo[Id][hEntY], HouseInfo[Id][hEntZ], -1);
HouseLabel[Id] = Create3DTextLabel(query, COLOR_WHITE, HouseInfo[Id][hEntX], HouseInfo[Id][hEntY], HouseInfo[Id][hEntZ] + 0.2, 20.0, 0, 0);
}
else
{
format(query,sizeof(query),"%s{FF6633}Besitzer{FFFFFF}: Der Staat\n{FF6633}Preis{FFFFFF}: %d\n{FF6633}Level{FFFFFF}: %d\n{FF6633}/Buyhouse{FFFFFF} zum Kauf",GetHouseName(Id),HouseInfo[Id][hPrice],HouseInfo[Id][hLevel]);
HousePickup[Id] = CreatePickup(1273,1,HouseInfo[Id][hEntX], HouseInfo[Id][hEntY], HouseInfo[Id][hEntZ], -1);
HouseLabel[Id] = Create3DTextLabel(query, COLOR_WHITE, HouseInfo[Id][hEntX], HouseInfo[Id][hEntY], HouseInfo[Id][hEntZ] + 0.2, 20.0, 0, 0);
}
}
}
@Dr. Frauenarzt 19419 (leuchtend) und 19420 (nicht leuchtend)