Jump to content

MF-Tow (a towing script for DayZ Epoch mod)


Recommended Posts

Latest release: https://github.com/matt-d-rat/mf-tow/releases/latest
Bug reports: https://github.com/matt-d-rat/mf-tow/issues
Install guide: 
https://github.com/matt-d-rat/mf-tow/blob/master/README.md

 

MF-Tow enables vehicles to be towed by others. It has been designed to be highly configurable, allowing server admins to define which vehicles can tow, and what types of vehicles they can tow. This script builds upon the ideas laid down by the built-in tow system in DayZ Epoch, but with more features and a better configurable ease of use.

 

MF-Tow was inspired by the great work done by the R3F team on their '[R3F] Artillery and Logistic' addon, and serves as an alternative tow script for admins who just want to add towing functionality to their DayZ Epoch server.

 

MF-Tow is also fully compatible with the popular '=BTC=_Logistic (DayZ Epoch Version)'.

Link to comment
Share on other sites

What are the advantages of using this? 

 

This script was developed as a means to use the '=BTC=_Logistic (DayZ Epoch Version)' along side a towing script. R3F is a popular alternative, but some people were having difficulties in getting just the towing aspect to run along side BTC. The built in epoch towing is limited to just a TowingTruck, this script is highly configurable and also prevents towing of locked vehicles.

Link to comment
Share on other sites

 

 

  • Define what types of vehicles can be towed (ie: "Motorcycle", "Car", "Truck", "Wheeled_APC", "Tracked_APC", "Air" etc..)

i think yes, but i am not sure.

but i will try it soon :)

mimmimimi ^^

 

 

MF_Tow_Towable_Array =

{

private ["_array","_towTruck"];

_towTruck = _this select 0;

_array = [];

switch (typeOf _towTruck) do

{

case "ATV_CZ_EP1": {_array = ["Motorcycle"];};

case "ATV_US_EP1": {_array = ["Motorcycle"];};

case "hilux1_civil_3_open": {_array = ["Motorcycle","Car"];};

case "hilux1_civil_3_open_EP1": {_array = ["Motorcycle","Car"];};

case "ArmoredSUV_PMC": {_array = ["Motorcycle","Car"];};

case "ArmoredSUV_PMC_DZ": {_array = ["Motorcycle","Car"];};

case "ArmoredSUV_PMC_DZE": {_array = ["Motorcycle","Car"];};

case "HMMWV_M1151_M2_CZ_DES_EP1_DZE": {_array = ["Motorcycle","Car","Truck"];};

case "HMMWV_M1151_M2_CZ_DES_EP1": {_array = ["Motorcycle","Car","Truck"];};

case "tractor": {_array = ["Motorcycle","Car","Truck"];};

case "TowingTractor": {_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};

};

_array

};

Link to comment
Share on other sites

So far got it working with no issues! After a good hour and a half of adding a crap ton of vehicles to the list, it was all working smoothly.

 

One slight thing is that the character is always in the ground when towing, and did break someone's legs the first time we tried, but not again since then.

Link to comment
Share on other sites

so along with the lift epoch script to stop towing locked vehicles is this right? and has someone got a longer towing list?

 
private ["_vehicle","_status"];
_vehicle = _this select 0;
_status = _this select 1;
 
if (local _vehicle) then {
if(_status) then {
_vehicle setVehicleLock "LOCKED";
_vehicle setVariable ["BTC_Cannot_Lift",true,true];
_vehicle setVariable ["MF_Tow_Cannot_Tow",true,true];
} else {
_vehicle setVehicleLock "UNLOCKED";
_vehicle setVariable ["BTC_Cannot_Lift",false,true];
_vehicle setVariable ["MF_Tow_Cannot_Tow",false,true];
};
};
 
 
 
if(!_donotusekey) then {
// Lock vehicle
_object setvehiclelock "locked";
   _object setVariable ["BTC_Cannot_Lift",true,true];
_vehicle setVariable ["MF_Tow_Cannot_Tow",true,true];
};

 

 

if(_ownerID != "0" and !(_object isKindOf "Bicycle")) then {
_object setvehiclelock "locked";
   _object setVariable ["BTC_Cannot_Lift",true,true];
_vehicle setVariable ["MF_Tow_Cannot_Tow",true,true];
};
Link to comment
Share on other sites

 

so along with the lift epoch script to stop towing locked vehicles is this right? and has someone got a longer towing list?

 
private ["_vehicle","_status"];
_vehicle = _this select 0;
_status = _this select 1;
 
if (local _vehicle) then {
if(_status) then {
_vehicle setVehicleLock "LOCKED";
_vehicle setVariable ["BTC_Cannot_Lift",true,true];
_vehicle setVariable ["MF_Tow_Cannot_Tow",true,true];
} else {
_vehicle setVehicleLock "UNLOCKED";
_vehicle setVariable ["BTC_Cannot_Lift",false,true];
_vehicle setVariable ["MF_Tow_Cannot_Tow",false,true];
};
};
 
 
 
