Dann melde dich bei deiner Daimler Firma für ein Lehrgang in Programmieren an und mach über deine Firma ein Ausbildung dazu.
Daimler Finanziert dir so was weil die immer solche leute brauchen.
Beiträge von Onjiary
-
-
@Dayzer7632 Geh damit wirklich zu Mercedes Benz Firma da brauchst du dir keine Sorgen machen das es nicht klappt. Mercedes Benz gibt dir dann sogar Garantie drauf was du bei Privaten Personen nicht hast.
-
Das Registrieren/Einloggen geht jetzt.
Nur frage ich mich warum er jetzt folgendes ausspuckt
Code[22:48:02] [plugins/mysql] error #1054 while executing query "UPDATE accounts SET adminlevel = '0', money = '0', Franktion = '0', Frank = '0' WHERE id = '1'": Unknown column 'Franktion' in 'field list' [22:48:26] [plugins/mysql] cache_get_value_name_int: value 'NULL' is not a number [22:48:26] [plugins/mysql] cache_get_value_name_int: value 'NULL' is not a number [22:48:26] [plugins/mysql] cache_get_value_name_int: value 'NULL' is not a number [22:48:26] [plugins/mysql] cache_get_value_name_int: value 'NULL' is not a number [22:49:24] [plugins/mysql] error #1054 while executing query "UPDATE accounts SET adminlevel = '0', money = '0', Franktion = '0', Frank = '0' WHERE id = '1'": Unknown column 'Franktion' in 'field list' -
-
Hier aus der Console die Infromation:
C
Alles anzeigen---------- Loaded log file: "server_log.txt". ---------- SA-MP Dedicated Server ---------------------- v0.3.7-R2, (C)2005-2015 SA-MP Team [22:47:31] filterscripts = "" (string) [22:47:31] [22:47:31] Server Plugins [22:47:31] -------------- [22:47:31] Loading plugin: mysql [22:47:31] >> plugin.mysql: R41-4 successfully loaded. [22:47:31] Loaded. [22:47:31] Loaded 1 plugins. [22:47:32] [22:47:32] Filterscripts [22:47:32] --------------- [22:47:32] Loaded 0 filterscripts. [22:47:32] [MySQL] Verbindungsaufbau... [22:47:32] [MySQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: 1 [22:47:32] ---------------------------------- [22:47:32] MeinScript [22:47:32] ---------------------------------- [22:47:32] Number of vehicle models: 0 [22:47:53] [connection] 127.0.0.1:60131 requests connection cookie. [22:47:54] [connection] incoming connection: 127.0.0.1:60131 id: 0 [22:47:54] [join] teso has joined the server (0:127.0.0.1) [22:48:02] [part] teso has left the server (0:1) [22:48:23] [connection] 127.0.0.1:60143 requests connection cookie. [22:48:24] [connection] incoming connection: 127.0.0.1:60143 id: 0 [22:48:24] [join] teso has joined the server (0:127.0.0.1) [22:49:24] [part] teso has left the server (0:1) -
Hier ein Bild von meiner Einstellung der Datenbank
-
Folgender Neuer Fehler:
[22:04:29] [plugins/mysql] error #1364 while executing query "INSERT INTO accounts (name, password) VALUES ('teso', MD5('test'))": Field 'id' doesn't have a default value
Script compailt ohne fehler:
Hier der Code:
Code
Alles anzeigen#include <a_samp> #include <a_mysql> //Datenbankinformation #define MYSQL_HOST "127.0.0.1" //IP Adresse des MYSQL Server #define MYSQL_USER "root" //Benutzername dder angemelet wird #define MYSQL_PASS "Gr489zp4gl7Loc7thuu4Klom19pom" //password des benutzers #define MYSQL_DBSE "samp" //Name der Dantenbank new MySQL:handle; //Die Connection-Handlem über die wir später auf die Tabellen der Datenbank zugreiffen //FORWARD: forward OnUserCheck(playerid); forward OnUserRegister(playerid); forward OnUserLogin(playerid); //DIALOGE: #define DIALOG_REGISTER 1 #define DIALOG_LOGIN 2 //ENUM: enum pDataEnum { p_id, bool:pLoggedIn, pName[MAX_PLAYER_NAME], pAdminlevel, pMoney, pFraktion, pFrank } new PlayerInfo[MAX_PLAYERS][pDataEnum]; main() { print("\n----------------------------------"); print(" MeinScript"); print("----------------------------------\n"); } public OnGameModeInit() { SetGameModeText("MeinScript"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); MySQL_SetupConnection(); mysql_log(); return 1; } public OnGameModeExit() { mysql_close(handle); return 1; } public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); if(!PlayerInfo[playerid][pLoggedIn]) { new query[127]; mysql_format(handle,query,sizeof(query), "SELECT id From accounts WHERE name = '%e'",PlayerInfo[playerid][pName]); mysql_pquery(handle,query, "OnUserCheck","d",playerid); } return 1; } public OnPlayerConnect(playerid) { PlayerInfo[playerid][p_id] =0; PlayerInfo[playerid][pLoggedIn] = false; PlayerInfo[playerid][pAdminlevel] = 0; PlayerInfo[playerid][pMoney] = 0; PlayerInfo[playerid][pFraktion] =0; PlayerInfo[playerid][pFrank] = 0; GetPlayerName(playerid, PlayerInfo[playerid][pName],MAX_PLAYER_NAME); return 1; } public OnPlayerDisconnect(playerid, reason) { //Speichere den Spieler wenn er der Server verlässt SaveUserStats(playerid); return 1; } public OnUserCheck(playerid) { new rows; cache_get_row_count(rows); if(rows == 0) { ShowPlayerDialog(playerid,DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registraiton", "Bitte registriere dich:","Ok","Abbrechen"); } else { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung","Bitte Logge dich ein:", "Ok", "Abbrechen"); } return 1; } public OnUserRegister(playerid) { //Der Spieler wurde in die Datenbank eingetragen, es wird die id ausgelesen PlayerInfo[playerid][p_id] = cache_insert_id(); PlayerInfo[playerid][pLoggedIn] = true; SendClientMessage(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich."); return 1; } public OnUserLogin(playerid) { //Query wurde ausgeführt und das Ergebnis im Cache gespeichert new rows; cache_get_row_count(rows); if(rows == 0) { //Der Spieler hat ein falsches Passwort eingegeben ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen"); } else { //Es existiert ein Ergebnis, das heißt der Spieler hat das richtige Passwort eingegeben //Wir lesen nun die erste Zeile des Caches aus (ID 0) cache_get_value_name_int(0, "id", PlayerInfo[playerid][p_id]); cache_get_value_name_int(0, "adminlevel", PlayerInfo[playerid][pAdminlevel]); cache_get_value_name_int(0, "money", PlayerInfo[playerid][pMoney]); cache_get_value_name_int(0, "Fraktion", PlayerInfo[playerid][pFraktion]); cache_get_value_name_int(0, "Frank", PlayerInfo[playerid][pFrank]); PlayerInfo[playerid][pLoggedIn] = true; SendClientMessage(playerid, 0x00FF00FF, "[Konto] Eingeloggt."); GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]); } return 1; } public OnPlayerSpawn(playerid) { return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid, text[]) { return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/mycommand", cmdtext, true, 10) == 0) { // Do something here return 1; } return 0; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } public OnPlayerEnterCheckpoint(playerid) { return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } public OnRconCommand(cmd[]) { return 1; } public OnPlayerRequestSpawn(playerid) { return 1; } public OnObjectMoved(objectid) { return 1; } public OnPlayerObjectMoved(playerid, objectid) { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } public OnVehicleMod(playerid, vehicleid, componentid) { return 1; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { return 1; } public OnPlayerSelectedMenuRow(playerid, row) { return 1; } public OnPlayerExitedMenu(playerid) { return 1; } public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) { return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { return 1; } public OnRconLoginAttempt(ip[], password[], success) { return 1; } public OnPlayerUpdate(playerid) { return 1; } public OnPlayerStreamIn(playerid, forplayerid) { return 1; } public OnPlayerStreamOut(playerid, forplayerid) { return 1; } public OnVehicleStreamIn(vehicleid, forplayerid) { return 1; } public OnVehicleStreamOut(vehicleid, forplayerid) { return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_REGISTER) { //Spieler hat Abbrechen gewählt if(!response) return Kick(playerid); //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen"); //Wenn alles passt wird der Spieler in der Datenbank angelegt //Als Verschlüsselung für das Passwort wird MD5 verwendet new query[256]; mysql_format(handle, query, sizeof(query), "INSERT INTO accounts (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext); //Das Query wird abgesendet und die playerid an OnUserRegister übergeben mysql_pquery(handle, query, "OnUserRegister", "d", playerid); return 1; } if(dialogid == DIALOG_LOGIN) { //Spieler hat Abbrechen gewählt if(!response) return Kick(playerid); //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen"); //Wenn alles passt wird die Datenbank ausgelesen new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM accounts WHERE name = '%e' AND password = MD5('%e')", PlayerInfo[playerid][pName], inputtext); //Das Query wird abgesendet und die playerid an OnUserLogin übergeben mysql_pquery(handle, query, "OnUserLogin", "d", playerid); return 1; } return 0; } public OnPlayerClickPlayer(playerid, clickedplayerid, source) { return 1; } stock MySQL_SetupConnection(ttl = 3) { print("[MySQL] Verbindungsaufbau..."); //mysql_log(); //<- Kommentar vor mysql_log entfernen um den MySQL Debug-Modus zu aktivieren handle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DBSE); //Prüfen und gegebenenfalls wiederholen if(mysql_errno(handle) != 0) { //Fehler im Verbindungsaufbau, prüfe ob ein weiterer Versuch gestartet werden soll if(ttl > 1) { //Versuche erneut eine Verbindung aufzubauen print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden."); printf("[MySQL] Starte neuen Verbindungsversuch (TTL: %d).", ttl-1); return MySQL_SetupConnection(ttl-1); } else { //Abbrechen und Server schließen print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden."); print("[MySQL] Bitte prüfen Sie die Verbindungsdaten."); print("[MySQL] Der Server wird heruntergefahren."); return SendRconCommand("exit"); } } printf("[MySQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: %d", _:handle); return 1; } stock SaveUserStats(playerid) { //Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht if(!PlayerInfo[playerid][pLoggedIn]) return 1; //Ansonsten speichere sie new query[256]; mysql_format(handle, query, sizeof(query), "UPDATE accounts SET adminlevel = '%d', money = '%d', Franktion = '%d', Frank = '%d' WHERE id = '%d'", PlayerInfo[playerid][pAdminlevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pFraktion], PlayerInfo[playerid][pFrank], PlayerInfo[playerid][p_id]); //Das Query wird abgesendet mysql_pquery(handle, query); return 1; } -
Habe mich ans Register/login System gesetzt so wie im Tutorial von Jeffry.
jetzt will der die daten nicht in die db packen.
Mysql_Log:
SQL[21:14:13] [plugins/mysql] error #1064 while executing query "SELECT id From accounts WHRE name = 'teso'": 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 'name = 'teso'' at line 1Mein Code sieht so aus:
Code
Alles anzeigen#include <a_samp> #include <a_mysql> //Datenbankinformation #define MYSQL_HOST "127.0.0.1" //IP Adresse des MYSQL Server #define MYSQL_USER "root" //Benutzername dder angemelet wird #define MYSQL_PASS "" //password des benutzers #define MYSQL_DBSE "samp" //Name der Dantenbank new MySQL:handle; //Die Connection-Handlem über die wir später auf die Tabellen der Datenbank zugreiffen //FORWARD: forward OnUserCheck(playerid); forward OnUserRegister(playerid); forward OnUserLogin(playerid); //DIALOGE: #define DIALOG_REGISTER 1 #define DIALOG_LOGIN 2 //ENUM: enum pDataEnum { p_id, bool:pLoggedIn, pName[MAX_PLAYER_NAME], pAdminlevel, pMoney, pFraktion, pFrank } new PlayerInfo[MAX_PLAYERS][pDataEnum]; public OnGameModeInit() { SetGameModeText("Blank Script"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); MySQL_SetupConnection(); mysql_log(); return 1; } public OnGameModeExit() { mysql_close(handle); return 1; } public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); if(!PlayerInfo[playerid][pLoggedIn]) { new query[127]; mysql_format(handle,query,sizeof(query), "SELECT id From accounts WHRE name = '%e'",PlayerInfo[playerid][pName]); mysql_pquery(handle,query, "OnUserCheck","d",playerid); } return 1; } public OnPlayerConnect(playerid) { PlayerInfo[playerid][p_id] =0; PlayerInfo[playerid][pLoggedIn] = false; PlayerInfo[playerid][pAdminlevel] = 0; PlayerInfo[playerid][pMoney] = 0; PlayerInfo[playerid][pFraktion] =0; PlayerInfo[playerid][pFrank] = 0; GetPlayerName(playerid, PlayerInfo[playerid][pName],MAX_PLAYER_NAME); return 1; } public OnPlayerDisconnect(playerid, reason) { //Speichere den Spieler wenn er der Server verlässt SaveUserStats(playerid); return 1; } public OnUserCheck(playerid) { new rows; cache_get_row_count(rows); if(rows == 0) { ShowPlayerDialog(playerid,DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registraiton", "Bitte registriere dich:","Ok","Abbrechen"); } else { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung","Bitte Logge dich ein:", "Ok", "Abbrechen"); } return 1; } public OnUserRegister(playerid) { //Der Spieler wurde in die Datenbank eingetragen, es wird die id ausgelesen PlayerInfo[playerid][p_id] = cache_insert_id(); PlayerInfo[playerid][pLoggedIn] = true; SendClientMessage(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich."); return 1; } public OnUserLogin(playerid) { //Query wurde ausgeführt und das Ergebnis im Cache gespeichert new rows; cache_get_row_count(rows); if(rows == 0) { //Der Spieler hat ein falsches Passwort eingegeben ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen"); } else { //Es existiert ein Ergebnis, das heißt der Spieler hat das richtige Passwort eingegeben //Wir lesen nun die erste Zeile des Caches aus (ID 0) cache_get_value_name_int(0, "id", PlayerInfo[playerid][p_id]); cache_get_value_name_int(0, "Adminlevel", PlayerInfo[playerid][pAdminlevel]); cache_get_value_name_int(0, "Money", PlayerInfo[playerid][pMoney]); cache_get_value_name_int(0, "Fraktion", PlayerInfo[playerid][pFraktion]); cache_get_value_name_int(0, "Frank", PlayerInfo[playerid][pFrank]); PlayerInfo[playerid][pLoggedIn] = true; SendClientMessage(playerid, 0x00FF00FF, "[Konto] Eingeloggt."); GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]); } return 1; } public OnPlayerSpawn(playerid) { return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid, text[]) { return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/mycommand", cmdtext, true, 10) == 0) { // Do something here return 1; } return 0; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } public OnPlayerEnterCheckpoint(playerid) { return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } public OnRconCommand(cmd[]) { return 1; } public OnPlayerRequestSpawn(playerid) { return 1; } public OnObjectMoved(objectid) { return 1; } public OnPlayerObjectMoved(playerid, objectid) { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } public OnVehicleMod(playerid, vehicleid, componentid) { return 1; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { return 1; } public OnPlayerSelectedMenuRow(playerid, row) { return 1; } public OnPlayerExitedMenu(playerid) { return 1; } public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) { return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { return 1; } public OnRconLoginAttempt(ip[], password[], success) { return 1; } public OnPlayerUpdate(playerid) { return 1; } public OnPlayerStreamIn(playerid, forplayerid) { return 1; } public OnPlayerStreamOut(playerid, forplayerid) { return 1; } public OnVehicleStreamIn(vehicleid, forplayerid) { return 1; } public OnVehicleStreamOut(vehicleid, forplayerid) { return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_REGISTER) { //Spieler hat Abbrechen gewählt if(!response) return Kick(playerid); //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen"); //Wenn alles passt wird der Spieler in der Datenbank angelegt //Als Verschlüsselung für das Passwort wird MD5 verwendet new query[256]; mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext); //Das Query wird abgesendet und die playerid an OnUserRegister übergeben mysql_pquery(handle, query, "OnUserRegister", "d", playerid); return 1; } if(dialogid == DIALOG_LOGIN) { //Spieler hat Abbrechen gewählt if(!response) return Kick(playerid); //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen"); //Wenn alles passt wird die Datenbank ausgelesen new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM users WHERE name = '%e' AND password = MD5('%e')", PlayerInfo[playerid][pName], inputtext); //Das Query wird abgesendet und die playerid an OnUserLogin übergeben mysql_pquery(handle, query, "OnUserLogin", "d", playerid); return 1; } return 0; } public OnPlayerClickPlayer(playerid, clickedplayerid, source) { return 1; } stock MySQL_SetupConnection(ttl = 3) { print("[MySQL] Verbindungsaufbau..."); //mysql_log(); //<- Kommentar vor mysql_log entfernen um den MySQL Debug-Modus zu aktivieren handle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DBSE); //Prüfen und gegebenenfalls wiederholen if(mysql_errno(handle) != 0) { //Fehler im Verbindungsaufbau, prüfe ob ein weiterer Versuch gestartet werden soll if(ttl > 1) { //Versuche erneut eine Verbindung aufzubauen print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden."); printf("[MySQL] Starte neuen Verbindungsversuch (TTL: %d).", ttl-1); return MySQL_SetupConnection(ttl-1); } else { //Abbrechen und Server schließen print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden."); print("[MySQL] Bitte prüfen Sie die Verbindungsdaten."); print("[MySQL] Der Server wird heruntergefahren."); return SendRconCommand("exit"); } } printf("[MySQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: %d", _:handle); return 1; } stock SaveUserStats(playerid) { //Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht if(!PlayerInfo[playerid][pLoggedIn]) return 1; //Ansonsten speichere sie new query[256]; mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d' WHERE id = '%d'", PlayerInfo[playerid][pAdminlevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pFraktion], PlayerInfo[playerid][pFrank], PlayerInfo[playerid][p_id]); //Das Query wird abgesendet mysql_pquery(handle, query); return 1; } -
Habe mich ans Register/login System gesetzt so wie im Tutorial von Jeffry.
Es geht alles ohne probleme nur kommt in der Server-Console:
[20:09:26] Script[gamemodes/meinscript.amx]: Run time error 20: "Invalid index parameter (bad entry point)"Ich weiß nicht warum runtime 20 kommt

Mein Code sieht so aus:Code
Alles anzeigen#include <a_samp> #include <a_mysql> //Datenbankinformation #define MYSQL_HOST "127.0.0.1" //IP Adresse des MYSQL Server #define MYSQL_USER "root" //Benutzername dder angemelet wird #define MYSQL_PASS "" //password des benutzers #define MYSQL_DBSE "samp" //Name der Dantenbank new MySQL:handle; //Die Connection-Handlem über die wir später auf die Tabellen der Datenbank zugreiffen //FORWARD: forward OnUserCheck(playerid); forward OnUserRegister(playerid); forward OnUserLogin(playerid); //DIALOGE: #define DIALOG_REGISTER 1 #define DIALOG_LOGIN 2 //ENUM: enum pDataEnum { p_id, bool:pLoggedIn, pName[MAX_PLAYER_NAME], pAdminlevel, pMoney, pFraktion, pFrank } new PlayerInfo[MAX_PLAYERS][pDataEnum]; public OnGameModeInit() { SetGameModeText("Blank Script"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); MySQL_SetupConnection(); mysql_log(); return 1; } public OnGameModeExit() { mysql_close(handle); return 1; } public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); if(!PlayerInfo[playerid][pLoggedIn]) { new query[127]; mysql_format(handle,query,sizeof(query), "SELECT id From accounts WHRE name = '%e'",PlayerInfo[playerid][pName]); mysql_pquery(handle,query, "OnUserCheck","d",playerid); } return 1; } public OnPlayerConnect(playerid) { PlayerInfo[playerid][p_id] =0; PlayerInfo[playerid][pLoggedIn] = false; PlayerInfo[playerid][pAdminlevel] = 0; PlayerInfo[playerid][pMoney] = 0; PlayerInfo[playerid][pFraktion] =0; PlayerInfo[playerid][pFrank] = 0; GetPlayerName(playerid, PlayerInfo[playerid][pName],MAX_PLAYER_NAME); return 1; } public OnPlayerDisconnect(playerid, reason) { //Speichere den Spieler wenn er der Server verlässt SaveUserStats(playerid); return 1; } public OnUserCheck(playerid) { new rows; cache_get_row_count(rows); if(rows == 0) { ShowPlayerDialog(playerid,DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registraiton", "Bitte registriere dich:","Ok","Abbrechen"); } else { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung","Bitte Logge dich ein:", "Ok", "Abbrechen"); } return 1; } public OnUserRegister(playerid) { //Der Spieler wurde in die Datenbank eingetragen, es wird die id ausgelesen PlayerInfo[playerid][p_id] = cache_insert_id(); PlayerInfo[playerid][pLoggedIn] = true; SendClientMessage(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich."); return 1; } public OnUserLogin(playerid) { //Query wurde ausgeführt und das Ergebnis im Cache gespeichert new rows; cache_get_row_count(rows); if(rows == 0) { //Der Spieler hat ein falsches Passwort eingegeben ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen"); } else { //Es existiert ein Ergebnis, das heißt der Spieler hat das richtige Passwort eingegeben //Wir lesen nun die erste Zeile des Caches aus (ID 0) cache_get_value_name_int(0, "id", PlayerInfo[playerid][p_id]); cache_get_value_name_int(0, "Adminlevel", PlayerInfo[playerid][pAdminlevel]); cache_get_value_name_int(0, "Money", PlayerInfo[playerid][pMoney]); cache_get_value_name_int(0, "Fraktion", PlayerInfo[playerid][pFraktion]); cache_get_value_name_int(0, "Frank", PlayerInfo[playerid][pFrank]); PlayerInfo[playerid][pLoggedIn] = true; SendClientMessage(playerid, 0x00FF00FF, "[Konto] Eingeloggt."); GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]); } return 1; } public OnPlayerSpawn(playerid) { return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid, text[]) { return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/mycommand", cmdtext, true, 10) == 0) { // Do something here return 1; } return 0; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } public OnPlayerEnterCheckpoint(playerid) { return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } public OnRconCommand(cmd[]) { return 1; } public OnPlayerRequestSpawn(playerid) { return 1; } public OnObjectMoved(objectid) { return 1; } public OnPlayerObjectMoved(playerid, objectid) { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } public OnVehicleMod(playerid, vehicleid, componentid) { return 1; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { return 1; } public OnPlayerSelectedMenuRow(playerid, row) { return 1; } public OnPlayerExitedMenu(playerid) { return 1; } public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) { return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { return 1; } public OnRconLoginAttempt(ip[], password[], success) { return 1; } public OnPlayerUpdate(playerid) { return 1; } public OnPlayerStreamIn(playerid, forplayerid) { return 1; } public OnPlayerStreamOut(playerid, forplayerid) { return 1; } public OnVehicleStreamIn(vehicleid, forplayerid) { return 1; } public OnVehicleStreamOut(vehicleid, forplayerid) { return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_REGISTER) { //Spieler hat Abbrechen gewählt if(!response) return Kick(playerid); //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen"); //Wenn alles passt wird der Spieler in der Datenbank angelegt //Als Verschlüsselung für das Passwort wird MD5 verwendet new query[256]; mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext); //Das Query wird abgesendet und die playerid an OnUserRegister übergeben mysql_pquery(handle, query, "OnUserRegister", "d", playerid); return 1; } if(dialogid == DIALOG_LOGIN) { //Spieler hat Abbrechen gewählt if(!response) return Kick(playerid); //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen"); //Wenn alles passt wird die Datenbank ausgelesen new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM users WHERE name = '%e' AND password = MD5('%e')", PlayerInfo[playerid][pName], inputtext); //Das Query wird abgesendet und die playerid an OnUserLogin übergeben mysql_pquery(handle, query, "OnUserLogin", "d", playerid); return 1; } return 0; } public OnPlayerClickPlayer(playerid, clickedplayerid, source) { return 1; } stock MySQL_SetupConnection(ttl = 3) { print("[MySQL] Verbindungsaufbau..."); //mysql_log(); //<- Kommentar vor mysql_log entfernen um den MySQL Debug-Modus zu aktivieren handle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DBSE); //Prüfen und gegebenenfalls wiederholen if(mysql_errno(handle) != 0) { //Fehler im Verbindungsaufbau, prüfe ob ein weiterer Versuch gestartet werden soll if(ttl > 1) { //Versuche erneut eine Verbindung aufzubauen print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden."); printf("[MySQL] Starte neuen Verbindungsversuch (TTL: %d).", ttl-1); return MySQL_SetupConnection(ttl-1); } else { //Abbrechen und Server schließen print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden."); print("[MySQL] Bitte prüfen Sie die Verbindungsdaten."); print("[MySQL] Der Server wird heruntergefahren."); return SendRconCommand("exit"); } } printf("[MySQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: %d", _:handle); return 1; } stock SaveUserStats(playerid) { //Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht if(!PlayerInfo[playerid][pLoggedIn]) return 1; //Ansonsten speichere sie new query[256]; mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d' WHERE id = '%d'", PlayerInfo[playerid][pAdminlevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pFraktion], PlayerInfo[playerid][pFrank], PlayerInfo[playerid][p_id]); //Das Query wird abgesendet mysql_pquery(handle, query); return 1; } -
mein Tipp nutze lieber das Tutorial für MYSQL von:
Sehr ausführlich beschrieben und ist 50% sicherer als Dini
-
Wenn ich auf die seite von denn gehe sieht es bei mir so aus:
Bild: https://i.imgur.com/IHetuWf.png
Ich weiß nicht warum oder was das ist aber ich finde es schade das die mit ein Forum werben und dann noch extra geld verlangen für werbung entfernen
-
Dann poste doch mal bitte das Tutorial um zu sehen wie der jenige es gemacht hat.
Ich gehe mal davon aus das @Rocky Balboa schon gute erfahrung in Samp-Scripting gesammelt hat um ihm da mal zu vertrauen.
-
@Smok3r ich denke es ist ein englisch server
-
Warum soll man euch direkt geldspenden nur um die werbung wegzubekommen?
Ich verstehe einfach nicht warum ihr Werbung nicht direkt ausmacht für alle anstatt nur für leute die Spenden. -
Wäre die Grafikkarte kaputt würde er überhaupt kein Bild erhalten.
-
-
Hiermit biete ich meine WoltLab Burning Board 4.1 Account an.
Ich verkaufe den ganzen Account mit der Lienz. Da ich keine Verwendung dafür habe verkaufe ich die hier im Forum.
Der Account hat keine Plugins ist noch nicht negative aufgefallen auf WBB und somit auch keine verwarnungen/bann vorhanden.
Der Preis für den Account liegt bei 35€ Festpreis.
Zahlungsmethode: Paypal
Mittelsmann: Forummod oder @riconeoBild zum Account:
https://www.pic-upload.de/view-35215840/wbbaccount.png.html -
Hättest so was lieber für GTA 5 machen sollen denn Samp geht mit den Spieler zahlen sehr stark zurück
-
Sieht sehr cool aus. Jetzt habe ich voll bock auf euer game.
Ich hoffe man kann bald eine Alpha-Beta testen das wäre so awesome -
Ich habe mir beide Seiten angeschaut und vom Grundaufbau sind doch alle Foren gleich.
Warum muss man immer gleich Heulen nur weil man Konkurrenz bekommt.
Dann würde jeder Samp/Minecraft/WoW-PrivatServer/GamingClans alles nur Kopieren weil der Grundaufbau immer der selbe ist.
Seit doch froh das ihr Konkurrenz bekommt.Ich finde beide Seiten schlicht und einfach gehalten nur die Designs könnte man mehr ins hellere bringen weil schwarz nicht wirklich so einladend ist