Jump to content

[Discontinued] Emerald Interior Designer


Recommended Posts

I tried different things now, it doesnt work....

Yes, i have Toolbox, E-Tool and Crowbar in my gear :)

Only thing what iam using in fn_selfactions is selfbloodbag and deploy.

 

You said, "this script avoids using it".

If i understand it correctly, this means: it is not possible to remove any objects while using your script ?

Link to comment
Share on other sites

I have started getting 

13:39:53 Warning Message: You cannot play/edit this mission; it is dependent on downloadable content that has been deleted.
mbg_killhouses
and
13:39:53 Warning Message: You cannot play/edit this mission; it is dependent on downloadable content that has been deleted.
warehouse

Would I just add these to my description.ext?  

Link to comment
Share on other sites

Try editing mission.sqm:

version=11;
class Mission
{
addOns[]=
{
"napf",
"ca_modules_animals",
"dayz_anim",
"dayz_code",
"dayz_communityassets",
"dayz_weapons",
"dayz_equip",
"dayz_epoch",
"dayz_vehicles",
"cacharacters_pmc",
"ca_modules_functions",
"warfarebuildings",
"glt_m300t",
"pook_h13",
"csj_gyroac",
"map_eu",
"jetskiyanahuiaddon",
"warehouse", <---------------
"mbg_killhouses" <-----------
};
Link to comment
Share on other sites

If i understand it correctly, this means: it is not possible to remove any objects while using your script ?

at the current state without third party tools, no.

But if you are using Infistar AH, then read second post on how to remove objects.

 

Alternatively you can use and follow the same second post, as it's the same script that Infistar uses to destroy objects

Link to comment
Share on other sites

I dont use infistar. The Basedestruction Dome script i always implement to my admintools, but that isnt what i want. What i want is that every player can remove his own constructed objects.

 

So you dont have any clue how i could manage this ? It´s the only thing what is badly to my server at the moment :)

Link to comment
Share on other sites

I dont use infistar. The Basedestruction Dome script i always implement to my admintools, but that isnt what i want. What i want is that every player can remove his own constructed objects.

 

So you dont have any clue how i could manage this ? It´s the only thing what is badly to my server at the moment :)

I guess the "repack bike" script in fnselfactions could be reused for this purpose, by making an array of interior items in a public value. I'll look into that when I have more time.

Link to comment
Share on other sites

 

Try editing mission.sqm:

version=11;
class Mission
{
addOns[]=
{
"napf",
"ca_modules_animals",
"dayz_anim",
"dayz_code",
"dayz_communityassets",
"dayz_weapons",
"dayz_equip",
"dayz_epoch",
"dayz_vehicles",
"cacharacters_pmc",
"ca_modules_functions",
"warfarebuildings",
"glt_m300t",
"pook_h13",
"csj_gyroac",
"map_eu",
"jetskiyanahuiaddon",
"warehouse", <---------------
"mbg_killhouses" <-----------
};

 

Not sure why, I'm sure I had killhouses on before but the server doesnt start with those in the mission for some reason :| just spams it even more

Link to comment
Share on other sites

I dont use infistar. The Basedestruction Dome script i always implement to my admintools, but that isnt what i want. What i want is that every player can remove his own constructed objects.

 

So you dont have any clue how i could manage this ? It´s the only thing what is badly to my server at the moment :)

 

add to the bottom of fn_selfActions.sqf:

//delete interior
isEmerald = ["MAP_picture_a","MAP_picture_a_02","MAP_picture_a_03","MAP_picture_a_04","MAP_picture_a_05","MAP_picture_b","MAP_picture_b_02","MAP_picture_c","MAP_picture_c_02","MAP_picture_d","MAP_picture_e","MAP_picture_f","MAP_picture_f_02","MAP_picture_g","MAP_wall_board","MAP_wall_board_02","MAP_wall_board_03","MAP_F_ch_mod_c","MAP_ch_mod_h","MAP_armchair","MAP_ch_mod_h","MAP_ch_office_B","MAP_chair","MAP_Church_chair","MAP_hospital_bench","MAP_kitchen_chair_a","MAP_lavicka_1","MAP_lavicka_2","MAP_lavicka_3","MAP_lavicka_4","MAP_lobby_chair","MAP_office_chair","MAP_F_postel_manz_kov","MAP_F_postel_panelak1","MAP_F_postel_panelak2","MAP_F_Vojenska_palanda","MAP_postel_manz_kov","MAP_postel_panelak1","MAP_vojenska_palanda","MAP_fridge","MAP_Kitchenstove_Elec","MAP_washing_machine","MAP_P_Basin_A","MAP_P_bath","MAP_F_bath","MAP_lekarnicka","MAP_P_sink","MAP_toilet_b","MAP_P_toilet_b_02","MAP_almara","MAP_case_a","MAP_case_bedroom_a","MAP_case_bedroom_b","MAP_case_cans_b","MAP_case_d","MAP_case_wall_unit_part_c","MAP_case_wall_unit_part_d","MAP_case_wooden_b","MAP_Dhangar_borwnskrin","MAP_Dhangar_brownskrin","MAP_Dhangar_knihovna","MAP_library_a","MAP_shelf","MAP_Skrin_bar","MAP_Skrin_opalena","MAP_Truhla_stara","MAP_briefcase","MAP_Dkamna_bila","MAP_Dkamna_uhli","MAP_F_Dkamna_uhli","MAP_icebox","MAP_mutt_vysilacka","MAP_notebook","MAP_pc","MAP_phonebox","MAP_radio","MAP_radio_b","MAP_satelitePhone","MAP_smallTV","MAP_tv_a","MAP_vending_machine","MAP_lantern","MAP_bucket","MAP_MetalBucket","MAP_FuelCan","MAP_SmallObj_money","MAP_conference_table_a","MAP_desk","MAP_Dhangar_psacistul","MAP_F_conference_table_a","MAP_kitchen_table_a","MAP_lobby_table","MAP_office_table_a","MAP_pultskasou","MAP_SmallTable","MAP_stul_hospoda","MAP_stul_kuch1","MAP_Table","MAP_table_drawer"];
_isEmeraldItem = (typeOf cursorTarget) in isEmerald;
_emeraldTarget = typeOf cursorTarget;

if((_isEmeraldItem) and _canDo) then {
if (s_player_removeEmerald < 0) then {
        s_player_removeEmerald = player addaction [format[("<t color=""#ff0000"">" + ("Remove %1") +"</t>"),_emeraldTarget],"interior\remove.sqf",_emeraldTarget];
    };
} else {
    player removeAction s_player_removeEmerald;
    s_player_removeEmerald = -1;
};

create interior\remove.sqf:

private ["_isEmeraldItem","_emeraldTarget","_objectID","_objectUID","_objD","_findNearestPoles","_findNearestPole","_nearestPole","_ownerID","_friendlies"];
_emeraldTarget = cursorTarget;
_isEmeraldItem = (typeOf _emeraldTarget) in isEmerald;
_proceed = true;

_findNearestPoles = nearestObjects[player, ["Plastic_Pole_EP1_DZ"], 30];
_findNearestPole = [];
{if (alive _x) then {_findNearestPole set [(count _findNearestPole),_x];};} foreach _findNearestPoles;

_IsNearPlot = count (_findNearestPole);

if(_IsNearPlot >= 1) then {
	_proceed = false;
	_nearestPole = _findNearestPole select 0;

	// Find owner
	_ownerID = _nearestPole getVariable["CharacterID","0"];
	
	// check if friendly to owner
	if(dayz_characterID != _ownerID) then {

		_friendlies		= player getVariable ["friendlyTo",[]];
		// check if friendly to owner
		if(!(_ownerID in _friendlies)) then {
			_proceed = false;
			} else {
			_proceed = true;
		};
		} else {
		_proceed = true;
	};
};

if (!_proceed) then { 
// player is not an owner
    cutText [format["Plotpole nearby."], "PLAIN DOWN"];
} else {
	if (_isEmeraldItem) then {
	// player is looking at a object and the target has a object classname
	// delete it first to avoid player changing to another target
		_objD = typeOf cursorTarget;
		_objectID = cursorTarget getVariable["CharacterID","0"];
		_objectUID	= cursorTarget getVariable ["ObjectUID","0"];
		PVDZE_obj_Delete = [_objectID,_objectUID,player];
		publicVariableServer "PVDZE_obj_Delete";
		_emeraldTarget setDamage 1;
		deletevehicle cursorTarget; 
		player removeAction s_player_removeEmerald;
		player playActionNow "Medic";
		r_interrupt = false;
		_dis=10;
		_sfx = "repair";
		[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
		[player,_dis,true,(getPosATL player)] spawn player_alertZombies;
		sleep 6;
		cutText [format["Deleted %1", _objD], "PLAIN DOWN"];
		r_interrupt = false;
		player switchMove "";
		player playActionNow "stop";
	} else {
		// player is not looking at object, or target does not have a object classname
		cutText [format["You have to be facing the object you are removing"], "PLAIN DOWN"];
	};
};

EDIT: works as intended now

EDIT2: added plotpole, should imitate epoch now

Edited by raymix
Link to comment
Share on other sites

Nice ! You get figured out a way to remove the interior buildings ?! :)

Great, i will try this.

My primary problem i have fixed now. The reason was a wrong player_build.sqf with dependence to "TIE PlayerUID to all modular buildings". Oh my god, anyway at any time i have uploaded the wrong player_build and i dont have noticed that. lol

 

But now i will try to get your remove for interior working :)

I will report you if it works for me !

Link to comment
Share on other sites

 

Emerald mod its very cool! THX!
But i sinck need use all gemstons, use obsidian for office, topaz for  external objects.
1 stoune not good for economy and interest games

 

It depends on the way you run your economy. For my servers these are very rare, but if you want, you can include all gems.

All you need to do really, is change extra_rc and create switch for spawn.sqf

Link to comment
Share on other sites

Lots of bugs in new version...

 

If you place Map_concrete_block, your player stands in the middle of the block, causes him to die cause of glitching. The block must be build in front of him, not around him! B)

Removing of antenna or the Map_concrete_block doesn't work, no remove trigger. Maybe it depends on the item class? Cause same items build in editor i also cannot remove, also with infistar direct remove function :o

 

Great work at all, but cannot implement new version, cause of thes bugs^^

Link to comment
Share on other sites

@aaaman:

I didn't check all the items. For now, just exclude those glitched in the items.sqf, as this game doesn't normally support spawning items like that and it's beyond my knowledge on how to define custom "snap points"

Infistar's direct delete will not work on any of these items after restart, thats why you use F4 dome remove (second post)

Some of items like snowman can't be even clicked in Arma's own editor, the only way to remove it - is to use dome, ofc.

 
Link to comment
Share on other sites

     1. extract ui_selectSlot.sqf from dayz_code.pbo to scripts\

     2. extract compiles.sqf from dayz_code.pbo to scripts\

     3. change in init.sqf:

 

​this:

​call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf"; //Compile regular functions

change to:

call compile preprocessFileLineNumbers "scripts\compiles.sqf"; //Compile regular functions

     4. in compiles.sqf:

 

this:

player_selectSlot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\ui_selectSlot.sqf";

change to:

player_selectSlot = compile preprocessFileLineNumbers "scripts\ui_selectSlot.sqf";

     5. in  ui_selectSlot.sqf:

 

add this:

       // Add extra context menus
_erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _item);
        _erc_numActions = (count _erc_cfgActions);
        if (isClass _erc_cfgActions) then {
                for "_j" from 0 to (_erc_numActions - 1) do 
                        {
                        _menu =  _parent displayCtrl (1600 + _j + _numActions);
                        _menu ctrlShow true;
                        _config =  (_erc_cfgActions select _j);
                        _text =  getText (_config >> "text");
                        _script =  getText (_config >> "script");
                        _height = _height + (0.025 * safezoneH);
_compile =  format["_id = '%2' %1;",_script,_item];
                        uiNamespace setVariable ['uiControl', _control];


                        _menu ctrlSetText _text;
_menu ctrlSetTextColor [1,0.25,0.25,1];
                        _menu ctrlSetEventHandler ["ButtonClick",_script];


                };
        };

after this:

_menu ctrlSetText format[_type,_name];
_menu ctrlSetEventHandler ["ButtonClick",_compile];};

     6. add this very buttom in description.ext:

#include "scripts\extra_rc.hpp"
Link to comment
Share on other sites

@david: Thank you! Also thanks for the remote key script, really good idea.

@Imapper: yeah I am running this on both Cerno and Panthera

@F507DMT: I will be updating the list of objects that needs to be removed today.

Link to comment
Share on other sites

Figured out better solution to object placement:

 

inside of spawn.sqf find this line:

_offset = [0,1.5,0];

change it to 

_offset = [0,3.5,0];

This will simply offset the location of object spawned away from your character by 2 meters (1.5m + 2m = 3.5m)

Here's some pictures of examples:

Map_kasna_new

MAP_pumpa

 

I will update spawn.sqf as soon as I figure out how to add height limit in response to ladders video

 

@F507DMT: it wont work, it involves adding extra @addon of objects with reduced alpha and collision removed

 

edit: fixed distance bug, it was a typo, updating spawn.sqf from first post. Thanks for your bug reports, guys, much appreciated.

Edited by raymix
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...