Но хоть какойто процент защиты сервера.
Я не знаю насчет работоспособности данного кода, но все-таки вариант еще:
stock AntiPlagiat(playerid) {
new IP[24]; GetServerVarAsString("bind", IP, sizeof(IP));
if(strlen(IP) || strcmp(IP, "127.0.0.1")) for(;;) SendClientMessage(playerid,-1, "[Анти Плагиат]: Мод украден блеать!111");
return 1; }
public OnPlayerConnect(playerid) {
AntiPlagiat(playerid) return 1; }
Не обязательно использовать return т .е.. в конце OnPlayerConnect стоит return по стандарту
Будет проще так:
Но какой смысл при конекте будет флудить в чатPHP код:
AntiPlagiat(playerid);
+ не легче было в OnPlayerConnect сделать было так
В общем велосипедPHP код:
public OnPlayerConnect(playerid)
{
new IP[24]; GetServerVarAsString("bind", IP, sizeof(IP));
if(strlen(IP) || strcmp(IP, "127.0.0.1")) for(;;) SendClientMessage(playerid,-1, "[Анти Плагиат]: Мод украден блеать!");
return 1;
}
Если уж на то пошло...
1) main должен иметь скобки аргументов, т.е. не main {}, а main() {}
2) если порт берётся как число, то дефайнить надо число (без ковычек), а не строку.
3) точно так же с игроками.
4) извлекаемое правило rcon_pass неверно, т.к. в конфиге пишется rcon_password (хотя за FAIL спасибо, я внёс возникающий крэш в список крэшей с вариантами их исправления).
5) Размер 20 для IP-адресов очень мал, т.к. если считать по символам, то максимальный адрес: 255.255.255.255 = 3 + 1 + 3 + 1 + 3 + 1 + 3 = 15 символов, вес которых составляет 50 байт, если правильно показал сервак. А если считать, что по идее расходуется по 4 байта на 1 символ, то и все 60. Это в английском разделе давно уже разобрали, что для ip надо массив в 64 байта ставить.
6) Ну и конечно проверка на бинд сработает только при условии его прописки в server.cfg.
Да *** буду Я всё верно сказал, но не правильно воспринял код. Там и надо, чтобы ложь возвращалась.
ТОЛЬКО для сервера самого себя.
Одного взгляда достаточно для того, чтобы понять, что код - говно:
1) Условие - если нет в конфиге бинда - мод украден. Да никто его в бинд и не пишет.
2) Условие - если в бинде прописан НЕ локальный ип - мод украден. Кто в бинд пишет локальный ип для интернет-сервера?
1) Извините, забыл, я тоже человек, егегей.
2) Читаем: http://wiki.sa-mp.com/wiki/GetServerVarAsInt
3) ^
4) 1 пункт
5) По-вашему, я должен обшарить весь английский форум и найти искомое, то что вижу, то беру на заметку.
6) Я на то и рассчитывал
На счет условий:
1) Понятное дело, что надо бинд прописывать, это и по коду видно
2) Локальный ИП не обязательно может быть 127.0.0.1, он может быть и твой обычный IP.
Пизданул и только...
Из СанСити вырезал только что, от твоей версии почти не отличается.PHP код:
new ip[16];
GetServerVarAsString("bind", ip, sizeof (ip));
if ( !strlen(ip) || strcmp(ip, "80.90.118.163"))
{
for(;;)
{
printf("ЗАчем украл мод? Его нельзя запустить тут");
GameModeExitFunc();
}
}
Что на это скажеш?
strcmp выполняет у вас проверку только на 1 условие на равное 1, а какже -1 это тоже ложь D В результате этой проверки будет пропускать некоторые ip которые меньше размером чем ip из смой проверки.
на счёт ip и то что 20 мало, бред мне кажется ***.***.***.*** спокойно влезает Проверено на опыте, на счёт теории из англ форума чёто сомневаюсь что надо так много ячеек у меня 16 ячеек вполне хватает они наверно про IPv6 говорили