Change DayZ survivor spawn location?

DayZGO

Member
Hello guys! :)
Im working on putting up a Survivor Games server.
But i need to set up the server so i only have the same spawn location for all fresh spawns.

I know i need to change some code in the mission file and the player setup file.
Or i could do this through DB.

But what is the best way to make this happen?

As im stating. I need 1 spawn location only. so the players can spawn in our "base"
to get ready for survivor games challenge.

Here is the mission file position i want to use for all survivor spawns:

position[]={2070.8286,244.01938,11682.723};

Thanks for all help in advance! :D
 
Yeah, i have read it... But it doesnt say how to use only one spawn location.

And i want to know how to do this in DB if possible...?
 
Why would you only want one spawn location?
And Database has no control over how players spawn, The database only stores data and returns player and vehicle data when requested.
 
Because, as i said. Im hosting a Survival Games tournament.
And part of the plan is that every player is spawning at the same location at first. :)

So any help? :D
 
Ah, missed that bit.

edit dayz_server.pbo\compile\server_playerSetup.sqf

around line 174 you will find the "if (_randomSpot) then {" section
Change this to
Code:
if (_randomSpot) then {
    _position = ([[2070.8286,11682.723], 0, 10, 12, 0, 120, 0] call BIS_fnc_findSafePos);
    _worldspace = [0,_position];
};

This will spawn players within a 10m radius of your set location.
 
Tnx :) Will try now! So i dont need to change the mission file? Only server pbo?

And must i use mission file coordinates for the server file, or DB coordinates? :)
 
You don't need to change the mission file since you are using a single spawn point, I can tweak it to use the spawn point from a mission file if you wish. You only need an x and y co-ordinate to run the code, mission.sqm's show the code as x,z,y.
So remember that when you are grabbing the co-ordinates.
 
Okay, so tried the first code you gave me...
its seems like its trying to spawn @ correct location.
But im getting failed to request caracter data everytime im trying to logon?
 
Sorry left a major part out :p

Code:
if (_randomSpot) then {
    private["_position","_worldspace"];
    if (!isDedicated) then {
        endLoadingScreen;
    };
    _position = ([[2070.8286,11682.723], 0, 10, 12, 0, 120, 0] call BIS_fnc_findSafePos);
    _worldspace = [0,_position];
};
 
Well, this is the last from .rpt:

22:51:51 "CLEANUP: INITIALIZING CLEANUP SCRIPT"
22:52:26 "STARTING LOGIN: ["82441158",B 1-1-A:1 ([GO]Steve) REMOTE]"
22:52:26 "LOGIN ATTEMPT: "82441158" [GO]Steve"
22:52:26 "LOGIN LOADED: B 1-1-A:1 ([GO]Steve) REMOTE Type: Survivor1_DZ"
22:52:29 Warning: z\addons\dayz_communityassets\models\compass.p3d:0 Error while trying to generate ST for points: 863, 853, 852
22:53:16 "DISCONNECT: [GO]Steve (82441158) Object: B 1-1-B:1 ([GO]Steve) REMOTE, _characterID: 0"
22:53:16 "ERROR: Cannot Sync Character [GO]Steve as no characterID"
22:53:16 Client: Remote object 3:4 not found
22:53:18 Warning: Cleanup player - person 3:3 not found
22:53:20 Warning: Cleanup player - person 3:3 not found
 
Still same error? .rpt this time:

22:58:27 "CLEANUP: INITIALIZING CLEANUP SCRIPT"
22:58:42 "STARTING LOGIN: ["82441158",B 1-1-A:1 ([GO]Steve) REMOTE]"
22:58:42 "LOGIN ATTEMPT: "82441158" [GO]Steve"
22:58:42 "LOGIN LOADED: B 1-1-A:1 ([GO]Steve) REMOTE Type: Survivor1_DZ"
22:58:45 Warning: z\addons\dayz_communityassets\models\compass.p3d:0 Error while trying to generate ST for points: 863, 853, 852
22:59:30 "DISCONNECT: [GO]Steve (82441158) Object: B 1-1-B:1 ([GO]Steve) REMOTE, _characterID: 0"
22:59:30 "ERROR: Cannot Sync Character [GO]Steve as no characterID"
22:59:30 Client: Remote object 3:4 not found
22:59:31 Warning: Cleanup player - person 3:3 not found
 
Remember, the coordinate i posted in first part of this thread is a coordinate from the mission file, not db?
Just saying :p If this could have something to do with it...

Looks like its not writing wordspace into db?
 
From player setup:

Code:
private ["_characterID","_doLoop","_playerID","_playerObj","_randomSpot","_primary","_key","_worldspace","_score","_position","_pos","_isIsland","_medical","_stats","_state","_dummy","_debug","_distance","_hit","_fractures","_w","_findSpot","_humanity","_clientID"];//Set Variables
//Wait for HIVE to be free
//diag_log ("SETUP: attempted with " + str(_this));
 
_characterID = _this select 0;
_playerObj = _this select 1;
_playerID = getPlayerUID _playerObj;
 
if (isNull _playerObj) exitWith {
    diag_log ("SETUP INIT FAILED: Exiting, player object null: " + str(_playerObj));
};
 
//Add MPHit event handler
diag_log("Adding MPHit EH for " + str(_playerObj));
_playerObj addMPEventHandler ["MPHit", {_this spawn fnc_plyrHit;}];
 
if (_playerID == "") then {
    _playerID = getPlayerUID _playerObj;
};
 
if (_playerID == "") exitWith {
    diag_log ("SETUP INIT FAILED: Exiting, no player ID: " + str(_playerObj));
};
 
private["_dummy"];
_dummy = getPlayerUID _playerObj;
if ( _playerID != _dummy ) then {
    diag_log format["DEBUG: _playerID miscompare with UID! _playerID:%1",_playerID];
    _playerID = _dummy;
};
 
//Variables
_worldspace =    [];
 
 
_state =        [];
 
//Do Connection Attempt
_doLoop = 0;
while {_doLoop < 5} do {
    _key = format["CHILD:102:%1:",_characterID];
    _primary = _key call server_hiveReadWrite;
    if (count _primary > 0) then {
        if ((_primary select 0) != "ERROR") then {
            _doLoop = 9;
        };
    };
    _doLoop = _doLoop + 1;
};
 
if (isNull _playerObj or !isPlayer _playerObj) exitWith {
    diag_log ("SETUP RESULT: Exiting, player object null: " + str(_playerObj));
};
 
//Wait for HIVE to be free
//diag_log ("SETUP: RESULT: Successful with " + str(_primary));
 
_medical =        _primary select 1;
_stats =        _primary select 2;
_state =        _primary select 3;
_worldspace =    _primary select 4;
_humanity =        _primary select 5;
 
//Set position
_randomSpot = false;
 
//diag_log ("WORLDSPACE: " + str(_worldspace));
 
if (count _worldspace > 0) then {
 
    _position =    _worldspace select 1;
    if (count _position < 3) then {
        //prevent debug world!
        _randomSpot = true;
    };
    _debug = getMarkerpos "respawn_west";
    _distance = _debug distance _position;
    if (_distance < 2000) then {
        _randomSpot = true;
    };
   
    _distance = [0,0,0] distance _position;
    if (_distance < 500) then {
        _randomSpot = true;
    };
 
    //_playerObj setPosATL _position;
} else {
    _randomSpot = true;
};
 
//diag_log ("LOGIN: Location: " + str(_worldspace) + " doRnd?: " + str(_randomSpot));
 
//set medical values
if (count _medical > 0) then {
    _playerObj setVariable["USEC_isDead",(_medical select 0),true];
    _playerObj setVariable["NORRN_unconscious", (_medical select 1), true];
    _playerObj setVariable["USEC_infected",(_medical select 2),true];
    _playerObj setVariable["USEC_injured",(_medical select 3),true];
    _playerObj setVariable["USEC_inPain",(_medical select 4),true];
    _playerObj setVariable["USEC_isCardiac",(_medical select 5),true];
    _playerObj setVariable["USEC_lowBlood",(_medical select 6),true];
    _playerObj setVariable["USEC_BloodQty",(_medical select 7),true];
   
    _playerObj setVariable["unconsciousTime",(_medical select 10),true];
   
//    if (_playerID in dayz_disco) then {
//        _playerObj setVariable["NORRN_unconscious",true, true];
//        _playerObj setVariable["unconsciousTime",300,true];
//    } else {
//        _playerObj setVariable["unconsciousTime",(_medical select 10),true];
//    };
   
    //Add Wounds
    {
        _playerObj setVariable[_x,true,true];
        //["usecBleed",[_playerObj,_x,_hit]] call broadcastRpcCallAll;
        usecBleed = [_playerObj,_x,_hit];
        publicVariable "usecBleed";
    } forEach (_medical select 8);
   
    //Add fractures
    _fractures = (_medical select 9);
    _playerObj setVariable ["hit_legs",(_fractures select 0),true];
    _playerObj setVariable ["hit_hands",(_fractures select 1),true];
   
    if (count _medical > 11) then {
        //Additional medical stats
        _playerObj setVariable ["messing",(_medical select 11),true];
    };
   
} else {
    //Reset Fractures
    _playerObj setVariable ["hit_legs",0,true];
    _playerObj setVariable ["hit_hands",0,true];
    _playerObj setVariable ["USEC_injured",false,true];
    _playerObj setVariable ["USEC_inPain",false,true];
    _playerObj setVariable ["messing",[0,0],true];
};
   
if (count _stats > 0) then {   
    //register stats
    _playerObj setVariable["zombieKills",(_stats select 0),true];
    _playerObj setVariable["headShots",(_stats select 1),true];
    _playerObj setVariable["humanKills",(_stats select 2),true];
    _playerObj setVariable["banditKills",(_stats select 3),true];
    _playerObj addScore (_stats select 1);
   
    //Save Score
    _score = score _playerObj;
    _playerObj addScore ((_stats select 0) - _score);
   
    //record for Server JIP checks
    _playerObj setVariable["zombieKills_CHK",(_stats select 0)];
    _playerObj setVariable["headShots_CHK",(_stats select 1)];
    _playerObj setVariable["humanKills_CHK",(_stats select 2)];
    _playerObj setVariable["banditKills_CHK",(_stats select 3)];
    if (count _stats > 4) then {
        if (!(_stats select 3)) then {
            _playerObj setVariable["selectSex",true,true];
        };
    } else {
        _playerObj setVariable["selectSex",true,true];
    };
} else {
    //Save initial loadout
    //register stats
    _playerObj setVariable["zombieKills",0,true];
    _playerObj setVariable["humanKills",0,true];
    _playerObj setVariable["banditKills",0,true];
    _playerObj setVariable["headShots",0,true];
   
    //record for Server JIP checks
    _playerObj setVariable["zombieKills_CHK",0];
    _playerObj setVariable["humanKills_CHK",0,true];
    _playerObj setVariable["banditKills_CHK",0,true];
    _playerObj setVariable["headShots_CHK",0];
};
 
if (_randomSpot) then {
    private["_position","_worldspace"];
    if (!isDedicated) then {
        endLoadingScreen;
    };
    _position = ([[2070.8286,11682.723], 0, 10, 12, 0, 120, 0] call BIS_fnc_findSafePos);
    _worldspace = [0,_position];
};
   
    //spawn into random
    _findSpot = true;
    _mkr = "";
    while {_findSpot} do {
        _counter = 0;
        while {_counter < 20 and _findSpot} do {
            _mkr = "spawn" + str(round(random 4));
            _position = ([(getMarkerPos _mkr),0,1500,10,0,2000,1] call BIS_fnc_findSafePos);
            _isNear = count (_position nearEntities ["Man",100]) == 0;
            _isZero = ((_position select 0) == 0) and ((_position select 1) == 0);
        //Island Check        //TeeChange
            _pos        = _position;
            _isIsland    = false;        //Can be set to true during the Check
            for [{_w=0},{_w<=150},{_w=_w+2}] do {
                _pos = [(_pos select 0),((_pos select 1) + _w),(_pos select 2)];
                if(surfaceisWater _pos) exitWith {
                    _isIsland = true;
                };
            };
           
            if ((_isNear and !_isZero) || _isIsland) then {_findSpot = false};
            _counter = _counter + 1;
        };
    };
    _isZero = ((_position select 0) == 0) and ((_position select 1) == 0);
    _position = [_position select 0,_position select 1,0];
    if (!_isZero) then {
        //_playerObj setPosATL _position;
        _worldspace = [0,_position];
    };
};
 
 
//Record player for management
dayz_players set [count dayz_players,_playerObj];
 
//record player pos locally for server checking
_playerObj setVariable["characterID",_characterID,true];
_playerObj setVariable["humanity",_humanity,true];
_playerObj setVariable["humanity_CHK",_humanity];
//_playerObj setVariable["worldspace",_worldspace,true];
//_playerObj setVariable["state",_state,true];
_playerObj setVariable["lastPos",getPosATL _playerObj];
 
dayzPlayerLogin2 = [_worldspace,_state];
_clientID = owner _playerObj;
_clientID publicVariableClient "dayzPlayerLogin2";
 
//record time started
_playerObj setVariable ["lastTime",time];
//_playerObj setVariable ["model_CHK",typeOf _playerObj];
 
diag_log ("LOGIN PUBLISHING: " + str(_playerObj) + " Type: " + (typeOf _playerObj));
 
dayzLogin = null;
dayzLogin2 = null;
 
//Save Login
 
Code:
private ["_characterID","_doLoop","_playerID","_playerObj","_randomSpot","_primary","_key","_worldspace","_score","_position","_pos","_isIsland","_medical","_stats","_state","_dummy","_debug","_distance","_hit","_fractures","_w","_findSpot","_humanity","_clientID"];//Set Variables
//Wait for HIVE to be free
//diag_log ("SETUP: attempted with " + str(_this));
 
_characterID = _this select 0;
_playerObj = _this select 1;
_playerID = getPlayerUID _playerObj;
 
if (isNull _playerObj) exitWith {
    diag_log ("SETUP INIT FAILED: Exiting, player object null: " + str(_playerObj));
};
 
//Add MPHit event handler
diag_log("Adding MPHit EH for " + str(_playerObj));
_playerObj addMPEventHandler ["MPHit", {_this spawn fnc_plyrHit;}];
 
if (_playerID == "") then {
    _playerID = getPlayerUID _playerObj;
};
 
if (_playerID == "") exitWith {
    diag_log ("SETUP INIT FAILED: Exiting, no player ID: " + str(_playerObj));
};
 
private["_dummy"];
_dummy = getPlayerUID _playerObj;
if ( _playerID != _dummy ) then {
    diag_log format["DEBUG: _playerID miscompare with UID! _playerID:%1",_playerID];
    _playerID = _dummy;
};
 
//Variables
_worldspace =    [];
 
 
_state =        [];
 
//Do Connection Attempt
_doLoop = 0;
while {_doLoop < 5} do {
    _key = format["CHILD:102:%1:",_characterID];
    _primary = _key call server_hiveReadWrite;
    if (count _primary > 0) then {
        if ((_primary select 0) != "ERROR") then {
            _doLoop = 9;
        };
    };
    _doLoop = _doLoop + 1;
};
 
if (isNull _playerObj or !isPlayer _playerObj) exitWith {
    diag_log ("SETUP RESULT: Exiting, player object null: " + str(_playerObj));
};
 
//Wait for HIVE to be free
//diag_log ("SETUP: RESULT: Successful with " + str(_primary));
 
_medical =        _primary select 1;
_stats =        _primary select 2;
_state =        _primary select 3;
_worldspace =    _primary select 4;
_humanity =        _primary select 5;
 
//Set position
_randomSpot = false;
 
//diag_log ("WORLDSPACE: " + str(_worldspace));
 
if (count _worldspace > 0) then {
 
    _position =    _worldspace select 1;
    if (count _position < 3) then {
        //prevent debug world!
        _randomSpot = true;
    };
    _debug = getMarkerpos "respawn_west";
    _distance = _debug distance _position;
    if (_distance < 2000) then {
        _randomSpot = true;
    };
 
    _distance = [0,0,0] distance _position;
    if (_distance < 500) then {
        _randomSpot = true;
    };
 
    //_playerObj setPosATL _position;
} else {
    _randomSpot = true;
};
 
//diag_log ("LOGIN: Location: " + str(_worldspace) + " doRnd?: " + str(_randomSpot));
 
//set medical values
if (count _medical > 0) then {
    _playerObj setVariable["USEC_isDead",(_medical select 0),true];
    _playerObj setVariable["NORRN_unconscious", (_medical select 1), true];
    _playerObj setVariable["USEC_infected",(_medical select 2),true];
    _playerObj setVariable["USEC_injured",(_medical select 3),true];
    _playerObj setVariable["USEC_inPain",(_medical select 4),true];
    _playerObj setVariable["USEC_isCardiac",(_medical select 5),true];
    _playerObj setVariable["USEC_lowBlood",(_medical select 6),true];
    _playerObj setVariable["USEC_BloodQty",(_medical select 7),true];
 
    _playerObj setVariable["unconsciousTime",(_medical select 10),true];
 
//    if (_playerID in dayz_disco) then {
//        _playerObj setVariable["NORRN_unconscious",true, true];
//        _playerObj setVariable["unconsciousTime",300,true];
//    } else {
//        _playerObj setVariable["unconsciousTime",(_medical select 10),true];
//    };
 
    //Add Wounds
    {
        _playerObj setVariable[_x,true,true];
        //["usecBleed",[_playerObj,_x,_hit]] call broadcastRpcCallAll;
        usecBleed = [_playerObj,_x,_hit];
        publicVariable "usecBleed";
    } forEach (_medical select 8);
 
    //Add fractures
    _fractures = (_medical select 9);
    _playerObj setVariable ["hit_legs",(_fractures select 0),true];
    _playerObj setVariable ["hit_hands",(_fractures select 1),true];
 
    if (count _medical > 11) then {
        //Additional medical stats
        _playerObj setVariable ["messing",(_medical select 11),true];
    };
 
} else {
    //Reset Fractures
    _playerObj setVariable ["hit_legs",0,true];
    _playerObj setVariable ["hit_hands",0,true];
    _playerObj setVariable ["USEC_injured",false,true];
    _playerObj setVariable ["USEC_inPain",false,true];
    _playerObj setVariable ["messing",[0,0],true];
};
 
if (count _stats > 0) then {
    //register stats
    _playerObj setVariable["zombieKills",(_stats select 0),true];
    _playerObj setVariable["headShots",(_stats select 1),true];
    _playerObj setVariable["humanKills",(_stats select 2),true];
    _playerObj setVariable["banditKills",(_stats select 3),true];
    _playerObj addScore (_stats select 1);
 
    //Save Score
    _score = score _playerObj;
    _playerObj addScore ((_stats select 0) - _score);
 
    //record for Server JIP checks
    _playerObj setVariable["zombieKills_CHK",(_stats select 0)];
    _playerObj setVariable["headShots_CHK",(_stats select 1)];
    _playerObj setVariable["humanKills_CHK",(_stats select 2)];
    _playerObj setVariable["banditKills_CHK",(_stats select 3)];
    if (count _stats > 4) then {
        if (!(_stats select 3)) then {
            _playerObj setVariable["selectSex",true,true];
        };
    } else {
        _playerObj setVariable["selectSex",true,true];
    };
} else {
    //Save initial loadout
    //register stats
    _playerObj setVariable["zombieKills",0,true];
    _playerObj setVariable["humanKills",0,true];
    _playerObj setVariable["banditKills",0,true];
    _playerObj setVariable["headShots",0,true];
 
    //record for Server JIP checks
    _playerObj setVariable["zombieKills_CHK",0];
    _playerObj setVariable["humanKills_CHK",0,true];
    _playerObj setVariable["banditKills_CHK",0,true];
    _playerObj setVariable["headShots_CHK",0];
};
 
if (_randomSpot) then {
    private["_position","_worldspace"];
    if (!isDedicated) then {
        endLoadingScreen;
    };
    _position = ([[2070.8286,11682.723], 0, 10, 12, 0, 120, 0] call BIS_fnc_findSafePos);
    _worldspace = [0,_position];
};
 
//Record player for management
dayz_players set [count dayz_players,_playerObj];
 
//record player pos locally for server checking
_playerObj setVariable["characterID",_characterID,true];
_playerObj setVariable["humanity",_humanity,true];
_playerObj setVariable["humanity_CHK",_humanity];
//_playerObj setVariable["worldspace",_worldspace,true];
//_playerObj setVariable["state",_state,true];
_playerObj setVariable["lastPos",getPosATL _playerObj];
 
dayzPlayerLogin2 = [_worldspace,_state];
_clientID = owner _playerObj;
_clientID publicVariableClient "dayzPlayerLogin2";
 
//record time started
_playerObj setVariable ["lastTime",time];
//_playerObj setVariable ["model_CHK",typeOf _playerObj];
 
diag_log ("LOGIN PUBLISHING: " + str(_playerObj) + " Type: " + (typeOf _playerObj));
 
dayzLogin = null;
dayzLogin2 = null;
 
//Save Login

You left some data in from the old _randomSpot code.
 
Now im stuck in setup complete, please wait...

Returning following .rpt:

23:14:23 "STARTING LOGIN: ["82441158",B 1-1-A:1 ([GO]Steve) REMOTE]"
23:14:23 "LOGIN ATTEMPT: "82441158" [GO]Steve"
23:14:23 "LOGIN LOADED: B 1-1-A:1 ([GO]Steve) REMOTE Type: Survivor1_DZ"
23:14:23 Server: Object 3:15 not found (message 94)
23:14:23 "Adding MPHit EH for B 1-1-B:1 ([GO]Steve) REMOTE"
23:14:23 "LOGIN PUBLISHING: B 1-1-B:1 ([GO]Steve) REMOTE Type: Survivor2_DZ"
23:15:05 "ERROR: server_playerSync: Cannot Sync Player [GO]Steve [12]. Position in debug! [-18709.7,25923.9,0.00167847]"
23:15:05 "DEBUG FPS : 50"
23:15:09 "DISCONNECT: [GO]Steve (82441158) Object: B 1-1-B:1 ([GO]Steve) REMOTE, _characterID: 12"
23:15:09 "ERROR: server_playerSync: Cannot Sync Player [GO]Steve [12]. Position in debug! [-18709.7,25923.9,0.00167847]"
23:15:09 Client: Remote object 3:14 not found
23:15:10 Warning: Cleanup player - person 3:13 not found
23:15:12 Warning: Cleanup player - person 3:13 not found
 
Back
Top