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