Jump to content
  • 0

Adding armed vehicles without ammo when bought


Hammer

Question

Is there a script that removes ammo from armed vehicles when they are bought from a trader? I'd like to add jets or many of the other helis, but they all spawn with ammo. Is there a way to get them to spawn without ammo? Also it may be a problem with the rearm script I have because players can then just pay to rearm their armed vehicles after. Is there a way to disable the rearming of the vehicles?  Thanks!

Link to comment
Share on other sites

Recommended Posts

  • 0

you could remove the weapons in server_monitor.sqf

find

clearWeaponCargoGlobal  _object;
clearMagazineCargoGlobal  _object;

add this or edit it for your vehicles

 

//A10 remove weapons
        if (_object isKindOf "A10") then {
            _object removeWeapon "BombLauncherA10";
            _object removeMagazine "4Rnd_GBU12";
            _object removeWeapon "FFARLauncher_14";
            _object removeMagazine "14Rnd_FFAR";
            _object removeWeapon "GAU8";
            _object removeMagazine "1350Rnd_30mmAP_A10";
            _object removeWeapon "MaverickLauncher";
            _object removeMagazine "2Rnd_Maverick_A10";
            _object removeWeapon "SidewinderLaucher_AH1Z";
            _object removeMagazine "2Rnd_Sidewinder_AH1Z";
        };


//Su25_TK_EP1 remove weapons
if (_object isKindOf "Su25_TK_EP1") then {
_object removeWeapon "AirBombLauncher";
_object removeWeapon "AirBombLauncher";
_object removeMagazine "4Rnd_FAB_250";
_object removeMagazine "2Rnd_FAB_250";
_object removeWeapon "GSh301";
_object removeMagazine "180Rnd_30mm_GSh301";
_object removeWeapon "R73Launcher_2";
_object removeMagazine "2Rnd_R73";
_object removeWeapon "S8Launcher";
_object removeMagazine "80Rnd_80mm";
_object removeMagazine "40Rnd_80mm";
_object removeMagazine "40Rnd_S8T";
_object removeMagazine "80Rnd_S8T";
_object removeWeapon "SidewinderLaucher_AH1Z";
_object removeMagazine "2Rnd_Sidewinder_AH1Z";
_object addWeapon "TwinVickers";
_object addMagazine "500Rnd_TwinVickers";


};

Notice I removed weapon and its magazines

I also added a twinvickers and 1 mag

Link to comment
Share on other sites

  • 0

I've just now tried this, and it doesn't seem to have removed anything. Did I put it in the right place? I also tried removing the ammo and weapons on the F35B but with the same result. Here's my Server_monitor.sqf, let me know if you spot any errors...

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)

if (isNil "server_initCount") then {
	server_initCount = 1;
} else {
	server_initCount = server_initCount + 1;
};
diag_log format["server_monitor.sqf execution count = %1", server_initCount];
	
// 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 and 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)];
		saveProfileNamespace;
		
		_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));
		};
		

		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];

			_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;

		//A10 remove weapons
        if (_object isKindOf "A10") then {
            _object removeWeapon "BombLauncherA10";
            _object removeMagazine "4Rnd_GBU12";
            _object removeWeapon "FFARLauncher_14";
            _object removeMagazine "14Rnd_FFAR";
            _object removeWeapon "GAU8";
            _object removeMagazine "1350Rnd_30mmAP_A10";
            _object removeWeapon "MaverickLauncher";
            _object removeMagazine "2Rnd_Maverick_A10";
            _object removeWeapon "SidewinderLaucher_AH1Z";
            _object removeMagazine "2Rnd_Sidewinder_AH1Z";
        };


//Su25_TK_EP1 remove weapons
if (_object isKindOf "Su25_TK_EP1") then {
_object removeWeapon "AirBombLauncher";
_object removeWeapon "AirBombLauncher";
_object removeMagazine "4Rnd_FAB_250";
_object removeMagazine "2Rnd_FAB_250";
_object removeWeapon "GSh301";
_object removeMagazine "180Rnd_30mm_GSh301";
_object removeWeapon "R73Launcher_2";
_object removeMagazine "2Rnd_R73";
_object removeWeapon "S8Launcher";
_object removeMagazine "80Rnd_80mm";
_object removeMagazine "40Rnd_80mm";
_object removeMagazine "40Rnd_S8T";
_object removeMagazine "80Rnd_S8T";
_object removeWeapon "SidewinderLaucher_AH1Z";
_object removeMagazine "2Rnd_Sidewinder_AH1Z";
};
			//F35B Remove Weapons
if (_object isKindOf "F35B") then {
_object removeWeapon "BombLauncherF35";
_object removeMagazine "2Rnd_GBU12";
_object removeWeapon "GAU12";
_object removeMagazine "300Rnd_25mm_GAU12";
_object removeWeapon "SidewinderLaucher_F35";
_object removeMagazine "2Rnd_Sidewinder_F35";

};


			_object setdir _dir;
			_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 and 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)];
					_object setVariable ["MagazineCargo", (_intentory select 1)];
					_object setVariable ["BackpackCargo", (_intentory select 2)];
				} 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;
					} forEach _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;
					} forEach _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;
					} forEach _objWpnTypes;
				};
			};	
			
			if (_object isKindOf "AllVehicles") then {
				{
					_selection = _x select 0;
					_dam = _x select 1;
					if (_selection in dayZ_explosiveParts and _dam > 0.8) then {_dam = 0.8};
					[_object,_selection,_dam] call object_setFixServer;
				} forEach _hitpoints;

				_object setFuel _fuel;

				if (!((typeOf _object) in dayz_allowedObjects)) then {
					
					//_object setvelocity [0,0,1];
					_object call fnc_veh_ResetEH;		
					
					if(_ownerID != "0" and !(_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];
		};
	} forEach (_BuildingQueue + _objectQueue);
	// # END SPAWN OBJECTS #

	// 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;
	};

	allowConnection = true;	
	sm_done = true;
	publicVariable "sm_done";
};

Link to comment
Share on other sites

  • 0

in server_publishVehicle2.sqf, find this -

// _object setVehicleAmmo DZE_vehicleAmmo;

change it to -

_object setVehicleAmmo 0;

that will remove all ammo from vehicles on buying them. to remove ammo from other vehicles on restart, like the attack helis and so on, do the same thing

in server_publishVehicle.sqf

Link to comment
Share on other sites

  • 0

Vehicle Service Point (Refuel) by Axe Cop

 

 

Change:

_rearm_enable = true;

To:

_rearm_enable = false;

 

You should probably familiarize yourself with that script's config file, AxeCop made things quite configurable.

Link to comment
Share on other sites

  • 0

in server_publishVehicle2.sqf, find this -

// _object setVehicleAmmo DZE_vehicleAmmo;

change it to -

_object setVehicleAmmo 0;

that will remove all ammo from vehicles on buying them. to remove ammo from other vehicles on restart, like the attack helis and so on, do the same thing

in server_publishVehicle.sqf

I now re-read this post and realized that I hadn't added the code to server_publishVehicle.sqf. Where exactly do I add it, as it doesn't have "// _object setVehicleAmmo DZE_vehicleAmmo;"

Link to comment
Share on other sites

  • 0

The server_publishVehicle2.sqf deals with purchasing vehicles. The server_monitor.sqf is where you want to look if they're rearming on restart. Also, using setVehicleAmmo is a bad idea according to vbawol. It apparently causes inconsistancy in ammo count between players. I made a post on how to remove ammo from individual weapons.

Link to comment
Share on other sites

  • 0

This should also work if you want to remove all the mags from a armed vehicle
 

_mags = _object magazinesTurret [0];
{
 _object removeMagazinesTurret [_x,[0]];
} forEach _mags;


_mags = _object magazinesTurret [-1];
{
 _object removeMagazinesTurret [_x,[-1]];
} forEach _mags;
Link to comment
Share on other sites

  • 0

This should also work if you want to remove all the mags from a armed vehicle

 

_mags = _object magazinesTurret [0];
{
 _object removeMagazinesTurret [_x,[0]];
} forEach _mags;


_mags = _object magazinesTurret [-1];
{
 _object removeMagazinesTurret [_x,[-1]];
} forEach _mags;

Where would I enter this script? Is this all I need to remove ammo from vehicles? Now if someone loads ammo into their vehicle will it still have it after restart? I just want to remove all ammo when the vehicle is purchased.

Link to comment
Share on other sites

  • 0

For purchased vehicles: replace line 96 with the above code

https://github.com/vbawol/DayZ-Epoch/blob/master/SQF/dayz_server/compile/server_publishVehicle2.sqf#L96

And add the code here for removing ammo on server startup: (inside "if (!((typeOf _object) in dayz_allowedObjects)) then { } code block")

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

Link to comment
Share on other sites

  • 0

 

Ok got this one in without issue.

 

And add the code here for removing ammo on server startup: (inside "if (!((typeOf _object) in dayz_allowedObjects)) then { } code block")

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

 

This one however I don't understand. Which part of the code do I take? I'm sorry vbawol, need a little more guidance!  :rolleyes:

} code block

Is this what I am adding?

Link to comment
Share on other sites

  • 0

For purchased vehicles: replace line 96 with the above code

https://github.com/vbawol/DayZ-Epoch/blob/master/SQF/dayz_server/compile/server_publishVehicle2.sqf#L96

And add the code here for removing ammo on server startup: (inside "if (!((typeOf _object) in dayz_allowedObjects)) then { } code block")

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

 

I am getting this RPT error now

if(_type in DZE_StripAmmo) then { _object setVehicle>
Error position: <DZE_StripAmmo) then { _object setVehicle>
Error Undefined variable in expression: dze_stripammo
File z\addons\dayz_server\system\server_monitor.sqf, line 154
Error in expression <pos, [], 0, "CAN_COLLIDE"];
Link to comment
Share on other sites

  • 0
if (!((typeOf _object) in dayz_allowedObjects)) then {


// inside code block
_mags = _object magazinesTurret [0];
{
 _object removeMagazinesTurret [_x,[0]];
} forEach _mags;


_mags = _object magazinesTurret [-1];
{
 _object removeMagazinesTurret [_x,[-1]];
} forEach _mags;


};
Link to comment
Share on other sites

  • 0

If your intention is to remove all ammo from every vehicle It is safe to use the above on all vehicles armed or not.

If you only want it on some vehicles this would work:

if (!((typeOf _object) in dayz_allowedObjects)) then {

// inside code block
if ((typeOf _object) in DZE_StripAmmo) then {

_mags = _object magazinesTurret [0];
{
 _object removeMagazinesTurret [_x,[0]];
} forEach _mags;
_mags = _object magazinesTurret [-1];
{
 _object removeMagazinesTurret [_x,[-1]];
} forEach _mags;

};

};

Add this to your variables.sqf (change the classnames of course)

DZE_StripAmmo = ["Classname1", "Classname2"];
Link to comment
Share on other sites

  • 0

 

I am getting this RPT error now

if(_type in DZE_StripAmmo) then { _object setVehicle>
Error position: <DZE_StripAmmo) then { _object setVehicle>
Error Undefined variable in expression: dze_stripammo
File z\addons\dayz_server\system\server_monitor.sqf, line 154
Error in expression <pos, [], 0, "CAN_COLLIDE"];

 

Anyone know how to fix this error??

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
  • Advertisement
  • Discord

×
×
  • Create New...