Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.19 KB | None | 0 0
  1. addEvent("onMapStarting")
  2. addEventHandler('onMapStarting', g_Root,
  3.     function(mapInfo)
  4.         currentmode = mapInfo.modename
  5.     end
  6. )
  7.  
  8. function playerDeath()
  9.     if #getElementsByType("player") >= minplayers then
  10.         local playernode = getPlayerNode(source)
  11.         nodeAdd(xmlFindChild(xmlFindChild(playernode,"deaths",0),"total",0),1)
  12.         if currentmode == "Destruction derby" then
  13.             local aliveplayers = getAlivePlayers()
  14.             if #aliveplayers == 1 then
  15.                 local pointsnode = xmlFindChild(playernode,"points",0)
  16.                 local points = calcPoints(2)
  17.                 nodeAdd(pointsnode,points)
  18.                 outputChatBox("You earned "..points.." points for rank 2! Total points: "..xmlNodeGetValue(pointsnode),source,getScriptColor(1))
  19.                
  20.                 playernode = getPlayerNode(aliveplayers[1])
  21.                 local ddwinnode = xmlFindChild(playernode,"ddswon",0)
  22.                 local ddplayednode =  xmlFindChild(playernode,"ddsplayed",0)
  23.                 nodeAdd(ddwinnode,1)
  24.                 pointsnode = xmlFindChild(playernode,"points",0)
  25.                 points = calcPoints(1)
  26.                 nodeAdd(pointsnode,points)
  27.                 outputChatBox(formPlayerName(aliveplayers[1]).." won! Total destruction derbies won: "..xmlNodeGetValue(ddwinnode).." of "..xmlNodeGetValue(ddplayednode).." ("..string.format("%.02f",math.floor(((tonumber(xmlNodeGetValue(ddwinnode))/tonumber(xmlNodeGetValue(ddplayednode)))+0.00005)*10000)/100).."%)",getRootElement(),getScriptColor(1))
  28.                 outputChatBox("Earned points: "..points.." (Total: "..xmlNodeGetValue(pointsnode)..")",getRootElement(),getScriptColor(1))
  29.             elseif #aliveplayers == 0 then
  30.                 --nothing
  31.             else
  32.                 local pointsnode = xmlFindChild(playernode,"points",0)
  33.                 local rank = #aliveplayers + 1
  34.                 local points = calcPoints(rank)
  35.                 nodeAdd(pointsnode,points)
  36.                 outputChatBox("You earned "..points.." points for rank "..rank.."! Total points: "..xmlNodeGetValue(pointsnode),source,getScriptColor(1))
  37.             end
  38.         end
  39.     else
  40.         if currentmode == "Destruction derby" then
  41.             local aliveplayers = getAlivePlayers()
  42.             if #aliveplayers == 1 then
  43.                 outputChatBox("Need at least #FFFFFF"..minplayers.." players #FF0000playing to affect stats",getRootElement(),getScriptColor(2),true)
  44.             end
  45.         end
  46.     end
  47. end
  48. addEventHandler("onPlayerWasted",getRootElement(),playerDeath)
  49.  
  50. function racePlayerQuit(quittype,reason,responsibleelement)
  51.     if #getElementsByType("player") >= minplayers then
  52.         if currentmode == "Destruction derby" then
  53.             local playernode = getPlayerNode(source)
  54.             local aliveplayers = getAlivePlayers()
  55.             if #aliveplayers == 1 then
  56.                 local pointsnode = xmlFindChild(playernode,"points",0)
  57.                 local points = calcPoints(2)
  58.                 nodeAdd(pointsnode,points)
  59.                 outputChatBox("You earned "..points.." points for rank 2! Total points: "..xmlNodeGetValue(pointsnode),source,getScriptColor(1))
  60.                
  61.                 playernode = getPlayerNode(aliveplayers[1])
  62.                 local ddwinnode = xmlFindChild(playernode,"ddswon",0)
  63.                 local ddplayednode =  xmlFindChild(playernode,"ddsplayed",0)
  64.                 nodeAdd(ddwinnode,1)
  65.                 pointsnode = xmlFindChild(playernode,"points",0)
  66.                 points = calcPoints(1)
  67.                 nodeAdd(pointsnode,points)
  68.                 outputChatBox(formPlayerName(aliveplayers[1]).." won! Total destruction derbies won: "..xmlNodeGetValue(ddwinnode).." of "..xmlNodeGetValue(ddplayednode).." ("..string.format("%.02f",math.floor(((tonumber(xmlNodeGetValue(ddwinnode))/tonumber(xmlNodeGetValue(ddplayednode)))+0.00005)*10000)/100).."%)",getRootElement(),getScriptColor(1))
  69.                 outputChatBox("Earned points: "..points.." (Total: "..xmlNodeGetValue(pointsnode)..")",getRootElement(),getScriptColor(1))
  70.             elseif #aliveplayers == 0 then
  71.                 --nothing
  72.             else
  73.                 local pointsnode = xmlFindChild(playernode,"points",0)
  74.                 local rank = #aliveplayers + 1
  75.                 local points = calcPoints(rank)
  76.                 nodeAdd(pointsnode,points)
  77.                 outputChatBox("You earned "..points.." points for rank "..rank.."! Total points: "..xmlNodeGetValue(pointsnode),source,getScriptColor(1))
  78.             end
  79.         end
  80.     end
  81. end
  82. addEventHandler("onPlayerQuit",getRootElement(),racePlayerQuit)
  83.  
  84. local _getAlivePlayers = getAlivePlayers
  85. function getAlivePlayers(player)
  86.     local result = {}
  87.     for _,player in ipairs(_getAlivePlayers()) do
  88.         if getElementData(player, "state") == "alive" then
  89.             table.insert(result, player)
  90.         end
  91.     end
  92.     return result
  93. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement