Hey,
ich habe echt keine Ahnung von Funktionen wie GetWeaponData.
Ich wollte fragen ob jemand eventuell helfen könnte, wie ich eine Abfrage mache ob ein Spieler 1000 Schlagringe hat..
Gruß,
Drai
Hey,
ich habe echt keine Ahnung von Funktionen wie GetWeaponData.
Ich wollte fragen ob jemand eventuell helfen könnte, wie ich eine Abfrage mache ob ein Spieler 1000 Schlagringe hat..
Gruß,
Drai
Danke dir vielmals, hat geklappt.
Ok hat mit manuell eintragen funktioniert.
Ich habe mysql_SetString beim Erstellen verwendet, aber nicht beim Laden des Account ( stock LoadAccount ).
Klappt jetzt wunderbar aber, hätte da noch eine Frage.
Wie könnte ich dies in einem Dialog in einer Liste darstellen, ist mir etwas zu kompliziert.
Also geprintet wird :
[18:41:50] [MULTIACCOUNT] Der Spieler Pagno betreibt Multiaccounting! IP: 46.5.0.248 (Übereinstimmung mit lolz)
Datenbank Spieler Tabelle :
Bei Pagno ( mit dem ich den Befehl ausführe, auf mich selber , sprich auf "playerid) ist ein IP-Eintrag vorhanden in der Spalte.
Bei lolz ebenfalls der auch erkannt wird.
Allerdings ist bei "mfg" welches auch von mir heute erstellt wurde, kein IP-Eintrag, wieso auch immer.
Gemacht,
leider kommt trotzdem nur 1x Clientmessage.
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];
//Check für offline accounts
new query[256];
format(query, sizeof(query), "SELECT id, name FROM spieler WHERE last_ip = '%s' AND name != '%s' ORDER BY id DESC;", GetIP(pid), PlayerName(playerid));
mysql_query(query);
mysql_store_result();
new rows = mysql_num_rows(), name[MAX_PLAYER_NAME];
for(new i=0; i<rows; i++)
{
mysql_retrieve_row();
/*
mysql_fetch_field_row(huan,"id"); id = strval(huan);
*/
mysql_fetch_field_row(name,"name");
format(huan,sizeof(huan),"[MULTIACCOUNT] Der Spieler %s betreibt Multiaccounting! IP: %s (Übereinstimmung mit %s)", PlayerName(pid), GetIP(pid), name);
SendClientMessageToAdmins(huan, GELB);
print(huan);
findings=true;
}
mysql_free_result();
if(!findings)return SendClientMessage(playerid, GRAU, "Keine Multiaccounts gefunden bzw. vorhanden.");
return 1;
}
Alles anzeigen
Ok hat teilweise geklappt, die Clientmessage wurde ausgegeben, aber ich habe jetzt mal einen 3. Account erstellt, aber der wird leider nicht ausgegeben.
Also ich habe jetzt 3 Accounts, wenn ich /macheck verwende auf mich, kommt zwar "Pagno betreibt Multiaccounting mit lolz", aber da sollte doch noch eine Clientmessage kommen dass Pagno noch Multiaccounting mit "test" betreibt.
Also wäre es so richtig ? :
new query[256];
format(query, sizeof(query), "SELECT id, name FROM spieler WHERE last_ip = '%s' AND name != '%s' ORDER BY id DESC;", GetIP(pid), PlayerName(pid));
mysql_query(query);
mysql_store_result();
new rows = mysql_num_rows(), id, name[MAX_PLAYER_NAME];
for(new i=0; i<rows; i++)
{
mysql_retrieve_row();
mysql_fetch_field_row(huan,"id"); id = strval(huan);
mysql_fetch_field_row(name,"name");
format(huan,sizeof(huan),"[MULTIACCOUNT] Der Spieler %s betreibt Multiaccounting! IP: %s (Übereinstimmung mit %s (ID: %d))", PlayerName(pid), GetIP(pid), name, id);
SendClientMessageToAdmins(huan, GELB);
print(huan);
findings=true;
}
mysql_free_result();
if(!findings)return SendClientMessage(playerid, GRAU, "Keine Multiaccounts gefunden bzw. vorhanden.");
Alles anzeigen
Hey,
habe die Online-Prüfung weggelassen, sondern lasse jetzt durch /macheck (pid) jetzt die Offline-Accounts bzw. die Accounts in der Datenbank finden, aber leider klappt das nicht so ganz.
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];
//Check für offline accounts
new query[256];
format(query, sizeof(query), "SELECT id, name FROM spieler WHERE last_ip = '%s' AND name != '%s' ORDER BY id DESC;", PlayerName(playerid), GetIP(playerid));
mysql_query(query);
mysql_store_result();
new rows = mysql_num_rows(), id, name[MAX_PLAYER_NAME];
for(new i=0; i<rows; i++)
{
mysql_retrieve_row();
mysql_fetch_field_row(huan,"id"); id = strval(huan);
mysql_fetch_field_row(name,"name");
format(huan,sizeof(huan),"[MULTIACCOUNT] Der Spieler %s betreibt Multiaccounting! IP: %s (Übereinstimmung mit %s (ID: %d))", PlayerName(playerid), GetIP(playerid), name, id);
SendClientMessageToAdmins(huan, GELB);
print(huan);
findings=true;
}
mysql_free_result();
if(!findings)return SendClientMessage(playerid, GRAU, "Keine Multiaccounts gefunden bzw. vorhanden.");
return 1;
}
Alles anzeigen
Es kommt einfach immer keine Multiaccounts gefunden, obwohl ich 2 Accounts in der Datenbank habe, mit der ich mit der gleichen IP registriert habe.
Es kommt immeronch keine Multiaccounts vorhanden.
//
Ich habe bemerkt dass nicht alle User in der Datenbank eine IP zugewiesen bekommen haben in der Spalte last_ip.
Benutze ich wenn ich den Account erstelle (Stock).
Also mein ganzer Befehl sieht so aus :
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
new query[256];
format(query, sizeof(query), "SELECT id, name FROM spieler WHERE last_ip = '%s' AND name != '%s' ORDER BY id DESC;", PlayerName(playerid), GetIP(playerid));
mysql_query(query);
mysql_store_result();
new rows = mysql_num_rows(), id, name[MAX_PLAYER_NAME];
for(new i=0; i<rows; i++)
{
mysql_retrieve_row();
mysql_fetch_field_row(huan,"id"); id = strval(huan);
mysql_fetch_field_row(name,"name");
format(huan,sizeof(huan),"[MULTIACCOUNT] Der Spieler %s betreibt Multiaccounting! IP: %s (Übereinstimmung mit %s (ID: %d))", PlayerName(playerid), GetIP(playerid), name, id);
SendClientMessageToAdmins(huan, GELB);
print(huan);
findings=true;
}
mysql_free_result();
if(!findings)return SendClientMessage(playerid, GRAU, "Keine Multiaccounts gefunden bzw. vorhanden.");
return 1;
}
Alles anzeigen
Alles Klar danke dir,
hat geklappt, ich versuche es mal wenn ich die Zeit dafür finde bzw. ein Tester online ist.
//
Habe es mit mir selber getestet und es printen lassen.
Hatte 2 Accounts und dann wurde geprintet :
[15:16:37] [MULTIACCOUNT] Der Spieler lolz betreibt Multiaccounting! IP:************** (Übereinstimmung mit Pagno)
Aber wenn ich /macheck (manueller Befehl) verwendet habe kam "Keine Multiaccounts vorhanden".
Hier der Befehl :
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
new query[256];
format(query, sizeof(query), "SELECT id, name FROM spieler WHERE last_ip = '%s' AND name != '%s' ORDER BY id DESC;", PlayerName(playerid), GetIP(playerid));
mysql_query(query);
mysql_store_result();
new rows = mysql_num_rows(), id, name[MAX_PLAYER_NAME];
for(new i=0; i<rows; i++)
{
mysql_retrieve_row();
mysql_fetch_field_row(huan,"id"); id = strval(huan);
mysql_fetch_field_row(name,"name");
format(huan,sizeof(huan),"[MULTIACCOUNT] Der Spieler %s betreibt Multiaccounting! IP: %s (Übereinstimmung mit %s (ID: %d))", PlayerName(playerid), GetIP(playerid), name, id);
SendClientMessageToAdmins(huan, GELB);
print(huan);
}
mysql_free_result();
if(!findings)return SendClientMessage(playerid, GRAU, "Keine Multiaccounts gefunden bzw. vorhanden.");
return true;
}
Alles anzeigen
Stimmen die IDs? @Jeffry
Hey,
ich bekomme mehrere Errors beim Textdraw :
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(12537) : error 001: expected token: ",", but found "["
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(12537) : error 029: invalid expression, assumed zero
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(12537) : warning 215: expression has no effect
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(12537) : error 001: expected token: ";", but found "]"
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(12537) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Alles anzeigen
Hier der Code + die Zeile markiert :
Stats8[playerid] = CreatePlayerTextDraw(playerid, 496.000000, 133.411102, "usebox");
PlayerTextDrawLetterSize(playerid, Stats8[playerid], 0.000000, 17.437410);
PlayerTextDrawTextSize(playerid, Stats8[playerid], 172.400009, 0.000000);
PlayerTextDrawAlignment(playerid, Stats8[playerid], 1);
PlayerTextDrawColor(playerid, Stats8[playerid], 0);
PlayerTextDrawUseBox(playerid, Stats8[playerid], true);
PlayerTextDrawBoxColor(playerid, Stats8[playerid], 102);
PlayerTextDrawSetShadow(playerid, Stats8[playerid], 0);
PlayerTextDrawSetOutline(playerid, Stats8[playerid], 0);
PlayerTextDrawFont(playerid, Stats8[playerid], 0);
PlayerTextDrawShow(playerid, Stats8[playerid][8]); <--- 12537
Alles anzeigen
new huan[145];
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
new query;
format(query, sizeof(query), "SELECT id, name FROM spieler WHERE last_ip = '%s' AND name != '%s' ORDER BY id DESC;", PlayerName(playerid), GetIP(playerid));
mysql_query(query);
mysql_store_result();
new rows = mysql_num_rows(), id, name[MAX_PLAYER_NAME];
for(new i=0; i<rows; i++)
{
mysql_retrieve_row();
mysql_fetch_field_row(huan,"id"); id = strval(huan);
mysql_fetch_field_row(name,"name");
format(huan,sizeof(huan),"[MULTIACCOUNT] Der Spieler %s betreibt Multiaccounting! IP: %s (Übereinstimmung mit %s)", PlayerName(playerid), GetIP(playerid), name);
SendClientMessageToAdmins(huan, GELB);
print(huan);
}
mysql_free_result();
Alles anzeigen
3374 : Zeile 14
3375 : Zeile 15
3371 : Zeile 21
3373 : Zeile 13
C:\Users\--\Desktop\Server\gamemodes\gamemode.pwn(3374) : error 035: argument type mismatch (argument 1)
C:\Users\--\Desktop\Server\gamemodes\gamemode.pwn(3374) : error 035: argument type mismatch (argument 1)
C:\Users\--\Desktop\Server\gamemodes\gamemode.pwn(3375) : error 035: argument type mismatch (argument 1)
C:\Users\--\Desktop\Server\gamemodes\gamemode.pwn(3381) : warning 204: symbol is assigned a value that is never used: "id"
C:\Users\--\Desktop\Server\gamemodes\gamemode.pwn(3373) : warning 203: symbol is never used: "query"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
3 Errors.
Alles anzeigen
Habe wirklich 0 Plan von MYSQL wie man das macht, tut mir Leid.
Kenne mich damit kein bisschen, hatte den Code auch nicht selber geschrieben, sondern schreiben lassen, habe das jetzt so :
Errors :
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(3377) : error 035: argument type mismatch (argument 1)
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(3377) : error 035: argument type mismatch (argument 1)
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(3378) : error 035: argument type mismatch (argument 1)
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(3380) : warning 204: symbol is assigned a value that is never used: "rows"
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(3376) : warning 203: symbol is never used: "query"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
3 Errors.
Alles anzeigen
//Check für offline accounts
for(new i=0, j = GetPlayerPoolSize(); i <= j; i++)
{
new query;
format(query, sizeof(query), "SELECT id, name FROM spieler WHERE last_ip = '%s' AND name != '%s' ORDER BY id DESC;", GetName(playerid), GetIP(playerid));
mysql_query(query);
mysql_store_result();
new rows = mysql_num_rows();
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
Also der Code lautet jetzt so :
public OnPlayerConnect(playerid)
{
if(IsPlayerNPC(playerid))return 1;
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
SELECT id, name FROM spieler WHERE last_ip = '%s' AND name != '%s' ORDER BY id DESC;
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
Bekomme 4 Errors :
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(3376) : error 017: undefined symbol "SELECT"
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(3376) : error 017: undefined symbol "id"
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(3376) : error 017: undefined symbol "FROM"
C:\Users\Drai\Desktop\Server\gamemodes\gamemode.pwn(3376) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Alles anzeigen
Wo genau muss ich diesen Code dann ersetzen?
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 :
/*
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 :
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
Das ganze könnte man auch einfach per CSS und einer Tabelle regeln. Kannst dich ggf mal bei mir melden, dann kann ich dir den Code gerne schreiben.
Habe dir eine PN geschickt