Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.69 KB | None | 0 0
  1. ///////////////////////////////
  2. // © 2009-2010 Pulsar Effect //
  3. //    All rights reserved    //
  4. ///////////////////////////////
  5. // This material may not be  //
  6. //   reproduced, displayed,  //
  7. //  modified or distributed  //
  8. // without the express prior //
  9. // written permission of the //
  10. //   the copyright holder.   //
  11. ///////////////////////////////
  12.  
  13.  
  14. local function catchUnderglowPress ( Player )
  15.     local vehicleTable = Player:GetVehicle().vehicleTable;
  16.     local owner = Player:GetVehicle().owner;
  17.    
  18.     if (!owner.Vehicles[vehicleTable.ID][4] || owner.Vehicles[vehicleTable.ID][4] == 0) then return; end
  19.     if (!Player:InVehicle()) then return; end
  20.     if (Player:GetVehicle().IsPassengerSeat) then return; end
  21.     if (!Player:GetVehicle().vehicleTable.UnderglowPositions) then return; end
  22.    
  23.     Player.lastUnderglowSwap = Player.lastUnderglowSwap or CurTime();
  24.     if (Player.lastUnderglowSwap > CurTime()) then return; end
  25.     Player.lastUnderglowSwap = CurTime() + .25;
  26.        
  27.     if (!Player:GetVehicle().Underglow) then
  28.         Player:GetVehicle().Underglow = {};
  29.        
  30.         for k, v in pairs(Player:GetVehicle().vehicleTable.UnderglowPositions) do                      
  31.             local underglowLight = ents.Create("light_dynamic")
  32.                     underglowLight:SetParent(Player:GetVehicle());
  33.                     underglowLight:SetLocalPos(v[1]);
  34.                    
  35.                     local realColor = HEADLIGHT_COLORS[Player:GetVehicle().headLightColor][1];
  36.                    
  37.                     underglowLight:SetKeyValue( "_light", realColor.r .. " " .. realColor.g .. " " .. realColor.b .. " " .. realColor.a)
  38.                     underglowLight:SetKeyValue( "style", 0 )
  39.                     underglowLight:SetKeyValue( "distance", 500 )
  40.                     underglowLight:SetKeyValue( "brightness", 6 )
  41.                     underglowLight:SetKeyValue( "_cone", 90 )
  42.                     underglowLight:SetKeyValue( "_inner_cone", 45 )
  43.                     underglowLight:SetKeyValue( "angles", "90 0 0" )
  44.                     underglowLight:SetKeyValue( "spotlight_radius", 110 )
  45.                    
  46.                     underglowLight:Spawn();
  47.            
  48.             table.insert(Player:GetVehicle().Underglow, underglowLight);
  49.         end
  50.     end
  51.    
  52.     if (Player:GetVehicle().UnderglowOn) then
  53.         for k, v in pairs(Player:GetVehicle().Underglow) do
  54.             v:Fire("TurnOff", "", 0);
  55.             v.StatusOn = false;
  56.         end
  57.        
  58.         Player:GetVehicle().UnderglowOn = nil;
  59.     else
  60.         for k, v in pairs(Player:GetVehicle().Underglow) do
  61.             v:Fire("TurnOn", "", 0);
  62.             v.StatusOn = true;
  63.         end
  64.        
  65.         Player:GetVehicle().UnderglowOn = true;
  66.     end
  67. end
  68. concommand.Add("perp_v_ug", catchUnderglowPress);
  69.  
  70. local function catchFlashlightPress ( Player )
  71.     if (!Player:InVehicle()) then return; end
  72.     if (Player:GetVehicle().IsPassengerSeat) then return; end
  73.     if (!Player:GetVehicle().vehicleTable.HeadlightPositions) then return; end
  74.    
  75.     Player.lastHeadlightSwap = Player.lastHeadlightSwap or CurTime();
  76.     if (Player.lastHeadlightSwap > CurTime()) then return; end
  77.     Player.lastHeadlightSwap = CurTime() + .25;
  78.        
  79.     if (!Player:GetVehicle().Headlights) then
  80.         Player:GetVehicle().Headlights = {};
  81.        
  82.         for k, v in pairs(Player:GetVehicle().vehicleTable.HeadlightPositions) do                      
  83.             local flashlight = ents.Create("env_projectedtexture");
  84.                 flashlight:SetParent(Player:GetVehicle());
  85.                    
  86.                 flashlight:SetLocalPos(v[1] + Vector(5, 0, 0));
  87.                 flashlight:SetLocalAngles(v[2] + Angle(0, 90, 0));
  88.                    
  89.                 flashlight:SetKeyValue("enableshadows", 0);
  90.                 flashlight:SetKeyValue("farz", 1028);
  91.                 flashlight:SetKeyValue("nearz", 64);
  92.                    
  93.                 flashlight:SetKeyValue("lightfov", 60);
  94.                
  95.                 local realColor = HEADLIGHT_COLORS[Player:GetVehicle().headLightColor][1];
  96.                 flashlight:SetKeyValue("lightcolor", realColor.r .. " " .. realColor.g .. " " .. realColor.b .. " " .. realColor.a);
  97.             flashlight:Spawn();
  98.                
  99.             flashlight:Input("SpotlightTexture", NULL, NULL, "effects/flashlight001");
  100.            
  101.             table.insert(Player:GetVehicle().Headlights, flashlight);
  102.         end
  103.     end
  104.    
  105.     if (Player:GetVehicle().HeadlightsOn) then
  106.         for k, v in pairs(Player:GetVehicle().Headlights) do
  107.             v:Fire("TurnOff", "", 0);
  108.             v.StatusOn = false;
  109.         end
  110.        
  111.         Player:GetVehicle().HeadlightsOn = nil;
  112.         Player:GetVehicle():SetNetworkedBool("hl", false);
  113.     else
  114.         for k, v in pairs(Player:GetVehicle().Headlights) do
  115.             v:Fire("TurnOn", "", 0);
  116.             v.StatusOn = true;
  117.         end
  118.        
  119.         Player:GetVehicle().HeadlightsOn = true;
  120.        
  121.         Player:GetVehicle():SetNetworkedBool("hl", true);
  122.     end
  123. end
  124. concommand.Add("perp_v_f", catchFlashlightPress);
  125.  
  126. local function flashHeadlights ( )
  127.     for k, v in pairs(ents.FindByClass("prop_vehicle_jeep")) do
  128.         if (v.vehicleTable.ID == 'z' && v:GetNetworkedBool("slights", false)) then
  129.             local shouldBeOn_1, shouldBeOn_2;
  130.            
  131.             local shouldBeOn_C = math.sin(CurTime() * 5);
  132.             if (shouldBeOn_C > .4 && shouldBeOn_C < .85) then
  133.                 shouldBeOn_1 = true;
  134.             elseif (shouldBeOn_C > -0.85 && shouldBeOn_C < -0.4) then
  135.                 shouldBeOn_2 = true;
  136.             end
  137.                
  138.             local tV = 3;
  139.             if (shouldBeOn_1) then tV = 1; end
  140.             if (shouldBeOn_2) then tV = 2; end
  141.                
  142.             if (v:GetNetworkedInt("fl", 0) != tV) then
  143.                 v:SetNetworkedInt("fl", tV);
  144.             end
  145.            
  146.             if (v.Headlights && v:GetNetworkedBool("hl", false)) then
  147.                 if (shouldBeOn_1 && !v.Headlights[1].Status) then
  148.                     v.Headlights[1].Status = true;
  149.                     v.Headlights[1]:Fire("TurnOn", "", 0);
  150.                 elseif (!shouldBeOn_1 && v.Headlights[1].Status) then
  151.                     v.Headlights[1].Status = false;
  152.                     v.Headlights[1]:Fire("TurnOff", "", 0);
  153.                 end
  154.                    
  155.                 if (shouldBeOn_2 && !v.Headlights[2].Status) then
  156.                     v.Headlights[2].Status = true;
  157.                     v.Headlights[2]:Fire("TurnOn", "", 0);
  158.                 elseif (!shouldBeOn_2 && v.Headlights[2].Status) then
  159.                     v.Headlights[2].Status = false;
  160.                     v.Headlights[2]:Fire("TurnOff", "", 0);
  161.                 end
  162.             end
  163.         elseif (v:GetNetworkedInt("fl", 0) != 0) then
  164.             v:SetNetworkedInt("fl", 0);
  165.            
  166.             if (v.Headlights) then
  167.                 local shouldBeOn_1 = v:GetNetworkedBool("hl", false);
  168.                 local shouldBeOn_2 = v:GetNetworkedBool("hl", false);
  169.                
  170.                 if (shouldBeOn_1 && !v.Headlights[1].Status) then
  171.                     v.Headlights[1].Status = true;
  172.                     v.Headlights[1]:Fire("TurnOn", "", 0);
  173.                 elseif (!shouldBeOn_1 && v.Headlights[1].Status) then
  174.                     v.Headlights[1].Status = false;
  175.                     v.Headlights[1]:Fire("TurnOff", "", 0);
  176.                 end
  177.                        
  178.                 if (shouldBeOn_2 && !v.Headlights[2].Status) then
  179.                     v.Headlights[2].Status = true;
  180.                     v.Headlights[2]:Fire("TurnOn", "", 0);
  181.                 elseif (!shouldBeOn_2 && v.Headlights[2].Status) then
  182.                     v.Headlights[2].Status = false;
  183.                     v.Headlights[2]:Fire("TurnOff", "", 0);
  184.                 end
  185.             end
  186.         end
  187.     end
  188. end
  189. hook.Add("Think", "flashHeadlights", flashHeadlights);
  190.  
  191. local function catchHornHonk ( Player )
  192.     if (Player.nextHornHonk && Player.nextHornHonk > CurTime()) then return; end
  193.     if (!Player:InVehicle()) then return; end
  194.    
  195.     local vehicleTable = Player:GetVehicle().vehicleTable;
  196.    
  197.     if (!vehicleTable) then return; end
  198.     if (!vehicleTable.HornNoise) then return; end
  199.    
  200.     horn_noise = vehicleTable.HornNoise;
  201.    
  202.     if (horn_noise == NORMAL_HORNS) then
  203.         local randHorn = math.random(1, 1000);
  204.        
  205.         if (randHorn < 499) then
  206.             horn_noise = "PERP2.5/car_horn.wav";
  207.         elseif (randHorn < 998) then
  208.             horn_noise = "PERP2.5/car_horn_long.wav";
  209.         else
  210.             horn_noise = "PERP2.5/car_horn_dixie.mp3";
  211.         end
  212.     end
  213.    
  214.     Player:GetVehicle():EmitSound(horn_noise);
  215.     Player.nextHornHonk = CurTime() + SoundDuration(horn_noise) + 1;
  216.    
  217.     if (vehicleTable.ID == "y") then Player.nextHornHonk = Player.nextHornHonk - 1.05; end
  218. end
  219. concommand.Add("perp_v_h", catchHornHonk);
  220.  
  221. local function manageSpinouts ( )
  222.     for k, v in pairs(player.GetAll()) do
  223.         if (v:InVehicle() && v:GetVehicle().vehicleTable && v:GetVehicle().vehicleTable.RevvingSound &&
  224.                 (!v.nextSpinout || v.nextSpinout < CurTime()) && v:KeyDown(IN_FORWARD) && v:KeyDown(IN_JUMP)) then
  225.                
  226.             local speed = v:GetVehicle():GetVelocity():Length();
  227.            
  228.             if (speed < 50) then
  229.                 v.nextSpinout = CurTime() + SoundDuration(v:GetVehicle().vehicleTable.RevvingSound);
  230.                
  231.                 local recipient = RecipientFilter();
  232.                 recipient:AddPVS(v);
  233.                 recipient:AddPlayer(v);
  234.                
  235.                 umsg.Start("perp2_spinout", recipient);
  236.                     umsg.Entity(v:GetVehicle());
  237.                 umsg.End();
  238.             end
  239.         end    
  240.     end
  241. end
  242. hook.Add("Think", "manageSpinouts", manageSpinouts);
  243.  
  244. local function catchHyd ( Player )
  245.     if (Player.nextHyd && Player.nextHyd > CurTime()) then return; end
  246.     if (!Player:InVehicle()) then return; end
  247.    
  248.     local vehicleTable = Player:GetVehicle().vehicleTable;
  249.     local owner = Player:GetVehicle().owner;
  250.    
  251.     if (!vehicleTable) then return; end
  252.  
  253.     if (vehicleTable.SirenNoise) then
  254.         Player:GetVehicle():SetNetworkedBool("slights", !Player:GetVehicle():GetNetworkedBool("slights", false));
  255.        
  256.         return;
  257.     end
  258.    
  259.     if (!owner.Vehicles[vehicleTable.ID]) then return; end
  260.     if (!owner.Vehicles[vehicleTable.ID][3] || owner.Vehicles[vehicleTable.ID][3] == 0) then return; end
  261.        
  262.     Player:GetVehicle():GetPhysicsObject():ApplyForceCenter(Player:GetVehicle():GetUp() * Player:GetVehicle():GetPhysicsObject():GetMass() * 250);
  263.    
  264.     Player.nextHyd = CurTime() + .5;
  265. end
  266. concommand.Add("perp_v_y", catchHyd);
  267.  
  268. function GM.ToggleSiren ( Player )
  269.     if (!Player:GetVehicle()) then return; end
  270.    
  271.     Player:GetVehicle():SetNetworkedBool("siren", !Player:GetVehicle():GetNetworkedBool("siren", false));
  272. end
  273.  
  274. local function manageLoudSirens ( )
  275.     for k, v in pairs(ents.FindByClass("prop_vehicle_jeep")) do
  276.         if (v.vehicleTable && v:GetDriver() && IsValid(v:GetDriver()) && v:GetDriver():IsPlayer() && v.vehicleTable.SirenNoise_Alt) then
  277.             if (v:GetDriver():KeyDown(IN_WALK) && !v:GetNetworkedBool("siren_loud", false)) then
  278.                 v:SetNetworkedBool("siren_loud", true);
  279.             elseif (!v:GetDriver():KeyDown(IN_WALK) && v:GetNetworkedBool("siren_loud", false)) then
  280.                 v:SetNetworkedBool("siren_loud", false);
  281.             end
  282.         end
  283.     end
  284. end
  285. hook.Add("Think", "manageLoudSirens", manageLoudSirens);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement