Merge remote-tracking branch 'upstream/master'

This commit is contained in:
facoptere
2013-11-18 18:33:19 +01:00
12 changed files with 128 additions and 80 deletions

View File

@@ -4,15 +4,16 @@
* [NEW] Gear is only accessible in vehicles with "G" key due to removal of Arma Map Menus.@Skaronator * [NEW] Gear is only accessible in vehicles with "G" key due to removal of Arma Map Menus.@Skaronator
* [ADDED] Craftable Gunrack with 6 x PartWoodLumber makes GunRack_DZ that holds 20 weapons. @dayz10k * [ADDED] Craftable Gunrack with 6 x PartWoodLumber makes GunRack_DZ that holds 20 weapons. @dayz10k
* [ADDED] Craftable Base Fire Barrel FireBarrel_DZ @dayz10k * [ADDED] Craftable Base Fire Barrel FireBarrel_DZ with an emtpy Fuel Barrel, Full Jerry Can, and 4x WoodPile. @dayz10k
* [ADDED] Vehicle upgrade system with 4 stages: 1=performance, 2=armor, 3=cargo, and 4=fuel. To upgrade a vehicle you must first find the lvl 1 performance manual and two engine parts then right click next to your vehicle. * [ADDED] Vehicle upgrade system with 4 stages: 1=performance, 2=armor, 3=cargo, and 4=fuel. To upgrade a vehicle you must first find the lvl 1 performance manual and two engine parts then right click next to your vehicle.
* [ADDED] Added Player Names that killed Objects to diag_log @Torndeco * [ADDED] Added Player Names that killed Objects to diag_log @Torndeco
* [ADDED] Added Player Worldspace location to Connect/Disconnect/Combat Log RPT messages. @dayz10k
* [ADDED] dayz_sellDistance is now splitted in "dayz_sellDistance_boat", "dayz_sellDistance_vehicle" and "dayz_sellDistance_air" - @Skaronator * [ADDED] dayz_sellDistance is now splitted in "dayz_sellDistance_boat", "dayz_sellDistance_vehicle" and "dayz_sellDistance_air" - @Skaronator
* [ADDED] Surrender (options > controls > "Surrender") action now drops your weapons and places your hands on your head. While surrendered other players can access your gear. * [ADDED] Surrender (options > controls > "Surrender") action now drops your weapons and places your hands on your head. While surrendered other players can access your gear.
* [ADDED] Remove nearest tanktrap with right click option on toolbox @dayz10k * [ADDED] Remove nearest tanktrap with right click option on toolbox @dayz10k
* [ADDED] Faster in string function by Killzone Kid http://killzonekid.com/arma-scripting-tutorials-how-to-find-a-string-within-a-string/ * [ADDED] Faster in string function by Killzone Kid http://killzonekid.com/arma-scripting-tutorials-how-to-find-a-string-within-a-string/
* [ADDED] Halo jump option from a helicopter when above 400m. @zabn * [ADDED] Halo jump option from a helicopter when above 400m. @zabn
* [ADDED] Localization support added. @zabn * [ADDED] Localization support added. @zabn @dayz10k
* [ADDED] Added dutch translations. @JoSchaap * [ADDED] Added dutch translations. @JoSchaap
* [ADDED] Added Russian translations. @VeryBigBro * [ADDED] Added Russian translations. @VeryBigBro
* [ADDED] Added French translations. @th4z * [ADDED] Added French translations. @th4z
@@ -23,7 +24,6 @@
* [ADDED] Destroy tent option when you have a full jerry can and matches. @vbawol * [ADDED] Destroy tent option when you have a full jerry can and matches. @vbawol
* [ADDED] Tag friendly system now stores your 5 most recent friends with your life. Building on another friends plot and you are already tagged you still need to look at the owner once to complete the handshake so that you can start building. Server admins can disable this with DZE_FriendlySaving = false; in the init.sqf @zabn @vbawol * [ADDED] Tag friendly system now stores your 5 most recent friends with your life. Building on another friends plot and you are already tagged you still need to look at the owner once to complete the handshake so that you can start building. Server admins can disable this with DZE_FriendlySaving = false; in the init.sqf @zabn @vbawol
* [ADDED] Player can now get crushed if they get out to close to a wall or building. Successful wall glitches now result in death ONLY if your get out position intersects a building. @vbawol * [ADDED] Player can now get crushed if they get out to close to a wall or building. Successful wall glitches now result in death ONLY if your get out position intersects a building. @vbawol
* [ADDED] Can now build Fire Barrels (Land_Fire_barrel) with an emtpy Fuel Barrel, Full Jerry Can, and 4x WoodPile. @dayz10k
* [ADDED] Can now maintain lightpoles with a lightbub. @vbawol @dayz10k * [ADDED] Can now maintain lightpoles with a lightbub. @vbawol @dayz10k
* [ADDED] Directly Disconnect (back to lobby) if you press abort > yes - @Skaronator * [ADDED] Directly Disconnect (back to lobby) if you press abort > yes - @Skaronator

View File

@@ -0,0 +1,16 @@
private ["_spawnveh","_position","_direction","_veh"];
{
_spawnveh = _x select 0;
_position = _x select 1;
_direction = _x select 2;
//diag_log("DEBUG: Spawning a crashed " + _spawnveh + " with " + _spawnloot + " at " + str(_position));
_veh = _spawnveh createVehicleLocal _position;
_veh enableSimulation false;
// Randomize placement a bit
_veh setDir _direction;
_veh setpos _position;
} forEach _this;

View File

@@ -64,6 +64,8 @@ if (!isDedicated) then {
object_roadFlare = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_roadFlare.sqf"; object_roadFlare = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_roadFlare.sqf";
object_setpitchbank = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_setpitchbank.sqf"; object_setpitchbank = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_setpitchbank.sqf";
object_monitorGear = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_monitorGear.sqf"; object_monitorGear = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_monitorGear.sqf";
local_roadDebris = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_roadDebris.sqf";
//Zombies //Zombies
zombie_findTargetAgent = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_findTargetAgent.sqf"; zombie_findTargetAgent = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_findTargetAgent.sqf";
@@ -123,6 +125,55 @@ if (!isDedicated) then {
onPreloadStarted "dayz_preloadFinished = false;"; onPreloadStarted "dayz_preloadFinished = false;";
onPreloadFinished "dayz_preloadFinished = true;"; onPreloadFinished "dayz_preloadFinished = true;";
//This is still needed but the fsm should terminate if any errors pop up.
[] spawn {
private["_timeOut","_display","_control1","_control2"];
disableSerialization;
_timeOut = 0;
dayz_loadScreenMsg = "";
diag_log "DEBUG: loadscreen guard started.";
_display = uiNameSpace getVariable "BIS_loadingScreen";
if (!isNil "_display") then {
_control1 = _display displayctrl 8400;
_control2 = _display displayctrl 102;
};
waitUntil {!dayz_DisplayGenderSelect};
// 120 sec timeout (12000 * 0.01)
while { _timeOut < 12000 } do {
if (dayz_clientPreload && dayz_authed) exitWith { diag_log "PLOGIN: Login loop completed!"; };
if (!isNil "_display") then {
if ( isNull _display ) then {
waitUntil { !dialog; };
startLoadingScreen ["","RscDisplayLoadCustom"];
_display = uiNameSpace getVariable "BIS_loadingScreen";
_control1 = _display displayctrl 8400;
_control2 = _display displayctrl 102;
};
if ( dayz_loadScreenMsg != "" ) then {
_control1 ctrlSetText dayz_loadScreenMsg;
dayz_loadScreenMsg = "";
};
_control2 ctrlSetText format["%1",round(_timeOut*0.01)];
};
_timeOut = _timeOut + 1;
if (_timeOut >= 12000) then {
1 cutText [localize "str_player_login_timeout", "PLAIN DOWN"];
sleep 10;
endLoadingScreen;
endMission "END1";
};
sleep 0.01;
};
};
// TODO: need move it in player_monitor.fsm // TODO: need move it in player_monitor.fsm
// allow player disconnect from server, if loading hang, kicked by BE etc. // allow player disconnect from server, if loading hang, kicked by BE etc.
[] spawn { [] spawn {

View File

@@ -66,6 +66,7 @@ if (!isDedicated) then {
"PVDZE_obj_Fire" addPublicVariableEventHandler {nul=(_this select 1) spawn BIS_Effects_Burn}; "PVDZE_obj_Fire" addPublicVariableEventHandler {nul=(_this select 1) spawn BIS_Effects_Burn};
"PVDZE_plr_FriendRQ" addPublicVariableEventHandler {cutText[(_this select 1),"PLAIN DOWN"];}; "PVDZE_plr_FriendRQ" addPublicVariableEventHandler {cutText[(_this select 1),"PLAIN DOWN"];};
"PVDZE_obj_Debris" addPublicVariableEventHandler {(_this select 1) call local_roadDebris};
"norrnRaDrag" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\publicEH\animDrag.sqf"}; "norrnRaDrag" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\publicEH\animDrag.sqf"};
"norrnRnoAnim" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\publicEH\noAnim.sqf"}; "norrnRnoAnim" addPublicVariableEventHandler {(_this select 1) execVM "\z\addons\dayz_code\medical\publicEH\noAnim.sqf"};

View File

@@ -1,4 +1,4 @@
/*%FSM<COMPILE "C:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, DayZ Player Monitor">*/ /*%FSM<COMPILE "F:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, DayZ Player Monitor">*/
/*%FSM<HEAD>*/ /*%FSM<HEAD>*/
/* /*
item0[] = {"init",0,250,-75.000000,-350.000000,25.000000,-300.000000,0.000000,"init"}; item0[] = {"init",0,250,-75.000000,-350.000000,25.000000,-300.000000,0.000000,"init"};
@@ -152,8 +152,8 @@ link77[] = {66,59};
link78[] = {67,15}; link78[] = {67,15};
link79[] = {68,69}; link79[] = {68,69};
link80[] = {69,20}; link80[] = {69,20};
globals[] = {25.000000,1,0,0,0,640,480,1,131,6316128,1,-592.955444,422.624878,1469.107178,428.394379,888,911,1}; globals[] = {25.000000,1,0,0,0,640,480,1,131,6316128,1,-592.955444,422.624878,1027.017090,306.503998,888,630,1};
window[] = {2,-1,-1,-1,-1,980,200,1572,200,3,906}; window[] = {2,-1,-1,-1,-1,858,78,1370,78,3,906};
*//*%FSM</HEAD>*/ *//*%FSM</HEAD>*/
class FSM class FSM
{ {
@@ -472,9 +472,7 @@ class FSM
class Request class Request
{ {
name = "Request"; name = "Request";
init = /*%FSM<STATEINIT""">*/"//startLoadingScreen ["""",""DayZ_loadingScreen""];" \n init = /*%FSM<STATEINIT""">*/"diag_log (""PLOGIN: Requesting Authentication... ("" + _playerUID + "")"");" \n
"" \n
"diag_log (""PLOGIN: Requesting Authentication... ("" + _playerUID + "")"");" \n
"dayz_loadScreenMsg = (localize ""str_player_15"");" \n "dayz_loadScreenMsg = (localize ""str_player_15"");" \n
"" \n "" \n
"progressLoadingScreen 0.7;" \n "progressLoadingScreen 0.7;" \n
@@ -762,17 +760,15 @@ class FSM
"" \n "" \n
"_worldspace = dayzPlayerLogin2 select 0;" \n "_worldspace = dayzPlayerLogin2 select 0;" \n
"_state = dayzPlayerLogin2 select 1;" \n "_state = dayzPlayerLogin2 select 1;" \n
"PVDZE_plr_SetWeather = dayzPlayerLogin2 select 2;" \n "DZE_FreshSpawn = dayzPlayerLogin2 select 2;" \n
"PVDZE_plr_SetDate = dayzPlayerLogin2 select 3;" \n
"DZE_FreshSpawn = dayzPlayerLogin2 select 4;" \n
"" \n "" \n
"_setDir = _worldspace select 0;" \n "_setDir = _worldspace select 0;" \n
"_setPos = _worldspace select 1;" \n "_setPos = _worldspace select 1;" \n
"" \n "" \n
"if(dayz_paraSpawn and !(player isKindOf ""PZombie_VB"") and DZE_FreshSpawn) then {" \n "if(dayz_paraSpawn and !(player isKindOf ""PZombie_VB"") and DZE_FreshSpawn) then {" \n
" player setPosATL [(_setPos select 0),(_setPos select 1),1000];" \n
" player setDir _setDir;" \n " player setDir _setDir;" \n
" [player,1000] spawn BIS_fnc_halo;" \n " player setPosATL [(_setPos select 0),(_setPos select 1),2000];" \n
" [player,2000] spawn BIS_fnc_halo;" \n
"} else {" \n "} else {" \n
"" \n "" \n
" // make protective box" \n " // make protective box" \n
@@ -942,10 +938,7 @@ class FSM
class Position class Position
{ {
name = "Position"; name = "Position";
init = /*%FSM<STATEINIT""">*/"endLoadingScreen;" \n init = /*%FSM<STATEINIT""">*/"//Location" \n
"startLoadingScreen ["""",""DayZ_loadingScreen""];" \n
"" \n
"//Location" \n
"_myLoc = getPosATL player;" \n "_myLoc = getPosATL player;" \n
"" \n "" \n
"dayz_loadScreenMsg = ""Setup Completed, please wait..."";" \n "dayz_loadScreenMsg = ""Setup Completed, please wait..."";" \n
@@ -1186,23 +1179,7 @@ class FSM
class Initialize class Initialize
{ {
name = "Initialize"; name = "Initialize";
init = /*%FSM<STATEINIT""">*/"#define ods(arg1) ""armaperflib"" callextension arg1" \n init = /*%FSM<STATEINIT""">*/"//Medical" \n
"" \n
"if (!isNil ""PVDZE_plr_SetDate"") then {" \n
" setDate PVDZE_plr_SetDate;" \n
"};" \n
"" \n
"if (!isNil ""PVDZE_plr_SetDate"") then {" \n
" 0 setOvercast (zeroCurrentWeather select 0);" \n
" 0 setFog (zeroCurrentWeather select 1);" \n
" setWind [((zeroCurrentWeather select 2) select 0),((zeroCurrentWeather select 2) select 1),true];" \n
" 0 setRain (zeroCurrentWeather select 3);" \n
"};" \n
"" \n
"" \n
"diag_log (""Local Time: "" +str(PVDZE_plr_SetDate));" \n
"" \n
"//Medical" \n
"dayz_medicalH = [] execVM ""\z\addons\dayz_code\medical\init_medical.sqf""; //Medical Monitor Script (client only)" \n "dayz_medicalH = [] execVM ""\z\addons\dayz_code\medical\init_medical.sqf""; //Medical Monitor Script (client only)" \n
"[player] call fnc_usec_damageHandle;" \n "[player] call fnc_usec_damageHandle;" \n
"if (r_player_unconscious) then {" \n "if (r_player_unconscious) then {" \n

View File

@@ -5613,6 +5613,15 @@
<Dutch>Kg</Dutch> <Dutch>Kg</Dutch>
<French>Kg</French> <French>Kg</French>
<Czech>Kg</Czech> <Czech>Kg</Czech>
</Key>
<Key ID="str_player_login_timeout">
<English>Login timed out!\nDisconnect and try again!</English>
<German>Login timed out!\nDisconnect and try again!</German>
<Russian>Время ожидания входа истекло!\nОтключитесь и попробуйте снова!</Russian>
<Spanish>Tiempo de inicio de sesión excedido.\nDesconectate y prueba de nuevo.</Spanish>
<Dutch>Login timed out!\nDisconnect and try again!</Dutch>
<French>Délai de connexion dépassé\nVeuillez vous déconnecter et essayer à nouveau.</French>
<Czech>Dovolený čas pro přihlášení vypršel.\nOdpojte se a zkuste to znovu!</Czech>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@@ -30,7 +30,7 @@ if (!isNull _playerObj) then {
_playerObj setVariable["NORRN_unconscious",true, true]; _playerObj setVariable["NORRN_unconscious",true, true];
_playerObj setVariable["unconsciousTime",300,true]; _playerObj setVariable["unconsciousTime",300,true];
diag_log format["COMBAT LOGGED: %1 (%2)", _playerName,_timeout]; diag_log format["COMBAT LOGGED: %1 (%2) at location %3", _playerName,_timeout,(getPosATL _playerObj)];
//diag_log format["SET UNCONCIOUSNESS: %1", _playerName]; //diag_log format["SET UNCONCIOUSNESS: %1", _playerName];
// Message whole server when player combat logs // Message whole server when player combat logs
@@ -38,7 +38,7 @@ if (!isNull _playerObj) then {
[nil,nil,"per",rTITLETEXT,_message,"PLAIN DOWN"] call RE; [nil,nil,"per",rTITLETEXT,_message,"PLAIN DOWN"] call RE;
}; };
diag_log format["DISCONNECT: %1 (%2) Object: %3, _characterID: %4", _playerName,_playerUID,_playerObj,_characterID]; diag_log format["DISCONNECT: %1 (%2) Object: %3, _characterID: %4 at loc %5", _playerName,_playerUID,_playerObj,_characterID, (getPosATL _playerObj)];
_id = [_playerUID,_characterID,2] spawn dayz_recordLogin; _id = [_playerUID,_characterID,2] spawn dayz_recordLogin;
@@ -63,4 +63,4 @@ if (!isNull _playerObj) then {
[_x,"gear"] call server_updateObject; [_x,"gear"] call server_updateObject;
} foreach (nearestObjects [_playerPos, dayz_updateObjects, 10]); } foreach (nearestObjects [_playerPos, dayz_updateObjects, 10]);
}; };
}; };

View File

@@ -128,7 +128,7 @@ if (!_isNew) then {
}; };
#ifdef DZE_SERVER_DEBUG #ifdef DZE_SERVER_DEBUG
diag_log ("LOGIN LOADED: " + str(_playerObj) + " Type: " + (typeOf _playerObj)); diag_log ("LOGIN LOADED: " + str(_playerObj) + " Type: " + (typeOf _playerObj) + " at location: " + (getPosATL _playerObj));
#endif #endif
_isHiveOk = false; _isHiveOk = false;
@@ -142,4 +142,4 @@ if (worldName == "chernarus") then {
}; };
dayzPlayerLogin = [_charID,_inventory,_backpack,_survival,_isNew,dayz_versionNo,_model,_isHiveOk,_newPlayer,_isInfected]; dayzPlayerLogin = [_charID,_inventory,_backpack,_survival,_isNew,dayz_versionNo,_model,_isHiveOk,_newPlayer,_isInfected];
(owner _playerObj) publicVariableClient "dayzPlayerLogin"; (owner _playerObj) publicVariableClient "dayzPlayerLogin";

View File

@@ -233,10 +233,23 @@ _playerObj setVariable["humanity_CHK",_humanity];
//_playerObj setVariable["state",_state,true]; //_playerObj setVariable["state",_state,true];
_playerObj setVariable["lastPos",getPosATL _playerObj]; _playerObj setVariable["lastPos",getPosATL _playerObj];
dayzPlayerLogin2 = [_worldspace,_state,PVDZE_plr_SetWeather,PVDZE_plr_SetDate,_randomSpot]; dayzPlayerLogin2 = [_worldspace,_state,_randomSpot];
_clientID = owner _playerObj;
_clientID publicVariableClient "dayzPlayerLogin2";
// PVDZE_plr_SetWeather,PVDZE_plr_SetDate
PVDZE_obj_Debris = DZE_LocalRoadBlocks;
_clientID = owner _playerObj;
if (!isNull _playerObj) then {
_clientID publicVariableClient "dayzPlayerLogin2";
// send road blocks
_clientID publicVariableClient "PVDZE_obj_Debris";
_clientID publicVariableClient "PVDZE_plr_SetDate";
_clientID publicVariableClient "PVDZE_plr_SetWeather";
};
//record time started //record time started
_playerObj setVariable ["lastTime",time]; _playerObj setVariable ["lastTime",time];
//_playerObj setVariable ["model_CHK",typeOf _playerObj]; //_playerObj setVariable ["model_CHK",typeOf _playerObj];

View File

@@ -380,6 +380,7 @@ spawn_ammosupply = {
}; };
}; };
DZE_LocalRoadBlocks = [];
spawn_roadblocks = { spawn_roadblocks = {
private ["_position","_veh","_istoomany","_marker","_spawnveh","_WreckList"]; private ["_position","_veh","_istoomany","_marker","_spawnveh","_WreckList"];
@@ -412,15 +413,19 @@ spawn_roadblocks = {
_marker setMarkerText str(_spawnveh); _marker setMarkerText str(_spawnveh);
}; };
// fill array with classes and positions [class,pos,dir]
DZE_LocalRoadBlocks set [count DZE_LocalRoadBlocks,[_spawnveh,_position,round(random 360)]];
//diag_log("DEBUG: Spawning a crashed " + _spawnveh + " with " + _spawnloot + " at " + str(_position)); //diag_log("DEBUG: Spawning a crashed " + _spawnveh + " with " + _spawnloot + " at " + str(_position));
_veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"];
_veh enableSimulation false; //_veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"];
//_veh enableSimulation false;
// Randomize placement a bit // Randomize placement a bit
_veh setDir round(random 360); //_veh setDir round(random 360);
_veh setpos _position; //_veh setpos _position;
_veh setVariable ["ObjectID","1",true]; //_veh setVariable ["ObjectID","1",true];
}; };
}; };

