<%@ 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; } var touserid = ""; var toaddress = ""; var toname = ""; //get gamestatus var rs2 = Server.CreateObject("adodb.recordset"); sql = "select gamestatusid, rated from game where id = " + Request.QueryString("gameid"); rs2.Open(sql, conn); var gamestatusid = String(rs2("gamestatusid")); var rated = String(rs2("rated")); var rs = Server.Createobject("adodb.recordset"); var sql = "select * from game where id = " + Request.QueryString("gameid"); rs.open(sql, conn); var user1id = String(rs("user1id")); var user2id = String(rs("user2id")); var winnerid = String(rs("winnerid")); rs.Close; var messageid = ""; if (gamestatusid == 1) { messageid = 3; sql = "update game set gamestatusid = 2 where id = " + Request.QueryString("gameid"); conn.Execute(sql); //send email to user if (Session("userid") == user1id) touserid = user2id; else touserid = user1id; sql = "select email, username from [user] where id = " + touserid; rs.Open(sql); toaddress = String(rs("email")); toname = String(rs("username")); var title = ""; var body = ""; title = "Challenge accepted!"; body = "Hi " + toname + "\n\n"; body += "Your opponent has accepted your challenge.\n"; body += "Now you can begin the game. You can check the game details at the Empire Deluxe Ladder.\n"; body += "\nThe Empire Deluxe Ladder\n"; body += "www.givoni.com/empire/"; sendEmail(toaddress, title, body); } else { messageid = 6; //send email to user if (Session("userid") == user1id) touserid = user2id; else touserid = user1id; sql = "select email, username from [user] where id = " + touserid; rs.Open(sql); toaddress = String(rs("email")); toname = String(rs("username")); var title = ""; var body = ""; title = "Game result accepted!"; body = "Hi " + toname + "\n\n"; body += "Your opponent has accepted the game result.\n"; body += "Your rating has been updated. To check out your new rating, please go to the Empire Deluxe Ladder.\n"; body += "\nThe Empire Deluxe Ladder\n"; body += "www.givoni.com/empire/"; sendEmail(toaddress, title, body); } sql = "insert into gamenegotiation (userid, messageid, [timestamp], gameid) values ("; sql += Session("userId") + ", "; sql += messageid + ", "; sql += "'" + getDate() + "', "; sql += Request.QueryString("gameid"); sql += ")"; conn.Execute(sql); if (gamestatusid == 3 && rated == 1) { //get result var sql = "SELECT * FROM game WHERE id = " + Request.QueryString("gameid"); var rsGame = Server.CreateObject("adodb.recordset"); rsGame.Open(sql, conn); 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(); var sql = "select * from game where id = " + Request.QueryString("gameid"); var game = Server.Createobject("adodb.recordset"); game.open(sql, conn, 0, 3); game("user1rating") = (user1("rating") - u1rating_old); game("user2rating") = (user2("rating") - u2rating_old); game.Update(); } Response.Redirect("../player_data.asp"); %>