Add handling of full toolbelt

Tested and confirmed working in all cases with both copy key and
sledgehammer crafting.
This commit is contained in:
ebaydayz
2016-02-19 15:20:53 -05:00
parent 48218bca50
commit 59d853ebc9

View File

@@ -1,22 +1,29 @@
/* /*
Description: Description:
Checks whether the player already has the tool on their toolbelt and then adds it. Useful for batch crafting tools. Checks whether the player already has the tool on their toolbelt and then adds it. Useful for batch crafting tools.
1. If they don't then it adds it to their toolbelt. 1. If they don't then it adds it to their toolbelt. If the toolbelt is full it is dropped on the floor.
2. If they do then it adds it to their backpack. If their backpack is full it simply falls on the ground. 2. If they do then it adds it to their backpack. If their backpack is full it spills out on the floor.
3. If they have no backpack it spawns on the floor as a last resort. 3. If they have no backpack it spawns on the floor as a last resort.
The player is given an appropriate systemChat message in case 2 or 3. The player is given an appropriate systemChat message in each case.
Parameter: Parameter:
_this: string - toolbelt item classname to check and add _this: string - toolbelt item classname to check and add
Returns:
false if item is not a duplicate, otherwise true
How to use: How to use:
"ItemSledge" call player_addDuplicateTool; "ItemSledge" call player_addDuplicateTool;
*/ */
private ["_bag","_hasTool","_location","_object"]; private ["_bag","_dropOnFloor"];
_hasTool = true;
_dropOnFloor = {
private ["_location","_object"];
systemChat format[(localize "str_epoch_player_314"),_this];
_location = player modeltoworld [0,0.3,0];
if ((_location select 2) < 0) then {_location set [2,0];};
_object = createVehicle ["WeaponHolder",_location,[],0,"CAN_COLLIDE"];
if (surfaceIsWater _location) then {_object setPosASL (getPosASL player);} else {_object setPosATL _location;};
_object setVariable ["permaLoot",true];
_object addWeaponCargoGlobal [_this,1];
};
if (_this in items player) then { if (_this in items player) then {
_bag = unitBackpack player; _bag = unitBackpack player;
@@ -24,17 +31,11 @@ if (_this in items player) then {
systemChat format[(localize "str_epoch_player_313"),_this]; systemChat format[(localize "str_epoch_player_313"),_this];
_bag addWeaponCargoGlobal [_this,1]; _bag addWeaponCargoGlobal [_this,1];
} else { } else {
systemChat format[(localize "str_epoch_player_314"),_this]; _this call _dropOnFloor;
_location = player modeltoworld [0,0.3,0];
if ((_location select 2) < 0) then {_location set [2,0];};
_object = createVehicle ["WeaponHolder",_location,[],0,"CAN_COLLIDE"];
if (surfaceIsWater _location) then {_object setPosASL (getPosASL player);} else {_object setPosATL _location;};
_object setVariable ["permaLoot",true];
_object addWeaponCargoGlobal [_this,1];
}; };
} else { } else {
_hasTool = false; if !([player,_this] call BIS_fnc_invAdd) then {
player addWeapon _this; systemChat (localize "str_epoch_player_107");
}; _this call _dropOnFloor;
};
_hasTool };