Skip to content

Instantly share code, notes, and snippets.

@Cuel
Created January 6, 2017 07:09
Show Gist options
  • Save Cuel/e03cacb98ae9fa955d23db9e7692bcba to your computer and use it in GitHub Desktop.
Save Cuel/e03cacb98ae9fa955d23db9e7692bcba to your computer and use it in GitHub Desktop.
jetpack
ace_overheating_enabled = false;
ace_overheating_overheatingDispersion = false;
[] spawn {
sleep 0.5;
if (!hasInterface) exitWith {};
waitUntil {player == player};
KEY_W = false;
KEY_A = false;
KEY_S = false;
KEY_D = false;
KEY_GO = false;
enableCamShake false;
player addACtion ["<t color='#00FF00'>Go Juice On</t>", {KEY_GO = true;}];
player addACtion ["<t color='#FF0000'>Go Juice Off</t>", {KEY_GO = false;}];
player addACtion ["<t color='#000000'>-reset from fall-</t>", {player playMove "AidlPercMstpSrasWrflDnon_AI";}];
player addEventHandler ["Fired", {
if (player ammo (currentMuzzle player) < 20) then {
player setVehicleAmmo 1;
};
}];
sleep 3;
{
_colorRed = 0.8438;
_colorGreen = 0.1383;
_colorBlue = 0.1353;
if (side _x == resistance) then {
_colorRed = 0.1183;
_colorGreen = 1;
_colorBlue = 0.1867;
};
_colorAlpha = 0.3;
_timeout = 0;
_particleLifeTime = 1;
_particleDensity = 5;
_particleSize = 2;
_particleSpeed = 0;
_particleLifting = 1;
_windEffect = 0;
_effectSize = 1;
_expansion = 1;
_emitter = "#particlesource" createVehicleLocal (getPos _x);
_emitter attachTo [_x, [0,0,0]];
_emitter setParticleParams [["\A3\data_f\ParticleEffects\Universal\Universal_02",8,0,40,1],"","billboard",1,_particleLifeTime,[0,0,0],[0,0,2*_particleSpeed],0,0.05,0.04*_particleLifting,0.05*_windEffect,[1 *_particleSize + 0, 1.8 * _particleSize + 15],
[[1*_colorRed,1*_colorGreen,1*_colorBlue,1*_colorAlpha],[1*_colorRed,1*_colorGreen,1*_colorBlue,0.9*_colorAlpha],[1*_colorRed,1*_colorGreen,1*_colorBlue,0.6*_colorAlpha],[1*_colorRed,1*_colorGreen,1*_colorBlue,0*_colorAlpha]],
[1,0.55,0.35], 0.1, 0.08*_expansion, "", "", ""];
_emitter setParticleRandom [_particleLifeTime/4, [0.5*_effectSize,0.5*_effectSize,0.2*_effectSize], [0.3,0.3,0.5], 1, 0, [0,0,0,0.06], 0, 0];
_emitter setDropInterval (1/_particleDensity);
_x setVariable ["pabst_emiter", _emitter];
_x addEventHandler ["Killed", {deleteVehicle ((_this select 0) getVariable ["pabst_emiter", objNull]);}];
} forEach allUnits;
player setVariable ["ACE_GForceCoef", 0.1];
{
_x removeAllEventHandlers "HandleDamage";
} forEach allUnits;
player addEventHandler ["HandleDamage", {
_unit = _this select 0;
_selectionName = _this select 1;
_damage = _this select 2;
_type = _this select 4;
_hitName = switch (_selectionName) do {
case ("leg_r"): {"HitRightLeg"};
case ("hand_r"): {"HitRightArm"};
case ("leg_l"): {"HitLeftLeg"};
case ("hand_l"): {"HitLeftArm"};
case ("head"): {"HitHead"};
case ("body"): {"HitBody"};
default {"HitBody"};
};
_curDam = player getHitPointDamage _hitName;
_result = if ((_type == "") || (_type == "DemoCharge_Remote_Ammo_Scripted") || (_type == "IEDUrbanBig_Remote_Ammo")) then {
_curDam
} else {
_damage
};
_result
}];
(findDisplay 46) displayAddEventHandler ["KeyDown",
"_handled = false;
switch (true) do {
case ((_this select 1) in (actionKeys 'MoveForward')): {KEY_W = true;};
case ((_this select 1) in (actionKeys 'TurnLeft')): {KEY_A = true;};
case ((_this select 1) in (actionKeys 'MoveBack')): {KEY_S = true;};
case ((_this select 1) in (actionKeys 'TurnRight')): {KEY_D = true;};
};
_handled;"];
(findDisplay 46) displayAddEventHandler ["KeyUP",
"_handled = false;
switch (true) do {
case ((_this select 1) in (actionKeys 'MoveForward')): {KEY_W = false;};
case ((_this select 1) in (actionKeys 'TurnLeft')): {KEY_A = false;};
case ((_this select 1) in (actionKeys 'MoveBack')): {KEY_S = false;};
case ((_this select 1) in (actionKeys 'TurnRight')): {KEY_D = false;};
};
_handled;"];
0 fadeSound 0.5;
[{
if ((isNull player) || {!alive player}) exitWith {};
params ["_args"];
_args params ["_lastTime"];
_delta = time - _lastTime;
_args set [0, time];
if (KEY_GO) then {
_playerPosATL = getPosATL player;
_movementX = 0;
_movementY = 0;
_bombRange = 20 * _delta;
if (KEY_W) then {_movementY = 1 * _bombRange;};
if (KEY_A) then {_movementX = 1 * _bombRange;};
if (KEY_S) then {_movementY = -1 * _bombRange;};
if (KEY_D) then {_movementX = -1 * _bombRange;};
_newZ = if ((_playerPosATL select 2) < 20) then {
(20 - (_playerPosATL select 2)) / 5;
} else {
0;
};
if ((_playerPosATL select 2) < 30) then {
if (((velocity player) select 2) < -10) then {
_newZ = _newZ + 1;
};
if (((velocity player) select 2) < -20) then {
_newZ = _newZ + 1.5;
};
if ((_playerPosATL select 2) < 10) then {
_newZ = _newZ + (10 - (_playerPosATL select 2)) / 3;
};
if ((_playerPosATL select 2) < 5) then {
_newZ = _newZ + (5 - (_playerPosATL select 2)) / 1;
};
};
if ((_playerPosATL select 2) < 4) then {
_newZ = _newZ + 4;
};
if ((_playerPosATL select 2) < 2) then {
_newZ = _newZ + 4;
};
if ((_playerPosATL select 2) > 30) then {
if (((velocity player) select 2) > 10) then {
_newZ = _newZ - 2.5;
};
if ((_playerPosATL select 2) > 40) then {
_newZ = _newZ - ((_playerPosATL select 2) - 40) / 5;
};
};
if ((_playerPosATL select 2) > 90) then {
_newZ = (-15 + -1 * ((velocity player) select 2));
};
_newX = (_movementX * (cos (180 + getDir player))) + (_movementY * (sin (getDir player)));
_newY = (_movementX * (sin (getDir player))) + (_movementY * (cos (getDir player)));
_diff = [_newX, _newY, _newZ] vectorAdd ((velocity player) vectorMultiply (1-0.05*_delta));
player setVelocity _diff;
};
}, 0.1, [time]] call CBA_fnc_addPerFrameHandler;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment