/** * ExileServer_object_player_createBambi * * Exile Mod * www.exilemod.com * © 2015 Exile Mod Team * * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. */ private["_sessionID","_requestingPlayer","_spawnLocationMarkerName","_bambiPlayer","_accountData","_direction","_position","_spawnAreaPosition","_spawnAreaRadius","_clanID","_clanData","_clanGroup","_player","_devFriendlyMode","_devs","_parachuteNetID","_spawnType","_parachuteObject"]; _sessionID = _this select 0; _requestingPlayer = _this select 1; _spawnLocationMarkerName = _this select 2; _bambiPlayer = _this select 3; _accountData = _this select 4; _direction = random 360; if ((count ExileSpawnZoneMarkerPositions) isEqualTo 0) then { _position = call ExileClient_util_world_findCoastPosition; if ((toLower worldName) isEqualTo "namalsk") then { while {(_position distance2D [76.4239, 107.141, 0]) < 100} do { _position = call ExileClient_util_world_findCoastPosition; }; }; } else { _spawnAreaPosition = getMarkerPos _spawnLocationMarkerName; _spawnAreaRadius = getNumber(configFile >> "CfgSettings" >> "BambiSettings" >> "spawnZoneRadius"); _position = [_spawnAreaPosition, _spawnAreaRadius] call ExileClient_util_math_getRandomPositionInCircle; while {surfaceIsWater _position} do { _position = [_spawnAreaPosition, _spawnAreaRadius] call ExileClient_util_math_getRandomPositionInCircle; }; }; _name = name _requestingPlayer; _clanID = (_accountData select 3); if !((typeName _clanID) isEqualTo "SCALAR") then { _clanID = -1; _clanData = []; } else { _clanData = missionNamespace getVariable [format ["ExileServer_clan_%1",_clanID],[]]; if(isNull (_clanData select 5))then { _clanGroup = createGroup independent; _clanData set [5,_clanGroup]; _clanGroup setGroupIdGlobal [_clanData select 0]; missionNameSpace setVariable [format ["ExileServer_clan_%1",_clanID],_clanData]; } else { _clanGroup = (_clanData select 5); }; [_player] joinSilent _clanGroup; }; _bambiPlayer setPosATL [_position select 0,_position select 1,0]; _bambiPlayer disableAI "FSM"; _bambiPlayer disableAI "MOVE"; _bambiPlayer disableAI "AUTOTARGET"; _bambiPlayer disableAI "TARGET"; _bambiPlayer disableAI "CHECKVISIBLE"; _bambiPlayer setDir _direction; _bambiPlayer setName _name; _bambiPlayer setVariable ["ExileMoney", 0, true]; _bambiPlayer setVariable ["ExileScore", (_accountData select 0)]; _bambiPlayer setVariable ["ExileKills", (_accountData select 1)]; _bambiPlayer setVariable ["ExileDeaths", (_accountData select 2)]; _bambiPlayer setVariable ["ExileClanID", _clanID]; _bambiPlayer setVariable ["ExileClanData", _clanData]; _bambiPlayer setVariable ["ExileHunger", 100]; _bambiPlayer setVariable ["ExileThirst", 100]; _bambiPlayer setVariable ["ExileTemperature", 37]; _bambiPlayer setVariable ["ExileWetness", 0]; _bambiPlayer setVariable ["ExileAlcohol", 0]; _bambiPlayer setVariable ["ExileName", _name]; _bambiPlayer setVariable ["ExileOwnerUID", getPlayerUID _requestingPlayer]; _bambiPlayer setVariable ["ExileIsBambi", true]; _bambiPlayer setVariable ["ExileXM8IsOnline", false, true]; _bambiPlayer setVariable ["ExileLocker", (_accountData select 4), true]; _devFriendlyMode = getNumber (configFile >> "CfgSettings" >> "ServerSettings" >> "devFriendyMode"); if (_devFriendlyMode isEqualTo 1) then { _devs = getArray (configFile >> "CfgSettings" >> "ServerSettings" >> "devs"); { if ((getPlayerUID _requestingPlayer) isEqualTo (_x select 0))exitWith { if((name _requestingPlayer) isEqualTo (_x select 1))then { _bambiPlayer setVariable ["ExileMoney", 500000, true]; _bambiPlayer setVariable ["ExileScore", 100000]; }; }; } forEach _devs; }; _parachuteNetID = ""; if ((getNumber(configFile >> "CfgSettings" >> "BambiSettings" >> "parachuteSpawning")) isEqualTo 1) then { _position set [2, getNumber(configFile >> "CfgSettings" >> "BambiSettings" >> "parachuteDropHeight")]; if ((getNumber(configFile >> "CfgSettings" >> "BambiSettings" >> "haloJump")) isEqualTo 1) then { _bambiPlayer addBackpackGlobal "B_Parachute"; _bambiPlayer setPosATL _position; _spawnType = 2; } else { _parachuteObject = createVehicle ["Steerable_Parachute_F", _position, [], 0, "CAN_COLLIDE"]; _parachuteObject setDir _direction; _parachuteObject setPosATL _position; _parachuteObject enableSimulationGlobal true; _parachuteNetID = netId _parachuteObject; _spawnType = 1; }; } else { _spawnType = 0; }; if((canTriggerDynamicSimulation _player) isEqualTo false) then { _player triggerDynamicSimulation true; }; _bambiPlayer addMPEventHandler ["MPKilled", {_this call ExileServer_object_player_event_onMpKilled}]; _bambiPlayer call ExileServer_object_player_database_insert; _bambiPlayer call ExileServer_object_player_database_update; [ _sessionID, "createPlayerResponse", [ _bambiPlayer, _parachuteNetID, str (_accountData select 0), (_accountData select 1), (_accountData select 2), 100, 100, 0, (getNumber (configFile >> "CfgSettings" >> "BambiSettings" >> "protectionDuration")) * 60, _clanData, _spawnType ] ] call ExileServer_system_network_send_to; [_sessionID, _bambiPlayer] call ExileServer_system_session_update; true