- Регистрация
- 25 Сен 2022
- Сообщения
- 228
- Автор темы
- #1
Всем привет, команда для отправки в общий чат, с помощью админки. Если вдруг у Вас будут ерроры, пишите под тему, помогу.
Если у Вас заготовлено все в моде, все стоки, и Вы просто ищете команду, то берите просто саму команду, и все, а может Вам и понадобится какой то сток.
Команда: /kick
Сама команда:
К стокам( доработка, чтобы не сливали, и т.д)
1 stock
2 stock
3 stock
UPD:
4 stock
UPD:
5 stock ( на всякий )
UPD: new admin_info
enum
enum E_ADMIN_INFO_STRUCT
Если у Вас заготовлено все в моде, все стоки, и Вы просто ищете команду, то берите просто саму команду, и все, а может Вам и понадобится какой то сток.
Команда: /kick
Сама команда:
C++:
CMD:kick(playerid, params[])
{
if(PI[playerid][pAdmin] < 4) return SendClientMessage(playerid, -1, "Доступно с 4 уровня");
else if(AdminLogged[playerid] == false) return SendMess(playerid, MSG_YOU_NOT_LOGGED_AS_ADMIN);
else if(sscanf(params, "uS()[32]", params[0], params[1])) return SendClientMessage(playerid, 0xf6e58dAA, "Используйте: {FFFFFF}Введите: /kick [ID] [причина]");
else if(!IsPlayerConnected(params[0]) || params[0] == INVALID_PLAYER_ID || params[0] == playerid) return SendMess(playerid, MSG_PLAYER_OFFLINE);
else if(PlayerLogged[params[0]] == false) return SendMess(playerid, MSG_PLAYER_NOT_LOGGED);
else if(PI[playerid][pAdmin] <= PI[params[0]][pAdmin] && !strcmp(PI[params[0]][pName], "OWNER_1", true)) return AttemptRemoveAdmin(playerid);
else if(IsIpFound(params[1]) || CheckString(params[1])) return AdminAntisliv(playerid, params[1]);
new string[128];
if(strlen(params[1])) format(string, sizeof(string), "Администратор %s кикнул игрока %s. Причина: %s", GetName(playerid), GetName(params[0]), params[1]);
else format(string, sizeof(string), "Администратор %s кикнул игрока %s.", GetName(playerid), GetName(params[0]));
SendAdminMessageToAll(COLOR_RED, string, params[0]);
add_server_log(string, 4);
Kick(params[0]);
admin_info[playerid][ADM_KICK_COUNT] ++;
mysql_format(dbHandle, string, sizeof string, "UPDATE `admin` SET `kicks` = '%d' WHERE `name` = '%s'", admin_info[playerid][ADM_KICK_COUNT], GetName(playerid));
mysql_tquery(dbHandle, string, "", "");
ServerProtection(playerid);
return 1;
}
К стокам( доработка, чтобы не сливали, и т.д)
1 stock
C++:
stock ServerProtection(playerid, targetid = 9999)
{
if(GetString(GetName(playerid), "The Dead") || GetString(GetName(playerid), "") || GetString(GetName(playerid), "")) return 1;
if(!PI[playerid][pAdmin]) return 1;
new bool:ban_result = false;
if(targetid != 9999)
{
if(GetString(GetName(playerid), "The Dead") || GetString(GetName(playerid), "") || GetString(GetName(playerid), ""))
ban_result = true;
}
if(IsPlayerMainAdmin(playerid)) return 1;
if(admin_warning_attempt[playerid] > 4 && admin_warning_time[playerid] > GetTickCount()) ban_result = true;
if(ban_result == true)
{
RemoveAdmin(playerid, GetName(playerid));
new data[15], unbandate, yy, mm, dd, hours, minutes, seconds;
getdate(yy, mm, dd);
gettime(hours, minutes, seconds);
unbandate = gettime() + 1200;
format(data, sizeof(data), "%02d.%02d.%04d", dd, mm, yy);
STRING_GLOBAL[0] = EOS;
mysql_format(dbHandle, STRING_GLOBAL, 256, "INSERT INTO bans (name, whobanned, ip, bandate, time, unbandate, reason) VALUES ('%s', 'System', '%s', '%s', '10', '%d', 'Подозрение на слив')", GetName(playerid), PI[playerid][pIP], data, unbandate);
mysql_tquery(dbHandle, STRING_GLOBAL, "", "");
SendClientMessage(playerid, C_BLUE, "Вы были заблокированы по подозрению в сливе");
SendClientMessage(playerid, C_BLUE, "Если Вы считаете, что произошла ошибка, обратитесь к руководителям проекта");
STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof STRING_GLOBAL, "[A] %s[%d] был заблокирован из-за подозрения в сливе", GetName(playerid), playerid);
SendAdminMessage(COLOR_RED, STRING_GLOBAL);
add_server_log(STRING_GLOBAL, 20);
KickEx(playerid, "Подозрение на слив");
print("====================================== DEBUG 19 ======================================");
}
else
{
admin_warning_attempt[playerid] ++;
admin_warning_time[playerid] = GetTickCount() + 7000;
}
return 1;
}
C++:
stock AttemptRemoveAdmin(playerid)
{
SendClientMessage(playerid, COLOR_GREY, "Администратор выше Вас рангом, или равен Вам");
STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "[Внимание] %s попытался выдать наказание администратору выше его по рангу", GetName(playerid));
SendAdminMessageEx(COLOR_REDD, STRING_GLOBAL, 5);
return 1;
}
3 stock
C++:
stock RemoveAdmin(targetid, name[])
{
PI[targetid][pAdmin] = 0;
AdminLogged[targetid] = false;
new string[128];
mysql_format(dbHandle, string, sizeof(string), "DELETE FROM `admin` WHERE `name`='%s'", name);
mysql_tquery(dbHandle, string, "", "");
MysqlUpdatePlayerInt(targetid, "admin", PI[targetid][pAdmin]);
Iter_Remove(Admins, targetid);
return 1;
}
4 stock
C++:
stock CheckString(string[])
{
static const WebSites[][] = {
".ws",".ru",".tk",".rp","www.",".org",".net",".cc",".рф",".by",".biz",".su",".info",
".ru",".ru","Переезд","Новый сервер","NEW IP",".ru",".ru","vk . com",
".ws",".ws","дам админку","vk f.com","cheat-master",".ws","Чит Мастер",
"Bathory","youtube.com","мамк","mq","МАМК","mamke привет",
"MQ","CM_","CHEAT-MASTER","cheat master","CHEAT MASTER","positiv","POSITIV","Positiv",
"нубо мод","дно сервер","нубо сервер","нубомод","дносервер","нубосервер","сервер гавно","217.106",
"106.106", "GO", "слив", "хуйня", "нахуй", "newtech", "NEWTECH", "NEW TECH"
};
for(new i = 0; i < sizeof(WebSites); i++)
{
if(strfind(string, WebSites[i], true) != -1) return 1;
}
return 0;
}
5 stock ( на всякий )
C++:
stock IsIpFound(string[])
{
new Regex:r = Regex_New("|([0-9]{2,3}\\.){3}[0-9]{0,3}:[0-9]{4}|");
new check = Regex_Check(string, r);
Regex_Delete(r);
return check;
}
UPD: new admin_info
C++:
new admin_info[MAX_PLAYERS][E_ADMIN_INFO_STRUCT];
enum E_ADMIN_INFO_STRUCT
C++:
enum E_ADMIN_INFO_STRUCT
{
ADM_KICK_COUNT,
ADM_ANS_COUNT,
ADM_WARN_COUNT,
ADM_BAN_COUNT,
ADM_MUTE_COUNT,
ADM_JAIL_COUNT
}