ReGameDLL ReGameDLL_CS - reverse engineered mod CS

Inline

Пользователь
Регистрация
8 Июн 2017
Сообщения
219
Симпатии
84
Пол
Мужской
#1
Первоисточник - Dedicated-Server.ru
In english - Regamedll_CS, Reverse-engineered mod CS - AlliedModders

Предыстория:
s1lent занялся реверсом мода CS в начале 2015 года, сначала попытавшись починить gamedll от вьетнамца cs16nd,
но как оказалось - безуспешно. Cколько багов ни фиксил, находились новые, прогонка и анализ кода по IDA заставили бросить это дело.
Спустя несколько месяцев, появление ReHLDS дало второе дыхание работе над проектом. В этом проекте s1lent'a привлекли его метод реверс-инжиниринга и система проведения тестов

Теперь подробнее:
ReGameDLL_CS - это результат реверс-инжиниринга оригинального мода CS (build 6153beta) с использованием отладочной информации DWARF, встроенной в линуксовую версию движка cs.so

Цели:
  • Предоставить более расширенный API для модов и плагинов
  • Исправление багов
  • Внедрение оптимизации
Текущий статус:
  • CS 1.6 - [100%]
  • C:Zero - [100%]
Ссылки:
История изменений:
Дополнительное описание и перевод на русский язык присутствует, история ведеётся не сначала, но все равно полезна.
[EN] Commit № 201
[RU] Коммит № 201
  • Fix func_rotating · s1lentq/ReGameDLL_CS@1dc4849 · GitHub
  • Исправляет функцию func_rotating отвечающую за сбрасывание состояния энтити. Эта функция вызывается при начале нового раунда․ Обновление затрагивает вращающиеся объекты.
[EN] Commit № 202
[RU] Коммит № 202
[EN] Commit № 204
[RU] Коммит № 204
[EN] Commit № 205
[RU] Коммит № 205
30 Июн 2017
[EN] Commit № 206
[RU] Коммит № 206
[EN] Commit № 207
[RU] Коммит № 207
[EN] Commit № 208
[RU] Коммит № 208
5 Июл 2017
[EN] Commit № 209
[RU] Коммит № 209
5 Июл 2017
[EN] Commit № 210
[RU] Коммит № 210

Настройки:
C++:
// ReGameDLL Configuration File
echo Executing ReGameDLL Configuration File

//  Вкл./Выкл. режима "Каждый сам за себя" (FFA mode)
// 0 - выключить (значение по умолчанию)
// 1 - включить
// Значение по умолчанию: "0"
mp_freeforall 0

// Балансировка команд
// 0 - выключить
// 1 - Балансировка будет происходить через раунд (значение по умолчанию)
// 2 - Балансировка команд каждый раунд
// Значение по умолчанию: "1"
mp_autoteambalance 1

// Время закупки в каждом раунде. (в минутах
// -1 - нет ограничения по времени
//  0 - отключить закупку
// Значение по умолчанию: "1.5"
mp_buytime 0.25

// Максимальное кол-во денег
// Значение по умолчанию: "16000"
mp_maxmoney 16000

// Блокировка окончания раунда
// 0 - выключить (значение по умолчанию)
// 1 - включить (раунд не кончается)
//
// Дополнительные флаги настройки (выбрать столько, сколько нужно)
// a - Заблокировать окончание раунда если время истекло
// b - Заблокировать окончание раунда если на сервере есть хотябы по 1 игроку в каждой команде
// c - Заблокировать окончание раунда при убийстве или спасении VIP
// d - Заблокировать окончание раунда при побеге из тюрьмы
// e - Заблокировать окончание раунда если бомба взорвана
// f  - Заблокировать окончание раунда при убийстве команды соперника
// g - Заблокировать окончание раунда если заложники спасены
//
// Пример: "ae" - Заблокирует окончание раунда по истечению времени и взрыву бомбы
// Значение по умолчанию: "0"
mp_round_infinite 0

// Принудительное завершение раунда, по истечению времени, на картах без сценария
// 0 - выключить (значение по умолчанию)
// 1 - включить
// Значение по умолчанию: "0"
mp_roundover 1

// Выдержка времени до начала нового раунда, после окончания текущего.
// Значение по умолчанию: "5"
mp_round_restart_delay 5

// Блокировка урона осколочной гранаты через стены
// 0 - выключено (урон проходит)
// 1 - включить
// Значение по умолчанию: "0"
mp_hegrenade_penetration 0

// Выбрасывать гранаты на землю, после смерти игрока
// 0 - выключено
// 1 - выбросить первую гранату (Если у игрока было 1 HE, 2 Flash, 1 Smoke, то на землю упадет только 1 HE)
// 2 - выбросить все гранаты
// Значение по умолчанию: "0"
mp_nadedrops 0

// Время, после начала раунда, когда игрок не сможет заспавниться и будет ждать нового раунда
//
// Значение по умолчанию: "20"
mp_roundrespawn_time 2

// Автоматическая перезарядка оружия после спавна
// 0 - выключить (значение по умолчанию)
// 1 - включить
//
// Значение по умолчанию: "0"
mp_auto_reload_weapons "0"

// Пополнение патронов
// 0 - выключено (значение по умолчанию)
// 1 - пополнять запас патронов после спавна
// 2 - пополнять запас патронов после спавна и полная обойма, при покупке оружия
// 3 - пополнять запас патронов после каждой перезарядки ( Полезно для модов DeathMatch, GunGame, ZombieMod.)
//
// Значение по умолчанию: "0"
mp_refill_bpammo_weapons 0

// Автоматическое присоединение к команде
// 0 - выключить
// 1 - включить (Используйте настройки  humans_join_team any/CT/T)
//
// Значение по умолчанию: "0"
mp_auto_join_team 0

// Максимальное число убийств товарищей по команде, после чего последует kick
// Используйте, когда включен mp_autokick.
// 0 - выключить
//
// Значение по умолчанию: "3"
mp_max_teamkills 3

// Покажет кол-во фрагов в консоли, если включена настройка mp_fraglimit
mp_fragsleft

// Когда игрок наберет заданое число фрагов-карта сменится
// 0 - отключить настройку
//
// Значение по умолчанию: "0"
mp_fraglimit 0

// Время, между сменой карт
// 0 - нет ограничений
//
// Значение по умолчанию: "0"
mp_timelimit 25

// Автоматический респавн игрока после смерти
// 0  - выключить
// >0.00001 - время, после которого произойдет респавн игрока
//
// Значение по умолчанию: "0"
mp_forcerespawn 0

// Заложники не получают урон.
// 0 - выключить
// 1 - От любой команды (Значение по умолчанию)
// 2 - От команды CT
// 3 - От команды T
mp_hostage_hurtable 1

// Отображение радио иконки над головой
// 0 - выключить
// 1 - включить (значение по умолчанию)
mp_show_radioicon 1

// Проигрывать звук "Bomb has been defused" вместо "Counter-Terrorists win", когда бомбу разминировали
// 0 - выключить (стандартное поведение в hlds от valve)
// 1 - включить
//
// Значение по умолчанию: "1"
mp_old_bomb_defused_sound 1

// Установка режима игры для zBot
// 0 - выключить
// 1 - включить поддержку режима Deathmatch и не выполнять сценарий карты
//
// Значение по умолчанию: "0"
bot_deathmatch 0

// Режим заполнения сервера ботами
// normal -  не зависит от кол-во игроков (значение по умолчанию)
// fill - сервер будет кикать количество ботов, равное кол-ву подключившихся игроков.
bot_quota_mode "normal"

// Отладочная информация, для показа triggers.
// 0 - выключить (значение по умолчанию)
// 1 - включить
//
// Значение по умолчанию: "0"
showtriggers 0

