mirror of
https://github.com/Ragora/T2-ACCM.git
synced 2026-01-19 19:04:46 +00:00
77 lines
2.4 KiB
C#
77 lines
2.4 KiB
C#
|
|
$NightVisionValue = 0.2;
|
||
|
|
|
||
|
|
function NightVisionLoop(%client){
|
||
|
|
if(!isObject(%client.player))
|
||
|
|
return;
|
||
|
|
%client.player.setWhiteOut($NightVisionValue);
|
||
|
|
%client.player.nightvision = schedule(50, 0, "NightVisionLoop", %client);
|
||
|
|
}
|
||
|
|
|
||
|
|
function serverCmdDoGrab(%client){
|
||
|
|
%obj = %client.player;
|
||
|
|
if(!isObject(%obj))
|
||
|
|
return;
|
||
|
|
if(%obj.grabbing != 1){
|
||
|
|
%pos = %obj.getMuzzlePoint($WeaponSlot);
|
||
|
|
%vec = %obj.getMuzzleVector($WeaponSlot);
|
||
|
|
%targetpos = vectoradd(%pos,vectorscale(%vec,5));
|
||
|
|
%Tobj = containerraycast(%pos, %targetpos, $typemasks::PlayerObjectType | $typemasks::CorpseObjectType, %obj);
|
||
|
|
%Tobj = getword(%Tobj,0);
|
||
|
|
if(%Tobj.client.team == %client.team && !$TeamDamage)
|
||
|
|
return; // Can't pickup teammates now.
|
||
|
|
if(isObject(%Tobj)){
|
||
|
|
if(vectorDist(%obj.getForwardVector(),%Tobj.getForwardVector()) > 1.6)
|
||
|
|
return;
|
||
|
|
%armortype = %obj.getdatablock().getname();
|
||
|
|
if(!(%armortype $= "SpecOpsMaleHumanArmor" || %armortype $= "SpecOpsFemaleHumanArmor" || %armortype $= "SpecOpsMaleBiodermArmor"))
|
||
|
|
return;
|
||
|
|
if(%Tobj.grabbing == 1)
|
||
|
|
%Tobj.grabbing = 0;
|
||
|
|
if(%Tobj.grabbed == 1)
|
||
|
|
return;
|
||
|
|
%dataBlock = %Tobj.getDataBlock();
|
||
|
|
%mass = %dataBlock.mass;
|
||
|
|
if(%mass >= 150){
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
%Tobj.grabbed = 1;
|
||
|
|
%Tobj.setMoveState(true);
|
||
|
|
%obj.grabbing = 1;
|
||
|
|
schedule(100, 0, "GrabLoop", %obj, %Tobj);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
%obj.grabbing = 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
function GrabLoop(%obj, %Tobj){
|
||
|
|
if(!(isObject(%obj) && isObject(%Tobj)))
|
||
|
|
return;
|
||
|
|
if(%obj.getstate() $= "dead"){
|
||
|
|
%Tobj.setMoveState(false);
|
||
|
|
%Tobj.grabbed = 0;
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if(%obj.grabbing != 1){
|
||
|
|
%Tobj.setMoveState(false);
|
||
|
|
%Tobj.grabbed = 1;
|
||
|
|
if(%Tobj.getState() !$= "Dead")
|
||
|
|
%Tobj.getDataBlock().damageObject(%Tobj, %obj, %Tobj.getPosition(), 10, $DamageType::blah, "0 0 1", %obj.getControllingClient(), %obj);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if(%Tobj.getMountedImage($weaponslot) !$= "")
|
||
|
|
%Tobj.throwWeapon();
|
||
|
|
if(%Tobj.getMountedImage($Backpackslot) !$= "")
|
||
|
|
%Tobj.throwPack();
|
||
|
|
if(%obj.getMountedImage($weaponslot) !$= "")
|
||
|
|
%obj.unmountImage($weaponslot);
|
||
|
|
|
||
|
|
%pos = %obj.getPosition();
|
||
|
|
%rot = %obj.getRotation();
|
||
|
|
%vel = vectoradd(%obj.getvelocity(), "0 0 1");
|
||
|
|
%vec = vectorScale(%obj.getForwardVector(),3);
|
||
|
|
%vec = vectorAdd(%vec, "0 0 0.5");
|
||
|
|
%Tobj.setTransform(vectorAdd(%pos, %vec)@" "@%rot);
|
||
|
|
%Tobj.setvelocity(%vel);
|
||
|
|
schedule(100, 0, "GrabLoop", %obj, %Tobj);
|
||
|
|
}
|