if(!_donotusekey) then {
// Lock vehicle
_object setvehiclelock "locked";
   _object setVariable ["BTC_Cannot_Lift",true,true];
_vehicle setVariable ["MF_Tow_Cannot_Tow",true,true];
};

 

 

if(_ownerID != "0" and !(_object isKindOf "Bicycle")) then {
_object setvehiclelock "locked";
   _object setVariable ["BTC_Cannot_Lift",true,true];
_vehicle setVariable ["MF_Tow_Cannot_Tow",true,true];
};

 

 

Yep, if you followed the guide for locked vehicles in BTC, MF-Tow is identical. Yeah sorry about the short list, I got bored adding them :-). I the next version i am going to tidy up the array so that you only have to define what vehicles can tow once, not in two separate arrays.

Link to comment
Share on other sites

One slight thing is that the character is always in the ground when towing, and did break someone's legs the first time we tried, but not again since then.

 

Hmm, ok will need to look at the players position above the ground issue. They get attached to the side of the vehicle during the attachment phase to prevent accidental death from whatever is being attached XD. Might need some tweaking.

Link to comment
Share on other sites

I already have the logistic lift package with disabled locked vehicle lifting I used the above code and it gave errors

 

Whoops, sorry there was a small copy/paste error in the install guide for locked vehicles. In steps 16 and 17 the line that you add should read:

_object setVariable ["MF_Tow_Cannot_Tow",true,true];

I have updated the readme file in the git repo to show this.

Link to comment
Share on other sites

Thanks for this Script :P

And is this right?


//Towing with tow truck
/*
if(_typeOfCursorTarget == "TOW_DZE") then {
if (s_player_towing < 0) then {
if(!(_cursorTarget getVariable ["DZEinTow", false])) then {
s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_ATTACH" "\z\addons\dayz_code\actions\tow_AttachStraps.sqf",_cursorTarget, 0, false, true, "",""];
} else {
s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_DETACH", "\z\addons\dayz_code\actions\tow_DetachStraps.sqf",_cursorTarget, 0, false, true, "",""];
};
};
} else {
player removeAction s_player_towing;
s_player_towing = -1;
};
*/
// MF-Tow Script by Matt Fairbrass (matt_d_rat)
call compile preprocessFileLineNumbers 'addons\mf-tow\init.sqf';
// Take clothes by Zabn @ BalotaBuddies.net

 

//Edit: Works fine

Link to comment
Share on other sites

Any update on the ground clipping issue I reported? Also, another thing, some of my players are getting killed in SafeZones via this script, due to the vehicle literally squishing them when its moved behind the other vehicle that its being towed to.

Link to comment
Share on other sites

Hi

 nice script - saves on a lot of unwanted extra's that you get with R3F, although like you said in your opener you was inspired by it and its easy to see why.... Couple of things I have noticed, towing a UAZ puts it about 7ft in the air, towing with a UAZ puts the towed vehicle into the ground... think its been mentioned about ya character disappearing into the ground when attaching etc..

 Great script, waiting for the next instalment,

cheers

ukko

Link to comment
Share on other sites

Any update on the ground clipping issue I reported? Also, another thing, some of my players are getting killed in SafeZones via this script, due to the vehicle literally squishing them when its moved behind the other vehicle that its being towed to.

 

I will take a look at the ground clipping issues sometime over the weekend when I get a chance. Early release needs a lot of testing with the different number vehicle combinations so any feedback is very helpful. Players getting killed, when attached to the vehicle it shouldn't (in theory) do this... so will need to look into this more. May need a sleep between the attaching player to the vehicle and then attaching the vehicle to the tow vehicle - possibly a latency issue, but I'm just guessing here.

 

 

Hi

 nice script - saves on a lot of unwanted extra's that you get with R3F, although like you said in your opener you was inspired by it and its easy to see why.... Couple of things I have noticed, towing a UAZ puts it about 7ft in the air, towing with a UAZ puts the towed vehicle into the ground... think its been mentioned about ya character disappearing into the ground when attaching etc..

 Great script, waiting for the next instalment,

cheers

ukko

 

Sigh... the bounding box in Arma2 is rubbish. Will continue to look at refining the calculations. What vehicle were you trying to tow the UAZ with/towing with the UAZ?

 

Thanks for the feedback guys, bugs were always to be expected but glad overall the script has been a positive addition to the community.

Link to comment
Share on other sites

any towing with the UAZ was broken as well on R3F, so I honestly wouldn't worry about it.

 

