Friday, September 20, 2024 12:09:39 AM
> settings

Customize


Authenticate

> ExileServer_marxet_system_network_deleteTradeRequest.sqf
/*
    MarXet v2.0
    Written by WolfkillArcadia
    CC BY-NC-SA 4.0
*/
 
private["_sessionID", "_package", "_marxetID", "_playerObject", "_entry", "_requestorUID", "_classname", "_playerMoney", "_fee", "_traderLog"];
_sessionID = _this select 0;
_package = _this select 1;
_marxetID = _package select 0;
try 
{
	_playerObject = _sessionID call ExileServer_system_session_getPlayerObject;
	if (isNull _playerObject) then 
	{
		throw "Player is null";
	};
	if (_playerObject getVariable ["ExileMutex", false]) then 
	{
		throw "Player is Mutex";
	};
	_playerObject setVariable ["ExileMutex", true];
	_entry = MarXetTrading getVariable [_marxetID, nil];
	if (isNil "_entry") then 
	{
		throw "Invalid Marxet ID";
	};
	if (_marxetID call ExileServer_system_request_trading_isLocked) then 
	{
		throw "This item is currently locked. Please try again later";
	};
	_marxetID call ExileServer_marxet_system_request_trading_lock;
	_requestorUID = (_entry select 1) select 0;
	if !(getPlayerUID(_playerObject) isEqualTo _requestorUID) then 
	{
		throw "MMMMM, nice try";
	};
	_classname = (_entry select 3) select 0;
	_playerMoney = _playerObject getVariable ["ExileMoney", 0];
	_fee = floor((getNumber(missionConfigFile >> "CfgExileArsenal" >> _classname >> "price")) * (getNumber(missionConfigFile >> "CfgMarXet" >> "Settings" >> "removalFeeFactor"))) max 1;
	if (_fee > _playerMoney) then 
	{
		throw "You do not have enough money for the removal fee";
	};
	_playerMoney = _playerMoney - _fee;
	_playerObject setVariable ["ExileMoney", _playerMoney, true];
	format["setPlayerMoney:%1:%2", _playerMoney, _playerObject getVariable ["ExileDatabaseID", 0]] call ExileServer_system_database_query_fireAndForget;
	if (_classname isKindOf "AllVehicles") then 
	{
		[_requestorUID, [_classname, _marxetID call ExileServer_marxet_object_vehicle_getID]] call ExileServer_system_safex_addVehicle;
	}
	else
	{
		[_requestorUID, [_classname]] call ExileServer_system_safex_addItem;
	};
	format["marxetDeleteTrade:%1", _marxetID] call ExileServer_system_database_query_fireAndForget;
	MarxetTrading setVariable [_marxetID, nil, true];
	[_sessionID, "deleteTradeResponse", [true, ""]] call ExileServer_system_network_send_to;
	MarXetUpdatePending = true;
	publicVariable "MarXetUpdatePending";
	if (getNumber(missionConfigFile >> "CfgMarXet" >> "Settings" >> "Logging" >> "logToFile") isEqualTo 1) then
	{
		_traderLog = format [
			"PLAYER %1 (%2) DELETED A TRADE REQUEST. ID: %3. TRADE ITEM/VEHICLE: %4. REQUESTED ITEMS/VEHICLES: %5", 
			_playerObject, 
			getPlayerUID(_playerObject),
			_marxetID,
			_classname,
			_entry select 4
		];
		"extDB3" callExtension format["1:TRADING:%1",_traderLog];
	};
	if (getNumber(missionConfigFile >> "CfgMarXet" >> "Settings" >> "Logging" >> "logToDiscord") isEqualTo 1) then
	{
		[
			"success", 
			"embed", 
			[
				"Trade Deleted",
				"",
				[
					["Player Name (UID)", format["%1 (%2)", name _playerObject, getPlayerUID(_playerObject)], true],
					["MarXet ID", _marxetID, true],
					["Trading For", _classname, true],
					["Requested Items/Vehicles", format["```%1```", _entry select 4], true]
				]
			]
		]
		call ESM_fnc_logToDiscord;
	};
}
catch 
{
	_marxetID call ExileServer_marxet_system_request_trading_unlock;
	[_sessionID, "deleteTradeResponse", [false, _exception]] call ExileServer_system_network_send_to;
};
if (!isNil "_playerObject") then 
{
	_playerObject setVariable ["ExileMutex", false];
};
All opinions represented herein are my own
- © 2024 itsthedevman
- build 3c15a1b