<%@ Language="Jscript" %> <% function calculateRating(u1rating, u2rating, winner) { u1rating = Number(u1rating); oldrating = Number(u1rating); u2rating = Number(u2rating); winner = Number(winner); var ratingdifference = Math.abs(u1rating - u2rating); if (ratingdifference > 700) ratingdifference = 700; var percentage = 0.5 + (ratingdifference/1500); var gamepoints = 32; switch (winner) { case (1): if (u1rating > u2rating) var points = Math.round((1 - percentage) * gamepoints); else var points = Math.round(percentage * gamepoints); u1rating = u1rating + points; u2rating = u2rating - points; break; case (0): var points = Math.round(percentage * gamepoints); if (u1rating > (u2rating + gamepoints)) { u1rating = u1rating - Math.round(points/3); u2rating = u2rating + Math.round(points/3); } else if ((u1rating + gamepoints) < u2rating) { u1rating = u1rating + Math.round(points/3); u2rating = u2rating - Math.round(points/3); } else { u1rating = u1rating + Math.round(points/3); u2rating = u2rating + Math.round(points/3); } break; case (2): if (u1rating < u2rating) var points = Math.round((1 - percentage) * gamepoints); else var points = Math.round(percentage * gamepoints); u1rating = u1rating - points; u2rating = u2rating + points; break; } var diff = Number(u1rating - oldrating); return diff; } //reset player ratings var sql = "UPDATE [user] SET rating = 1000"; conn.Execute(sql); //get all games that are finished var rsGame = Server.CreateObject("adodb.recordset"); sql = "select * from game where gamestatusid = 3 AND rated = 1 AND user1rating IS NOT NULL"; rsGame.Open(sql, conn, 0, 3); while (!(rsGame.eof || rsGame.bof)) { Response.write(rsGame("id")); var user1id = String(rsGame("user1id")); var user2id = String(rsGame("user2id")); winnerid = Number(rsGame("winnerid")); if (winnerid == 0) var result = 0; else if (winnerid == Number(user1id)) var result = 1; else var result = 2; //UPDATE THE USERS RATING var user1 = Server.CreateObject("adodb.recordset"); sql = "select * from [user] where id = " + user1id; user1.open(sql, conn, 0, 3); var user2 = Server.CreateObject("adodb.recordset"); sql = "select * from [user] where id = " + user2id; user2.open(sql, conn, 0, 3); var u1rating_old = Number(user1("rating")); var u2rating_old = Number(user2("rating")); u1 = u1rating_old; u2 = u2rating_old; var difference = calculateRating(u1, u2, result); user1("rating") = u1rating_old + difference; if (result == 0 && ((u1rating_old + 32) >= u2rating_old) && ((u1rating_old - 32) <= u2rating_old)) user2("rating") = u2rating_old + difference; else user2("rating") = u2rating_old - difference; //give out beginner points if (u1rating_old < 1200 && u1rating_old >= 1100) user1("rating") = Number(user1("rating")) + 10; if (u2rating_old < 1200 && u2rating_old >= 1100) user2("rating") = Number(user2("rating")) + 10; if (u1rating_old < 1100 && u1rating_old >= 1000) user1("rating") = Number(user1("rating")) + 20; if (u2rating_old < 1100 && u2rating_old >= 1000) user2("rating") = Number(user2("rating")) + 20; user1.Update(); user2.Update(); rsGame("user1rating") = (user1("rating") - u1rating_old); rsGame("user2rating") = (user2("rating") - u2rating_old); rsGame.Update(); user1.close(); user2.close(); rsGame.movenext(); Response.write("ok
"); } %>