//Как игроки слышат друг друга. Further explanation: https://github.com/s1lentq/ReGameDLL_CS/wiki/sv_alltalk
// 0 - живые не слышат мертвых и соперников
// 1 - без ограничений
// 2 - товарищи по команде слышат друг друга
// 3 - аналогично 2, но зрители слышат всех
// 4 - живые слышат всех живых, мертвые слышат живых и мертвых
//
// Значение по умолчанию "0"
sv_alltalk 0

// Время (секунды) для удаления предмета, который выбросил игрок
// Значение по умолчанию "300"
mp_item_staytime 300

// Устаревшая обработка касания для func_bomb_target. Новый подход более строгий.
// 0 - Новое поведение
// 1 - Устаревшее
//
// Значение по умолчанию: "1"
mp_legacy_bombtarget_touch "1"

// Указывает время защиты игроков после респауна. (в секундах).
// 0 - отключено
//> 0.00001 - временная задержка для удаления защиты
// Значение по умолчанию: "0"
mp_respawn_immunitytime "0"
Как использовать?
ReGameDLL_CS полностью совместим с оригинальным gamedll. Все, что от вас требуется, это загрузить бинарные файлы ReGameDLL_CS и заменить ими оригинальные mp.dll/cs.so
Скомпилированные файлы мода вы можете найти здесь (выберите .zip файл с датой последнего изменения). Директория архива bin содержит 2 поддиректории: bugfixed и pure
  • В папке "pure" файл мода, рассчитанный на работу в точности, как оригинальный gamedll
  • В папке "bugfixed" файл мода со всеми исправлениями и улучшениями ReGameDLL_CS
В архиве вы также найдете конфигурационный файл game.cfg, который содержит в себе новые квары, созданные в Regamedll. Во время его установки конфигурационный файл можно переместить в корневую папку сервера или в папку мода
Если установка ReGameDLL_CS была проведена правильно, то при вводе команды "game version" в консоль сервера должны быть отображены строки сообщающие об версии ReGameDLL_CS

  • Вопрос: Что делать если падает сервер и у меня amxmodx 1.8.2?
  • Ответ: Убедитесь что виноват модуль amxx cstrike, выключите все плагины использующий модуль cstrike, если сервер не падает, то вам нужно скачать специальную версию cstrike модуля для ReGameDLL (Архив прикреплён ниже)

  • Вопрос: У меня не работает модуль adminfreelook, можно это исправить?
  • Ответ: Используйте AMXX плагин AdminFreeLook на ReGameDLL API, скачать здесь.

  • Вопрос: Не работает AdminFreeLook, как исправить?
  • Ответ: CVar's mp_forcecamera, mp_forcechasecam не должны равняться 0, а также mp_fadetoblackдолжен быть 0.

  • Вопрос: Как узнать, работает ли ReGameDLL?
  • Ответ: Вы можете узнать через команду game version.

  • Вопрос: Не реагирует на команду game version, что делать?
  • Ответ: Для начала нужно выполнить некоторые шаги:
    • Вы должны убедиться что поместили mp.dll (Для Windows) или cs.so (Для Linux) в директорию gamedir/dlls/.
    • Если у вас стоит Metamod, вы должны убедиться, что Metamod загружает именно вашу библиотеку mp.dll/cs.so, напишите команду meta game и увидите в "dll pathname" путь до библиотеки которую загрузил Metamod.

    • В папке gamedir/dlls не должны быть cs_i386.so и бэкап оригинальной библиотеки cs.so, так или иначе Metamod их загрузит, так как считает их приоритетные чем ReGameDLL. (Совет: Вы можете прямо указать Metamod-у какую библиотеку грузить, для этого зайдите в папку Metamod-а(addons/metamod), откройте config.ini (если нету, создайте config.ini) и добавьте строчку:
      gamedll dlls/cs.so

Инструкция по добавлению ботов : Ссылка
Подробная информация о работе квара sv_alltalk : sv_alltalk
 
Последнее редактирование модератором:

Vesuvius

НЕ СКРИПТЕР!!!
Команда форума
Администратор
Регистрация
8 Июн 2017
Сообщения
1.322
Симпатии
433
Пол
Мужской
#4
ктото кидал мне ссилку на ботов на github, а я не сохранял.. думал завтра.. а завтра бил для форума денем-Х..
может ктонибуть дать?
 

Vesuvius

НЕ СКРИПТЕР!!!
Команда форума
Администратор
Регистрация
8 Июн 2017
Сообщения
1.322
Симпатии
433
Пол
Мужской
#6
создал на домашнем сервере ботов...
вроде получилось
подскажите.. можно както избавиться от Initialization перед началом каждой карти?
 

DashaKarma

Пользователь
Регистрация
8 Июн 2017
Сообщения
74
Симпатии
22
Пол
Женский
#7
Можно ли попросить модераторов о небольших заметках "что поменялось в новых версиях/что пофиксили/что добавили"... если не сложно? А то никакой конкретики явной... Заранее, спасибо.
 

REVO

Пользователь
Регистрация
9 Июн 2017
Сообщения
273
Симпатии
73
Пол
Мужской
#9
при обновлении, надо еще что то обновлять?
 

REVO

Пользователь
Регистрация
9 Июн 2017
Сообщения
273
Симпатии
73
Пол
Мужской
#11
Phantom, нужно мне плагины заного перекомпилировать?
или можно спокойно обновить dll и cfg, ?
 

REVO

Пользователь
Регистрация
9 Июн 2017
Сообщения
273
Симпатии
73
Пол
Мужской
#13
небольшое уточнение! что лучше из этого будет?
до того как с форумом случилось неприятное, в теме статьи про rehlds описывалось что лучше использовать pure.
  • В папке "pure" файл мода, рассчитанный на работу в точности, как оригинальный gamedll
  • В папке "bugfixed" файл мода со всеми исправлениями и улучшениями ReGameDLL_CS
 

izzatillo

Пользователь
Регистрация
8 Июн 2017
Сообщения
248
Симпатии
79
Пол
Мужской
#14
REVO, я всегда обновляю из папки "bugfixed"
 

REVO

Пользователь
Регистрация
9 Июн 2017
Сообщения
273
Симпатии
73
Пол
Мужской
#15
всем спасибо, обновился! полет нормальный.
 

Vesuvius

НЕ СКРИПТЕР!!!
Команда форума
Администратор
Регистрация
8 Июн 2017
Сообщения
1.322
Симпатии
433
Пол
Мужской
#16
REVO,
в теме статьи про rehlds описывалось что лучше использовать pure.
так вороде всегда описовалось что лучше ставить "bugfixed"
даже тут пишет
  • В папке "bugfixed" файл мода со всеми исправлениями и улучшениями ReGameDLL_CS
 

Inline

Пользователь
Регистрация
8 Июн 2017
Сообщения
219
Симпатии
84
Пол
Мужской
#17
[EN] Commit № 201
[RU] Коммит № 201
  • Fix func_rotating · s1lentq/ReGameDLL_CS@1dc4849 · GitHub
  • Исправляет функцию func_rotating отвечающую за сбрасывание состояния энтити. Эта функция вызывается при начале нового раунда․ Обновление затрагивает вращающиеся объекты.
 

sonyx

Заблокированные
Регистрация
8 Июн 2017
Сообщения
491
Симпатии
231
#18
Inline, сударь, не сочтите за наглость)
Есть пару предложений))
1. Коммиты писать под спойлер в топикстарте
2. Коммиты писать тут только на русском, т.к. человек, знающий английский, прочтет все и на гите.
 

Inline

Пользователь
Регистрация
8 Июн 2017
Сообщения
219
Симпатии
84
Пол
Мужской
#19
sonyx, Так же можно и сказать, что смысла нет в первом посте, так как историю можно посмотреть на гитхабе)
Да и по сути это не просто changelog, там и небольшое описание приводится будет.