Unter welchem callback rufst du diese Funktion auf?
Hast du schon den MySQL Debug angeschaltet? Wenn nein, mach das mal und poste was im Log steht, wenn du die Funktion aufrufst. (mysql_debug oder mysql_log, je nach Plugin. Mit 1 oder LOG_ALL, ebenso je nach Plugin.)
Beiträge von Jeffry
-
-
Wenn du eins suchst, wie dein Titel vermuten lässt: [ FILTERSCRIPT ] dynamicReport v1.12
-
Hättest es auch einfach nochmal posten können, dann hätte ich mir das Suchen erspart.
Du hast es wohl wo hochgeladen, oder?
printf("SERVER: Der Server ist nicht auf der IP '%s' gebinded!",BINDIP);
print(" Server wird heruntergefahren ...");
SendRconCommand("exit");
return 1;Die 4 Zeilen Löschen.
-
Zitat
[12:10:52] SERVER: Der Server ist nicht auf der IP '127.0.0.1' gebinded!
[12:10:52] Server wird heruntergefahren ...Suche mal nach dem Meldung im Code und poste den Code dazu (paar Zeilen außenrum dazu).
-
Eddy:
Das ganze macht irgendwie keinen Sinn, da die Abfrage immer kommen würde, so wie es da ist.Mach es so:
Spoiler anzeigen public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case Dialog_Register:
{
if(!response)
{
SendClientMessage(playerid,0xFF0000FF,"Dieser Vorgang wurde Ab.-oder Unterbrochen\nBitte beenden Sie das Spiel, indem Sie /q als Textnachricht in den Chat eingeben.");
SetTimerEx("KickPlayer",250,0,"i",playerid);
return 1;
}
if(!inputtext[0] || !(3 <= strlen(inputtext) <= 10))
{
ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_PASSWORD,"SmR: {0x3252BEFF}Registrierung","{FFFFFF}Herzlich Willkommen auf San Miami Roleplay\n\nUnser System hat Ihre Spielerinformationen\nnicht in unserer Datenbank gefunden. Um einen Charakter auf unserem Server zu Erstellen\nbenoetigen wir einige Informationen. Als erstes tragen Sie Bitte ein Sicheres Passwort in das untere Feld ein.\nMerken Sie sich Ihr Passwort Gut.\n\nKlicken Sie anschließend auf Annehmen.","Annehmen","Abbrechen");
return 1;
}
new query[950 + MAX_PLAYER_NAME],Tag,Monat,Jahr,Stunde,Minute,Sekunde;
getdate(Tag,Monat,Jahr);
gettime(Stunde,Minute,Sekunde);
format(query,sizeof(query),"%02d.%02d.%d - %02d:%02d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);
mysql_format(DBHandle, query, sizeof(query),"INSERT INTO `Accounts` (`pName`, `pPasswort`, `pAlter`, `pAdminlevel`, `pBanned`, `pBargeld`, `pKontoguthaben`, `pLastLogin`, `pRegDatum`, `pVersuche`, `pLeben`) VALUES ('%e','%e','%d','%d','%d','0','0','%s','%s','%d','100.0')",Spieler[playerid][pName],inputtext,Spieler[playerid][pAlter],Spieler[playerid][pAdminlevel],Spieler[playerid][pBanned],query,query,Spieler[playerid][pWrongPass],Spieler[playerid][pLeben]);
mysql_tquery(DBHandle, query, "", "");
Spieler[playerid][pLogged] = true;
SpawnPlayer(playerid);
return 1;
}
case Dialog_Login:
{
if(!response)
{
SendClientMessage(playerid,0xFF0000FF,"Dieser Vorgang wurde Ab.-oder Unterbrochen\nBitte beenden Sie das Spiel, indem Sie /q als Textnachricht in den Chat eingeben.");
SetTimerEx("KickPlayer",250,0,"i",playerid);
return 1;
}
if(!inputtext[0] || !(3 <= strlen(inputtext) <= 25))
{
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"SmR: {0x3252BEFF}Einloggen","{FFFFFF}Sie müssen von unserem System Identifiziert werden.\nGeben Sie dafür Ihr Passwort unten in das Feld ein.\n\n Klicken Sie anschließend auf Einloggen, damit Ihre Daten kontrolliert werden können.","Einloggen","Abbrechen");
return 1;
}
new query[180 + MAX_PLAYER_NAME];
mysql_format(DBHandle, query,sizeof(query),"SELECT COUNT(*) AS `count` FROM `Accounts` WHERE `pName` ='%e' AND `pPasswort` ='%e'",Spieler[playerid][pName],inputtext);
mysql_function_query(DBHandle, query, true,"LoadPlayerDataSequence","dd",playerid,2);
return 1;
}
}
return 1;
}Spoiler anzeigen public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}Spoiler anzeigen public LoadPlayerDataSequence(playerid, l_step)
{
switch(l_step)
{
case 1:
{
new count = cache_get_field_content_int(0,"count");
if(count)
{
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"SmR: {0x3252BEFF}Einloggen","{FFFFFF}Sie m?ssen von unserem System Identifiziert werden.\nGeben Sie daf?r Ihr Passwort unten in das Feld ein.\n\n Klicken Sie anschlie?end auf Einloggen, damit Ihre Daten kontrolliert werden k?nnen.\n\nSie haben noch 3/3 versuche!","Einloggen","Abbrechen");
return 1;
}
else
{
ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_PASSWORD,"SmR: {0x3252BEFF}Registrierung","{FFFFFF}Herzlich Willkommen auf San Miami Roleplay\n\nUnser System hat Ihre Spielerinformationen\nnicht in unserer Datenbank gefunden. Um einen Charakter auf unserem Server zu Erstellen\nben?tigen wir einige Informationen. Als erstes tragen Sie Bitte ein Sicheres Passwort in das untere Feld ein.\n\nMerken Sie sich Ihr Passwort Gut.\n\nKlicken Sie anschlie?end auf Annehmen.","Annehmen","Abbrechen");
return 1;
}
}
case 2:
{
new count = cache_get_field_content_int(0,"count");
if(count)
{
new query[160 + MAX_PLAYER_NAME];
mysql_format(DBHandle, query ,sizeof(query),"SELECT * FROM `Accounts` WHERE `pName` = '%e'",Spieler[playerid][pName]);
mysql_function_query(DBHandle, query, true,"LoadPlayerDataSequence","dd",playerid,3);
return 1;
}
else
{
Login_Status[playerid]++;
switch(Login_Status[playerid])
{
case 0:
{
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"{0x3252BEFF}Falsches Passwort","{FFFFFF}Das von Ihnen angegebene Passwort wurde abgelehnt,\ngeben Sie Bitte Ihr richtiges Passwort unten in das Feld ein.\nDrücken Sie danach auf Einloggen, damit Ihre Daten kontrolliert werden können.\n\nDenken Sie auch an die Groß-,Kleinschreibung\n\nSie haben 3/3 versuche!","Einloggen","Abbrechen");
return 1;
}
case 1:
{
Login_Status[playerid]++;
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"{0x3252BEFF}Falsches Passwort","{FFFFFF}Das von Ihnen angegebene Passwort wurde abgelehnt,\ngeben Sie Bitte Ihr richtiges Passwort unten in das Feld ein.\nDrücken Sie danach auf Einloggen, damit Ihre Daten kontrolliert werden können.\n\nDenken Sie auch an die Groß-,Kleinschreibung\n\nSie haben noch 2/3 versuche!","Einloggen","Abbrechen");
return 1;
}
case 2:
{
Login_Status[playerid]++;
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"{0x3252BEFF}Falsches Passwort","{FFFFFF}Das von Ihnen angegebene Passwort wurde abgelehnt,\ngeben Sie Bitte Ihr richtiges Passwort unten in das Feld ein.\nDrücken Sie danach auf Einloggen, damit Ihre Daten kontrolliert werden können.\n\nDenken Sie auch an die Groß-,Kleinschreibung\n\nSie haben nurnoch 1/3 versuche!","Einloggen","Abbrechen");
return 1;
}
case 3:
{
SendClientMessage(playerid,0x3252BEFF,"Sie haben zu oft Ihr Passwort falsch eingegeben, aus Sicherheitsgründen wurden Sie vom System gesperrt.");
SendClientMessage(playerid,0x3252BEFF,"Versuchen Sie es in einer Stunde nochmal, oder Melden Sie sich bei einem Administrator.");
SetTimerEx("KickPlayer",250,0,"i",playerid);
return 1;
}
}
}
}
case 3:
{
Spieler[playerid][pAlter] = cache_get_field_content_int(0,"pAlter");
Spieler[playerid][pAdminlevel] = cache_get_field_content_int(0,"pAdminlevel");
Spieler[playerid][pBanned] = cache_get_field_content_int(0,"pBanned");
Spieler[playerid][pBargeld] = cache_get_field_content_int(0,"pBargeld");
Spieler[playerid][pKontoguthaben] = cache_get_field_content_int(0,"pKontoguthaben");
cache_get_field_content(0,"pLastLogin",Spieler[playerid][pLastLogin],DBHandle,30);
cache_get_field_content(0,"pRegDatum",Spieler[playerid][pRegDatum],DBHandle,30);
Spieler[playerid][pWrongPass] = cache_get_field_content_int(0,"pVersuche");
Spieler[playerid][pLeben] = cache_get_field_content_float(0,"pLeben");
Spieler[playerid][pLogged] = true;
SpawnPlayer(playerid);
return 1;
}
default:
{
SendClientMessage(playerid,0x7D0000FF,"Es ist ein Fehler aufgetreten, Bitte starten Sie Ihren Clienten neu, und versuchen Sie es erneut,\nSollten weiterhin Fehler auftreten, so Melde Sie sich umgehend Bitte bei einem Teammitglied.");
return 1;
}
}
return 1;
}
-
Auf Anfrage in PN:
Eddy:
So wie mir das scheint, hast du das bei OnPlayerDisconnect vergessen:
Login_Status[playerid] = -1;
du kannst es aber auch direkt dort machen, wo du den Timer startest um den Spieler zu kicken.Die Nachricht bekommst du nicht, weil das hier mehr als 144 Zeichen sind:
ZitatSie haben zu oft Ihr Passwort falsch eingegeben, aus Sicherheitsgründen wurden Sie vom System gesperrt. Versuchen Sie es in einer Stunde nochmal, oder Melden Sie sich bei einem Administrator.
Nämlich 191.Syno: Ach ja, stimmt natürlich. Das fängt ja bei 0 an, hab ich glatt übersehen. Danke für den Hinweis.
Dann müsste auch die Initialisierung so aussehen:
new Login_Status[MAX_PLAYERS] = {-1,...};
Schätze mal das hat er auch nicht. -
Unter welchem Callback hast du das stehen? OnPlayerDisconnect? Falls ja, dort geht das nicht.
-
Das ist der Fehler!
stock LoadPlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
GetPlayerName(playerid, sInfo[playerid][sNames], MAX_PLAYER_NAME);
format(sInfo[playerid][sAdresse],32, MySQL_GetString("accounts", "Adresse", "Spielername", sInfo[playerid][sNames]));
format(sInfo[playerid][sEmail],32, MySQL_GetString("accounts", "Email", "Spielername", sInfo[playerid][sNames]));
sInfo[playerid][sAdminlevel] = MySQL_GetInt("accounts", "Adminlevel", "Spielername", sInfo[playerid][sNames]);
}
return 1;
}IP und E-Mail sind keine Integers.
-
Vor SpawnPlayer musst du SetSpawnInfo benutzen.
-
Kein Ding, aber hey, schau mal:
Zitat[12:30:12] CMySQLHandler::Query(UPDATE accounts SET Adresse = '127.0.0.1', Email = 'email@web.de', Adminlevel = 0 WHERE Spielername = 'versuch4') - Successfully executed.
Das tut doch.Dann lädst du es wieder:
Zitat[12:30:18] CMySQLHandler::Query(SELECT `Email` FROM `accounts` WHERE `Spielername` = 'versuch4') - Successfully executed
[12:30:18] CMySQLHandler::FetchRow() - Return: email@web.de
Tut auch.Und erst dann ist es falsch:
Zitat[12:30:21] CMySQLHandler::Query(UPDATE accounts SET Adresse = 'ÿ27.0.0.1', Email = 'ÿmail@web.de', Adminlevel = 0 WHERE Spielername = 'versuch4') - Successfully executed.
Also poste bitte mal den Code mit dem du die E-Mail lädst, also der Teil:
SELECT `Email` FROM `accounts` WHERE `Spielername` = 'versuch4' -
ApplyAnimation(playerid, "PED","FLOOR_hit_f", 4.0, 1, 0, 0, 0, 0,1);
oder
ApplyAnimation(playerid,"CRACK","crckdeth2", 4.0, 1, 0, 0, 0, 0,1);
ApplyAnimation(playerid,"CRACK","crckidle1", 4.0, 1, 0, 0, 0, 0,1);
ApplyAnimation(playerid,"CRACK","crckidle2", 4.0, 1, 0, 0, 0, 0,1);
ApplyAnimation(playerid,"CRACK","crckidle3", 4.0, 1, 0, 0, 0, 0,1);
ApplyAnimation(playerid,"CRACK","crckidle4", 4.0, 1, 0, 0, 0, 0,1); -
Hier hast ein Tutorial:
http://forum.sa-mp.com/showthread.php?t=298218Das sollte eigentlich mehr als ausreichend sein.
-
Manne:
So geht das nicht. Wenn dann so
new HanfPflanze[MAX_PLAYERS] = {-1,...};Templer
MAX_PFLANZEN
Wird zwar deklariert aber nie benutzt.
Und wenn du bei CreateObject plus 1 machst, dann auch beim Löschen wieder abziehen, sonst bleibt das Objekt.
DestroyObject(HanfPflanze[playerid]-1); -
Nativechecker brauchst du um herauszufinden welche natives nicht deklariert worden sind, wegen fehlender Plugins.
Crashdetect um herauszufinden warum der Server abstürzt auf Grund von Script Fehlern.
Möglicherweise geht hier auch crashdetect, aber nativechecker macht mehr Sinn.
-
CreateObject(19473,X,Y,Z,FZ,0,0,0);
Zu
hanfID = CreateObject(19473,X,Y,Z,FZ,0,0,0);Und
DestroyObject(19473);
Zu
DestroyObject(hanfID);
hanfID = -1;Unter die Includes
new hanfID=-1; -
-
Uhh, da hast aber was hinbekommen dann.
Ändere das enum mal zu:
enum SpielerInfo
{
sAdresse[32],
sEmail[32],
sAdminlevel,
sNames[MAX_PLAYER_NAME+1]
};Wenn das auch nichts ändert, dann poste noch wie du "sNames" einen Wert zuweist.
So langsam gehen mir die Ideen aus. -
mysql_real_escape_string(inputtext, inputtext);
format(sInfo[playerid][sEmail], 36, "%s", inputtext);zu:
mysql_real_escape_string(inputtext, sInfo[playerid][sEmail]);Und:
format(query, sizeof(query), "UPDATE accounts< SET Adresse
Mach das < weg, das hat da nichts zu suchen.Falls es noch immer nicht funktioniert, poste nochmal den Log dazu.
-
Gut...naja, nicht gut, aber der Fehler liegt hier, offensichtlich:
Zitat[00:08:44] CMySQLHandler::Query(UPDATE accounts< SET Adresse = 'ÿ27.0.0.1', Email = 'ÿmail@web.de', Adminlevel = 0 WHERE Spielername = 'Versuch') - An error has occured. (Error ID: 1064, You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '< SET Adresse = 'ÿ27.0.0.1', Email = 'ÿmail@web.de', Adminlevel = 0 WHERE Spie' at line 1)
Poste bitte nochmal den Code der SavePlayer-Funktion so wie die Funktion im Moment ist.
Poste dazu auch gleich noch den Teil wo der Spieler seine Mail eingibt, und den Teil wo die IP Adresse gespeichert wird.EDIT: Außer das oben funktioniert, denke ich aber eher nicht, da diese `` hier nicht notwendig sind.
-
Da haben wir den Fehler doch.
enum SpielerInfo
{
sNames[MAX_PLAYER_NAME+1],
sAdresse[32],
sEmail[32],
sAdminlevel
};Da beides Strings sind, müssen sie auch so deklariert werden.