Wenn du ein Stabilen SAMP-Server haben willst kommst du um Linux nicht drum herum. Windows ist zwar einfacher zum Bedienen aber ist nicht so stabiel wie Linux
Beiträge von Markuslobicher
-
-
Guten Tag
Ich habe mir jetzt jede Beitrag hier im Scripting Base angeschaut und habe kein Dynamisches Wettersystem gefunden.
Daher bin ich auf der Suche/Hilfe für ein Dynamisches Wettersystem
-
Nitrado ist auch Linux
-
@Renz wo soll den da ein fehler sein?
-
@Jeffry Habe das L mal klein geschrieben und nun geht es.
Gibt es vom ocmd eine Neue version wo man den Anfangsbuchstaben großschreiben kann?
-
@Jeffry Das ist der adminbefehl der funktioniert:
Code
Alles anzeigenocmd:adminerstellen(playerid,params[]) { if(!isAdmin(playerid,6)) return SendClientMessage(playerid,grün,"Dein Adminrang ist nicht hochgenug!"); new pID,alevel; if(sscanf(params,"ui",pID,alevel)) return SendClientMessage(playerid,dunkelblau,"INFO: /adminerstellen [playerid][adminleve]"); sInfo[pID][Adminlevel]=Adminlevel; SendClientMessage(pID,helblau,"Sie wurden erfolgreich befördert!"); SendClientMessage(playerid,helblau,"Du hast den Adminrang geändert!"); return 1; }
-
Folgende Fragen:
Für welches Spiel?
Wenn es für SAMP ist geh dafür in den SAMP Bereich Scripting
Such Funktion schon benutzt? -
Kannst dir bei Nitrado sogar SAMP server hollen. 30Tage kannst du dir ein hollen. Du kannst sogar verlängern wenn du willst und hast sogar ein Webinterface für den Server dann.
-
Ich habe eine SPEEDLINK DECUS und da wurde mir ein pogramm mit geliefert was mit erlaubt die DPI meiner USB-Plug and Play Maus einzustellen.
Es wird sich so etwas überhaupt nicht lohnen zu produzieren da es einfach nur wie alle anderen DPI-Pogramme ist nur das da ein LCD-Display ist was die optimale werte ausliest für die Maus was nicht wirklich schwer ist.
Ich habe so ein teil schon bei mir rumliegen nur brauche ich es nicht da es Marke Eigenbau ist -
Guten Morgen
Ich versuche grade mit ocmd befehle zu schreiben.
Der befehl für
verbrechen geht da wird mir auch ausgegeben das ich nicht im SAPD bin.Bei den Adminbefehlen sagt er mit befehle existieren nicht:
Befehle die nur Admin ausführen kann:Code
Alles anzeigenocmd:Leadererstellen(playerid,params[]) { if(!isAdmin(playerid,5))return SendClientMessage(playerid,grün,"Du hast keine Berechtigung dazu!"); new pID, fID; if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid,rot,"INFO: /Leadererstellen[playerid][fraktid]"); if(fID>= sizeof(fInfo))return SendClientMessage(playerid,rot,"Fraktion existiert nicht."); sInfo[pID][Fraktion] = fID; sInfo[pID][Rang] = 6; new string[128]; format(string,sizeof(string),"%s hat dich zum Leader der Fraktion %s gemacht",getPlayerName(playerid),fInfo[fID][f_name]); SendClientMessage(pID,gelb,string); SendClientMessage(playerid,grün,"Du hast einen Spieler zum Leader gemacht."); return 1; }
-
[08:01:41] [MySQL] Error (0): Function: mysql_query called when not connected to any database. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
[08:01:41] [MySQL] Error (0): Function: mysql_free_result called when not connected to any database. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
[08:15:09] [MySQL] Error (0): Function: mysql_query called when not connected to any database. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
[08:15:09] [MySQL] Error (0): Function: mysql_query called when not connected to any database. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
[08:15:09] [MySQL] Error (0): Function: mysql_query called when not connected to any database. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
[08:15:09] [MySQL] Error (0): Function: mysql_query called when not connected to any database. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
[08:15:09] [MySQL] Error (0): Function: mysql_query called when not connected to any database. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
[08:15:09] [MySQL] Error (0): Function: mysql_query called when not connected to any database. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
[08:15:09] [MySQL] Error (0): Function: mysql_query called when not connected to any database. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
[08:15:09] [MySQL] Error (0): Function: mysql_query called when not connected to any database. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).
[08:15:09] [MySQL] Error (0): Function: mysql_free_result called when not connected to any database. Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2). -
-
gameservers4you da musst du torzdem die ip nehmen sonst kannst du nicht auf die datenbank zugreifen
Sonst könnte ich ja auch einfach Localhost nehmen bei mein gameserver wo mein samp-server läuft
-
ich habe es jetzt so:
saveuserstats:
Code
Alles anzeigenstock SaveUserStats(playerid) { //Wen der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht if(!sInfo[playerid][eingeloggt])return 1; //Ansonsten speichere Sie ab new query[600]; mysql_format(handle,query,sizeof(query),"UPDATE Accounts Set Name = '%s',Adminlevel = '%d',Level = '%d',Money = '%d',Fraktion = '%d',Rang = '%d',Spawn = '%d' WHERE id = '%d' ", sInfo[playerid][Name],sInfo[playerid][Adminlevel],sInfo[playerid][Level],sInfo[playerid][Money],sInfo[playerid][Fraktion],sInfo[playerid][Rang],sInfo[playerid][Spawn]); //Das Query wird abgesendet mysql_pquery(handle,query); return 1; }
-
So richtig?
ich habe es jetzt wie folgt:
OnPlayerRequestClass:
Code
Alles anzeigenpublic OnPlayerRequestClass(playerid, classid) { //Wenn der Spieler die Class-Selection betritt prüfe,ob er bereits eingeloggt ist if(!sInfo[playerid][eingeloggt]) { //Wenn nicht,dann prüfe ob der Spieler ein Konto hat new query[128]; mysql_format(handle,query,sizeof(query),"SELECT id FROM Accounts WHERE Name = '%e'",sInfo[playerid][Name]); mysql_pquery(handle,query,"OnUserCheck","d",playerid); } return 1; }
SaveUserStats:
Code
Alles anzeigenstock SaveUserStats(playerid) { //Wen der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht if(!sInfo[playerid][eingeloggt])return 1; //Ansonsten speichere Sie ab new query[600]; mysql_format(handle,query,sizeof(query),"UPDATE Accounts Set Name = ´%s´,Adminlevel = ´%e´,Level = ´%e´,Money = ´%e´,Fraktion = ´%e´,Rang = ´%e´,Spawn = ´%e´ WHERE id = ´%e´ ", sInfo[playerid][Name],sInfo[playerid][Adminlevel],sInfo[playerid][Level],sInfo[playerid][Money],sInfo[playerid][Fraktion],sInfo[playerid][Rang],sInfo[playerid][Spawn]); //Das Query wird abgesendet mysql_pquery(handle,query); return 1; }
-
Du musst die Ip von deinem SAMP-Server in das Script eintragen sonst kann es auch nicht funktionieren
-
Kannst du uns mal zeigen wie du mit den Server verbindest.
-
Guten Morgen Breadfish
Direkt zum Problem:
Das Script so wie die Datenbank wird richtig geladen.
Mein Problem ist aber folgendes:
Spieler X joint den Server und man kann nur auf Spawn drücken.
Register Dialog erscheint nicht mal obwohl alles anscheint richtig im script ist ohne fehlermeldungen beim Compailen.Hier die MYSQL_Log auszug:
SQL
Alles anzeigen[05:23:54] [DEBUG] mysql_connect - host: "x", user: "x", database: "x", password: "****", port: 3306, autoreconnect: true, pool_size: 2 [05:23:54] [DEBUG] CMySQLHandle::Create - creating new connection.. [05:23:54] [DEBUG] CMySQLHandle::CMySQLHandle - constructor called [05:23:54] [DEBUG] CMySQLHandle::Create - connection created (id: 1) [05:23:54] [DEBUG] CMySQLConnection::Connect - establishing connection to database... [05:23:54] [DEBUG] CMySQLConnection::Connect - connection was successful [05:23:54] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled [05:23:54] [DEBUG] mysql_errno - connection: 1 [05:23:54] [DEBUG] CMySQLConnection::Connect - establishing connection to database... [05:23:54] [DEBUG] CMySQLConnection::Connect - establishing connection to database... [05:23:54] [DEBUG] CMySQLConnection::Connect - establishing connection to database... [05:23:54] [DEBUG] CMySQLConnection::Connect - connection was successful [05:23:54] [DEBUG] CMySQLConnection::Connect - connection was successful [05:23:54] [DEBUG] CMySQLConnection::Connect - connection was successful [05:23:54] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled [05:23:54] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled [05:23:54] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled [05:25:53] [DEBUG] mysql_format - connection: 1, len: 128, format: "SELECT id FROM Accounts WHERE Name = �%e� " [05:25:53] [DEBUG] mysql_pquery - connection: 1, query: "SELECT id FROM Accounts WHERE Name = �Tiriago� ", callback: "OnUserCheck", format: "d" [05:25:53] [DEBUG] CMySQLQuery::Execute[OnUserCheck] - starting query execution [05:25:53] [ERROR] CMySQLQuery::Execute[OnUserCheck] - (error #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 '�Tiriago�' at line 1 [05:25:53] [DEBUG] CMySQLQuery::Execute[OnUserCheck] - error will be triggered in OnQueryError
Script Information:
Code
Alles anzeigen//forwards: forward OnUserCheck(playerid); forward OnUserRegister(playerid); forward OnUserLogin(playerid); //Dialoge #define DIALOG_REGISTER 1 #define DIALOG_LOGIN 2 //Mysql Daten: #define MYSQL_HOST "x" #define MYSQL_USER "x" #define MYSQL_PASS "x" #define MYSQL_DBSE "x" new handle; //____________________ //Enum enum playerInfo{ db_id, bool:eingeloggt, Name[MAX_PLAYER_NAME], Adminlevel, Level, Money, Fraktion, Rang, Spawn } new sInfo[MAX_PLAYER_NAME][playerInfo]; public OnGameModeInit() { MySQL_SetupConnection(); SetGameModeText("Reallife Version 0.1"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); return 1; } public OnGameModeExit() { mysql_close(handle); return 1; } public OnPlayerRequestClass(playerid, classid) { //Wenn der Spieler die Class-Selection betritt prüfe,ob er bereits eingeloggt ist if(!sInfo[playerid][eingeloggt]) { //Wenn nicht,dann prüfe ob der Spieler ein Konto hat new query[128]; mysql_format(handle,query,sizeof(query),"SELECT id FROM Accounts WHERE Name = ´%e´ ",sInfo[playerid][Name]); mysql_pquery(handle,query,"OnUserCheck","d",playerid); } return 1; } public OnPlayerConnect(playerid) { sInfo[playerid][db_id] =0; sInfo[playerid][eingeloggt] =false; sInfo[playerid][Adminlevel] =0; sInfo[playerid][Level] = 0; sInfo[playerid][Money] = 0; sInfo[playerid][Fraktion] = 0; sInfo[playerid][Rang] = 0; sInfo[playerid][Spawn] = 0; GetPlayerName(playerid,sInfo[playerid][Name],MAX_PLAYER_NAME); return 1; } public OnUserCheck(playerid) { //Query wurde ausgeführt und das Ergebnis im Chace gespeichert. if(cache_get_row_count() == 0) { ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Account erstellen","Bitte Registriere dich:","Registrieren","Abbrechen"); } else { //Es existiert ein Ergebnis,das heißt der Spieler ist registriert und muss sich einloggen ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Einloggen","Bitte loggte dich ein:","Einloggen","Abbrechen"); } return 1; } public OnPlayerDisconnect(playerid, reason) { SaveUserStats(playerid); 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) < 5) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{0xFF0000FF}Mindestens 5 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'))", sInfo[playerid][Name], 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) < 5) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{0xFF0000FF}Mindestens 5 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')", sInfo[playerid][Name], inputtext); //Das Query wird abgesendet und die playerid an OnUserLogin übergeben mysql_pquery(handle, query, "OnUserLogin", "d", playerid); return 1; } return 0; } stock MySQL_SetupConnection(ttl=4) { print("[MYSQL] Verbingungsaufbau........."); mysql_log(LOG_ALL); handle = mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_DBSE,MYSQL_PASS); //MYSQL Verbindungsprüfung mit neu verbinden!: if(mysql_errno(handle) != 0) { //Fehler bei der Verbindung mit der Datenban: if(ttl >1) { //Versuche erneute Verbindung aufzubauen print("[MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden."); printf("[MYSQL] Starte neuen Verbindungsaufbau versuch (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 überprü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; } public OnUserRegister(playerid) { //Der Spieler wurde in die Datenbank eingetragen, es wird die id ausgelsen sInfo[playerid][db_id] = cache_insert_id(); SendClientMessage(playerid,grün,"[Konto]Registration erfolgreich"); return 1; } public OnUserLogin(playerid) { //Query wurde ausgeführt und das Erbnis im Cache gespeichert if(cache_get_row_count() == 0) { //Der Spieler hat ein falsches Passwort eingegeben ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Einloggen","Bitte logge dich ein:\n{0xFF0000FF}Falsches Passwort!","Einloggen","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) sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",handle); sInfo[playerid][Adminlevel] = cache_get_field_content_int(0,"Adminlevel",handle); sInfo[playerid][Level] = cache_get_field_content_int(0,"Level",handle); sInfo[playerid][Money] = cache_get_field_content_int(0,"Money",handle); sInfo[playerid][Fraktion] = cache_get_field_content_int(0,"Fraktion",handle); sInfo[playerid][Rang] = cache_get_field_content_int(0,"Rang",handle); sInfo[playerid][Spawn] = cache_get_field_content_int(0,"Spawn",handle); } return 1; } stock SaveUserStats(playerid) { //Wen der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht if(!sInfo[playerid][eingeloggt])return 1; //Ansonsten speichere Sie ab new query[256]; mysql_format(handle,query,sizeof(query),"UPDATE Accounts Set Adminlevel = ´%d´,Level = ´%d´,Money = ´%d´,Fraktion = ´%d´,Rang = ´%d´,Spawn = ´%d´ WHERE id = ´%d´ ",sInfo[playerid][Adminlevel],sInfo[playerid][Level],sInfo[playerid][Money],sInfo[playerid][Fraktion],sInfo[playerid][Rang],sInfo[playerid][Spawn]); //Das Query wird abgesendet mysql_pquery(handle,query); return 1; }
-
es ist alles 1:1 aus dem Ordner wo alles geklappt hat.
@Jeffry bitte wenn du zeit hast kannst du mal drüber schauen!
-
Die Tabellen existieren alle