Hey,
ich habe mithilfe von einer Person ein Multiaccount-Erkennungssystem geschrieben, dennoch klappt dies nicht wie gewünscht :
Das sind dennoch 2 völlig unterschiedliche Spieler mit verschiedenen IPs.
Das System erfasst aus irgendeinem Grund alle Spieler die in der Datenbank existieren....
Aber es soll nur Leute erfassen die mit der gleicher IP registriert sind ( wurden ).
Hier der Code bei OnPlayerConnect :
Code
/*
new huan[256];
for(new i=0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(!IsPlayerConnected(i))continue;
if(IsPlayerNPC(i))continue;
if(strcmp(GetIP(playerid), GetIP(i), true))continue; // Wenn ip_address noch nicht auf dem Server gefunden wurde!
//ip_address stimmt mit bereits verbundener IP überein
format(huan,sizeof(huan),"[MULTIACCOUNT] %s(%d) (IP: %s) wurde vom System erkannt! Multiaccount mit der ID %d (Name: %s, IP: %s)", PlayerName(playerid), playerid, GetIP(playerid), i, PlayerName(i), GetIP(i));
SendClientMessageToAdmins(huan, GELB);
print(huan);
}
//Check für offline accounts
mysql_query("SELECT MAX(id) FROM spieler");
mysql_store_result();
new LAST_ID_ENTRY = mysql_fetch_int();
mysql_free_result();
for(new i=0; i<LAST_ID_ENTRY+1; i++)
{
if(mysql_CheckAccountID(i)==0)continue;
if(strcmp(GetIP(playerid), mysql_GetString_ID("spieler", "last_ip", "id", i), true))continue;
if(!strcmp(PlayerName(playerid), mysql_GetString_ID("spieler", "name", "id", i), true))continue;
format(huan,sizeof(huan),"[MULTIACCOUNT] Der Spieler %s betreibt Multiaccounting! IP: %s (Übereinstimmung mit %s)", PlayerName(playerid), GetIP(playerid), mysql_GetString_ID("spieler", "name", "id", i));
SendClientMessageToAdmins(huan, GELB);
print(huan);
}
*/
Alles anzeigen
Manueller Befehl dafür :
Code
ocmd:macheck(playerid, params[])
{
if(!IsAdmin(playerid,1))return noaccess
new pid;
if(sscanf(params,"u",pid))return SendClientMessage(playerid,WEIß,"Verwendung: /macheck (Player/ID)");
if(!PlayerOnline(pid))return SendClientMessage(playerid, GRAU, "Der Spieler ist nicht online!");
new bool:findings;
new huan[256];
for(new i=0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(i==pid)continue; // sich selbst ausblenden
if(!IsPlayerConnected(i))continue;
if(IsPlayerNPC(i))continue;
if(strcmp(GetIP(pid), GetIP(i), true))continue; // Wenn ip_address noch nicht auf dem Server gefunden wurde!
//ip_address stimmt mit bereits verbundener IP überein
format(huan,sizeof(huan),"[MULTIACCOUNT] %s(%d) (IP: %s) wurde vom System erkannt! Multiaccount mit der ID %d (Name: %s, IP: %s)", PlayerName(pid), pid, GetIP(pid), i, PlayerName(i), GetIP(i));
SendClientMessageToAdmins(huan, ROT);
findings=true;
}
//Check für offline accounts
mysql_query("SELECT MAX(id) FROM spieler");
mysql_store_result();
new LAST_ID_ENTRY = mysql_fetch_int();
mysql_free_result();
for(new i=0; i<LAST_ID_ENTRY+1; i++)
{
if(mysql_CheckAccountID(i)==0)continue;
if(strcmp(GetIP(pid), mysql_GetString_ID("spieler", "last_ip", "id", i), true))continue;
if(!strcmp(PlayerName(pid), mysql_GetString_ID("spieler", "name", "id", i), true))continue; // sich selbst ausblenden
format(huan,sizeof(huan),"[MULTIACCOUNT] Der Spieler %s betreibt Multiaccounting! IP: %s (Übereinstimmung mit %s)", PlayerName(pid), GetIP(pid), mysql_GetString_ID("spieler", "name", "id", i));
SendClientMessageToAdmins(huan, ROT);
findings=true;
}
if(!findings)return SendClientMessage(playerid, GRAU, "Keine Multiaccounts gefunden bzw. vorhanden.");
return 1;
}
Alles anzeigen