Добро пожаловать на форум, Гость, это ваша панель
  • Страница 1 из 1
  • 1
Регистрация на мастер-серверах (Обновление)
ExTreaM
Дата: Понедельник, 12.09.2011, 15:05 | Сообщение # 1
офлайн

  • Сообщения: 11
  • Награды: 1
  • Замечания:
 
Шаги, которые нужно выполнить. чтобы ваш сервер был виден в интернете:
1. Поставить плагин:
Code
#include <amxmodx>
#include <amxmisc>

#define TASK_UPDATE        4096
//Задержка между командами
#define DELAY            10.0

new bool:enabled = false, Masters[128][64], Count = 0, pcvar_repeat
new counter_add, counter_remove

public plugin_init()
{
      register_plugin("Automatic master servers register", "2.2", "Puma")
      pcvar_repeat = register_cvar("sm_repeat", "1")
      set_task(10.0, "delay_load")
}

public plugin_end()
      if(enabled)
          setmaster_removeall()

public delay_load()
{
      new configsdir[200], SetMasterFile[200], Result
      new fSize, temp
        
      get_configsdir(configsdir,199)
      format(SetMasterFile,199,"%s/setmaster.ini",configsdir)
      if(!file_exists(SetMasterFile))   
      {
          server_print("Error: Coudn't find %s", SetMasterFile)
          return PLUGIN_HANDLED
      }
      fSize = file_size(SetMasterFile,1);
      if(!fSize)
      {
          server_print("Error: %s is empty", SetMasterFile)
          return PLUGIN_HANDLED
      }
      for(new i=0; i < fSize; i++)
      {
          Result = read_file(SetMasterFile, i, Masters[i], 63, temp)   
          if(!Result)
              continue
            
          replace_all(Masters[i], 190, "setmaster add", "")
          replace_all(Masters[i], 190, "setmaster remove", "")
          Count++
      }
      server_print("setmaster.ini loaded (%d)", Count)
      enabled = true
      if(enabled)
      {
          counter_add = 0
          set_task(0.1, "update", TASK_UPDATE+1)
      }
        
      set_task(300.0, "heartbeat", TASK_UPDATE, "", 0, "b")
      return PLUGIN_CONTINUE
}

public heartbeat()
{
      if(get_pcvar_num(pcvar_repeat) == 1)
      {
          counter_add = 0
          counter_remove = 0
          set_task(0.1, "update", TASK_UPDATE)
      }
      server_cmd("heartbeat")
}

public cmd_update(id)
{
      set_task(0.1, "update", TASK_UPDATE)
}

public update(taskid)
{
      //update part
      if(taskid == TASK_UPDATE)
      {
          if(Count > counter_remove)
          {
              server_cmd("setmaster remove %s", Masters[counter_remove])
              counter_remove++
                
              set_task(DELAY, "update", TASK_UPDATE)
          }
          else
          {
              counter_add = 0
              counter_remove = 0
              set_task(0.1, "update", TASK_UPDATE+1)
          }
      }
      //add part
      else if(taskid == TASK_UPDATE+1)
      {
          if(Count > counter_add)
          {
              server_cmd("setmaster add %s", Masters[counter_add])
              counter_add++
                
              set_task(DELAY, "update", TASK_UPDATE+1)
          }
          else
          {
              counter_add = 0
              counter_remove = 0
          }
      }
}

stock setmaster_removeall()
      for(new i=0; i < Count; i++)
          server_cmd("setmaster remove %s", Masters[i])


2. Открыть файл dproto.cfg и заменить переменные:
// Чтобы работа встроенного мастер клиента в дпрото выводил в логи свою работу
LoggingMode = 2

// Включим встроенный мастер-клиент
MasterClient = 1

// Выставим GameVersion, который будет отправляться на мастер-сервер.
Master_GameVersion = 1.6.3.7/Stdio

3. Запускать сервер с параметром -nomaster (в строке запуска) //по возможности

FAQ:
Q: Нужно ли прописывать в server.cfg какие-нибудь мастер-сервера?
A: Нет, всё делает плагин при инициализации

Q:Зачем мне ставить MasterClient = 1?
A: Потому что билд косячит со встроенным мастер-клиентом, в результате не у всех сервер будет виден на мастер-серверах.

Q: Я получаю в консоли сообщения типа: [DPROTO]: MasterClient: Server xxx.xxx.xxx.xxx:27010: Bad Challenge, как это исправить, и что это означает?
A: Исправит эту проблему dproto ,при дополнительном запросе на добавлений на мастер сервере , ошибка означает, что на мастер-сервере в текущее время забит мастер, и он выдаёт серверу неправильный Challenge номер)

Q: Что за сообщения: [DPROTO]: [MEMU]: Hello sent to xxx.xxx.xxx.xxx:27010 и [DPROTO]: [MEMU]: Info sent to xxx.xxx.xxx.xxx:27010?
A: Сообщения дают вам знать, что мастер-клиент dproto отправляет пакеты добавления сервера и heartbeat пакеты.

Q: А css.setti.info / сетти не забанит за эту настройку на сервере?
A: Нет, если вы не будите это использовать на своём фейковом сервере

Q: Чем тут помогает встроенный в dproto мастер-клиент (MasterClient = 1)?
A: Данный клиент исправляет косяк отображения числа игроков онлайн, с обычным мастер-клиентом это значение вело себя нестабильно, в следствии, видимость от части ухудшалась.

Q: Что написать в steam.inf ?
A: Оставить как есть ,тк если в dproto.cfg MasterClient = 1 ,то значение в steam.inf не берёться в счёт

Q: Что делает параметр -nomaster ?
A: Лишь добавляет от себя(hlds) 2 рандомных рабочих мастера ,если запускать с -nomaster + плагином то регистрация на мастер сервере всёравно проходит

Q: Зачем ставить именно 1.6.3.7/Stdio а не другое значение
A: Чтобы мастера не посчитали ваш сервер "старым" ,тк на мастерах стойт проверка данного значения ,если оно в допустимых пределах мастер добавит сервак ,в противном случий получите в консоли сообшение означаюшие что надо обновить HLDS

Q: У меня в консоли пишит Invalid address "xxx.xxx.xxx.xxx:xxx", setmaster command ignored
A: Ответ один ,или плагин выполняет часть удаления сетмастеров из себя (setmaster remove IP) когда они не добавлялись (при первом запуске обычно такое можно увидить) ,или ваш сервер уже добавлен на данный мастер сервак ,тк делая добавление реже чем примерно 5 минут мастер отвечает данным сообшением

Q: Что такое "heartbeat" ?
A: Команда которая отправляет мастер серверу пакет с некоторой инфой, это заставит мастер сервер не удалять ваш сервер через 5 минут в случий если он присутствует в списке мастер сервера


Изминения:
* Улучшен код плагина
+ Теперь список мастер серверов можно посмотреть/изменить в файле setmaster.ini (amxmodx/configs/setmaster.ini)
Прикрепления: setmaster_2.2.zip (8.9 Kb)
 
  • Страница 1 из 1
  • 1
Поиск: