function GetIP1(RoleID1) Sql_con() sql = [[ SELECT ip,CONVERT(SUBSTRING_INDEX(ip,'.',-4),UNSIGNED INTEGER) AS ip FROM sm_db.roledata INNER JOIN sm_login.login_log ON sm_login.login_log.accountID = sm_db.roledata.AccountID WHERE sm_db.roledata.RoleID = '%s' AND sm_login.login_log.action = 'login' AND CAST(sm_login.login_log.time AS date) = CURDATE() ORDER BY sm_login.login_log.time DESC LIMIT 1]] for _, ip in rows(con, sql:format(RoleID1)) do return ip end con:close() env:close() end function GetIP2(RoleID1) Sql_con() sql = [[ SELECT ip,CONVERT(SUBSTRING_INDEX(ip,'.',-3),UNSIGNED INTEGER) AS ip FROM sm_db.roledata INNER JOIN sm_login.login_log ON sm_login.login_log.accountID = sm_db.roledata.AccountID WHERE sm_db.roledata.RoleID = '%s' AND sm_login.login_log.action = 'login' AND CAST(sm_login.login_log.time AS date) = CURDATE() ORDER BY sm_login.login_log.time DESC LIMIT 1]] for _, ip in rows(con, sql:format(RoleID1)) do return ip end con:close() env:close() end function GetIP3(RoleID1) Sql_con() sql = [[ SELECT ip,CONVERT(SUBSTRING_INDEX(ip,'.',-2),UNSIGNED INTEGER) AS ip FROM sm_db.roledata INNER JOIN sm_login.login_log ON sm_login.login_log.accountID = sm_db.roledata.AccountID WHERE sm_db.roledata.RoleID = '%s' AND sm_login.login_log.action = 'login' AND CAST(sm_login.login_log.time AS date) = CURDATE() ORDER BY sm_login.login_log.time DESC LIMIT 1]] for _, ip in rows(con, sql:format(RoleID1)) do return ip end con:close() env:close() end function GetIP4(RoleID1) Sql_con() sql = [[ SELECT ip,CONVERT(SUBSTRING_INDEX(ip,'.',-1),UNSIGNED INTEGER) AS ip FROM sm_db.roledata INNER JOIN sm_login.login_log ON sm_login.login_log.accountID = sm_db.roledata.AccountID WHERE sm_db.roledata.RoleID = '%s' AND sm_login.login_log.action = 'login' AND CAST(sm_login.login_log.time AS date) = CURDATE() ORDER BY sm_login.login_log.time DESC LIMIT 1]] for _, ip in rows(con, sql:format(RoleID1)) do return ip end con:close() env:close() end function Check_ArenaIP(RoleID2) Sql_con() sql = [[ SELECT sm_login.login_log.addId, sm_login.login_log.ip FROM sm_db.roledata INNER JOIN sm_login.login_log ON sm_login.login_log.accountID = sm_db.roledata.AccountID WHERE sm_db.roledata.RoleID = '%s' AND sm_login.login_log.action = 'login' AND CAST(sm_login.login_log.time AS date) = CURDATE() ORDER BY sm_login.login_log.time DESC LIMIT 1]] for _, _ in rows(con, sql:format(RoleID2)) do return 16777216 * GetIP1(RoleID2) + 65536 * GetIP2(RoleID2) + 256 * GetIP3(RoleID2) + GetIP4(RoleID2) end con:close() env:close() end function arena_frontire_reiting_sql(RoleID, ArenaVictory, ArenaDefeat, Glory, add) Sql_con() local rating_count = 0 for Count in rows(con, "SELECT Count(RoleID) As Count FROM (SELECT RoleID FROM arena_frontire ORDER BY Glory DESC LIMIT 10) as t") do rating_count = Count end local gift_flag = 0 for Gift in rows(con, string.format("SELECT Gift FROM arena_frontire WHERE RoleID = '%s'", RoleID)) do gift_flag = Gift end if add == 1 then sql = "SELECT * FROM arena_frontire WHERE RoleID = '%s'" local role_exists = 0 for found_role in rows(con, sql:format(RoleID)) do role_exists = found_role end if role_exists == 0 then sql = "INSERT INTO arena_frontire VALUES ('%s', '%s', '%s', '%s', 0)" con:execute(sql:format(RoleID, ArenaVictory, ArenaDefeat, Glory)) else sql = "Update arena_frontire set Glory = Glory+'%s', ArenaVictory = ArenaVictory+'%s', ArenaDefeat = ArenaDefeat+'%s' where RoleID = '%s'" con:execute(sql:format(Glory, ArenaVictory, ArenaDefeat, RoleID)) end end if add == 2 then sql = "Update arena_frontire set Gift = 1 where RoleID = '%s'" con:execute(sql:format(RoleID)) end local RoleID_rating = {} local RoleID_point = {} local i = 1 for rated_role, rated_glory in rows(con, "SELECT RoleID, Glory FROM arena_frontire ORDER BY Glory DESC LIMIT 10") do RoleID_rating[i] = rated_role RoleID_point[i] = rated_glory i = i + 1 end sql = "SELECT Glory,ArenaVictory,ArenaDefeat FROM arena_frontire WHERE RoleID = '%s'" local my_rating_point = 0 local my_rating_victory = 0 local my_rating_defeat = 0 for Glory, ArenaVictory, ArenaDefeat in rows(con, sql:format(RoleID)) do my_rating_point = Glory my_rating_victory = ArenaVictory my_rating_defeat = ArenaDefeat end con:close() env:close() return rating_count, RoleID_rating, RoleID_point, my_rating_point, my_rating_victory, my_rating_defeat, gift_flag end function arena_frontire_reiting_sql_mouth(RoleID, ArenaVictory, ArenaDefeat, Glory, add) Sql_con() local rating_count = 0 for Count in rows(con, "SELECT Count(RoleID) As Count FROM (SELECT RoleID FROM arena_frontire_mouth ORDER BY Glory DESC LIMIT 10) as t") do rating_count = Count end local gift_flag = 0 for Gift in rows(con, string.format("SELECT Gift FROM arena_frontire_mouth WHERE RoleID = '%s'", RoleID)) do gift_flag = Gift end if add == 1 then sql = "SELECT * FROM arena_frontire_mouth WHERE RoleID = '%s'" local role_exists = 0 for found_role in rows(con, sql:format(RoleID)) do role_exists = found_role end if role_exists == 0 then sql = "INSERT INTO arena_frontire_mouth VALUES ('%s', '%s', '%s', '%s', 0)" con:execute(sql:format(RoleID, ArenaVictory, ArenaDefeat, Glory)) else sql = "Update arena_frontire_mouth set Glory = Glory+'%s', ArenaVictory = ArenaVictory+'%s', ArenaDefeat = ArenaDefeat+'%s' where RoleID = '%s'" con:execute(sql:format(Glory, ArenaVictory, ArenaDefeat, RoleID)) end end if add == 2 then sql = "Update arena_frontire_mouth set Gift = 1 where RoleID = '%s'" con:execute(sql:format(RoleID)) end local RoleID_rating = {} local RoleID_point = {} local i = 1 for rated_role, rated_glory in rows(con, "SELECT RoleID, Glory FROM arena_frontire_mouth ORDER BY Glory DESC LIMIT 10") do RoleID_rating[i] = rated_role RoleID_point[i] = rated_glory i = i + 1 if RoleID_point == nil then RoleID_point = 0 end end sql = "SELECT Glory,ArenaVictory,ArenaDefeat FROM arena_frontire_mouth WHERE RoleID = '%s'" local my_rating_point = 0 local my_rating_victory = 0 local my_rating_defeat = 0 for Glory, ArenaVictory, ArenaDefeat in rows(con, sql:format(RoleID)) do my_rating_point = Glory my_rating_victory = ArenaVictory my_rating_defeat = ArenaDefeat end con:close() env:close() return rating_count, RoleID_rating, RoleID_point, my_rating_point, my_rating_victory, my_rating_defeat, gift_flag end function clear_reiting_sql() Sql_con() sql = "TRUNCATE arena_frontire" con:execute(sql) con:close() env:close() end