Jump to content

theduke

Member
  • Posts

    868
  • Joined

  • Last visited

  • Days Won

    27

Posts posted by theduke

  1. 7 minutes ago, BetterDeadThanZed said:

    There's no sense in putting only a few kb of code into the server files. It's so small it'll hardly affect the mission download size. I prefer to have it in the mission folder with the image. It's neater and more convenient to me that way. The image is fine. It's the same one I used in Arma 3 on a sign just like I'm trying to do in Arma 2.

    you're asking in the forums for a solution. I gave you a solution. Suit yourself.

    Ill refrain from helping you in the future ;) don't seem to appreciate it

  2. In the sanford and son trader mod i released, I have this server side. in a file called sanford.sqf

    _vehicle_121= objNull;
    if (true) then
    {
      _this = createVehicle ["WarfareBunkerSign", [9919.52, 5422.02, 0.490173], [], 0, "CAN_COLLIDE"];
      _vehicle_121 = _this;
      _this setDir 288.201;
      _this setVehicleInit "this SetObjectTexture [0,""graphics\sandfordandson.jpg""]";
    };

    I call this file in the server functions. (server side)

    And the image goes into the mission pbo.

    Also, if your pixels are off by 1, it will throw things off. you can use the picture in the sanford mod as a template.

  3. 4 hours ago, Thug said:

    I loaded the new WAI and modifed two files. After the 4th mission came up, it would not clear. it was the one with all the pot. btw was able to cut it down-lets say Im happy..
    No other mission would spawn.

    Can someone help me with this?

    Server RPT

    https://pastebin.com/chMKZQ7Z

    wai config.sqf

    https://pastebin.com/csDuqXn7

    spawnpoints.sqf

    https://pastebin.com/w6pKZyTT

     

    you need to add the map you use in the blacklist. Same thing happened to me for sahrani

    if (use_blacklist) then {
        call {
            if (toLower worldName == "chernarus") exitWith {blacklist = [
                [[0,16000,0],[1000,-0,0]],                // Left
                [[0,16000,0],[16000.0,14580.3,0]]        // Top
            ];};
            if (toLower worldName == "namalsk") exitWith {blacklist = [];};
            if (toLower worldName == "panthera") exitWith {blacklist = [];};
            if (toLower worldName == "tavi") exitWith {blacklist = [];};
            if (toLower worldName == "lingor") exitWith {blacklist = [];};
            if (toLower worldName == "napf") exitWith {blacklist = [];};
            if (toLower worldName == " sauerland ") exitWith {blacklist = [];};
        };
    };

    diag_log "WAI: Blacklist Loaded";

  4. 5 hours ago, Bricktop said:

    LOL 

    So .. I merged and just couldn't figure out why it wasn't working. 

    Everything was in place ... this is strange ...

    ==================

    and then it struck me! 

    I really shouldn't do this stuff at 3am 

     

    my EXACT garageDoorOpener.sqf :blush:

      Reveal hidden contents

    +/*
    +    Garage door opener script by salival (https://github.com/oiad)
    +*/
    +
    +if (dayz_actionInProgress) exitWith {"You are already performing an action, wait for the current action to finish." call dayz_rollingMessages;};
    +dayz_actionInProgress = true;
    +
    +private "_door";
    +
    +_door = _this select 3;
    +
    +if (isNull _door) exitWith {dayz_actionInProgress = false; systemChat "Selected door is NULL!";};
    +
    +{DZE_myVehicle removeAction _x} count s_player_gdoor_opener;s_player_gdoor_opener = [];
    +s_player_gdoor_opener_ctrl = 1;
    +        
    +if (_door animationPhase "Open_door" == 0) then {
    +    systemChat "Opening door";
    +    _door animate ["Open_door",1];
    +} else {
    +    systemChat "Closing door";
    +    _door animate ["Open_door",0];
    +};
    +
    +s_player_gdoor_opener_ctrl = -1;
    +dayz_actionInProgress = false;

     

    result of copying and pasting from github :)

  5. 3 minutes ago, Kimarik said:

    Hello! I am having problems with the remote vehicle option. For the players, the menu goes up for a second and they can not use it.

    Furthermore, players can not search for coins in their corpses. They do not get an option an mouswheel. Everything works fine for the admins.

    Infistar for the first one, its blocking the dialogs. Second one would have to see rpt

  6. 20 minutes ago, BetterDeadThanZed said:

    Infistar's antiteleport is kicking in. As far as I know the only way to fix that is to disable the antiteleport. I ended up changing the config and replacing the name of the plane with "" so they just paradrop instead. When I disabled the antitelepor and flew them in the planet, some players reported their legs breaking in the plane, so the regular paradrop was the best solution to me.

    im not really sure why this is happening.... i hve this installed on 3 servers since the update and all working fine.

    I would assume the client or server RPTs might have something.

    Also, when you launch the game. Add this in your launch parameters. it'll throw an error in your screen as it happens.

    -showscripterrors

  7. 16 hours ago, Alone said:

    I'm new to script programming, how do I change clothes in spaw?
    below my settings, thanks to anyone who can help.

    class_selection = true; //Enable class selection dialog
    #define START_ITEMS "ItemMorphine","ItemBandage",2,"ItemPainkiller","ItemWaterbottle","FoodPistachio"
    class_public = [ // These are visible to anyone on the server

        [(localize "str_playerstats_bandit")+" Lvl1","Bandit1_DZ","BanditW1_DZ",[START_ITEMS,"17Rnd_9x19_glock17",2,"8Rnd_12Gauge_Slug",2],["G17_DZ","Remington870_DZ","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"",[],[],0,-5000,0,""],
        [(localize "str_playerstats_bandit")+" Lvl2","Bandit1_DZ","BanditW1_DZ",[START_ITEMS,"17Rnd_9x19_glock17",3,"10Rnd_303British",2],["G17_DZ","LeeEnfield_DZ","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"DZ_Assault_Pack_EP1",[],[],0,-10000,0,""],
        [(localize "str_playerstats_bandit")+" Lvl3","Bandit1_DZ","BanditW1_DZ",[START_ITEMS,"17Rnd_9x19_glock17",4,"15Rnd_W1866_Slug",2],["G17_DZ","Winchester1866_DZ","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"DZ_TK_Assault_Pack_EP1",[],[],0,-15000,0,"MeleeHatchet"],
        [(localize "str_playerstats_bandit")+" Lvl4","Bandit1_DZ","BanditW1_DZ",[START_ITEMS,"17Rnd_9x19_glock17",4,"75Rnd_545x39_RPK",2],["G17_DZ","RPK74_DZ","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"DZ_TK_Assault_Pack_EP1",[],[],0,-50000,0,"MeleeHatchet"],
        [(localize "str_playerstats_bandit")+" Lvl5","Bandit1_DZ","BanditW1_DZ",[START_ITEMS,"17Rnd_9x19_glock17",4,"30Rnd_556x45_Stanag",2],["G17_DZ","BAF_L85A2_RIS_SUSAT","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"DZ_TK_Assault_Pack_EP1",[],[],0,-100000,0,"MeleeHatchet"],
        [(localize "str_playerstats_bandit")+" Lvl6","Bandit1_DZ","BanditW1_DZ",[START_ITEMS,"17Rnd_9x19_glock17",4,"30Rnd_556x45_Stanag",2],["G17_DZ","SCAR_L_STD_HOLO","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"DZ_TK_Assault_Pack_EP1",[],[],0,-150000,0,"MeleeHatchet"],

        [(localize "str_playerstats_hero")+" Lvl1",if (class_epoch) then {"Soldier_Sniper_PMC_DZ"} else {"Survivor3_DZ"},"SurvivorW2_DZ",[START_ITEMS,"6Rnd_45ACP",2,"10Rnd_303British",2],["Revolver_DZ","LeeEnfield_DZ","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"",[],[],0,5000,0,""],
        [(localize "str_playerstats_hero")+" Lvl2",if (class_epoch) then {"Soldier_Sniper_PMC_DZ"} else {"Survivor3_DZ"},"SurvivorW2_DZ",[START_ITEMS,"6Rnd_45ACP",3,"15Rnd_W1866_Slug",2],["Revolver_DZ","Winchester1866_DZ","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"DZ_Assault_Pack_EP1",[],[],0,10000,0,""],
        [(localize "str_playerstats_hero")+" Lvl3",if (class_epoch) then {"Soldier_Sniper_PMC_DZ"} else {"Survivor3_DZ"},"SurvivorW2_DZ",[START_ITEMS,"6Rnd_45ACP",4,"30Rnd_556x45_Stanag",2],["Revolver_DZ","M16A2_DZ","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"DZ_TK_Assault_Pack_EP1",[],[],0,15000,0,"MeleeHatchet"],
        [(localize "str_playerstats_hero")+" Lvl4",if (class_epoch) then {"Soldier_Sniper_PMC_DZ"} else {"Survivor3_DZ"},"SurvivorW2_DZ",[START_ITEMS,"6Rnd_45ACP",4,"75Rnd_545x39_RPK",2],["Revolver_DZ","RPK74_DZ","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"DZ_TK_Assault_Pack_EP1",[],[],0,30000,0,"MeleeHatchet"],
        [(localize "str_playerstats_hero")+" Lvl5",if (class_epoch) then {"Soldier_Sniper_PMC_DZ"} else {"Survivor3_DZ"},"SurvivorW2_DZ",[START_ITEMS,"6Rnd_45ACP",4,"30Rnd_556x45_Stanag",2],["Revolver_DZ","BAF_L85A2_RIS_SUSAT","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"DZ_TK_Assault_Pack_EP1",[],[],0,60000,0,"MeleeHatchet"],
        [(localize "str_playerstats_hero")+" Lvl6",if (class_epoch) then {"Soldier_Sniper_PMC_DZ"} else {"Survivor3_DZ"},"SurvivorW2_DZ",[START_ITEMS,"6Rnd_45ACP",4,"30Rnd_556x45_Stanag",2],["Revolver_DZ","SCAR_L_STD_HOLO","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"DZ_TK_Assault_Pack_EP1",[],[],0,100000,0,"MeleeHatchet"],

        [localize "str_playerstats_survivor","Survivor2_DZ","SurvivorW2_DZ",[START_ITEMS,"8Rnd_9x18_Makarov",2],["Makarov_DZ","ItemRadio","ItemFlashlight","ItemMap","ItemCompass","ItemKnife","Itemtoolbox"],"",[],[],0,0,0]
    ];

    Visit ebays documentation page. He documents stuff way better than bohemia does.

    https://github.com/ebayShopper/ESSV3/blob/master/DOCUMENTATION.md

  8. Thanks, already re-added it from 1061. Works well.

    Just curious if it had any FPS impact just sitting there? Or if it was more a aesthetic thing to remove it? lol

    Also i've tried to make one for weapons, but cant get it to work... is there something different that gets the weapons info? Like "CfgMagazines"

    Thanks

    Duke

  9. 46 minutes ago, chi said:

    I actually have check wallet working on zombies and a working local_eventKill that spawns coins on them. Its in array format though, and I really prefer the round random configuration. I'll attach the array version thats working with check wallet on zombies (provided to me by @juandayz)

      Reveal hidden contents

    //[unit, selectionName, damage, source, projectile]
    //will only run when local to the created object
    //record any key hits to the required selection
     private["_killer","_coins","_rand"];

    _array = _this select 0;
    _zed = _array select 0;
    _killer = _array select 1;
    _type = _this select 1;

    if (local _zed) then {
    _coins = _zed getVariable [Z_moneyVariable,0];

    _a =17;
    _b =29;
    _c =34;
    _d =48;
    _e =54;
    _addcoins = [_e,_d,_c,_b,_a] call BIS_fnc_selectRandom; 


    _zed setVariable[Z_moneyVariable,_addcoins,true];

    _kills = _killer getVariable[_type,0];
    _killer setVariable[_type,(_kills + 1),true];

    //increase players humanity when zed killed
    _humanity = _killer getVariable["humanity",0];
    _humanity = _humanity + 5;
    _killer setVariable["humanity",_humanity,true];
    };

    Thanks again to all of you for helping me out!

    I should have phrased that better. lol it will work, but for the performance of what it does, with check wallet it adds alot more "actions" for the server.

    Hence hurting the FPS.

    But...every server owner does things differently. Thanks for sharing :)

  10. 2 hours ago, Klemaly said:

    I have the same problem, can someone help me? When I join a server with DayZLauncher I have the same problem with the files, after pressing continue it drops me back to the main menu. I tried to disable the "DayZ Epoch" mod from expansions, but i cant do that. And when i launch the vanilla Arma 2 OA there is no "Dayz Epoch" mod in the expensions....

    you need to redownload the 1061 version to join any server who hasnt updated yet, which is most likely 100% of servers lol

    I didnt find a link anywhere for it, so i have to upload it for our players to be able to connect.

    www.eliteslk.com

    follow the instructions on my homepage to fix this issue

  11. Hi, this question is mostly for one person, but i figured id make a post incase others came accross the same issue i did.

    Some of my scripts use certain functions, and so far ive noticed one thats missing.

    player_removeItems

    @ebayShopper Just curious as to why this function would be removed from 1062? I was actually hoping that one for weapons would be implemented.

    Hopefully you can shed some light on this and maybe guide us to patch this

    Thanks

    Duke

  12. 5 hours ago, chi said:

    @JasonTM That works great to spawn coins on the player. I've tried to get the coins to spawn on the zombie by changing the killer setvariable to zed set variable, but again, I can't get the coins to spawn on the zombie.

    I hate to ask more of you on this topic, but can you show me how to make them spawn on the zombies so that players have to use "Check Wallet" to get the coins?

    Thanks again!!

     

    This is what I had.. im no coder so don't laugh to hard... lol

      Reveal hidden contents

    //[unit, selectionName, damage, source, projectile]
    //will only run when local to the created object
    //record any key hits to the required selection
    private ["_killer","_coins","_chance"];

    _array =         _this select 0;
    _zed =             _array select 0;
    _killer =         _array select 1;
    _type =         _this select 1;

    if (local _zed) then {

        
    _coins = _zed getVariable [Z_moneyVariable,0];
        
    _chance = random 1;

        if (_chance <= .1) then {    //10% chance that player gets up to 500 coins
            _addcoins = round(random 500);
        } else {                     // 90% chance that player gets random amount from 0 to 50        
            _addcoins = round(random 50);
        }; 
        
    _zed setVariable[Z_moneyVariable,_addcoins,true];

    _kills = _killer getVariable[_type,0];
    _killer setVariable[_type,(_kills + 1),true];    

    //increase players humanity when zed killed
    _humanity = _killer getVariable["humanity",0];
    _humanity = _humanity + 5;
    _killer setVariable["humanity",_humanity,true];    
    };

     

    using the check wallet on zombies will not work. Ill have time to work on this in a bit for you

  13. dont think this can be done this way.

    I do it a bit differently than what you're looking for.

    But... It adds coins to players WHEN you kill the zombie.

    This is my local_eventkill.sqf

    Spoiler

    //[unit, selectionName, damage, source, projectile]
    //will only run when local to the created object
    //record any key hits to the required selection
    private ["_zed","_killer","_kills","_array","_type","_humanity","_player_add_wealth"];

    _array =         _this select 0;
    _zed =             _array select 0;
    _killer =         _array select 1;
    _type =         _this select 1;

    if (local _zed) then {
        _kills = _killer getVariable[_type,0];
        _killer setVariable[_type,(_kills + 1),true];
        
        
        
        _player_wealth = _killer getVariable [Z_moneyVariable,0];
        //_player_add_wealth = 50;
        
        
        
        //increase players humanity when zed killed
        _humanity = _killer getVariable["humanity",0];
        _humanity = _humanity + 5;
        
        switch true do {
        case (_humanity <= -50000): {_player_add_wealth = 5};
        case (_humanity <= -5000): {_player_add_wealth = 50};
        case (_humanity >= 50000): {_player_add_wealth = 250};
        case (_humanity >= 10000): {_player_add_wealth = 100};
        default {_player_add_wealth = 50}; // You can use this as a default variable, not sure if it's needed in this situation.
    };
        
        
        _killer setVariable["humanity",_humanity,true];    
        _killer setVariable[Z_moneyVariable,(_player_wealth + _player_add_wealth),true];
        
        call player_forceSave;
    };

    it adds more coins depending on humanity level. You can change to your needs. but keep the structure the same, otherwise it'll break it.

    This file is called in your compiles, you will need to change the paths.

    GL

  14. 4 hours ago, Shelf74 said:

    i replase Coins to worth.
    no resault, suv dont's selling. but i can buy suv's with skin.
    and i can sell item if i choose: Sell from vichel

     

    where is this file - trader configs

    this means the base class of the vehicle must be in the trader files also. I would assume they are as they are there as default. unless you removed them.

     

    SUV_Green_DZE4 < Fully upgraded

    SUV_Green_DZE < Base Class

  15. 3 hours ago, Shelf74 said:

    I dont think so.
    config trader:
     

      Reveal hidden contents

    class Category_565 {
        class SUV_TK_CIV_EP1_DZE4 {type = "trade_any_vehicle";buy[] = {20000,"Coins"};sell[] = {10000,"Coins"};};
        class SUV_Charcoal_DZE4 {type = "trade_any_vehicle";buy[] = {20000,"Coins"};sell[] = {10000,"Coins"};};
        class SUV_Green_DZE4 {type = "trade_any_vehicle";buy[] = {20000,"Coins"};sell[] = {10000,"Coins"};};
        class SUV_Yellow_DZE4 {type = "trade_any_vehicle";buy[] = {20000,"Coins"};sell[] = {10000,"Coins"};};
        class SUV_White_DZE4 {type = "trade_any_vehicle";buy[] = {20000,"Coins"};sell[] = {10000,"Coins"};};
        class SUV_Silver_DZE4 {type = "trade_any_vehicle";buy[] = {20000,"Coins"};sell[] = {10000,"Coins"};};
        class SUV_Red_DZE4 {type = "trade_any_vehicle";buy[] = {20000,"Coins"};sell[] = {10000,"Coins"};};
        class SUV_Pink_DZE4 {type = "trade_any_vehicle";buy[] = {20000,"Coins"};sell[] = {10000,"Coins"};};
        class SUV_Orange_DZE4 {type = "trade_any_vehicle";buy[] = {20000,"Coins"};sell[] = {10000,"Coins"};};
        class SUV_Blue_DZE4 {type = "trade_any_vehicle";buy[] = {20000,"Coins"};sell[] = {10000,"Coins"};};
        class SUV_Camo_DZE4 {type = "trade_any_vehicle";buy[] = {20000,"Coins"};sell[] = {10000,"Coins"};};    


     

     

    your trader files seem wrong. If im not mistaken. its "worth" not "coins".

  16. On 12/16/2017 at 1:56 PM, Shelf74 said:

    I have one little problem. Suv skins scripr work allright. but I dont sell suv with skins at trader. epoch 1061

    server_publishVehicle2.sqf

      Reveal hidden contents

    private ["_activatingPlayer","_isOK","_worldspace","_location","_dir","_class","_uid","_key","_keySelected","_characterID","_donotusekey"];
    //PVDZE_veh_Publish2 = [[_dir,_location],_part_out,false,_keySelected,_activatingPlayer];
    #include "\z\addons\dayz_server\compile\server_toggle_debug.hpp"

    _worldspace =     _this select 0;
    _class =         _this select 1;
    _donotusekey =    _this select 2;
    _keySelected =  _this select 3;
    _activatingPlayer =  _this select 4;

    if(_donotusekey) then {
        _isOK = true;
    } else {
        _isOK = isClass(configFile >> "CfgWeapons" >> _keySelected);
    };

    if(!_isOK) exitWith { diag_log ("HIVE: CARKEY DOES NOT EXIST: "+ str(_keySelected));  };

    if(_donotusekey) then {
        _characterID = _keySelected;
    } else {
        _characterID = str(getNumber(configFile >> "CfgWeapons" >> _keySelected >> "keyid"));
    };

    _dir =         _worldspace select 0;
    _location = _worldspace select 1;
    _uid = _worldspace call dayz_objectUID2;

    //Send request
    _key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, 0 , _characterID, _worldspace, [], [], 1,_uid];

    #ifdef OBJECT_DEBUG
    diag_log ("HIVE: WRITE: "+ str(_key)); 
    #endif

    _key call server_hiveWrite;

    // Switched to spawn so we can wait a bit for the ID
    [_uid,_characterID,_class,_dir,_location,_donotusekey,_activatingPlayer] spawn {
       private ["_object","_uid","_characterID","_done","_retry","_key","_result","_outcome","_oid","_class","_location","_object_para","_donotusekey","_activatingPlayer"];

       _uid = _this select 0;
       _characterID = _this select 1;
       _class = _this select 2;
       //_dir = _this select 3;
       _location = _this select 4;
       _donotusekey = _this select 5;
       _activatingPlayer = _this select 6;

       _done = false;
        _retry = 0;
        // TODO: Needs major overhaul for 1.1
        while {_retry < 10} do {
            // GET DB ID
            _key = format["CHILD:388:%1:",_uid];
            #ifdef OBJECT_DEBUG
            diag_log ("HIVE: WRITE: "+ str(_key));
            #endif
            
            _result = _key call server_hiveReadWrite;
            _outcome = _result select 0;
            if (_outcome == "PASS") then {
                _oid = _result select 1;
                #ifdef OBJECT_DEBUG
                diag_log("CUSTOM: Selected " + str(_oid));
                #endif
                
                _done = true;
                _retry = 100;

            } else {
                diag_log("CUSTOM: trying again to get id for: " + str(_uid));
                _done = false;
                _retry = _retry + 1;
                uiSleep 1;
            };
        };

        if(!_done) exitWith { diag_log("CUSTOM: failed to get id for : " + str(_uid)); };

        if(DZE_TRADER_SPAWNMODE) then {
            //_object_para = createVehicle ["ParachuteMediumWest", [0,0,0], [], 0, "CAN_COLLIDE"];
            _object_para = "ParachuteMediumWest" createVehicle [0,0,0];
            _object_para setPos [_location select 0, _location select 1,(_location select 2) + 65];
            //_object = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"];
            _object = _class createVehicle [0,0,0];
        } else {
            //_object = createVehicle [_class, _location, [], 0, "CAN_COLLIDE"];
            // Don't use setPos or CAN_COLLIDE here. It will spawn inside other vehicles
            _object = _class createVehicle _location;
        };
        _type = typeof _object;
        if  (_type == "SUV_TK_CIV_EP1_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_TK_CIV_EP1_DZE4.jpg''];';};
        if    (_type == "SUV_Charcoal_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Charcoal_DZE4.jpg''];';};
        if    (_type == "SUV_Green_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Green_DZE4.jpg''];';};
        if    (_type == "SUV_Yellow_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Yellow_DZE4.jpg''];';};
        if    (_type == "SUV_White_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_White_DZE4.jpg''];';};
        if    (_type == "SUV_Silver_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Silver_DZE4.jpg''];';};
        if    (_type == "SUV_Red_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Red_DZE4.jpg''];';};
        if    (_type == "SUV_Pink_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Pink_DZE4.jpg''];';};
        if    (_type == "SUV_Orange_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Orange_DZE4.jpg''];';};
        if    (_type == "SUV_Blue_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Blue_DZE4.jpg''];';};
        if    (_type == "SUV_Camo_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Camo_DZE4.jpg''];';};
            
        if(!_donotusekey) then {
            // Lock vehicle
            _object setvehiclelock "locked";
        };

        clearWeaponCargoGlobal  _object;
        clearMagazineCargoGlobal  _object;
        dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object];
        _object setVariable ["ObjectID", _oid, true];
        _object setVariable ["lastUpdate",time];
        _object setVariable ["CharacterID", _characterID, true];
        
        //годмод
        _szs = _activatingPlayer getVariable ['inSafeZone',0];
        if (_szs == 1) then
        {
            [_object] spawn
            {
                _object = _this select 0;
                player_fired = {
                    deleteVehicle (nearestObject [_this select 0,_this select 4]);
                    cutText ['You can not fire in a SafeZone!','WHITE IN'];
                };
                zombie_generate = {};
            
                fnc_usec_damageHandler = {};
                
                _object removeAllEventHandlers 'Fired';
                _object addEventHandler ['Fired', {_this call player_fired;}];
                {
                    _x removeAllEventHandlers 'Fired';
                    _x addEventHandler ['Fired', {_this call player_fired;}];
                } forEach (crew _object);
                fnc_veh_handleDam = {false};
                _object removeAllEventHandlers 'HandleDamage';
                _object addeventhandler ['HandleDamage',{ _this call fnc_veh_handleDam } ];
                _object allowDamage false;
            };
        };
        diag_log format["server_publishVehicle.sqf:%1",typeof _object];
        
        //_object setVelocity [0,0,1];

        if(DZE_TRADER_SPAWNMODE) then {
            _object attachTo [_object_para, [0,0,-1.6]];
            uiSleep 1;
            WaitUntil{(([_object] call FNC_GetPos) select 2) < 0.1};
            detach _object;
            deleteVehicle _object_para;
        };
        
        _object call fnc_veh_ResetEH;
        
        // for non JIP users this should make sure everyone has eventhandlers for vehicles.
        PVDZE_veh_Init = _object;
        publicVariable "PVDZE_veh_Init";
        processInitCommands;
        diag_log format["PUBLISH: %1(%2) bought %3 with ObjectUID %4",if (alive _activatingPlayer) then {name _activatingPlayer} else {"DeadPlayer"},getPlayerUID _activatingPlayer,_class,_uid];
    };
     


    server_publishVehicle3.sqf

      Reveal hidden contents

    private ["_activatingPlayer","_isOK","_object","_worldspace","_location","_dir","_class","_uid","_key","_keySelected","_characterID","_donotusekey"];
    //PVDZE_veh_Publish2 = [_veh,[_dir,_location],_part_out,false,_keySelected,_activatingPlayer];
    #include "\z\addons\dayz_server\compile\server_toggle_debug.hpp"

    _object =         _this select 0;
    _worldspace =     _this select 1;
    _class =         _this select 2;
    _donotusekey =    _this select 3;
    _keySelected =  _this select 4;
    _activatingPlayer =  _this select 5;
    _characterID = _keySelected;

    _isOK = isClass(configFile >> "CfgVehicles" >> _class);
    if (!_isOK || isNull _object) exitWith {
        diag_log ("HIVE-pv3: Vehicle does not exist: "+ str(_class));
        dze_waiting = "fail";
        (owner _activatingPlayer) publicVariableClient "dze_waiting";
    };

    #ifdef OBJECT_DEBUG
    diag_log ("PUBLISH: Attempt " + str(_object));
    #endif

    _dir =         _worldspace select 0;
    _location = _worldspace select 1;
    _uid = _worldspace call dayz_objectUID2;

    //Send request
    _key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, 0 , _characterID, _worldspace, [], [], 1,_uid];
    #ifdef OBJECT_DEBUG
    diag_log ("HIVE: WRITE: "+ str(_key)); 
    #endif

    _key call server_hiveWrite;

    // Switched to spawn so we can wait a bit for the ID
    [_object,_uid,_characterID,_class,_dir,_location,_donotusekey,_activatingPlayer] spawn {
       private ["_object","_uid","_characterID","_done","_retry","_key","_result","_outcome","_oid","_class","_location","_donotusekey","_activatingPlayer","_countr","_objectID","_objectUID","_dir","_newobject","_weapons","_magazines","_backpacks","_objWpnTypes","_objWpnQty"];

       _object = _this select 0;
       _objectID     = _object getVariable ["ObjectID","0"];
       _objectUID    = _object getVariable ["ObjectUID","0"];
       _uid = _this select 1;
       _characterID = _this select 2;
       _class = _this select 3;
       _dir = _this select 4;
       // _location = _this select 5;
       _location = getPosATL _object;
       _donotusekey = _this select 6;
       _activatingPlayer = _this select 7;

       _done = false;
        _retry = 0;
        // TODO: Needs major overhaul for 1.1
        while {_retry < 10} do {
            // GET DB ID
            _key = format["CHILD:388:%1:",_uid];
            #ifdef OBJECT_DEBUG
            diag_log ("HIVE: WRITE: "+ str(_key));
            #endif
            
            _result = _key call server_hiveReadWrite;
            _outcome = _result select 0;
            if (_outcome == "PASS") then {
                _oid = _result select 1;
                //_object setVariable ["ObjectID", _oid, true];
                #ifdef OBJECT_DEBUG
                diag_log("CUSTOM: Selected " + str(_oid));
                #endif
                
                _done = true;
                _retry = 100;

            } else {
                diag_log("CUSTOM: trying again to get id for: " + str(_uid));
                _done = false;
                _retry = _retry + 1;
                uiSleep 1;
            };
        };

        if (!_done) exitWith {
            diag_log("HIVE-pv3: failed to get id for : " + str(_uid));
            _key = format["CHILD:310:%1:",_uid];
            _key call server_hiveWrite;
            
            dze_waiting = "fail";
            (owner _activatingPlayer) publicVariableClient "dze_waiting";
        };

        // add items from previous vehicle here
        _weapons =         getWeaponCargo _object;
        _magazines =     getMagazineCargo _object;
        _backpacks =     getBackpackCargo _object;

        clearWeaponCargoGlobal  _object;
        clearMagazineCargoGlobal  _object;
        clearBackpackCargoGlobal _object;

        // Remove marker
        deleteVehicle _object;

        //_newobject = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"];
        _newobject = _class createVehicle [0,0,0];

        // remove old vehicle from DB
        [_objectID,_objectUID,_activatingPlayer] call server_deleteObj;

        // switch var to new vehicle at this point.
        _object = _newobject;

        _object setDir _dir;
        _object setPosATL _location;
                            
        //Add weapons
        _objWpnTypes =     _weapons select 0;
        _objWpnQty =     _weapons select 1;
        _countr = 0;
        {
            _object addWeaponCargoGlobal [_x,(_objWpnQty select _countr)];
            _countr = _countr + 1;
        } count _objWpnTypes;
        if (_type == "SUV_TK_CIV_EP1_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_TK_CIV_EP1_DZE4.jpg''];';};
        if    (_type == "SUV_Charcoal_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Charcoal_DZE4.jpg''];';};
        if    (_type == "SUV_Green_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Green_DZE4.jpg''];';};
        if    (_type == "SUV_Yellow_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Yellow_DZE4.jpg''];';};
        if    (_type == "SUV_White_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_White_DZE4.jpg''];';};
        if    (_type == "SUV_Silver_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Silver_DZE4.jpg''];';};
        if    (_type == "SUV_Red_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Red_DZE4.jpg''];';};
        if    (_type == "SUV_Pink_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Pink_DZE4.jpg''];';};
        if    (_type == "SUV_Orange_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Orange_DZE4.jpg''];';};
        if    (_type == "SUV_Blue_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Blue_DZE4.jpg''];';};
        if    (_type == "SUV_Camo_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Camo_DZE4.jpg''];';};
            
        //Add Magazines
        _objWpnTypes = _magazines select 0;
        _objWpnQty = _magazines select 1;
        _countr = 0;
        {
            _object addMagazineCargoGlobal [_x,(_objWpnQty select _countr)];
            _countr = _countr + 1;
        } count _objWpnTypes;

        //Add Backpacks
        _objWpnTypes = _backpacks select 0;
        _objWpnQty = _backpacks select 1;
        _countr = 0;
        {
            _object addBackpackCargoGlobal [_x,(_objWpnQty select _countr)];
            _countr = _countr + 1;
        } count _objWpnTypes;

        _object setVariable ["ObjectID", _oid, true];
        _object setVariable ["lastUpdate",time];
        _object setVariable ["CharacterID", _characterID, true];

        dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object];

        _object call fnc_veh_ResetEH;
        
        // for non JIP users this should make sure everyone has eventhandlers for vehicles.
        PVDZE_veh_Init = _object;
        publicVariable "PVDZE_veh_Init";
        
        dze_waiting = "success";
        (owner _activatingPlayer) publicVariableClient "dze_waiting";
        processInitCommands;
        diag_log ("PUBLISH: " + str(_activatingPlayer) + " Upgraded " + (_class) + " with ID " + str(_uid));
    };
     

    server_monitor.sqf

      Reveal hidden contents

    private ["_date","_year","_month","_day","_hour","_minute","_date1","_key","_objectCount","_dir","_point","_i","_action","_dam","_selection","_wantExplosiveParts","_entity","_worldspace","_damage","_booleans","_rawData","_ObjectID","_class","_CharacterID","_inventory","_hitpoints","_fuel","_id","_objectArray","_script","_result","_outcome","_shutdown","_res"];
    [] execVM "\z\addons\dayz_server\system\s_fps.sqf"; //server monitor FPS (writes each ~181s diag_fps+181s diag_fpsmin*)
    #include "\z\addons\dayz_server\compile\server_toggle_debug.hpp"

    waitUntil {!isNil "BIS_MPF_InitDone" && initialized};
    if (!isNil "sm_done") exitWith {}; // prevent server_monitor be called twice (bug during login of the first player)
    sm_done = false;

    _legacyStreamingMethod = false; //use old object streaming method, more secure but will be slower and subject to the callExtension return size limitation.

    dayz_serverIDMonitor = [];
    _DZE_VehObjects = [];
    dayz_versionNo = getText (configFile >> "CfgMods" >> "DayZ" >> "version");
    dayz_hiveVersionNo = getNumber (configFile >> "CfgMods" >> "DayZ" >> "hiveVersion");
    _hiveLoaded = false;
    _serverVehicleCounter = [];
    _tempMaint = DayZ_WoodenFence + DayZ_WoodenGates;
    diag_log "HIVE: Starting";

    //Set the Time
    _key = "CHILD:307:";
    _result = _key call server_hiveReadWrite;
    _outcome = _result select 0;
    if (_outcome == "PASS") then {
        _date = _result select 1;
        _year = _date select 0;
        _month = _date select 1;
        _day = _date select 2;
        _hour = _date select 3;
        _minute = _date select 4;

        if (dayz_ForcefullmoonNights) then {_date = [2012,8,2,_hour,_minute];};
        diag_log ["TIME SYNC: Local Time set to:", _date, "Fullmoon:",dayz_ForcefullmoonNights,"Date given by HiveExt.dll:",_result select 1];
        setDate _date;
        dayzSetDate = _date;
        publicVariable "dayzSetDate";
    };

    //Stream in objects
    /* STREAM OBJECTS */
    //Send the key
    _timeStart = diag_tickTime;

    for "_i" from 1 to 5 do {
        diag_log "HIVE: trying to get objects";
        _key = format["CHILD:302:%1:%2:",dayZ_instance, _legacyStreamingMethod];
        _result = _key call server_hiveReadWrite;  
        if (typeName _result == "STRING") then {
            _shutdown = format["CHILD:400:%1:",(profileNamespace getVariable "SUPERKEY")];
            _res = _shutdown call server_hiveReadWrite;
            diag_log ("HIVE: attempt to kill.. HiveExt response:"+str(_res));
        } else {
            diag_log ("HIVE: found "+str(_result select 1)+" objects" );
            _i = 99; // break
        };
    };

    if (typeName _result == "STRING") exitWith {
        diag_log "HIVE: Connection error. Server_monitor.sqf is exiting.";
    };    

    diag_log "HIVE: Request sent";
    _myArray = [];
    _val = 0;
    _status = _result select 0; //Process result
    _val = _result select 1;
    if (_legacyStreamingMethod) then {
        if (_status == "ObjectStreamStart") then {
            profileNamespace setVariable ["SUPERKEY",(_result select 2)];
            _hiveLoaded = true;
            //Stream Objects
            diag_log ("HIVE: Commence Object Streaming...");
            for "_i" from 1 to _val do  {
                _result = _key call server_hiveReadWriteLarge;
                _status = _result select 0;
                _myArray set [count _myArray,_result];
            };
        };
    } else {
        if (_val > 0) then {
            _fileName = _key call server_hiveReadWrite;
            _lastFN = profileNamespace getVariable["lastFN",""];
            profileNamespace setVariable["lastFN",_fileName];
            saveProfileNamespace;
            if (_status == "ObjectStreamStart") then {
                profileNamespace setVariable ["SUPERKEY",(_result select 2)];
                _hiveLoaded = true;
                _myArray = Call Compile PreProcessFile _fileName;
                _key = format["CHILD:302:%1:%2:",_lastFN, _legacyStreamingMethod];
                _result = _key call server_hiveReadWrite; //deletes previous object data dump
            };
        } else {
            if (_status == "ObjectStreamStart") then {
                profileNamespace setVariable ["SUPERKEY",(_result select 2)];
                _hiveLoaded = true;
            };
        };
    };

    diag_log ("HIVE: Streamed " + str(_val) + " objects");

    // Don't spawn objects if no clients are online (createVehicle fails with Ref to nonnetwork object)
    if ((playersNumber west + playersNumber civilian) == 0) exitWith {
        diag_log "All clients disconnected. Server_monitor.sqf is exiting.";
    };

    {
        private ["_object","_posATL"];
        //Parse Array
        _action =         _x select 0; 
        _idKey =         _x select 1;
        _type =            _x select 2;
        _ownerID =         _x select 3;
        _worldspace =     _x select 4;
        _inventory =    _x select 5;
        _hitPoints =    _x select 6;
        _fuel =            _x select 7;
        _damage =         _x select 8;
        _storageMoney = _x select 9;

        //set object to be in maintenance mode
        _maintenanceMode = false;
        _maintenanceModeVars = [];
        
        _dir = 90;
        _pos = [0,0,0];
        _wsDone = false;
        _wsCount = count _worldspace;

        //Vector building
        _vector = [[0,0,0],[0,0,0]];
        _vecExists = false;
        _ownerPUID = "0";

        if (_wsCount >= 2) then {
            _dir = _worldspace select 0;
            _posATL = _worldspace select 1;
            if (count _posATL == 3) then {
                _pos = _posATL;
                _wsDone = true;                    
            };
            if (_wsCount >= 3) then{
                _ws2TN = typename (_worldspace select 2);
                _ws3TN = typename (_worldspace select 3);
                if (_wsCount == 3) then{
                        if (_ws2TN == "STRING") then{
                            _ownerPUID = _worldspace select 2;
                        } else {
                             if (_ws2TN == "ARRAY") then{
                                _vector = _worldspace select 2;
                                _vecExists = true;
                            };                  
                        };
                } else {
                    if (_wsCount == 4) then{
                        if (_ws3TN == "STRING") then{
                            _ownerPUID = _worldspace select 3;
                        } else {
                            if (_ws2TN == "STRING") then{
                                _ownerPUID = _worldspace select 2;
                            };
                        };
                        if (_ws2TN == "ARRAY") then{
                            _vector = _worldspace select 2;
                            _vecExists = true;
                        } else {
                            if (_ws3TN == "ARRAY") then{
                                _vector = _worldspace select 3;
                                _vecExists = true;
                            };
                        };
                    };
                };
            } else {
                _worldspace set [count _worldspace, "0"];
            };
        };

        if (!_wsDone) then {
            if ((count _posATL) >= 2) then {
                _pos = [_posATL select 0,_posATL select 1,0];
                diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: %4",_idKey,_type,_worldspace,_pos];
            } else {
                diag_log format["MOVED OBJ: %1 of class %2 with worldspace array = %3 to pos: [0,0,0]",_idKey,_type,_worldspace];
            };
        };

        //diag_log format["OBJ: %1 - %2,%3,%4,%5,%6,%7,%8", _idKey,_type,_ownerID,_worldspace,_inventory,_hitPoints,_fuel,_damage];
        /*
            if (_type in _tempMaint) then {
                //Use hitpoints for Maintenance system and other systems later.
                //Enable model swap for a damaged model.
                if ("Maintenance" in _hitPoints) then {
                    _maintenanceModeVars = [_type,_pos];
                    _type = _type + "_Damaged";
                };    
                //TODO add remove object and readd old fence (hideobject would be nice to use here :-( )
                //Pending change to new fence models\Layout
            };
        */
            _nonCollide = _type in DayZ_nonCollide;    
            //Create it
            if (_nonCollide) then {
                _object = createVehicle [_type, [0,0,0], [], 0, "NONE"];
            } else {
                _object = _type createVehicle [0,0,0]; //more than 2x faster than createvehicle array
            };
            _object setDir _dir;
            _object setPosATL _pos;
            _object setDamage _damage;
            if (_vecExists) then {
                _object setVectorDirAndUp _vector;
            };
            _object enableSimulation false;

            _doorLocked = _type in DZE_DoorsLocked;
            _isPlot = _type == "Plastic_Pole_EP1_DZ";
            
            // prevent immediate hive write when vehicle parts are set up
            _object setVariable ["lastUpdate",diag_ticktime];
            _object setVariable ["ObjectID", _idKey, true];
            _object setVariable ["OwnerPUID", _ownerPUID, true];
            if (Z_SingleCurrency && {(_type in DZE_MoneyStorageClasses) || (_object isKindOf "AllVehicles")}) then {
                _object setVariable [Z_MoneyVariable, _storageMoney, true];
            };

            dayz_serverIDMonitor set [count dayz_serverIDMonitor,_idKey];
            
            if (!_wsDone) then {[_object,"position",true] call server_updateObject;};
            if (_type == "Base_Fire_DZ") then {_object spawn base_fireMonitor;};
            
            _isDZ_Buildable = _object isKindOf "DZ_buildables";
            _isTrapItem = _object isKindOf "TrapItems";
            _isSafeObject = _type in DayZ_SafeObjects;
            
            //Dont add inventory for traps.
            if (!_isDZ_Buildable && !_isTrapItem) then {
                clearWeaponCargoGlobal _object;
                clearMagazineCargoGlobal _object;
                clearBackpackCargoGlobal _object;
                if( (count _inventory > 0) && !_isPlot && !_doorLocked) then {
                    if (_type in DZE_LockedStorage) then {
                        // Do not send big arrays over network! Only server needs these
                        _object setVariable ["WeaponCargo",(_inventory select 0),false];
                        _object setVariable ["MagazineCargo",(_inventory select 1),false];
                        _object setVariable ["BackpackCargo",(_inventory select 2),false];
                    } else {
                        _weaponcargo = _inventory select 0 select 0;
                        _magcargo = _inventory select 1 select 0;
                        _backpackcargo = _inventory select 2 select 0;
                       _weaponqty = _inventory select 0 select 1;
                        {_object addWeaponCargoGlobal [_x, _weaponqty select _foreachindex];} foreach _weaponcargo;

                        _magqty = _inventory select 1 select 1;
                        {_object addMagazineCargoGlobal [_x, _magqty select _foreachindex];} foreach _magcargo;

                        _backpackqty = _inventory select 2 select 1;
                        {_object addBackpackCargoGlobal [_x, _backpackqty select _foreachindex];} foreach _backpackcargo;
                    };
                } else {
                    if (DZE_permanentPlot && _isPlot) then {
                        _object setVariable ["plotfriends", _inventory, true];
                    };
                    if (DZE_doorManagement && _doorLocked) then {
                        _object setVariable ["doorfriends", _inventory, true];
                    };
                };
            };
        if (_type == "SUV_TK_CIV_EP1_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_TK_CIV_EP1_DZE4.jpg''];';};
        if    (_type == "SUV_Charcoal_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Charcoal_DZE4.jpg''];';};
        if    (_type == "SUV_Green_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Green_DZE4.jpg''];';};
        if    (_type == "SUV_Yellow_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Yellow_DZE4.jpg''];';};
        if    (_type == "SUV_White_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_White_DZE4.jpg''];';};
        if    (_type == "SUV_Silver_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Silver_DZE4.jpg''];';};
        if    (_type == "SUV_Red_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Red_DZE4.jpg''];';};
        if    (_type == "SUV_Pink_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Pink_DZE4.jpg''];';};
        if    (_type == "SUV_Orange_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Orange_DZE4.jpg''];';};
        if    (_type == "SUV_Blue_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Blue_DZE4.jpg''];';};
        if    (_type == "SUV_Camo_DZE4") then {_object setVehicleInit 'this setObjectTexture [0, ''scripts\SUVskins\SUV_Camo_DZE4.jpg''];';};
            
            if (_object isKindOf "AllVehicles") then {
                _object setVariable ["CharacterID", _ownerID, true];
                _isAir = _object isKindOf "Air";
                {
                    _selection = _x select 0;
                    _dam = if (!_isAir && {_selection in dayZ_explosiveParts}) then {(_x select 1) min 0.8;} else {_x select 1;};
                    _strH = "hit_" + (_selection);
                    _object setHit[_selection,_dam];
                    _object setVariable [_strH,_dam,true];
                } foreach _hitpoints;
                [_object,"damage"] call server_updateObject;

                _object setFuel _fuel;
                if (!_isSafeObject) then {
                    _DZE_VehObjects set [count _DZE_VehObjects,_object]; 
                    _object call fnc_veh_ResetEH;
                    if (_ownerID != "0" && {!(_object isKindOf "Bicycle")}) then {_object setVehicleLock "locked";};
                    _serverVehicleCounter set [count _serverVehicleCounter,_type]; // total each vehicle
                } else {
                    _object enableSimulation true;
                };[_object] execVM "dayz_code\compile\server_deleteSafezones.sqf";
            } else {
                // Fix for leading zero issues on safe codes after restart
                _lockable = getNumber (configFile >> "CfgVehicles" >> _type >> "lockable");
                _codeCount = count (toArray _ownerID);
                switch (_lockable) do {
                    case 4: {
                        switch (_codeCount) do {
                            case 3: {_ownerID = format["0%1",_ownerID];};
                            case 2: {_ownerID = format["00%1",_ownerID];};
                            case 1: {_ownerID = format["000%1",_ownerID];};
                        };
                    };
                    case 3: {
                        switch (_codeCount) do {
                            case 2: {_ownerID = format["0%1",_ownerID];};
                            case 1: {_ownerID = format["00%1",_ownerID];};
                        };
                    };
                };
                _object setVariable ["CharacterID", _ownerID, true];
                if (_isDZ_Buildable || {(_isSafeObject && !_isTrapItem)}) then {
                    _object setVariable["memDir",_dir,true];
                    if (DZE_GodModeBase && {!(_type in DZE_GodModeBaseExclude)}) then {
                        _object addEventHandler ["HandleDamage",{false}];
                    } else {
                        _object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}];
                    };
                    _object setVariable ["OEMPos",_pos,true]; // used for inplace upgrades and lock/unlock of safe
                } else {
                    _object enableSimulation true;
                };
                if (_isDZ_Buildable || {_isTrapItem}) then {
                    //Use inventory for owner/clan info and traps armed state
                    {
                        _xTypeName = typeName _x;
                        switch (_xTypeName) do {
                            case "ARRAY": {
                                _x1 = _x select 1;
                                switch (_x select 0) do {
                                    case "ownerArray" : { _object setVariable ["ownerArray", _x1, true]; };
                                    case "clanArray" : { _object setVariable ["clanArray", _x1, true]; };
                                    case "armed" : { _object setVariable ["armed", _x1, true]; };
                                    case "padlockCombination" : { _object setVariable ["dayz_padlockCombination", _x1, false]; };
                                    case "BuildLock" : { _object setVariable ["BuildLock", _x1, true]; };
                                };
                            };
                            case "STRING": {_object setVariable ["ownerArray", [_x], true]; };
                            case "BOOLEAN": {_object setVariable ["armed", _x, true]};
                        };
                    } foreach _inventory;
                    
                    if (_maintenanceMode) then { _object setVariable ["Maintenance", true, true]; _object setVariable ["MaintenanceVars", _maintenanceModeVars]; };
                };
            };
            dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; //Monitor the object
    } forEach _myArray;

    //enable simulation on vehicles after all buildables are spawned
    {
        _x enableSimulation true;
        _x setVelocity [0,0,1];
    } forEach _DZE_VehObjects;

    diag_log format["HIVE: BENCHMARK - Server_monitor.sqf finished streaming %1 objects in %2 seconds (unscheduled)",_val,diag_tickTime - _timeStart];

    // # END OF STREAMING #
    processInitCommands;
    if (dayz_townGenerator) then {
        call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_plantSpawner.sqf"; // Draw the pseudo random seeds
    };

    [] execFSM "\z\addons\dayz_server\system\server_vehicleSync.fsm"; 
    [] execVM "\z\addons\dayz_server\system\scheduler\sched_init.sqf"; // launch the new task scheduler

    createCenter civilian;

    actualSpawnMarkerCount = 0;
    // count valid spawn markers, since different maps have different amounts
    for "_i" from 0 to 10 do {
        if ((getMarkerPos format["spawn%1",_i]) distance [0,0,0] > 0) then {
            actualSpawnMarkerCount = actualSpawnMarkerCount + 1;
        } else {
            _i = 11; // exit since we did not find any further markers 
        };
    };
    diag_log format["Total Number of spawn locations %1", actualSpawnMarkerCount];

    if (isDedicated) then {endLoadingScreen;};
    allowConnection = true;
    sm_done = true;
    publicVariable "sm_done";

    // Trap loop
    [] spawn {
        private ["_array","_array2","_array3","_script","_armed"];
        _array = str dayz_traps;
        _array2 = str dayz_traps_active;
        _array3 = str dayz_traps_trigger;

        while {1 == 1} do {
            if ((str dayz_traps != _array) || (str dayz_traps_active != _array2) || (str dayz_traps_trigger != _array3)) then {
                _array = str dayz_traps;
                _array2 = str dayz_traps_active;
                _array3 = str dayz_traps_trigger;
                //diag_log "DEBUG: traps";
                //diag_log format["dayz_traps (%2) -> %1", dayz_traps, count dayz_traps];
                //diag_log format["dayz_traps_active (%2) -> %1", dayz_traps_active, count dayz_traps_active];
                //diag_log format["dayz_traps_trigger (%2) -> %1", dayz_traps_trigger, count dayz_traps_trigger];
                //diag_log "DEBUG: end traps";
            };

            {
                if (isNull _x) then {
                    dayz_traps = dayz_traps - [_x];
                    _armed = false;
                    _script = {};
                } else {
                    _armed = _x getVariable ["armed", false];
                    _script = call compile getText (configFile >> "CfgVehicles" >> typeOf _x >> "script");
                };
                
                if (_armed) then {
                    if !(_x in dayz_traps_active) then {["arm", _x] call _script;};
                } else {
                    if (_x in dayz_traps_active) then {["disarm", _x] call _script;};
                };
                uiSleep 0.01;
            } forEach dayz_traps;
            uiSleep 1;
        };
    };

    //Points of interest
    //[] execVM "\z\addons\dayz_server\compile\server_spawnInfectedCamps.sqf"; //Adds random spawned camps in the woods with corpses and loot tents (negatively impacts FPS)
    [] execVM "\z\addons\dayz_server\compile\server_spawnCarePackages.sqf";
    [] execVM "\z\addons\dayz_server\compile\server_spawnCrashSites.sqf";

    if (dayz_townGenerator) then {execVM "\z\addons\dayz_server\system\lit_fireplaces.sqf";};

    "PVDZ_sec_atp" addPublicVariableEventHandler {
        _x = _this select 1;
        switch (1==1) do {
            case (typeName (_x select 0) == "SCALAR") : { // just some logs from the client
                diag_log (toString _x);
            };
            case (count _x == 2) : { // wrong side
                diag_log format["P1ayer %1 reports possible 'side' hack. Server may be compromised!",(_x select 1) call fa_plr2Str];
            };
            default { // player hit
    _unit = _x select 0;
    _source = _x select 1;
    _victim_pos = getPosATL _unit;
    _agressor_pos = getPosATL _source;
    if (!isNull _source) then {
    diag_log format ["P1ayer %1%7(%8) hit by %2%9(%10) %3 from %4 meters in %5 for %6 damage",
    _unit call fa_plr2Str, _source call fa_plr2Str, toString (_x select 2), _x select 3, _x select 4, _x select 5, _victim_pos, mapGridPosition(_victim_pos), _agressor_pos, mapGridPosition(_agressor_pos)];
    };
    };
    };
    };

    "PVDZ_objgather_Knockdown" addPublicVariableEventHandler {
        _tree = (_this select 1) select 0;
        _player = (_this select 1) select 1;
        _dis = _player distance _tree;
        _name = if (alive _player) then {name _player} else {"DeadPlayer"};
        _uid = getPlayerUID _player;
        _treeModel = _tree call fn_getModelName;

        if ((_dis < 30) && (_treeModel in dayz_trees) && (_uid != "")) then {
            _tree setDamage 1;
            dayz_choppedTrees set [count dayz_choppedTrees,_tree];
            diag_log format["Server setDamage on tree %1 chopped down by %2(%3)",_treeModel,_name,_uid];
        };
    };

    // preload server traders menu data into cache
    if !(DZE_ConfigTrader) then {
        {
            // get tids
            _traderData = call compile format["menu_%1;",_x];
            if (!isNil "_traderData") then {
                {
                    _traderid = _x select 1;
                    _retrader = [];

                    _key = format["CHILD:399:%1:",_traderid];
                    _data = "HiveEXT" callExtension _key;
                    _result = call compile format["%1",_data];
                    _status = _result select 0;
            
                    if (_status == "ObjectStreamStart") then {
                        _val = _result select 1;
                        call compile format["ServerTcache_%1 = [];",_traderid];
                        for "_i" from 1 to _val do {
                            _data = "HiveEXT" callExtension _key;
                            _result = call compile format ["%1",_data];
                            call compile format["ServerTcache_%1 set [count ServerTcache_%1,%2]",_traderid,_result];
                            _retrader set [count _retrader,_result];
                        };
                    };
                } forEach (_traderData select 0);
            };
        } forEach serverTraders;
    };

    if (_hiveLoaded) then {
        _serverVehicleCounter spawn {
            //  spawn_vehicles
            // Get all buildings and roads only once. Very taxing, but only on first startup
            _serverVehicleCounter = _this;
            _vehiclesToUpdate = [];
            _startTime = diag_tickTime;
            _buildingList = [];
            _cfgLootFile = missionConfigFile >> "CfgLoot" >> "Buildings";
            {
                if (isClass (_cfgLootFile >> typeOf _x)) then {
                    _buildingList set [count _buildingList,_x];
                };
            } count (getMarkerPos "center" nearObjects ["building",((getMarkerSize "center") select 1)]);
            _roadList = getMarkerPos "center" nearRoads ((getMarkerSize "center") select 1);
            
            _vehLimit = MaxVehicleLimit - (count _serverVehicleCounter);
            if (_vehLimit > 0) then {
                diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit));
                for "_x" from 1 to _vehLimit do {call spawn_vehicles;};
            } else {
                diag_log "HIVE: Vehicle Spawn limit reached!";
                _vehLimit = 0;
            };
            
            if (dayz_townGenerator) then {
                // Vanilla town generator spawns debris locally on each client
                MaxDynamicDebris = 0;
            } else {
                // Epoch global dynamic debris
                diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris));
                for "_x" from 1 to MaxDynamicDebris do {call spawn_roadblocks;};
            };

            diag_log ("HIVE: Spawning # of Ammo Boxes: " + str(MaxAmmoBoxes));
            for "_x" from 1 to MaxAmmoBoxes do {call spawn_ammosupply;};

            diag_log ("HIVE: Spawning # of Veins: " + str(MaxMineVeins));
            for "_x" from 1 to MaxMineVeins do {call spawn_mineveins;};
            
            diag_log format["HIVE: BENCHMARK - Server finished spawning %1 DynamicVehicles, %2 Debris, %3 SupplyCrates and %4 MineVeins in %5 seconds (scheduled)",_vehLimit,MaxDynamicDebris,MaxAmmoBoxes,MaxMineVeins,diag_tickTime - _startTime];
            
            //Update gear last after all dynamic vehicles are created to save random loot to database (low priority)
            {[_x,"gear"] call server_updateObject} count _vehiclesToUpdate;
        };
    };

    [] spawn server_spawnEvents;
    /* //Causes issues with changing clothes
    _debugMarkerPosition = [(respawn_west_original select 0),(respawn_west_original select 1),1];
    _vehicle_0 = createVehicle ["DebugBox_DZ", _debugMarkerPosition, [], 0, "CAN_COLLIDE"];
    _vehicle_0 setPos _debugMarkerPosition;
    _vehicle_0 setVariable ["ObjectID","1",true];
    */
     

     

    Thats most likely because of he classname of the vehicle.

    SUV_TK_CIV_EP1_DZE4  is the Upgraded version of the regular SUV which the classname would be SUV_TK_CIV_EP1_DZE. Notice the 4 is not there at the end.

    You'll need to add those specific vehicles to your trader files.

  17. 5 hours ago, Bricktop said:

    I have this working perfect on my server and I added gems to the zombies but I can't seem to figure out where to increase the chance that zombies will have loot on them. 

    I found this - \dayz.epoch.chernarus\dayz_code\configs\CfgLoot\Groups\Zombies 

      Hide contents

    ZombieSuit[] =
    {
        {Loot_GROUP,        6,        Consumable},
        {Loot_GROUP,        1,        AmmoCivilian},
        {Loot_MAGAZINE,        3,        ItemBandage},
        {Loot_MAGAZINE,        2,        ItemObsidian},  <<----- added gem here
        {Loot_MAGAZINE,        2,        ItemAntibacterialWipe},
        {Loot_MAGAZINE,        3,        ItemDocument}
    };

    ZombieSuitViral[] =
    {
        {Loot_GROUP,        10,        ZombieSuit},
        {Loot_MAGAZINE,        1,        ItemAntibiotic1}
    };
     

    I think these settings only control what loot zeds have on them and % of that loot 

    BUT 

    I trying to increase the chance that zed have loot not what loot they have. 

    =========================

     

    Any help would be appreciated,

    increasing the chance is done by the zombie_generate.sqf like A man mentioned, but you need to make sure that the loot file you change (the one in this quote), is also in your mission file. You might need to change some paths.

×
×
  • Create New...