Advertisement
HR_Shaft

Show Rider Names for Sapp

Feb 11th, 2016
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.34 KB | None | 0 0
  1. -- Show Rider Names
  2. -- by H® Shaft for SAPP
  3. -- Designed for Halo PC
  4.  
  5. -- Script will show names of teammates who are in the same vehicle when they enter,
  6. -- or when any player in a vehicle types 'WHO IS'
  7.  
  8. -- don't edit --
  9. api_version = "1.9.0.0"
  10. game_started = false
  11. player_seat = {}
  12. vehicles = {}
  13.    
  14. function OnScriptLoad()
  15.     register_callback(cb['EVENT_GAME_START'],"OnNewGame")
  16.     register_callback(cb['EVENT_GAME_END'], "OnGameEnd")
  17.     register_callback(cb['EVENT_JOIN'],"OnPlayerJoin")
  18.     register_callback(cb['EVENT_LEAVE'],"OnPlayerLeave")
  19.     register_callback(cb['EVENT_DIE'], "OnPlayerDeath")
  20.     register_callback(cb['EVENT_CHAT'], "OnPlayerChat")
  21.     register_callback(cb['EVENT_VEHICLE_ENTER'], "OnVehicleEnter")
  22.     register_callback(cb['EVENT_VEHICLE_EXIT'], "OnVehicleEject")
  23.     if get_var(0, "$gt") ~= "n/a" then
  24.         game_started = true
  25.         for i=1,16 do
  26.             if player_present(i) then
  27.                 player_seat[i] = {}                
  28.             end
  29.         end
  30.     end    
  31. end
  32.  
  33. function OnScriptUnload()
  34.     player_seat = {}
  35.     vehicles = {}
  36. end
  37.  
  38. function OnNewGame()
  39.     game_started = true
  40.     for i=1,16 do
  41.         if player_present(i) then
  42.             vehicles = {}
  43.             player_seat[i] = {}
  44.         end
  45.     end    
  46. end
  47.  
  48. function OnGameEnd()
  49.     game_started = false
  50.     for i=1,16 do
  51.         if player_present(i) then
  52.             vehicles = {}
  53.             player_seat[i] = {}
  54.         end
  55.     end    
  56. end
  57.  
  58. function OnPlayerJoin(PlayerIndex)
  59.     player_seat[PlayerIndex] = {}
  60. end
  61.  
  62. function OnPlayerLeave(PlayerIndex)
  63.     if player_present(PlayerIndex) then
  64.         if player_seat[PlayerIndex].seat == 0 then
  65.             vehicles[player_seat[PlayerIndex].vehicleid].driver = nil
  66.         elseif player_seat[PlayerIndex].seat == 1 then
  67.             write_dword(player_seat[PlayerIndex].vehobj + 0x32C, 0xFFFFFFFF)
  68.             vehicles[player_seat[PlayerIndex].vehicleid].passenger = nil
  69.         elseif player_seat[PlayerIndex].seat == 2 then
  70.             vehicles[player_seat[PlayerIndex].vehicleid].gunner = nil
  71.         end        
  72.     end
  73.     player_seat[PlayerIndex] = {}  
  74. end
  75.  
  76. function OnPlayerDeath(PlayerIndex, KillerIndex)
  77.     if (game_started == true) then
  78.         if player_present(PlayerIndex) then
  79.             local player_object = get_dynamic_player(PlayerIndex)
  80.             local player_object_id = read_dword(get_player(PlayerIndex) + 0x34)
  81.             local vehicle_id = read_dword(player_object + 0x11C)
  82.             local seatIndex = read_byte(player_object + 0x2F0)
  83.             local veh_obj = get_object_memory(vehicle_id)
  84.             if (player_object ~= 0) then
  85.                 if (vehicles[vehicle_id] == nil) then
  86.                     vehicles[vehicle_id] = {}
  87.                 end        
  88.                 if (seatIndex == 0) then -- driver
  89.                     vehicles[vehicle_id].driver = nil  
  90.                 elseif (seatIndex == 1) then -- passenger
  91.                     write_dword(veh_obj + 0x32C, 0xFFFFFFFF)
  92.                     vehicles[vehicle_id].passenger = nil
  93.                 elseif (seatIndex == 2) then -- gunner
  94.                     vehicles[vehicle_id].gunner = nil
  95.                 end
  96.                 player_seat[PlayerIndex].seat = nil
  97.                 player_seat[PlayerIndex].vehicleid = nil
  98.                 player_seat[PlayerIndex].vehobj = nil
  99.             end
  100.         end
  101.     end    
  102. end
  103.  
  104. function OnVehicleEnter(PlayerIndex, Seat)
  105.     if (game_started == true) then
  106.         if player_present(PlayerIndex) then
  107.             local player_object = get_dynamic_player(PlayerIndex)
  108.             local player_object_id = read_dword(get_player(PlayerIndex) + 0x34)
  109.             local vehicle_id = read_dword(player_object + 0x11C)
  110.             local veh_obj = get_object_memory(vehicle_id)
  111.             if (veh_obj ~= 0) then         
  112.                 if (vehicles[vehicle_id] == nil) then
  113.                     vehicles[vehicle_id] = {}
  114.                 end            
  115.                 if (Seat == "0") then
  116.                     player_seat[PlayerIndex].vehicleid = vehicle_id
  117.                     player_seat[PlayerIndex].seat = 0
  118.                     player_seat[PlayerIndex].vehobj = veh_obj
  119.                     vehicles[vehicle_id].driver = PlayerIndex
  120.                     show_passenger(PlayerIndex, vehicle_id)
  121.                     show_gunner(PlayerIndex, vehicle_id)                   
  122.                 elseif (Seat == "1") then
  123.                     player_seat[PlayerIndex].vehicleid = vehicle_id
  124.                     player_seat[PlayerIndex].seat = 1
  125.                     player_seat[PlayerIndex].vehobj = veh_obj
  126.                     vehicles[vehicle_id].passenger = PlayerIndex
  127.                     timer(0, "assignpassenger", veh_obj, player_object_id)
  128.                     show_driver(PlayerIndex, vehicle_id)                   
  129.                     show_gunner(PlayerIndex, vehicle_id)                   
  130.                 elseif (Seat == "2") then
  131.                     player_seat[PlayerIndex].vehicleid = vehicle_id
  132.                     player_seat[PlayerIndex].seat = 2
  133.                     player_seat[PlayerIndex].vehobj = veh_obj
  134.                     vehicles[vehicle_id].gunner = PlayerIndex
  135.                     show_driver(PlayerIndex, vehicle_id)
  136.                     show_passenger(PlayerIndex, vehicle_id)                
  137.                 end
  138.             end
  139.         end    
  140.     end    
  141. end
  142.  
  143. function OnVehicleEject(PlayerIndex)
  144.     if (game_started == true) then
  145.         if player_present(PlayerIndex) then
  146.             local player_object = get_dynamic_player(PlayerIndex)
  147.             local player_object_id = read_dword(get_player(PlayerIndex) + 0x34)
  148.             local vehicle_id = read_dword(player_object + 0x11C)
  149.             local seatIndex = read_byte(player_object + 0x2F0)
  150.             if (vehicles[vehicle_id] == nil) then
  151.                 vehicles[vehicle_id] = {}
  152.             end            
  153.             if (player_object ~= 0) then   
  154.                 if (seatIndex == "0") then -- driver
  155.                     vehicles[vehicle_id].driver = nil  
  156.                 elseif (seatIndex == "1") then -- passenger
  157.                     resetpassenger(PlayerIndex)
  158.                 elseif (seatIndex == "2") then -- gunner
  159.                     vehicles[vehicle_id].gunner = nil
  160.                 end
  161.                 player_seat[PlayerIndex].seat = nil
  162.                 player_seat[PlayerIndex].vehicleid = nil
  163.                 player_seat[PlayerIndex].vehobj = nil
  164.             end
  165.         end
  166.     end
  167. end
  168.  
  169. function OnPlayerChat(PlayerIndex, Message)
  170.     local response = nil
  171.     local name = get_var(PlayerIndex,"$name")
  172.     local Message = string.lower(Message)
  173.    
  174.     if (Message == "whois") or (Message == "who is") then
  175.         response = false
  176.         local player_object = get_dynamic_player(PlayerIndex)  
  177.         local vehicle_id = read_dword(player_object + 0x11C)
  178.         local veh_obj = get_object_memory(vehicle_id)
  179.         if isinvehicle(PlayerIndex) then
  180.             if (veh_obj ~= nil) then
  181.                 show_driver(PlayerIndex, vehicle_id)
  182.                 show_passenger(PlayerIndex, vehicle_id)
  183.                 show_gunner(PlayerIndex, vehicle_id)
  184.             end
  185.         else
  186.             say(PlayerIndex, "**Who Is** You must be in a vehicle to use this feature.")
  187.         end
  188.     end
  189.    
  190.     return response
  191. end
  192.  
  193. function show_driver(PlayerIndex, vehicle_id)
  194.     if (vehicles[vehicle_id].driver ~= nil) then
  195.         rprint(PlayerIndex, "|rDriver: " .. get_var(vehicles[vehicle_id].driver,"$name"))
  196.     end
  197. end
  198.  
  199. function show_passenger(PlayerIndex, vehicle_id)
  200.     if (vehicles[vehicle_id].passenger ~= nil) then
  201.         rprint(PlayerIndex, "|rPassenger: " .. get_var(vehicles[vehicle_id].passenger,"$name"))
  202.     end
  203. end
  204.  
  205. function show_gunner(PlayerIndex, vehicle_id)
  206.     if (vehicles[vehicle_id].gunner ~= nil) then
  207.         rprint(PlayerIndex, "|rGunner: " .. get_var(vehicles[vehicle_id].gunner,"$name"))
  208.     end
  209. end
  210.  
  211. function assignpassenger(veh_obj, player_object_id)
  212.     if (game_started == true) then
  213.         write_dword(veh_obj + 0x32C, player_object_id)
  214.     end
  215.     return false
  216. end
  217.  
  218. function resetpassenger(PlayerIndex)
  219.     if player_seat[PlayerIndex].vehicleid then
  220.         write_dword(player_seat[PlayerIndex].vehobj + 0x32C, 0xFFFFFFFF)
  221.         player_seat[PlayerIndex].seat = nil
  222.         player_seat[PlayerIndex].vehicleid = nil
  223.         player_seat[PlayerIndex].vehobj = nil
  224.     end
  225. end
  226.  
  227. function isinvehicle(PlayerIndex)
  228.     if (player_alive(PlayerIndex) == false) then return false end
  229.     local player_object = get_dynamic_player(PlayerIndex)
  230.     local vehicleId = read_dword(player_object + 0x11C)
  231.     if vehicleId == 0xFFFFFFFF then
  232.         return false
  233.     else
  234.         return true
  235.     end
  236. end
  237.  
  238. -- Created by H® Shaft
  239. -- Visit http://halorace.org/forum/index.php
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement