Jump to content

#SEM - Simple Epoch Missions v0.8.1 + 0.8.3 test


KiloSwiss

Recommended Posts

Hi folks. Very new to this, just got a server hosted by gtx and been working/learning to try to get various mods etc working.  

Managed to get Ryans Zombies going and having played on a few servers with SEM running wanted to add it onto mine too.  

 

BUT  i'm having a really hard time with it. Mainly Battleye I think.  I followed a process to install and run as follows :  

- Downloaded and installed to the server mission file Kiloswiss' 0.8.3 linked on the first post

-  then added the pbo where instructed in He-Man's updates from the previous post.  

 

Is this the correct way to do it?  (cant find a full install instructions / guide as 0.8.1, the last one to include full instructions apparently, isn't on Github anymore).  Doing it the way I have above seems to load the mod sucessfully according to the server log but kicks any player for Battleye restrictions, of which I cant figure out,as mentioned, because I have no guide similar to what was included with Ryans Zombies.

 

A wee pointer in the right direction would be much appreciated, Thanks in advance

 

Link to comment
Share on other sites

@zxbutchxz

Okay, found it. I have disabled them (because I had no need for them).

Could you please replace at the bottom of "fn_semInit.sqf":

Spoiler

    [
        [SEM_staticMissions, SEM_staticMissionsPath ,"static"]
    ] call SEM_fnc_missionController;

 

with:

[
    [SEM_staticMissions, SEM_staticMissionsPath ,"static"],
    [SEM_dynamicMissions, SEM_dynamicMissionsPath ,"dynamic"]
] call SEM_fnc_missionController;

If it works, I will update the files.

Link to comment
Share on other sites

17 hours ago, He-Man said:

@zxbutchxz

Okay, found it. I have disabled them (because I had no need for them).

Could you please replace at the bottom of "fn_semInit.sqf":

  Reveal hidden contents

    [
        [SEM_staticMissions, SEM_staticMissionsPath ,"static"]
    ] call SEM_fnc_missionController;

 

with:

[
    [SEM_staticMissions, SEM_staticMissionsPath ,"static"],
    [SEM_dynamicMissions, SEM_dynamicMissionsPath ,"dynamic"]
] call SEM_fnc_missionController;

If it works, I will update the files.

Great. I'll check it out tonight.

OK. I did everything. All missions work perfectly. Once again many thanks

Link to comment
Share on other sites

On 27.3.2017 at 3:37 PM, He-Man said:

Based on the original SEM-Script, I made a lot of changes and uploaded it.

I hope it is okay for @KiloSwiss.

I have left his signature in this files and only added my "updated" signature to them.

  • Added a wait until Epoch Server is completely running
  • Supports now E3DEN + M3-Editor position exports
  • Marker and notifications no longer needs client side codes
  • Added Bandit Camp #4
  • Complete rewritten loot script (scripts\fn_crateLoot.sqf)
  • Other smaller fixes / changes (don't remember all)

There are no Client side changes needed anymore. You only need the Serverside pbo.

https://github.com/Ignatz-HeMan/SEM

Updated:

  • Fixed: Dynamic missions were broken, also if in Config activated
  • Added: Some Options to Bandit Device (sem\missionsStatic\bDevice.sqf)
    • Alarm x minutes after mission start, if AI's not killed
    • Big explosions with damaged Buildings and Earthquake within x meter from Device
  • Fixed: A small bug in loot script
Link to comment
Share on other sites

Hi He-Man,

I'm using your latest unmodified sem.pbo but am getting the following repeated spam:

Spoiler

waitUntil {uisleep 1; scriptDone _runningMission};
_missionTime = (time ->
23:32:11   Error position: <_runningMission};
_missionTime = (time ->
23:32:11   Error Undefined variable in expression: _runningmission
23:32:11 File sem\scripts\fn_missionController.sqf [SEM_fnc_missionController], line 104
23:32:12 "DAYTIME ADJUSTMENT:: time accel updated to 1; time of day = 8.871"
23:32:12 Error in expression <rker;

Thanks for posting your scripts and keep up the good work!

Link to comment
Share on other sites

I copied the pbo to @epochhive/addons, I get this in the rpt but nothing else and no missions spawn. I have debug on full but get no info.

The last thing I get is this below and no errors.

9:57:10 "#SEM INIT: Initialize Simple Epoch Missions"

Link to comment
Share on other sites

2 minutes ago, He-Man said:

Can you pastebin me your fn_semInit and sem_config?

sem_config.sqf

Spoiler

/*
    SEM - "Simple Epoch Missions" configuration file
    By KiloSwiss
*/
/*
    Update 27.03.2017
    By [Ignatz] He-Man
*/

    /* Mission start/timer settings */
    
SEM_MinPlayerStatic     = 1;        // Minimum number of online players for basic missions to spawn.
SEM_MinPlayerDynamic     = 1;         // Minimum number of online players for additional/parallel running missions.
SEM_MaxPlayers             = 40;

SEM_TimerStart            = 5;        // Minutes to start first Mission.

SEM_MissionTimerMin     = 10;        // Minimum minutes between missions.
SEM_MissionTimerMax     = 20;        // Maximum minutes between missions.

/* Reward/punish settings */
SEM_reward_AIkill         = true;        // Defines if players get some Krypto as reward for each AI they kill.
SEM_punish_AIroadkill     = true;        // Defines if players should be punished for killing AI units by driving them over with cars.
SEM_damage_AIroadkill     = true;        // Defines if the players car should be damaged when driving over an AI unit.
SEM_Krypto_AIroadkill     = 20;        // How much Krypto will be removed by punishing players for AI roadkills.


/* Advanced mission settings */

// Minutes after a finished mission where all mission objects (including AI) will be deleted.
SEM_MissionCleanup         = 10;        // 0 or -1 equals never.
    
// Allow captured Vehicles do be permanent (saved to Database).
SEM_permanentVehicles     = true;    // true or false

// Chance of AI dropping their guns and keeping their gear (vests, backpacks and magazines) when killed.
SEM_AIdropGearChance     = 40;        //    Values: 0-100%    Where 0 means all gear gets removed from dead AI units.

// Disable Damage over a specific distance so players can't snipe the mission AI from safe distance.
SEM_AIdisableSniperDamage = false;    // Set to false to allow sniper damage from any distance.
SEM_AIsniperDamageDistance = 700;    // Max. distance (in meters) where AI takes damage (min. 300 -  max. 1000).


    /* ################# */            /* ################# */            /* ################# */
    /* Advanced settings */            /* Advanced settings */            /* Advanced settings */
    /* ################# */            /* ################# */            /* ################# */


SEM_removeWeaponsFromDeadAI = [];    // Weapons that should be removed from killed AI
SEM_removeMagazinesFromDeadAI = [];    // Magazines that should be removed from killed AI

//Marker Names where mission spawning is blocked.
SEM_blockMarker =     [
//                        "respawn_west"
                    ];
SEM_blockPos =        [
                        [6717,19562,25],
                        [19375,17620,25],
                        [13323,14500,25],
                        [9275,10857,25],
                        [19359,9696,25]
                    ];

    /* Static Missions */
SEM_staticMissionsPath = "sem\missionsStatic\";
SEM_staticMissions = [
    ["bSupplyCrash",    "Supply Van",        45,    15,        2,    false],
    ["bPlaneCrash",        "Plane Crashsite",    45,    15,        2,    false],
    ["bHeliCrash",        "Heli Crashsite",    45,    15,        2,    false],
    ["bCamp_big",        "Bandit Base",        60,    50,        3,    false],
    ["bCamp_small",        "Bandit Camp",        70,    50,        3,    false],
    ["bDevice",            "Strange Device",    45,    15,        2,    false]
    /* example */
/*    ["file name",        "marker name",        -1,    -1,        5,    false]    //NO COMMA AT THE LAST LINE!
     1.                    2.                    3.    4.        5.    6.

    1. "file name"      MUST be equal to the sqf file name!
    2. "marker name"     Name of the mission marker.
    3. time out,        (Number) Minutes until running mission times out (0 or -1 equals no mission time out).
    4. probability        (Number) Percentage of probability how often a mission will spawn: 1 - 100 (0 and -1 equals OFF).
    5. danger level        (Number) Color for the mission marker (0=white, 1=yellow, 2=orange, 3=red, 4=violet, 5=black)
    6. static/dynamic    Use dynamic (true) for convoys and static (false) for stationary missions.
*/
];

    /* Dynamic Missions */
SEM_dynamicMissionsPath = "sem\missionsDynamic\";
SEM_dynamicMissions = [
    ["convoySupply",    "Supply Convoy",    90,    15,    0,    true],
    ["convoyRepair",    "Repair Convoy",    90,    15,    1,    true],
    ["convoyStrider",    "Strider Convoy",    90,    15,    2,    true],
    ["convoyWeapon",    "Weapon Convoy",    90,    50,    3,    true]    //NO COMMA AT THE LAST LINE!
/*     1.                    2.                    3.    4.    5.    6.

    1. "file name"      MUST be equal to the sqf file name!
    2. "marker name"     Name of the mission marker.
    3. time out,        (Number) Minutes until running mission times out (0 or -1 equals no mission time out).
    4. probability        (Number) Percentage of probability how often a mission will spawn: 1 - 100 (0 and -1 equals OFF).
    5. danger level        (Number) Colour for the mission marker (0=white, 1=yellow, 2=orange, 3=red, 4=violet, 5=black)
    6. static/dynamic    Use dynamic (true) for convoys and static (false) for stationary missions.
*/
];


SEM_debug = "log"; // Valid values: "off", "log" and "full" or 0, 1 and 2.
/*Debug settings explained:

    0 or "off"    = Debug is off
        - This is the default setting.
    
    1 or "log"    = Only additional logging is active.
        - For debugging and proper error reports, please activate this!
        - Any RPT submitted for bug reports with debug off will be ignored!

    2 or "full"    = Many settings are changed + additional logging is active.
        - Missions time out after 10min.
        - Minimum players is set to 0 (for both static and dynamic missions).
        - Time between missions is 30sec.
        - Mission clean up happens after 2min.
        - AI only takes damage from below 100m.
        - More events and additional data is logged to the .rpt.
*/

/* DO NOT EDIT BELOW THIS LINE */
/**/SEM_config_loaded = true;/**/

fn_semInit.sql

Quote

/*
    SEM - "Simple Epoch Missions" configuration file
    By KiloSwiss
*/
/*
    Update 27.03.2017
    By [Ignatz] He-Man
*/
[] spawn {
    diag_log "#SEM INIT: Waiting for Epoch Server Ready ...";
    waituntil {!isnil "EPOCH_SERVER_READY"};
    diag_log "#SEM INIT: Epoch Server is ready... SEM waiting more 10s to start ...";
    uisleep 10;
    diag_log "#SEM INIT: Initialize Simple Epoch Missions";

    private ["_handle","_end"];
    _handle = execVM "sem\sem_config.sqf";
    waitUntil {isNull _handle};
    diag_log "#SEM: Loaded settings.";

    if ((typeName SEM_debug) isEqualTo "SCALAR") then {
        SEM_debug = (switch(round SEM_debug)do{
            case 0:{"off"};
            case 1:{"log"};
            case 2:{"full"};
            default{"log"};
        });
    };
    if !(SEM_debug in ["off","log","full"]) then {
        SEM_debug = "log"
    };

    if (SEM_debug in ["log","full"]) then{
        SEM_version = getText(configFile >> "CfgPatches" >> "sem" >> "SEM_version");
        diag_log format ["#SEM Version %1 is running on %2 %3 version %4 [%5] %6 branch.",
        SEM_version,
        (productVersion select 1),
        str(if(isDedicated)then[{"dedicated server"},{if(hasInterface)then[{if(isServer)then[{"localhost"},{"client"}]},{"headless client"}]}]),
        str(floor((productVersion select 2)/100)) + "." + str((productVersion select 2)-((floor((productVersion select 2)/100))*100)),
        str(productVersion select 3),
        (productVersion select 4)];
    };

        /* Set up variables */

    SEM_MinPlayerStatic = (if(isMultiPlayer)then[{1 max SEM_MinPlayerStatic},{0}]);
    SEM_MinPlayerDynamic = (if(isMultiPlayer)then[{1 max SEM_MinPlayerDynamic},{0}]);
    SEM_MissionTimerMin = 1 max SEM_MissionTimerMin;
    SEM_MissionTimerMax = 1 max SEM_MissionTimerMax;
    SEM_MissionCleanup = -1 max SEM_MissionCleanup;
    if(SEM_MissionTimerMin > SEM_MissionTimerMax)then{
        private "_tempValueHolder";
        _tempValueHolder = SEM_MissionTimerMax;
        SEM_MissionTimerMax = SEM_MissionTimerMin;
        SEM_MissionTimerMin = _tempValueHolder;
    };

    SEM_Krypto_AIroadkill = 1 max (abs SEM_Krypto_AIroadkill);

    {if !(_x in SEM_removeWeaponsFromDeadAI)then{SEM_removeWeaponsFromDeadAI pushBack _x}}forEach ["launch_RPG32_F","Srifle_GM6_F","Srifle_LRR_F","m107_EPOCH","m107Tan_EPOCH"];
    {if !(_x in SEM_removeMagazinesFromDeadAI)then{SEM_removeMagazinesFromDeadAI pushBack _x}}forEach ["RPG32_F","RPG32_HE_F","5Rnd_127x108_Mag","5Rnd_127x108_APDS_Mag","7Rnd_408_Mag"];
    SEM_AIdropGearChance = 0 max SEM_AIdropGearChance min 100;
    SEM_AIsniperDamageDistance = 300 max SEM_AIsniperDamageDistance min 1000;
    SEM_AIsniperDamageEHunits = [];

    if(SEM_debug isEqualTo "full")then{ /* Load debug settings */
        SEM_MinPlayerStatic = 0;
        SEM_MinPlayerDynamic = 0;
        SEM_MissionCleanup = 2;
        SEM_AIdisableSniperDamage = true; SEM_AIsniperDamageDistance = 100;
        [] spawn {
            SEM_version = SEM_version + " - DEBUG IS ON!";
            while{true}do{publicVariable "SEM_version"; UIsleep 180};
        };
    }else{publicVariable "SEM_version"; UIsleep 30};

    SEM_worldData = call SEM_fnc_getWorldData;
    if(SEM_debug in ["log","full"])then{diag_log format["#SEM DEBUG: World Data received. Counting %1 locations on island %2", count (SEM_worldData select 2), str worldName]};

    publicVariable "SEM_AIsniperDamageDistance";
    SEM_lastMissionPositions = [];
    SEM_MissionID = 0;

    if(hasInterface && isServer)then{waitUntil{isPlayer player}};

    SEM_createMissionMarker = {
        private ["_create","_markerPos","_markerID","_markerA","_markerB","_markerC","_markerD","_markerC_Pos","_markerName","_markerColor"];
        _create = _this select 0;
        
        //Create Marker
        if (_create) then {
            _markerPos = _this select 1;
            _markerID = _this select 2;
            _markerName = _this select 3;
            _markerColor = (    
                switch (_this select 4) do {
                    case 0:    {"ColorWhite"};
                    case 1:    {"ColorUNKNOWN"};
                    case 2:    {"ColorOrange"};
                    case 3:    {"ColorEAST"};
                    case 4:    {"ColorCIV"};
                    case 5:    {"ColorBlack"};
                    default    {"Default"};
                }
            );
            _staticMission = (    switch(_this select 5)do{
                                    case "static":    {true};
                                    case "dynamic":    {false};
                                    default    {true};
                                });
            
            
            if (_staticMission)then {    //Static Mission
                _markerA = createMarker [format["SEM_MissionMarkerA_%1", _markerID], _markerPos];
                _markerB = createMarker [format["SEM_MissionMarkerB_%1", _markerID], _markerPos];
                _markerC = createMarker [format["SEM_MissionMarkerC_%1", _markerID], _markerPos];
                
                {    
                    _x setMarkerShape "ELLIPSE";
                    _x setMarkerSize [500,500];
                    _x setMarkerPos _markerPos
                }forEach [_markerA,_markerB];
                
                _markerA setMarkerBrush "Cross";
                _markerA setMarkerColor _markerColor;
                
                _markerB setMarkerBrush "Border";
                _markerB setMarkerColor "ColorRed";
                
                _markerC_Pos = [(_markerPos select 0) - (count _markerName * 15), (_markerPos select 1) - 530, 0];
                _markerC setMarkerShape "Icon";
                _markerC setMarkerType "HD_Arrow";
                _markerC setMarkerColor _markerColor;
                _markerC setMarkerPos _markerC_Pos;
                _markerC setMarkerText _markerName;
                _markerC setMarkerDir 37;
            }
            else {    //Dynamic Mission
                _markerD = createMarker [format["SEM_MissionMarkerD_%1", _markerID], _markerPos];
                _markerD setMarkerShape "Icon";
                _markerD setMarkerType "mil_circle";    //"HD_Destroy";
                _markerD setMarkerColor _markerColor;
                _markerD setMarkerPos _markerPos;
                _markerD setMarkerText _markerName;
            };
        }
        else {    //else delete marker
            _this spawn {
                private ["_endCondition","_deleteMarkerID","_endMissionType"];
                _endCondition = _this select 1;
                _deleteMarkerID = _this select 2;
                _endMissionType = _this select 3;
                
                if(_endCondition == 3)then {
                    {
                        if (getMarkerColor format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID] != "") then {
                            format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID] setMarkerColor "ColorIndependent";
                        };
                    } forEach (
                        if (_endMissionType == "static") then {
                            ["A","B","C"]
                        }
                        else {
                            ["D"]
                        }
                    );
                    sleep 120;
                }
                else {
                    {
                        if (getMarkerColor format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID] != "")then{
                            format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID] setMarkerColor "ColorGrey";
                        };
                    } forEach (if(_endMissionType == "static")then {
                            ["A","B","C"]
                        }
                        else {
                            ["D"]
                        }
                    );
                    uisleep 30;
                };
                
                {        /* Only delete existing Marker */
                    if (getMarkerColor format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID] != "") then {
                        deleteMarker format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID];
                    }
                } forEach (
                    if (_endMissionType == "static") then {
                        ["A","B","C"]
                    }
                    else {
                        ["D"]
                    }
                );
            };    
        };
    };

    SEM_client_updateMissionMarkerPos = {
        private["_updateMarkerID","_updateMarkerPos"];
        _updateMarkerID = _this select 0;
        _updateMarkerPos = _this select 1;

        if (getMarkerColor format["SEM_MissionMarkerD_%1", _updateMarkerID] != "")then{
            format["SEM_MissionMarkerD_%1", _updateMarkerID] setMarkerPos _updateMarkerPos;
        };
    };
    
    SEM_Client_VehDamage = compilefinal "
        private ['_vk','_vP','_s'];
        _vk = _this;
        _vP = vehicle player;
        if (!local _vk) exitWith {};
        if (_vk != _vP) exitWith {};
        {
            _vk setHitIndex [_forEachIndex,((_vk getHitIndex _forEachIndex)+(0.15+(random 0.15)))];
        } forEach ((getAllHitPointsDamage _vk) param [0,[]]);
    ";
    SEM_Client_GlobalHint = compilefinal "
        _this spawn {
            if (isnil 'SEM_lastEvent') then {
                SEM_lastEvent = 0;
            };
            waitUntil {
                if(time - SEM_lastEvent > 20) exitwith {
                    SEM_lastEvent = time;
                    true
                };
                false
            };
            _sound = _this select 0;
            switch(_sound)do{
                case 0:{playSound 'UAV_05'};
                case 1:{playSound 'UAV_01'};
                case 2:{playSound 'UAV_04'};
                case 3:{playsound 'UAV_03'};
            };
            hint parseText format['%1', _this select 1];
        };
    ";
    publicvariable 'SEM_Client_VehDamage';
    publicvariable 'SEM_Client_GlobalHint';
    
    [
        [SEM_staticMissions, SEM_staticMissionsPath ,"static"],
        [SEM_dynamicMissions, SEM_dynamicMissionsPath ,"dynamic"]
    ] call SEM_fnc_missionController;
};

 

Link to comment
Share on other sites

Hmm can't find any problems.
You can try:
init:

Spoiler

    _handle = execVM "sem\sem_config.sqf";
    waitUntil {isNull _handle};
    _null = call compile preprocessfilelinenumbers "sem\sem_config.sqf";

sem_config:

Spoiler

...

/* DO NOT EDIT BELOW THIS LINE */
/**/SEM_config_loaded = true;/**/

true

 

Link to comment
Share on other sites

no older SEM. I do have VEMF running but that's it. I ran the stock PBO from here and it doesn't work for me.

I used the default PBO with all default, just moved the PBO right over no modifications. It is dated as April 2 2017.

Is there a more recent one?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×
×
  • Create New...