found a big exploit with this thanks to watching some of my players. apparently its allowing us to tow 7+ cars in a row to eachother. Its a bit crazy.

Link to comment
Share on other sites

Hi Matt

 1st tried towing the UAZ with a land rover, clasname "landrover_special_cz_ep1" One attached to the land rover the UAZ was floating in the air. Then I just reversed it which sent the landrover (the vehicle now been towed) into the ground. Thanks tkd I wasn't aware of an issue with uaz's and r3f ...

 cheers

Link to comment
Share on other sites

Hi Matt

 1st tried towing the UAZ with a land rover, clasname "landrover_special_cz_ep1" One attached to the land rover the UAZ was floating in the air. Then I just reversed it which sent the landrover (the vehicle now been towed) into the ground. Thanks tkd I wasn't aware of an issue with uaz's and r3f ...

 cheers

Yeah, sadly it seems all the towing scripts have the same issue with UAZ's.

Link to comment
Share on other sites

here is my tow capable vehicle list, should cover all the vehicles that are of interest.

MF_Tow_Vehicles	= [
	"Truck",
	"Wheeled_APC",
	"BRDM2_Base",
	"BTR90_Base",
	"GAZ_Vodnik_HMG",
	"LAV25_Base",
	"M1126_ICV_BASE_EP1",
	"StrykerBase_EP1",
	"M1126_ICV_mk19_EP1",
	"M1126_ICV_M2_EP1"
	"BTR40_MG_base_EP1",
	"BTR40_base_EP1",
	"hilux1_civil_1_open",
	"HMMWV_Base",
	"Lada_base",
	"Offroad_DSHKM_base",
	"Pickup_PK_base",
	"SkodaBase",
	"tractor",
	"VWGolf",
	"Volha_TK_CIV_Base_EP1",
	"S1203_TK_CIV_EP1",
	"SUV_Base_EP1",
	"ArmoredSUV_Base_PMC",
	"UAZ_Base",
	"LandRover_Base",
	"GLT_M300_LT",
	"GLT_M300_ST",
	"TowingTractor"
];

and the towable vehicles for each class
 

	switch (typeOf _towTruck) do
	{
		case "Truck": 					{_array = ["Truck","GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open","GAZ_Vodnik_HMG","BRDM2_Base","BTR40_MG_base_EP1","BTR40_base_EP1"];};
		case "Wheeled_APC": 			{_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","M1126_ICV_BASE_EP1","StrykerBase_EP1","M1126_ICV_mk19_EP1","M1126_ICV_M2_EP1","BTR40_MG_base_EP1","BTR40_base_EP1","BTR90_Base","GAZ_Vodnik_HMG"];};
		case "BRDM2_Base": 				{_array = ["Truck","GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open","GAZ_Vodnik_HMG","BRDM2_Base","BTR40_MG_base_EP1","BTR40_base_EP1"];};
		case "BTR90_Base": 				{_array = ["Truck","GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open","GAZ_Vodnik_HMG","BRDM2_Base","BTR40_MG_base_EP1","BTR40_base_EP1","BTR90_Base"];};
		case "GAZ_Vodnik_HMG": 			{_array = ["Truck","GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open","GAZ_Vodnik_HMG","BRDM2_Base","BTR40_MG_base_EP1","BTR40_base_EP1"];};
		case "LAV25_Base": 				{_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","M1126_ICV_BASE_EP1","StrykerBase_EP1","M1126_ICV_mk19_EP1","M1126_ICV_M2_EP1","BTR40_MG_base_EP1","BTR40_base_EP1","BTR90_Base","GAZ_Vodnik_HMG"];};
		case "M1126_ICV_BASE_EP1": 		{_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","M1126_ICV_BASE_EP1","StrykerBase_EP1","M1126_ICV_mk19_EP1","M1126_ICV_M2_EP1","BTR40_MG_base_EP1","BTR40_base_EP1","BTR90_Base","GAZ_Vodnik_HMG"];};
		case "StrykerBase_EP1": 		{_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","M1126_ICV_BASE_EP1","StrykerBase_EP1","M1126_ICV_mk19_EP1","M1126_ICV_M2_EP1","BTR40_MG_base_EP1","BTR40_base_EP1","BTR90_Base","GAZ_Vodnik_HMG"];};
		case "M1126_ICV_mk19_EP1": 		{_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","M1126_ICV_BASE_EP1","StrykerBase_EP1","M1126_ICV_mk19_EP1","M1126_ICV_M2_EP1","BTR40_MG_base_EP1","BTR40_base_EP1","BTR90_Base","GAZ_Vodnik_HMG"];};
		case "M1126_ICV_M2_EP1": 		{_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","M1126_ICV_BASE_EP1","StrykerBase_EP1","M1126_ICV_mk19_EP1","M1126_ICV_M2_EP1","BTR40_MG_base_EP1","BTR40_base_EP1","BTR90_Base","GAZ_Vodnik_HMG"];};
		case "BTR40_MG_base_EP1": 		{_array = ["Truck","GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open","GAZ_Vodnik_HMG","BRDM2_Base","BTR40_MG_base_EP1","BTR40_base_EP1"];};
		case "BTR40_base_EP1": 			{_array = ["Truck","GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open","GAZ_Vodnik_HMG","BRDM2_Base","BTR40_MG_base_EP1","BTR40_base_EP1"];};
		case "hilux1_civil_1_open": 	{_array = ["GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open"];};
		case "HMMWV_Base": 				{_array = ["GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open"];};
		case "Lada_base": 				{_array = ["GLT_M300_ST","GLT_M300_LT","UAZ_Base","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Lada_base"];};
		case "Offroad_DSHKM_base": 		{_array = ["GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","hilux1_civil_1_open"];};
		case "Pickup_PK_base": 			{_array = ["GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","hilux1_civil_1_open"];};
		case "SkodaBase": 				{_array = ["GLT_M300_ST","GLT_M300_LT","UAZ_Base","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Lada_base"];};
		case "tractor": 				{_array = ["GLT_M300_ST","GLT_M300_LT","UAZ_Base","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Lada_base"];};
		case "VWGolf": 					{_array = ["GLT_M300_ST","GLT_M300_LT","UAZ_Base","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Lada_base"];};
		case "Volha_TK_CIV_Base_EP1": 	{_array = ["GLT_M300_ST","GLT_M300_LT","UAZ_Base","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Lada_base"];};
		case "S1203_TK_CIV_EP1": 		{_array = ["GLT_M300_ST","GLT_M300_LT","UAZ_Base","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Lada_base"];};
		case "SUV_Base_EP1": 			{_array = ["GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open"];};
		case "ArmoredSUV_Base_PMC": 	{_array = ["GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open"];};
		case "UAZ_Base": 				{_array = ["GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","hilux1_civil_1_open"];};
		case "LandRover_Base": 			{_array = ["GLT_M300_ST","GLT_M300_LT","LandRover_Base","UAZ_Base","ArmoredSUV_Base_PMC","SUV_Base_EP1","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Offroad_DSHKM_base","Lada_base","HMMWV_Base","hilux1_civil_1_open"];};
		case "GLT_M300_LT": 			{_array = ["GLT_M300_ST","GLT_M300_LT","UAZ_Base","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Lada_base"];};
		case "GLT_M300_ST": 			{_array = ["GLT_M300_ST","GLT_M300_LT","UAZ_Base","S1203_TK_CIV_EP1","Volha_TK_CIV_Base_EP1","VWGolf","tractor","SkodaBase","Pickup_PK_base","Lada_base"];};
		case "TowingTractor": 			{_array = ["Motorcycle","Car","Truck","Wheeled_APC","Tracked_APC","Air"];};
	};
Link to comment
Share on other sites

hm it did not work for me, made a folder for it ... addons\mf-tow\..
changed the init.sqf file with the changes you see above. placed the line

call compile preprocessFileLineNumbers "addons\mf-tow\init.sqf";

just after the commented out towing script block, but ingame no options. weird. is there no more elegant way to call the script?

i will try it out using a execVM command.

Link to comment
Share on other sites

Just curious . But why does the heli lift script only require an addition to the init.sqf (without the locked vehicle fix), but yours requires additions to the selfunctions file? Thanks for the hard work btw :)

 

there is most likely a loop added in other tow scripts, that checks every 5 sec or so if it needs to add/remove addaction ... 

 

tbh i feel this is a bit wasting time as there are already plenty of tow/lift scripts availible ... it donsnt have any features that you cant get with other tow/lift scripts either, however it will allow players to tow multiple vehicles at a time and requires a massive setup to include all the mods vehicles.

 

@matt_d_rat

even tho i think its a waste of time, i feel i have to comment a bit and i think you need to lookup isKindOf as you can use a wider spread base classname aswell as a specific one, instead of comparing exact and case sensitive names with typeOf.

 

it will perhaps require you to add a loop or two to apply but i think it will be better not to mention easier to setup after.

 

also you can check if an object is locked, you dont nessecarily need to set a variable to determin that, just check like this:

if(locked _myobject)then{
Link to comment
Share on other sites

 

 

tbh i feel this is a bit wasting time as there are already plenty of tow/lift scripts availible ... it donsnt have any features that you cant get with other tow/lift scripts either, however it will allow players to tow multiple vehicles at a time and requires a massive setup to include all the mods vehicles.

 

Which would you recommend to work with the BTC heli lift Epoch version by Giallustio ? 

 

Something simple :D

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...