Hi, gibt es eine Möglichkeit die User zu bannen, die bei 3 /rcon login Versuchen failen?
Wenn es eine gäbe, bitte auch das Script hier im Thema posten.
Hi, gibt es eine Möglichkeit die User zu bannen, die bei 3 /rcon login Versuchen failen?
Wenn es eine gäbe, bitte auch das Script hier im Thema posten.
public OnRconLoginAttempt(ip[], password[], success)
{
if(!success)SetPVarInt(playerid,"login_fail",GetPVarInt(playerid,"login_fail") + 1);
if(GetPVarInt(playerid,"login_fail") >= 3)Ban(playerid);
return 1;
}
so in der Art dürfte es funktionieren
edit: fehler behoben
Ähm ich habe bereits eins Gefunden, aber ich weiß nicht, wie ich da einstelle, das das man da erst bei 3 Fehschlägen gebannt wird?
Hier das Scipt:
if(!success) //If the password was incorrect
{
printf("FAILED RCON LOGIN BY IP %s USING PASSWORD %s",ip, password);
new pip[16];
for(new i=0; i {
GetPlayerIp(i, pip, sizeof(pip));
if(!strcmp(ip, pip, true)) //If a player's IP is the IP that failed the login
{
SendClientMessage(i, 0xFFFFFFFF, "Wrong Password. Bye!"); //Send a message
Ban(i); //They are now banned.
}
}
}
return 1;
Ressourceschonend & Benutzerfreundlicher
#define MAX_RCON_WARNINGS (3)
public OnPlayerDisconnect(playerid, reason)
{
DeletePVar(playerid, "___warnings");
/// ....
}
public OnRconLoginAttempt(ip[], password[], success)
{
if(!success) {
new playerid = INVALID_PLAYER_ID, playerIP[16]; for(new li, mP = GetMaxPlayers(); li < mP; li++) { GetPlayerIp(li, playerIP, 16); if(!strcmp(ip, playerIP)) { playerid = li; break; } }
SetPVarInt(playerid, "___warnings", 1 + GetPVarInt(playerid, "___warnings"));
if(GetPVarInt(playerid, "___warnings") >= MAX_RCON_WARNINGS) Kick(playerid);
} else DeletePVar(playerid, "___warnings");
/// ...
}
Ich habe das jetzt genau so wie du geschreiben hast, aber bekomme 1 Error:
C:\Program Files (x86)\Rockstar Games\filterscripts\rcon.pwn(65) : warning 217: loose indentation
C:\Program Files (x86)\Rockstar Games\filterscripts\rcon.pwn(203) : error 017: undefined symbol "playerid"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Das gleiche wei bei Haxler's version
C:\Program Files (x86)\Rockstar Games\filterscripts\rcon1.pwn(197) : error 017: undefined symbol "playerid"
C:\Program Files (x86)\Rockstar Games\filterscripts\rcon1.pwn(198) : error 017: undefined symbol "playerid"
C:\Program Files (x86)\Rockstar Games\filterscripts\rcon1.pwn(198) : error 017: undefined symbol "playerid"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
3 Errors.
Benutze doch die neue Version von mir. (Lösche dein 2ten Beitrag, um Verwarnungen nicht zu kassieren)
Da bekomme ich aber auch einen Error, habe alles so wie du geschrieben hast gemacht:
C:\Program Files (x86)\Rockstar Games\filterscripts\rcon.pwn(204) : error 017: undefined symbol "playerid"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Entschuldigung, hier bitte:
#define MAX_RCON_WARNINGS (3)
public OnPlayerDisconnect(playerid, reason)
{
DeletePVar(playerid, "___warnings");
/// ....
}
public OnRconLoginAttempt(ip[], password[], success)
{
new playerid = INVALID_PLAYER_ID, playerIP[16]; for(new li, mP = GetMaxPlayers(); li < mP; li++) { GetPlayerIp(li, playerIP, 16); if(!strcmp(ip, playerIP)) { playerid = li; break; } }
if(!success) {
SetPVarInt(playerid, "___warnings", 1 + GetPVarInt(playerid, "___warnings"));
if(GetPVarInt(playerid, "___warnings") >= MAX_RCON_WARNINGS) Kick(playerid);
} else DeletePVar(playerid, "___warnings");
/// ...
}
Dankeschön, das hat mir sehr weitergeholfen
Dennoch habe ich eine Frage:
Kann dann auch so ne ClientMessageToAll kommen, wenn der spieler gekickt wird?
z.B: Der Spieler ___ wurde vom Server gekickt. [Grund: 3 Fehlgeschlagende Rcon-Login-Versuche]
Mit meinem Jetzigem Scipt gehts nicht.
public OnRconLoginAttempt(ip[], password[], success)
{
new Playername[128];
new playerid = INVALID_PLAYER_ID, playerIP[16]; for(new li, mP = GetMaxPlayers(); li < mP; li++) { GetPlayerIp(li, playerIP, 16); if(!strcmp(ip, playerIP)) { playerid = li; break; } }
if(!success) {
SetPVarInt(playerid, "___warnings", 1 + GetPVarInt(playerid, "___warnings"));
if(GetPVarInt(playerid, "___warnings") >= MAX_RCON_WARNINGS) Kick(playerid);
SendClientMessageToAll(0xFFFF00FF,"Der Spieler %s wurde vom Server gekickt. [Grund: 3 Fehlgeschlagende Rcon-Login-Versuche]",Playername);
} else DeletePVar(playerid, "___warnings");
/// ...
}
Der Spieler ist bereits gekickt, bevor du die Nachricht abschickst. Setze einfach SendClient... eine Zeile höher.
So kanns ja auch nicht gehen.
Bekomme jeden falls 2 Warnings. (eine Warning war vorher schon, ist aber harmlos)
Also einmal so das scipt:
public OnRconLoginAttempt(ip[], password[], success)
{
new Playername[128];
new playerid = INVALID_PLAYER_ID, playerIP[16]; for(new li, mP = GetMaxPlayers(); li < mP; li++) { GetPlayerIp(li, playerIP, 16); if(!strcmp(ip, playerIP)) { playerid = li; break; } }
if(!success) {
SetPVarInt(playerid, "___warnings", 1 + GetPVarInt(playerid, "___warnings"));
SendClientMessageToAll(0xFFFF00FF,"Der Spieler %s wurde vom Server gekickt. [Grund: 3 Fehlgeschlagende Rcon-Login-Versuche]",Playername);
if(GetPVarInt(playerid, "___warnings") >= MAX_RCON_WARNINGS) Kick(playerid);
} else DeletePVar(playerid, "___warnings");
/// ...
}
und die eine warning
C:\Program Files (x86)\Rockstar Games\filterscripts\rcon.pwn(203) : warning 202: number of arguments does not match definition
Anmerkung:
nachdem ich auf den server Connecte, schließt sich der Server. (Das schwarze Fenster)
Bitte Hilfe xD
Dies:
SendClientMessageToAll(0xFFFF00FF,"Der Spieler %s wurde vom Server gekickt. [Grund: 3 Fehlgeschlagende Rcon-Login-Versuche]",Playername);
mit Folgendem ersetzen:
new msg[162];
GetPlayerName(playerid, msg, MAX_PLAYER_NAME);
format(msg, sizeof(msg), "{333333}Der Spieler %s wurde vom Server gekickt. {FF0000}[Grund: 3 Fehlgeschlagende Rcon-Login-Versuche]", msg);
SendClientMessageToAll(0, msg);
Das verstehe ich irgendwie nicht.
Könntest du vielleicht bitte das Gesamte Script hier richtig posten?
Weil ich das mit dem Austauschen irgendwie nicht verstehe.
Danke im Voraus
#define MAX_RCON_WARNINGS (3)
public OnPlayerDisconnect(playerid, reason)
{
DeletePVar(playerid, "___warnings");
/// ....
}
public OnRconLoginAttempt(ip[], password[], success)
{
new playerid = INVALID_PLAYER_ID, playerIP[16]; for(new li, mP = GetMaxPlayers(); li < mP; li++) { GetPlayerIp(li, playerIP, 16); if(!strcmp(ip, playerIP)) { playerid = li; break; } }
if(!success) {
SetPVarInt(playerid, "___warnings", 1 + GetPVarInt(playerid, "___warnings"));
if(GetPVarInt(playerid, "___warnings") >= MAX_RCON_WARNINGS) {
new msg[162];
GetPlayerName(playerid, msg, MAX_PLAYER_NAME);
format(msg, sizeof(msg), "{333333}Der Spieler %s wurde vom Server gekickt. {FF0000}[Grund: 3 Fehlgeschlagende Rcon-Login- Versuche]", msg);
SendClientMessageToAll(0, msg);
Kick(playerid);
}
} else DeletePVar(playerid, "___warnings");
/// ...
}
Leider Gibt es noch ein Problem:
Auch beim 1. Fail kommt dann diese MessageForAll.
Hab mein Gehirn etwas zu sehr in Ferienstimmung versetzt. Nimm den Code vom letzten Code-Beitrag, der ist auch dann richtig.
Saaauuber abreit danke !
Nur noch eine Frage:
Wie kann ich da die Farbe ändern? ist iwie anders als der SA:MP Colorpicker.
Guck doch im Code nach:
{333333}Der Spieler %s w
Wenn ich den Code so eingebe ist die schrift dann total verpixelt und Schwarz:
"{0xFFFF00FF}Der Spieler %s w..... (0xFFFF00FF ist die FarbID für Geld im SA:MP ColorPicker)
anstatt
{333333}Der Spieler %s w
wie kann ich da jetzt die Farbe in der Nachricht ändern?
EDIT: Es ist HTML, weiß wie ich das mache dnake schön für alles du solltest mal VIP werden oda so xD. Wo ist die Thanks Funk.? Würde dir 1000 Thanks geben