Jump to content

[HELP] RACE(DD) points system, little problem


Taquito

Recommended Posts

Here's points system I use on my DD server. Everything works good except one thing.

Example:

5 players on the server

1. 4 points, 8$ - good

2. 4 points, 8$ - <=== wrong, should be 3 points, 6$

3. 2 points, 4$ - good

4. 1 point, 2$ - good

5. Gets 0 points, 0 money - good

What is wrong? What do I change to make it work properly?

g_Root = getRootElement() 
  
-- Config section 
minPlayers = 5 
soundsCount = 74 
  
-- Script variables 
local totalPlayers = 0 
local tripleDamages = false 
  
-- When our resource start and stop 
function resourceStart(res) 
   sql = mysql_connect("censored")            
   exports.scoreboard:scoreboardAddColumn("dd.points", g_Root, 70, "Points") 
   exports.scoreboard:scoreboardAddColumn("dd.rank", g_Root, 70, "Rank") 
   exports.scoreboard:scoreboardAddColumn("dd.money", g_Root, 70, "Money") 
   exports.scoreboard:scoreboardSetSortBy("dd.points", false) 
                               
   totalPlayers = #getAlivePlayers() + #getDeadPlayers() 
end 
  
function resourceStop(res) 
    mysql_close(sql) 
end 
  
-- When play connect to our server 
function playerJoin()     
    -- Welcome message 
    outputChatBox("[sERVER] #FFFF00Welcome  \"{SMILIES_PATH}/icon_smile.gif\" alt=\"\" title=\"Smile\" />", source, 255, 0, 0, true) 
    outputChatBox("Press to open:", source, 150, 255, 150, true) 
    outputChatBox("F1 - User panel #007800|| #00E600F5 - Shader panel #007800|| #00E600F6 - Color panel", source, 0, 230, 0, true) 
    -- outputChatBox("[sERVER] #FFFF00You have ".. (getElementData(source, "dd.points") or 0) .." points, and ".. (getElementData(source, "dd.money") or 0) .."$.", source, 255, 0, 0, true) 
     
    -- Load data 
    UtopiaDD.loadPlayer(source) 
     
    -- Save join time 
    local ctime = getRealTime() 
    setElementData(source, "dd.stats.join_time", tonumber(ctime.timestamp)) 
end 
  
-- When player quit or die 
function playerQuit(quitType) 
    -- Update played time 
    statistics.addTime(source) 
end 
  
function playerSpawned(posX, posY, posZ, spawnRotation, theTeam, theSkin, theInterior, theDimension) 
   UtopiaDD.loadPlayer(source) 
  
   -- Remove items 
   setElementData(source, "dd.ghost", nil) 
end 
  
function playerWasted(ammo, attacker, weapon, bodypart) 
    -- Get serial 
    local playerSerial = getPlayerSerial(source) 
    local escSerial = mysql_escape_string(sql, playerSerial) 
   
    if (getPlayerIdleTime(source)> 15000) then 
      return true 
    end 
   
    -- If there is more than two players 
    if(totalPlayers > minPlayers-1) then 
        -- Then give a point reward to dead player 
        reward = totalPlayers - #getAlivePlayers() - 1 
         
         if(reward > 0) then 
            local playerPoints = getElementData(source, "dd.points") 
            local playerMoney = getElementData(source, "dd.money") 
          
            setElementData(source, "dd.points", tonumber(playerPoints) + reward) 
            setElementData(source, "dd.money", tonumber(playerMoney) + 2*reward) 
            outputChatBox("[POINTS] #FFFF00You have now +".. reward .." points more! You have also earned ".. 2*reward .."$. Total points: "..getElementData(source, "dd.points"), source, 255, 0, 0, true) 
             
            -- Save points 
          mysql_query(sql, "UPDATE players SET points = points+".. reward ..", money = money+".. 2*reward .." WHERE serial = '".. escSerial .."'") 
         else 
            outputChatBox("[POINTS] #FFFF00You were first... you are out of luck. No points for you this time.", source, 255, 0, 0, true)          
         end 
      -- Or say so the point system is disabled now 
      else 
         outputChatBox ( "[POINTS] #FFFF00Need ".. minPlayers-totalPlayers.." more players to enable points system", source, 255, 0, 0, true ) 
      end 
  
    -- Refresh rank 
      UtopiaDD.updatePlayerRank(source) 
end 
  
function playerFinished(rank) 
   if rank < 4 then 
      statistics.addWin(source, rank) 
   end 
end 
  
function playerWon() 
    --blowVehicle(getPedOccupiedVehicle(source)) 
    killPed(source) 
    statistics.addWin(source, 1) 
    triggerClientEvent("onFinish", getRootElement(), "sounds/rs".. math.random(soundsCount) ..".mp3") 
end 
  
function enableTripleDamages() 
   tripleDamages = true 
    
   outputChatBox("[DD] #FFFF00Double damages enabled!", getRootElement(), 255, 0, 0, true) 
end 
  
function vehicleDamaged(damage) 
   if tripleDamages then 
      setElementHealth(source, getElementHealth(source) - damage) 
   end 
end 
  
function removeRepairs() 
   call(getResourceFromName("race"), "removeHealthPickups")  
   outputChatBox("[DD] #FFFF00All repair pickups destroyed!", getRootElement(), 255, 0, 0, true) 
end 
  
function mapStarted(mapInfo, mapOptions, gameOptions) 
   totalPlayers = #getAlivePlayers() + #getDeadPlayers() 
    
   -- Remove repairs trigger 
   if (isTimer(removeRepairsTrigger)) then 
      killTimer(removeRepairsTrigger) 
   end  
    
   -- Triple damages trigger 
   if (isTimer(tripleDamagesTrigger)) then 
      killTimer(tripleDamagesTrigger) 
   end  
    
   tripleDamages = false     
    
   removeRepairsTrigger = setTimer(removeRepairs, 60*1000, 1) 
   tripleDamagesTrigger = setTimer(enableTripleDamages, 120*1000, 1) 
end 
  
function stateChanged(newState, oldState) 
   -- Count a players 
   if (newState == "GridCountdown") then 
      totalPlayers = #getAlivePlayers() + #getDeadPlayers() 
   end 
end 
  
-- Add all event hadlers 
addEventHandler("onResourceStart", getRootElement(), resourceStart) 
addEventHandler("onResourceStop", getRootElement(), resourceStop) 
  
addEventHandler("onPlayerJoin", getRootElement(), playerJoin) 
addEventHandler("onPlayerQuit", getRootElement(), playerQuit) 
  
addEventHandler("onPlayerSpawn", getRootElement(), playerSpawned) 
addEventHandler("onPlayerWasted", getRootElement(), playerWasted) 
  
addEventHandler("onPlayerFinishDD", getRootElement(), playerFinished) 
addEventHandler("onPlayerWinDD", getRootElement(), playerWon) 
  
addEventHandler("onVehicleDamage", getRootElement(), vehicleDamaged) 
  
addEventHandler("onMapStarting", getRootElement(), mapStarted) 
addEventHandler("onRaceStateChanging", getRootElement(), stateChanged) 
  

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...