Advertisement
HR_Shaft

Death Messages V3 for stock PC/CE maps for SAPP

Mar 16th, 2016
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 18.07 KB | None | 0 0
  1. -- Death Messages V3 for stock PC/CE maps for SAPP
  2. -- by H® Shaft
  3.  
  4. -- V3 Changelog: added teamkiller kill, and fixed/edited backtap & melee, suicide was fixed, added show team switch variable
  5.  
  6. -- Script will show how players were killed/died: Normal death messages are blocked (no chat spam), examples :
  7. -- "H® Shaft was blasted by sehé°°'s banshee plasma cannon."
  8. -- "H® Shaft was blown-up by sehé°°'s's frag grenade."
  9. -- "H® Shaft was shot by Btcc22's sniper rifle."
  10. -- "H® Shaft was melee'd by Btcc22!"
  11. -- Will tell Killer and Victim if they were killed by Headshot (pistol and sniper only) "BOOM! You were headshot! by H® Shaft"
  12. -- Will show when a player died by: Falling, by Vehicle or Team Change, will not show if killed by the server
  13. -- Will show player their combination kills, and announce to everyone your sprees: "H® Shaft is on a Killing Spree!"
  14. -- Allows server admins to turn fall damage on/off PER map: see LoadDefaults() true, fall damage is on, false it is off (line 434)
  15.  
  16. -- specify the amount of damage done by melee: 0 = disable melee kill, 1 = normal, 2 = double, 3 = triple, 4 = quadruple
  17. melee_damage = 2
  18.  
  19. -- specify the amount of damage done by melee or backtap: 0 = disable backtap kill, 1 = normal, 2 = double, 3 = triple, 4 = quadruple
  20. backtap_damage = 4
  21.  
  22. -- Should a team killer be killed?  (true = they will be killed, false they will not be killed)
  23. team_kill_karma = true
  24.  
  25. -- message shown to team killer
  26. tk_message = "DON'T KILL OR ATTACK YOUR OWN TEAM!!"
  27.  
  28. -- should team-switch message be shown? true = show message, false = don't show  (set to false if using another script which shows team-switch)
  29. show_teamswitch = true
  30.  
  31. -- don't edit --
  32. game_started = false
  33. team_play = false
  34. last_damage = {}
  35. head_shot = {}
  36. back_tap = {}
  37. killed_by_nothing = {}
  38. api_version = "1.9.0.0"
  39.  
  40. function OnScriptLoad()
  41.     register_callback(cb['EVENT_GAME_START'], "OnNewGame")
  42.     register_callback(cb['EVENT_PRESPAWN'],"OnPlayerPreSpawn")
  43.     register_callback(cb['EVENT_DAMAGE_APPLICATION'], "OnDamageApplication")
  44.     register_callback(cb['EVENT_DIE'], "OnPlayerDie")
  45.     register_callback(cb['EVENT_KILL'], "OnPlayerKill")
  46.     register_callback(cb['EVENT_TEAM_SWITCH'],"OnTeamSwitch")  
  47.     register_callback(cb['EVENT_GAME_END'],"OnGameEnd")    
  48.     register_callback(cb['EVENT_LEAVE'], "OnPlayerLeave")
  49.     disable_killmsg_addr = sig_scan("8B42348A8C28D500000084C9") + 3
  50.     original_code_1 = read_dword(disable_killmsg_addr)
  51.     safe_write(true)
  52.     write_dword(disable_killmsg_addr, 0x03EB01B1)
  53.     safe_write(false)  
  54.  
  55.     if get_var(0, "$gt") ~= "n/a" then 
  56.         game_started = true
  57.         team_play = getteamplay()
  58.         GetMetaIDs()
  59.         LoadDefaults()
  60.         map_name = get_var(1,"$map")
  61.         for i=1,16 do
  62.             if player_present(i) then
  63.                 last_damage[i] = 0
  64.                 killed_by_nothing[i] = false
  65.                 head_shot[i] = false
  66.                 back_tap[i] = false
  67.             end
  68.         end    
  69.     end    
  70. end
  71.  
  72. function OnScriptUnload()
  73.     safe_write(true)
  74.     write_dword(disable_killmsg_addr, original_code_1)
  75.     safe_write(false)
  76.     killed_by_nothing = {}
  77.     last_damage = {}
  78.     head_shot = {}
  79.     back_tap = {}
  80. end
  81.  
  82. function OnPlayerPreSpawn(PlayerIndex)
  83.     last_damage[PlayerIndex] = 0
  84.     head_shot[PlayerIndex] = false
  85.     back_tap[PlayerIndex] = false
  86. end
  87.  
  88. function OnNewGame()
  89.     game_started = true
  90.     team_play = getteamplay()
  91.     map_name = get_var(1,"$map")
  92.     if get_var(0, "$gt") ~= "n/a" then
  93.         GetMetaIDs()
  94.         LoadDefaults() 
  95.     end
  96.     for i=1,16 do
  97.         if player_present(i) then  
  98.             last_damage[i] = 0
  99.             killed_by_nothing[i] = false
  100.             head_shot[i] = false
  101.             back_tap[i] = false
  102.         end
  103.     end    
  104. end
  105.  
  106. function OnPlayerLeave(PlayerIndex)
  107.     last_damage[PlayerIndex] = nil
  108.     killed_by_nothing[PlayerIndex] = nil
  109.     head_shot[PlayerIndex] = nil
  110.     back_tap[PlayerIndex] = false  
  111. end
  112.  
  113. function OnGameEnd()
  114.     game_started = false
  115.     for i=1,16 do
  116.         if player_present(i) then      
  117.             last_damage[i] = 0
  118.             killed_by_nothing[i] = false
  119.             head_shot[i] = false
  120.             back_tap[i] = false
  121.         end
  122.     end
  123. end
  124.  
  125. function OnPlayerDie(PlayerIndex, KillerIndex)
  126.     -- Killer Index is: -- falling = -1, server = -1, team-switch = -1, vehicle = 0, other players = 1 or greater
  127.     if (game_started == true) then
  128.         local vname = get_var(PlayerIndex, "$name")
  129.         local vteam = get_var(PlayerIndex, "$team")
  130.         local killer = tonumber(KillerIndex)
  131.  
  132.         if (killer == -1) then
  133.             if last_damage[PlayerIndex] == 0 then
  134.                 killed_by_nothing[PlayerIndex] = true
  135.             elseif last_damage[PlayerIndex] == falling_damage or last_damage[PlayerIndex] == distance_damage then
  136.                 say_all(vname.. " fell and died.")
  137.                 last_damage[PlayerIndex] = 0
  138.                 killed_by_nothing[PlayerIndex] = false             
  139.             end
  140.            
  141.         elseif (killer == 0) then
  142.             if last_damage[PlayerIndex] == veh_damage then
  143.                 say_all(vname.. " was killed by a vehicle.")
  144.                 last_damage[PlayerIndex] = 0           
  145.             end
  146.            
  147.         elseif (killer == nil) then
  148.             if last_damage[PlayerIndex] == 0 then
  149.                 say_all(vname.. " was killed by the guardians.")
  150.             end
  151.            
  152.         elseif (killer > 0) then
  153.             local kname = get_var(KillerIndex, "$name")
  154.             local kteam = get_var(KillerIndex, "$team")
  155.            
  156.             if PlayerIndex == killer then -- suicide
  157.                 execute_command('say * "$name committed suicide."', PlayerIndex)
  158.                
  159.             elseif (team_play and (kteam == vteam) and (PlayerIndex ~= KillerIndex)) then -- teamkill/betray
  160.                 say_all(vname.. " was betrayed by " .. kname .. ".")
  161.                 rprint(KillerIndex, tk_message)
  162.                 if team_kill_karma then
  163.                     kill(KillerIndex)
  164.                 end
  165.            
  166.             elseif PlayerIndex ~= KillerIndex  then -- killed by another player
  167.                 if last_damage[PlayerIndex] == veh_damage then
  168.                     if isinvehicle(KillerIndex) then
  169.                         say_all(vname.. " was run over by " .. kname .. ".")
  170.                     else
  171.                         say_all(vname.. " was killed by a vehicle.")
  172.                     end
  173.                 elseif last_damage[PlayerIndex] == banshee_bolt then
  174.                     say_all(vname.. " was shot by " .. kname .. "'s banshee guns. ")
  175.                 elseif last_damage[PlayerIndex] == banshee_explode then
  176.                     say_all(vname.. " was blasted by " .. kname .. "'s banshee plasma cannon. ")
  177.                 elseif last_damage[PlayerIndex] == turret_bolt then
  178.                     say_all(vname.. " was shot by " .. kname .. "'s turret. ")
  179.                 elseif last_damage[PlayerIndex] == ghost_bolt then
  180.                     say_all(vname.. " was shot by " .. kname .. "'s ghost guns. ")
  181.                 elseif last_damage[PlayerIndex] == tank_shell then
  182.                     say_all(vname.. " was blasted by " .. kname .. "'s tank shell. ")  
  183.                 elseif last_damage[PlayerIndex] == tank_bullet then
  184.                     say_all(vname.. " was shot by " .. kname .. "'s tank guns. ")
  185.                 elseif last_damage[PlayerIndex] == chain_bullet then
  186.                     say_all(vname.. " was shot by " .. kname .. "'s chain gun. ")
  187.                 elseif last_damage[PlayerIndex] == assault_bullet then
  188.                     say_all(vname.. " was shot by " .. kname .. "'s assault rifle. ")
  189.                 elseif last_damage[PlayerIndex] == flame_explode then
  190.                     say_all(vname.. " was toasted by " .. kname .. "'s flame-thrower. ")
  191.                 elseif last_damage[PlayerIndex] == frag_explode then
  192.                     say_all(vname.. " was blown-up by " .. kname .. "'s frag grenade. ")
  193.                 elseif last_damage[PlayerIndex] == needle_detonate then
  194.                     say_all(vname.. " was shot by " .. kname .. "'s needler. ")
  195.                 elseif last_damage[PlayerIndex] == needle_explode then
  196.                     say_all(vname.. " was shot by " .. kname .. "'s needler. ")
  197.                 elseif last_damage[PlayerIndex] == needle_impact then
  198.                     say_all(vname.. " was shot by " .. kname .. "'s needler. ")    
  199.                 elseif last_damage[PlayerIndex] == pistol_bullet then
  200.                     say_all(vname.. " was shot by " .. kname .. "'s pistol. ")
  201.                     if head_shot[PlayerIndex] then  -- only the pistol and sniper actually cause headshots
  202.                         rprint(PlayerIndex, "BOOM! You were headshot! by " .. kname)
  203.                         rprint(KillerIndex, "BOOM! headshot!")
  204.                         head_shot[PlayerIndex] = false
  205.                     end                
  206.                 elseif last_damage[PlayerIndex] == plasma_attach then
  207.                     say_all(vname.. " was stickied by " .. kname .. "'s plasma grenade! ") 
  208.                 elseif last_damage[PlayerIndex] == plasma_explode then
  209.                     say_all(vname.. " was blown-up by " .. kname .. "'s plasma grenade. ")
  210.                 elseif last_damage[PlayerIndex] == ppistol_bolt then
  211.                     say_all(vname.. " was shot by " .. kname .. "'s plasma pistol. ")
  212.                 elseif last_damage[PlayerIndex] == ppistol_charged then
  213.                     say_all(vname.. " was shot by " .. kname .. "'s plasma pistol. ")
  214.                 elseif last_damage[PlayerIndex] == prifle_bolt then
  215.                     say_all(vname.. " was shot by " .. kname .. "'s plasma rifle. ")
  216.                 elseif last_damage[PlayerIndex] == pcannon_explode then
  217.                     say_all(vname.. " was shot by " .. kname .. "'s plasma cannon. ")
  218.                 elseif last_damage[PlayerIndex] == rocket_explode then
  219.                     if isinvehicle(KillerIndex) then
  220.                         say_all(vname.. " was blown-up by " .. kname .. "'s warthog rocket. ")
  221.                     else   
  222.                         say_all(vname.. " was blown-up by " .. kname .. "'s rocket. ")
  223.                     end
  224.                 elseif last_damage[PlayerIndex] == shotgun_pellet then
  225.                     say_all(vname.. " was shot by " .. kname .. "'s shotgun. ")
  226.                 elseif last_damage[PlayerIndex] == sniper_bullet then
  227.                     say_all(vname.. " was shot by " .. kname .. "'s sniper rifle. ")
  228.                     if head_shot[PlayerIndex] then -- only the pistol and sniper actually cause headshots
  229.                         rprint(PlayerIndex, "BOOM! You were headshot! by " .. kname)
  230.                         rprint(KillerIndex, "BOOM! headshot!")
  231.                         head_shot[PlayerIndex] = false
  232.                     end
  233.                    
  234.                 elseif last_damage[PlayerIndex] == assault_melee or
  235.                     last_damage[PlayerIndex] == assault_melee or
  236.                     last_damage[PlayerIndex] == ball_melee or
  237.                     last_damage[PlayerIndex] == flag_melee or
  238.                     last_damage[PlayerIndex] == flame_melee or
  239.                     last_damage[PlayerIndex] == needle_melee or
  240.                     last_damage[PlayerIndex] == pistol_melee or
  241.                     last_damage[PlayerIndex] == ppistol_melee or
  242.                     last_damage[PlayerIndex] == prifle_melee or
  243.                     last_damage[PlayerIndex] == pcannon_melee or
  244.                     last_damage[PlayerIndex] == rocket_melee or
  245.                     last_damage[PlayerIndex] == shotgun_melee or
  246.                     last_damage[PlayerIndex] == sniper_melee then              
  247.                     say_all(vname.. " was melee'd by " .. kname .. "!")
  248.                     if back_tap[PlayerIndex] then -- backtap: melee from behind/top (rarely registers, if ever)
  249.                         rprint(PlayerIndex, "BOOM! You were bitch-slapped by " .. kname)
  250.                         rprint(KillerIndex, "BOOM! bitch-slap!")
  251.                         back_tap[PlayerIndex] = false
  252.                     end
  253.                    
  254.  
  255.                 elseif last_damage[PlayerIndex] == 0 then
  256.                     say_all(vname.. " was killed by " .. kname .. ".") 
  257.                 end
  258.                
  259.             else
  260.                 say_all(vname.. " was killed by the guardians. ")          
  261.             end
  262.         end
  263.         last_damage[PlayerIndex] = 0
  264.         head_shot[PlayerIndex] = false
  265.         back_tap[PlayerIndex] = false
  266.     end
  267. end
  268.  
  269. function OnTeamSwitch(PlayerIndex)
  270.     if (game_started == true) then
  271.         if team_play then
  272.             if (killed_by_nothing[PlayerIndex] == true) then
  273.                 if show_teamswitch then
  274.                     say_all(get_var(PlayerIndex,"$name") .. " switched to the " .. get_var(PlayerIndex,"$team") .. " team.")
  275.                 end    
  276.                 killed_by_nothing[PlayerIndex] = false             
  277.             end    
  278.         end
  279.     end
  280. end
  281.  
  282. function OnDamageApplication(PlayerIndex, CauserIndex, MetaID, Damage, HitString, Backtap)
  283.     if (game_started == true) then
  284.         last_damage[PlayerIndex] = MetaID
  285.         if (HitString == "head") then
  286.             head_shot[PlayerIndex] = true
  287.         end    
  288.         if MetaID == assault_melee or
  289.             MetaID == assault_melee or
  290.             MetaID == ball_melee or
  291.             MetaID == flag_melee or
  292.             MetaID == flame_melee or
  293.             MetaID == needle_melee or
  294.             MetaID == pistol_melee or
  295.             MetaID == ppistol_melee or
  296.             MetaID == prifle_melee or
  297.             MetaID == pcannon_melee or
  298.             MetaID == rocket_melee or
  299.             MetaID == shotgun_melee or
  300.             MetaID == sniper_melee then
  301.             return true, Damage * melee_damage
  302.         end
  303.         if MetaID == falling_damage then
  304.             last_damage[PlayerIndex] = falling_damage
  305.             if not fall_damage[map_name] then
  306.                 return true, 0
  307.             end
  308.         elseif MetaID == distance_damage then
  309.             last_damage[PlayerIndex] = distance_damage
  310.             if not fall_damage[map_name] then
  311.                 return true, 0
  312.             end
  313.         end
  314.         if (Backtap == true) then
  315.             back_tap[PlayerIndex] = true
  316.             return true, Damage * backtap_damage
  317.         end    
  318.     end
  319. end
  320.  
  321. function GetMetaIDs()
  322.     falling_damage = read_dword(lookup_tag("jpt!", "globals\\falling") + 12)
  323.     distance_damage = read_dword(lookup_tag("jpt!", "globals\\distance") + 12)
  324.     veh_damage = read_dword(lookup_tag("jpt!", "globals\\vehicle_collision") + 12)
  325.     banshee_bolt = read_dword(lookup_tag("jpt!", "vehicles\\banshee\\banshee bolt") + 12)
  326.     banshee_explode = read_dword(lookup_tag("jpt!", "vehicles\\banshee\\mp_fuel rod explosion") + 12)
  327.     turret_bolt = read_dword(lookup_tag("jpt!", "vehicles\\c gun turret\\mp bolt") + 12)
  328.     ghost_bolt = read_dword(lookup_tag("jpt!", "vehicles\\ghost\\ghost bolt") + 12)
  329.     tank_shell = read_dword(lookup_tag("jpt!", "vehicles\\scorpion\\shell explosion") + 12)
  330.     tank_bullet = read_dword(lookup_tag("jpt!", "vehicles\\scorpion\\bullet") + 12)
  331.     chain_bullet = read_dword(lookup_tag("jpt!", "vehicles\\warthog\\bullet") + 12)
  332.     assault_bullet = read_dword(lookup_tag("jpt!", "weapons\\assault rifle\\bullet") + 12)
  333.     assault_melee = read_dword(lookup_tag("jpt!", "weapons\\assault rifle\\melee") + 12)
  334.     ball_melee = read_dword(lookup_tag("jpt!", "weapons\\ball\\melee") + 12)
  335.     flag_melee = read_dword(lookup_tag("jpt!", "weapons\\flag\\melee") + 12)
  336.     flame_explode = read_dword(lookup_tag("jpt!", "weapons\\flamethrower\\explosion") + 12)
  337.     flame_melee = read_dword(lookup_tag("jpt!", "weapons\\flamethrower\\melee") + 12)
  338.     frag_explode = read_dword(lookup_tag("jpt!", "weapons\\frag grenade\\explosion") + 12)
  339.     needle_detonate = read_dword(lookup_tag("jpt!", "weapons\\needler\\detonation damage") + 12)
  340.     needle_explode = read_dword(lookup_tag("jpt!", "weapons\\needler\\explosion") + 12)
  341.     needle_impact = read_dword(lookup_tag("jpt!", "weapons\\needler\\impact damage") + 12)
  342.     needle_melee = read_dword(lookup_tag("jpt!", "weapons\\needler\\melee") + 12)
  343.     pistol_bullet = read_dword(lookup_tag("jpt!", "weapons\\pistol\\bullet") + 12)
  344.     pistol_melee = read_dword(lookup_tag("jpt!", "weapons\\pistol\\melee") + 12)
  345.     plasma_attach = read_dword(lookup_tag("jpt!", "weapons\\plasma grenade\\attached") + 12)
  346.     plasma_explode = read_dword(lookup_tag("jpt!", "weapons\\plasma grenade\\explosion") + 12)
  347.     ppistol_bolt = read_dword(lookup_tag("jpt!", "weapons\\plasma pistol\\bolt") + 12)
  348.     ppistol_charged = read_dword(lookup_tag("jpt!", "weapons\\plasma rifle\\charged bolt") + 12)
  349.     ppistol_melee = read_dword(lookup_tag("jpt!", "weapons\\plasma pistol\\melee") + 12)
  350.     prifle_bolt = read_dword(lookup_tag("jpt!", "weapons\\plasma rifle\\bolt") + 12)
  351.     prifle_melee = read_dword(lookup_tag("jpt!", "weapons\\plasma rifle\\melee") + 12)
  352.     pcannon_explode = read_dword(lookup_tag("jpt!", "weapons\\plasma_cannon\\effects\\plasma_cannon_explosion") + 12)
  353.     pcannon_melee = read_dword(lookup_tag("jpt!", "weapons\\plasma_cannon\\effects\\plasma_cannon_melee") + 12)
  354.     rocket_explode = read_dword(lookup_tag("jpt!", "weapons\\rocket launcher\\explosion") + 12)
  355.     rocket_melee = read_dword(lookup_tag("jpt!", "weapons\\rocket launcher\\melee") + 12)
  356.     shotgun_pellet = read_dword(lookup_tag("jpt!", "weapons\\shotgun\\pellet") + 12)
  357.     shotgun_melee = read_dword(lookup_tag("jpt!", "weapons\\shotgun\\melee") + 12)
  358.     sniper_bullet = read_dword(lookup_tag("jpt!", "weapons\\sniper rifle\\sniper bullet") + 12)
  359.     sniper_melee = read_dword(lookup_tag("jpt!", "weapons\\sniper rifle\\melee") + 12)
  360. end
  361.  
  362. function OnPlayerKill(PlayerIndex, VictimIndex)
  363.     local combo = tonumber(get_var(PlayerIndex, "$combo"))
  364.     local spree = tonumber(get_var(PlayerIndex, "$streak"))
  365.     local Name = get_var(PlayerIndex, "$name")
  366.    
  367.     if combo == 2 then
  368.         rprint(PlayerIndex, "|r" .. "Double Kill!")
  369.     elseif combo == 3 then
  370.         rprint(PlayerIndex, "|r" .. "Triple Kill!")
  371.     elseif combo == 4 then
  372.         rprint(PlayerIndex, "|r" .. "Overkill!")   
  373.     elseif combo == 5 then
  374.         rprint(PlayerIndex, "|r" .. "Killtacular!")
  375.     elseif combo == 6 then
  376.         rprint(PlayerIndex, "|r" .. "Killtrocity!")
  377.     elseif combo == 7 then
  378.         rprint(PlayerIndex, "|r" .. "Killimanjaro!")   
  379.     elseif combo == 8 then
  380.         rprint(PlayerIndex, "|r" .. "Killtastrophe!")  
  381.     elseif combo == 9 then
  382.         rprint(PlayerIndex, "|r" .. "Killpocalypse!")  
  383.     elseif combo == 10 then
  384.         rprint(PlayerIndex, "|r" .. "Killionaire!")
  385.     end
  386.    
  387.     if spree == 5 then
  388.         AnnounceSpree(Name, "is on a Killing Spree!")
  389.     elseif spree == 10 then
  390.         AnnounceSpree(Name, "is in a Killing Frenzy!")
  391.     elseif spree == 15 then
  392.         AnnounceSpree(Name, "just got a Running Riot!")
  393.     elseif spree == 20 then
  394.         AnnounceSpree(Name, "is on a Rampage!")
  395.     elseif spree == 25 then
  396.         AnnounceSpree(Name, "is Untouchable!")
  397.     elseif spree == 30 then
  398.         AnnounceSpree(Name, "is Inconceivable!")
  399.     elseif spree == 35 then
  400.         AnnounceSpree(Name, "is Unfrigginbelievable!")
  401.     elseif spree == 40 then
  402.         AnnounceSpree(Name, "is running AMOK!")
  403.     elseif spree >= 50 then
  404.         AnnounceSpree(Name, "is going BESERK!")    
  405.     end
  406. end
  407.  
  408. function AnnounceSpree(Name, Message)
  409.     for i = 1,16 do
  410.         if player_present(i) then
  411.             rprint(i, "|r" .. "" .. Name .. " " .. Message)
  412.         end
  413.     end
  414. end
  415.  
  416. function isinvehicle(PlayerIndex)  
  417.     local player_object = get_dynamic_player(PlayerIndex)
  418.     local vehicleId = read_dword(player_object + 0x11C)
  419.     if vehicleId == 0xFFFFFFFF then
  420.         return false
  421.     else
  422.         return true
  423.     end
  424. end
  425.  
  426. function getteamplay()
  427.     if get_var(0,"$ffa") == "0" then
  428.         return true
  429.     else
  430.         return false
  431.     end
  432. end
  433.  
  434. function LoadDefaults()
  435.     -- turn fall damage on (true) or off (false) for each map,
  436.     -- note: damnation & gephyrophobia players can get stuck on bottom if it's turned off
  437.     fall_damage = {
  438.         ["beavercreek"] = true,
  439.         ["bloodgulch"] = true,
  440.         ["boardingaction"] = true,
  441.         ["carousel"] = true,
  442.         ["chillout"] = true,
  443.         ["damnation"] = true,
  444.         ["dangercanyon"] = true,
  445.         ["deathisland"] = true,
  446.         ["gephyrophobia"] = true,
  447.         ["hangemhigh"] = true,
  448.         ["icefields"] = true,
  449.         ["infinity"] = true,
  450.         ["longest"] = true,
  451.         ["prisoner"] = true,
  452.         ["putput"] = true,
  453.         ["ratrace"] = true,
  454.         ["sidewinder"] = true,
  455.         ["timberland"] = true,
  456.         ["wizard"] = true
  457.     }
  458. end
  459.  
  460. function OnError(Message)
  461.     print(debug.traceback())
  462. end
  463.  
  464. -- Created by H® Shaft
  465. -- Visit http://halorace.org/forum/index.php
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement