Zeka_Peka228
Умник
Делаю защиту по ip адресу. При не совпадение ip регистрации и текущего - должно показывать диалог.
Проблема в том, что он его не показывает, а пускает дальше игрока логиниться.
Вот собсна код:
pCheckKey в таблице игрока = 1. Также, ip регистрации и ip входа не совпадают(просил друга зарегистрировать аккаунт).
Вот где пвар ProverkaIPS
В чем проблема? Почему не проходит проверку?
p.s конечно, как и всегда, отблагодарю репой
Проблема в том, что он его не показывает, а пускает дальше игрока логиниться.
Вот собсна код:
PHP:
publics LoadAccount(playerid)
{
if(Player[playerid][pCheckKey] == 1 && GetPVarInt(playerid,"ProverkaIPS") == 0)
{
new currentip[16];
GetPlayerIp(playerid, currentip, sizeof(currentip));
if(strcmp(currentip, Player[playerid][pIP]))
{
TogglePlayerControllable(playerid, false);
ShowPlayerDialog(playerid,777,DIALOG_STYLE_PASSWORD,"Введите ключ безопасности","==== Ваш IP адрес изменился! ====\n=== Введите ключ безопасности ===","Готово","Выход");
//PlayerInfo[playerid][pLogin] = 0;
return true;
}
}
Player[playerid][pID] = cache_get_field_content_int(0, "ID", connects);
Player[playerid][pModel] = cache_get_field_content_int(0, "Model", connects);
Player[playerid][pAdmin] = cache_get_field_content_int(0, "Admin", connects);
cache_get_field_content(0, "APassword", Player[playerid][pAKey], connects, 12);
Player[playerid][pMoney] = cache_get_field_content_int(0, "Money", connects);
Player[playerid][pSuperKey] = cache_get_field_content_int(0, "pSuperKey", connects);
Player[playerid][pCheckKey] = cache_get_field_content_int(0, "pCheckKey", connects);
//for(new o;o < 15;o++) SendClientMessageToAll(-1,"");
new playersip[16];
GetPlayerIp(playerid,playersip,sizeof(playersip));
new query[128];
new name [MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(query, sizeof(query), "UPDATE `accounts` SET `pGetonIP` = '%s' WHERE `name` = '%s'",playersip,name);
mysql_function_query(connects, query, false, "", "");
if(Player[playerid][pAdmin] >= 1) { send(playerid, -1, " Вы авторизовались как администратор."); }
send(playerid, COLOR_GREEN, "-------------------------------------");
send(playerid, -1, "Добро пожаловать!");
Logged{playerid} = true;
GivePlayerMoney(playerid, Player[playerid][pMoney]);
SetPlayerScore(playerid, 1);
SpawnPlayer(playerid);
return true;
}
Вот где пвар ProverkaIPS
PHP:
case 777:
{
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,777,DIALOG_STYLE_PASSWORD,"Введите ключ безопасности","==== Ваш IP адрес изменился! ====\n=== Введите ключ безопасности ===","Готово","Выход");
if(!strcmp(inputtext, Player[playerid][pSuperKey], true))
{
new ipstt[16], Aplayersip[16];
GetPlayerIp(playerid,Aplayersip,sizeof(Aplayersip));
format(ipstt,sizeof(ipstt),"%s",Aplayersip);
strmid(Player[playerid][pIP], ipstt, 0, strlen(ipstt), 16);
TogglePlayerControllable(playerid, true);
SetPVarInt(playerid,"ProverkaIPS",1);
LoadAccount(playerid);
return true;
}
else return ShowPlayerDialog(playerid,999,DIALOG_STYLE_MSGBOX,"Ошибка","{FF6347}Вы были кикнуты с сервера\nПричина: \"Не верный ключ безопасности\"\nВведите \"/q\", чтобы выйти","Ок",""),Kick(playerid);
}
else return Kick(playerid);
}
p.s конечно, как и всегда, отблагодарю репой
