Advertisement
GauHelldragon

Redstart Luabox

Jan 19th, 2018
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.98 KB | None | 0 0
  1. function GetShieldType(pos)
  2.     if ( pos.z < -15 ) then
  3.         return 1 -- rear shield
  4.     elseif ( pos.z < -10 ) then
  5.         if ( pos.x > 2 ) then
  6.             return 2 -- right shields
  7.         else
  8.             return 3 -- left shields
  9.         end
  10.     else
  11.         return 4 -- turret/midshields
  12.     end
  13. end
  14.  
  15. function setSpinners(I,level,motor)
  16.     --I:ClearLogs()
  17.     --I:Log("Setting spinners to " .. level)
  18.     for s = 0,I:GetSpinnerCount()-1,1 do
  19.        
  20.         if ( I:GetSpinnerInfo(s).LocalPosition.z > -10 ) then
  21.             --I:Log("Spinner " .. s .. " Activating!" );
  22.             I:SetSpinnerContinuousSpeed(s,level);
  23.             I:SetSpinnerPowerDrive(s,motor);
  24.         end
  25.     end
  26. end
  27.  
  28. function SetAltitude(I,targetPos)
  29.  
  30.     desiredAlt = 300;
  31.     myAlt = I:GetConstructPosition().y;
  32.     if ( targetPos.Valid and targetPos.AltitudeAboveSeaLevel + 100 > desiredAlt ) then
  33.         desiredAlt = targetPos.AltitudeAboveSeaLevel + 100;
  34.     end
  35.     motor = 1.5
  36.     if ( myAlt < desiredAlt - 50 or desiredAlt > 400 ) then motor = 10.0  end
  37.    
  38.     if ( myAlt < desiredAlt ) then
  39.         setSpinners(I,30,motor);
  40.     else
  41.         setSpinners(I,1,motor);
  42.     end
  43. end
  44.  
  45. function Update(I)
  46.     targetPos = I:GetTargetPositionInfo(0,0);
  47.     I:ClearLogs();
  48.    
  49.     SetAltitude(I,targetPos);
  50.     if ( not targetPos.Valid ) then
  51.         --I:Log("Shields Off");
  52.         -- Turn off all shields
  53.         I:Component_SetIntLogicAll(10,0);
  54.     else
  55.         for s = 0,I:Component_GetCount(10)-1,1 do
  56.             sPos = I:Component_GetLocalPosition(10,s);
  57.             shieldType = GetShieldType(sPos);
  58.             turnOn = false;
  59.            
  60.             if ( shieldType == 4 ) then -- MID-SHIELD always on
  61.                 turnOn = true;         
  62.             elseif ( shieldType == 3 ) and ( targetPos.Azimuth > 30 ) then -- BACK SHIELD
  63.                 turnOn = true;
  64.             elseif ( shieldType == 2 ) and ( targetPos.Azimuth < -30 ) then -- BACK SHIELD
  65.                 turnOn = true; 
  66.             elseif ( shieldType == 1 ) and ( targetPos.Azimuth > 90 or targetPos.Azimuth < -90 ) then -- REAR SHIELD
  67.                 turnOn = true;             
  68.             end
  69.            
  70.             if ( turnOn ) then
  71.                 I:Component_SetFloatLogic(10,s,4.0);
  72.             else
  73.                 I:Component_SetFloatLogic(10,s,0.0);
  74.             end        
  75.         end
  76.  
  77.  
  78.     end
  79. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement