Как запретить менять Ник (CS:S)
| |
GizmoNiK
|
Дата: Суббота, 16.06.2012, 19:07:40 | Сообщение # 1 |
|
Сообщений: 15
Репутация: -2 [ +/- ]
|
|
Привет. На сервере есть читеры которые быстро меняют ники на ники игроков. Вот я по гуглил и нашел плаг, но он видимо банит и кикает ненужные ники которые в файле прописаны. А можно ли сделать плаг который бы не позволял клиенту менять ник? Или еслиб игрок менял ник больше двух раз за минуту его бы банил ???? Вот то что накопал в нете.Code #include <sourcemod>
new String:badNames[255][64]; new String:goodSteams[255][32]; new String:fileName[PLATFORM_MAX_PATH]; new lines, adminLines; new Handle:bnb_bantime; new Handle:bnb_allowimmun; new Handle:bnb_reason; new Handle:bnb_log; new Handle:logFile; new bool:EventsHooked = false
#define PLUGIN_VERSION "1.45"
public Plugin:myinfo = { name = "Bad name ban", author = "vIr-Dan", description = "Kicks/bans anybody with a bad phrase in their name", version = PLUGIN_VERSION, url = "http://dansbasement.us/" };
public OnPluginStart() { bnb_reason = CreateConVar("sm_bnb_reason", "Bad name", "Reason to give client when they are kicked/banned") bnb_bantime = CreateConVar("sm_bnb_bantime", "-1", "How long to ban someone with a bad phrase in their name (0 = perm, -1 = kick)"); bnb_allowimmun = CreateConVar("sm_bnb_allow_immun", "1", "Whether or not to allow bnb immunity via bnb_whitelist.ini") bnb_log = CreateConVar("sm_bnb_log", "1", "Whether or not to log bnb kicks to an external file") CreateConVar("sm_bnb_version", PLUGIN_VERSION, "Bad name banning version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY) decl String:ctime[64] FormatTime(ctime, 64, "logs/bnb_log_%m%d%Y.log"); new String:logFileName[PLATFORM_MAX_PATH]; BuildPath(Path_SM, logFileName, sizeof(logFileName), ctime); logFile = OpenFile(logFileName, "a+t"); if (logFile == INVALID_HANDLE) { LogError("Could not open log file: %s", logFileName); } }
public OnPluginEnd(){ CloseHandle(logFile); }
public OnMapStart(){ for(new i; i < lines; i++){ badNames[i] = "" } for(new i; i < adminLines; i++){ goodSteams[i] = "" } lines = 0 adminLines = 0 //If there is something wrong with the config, don't do anything until next map if(ReadConfig() && !EventsHooked ){ //Hook events HookEvent("player_activate", checkName) HookEvent("player_changename", checkName) EventsHooked = true } }
public bool:ReadConfig() { BuildPath(Path_SM, fileName, sizeof(fileName), "configs/bad_names.ini"); new Handle:file = OpenFile(fileName, "rt"); if (file == INVALID_HANDLE) { LogError("Could not open bad name config file: %s", fileName); return false; }
while (!IsEndOfFile(file)) { decl String:line[64] if (!ReadFileLine(file, line, sizeof(line))) { break; } TrimString(line) ReplaceString(line, 64, " ", "") if (strlen(line) == 0 || (line[0] == '/' && line[1] == '/')) { continue; } //Add the line to the list of badNames strcopy(badNames[lines], sizeof(badNames[]), line) lines++ } LogMessage("Bad name config read, %i lines total", lines) if(GetConVarInt(bnb_allowimmun) == 1){ return ReadAdminConfig(); } CloseHandle(file); return true; }
public bool:ReadAdminConfig() { BuildPath(Path_SM, fileName, sizeof(fileName), "configs/bnb_whitelist.ini"); new Handle:file = OpenFile(fileName, "rt"); if (file == INVALID_HANDLE) { LogError("Could not open bnb whitelist config file: %s", fileName); return false; }
while (!IsEndOfFile(file)) { decl String:line[64] if (!ReadFileLine(file, line, sizeof(line))) { break; } TrimString(line) if (strlen(line) == 0 || (line[0] == '/' && line[1] == '/')) { continue; } //Add the line to the list of badNames LogMessage("Line %i: %s",adminLines,line) strcopy(goodSteams[adminLines], sizeof(goodSteams[]), line) adminLines++ } LogMessage("Bnb whitelist config read, %i lines total", adminLines) CloseHandle(file) return true; } public Action:checkName(Handle:event, const String:name[], bool:dontBroadcast){ new playerId = GetEventInt(event, "userid") new player = GetClientOfUserId(playerId) //Make sure immunity is even allowed if(GetConVarInt(bnb_allowimmun)==1){ //Check to make sure they are not an admin decl String:steamID[32] GetClientAuthString(player,steamID,32) for(new i; i<adminLines;i++){ //They are in the whitelist, so don't bother checking if(strcmp(steamID,goodSteams[i],true)==0){ return Plugin_Continue } } } new String:clientName[64] //Check whether they changed their name or are connecting if(strcmp(name,"player_changename")==0){ GetEventString(event, "newname", clientName, 64) }else{ if(!GetClientName(player,clientName,64)){ return Plugin_Continue } } //Trim the spaces out ReplaceString(clientName, 64, " ", "") //Check if they have a bad phrase in their name for(new i = 0; i < lines; i++){ if(StrContains(clientName, badNames[i], false) != -1){ //Ban/kick the player new bantime = GetConVarInt(bnb_bantime) if(bantime != -1){ ServerCommand("banid %i %i", bantime, playerId) } new String:reason[64] GetConVarString(bnb_reason,reason,64) ServerCommand("kickid %i %s", playerId, reason) //Write to log if desired if(GetConVarInt(bnb_log) == 1){ GetClientName(player,clientName,64) WriteFileLine(logFile, "%s was kicked/banned for having %s in his name", clientName, badNames[i]) } } } return Plugin_Continue }
Добавлено (16.06.2012, 19:07:40) --------------------------------------------- Есть плагин еще Name Checker 1.5 , но он банит так же ники. Можно ли дописать его чтоб банил ники а также переименовывал те которые я укажу????
|
|
| |
_wS_
|
Дата: Суббота, 16.06.2012, 19:12:06 | Сообщение # 2 |
|
Запретить менять ник можно так (код ниже). Просто добавь нужные условия.
Code public OnPluginStart() { HookUserMessage(GetUserMessageId("SayText2"), StopChangeName, true); }
public Action:StopChangeName(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init) { decl String:message[45]; BfReadString(bf, message, 45); BfReadString(bf, message, 45); if (StrContains(message, "Name_Change") != -1) return Plugin_Handled; return Plugin_Continue; }
|
|
| |
GizmoNiK
|
Дата: Суббота, 16.06.2012, 20:28:19 | Сообщение # 3 |
|
Сообщений: 15
Репутация: -2 [ +/- ]
|
|
Нет я не рублю в этом воще. Ну тока чуть чуть и поэтому не понимаю что там за условия надо. И мне бы не нужно запрещать полностью менять ники. Мне необходимо чтоб читак который меняет ник больше чем 4 раза за минуту попадал бы в бан. Если есть у тя минутка гоу в скайп потрещим Есть 50 р в наличии если что.
|
|
| |
_wS_
|
Дата: Суббота, 16.06.2012, 20:32:36 | Сообщение # 4 |
|
Сегодня (скоро) сделаю.
------- Готово, проверь.
|
|
| |
GizmoNiK
|
Дата: Суббота, 16.06.2012, 22:49:56 | Сообщение # 5 |
|
Сообщений: 15
Репутация: -2 [ +/- ]
|
|
Не пашет чет((( Я меняю ник на пиратке через setname
|
|
| |
_wS_
|
Дата: Суббота, 16.06.2012, 22:59:10 | Сообщение # 6 |
|
Может надо запретить команду setname? В OB её вроде вообще нет.
|
|
| |
GizmoNiK
|
Дата: Суббота, 16.06.2012, 23:14:18 | Сообщение # 7 |
|
Сообщений: 15
Репутация: -2 [ +/- ]
|
|
У всех на пиратках есть спец плагин в папке аддонс там от и позволяет менять ник
|
|
| |
_wS_
|
Дата: Суббота, 16.06.2012, 23:23:27 | Сообщение # 8 |
|
Ну это же просто консольная команда? Если да, то её не составит труда заблокировать. Завтра, наверно, выложу скрипт для блокировки любых консольных команд.
|
|
| |
GizmoNiK
|
Дата: Суббота, 16.06.2012, 23:38:21 | Сообщение # 9 |
|
Сообщений: 15
Репутация: -2 [ +/- ]
|
|
Заблокировать то мне не надо !!! Мне необходим плаг который будет отследживать смену ника и банить. А так же было бы неплохо вмонтировать туда автопереименование ников по списку из файла Например заходит уннамед а его раз и переименовало, закрепив по стим иду его ник, чтоб на моем серваке он всегда был бы переименован.
Сообщение отредактировал GizmoNiK - Суббота, 16.06.2012, 23:38:52 |
|
| |
Scarface_slv
|
Дата: Воскресенье, 17.06.2012, 11:01:54 | Сообщение # 10 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
ого запросы=)
|
|
| |
GizmoNiK
|
Дата: Воскресенье, 17.06.2012, 11:41:17 | Сообщение # 11 |
|
Сообщений: 15
Репутация: -2 [ +/- ]
|
|
Что ты имеешь ввиду??? Я прошу знающего человека написать плагин, который бы помог многим людям, и готов даже оплатить его работу!!! А ты что написал ?? Ты либо просто набиваешь посты,либо завидуешь!!!!
|
|
| |
ZLoy-kif
|
Дата: Воскресенье, 17.06.2012, 11:51:01 | Сообщение # 12 |
|
Сообщений: 33
Репутация: 4 [ +/- ]
|
|
Помощь это обычно - совет, либо показ на примере как нужно сделать. Написать плагин это уже не помощь, ты разделом ошибся Quote готов даже оплатить его работу!!! тогда всё просто, тебе сюда http://world-source.ru/index/zakaz/0-82
|
|
| |
_wS_
|
Дата: Воскресенье, 17.06.2012, 11:52:55 | Сообщение # 13 |
|
GizmoNiK, я другим сейчас занят, если это заказ, то сделай его. Только уточни некоторые вещи, например, ник можно менять лишь командой setname?
Quote (GizmoNiK) закрепив по стим иду его ник И об этом подробнее
|
|
| |
GizmoNiK
|
Дата: Воскресенье, 17.06.2012, 12:38:23 | Сообщение # 14 |
|
Сообщений: 15
Репутация: -2 [ +/- ]
|
|
ZLoy-kif, Если ты не заметил я какбы кинул код который нашел в нете. _wS_ сразу кинул плаг который написал без всякого заказа. Просто он не пашет!!! Не вижу проблемы парни, че вы как дети то лезете не туда куда надо. Тут раздел ПОМОЩЬ или раздел Я ТОЖЕ НАПИШУ ЧЕНИТЬ ??? Если не можете помоч, зачем впустутю писать то??? Набивайте посты в другом месте!!! Заказать плагин я могу и сам без ваших ссылок. ============================================================================ PS Есть несколько вопросов по поводу заказа. 1.Если плагин я оплачу он не пойдет в паблик? 2.Сколько и как определить цену за плагин (сумма ограничена) 3.Сколько времени займет написание (я уезжаю через пару дней просто на месяц)
|
|
| |
_wS_
|
Дата: Воскресенье, 17.06.2012, 12:52:56 | Сообщение # 15 |
|
1. Не пойдёт 2. От 100 RUB+ (чтобы сказать, надо знать описание). Или предложи свою цену, если она устроит, то ок. 3. Опять же, надо знать описание. Если плагин небольшой, то в течение дня обычно.
|
|
| |
|