View File

@@ -184,10 +184,10 @@ class FSM
{ {
name = "sync_time__and_w"; name = "sync_time__and_w";
init = /*%FSM<STATEINIT""">*/"if (DZE_DiagFpsSlow) then {" \n init = /*%FSM<STATEINIT""">*/"if (DZE_DiagFpsSlow) then {" \n
" [] call dze_diag_fps;" \n " call dze_diag_fps;" \n
"};" \n "};" \n
"[] call server_timeSync;" \n "call server_timeSync;" \n
"[] call server_weather;" \n "call server_weather;" \n
""/*%FSM</STATEINIT""">*/; ""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links class Links

View File

@@ -13,35 +13,11 @@ diag_log "HIVE: Starting";
waituntil{isNil "sm_done"}; // prevent server_monitor be called twice (bug during login of the first player) waituntil{isNil "sm_done"}; // prevent server_monitor be called twice (bug during login of the first player)
//Set the Time //Set Time
//Send request call server_timeSync;
_key = "CHILD:307:";
_result = _key call server_hiveReadWrite;
_outcome = _result select 0;
if(_outcome == "PASS") then {
_date = _result select 1;
if(dayz_fullMoonNights) then {
//date setup
//_year = _date select 0;
//_month = _date select 1;
//_day = _date select 2;
_hour = _date select 3;
_minute = _date select 4;
//Force full moon nights
_date = [2013,8,3,_hour,_minute];
};
if(isDedicated) then {
setDate _date;
PVDZE_plr_SetDate = _date;
publicVariable "PVDZE_plr_SetDate";
};
diag_log ("HIVE: Local Time set to " + str(_date));
};
// set Weather
call server_weather;
// Custom Configs // Custom Configs
if(isnil "MaxVehicleLimit") then { if(isnil "MaxVehicleLimit") then {
@@ -323,7 +299,7 @@ if (isServer and isNil "sm_done") then {
// spawn_roadblocks // spawn_roadblocks
diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris)); diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris));
for "_x" from 1 to MaxDynamicDebris do { for "_x" from 1 to MaxDynamicDebris do {
[] spawn spawn_roadblocks; [] call spawn_roadblocks;
}; };
// spawn_ammosupply at server start 1% of roadblocks // spawn_ammosupply at server start 1% of roadblocks
diag_log ("HIVE: Spawning # of Ammo Boxes: " + str(MaxAmmoBoxes)); diag_log ("HIVE: Spawning # of Ammo Boxes: " + str(MaxAmmoBoxes));