Hallo zusammen, ich habe mich heute, eigentlich noch viel zu früh an ein IP System gewagt
In dem System soll folgendes passieren
-Spieler Verbindet, IP wird in der Datenbank überprüft
-Bei der Registrierung sollen folgende Dinge eingetragen werden:
- SpielerName
- IP
- Datum
Beim Login
- Wenn IP nicht übereinstimmend -> Kick
- Wenn IP übereinstimmen -> Login
-Admin setzt IP fest in die Datenbank (manuell)
-IP soll überschrieben werden
Hier dazu all das was ich bereits geschrieben habe:
Mein Enum was ich erstellt habe
new IPInfo[MAX_PLAYERS][IPEnum];
enum IPEnum
{
PlayerName[MAX_PLAYER_NAME],
IP,
PlayerIP,
Datum,
}
Bei OnPlayerConnect (Ich musste ja das Ban /Tban system noch mit einbinden deswegen alles so durcheinander
public OnPlayerConnect(playerid)
{
//-------------------IP SYSTEM ANFANG -------------------------
new name[MAX_PLAYER_NAME],query[128];
GetPlayerName(playerid,name,sizeof(name));
format(query,sizeof(query),"SELECT id FROM user WHERE username='%s'",name);
mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);
{
new name1[25], query1[60],pID,string[128],query2[60];
GetPlayerName(playerid, name1, 25);
mysql_format(dbhandle, query1, 60, "SELECT * FROM `timeban` WHERE `Spieler`='%e'", name);
mysql_tquery(dbhandle, query1, "@CheckBannedUser", "i", playerid);
{
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
format(string,sizeof(string),"Die IP vom Spieler %s ist %s !",getPlayerName(pID),playersip);
mysql_format(dbhandle, query2, 60, "SELECT * FROM `PlayerIP` WHERE `PlayerName`='%e'", name);
mysql_tquery(dbhandle, query1, "@CheckIP", "i", playerid);
if(IPInfo[playerid][PlayerIP]) ! = 0)) return print("PlayerIP noch nicht vorhanden Spieler: %s", GetPlayerName(playerid)); // ----> DIESE ZEILE BETRIFFT DEN ERROR
}
else
{
SendClientMessage(playerid,-1,"Deine IP wurde nicht in der Whitelist gefunden, Du wirst nun gekickt");
print("IP vorhanden %s",GetPlayerName(playerid));
}
}
Dann /getip und /setip
/getip geht /setip hab ich noch n icht testen können
//IP Überprüfung
ocmd:getip(playerid,params[])
{
if(!isAdmin(playerid,2)) SendClientMessage(playerid,-1,"Du hast kein Admin Level 2");
{
new pID,string[128];
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,-1,"INFO : /getip [playerid] !");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Spieler nicht verbunden");
{
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
format(string,sizeof(string),"Die IP vom Spieler %s ist %s !",getPlayerName(pID),playersip);
SendClientMessage(playerid,-1,string);
}
}
return 1;
}
ocmd:setip(playerid,params[])
{
if(!isAdmin(playerid,2)) SendClientMessage(playerid,-1,"Du hast kein Admin Level 2");
{
new pID,string[128];
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,-1,"INFO : /setip [playerid] !");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Spieler nicht verbunden");
{
new playersip[16];
GetPlayerIp(pID,playersip,sizeof(playersip));
format(string,sizeof(string),"Die IP vom Spieler %s ist %s und wurde erfolgreich in die DB eingetragen!",getPlayerName(pID),playersip);
SendClientMessage(playerid,-1,string);
format(query,sizeof(query),"INSERT INTO PlayerIP (IP,SpielerName) VALUES ('%f','%s')",playerisip,SpielerName);
print(query); // <--- diese Zeile
mysql_function_query(dbhandle,query,true,"CheckIP","i",carid);
}
else if(playersip <= 1)
{
format(string,sizeof(string),"Die IP vom Spieler %s ist %s und ist bereits in der DB vorhanden!",getPlayerName(pID),playersip);
SendClientMessage(playerid,-1,string);
}
}
return 1;
}
und zum schluss das noch
@CheckIP(playerid);
@CheckIP(playerid)
{
new rows, fields, ,string[256], IP[16],Datum[20];
cache_get_data(rows, fields);
if(rows)
{
IP = cache_get_field_content_float(0, "IP",IP);
Datum = cache_get_field_content(0,"Registrierungsdatum",name);
if(0() > IP)
{
format(string,sizeof(string),"Deine IP wurde in der Datenbank gefunden. Lasse bitte überprüfen ob bereits ein Account besteht. Name: %s IP: %f ",GetPlayerName(playerid),IP);
SendClientMessage(playerid,-1,string);
format(string,sizeof(string),"Du hast dich an folgendem Tage registriert : ",Datum);
}
else
{
format(query,sizeof(query),"INSERT INTO PlayerIP (PlayerName,IP) VALUES ('%s','%f')",getPlayerName(playerid),sInfo[playerid][IP]);
print(query); // <--- diese Zeile
mysql_function_query(dbhandle,query,true,"CheckIP","i",carid);
return 1;
//Eure Sache
}
}
else return 1;//Eure Sache;
return 1;
}
public CheckIP(playerid,IP)
{
IPInfo[playerid][db_id]= cache_insert_id(dbhandle);
return 1;
}
Und hier die eigentlichen Errors
E:\SAMP\gamemodes\Script1.pwn(1485) : error 029: invalid expression, assumed zero
E:\SAMP\gamemodes\Script1.pwn(1485) : warning 215: expression has no effect
E:\SAMP\gamemodes\Script1.pwn(1485) : error 001: expected token: ";", but found ")"
E:\SAMP\gamemodes\Script1.pwn(1485) : error 029: invalid expression, assumed zero
E:\SAMP\gamemodes\Script1.pwn(1485) : 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.
Das betrifft in allen Fällen diese Zeile
beim OnplayerConnect
if(IPInfo[playerid][PlayerIP]) ! = 0)) return print("PlayerIP noch nicht vorhanden Spieler: %s", GetPlayerName(playerid));
EDIT 1: Screen
Falls euch der Screen weiterhilft meine Datenbank