Das mache ich aber nicht, der läuft über einen Linux VServer
@Unbekannter Soldat
Ich möchte den gerne so "byte" ziehend lassen.
Kann aber gleich ein kleines Video aufnehmen
Das mache ich aber nicht, der läuft über einen Linux VServer
@Unbekannter Soldat
Ich möchte den gerne so "byte" ziehend lassen.
Kann aber gleich ein kleines Video aufnehmen
Guten Abend,
Mein Name lautet CIBERKILLER.
Da ich das überraschen finde, möchte ich diese Entdeckung mit euch teilen.
Und zwar habe ich einen unsauberen Quellcode in meinem Gamemode.
Dieser führt jede 4,5 Sekunden 5 Querys aus. Und füllt gleichzeitig 5 Variablen sowie 3 RCON - Commands.
Dazu kam es das mein Ping von 20 auf 350 anstieg. (Serverping auch, aber ich hatte in jedem ts, auch welche die garnichts mit dem Server zutunen hatten einen hohen ping)
Ich denke diese entdeckung hat noch niemand gemacht
Wegen einem Gameserver steigt der Ping an sich selber an!
Nach dem ich den samp03svr Prozess killte war wd alles <20
Mit freundlichen Grüßen,
CIBERKILLER
kleiner tipp es wird aufgerufen...
test wird geprintet, und so wie dus hast möchte ich es nicht, da er dann alles ändert aber keine veränderung da ist:
new query[48];
format(query,sizeof(query),"SELECT `Servername` FROM `Einstellungen` WHERE 1"), mysql_query(query),
mysql_store_result(),
mysql_fetch_row(query),
mysql_free_result();
if(strlen(query) != 0 && STimer == 255){
STimer=SetTimer("@UpdateServerSettings", 4500, true);
}
else STimer=255;
Wo genau bleibt dann der Sinn der PlayerTextDraws?
Arbeiten doch dann genau so wie die normalen.
Danke.
Naja, das kann du dann z.B für eine Playerausgabe benutzen was nur der Spieler selbst sehen soll.
Wenn es ein Globales TD wäre und darin daten ausgegeben werden, sagen wir TextDrawSetString. Dann wird das für jeden angezeigt der das Textdraw bereits sieht. Sollte aber nicht so sein,von daher haben die PlayTextDraw schon ihren sinn
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.");
}
}
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 ?