Files
DayZ-Epoch/dayz_code/actions/build.sqf
vbawol 320046779b 0.992
+ Added variable pricing to traders. Stock under 5 will be sold at the
buy price and over 50 will be bought at the sell price.
+ Fixed trades not forcing a gear save and added more forced gear saves.
+ Added test for time based UID for purchased vehicles.
+ Reduced humanity gained by using a blood bag to 100 down from 250.
+ Added 5 minute penalty knockout for combat loggers.
+ Added prevention to logging out in a trader city. fixes #171
+ Changed cargo check to only show on alive vehicles. Fixes #176
+ Potential fix for gunner on armored SUV. Fixes #172
+ Fixes for refueling and repairing that was broken by 1.7.61
+ Removed taming of dogs for now. fixes #162
2013-03-03 13:41:35 -06:00

111 lines
2.9 KiB
Plaintext

private["_location","_isOk","_dir","_classname","_item"];
_location = player modeltoworld [0,1,0];
_location set [2,0];
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_isWater = (surfaceIsWater _location) or dayz_isSwimming;
if(_isWater) exitWith {cutText [localize "str_player_26", "PLAIN DOWN"];};
if(_onLadder) exitWith {cutText [localize "str_player_21", "PLAIN DOWN"];};
if (vehicle player != player) exitWith {cutText ["You may not build while in a vehicle", "PLAIN DOWN"]};
_item = _this;
_classname = getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "create");
_text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");
_hasbuilditem = _this in magazines player;
if (!_hasbuilditem) exitWith {cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]};
_dir = getDir player;
_offset_x = 0;
_offset_y = 1.5;
_offset_z = 0;
_offset_z_attach = 0.5;
// Start Preview loop
_tmpbuilt = createVehicle ["_classname", _location, [], 0, "CAN_COLLIDE"];
_tmpbuilt setdir _dir;
_tmpbuilt attachTo [player,[_offset_x,_offset_y,_offset_z_attach]];
_cancel = false;
_counter = 0;
_isOk = true;
while {_isOk} do {
if(_counter == 0) then {
cutText ["Planning consruction stand still 5 seconds to build.", "PLAIN DOWN"];
sleep 5;
_location1 = getPosATL player;
sleep 5;
_location2 = getPosATL player;
if(_location1 distance _location2 < 0.1) exitWith {
cutText ["Started consruction move within 5 seconds to cancel.", "PLAIN DOWN"];
_location3 = getPosATL player;
sleep 5;
_location4 = getPosATL player;
if(_location3 distance _location4 > 0.1) exitWith {
_isOk = false;
_cancel = true;
};
_isOk = false;
};
};
if(_counter >= 1) exitWith {
_isOk = false;
_cancel = true;
};
_counter = _counter + 1;
};
detach _tmpbuilt;
// Get location of detached tmp built
_built_location = (getPosATL _tmpbuilt);
// force to ground
_built_location set [2,0];
if(!_cancel) then {
_dir = getDir player;
player removeMagazine _item;
disableSerialization;
call dayz_forceSave;
player playActionNow "Medic";
sleep 1;
_dis=20;
_sfx = "repair";
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
[player,_dis,true,(getPosATL player)] spawn player_alertZombies;
sleep 5;
player allowDamage false;
_object = createVehicle [_classname, _built_location, [], 0, "CAN_COLLIDE"];
_object setDir _dir;
player reveal _object;
cutText [format[localize "str_build_01",_text], "PLAIN DOWN"];
//["dayzPublishObj",[dayz_characterID,_object,[_dir,_location],_classname]] call callRpcProcedure;
dayzPublishObj = [dayz_characterID,_object,[_dir,_location],_classname];
publicVariableServer "dayzPublishObj";
sleep 2;
player allowDamage true;
} else {
cutText [format["Canceled construction of %1.",_text], "PLAIN DOWN"];
};