commit 38bbebb1ccfd6de02e0d5a3c2f6ff7fbac16d9a0 Author: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Tue Feb 25 05:13:39 2020 +0200 Initial commit diff --git a/ext/props.dll b/ext/props.dll new file mode 100644 index 0000000..7ec5230 Binary files /dev/null and b/ext/props.dll differ diff --git a/ext/props.exp b/ext/props.exp new file mode 100644 index 0000000..4624bb1 Binary files /dev/null and b/ext/props.exp differ diff --git a/ext/props.lib b/ext/props.lib new file mode 100644 index 0000000..ec6c890 Binary files /dev/null and b/ext/props.lib differ diff --git a/ext/props.pdb b/ext/props.pdb new file mode 100644 index 0000000..2d875b8 Binary files /dev/null and b/ext/props.pdb differ diff --git a/ext/props.txt b/ext/props.txt new file mode 100644 index 0000000..87813dc --- /dev/null +++ b/ext/props.txt @@ -0,0 +1,122 @@ +"Props" +{ + "props_c17" + { + "1" "props_c17/Frame002a.mdl" + "2" "props_c17/FurnitureArmchair001a.mdl" + "3" "props_c17/FurnitureChair001a.mdl" + "4" "props_c17/FurnitureCupboard001a.mdl" + "5" "props_c17/FurnitureDrawer001a.mdl" + "6" "props_c17/FurnitureDrawer002a.mdl" + "7" "props_c17/FurnitureDrawer003a.mdl" + "8" "props_c17/FurnitureDresser001a.mdl" + "9" "props_c17/FurnitureShelf001a.mdl" + "10" "props_c17/FurnitureShelf001b.mdl" + "11" "props_c17/FurnitureTable001a.mdl" + "12" "props_c17/FurnitureTable002a.mdl" + "13" "props_c17/FurnitureTable003a.mdl" + "14" "props_c17/bench01a.mdl" + "15" "props_c17/oildrum001_explosive.mdl" + "16" "props_c17/playground_swingset_seat01a.mdl" + "17" "props_c17/playground_teetertoter_seat.mdl" + "18" "props_c17/shelfunit01a.mdl" + } + "props_canal" + { + "1" "props_canal/boat001a.mdl" + "2" "props_canal/boat001b.mdl" + "3" "props_canal/boat002b.mdl" + } + "props_combine" + { + "1" "props_combine/breenbust.mdl" + "2" "props_combine/breenbust_Chunk01.mdl" + } + "props_debris" + { + "1" "props_debris/concrete_column001a_Core.mdl" + "2" "props_debris/concrete_spawnplug001a.mdl" + "3" "props_debris/tile_wall001a_Core.mdl" + "4" "props_debris/wood_board01a.mdl" + "5" "props_debris/wood_board02a.mdl" + "6" "props_debris/wood_board03a.mdl" + "7" "props_debris/wood_board04a.mdl" + "8" "props_debris/wood_board05a.mdl" + "9" "props_debris/wood_board06a.mdl" + "10" "props_debris/wood_board07a.mdl" + } + "props_docks" + { + "1" "props_docks/channelmarker01a.mdl" + "2" "props_docks/channelmarker01b.mdl" + "3" "props_docks/channelmarker01c.mdl" + "4" "props_docks/channelmarker02a.mdl" + "5" "props_docks/channelmarker02b_chunk01a.mdl" + "6" "props_docks/channelmarker02b_chunk01b.mdl" + "7" "props_docks/channelmarker02b_chunk01c.mdl" + "8" "props_docks/channelmarker02b_chunk01d.mdl" + "9" "props_docks/channelmarker_gib01.mdl" + "10" "props_docks/channelmarker_gib02.mdl" + "11" "props_docks/channelmarker_gib03.mdl" + "12" "props_docks/channelmarker_gib04.mdl" + } + "props_interiors" + { + "1" "props_interiors/Furniture_CabinetDrawer01a.mdl" + "2" "props_interiors/Furniture_Couch01a.mdl" + "3" "props_interiors/Furniture_Couch02a.mdl" + "4" "props_interiors/Furniture_Desk01a.mdl" + "5" "props_interiors/Furniture_Vanity01a.mdl" + "6" "props_interiors/Furniture_chair01a.mdl" + "7" "props_interiors/Furniture_shelf01a.mdl" + } + "props_junk" + { + "1" "props_junk/GlassBottle01a.mdl" + "2" "props_junk/cardboard_box001a.mdl" + "3" "props_junk/cardboard_box001b.mdl" + "4" "props_junk/cardboard_box002a.mdl" + "5" "props_junk/cardboard_box002b.mdl" + "6" "props_junk/cardboard_box003a.mdl" + "7" "props_junk/cardboard_box003b.mdl" + "8" "props_junk/cardboard_box004a.mdl" + "9" "props_junk/garbage_coffeemug001a.mdl" + "10" "props_junk/garbage_glassbottle001a.mdl" + "11" "props_junk/garbage_glassbottle002a.mdl" + "12" "props_junk/garbage_glassbottle003a.mdl" + "13" "props_junk/gascan001a.mdl" + "14" "props_junk/glassjug01.mdl" + "15" "props_junk/propane_tank001a.mdl" + "16" "props_junk/terracotta01.mdl" + "17" "props_junk/vent001.mdl" + "18" "props_junk/watermelon01.mdl" + "19" "props_junk/wood_crate001a.mdl" + "20" "props_junk/wood_crate001a_damaged.mdl" + "21" "props_junk/wood_crate001a_damagedmax.mdl" + "22" "props_junk/wood_crate002a.mdl" + "23" "props_junk/wood_pallet001a.mdl" + "24" "props_junk/watermelon01_chunk01a.mdl" + "25" "props_junk/watermelon01_chunk01b.mdl" + "26" "props_junk/watermelon01_chunk01c.mdl" + } + "props_lab" + { + "1" "props_lab/dogobject_wood_crate001a_damagedmax.mdl" + } + "props_wasteland" + { + "1" "props_wasteland/barricade001a.mdl" + "2" "props_wasteland/cafeteria_bench001a.mdl" + "3" "props_wasteland/cafeteria_table001a.mdl" + "4" "props_wasteland/dockplank01a.mdl" + "5" "props_wasteland/dockplank01b.mdl" + "6" "props_wasteland/prison_padlock001a.mdl" + "7" "props_wasteland/prison_shelf002a.mdl" + "8" "props_wasteland/prison_sink001b.mdl" + "9" "props_wasteland/prison_toilet01.mdl" + "10" "props_wasteland/wood_fence01a.mdl" + "11" "props_wasteland/wood_fence01b.mdl" + "12" "props_wasteland/wood_fence01c.mdl" + "13" "props_wasteland/wood_fence02a.mdl" + } +} \ No newline at end of file diff --git a/ipch/props-32c7acc0/props-33ed56da.ipch b/ipch/props-32c7acc0/props-33ed56da.ipch new file mode 100644 index 0000000..dc8cce4 Binary files /dev/null and b/ipch/props-32c7acc0/props-33ed56da.ipch differ diff --git a/ipch/props-32c7acc0/props-9fb28160.ipch b/ipch/props-32c7acc0/props-9fb28160.ipch new file mode 100644 index 0000000..86c68d4 Binary files /dev/null and b/ipch/props-32c7acc0/props-9fb28160.ipch differ diff --git a/jbmod.sdf b/jbmod.sdf new file mode 100644 index 0000000..c14b7a6 Binary files /dev/null and b/jbmod.sdf differ diff --git a/jbmod.sln b/jbmod.sln new file mode 100644 index 0000000..ca70f3b --- /dev/null +++ b/jbmod.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "props", "props\props.vcxproj", "{1C95495F-E6A5-4F65-B54F-9E8044AC0903}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1C95495F-E6A5-4F65-B54F-9E8044AC0903}.Debug|Win32.ActiveCfg = Debug|Win32 + {1C95495F-E6A5-4F65-B54F-9E8044AC0903}.Debug|Win32.Build.0 = Debug|Win32 + {1C95495F-E6A5-4F65-B54F-9E8044AC0903}.Release|Win32.ActiveCfg = Release|Win32 + {1C95495F-E6A5-4F65-B54F-9E8044AC0903}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/jbmod.suo b/jbmod.suo new file mode 100644 index 0000000..057d84b Binary files /dev/null and b/jbmod.suo differ diff --git a/props/Debug/CL.read.1.tlog b/props/Debug/CL.read.1.tlog new file mode 100644 index 0000000..6dfa38d Binary files /dev/null and b/props/Debug/CL.read.1.tlog differ diff --git a/props/Debug/CL.write.1.tlog b/props/Debug/CL.write.1.tlog new file mode 100644 index 0000000..ee02aa4 Binary files /dev/null and b/props/Debug/CL.write.1.tlog differ diff --git a/props/Debug/cl.command.1.tlog b/props/Debug/cl.command.1.tlog new file mode 100644 index 0000000..7caca7c Binary files /dev/null and b/props/Debug/cl.command.1.tlog differ diff --git a/props/Debug/extern.obj b/props/Debug/extern.obj new file mode 100644 index 0000000..282ce1d Binary files /dev/null and b/props/Debug/extern.obj differ diff --git a/props/Debug/link.command.1.tlog b/props/Debug/link.command.1.tlog new file mode 100644 index 0000000..6056075 Binary files /dev/null and b/props/Debug/link.command.1.tlog differ diff --git a/props/Debug/link.read.1.tlog b/props/Debug/link.read.1.tlog new file mode 100644 index 0000000..768317d Binary files /dev/null and b/props/Debug/link.read.1.tlog differ diff --git a/props/Debug/link.write.1.tlog b/props/Debug/link.write.1.tlog new file mode 100644 index 0000000..ab6eee5 Binary files /dev/null and b/props/Debug/link.write.1.tlog differ diff --git a/props/Debug/mt.command.1.tlog b/props/Debug/mt.command.1.tlog new file mode 100644 index 0000000..9793f0d Binary files /dev/null and b/props/Debug/mt.command.1.tlog differ diff --git a/props/Debug/mt.read.1.tlog b/props/Debug/mt.read.1.tlog new file mode 100644 index 0000000..9ff028a Binary files /dev/null and b/props/Debug/mt.read.1.tlog differ diff --git a/props/Debug/mt.write.1.tlog b/props/Debug/mt.write.1.tlog new file mode 100644 index 0000000..fff40c8 Binary files /dev/null and b/props/Debug/mt.write.1.tlog differ diff --git a/props/Debug/plugin.obj b/props/Debug/plugin.obj new file mode 100644 index 0000000..77b3d47 Binary files /dev/null and b/props/Debug/plugin.obj differ diff --git a/props/Debug/props.Build.CppClean.log b/props/Debug/props.Build.CppClean.log new file mode 100644 index 0000000..553f722 --- /dev/null +++ b/props/Debug/props.Build.CppClean.log @@ -0,0 +1,23 @@ +..\..\Steam\steamapps\common\Source SDK Base\bin\props.ilk +..\..\Steam\steamapps\common\Source SDK Base\bin\props.pdb +D:\jbmod\props\..\..\Steam\steamapps\common\Source SDK Base\bin\props.dll +D:\jbmod\props\Debug\cl.command.1.tlog +D:\jbmod\props\Debug\CL.read.1.tlog +D:\jbmod\props\Debug\CL.write.1.tlog +D:\JBMOD\PROPS\DEBUG\EXTERN.OBJ +D:\jbmod\props\Debug\link.command.1.tlog +D:\jbmod\props\Debug\link.read.1.tlog +D:\jbmod\props\Debug\link.write.1.tlog +D:\jbmod\props\Debug\mt.command.1.tlog +D:\jbmod\props\Debug\mt.read.1.tlog +D:\jbmod\props\Debug\mt.write.1.tlog +D:\JBMOD\PROPS\DEBUG\PROPS.DLL.INTERMEDIATE.MANIFEST +D:\jbmod\props\Debug\props.write.1.tlog +D:\JBMOD\PROPS\DEBUG\SIGSCAN.OBJ +D:\jbmod\props\Debug\vc100.idb +D:\JBMOD\PROPS\DEBUG\VC100.PDB +D:\STEAM\STEAMAPPS\COMMON\SOURCE SDK BASE\BIN\PROPS.DLL +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\STEAM\STEAMAPPS\COMMON\SOURCE SDK BASE\BIN\PROPS.ILK +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\STEAM\STEAMAPPS\COMMON\SOURCE SDK BASE\BIN\PROPS.PDB diff --git a/props/Debug/props.dll.intermediate.manifest b/props/Debug/props.dll.intermediate.manifest new file mode 100644 index 0000000..ecea6f7 --- /dev/null +++ b/props/Debug/props.dll.intermediate.manifest @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/props/Debug/props.lastbuildstate b/props/Debug/props.lastbuildstate new file mode 100644 index 0000000..a9e33cf --- /dev/null +++ b/props/Debug/props.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v100:false +Debug|Win32|D:\jbmod\| diff --git a/props/Debug/props.log b/props/Debug/props.log new file mode 100644 index 0000000..539c6c1 --- /dev/null +++ b/props/Debug/props.log @@ -0,0 +1,25 @@ +Build started 05.03.2018 3:42:40. + 1>Project "D:\jbmod\props\props.vcxproj" on node 2 (build target(s)). + 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(299,5): warning MSB8004: каталог Output заканчивается не косой чертой. Этот экземпляр построения добавит косую черту, поскольку она необходима для правильного определения каталога Output. + 1>InitializeBuildStatus: + Creating "Debug\props.unsuccessfulbuild" because "AlwaysCreate" was specified. + ClCompile: + C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /ID:\source2006\game_shared /ID:\source2006\dlls /ID:\source2006\public\tier1 /ID:\source2006\public\tier0 /ID:\source2006\public /ID:\source2006\common /ID:\source2006\ /ZI /nologo /W3 /WX- /Od /Oy- /D _WINDLL /D _MBCS /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt plugin.cpp + plugin.cpp + Link: + C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"..\..\Steam\steamapps\common\Source SDK Base\bin\props.dll" /NOLOGO /LIBPATH:D:\source2006\lib\public mathlib.lib vstdlib.lib tier0.lib tier1.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /NODEFAULTLIB:LIBCMT.lib /MANIFEST /ManifestFile:"Debug\props.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"D:\Steam\steamapps\common\Source SDK Base\bin\props.pdb" /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"..\..\Steam\steamapps\common\Source SDK Base\bin\props.lib" /MACHINE:X86 /DLL Debug\extern.obj + Debug\plugin.obj + Debug\sigscan.obj + LINK : не найден или не выполнена сборка ..\..\Steam\steamapps\common\Source SDK Base\bin\props.dll при последней инкрементной компоновке; выполняется полная компоновка + Создается библиотека ..\..\Steam\steamapps\common\Source SDK Base\bin\props.lib и объект ..\..\Steam\steamapps\common\Source SDK Base\bin\props.exp + props.vcxproj -> D:\jbmod\props\..\..\Steam\steamapps\common\Source SDK Base\bin\props.dll + Manifest: + C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\mt.exe /nologo /verbose /outputresource:"..\..\Steam\steamapps\common\Source SDK Base\bin\props.dll;#2" /manifest Debug\props.dll.intermediate.manifest + FinalizeBuildStatus: + Deleting file "Debug\props.unsuccessfulbuild". + Touching "Debug\props.lastbuildstate". + 1>Done Building Project "D:\jbmod\props\props.vcxproj" (build target(s)). + +Построение успешно завершено. + +Time Elapsed 00:00:01.67 diff --git a/props/Debug/props.vcxprojResolveAssemblyReference.cache b/props/Debug/props.vcxprojResolveAssemblyReference.cache new file mode 100644 index 0000000..3f01681 Binary files /dev/null and b/props/Debug/props.vcxprojResolveAssemblyReference.cache differ diff --git a/props/Debug/props.write.1.tlog b/props/Debug/props.write.1.tlog new file mode 100644 index 0000000..dd0488c --- /dev/null +++ b/props/Debug/props.write.1.tlog @@ -0,0 +1,100 @@ +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp diff --git a/props/Debug/sigscan.obj b/props/Debug/sigscan.obj new file mode 100644 index 0000000..b66aaa4 Binary files /dev/null and b/props/Debug/sigscan.obj differ diff --git a/props/Debug/vc100.idb b/props/Debug/vc100.idb new file mode 100644 index 0000000..0d2a4a0 Binary files /dev/null and b/props/Debug/vc100.idb differ diff --git a/props/Debug/vc100.pdb b/props/Debug/vc100.pdb new file mode 100644 index 0000000..e6475ef Binary files /dev/null and b/props/Debug/vc100.pdb differ diff --git a/props/Release/CL.read.1.tlog b/props/Release/CL.read.1.tlog new file mode 100644 index 0000000..314a565 Binary files /dev/null and b/props/Release/CL.read.1.tlog differ diff --git a/props/Release/CL.write.1.tlog b/props/Release/CL.write.1.tlog new file mode 100644 index 0000000..90fae47 Binary files /dev/null and b/props/Release/CL.write.1.tlog differ diff --git a/props/Release/cl.command.1.tlog b/props/Release/cl.command.1.tlog new file mode 100644 index 0000000..f1f1492 Binary files /dev/null and b/props/Release/cl.command.1.tlog differ diff --git a/props/Release/extern.obj b/props/Release/extern.obj new file mode 100644 index 0000000..cc1384b Binary files /dev/null and b/props/Release/extern.obj differ diff --git a/props/Release/link.command.1.tlog b/props/Release/link.command.1.tlog new file mode 100644 index 0000000..0c0b2fd Binary files /dev/null and b/props/Release/link.command.1.tlog differ diff --git a/props/Release/link.read.1.tlog b/props/Release/link.read.1.tlog new file mode 100644 index 0000000..79553bc Binary files /dev/null and b/props/Release/link.read.1.tlog differ diff --git a/props/Release/link.write.1.tlog b/props/Release/link.write.1.tlog new file mode 100644 index 0000000..3c2d8db Binary files /dev/null and b/props/Release/link.write.1.tlog differ diff --git a/props/Release/mt.command.1.tlog b/props/Release/mt.command.1.tlog new file mode 100644 index 0000000..326a374 Binary files /dev/null and b/props/Release/mt.command.1.tlog differ diff --git a/props/Release/mt.read.1.tlog b/props/Release/mt.read.1.tlog new file mode 100644 index 0000000..694ad38 Binary files /dev/null and b/props/Release/mt.read.1.tlog differ diff --git a/props/Release/mt.write.1.tlog b/props/Release/mt.write.1.tlog new file mode 100644 index 0000000..eb23960 Binary files /dev/null and b/props/Release/mt.write.1.tlog differ diff --git a/props/Release/plugin.obj b/props/Release/plugin.obj new file mode 100644 index 0000000..97633ea Binary files /dev/null and b/props/Release/plugin.obj differ diff --git a/props/Release/props.Build.CppClean.log b/props/Release/props.Build.CppClean.log new file mode 100644 index 0000000..fec683b --- /dev/null +++ b/props/Release/props.Build.CppClean.log @@ -0,0 +1,22 @@ +..\..\Steam\steamapps\common\Source SDK Base\bin\props.ilk +..\..\Steam\steamapps\common\Source SDK Base\bin\props.pdb +D:\jbmod\props\..\..\Steam\steamapps\common\Source SDK Base\bin\props.dll +D:\jbmod\props\Release\cl.command.1.tlog +D:\jbmod\props\Release\CL.read.1.tlog +D:\jbmod\props\Release\CL.write.1.tlog +D:\JBMOD\PROPS\RELEASE\EXTERN.OBJ +D:\jbmod\props\Release\link.command.1.tlog +D:\jbmod\props\Release\link.read.1.tlog +D:\jbmod\props\Release\link.write.1.tlog +D:\jbmod\props\Release\mt.command.1.tlog +D:\jbmod\props\Release\mt.read.1.tlog +D:\jbmod\props\Release\mt.write.1.tlog +D:\JBMOD\PROPS\RELEASE\PLUGIN.OBJ +D:\JBMOD\PROPS\RELEASE\PROPS.DLL.INTERMEDIATE.MANIFEST +D:\jbmod\props\Release\props.write.1.tlog +D:\JBMOD\PROPS\RELEASE\SIGSCAN.OBJ +D:\JBMOD\PROPS\RELEASE\VC100.PDB +D:\STEAM\STEAMAPPS\COMMON\SOURCE SDK BASE\BIN\PROPS.DLL +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\STEAM\STEAMAPPS\COMMON\SOURCE SDK BASE\BIN\PROPS.PDB diff --git a/props/Release/props.dll.intermediate.manifest b/props/Release/props.dll.intermediate.manifest new file mode 100644 index 0000000..ecea6f7 --- /dev/null +++ b/props/Release/props.dll.intermediate.manifest @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/props/Release/props.lastbuildstate b/props/Release/props.lastbuildstate new file mode 100644 index 0000000..2b602d9 --- /dev/null +++ b/props/Release/props.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v100:false +Release|Win32|D:\jbmod\| diff --git a/props/Release/props.log b/props/Release/props.log new file mode 100644 index 0000000..f91b79d --- /dev/null +++ b/props/Release/props.log @@ -0,0 +1,32 @@ +Build started 05.03.2018 3:49:47. + 1>Project "D:\jbmod\props\props.vcxproj" on node 2 (rebuild target(s)). + 1>_PrepareForClean: + Deleting file "Release\props.lastbuildstate". + 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(299,5): warning MSB8004: каталог Output заканчивается не косой чертой. Этот экземпляр построения добавит косую черту, поскольку она необходима для правильного определения каталога Output. + InitializeBuildStatus: + Creating "Release\props.unsuccessfulbuild" because "AlwaysCreate" was specified. + ClCompile: + C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /ID:\source2006\game_shared /ID:\source2006\dlls /ID:\source2006\public\tier1 /ID:\source2006\public\tier0 /ID:\source2006\public /ID:\source2006\common /ID:\source2006\ /Zi /nologo /W3 /WX- /O2 /Oi /Oy- /GL /D _WINDLL /D _MBCS /Gm- /EHsc /MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Release\\" /Fd"Release\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt extern.cpp plugin.cpp sigscan.cpp + extern.cpp + plugin.cpp + sigscan.cpp + 1>sigscan.cpp(15): warning C4018: <: несоответствие типов со знаком и без знака + 1>sigscan.cpp(18): warning C4018: <: несоответствие типов со знаком и без знака + Link: + C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"..\..\Steam\steamapps\common\Source SDK Base\bin\props.dll" /NOLOGO /LIBPATH:D:\source2006\lib\public mathlib.lib vstdlib.lib tier0.lib tier1.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /NODEFAULTLIB:LIBCMT.lib /MANIFEST /ManifestFile:"Release\props.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"D:\Steam\steamapps\common\Source SDK Base\bin\props.pdb" /OPT:REF /OPT:ICF /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"..\..\Steam\steamapps\common\Source SDK Base\bin\props.lib" /MACHINE:X86 /DLL Release\extern.obj + Release\plugin.obj + Release\sigscan.obj + Создается библиотека ..\..\Steam\steamapps\common\Source SDK Base\bin\props.lib и объект ..\..\Steam\steamapps\common\Source SDK Base\bin\props.exp + Создание кода + Создание кода завершено + props.vcxproj -> D:\jbmod\props\..\..\Steam\steamapps\common\Source SDK Base\bin\props.dll + Manifest: + C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\mt.exe /nologo /verbose /outputresource:"..\..\Steam\steamapps\common\Source SDK Base\bin\props.dll;#2" /manifest Release\props.dll.intermediate.manifest + FinalizeBuildStatus: + Deleting file "Release\props.unsuccessfulbuild". + Touching "Release\props.lastbuildstate". + 1>Done Building Project "D:\jbmod\props\props.vcxproj" (rebuild target(s)). + +Построение успешно завершено. + +Time Elapsed 00:00:03.88 diff --git a/props/Release/props.write.1.tlog b/props/Release/props.write.1.tlog new file mode 100644 index 0000000..de3c05a --- /dev/null +++ b/props/Release/props.write.1.tlog @@ -0,0 +1,5 @@ +^D:\jbmod\props\props.vcxproj +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.lib +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp +D:\Steam\steamapps\common\Source SDK Base\bin\props.exp diff --git a/props/Release/sigscan.obj b/props/Release/sigscan.obj new file mode 100644 index 0000000..5c1e1bb Binary files /dev/null and b/props/Release/sigscan.obj differ diff --git a/props/Release/vc100.pdb b/props/Release/vc100.pdb new file mode 100644 index 0000000..0ef54ff Binary files /dev/null and b/props/Release/vc100.pdb differ diff --git a/props/extern.cpp b/props/extern.cpp new file mode 100644 index 0000000..71312ce --- /dev/null +++ b/props/extern.cpp @@ -0,0 +1,9 @@ +#define GAME_DLL +#include "cbase.h" +#include "engine/ienginetrace.h" +#include "tier1.h" +#include "convar.h" + +/* util_shared.cpp */ +void DebugDrawLine(const Vector&,const Vector&,int,int,bool,float){} +ConVar r_visualizetraces("","",0); \ No newline at end of file diff --git a/props/filter.h b/props/filter.h new file mode 100644 index 0000000..8331b0b --- /dev/null +++ b/props/filter.h @@ -0,0 +1,24 @@ +#ifndef __FILTER_H +#define __FILTER_H + +#include "engine/ienginetrace.h" + +class CLocalTraceFilter : public ITraceFilter +{ +public: + CLocalTraceFilter(IHandleEntity* pIgnore) + : m_pIgnore(pIgnore){} + + virtual TraceType_t GetTraceType() const { + return TRACE_EVERYTHING; + } + + virtual bool ShouldHitEntity(IHandleEntity* pEnt, + int content){ + return (pEnt != m_pIgnore); + } + + IHandleEntity* m_pIgnore; +}; + +#endif \ No newline at end of file diff --git a/props/plugin.cpp b/props/plugin.cpp new file mode 100644 index 0000000..c403bb8 --- /dev/null +++ b/props/plugin.cpp @@ -0,0 +1,473 @@ +#define GAME_DLL +#include "plugin.h" +#include "cbase.h" +#include "engine/iserverplugin.h" +#include "toolframework/itoolentity.h" +#include "filesystem.h" +#include "eiface.h" +#include "mathlib.h" +#include "tier1.h" +#include "strtools.h" +#include "datacache/imdlcache.h" +#include "util.h" +#include "props.h" +#include "filter.h" + +#define MIN(a,b) (((a)<(b))?(a):(b)) + +typedef struct { + CUtlSymbol name; + int iGroup; + Vector hull_min; + Vector hull_max; +} prop_t; + +class CPluginProps : public IServerPluginCallbacks +{ +public: + virtual bool Load(CreateInterfaceFn,CreateInterfaceFn); + virtual void Unload(); + virtual void Pause(){} + virtual void UnPause(){} + virtual const char* GetPluginDescription(){ + return "Props"; + } + virtual void LevelInit(const char*){} + virtual void ServerActivate(edict_t*,int,int){} + virtual void GameFrame(bool){} + virtual void LevelShutdown(){} + virtual void ClientActive(edict_t*); + virtual void ClientDisconnect(edict_t*){} + virtual void ClientPutInServer(edict_t*,const char*){} + virtual void SetCommandClient(int iIndex){ + m_iCommandIndex = iIndex; + } + virtual void ClientSettingsChanged(edict_t*){} + virtual PLUGIN_RESULT ClientConnect(bool*,edict_t*,const char*, + const char*,char*,int){return PLUGIN_CONTINUE;} + virtual PLUGIN_RESULT ClientCommand(edict_t*); + virtual PLUGIN_RESULT NetworkIDValidated(const char*,const char*){ + return PLUGIN_CONTINUE; + } + + int AddGroup(const char* pName); + void GetProps(CUtlVector& props,int iGroup); + void LoadModel(const char* pFolder,const char* pName); + int FindModel(const char* pName); + void SpawnProp(Vector vPos,prop_t& pr); + PLUGIN_RESULT ShowPropMenu(edict_t* pPly,int group,int index); + + int m_iCommandIndex; + CUtlVector m_Groups; + CUtlVector m_Props; +} g_PluginProps; + +EXPOSE_SINGLE_INTERFACE_GLOBALVAR(CPluginProps,IServerPluginCallbacks, + INTERFACEVERSION_ISERVERPLUGINCALLBACKS,g_PluginProps); + +IVEngineServer* engine = NULL; +IEngineTrace* enginetrace = NULL; +IServerPluginHelpers* helpers = NULL; +IFileSystem* filesystem = NULL; +IMDLCache* mdlcache = NULL; + +SetAllowPrecache_t pSAP = NULL; +DispatchSpawn_t pDP = NULL; +CreateEntityByName_t pCEBN = NULL; +bool* pAllowPrecache; + +bool CPluginProps::Load(CreateInterfaceFn interfaces,CreateInterfaceFn game) +{ + char szLine[MAX_PATH] = {0}; + char szPath[MAX_PATH] = {0}; + char* pFst; + + ConnectTier1Libraries(&interfaces,1); + MathLib_Init(2.2f,2.2f,0.0f,2.0f); + + if(!(engine = (IVEngineServer*)interfaces(INTERFACEVERSION_VENGINESERVER,0)) + || !(enginetrace = (IEngineTrace*)interfaces(INTERFACEVERSION_ENGINETRACE_SERVER,0)) + || !(helpers = (IServerPluginHelpers*)interfaces(INTERFACEVERSION_ISERVERPLUGINHELPERS,0)) + || !(filesystem = (IFileSystem*)interfaces(FILESYSTEM_INTERFACE_VERSION,0)) + || !(mdlcache = (IMDLCache*)interfaces(MDLCACHE_INTERFACE_VERSION,0))) + { + Warning("Failed to load due interface mismatch!\n"); + return false; + } + + if(!(pFst = (char*)SigScan("server.dll",SAP_SIG,SAP_MASK))) + { + Warning("Failed to find sig SAP!\n"); + return false; + } + + pSAP = (SetAllowPrecache_t)JMP2PTR(pFst); + pAllowPrecache = *(bool**)((char*)pSAP+0x05); + + if(!(pDP = (DispatchSpawn_t)SigScan("server.dll",DP_SIG,DP_MASK))) + { + Warning("Failed to find sig DP!\n"); + return false; + } + + if(!(pCEBN = (CreateEntityByName_t)SigScan("server.dll",CEBN_SIG,CEBN_MASK))) + { + Warning("Failed to find sig CEBN!\n"); + return false; + } + + KeyValues* pProps = new KeyValues("Props"); + if(!(pProps->LoadFromFile(filesystem,"addons/props.txt","GAME"))) + { + Warning("File addons/props.txt not found!\n"); + return false; + } + + KeyValues* pV = pProps->GetFirstSubKey(); + do { + KeyValues* pK = pV->GetFirstValue(); + do { + LoadModel(pV->GetName(),pK->GetString()); + } while((pK=pK->GetNextValue())); + } while((pV=pV->GetNextKey())); + pProps->deleteThis(); + return true; +} + +int CPluginProps::AddGroup(const char* pName) +{ + int index = -1; + for(int i = 0; i < m_Groups.Count(); i++) + { + if(FStrEq(m_Groups[i].String(),pName)) + { + index = i; + break; + } + } + + if(index == -1) + index = m_Groups.AddToTail(CUtlSymbol(pName)); + return index; +} + +void CPluginProps::GetProps(CUtlVector& props,int iGroup) +{ + for(int i = 0; i < m_Props.Count(); i++) + { + if(m_Props[i].iGroup == iGroup) + props.AddToTail(i); + } +} + +void CPluginProps::LoadModel(const char* pFolder,const char* pName) +{ + char szBuf[MAX_PATH] = {0}; + char szBuf2[MAX_PATH] = {0}; + prop_t prop; + + strcpy_s(szBuf2,pName); + V_strcpy(szBuf,"models/"); + strcat_s(szBuf,szBuf2); + + if(!filesystem->FileExists(szBuf,"GAME")) + { + Warning("Model %s doesn't exists!\n"); + return; + } + + MDLCACHE_CRITICAL_SECTION(); + MDLHandle_t mdl = mdlcache->FindMDL(szBuf); + if(mdl == MDLHANDLE_INVALID) + { + Warning("Model %s not found!\n",szBuf); + return; + } + + studiohdr_t* pHdr = mdlcache->GetStudioHdr(mdl); + if(!pHdr) + { + Warning("Model %s doesn't have vphysics!\n"); + return; + } + + /* Add group */ + prop.name = CUtlSymbol(szBuf2); + prop.iGroup = AddGroup(pFolder); + prop.hull_min = pHdr->hull_min; + prop.hull_max = pHdr->hull_max; + m_Props.AddToTail(prop); +} + +void CPluginProps::Unload() +{ + DisconnectTier1Libraries(); +} + +void CPluginProps::ClientActive(edict_t* pPly) +{ + /* + KeyValues *kv = new KeyValues( "msg" ); + kv->SetString( "title", "Hello" ); + kv->SetString( "msg", "Hello there" ); + kv->SetColor( "color", Color( 255, 0, 0, 255 )); + kv->SetInt( "level", 5); + kv->SetInt( "time", 10); + helpers->CreateMessage( pEntity, DIALOG_MSG, kv, this ); + kv->deleteThis(); + */ +} + +inline QAngle* GetEntityEyes(CBaseEntity* pEnt) +{ + QAngle* pRet; + __asm + { + push ecx + push edx + + mov ecx,[pEnt] + mov edx,[ecx] + call dword ptr [edx+0x1A8] + mov [pRet],eax + + pop edx + pop ecx + } + return pRet; +} + +inline void GetEyePosition(CBaseEntity* pEnt,Vector* vOut) +{ + __asm + { + push ecx + push edx + + push [vOut] + mov ecx,[pEnt] + mov edx,[ecx] + call dword ptr [edx+0x1A4] + + pop edx + pop ecx + } +} + +inline PLUGIN_RESULT CPluginProps::ShowPropMenu(edict_t* pPly,int group,int index) +{ + const int iSize = 9; + const int mSize = 7; + char szBuf[MAX_PATH]; + + CUtlVector props; + KeyValues* msg = new KeyValues("menu"); + GetProps(props,group); + + msg->SetString("title","Prop menu"); + msg->SetString("msg","Prop menu"); + msg->SetInt("level",5); + msg->SetInt("time",9999); + msg->SetColor("color",Color(255,255,0,255)); + + for(int i = index; i < MIN(index+mSize,props.Count()); i++) + { + if(!props.IsValidIndex(i) || !m_Props.IsValidIndex(props[i])) + continue; + prop_t& pr = m_Props[props[i]]; + Q_snprintf(szBuf,MAX_PATH,"%d",i-index+1); + KeyValues* sub = msg->FindKey(szBuf,true); + + char* pPtr = strchr((char*)pr.name.String(),'/'); + if(!pPtr) continue; + pPtr++; + sub->SetString("msg",pPtr); + + Q_snprintf(szBuf,MAX_PATH,"prop_spawn %s %s %d", + pr.name.String(),engine->Cmd_Argv(1),index); + sub->SetString("command",szBuf); + } + + if(props.Count()-index>=mSize) + { + KeyValues* next = msg->FindKey("8",true); + next->SetString("msg","Next"); + Q_snprintf(szBuf,MAX_PATH,"prop_spawnmenu2 %s %d", + engine->Cmd_Argv(1),index+mSize); + next->SetString("command",szBuf); + } + + if(index) + { + KeyValues* back = msg->FindKey("9",true); + back->SetString("msg","Back"); + Q_snprintf(szBuf,MAX_PATH,"prop_spawnmenu2 %s %d", + engine->Cmd_Argv(1),index-mSize); + back->SetString("command",szBuf); + } + + helpers->CreateMessage(pPly,DIALOG_MENU,msg,this); + msg->deleteThis(); + return PLUGIN_STOP; +} + +PLUGIN_RESULT CPluginProps::ClientCommand(edict_t* pPly) +{ + const char* pCmd = engine->Cmd_Argv(0); + const int iSize = 9; + const int mSize = 7; + char szBuf[MAX_PATH]; + + if(FStrEq(pCmd,"prop_spawn")) + { + if(engine->Cmd_Argc()<2) + return PLUGIN_CONTINUE; + CBaseEntity* pPlayer = pPly-> + GetIServerEntity()->GetBaseEntity(); + if(!pPlayer) return PLUGIN_CONTINUE; + + int iProp = FindModel(engine->Cmd_Argv(1)); + if(iProp == -1) return PLUGIN_STOP; + prop_t& pr = m_Props[iProp]; + + Ray_t ray; + trace_t tr; + Vector vForward,vEye; + QAngle* pAng = GetEntityEyes(pPlayer); + AngleVectors(*pAng,&vForward); + GetEyePosition(pPlayer,&vEye); + + CLocalTraceFilter filter(pPlayer); + ray.Init(vEye,vEye+(vForward*MAX_TRACE_LENGTH),pr.hull_min,pr.hull_max); + enginetrace->TraceRay(ray,MASK_SOLID,&filter,&tr); + + if(tr.fraction != 1.0) + SpawnProp(tr.endpos,pr); + + if(engine->Cmd_Argc() == 4) + { + ShowPropMenu(pPly,atoi(engine->Cmd_Argv(2)), + atoi(engine->Cmd_Argv(3))); + } + return PLUGIN_STOP; + } + else if(FStrEq(pCmd,"prop_spawnmenu")) + { + int index = 0; + if(engine->Cmd_Argc() == 2) + index = atoi(engine->Cmd_Argv(1)); + KeyValues* msg; + + msg = new KeyValues("menu"); + msg->SetString("title","Spawn menu"); + msg->SetString("msg","Spawn menu"); + msg->SetInt("level",4); + msg->SetInt("time",9999); + msg->SetColor("color",Color(255,255,0,255)); + + for(int i = index; i < MIN((index+mSize),m_Groups.Count()); i++) + { + Q_snprintf(szBuf,MAX_PATH,"%d",i-index+1); + KeyValues* pVal = msg->FindKey(szBuf,true); + pVal->SetString("msg",m_Groups[i].String()); + Q_snprintf(szBuf,MAX_PATH,"prop_spawnmenu2 %d",i); + pVal->SetString("command",szBuf); + } + + if((m_Groups.Count()-index)>=mSize) + { + KeyValues* next = msg->FindKey("8",true); + Q_snprintf(szBuf,MAX_PATH,"prop_spawnmenu %d",index+mSize); + next->SetString("msg","Next"); + next->SetString("command",szBuf); + } + + if(index) + { + KeyValues* back = msg->FindKey("9",true); + Q_snprintf(szBuf,MAX_PATH,"prop_spawnmenu %d",index-mSize); + back->SetString("msg","Back"); + back->SetString("command",szBuf); + } + + helpers->CreateMessage(pPly,DIALOG_MENU,msg,this); + msg->deleteThis(); + return PLUGIN_STOP; + } + else if(FStrEq(pCmd,"prop_spawnmenu2")) + { + if(engine->Cmd_Argc()<2) + return PLUGIN_CONTINUE; + if(engine->Cmd_Argc()==2) + return ShowPropMenu(pPly,atoi(engine->Cmd_Argv(1)),0); + if(engine->Cmd_Argc()>2) + { + return ShowPropMenu(pPly,atoi(engine->Cmd_Argv(1)), + atoi(engine->Cmd_Argv(2))); + } + return PLUGIN_STOP; + } + return PLUGIN_CONTINUE; +} + +int CPluginProps::FindModel(const char* pName) +{ + for(int i = 0; i < m_Props.Count(); i++) + { + if(FStrEq(m_Props[i].name.String(),pName)) + return i; + } + return -1; +} + +void EntityKeyValue(CBaseEntity* pEnt, + const char* pKey,const char* pValue) +{ + __asm + { + push ecx + push edx + + push [pValue] + push [pKey] + mov ecx,[pEnt] + mov edx,[ecx] + call dword ptr [edx+0x78] + + pop edx + pop ecx + } +} + +void CPluginProps::SpawnProp(Vector vPos,prop_t& pr) +{ + char szBuf[MAX_PATH]; + CPhysicsProp* pProp; + bool bPrecace = *pAllowPrecache; + *pAllowPrecache = true; + + pProp = (CPhysicsProp*)pCEBN("prop_physics",-1); + if(pProp) + { + //%.10f %.10f %.10f + Q_snprintf(szBuf,sizeof(szBuf),"%.10f %.10f %.10f",vPos.x,vPos.y,vPos.z); + EntityKeyValue(pProp,"origin",szBuf); + Q_snprintf(szBuf,sizeof(szBuf),"%.10f %.10f %.10f",0.0f,0.0f,0.0f); + EntityKeyValue(pProp,"angles",szBuf); + + szBuf[0] = '\0'; + strcpy(szBuf,"models/"); + strcat_s(szBuf,pr.name.String()); + EntityKeyValue(pProp, "model", szBuf ); + EntityKeyValue(pProp, "solid","6"); + EntityKeyValue(pProp, "fademindist","-1"); + EntityKeyValue(pProp, "fademaxdist","0"); + EntityKeyValue(pProp, "fadescale","1"); + EntityKeyValue(pProp, "inertiaScale","1.0"); + EntityKeyValue(pProp, "physdamagescale","0.1"); + pProp->Precache(); + pDP(pProp); + pProp->Activate(); + } + *pAllowPrecache = false; +} \ No newline at end of file diff --git a/props/plugin.h b/props/plugin.h new file mode 100644 index 0000000..a6072a3 --- /dev/null +++ b/props/plugin.h @@ -0,0 +1,21 @@ +#ifndef __PLUGIN_H +#define __PLUGIN_H + +#include + +#define JMP2PTR(ptr) ((char*)ptr+5+((ptrdiff_t)*(ULONG*)((char*)ptr+1))) +typedef void (*SetAllowPrecache_t)(bool); +#define SAP_SIG "\xE8\x00\x00\x00\x00\x8B\x0D\x00\x00\x00\x00\x8B\x11\x83\xC4\x04\x6A\xFF\x6A\x01\xFF\x92\xC8\x00\x00\x00" +#define SAP_MASK "x????xx????xxxxxxxxxxxxxxx" + +#define DP_SIG "\x53\x56\x8B\x74\x24\x0C\x85\xF6\x57\x0F\x84\x00\x00\x00\x00" +#define DP_MASK "xxxxxxxxxxx????" +typedef int (*DispatchSpawn_t)(void*); + +#define CEBN_SIG "\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x25\x8B\x0D\x00\x00\x00\x00\x8B\x01\x56\xFF\x50\x54\x85\xC0\xA3\x00\x00\x00\x00\x75\x10" +#define CEBN_MASK "xxxxxxxxxxxxxxxxx????xxxxxxxxx????xx" +typedef void* (*CreateEntityByName_t)(const char*,int); + +void* SigScan(const char* pMod,const char* pSig,const char* pMask); + +#endif \ No newline at end of file diff --git a/props/props.vcxproj b/props/props.vcxproj new file mode 100644 index 0000000..59871e2 --- /dev/null +++ b/props/props.vcxproj @@ -0,0 +1,87 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {1C95495F-E6A5-4F65-B54F-9E8044AC0903} + props + + + + DynamicLibrary + true + MultiByte + + + DynamicLibrary + false + true + MultiByte + + + + + + + + + + + + + ..\..\Steam\steamapps\common\Source SDK Base\bin + + + ..\..\Steam\steamapps\common\Source SDK Base\bin + + + + Level3 + Disabled + D:\source2006\game_shared;D:\source2006\dlls;D:\source2006\public\tier1;D:\source2006\public\tier0;D:\source2006\public;D:\source2006\common;D:\source2006\;%(AdditionalIncludeDirectories) + + + true + D:\source2006\lib\public;%(AdditionalLibraryDirectories) + mathlib.lib;vstdlib.lib;tier0.lib;tier1.lib;%(AdditionalDependencies) + LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) + + + + + Level3 + MaxSpeed + true + true + D:\source2006\game_shared;D:\source2006\dlls;D:\source2006\public\tier1;D:\source2006\public\tier0;D:\source2006\public;D:\source2006\common;D:\source2006\;%(AdditionalIncludeDirectories) + + + true + true + true + mathlib.lib;vstdlib.lib;tier0.lib;tier1.lib;%(AdditionalDependencies) + LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) + D:\source2006\lib\public;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/props/props.vcxproj.filters b/props/props.vcxproj.filters new file mode 100644 index 0000000..c0026e1 --- /dev/null +++ b/props/props.vcxproj.filters @@ -0,0 +1,36 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Файлы исходного кода + + + Файлы исходного кода + + + Файлы исходного кода + + + + + Заголовочные файлы + + + Заголовочные файлы + + + \ No newline at end of file diff --git a/props/props.vcxproj.user b/props/props.vcxproj.user new file mode 100644 index 0000000..ace9a86 --- /dev/null +++ b/props/props.vcxproj.user @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/props/sigscan.cpp b/props/sigscan.cpp new file mode 100644 index 0000000..82059d1 --- /dev/null +++ b/props/sigscan.cpp @@ -0,0 +1,26 @@ +#include "plugin.h" +#include + +void* SigScan(const char* pMod,const char* pSig,const char* pMask) +{ + size_t uSigLen = strlen(pMask); + char* pBegin = (char*)GetModuleHandle(pMod); + size_t uLen; + + PIMAGE_DOS_HEADER pDos = (PIMAGE_DOS_HEADER)pBegin; + PIMAGE_NT_HEADERS pNt = (PIMAGE_NT_HEADERS)((char*)pDos+pDos->e_lfanew); + uLen = pNt->OptionalHeader.SizeOfCode-uSigLen; + pBegin = (char*)pDos+pNt->OptionalHeader.BaseOfCode; + + for(int i = 0; i < uLen; i++) + { + int j; + for(j = 0; j < uSigLen; j++) + { + if(pBegin[i+j] != pSig[j] && pMask[j] == 'x') + break; + } + if(j==uSigLen) return &pBegin[i]; + } + return NULL; +} \ No newline at end of file