[Help/Discussion] Spectre's SkyWrite

I'm assuming that if I add a vehicle class to the addAction it will allow them to use it in any vehicles as well. Or just use LandVehicle or AllVehicle or w/e it is
 
Here's two others that I threw together, the one for the Ah6X makes a circle of smoke around the heli and the UH1H drops a line of smoke. Same as the skywrite these can be adjusted very easily.
To add them into SWS.sqf
Code:
If (typeOf _x in ["UH1H_DZ"]) then {
_UH1Hss = _x addAction [("<t color=""#949292"">Smoke Line</t>"),"scripts\UH1Hss.sqf","",1,false,true,"","driver _target == player"];
};
If (typeOf _x in ["AH6X_DZ"]) then {
_AH6Xss = _x addAction [("<t color=""#949292"">Smoke Screen</t>"),"scripts\AH6Xss.sqf","",1,false,true,"","driver _target == player"];
};

So your sws.sqf will look like this.
Code:
if (isServer) exitwith {};
waitUntil {sleep 2; count vehicles > 1};
sleep 10;
{
If (typeOf _x in ["AN2_DZ"]) then {
_SkyWrite = _x addAction [("<t color=""#2bc0a7"">Sky Write</t>"),"scripts\SkyWrite.sqf","write",1,false,true,"","driver _target == player"];
};
If (typeOf _x in ["UH1H_DZ"]) then {
_UH1Hss = _x addAction [("<t color=""#949292"">Smoke Line</t>"),"scripts\UH1Hss.sqf","",1,false,true,"","driver _target == player"];
};
If (typeOf _x in ["AH6X_DZ"]) then {
_AH6Xss = _x addAction [("<t color=""#949292"">Smoke Screen</t>"),"scripts\AH6Xss.sqf","",1,false,true,"","driver _target == player"];
};
}forEach (vehicles);





UH1Hss.sqf
Code:
if (speed player < 60) then {
    "SmokeShellGreen" createVehicle (position player);
    sleep .1;
    "SmokeShellGreen" createVehicle (position player);
    sleep .1;
    "SmokeShellGreen" createVehicle (position player);
    sleep .1;
    "SmokeShellGreen" createVehicle (position player);
    sleep .1;
    "SmokeShellGreen" createVehicle (position player);
    sleep .1;
    "SmokeShellGreen" createVehicle (position player);
    sleep .1;
    "SmokeShellGreen" createVehicle (position player);
    sleep .1;
    "SmokeShellGreen" createVehicle (position player);
    sleep .1;
    "SmokeShellGreen" createVehicle (position player);
    sleep .1;
    "SmokeShellGreen" createVehicle (position player);
    sleep .1;
};





AH6Xss.sqf
Code:
private ["_AHsmoke0","_AHsmoke1","_AHsmoke2","_AHsmoke3","_AHsmoke4","_AHsmoke2","_AHsmoke6","_AHsmoke7","_AHsmoke8"];
if (speed player < 60) then  {
    _AHsmoke0 = createVehicle ["SmokeShellYellow", position player, [], 1, "CAN_COLLIDE"];
    _AHsmoke1 = "SmokeShellYellow" createVehicle (position player);
    _AHsmoke1 setPosATL [ (getPosATL _AHsmoke1 select 0) - 2, (getPosATL _AHsmoke1 select 1) + 2, (getPosATL _AHsmoke1 select 2) +1];
    _AHsmoke2 = "SmokeShellYellow" createVehicle (position player);
    _AHsmoke2 setPosATL [ (getPosATL _AHsmoke2 select 0) - 2, (getPosATL _AHsmoke2 select 1), (getPosATL _AHsmoke2 select 2) +1];
    _AHsmoke3 = "SmokeShellYellow" createVehicle (position player);
    _AHsmoke3 setPosATL [ (getPosATL _AHsmoke3 select 0) - 2, (getPosATL _AHsmoke3 select 1) - 2, (getPosATL _AHsmoke3 select 2) +1];
    _AHsmoke4 = "SmokeShellYellow" createVehicle (position player);
    _AHsmoke4 setPosATL [ (getPosATL _AHsmoke4 select 0) + 2, (getPosATL _AHsmoke4 select 1) + 2, (getPosATL _AHsmoke4 select 2) +1];
    _AHsmoke2 = "SmokeShellYellow" createVehicle (position player);
    _AHsmoke2 setPosATL [ (getPosATL _AHsmoke2 select 0) + 2, (getPosATL _AHsmoke2 select 1), (getPosATL _AHsmoke2 select 2) +1];
    _AHsmoke6 = "SmokeShellYellow" createVehicle (position player);
    _AHsmoke6 setPosATL [ (getPosATL _AHsmoke6 select 0) + 2, (getPosATL _AHsmoke6 select 1) - 2, (getPosATL _AHsmoke6 select 2) +1];
    _AHsmoke7 = "SmokeShellYellow" createVehicle (position player);
    _AHsmoke7 setPosATL [ (getPosATL _AHsmoke7 select 0), (getPosATL _AHsmoke7 select 1) + 2, (getPosATL _AHsmoke7 select 2) +1];
    _AHsmoke8 = "SmokeShellYellow" createVehicle (position player);
    _AHsmoke8 setPosATL [ (getPosATL _AHsmoke8 select 0), (getPosATL _AHsmoke8 select 1) - 2, (getPosATL _AHsmoke8 select 2) +1];
};
 
Oh also I'd like to make a timer for those so it's not possible to spam smoke but I can't wrap my head around it. Anyone willing to help?
 
Sorry if this sounds like an outlandish request, but is it possible to spit a message out? Like a mousewheel option for some input text?
 
Sorry if this sounds like an outlandish request, but is it possible to spit a message out? Like a mousewheel option for some input text?
Yeah that's easily possible if I understand you right. Are you asking for a mouse wheel option that gives text only or are you asking for that to be added to this?
 
Yeah that's easily possible if I understand you right. Are you asking for a mouse wheel option that gives text only or are you asking for that to be added to this?

A mouse wheel option as an addition would be the best scenario imho. Best of both worlds. For an added touch of realism; if possible is, make it so you have to SkyWrite to get an SkyText option.
 
Hmm are you saying make it write a message in smoke automatically? If that's the case then I didn't understand you right the first time and I'd have to say it's pretty improbable and not something I'd be willing to attempt. :/ Sorry.
 
Technically I think it would be possible to write a message with smoke without a plane, just using a series of sleeps and setpos but it wouldn't look right if you activate it from a plane. Also it would be quite hard I think :)
 
Technically I think it would be possible to write a message with smoke without a plane, just using a series of sleeps and setpos but it wouldn't look right if you activate it from a plane. Also it would be quite hard I think :)

Hey man, no biggy...I had a feeling it was a lofty request.

Just curious, what did you think I mean? Maybe its something cool...
 
Not really :) I thought you meant make a message show up on screen, like with the hint command. I thought it was strange you'd ask how to do something so simple haha.
 
I haven't tried it after the update, I've got a lot goin on right now and don't have a lot of time so i don't run a server anymore. Can anyone confirm it working with the update? Also let me know exactly what issues you are having please. Are you using the simple version or the updated version with the menu? Post a link to your init.sqf and I'll take a look, there really aren't many places you can go wrong with it. Also please note that you do have to be flying for the updated version to work, it WILL NOT work on the ground. I'm sorry you're having trouble with it.
 
Its ur v1.0 nothing shows up at all. Installed correctly too. Variables were changed with the update also. The server monitor shouldnt need to be changed either. Just execvm at the bottom is all u need.
 
Once again, post your init.sqf and I'll see if there is something wrong, this is one of the simplest things to add as you only need to copy the files and add the line to execute it in your init.sqf. I suggest installing it again following the steps EXACTLY how I have written them, perhaps try the newer version as well. If you don't want to do that then double check the paths for the files. They are written to point to a folder named scripts, if they are in a different folder then you'll need to adjust them. Also nowhere did I say to change anything with the server monitor.
 
heres my init
Code:
startLoadingScreen ["","RscDisplayLoadCustom"];
cutText ["","BLACK OUT"];
enableSaving [false, false];
 
//Server Settings
dayZ_instance = 417; // The instance
//dayZ_serverName = "UK1337"; // Servername (country code + server number)
dayz_antihack = 1; // DayZ Antihack / 1 = enabled // 0 = disabled
dayz_REsec = 0; // DayZ RE Security / 1 = enabled // 0 = disabled
 
//Game Settings
dayz_spawnselection = 0; // DayZ Spawnselection / 1 = enabled // 0 = disabled, No current spawn limits.
dayz_spawnCrashSite_clutterCutter = 1;    // Helicrash Settings / 0 =  loot hidden in grass // 1 = loot lifted // 2 = no grass around the Helicrash
dayz_spawnInfectedSite_clutterCutter = 1; // Infected Base Settings / 0 =  loot hidden in grass // 1 = loot lifted // 2 = no grass around the infected base
 
initialized = false;
dayzHiveRequest = [];
dayz_previousID = 0;
0 fadeSound 0;
//disable greeting menu
//player setVariable ["BIS_noCoreConversations", true];
//disable radio messages to be heard and shown in the left lower corner of the screen
//enableRadio false;
 
//Load in compiled functions
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf";
progressLoadingScreen 0.1;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\publicEH.sqf";                    //Initilize the publicVariable event handlers
progressLoadingScreen 0.2;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\setup_functions_med.sqf";    //Functions used by CLIENT for medical
progressLoadingScreen 0.4;
call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";                    //Compile regular functions
call compile preprocessFileLineNumbers "scripts\compiles.sqf"; //Compile custom compiles
progressLoadingScreen 1.0;
 
stream_locationCheck = {
//Thank you very fucking much, KK!
};
 
"filmic" setToneMappingParams [0.153, 0.357, 0.231, 0.1573, 0.011, 3.750, 6, 4]; setToneMapping "Filmic";
 
disable_sidechat = compile preprocessFileLineNumbers "scripts\nosidechat.sqf";
 
[] spawn {
    while {true} do {
        waitUntil {((isNil "BIS_Effects_Rifle") OR {(count(toArray(str(BIS_Effects_Rifle)))!=7)})};
        diag_log "Res3tting B!S effects...";
        /* BIS_Effects_* fixes from Dwarden */
        BIS_Effects_EH_Killed = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\BIS_Effects\killed.sqf";
        BIS_Effects_AirDestruction = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\BIS_Effects\AirDestruction.sqf";
        BIS_Effects_AirDestructionStage2 = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\BIS_Effects\AirDestructionStage2.sqf";
 
        BIS_Effects_globalEvent = {
            BIS_effects_gepv = _this;
            publicVariable "BIS_effects_gepv";
            _this call BIS_Effects_startEvent;
        };
 
        BIS_Effects_startEvent = {
            switch (_this select 0) do {
                case "AirDestruction": {
                        [_this select 1] spawn BIS_Effects_AirDestruction;
                };
                case "AirDestructionStage2": {
                        [_this select 1, _this select 2, _this select 3] spawn BIS_Effects_AirDestructionStage2;
                };
                case "Burn": {
                        [_this select 1, _this select 2, _this select 3, false, true] spawn BIS_Effects_Burn;
                };
            };
        };
 
        "BIS_effects_gepv" addPublicVariableEventHandler {
            (_this select 1) call BIS_Effects_startEvent;
        };
 
        BIS_Effects_EH_Fired = {false};
        BIS_Effects_Rifle = {false};
        sleep 1;
    };
};
 
if ((!isServer) && (isNull player) ) then
{
    waitUntil {!isNull player};
    waitUntil {time > 3};
};
 
if (isServer) then {
axe_server_lampObjs =    compile preprocessFileLineNumbers "scripts\fnc_returnLampWS.sqf";
    "axeLampObjects" addPublicVariableEventHandler {_id = (_this select 1) spawn axe_server_lampObjs};
};
 
if (!isDedicated) then {
//StreetLights
[] execVM "scripts\street_lights.sqf";
};
 
if ((!isServer) && (player != player)) then
{
    waitUntil {player == player};
    waitUntil {time > 3};
};
 
if (isServer) then {
    _serverMonitor = [] execVM "\z\addons\dayz_code\system\server_monitor.sqf";
    "PVDZ_sec_atp" addPublicVariableEventHandler {
        _x = _this select 1;
        if (typeName _x == "STRING") then {
            diag_log _x;
        }
        else {
            _unit = _x select 0;
            _source = _x select 1;
            if (((!(isNil {_source})) AND {(!(isNull _source))}) AND {((_source isKindOf "CAManBase") AND {(owner _unit != owner _source)})}) then {
                diag_log format ["P1ayer %1 hit by %2 %3 from %4 meters",
                    _unit call fa_plr2Str,  _source call fa_plr2Str, _x select 2, _x select 3];
                if (_unit getVariable["processedDeath", 0] == 0) then {
                    _unit setVariable [ "attacker", name _source ];
                    _unit setVariable [ "noatlf4", diag_ticktime ]; // server-side "not in combat" test, if player is not already dead
                };
            };
        };
    };
};
 
if (!isDedicated) then {
    //Conduct map operations
    waitUntil {!isNil "dayz_loadScreenMsg"};
    dayz_loadScreenMsg = (localize "STR_AUTHENTICATING");
   
    if (!isDedicated) then {
[] execVM "scripts\building_lights.sqf";
};
 
    //Run the player monitor
    _id = player addEventHandler ["Respawn", {_id = [] spawn player_death;}];
    _playerMonitor = [] execVM "\z\addons\dayz_code\system\player_monitor.sqf";
    if (dayz_antihack == 1) then {
    //[] execVM "\z\addons\dayz_code\system\antihack.sqf";
    };
};
 
// Logo watermark: adding a logo in the bottom left corner of the screen with the server name in it
if (!isNil "dayZ_serverName") then {
    [] spawn {
        waitUntil {(!isNull Player) and (alive Player) and (player == player)};
        waituntil {!(isNull (findDisplay 46))};
        5 cutRsc ["wm_disp","PLAIN"];
        ((uiNamespace getVariable "wm_disp") displayCtrl 1) ctrlSetText dayZ_serverName;
    };
};
 
//##UID Based Custom Spawn Locations##
p2_newspawn = compile preprocessFileLineNumbers "scripts\newspawn.sqf";
waitUntil {!isNil ("PVDZ_plr_LoginRecord")};
if (PVCDZ_plr_Login2 select 2) then
{
    player spawn p2_newspawn;
};
 
if (dayz_REsec == 1) then {
 
};
 
[] execVM "scripts\functions.sqf";
[] execVM "scripts\repairactions.sqf";
[] execVM "R3F_ARTY_AND_LOG\init.sqf";
[] execVM "scripts\bridge\bridge.sqf";
[] execVM "scripts\marker.sqf";
[] execVM "scripts\ss_remove.sqf";

tried it again didnt work, this is my backed up version of my init
 
Back
Top