Advertisement
Guest User

Mission script example

a guest
Mar 10th, 2015
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.70 KB | None | 0 0
  1. --------------------------------------------------------------------------------
  2. -- Mission script for checkpoints
  3. --------------------------------------------------------------------------------
  4. -- By Shurumov Ilya
  5. -- 11 Mar 2015
  6. --------------------------------------------------------------------------------
  7.  
  8. world:SetLevelName("default")
  9. world:SetEnvironmentName("dusk_clear")
  10.  
  11. SetGameState( GAMESTATE_LOADING )   -- load level
  12.  
  13. --------------------------------------------------------------------------------
  14.  
  15. Checkpoint = class()
  16.     function Checkpoint:__init( pos )
  17.         self.pos = pos
  18.         self.obj = nil
  19.     end
  20.    
  21.     function Checkpoint:Enable()
  22.         self.obj = world:CreateObject("dummy")
  23.         self.obj:SetModel("models/misc/arrow.egf")
  24.         self.obj:SetOrigin( self.pos )
  25.         self.obj:Spawn()
  26.         self.obj:Activate()
  27.     end
  28.    
  29.     function Checkpoint:CheckAndComplete()
  30.    
  31.         self.obj:SetOrigin( self.pos + Vector3D.new(0,0.8 + math.abs(math.sin(missionmanager.m_timeoutTime*4.0)), 0) )
  32.         self.obj:SetAngles( Vector3D.new(0,camera:GetAngles():get_y(), 0) )
  33.    
  34.         if length(playerCar:GetOrigin() - self.pos) < 4 then
  35.    
  36.             self.obj:Remove()
  37.             self.obj = nil
  38.            
  39.             return true
  40.         end
  41.    
  42.         return false
  43.     end
  44.  
  45. ----------------------------------------------------------------------------------------------
  46. -- Mission initialization
  47. ----------------------------------------------------------------------------------------------
  48.  
  49. function Mission_Init()
  50.  
  51.     camera = world:GetCameraParams()
  52.  
  53.     -- put globals here
  54.     missionData = {
  55.         nextConeSpawnTime = 2.0,
  56.         lastConePos = nil,
  57.        
  58.         startpos = Vector3D.new(54,0.46,-191),
  59.        
  60.         checkidx = 1,
  61.        
  62.         checkpoints = {
  63.             Checkpoint( Vector3D.new(102,0.46,-49) ),
  64.             Checkpoint( Vector3D.new(-65,0.46,78) ),
  65.             Checkpoint( Vector3D.new(16,0.46,218) ),
  66.             Checkpoint( Vector3D.new(18,0.46,69) ),
  67.             Checkpoint( Vector3D.new(89,-0.44,-191) ),
  68.         }
  69.     }
  70.  
  71.     -- car name     maxdamage   pos ang
  72.     playerCar = gameses:CreateCar("rollo")
  73.     playerCar:SetMaxDamage(2)
  74.    
  75.     playerCar:SetOrigin( missionData.startpos )
  76.     playerCar:SetAngles( Vector3D.new(0.26, -2.2, 0) )
  77.    
  78.     playerCar:Spawn()
  79.     playerCar:Activate()
  80.  
  81.     gameses:SetPlayerCar( playerCar )
  82.    
  83.     ScreenMessage("Go throuh checkpoints fast as you can!", 3.5)
  84.  
  85.     missionmanager:EnableTimeout( true, 15 ) -- enable, time
  86.    
  87.     missionData.checkpoints[1]:Enable()
  88.    
  89.     -- here we start
  90.     missionmanager:SetRefreshFunc( Mission_Update )
  91. end
  92.  
  93. --------------------------------------------------------------------------------
  94.  
  95. -- main mission update
  96. function Mission_Update()
  97.  
  98.     if missionData.checkpoints[ missionData.checkidx ]:CheckAndComplete() then
  99.  
  100.         missionData.checkidx = missionData.checkidx + 1;
  101.        
  102.         if missionData.checkpoints[ missionData.checkidx ] then
  103.             ScreenMessage("Checkpoint!\n  +8 secs", 3.5)
  104.            
  105.             missionmanager:AddSeconds(8)
  106.             missionData.checkpoints[ missionData.checkidx ]:Enable()
  107.         else
  108.             playerCar:Lock(true)
  109.             ScreenMessage("Well done!", 3.5)
  110.            
  111.             missionmanager:SetRefreshFunc( function()
  112.                 return false
  113.             end )
  114.  
  115.             --WaitForExit( MIS_SUCCESS, 5.0 )
  116.         end
  117.     end
  118.  
  119.     if missionmanager:IsTimedOut() then
  120.         playerCar:Lock(true)
  121.  
  122.         ScreenMessage("Time's up!", 3.5)
  123.        
  124.         missionmanager:SetRefreshFunc( function()
  125.             return false
  126.         end )
  127.        
  128.         --WaitForExit( MIS_FAILED, 5.0 )
  129.         return false
  130.     end
  131.    
  132.     -- check player vehicle is wrecked
  133.     if playerCar:GetDamage() == playerCar:GetMaxDamage() then
  134.         playerCar:Lock(true)
  135.         ScreenMessage("You wrecked your vehicle", 3.5)
  136.        
  137.         missionmanager:SetRefreshFunc( function()
  138.             return false
  139.         end )
  140.  
  141.         --WaitForExit( MIS_FAILED, 5.0 )
  142.         return false
  143.     end
  144.  
  145.     return true
  146. end
  147.  
  148. -- put mission initializer
  149. missionmanager:Init( Mission_Init )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement