Jump to content

[HOW-TO] Reskin/Retexture Vehicles


Brockie

Recommended Posts

 This is How-to reskin/retexture vehicles.

 

   I do not take credit for any of the script.  I just made a how-to because a few people asked for it.

 

     For advanced user:  This was created after a lot of searching and at least 100 different ways of trial and error.  It's unbelievably simple and I'm sure someone has posted this before but I hope it helps. 

     Features:

  • No noticeable server startup lag. 
  • Easy to install.
  • Works on the fly for purchased vehicles.
  • Works for dynamic vehicles.
  • Works on server restarts.
  • Tested with 7 custom vehicle skins setup on traders and dynamic, worked flawlessly and tested restarts too.

   Credits

  • [VB]AWOL whose postethe proper way to do this.
  • [VB]AWOL + Epoch Dev Team and EpochMod.com community for sharing awesome mods.

   Requirements

  • Custom texture files that are known to work.
  • Ability to edit sqf files
  • PBO Manager
  • Notepad++

   Installation

 

      Step 1.  Get some custom textures and put them in your mission folder somewhere.  Write down the folder structure for future use. For my example textures are in the custom folder in my mission file.

 

 

      Step 2.  Unpack your dayz_server pbo

 

 

      Step 3.  open these three files:  server_publishVehicle2.sqfserver_publishVehicle3.sqf, and server_monitor.sqf

 

 

      Step 4.  In your server_monitor.sqf find this:

			_lockable = 0;
			if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then { 

                   And ABOVE it put this

			if (_type == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\SUV.jpg''];';};

                 Change the Vehicle Classname and the texture pathing for your texture and vehicle.  Keep adding more lines like this for each texture that you need.

 

 

      Step 5. Again in your server_monitor.sqf find this:

	// # END SPAWN OBJECTS #

                   And below it put this:

	processInitCommands; 

      Step 6. In server_publishVehicle2.sqf find this:

	} else {
		_object = createVehicle [_class, _location, [], 0, "CAN_COLLIDE"];
	};

                  And BELOW it put this:

	if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\SUV.jpg''];';};

                 Notice the only difference is _class instead of _type.  Again  keep adding more lines like this for each texture that you need.

 

 

    Step 7.  This Step is for BOTH: server_publishVehicle2.sqf AND server_publishVehicle3.sqf find this:

	publicVariable "PVDZE_veh_Init";

                And BELOW it put this:

	processInitCommands;

    Step 8.  Now in server_publishVehicle3.sqf find this:

	//Add weapons
	_objWpnTypes = 	_weapons select 0;
	_objWpnQty = 	_weapons select 1;

               And ABOVE it put this:

	if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\SUV.jpg''];';};

               It's the same line from server_publishVehicle2.sqf  with _class instead of _type.  again repeat more lines exactly like this for more textures.

 

 

     Step 9.  Save Changes and Repack PBO

 

 

   Congrats your done!

 

Note:  This could also be done by creating a function and then calling the function from each file, i think....  but I prefer to do it this way.

Link to comment
Share on other sites

 

Sniped link per report, BTW, This is not anything new I just helped someone on our Teamspeak the other day with the same exact functions.

https://community.bistudio.com/wiki/setObjectTexture

combined with:
https://community.bistudio.com/wiki/setVehicleInit

and 
https://community.bistudio.com/wiki/processInitCommands

 

Will give you JIP compatible texture replacements if the vehicle is setup for it.
 

Add this on line https://github.com/vbawol/DayZ-Epoch/blob/master/SQF/dayz_server/system/server_monitor.sqf#L126 change the ANYCLASS to your vehicle class and the texture path to that of a paa file in your mission pbo.

if (_type == "ANYCLASS") then {_object setVehicleInit "this setObjectTexture [0, "\pboname\texture.paa"];"};

Also add 

processInitCommands;

here: https://github.com/vbawol/DayZ-Epoch/blob/master/SQF/dayz_server/system/server_monitor.sqf#L261

 
Link to comment
Share on other sites

I had this for awhile but was never able to get more than one custom texture.

could you give sample code for 2 or more custom textures ?

 

Excuse me for the harsh tone good sir, but these extends are nothing compared to the basics of this script.

Link to comment
Share on other sites

Examples of having multiple textures..

 

Server monitor:

			if (_type == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\SUV.jpg''];';};
			if (_type == "ATV_US_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\ATV.jpg''];';};

publish vehiles:

	if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\SUV.jpg''];';};
	if (_class == "ATV_US_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\ATV.jpg''];';};

Enjoy  :D

Link to comment
Share on other sites

I was trying  2 this way

switch (_type) do 
{
   case "SUV_pink": {_object setVehicleInit "this setObjectTexture [0, ""custom\skins\skin1.jpg""]"; processInitCommands;};
   case "SUV_orange": {_object setVehicleInit "this setObjectTexture [0, ""custom\skins\skin2.jpg""]"; processInitCommands;};

Thankz alot for your help

Link to comment
Share on other sites

Don't work , pleas help 

My server_monitor http://pastebin.com/nG7Lse90

server_publishVehicle2.sqf http://pastebin.com/W1FL5knB

server_publishVehicle3.sqf http://pastebin.com/8Zh8cs9G

 

YOU DID:

                        _lockable = 0;
                        if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then {
                        if (_type == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suv.jpg''];';};
                        if (_type == "SUV_Camo") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suv1.jpg''];';};
                        if (_type == "ArmoredSUV_PMC_DZE") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suv2.jpg''];';};            

What Brockie told you to do:

Step 4.  In your server_monitor.sqf find this:

_lockable = 0;
if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then {

And ABOVE it put this

if (_type == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\SUV.jpg''];';};

If you cant figure this, take a few steps backwards and come back with the requested (minor) understanding to implement this ;)

Link to comment
Share on other sites

YOU DID:

                        _lockable = 0;
                        if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then {
                        if (_type == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suv.jpg''];';};
                        if (_type == "SUV_Camo") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suv1.jpg''];';};
                        if (_type == "ArmoredSUV_PMC_DZE") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suv2.jpg''];';};            

What Brockie told you to do:

Step 4.  In your server_monitor.sqf find this:

_lockable = 0;
if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then {

And ABOVE it put this

if (_type == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\SUV.jpg''];';};

If you cant figure this, take a few steps backwards and come back with the requested (minor) understanding to implement this ;)

thanks my problem solved and reskin work 

Link to comment
Share on other sites

@Brockie

 

I wonder if you can retexture other objects almost similar like vehiles, such as Clothings/Buildables.

Gave it a shot with epoch cinder walls, didnt work (i thought they get handled like vehicles).

 

Edit: This probably has do be done in server_publishObject.sqf, also with processInitCommands;

Im just a little stucked if i "can" or "should" use setObjectInit (found "some" arma references for it) or rather setVehicleInit ...

Link to comment
Share on other sites

good question.  technically everything in arma is a vehicle, so I would start with that.  if it didnt work then I would try using object.  Getting this to work took for me took a long time of searching and trial and error.  Unfortunately, at the moment I'm pressed on time but maybe later I might be interested in trying this later.

Link to comment
Share on other sites

Dont stress about it, i thought it might just looks more fresh if we could replace the wall/floor textures with more sexy ones :)

Then there would be a way to paint them as users desire ...

 

Features which should have been there since the beginning of epoch :D

It really is awesome what this community can establish. If this works out then im gonna add a scroll menu to paint walls for some gold.

Or maybe just to "upgrade them to final stage", so they look like real walls, not those unfinished grey cubes and towers anywhere.

 

I believe i can use the maintain variables that for .. since buildings on my server are always permanent and indestructible ...

Link to comment
Share on other sites

Hello,  I believe everything is correct.  However I cannot get them to load.

 

dayz_server\system\server_monitor.sqf

http://pastebin.com/yPRRHMDb

 

dayz_server\compile\server_publishVehicle2

http://pastebin.com/um1p6kVp

 

dayz_server\compile\server_publishVehicle3

http://pastebin.com/b45QQtbU

 

when I spawn the SUV_TK_CIV_EP1  I just get the standard SUV.  

I realized that I derped and assigned all textures to the same vehicle class.  Would this be the cause?  Or should something still load?

 

I am using the textures from your referrer 

In his RAR file is a PNG amongst the jpg's.  I am not certain if that one should be excluded.

Also - The images - do they go into the dayz_server/custom folder - or the MPMissions/Dayz_epoch11.Chernarus/custom ?   

 
Any help is appreciated.   Thank you so much for your time - I realize it must have been a bit of work to create this mod, so much appreciated !
Link to comment
Share on other sites

Armored SUV does not work with this.

 

And yes. if you pull in multiple skins for one class, it will break.
You are one genius arnt you? would you take a minute to figure yourself, instead you prepare a question post which costs you at least 5 minutes.

 

@2sugars

 

Nice one, but seems a little dirty on edges. Do you use custom player skins in your profile folder?

Link to comment
Share on other sites

Armored SUV does not work with this.

 

And yes. if you pull in multiple skins for one class, it will break.

You are one genius arnt you? would you take a minute to figure yourself, instead you prepare a question post which costs you at least 5 minutes.

 

Thank you Mark,   - I like to be well documented.  

The reason why I spent 5 minutes to prepare the post was for two reasons.

One : To verify if in fact having the same classnames would break it.

Two : If it didn't  Was there something else wrong.

Third - I cannot start / stop my server when it's full to test it.

And lastly - to get some input on the textures I was using.

The jpg's and PNG.  Do they go into the dayz_server/custom folder - or the MPMissions/Dayz_epoch11.Chernarus/custom ?   

 

Thank you for the mod Brockie !!

Link to comment
Share on other sites

I'll install the paa plugin into photoshop and give it a go.

 

So basically I use either one or the other scripts you posted and put whichever one I want to use into "admin_start.sqf"

From there - execute it through ALT+F11 in Infistar ( after logging in via #login mypassword ) 

 

What happens from here?    

 

If you are making it a permanent change, would it be easy for you to add in a selection, so I can choose which one of my textures to apply?

 

Thanks for the script and all your help.  Much appreciated !

Link to comment
Share on other sites

server_monitor.sqf


private ["_nul","_result","_pos","_wsDone","_dir","_isOK","_countr","_objWpnTypes","_objWpnQty","_dam","_selection","_totalvehicles","_object","_idKey","_type","_ownerID","_worldspace","_intentory","_hitPoints","_fuel","_damage","_key","_vehLimit","_hiveResponse","_objectCount","_codeCount","_data","_status","_val","_traderid","_retrader","_traderData","_id","_lockable","_debugMarkerPosition","_vehicle_0","_bQty","_vQty","_BuildingQueue","_objectQueue","_superkey","_shutdown","_res","_hiveLoaded"];
 
dayz_versionNo = getText(configFile >> "CfgMods" >> "DayZ" >> "version");
dayz_hiveVersionNo = getNumber(configFile >> "CfgMods" >> "DayZ" >> "hiveVersion");
 
_hiveLoaded = false;
 
waitUntil{initialized}; //means all the functions are now defined
 
diag_log "HIVE: Starting";
 
waituntil{isNil "sm_done"}; // prevent server_monitor be called twice (bug during login of the first player)
 
// Custom Configs
if(isnil "MaxVehicleLimit") then {
MaxVehicleLimit = 50;
};
 
if(isnil "MaxDynamicDebris") then {
MaxDynamicDebris = 100;
};
if(isnil "MaxAmmoBoxes") then {
MaxAmmoBoxes = 3;
};
if(isnil "MaxMineVeins") then {
MaxMineVeins = 50;
};
// Custon Configs End
 
if (isServer && isNil "sm_done") then {
 
serverVehicleCounter = [];
_hiveResponse = [];
 
for "_i" from 1 to 5 do {
diag_log "HIVE: trying to get objects";
_key = format["CHILD:302:%1:", dayZ_instance];
_hiveResponse = _key call server_hiveReadWrite;  
if ((((isnil "_hiveResponse") || {(typeName _hiveResponse != "ARRAY")}) || {((typeName (_hiveResponse select 1)) != "SCALAR")})) then {
if ((_hiveResponse select 1) == "Instance already initialized") then {
_superkey = profileNamespace getVariable "SUPERKEY";
_shutdown = format["CHILD:400:%1:", _superkey];
_res = _shutdown call server_hiveReadWrite;
diag_log ("HIVE: attempt to kill.. HiveExt response:"+str(_res));
} else {
diag_log ("HIVE: connection problem... HiveExt response:"+str(_hiveResponse));
 
};
_hiveResponse = ["",0];
else {
diag_log ("HIVE: found "+str(_hiveResponse select 1)+" objects" );
_i = 99; // break
};
};
 
_BuildingQueue = [];
_objectQueue = [];
 
if ((_hiveResponse select 0) == "ObjectStreamStart") then {
 
// save superkey
profileNamespace setVariable ["SUPERKEY",(_hiveResponse select 2)];
 
_hiveLoaded = true;
 
diag_log ("HIVE: Commence Object Streaming...");
_key = format["CHILD:302:%1:", dayZ_instance];
_objectCount = _hiveResponse select 1;
_bQty = 0;
_vQty = 0;
for "_i" from 1 to _objectCount do {
_hiveResponse = _key call server_hiveReadWriteLarge;
//diag_log (format["HIVE dbg %1 %2", typeName _hiveResponse, _hiveResponse]);
if ((_hiveResponse select 2) isKindOf "ModularItems") then {
_BuildingQueue set [_bQty,_hiveResponse];
_bQty = _bQty + 1;
} else {
_objectQueue set [_vQty,_hiveResponse];
_vQty = _vQty + 1;
};
};
diag_log ("HIVE: got " + str(_bQty) + " Epoch Objects and " + str(_vQty) + " Vehicles");
};
 
// # NOW SPAWN OBJECTS #
_totalvehicles = 0;
{
_idKey = _x select 1;
_type = _x select 2;
_ownerID = _x select 3;
 
_worldspace = _x select 4;
_intentory = _x select 5;
_hitPoints = _x select 6;
_fuel = _x select 7;
_damage = _x select 8;
 
_dir = 0;
 
 
_pos = [0,0,0];
_wsDone = false;
if (count _worldspace >= 2) then
{
_dir = _worldspace select 0;
if (count (_worldspace select 1) == 3) then {
_pos = _worldspace select 1;
_wsDone = true;
}
};
 
if (!_wsDone) then {
if (count _worldspace >= 1) then { _dir = _worldspace select 0; };
_pos = [getMarkerPos "center",0,4000,10,0,2000,0] call BIS_fnc_findSafePos;
if (count _pos < 3) then { _pos = [_pos select 0,_pos select 1,0]; };
diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos));
};
 
_vector = [[0,0,0],[0,0,0]];
_vecExists = false;
_ownerPUID = "0";
if (count _worldspace >= 3) then{
if(count _worldspace == 3) then{
if(typename (_worldspace select 2) == "STRING")then{
_ownerPUID = _worldspace select 2;
}else{
if(typename (_worldspace select 2) == "ARRAY")then{
_vector = _worldspace select 2;
if(count _vector == 2)then{
if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
_vecExists = true;
};
};
};
};
 
}else{
//Was not 3 elements, so check if 4 or more
if(count _worldspace == 4) then{
if(typename (_worldspace select 2) == "STRING")then{
_ownerPUID = _worldspace select 2;
};
 
if(typename (_worldspace select 3) == "ARRAY")then{
_vector = _worldspace select 3;
if(count _vector == 2)then{
if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
_vecExists = true;
};
};
};
}else{
//More than 3 or 4 elements found
//Might add a search for the vector, ownerPUID will equal 0
};
};
};
  
 
 
 
  
// diag_log format["Server_monitor: [ObjectID = %1]  [ClassID = %2] [_ownerPUID = %3]", _idKey, _type, _ownerPUID];
 
if (_damage < 1) then {
//diag_log format["OBJ: %1 - %2", _idKey,_type];
 
//Create it
_object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"];
_object setVariable ["lastUpdate",time];
_object setVariable ["ObjectID", _idKey, true];
_object setVariable ["OwnerPUID", _ownerPUID, true];
 
if (_type  == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suvUSA_overlay.jpg''];';};
 
_lockable = 0;
if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then {
_lockable = getNumber(configFile >> "CfgVehicles" >> _type >> "lockable");
};
 
// fix for leading zero issues on safe codes after restart
if (_lockable == 4) then {
_codeCount = (count (toArray _ownerID));
if(_codeCount == 3) then {
_ownerID = format["0%1", _ownerID];
};
if(_codeCount == 2) then {
_ownerID = format["00%1", _ownerID];
};
if(_codeCount == 1) then {
_ownerID = format["000%1", _ownerID];
};
};
 
if (_lockable == 3) then {
_codeCount = (count (toArray _ownerID));
if(_codeCount == 2) then {
_ownerID = format["0%1", _ownerID];
};
if(_codeCount == 1) then {
_ownerID = format["00%1", _ownerID];
};
};
 
_object setVariable ["CharacterID", _ownerID, true];
 
clearWeaponCargoGlobal  _object;
clearMagazineCargoGlobal  _object;
// _object setVehicleAmmo DZE_vehicleAmmo;
 
_object setdir _dir;
 
if(_vecExists)then{
_object setVectorDirAndUp _vector;
};
 
_object setposATL _pos;
_object setDamage _damage;
 
if ((typeOf _object) in dayz_allowedObjects) then {
if (DZE_GodModeBase) then {
_object addEventHandler ["HandleDamage", {false}];
} else {
_object addMPEventHandler ["MPKilled",{_this call object_handleServerKilled;}];
};
// Test disabling simulation server side on buildables only.
_object enableSimulation false;
// used for inplace upgrades && lock/unlock of safe
_object setVariable ["OEMPos", _pos, true];
 
};
 
if (count _intentory > 0) then {
if (_type in DZE_LockedStorage) then {
// Fill variables with loot
_object setVariable ["WeaponCargo", (_intentory select 0),true];
_object setVariable ["MagazineCargo", (_intentory select 1),true];
_object setVariable ["BackpackCargo", (_intentory select 2),true];
} else {
 
//Add weapons
_objWpnTypes = (_intentory select 0) select 0;
_objWpnQty = (_intentory select 0) select 1;
_countr = 0;
{
if(_x in (DZE_REPLACE_WEAPONS select 0)) then {
_x = (DZE_REPLACE_WEAPONS select 1) select ((DZE_REPLACE_WEAPONS select 0) find _x);
};
_isOK = isClass(configFile >> "CfgWeapons" >> _x);
if (_isOK) then {
_object addWeaponCargoGlobal [_x,(_objWpnQty select _countr)];
};
_countr = _countr + 1;
} count _objWpnTypes; 
 
//Add Magazines
_objWpnTypes = (_intentory select 1) select 0;
_objWpnQty = (_intentory select 1) select 1;
_countr = 0;
{
if (_x == "BoltSteel") then { _x = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow
if (_x == "ItemTent") then { _x = "ItemTentOld" };
_isOK = isClass(configFile >> "CfgMagazines" >> _x);
if (_isOK) then {
_object addMagazineCargoGlobal [_x,(_objWpnQty select _countr)];
};
_countr = _countr + 1;
} count _objWpnTypes;
 
//Add Backpacks
_objWpnTypes = (_intentory select 2) select 0;
_objWpnQty = (_intentory select 2) select 1;
_countr = 0;
{
_isOK = isClass(configFile >> "CfgVehicles" >> _x);
if (_isOK) then {
_object addBackpackCargoGlobal [_x,(_objWpnQty select _countr)];
};
_countr = _countr + 1;
} count _objWpnTypes;
};
};
 
if (_object isKindOf "AllVehicles") then {
{
_selection = _x select 0;
_dam = _x select 1;
if (_selection in dayZ_explosiveParts && _dam > 0.8) then {_dam = 0.8};
[_object,_selection,_dam] call object_setFixServer;
} count _hitpoints;
 
_object setFuel _fuel;
 
if (!((typeOf _object) in dayz_allowedObjects)) then {
 
//_object setvelocity [0,0,1];
_object call fnc_veh_ResetEH;
 
if(_ownerID != "0" && !(_object isKindOf "Bicycle")) then {
_object setvehiclelock "locked";
};
 
_totalvehicles = _totalvehicles + 1;
 
// total each vehicle
serverVehicleCounter set [count serverVehicleCounter,_type];
};
};
 
//Monitor the object
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
};
} count (_BuildingQueue + _objectQueue);
// # END SPAWN OBJECTS # 
processInitCommands; 
// 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;
 
//diag_log "HIVE: Request sent";
 
//Process result
_result = call compile format ["%1",_data];
_status = _result select 0;
 
if (_status == "ObjectStreamStart") then {
_val = _result select 1;
//Stream Objects
//diag_log ("HIVE: Commence Menu Streaming...");
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];
};
//diag_log ("HIVE: Streamed " + str(_val) + " objects");
};
 
} forEach (_traderData select 0);
};
} forEach serverTraders;
};
 
if (_hiveLoaded) then {
//  spawn_vehicles
_vehLimit = MaxVehicleLimit - _totalvehicles;
if(_vehLimit > 0) then {
diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit));
for "_x" from 1 to _vehLimit do {
[] spawn spawn_vehicles;
};
} else {
diag_log "HIVE: Vehicle Spawn limit reached!";
};
};
 
//  spawn_roadblocks
diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris));
for "_x" from 1 to MaxDynamicDebris do {
[] spawn spawn_roadblocks;
};
//  spawn_ammosupply at server start 1% of roadblocks
diag_log ("HIVE: Spawning # of Ammo Boxes: " + str(MaxAmmoBoxes));
for "_x" from 1 to MaxAmmoBoxes do {
[] spawn spawn_ammosupply;
};
// call spawning mining veins
diag_log ("HIVE: Spawning # of Veins: " + str(MaxMineVeins));
for "_x" from 1 to MaxMineVeins do {
[] spawn spawn_mineveins;
};
 
if(isnil "dayz_MapArea") then {
dayz_MapArea = 10000;
};
if(isnil "HeliCrashArea") then {
HeliCrashArea = dayz_MapArea / 2;
};
if(isnil "OldHeliCrash") then {
OldHeliCrash = false;
};
 
// [_guaranteedLoot, _randomizedLoot, _frequency, _variance, _spawnChance, _spawnMarker, _spawnRadius, _spawnFire, _fadeFire]
if(OldHeliCrash) then {
_nul = [3, 4, (50 * 60), (15 * 60), 0.75, 'center', HeliCrashArea, true, false] spawn server_spawnCrashSite;
};
if (isDedicated) then {
// Epoch Events
_id = [] spawn server_spawnEvents;
// server cleanup
[] spawn {
private ["_id"];
sleep 200; //Sleep Lootcleanup, don't need directly cleanup on startup + fix some performance issues on serverstart
waitUntil {!isNil "server_spawnCleanAnimals"};
_id = [] execFSM "\z\addons\dayz_server\system\server_cleanup.fsm";
};
 
// spawn debug box
_debugMarkerPosition = getMarkerPos "respawn_west";
_debugMarkerPosition = [(_debugMarkerPosition select 0),(_debugMarkerPosition select 1),1];
_vehicle_0 = createVehicle ["DebugBox_DZ", _debugMarkerPosition, [], 0, "CAN_COLLIDE"];
_vehicle_0 setPos _debugMarkerPosition;
_vehicle_0 setVariable ["ObjectID","1",true];
 
// max number of spawn markers
if(isnil "spawnMarkerCount") then {
spawnMarkerCount = 10;
};
actualSpawnMarkerCount = 0;
// count valid spawn marker positions
for "_i" from 0 to spawnMarkerCount do {
if (!([(getMarkerPos format["spawn%1", _i]), [0,0,0]] call BIS_fnc_areEqual)) then {
actualSpawnMarkerCount = actualSpawnMarkerCount + 1;
} else {
// exit since we did not find any further markers
_i = spawnMarkerCount + 99;
};
 
};
diag_log format["Total Number of spawn locations %1", actualSpawnMarkerCount];
 
endLoadingScreen;
};
[] ExecVM "\z\addons\dayz_server\WAI\init.sqf";
allowConnection = true;
sm_done = true;
publicVariable "sm_done";
};
 

 

 

server_publishVehicle2.sqf

 

private ["_activatingPlayer","_isOK","_object","_worldspace","_location","_dir","_class","_uid","_key","_keySelected","_characterID","_donotusekey"];
//PVDZE_veh_Publish2 = [_veh,[_dir,_location],_part_out,false,_keySelected,_activatingPlayer];
_object = _this select 0;
_worldspace = _this select 1;
_class = _this select 2;
_donotusekey = _this select 3;
_keySelected =  _this select 4;
_activatingPlayer =  _this select 5;
 
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"));
};
 
diag_log ("PUBLISH: Attempt " + str(_object));
_dir = _worldspace select 0;
_location = _worldspace select 1;
 
//Generate UID test using time
_uid = _worldspace call dayz_objectUID3;
 
// TODO: check if uid already exists && if so increment by 1 && check again as soon as we find nothing continue.
 
//Send request
_key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, 0 , _characterID, _worldspace, [], [], 1,_uid];
diag_log ("HIVE: WRITE: "+ str(_key)); 
_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","_object_para","_donotusekey","_activatingPlayer"];
 
   _object = _this select 0;
   _uid = _this select 1;
   _characterID = _this select 2;
   _class = _this select 3;
   //_dir = _this select 4;
   _location = _this select 5;
   _donotusekey = _this select 6;
   _activatingPlayer = _this select 7;
 
   _done = false;
_retry = 0;
// TODO: Needs major overhaul for 1.1
while {_retry < 10} do {
 
sleep 1;
// GET DB ID
_key = format["CHILD:388:%1:",_uid];
diag_log ("HIVE: WRITE: "+ str(_key));
_result = _key call server_hiveReadWrite;
_outcome = _result select 0;
if (_outcome == "PASS") then {
_oid = _result select 1;
//_object setVariable ["ObjectID", _oid, true];
diag_log("CUSTOM: Selected " + str(_oid));
_done = true;
_retry = 100;
 
} else {
diag_log("CUSTOM: trying again to get id for: " + str(_uid));
_done = false;
_retry = _retry + 1;
};
};
 
// Remove marker
deleteVehicle _object;
 
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 setPos [_location select 0, _location select 1,(_location select 2) + 65];
_object = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"];
} else {
_object = createVehicle [_class, _location, [], 0, "CAN_COLLIDE"];
};
 
if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suvUSA_overlay.jpg''];';};
 
if(!_donotusekey) then {
// Lock vehicle
_object setvehiclelock "locked";
};
    //Remove Weapon by SiothieGaming start
    call fnc_remWepSG;
    //Remove Weapon by SiothieGaming end
clearWeaponCargoGlobal  _object;
clearMagazineCargoGlobal  _object;
// _object setVehicleAmmo DZE_vehicleAmmo;
 
_object setVariable ["ObjectID", _oid, true];
 
_object setVariable ["lastUpdate",time];
 
_object setVariable ["CharacterID", _characterID, true];
 
if(DZE_TRADER_SPAWNMODE) then {
_object attachTo [_object_para, [0,0,-1.6]];
sleep 1.0;
WaitUntil{(([_object] call FNC_GetPos) select 2) < 0.1};
detach _object;
deleteVehicle _object_para;
};
 
PVDZE_serverObjectMonitor set [count PVDZE_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";
processInitCommands;
diag_log ("PUBLISH: " + str(_activatingPlayer) + " Bought " + (_class) + " with ID " + str(_uid));
};
 

 

 

server_publishVehicle3.sqf

 

private ["_activatingPlayer","_isOK","_object","_worldspace","_location","_dir","_class","_uid","_key","_keySelected","_characterID","_donotusekey"];
//PVDZE_veh_Publish2 = [_veh,[_dir,_location],_part_out,false,_keySelected,_activatingPlayer];
_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)); };
 
diag_log ("PUBLISH: Attempt " + str(_object));
_dir = _worldspace select 0;
_location = _worldspace select 1;
 
//Generate UID test using time
_uid = _worldspace call dayz_objectUID3;
 
//Send request
_key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, 0 , _characterID, _worldspace, [], [], 1,_uid];
diag_log ("HIVE: WRITE: "+ str(_key)); 
_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 {
 
sleep 1;
// GET DB ID
_key = format["CHILD:388:%1:",_uid];
diag_log ("HIVE: WRITE: "+ str(_key));
_result = _key call server_hiveReadWrite;
_outcome = _result select 0;
if (_outcome == "PASS") then {
_oid = _result select 1;
//_object setVariable ["ObjectID", _oid, true];
diag_log("CUSTOM: Selected " + str(_oid));
_done = true;
_retry = 100;
 
} else {
diag_log("CUSTOM: trying again to get id for: " + str(_uid));
_done = false;
_retry = _retry + 1;
};
};
 
if(!_done) exitWith { diag_log("CUSTOM: failed to get id for : " + str(_uid)); };
 
// add items from previous vehicle here
_weapons = getWeaponCargo _object;
_magazines = getMagazineCargo _object;
_backpacks = getBackpackCargo _object;
    //Remove Weapon by SiothieGaming start
    call fnc_remWepSG;
    //Remove Weapon by SiothieGaming end
clearWeaponCargoGlobal  _object;
clearMagazineCargoGlobal  _object;
clearBackpackCargoGlobal _object;
 
// Remove marker
deleteVehicle _object;
 
_newobject = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"];
 
// 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;
 
if (_class == "SUV_TK_CIV_EP1") then {_object setVehicleInit 'this setObjectTexture [0, ''custom\suvUSA_overlay.jpg''];';};
 
//Add weapons
_objWpnTypes = _weapons select 0;
_objWpnQty = _weapons select 1;
_countr = 0;
{
_object addWeaponCargoGlobal [_x,(_objWpnQty select _countr)];
_countr = _countr + 1;
} count _objWpnTypes;
 
//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];
 
PVDZE_serverObjectMonitor set [count PVDZE_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";
processInitCommands;
diag_log ("PUBLISH: " + str(_activatingPlayer) + " Upgraded " + (_class) + " with ID " + str(_uid));
};
 

 

 

The SUV just refuses to have its new texture :-( i spawn in the classname and it has its stock skin.

 

my skin is placed in mission file root dir in custom folder named custom :-p   Please could someone help me with this .. Thanks in advance 

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
×
×
  • Create New...