Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 2
  • 1
  • 2
  • »
Как запретить менять Ник (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 [ +/- ]
Quote
ого запросы=)

Что ты имеешь ввиду??? Я прошу знающего человека написать плагин, который бы помог многим людям, и готов даже оплатить его работу!!! А ты что написал ?? Ты либо просто набиваешь посты,либо завидуешь!!!!
 
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. Опять же, надо знать описание. Если плагин небольшой, то в течение дня обычно.
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: