24.06.2012, 11:24
(
Last edited by Bombo; 15/10/2016 at 01:05 PM.
Reason: Поменялись кошельки WMR и WMZ
)
ПОИСК ИГРОКОВ ПО НИКУ, НА ВСЕХ СЕРВЕРАХ
Выглядит это следующим образом:
На команды
/find Wore1
/find swatt
/find DniX
будет получен следующий ответ:

ГЛОБАЛЬНЫЙ БАН ИГРОКОВ
Этот же скрипт позволяет забанить злостного читера так, чтобы он не смог зайти ни на один сервер (на котором установлен данный скрипт, разумеется)
Работает это так:
Допустим, на одном из серверов SA:MP выполняется команда
/gbanip 12.34.56.78
Тогда читер с ip-адресом 12.34.56.78 не зайдёт ни на один сервер с данным скриптом
Все команды глобального бана:
/gban [id]
/gbanip [ip]
/gunban [id]
/gunbanip [ip]
В скором времени добавлю бан по маске подсети и по нику, а также временный бан.
Смысл:
Отрезает читеров и спамеров, кочующих от сервака к серваку.
Всю работу выполняет удалённый сервер, т.ч. скрипт практически не занимает ресурсов.
Code:
//1.1b SA:MP GPS - Global Player Search by Bombo #include <a_samp> #include <a_http> #include "../include/gl_common.inc" forward FindPlayer(index, code, data[]); forward CheckIP(index, code, data[]); new UName[]="test"; new Pass[]="test"; public OnFilterScriptInit() { print("\n--------------------------------------"); print(" Global Player Search by Bombo"); print("--------------------------------------\n"); SendClientMessageToAll(9424500, "\n--------------------------------------"); SendClientMessageToAll(9424500, "Поиск игроков от Bombo"); SendClientMessageToAll(9424500, "--------------------------------------\n"); return 1; } public OnGameModeInit() { // Don't use these lines if it's a filterscript SetGameModeText("Blank Script"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); return 1; } public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1; } public OnPlayerConnect(playerid) { new PlayerIP[16]; new PlayerName[48]; new http_msg[256]; new str_id[8]; GetPlayerIp(playerid, PlayerIP, sizeof(PlayerIP)); http_msg = "Playerid="; valstr(str_id, playerid); strcat(http_msg, str_id); strcat(http_msg, "&CheckIP="); strcat(http_msg, PlayerIP); strcat(http_msg, "&Uname="); strcat(http_msg, UName); strcat(http_msg, "&Pwd="); strcat(http_msg, Pass); strcat(http_msg, "&PlayerName="); GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); strcat(http_msg, PlayerName); HTTP(0, HTTP_POST, "botinform.com:9797", http_msg, "CheckIP"); //проверка на БАН SendClientMessage(playerid, 9324500, "Для поиска игрока на всех серверах SAMP наберите: /find ник_игрока"); return 1; } public OnPlayerSpawn(playerid) { SendClientMessage(playerid, 9324500, "Для поиска игрока на всех серверах SAMP наберите: /find ник_игрока"); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[256+1]; new idx; cmd = strtok(cmdtext, idx); //if(!IsPlayerAdmin(playerid)) return 0; // this is an admin only script //Команда "/help" if(strcmp(cmd, "/help", true) == 0) { SendClientMessage(playerid, 9324500, "/find [ник_игрока] - поиск по всем серверам!"); if(IsPlayerAdmin(playerid)) { SendClientMessage(playerid, 9324500, "/gban [id] - бан по всем серверам с данным модом"); SendClientMessage(playerid, 9324500, "/gbanip [ip] - бан по ip на все сервера с данным модом"); SendClientMessage(playerid, 9324500, "/gunban [id] - разбан по всем серверам с данным модом"); SendClientMessage(playerid, 9324500, "/gunbanip [ip] - разбан по всем серверам с данным модом"); } return 1; } //команда /find [ник] if(strcmp(cmd, "/find", true) == 0) { new tmp[256]; new http_msg[512]; new str_id[8]; tmp = strtok(cmdtext,idx); http_msg = "Playerid="; valstr(str_id, playerid); strcat(http_msg, str_id); strcat(http_msg, "&Uname="); strcat(http_msg, UName); strcat(http_msg, "&Pwd="); strcat(http_msg, Pass); strcat(http_msg, "&Search="); strcat(http_msg, tmp); SendClientMessage(playerid, 9324500, "Searching..."); HTTP(0, HTTP_POST, "botinform.com:9797", http_msg, "FindPlayer"); return 1; } //команда "/gunban [player id]" if(IsPlayerAdmin(playerid)) if(strcmp(cmd, "/gunban", true) == 0) { new tmp[256]; new nPlayerId; new strPlayerIp[16]; new http_msg[512]; new str_id[8]; tmp = strtok(cmdtext,idx); nPlayerId = strval(tmp); GetPlayerIp(nPlayerId, strPlayerIp, sizeof(strPlayerIp)); http_msg = "Playerid="; valstr(str_id, playerid); strcat(http_msg, str_id); strcat(http_msg, "&Uname="); strcat(http_msg, UName); strcat(http_msg, "&Pwd="); strcat(http_msg, Pass); strcat(http_msg, "&GUnban="); strcat(http_msg, strPlayerIp); SendClientMessage(playerid, 9324500, "Banning..."); HTTP(0, HTTP_POST, "botinform.com:9797", http_msg, "FindPlayer"); return 1; } //команда "/gunbanip [ip]" if(IsPlayerAdmin(playerid)) if(strcmp(cmd, "/gunbanip", true) == 0) { new tmp[256]; new http_msg[512]; new str_id[8]; tmp = strtok(cmdtext,idx); http_msg = "Playerid="; valstr(str_id, playerid); strcat(http_msg, str_id); strcat(http_msg, "&Uname="); strcat(http_msg, UName); strcat(http_msg, "&Pwd="); strcat(http_msg, Pass); strcat(http_msg, "&GUnban="); strcat(http_msg, tmp); SendClientMessage(playerid, 9324500, "Unbanning..."); HTTP(0, HTTP_POST, "botinform.com:9797", http_msg, "FindPlayer"); return 1; } //команда "/gbanip [ip] [ник]" if(IsPlayerAdmin(playerid)) if(strcmp(cmd, "/gbanip", true) == 0) { new tmp[256]; new http_msg[512]; new str_id[8]; new strPlayerIp[16]; new strPlayerName[24]; new strAdminName[24]; tmp = strtok(cmdtext,idx); http_msg = "Playerid="; valstr(str_id, playerid); strcat(http_msg, str_id); strcat(http_msg, "&Uname="); strcat(http_msg, UName); strcat(http_msg, "&Pwd="); strcat(http_msg, Pass); strcat(http_msg, "&GBan="); strcat(http_msg, tmp); strcat(http_msg, "&AdminIP="); GetPlayerIp(playerid, strPlayerIp, sizeof(strPlayerIp)); strcat(http_msg, strPlayerIp); strcat(http_msg, "&PlayerName="); strPlayerName = strtok(cmdtext,idx); strcat(http_msg, strPlayerName); strcat(http_msg, "&Admin="); GetPlayerName(playerid, strAdminName, sizeof(strAdminName)); strcat(http_msg, strAdminName); SendClientMessage(playerid, 9324500, "Banning..."); HTTP(0, HTTP_POST, "botinform.com:9797", http_msg, "FindPlayer"); return 1; } //команда "/gban [player id]" if(IsPlayerAdmin(playerid)) if(strcmp(cmd, "/gban", true) == 0) { new tmp[256]; new nPlayerId; new strPlayerIp[16]; new http_msg[512]; new str_id[8]; new strPlayerName[24]; new strAdminName[24]; tmp = strtok(cmdtext,idx); nPlayerId = strval(tmp); http_msg = "Playerid="; valstr(str_id, playerid); strcat(http_msg, str_id); strcat(http_msg, "&Uname="); strcat(http_msg, UName); strcat(http_msg, "&Pwd="); strcat(http_msg, Pass); strcat(http_msg, "&GBan="); GetPlayerIp(nPlayerId, strPlayerIp, sizeof(strPlayerIp)); strcat(http_msg, strPlayerIp); strcat(http_msg, "&AdminIP="); GetPlayerIp(playerid, strPlayerIp, sizeof(strPlayerIp)); strcat(http_msg, strPlayerIp); strcat(http_msg, "&Admin="); GetPlayerName(playerid, strAdminName, sizeof(strAdminName)); strcat(http_msg, strAdminName); strcat(http_msg, "&PlayerName="); GetPlayerName(nPlayerId, strPlayerName, sizeof(strPlayerName)); strcat(http_msg, strPlayerName); SendClientMessage(playerid, 9324500, "Banning..."); HTTP(0, HTTP_POST, "botinform.com:9797", http_msg, "FindPlayer"); return 1; } return 0; } public FindPlayer(index, code, data[]) { new tmp[256]; new len,i,j,k; new playerid; new num[8]; // printf("%s", data); for(i = 0; i < sizeof(num); ++i) num[i] = '\0'; k = 0; while(data[k] != ' ') //забираем playerid из начала сообщения { num[k] = data[k]; k++; } playerid = strval(num); len = strlen(data); for(i = k+1, j = 0; i < len; ++i) { tmp[j] = data[i]; if(tmp[j] == '\n' || tmp[j] == '\0') { tmp[j] = '\0'; if(tmp[j-1] == '\r') tmp[j-1] = '\0'; SendClientMessage(playerid, 11240000, tmp); //пересылаем ответ от сервера в чат j = 0; continue; } j++; } } public CheckIP(index, code, data[]) { new tmp[1024]; new len,i,j,k; new playerid; new num[8]; new banned; // printf("%s", data); for(i = 0; i < sizeof(num); ++i) num[i] = '\0'; k = 0; while(data[k] != ' ') //забираем playerid из начала сообщения { num[k] = data[k]; k++; } playerid = strval(num); for(i = k+1, j = 0; i < 6; ++i) { tmp[j] = data[i]; } if(strcmp(tmp, "banned",true,6) == 0) banned = true; else banned = false; len = strlen(data); for(i = k+1, j = 0; i < len; ++i) { tmp[j] = data[i]; if(tmp[j] == '\n' || tmp[j] == '\0') { tmp[j] = '\0'; SendClientMessage(playerid, 11240000, tmp); //пересылаем ответ от сервера в чат j = 0; continue; } j++; } // если игрок глобально забанен, ему кик: if(banned) Kick(playerid); }
Желающие потестить в полном объёме обратитесь ко мне за логином и паролем, в личку (поля UName[] и Pass[] в самом начале скрипта, если кто не просёк). Эта мера вынужденная, дабы не захламили/не повесили мне сервак.
Да, кстати, аренда сервера денюшку стоит, т.ч.:
R211309231066
Z841169965648,
E226595298971
буду весьма признателен
Опробовать поиск можно здесь: botinform.com:7797, либо так:
HTML Code:
<html> <head> <title>Поиск игроков</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> </head> <body> <div align=center> <h2>ПОИСК ПО НИКУ</h2> <FORM action="http://botinform.com:9797" method="post"> <P> Введите ник: <INPUT type="text" name="Search"> <INPUT type="submit" value="Поиск"> <INPUT type="hidden" name="Browser"> <INPUT type="hidden" name="Uname" value="test"> <INPUT type="hidden" name="Pwd" value="test"> </P> </FORM> </div> </body> </html>