Ich habe in der Tabelle Einstellungen nur ein Row(Zeile).
Hör zu das System ist so aufgebaut:
Es wird alles ausgelesen was in der Datenbank steht und einem string zugewiesen.
Enspricht der der Hostname, frisch ausgelesen nicht mit dem String Server[0] überein, soll sich das ganze updaten.
Hier mal der Dialog an sich!
if(dialogid == DIALOG_SEINTELLUNGEN)
{
if(!response)return 1;
//Servername: %s\nServerversion: %s\nServerrelease: %s\nServerkarte: %s\nServermode: %s\nSpieler: %i/%i\nWhitelist: %s
switch(listitem)
{
case 0:ShowPlayerDialog(playerid, DIALOG_SEINSTELLUNGEN_HOST, DIALOG_STYLE_INPUT, ".:Servername ändern:.", "{FFFFFF}Gebe nun den neuen Servernamen ein!", "Einstellen", "");
case 1:ShowPlayerDialog(playerid, DIALOG_SEINSTELLUNGEN_VERS, DIALOG_STYLE_INPUT, ".:Serverversion ändern:.", "{FFFFFF}Gebe nun die neue Serverversion ein!", "Einstellen", "");
case 2:ShowPlayerDialog(playerid, DIALOG_SEINSTELLUNGEN_REAL, DIALOG_STYLE_INPUT, ".:Serverrelease ändern:.", "{FFFFFF}Gebe nun den neuen Serverrelease ein!", "Einstellen", "");
case 3:ShowPlayerDialog(playerid, DIALOG_SEINSTELLUNGEN_MAPS, DIALOG_STYLE_INPUT, ".:Serverkarte ändern:.", "{FFFFFF}Gebe nun die neue Serverkarte an!", "Einstellen", "");
case 4:ShowPlayerDialog(playerid, DIALOG_SEINSTELLUNGEN_MODE, DIALOG_STYLE_INPUT, ".:Servermode ändern:.", "{FFFFFF}Gebe nun den neuen Servermode ein!", "Einstellen", "");
case 6:ShowPlayerDialog(playerid, DIALOG_SEINSTELLUNGEN_WHIT, DIALOG_STYLE_MSGBOX, ".:Serverwhitelist ändern:.", "{FFFFFF}Gebe nun ob die Whitelist vom Server aktiviert sein soll!", "Aktiviert", "Deaktiviert");
}
}
if(dialogid == DIALOG_SEINSTELLUNGEN_HOST)
{
if(!response)return 1;
if(!strlen(inputtext))return 1;
mysql_real_escape_string(inputtext, inputtext);
new string[60], query[65];
format(query,sizeof(query),"UPDATE `Einstellungen` SET `Servername`='%s' WHERE 1", inputtext);
mysql_query(query);
ClearChat(playerid), PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0);
format(string,sizeof(string), "Du hast den Servername auf [%s] umgestellt.", inputtext);
SendClientMessage(playerid, Weis, string);
}
if(dialogid == DIALOG_SEINSTELLUNGEN_VERS)
{
if(!response)return 1;
if(!strlen(inputtext))return 1;
mysql_real_escape_string(inputtext, inputtext);
new string[60], query[65];
format(query,sizeof(query),"UPDATE `Einstellungen` SET `Serverversion`='%s' WHERE 1", inputtext);
mysql_query(query);
ClearChat(playerid), PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0);
format(string,sizeof(string), "Du hast die Serverversion auf [%s] umgestellt.", inputtext);
SendClientMessage(playerid, Weis, string);
}
if(dialogid == DIALOG_SEINSTELLUNGEN_REAL)
{
if(!response)return 1;
if(!strlen(inputtext))return 1;
mysql_real_escape_string(inputtext, inputtext);
new string[60], query[65];
format(query,sizeof(query),"UPDATE `Einstellungen` SET `Serverrelease`='%s' WHERE 1", inputtext);
mysql_query(query);
ClearChat(playerid), PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0);
format(string,sizeof(string), "Du hast den Serverrelease auf [%s] umgestellt.", inputtext);
SendClientMessage(playerid, Weis, string);
}
if(dialogid == DIALOG_SEINSTELLUNGEN_MAPS)
{
if(!response)return 1;
if(!strlen(inputtext))return 1;
mysql_real_escape_string(inputtext, inputtext);
new string[60], query[65];
format(query,sizeof(query),"UPDATE `Einstellungen` SET `Serverkarte`='%s' WHERE 1", inputtext);
mysql_query(query);
ClearChat(playerid), PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0);
format(string,sizeof(string), "Du hast die Serverkarte auf [%s] umgestellt.", inputtext);
SendClientMessage(playerid, Weis, string);
}
if(dialogid == DIALOG_SEINSTELLUNGEN_MODE)
{
if(!response)return 1;
if(!strlen(inputtext))return 1;
mysql_real_escape_string(inputtext, inputtext);
new string[60], query[65];
format(query,sizeof(query),"UPDATE `Einstellungen` SET `Servermode`='%s' WHERE 1", inputtext);
mysql_query(query);
ClearChat(playerid), PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0);
format(string,sizeof(string), "Du hast die Servermode auf [%s] umgestellt.", inputtext);
SendClientMessage(playerid, Weis, string);
}
if(dialogid == DIALOG_SEINSTELLUNGEN_WHIT)
{
new query[65];
format(query,sizeof(query),"UPDATE `Einstellungen` SET `Whitelist`=%i WHERE 1", response);
mysql_query(query);
ClearChat(playerid), PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0);
switch(response)
{
case 0:SendClientMessage(playerid,Weis,"Du hast die Whitelist Deaktiviert.");
case 1:SendClientMessage(playerid,Weis,"Du hast die Whitelist Aktiviert.");
}
}
Beiträge von Kasakow
-
-
Guten Tag,
Mein Name lautet CIBERKILLER.
Und zwar brauche ich mal eure Hilfe.
Ich habe ein Dynamisches Konfigurationssystem in meinem Gamemode integriert.
Es wird alles aus der Datenbank ausgelesen, aber es steht nichts im Dialog und der z.B Servername wird auch nicht gesetzt!Quellcode:
@UpdateServerSettings(); @UpdateServerSettings(){
print("test");
new tmp_var[100][100], str[100];
mysql_query("SELECT * FROM `Einstellungen` WHERE 1");
mysql_store_result();
while(mysql_retrieve_row())
{
mysql_fetch_field_row(tmp_var[0], "Servername");
mysql_fetch_field_row(tmp_var[1], "Serverversion");
mysql_fetch_field_row(tmp_var[2], "Serverrelease");
mysql_fetch_field_row(tmp_var[3], "Serverkarte");
mysql_fetch_field_row(tmp_var[4], "Servermode");
}
if(strcmp(tmp_var[1], Server[1], false)){
format(Server[1], 100, "%s", tmp_var[1]);
}
if(strcmp(tmp_var[2], Server[2], false)){
format(Server[2], 100, "%s", tmp_var[2]);
}
if(strcmp(tmp_var[0], Server[0], false)){
format(Server[0], 100, "%s %s%s ", tmp_var[0], tmp_var[1], tmp_var[2]);
format(str, 100, "hostname %s", Server[0]), SendRconCommand(str);
}
if(strcmp(tmp_var[3], Server[3], false)){
format(Server[3], 100, "%s", tmp_var[3]);
format(str, 100, "mapname %s", Server[3]), SendRconCommand(str);
}
if(strcmp(tmp_var[4], Server[4], false)){
format(Server[4], 100, "%s", tmp_var[4]);
format(str, 100, "gamemodetext %s", Server[4]), SendRconCommand(str);
}
mysql_free_result();
}command(seinstellungen, playerid, params[])
{
if(sStats[playerid][Eingeloggt]==0)return SendClientMessage(playerid, Rot, "Du bist nicht Eingeloggt!");
if(sStats[playerid][sADuty] == 0)return SendClientMessage(playerid, Rot, "Du bist nicht im Dienst!");
if(sStats[playerid][sAdmin] < 7)return SendClientMessage(playerid, Rot, "Du bist entweder kein Administrator oder dein Rang ist zu niedrig!");
new count[2], str[12], result, string[150]; count[0] = GetPlayers(), count[1] = GetServerVarAsInt("maxplayers");
mysql_query("SELECT `Whitelist` FROM `Einstellungen`");
mysql_store_result();
result=mysql_fetch_int();
mysql_free_result();
if(!result){str="Deaktiviert";} else str="Aktiviert";
format(string, sizeof(string), "Servername: %s\nServerversion: %s\nServerrelease: %s\nServerkarte: %s\nServermode: %s\nSpieler: %i/%i\nWhitelist: %s", Server[0], Server[1], Server[2], Server[3], Server[4], count[0], count[1], str);
ShowPlayerDialog(playerid, DIALOG_SEINTELLUNGEN, DIALOG_STYLE_LIST, ".:Server Einstellungen:.", string, "Auswählen", "Schließen");
return 1;
}Whitelist Funktioniert einwandfrei!
Ich lass die Variable so erstellen!
new Server[10][100];Mit freundlichen Grüßen,
CIBERKILLER
-
Also ich sehe in diesem Quellcode kein Klammerfehler!
-
Naja für was verwendest du denn meistens sscanf ?
-
Such mal mit strg + f nach sscanf_...in jedem Include was includiert ist!
-
Ja die Funktion entfernen da sie doppelt enthalten ist..
-
Ja ich habe dafür ein Tool, einmal bitte den Anhang runterladen.
-
Er zeigt dir das Funktion schon existiert....
-
Also ich habe zuerst einmal mit Anfänger Videos von MrMonatTutorials die Birne vollgestopft, dann habe ich mich hier registriert... Irgentwann gab es mal einen Typen Namens T4125Gamer der setze sich mit mir ein Jahr lang hin und lernte.
Naja für dich würde ich die WIKI empfehlen wiki.sa-mp.com -
Benutz mal die Funktion GetPVarString
Achso klammerfehler: http://germanrsbot.square7.de/Klammerfehler/?Seite=profile -
Eh warum nicht gleich cache und threaded mit R39-2 lul
Weil ich das nicht so argh mag -
So habe das ganze mal auf meinen Linux VServer gelegt, sowie db gewechselt, klappt nun mit while & mysql_retrieve_row wunderbar

-
Ich weis was sscanf ist und ich verwende es normalerweise für Parameter. (/kick [param1] [param2])
Müsste nur erklärt bekommen wie das genau Funktioniert
-
Lagshot ist ja nicht genau auf Körper schießen..
Kann mir mal jemand erklären was passiert wenn ich es auf 2 stelle?
Ich weis, ich meinte es ist nun so wie gewollt

-
Wie soll ich das mit sscanf machen habe dies noch nicht gemacht.
sscanf(params,"iiis[lenght]", var1, var2....); oder wie geht das ?
-
-
Dann soll ich das ganze also sozusagen "splitten" ? Weil da ein | herinnen ist? und nach & nach nach row das zeug auslesen lassen oder wie ?
Also Adminlevel liest er allgemein aus.. egal welche zahl -
Naja das komische ist, Adminlevel lädt er
Aber alles andere nicht -
-
Ja mache das mal, wird bestimmt gut die Version 3.4