Setze mal das : SetPlayerName(playerID, newName);
Unter deinen MySQL Befehl rein
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
@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
-
Beitrag von DerPixel ()
Dieser Beitrag wurde vom Autor gelöscht (). -
Alles anzeigen
Hey!
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)
-
-
Was ist daran falsch ?

stock CreateDatabase()
{
new query[2048];
mysql_format(handle, query, sizeof(query), "CREATE TABLE IF NOT EXISTS `"SQL_DTAG"accounts` (`ID` int(11) NOT NULL,`Spielername` varchar(32) NOT NULL,`Passwort` varchar(65) NOT NULL,`Geschlecht` int(11) NOT NULL,`Alter` varchar(10) NOT NULLNGINE=InnoDB DEFAULT CHARSET=latin1;");
mysql_pquery(handle, query);
return 1;
} -
Mach das mal so:
stock CreateDatabase()
{
new query[2048];
format(query,sizeof(query),"CREATE TABLE IF NOT EXISTS `"SQL_DTAG"accounts` (`ID` INT(11) NOT NULL PRIMARY KEY,");
format(query,sizeof(query),"%s`Spielername` VARCHAR(32) NOT NULL,",query);
format(query,sizeof(query),"%s`Passwort` VARCHAR(65) NOT NULL,",query);
format(query,sizeof(query),"%s`Geschlecht` INT(10) NOT NULL,",query);
format(query,sizeof(query),"%s`Alter` VARCHAR(10) NOT NULL,",query);
mysql_pquery(handle, query);
return 1;
} -
@Basti.StaR
Anstatt format hätte man auch ganz einfach strcat verwenden können, ist um ca. die Hälfte schneller als format.
@Mar.cel
Schreibe das so:Cstock CreateDatabase() { new query[2048]; mysql_format(handle, query, sizeof(query), "CREATE TABLE IF NOT EXISTS `"SQL_DTAG"accounts` (`ID` int(11) NOT NULL,`Spielername` varchar(32) NOT NULL,`Passwort` varchar(65) NOT NULL,`Geschlecht` int(11) NOT NULL,`Alter` varchar(10) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;"); mysql_pquery(handle, query); return 1; }
