SourceSDK — Инструкция по установке
Если у вас STEAM версия игры/игр, то после установки CSM Вы сможете играть без интернета в режиме офф-лайн, что намного удобнее, особенно модмейкерам.
REVOLUTiON CSM SourceSDK включает:
SourceSDK (v.17) — Hammer 4.1, HLMV, Face Poster, etc. от Valve
CST — компиляторы от Zoner
Map Compiller — GUI оболочка для компиляторов
Studio Compiler (v.0.3) — Model Compile, Material Compile, Model Decompile, VTF Export от Cannonfolder
StudioMDL — GUI StudioMDL — оболочка для компиляции моделей от Jed
VTF Explorer — эксплорер материалов
VTF Tool — конвертация материалов от Jed
WinBspZip — GUI оболочка для BspZip — добавления всех ресурсов карты непосредственно в BSP от Cannonfolder
Итак начнём.
Для начала качаем здесь сам инструмент CSMSourceSDKLiteSetup (16,9 МБ).
Установка
До того, как Вы скачали программу сделайте следующее (. Обязательно ДО . ):
- Создайте папку, для Вашей будущей программы SDK (Например: С:SourceSDK)
- 2.1) Если Вы являетесь счастливым владельцем Лицензионной версии игры (Half Life 2, CSS), то в корне игры будут лежать GCF файлы (это архивы), распакуйте программой GCFScape («http://nemesis.thewavelength.net/index.php?p=26») следующие архивы:
- source materials.gcf
- source models.gc
- source sounds.gcf
в эту папку (С:SourceSDK).
ВНИМАНИЕ -НЕ РАСПАКОВЫВАЙТЕ GCF ФАЙЛЫ СВЯЗАНЫ СО СТИМОМ:
Source SDK — Первая карта (От Чайника до Самовара)
- source engine.gcf
- winui.gcf
- platform.gcf (уже не используется но у многих он остался лежать грузом)
Из sourcesdk.gcf вы можете распаковать лишь sourcesdk_content, все остальное уже находиться в REVOLUTiON CSM SourceSDK! Главное НЕ распаковывайте папку bin и launcher из sourcesdk.gcf!
Далее распаковывайте ваши игры, используя вышеописаный способ.
Для Half-Life 2:
- half-life 2 content.gcf
Для Counter-Strike Source:
- counter-strike source shared.gcf
- counter-strike source client.gcf
Для Half-Life 2 Deathmatch:
- half-life 2 deathmatch.gcf
Для Day of Defeat Source:
- day of defeat source.gcf
И так далее.
- 2.2) Если вы владелец пиратской версии (пусть даже и с русской озвучкой), и у Вас нет файлов GCF, то Вам даже проще. Вам нужно просто скопировать папки hl2 и cstrike из папки вашего Half Life 2 или Counter Strike Source в ту папку (С:SourceSDK)
После того, как всё это будет проделано, начните установку Программы (SourceSDK). Укажите адрес, который Вы создали в пункте 1 и установите программу.
После завершения установки SDK, когда вы (или инсталлер по окончанию установки) впервые запустите SDKLauncher.exe ваш Firewall (если он у вас имеется, но скорее всего да) уведомит вас что приложение SteamEngine.exe пытается соединиться с localhost (127.0.0.1). Вам ОБЯЗАТЕЛЬНО нужно разрешить. Подобное вам предстоит сделать для hl2.exe когда вы впервые запустите игру.
Source Engine — Into the C++ (Программирование/Коддинг — подготовка)
Вот необходимые правила настройки вашего фаервола для работы SDK:
SteamEngine.exe
Rule: Allow
Protocol: TCP/IP
Direction: Outbound
Remote host: localhost:loopback (127.0.0.1)
Remote port: 27030
Rule: Allow
Protocol: TCP/IP and UPD
Direction: Outbound
Remote host: localhost:loopback (127.0.0.1)
Remote port: 27030
ВАЖНО: Если ваш фаервол не настроен, и пытается блокировать SteamEngine.exe от доступа к localhost, появиться окно SteamEngine.exe, и через некоторое время сообщит что не может подключиться. Как только ваш Firewall будет настроен на разрешение коннекта вышеописаных приложений, окно SteamEngine.exe появляться не будет.
Ну на этом установка программы закончена, попробуйте запустить программу.
Возможные Ошибки
- Если после всех настроек программа выдаёт Вам вот такое (ну или типа такого) сообщение:
То просто перезагрузите компьютер (Хотя случалось и такое, что после первой перезагрузки сообщение всё равно выскакивало, но после второй всё было ОК).
- Если вы увидели окно: .
(Значит с коннектом всё нормально), но после нажатия на кнопку Hammer Editor выскакивает ошибка (или же программа вообще не Запускается):
Нажмите в CSM кнопку Game Configurations, выберите игру и нажмите кнопку Edit. Далее нужно указать папку, как показано на рисунке:
Теперь всё должно заработать.
- Если не зарабтало:
Нужно создать файл GameInfo.txt
Содержимое файла GameInfo.txt для CSS:
Скопировать в буфер
«GameInfo» < game «Counter-Strike Source» title «COUNTER-STRIKE'» title2 «source» type multiplayer_only nomodels 1 nohimodel 1 nocrosshair 0 hidden_maps < «test_speakers» 1 «test_hardware» 1 >FileSystem < SteamAppId 240 // This will mount all the GCFs we need (240=CS:S, 220=HL2). ToolsAppId 211 // Tools will load this (ie: source SDK caches) to get things like materialsdebug, materialseditor, etc. // // The code that loads this file automatically does a few things here: // // 1. For each «Game» search path, it adds a «GameBin» path, in bin // 2. For each «Game» search path, it adds another «Game» path in front of it with _ at the end. // For example: c:hl2cstrike on a french machine would get a c:hl2cstrike_french path added to it. // 3. For the first «Game» search path, it adds a search path called «MOD». // 4. For the first «Game» search path, it adds a search path called «DEFAULT_WRITE_PATH». // // // Search paths are relative to the base directory, which is where hl2.exe is found. // // |gameinfo_path| points at the directory where gameinfo.txt is. // We always want to mount that directory relative to gameinfo.txt, so // people can mount stuff in c:mymod, and the main game resources are in // someplace like c:program filesvalvesteamsteamapps\half-life 2. // SearchPaths < Game |gameinfo_path|.
Game cstrike Game hl2 >> >
Содержимое файла GameInfo.txt для HL2:
Скопировать в буфер
«GameInfo» < game «HALF-LIFE 2» title «HALF-LIFE'» type singleplayer_only FileSystem < SteamAppId 220 // This will mount all the GCFs we need (240=CS:S, 220=HL2).
ToolsAppId 211 // Tools will load this (ie: source SDK caches) to get things like materialsdebug, materialseditor, etc. // // The code that loads this file automatically does a few things here: // // 1. For each «Game» search path, it adds a «GameBin» path, in bin // 2. For each «Game» search path, it adds another «Game» path in front of it with _ at the end. // For example: c:hl2cstrike on a french machine would get a c:hl2cstrike_french path added to it. // 3. For the first «Game» search path, it adds a search path called «MOD». // 4. For the first «Game» search path, it adds a search path called «DEFAULT_WRITE_PATH». // // // Search paths are relative to the base directory, which is where hl2.exe is found. // // |gameinfo_path| points at the directory where gameinfo.txt is. // We always want to mount that directory relative to gameinfo.txt, so // people can mount stuff in c:mymod, and the main game resources are in // someplace like c:program filesvalvesteamsteamappshalf-life 2. // SearchPaths < Game |gameinfo_path|. Game hl2 >> >
Источник: xgm.guru
Source sdk base 2007 что это за программа
Подробная информация и инструкция для начинающих пользователей
Список инструментов SDK для работы в Steam
Сброс настроек Hammer Editotr до заводских
Что делать, если слетели параметры компиляции F9
Это руководство на других языках
Комментарии
Подробная информация и инструкция для начинающих пользователей
Хотите научиться делать карты, но не знаете, как настроить программу? Вы нашли ответ на свой вопрос. Теперь программу Source SDK не нужно настраивать, в Steam есть упрощённая версия Source SDK встроена почти в каждую игру от Valve. Инструменты Source SDK разделены по частям, их вы сможете найти вот в этих папках:
Вот список игр и их директории, которые содержат инструменты SourceSDK + Hammer Editor:
Team Fortress 2: Steam → SteamApps → common → Team Fortress 2 → bin.
Half-Life 2: Steam → SteamApps → common → Half-Life 2 → bin.
Half-Life 2 Deathmatch: Steam → SteamApps → common → Half-Life 2 Deathmatch → bin.
Day of Defeat Source: Steam → SteamApps → common → Day of Defeat Source → bin.
Counter-Strike Source: Steam → SteamApps → common → Counter-Strike Source → bin.
Portal: Steam → SteamApps → common → Portal → bin.
Fistful of Frags: Steam → SteamApps → common → Fistful of Frags → sdk → bin.
Codename CURE: Steam → SteamApps → common → Codename CURE → bin.
Synergy: Steam → SteamApps → common → Synergy → bin.
Garry’s Mod: Steam → SteamApps → common → GarrysMod → bin.
Перейдите по этим папкам и вы найдёте встроенные инструменты SDK. Кстати говоря, Hammer Editor там уже настроен, можно смело запускать и создавать карты.
Теперь нужно только запустить редактор, кликните по ярлычку Hammer.exe для запуска редактора карт. И смело можете создавать или редактировать карты, которые пожелаете. Ну, а ежели вам понадобятся другие инструменты типа Model Viewer, то в этой же папке bin ищите ярлыки запуска инструментов SDK и смело запускайте их. В некоторых играх от Valve уже вложены базовые инструменты. Типа, просмотр моделей, создатель карт и так далее.
Список инструментов SDK для работы в Steam
Что бы создавать карты для таких игр как Left 4 Dead 2 или Counter-Strike: Global Offensive вам потребуется навести курсор на слово Библиотека в Steam, найти похожее название SDK для игры и установить его. К примеру, для Counter-Strike: Global Offensive, вам понадобится инструмент Counter-Strike: Global Offencive – SDK. Аналогично для Left 4 Dead 2 вам понадобится инструмент под названием Left 4 Dead 2 Authoring Tools в общем я думаю вы поняли и разберётесь самостоятельно.
Вы так же можете попробовать установить и поработать со следующими бесплатными инструментами:
— Source SDK
— Source SDK Base 2006
— Source SDK Base 2007
— Source SDK Base 2013 Dedicated Server
— Source SDK Base 2013 Multiplayer
— Source SDK Base 2013 Singleplayer
Для пользователей, любящих старый движок игры — GoldSource тоже есть SDK:
— Half-Life SDK
— Sven Co-op SDK
Рекомендую попробовать другие SDK инструменты в Steam:
— Alien Swarm — SDK
Другие инструменты SDK вы получите при покупке игр в Магазине Steam. Например, купив игру Rust, вам в комплекте с ним дадут инструмент под названием Rust — SDK. Без покупки игры вы не сможете установить этот инструмент, сначала вам нужно будет приобрести игру в Магазине Steam, а затем устанавливать этот самый инструмент.
Смотрите видео-уроки по созданию карт или модов через SourceSDK на YouTube, устанавливайте инструменты через Библиотека → Инструменты.
Всем начинающим создателям карт желаю удачи!
Сброс настроек Hammer Editotr до заводских
1. Нажмите: Win+R и введите следующую команду:
reg delete HKCUSoftwareValveHammer /f
2. Нажмите: Enter — После нажатия настройки Hammer Editor сброситься до заводских.
3. Запустите редактор со сброшенными до заводских настроек и настройте его под себя.
- Закройте Hammer если он запущен в данный момент.
- Из Меню пуск, Выберите Выполнить. (или используйте комбинацию клавиш win+R).
- Введите regedit и нажмите OK.
- Перейдите к началу древа.
- Пройдите по пути HKEY_CURRENT_USERSoftwareValveHammer.
- Сделайте резервное копирование настроек Hammer, щёлкните правой кнопкой мыши на на элемент Hammer И выберите пункт меню Экспортировать.
- Напишите имя файла (например hammer_settings.reg) и сохраните на ваш рабочий стол.
- Кликните правой кнопкой мыши на элемент Hammer и выберите пункт Удалить.
- Нажмите Да для подтверждения.
- Закройте Regedit и запустите Hammer для восстановления настроек.
Что делать, если слетели параметры компиляции F9
Зайдите в папку bin и там найдите файл с именем CmdSeq.wc и удалите его.
Перезапустите Hammer и теперь ваши настройки компиляции по умолчанию были восстановлены.
Источник: steamcommunity.com
Source sdk base 2007 что это за программа
Source SDK — это целый набор инструментов для создания модов, причем под модами имеется в виду отдельные самостоятельные игры, но требующие установки только одной из игр сделанных на движке source игр от компании valve. Покупая одну игру вы может через Steam скачать бесплатно неограниченное количество модов сделанными энтузиастами. Все моды желательно создавать с помощью SDK Base 2007 ( год назад называлась Source Orange Box) — это база для мода, делающая независимым от других игр. Так как при обновлении игры ваш может выйти из строя если он взаимодействует с какой то либо игрой. Благодаря SDK Base 2007 моду даже не будет требоваться как раньше использовании кода игры, мод будет работать параллельно с игрой.
Последние графические возможности Source движка вы можете посмотреть в игре Left4Dead 2.
Расскажу о возможностях графических в большинстве игр таких как: Counter Strike Source, Portal, Half Life 2. В данном случае именно с этими играми имел практический опыт.
С 2004 года в движке произошло только одно крупное изменение в 2006 году была добавлена поддержка HDR. Эффект HDR наблюдается в динамическом изменении освещения, яркости неба. Под разным углом вашего наблюдения яркость неба будет изменяться, также у большинства источников освещения наблюдается эффект часто называемый — Bloom — динамические ореолы вокруг осветителей.
Перечислю возможности 2006 года: Отражения в воде и объектах (cubemaps), normal map, specular maps, blendig maps,Radiocity — просчитывание освещения, физика Havok, разрущающиеся объекты, ragdoll объекты, поддержка качественной воды.
Для созданий карт к популярным играм типа Counter Strike Source существует в Source SDK редактор Hammer. Функции редактора были усовершенствованы. Теперь блоки могут многополигонными, для создания гор, насыпей, болот, оврагов и т.п. И Теперь доступна рисовальная кисть, которая позволяет смешивать текстуры, тем самым переходы между текстурами полигонов и блоков теперь очень мягкие и естественные.
Появились новые объекты в entity tool, что также расширяет функционал редактора.
Кроме того в комплекте есть программа Face Poser. Программа позволяет из готовых анимация, соединяя их, делать длинные анимации. По сути дела лепить из готовых новые анимации. Это позволяет в модах создавать хореографические сценки или даже снимать свои собственные фильмы использую Source движок. В интернете большое количество фильмов созданных с помощью Source движка.
Source движок на сегодня самый популярный по моддингу, количество модов сделанных с помощью SDK — очень большое количество. Ни один другой движок не может похвастаться такой популярностью.
- Ромхакинг (ROMhacking)
- Перевод Стратегуса
- Skywind — реинкарнация Morrowind
- Лучшие игровые движки в Steam
Источник: gcup.ru
Source sdk base 2007 что это за программа
Будь в курсе последних новостей из мира гаджетов и технологий
iGuides для смартфонов Apple
История игровых движков №6 — Source
Егор Морозов — 10 марта 2017, 12:25
Source — самый популярный игровой движок: в тот момент, когда вы читаете эту статью, в игры, написанные на нем, может играть больше миллиона человек:
И это не удивительно: движок разработала компания Valve, которая владеет самым крупным игровым магазином — Steam, а ее игры стабильно находятся на вершине игрового топа.
Но, разумеется, путь на вершину славы был долог: история разработки движка Source началась в далеком 1998 году, когда разработчики Valve, завершая работу над Half-Life 1, поняли, что у них есть множество наработок, которые хотелось бы где-нибудь использовать. И именно тогда и появилось разделение на два движка: GoldSrc, на котором работала текущая версия игра, и Source, который относился к будущей версии игры и имел новые, еще неотлаженные, технологии. И поэтому на выставке E3, когда Valve демонстрировала бета-версию игры Half-Life 2, было сказано, что игра работает на движке Source. Это название прижилось, и в дальнейшем GoldSrc полностью исчез.
Source Engine 2004 (Source Engine 6)
Первая публичная версия движка вышла в 2004 году вместе с полюбившимся многим шутером Counter Strike, который в честь движка был называн Source. Изменений с оригинальной версии было достаточно много: более чёткие текстуры (512×512 пикселов против 128×128 в оригинале) и проработанные трёхмерные модели. Широко используются возможности движка, связанные с зеркальными отражениями — у оружия, снабжённого оптическим прицелом, можно видеть окружающую обстановку (но не модели других игроков) сзади игрока на линзе прицела, когда оно находится в не приближённом состоянии.
Звуковые эффекты теперь соответствуют акустическим условиям, введена поддержка колонок 5.1 и 7.1. Новые возможности движка помогли сделать карты более детализированными: появились валяющиеся на земле бутылки, пакеты. Физический движок, созданный на основе Havok, позволил улучшить физику полёта гранат, взрывы, а также эффекты от их поражения в сторону большей реалистичности.
Чуть позже в этом же году вышла Half-Life 2, в которой к приведенным выше возможностям добавились: шейдерный рендеринг (Half-Life 2 была одной из первых игр, в которой использовалась шейдерная вода) и лицевая анимация (с поддержкой точной синхронизации речи актеров с анимацией), а с помощью Havok был получен эффект «тряпичной куклы»:
Эта версия движка использовалась до 2005 года, и является на данный момент устаревшей — все игры, написанные на SE 6, были переведены на более новые движки.
Source Engine 2005 (Source Engine 7)
- HDR Skybox — результат наложения нескольких экспозиций неба, для реализации эффекта смены экспозиции в реальном времени. Для Half-Life 2: Lost Coast было создано более 16 различных HDR Skybox.
- HDR Refraction Effect — HDR свет проходит через преломляющие материалы и принимает свойства этих материалов (например, когда луч света проходит сквозь цветные витражи в монастыре на Half-Life 2: Lost Coast, на пол отбрасываются цветные блики).
- HDR Light Maps — карты света, сгенерированные при помощи эффекта radiosity (свет не только отражается от объектов и попадает в глаз наблюдателя, но и попадает на другие объекты, отражаясь от них). Можно заметить, например, внутри монастыря в Half-Life 2: Lost Coast, по солнечным пятнам на стенах, противоположных окнам.
Source Engine 2006 (Source Engine 7: Base Source Engine 2)
Первая версия движка, имеющая доступный всем комплект разработчика — Source SDK Base 2006, что позволило множеству людей создавать свои модификации к играм Valve. Движок несколько доработали — он поддерживает обновленную лицевую анимацию, многоядерный рендеринг и обновленный HDR.
Так как созданные на SDK 2006 года модификации не совместимы с более новыми версиями движка, то авторами некоторых модов эта версия движка все еще используется, и ее с натяжкой можно считать актуальной.
Source Engine 2007 (Source Engine 14)
Глобальный релиз, впервые использовался в сборнике игр от Valve — The Orange Box (в него входят: Half-Life 2, Half-Life 2: Episode One, Half-Life 2: Episode Two, Portal и Team Fortress 2). В этой версии был обновлен шейдерный рендеринг, значительно доработано динамическое освещение и затенение, появилась система мягких частиц (позволившая сильно улучшить качество таких эффектов, как дождь и огонь), была добавлена кинематографическая физика, а так же новая лицевая анимация (поддерживалось ее аппаратное ускорение на видеокартах) и улучшена поддержка многоядерных процессоров.
SE 14 стала первой версией движка, поддерживающей консоли — The Orange Box вышел не только под ПК, но и под PlayStation 3 и Xbox 360.
Ровно как и с SE 7, модификации, созданные в SDK к 14ой версии, не работали на более новых, поэтому эта версия движка до сих пор используется.
Source Engine 2008 (Source Engine 14: Base Source 3)
Версия движка, созданная под игру Left 4 Dead:
- Динамическое разрушение игровой геометрии — до этого линии разрушения должны были указываться создателем карты.
- Деформируемые объекты — до этого физические модели не могли быть изменены любым образом, кроме как на основе заранее просчитанной анимации.
Source Engine 2009 (Source Engine 15)
Версия, вышедшая с игрой Left 4 Dead 2, в дальнейшем на эту версию были обновлены все игры Valve того времени. В этой версии обновлены все функции, значительно доработана система частиц, лицевая анимация, масштабирование и возможность обновлений.
Source Engine 2010 (Source Engine 17)
Первая версия движка, портированная под macOS. Изначально под яблочную ОС был портирован пакет игр The Orange Box, а в дальнейшем все новые игры Valve стали выходить и под Mac, и под Windows.
Source Engine Multiplayer (Source Engine 19, 21 и 23)
Версии движка, заточенные под мультиплеерные игры, такие как Dota 2 и CS: GO. Так же в 2012 году появилась поддержка Linux: под него была портирована игра Team Fortress 2, а в дальнейшем и другие игры Valve.
Source Engine 2013 (Source Engine 24)
Текущая версия движка, на которую Valve перевела большинство своих игр. В числе изменений: для оптимизации использования дискового пространства было решено отказаться от использования громоздких .GCF-файлов (архивов с ресурсами игр) в пользу файловой системы под кодовым именем SteamPipe. Игры на новом движке устанавливаются теперь в директорию SteamSteamAppsCommon, а файлы игры хранятся в .VPK-файлах. Для игр Counter-Strike: Source, Team Fortress 2 и Half-Life 2: Deathmatch создана удобная система добавления пользовательского контента (модов): присутствует папка custom, в которой создаётся папка с произвольным именем, и уже в неё складываются классические папки материалов модификации (materials, models и т.д.).
Так же была улучшена совместимость с Linux, а в мае 2014 года Nvidia портировала Portal и Half-life 2 на Android, для своей приставки Nvidia Shield (впрочем, умельцы смогли запустить эти игры и на других устройствах под управлением ОС Android, однако производительность была низкой).
Source 2
Принципиально новая версия движка, выпущенная в 2015 году компанией Valve вместе с выходом обновленной игры Dota 2 — Reborn. Увы — технической презентации не было, известно лишь, что движок все так же работает на API OpenGL (возможно в будущем добавится API Vulkan), а так же умеет задействовать столько ядер процессора, сколько у него есть. Так же Valve обещали, что движок будет лучше работать на старых компьютерах (уменьшено потребление ОЗУ), однако Dota 2 Reborn оказалась тяжелее Dota 2 на Source Engine 24. Еще одно важное добавление — появилась поддержка VR, и первая игра-демонстрация The Lab для HTC Vive:
Будущее движка
О дальнейшем развитие движка Valve молчит, и это для геймеров не новость (все же ждут слухов о Half-Life 3 и Portal 3, правда?) Пока что вторая версия движка достаточно сырая и требует доработки, и, очевидно, Valve fix it исправляет ошибки, а о будущих играх и версиях движка знает только Гейб Ньюэлл.
Источник: www.iguides.ru
Анализ проекта Source SDK
Source SDK — набор утилит для создания модификаций на движке Source, разработанный корпорацией Valve. Исходные коды проекта были скачаны и проверены ещё в конце 2013 года. На новогодних праздниках я планировал написать статью о результатах проверок. Но лень победила творчество, и я приступил к написанию статьи только когда вернулся на работу.
Впрочем, я думаю, вряд ли за этот период что-то успело измениться в исходных кодах. Предлагаю вашему вниманию ознакомиться с подозрительными местами, которые я нашёл с помощью анализатора кода PVS-Studio.
Что такое Source SDK
Позаимствую описание проекта из Wikipedia:
Source SDK (англ. Software Development Kit — «набор разработчика приложений») — набор утилит для создания модификаций на движке Source, бесплатно распространяемый Valve через сеть Steam всем игрокам, купившим любую Source-игру от Valve. Данный набор позволяет редактировать карты на двух версиях движка — 15-ой и обновлённой 7-ой (старая версия движка, используемая в Half-Life 2, не используется из-за совместимости с новой версией).
Проект достаточно большой, так что не удивительно, что в нём всегда можно выявить недочёты. Анализ был выполнен с помощью инструмента PVS-Studio.
Подозрительные выражения
Деление переменных на самих себя
static void DrawPyroVignette(. ) < . Vector2D vMaxSize( ( float )nScreenWidth / ( float )nScreenWidth / NUM_PYRO_SEGMENTS * 2.0f, ( float )nScreenHeight / ( float )nScreenHeight / NUM_PYRO_SEGMENTS * 2.0f ); . >
PVS-Studio выдаёт предупреждение V501 на следующий файл: viewpostprocess.cpp 1888
Обратите внимание, вот на это:
- ( float )nScreenWidth / ( float )nScreenWidth
- ( float )nScreenHeight / ( float )nScreenHeight
Это очень подозрительные выражения. Я затрудняюсь сказать, что здесь должно быть написано, но скорее всего, что-то иное.
Двойной вызов функции IsJoystickPOVCode()
void TextEntry::OnKeyCodePressed(KeyCode code)
PVS-Studio выдаёт предупреждение V501 на следующий файл: textentry.cpp 1639
Два раза вызывается функция ‘IsJoystickPOVCode(code)’. Второй вызов избыточен или следовало вызвать другую функцию.
Всегда ложное условие
unsigned numbounce = 100; int ParseCommandLine( int argc, char **argv, bool *onlydetail ) < . numbounce = atoi (argv[i]); if ( numbounce < 0 ) < Warning( «Error: expected non-negative value after ‘-bounce’n»); return 1; >. >
PVS-Studio выдаёт предупреждение V547 на следующий файл: vrad.cpp 2412.
Странное сравнение строк
void CMultiplayRules::DeathNotice( . )
PVS-Studio выдаёт предупреждение V666 на следующий файл: multiplay_gamerules.cpp 860.
Как я понимаю, хотели проверить, что название оружия начинается с символов «NPC_». Но тогда этот код содержит опечатку. Наверное, правильный вариант такой:
else if ( strncmp( killer_weapon_name, «NPC_», 4 ) == 0 )
Ошибки при работе с массивами
Неправильное определение размера массива
#define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0])) #define _ARRAYSIZE(A) RTL_NUMBER_OF_V1(A) int GetAllNeighbors( const CCoreDispInfo *pDisp, int iNeighbors[512] ) < . if ( nNeighbors < _ARRAYSIZE( iNeighbors ) ) iNeighbors[nNeighbors++] = pCorner->m_Neighbors[i]; . >
PVS-Studio выдаёт предупреждение V511 на следующий файл: disp_vrad.cpp 60
Формальный аргумент «int iNeighbors[512]» это не массив. Это просто указатель. Число ‘512’ подсказывает программисту, что, скорее всего, указатель ссылается на массив из 512 элементов. Но не более того. Выражение ‘sizeof(iNeighbors)’ незаконно. Оно возвращает не размер массива, а размер указателя.
То есть выражение ‘sizeof(iNeighbors)’ будет равно ‘sizeof(void *).
Эту ошибку можно было бы избежать, если использовать более безопасный макрос. Например, такой:
template char (array)[N]))[N]; #define arraysize(array) (sizeof(ArraySizeHelper(array)))
При попытке вычисления размера указателя, возникнет ошибка на этапе компиляции. Такой макрос используется в проекте Chromium. Подробнее про эту магическую конструкцию можно прочитать в статье «PVS-Studio vs Chromium».
Неправильное определение длины строки
typedef struct message_s < . char *text; . >message_t; int CMessageCharsPanel::AddText(. ) < . msg->text = new char[ Q_strlen( data ) + 1 ]; Assert( msg->text ); Q_strncpy( msg->text, data, sizeof( msg->text ) ); . >
PVS-Studio выдаёт предупреждение V579 на следующий файл: vgui_messagechars.cpp 240
Выражение «sizeof(msg->text)» вычисляет размер указателя, а вовсе не длину строки. Скорее всего, здесь следовало написать: Q_strcpy( msg->text, data);
Работа с уничтоженным массивом
static Activity DetermineExpressionMoveActivity( CChoreoEvent *event, CAI_BaseNPC *pNPC ) < . const char *pszAct = Q_strstr( sParam2, » » ); if ( pszAct ) < char szActName[256]; Q_strncpy( szActName, sParam2, sizeof(szActName) ); szActName[ (pszAct-sParam2) ] = ‘