Ich hatte zuvor etwas erstetzt, dadurch hat es versehentlich das %s dort mit hingesetzt.
Trotzdem Danke für deine Hilfe.
Beiträge von German_ScripterHD
-
-
Habe nochmal ein kleines Problemchen, MySQL läd Daten nicht richtig aus der Datenbank.
C
Alles anzeigenpublic OnGameModeInit(){ MySQL_SetupConnection(); MySQL_LoadServerData(); return 1; } stock MySQL_LoadServerData(){ mysql_pquery(dbhandle, "SELECT * FROM `server_data` WHERE 1", "MySQL_@LoadServerData"); return 1; } Function MySQL_@LoadServerData(){ new rows; cache_get_row_count(rows); if(!rows)return printf("[SERVER DEBUG] Keine MySQL Eintraege! (Function MySQL_@LoadServerData)"); cache_get_value_name(0, "sName: %s", sData[sName]); cache_get_value_name(0, "sCreateDate: %s", sData[sCreateDate]); cache_get_value_name(0, "sDeveloper: %s", sData[sDeveloper]); cache_get_value_name(0, "sVersion: %s", sData[sVersion]); cache_get_value_name(0, "sGamemodeText: %s", sData[sGamemodeText]); cache_get_value_name(0, "sRconPassword: %s", sData[sRconPassword]); cache_get_value_name(0, "sLanguage: %s", sData[sLanguage]); cache_get_value_name(0, "sMaxNpcs: %s", sData[sMaxNpcs]); cache_get_value_name(0, "sMaxPlayers: %s", sData[sMaxPlayers]); cache_get_value_name_int(0, "sInt: %i", sData[sInt]); printf("sName: %s", sData[sName]); printf("sCreateDate: %s", sData[sCreateDate]); printf("sDeveloper: %s", sData[sDeveloper]); printf("sVersion: %s", sData[sVersion]); printf("sGamemodeText: %s", sData[sGamemodeText]); printf("sRconPassword: %s", sData[sRconPassword]); printf("sLanguage: %s", sData[sLanguage]); printf("sMaxNpcs: %s", sData[sMaxNpcs]); printf("sMaxPlayers: %s", sData[sMaxPlayers]); printf("sInt: %i",sData[sInt]); return 1; }
MySQL Datenbank Screen:
server_log.txt: -
Super, da hätte ich ja lange nach dem Fehler schauen können
-
Teste es mal so:
C
Alles anzeigendcmd_motor(playerid, params[]) { #pragma unused params if(GetPlayerState(playerid !=PLAYER_STATE_DRIVER)) return SendClientMessage(playerid,ROT,"Du bist nicht der Fahrer eines Fahrzeuges!"); new vID=GetPlayerVehicleID(playerid), tmp_engine, tmp_lights, tmp_alarms, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective; //Motor An/Aus GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarms, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); if(tmp_engine==1) { tmp_engine = 0; tmp_lights = 0; } else { tmp_engine = 1; } SetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarms, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); return 1; } dcmd_licht(playerid, params[]) { #pragma unused params if(GetPlayerState(playerid !=PLAYER_STATE_DRIVER)) return SendClientMessage(playerid,ROT,"Du bist nicht der Fahrer eines Fahrzeuges!"); new vID=GetPlayerVehicleID(playerid), tmp_engine, tmp_lights, tmp_alarms, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective; //Licht An/Aus GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarms, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); if(tmp_lights==1) { tmp_lights = 0; } else { tmp_lights = 1; } SetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarms, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective); return 1; }
-
MySQL Log gibt es leider keine, finde ich selber merkwürdig.
Version: R41Habe es zu erst mit meiner Funktion getestet...
C
Alles anzeigen---------- Loaded log file: "server_log.txt". ---------- SA-MP Dedicated Server ---------------------- v0.3.7-R2, (C)2005-2015 SA-MP Team [12:07:27] filterscripts = "" (string) [12:07:27] [12:07:27] Server Plugins [12:07:27] -------------- [12:07:27] Loading plugin: mysql [12:07:32] >> plugin.mysql: R41 successfully loaded. [12:07:32] Loaded. [12:07:32] Loaded 1 plugins. [12:07:32] [12:07:32] Filterscripts [12:07:32] --------------- [12:07:32] Loaded 0 filterscripts. [12:07:32] [SERVER DEBUG] MySQL versucht die 2.Verbindung herzustellen.
C
Alles anzeigenstock MySQL_SetupConnection(){ dbhandle = mysql_connect(MYSQL_HOST_LOCALHOST,MYSQL_USER_LOCALHOST,MYSQL_DBSE_LOCALHOST,MYSQL_PASS_LOCALHOST); if(mysql_errno(dbhandle) == 0){ print("[SERVER DEBUG] MySQL Verbindung wurde erfolgreich aufgebaut."); return 1; } else{ print("[SERVER DEBUG] MySQL versucht die 2.Verbindung herzustellen."); dbhandle = mysql_connect(MYSQL_HOST_SERVER,MYSQL_USER_SERVER,MYSQL_DBSE_SERVER,MYSQL_PASS_SERVER); if(mysql_errno(dbhandle) == 0){ print("[SERVER DEBUG] MySQL Verbindung wurde erfolgreich aufgebaut. (2)"); return 1; } else{ print("[SERVER DEBUG] MySQL keine der Verbindungen hat funktionert, bitte Daten anpassen."); SendRconCommand("exit"); return 1; } } }
Danach habe ich es mit deiner MySQL_SetupConnection getestet:
C
Alles anzeigen---------- Loaded log file: "server_log.txt". ---------- SA-MP Dedicated Server ---------------------- v0.3.7-R2, (C)2005-2015 SA-MP Team [12:08:59] filterscripts = "" (string) [12:08:59] [12:08:59] Server Plugins [12:08:59] -------------- [12:08:59] Loading plugin: mysql [12:08:59] >> plugin.mysql: R41 successfully loaded. [12:08:59] Loaded. [12:08:59] Loaded 1 plugins. [12:08:59] [12:08:59] Filterscripts [12:08:59] --------------- [12:08:59] Loaded 0 filterscripts. [12:08:59] [MySQL] Verbindungsaufbau... [12:08:59] [MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden. [12:08:59] [MySQL] Starte neuen Verbindungsversuch (TTL: 2). [12:08:59] [MySQL] Verbindungsaufbau... [12:08:59] [MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden. [12:08:59] [MySQL] Starte neuen Verbindungsversuch (TTL: 1). [12:08:59] [MySQL] Verbindungsaufbau... [12:08:59] [MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden. [12:08:59] [MySQL] Bitte prüfen Sie die Verbindungsdaten. [12:09:00] [MySQL] Der Server wird heruntergefahren. [12:09:00] Number of vehicle models: 0 [12:09:00] --- Server Shutting Down. [12:09:00] plugin.mysql: Unloading plugin... [12:09:00] plugin.mysql: Plugin unloaded.
C
Alles anzeigenstock MySQL_SetupConnection(ttl = 3) { print("[MySQL] Verbindungsaufbau..."); dbhandle = mysql_connect(MYSQL_HOST_LOCALHOST,MYSQL_USER_LOCALHOST,MYSQL_DBSE_LOCALHOST,MYSQL_PASS_LOCALHOST); if(mysql_errno(dbhandle) != 0){ if(ttl > 1){ 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{ 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", _:dbhandle); return 1; }
-
Hallo,
Wie in meiner Überschrift bereits zu erkennen ist, stellt MySQL keine Verbindung zum Localhost her, an was kann das liegen?
Die Daten stimmen eigentlich.C
Alles anzeigen#define MYSQL_HOST_LOCALHOST "127.0.0.1" #define MYSQL_USER_LOCALHOST "root" #define MYSQL_PASS_LOCALHOST "" #define MYSQL_DBSE_LOCALHOST "db_v2" //habe es auch so getestet: #define MYSQL_HOST_LOCALHOST "localhost" #define MYSQL_USER_LOCALHOST "root" #define MYSQL_PASS_LOCALHOST "" #define MYSQL_DBSE_LOCALHOST "db_v2"
-
Danke, klappt
-
Wenn du so fragst, nein. Aber wie lautet der MySQL Tag?
-
Hallo,
Ich bin gerade dabei mein Script auf die MySQL Version R41 zu Updaten,
aber bei der Verbindungfunktion kommen Fehler auf, jedoch weiß ich nicht an was das liegt.Verbindungsfunktion:
stock MySQL_SetupConnection(){
dbhandle = mysql_connect(MYSQL_HOST_LOCALHOST,MYSQL_USER_LOCALHOST,MYSQL_DBSE_LOCALHOST,MYSQL_PASS_LOCALHOST);
if(mysql_errno(dbhandle) == 0){
print("["SERVER_DEBUG"] MySQL Verbindung wurde erfolgreich aufgebaut.");
return 1;
}
else{
print("["SERVER_DEBUG"] MySQL versucht die 2.Verbindung herzustellen.");
dbhandle = mysql_connect(MYSQL_HOST_SERVER,MYSQL_USER_SERVER,MYSQL_DBSE_SERVER,MYSQL_PASS_SERVER);
if(mysql_errno(dbhandle) == 0){
print("["SERVER_DEBUG"] MySQL Verbindung wurde erfolgreich aufgebaut. (2)");
return 1;
}
else{
print("["SERVER_DEBUG"] MySQL keine der Verbindungen hat funktionert, bitte Daten anpassen.");
SendRconCommand("exit");
return 1;
}
}
}
Fehler:
warning 213: tag mismatch (Zeile 2)
warning 213: tag mismatch (Zeile 3)
warning 213: tag mismatch (Zeile 9)
warning 213: tag mismatch (Zeile 10) -
Du kannst es einfach so schreiben:
Cstock SendFraktionMessage(fraktion, Farbe, Nachricht[128]) { for(new i=0; i<MAX_PLAYERS; i++) { if(!IsPlayerConnected(i))continue; if(pInfo[i][pFraktion] != fraktion)continue; SendClientMessage(i, Farbe, Nachricht); } return 1; }
Schreibst du jedoch das return in die Schleife, sprich so:Cstock SendFraktionMessage(fraktion, Farbe, Nachricht[128]) { for(new i=0; i<MAX_PLAYERS; i++) { if(!IsPlayerConnected(i))continue; if(pInfo[i][pFraktion] != fraktion)continue; SendClientMessage(i, Farbe, Nachricht); return 1; } }
So wird die Schleife direkt nach dem ersten "hochzählen" durch das return beendet.
-
Das Internet hilft in den meisten Fällen weiter Klick Hier
-
Ich habe mal eben eine kleine Funktion geschrieben damit man for Schleifen ganz einfach und schnell schreiben kann.
C#define LOOP(%0,%1) for(new %1 = 0; %1 < %0; %1++) #define LOOPEx(%2,%0,%1) for(new %1 = %2; %1 < %0; %1++)
Sollte es diese Funktion schon geben, dann ist dies nur eine Ergänzung. -
Sehr gut erklärt.
Ich danke dir für deine Mühe -
Hallo,
Gerade habe ich mir mal ein Beispiel Array erstellt, das sieht so aus:
C
Alles anzeigennew array[10][3] = { {"Das",234.012,111}, {"ist",354.012,222}, {"ein",213.012,333}, {"Bespiel",221.012,444}, {"Array.",861.012,555}, {"...",55.012,666}, {"xxx",36.012,777}, {"aaa",4523.012,888}, {"bbb",872.012,999}, {"ccc",7.012,101} };
Nun möchte ich gerne die Hälfte der Einträge in dem Array (in diesem Fall 5) via Random in die MySQL Datenbank eintragen.
Wie kann ich das am besten verwirklichen? -
Das ganze kannst du in einem Timer machen, du frägst einfach ab wie viel Meter/Kilometer das Fahrzeug von der letzten bis zur neuen Position genötigt hat und dann kannste das ganze in deiner Variable updaten.
MfG
-
Du solltest sowas in ein bereits bestehenden Timer packen, welcher ein Interval von 1 Sekunde hat, der Grund dafür liegt darin das die Timer bei größeren Intervallen sehr inakurat ist. Du kannst dann via gettime dann die aktuelle Uhrzeit auslesen:
wiki.sa-mp.com/wiki/Gettime
sollte Houer 24 zurück geben kannst du deinen code ausführen
Diese Idee hatte ich auch schon, ich werde es jetzt auch so machen
-
Soll der Timer immer um genau 24 Uhr ausgeführt werden?
Also der Timer soll bei OnGameModeInit erstellt werden und dann immer um 24 Uhr ausgeführt werden.
-
Hallo,
Ich komme momentan nicht weiter, eigentlich wollte ich einen Timer bei OnGameModeInit erstellen der dann ab 24 Uhr aufgerufen wird.
Sprich, ich müsste bei OnGameModeInit die Uhrzeit abrufen und danach ausrechnen wie lange es noch bis 24 Uhr ist, das ganze müsste ich dann noch in Millisekunden umrechnen, damit ich den Timer starten kann. Jedoch habe ich keine richtige Idee wie ich das ganze verwirklichen kann...MfG
-
Danke Jeffy, ich habe es mit deinem Code versucht, jedoch funktionierte das nicht.
Aber ich habe meinen Fehler selbst gefunden, es lagt an meiner GetFreeItemID Funktion.MfG
-
Wie sieht der Code jetzt aus?
Meinst du von LoadItems?
C
Alles anzeigenFunction LoadItems(){ new num_fields,num_rows; cache_get_data(num_rows,num_fields); if(!num_rows)return print("["SERVER_DEBUG"] Es konnten keine Items geladen werden (rows = 0)"); LOOP(num_rows, i){ new id = GetFreeItemID(), str[32]; iData[id][itemX] = cache_get_field_content_float(i, "itemX", dbhandle); iData[id][itemY] = cache_get_field_content_float(i, "itemY", dbhandle); iData[id][itemZ] = cache_get_field_content_float(i, "itemZ", dbhandle); if(iData[id][itemX] == 0 && iData[id][itemY] == 0 && iData[id][itemZ] == 0)continue; iData[id][itemInteriorid] = cache_get_field_content_int(i, "itemInteriorid", dbhandle); iData[id][itemID] = cache_get_field_content_int(i, "itemID", dbhandle); iData[id][itemNumber] = cache_get_field_content_int(i, "itemNumber", dbhandle); iData[id][itemDBID] = cache_get_field_content_int(i, "itemDBID", dbhandle); format(str,sizeof str,"%s(%d)", GetItemName(iData[id][itemID]), iData[id][itemNumber]); iData[ExistItems][itemTextLabel] = CreateDynamic3DTextLabel(str, COLOR_WHITE, iData[id][itemX], iData[id][itemY], iData[id][itemZ], 20.0, _, _, _, _, iData[id][itemInteriorid]); iData[ExistItems][itemPickup] = CreateDynamicPickup(GetItemObjectID(iData[id][itemID]), 1, iData[id][itemX], iData[id][itemY], iData[id][itemZ], _, iData[id][itemInteriorid]); ExistItems++; printf("Item: %s / Itemid: %d /Item Anzahl: %d - wurde geladen.",GetItemName(iData[id][itemID]),iData[id][itemID],iData[id][itemNumber]); } return 1; }