Compare commits

...

4 commits

Author SHA1 Message Date
9bfb1e4787 Merge branch 'master' of github.com:Jackzmc/sourcemod-plugins 2024-09-22 14:28:30 -05:00
5c469a8ee1 Add randomizer files 2024-09-22 14:28:28 -05:00
ed383ecc91 Changes 2024-09-22 14:27:39 -05:00
1a1663ba37 Add some missing models 2024-09-22 14:27:09 -05:00
29 changed files with 11174 additions and 47 deletions

View file

@ -25,6 +25,7 @@ models/props_junk/wood_pallet001a_chunka4.mdl Wood Pallet Piece 2-4
models/props_junk/wood_pallet001a_chunkb2.mdl Wood Pallet Piece 2-5
models/props_junk/wood_pallet001a_chunkb3.mdl Wood Pallet Piece 2-6
models/props_junk/wood_pallet001a_shard01.mdl Wood Pallet Piece 2-7
models/props_industrial/pallet_stack_docks.mdl Wood Pallet Stack
models/props_highway/op_straightincline_med_u.mdl Overpass Straight Incline
models/props_highway/op_straight_u.mdl Straight U 1
models/props_highway/op_straight_u_broken01.mdl Broken Straight U 2
@ -37,6 +38,7 @@ models/props_highway/op_onramp_column.mdl On Ramp Column
models/props_highway/plywood_01.mdl Plywood 1
models/props_highway/plywood_02.mdl Plywood 2
models/props_highway/plywood_03.mdl Plywood 3
models/props_industrial/plywood_leaning.mdl Plywood Leaning
models/props_industrial/construction_crane_leverbody.mdl Construction Crane Leverbody
models/props_industrial/construction_crane_leverhandle.mdl Construction Crane Lever
models/props_industrial/construction_crane.mdl construction crane LARGE
@ -123,3 +125,29 @@ models/props_swamp/winch.mdl Winch
models/c1_chargerexit/mall_rampbundle.mdl Collection of supplies making small ramp
models/props_debris/paintbucket01.mdl Paintbucket
models/props_debris/paintbucket01_static.mdl paint bucket (solid)
models/props_industrial/pallet_barrels_water01_single.mdl Pallet Water Barrel (Single)
models/props_industrial/pallet_barrels_water01_docks.mdl Pallet Water Barrel
models/props_industrial/brickpallets.mdl Brick Pallets
models/props_industrial/brickpallets_break03.mdl Brick Pallets (Breakable)
models/props_industrial/brickstack01.mdl Brick Stack (Massive)
models/props_industrial/brickstack02_a.mdl Brick Stack 2A (Massive)
models/props_industrial/brickstack02_b.mdl Brick Stack 2B (Massive)
models/props_industrial/brickstack03_a.mdl Brick Stack 3A (Massive)
models/props_industrial/brickstack04_a.mdl Brick Stack 4A (Massive)
models/props_industrial/brickstack04_b.mdl Brick Stack 4B (Massive)
models/props_industrial/brickstack05_a.mdl Brick Stack 5A (Massive)
models/props_industrial/brickstack05_b.mdl Brick Stack 5B (Massive)
models/props_industrial/brickstack06_a.mdl Brick Stack 6A (Massive)
models/props_industrial/brickstack06_b.mdl Brick Stack 6B (Massive)
models/props_industrial/brickstack07_a.mdl Brick Stack 7A (Massive)
models/props_industrial/brickstack07_b.mdl Brick Stack 7B (Massive)
models/props_industrial/brickstack08_a.mdl Brick Stack 8A (Massive)
models/props_industrial/brickstack08_b.mdl Brick Stack 8B (Massive)
models/props_industrial/brickstack09_a.mdl Brick Stack 9A (Massive)
models/props_industrial/brickstack09_b.mdl Brick Stack 9B (Massive)
models/props_industrial/brickstack10_a.mdl Brick Stack 10A (Massive)
models/props_industrial/brickstack10_b.mdl Brick Stack 10B (Massive)
models/props_industrial/brickstack11_a.mdl Brick Stack 11A (Massive)
models/props_industrial/brickstack11_b.mdl Brick Stack 11B (Massive)
models/props_industrial/brickstack12_a.mdl Brick Stack 12A (Massive)
models/props_industrial/brickstack12_b.mdl Brick Stack 12B (Massive)

View file

@ -27,6 +27,7 @@ models/props_vehicles/boat_rescue_tug_sunshine.mdl Virgil's Boat (No Collision)
models/props_vehicles/boat_fishing.mdl Fishing Boat (No Collision)
models/props_vehicles/boat_fishing02_static.mdl Rescue Boat
models/props_vehicles/boat_ski.mdl Speed Boat
models/props_vehicles/boat_smash.mdl Speed Boat (Smashable)
models/props_vehicles/sailboat.mdl Sailboat
models/props_vehicles/church_bus01.mdl Church Bus
models/props_vehicles/cara_69sedan.mdl '69 Sedan

View file

@ -260,7 +260,8 @@
"variants": [
{
"inputs": [
{"hammerid": 3331344, "input": "Break"}
{"hammerid": 3331344, "input": "Break"},
{"hammerid": 3331353, "input": "break"}
]
}
]

View file

@ -0,0 +1,576 @@
{
"scaff-bridge-2": {
"chance": 0.4,
"variants": [
{
"weight": 1,
"entities": [
{
"name": "plywood_row_1",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-2536.224853515625,
2479.3525390625,
187.75991821289062
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"name": "plywood_row_1",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-2416.224853515625,
2479.3525390625,
187.75991821289062
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"name": "plywood_row_1",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-2296,
2479.3525390625,
187.75991821289062
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"name": "plywood_row_1",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-2176,
2479.3525390625,
187.75991821289062
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"name": "plywood_row_1",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-2056,
2479.3525390625,
187.75991821289062
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"name": "plywood_row_1",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_01.mdl",
"origin": [
-1984,
2479.3525390625,
187.75991821289062
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"name": "plywood_row_2",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-2536.224853515625,
2431.5,
188
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"name": "plywood_row_2",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-2416,
2431.5,
188
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"name": "plywood_row_2",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-2296.224853515625,
2431.5,
188
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"name": "plywood_row_2",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-2176.224853515625,
2431.5,
188
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"name": "plywood_row_2",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-2056.224853515625,
2431.5,
188
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"name": "plywood_row_2",
"type": "prop_dynamic",
"model": "models/props_highway/plywood_01.mdl",
"origin": [
-1984.224853515625,
2431.5,
188
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"group": "beamrow_1",
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_256.mdl",
"origin": [
-2664.860595703125,
2525.53955078125,
182.70179748535156
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"group": "beamrow_1",
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_256.mdl",
"origin": [
-2409.860595703125,
2525.53955078125,
182.70179748535156
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"group": "beamrow_1",
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_128.mdl",
"origin": [
-2154,
2525.53955078125,
182.70179748535156
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"group": "beamrow_1",
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_64.mdl",
"origin": [
-2026,
2525.53955078125,
182.70179748535156
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"group": "beamrow_2",
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_256.mdl",
"origin": [
-2664.860595703125,
2441.94921875,
182.70179748535156
],
"angles": [
0.0,
360.0,
0.0
]
},
{
"group": "beamrow_2",
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_256.mdl",
"origin": [
-2409.860595703125,
2441.94921875,
182.70179748535156
],
"angles": [
0.0,
360.0,
0.0
]
},
{
"group": "beamrow_2",
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_128.mdl",
"origin": [
-2154.860595703125,
2441.94921875,
182.70179748535156
],
"angles": [
0.0,
360.0,
0.0
]
},
{
"group": "beamrow_2",
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_64.mdl",
"origin": [
-2026.860595703125,
2441.94921875,
182.70179748535156
],
"angles": [
0.0,
360.0,
0.0
]
},
{
"group": "fencerow_1",
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2597.29443359375,
2437.001220703125,
189.39932250976562
],
"angles": [
0.0,
270.0,
0.0
]
},
{
"group": "fencerow_1",
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2471.29443359375,
2437.001220703125,
189.39932250976562
],
"angles": [
0.0,
270.0,
0.0
]
},
{
"group": "fencerow_1",
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2345.29443359375,
2437.001220703125,
189.39932250976562
],
"angles": [
0.0,
270.0,
0.0
]
},
{
"group": "fencerow_1",
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2219.29443359375,
2437.001220703125,
189.39932250976562
],
"angles": [
0.0,
270.0,
0.0
]
},
{
"group": "fencerow_1",
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2093.29443359375,
2437.001220703125,
189.39932250976562
],
"angles": [
0.0,
270.0,
0.0
]
},
{
"group": "fencerow_2",
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2597.29443359375,
2522.9000000000001,
189.39932250976562
],
"angles": [
0.0,
270.0,
0.0
]
},
{
"group": "fencerow_2",
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2471.29443359375,
2522.9000000000001,
189.39932250976562
],
"angles": [
0.0,
270.0,
0.0
]
},
{
"group": "fencerow_2",
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2345.29443359375,
2522.9000000000001,
189.39932250976562
],
"angles": [
0.0,
270.0,
0.0
]
},
{
"group": "fencerow_2",
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2219.29443359375,
2522.9000000000001,
189.39932250976562
],
"angles": [
0.0,
270.0,
0.0
]
},
{
"group": "fencerow_2",
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2093.29443359375,
2522.9000000000001,
189.39932250976562
],
"angles": [
0.0,
270.0,
0.0
]
},
{
"group": "fencerow_2",
"type": "prop_dynamic",
"model": "models/props_urban/fence_gate_post003.mdl",
"origin": [
-2030.9207763671875,
2522.8330078125,
186.94879150390625
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"group": "fencerow_1",
"type": "prop_dynamic",
"model": "models/props_urban/fence_gate_post003.mdl",
"origin": [
-2030.9207763671875,
2437.0,
186.94879150390625
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_256.mdl",
"origin": [
-2416.064208984375,
2440.26708984375,
-61.955089569091797
],
"angles": [
-90.0,
360.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_256.mdl",
"origin": [
-2416.064208984375,
2524,
-61.955089569091797
],
"angles": [
-90.0,
360.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_256.mdl",
"origin": [
-2416.064208984375,
2524,
-317.955089569091797
],
"angles": [
-90.0,
360.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_256.mdl",
"origin": [
-2162.39,
2524,
-61.955089569091797
],
"angles": [
-90.0,
360.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_64.mdl",
"origin": [
-2162.39,
2524,
-110.955089569091797
],
"angles": [
-90.0,
360.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_interiors/handrail_hospital01_256.mdl",
"origin": [
-2162.39,
2440.26708984375,
-61.955089569091797
],
"angles": [
-90.0,
360.0,
0.0
]
}
]
}
]
}
}

View file

@ -0,0 +1,678 @@
{
"start-alt": {
"chance": 0.40000000596046448,
"variants": [
{
"weight": 1,
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_crates/static_crate_40.mdl",
"origin": [
-135.19369506835938,
102.36213684082031,
-375.61306762695312
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/billboard_ladder.mdl",
"origin": [
-191.82220458984375,
53.650222778320312,
-498.23223876953125
],
"angles": [
0.0,
-90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_crates/static_crate_40.mdl",
"origin": [
-284.515869140625,
95.820770263671875,
-196.39158630371094
],
"angles": [
17.100000381469727,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_02.mdl",
"origin": [
-233.43048095703125,
75.000656127929688,
-167.54473876953125
],
"angles": [
14.899999618530273,
-0.80000019073486328,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_c17/metalladder001.mdl",
"origin": [
-543.90618896484375,
72.062530517578125,
-200.8336181640625
],
"angles": [
0.0,
94.200004577636719,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_shacks/shack_porch01.mdl",
"origin": [
-753.91729736328125,
-458.591552734375,
-402.41680908203125
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_industrial/pallet_barrels_water01_single.mdl",
"origin": [
-700.47808837890625,
-623.526123046875,
-299.7376708984375
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_industrial/pallet_stack_docks.mdl",
"origin": [
-696.90643310546875,
-619.41058349609375,
-372.3662109375
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_junk/trashbin01a.mdl",
"origin": [
-694.52496337890625,
-674.52935791015625,
-349.55328369140625
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-710.7884521484375,
-458.3165283203125,
-108.32634735107422
],
"angles": [
0.0,
90.0,
2.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-662.280517578125,
-452.20919799804688,
-111.23278045654297
],
"angles": [
0.0,
90.0,
2.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-663.35516357421875,
-332.24545288085938,
-112.458740234375
],
"angles": [
0.0,
90.0,
2.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-712.51092529296875,
-339.47052001953125,
-108.79377746582031
],
"angles": [
0.0,
90.0,
2.0
]
}
]
}
]
},
"start-skip": {
"chance": 0.40000000596046448,
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_vehicles/van.mdl",
"origin": [
-1576.5235595703125,
-186.09768676757812,
-374.54266357421875
],
"angles": [
0.0,
-86.700004577636719,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_vehicles/van_glass.mdl",
"origin": [
-1576.5235595703125,
-186.09768676757812,
-374.54266357421875
],
"angles": [
0.0,
-86.700004577636719,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/billboard_ladder.mdl",
"origin": [
-1940.13427734375,
-273.98272705078125,
-571.263916015625
],
"angles": [
0.0,
-90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2030.6728515625,
-585,
-161.10932922363281
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2030.6728515625,
-711.18365478515625,
-161.10932922363281
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2030.6728515625,
-838.062255859375,
-161.10932922363281
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence_cover001_64.mdl",
"origin": [
-1998.4566650390625,
-1024.8663330078125,
-183.70199584960938
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2030.6728515625,
-961.7313232421875,
-161.10932922363281
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence_cover001_64.mdl",
"origin": [
-1966.3516845703125,
-1020.03076171875,
-116.53513336181641
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence_cover001_64.mdl",
"origin": [
-1912.444091796875,
-1019.4788818359375,
-105.67644500732422
],
"angles": [
0.0,
90.0,
0.0
]
}
],
"variants": [
{
"weight": 1,
"inputs": [
{
"classname": "env_player_blocker",
"input": "kill"
},
{
"hammerid": 465080,
"input": "_allow_ladder"
}
],
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_industrial/pallet_barrels_water01_docks.mdl",
"origin": [
-2106.24951171875,
-153.55625915527344,
-375.30184936523438
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_industrial/pallet_barrels_water01_single.mdl",
"origin": [
-2103.1865234375,
-248.36061096191406,
-265.70333862304688
],
"angles": [
90.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_crates/static_crate_40.mdl",
"origin": [
-2046.45361328125,
-411.7041015625,
-223.83938598632812
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_fortifications/barricade001_128_reference.mdl",
"origin": [
-2082.101318359375,
-452.49029541015625,
-219.97494506835938
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_street/concertinawire128.mdl",
"origin": [
-2144.4423828125,
-527.07269287109375,
-175.52268981933594
],
"angles": [
-23.19999885559082,
9.4999923706054688,
11.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_street/concertinawire128.mdl",
"origin": [
-2205.401123046875,
-581.38824462890625,
-188.589111328125
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_street/concertinawire128.mdl",
"origin": [
-2330.557373046875,
-580.0220947265625,
-182.99201965332031
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_street/concertinawire128.mdl",
"origin": [
-2462.08056640625,
-585.85638427734375,
-180.50971984863281
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_fortifications/barricade001_128_reference.mdl",
"origin": [
-2199.499267578125,
-155.623779296875,
-153.11810302734375
],
"angles": [
-8.6000003814697266,
-86.400009155273438,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_fortifications/barricade001_128_reference.mdl",
"origin": [
-2310.3515625,
-157.11373901367188,
-152.93547058105469
],
"angles": [
-8.6000003814697266,
-86.400009155273438,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_fortifications/barricade001_128_reference.mdl",
"origin": [
-2415.82958984375,
-162.39042663574219,
-151.61190795898438
],
"angles": [
-8.6000003814697266,
-86.400009155273438,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_fortifications/barricade001_128_reference.mdl",
"origin": [
-2518.89501953125,
-166.31500244140625,
-152.15213012695312
],
"angles": [
-8.6000003814697266,
-86.400009155273438,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_fortifications/barricade001_128_reference.mdl",
"origin": [
-2607.375732421875,
-145.70103454589844,
-153.62594604492188
],
"angles": [
-8.6000003814697266,
-86.400009155273438,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence_gate_post003.mdl",
"origin": [
-2030.6728515625,
-520,
-161.10932922363281
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence_cover001_64.mdl",
"origin": [
-1856.310302734375,
-1018.1326904296875,
-69.372299194335938
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_02.mdl",
"origin": [
-2551.8544921875,
-607.31549072265625,
-40.5
],
"angles": [
0.0,
0.0,
0.0
]
}
]
},
{
"weight": 2,
"inputs": [
{
"classname": "env_player_blocker",
"input": "kill"
},
{
"hammerid": 465080,
"input": "_allow_ladder"
},
{
"hammerid": 461112,
"input": "_allow_ladder"
}
],
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_urban/fence_gate_post003.mdl",
"origin": [
-2030.6728515625,
-268,
-161.10932922363281
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2030.6728515625,
-333,
-161.10932922363281
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence003_128.mdl",
"origin": [
-2030.6728515625,
-459,
-161.10932922363281
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_crates/static_crate_40.mdl",
"origin": [
-1843.48193359375,
-996.82305908203125,
-66.354148864746094
],
"angles": [
-30.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/billboard_ladder.mdl",
"origin": [
-1788.1597900390625,
-1057.0823974609375,
-438.24349975585938
],
"angles": [
0.0,
-180.0,
0.0
]
},
{
"type": "env_physics_blocker",
"origin": [
-2945.315185, -1070.225585, -39.968750
],
"scale": [
300, 20, 200
]
}
]
}
]
}
}

View file

@ -0,0 +1,488 @@
{
"park-ent-alt": {
"chance": 0.5,
"variants": [
{
"weight": 1,
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-4581.21533203125,
-1991.9302978515625,
-92.254302978515625
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
-4581.666015625,
-2087.76513671875,
-81.402969360351562
],
"angles": [
-30.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_junk/dumpster.mdl",
"origin": [
-4605.61572265625,
-2201.41748046875,
-190.69416809082031
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/gate_wall001_256.mdl",
"origin": [
-4671.78466796875,
-2694.845703125,
-193.30868530273438
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_fortifications/barricade001_64_reference.mdl",
"origin": [
-4545.845703125,
-2549.708984375,
-192.81387329101562
],
"angles": [
45.0,
165.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/gate_wall001_256.mdl",
"origin": [
-4677.26904296875,
-1708.6707763671875,
-191.30380249023438
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_interiors/table_picnic.mdl",
"origin": [
-4605.3994140625,
-2074.498291015625,
-113.96968841552734
],
"angles": [
-180.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_interiors/table_picnic.mdl",
"origin": [
-4603.8603515625,
-2078.102783203125,
-133.6282958984375
],
"angles": [
-180.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_interiors/table_picnic.mdl",
"origin": [
-4604.93359375,
-2075.939697265625,
-157.97550964355469
],
"angles": [
-180.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_interiors/table_picnic.mdl",
"origin": [
-4605.25830078125,
-2073.143310546875,
-93.847732543945312
],
"angles": [
180.0,
0.0,
0.0
]
}
]
}
]
},
"body": {
"chance": 0.5,
"variants": [
{
"weight": 1,
"entities": [
{
"type": "prop_dynamic",
"model": "models/deadbodies/human/fence_a.mdl",
"origin": [
-8522.732421875,
-3317.47900390625,
-204.79844665527344
],
"angles": [
0.0,
-90.0,
0.0
]
}
]
}
]
},
"small-barrier": {
"chance": 0.40000000596046448,
"variants": [
{
"weight": 1,
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_fortifications/concrete_barrier01.mdl",
"origin": [
-9440.31640625,
-3306.944091796875,
-263.10284423828125
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_fortifications/concrete_barrier01.mdl",
"origin": [
-9429.6328125,
-3162.049072265625,
-258.2562255859375
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_fortifications/concrete_barrier01.mdl",
"origin": [
-9444.13671875,
-3234.8154296875,
-253.61259460449219
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_fortifications/concrete_barrier01.mdl",
"origin": [
-9466.1865234375,
-3442.268798828125,
-243.09390258789062
],
"angles": [
-90.0,
45.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_debris/concrete_debris256pile001a.mdl",
"origin": [
-9491.638671875,
-3873.774169921875,
-238.59593200683594
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_debris/concrete_debris128pile001b.mdl",
"origin": [
-9797.0615234375,
-3734.997314453125,
-253.8603515625
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_debris/concrete_debris256pile001a.mdl",
"origin": [
-9671.7724609375,
-3567.714599609375,
-251.19012451171875
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_debris/concrete_debris256pile001a.mdl",
"origin": [
-9494.7939453125,
-3032.1123046875,
-241.85153198242188
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_foliage/urban_streettree01.mdl",
"origin": [
-9382.322265625,
-3282.001220703125,
-247.06112670898438
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_foliage/urban_streettree01.mdl",
"origin": [
-9367.9892578125,
-3697.150634765625,
-246.72561645507812
],
"angles": [
0.0,
0.0,
0.0
]
}
]
}
]
},
"ceda-alt": {
"chance": 0.40000000596046448,
"variants": [
{
"weight": 1,
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_fortifications/concrete_barrier01.mdl",
"origin": [
-9564.6533203125,
-5226.8876953125,
-258.83914184570312
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_fortifications/concrete_barrier01.mdl",
"origin": [
-9647.853515625,
-5224.6533203125,
-258.03488159179688
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_vehicles/semi_trailer_wrecked.mdl",
"origin": [
-10074.935546875,
-4930.92236328125,
-113.95668792724609
],
"angles": [
-150.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_vehicles/cara_95sedan_wrecked.mdl",
"origin": [
-10057.3388671875,
-4622.8955078125,
-236.27752685546875
],
"angles": [
15.0,
0.0,
0.0
]
}
]
}
]
},
"door-skip": {
"chance": 0.5,
"variants": [
{
"weight": 1,
"inputs": [
{
"classname": "env_player_blocker",
"input": "kill"
}
],
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_urban/fence001_64.mdl",
"origin": [
-6722.62353515625,
-6556.3017578125,
-241.4892578125
],
"angles": [
-45.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_crates/static_crate_40.mdl",
"origin": [
-6726.21435546875,
-6704.2265625,
-192.41217041015625
],
"angles": [
0.0,
0.0,
15.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_crates/static_crate_40.mdl",
"origin": [
-6725.44140625,
-6662.97265625,
-193.33724975585938
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/outhouse001.mdl",
"origin": [
-6722.27392578125,
-6600.3447265625,
-218.58062744140625
],
"angles": [
-90.0,
90.0,
0.0
]
}
]
}
]
},
"saferoom-alt": {
"chance": 0.40000000596046448,
"variants": [
{
"weight": 1,
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_vehicles/bus01.mdl",
"origin": [
-9124.8974609375,
-8267.6171875,
-255.75314331054688
],
"angles": [
0.0,
60.0,
0.0
]
}
]
}
]
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,586 @@
{
"roofa-block": {
"chance": 0.40000000596046448,
"variants": [
{
"weight": 1,
"entities": [
{
"model": "models/props_wasteland/exterior_fence002c.mdl",
"origin": [
5915.05322265625,
7954.1533203125,
6175.73486328125
],
"angles": [
0.0,
-180.0,
0.0
]
},
{
"model": "models/props_wasteland/exterior_fence002b.mdl",
"origin": [
5981.6689453125,
8029.06787109375,
6171.36376953125
],
"angles": [
0.0,
-270.0,
0.0
]
},
{
"model": "models/props_wasteland/exterior_fence002c.mdl",
"origin": [
6096.92578125,
8014.52880859375,
6150.994140625
],
"angles": [
0.0,
-90.0,
0.0
]
},
{
"model": "models/props_wasteland/exterior_fence002b.mdl",
"origin": [
6200.41064453125,
8031.73828125,
6177.41259765625
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"model": "models/props_wasteland/exterior_fence002d.mdl",
"origin": [
6245.02392578125,
7887.26220703125,
6177.67578125
],
"angles": [
0.0,
360.0,
0.0
]
},
{
"model": "models/props_wasteland/exterior_fence002c.mdl",
"origin": [
6245.30322265625,
7698.5712890625,
6176.59716796875
],
"angles": [
0.0,
0.0,
0.0
]
}
]
}
]
},
"pipes-1": {
"chance": 0.5,
"variants": [
{
"weight": 1,
"entities": [
{
"model": "models/props_pipes/pipeset32d_corner128d_001a.mdl",
"origin": [
6085.46240234375,
8945.470703125,
6057.126953125
],
"angles": [
0.0,
90.0,
-90.0
]
},
{
"model": "models/props_pipes/pipeset32d_128_001a.mdl",
"origin": [
6207.5224609375,
8906.3291015625,
6058.6162109375
],
"angles": [
0.0,
540.0,
-90.0
]
},
{
"model": "models/props_pipes/pipeset32d_corner128r_001a.mdl",
"origin": [
6331.796875,
8856.6748046875,
6061.341796875
],
"angles": [
-180.0,
450.0,
0.0
]
},
{
"model": "models/props_highway/plywood_01.mdl",
"origin": [
6272.724609375,
8882.9189453125,
6080.20556640625
],
"angles": [
-90.0,
0.0,
0.0
]
},
{
"model": "models/props_pipes/pipeset32d_corner128d_001a.mdl",
"origin": [
6377.34326171875,
8732.5673828125,
6099.43359375
],
"angles": [
-90.0,
90.0,
0.0
]
},
{
"model": "models/props_urban/fence_post002.mdl",
"origin": [
6378.88720703125,
8712.5390625,
5918.57373046875
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"model": "models/props_urban/fence_post002.mdl",
"origin": [
6377.021484375,
8881.7001953125,
5918.7861328125
],
"angles": [
0.0,
0.0,
0.0
]
}
]
}
]
},
"cocomello-slide": {
"chance": 0.60000002384185791,
"variants": [
{
"weight": 1,
"entities": [
{
"model": "models/props_pipes/pipeset32d_bend256d_001a.mdl",
"origin": [
7581.36669921875,
8898.3583984375,
6092.33154296875
],
"angles": [
0.0,
141.39999389648438,
0.0
]
},
{
"model": "models/props_pipes/pipeset32d_bend256d_001a.mdl",
"origin": [
7779.5,
8735.1162109375,
5839.5693359375
],
"angles": [
0.79999995231628418,
140.20001220703125,
0.0
]
}
]
}
]
},
"alt-defend": {
"chance": 0.69999998807907104,
"variants": [
{
"weight": 1,
"entities": [
{
"model": "models/props_industrial/wire_spool_01.mdl",
"origin": [
6740.58544921875,
7819.6962890625,
5772.94775390625
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"model": "models/props_urban/metal_pole001.mdl",
"origin": [
6591.22900390625,
7957.89990234375,
5692.7138671875
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"model": "models/props_misc/tarp_lean.mdl",
"origin": [
6595.31298828125,
8031.70458984375,
5918.89599609375
],
"angles": [
-7.1999998092651367,
272.99993896484375,
0.0
]
},
{
"model": "models/props/de_prodigy/concretebags2.mdl",
"origin": [
6733.10009765625,
8124.28759765625,
5773.4775390625
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"model": "models/props/cs_assault/acunit01.mdl",
"origin": [
6496.00830078125,
7856.95947265625,
5859.34521484375
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"model": "models/props_interiors/bucket_tools02.mdl",
"origin": [
6785.1513671875,
8109.1240234375,
5772.04345703125
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"model": "models/props_equipment/construction_lift.mdl",
"origin": [
6897.5068359375,
8128.009765625,
5770.931640625
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"model": "models/props_junk/wood_crate002a.mdl",
"origin": [
6724.181640625,
8056.57177734375,
5792.52783203125
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"model": "models/props_junk/wood_crate002a.mdl",
"origin": [
6720.7509765625,
7988.1767578125,
5793.0654296875
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"model": "models/props_junk/wood_crate002a.mdl",
"origin": [
6725.6103515625,
8026.87255859375,
5832.45361328125
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"model": "models/props/de_prodigy/wood_pallet_01.mdl",
"origin": [
6699.41552734375,
8142.02734375,
5792.638671875
],
"angles": [
-60.0,
0.0,
0.0
]
}
]
}
]
},
"crashed-heli": {
"chance": 0.5,
"variants": [
{
"weight": 1,
"entities": [
{
"model": "models/props_vehicles/helicopter_news_downed.mdl",
"origin": [
7398.94580078125,
8013.81005859375,
5785.88232421875
],
"angles": [
-30.0,
60.0,
0.0
]
},
{
"model": "models/c2m5_helicopter_extraction/c2m5_helicopter_small.mdl",
"origin": [
7137.39306640625,
8052.5908203125,
5769.85595703125
],
"angles": [
0.0,
0.0,
0.0
]
}
]
}
]
},
"planks": {
"chance": 0.69999998807907104,
"variants": [
{
"weight": 1,
"entities": [
{
"model": "models/props_swamp/plank001a_192.mdl",
"origin": [
5287.00048828125,
8099.435546875,
5956.70361328125
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"model": "models/props_swamp/plank001a_192.mdl",
"origin": [
5280.6142578125,
8045.6708984375,
5954.27734375
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"model": "models/props_swamp/plank001a_192.mdl",
"origin": [
5391.94287109375,
7909.29052734375,
5954.12109375
],
"angles": [
0.0,
90.0,
0.0
]
}
]
}
]
},
"alt-lighttower": {
"chance": 0.69999998807907104,
"variants": [
{
"weight": 1,
"entities": [
{
"model": "models/props_swamp/plank001b_192.mdl",
"origin": [
5284.8330078125,
8857.6455078125,
5968.1767578125
],
"angles": [
0.0,
0.0,
30.0
]
}
]
},
{
"weight": 1,
"entities": [
{
"model": "models/props_pipes/pipeset32d_256_001a.mdl",
"origin": [
5281.6025390625,
8962.1796875,
5892.1435546875
],
"angles": [
0.0,
90.0,
0.0
]
}
]
}
]
},
"item-block": {
"chance": 0.44999998807907104,
"variants": [
{
"weight": 1,
"entities": [
{
"model": "models/props_highway/plywood_01.mdl",
"origin": [
5567.87548828125,
8392.4853515625,
5991.34521484375
],
"angles": [
-90.0,
90.0,
0.0
]
},
{
"model": "models/props_highway/plywood_02.mdl",
"origin": [
5522.6025390625,
8387.27734375,
6000.06884765625
],
"angles": [
-90.0,
75.0,
0.0
]
},
{
"model": "models/props_highway/plywood_03.mdl",
"origin": [
5952.1240234375,
8539.2177734375,
5921.02587890625
],
"angles": [
75.0,
0.0,
0.0
]
},
{
"model": "models/props_fortifications/barricade_razorwire001_128_reference.mdl",
"origin": [
5517.07666015625,
8556.119140625,
6080.91650390625
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "env_physics_blocker",
"origin": [
5517.07666015625,
8552.119140625,
6080.91650390625
],
"angles": [
0.0,
90.0,
0.0
],
"scale": [
48,
12,
80
]
}
]
}
]
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,504 @@
{
"semi-skip": {
"chance": 0.30000001192092896,
"variants": [
{
"weight": 1,
"inputs": [
{
"hammerid": 55220,
"input": "_allow_ladder"
},
{
"hammerid": 55148,
"input": "_allow_ladder"
}
],
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
3793.525634765625,
-308.44189453125,
-62.157688140869141
],
"angles": [
0.0,
-19.700000762939453,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
3879.13916015625,
-358.6483154296875,
-55.560436248779297
],
"angles": [
-3.5999999046325684,
-32.400001525878906,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_industrial/pallet_stack_docks.mdl",
"origin": [
3589.447021484375,
-341.81204223632812,
-172.47555541992188
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_industrial/pallet_stack_docks.mdl",
"origin": [
3584.012451171875,
-342.64913940429688,
-230.81228637695312
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_industrial/pallet_barrels_water01_docks.mdl",
"origin": [
3530.643310546875,
-259.70034790039062,
-168.9732666015625
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_industrial/pallet_barrels_water01_docks.mdl",
"origin": [
3526.457275390625,
-254.91879272460938,
-220.84259033203125
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_vehicles/semi_trailer_freestanding.mdl",
"origin": [
3699.136962890625,
-36.224365234375,
-227.72334289550781
],
"angles": [
0.0,
176.19999694824219,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_industrial/pallet_stack_docks.mdl",
"origin": [
3711.4404296875,
118.58720397949219,
-95.429054260253906
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_industrial/pallet_stack_docks.mdl",
"origin": [
3714.56982421875,
186.07363891601562,
-61.407173156738281
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_02.mdl",
"origin": [
3710.57666015625,
184.14863586425781,
0.51078051328659058
],
"angles": [
35.199996948242188,
-76.899993896484375,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_vehicles/flatnose_truck.mdl",
"origin": [
3691.6806640625,
-266.49920654296875,
-220.36700439453125
],
"angles": [
0.0,
-103.19999694824219,
0.0
]
}
]
}
]
},
"peanut": {
"chance": 1.0,
"variants": [
{
"weight": 1,
"entities": [
{
"type": "prop_physics",
"model": "models/props_fairgrounds/lil'peanut_cutout001.mdl",
"origin": [
4761.5625,
2888.28125,
-63.59375
],
"angles": [
0.0,
54.0087890625,
0.3515625
]
}
]
}
]
},
"delivery-doors": {
"chance": 0.69999998807907104,
"variants": [
{
"weight": 1,
"inputs": [
{
"hammerid": 654024,
"input": "break"
},
{
"hammerid": 621021,
"input": "break"
},
{
"hammerid": 665800,
"input": "break"
}
],
"entities": []
}
]
},
"3way-alt": {
"chance": 0.40000000596046448,
"variants": [
{
"weight": 1,
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_doors/roll-up_door_full.mdl",
"origin": [
2070.6923828125,
-374.97793579101562,
-223.98489379882812
],
"angles": [
0.0,
90.0,
0.0
]
}
]
},
{
"weight": 1,
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_doors/roll-up_door_full.mdl",
"origin": [
2366.560791015625,
117.58223724365234,
-218.53596496582031
],
"angles": [
0.0,
-90.0,
0.0
]
}
]
}
]
},
"ladder-up": {
"chance": 0.69999998807907104,
"variants": [
{
"weight": 1,
"inputs": [
{
"hammerid": 37185,
"input": "_allow_ladder"
},
{
"hammerid": 222283,
"input": "_allow_ladder"
}
],
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_c17/metalladder001.mdl",
"origin": [
3652.984375,
3227.336181640625,
-74.784149169921875
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_c17/metalladder001.mdl",
"origin": [
3510.315673828125,
3315.55859375,
84.583740234375
],
"angles": [
-1.3999999761581421,
-91.400001525878906,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
3572.427978515625,
3259.145751953125,
54.591609954833984
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_highway/plywood_03.mdl",
"origin": [
3563.036865234375,
3213.2373046875,
53.998668670654297
],
"angles": [
0.0,
0.0,
0.0
]
}
]
}
]
},
"container-block": {
"chance": 0.5,
"variants": [
{
"weight": 1,
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_equipment/cargo_container01.mdl",
"origin": [
3233.559814453125,
4165.6025390625,
1.416229248046875
],
"angles": [
0.0,
26.400001525878906,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_urban/fence_cover001_64.mdl",
"origin": [
3384.270263671875,
4088.225341796875,
-30.631721496582031
],
"angles": [
-5.0999999046325684,
-31.400001525878906,
0.0
]
}
]
}
]
},
"alt-warehouse": {
"chance": 0.69999999999999996,
"variants": [
{
"weight": 1,
"inputs": [
{
"hammerid": 663285,
"input": "break"
}
],
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_doors/roll-up_door_full.mdl",
"origin": [
4353.25927734375,
4855.75,
48.046012878417969
],
"angles": [
0.0,
-90.299995422363281,
0.0
]
}
]
}
]
},
"container-danger": {
"chance": 0.60000002384185791,
"variants": [
{
"weight": 1,
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_equipment/cargo_container01.mdl",
"origin": [
4853.689453125,
6209.517578125,
92.42303466796875
],
"angles": [
0.0,
208.20001220703125,
0.0
]
}
]
}
]
},
"infected-access": {
"chance": 0.40000000596046448,
"variants": [
{
"weight": 1,
"inputs": [
{
"targetname": "anv_mapfixes_commonhop_windowsa",
"input": "kill"
},
{
"targetname": "anv_mapfixes_commonhop_windowsb",
"input": "kill"
},
{
"hammerid": 896507,
"input": "_allow_ladder"
},
{
"hammerid": 42691,
"input": "_allow_ladder"
}
],
"entities": [
{
"type": "prop_dynamic",
"model": "models/props_unique/zombiebreakwallhospitalexterior01_main.mdl",
"origin": [
7533.03369140625,
7244.62548828125,
270.92254638671875
],
"angles": [
0.0,
0.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_unique/zombiebreakwallhospitalexterior01_main.mdl",
"origin": [
6959.8349609375,
7278.86181640625,
245.17605590820312
],
"angles": [
0.0,
90.0,
0.0
]
},
{
"type": "prop_dynamic",
"model": "models/props_vehicles/bus01.mdl",
"origin": [
7007.01123046875,
6723.58642578125,
50.544933319091797
],
"angles": [
0.0,
8.1000003814697266,
0.0
]
}
]
}
]
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -5,10 +5,11 @@
#define PLUGIN_VERSION "1.0"
#define PRECACHE_SOUNDS_COUNT 4
#define PRECACHE_SOUNDS_COUNT 5
char PRECACHE_SOUNDS[PRECACHE_SOUNDS_COUNT][] = {
"custom/xen_teleport.mp3",
"custom/mariokartmusic.mp3",
"custom/airhorn.mp3",
"custom/spookyscaryskeletons.mp3",
"custom/wearenumberone2.mp3",
};

View file

@ -248,6 +248,14 @@ public void Event_L4D2_Death(Event event, const char[] name, bool dontBroadcast)
if(IsFakeClient(attacker)) GetClientName(attacker, attackerName, sizeof(attackerName));
else GetClientAuthId(attacker, AuthId_Steam2, attackerName, sizeof(attackerName));
if(GetClientTeam(attacker) == 2) {
char weaponName[32];
event.GetString("weapon", weaponName, sizeof(weaponName));
if(weaponName[0] != '\0') {
AddLogCustom("STATE", attackerName, victimName, "\"%L\" killed \"%L\" with \"%s\"", attacker, victim, weaponName);
return;
}
}
AddLogCustom("STATE", attackerName, victimName, "\"%L\" killed \"%L\"", attacker, victim);
} else {
AddLogCustom("STATE", "", victimName, "\"%L\" died", victim);
@ -267,7 +275,15 @@ public void Event_L4D2_Incapped(Event event, const char[] name, bool dontBroadca
if(attacker > 0 && attacker != victim) {
if(IsFakeClient(attacker)) GetClientName(attacker, attackerName, sizeof(attackerName));
else GetClientAuthId(attacker, AuthId_Steam2, attackerName, sizeof(attackerName));
if(GetClientTeam(attacker) == 2) {
char weaponName[32];
event.GetString("weapon", weaponName, sizeof(weaponName));
if(weaponName[0] != '\0') {
AddLogCustom("STATE", attackerName, victimName, "\"%L\" incapped \"%L\" with \"%s\"", attacker, victim, weaponName);
return;
}
}
AddLogCustom("STATE", attackerName, victimName, "\"%L\" incapped \"%L\"", attacker, victim);
} else {
AddLogCustom("STATE", "", victimName, "\"%L\" was incapped", victim);

View file

@ -203,6 +203,7 @@ void LoadFolder(ArrayList parent, const char[] rootPath) {
DirectoryListing listing = OpenDirectory(rootPath);
if(listing == null) {
LogError("Cannot open \"%s\"", rootPath);
return;
}
while(listing.GetNext(buffer, sizeof(buffer), fileType)) {
if(fileType == FileType_Directory) {

View file

@ -135,7 +135,7 @@ Action Command_DoAHat(int client, int args) {
char sizeStr[4];
GetCmdArg(2, sizeStr, sizeof(sizeStr));
float size = StringToFloat(sizeStr);
if(size == 0.0) {
if(size <= 0.0) {
ReplyToCommand(client, "[Hats] Invalid size");
return Plugin_Handled;
}
@ -335,7 +335,12 @@ Action Command_DoAHat(int client, int args) {
} else {
// Find a new hatable entity
int flags = 0;
entity = GetLookingEntity(client, Filter_ValidHats);
if(args > 0 && isForced) {
char arg[16];
entity = GetCmdArgInt(1);
} else {
entity = GetLookingEntity(client, Filter_ValidHats);
}
if(entity <= 0) {
PrintCenterText(client, "[Hats] No entity found");
return Plugin_Handled;

View file

@ -0,0 +1,427 @@
int SpawnCar(VariantEntityData entity) {
if(entity.model[0] == '\0') {
LogError("Missing model for entity with type \"%s\"", entity.type);
return -1;
}
PrecacheModel(entity.model);
int vehicle;
if(StrEqual(entity.type, "_car_alarm")) {
vehicle = SpawnAlarmCar(entity.model, entity.origin, entity.angles, entity.color);
return vehicle;
}
char glassModel[64];
strcopy(glassModel, sizeof(glassModel), entity.type);
ReplaceString(glassModel, sizeof(glassModel), ".mdl", "_glass.mdl");
if(StrEqual(entity.type, "_car_physics")) {
vehicle = CreateProp("prop_physics", entity.model, entity.origin, entity.angles);
} else {
vehicle = CreateProp("prop_dynamic", entity.model, entity.origin, entity.angles);
}
if(PrecacheModel(glassModel)) {
int glass = CreateProp(glassModel, entity.model, entity.origin, entity.angles);
SetVariantString("!activator");
AcceptEntityInput(glass, "SetParent", vehicle);
}
SetEntityRenderColor(vehicle, GetRandomInt(0, 255), GetRandomInt(0, 255), GetRandomInt(0, 255));
return vehicle;
}
/**
// ====================================================================================================
:::BEGIN::: -> Source Code (with changes) from:
* DieTeetasse - [L4D1&2] Spawn Alarmcars plugin https://forums.alliedmods.net/showthread.php?t=139352
* Marttt - [L4D1 & L4D2] Replace Cars Into Car Alarms plugin https://forums.alliedmods.net/showthread.php?p=2731868
// ====================================================================================================
*/
/****************************************************************************************************/
#define DISTANCE_FRONT 101.0
#define DISTANCE_SIDETURN 34.0
#define DISTANCE_UPFRONT 29.0
#define DISTANCE_BACK 103.0
#define DISTANCE_SIDE 27.0
#define DISTANCE_UPBACK 31.0
#define SOUND_CAR_ALARM "vehicles/car_alarm/car_alarm.wav"
#define SOUND_CAR_ALARM_CHIRP2 "vehicles/car_alarm/car_alarm_chirp2.wav"
#define COLOR_YELLOWLIGHT "224 162 44"
#define COLOR_REDLIGHT "255 13 19"
#define COLOR_WHITELIGHT "252 243 226"
#define ALARMCAR_GLOW_SPRITE "sprites/glow.vmt"
int SpawnAlarmCar(const char[] model, float vPos[3], float vAng[3], int color[4] = { 255, 255, 255, 255})
{
PrecacheModel(model);
PrecacheModel(ALARMCAR_GLOW_SPRITE, true);
PrecacheSound(SOUND_CAR_ALARM, true);
PrecacheSound(SOUND_CAR_ALARM_CHIRP2, true);
char carName[64];
char glassOnName[64];
char glassOffName[64];
char timerName[64];
char alarmSoundName[64];
char chirpSoundName[64];
char lightsName[64];
char headlightsName[64];
char remarkName[64];
char gameEventName[64];
// create car
int carEntity = CreateEntityByName("prop_car_alarm");
FormatEx(carName, sizeof(carName), "randomizer_car_%d", carEntity);
FormatEx(glassOnName, sizeof(glassOnName), "randomizer_car_glasson_%d", carEntity);
FormatEx(glassOffName, sizeof(glassOffName), "randomizer_car_glassoff_%d", carEntity);
FormatEx(timerName, sizeof(timerName), "randomizer_car_alarmtimer_%d", carEntity);
FormatEx(alarmSoundName, sizeof(alarmSoundName), "randomizer_car_alarmsound_%d", carEntity);
FormatEx(chirpSoundName, sizeof(chirpSoundName), "randomizer_car_chirpsound_%d", carEntity);
FormatEx(lightsName, sizeof(lightsName), "randomizer_car_lights_%d", carEntity);
FormatEx(headlightsName, sizeof(headlightsName), "randomizer_car_headlights_%d", carEntity);
FormatEx(remarkName, sizeof(remarkName), "randomizer_car_remark_%d", carEntity);
FormatEx(gameEventName, sizeof(gameEventName), "randomizer_car_gameevent_%d", carEntity);
char tempString[128];
DispatchKeyValue(carEntity, "targetname", carName);
DispatchKeyValue(carEntity, "model", model);
Format(tempString, sizeof(tempString), "%d %d %d %d", color[0], color[1], color[2], color[3]);
DispatchKeyValue(carEntity, "rendercolor", tempString);
Debug("spawning alarm car ent%d \"%s\" (m=%s) at %.0f %.0f %.0f", carEntity, carName, model, vPos[0], vPos[1], vPos[2]);
Format(tempString, sizeof(tempString), "%s,PlaySound,,0.2,-1", chirpSoundName);
DispatchKeyValue(carEntity, "OnCarAlarmChirpStart", tempString);
Format(tempString, sizeof(tempString), "%s,ShowSprite,,0.2,-1", lightsName);
DispatchKeyValue(carEntity, "OnCarAlarmChirpStart", tempString);
Format(tempString, sizeof(tempString), "%s,HideSprite,,0.7,-1", lightsName);
DispatchKeyValue(carEntity, "OnCarAlarmChirpEnd", tempString);
Format(tempString, sizeof(tempString), "%s,Enable,,0,-1", timerName);
DispatchKeyValue(carEntity, "OnCarAlarmStart", tempString);
Format(tempString, sizeof(tempString), "%s,PlaySound,,0,-1", alarmSoundName);
DispatchKeyValue(carEntity, "OnCarAlarmStart", tempString);
Format(tempString, sizeof(tempString), "%s,Enable,,0,-1", glassOffName);
DispatchKeyValue(carEntity, "OnCarAlarmStart", tempString);
DispatchKeyValue(carEntity, "OnHitByTank", tempString);
Format(tempString, sizeof(tempString), "%s,Kill,,0,-1", glassOnName);
DispatchKeyValue(carEntity, "OnCarAlarmStart", tempString);
DispatchKeyValue(carEntity, "OnHitByTank", tempString);
Format(tempString, sizeof(tempString), "%s,Kill,,0,-1", timerName);
DispatchKeyValue(carEntity, "OnCarAlarmEnd", tempString);
DispatchKeyValue(carEntity, "OnHitByTank", tempString);
Format(tempString, sizeof(tempString), "%s,Kill,,0,-1", alarmSoundName);
DispatchKeyValue(carEntity, "OnCarAlarmEnd", tempString);
DispatchKeyValue(carEntity, "OnHitByTank", tempString);
Format(tempString, sizeof(tempString), "%s,Kill,,0,-1", chirpSoundName);
DispatchKeyValue(carEntity, "OnCarAlarmEnd", tempString);
DispatchKeyValue(carEntity, "OnHitByTank", tempString);
Format(tempString, sizeof(tempString), "%s,Kill,,0,-1", lightsName);
DispatchKeyValue(carEntity, "OnCarAlarmEnd", tempString);
DispatchKeyValue(carEntity, "OnHitByTank", tempString);
Format(tempString, sizeof(tempString), "%s,Kill,,0,-1", headlightsName);
DispatchKeyValue(carEntity, "OnCarAlarmEnd", tempString);
DispatchKeyValue(carEntity, "OnHitByTank", tempString);
Format(tempString, sizeof(tempString), "%s,Kill,,0,-1", remarkName);
DispatchKeyValue(carEntity, "OnCarAlarmEnd", tempString);
DispatchKeyValue(carEntity, "OnHitByTank", tempString);
Format(tempString, sizeof(tempString), "%s,Kill,,0,-1", gameEventName);
DispatchKeyValue(carEntity, "OnCarAlarmEnd", tempString);
DispatchKeyValue(carEntity, "OnHitByTank", tempString);
DispatchKeyValueVector(carEntity, "origin", vPos);
DispatchKeyValueVector(carEntity, "angles", vAng);
DispatchSpawn(carEntity);
// create glasses
strcopy(tempString, sizeof(tempString), model);
ReplaceString(tempString, sizeof(tempString), ".mdl", "_glass.mdl");
if(PrecacheModel(tempString))
CreateGlass(tempString, glassOnName, false, vPos, vAng, carName);
// CreateGlass(glassOffName, true, vPos, vAng, carName);
CreateSound(alarmSoundName, "16", "Car.Alarm", vPos, carName);
CreateSound(chirpSoundName, "48", "Car.Alarm.Chirp2", vPos, carName);
CreateLights(lightsName, vPos, vAng, carName);
CreateHeadlights(headlightsName, vPos, vAng, carName);
CreateLogicTimer(timerName, lightsName, headlightsName, vPos, carName);
CreateRemark(remarkName, vPos, vAng, carName);
CreateGameEvent(gameEventName, vPos, vAng, carName);
return carEntity;
}
/****************************************************************************************************/
void CreateGlass(const char[] model, char[] targetName, bool startDisabled, float vPos[3], float vAng[3], char[] carName)
{
int entity = CreateEntityByName("prop_car_glass");
DispatchKeyValue(entity, "targetname", targetName);
DispatchKeyValue(entity, "model", model);
DispatchKeyValue(entity, "StartDisabled", startDisabled ? "1" : "0");
DispatchKeyValueVector(entity, "origin", vPos);
DispatchKeyValueVector(entity, "angles", vAng);
DispatchSpawn(entity);
SetVariantString(carName);
AcceptEntityInput(entity, "SetParent", entity, entity, 0);
}
/****************************************************************************************************/
void CreateSound(char[] targetName, char[] spawnFlags, char[] messageName, float vPos[3], char[] carName)
{
int entity = CreateEntityByName("ambient_generic");
float newPos[3];
newPos = vPos;
newPos[2] += 80.0;
DispatchKeyValue(entity, "targetname", targetName);
DispatchKeyValue(entity, "spawnflags", spawnFlags);
DispatchKeyValue(entity, "message", messageName);
DispatchKeyValue(entity, "SourceEntityName", carName);
DispatchKeyValue(entity, "radius", "4000");
DispatchKeyValueVector(entity, "origin", newPos);
DispatchSpawn(entity);
ActivateEntity(entity); // Don't work without it
SetVariantString(carName);
AcceptEntityInput(entity, "SetParent", entity, entity, 0);
}
/****************************************************************************************************/
void CreateLights(char[] lightsName, float vPos[3], float vAng[3], char[] carName)
{
float distance[6] = {DISTANCE_FRONT, DISTANCE_SIDETURN, DISTANCE_UPFRONT, DISTANCE_BACK, DISTANCE_SIDE, DISTANCE_UPBACK};
float newPos[3];
float lightDistance[3];
newPos = vPos;
lightDistance[0] = distance[0];
lightDistance[1] = distance[1]*-1.0;
lightDistance[2] = distance[2];
MoveVectorvPos3D(newPos, vAng, lightDistance); // front left
CreateLight(lightsName, COLOR_YELLOWLIGHT, newPos, carName);
newPos = vPos;
lightDistance[1] = distance[1];
MoveVectorvPos3D(newPos, vAng, lightDistance); // front right
CreateLight(lightsName, COLOR_YELLOWLIGHT, newPos, carName);
newPos = vPos;
lightDistance[0] = distance[3]*-1.0;
lightDistance[1] = distance[4]*-1.0;
lightDistance[2] = distance[5];
MoveVectorvPos3D(newPos, vAng, lightDistance); // back left
CreateLight(lightsName, COLOR_REDLIGHT, newPos, carName);
newPos = vPos;
lightDistance[1] = distance[4];
MoveVectorvPos3D(newPos, vAng, lightDistance); // back right
CreateLight(lightsName, COLOR_REDLIGHT, newPos, carName);
}
/****************************************************************************************************/
void CreateLight(char[] targetName, char[] renderColor, float vPos[3], char[] carName)
{
int entity = CreateEntityByName("env_sprite");
DispatchKeyValue(entity, "targetname", targetName);
DispatchKeyValue(entity, "rendercolor", renderColor);
DispatchKeyValue(entity, "model", ALARMCAR_GLOW_SPRITE);
DispatchKeyValue(entity, "scale", "0.5");
DispatchKeyValue(entity, "rendermode", "9");
DispatchKeyValue(entity, "renderamt", "255");
DispatchKeyValue(entity, "HDRColorScale", "0.7");
DispatchKeyValue(entity, "GlowProxySize", "5");
DispatchKeyValueVector(entity, "origin", vPos);
DispatchSpawn(entity);
SetVariantString(carName);
AcceptEntityInput(entity, "SetParent", entity, entity, 0);
}
/****************************************************************************************************/
void CreateHeadlights(char[] headlightsName, float vPos[3], float vAng[3], char[] carName)
{
float distance[3] = {DISTANCE_FRONT, DISTANCE_SIDE, DISTANCE_UPFRONT};
float newPos[3];
float headlightDistance[3];
newPos = vPos;
headlightDistance[0] = distance[0];
headlightDistance[1] = distance[1]*-1.0;
headlightDistance[2] = distance[2];
MoveVectorvPos3D(newPos, vAng, headlightDistance); // front left
CreateHeadlight(headlightsName, newPos, vAng, carName);
newPos = vPos;
headlightDistance[1] = distance[1];
MoveVectorvPos3D(newPos, vAng, headlightDistance); // front right
CreateHeadlight(headlightsName, newPos, vAng, carName);
}
/****************************************************************************************************/
void CreateHeadlight(char[] targetName, float vPos[3], float vAng[3], char[] carName)
{
int entity = CreateEntityByName("beam_spotlight");
DispatchKeyValue(entity, "targetname", targetName);
DispatchKeyValue(entity, "rendercolor", COLOR_WHITELIGHT);
DispatchKeyValue(entity, "spotlightwidth", "32");
DispatchKeyValue(entity, "spotlightlength", "256");
DispatchKeyValue(entity, "spawnflags", "2");
DispatchKeyValue(entity, "rendermode", "5");
DispatchKeyValue(entity, "renderamt", "150");
DispatchKeyValue(entity, "maxspeed", "100");
DispatchKeyValue(entity, "HDRColorScale", "0.5");
DispatchKeyValueVector(entity, "origin", vPos);
DispatchKeyValueVector(entity, "angles", vAng);
DispatchSpawn(entity);
SetVariantString(carName);
AcceptEntityInput(entity, "SetParent", entity, entity, 0);
}
/****************************************************************************************************/
void CreateLogicTimer(char[] targetName, char[] lightsName, char[] headlightsName, float vPos[3], char[] carName)
{
int entity = CreateEntityByName("logic_timer");
DispatchKeyValue(entity, "targetname", targetName);
DispatchKeyValue(entity, "StartDisabled", "1");
DispatchKeyValue(entity, "RefireTime", "0.75");
char tempString[128];
Format(tempString, sizeof(tempString), "%s,ShowSprite,,0,-1", lightsName);
DispatchKeyValue(entity, "OnTimer", tempString);
Format(tempString, sizeof(tempString), "%s,ShowSprite,,0,-1", lightsName);
DispatchKeyValue(entity, "OnTimer", tempString);
Format(tempString, sizeof(tempString), "%s,LightOn,,0,-1", headlightsName);
DispatchKeyValue(entity, "OnTimer", tempString);
Format(tempString, sizeof(tempString), "%s,HideSprite,,0.5,-1", lightsName);
DispatchKeyValue(entity, "OnTimer", tempString);
Format(tempString, sizeof(tempString), "%s,HideSprite,,0.5,-1", lightsName);
DispatchKeyValue(entity, "OnTimer", tempString);
Format(tempString, sizeof(tempString), "%s,LightOff,,0.5,-1", headlightsName);
DispatchKeyValue(entity, "OnTimer", tempString);
DispatchKeyValueVector(entity, "origin", vPos);
DispatchSpawn(entity);
SetVariantString(carName);
AcceptEntityInput(entity, "SetParent", entity, entity, 0);
}
/****************************************************************************************************/
void CreateRemark(char[] targetName, float vPos[3], float vAng[3], char[] carName)
{
int entity = CreateEntityByName("info_remarkable");
DispatchKeyValue(entity, "targetname", targetName);
DispatchKeyValue(entity, "contextsubject", "remark_caralarm");
DispatchKeyValueVector(entity, "origin", vPos);
DispatchKeyValueVector(entity, "angles", vAng);
DispatchSpawn(entity);
SetVariantString(carName);
AcceptEntityInput(entity, "SetParent", entity, entity, 0);
}
/****************************************************************************************************/
void CreateGameEvent(char[] targetName, float vPos[3], float vAng[3], char[] carName)
{
int entity = CreateEntityByName("info_game_event_proxy");
DispatchKeyValue(entity, "targetname", targetName);
DispatchKeyValue(entity, "spawnflags", "1");
DispatchKeyValue(entity, "range", "100");
DispatchKeyValue(entity, "event_name", "explain_disturbance");
DispatchKeyValueVector(entity, "origin", vPos);
DispatchKeyValueVector(entity, "angles", vAng);
DispatchSpawn(entity);
SetVariantString(carName);
AcceptEntityInput(entity, "SetParent", entity, entity, 0);
}
/****************************************************************************************************/
void MoveVectorvPos3D(float vPos[3], float constvAng[3], float constDistance[3])
{
float vAng[3], dirFw[3], dirRi[3], dirUp[3], distance[3];
distance = constDistance;
vAng[0] = DegToRad(constvAng[0]);
vAng[1] = DegToRad(constvAng[1]);
vAng[2] = DegToRad(constvAng[2]);
// roll (rotation over x)
dirFw[0] = 1.0;
dirFw[1] = 0.0;
dirFw[2] = 0.0;
dirRi[0] = 0.0;
dirRi[1] = Cosine(vAng[2]);
dirRi[2] = Sine(vAng[2])*-1;
dirUp[0] = 0.0;
dirUp[1] = Sine(vAng[2]);
dirUp[2] = Cosine(vAng[2]);
MatrixMulti(dirFw, dirRi, dirUp, distance);
// pitch (rotation over y)
dirFw[0] = Cosine(vAng[0]);
dirFw[1] = 0.0;
dirFw[2] = Sine(vAng[0]);
dirRi[0] = 0.0;
dirRi[1] = 1.0;
dirRi[2] = 0.0;
dirUp[0] = Sine(vAng[0])*-1;
dirUp[1] = 0.0;
dirUp[2] = Cosine(vAng[0]);
MatrixMulti(dirFw, dirRi, dirUp, distance);
// yaw (rotation over z)
dirFw[0] = Cosine(vAng[1]);
dirFw[1] = Sine(vAng[1])*-1;
dirFw[2] = 0.0;
dirRi[0] = Sine(vAng[1]);
dirRi[1] = Cosine(vAng[1]);
dirRi[2] = 0.0;
dirUp[0] = 0.0;
dirUp[1] = 0.0;
dirUp[2] = 1.0;
MatrixMulti(dirFw, dirRi, dirUp, distance);
// addition
for (int i = 0; i < 3; i++) vPos[i] += distance[i];
}
/****************************************************************************************************/
void MatrixMulti(float matA[3], float matB[3], float matC[3], float vec[3])
{
float res[3];
for (int i = 0; i < 3; i++) res[0] += matA[i]*vec[i];
for (int i = 0; i < 3; i++) res[1] += matB[i]*vec[i];
for (int i = 0; i < 3; i++) res[2] += matC[i]*vec[i];
vec = res;
}
/**
// ====================================================================================================
:::END::: -> Source Code from DieTeetasse - [L4D1&2] Spawn Alarmcars plugin https://forums.alliedmods.net/showthread.php?t=139352
// ====================================================================================================
*/

View file

@ -35,8 +35,8 @@ void OpenVariantsMenu(int client) {
Menu menu = new Menu(BuilderHandler_VariantsMenu);
menu.SetTitle("%s > Variants", g_builder.selectedSceneId);
char id[8], display[32];
menu.AddItem("new", "New");
menu.AddItem("-1", "None (Shared Scene)");
menu.AddItem("new", "New Variant");
menu.AddItem("-1", "Global Scene Variant");
JSONArray variants = view_as<JSONArray>(g_builder.selectedSceneData.Get("variants"));
JSONObject varObj;
@ -45,9 +45,9 @@ void OpenVariantsMenu(int client) {
varObj = view_as<JSONObject>(variants.Get(i));
entities = view_as<JSONArray>(varObj.Get("entities"));
if(i == g_builder.selectedVariantIndex) {
Format(display, sizeof(display), "%d entities (selected)", entities.Length);
Format(display, sizeof(display), "#%d - %d entities (✔)", i, entities.Length);
} else {
Format(display, sizeof(display), "%d entities", entities.Length);
Format(display, sizeof(display), "#%d - %d entities", i, entities.Length);
}
IntToString(i, id, sizeof(id));
menu.AddItem(id, display);

View file

@ -24,6 +24,8 @@ TopMenu g_topMenu;
char g_currentMap[64];
ConVar enabledBlacklist;
//int g_markedMode
#include <editor/editor.sp>
@ -80,6 +82,8 @@ public void OnPluginStart() {
LoadTranslations("common.phrases");
HookEvent("player_spawn", Event_PlayerSpawn);
enabledBlacklist = CreateConVar("editor_denylist", "7", "The lists to check, add bits together.\n1 = classnames\n2 = models\n4 = targetnames", FCVAR_NONE, true, 0.0);
RegAdminCmd("sm_mkwall", Command_MakeWall, ADMFLAG_CUSTOM2);
RegAdminCmd("sm_edit", Command_Editor, ADMFLAG_CUSTOM2);
RegAdminCmd("sm_wall", Command_Editor, ADMFLAG_CUSTOM2);
@ -489,13 +493,15 @@ char FORBIDDEN_MODELS[MAX_FORBIDDEN_MODELS][] = {
bool CheckBlacklist(int entity) {
if(entity == 0) return false;
static char buffer[64];
GetEntityClassname(entity, buffer, sizeof(buffer));
for(int i = 0; i < MAX_FORBIDDEN_CLASSNAMES; i++) {
if(StrEqual(FORBIDDEN_CLASSNAMES[i], buffer)) {
return false;
if(enabledBlacklist.IntValue & 1) {
GetEntityClassname(entity, buffer, sizeof(buffer));
for(int i = 0; i < MAX_FORBIDDEN_CLASSNAMES; i++) {
if(StrEqual(FORBIDDEN_CLASSNAMES[i], buffer)) {
return false;
}
}
}
if(StrContains(buffer, "prop_") > -1) {
if(enabledBlacklist.IntValue & 2) {
GetEntPropString(entity, Prop_Data, "m_ModelName", buffer, sizeof(buffer));
for(int i = 0; i < MAX_FORBIDDEN_MODELS; i++) {
if(StrEqual(FORBIDDEN_MODELS[i], buffer)) {
@ -503,9 +509,11 @@ bool CheckBlacklist(int entity) {
}
}
}
GetEntPropString(entity, Prop_Data, "m_iName", buffer, sizeof(buffer));
if(StrEqual(buffer, "l4d2_randomizer")) {
return false;
if(enabledBlacklist.IntValue & 4) {
GetEntPropString(entity, Prop_Data, "m_iName", buffer, sizeof(buffer));
if(StrContains(buffer, "randomizer") > -1) {
return false;
}
}
return true;
}

View file

@ -22,9 +22,9 @@ int g_iLaserIndex;
#if defined DEBUG_BLOCKERS
#include <smlib/effects>
#endif
#define ENT_PROP_NAME "l4d2_randomizer"
#define ENT_ENV_NAME "l4d2_randomizer"
#define ENT_BLOCKER_NAME "l4d2_randomizer"
#define ENT_PROP_NAME "randomizer"
#define ENT_ENV_NAME "randomizer"
#define ENT_BLOCKER_NAME "randomizer"
#include <gamemodes/ents>
#define MAX_SCENE_NAME_LENGTH 32
@ -100,6 +100,7 @@ enum struct BuilderData {
}
#include <randomizer/rbuild.sp>
#include <randomizer/caralarm.sp>
public Plugin myinfo =
{
@ -116,24 +117,40 @@ public void OnPluginStart() {
SetFailState("This plugin is for L4D/L4D2 only.");
}
HookEvent("round_start_post_nav", Event_RoundStartPosNav);
RegAdminCmd("sm_rcycle", Command_CycleRandom, ADMFLAG_CHEATS);
RegAdminCmd("sm_expent", Command_ExportEnt, ADMFLAG_GENERIC);
RegAdminCmd("sm_rbuild", Command_RandomizerBuild, ADMFLAG_CHEATS);
cvarEnabled = CreateConVar("sm_randomizer_enabled", "0");
HookEvent("player_first_spawn", Event_PlayerFirstSpawn);
g_MapData.activeScenes = new ArrayList(sizeof(ActiveSceneData));
}
void Event_PlayerFirstSpawn(Event event, const char[] name ,bool dontBroadcast) {
int client = GetClientOfUserId(event.GetInt("userid"));
if(GetUserFlagBits(client) & ADMFLAG_CHAT) {
// If enabled but no map loaded:
if(cvarEnabled.BoolValue && g_MapData.scenes == null)
PrintToChat(client, "Randomizer Note: This map has no randomizer support at the moment.");
}
}
void Event_RoundStartPosNav(Event event, const char[] name ,bool dontBroadcast) {
if(cvarEnabled.BoolValue)
CreateTimer(5.0, Timer_Run);
}
// TODO: on round start
public void OnMapStart() {
g_iLaserIndex = PrecacheModel("materials/sprites/laserbeam.vmt", true);
GetCurrentMap(currentMap, sizeof(currentMap));
if(cvarEnabled.BoolValue)
CreateTimer(5.0, Timer_Run);
}
public void OnMapEnd() {
g_builder.Cleanup();
Cleanup();
@ -196,7 +213,7 @@ public Action Command_CycleRandom(int client, int args) {
if(client > 0)
PrintCenterText(client, "Cycled flags=%d", flags);
} else {
ReplyToCommand(client, "Active Scenes:");
ReplyToCommand(client, "Active Scenes (%d/%d):", g_MapData.activeScenes.Length, g_MapData.scenes.Length);
ActiveSceneData scene;
for(int i = 0; i < g_MapData.activeScenes.Length; i++) {
g_MapData.activeScenes.GetArray(i, scene);
@ -284,7 +301,7 @@ Action Command_RandomizerBuild(int client, int args) {
} else if(StrEqual(arg, "menu")) {
OpenMainMenu(client);
} else if(g_builder.mapData == null) {
ReplyToCommand(client, "No map data for %s, either load with /rbuild load, or start new /rbuild new", currentMap);
ReplyToCommand(client, "No map data loaded for %s, either load with /rbuild load, or start new /rbuild new", currentMap);
return Plugin_Handled;
} else if(StrEqual(arg, "save")) {
SaveMapJson(currentMap, g_builder.mapData);
@ -358,10 +375,10 @@ JSONObject ExportEntity(int entity, ExportType exportType = Export_Model) {
GetEntPropVector(entity, Prop_Send, "m_angRotation", angles);
GetEntPropVector(entity, Prop_Send, "m_vecMaxs", size);
char model[128];
char classname[128], model[128];
JSONObject entityData = new JSONObject();
GetEntityClassname(entity, model, sizeof(model));
if(StrContains(model, "prop_") == -1) {
GetEntityClassname(entity, classname, sizeof(classname));
if(StrContains(classname, "prop_") == -1) {
entityData.Set("scale", VecToArray(size));
}
if(exportType == Export_HammerId) {
@ -376,6 +393,7 @@ JSONObject ExportEntity(int entity, ExportType exportType = Export_Model) {
entityData.SetString("model", model);
} else {
GetEntPropString(entity, Prop_Data, "m_ModelName", model, sizeof(model));
entityData.SetString("type", classname);
entityData.SetString("model", model);
}
entityData.Set("origin", VecToArray(origin));
@ -567,17 +585,18 @@ enum InputType {
enum struct VariantInputData {
char name[MAX_INPUTS_CLASSNAME_LENGTH];
InputType type;
char input[32];
char input[64];
void Trigger() {
int entity = -1;
switch(this.type) {
case Input_Classname: {
entity = FindEntityByClassname(entity, this.name);
this._trigger(entity);
while((entity = FindEntityByClassname(entity, this.name)) != INVALID_ENT_REFERENCE) {
this._trigger(entity);
}
}
case Input_Targetname: {
char targetname[32];
char targetname[64];
while((entity = FindEntityByClassname(entity, "*")) != INVALID_ENT_REFERENCE) {
GetEntPropString(entity, Prop_Data, "m_iName", targetname, sizeof(targetname));
if(StrEqual(targetname, this.name)) {
@ -613,14 +632,19 @@ enum struct VariantInputData {
AcceptEntityInput(entity, "Close");
AcceptEntityInput(entity, "Lock");
AcceptEntityInput(entity, "SetUnbreakable");
}else {
} else {
char cmd[32];
// Split input "a b" to a with variant "b"
int len = SplitString(this.input, " ", cmd, sizeof(cmd));
if(len > -1) SetVariantString(this.input[len]);
if(len > -1) {
SetVariantString(this.input[len]);
AcceptEntityInput(entity, cmd);
Debug("_trigger(%d): %s (v=%s)", entity, cmd, this.input[len]);
} else {
Debug("_trigger(%d): %s", entity, this.input);
AcceptEntityInput(entity, this.input);
}
Debug("_trigger(%d): %s (v=%s)", entity, this.input, cmd);
AcceptEntityInput(entity, this.input);
}
}
}
@ -858,7 +882,7 @@ void loadChoice(SceneData scene, JSONObject choiceData, JSONArray extraEntities)
// Parses entities and loads to choice.entities
loadChoiceEntity(choice.entities, view_as<JSONObject>(extraEntities.Get(i)));
}
delete extraEntities;
// delete extraEntities;
}
// Load all inputs
if(choiceData.HasKey("inputs")) {
@ -874,6 +898,7 @@ void loadChoice(SceneData scene, JSONObject choiceData, JSONArray extraEntities)
for(int i = 0; i < scenes.Length; i++) {
scenes.GetString(i, sceneId, sizeof(sceneId));
choice.forcedScenes.PushString(sceneId);
Debug("scene %s: require %s", scene.name, sceneId);
}
delete scenes;
}
@ -882,6 +907,7 @@ void loadChoice(SceneData scene, JSONObject choiceData, JSONArray extraEntities)
void loadChoiceInput(ArrayList list, JSONObject inputData) {
VariantInputData input;
input.type = Input_Classname;
// Check classname -> targetname -> hammerid
if(!inputData.GetString("classname", input.name, sizeof(input.name))) {
if(inputData.GetString("targetname", input.name, sizeof(input.name))) {
@ -936,10 +962,10 @@ void loadChoiceEntity(ArrayList list, JSONObject entityData) {
entityData.GetString("model", entity.model, sizeof(entity.model));
if(!entityData.GetString("type", entity.type, sizeof(entity.type))) {
entity.type = "prop_dynamic";
} else if(entity.type[0] == '_') {
} /*else if(entity.type[0] == '_') {
LogError("Invalid custom entity type \"%s\"", entity.type);
return;
}
}*/
GetVector(entityData, "origin", entity.origin);
GetVector(entityData, "angles", entity.angles);
GetVector(entityData, "scale", entity.scale);
@ -1013,24 +1039,35 @@ void selectScenes(int flags = 0) {
// Traverse active scenes, loading any other scene it requires (via .force_scenes)
ActiveSceneData aScene;
SceneVariantData choice;
char sceneId[64];
// list of scenes that will need to be forced if not already:
ArrayList forcedScenes = new ArrayList(ByteCountToCells(MAX_SCENE_NAME_LENGTH));
for(int i = 0; i < g_MapData.activeScenes.Length; i++) {
g_MapData.activeScenes.GetArray(i, aScene);
g_MapData.scenes.GetArray(i, scene);
scene.variants.GetArray(aScene.variantIndex, choice);
if(choice.forcedScenes != null) {
for(int j = 0; j < choice.forcedScenes.Length; j++) {
choice.forcedScenes.GetString(j, key, sizeof(key));
forcedScenes.PushString(key);
// Load scene from active scene entry
if(!g_MapData.scenesKv.GetArray(aScene.name, scene, sizeof(scene))) {
// can't find scene, ignore
continue;
}
if(aScene.variantIndex < scene.variants.Length) {
scene.variants.GetArray(aScene.variantIndex, choice);
if(choice.forcedScenes != null) {
for(int j = 0; j < choice.forcedScenes.Length; j++) {
choice.forcedScenes.GetString(j, key, sizeof(key));
forcedScenes.PushString(key);
}
}
}
}
if(forcedScenes.Length > 0) {
Debug("Loading %d forced scenes", forcedScenes.Length);
}
// Iterate and activate any forced scenes
for(int i = 0; i < forcedScenes.Length; i++) {
forcedScenes.GetString(i, key, sizeof(key));
// Check if scene was already loaded
bool isSceneAlreadyLoaded = false;
for(int j = 0; j < g_MapData.activeScenes.Length; i++) {
for(int j = 0; j < g_MapData.activeScenes.Length; j++) {
g_MapData.activeScenes.GetArray(j, aScene);
if(StrEqual(aScene.name, key)) {
isSceneAlreadyLoaded = true;
@ -1077,7 +1114,6 @@ void selectScene(SceneData scene, int flags) {
}
}
}
Debug("Total choices: %d", choices.Length);
if(flags & view_as<int>(FLAG_ALL_VARIANTS)) {
delete choices;
} else if(choices.Length > 0) {
@ -1118,7 +1154,7 @@ void spawnEntity(VariantEntityData entity) {
CreateEnvBlockerScaled(entity.type, entity.origin, entity.scale);
} else if(StrEqual(entity.type, "infodecal")) {
CreateDecal(entity.model, entity.origin);
} else if(StrContains(entity.type, "prop_") == 0) {
} else if(StrContains(entity.type, "prop_") == 0 || StrEqual(entity.type, "prop_fuel_barrel")) {
if(entity.model[0] == '\0') {
LogError("Missing model for entity with type \"%s\"", entity.type);
return;
@ -1165,6 +1201,8 @@ void spawnEntity(VariantEntityData entity) {
}
if(!found)
Debug("Warn: Could not find entity (classname=%s)", entity.model);
} else if(StrContains(entity.type, "_car") != -1) {
SpawnCar(entity);
} else {
LogError("Unknown entity type \"%s\"", entity.type);
}
@ -1201,6 +1239,17 @@ void Cleanup() {
}
delete g_MapData.lumpEdits;
// Cleanup all alarm car entities:
int entity = -1;
char targetname[128];
while((entity = FindEntityByClassname(entity, "*")) != INVALID_ENT_REFERENCE) {
GetEntPropString(entity, Prop_Data, "m_iName", targetname, sizeof(targetname));
if(StrContains(targetname, "randomizer_car") != -1) {
RemoveEntity(entity);
}
}
// TODO: delete car alarms
DeleteCustomEnts();
g_MapData.activeScenes.Clear();
}