Данная новость является вольным переводом официальной заметки на сайте SourceMod с замечаниями и правками от переводчика
Оригинал можно прочитать здесь
Оригинал можно прочитать здесь
Новой стабильной веткой SourceMod теперь является версия 1.10. Как и всегда, некоторое время для старой ветки 1.9 будут доступны обновления геймдаты.
Новая версия включает в себя правки сообщества от следующих классных людей: headline, SlidyBat, PerfectLaugh, quasemago, Technoblazed, InvexByte, TiBarification, Pelipoika, Peace-Maker, thewavelength, rumblefrog, jason-e, Kailo, CrazyHackGUT, rsKliPPy, fakuivan, maximsmol, Silenci0, hydrogen-mvm, Hexer10, ddhoward, Bara, PowerLord, TheByKotik, komashchenko, BotoX, b3none, DJPlaya, PerfectLaugh, 404UNFca, JoinedSenses, TheDS1337, Batfoxkid, MartLegion, FortyTwoFortyTwo и Einyux.
Основные моменты этого релиза включают в себя:
- Новый синтаксис для структур, оформленных с помощью enum. Подробнее - на нашей вики.
- Поддержка 64-битных версий SRCDS.
- Новые нативы для получения большего объёма информации касательно трассировки.
- Обновлённая библиотека MySQL с поддержкой кодировки
utf8mb4
. - Новая команда для перезагрузки кеша
databases.cfg
без перезапуска сервера:sm_reload_databases
- Повышение скорости компиляции за счёт многочисленных исправлений и изменений.
- Изменение структуры бинарного файла плагина для будущих улучшений языка.
- Улучшение стабильности и качества кода ядра.
- Улучшение методмапов и документации API.
Изменения SourceMod
- [Исправление] Работа над багом CS:GO, связанный с таблицами строк (см. PR #1046)
- [Исправление] Упрощение внутренностей логгера (см. PR #691)
- [Исправление] Ошибка, вызывающая падение процесса из-за NULL в указателях на строки (см. PR #906) *
- [Исправление] Возможность устанавливать
-1
/null
в поляхattacker
иinflictor
в хуке движкаOnTakeDamage
- [Исправление]
CompileRegex()
не всегда устанавливал корректный код ошибки (см. PR #775) - [Исправление] Компиляция с использованием Visual Studio 2017 и выше
- [Исправление] SDKHooks: Сброс глобального идентификатора хука при снятии хука в Sourcehook (см. PR #916)
- [Исправление] Предотвращение ошибок, связанных с использованием FrameIterator (см. PR #949) *
- [Исправление] Улучшение текста ошибки для
EmitSound()
(см. PR #787) - [Исправление]
BfRead.BytesLeft
не был необязательным (см. PR #945) * - [Исправление] IBinTools: Блокировка загрузки несовместимых версий интерфейсов (см. PR #979)
- [Исправление] Исправление неправильного пути к файлу
matchmaking_ds
, который использовался в некоторых случаях (см. проблему #1006) - [Исправление] Удаление лишнего использования
MAPLIST_FLAG_NO_DEFAULT
в стандартных плагинах (см. PR #870) - [Исправление] Исправление ошибки при переходе на резервную секцию
default
в маплистах (см. PR #923) - [Исправление] Исправление неправильного расчёта оставшегося времени после
mp_restartgame
в CS:S и CS:GO (см. PR #1072) - [Исправление] Новые нативы methodmap теперь опциональны (см. PR #867)
- [Исправление] Удаление повторного форматирования в
ReplyToCommand()
(см. PR #932) * - [Исправление] Опечатка в PassType (см. PR #1018)
- [Исправление] Улучшение описания в консольных переменных плагина номинаций карт (см. PR #758)
- [Исправление] Улучшение описания у нативов
CharToLower()
иCharToUpper()
(снова) (см. PR #750) - [Исправление] Исправление ошибки очередности параметров в документации к
CancelClientMenu()
(см. PR #982) - [Исправление] Улучшение документации в реализациях methodmap (см. PR #788)
- [Исправление] Использование
GetClientAuthId()
вFormatUserLogText()
(см. PR #805) - [Исправление] Добавлен отсутствующий вызов
MarkNativeAsOptional()
дляSetAuthIdCookie()
(см. PR #879) - [Исправление] Отправка сообщений
ShowActivity()
для клиентов SourceTV (см. PR #813) - [Исправление] Исправление ошибок, вызываемых
sm_help
при вызове во время процесса подключения (см. PR #723) - [Исправление] basevotes: Увеличение размера буфера для карт Workshop (см. PR #956)
- [Исправление] Исправление неправильного форматирования
Vote Delay Minutes
когда задержка около 60 секунд (см. PR #1009) - [Новое] Поддержка 64-битной версии CS:GO для Linux и MacOS (см. PR #705)
- [Новое] Добавление нативов трассировки (
TR_EnumerateIntities()
,TR_EnumerateEntitiesHull()
,TR_ClipRayToEntity()
,TR_ClipRayToEntityEx()
,TR_ClipRayHullToEntity()
,TR_ClipCurrentRayToEntity()
,TR_ClipCurrentRayToEntityEx()
) (см. PR #754) - [Новое] Добавление натива
Tr_GetHitBoxIndex()
(см. PR #1085) - [Новое] Добавление натива
RemoveEntity()
(см. PR #745) - [Новое] Добавление команды
sm_reload_databases
(см. PR #773) - [Новое] Добавление поддержки 64-битных целых чисел в методмапе Protobuf (см. PR #943)
- [Новое] Разрешение различных значений для платформы в секции
Keys
в геймдате (см. PR #765) - [Новое] Открытие меню при наличии нескольких карт на неопределенный фильтр для команды
!nominate
(см. PR #983) - [Новое] Добавление натива
Regex.MatchAll()
и исправление поведенияMatchRegex()
для соответствия документации (см. PR #767) - [Новое] MySQL: Поддержка нескольких наборов результатов в подготовленных запросах (см. PR #825)
- [Новое] Добавление натива
LogStatckTrace()
(см. PR #685) - [Новое] Добавление натива
Protobuf.HasField()
- [Новое] Добавление методмапа
CommandIterator
, включающийCommandIterator.Plugin
для получения плагина, зарегистрировавшего команду (см. PR #819) - [Новое] Добавление отсутствующего возвращаемого значения в документации для
CreateDirectory()
- [Новое] Исправление различных регрессий и неопределенного поведения (см. PR #1022)
- [Улучшение] Обновление поддержки игр для CS:GO, BMS, Empires, NMRiH, Insurgency, PVKII, IOSoccer, ZPS *
- [Улучшение] Перемещение семантики для
StringHashMap
(см. PR #589) - [Улучшение] Удаление блокировки конфигурации БД (см. PR #791)
- [Улучшение] Добавление описания для
TFCond
(см. PR #1005) - [Улучшение] Добавление методмапа
Profiler
(см. PR #814) - [Улучшение] Добавление методмапа
GameData
(см. PR #766) - [Улучшение] Добавление методмапов
GlobalForward
иPrivateForward
(см. PR #1004) - [Улучшение] Добавление методмапа
Cookie
(см. PR #1012) - [Улучшение] Добавление геттера для
Event.BroadcastDisabled
(см. PR #946) - [Улучшение] Добавление методов
Sort()
иSortCustom()
в методмапArrayList
(см. PR #1003) - [Улучшение] Добавление метода
File.Flush()
(см. PR #1056) - [Улучшение] Обновление
TF2_IgnitePlayer()
для поддержки установки длительности горения (см. PR #1038) - [Улучшение] Добавление вспомогательного шаблонного класса для повышения безопасности типов для вызовов функций (см. PR #965)
- [Улучшение] Добавление дополнительных специфичных для TF2 константных
DMG_
значений (см. PR #756) - [Улучшение] Добавление дополнительного идентификатора нестандартного убийства для TF2 (см. PR #972)
- [Улучшение] Добавление щита и отталкивающая мина в
cstrike.inc
(см. PR #991) - [Улучшение] Разрешение возвращать любые значения в каллбеках нативов (см. PR #857)
- [Улучшение] Добавление
RequestFrameCallback
с опциональным параметром для данных (см. PR #1068) - [Улучшение] Обновление
sm_ban
,sm_kick
иsm_map
для отображения меню, если выполняются без аргументов (см. PR #838) - [Улучшение] Использование кол-ва нулей в зависимости от кол-ва плагинов для вывода в
sm plugins list
(см. PR #1027) - [Улучшение] Улучшение текста ошибки для
CreateNative()
(см. PR #903) - [Улучшение] Использование настоящей сортировки для списков карт (см. PR #907)
- [Улучшение] Добавление интернационализации (переводов) для basechat и исправление цветов для CS:GO (см. PR #674)
- [Улучшение] Переход сеттеров/геттеров клантегов CS:GO на использование нетпропов + смещение по сигнатуре + смещение (см. PR #922)
- [Улучшение] Стандартизация поиска карт среди движков, подобных TF2 (см. PR #931)
- [Улучшение] Изменение
MultiTargetFilter
на typeset, позволяющий использованиеArrayList
(см. PR #955) - [Улучшение] Удаление использования оператора
goto
вExtensionSys.cpp
(см. PR #729) - [Улучшение] SQL Admin Manager: Чистка кода (см. PR #974)
- [Прочее] Переписывание реализации
DataPack
(см. PR #688) - [Прочее] Прекращение использования примитивных функций float в угоду стандартным операторам (см. PR #763)
- [Прочее] Обновление клиентской библиотеки MySQL до версии 5.5 (поддержка кодировки
utf8mb4
) (см. PR #786) - [Прочее] Обновление библиотеки SQLite до версии 3.26.0 (см. PR #783 и #935)
- [Прочее] Увеличение размера константы
MAX_NAME_LENGTH
для соответствия константе CS:GOMAX_PLAYER_NAME_LENGTH
- [Прочее] Использование безопасного
strcpy
где это возможно (см. PR #784 и #785) - [Прочее] Удаление интерфейса
IDataPack
(см. PR #864) - [Прочее] Обновление параметров в примере расширения для более sourcehook-friendly (хз даже как это правильнее всего перевести, чтобы было понятно - прим. переводчика) (см. PR #886)
- [Прочее] Добавление инструкции компилятора
#deprecated
дляGetMaxClients()
(см. PR #818) - [Прочее] Добавление инструкции компилятора
#deprecated
дляFormatUserLogText()
(см. PR #856) - [Прочее] Очистка кода официальных плагинов (см. PR #777)
- [Прочее] Исправление сборки на GCC 9 (см. PR #1024)
- [Прочее] Добавление инструкции компилятора
#deprecated
дляSQL_QuoteString()
(см. PR #792) - [Прочее] Добавление пометки о зависимости
FormatTime()
от платформы (см. PR #908)
Изменения SourcePawn
(в этом разделе возможна наибольшая концентрация ошибок и ляпов перевода, т.к. пункты в нём даны сложным техническим языком, и как именно перевести их без потери смысла - сложный вопрос. в данном разделе лучше смотреть приводимые ссылки к ознакомлению и читать шапку обсуждения + дискуссию, чем полагаться полностью на текст. некоторые пункты в переводе убраны насовсем из-за сложности представления - прим. переводчика)
- [Исправление] Исправление ошибки, связанной с инициализацией динамического
char[]
(см. PR #176) - [Исправление] Исправление утечки типа HEA при использовании оператора
break
в вложенных скоупах (см. PR #207) - [Исправление] Исправление ошибки, связанной с
return
вswitch
(см. проблему #236) - [Исправление] Исправление ошибки, приводящей к крашу при индексировании массива с помощью литерала (см. PR #286)
- [Исправление] Исправление ошибки, приводящей к крашу при использовании плохо сформированного if выражения (см. PR #297)
- [Исправление] Исправление ассерта, который срабатывал на неопределенном массиве (см. PR #290)
- [Исправление] Исправление ошибки, приводящей к крашу при включении профилировщика (см. PR #316)
- [Исправление] Уничтожение поддержки нескольких кодировок и исправление ошибки при запуске компилятора, приводившей к segmentation fault (см. PR #238)
- [Исправление] Ослабление проверки типов для неявно прототипированных функций (см. PR #371)
- [Исправление] Исправление опции запуска компилятора
-D
(см. PR #259) - [Исправление] Поиск стандартного include-файла в путях с инклудами
- [Исправление] Увеличение счётчика ошибок при срабатывании фатальной ошибки (см. PR #171)
- [Исправление] Исправление segmentation fault в DocGen (см. PR #185)
- [Исправление] Исправление неправильного отладочного
codestart
в переменных структуры (см. PR #309) - [Исправление] Исправление регистрации инкрементов/декрементов в интерпретаторе (см. PR #190)
- [Исправление] Исправление анонимной конкретизации методмапа (?!? - прим. переводчика) (см. PR #206)
- [Исправление] Запрет ссылок на неопределенные аргументы массива (см. PR #315)
- [Исправление] Удаление использования
pow10()
и прокладки для поддержки libc 2.27+ (см. PR #208) - [Исправление] Исправление некорректного упоминания проблемного файла в тексте ошибки когда отсутствует семиколон (точка с запятой) (см. PR #331)
- [Исправление] Запрет на переопределение typedefs и typesets (см. PR #351)
- [Исправление] Исправление ошибки, когда неиспользованные функции, помеченные
stock
, всё равно попадали в бинарный файл (см. PR #366) - [Исправление] Исправление предупреждения когда не-стоковые функции используются стоковыми функциями (?!? - прим. переводчика) (см. PR #352)
- [Новое] Добавлен новый переходный синтаксис для структур (см. PR #287)
- [Новое] Добавлена директива компилятора
#warning
(см. PR #170) - [Новое] Добавлена константа
__LINE__
(см. PR #180) - [Новое] Добавлены метаданные RTTI и заменены старые секции с отладочными символами (см. PR #210)
- [Новое] Копирование отладочного названия функции в стек для краш дампов (см. PR #159)
- [Новое] Добавление базовой поддержки отладочного API для брейкпоинтов (см. PR #216)
- [Новое] Полная поддержка базовых операций с плавающими числами в
spshell
(см. PR #195) - [Новое] Замена поля
codeversion
на поле поддерживаемых особенностей (см. PR #198) - [Улучшение] Добавлена оптимизация для
not
(см. PR #165) - [Улучшение] С++-фикация кода компилятора
- [Улучшение]Улучшение скорости компиляции
- Улучшение скорости компиляции за счёт оптимизации stgwrite (см. PR #183)
- Оптимизация компиляции для больших глобальных массивов (см. PR #184)
- Переписан лексер (см. PR #264)
- Улучшение производительности компилятора при обработке символов
- Переписано обрезание символов (см. PR #269)
- Полный постоянный переход на UTF-8 (см. PR #270)
- Удаление абстракции
MEMFILE
(см. PR #274) - Удаление трёх проходов при кодогенерации (см. PR #277)
- Исправление утечек памяти (см. PR #280)
- Замена макро-листа на хэш-таблицу (см. PR #282)
- Удаление
cmptag
(см. PR #260)
- [Улучшение] Упрощение инлайн фреймов выхода (см. PR #345)
- [Улучшение] Расширение семантики в инструкции
RETN
(см. PR #192) - [Улучшение] Представление нового способа кодирования массивов
- [Улучшение] Перенос проверок стэка в "function prologue" (см. PR #223)
- [Прочее] Совмещение реализации HALT с интерпретатором и верификатором (см. PR #175)
- [Прочее] Удалены
then
,begin
иend
токены (см. PR #161) - [Прочее] Удалено
#pragma rational
(см. PR #193) - [Прочее] Удалены неиспользуемые константы, вроде
cellbits
,charmin
(см. PR #360) - [Прочее] Добавлена команда
-v
/--version
вspshell
с выводом доступности JIT'а (см. PR #203) - [Прочее] Добавлен аргумент компилятора
-z
, позволяющий настроить степень сжатия (см. PR #272) - [Прочее] Улучшение тестов (см. PR #204)
- [Прочее] Исправление сборки на XCode 10 и выше (см. PR #326)
- [Прочее] Использование clang-форматирования для проверки стиля кода (см. PR #340)
Большое спасибо Peace-Maker за написание этого новостного поста для нас!
При копировании перевода, пожалуйста, указывайте прямую обратную ссылку на него!
Последнее редактирование: