danke hat geklappt =)
MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel)
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
-
-
Vielen dank [FoR]Hardcore, habs im ersten Post berichtigt und die Links geupdatet.
Mfg.
-
HeHo maddin nice tut habe aber n problem, unzwar wird adminlevel immer zu -1 Hier zeilen:
Enum: [Sind immer nur teile]
pKills,
pTode,
pAdminlevel,
Float:pHealth
new SpielerInfo[MAX_PLAYERS][SpielerDaten];stock LoadPlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
SafeResetPlayerMoney(playerid);
GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
SetPlayerScore(playerid,mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]));
SafeGivePlayerMoney(playerid,mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]));
SpielerInfo[playerid][pAdminlevel] = mysql_GetInt("accounts", "Adminlevel", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
}
return 1;
}stock SavePlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Adminlevel", SpielerInfo[playerid][pAdminlevel], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Geld", GetPlayerMoney(playerid), "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);}
}
return 1;
}Ja ich habe den Rest! Ist okay brauchst net fragen deke das liegt an Loadepayer oder was meinst du?
-
Schreib mal
mysql_debug(1); Unter OnGameModeInit, starte den server und log dich dann ein und veränder das Admin level und log dich wieder aus etc.Wenn es bei Laden oder Speichern ein Problem mit MySQL gibt dann wird dir der fehler in der mysql_log.txt Datei aussgegeben. Am besten postest du sie dann hier dann kann ich dir besser Helfen.
-
Cool danke Maddin geht
-
Dies sollte kein Problem sein da wenn der Account schon existiert du immernoch das Passwort brauchst um an die "Stats" zu kommen.
Oder bei welcher funktion meinst du soll dies ein Problem darstellen? -
Wie kann ich alles werte in einer Tabelle zählen?
und wie kann ich werte mit der wert blabla zählen
z.b
ID|Name|Fraktion
1|Test|1
2|Test2|3
3|Test3|1das er mir beim ersten 3 ausspuckt und beim dritten 2
-
Meinst du reihen oder spalten?
Reihen kannst du so zählen:
new anzahl;
mysql_query("SELECT * FROM meine_tabelle");// Wir holen uns alles (* = Alles) aus der tabelle meine_tabelle
mysql_store_result();//Speichern das ergebnis
anzahl = mysql_num_rows();//Zählen dann die reihen und speichern die anzahl der reihen in der variable "anzahl"
mysql_free_result();//und mach zu guter letzt den speicher wieder frei.
printf("In der Tabelle 'meine_tabelle' sind '%d' reihen", anzahl);
Spalten so:
new anzahl;
mysql_query("SELECT * FROM meine_tabelle");// Wir holen uns alles (* = Alles) aus der tabelle meine_tabelle
mysql_store_result();//Speichern das ergebnis
anzahl = mysql_num_fields();//Zählen dann die spalten und speichern die anzahl der spalten in der variable "anzahl"
mysql_free_result();//und mach zu guter letzt den speicher wieder frei.
printf("In der Tabelle 'meine_tabelle' sind '%d' spalten", anzahl);Wenn du aber nur bestimmte reihen haben willst, musst du deine abfrage einschränken.
Z.b durch
mysql_query("SELECT * FROM meine_tabelle WHERE Kills = 10");
Holst du nur die reihen, wo unter Kills der wert 10 gespeichert ist. -
oh danke dir ich kenn mich mit mysql net so aus
-
Du bist Krank Maddin XDD, im Sinne von total genial :D.
Das ist mit Abstand das best erklärteste Tutorial.
Ziemlich hilfreich.lg
pS
-
Danke. Man tut was man kann
-
ehm noch eine FRage gibt es auchsowas wie >= zum Abfragen in MYSQL?
-
@FoL du kannst es weiter als ganz normale Variablen nutzen, nur das sie dann nicht in Dini sondern in MySQL gespeichert werden.
lg
pS
-
Falls du meinst ob sowas geht:
mysql_query("SELECT * FROM meine_tabelle WHERE Kills > 10");
Ja das sollte gene. Aber ob <= bzw >= geht weiss ich nicht genau. Musst du einfach mal ausprobieren.
Ansonsten kannst du anstatt >= 10 ja auch > 9 benutzen^^ -
forward SaveCars();
public SaveCars()
{
for(new i = 0; i < (Frakcars*8); i++)
{
mysql_SetInt("frakcars","CarID",Fraktionscar[i][fCarID], "ID",i );
mysql_SetInt("frakcars","FID",Fraktionscar[i][fFID], "ID",i );
mysql_SetFloat("frakcars","PosX",Fraktionscar[i][fPosX], "ID",i );
mysql_SetFloat("frakcars","PosY",Fraktionscar[i][fPosY], "ID",i );
mysql_SetFloat("frakcars","PosZ",Fraktionscar[i][fPosZ], "ID",i );
mysql_SetFloat("frakcars","Rot",Fraktionscar[i][fRot], "ID",i );
mysql_SetInt("frakcars","Farbe",Fraktionscar[i][fFarbe], "ID",i );
}
return 1;
}
stock LoadCars()
{
for(new i = 0; i < (Frakcars*8); i++)
{
Fraktionscar[i][fCarID] = mysql_GetInt("frakcars", "CarID", "ID", i);
Fraktionscar[i][fFID] = mysql_GetInt("frakcars","FID","ID",i);
Fraktionscar[i][fPosX] = mysql_GetFloat("frakcars","PosX","ID",i);
Fraktionscar[i][fPosY] = mysql_GetFloat("frakcars","PosY","ID",i);
Fraktionscar[i][fPosZ] = mysql_GetFloat("frakcars","PosZ","ID",i);
Fraktionscar[i][fRot] = mysql_GetFloat("frakcars","Rot","ID",i);
Fraktionscar[i][fFarbe] = mysql_GetInt("frakcars","Farbe","ID",i);
}
return 1;
}
Dort bekomme ich diese Errors, diese befinden sich jeweils in den mysql zeilen.Code
Alles anzeigenC:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62609) : error 035: argument type mismatch (argument 5) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62610) : error 035: argument type mismatch (argument 5) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62611) : error 035: argument type mismatch (argument 5) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62612) : error 035: argument type mismatch (argument 5) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62613) : error 035: argument type mismatch (argument 5) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62614) : error 035: argument type mismatch (argument 5) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62615) : error 035: argument type mismatch (argument 5) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62623) : error 035: argument type mismatch (argument 4) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62624) : error 035: argument type mismatch (argument 4) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62625) : error 035: argument type mismatch (argument 4) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62626) : error 035: argument type mismatch (argument 4) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62627) : error 035: argument type mismatch (argument 4) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62628) : error 035: argument type mismatch (argument 4) C:\Dokumente und Einstellungen\Timo.GAMER.000\Desktop\server\gamemodes\script.pwn(62629) : error 035: argument type mismatch (argument 4)
mfg
//edit
ich bräuchte bitte schnelle Hilfe... -
Dein Problem ist dass der Where2 Parameter, also da wo bei dir i steht, ein string sein muss.
Du kannst das ganze mal so versuchen:
forward SaveCars();
public SaveCars()
{
for(new i = 0,str[2]; i < (Frakcars*8); i++)
{
format(str,2,"%d",i);
mysql_SetInt("frakcars","CarID",Fraktionscar[i][fCarID], "ID",str );
mysql_SetInt("frakcars","FID",Fraktionscar[i][fFID], "ID",str );
mysql_SetFloat("frakcars","PosX",Fraktionscar[i][fPosX], "ID",str );
mysql_SetFloat("frakcars","PosY",Fraktionscar[i][fPosY], "ID",str );
mysql_SetFloat("frakcars","PosZ",Fraktionscar[i][fPosZ], "ID",str );
mysql_SetFloat("frakcars","Rot",Fraktionscar[i][fRot], "ID",str );
mysql_SetInt("frakcars","Farbe",Fraktionscar[i][fFarbe], "ID",str );
}
return 1;
}
stock LoadCars()
{
for(new i = 0,str[2]; i < (Frakcars*8); i++)
{
format(str,2,"%d",i);
Fraktionscar[i][fCarID] = mysql_GetInt("frakcars", "CarID", "ID", str);
Fraktionscar[i][fFID] = mysql_GetInt("frakcars","FID","ID",str);
Fraktionscar[i][fPosX] = mysql_GetFloat("frakcars","PosX","ID",str);
Fraktionscar[i][fPosY] = mysql_GetFloat("frakcars","PosY","ID",str);
Fraktionscar[i][fPosZ] = mysql_GetFloat("frakcars","PosZ","ID",str);
Fraktionscar[i][fRot] = mysql_GetFloat("frakcars","Rot","ID",str);
Fraktionscar[i][fFarbe] = mysql_GetInt("frakcars","Farbe","ID",str);
}
return 1;
} -
moinsen ich habe folgendes problem beim starten meines servers
Error (0): Failed to connect. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
weiß jemand wie man das problem fixxen kann?
ich habe ein Debian Lenny Root
-
Hallo,
ich ahbe mir diesen Befehl gemacht
if (strcmp("/fkaufen", cmdtext, true, 10) == 0)
{
if(PlayerInfo[playerid][pLeader] == 5||PlayerInfo[playerid][pLeader] == 6||PlayerInfo[playerid][pLeader] == 8||PlayerInfo[playerid][pLeader] == 12||PlayerInfo[playerid][pLeader] == 13||PlayerInfo[playerid][pLeader] == 15||PlayerInfo[playerid][pLeader] == 17||PlayerInfo[playerid][pLeader] == 18||PlayerInfo[playerid][pLeader] == 19||PlayerInfo[playerid][pLeader] == 20||PlayerInfo[playerid][pLeader] == 21||PlayerInfo[playerid][pLeader] == 22)
{
if(mysql_zahlen("frakcars","FID", PlayerInfo[playerid][pLeader]) <= Frakcars)
{
ShowPlayerDialog(playerid,DIALOG_KAUFENN,DIALOG_STYLE_LIST,"Gangcar","Sultan 1k","Kaufen","abbrachen");
}
}
return 1;
}
doch bei der if-Abfrage mit dem zählen funktioniert etwas nicht, da dort der Bfehl stehen bleibt.
hier die funktion
stock mysql_zahlen(Table[],Where[], Where2[])
{
new anzahl;
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Where2, Where2);
format(query, 128, "SELECT * FROM %s WHERE %s = '%s'", Table,Where, Where2);
mysql_query(query);
mysql_store_result();//Speichern das ergebnis
anzahl = mysql_num_rows();//Zählen dann die reihen und speichern die anzahl der reihen in der variable "anzahl"
mysql_free_result();//und mach zu guter letzt den speicher wieder frei.
return anzahl;
}mfg
//edit und die Tabelle sieht so aus ID|....
bei id wird von 0 bis 239 eingetragen sonst null somit muss es ja funktionieren -
Probiers mal so:
stock mysql_zahlen(Table[],Where[], Where2)
{
new anzahl;
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Where, Where);
format(query, 128, "SELECT * FROM %s WHERE %s = '%d'", Table,Where, Where2);
mysql_query(query);
mysql_store_result();//Speichern das ergebnis
anzahl = mysql_num_rows();//Zählen dann die reihen und speichern die anzahl der reihen in der variable "anzahl"
mysql_free_result();//und mach zu guter letzt den speicher wieder frei.
return anzahl;
} -
Dein Problem ist dass der Where2 Parameter, also da wo bei dir i steht, ein string sein muss.
Du kannst das ganze mal so versuchen:
forward SaveCars();
public SaveCars()
{
for(new i = 0,str[2]; i < (Frakcars*8); i++)
{
format(str,2,"%d",i);
mysql_SetInt("frakcars","CarID",Fraktionscar[i][fCarID], "ID",str );
mysql_SetInt("frakcars","FID",Fraktionscar[i][fFID], "ID",str );
mysql_SetFloat("frakcars","PosX",Fraktionscar[i][fPosX], "ID",str );
mysql_SetFloat("frakcars","PosY",Fraktionscar[i][fPosY], "ID",str );
mysql_SetFloat("frakcars","PosZ",Fraktionscar[i][fPosZ], "ID",str );
mysql_SetFloat("frakcars","Rot",Fraktionscar[i][fRot], "ID",str );
mysql_SetInt("frakcars","Farbe",Fraktionscar[i][fFarbe], "ID",str );
}
return 1;
}
stock LoadCars()
{
for(new i = 0,str[2]; i < (Frakcars*8); i++)
{
format(str,2,"%d",i);
Fraktionscar[i][fCarID] = mysql_GetInt("frakcars", "CarID", "ID", str);
Fraktionscar[i][fFID] = mysql_GetInt("frakcars","FID","ID",str);
Fraktionscar[i][fPosX] = mysql_GetFloat("frakcars","PosX","ID",str);
Fraktionscar[i][fPosY] = mysql_GetFloat("frakcars","PosY","ID",str);
Fraktionscar[i][fPosZ] = mysql_GetFloat("frakcars","PosZ","ID",str);
Fraktionscar[i][fRot] = mysql_GetFloat("frakcars","Rot","ID",str);
Fraktionscar[i][fFarbe] = mysql_GetInt("frakcars","Farbe","ID",str);
}
return 1;
}
das funktioniert genu für i = 0:D -