Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- addEvent("onMapStarting")
- addEventHandler('onMapStarting', g_Root,
- function(mapInfo)
- currentmode = mapInfo.modename
- end
- )
- function playerDeath()
- if #getElementsByType("player") >= minplayers then
- local playernode = getPlayerNode(source)
- nodeAdd(xmlFindChild(xmlFindChild(playernode,"deaths",0),"total",0),1)
- if currentmode == "Destruction derby" then
- local aliveplayers = getAlivePlayers()
- if #aliveplayers == 1 then
- local pointsnode = xmlFindChild(playernode,"points",0)
- local points = calcPoints(2)
- nodeAdd(pointsnode,points)
- outputChatBox("You earned "..points.." points for rank 2! Total points: "..xmlNodeGetValue(pointsnode),source,getScriptColor(1))
- playernode = getPlayerNode(aliveplayers[1])
- local ddwinnode = xmlFindChild(playernode,"ddswon",0)
- local ddplayednode = xmlFindChild(playernode,"ddsplayed",0)
- nodeAdd(ddwinnode,1)
- pointsnode = xmlFindChild(playernode,"points",0)
- points = calcPoints(1)
- nodeAdd(pointsnode,points)
- 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))
- outputChatBox("Earned points: "..points.." (Total: "..xmlNodeGetValue(pointsnode)..")",getRootElement(),getScriptColor(1))
- elseif #aliveplayers == 0 then
- --nothing
- else
- local pointsnode = xmlFindChild(playernode,"points",0)
- local rank = #aliveplayers + 1
- local points = calcPoints(rank)
- nodeAdd(pointsnode,points)
- outputChatBox("You earned "..points.." points for rank "..rank.."! Total points: "..xmlNodeGetValue(pointsnode),source,getScriptColor(1))
- end
- end
- else
- if currentmode == "Destruction derby" then
- local aliveplayers = getAlivePlayers()
- if #aliveplayers == 1 then
- outputChatBox("Need at least #FFFFFF"..minplayers.." players #FF0000playing to affect stats",getRootElement(),getScriptColor(2),true)
- end
- end
- end
- end
- addEventHandler("onPlayerWasted",getRootElement(),playerDeath)
- function racePlayerQuit(quittype,reason,responsibleelement)
- if #getElementsByType("player") >= minplayers then
- if currentmode == "Destruction derby" then
- local playernode = getPlayerNode(source)
- local aliveplayers = getAlivePlayers()
- if #aliveplayers == 1 then
- local pointsnode = xmlFindChild(playernode,"points",0)
- local points = calcPoints(2)
- nodeAdd(pointsnode,points)
- outputChatBox("You earned "..points.." points for rank 2! Total points: "..xmlNodeGetValue(pointsnode),source,getScriptColor(1))
- playernode = getPlayerNode(aliveplayers[1])
- local ddwinnode = xmlFindChild(playernode,"ddswon",0)
- local ddplayednode = xmlFindChild(playernode,"ddsplayed",0)
- nodeAdd(ddwinnode,1)
- pointsnode = xmlFindChild(playernode,"points",0)
- points = calcPoints(1)
- nodeAdd(pointsnode,points)
- 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))
- outputChatBox("Earned points: "..points.." (Total: "..xmlNodeGetValue(pointsnode)..")",getRootElement(),getScriptColor(1))
- elseif #aliveplayers == 0 then
- --nothing
- else
- local pointsnode = xmlFindChild(playernode,"points",0)
- local rank = #aliveplayers + 1
- local points = calcPoints(rank)
- nodeAdd(pointsnode,points)
- outputChatBox("You earned "..points.." points for rank "..rank.."! Total points: "..xmlNodeGetValue(pointsnode),source,getScriptColor(1))
- end
- end
- end
- end
- addEventHandler("onPlayerQuit",getRootElement(),racePlayerQuit)
- local _getAlivePlayers = getAlivePlayers
- function getAlivePlayers(player)
- local result = {}
- for _,player in ipairs(_getAlivePlayers()) do
- if getElementData(player, "state") == "alive" then
- table.insert(result, player)
- end
- end
- return result
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement