Taquito Posted January 4, 2016 Share Posted January 4, 2016 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now