[RELEASE&HELP] Server Setup Tool 3

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#1 Сообщение 29.07.2010, 23:50

Server Setup Tool
"сразу третья версия... я сразу задал планку" %)
Изображение

Представляю вам свою новую разработку, программу для простой установки No-steam сервера! За идейную основу была взята Left4Dead No-steam Tools, однако я писал программу с нуля, итак... Новая архитектура рассчитана на модульность и конфигурируемость. Это достигается с помощью плагинов для выполнения действий с сервервом (например установка revemu или esteamtion, или установка metamod, или настройка Server.cfg) и обыкновенных xml файлов для описния разных игр (например инфа о движке игры или её описание).

Вот, я дописал саму прогу и скоро создам тему в Dedicated Servers.
Но мне нужна помощь в наполнении её функционалом.
Вот, выкладываю Plugin SDK (на Delphi), там есть демонстрационный плагин, на его основе можете делать свои программы.
Также я выложил примеры описания серверов (для l4d2, css и ещё несколько).

Плагины класть в папку Data/Plugins/
Квртинки игр класть в папку Data/Images/
Файлы описания игр класть в папку Data/Games/
Что есть что в xml файле описания игры

Код: Выделить всё

// заголовок xml файла - всё как обычно
<?xml version="1.0" encoding="utf-8"?>
// корневой элемент, может быть любым, но я использую <Game>
<Game>
   // Имя игры, сервер для которой мы ставим (или можно назвать "имя сервера")
   <Name>Garry's Mod</Name>
   // Параметр, который будет передаваться в HldsupdateTool для скачивания и обновления сервера
   <HlUpdateTrigger>garrysmod</HlUpdateTrigger>
   // Версия движка, берётся из констант SDK, также есть в DevComments (кстати поле DevComments
   // служит только для комментариев для редакторов XML файла, в программе не используется)
   <Engine>6</Engine>
   // Папка, в которой будет лежать сервер... Путь к серверу в этом примере: ./Servers/gmod/
   // Все папки, нужные серверу будут находится внутри './Servers/'+ServerFolder+'/'
   <ServerFolder>gmod</ServerFolder>
   // Картинка сервера, должна лежать в папке ./Data/Images/
   <GameLogoFilename>garrysmod.jpg</GameLogoFilename> 
   // Пути сервера - поля для упрощения работы плагинов по взлому сервера, установке адднонв итп.
   // Все пути сервера пишутся относительно папки './Servers/'+ServerFolder+'/'
   // Для всех директорий и папок на конце всегда дописывайте / (слеш)!
   <GamePaths>
      // Директория Bin сервера, реальный путь будет такой: ./Servers/gmod/orangebox/bin/
      <BinDir>orangebox/bin/</BinDir>
      // Другая директория bin, которая лежит в папке в именем игры внутри сервера,
      // реальный путь будет такой: ./Servers/gmod/orangebox/garrysmod/bin/
      <SubBinDir>orangebox/garrysmod/bin/</SubBinDir>
      // Путь к файлу srcds.exe, реальный путь будет такой: ./Servers/gmod/orangebox/srcds.exe
      <SrcDSPath>orangebox/srcds.exe</SrcDSPath>
   </GamePaths>   
   
   // Просто коментарии, можно удалить
   <DevComments>
      Значения для поля Engine: 
        S_ENGINE_GOLDSOURCE = 0;
        S_ENGINE_SOURCE = 1;
        S_ENGINE_SOURCE2006 = 2;
        S_ENGINE_SOURCE2007 = 3;
        S_ENGINE_SOURCE2007_U1 = 4;
        S_ENGINE_SOURCE2009 = 5;
        S_ENGINE_SOURCE2010 = 6;
   </DevComments>   
</Game>
Plugin SDK v4 Source+Binary: (демо плагин, функционала нету)
- https://narod.ru/disk/23350663000/PluginSDKv4.rar.html
Сама программа v3.0.0.396: (с примерами игр, нужно кое-что поправить - хотите помочь - отпишите в теме)
- https://narod.ru/disk/23350665000/Releas ... 6.rar.html
Плагины
Установщик RevEmu - разработка ведётся
Установщик Esteamation - разработка не начата
Настройщик Server.cfg - разработка не начата
Установщик Metamod - разработка не начата
Установщик Sourcemod - разработка не начата

Если хотите поучаствовать - отписывайте в этой теме, пишите что вы хотите разработать. Можете выбрать любую функцию из тех, что перечислены здесь, но ещё не нахдятся в разработке, либо придумать свою.
Наиденные баги
1. Hldsupdatetool пишет что файл был удалён, но остался там где был. Что делать?
- Закройте окно Hldsupdatetool и нажмите ещё раз на кнопку скачивания/обновления сервера.
HELP в заголовке темы - имеется ввиду помогите наполнить функционалом

Аватара пользователя
Badmin
Полковник
Полковник
Сообщения: 3510
Зарегистрирован: 13.05.2008
Откуда: Москва
Благодарил (а): 5 раз
Поблагодарили: 258 раз
Контактная информация:

#2 Сообщение 30.07.2010, 00:03

Тестирую.. Изменю этот пост по окончанию.

Тестил на серваке гарриса.
Нужно добавить в установку батника рядом с ексешником. И что бы прямо в проге можно было подписать, какие свойства в батнике будут. Например количества игроков. Для нубов.
При заходе пишет "STEAM validation rejected", при заходе на сервак с пираток. Либо я туплю, кто знает.
Автоматическая установка обязательных аддонов,. Например сурсмода, PHX, Wire(Ну это уже к гаррису конечно). Отмечать галочками, что будет, а что нет. Так будет очень удобно.
Ну ещё пофиксить пару вещей. Сделать поудобней и легче.
Знаю, что это всё будет реализовано.

P.S. Ну мне надоели эти картинки к играм в прогах других, а тут поменять можно. :D
Последний раз редактировалось Badmin 30.07.2010, 01:02, всего редактировалось 3 раза.

Аватара пользователя
Darth Revan
Майор
Майор
Сообщения: 784
Зарегистрирован: 30.09.2008
Поблагодарили: 1 раз
Контактная информация:

#3 Сообщение 30.07.2010, 00:08

Не тестирую, ибо уже на GNU/Linux, но по описанию - вещь хорошая.

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#4 Сообщение 30.07.2010, 03:31

badmin писал(а):Тестирую.. Изменю этот пост по окончанию.

Тестил на серваке гарриса.
Нужно добавить в установку батника рядом с ексешником. И что бы прямо в проге можно было подписать, какие свойства в батнике будут. Например количества игроков. Для нубов.
При заходе пишет "STEAM validation rejected", при заходе на сервак с пираток. Либо я туплю, кто знает.
Автоматическая установка обязательных аддонов,. Например сурсмода, PHX, Wire(Ну это уже к гаррису конечно). Отмечать галочками, что будет, а что нет. Так будет очень удобно.
Ну ещё пофиксить пару вещей. Сделать поудобней и легче.
Знаю, что это всё будет реализовано.

P.S. Ну мне надоели эти картинки к играм в прогах других, а тут поменять можно. :D
Я обновил тестовый плагин чтобы показать функционал плагиновой системы... Думаю так яснее, что из того что ты описал можно реализовать с помощью плагинов...
Мне потому и нужна помощь, что я не особо в серверах разбираюсь, зато написал, как мне кажется, довольно удобный тулз... Я бы хотел чтобы он получил дальнейше развитие в виде плагинов от комьюнити потому что внутренняя архитектура у проги неплохая, и использовать её можно удобно...

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#5 Сообщение 30.07.2010, 08:09

MOZGIII
На Win7 говорит, что, "возможно эта программа установлена неправильно" . Причина, возможно, в том, что твоё имя файла содержит "setup" или "install" (в твоём случае, первое) и поэтому 7-ка думает, что это установщик. Ещё одна причина в том, что приложение возвращает "подозрительный" код завершения процесса (ExitCode я имею в виду). Не знаю, что теперь Винде каноничнее, но, насколько я знаю, вроде 0 всегда был таковым.

Если все условия соблюдены, то тогда сие есть странность.

Насчёт функций function GetAllActions и GetActionsForGame: почему они возвращают динамический массив без указания количества элементов? Если ты это каким-то хитрым образом всё же обходишь, то классно. Если же не обходишь, то вот мои способы решения сей ситуации:
  • Либо при текущих параметрах функций добавлять в конец массива "терминальный элемент" (пусть у него ID или Name будут равны 'end' или ещё как-то обозначить)
  • Или же переделать функции GetAllActions и GetActionsForGame примерно так:

    Код: Выделить всё

    function GetAllActions(var ItemCount: integer): TGameServerActionsList;
    begin
      SetLength(Result, 1);
    
      ItemCount := 1;
    
      with Result[0] do
        begin
          ID:='nocommand';
          Name:='Список всех комманд недоступен';
          GroupID:=LST_GROUP_ID_OTHER;
          Available:=False;
        end;
    end;
    
    // аналогично и здесь
    function GetActionsForGame(GameServer: TGameServer; var ItemCount: integer): TGameServerActionsList;
И ещё вопросец...просто интересно: чем JVCL лучше VCL? И вообще, как мне показалось, у тебя в проге много неиспользуемых юнитов (ну, по крайней мере, я явного использования не увидел), из-за чего размер не совсем соответствует функционалу.

Аватара пользователя
zhenya93
Майор
Майор
Сообщения: 529
Зарегистрирован: 24.04.2009
Контактная информация:

#6 Сообщение 30.07.2010, 14:02

Все.
Последний раз редактировалось zhenya93 02.08.2010, 20:01, всего редактировалось 2 раза.
А HL3 выйдет (или анонсируют) в 2013. Инфа 99% (2013 содержит число 3) Да и давно пора!
Изображение

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#7 Сообщение 30.07.2010, 15:49

$t@t!c_V()1D
Пытаясь это пофксить я в FormDestroy сделал ExitCode:=0 что уже выложено в 258 сборке... если до сих пор ругается - страааанно
Поповоду массива - -обхожу) У меня FastMM4 + хорошая функция length() которая отлично работает
По поводу неисрьльзуемых юнитов - ты про плагин сдк или про прогу? Если про прогу, какие именно и как узнал?) А в плагин сдк всё по минимуму вроде

Добавлено спустя 56 секунд:
zhenya93
Сделай название файла у плагина RevEmuInstaller.dll ато как-то путаться они будут

Добавлено спустя 5 минут 22 секунды:
$t@t!c_V()1D
Ещё, насчёт JVCL... Иногда мне хватает и обычного VCL (иногда они даже лучше подходят для задачи, например в ListView с включенными группами). Но иногда просто в VCL компоненте нету каких-то опций, поэтому я и использую JVCL (иногда я ничнаю работать с JVСL, но потом оказывается что их фишки не пригодились, но под VLC пределывать неохота потому как можно всё сломать)
Кстати я ищю замену покрасивее для ListBox-ов... Для того что на вкладке плагина по крайней мере... Не подскаже что-нибудь что будет радовать глаз? %) Ато как-то вкладка плагинов кажется пустой...

Аватара пользователя
zhenya93
Майор
Майор
Сообщения: 529
Зарегистрирован: 24.04.2009
Контактная информация:

#8 Сообщение 30.07.2010, 18:30

В XML файлы надо добавить папку с сервером, которую создаёт htdsupdatetool. Для left 4 dead это l4d, для л4д2 это left4dead2 и т.д.
[quote=бадмин]При заходе пишет "STEAM validation rejected", при заходе на сервак с пираток. Либо я туплю, кто знает.[/quote]
Дак на тот момент програма сервер то не ломала, просто качала лицензионный
А HL3 выйдет (или анонсируют) в 2013. Инфа 99% (2013 содержит число 3) Да и давно пора!
Изображение

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#9 Сообщение 30.07.2010, 18:55

MOZGIII писал(а):Пытаясь это пофксить я в FormDestroy сделал ExitCode:=0 что уже выложено в 258 сборке... если до сих пор ругается - страааанно
Поповоду массива - -обхожу) У меня FastMM4 + хорошая функция length() которая отлично работает
По поводу неисрьльзуемых юнитов - ты про плагин сдк или про прогу? Если про прогу, какие именно и как узнал?) А в плагин сдк всё по минимуму вроде
1)Её родимую и проверял %) .
2)А...не знал, что там есть что-то такое. Интересно. Правда с Си, мне кажется всё равно не прокатит (если вдруг приспичит).
3)Про прогу. Не заставляй меня перечислять - уж слишком там много всего такого %) (узнал дизассемблером с поддержкой распознавания VCL). И да, мне показалось или ты туда ещё и скинизационный движок тоже прикрутил?
MOZGIII писал(а):Кстати я ищю замену покрасивее для ListBox-ов... Для того что на вкладке плагина по крайней мере... Не подскаже что-нибудь что будет радовать глаз? %) Ато как-то вкладка плагинов кажется пустой...
ListView сделай - уж это-то гораздо проще, чем мне на том же NSIS %)

