Commit Graph

48 Commits

Author SHA1 Message Date
eraser1
c6c4db9e02 It's been a while!
https://github.com/Defent/DMS_Exile/wiki/Changelog#february-23-2017-645-pm-cst-america
2017-02-23 18:50:14 -06:00
eraser1
e0dc8c874d Release Candidate! 2016-06-06 22:47:15 -05:00
eraser1
725487340e ArmA AI need some ICE... 2016-05-22 00:05:16 -05:00
eraser1
218d65b8a0 Fixes + micro-optimizations 2016-05-15 13:55:18 -05:00
eraser1
e3d11a0aa5 Initial Test Branch Commit
Lots of optimizations...
2016-05-06 22:44:48 -05:00
eraser1
7dcf806cb3 Stuff I've been working on... 2016-03-25 18:09:41 -05:00
eraser1
d435e6cf1a Initial Testing Commit 2016-03-01 00:34:55 -06:00
eraser1
11d0f608dd Update version and readme 2016-02-19 17:33:48 -06:00
eraser1
9d0ec9cffe Some cool new stuff :D 2016-02-17 17:58:05 -06:00
eraser1
d8ad73cc70 Update Documentation 2016-02-14 13:38:57 -06:00
eraser1
e07bc27e3a Fixes and Features (UNTESTED)
Feel free to test :)
2016-02-07 14:24:35 -06:00
eraser1
ff9cbb49e1 Forgot to change this 2016-01-11 12:55:03 -06:00
eraser1
cfde8f554a Make that prettier... and update DMS_Version 2016-01-09 19:54:50 -06:00
eraser1
7a8630b322 Forgot to change DMS_Version 2016-01-06 20:03:29 -06:00
eraser1
c13d751047 Release Candidate 2016-01-06 18:38:55 -06:00
eraser1
3a812885d8 Fixes 2015-12-24 21:38:43 -06:00
eraser1
5b0b8c35dd Mini-update 2015-12-24 16:14:18 -06:00
eraser1
70fae7bc44 Merry Xmas :D
* **NEW CONFIG VALUES:**

DMS_SpawnFlareOnReinforcements
DMS_MissionMarkerWinDot_Type
DMS_MissionMarkerLoseDot_Type
DMS_EnableBoxMoving
DMS_BasesToImportOnServerStart
DMS_AI_Classname
DMS_AI_AimCoef_easy
DMS_AI_AimCoef_moderate
DMS_AI_AimCoef_difficult
DMS_AI_AimCoef_hardcore
DMS_AI_EnableStamina_easy
DMS_AI_EnableStamina_moderate
DMS_AI_EnableStamina_difficult
DMS_AI_EnableStamina_hardcore
DMS_AI_destroyStaticWeapon
DMS_AI_destroyStaticWeapon_chance
DMS_ai_SupportedRandomClasses
DMS_random_non_assault_AI
DMS_random_non_MG_AI
DMS_random_non_sniper_AI
* Please check out the new config values in config.sqf to see what they
do :)
* Fixed issue with "thieves" mission (and DMS-spawned persistent
vehicles in general). Big thank you to [JamieKG from Eternal
Gamer](http://eternal-gamer.com/) and Torndeco.
* **New static mission: "slums"**
* Credit for the base goes to [William from Refugees of the
Fallen](http://refugeesofthefallen.enjin.com/)
* Spawns 2 crates at 2 different locations from a list of 5 locations.
* No AI vehicles, only infantry (introduces Close Quarters Combat)
* Added to Altis by default.
* Static bases can now be imported on server startup instead of mission
spawns. Enabled by default for saltflats and slums.
* Increased "DMS_MissionTimeoutResetRange" from 1000 to 1500.
* Removed the Navid from config (MG AI and box weapons).
* Edited panthera3_config to reduce SpawnZoneNear and TraderZoneNear
blacklists.
* Edited "blackhawkdown" and "donthasslethehoff" missions to use a
slightly different heli wreck classname.
* Increased marker circle diameter for saltflats mission to 750 meters.
* Moved "DMS_Version" variable assignment to pre-init.
* Moved Map Center and Map Radius assignments to post-init.
* Added support for 2 new optional parameters: _onMonitorStart and
_onMonitorEnd, run before and after the Mission Monitor checks the
mission, but AFTER "Mission Success State" is checked.
* Mines should now be deleted when a mission fails.
* Script optimizations for almost all functions using new command(s)
introduced in ArmA v1.54, as well as improved technique(s).
* "ExileServer_system_garbageCollector_deleteObject" is now used to
actually delete items by DMS_fnc_CleanUp.
* AI and vehicle cleanup should now be completely handled by Exile.
* Added support for mARMA logging.
* **You can now disable the movement/lifting of loot crates after the
mission is complete using "DMS_EnableBoxMoving".**
* Added some debug code to DMS_fnc_FindSafePos and
DMS_fnc_IsValidPosition (commented out by default)
* New group reinforcement type "increasing_difficulty".
* DMS_fnc_IsNearWater now checks for invalid parameter(s).
* DMS_fnc_PlayerAwardOnAIKill now checks for roadkill values AFTER
unit-defined respect/tabs.
* You can now define different marker types for mission
completion/failure using "DMS_MissionMarkerWinDot_Type" and
"DMS_MissionMarkerLoseDot_Type" respectively.
* "DMS_fnc_SetGroupBehavior" can now take a unit as parameter as well.
It will also now return true if behavior was changed, false otherwise.
* "DMS_fnc_SpawnAIGroup" and "DMS_fnc_SpawnAIGroup_MultiPos" now
supports the definition of custom gear sets.
* Improved function documentation for "DMS_fnc_SpawnAIGroup",
"DMS_fnc_SpawnAIGroup_MultiPos", and "DMS_fnc_SpawnAISoldier".
* "DMS_fnc_SpawnAISoldier" now supports multiple different random AI
class presets. This means that you can define a certain "random" class
preset, but have it select from a specially defined list that excludes
classes that you don't want.
* Added default values to certain "missionNameSpace getVariable"s in
DMS_fnc_SpawnAISoldier to prevent script errors in the event of invalid
definitions.
* Slight logic tweak/fix to DMS_fnc_TargetsKilled (it shouldn't throw
errors when there aren't any).
2015-12-24 13:45:20 -06:00
eraser1
78aa0f8667 Say bye-bye to the pre-packed PBO ;)
#### November 14, 2015 (8:30 PM CST-America):
* **NEW CONFIG VALUES:**

DMS_AllowStaticReinforcements
DMS_MarkerText_ShowAICount_Static
DMS_PredefinedMissionLocations_WEIGHTED
DMS_AIKill_DistanceBonusMinDistance
DMS_AIKill_DistanceBonusCoefficient
* You can now manually disable Static Mission AI reinforcements using
"DMS_AllowStaticReinforcements"
* You can now choose whether or not to show AI count for map markers for
both Static and Dynamic missions separately.
* DMS will now check to see if the config.sqf didn't load properly, and
for the presence of RyanZombies.
* You can now make predefined locations weighted.
* Some optimization + code clarity.
* Added ```taviana_config.sqf``` (identical to ```tavi_config.sqf```)
for the latest version of Taviana.
* **saltflats mission**:
* The AI will now initially spawn randomly across the compound. This
should help with the issue of some AI spawning outside of the compound.
* Added more static guns: 4 around the flagpole (5 meters north, south,
east, and west). One on top of the tower in each corner, and another on
the top of the concrete water tower.
* When an AI group is offloaded to a client and he gets out of range AND
no other viable client is found, the AI locality should now revert to
the server (it used to just stay with the original client).
* Added extra measures to prevent the creation of 2 markers with the
same name.
* fn_FillCrate.sqf:
* Fixed the issue where DMS would complain about incorrect parameters
when using custom code to generate loot.
* DMS now has debug logging to tell you exactly what it spawns in the
crate when using a crate case or custom code.
* "DMS_PredefinedMissionLocations" itself will now be shuffled when
finding a position. This should make the generated positions even more
random.
* Added new Group Reinforcement Types: "armed_vehicle_replace" and
"static_gunner"
* Potentially resolved the issue with launchers not being deleted from
AI bodies when they're killed sometimes.
* **fn_PlayerAwardOnAIKill.sqf**: Created a separate function to handle
poptabs/respect of a player when he/she kills an AI.
* Added a "distance bonus" for respect when killing AI.
* Added logging for player rewards on AI kills.
* DMS now lets Exile's body cleanup handle dead AIs.
* Fixed the issue where DMS would spawn static missions even when
"DMS_StaticMission" is set to false.
* fn_SetAILocality.sqf now returns true/false if it does/doesn't find an
owner.
* New function "fn_SpawnAIGroup_MultiPos.sqf". Almost identical to
SpawnAIGroup, except it spawns each AI along a list of locations.
* **Removed the pre-packed PBO. Too many people were having issues with
their PBO tool removing the prefix and repacking it would result in DMS
not working.**
2015-11-14 20:08:41 -06:00
eraser1
9b8e4e1573 Static Missions! And MORE!
* ** NEW CONFIG VALUES:

|DMS_MaxStaticMissions|
|DMS_TimeToFirstStaticMission|
|DMS_TimeBetweenStaticMissions|
|DMS_StaticMissionTimeOut|
|DMS_StaticMissionTimeoutResetRange|
|DMS_StaticMinPlayerDistance|
|DMS_UsePredefinedMissionLocations|
|DMS_PredefinedMissionLocations|
|DMS_MinDistFromWestBorder|
|DMS_MinDistFromEastBorder|
|DMS_MinDistFromSouthBorder|
|DMS_MinDistFromNorthBorder|
|DMS_StaticMissionTypes|
**
* Added new value "DMS_Version".
* ** "DMS_fnc_SpawnAIStatic" is now "DMS_fnc_SpawnAIStaticMG";
donthasslethehoff, mercbase, and testmission have been updated with the
new names**
* DMS will now check to make sure that marker colors passed to
fn_CreateMarker are valid marker colors.
* You can now control how far away from each border a mission will spawn
(each border is separate: west, east, south, north). All "supported"
maps have config values adjusted in "map_configs".
* New salt flats base by [Darth Rogue from
SOA](http://soldiersofanarchy.net/).
* **IMPLEMENTED STATIC MISSIONS (initial version). "saltflats" is
currently the only static mission for Altis ONLY. However, it shouldn't
be too difficult to export it to other maps (once positions have been
adjusted). **
* Fixed a couple of outdated/inaccurate function documentation comments.
* **FINALLY REMOVED THE Default Value "-1" PARAMS RPT SPAM. I FOUND IT.
YESSSSS**
* Fixed fn_CleanUp producing debug logs even with debug disabled.
* Fixed the CleanUp list not Cleaning Up after itself (hah!).
* Added diag_tickTime and DMS_Version to debug logs.
* You can now define a custom function for DMS_FillCrate. It will be
passed params from _lootValues select 0. ** I haven't tested this at
all. Just keep that in mind ;) **
* You can now manually define mission spawning locations into an array,
and that array will be used to find a location. Each location will still
be checked for validity, and if no valid positions are found from the
list, a random one is then generated using the normal method. ** I
didn't test this part at all either :P **
* fn_FindSafePos should be even more efficient now, and even more
controllable.
* Quite a few new functions; most notably: fn_GroupReinforcementsManager
* fn_GroupReinforcementsManager is used by static missions to provide
reinforcements for AI once they fall below a certain threshold (and/or
any other parameters you provide). Make sure to check out the function
documentation and give any suggestions for new reinforcement types!
* New function "DMS_fnc_ImportFromM3E_Static" will simply import a base
from the provided file (under static). No conversion to relative
position or anything. Simply spawning, positioning, and disabling
simulation.
* Removed the check for being outside map edges from fn_isValidPosition.
* "hardcore" AI will now be even more difficult ;)
2015-10-30 21:18:58 -05:00
eraser1
30136c8f37 I know... it's been over a week... gimme a break
#### October 17, 2015 (2:30 PM CST-America):
* **NEW CONFIG VALUES**:

|DMS_TimeToFirstMission|
|DMS_ShowDifficultyColorLegend|
|DMS_TerritoryNearBlacklist|
|DMS_MinSurfaceNormal| (Used to be DMS_MaxSurfaceNormal, simply renamed)
|DMS_ai_launchers_per_group|
* **UPDATING ALL OF YOUR MISSION FILES IS HIGHLY RECOMMENDED UNLESS YOU
KNOW WHAT YOU'RE DOING**
* RENAMED "DMS_MaxSurfaceNormal" to "DMS_MinSurfaceNormal". I must have
been very tired when I named it...
* DMS_MinSurfaceNormal is now 0.9 by default, but will be 0.95 for Altis
and Bornholm (since they're relatively large/flat maps). Esseker is
still 0.85. If you want to convert DMS_MinSurfaceNormal to degrees, you
would take the arc-cosine of the surfaceNormal, and that will give you
the degrees from horizontal. For example, arccos(0.9) is about 25
degrees. Google: "arccos(0.9) in degrees"
* Tweaked and rebalanced "DMS_BanditMissionTypes". Most of the spawn
chances are the same, they're just reduced in order to prevent the
creation of arrays that are far larger than they need to be.
* You can now manually define how long it takes for the first mission to
spawn after a restart.
* DMS will now by default create markers on the bottom left of the map
to show which colors correspond to which difficulty. It isn't very
pretty, but it gets the point across.
* DMS will now manually calculate the center of the map and its radius,
if it isn't preconfigured by DMS.
* You can now specify the vehicles to spawn for missions: "bandits",
"cardealer", "construction", "donthasslethehoff", and "thieves".
* You can now specify the spawning location of any mission (and whether
or not to use an alternative location if the provided location is
invalid). This will allow for easy integration of DMS into admin tools.
* Added support for scripts to be executed on mission completion or
mission failure (this will allow you to have "multi-part" missions,
where you would simply spawn the next part of the mission if the
previous is completed).
* Restructured DMS_DEBUG from the previous patch in favor of a more
"optimized" method.
* DMS_fnc_findSafePos is completely overhauled; DMS no longer uses
"BIS_fnc_findSafePos". It also now throttles minSurfaceNormal on
repeated failure. You can now determine whether or not the mission
should spawn on water (however, I don't suggest you use this function
for water spawns yet).
* You can also now define a minimum distance from other territories for
missions.
* DMS_fnc_IsValidPosition will now check for water depth if the provided
position is meant to be checked as a "water spawn". It will now also
check for nearby missions from A3XAI or VEMF (untested).
* DMS_fnc_IsValidPosition now checks whether or not the position is
outside of the map borders.
* DMS_fnc_SelectOffsetPos will now return the 3rd element of the
provided position as-is.
* You can now have multiple AI within a group with a launcher.
* AI now have a 5-second godmode after spawning.
* You can now spawn a crate using ASL pos. DMS_fnc_SpawnCrate will also
make sure that the provided classname is valid.
* Just like SpawnCrate, "DMS_fnc_SpawnNonPersistentVehicle" and
"DMS_fnc_SpawnPersistentVehicle" will now make sure that the provided
classname is valid.
* "DMS_fnc_SpawnPersistentVehicle" now supports ASL spawning.
* Added support for [Rod Serling's](https://github.com/Rod-Serling) AVS.
* General optimization.
2015-10-17 14:39:07 -05:00
eraser1
0544cfe9e7 Readme changes, new debug fnc, fixes, tweaks
Created disclaimer for DMS. Now mentioning that HC for DMS isn't that
good.
Some structure stuff in readme (let's see if it works lol)

* **NEW CONFIG VALUE: DMS_Use_Map_Config**
* You can now overwrite "main config values" with map-specific config
values located in the new "map_configs" folder. This should allow you to
use one DMS PBO if you have multiple servers with different maps.
Included examples for Altis, Bornholm, Esseker, and Tavi (Taviana).
* Because of the above implementation, DMS by default will not include
the salt flats blacklist for findSafePos. In addition, it is
preconfigured to the hilly terrains in Esseker and Taviana, as well as
reducing all of the blacklist distances due to the smaller map size in
Esseker.
* Created new function "DMS_fnc_DebugLog". All DMS files (that produced
debug logs) have been changed, including mission files. However,
updating them is not important (and completely pointless if you don't
even use DMS_DEBUG).
* Fixed a few locations where it said "sized" instead of "seized".
Thanks to [icomrade](https://github.com/icomrade) for pointing them out.
* DMS now utilizes the "ARMA_LOG" DLL (if it exists) by infiSTAR to
produce debug logs (if enabled). All debug logs now also include server
uptime (in seconds) and server FPS.
* The FSM no longer produces debug logs.
* AI Locality manager will now run every minute.
* Debug logs for "DMS_fnc_MissionsMonitor" will only output the mission
name and the position, instead of all of the parameters.
* "DMS_fnc_IsNearWater" will now check the provided position itself for
water.
* "DMS_fnc_IsValidPosition" will now do a surfaceNormal check within a 5
meter radius of the provided position as well.
* "_customGearSet" should now actually work for
"DMS_fnc_SpawnAISoldier", and the function title comment has been
updated for the slightly tweaked syntax.
2015-10-09 20:35:07 -05:00
eraser1
d4733a5559 Fixes + Idiot-proofing + New Function
* NEW CONFIG VALUE: "DMS_MaxSurfaceNormal"
* The above config value now determines the maximum incline that a
mission can spawn on. Default value is 0.95, which should be
sufficiently flat.
* Added some grouping explanations in mission config settings.
* Added check for A3XAI for the lovely
["Face"/"dayzai"](https://github.com/dayzai)
* Added ability for people to use a static export from M3Editor. DMS
will then calculate the relative position, and spawn it at the mission.
Example provided in testmission.sqf.
* Fixed an issue with DMS_fnc_TargetsKilled always returning false.
2015-09-20 15:26:08 -05:00
eraser1
afb4833a65 Fixes + Tweaks + Features
#### September 13, 2015 (11:45 PM CST-America):
* NEW CONFIG VALUES: DMS_MaxAIDistance and DMS_AIDistanceCheckFrequency
* You can now use the above config values to kill AI that flee from
their spawn position. Only "Soldier" AI will be killed.
* Removed "O_HMG_01_F" from AI Static Weapons. AI were pretty useless on
it... unless the AI were facing the right direction.
* Reduced AI count and removed the "playerNear" parameter from
testmission for easier testing.
* NEW: When an AI vehicle gunner is killed, and the driver is still
alive, after a little delay, the driver is then switched to the gunner
seat. You should no longer have AI vehicles with a dead gunner that's
driving around aimlessly :) There is a 5-8 second delay to simulate
reaction time. Then the driver is ejected, then after 1.5 seconds the AI
is then forced into the  gunner seat.
* NOTE: The above feature only works when the AI is still local (not
offloaded). If the AI is offloaded, the AI is simply ejected and becomes
a foot soldier.
* AI assigned vehicles are destroyed when the crew is empty. Simulation
is also disabled on them.
* Reduced some of the "params" RPT spam, from DMS_fnc_SetGroupBehavior.
* Tweaked AI Vehicle spawning logic. The AI are initially assigned to a
temporary group and then behavior is set, then they join the assigned
group to prevent overriding behavior of other ground units.
* Non-persistent vehicles should now be fit properly to the terrain.
2015-09-16 22:37:17 -05:00
eraser1
5eaec94379 That's done :) 2015-09-09 22:10:37 -05:00
eraser1
687bbfb798 Use config function definitions
Thanks for the tip Zupa!
2015-09-04 22:40:00 -05:00
eraser1
f2d797e172 Maybe this will do it? 2015-09-02 22:30:34 -05:00
eraser1
f9ba1c8461 Github T_T
Also decreased default minimum FPS requirements
2015-09-01 18:27:30 -05:00
eraser1
6c9a12cd56 Better locality management 2015-09-01 18:23:32 -05:00
Defent
8483ca60eb Update
Added 3 new missions.
Added ownership transfer of AI.
2015-09-01 18:59:43 +02:00
eraser1
dae2d2a54f Fix launchers
Launchers should now spawn on AI if you set the config value to true and
set the spawn percentage correctly.

Launchers will always spawn if you define it in the AI type
2015-09-01 01:24:42 -05:00
eraser1
beae797d12 So we get any potential errors in the config.sqf 2015-08-31 13:24:01 -05:00
eraser1
2ac62bb41b Update preinit todo and PBOs 2015-08-31 03:10:18 -05:00
eraser1
6e3a9b8615 More fixes + SpawnCrate
Created function SpawnCrate

Updated missions to use DMS_SpawnCrate

Fix (I think) issue with _side being passed to onkilled

updated test PBO
2015-08-31 01:08:30 -05:00
eraser1
641d40c157 DMSv1 is Live :D
Still a few things left to do but... the system works! ;)
2015-08-30 23:51:06 -05:00
eraser1
b3a06808f9 Create function CreateMarker 2015-08-30 20:48:20 -05:00
eraser1
cb7338c16a Set up OnKilled + cleanup
!!!!!
NOTE: The behavior of commands "gunner" and "driver" are not extensively
documented on the wiki. I'm not sure if respect/money increase will work
properly for kills from vehicles! I need to test these commands later
!!!!!
Cleaned up obsolete/already created functions from preInit

Created config values "DMS_BanditMoneyGainOnKill" and
"DMS_BanditRepGainOnKill" and "DMS_RemoveNVG"

OnKilled should now give respect and pop tabs to clients (if configured
to do so).

It should also give the onscreen popup for kills for respect and update
the values on the client (as well as updating the corresponding stats on
the server and database)

Use "MPKilled" EH instead of "Killed" for potential issues with
offloading.
2015-08-30 00:01:00 -05:00
eraser1
8350edcd00 AddMissionToMonitor + Tweaks to other functions 2015-08-29 19:33:32 -05:00
eraser1
7c1168f194 Create new AI functions
Created SpawnAIGroup

Created SetGroupBehavior

New config values for AI waypoint radius based on difficulty
2015-08-29 14:46:07 -05:00
eraser1
6f332f4afc Compile DMS_OnKilled 2015-08-29 13:03:13 -05:00
eraser1
c07cc0a90e Rename MissionStatusCheck to MissionsMonitor 2015-08-29 11:11:47 -05:00
eraser1
ef822c5a28 Create SpawnAISolder + prep SpawnAIGroup + tweaks
Spent a shitton of time setting up SpawnAISoldier.

Highly configurable, with the option of using a custom config.

I will set up the "private" var line, as well as some debug info later.

Increased magazine count for guns spawned in crates
2015-08-29 01:09:50 -05:00
eraser1
15429d5712 Tweaks + New Functions
Move mission variable initialization to mission_init

Create mission_init

Create selectMission

Add "_missionSide" to missionstatuscheck params ("bandit" or "hero".
Only "bandit" functionality currently)
2015-08-28 20:48:18 -05:00
eraser1
370825a7f9 CleanUpManager + Tweaks + Idiot-proofing
Created function CleanUpManager

CleanUp will now throw an error for attempting cleanup on non-object

CleanUp now uses CleanUpManager

Use "select" instead of if-else for _safePosParams

Removed "DMS_Mission_Arr is empty" logging because it will spam RPT
2015-08-28 17:52:58 -05:00
eraser1
0b0c290495 Function Changes + Fixes + Comments + Logs
Added configurable distance to when cleanup will be aborted for an
object with a player nearby.

Created TargetsKilled function

Rewrite BroadCastMissionStatus (the function was doing the same thing
for each switch case except one, so I just put that in a select
statement)

Created function information for CleanUp.

CleanUp was using "_this" instead of "_x"

Created more/better debug info for CleanUp

Changed calling parameters for FillCrate.

Increased robustness of FillCrate.

Made FillCrate prettier

Created function information for FindSafePos

Created function information for IsPlayerNearByARRAY (deprecated)

Tweaks to MissionStatusCheck:
Created debug log for empty "DMS_Mission_Arr"
Fixed placement of index increase (otherwise deleteAt would remove
incorrect element if it existed)

Created MissionSuccessState

Created logs for RemoveMarkers

Created function information for RemoveMarkers + made it prettier

Created function information for SelectMagazine

Created TargetsKilled
2015-08-28 16:52:56 -05:00
eraser1
13eef51a31 Progress
Created FindSafePos

Initialize DMS_MissionCount

Config will be loaded in preInit now

Renamed skills and random skill array

Removed mission_init (we will be using FSM instead)
2015-08-28 14:14:59 -05:00
eraser1
74189269ee Couple things
Made the config.sqf all pretty :)

Initialize "DMS_Mission_Arr" in preinit

Create DMS_RemoveMarkers

TODO: Create explanation for static missions
2015-08-28 11:37:23 -05:00
eraser1
74f562de7e Bunch of stuff
Renamed preInit/postInit

All config.sqf options setup and named (for now :P )

Removed "tools" from FillCrate since it was just addItemCargoGlobal as
well

FindSafePos adjustments + renames

IsNearWater function (from WAI)

Add "_markers" array to MissionStatusCheck params (planned implemention:
[_dot,_circle] for the ability to rename a marker after mission
completion. EG: "COMPLETED: Weapons Crate" for X seconds)

Created SelectMagazine fnc

Created files for a couple TODO functions
2015-08-28 03:38:46 -05:00