Jump to content
HarryPlobber #DIESEL#

Changing from Altis to Malden (Or any other map)

Recommended Posts

Hello! Since i've grabbed so much from here i thought "Why not give something back?" and so i did with Malden gas station positions, but some people said i could write it into a tutorial, so here i am.

I did this on 5.0 but it should virtually be the same. (This is also why the file structure is as it is)

First off: This is time consuming, i will spare you from getting gas stations manually but most things you'll have to do yourself since it depends on how you customize the map. Please be aware that in this tutorial i will assume you've ported all map objects from Altis/Tanoa over to Malden. So i won't go in to explaining that. Please remember that everytime these coords show up in the tutorial: 

[5160,7071,0.75]

You will need to change them to your own.

We will modify these files in our progress in the map porting: 

Spoiler

life_server\init.sqf
Altis_Life.altis\core\actions\fn_captureHideout.sqf
Altis_Life.altis\core\civilian\fn_jailMe.sqf
Altis_Life.altis\core\cop\fn_fedCamDisplay.sqf
Altis_Life.altis\core\fn_initCiv.sqf
Altis_Life.altis\core\fn_setupStationService.sqf
Altis_Life.altis\core\functions\fn_actionKeyHandler.sqf
Altis_Life.altis\core\housing\fn_houseMenu.sqf
Altis_Life.altis\core\items\fn_blastingCharge.sqf
Altis_Life.altis\core\items\fn_boltcutter.sqf
Altis_Life.altis\core\shops\fn_virt_buy.sqf
Altis_Life.altis\core\shops\fn_weaponShopBuySell.sqf
Altis_Life.altis\Config\Config_SpawnPoints.hpp

1. Let's start off with life_server, so unPBO that one, open up init.sqf and look for private _vaultHouse so you know you're in the right place. Now this all depends on how you've placed the federal reserve on Malden the next few steps, i did what I personally think requires little editing, as you can copy/paste a lot. But the first thing you're going to edit the _vaultHouse array. If you use the same building as there's being used on Altis you can just copy this line in instead of the one already there:

Spoiler
private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Malden", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call TON_fnc_terrainSort;

 

Edit: I noticed i got an error with the code i had provided before, when it would get to _dome so this is my workaround: Comment out the altis, malden and Tanoa plus the _pos arrays.
Then in _dome and _rsb you can put in your coords, so it will look like this: 

_dome = nearestObject [[5160,7071,0.75],"Land_Dome_Big_F"];
_rsb = nearestObject [[5160,7071,0.75],_vaultHouse];

Full: 

Spoiler
/* Setup the federal reserve building(s) */
private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Malden", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call TON_fnc_terrainSort;
/* private _altisArray = [16019.5,16952.9,0];
private _tanoaArray = [11074.2,11501.5,0.00137329];
private _maldenArray = [5160,7071,0.75];
private _pos = [[["Altis", _altisArray], ["Malden", _maldenArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort; */

_dome = nearestObject [[5160,7071,0.75],"Land_Dome_Big_F"];
_rsb = nearestObject [[5160,7071,0.75],_vaultHouse];

 

Also, you can remove this code from the init.sqf (Unless you want to spawn in 2 hospitals) 

Spoiler
{
 _hs = createVehicle ["Land_Hospital_main_F", [0,0,0], [], 0, "NONE"];
 _hs setDir (markerDir _x);
 _hs setPosATL (getMarkerPos _x);
 _var = createVehicle ["Land_Hospital_side1_F", [0,0,0], [], 0, "NONE"];
 _var attachTo [_hs, [4.69775,32.6045,-0.1125]];
 detach _var;
 _var = createVehicle ["Land_Hospital_side2_F", [0,0,0], [], 0, "NONE"];
 _var attachTo [_hs, [-28.0336,-10.0317,0.0889387]];
 detach _var;
 if (worldName isEqualTo "Tanoa") then {
 if (_forEachIndex isEqualTo 0) then {
 atm_hospital_2 setPos (_var modelToWorld [4.48633,0.438477,-8.25683]);
 vendor_hospital_2 setPos (_var modelToWorld [4.48633,0.438477,-8.25683]);
 "medic_spawn_3" setMarkerPos (_var modelToWorld [8.01172,-5.47852,-8.20022]);
 "med_car_2" setMarkerPos (_var modelToWorld [8.01172,-5.47852,-8.20022]);
 hospital_assis_2 setPos (_hs modelToWorld [0.0175781,0.0234375,-0.231956]);
 } else {
 atm_hospital_3 setPos (_var modelToWorld [4.48633,0.438477,-8.25683]);
 vendor_hospital_3 setPos (_var modelToWorld [4.48633,0.438477,-8.25683]);
 "medic_spawn_1" setMarkerPos (_var modelToWorld [-1.85181,-6.07715,-8.24944]);
 "med_car_1" setMarkerPos (_var modelToWorld [5.9624,11.8799,-8.28493]);
 hospital_assis_2 setPos (_hs modelToWorld [0.0175781,0.0234375,-0.231956]);
 };
 };
} forEach ["hospital_2","hospital_3"];

 

Now we've finished the stuff we need to do in life_server.

 

2. Lets jump over to \core\actions\fn_captureHideout.sqf here it's also a quick is easy (if you use the same buildings as on Altis), example on how you will make this look: 

Spoiler
private _altisArray = ["Land_u_Barracks_V2_F","Land_i_Barracks_V2_F"];
private _tanoaArray = ["Land_School_01_F","Land_Warehouse_03_F","Land_House_Small_02_F"];
private _maldenArray = ["Land_u_Barracks_V2_F","Land_i_Barracks_V2_F"];

private _hideoutObjs = [[["Altis", _altisArray], ["Malden", _maldenArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;

 

 

3. Now let's go to \core\civilian\fn_jailMe.sqf in Line 43 (private _escDist) you can put in ["Malden", 60], after ["Altis", 60], (You can change "60" to whatever you want the escape distance to be)
Example on how it will look: 

private _escDist = [[["Altis", 60], ["Malden", 60], ["Tanoa", 145]]] call TON_fnc_terrainSort;

 

4. Let's go to \core\cop\fn_fedCamDisplay.sqf here you basically do the exact same as in step one, so it will look like: 

Spoiler
private _altisArray = [16019.5,16952.9,0];
private _tanoaArray = [11074.2,11501.5,0.00137329];
private _maldenArray = [5160,7071,0.75];

private _pos = [[["Altis", _altisArray], ["Malden", _altisArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;

 

 

5. Jumping over to \core\fn_initCiv.sqf  - This file is what determines which buildings you'll spawn in, since there's most of the Altis buildings on the map you can just copy paste that line and change _altisArray to _maldenArray , after you've done that don't forget to add it into the _spawnBuildings. (Or just copy paste this)

Spoiler
private _altisArray = ["Land_i_Shop_01_V1_F","Land_i_Shop_01_V2_F","Land_i_Shop_01_V3_F","Land_i_Shop_02_V1_F","Land_i_Shop_02_V2_F","Land_i_Shop_02_V3_F"];
private _tanoaArray = ["Land_House_Small_01_F"];
private _maldenArray = ["Land_i_Shop_01_V1_F","Land_i_Shop_01_V2_F","Land_House_Small_01_F","Land_i_Shop_01_V3_F","Land_i_Shop_02_V1_F","Land_i_Shop_02_V2_F","Land_i_Shop_02_V3_F"];
private _spawnBuildings = [[["Altis", _altisArray], ["Malden", _maldenArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;

 

 

6. \core\fn_setupStationService.sqf , this file is what starts the "refueling" process, i've found the location for some of the gas pumps, and i've included them in this codeblock. If you find more, please say so and i'll update accordingly. 

Spoiler
private _maldenPositions = [
	 [8047,4023,0.04],
	 [8042,4028,0.04],
	 [8047,4035,0.04],
	 [8052,4030,0.04],
	 [8057,4037,0.04],
	 [8052,4042,0.04],
	 [7046.928,7050.492,0],
	 [7046.633,7052.23,0],
	 [7046.645,7054.43,0],
	 [7224.214,7772.088,0],
	 [7219.045,7769.033,0],
	 [7214.585,7776.88,0],
	 [7219.539,7779.958,0],
	 [6632.977,8807.188,0],
	 [7214.585,7776.88,0],
	 [5505.307,3498.975,0],
	 [503.614,3499.315,0],
	 [5507.246,3498.496,0],
	 [3230.448,6289.817,0],
	 [3228.906,6290.520,0],
	 [3226.764,6291.252,0],
	 [5111.221,9061.996,0],
	 [6633.137,8807.185,0],
	 [10062.974,3995.058,0],
	 [10062.730,3988.536,0],
	 [11599.673,4477.188,0],
	 [7214.585,7776.88,0]
];

 

DONT FORGET TO ALSO ADD THIS INTO: private _stationPositions so it will look like this: 

Spoiler
private _stationPositions = [[["Altis", _altisPositions], ["Malden", _maldenPositions] ["Tanoa", _tanoaPositions]]] call TON_fnc_terrainSort;

 

 

7. In \core\functions\fn_actionKeyHandler.sqf   find the _vaultHouse line, and add ["Malden", "CLASSNAME-FOR-YOUR-BUILDING-WHICH-CONTAINS-FED-VAULT"] (of course change it) also add _maldenArray with the coords for where it's placed. Don't forget to also add this into the _pos. Example of how it can look: 

Spoiler
private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Malden", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call TON_fnc_terrainSort;
private _altisArray = [16019.5,16952.9,0];
private _tanoaArray = [11074.2,11501.5,0.00137329];
private _maldenArray = [5160,7071,0.75];
private _pos = [[["Altis", _altisArray], ["Malden", _maldenArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;

 

 

8. \core\housing\fn_houseMenu.sqf - Here it's just like in step 7, so it'll look like: 

Spoiler
    private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Malden", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call TON_fnc_terrainSort;
    private _altisArray = [16019.5,16952.9,0];
    private _tanoaArray = [11074.2,11501.5,0.00137329];
	private _maldenArray = [5160,7071,0.75];
    private _pos = [[["Altis", _altisArray], ["Malden", _maldenArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;

 

 

9. \core\items\fn_blastingCharge.sqf - exact same as above 

Spoiler
private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Malden", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call TON_fnc_terrainSort;
private _altisArray = [16019.5,16952.9,0];
private _tanoaArray = [11074.2,11501.5,0.00137329];
private _maldenArray = [5160,7071,0.75];
private _pos = [[["Altis", _altisArray], ["Malden", _maldenArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;

 

 

10. \core\items\fn_boltcutter.sqf - This is (also) the same as above. 

Spoiler
private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Malden", "Land_Research_house_V1_F"], ["Tanoa", "Land_Medevac_house_V1_F"]]] call TON_fnc_terrainSort;
private _altisArray = [16019.5,16952.9,0];
private _tanoaArray = [11074.2,11501.5,0.00137329];
private _maldenArray = [CHANGE,ME,PLEASE];
private _pos = [[["Altis", _altisArray], ["Malden", _maldenArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;

 

 

11. \core\shops\fn_virt_buy.sqf - Here you'll add the buildings which you use for gang hideouts. Just like in step #2 Here's an example of how it will look: (You can find this on line 19) 

Spoiler
private _altisArray = ["Land_u_Barracks_V2_F","Land_i_Barracks_V2_F"];
private _tanoaArray = ["Land_School_01_F","Land_Warehouse_03_F","Land_House_Small_02_F"];
private _maldenArray = ["Land_u_Barracks_V2_F","Land_i_Barracks_V2_F"];
private _hideoutObjs = [[["Altis", _altisArray], ["Malden", _maldenArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;

 

 

12. \core\shops\fn_weaponShopBuySell.sqf - Here we will, like in step #2 add what building we are using as gang hideout, i'll once again show how i've done it: (Line number 32) 

Spoiler
    private _altisArray = ["Land_u_Barracks_V2_F","Land_i_Barracks_V2_F"];
    private _tanoaArray = ["Land_School_01_F","Land_Warehouse_03_F","Land_House_Small_02_F"];
    private _maldenArray = ["Land_u_Barracks_V2_F","Land_i_Barracks_V2_F"]
    private _hideoutObjs = [[["Altis", _altisArray], ["Malden", _maldenArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort;
    private _hideout = (nearestObjects[getPosATL player,_hideoutObjs,25]) select 0;

 

13. \Config\Config_SpawnPoints.hpp - Here we will add our spawnpoints. Remember that the class should be called "Malden". Like so: 

Spoiler
class Malden {
        class Civilian {
            class Kavala {
                displayName = "La Trinité";
                spawnMarker = "civ_spawn_1";
                icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
                conditions = "";
            };

            class Athira {
                displayName = "La Rivière";
                spawnMarker = "civ_spawn_3";
                icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
                conditions = "";
            };

            class Pyrgos {
                displayName = "Larche";
                spawnMarker = "civ_spawn_2";
                icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
                conditions = "";
            };

            class Sofia {
                displayName = "Le Port";
                spawnMarker = "civ_spawn_4";
                icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
                conditions = "";
            };

            class RebelN {
                displayName = "Moray Rebel Base";
                spawnMarker = "Rebelop";
                icon = "\a3\ui_f\data\map\MapControl\bunker_ca.paa";
                conditions = "license_civ_rebel";
            };

            class RebelS {
                displayName = "'The Circle' Rebel Base";
                spawnMarker = "Rebelop_1";
                icon = "\a3\ui_f\data\map\MapControl\bunker_ca.paa";
                conditions = "license_civ_rebel";
            };

            class RebelE {
                displayName = $STR_SP_Reb_E;
                spawnMarker = "Rebelop_2";
                icon = "\a3\ui_f\data\map\MapControl\bunker_ca.paa";
                conditions = "license_civ_rebel";
            };
        };

        class Cop {
            class Kavala {
                displayName = "La Trinite HQ";
                spawnMarker = "cop_spawn_1";
                icon = "\a3\ui_f\data\map\MapControl\watertower_ca.paa";
                conditions = "";
            };

            class Athira {
                displayName = "Le Port HQ";
                spawnMarker = "cop_spawn_3";
                icon = "\a3\ui_f\data\map\MapControl\fuelstation_ca.paa";
                conditions = "";
            };

            class Pyrgos {
                displayName = "La Rivière HQ";
                spawnMarker = "cop_spawn_2";
                icon = "\a3\ui_f\data\map\GroupIcons\badge_rotate_0_gs.paa";
                conditions = "";
            };

            class Air {
                displayName = "Police Air HQ";
                spawnMarker = "cop_spawn_4";
                icon = "\a3\ui_f\data\map\Markers\NATO\b_air.paa";
                conditions = "call life_coplevel >= 2 && {license_cop_cAir}";
            };

            class HW {
                displayName = "Highway Patrol";
                spawnMarker = "cop_spawn_5";
                icon = "\a3\ui_f\data\map\GroupIcons\badge_rotate_0_gs.paa";
                conditions = "call life_coplevel >= 3";
            };
        };

        class Medic {
            class Kavala {
                displayName = "Malden Airport Hospital";
                spawnMarker = "medic_spawn_1";
                icon = "\a3\ui_f\data\map\MapControl\hospital_ca.paa";
                conditions = "";
            };
        };
    };

The reason there's Altis class names is because i was too tired to change them, this works so i just thought it would just stay this way.


I know this tutorial is not as in depth as others, but that is because a lot of this varies with where you place federal reserve, which buildings you use for gang hideouts and all the other stuff. Also, if you don't switch to Malden remember that everytime "Malden" is mentioned anywhere in the code change it out with your mapname.

Edited by HarryPlobber #DIESEL#
Edit: Added a little reminder
  • Like 3

Share this post


Link to post
Share on other sites

i have added them in there and the interaction menu is poping up but no buy house button 

 

    class stratis {
        
                class Land_i_House_Small_03_V1_F {
            price = 1250000;
            numberCrates = 3;
            restrictedPos[] = {};
            canGarage = false;
            garageSpawnPos[] = {};
            garageSpawnDir = 0;
            garageBlacklists[] = {};
            lightPos[] = {-3.3,1,2.5};
        };

what am i doing wrong?

Share this post


Link to post
Share on other sites
9 hours ago, Medusaisback999 said:

i have added them in there and the interaction menu is poping up but no buy house button 

 

    class stratis {
        
                class Land_i_House_Small_03_V1_F {
            price = 1250000;
            numberCrates = 3;
            restrictedPos[] = {};
            canGarage = false;
            garageSpawnPos[] = {};
            garageSpawnDir = 0;
            garageBlacklists[] = {};
            lightPos[] = {-3.3,1,2.5};
        };

what am i doing wrong?

Are you specifically trying to buy that house

and I’m pretty sure Stratis and altis have the same houses

Share this post


Link to post
Share on other sites
1 hour ago, FaisalQusai said:

in case i want to convert to Jackson_County .. i should change Malden to Jackson_County in this tutorial ? 

Nah, you keep it as Malden.

 

Share this post


Link to post
Share on other sites

Hello i became a Error:

Error in expression <_tanoaArray]]] call TON_fnc_terrainSort;

if (_curObject isKindOf "House_F" &>
17:19:29   Error position: <

if (_curObject isKindOf "House_F" &>
17:19:29   Error Invalid number in expression
17:19:29 File core\functions\fn_actionKeyHandler.sqf [life_fnc_actionKeyHandler], line 123
17:19:29 Error in expression <_tanoaArray]]] call TON_fnc_terrainSort;

if (_curObject isKindOf "House_F" &>
17:19:29   Error position: <

if (_curObject isKindOf "House_F" &>
17:19:29   Error Invalid number in expression
17:19:29 File core\functions\fn_actionKeyHandler.sqf [life_fnc_actionKeyHandler], line 123

I change the Cord to a "Test" Bank . Its not the final Position. 

I use the Map Malden and Life Version 5.0

 

Here the init.sqf code from the life_server

/* Setup the federal reserve building(s) */
private _vaultHouse = [[["Altis", "Land_Research_house_V1_F"], ["Malden", "Land_Research_house_V1_F"], ["Tanoa", "Land_Research_house_V1_F"]]] call TON_fnc_terrainSort;
/* private _altisArray = [16019.5,16952.9,0];
private _tanoaArray = [11074.2,11501.5,0.00137329];
private _maldenArray = [5160,7071,0.75];
private _pos = [[["Altis", _altisArray], ["Malden", _maldenArray], ["Tanoa", _tanoaArray]]] call TON_fnc_terrainSort; */

_dome = nearestObject [[5160,7071,0.75],"Land_Dome_Big_F"];
_rsb = nearestObject [[5157.75,7068.125,0.642],_vaultHouse];
//_dome = nearestObject [_pos,"Land_Dome_Big_F"];
//_rsb = nearestObject [_pos,_vaultHouse];

 

 

Serverlog and actionKeyHandler attach.

arma3server_x64_2019-01-20_17-18-51.rpt

fn_actionKeyHandler.sqf

Edited by kleinkiko
Code fix

Share this post


Link to post
Share on other sites

Hey, i followed everything.

It worked, but with this errors :

Error in expression <["Altis", 60], ["gm_weferlingen_summer", 60], ["Tanoa", 145]]] call TON_fn>
  Error position: < 60], ["Tanoa", 145]]] call TON_fn>
  Error Invalid number in expression
File core\civilian\fn_jailMe.sqf [life_fnc_jailMe], line 105
Error in expression <["Altis", 60], ["gm_weferlingen_summer", 60], ["Tanoa", 145]]] call TON_fn>
  Error position: < 60], ["Tanoa", 145]]] call TON_fn>
  Error Invalid number in expression
File core\civilian\fn_jailMe.sqf [life_fnc_jailMe], line 105

and

Missing 'description.ext::Header'

Any advices ?

 

EDIT

 

Just had some random hidden character too...

Edited by Nirawiin

Share this post


Link to post
Share on other sites
44 minutes ago, MaldenLifeRP said:

Hey, I followed your tutorial and did everything but I am unable to use bolt cutters on the vault building and also buying houses no longer works.

And also my RPT logs are constantly spammed with this: https://pastebin.com/Qm3ZiRW5

Thank you in advance!

Pastebin your full client and server rpts (from when you tested this).

Edited by imthatguyhere

Share this post


Link to post
Share on other sites
9 minutes ago, MaldenLifeRP said:
Error in expression <_tanoaArray]]] call TON_fnc_terrainSort;

if (_curObject isKindOf "House_F" &>
  Error position: <

if (_curObject isKindOf "House_F" &>
  Error Invalid number in expression
File core\functions\fn_actionKeyHandler.sqf [life_fnc_actionKeyHandler], line 150
Error in expression <_tanoaArray]]] call TON_fnc_terrainSort;

if (_curObject isKindOf "House_F" &>
  Error position: <

if (_curObject isKindOf "House_F" &>
  Error Invalid number in expression
File core\functions\fn_actionKeyHandler.sqf [life_fnc_actionKeyHandler], line 150
Error in expression <_tanoaArray]]] call TON_fnc_terrainSort;

if ((nearestObject [_pos,"Land_MilO>
  Error position: <

if ((nearestObject [_pos,"Land_MilO>
  Error Invalid number in expression
File core\housing\fn_houseMenu.sqf [life_fnc_houseMenu], line 118
Error in expression <_tanoaArray]]] call TON_fnc_terrainSort;

if ((nearestObject [_pos,"Land_MilO>
  Error position: <

if ((nearestObject [_pos,"Land_MilO>
  Error Invalid number in expression
File core\housing\fn_houseMenu.sqf [life_fnc_houseMenu], line 118
Error in expression <_tanoaArray]]] call TON_fnc_terrainSort;

if ((nearestObject [_pos,_vaultHous>
  Error position: <

if ((nearestObject [_pos,_vaultHous>
  Error Invalid number in expression
File core\items\fn_blastingCharge.sqf [life_fnc_blastingCharge], line 89
Error in expression <_tanoaArray]]] call TON_fnc_terrainSort;

if ((nearestObject [_pos,_vaultHous>
  Error position: <

if ((nearestObject [_pos,_vaultHous>
  Error Invalid number in expression
File core\items\fn_blastingCharge.sqf [life_fnc_blastingCharge], line 89
Error in expression <_tanoaArray]]] call TON_fnc_terrainSort;

if (isNull _building) exitWith {};
>
  Error position: <

if (isNull _building) exitWith {};
>
  Error Invalid number in expression
File core\items\fn_boltcutter.sqf [life_fnc_boltcutter], line 81
Error in expression <_tanoaArray]]] call TON_fnc_terrainSort;

if (isNull _building) exitWith {};
>
  Error position: <

if (isNull _building) exitWith {};
>

You seem to have a bunch of hidden characters in your files. Run them through: http://arma.imthatguyhere.com/bom/

Share this post


Link to post
Share on other sites
5 minutes ago, cShaxu said:

yeah but i want files with changed to malden map

Then follow the tutorial and do it yourself. You are not allowed to redistribute missions. That's the only place you should be getting framework files.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.