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

@@ -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_setpitchbank = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_setpitchbank.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
zombie_findTargetAgent = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_findTargetAgent.sqf";
@@ -123,6 +125,55 @@ if (!isDedicated) then {
onPreloadStarted "dayz_preloadFinished = false;";
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
// allow player disconnect from server, if loading hang, kicked by BE etc.
[] spawn {

View File

@@ -66,6 +66,7 @@ if (!isDedicated) then {
"PVDZE_obj_Fire" addPublicVariableEventHandler {nul=(_this select 1) spawn BIS_Effects_Burn};
"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"};
"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>*/
/*
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};
link79[] = {68,69};
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};
window[] = {2,-1,-1,-1,-1,980,200,1572,200,3,906};
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,858,78,1370,78,3,906};
*//*%FSM</HEAD>*/
class FSM
{
@@ -472,9 +472,7 @@ class FSM
class Request
{
name = "Request";
init = /*%FSM<STATEINIT""">*/"//startLoadingScreen ["""",""DayZ_loadingScreen""];" \n
"" \n
"diag_log (""PLOGIN: Requesting Authentication... ("" + _playerUID + "")"");" \n
init = /*%FSM<STATEINIT""">*/"diag_log (""PLOGIN: Requesting Authentication... ("" + _playerUID + "")"");" \n
"dayz_loadScreenMsg = (localize ""str_player_15"");" \n
"" \n
"progressLoadingScreen 0.7;" \n
@@ -762,17 +760,15 @@ class FSM
"" \n
"_worldspace = dayzPlayerLogin2 select 0;" \n
"_state = dayzPlayerLogin2 select 1;" \n
"PVDZE_plr_SetWeather = dayzPlayerLogin2 select 2;" \n
"PVDZE_plr_SetDate = dayzPlayerLogin2 select 3;" \n
"DZE_FreshSpawn = dayzPlayerLogin2 select 4;" \n
"DZE_FreshSpawn = dayzPlayerLogin2 select 2;" \n
"" \n
"_setDir = _worldspace select 0;" \n
"_setPos = _worldspace select 1;" \n
"" \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,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
"" \n
" // make protective box" \n
@@ -942,10 +938,7 @@ class FSM
class Position
{
name = "Position";
init = /*%FSM<STATEINIT""">*/"endLoadingScreen;" \n
"startLoadingScreen ["""",""DayZ_loadingScreen""];" \n
"" \n
"//Location" \n
init = /*%FSM<STATEINIT""">*/"//Location" \n
"_myLoc = getPosATL player;" \n
"" \n
"dayz_loadScreenMsg = ""Setup Completed, please wait..."";" \n
@@ -1186,23 +1179,7 @@ class FSM
class Initialize
{
name = "Initialize";
init = /*%FSM<STATEINIT""">*/"#define ods(arg1) ""armaperflib"" callextension arg1" \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
init = /*%FSM<STATEINIT""">*/"//Medical" \n
"dayz_medicalH = [] execVM ""\z\addons\dayz_code\medical\init_medical.sqf""; //Medical Monitor Script (client only)" \n
"[player] call fnc_usec_damageHandle;" \n
"if (r_player_unconscious) then {" \n

View File

@@ -5613,6 +5613,15 @@
<Dutch>Kg</Dutch>
<French>Kg</French>
<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>
</Package>
</Project>

View File

@@ -30,7 +30,7 @@ if (!isNull _playerObj) then {
_playerObj setVariable["NORRN_unconscious",true, 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];
// Message whole server when player combat logs
@@ -38,7 +38,7 @@ if (!isNull _playerObj) then {
[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;
@@ -63,4 +63,4 @@ if (!isNull _playerObj) then {
[_x,"gear"] call server_updateObject;
} foreach (nearestObjects [_playerPos, dayz_updateObjects, 10]);
};
};
};

View File

@@ -128,7 +128,7 @@ if (!_isNew) then {
};
#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
_isHiveOk = false;
@@ -142,4 +142,4 @@ if (worldName == "chernarus") then {
};
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["lastPos",getPosATL _playerObj];
dayzPlayerLogin2 = [_worldspace,_state,PVDZE_plr_SetWeather,PVDZE_plr_SetDate,_randomSpot];
_clientID = owner _playerObj;
_clientID publicVariableClient "dayzPlayerLogin2";
dayzPlayerLogin2 = [_worldspace,_state,_randomSpot];
// 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
_playerObj setVariable ["lastTime",time];
//_playerObj setVariable ["model_CHK",typeOf _playerObj];

View File

@@ -380,6 +380,7 @@ spawn_ammosupply = {
};
};
DZE_LocalRoadBlocks = [];
spawn_roadblocks = {
private ["_position","_veh","_istoomany","_marker","_spawnveh","_WreckList"];
@@ -412,15 +413,19 @@ spawn_roadblocks = {
_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));
_veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"];
_veh enableSimulation false;
//_veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"];
//_veh enableSimulation false;
// Randomize placement a bit
_veh setDir round(random 360);
_veh setpos _position;
//_veh setDir round(random 360);
//_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";
init = /*%FSM<STATEINIT""">*/"if (DZE_DiagFpsSlow) then {" \n
" [] call dze_diag_fps;" \n
" call dze_diag_fps;" \n
"};" \n
"[] call server_timeSync;" \n
"[] call server_weather;" \n
"call server_timeSync;" \n
"call server_weather;" \n
""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
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)
//Set the Time
//Send request
_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 Time
call server_timeSync;
// set Weather
call server_weather;
// Custom Configs
if(isnil "MaxVehicleLimit") then {
@@ -323,7 +299,7 @@ if (isServer and isNil "sm_done") then {
// spawn_roadblocks
diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris));
for "_x" from 1 to MaxDynamicDebris do {
[] spawn spawn_roadblocks;
[] call spawn_roadblocks;
};
// spawn_ammosupply at server start 1% of roadblocks
diag_log ("HIVE: Spawning # of Ammo Boxes: " + str(MaxAmmoBoxes));