eldest
Разработчик
Разработчик
Сообщения: 302
Зарегистрирован: 17.03.2008
Откуда: такие как я?
Поблагодарили: 2 раза
Контактная информация:

#10 Сообщение 30.07.2010, 19:02

MOZGIII писал(а):Кстати я ищю замену покрасивее для ListBox-ов... Для того что на вкладке плагина по крайней мере... Не подскаже что-нибудь что будет радовать глаз? %) Ато как-то вкладка плагинов кажется пустой...
Воткни туда VGUI от фаира и мегалана.

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#11 Сообщение 01.08.2010, 22:17

eldest
Если честно, то мне не нравится стиль GUI стима... Терпеть его не могу... %)

$t@t!c_V()1D
Мда, я уже решил кое-что поменять, поэтому, возможно, переделаю плагины на ListView... Кстати зайди может в асю, мне нужна кое-какая помощь... Кстати дизассемблер не Dede случйно? %)
Скинизационный движок там не прикручен, но есть такая возмоность, что я его прикручу...

Добавлено спустя 1 час 7 минут 56 секунд:
Скоро выпущю 3-й сдк

Добавлено спустя 1 час 11 минут 59 секунд:
Мда... :) Почему при FreeLibrary вылезают ошибки, причём сразу 3 О_о
Хм, при юзании ShareMem вместо FastMM4 ошибок нету... Возможно переёду на него, если никто ничего получше не подскажет...

Добавлено спустя 31 минуту 6 секунд:
Как ни странно, но всё работает с SimpleShareMem и ShareMem, поэтому на них и останемся... А FastMM4 и FastShareMem бажные на Delphi 2010 (или просто у меня кривые руки? %)).

Аватара пользователя
Darth Revan
Майор
Майор
Сообщения: 784
Зарегистрирован: 30.09.2008
Поблагодарили: 1 раз
Контактная информация:

#12 Сообщение 01.08.2010, 23:14

MOZGIII
А зачем они тебе? Их можно не использовать, если на импорте/экспорте нету String. Думаю, сишники меня поддержат, что стоит для этого использовать PChar (char*).

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#13 Сообщение 02.08.2010, 01:48

Darth Revan
Если бы ты посмотрел SDK, то увидел бы что там есть стринги %) К тому-же шермемы позмоляют нормально использовать любые magic-типы дельфей, что для меня очень удобно %)
А насчёт любителей си - если хотите, сделаю альтернативный SDK для C/C++, тока мне понадобятся консультации (по асе или джаберу)

Добавлено спустя 1 минуту 30 секунд:
НО это тока если потом будут плагины на сях)
Кстати в новых дельфях это будет не PChar() а PAnsiChar(AnsiString()) - вот такой вот геморой

Добавлено спустя 28 минут 31 секунду:
Обновил прогу и SDK

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#14 Сообщение 02.08.2010, 04:57

Вот насчёт аси - я до сентября не смогу. Много отдыхаю и пишу сие с Оперы Мини. Рад бы помочь с совместимостью с Си, но...и да, насчёт PChar-ов - лучше с ними...хех...раз уж на то пошло, то для совместимости с Си, сделай хотя бы возвращение длины массива так, как я предложил.

И да, дизассемблер - PE Explorer.

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#15 Сообщение 02.08.2010, 12:23

$t@t!c_V()1D
Ок, спасибо, буду ждать, приятного отдыха кстати %)

По поводу совместимости с Си - плагины то напшет кто-нибудь?

Добавлено спустя 24 минуты 42 секунды:
$t@t!c_V()1D
Кстати насчёт мусора - я всё что можно ненужное стёр... Там штук 5-6 мксимум (на память)

Ответить