Thread: [PI] Highscores

Page 1 of 25 12311 ... LastLast
Results 1 to 10 of 245
  1. #1 [PI] Highscores 
    Registered Member Zenocko's Avatar
    Join Date
    Sep 2007
    Posts
    92
    Thanks given
    19
    Thanks received
    24
    Rep Power
    21
    Update 1: Fixed the cant find Highscores error. You have to import highscores into the Server.java.
    Update 2: Added link to DB at the bottom
    Update 3: Made a better version of checking if mysql is connected in Server.java
    Update 4: I was making it so you connected to the database only when you logged out. I changed it in this update so it connects to the database when you start the server.
    Update 5: Rewrote alot of the highscores.java file - August 23rd, 2010
    Update 6: Added new highscore website files - thanks john.
    Update 7: Fixed DB link 11/7/2013


    You guys can stop quoting I was never gona remove it I just wanted some posts. & If I update tut and someone reads your quote they could end up doing it wrong ;.

    Description: How to add highscores to your server. I will give you guys the files and explain how to implement it into your server. I will NOT be telling you how to get a mysql database, or how to upload the highscores to your website.

    Difficulty: About 5/10

    Assumed Knowledge: How to use CTRL+F button, how to download, paste, copy, etc..

    Tested Server: SoulSplit(PI)
    Files/Classes Modified: Client.java, Highscores.java, Server.java


    Step 1:
    BACK UP ALL SERVER FILES

    Step 2:
    Create the following class file:
    Code:
    package server.model.players;
    
    import java.sql.*;
    
    public class Highscores {
    	public static Connection con;
    	public static Statement stm;
            public static boolean connected;
    	
    	public static String Host = "jdbc:mysql://HOST/DATABASE";
    	public static String User = "USERNAME";
    	public static String Pass = "PASSWORD";
    	
        public static void process() {
            try
            {
                Class.forName(Driver).newInstance();
    	    Connection con = DriverManager.getConnection(Host, User, Pass);
    	    stm = con.createStatement();
                connected = true;
            }
            catch(Exception e)
            {
                connected = false;
                e.printStackTrace();
            }
        }
    
        public static ResultSet query(String s)
            throws SQLException
        {
            if(s.toLowerCase().startsWith("select"))
            {
                ResultSet resultset = stm.executeQuery(s);
                return resultset;
            }
            try
            {
                stm.executeUpdate(s);
                return null;
            }
            catch(Exception e)
            {
                destroy();
            }
            process();
            return null;
        }
    
        public static void destroy() {
            try
            {
                stm.close();
                con.close();
                connected = false;
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    
        public static boolean save(Client c) {
            try
            {
                query("DELETE FROM `skills` WHERE playerName = '"+c.playerName+"';");
    	    query("DELETE FROM `skillsoverall` WHERE playerName = '"+c.playerName+"';");
    	    query("INSERT INTO `skills` (`playerName`,`Attacklvl`,`Attackxp`,`Defencelvl`,`Defencexp`,`Strengthlvl`,`Strengthxp`,`Hitpointslvl`,`Hitpointsxp`,`Rangelvl`,`Rangexp`,`Prayerlvl`,`Prayerxp`,`Magiclvl`,`Magicxp`,`Cookinglvl`,`Cookingxp`,`Woodcuttinglvl`,`Woodcuttingxp`,`Fletchinglvl`,`Fletchingxp`,`Fishinglvl`,`Fishingxp`,`Firemakinglvl`,`Firemakingxp`,`Craftinglvl`,`Craftingxp`,`Smithinglvl`,`Smithingxp`,`Mininglvl`,`Miningxp`,`Herblorelvl`,`Herblorexp`,`Agilitylvl`,`Agilityxp`,`Thievinglvl`,`Thievingxp`,`Slayerlvl`,`Slayerxp`,`Farminglvl`,`Farmingxp`,`Runecraftlvl`,`Runecraftxp`) VALUES ('"+c.playerName+"',"+c.playerLevel[0]+","+c.playerXP[0]+","+c.playerLevel[1]+","+c.playerXP[1]+","+c.playerLevel[2]+","+c.playerXP[2]+","+c.playerLevel[3]+","+c.playerXP[3]+","+c.playerLevel[4]+","+c.playerXP[4]+","+c.playerLevel[5]+","+c.playerXP[5]+","+c.playerLevel[6]+","+c.playerXP[6]+","+c.playerLevel[7]+","+c.playerXP[7]+","+c.playerLevel[8]+","+c.playerXP[8]+","+c.playerLevel[9]+","+c.playerXP[9]+","+c.playerLevel[10]+","+c.playerXP[10]+","+c.playerLevel[11]+","+c.playerXP[11]+","+c.playerLevel[12]+","+c.playerXP[12]+","+c.playerLevel[13]+","+c.playerXP[13]+","+c.playerLevel[14]+","+c.playerXP[14]+","+c.playerLevel[15]+","+c.playerXP[15]+","+c.playerLevel[16]+","+c.playerXP[16]+","+c.playerLevel[17]+","+c.playerXP[17]+","+c.playerLevel[18]+","+c.playerXP[18]+","+c.playerLevel[19]+","+c.playerXP[19]+","+c.playerLevel[20]+","+c.playerXP[20]+");");
    	    query("INSERT INTO `skillsoverall` (`playerName`,`lvl`,`xp`) VALUES ('"+c.playerName+"',"+(c.getLevelForXP(c.playerXP[0]) + c.getLevelForXP(c.playerXP[1]) + c.getLevelForXP(c.playerXP[2]) + c.getLevelForXP(c.playerXP[3]) + c.getLevelForXP(c.playerXP[4]) + c.getLevelForXP(c.playerXP[5]) + c.getLevelForXP(c.playerXP[6]) + c.getLevelForXP(c.playerXP[7]) + c.getLevelForXP(c.playerXP[8]) + c.getLevelForXP(c.playerXP[9]) + c.getLevelForXP(c.playerXP[10]) + c.getLevelForXP(c.playerXP[11]) + c.getLevelForXP(c.playerXP[12]) + c.getLevelForXP(c.playerXP[13]) + c.getLevelForXP(c.playerXP[14]) + c.getLevelForXP(c.playerXP[15]) + c.getLevelForXP(c.playerXP[16]) + c.getLevelForXP(c.playerXP[17]) + c.getLevelForXP(c.playerXP[18]) + c.getLevelForXP(c.playerXP[19]) + c.getLevelForXP(c.playerXP[20]))+","+((c.playerXP[0]) + (c.playerXP[1]) + (c.playerXP[2]) + (c.playerXP[3]) + (c.playerXP[4]) + (c.playerXP[5]) + (c.playerXP[6]) + (c.playerXP[7]) + (c.playerXP[8]) + (c.playerXP[9]) + (c.playerXP[10]) + (c.playerXP[11]) + (c.playerXP[12]) + (c.playerXP[13]) + (c.playerXP[14]) + (c.playerXP[15]) + (c.playerXP[16]) + (c.playerXP[17]) + (c.playerXP[18]) + (c.playerXP[19]) + (c.playerXP[20]))+");");
    		}
            catch(Exception e)
            {
                e.printStackTrace();
                return false;
            }
            return true;
        }
    	public static String Driver = "com.mysql.jdbc.Driver";
    }
    Save it as "Highscores.java" in your src.server.model.players folder. Edit the red parts I highlighted to fit your own database info.

    Step 3:
    Now that we have the correct highscores file we need to implement it into the server.

    Open Client.java(src.server.model.players) and find
    Code:
    public void logout() {
    Under it add:
    Code:
    Highscores.save(this);
    Save & Exit Client.java

    Open Server.java(src.server) and add this with the rest of your imports at the top of file:
    Code:
    import server.model.players.Highscores;
    next search for
    Code:
    public static void main
    Under it you should see something like
    Code:
    System.out.println("Loading Alison317 - Zenocko.");
    Below this code ^ add:
    Code:
    Highscores.process();
    if (Highscores.connected) {
    System.out.println("Connected to MySQL Database!");
    } else {
    System.out.println("Failed to connect to MySQL Database!");
    }
    This 1. connects to the mysql database at the start of the server; 2. Tells you if you are/arent connecting to the database correctly.

    Step 4:
    Now we need to add the mysql connector(the com.mysql.jdbc.Driver files). Alot of people already have the files but for the new people download them here: UPLOAD.EE - Download sql.rar. Anyways, once you have the files extract them to bin.server.model.players so that the "com" folder is in the same directory as the Highscores.class file.

    Save Compile & Run. You can follow this tut: http://www.rune-server.org/runescape...a-website.html for help on getting the website part to work for you.


    Anything I forgot post please. Post errors/bugs/fixes here too. I encourage people to show me more efficient ways of doing things .

    FAQ: This is my first tut. I have been coding rsps since 2006 (my mopar register date is july-20-2006). I did a few tuts on mopar but leech pissed me off so I never did one again. This tut looked like it was actually needed so I made it. Dont like it? **** you.

    Downloads:
    Link to DB:Pastebin - MySQL DB
    Mysql Connector files: UPLOAD.EE - Download sql.rar
    Highscore php and img files: Uppit Highscores.rar








    This is my first tut but if it helped rep++ if I get good comments Ill make some more tuts in the future.
    Reply With Quote  
     

  2. Thankful users:


  3. #2  
    Endeavor

    Mikey`'s Avatar
    Join Date
    Dec 2007
    Posts
    4,434
    Thanks given
    715
    Thanks received
    1,435
    Rep Power
    1202
    Nice work.
    Reply With Quote  
     

  4. #3  
    Registered Member
    Division's Avatar
    Join Date
    Dec 2009
    Age
    29
    Posts
    2,208
    Thanks given
    41
    Thanks received
    78
    Rep Power
    97
    Looks good, but wouldnt use it.
    Reply With Quote  
     

  5. #4  
    Donator
    brooks2011's Avatar
    Join Date
    Jul 2010
    Posts
    67
    Thanks given
    0
    Thanks received
    0
    Rep Power
    1
    Nice work broman
    Reply With Quote  
     

  6. #5  
    Registered Member Satan666's Avatar
    Join Date
    May 2010
    Posts
    449
    Thanks given
    65
    Thanks received
    100
    Rep Power
    15
    Hmm I'm getting an error:

    Symbol : variable Highscores
    Location : class server.Server
    if (Highscores.connected = true) {
    Reply With Quote  
     

  7. #6  
    Registered Member
    ViperSniper's Avatar
    Join Date
    Apr 2007
    Age
    30
    Posts
    2,417
    Thanks given
    367
    Thanks received
    82
    Rep Power
    976
    Spoiler for Cool story bro:
    Quote Originally Posted by Zenocko View Post
    50 Views and no replys? No wonder people never help each other on this community. Any more leeching before theres a post and im removing this.



    Description: How to add highscores to your server. I will give you guys the files and explain how to implement it into your server. I will NOT be telling you how to get a mysql database, or how to upload the highscores to your website.

    Difficulty: About 5/10

    Assumed Knowledge: How to use CTRL+F button, how to download, paste, copy, etc..

    Tested Server: SoulSplit(PI)
    Files/Classes Modified: Client.java, Highscores.java, Server.java


    Step 1:
    BACK UP ALL SERVER FILES

    Step 2:
    Create the following class file:
    Code:
    package server.model.players;
    
    import java.sql.*;
    
    /*
     * I decompiled the SQL.class file from SoulSplit source
     * I edited it heavily though.
     * Credits to Zenocko and owner of EvoScape for the file
     */
    
    public class Highscores {
        public static Connection con;
        public static Statement stm;
        public static boolean connected;
    	
        public static void process() {
            try
            {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
    	    String databaseURL = "jdbc:mysql://HOST/DATABASE";
    	    Connection con = DriverManager.getConnection(databaseURL, "USERNAME", "PASSWORD");
    	    stm = con.createStatement();
                connected = true;
            }
            catch(Exception e)
            {
                connected = false;
                e.printStackTrace();
            }
        }
    
        public static ResultSet query(String s)
            throws SQLException
        {
            if(s.toLowerCase().startsWith("select"))
            {
                ResultSet resultset = stm.executeQuery(s);
                return resultset;
            }
            try
            {
                stm.executeUpdate(s);
                return null;
            }
            catch(Exception e)
            {
                destroy();
            }
            process();
            return null;
        }
    
        public static void destroy() {
            try
            {
                stm.close();
                con.close();
                connected = false;
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    
        public static boolean save(Client c) {
            try
            {
                query((new StringBuilder()).append("DELETE FROM `skills` WHERE playerName = '").append(c.playerName).append("';").toString());
                query((new StringBuilder()).append("DELETE FROM `skillsoverall` WHERE playerName = '").append(c.playerName).append("';").toString());
                query((new StringBuilder()).append("INSERT INTO `skills` (`playerName`,`Attacklvl`,`Attackxp`,`Defencelvl`,`Defencexp`,`Strengthlvl`,`Strengthxp`,`Hitpointslvl`,`Hitpointsxp`,`Rangelvl`,`Rangexp`,`Prayerlvl`,`Prayerxp`,`Magiclvl`,`Magicxp`,`Cookinglvl`,`Cookingxp`,`Woodcuttinglvl`,`Woodcuttingxp`,`Fletchinglvl`,`Fletchingxp`,`Fishinglvl`,`Fishingxp`,`Firemakinglvl`,`Firemakingxp`,`Craftinglvl`,`Craftingxp`,`Smithinglvl`,`Smithingxp`,`Mininglvl`,`Miningxp`,`Herblorelvl`,`Herblorexp`,`Agilitylvl`,`Agilityxp`,`Thievinglvl`,`Thievingxp`,`Slayerlvl`,`Slayerxp`,`Farminglvl`,`Farmingxp`,`Runecraftlvl`,`Runecraftxp`) VALUES ('").append(c.playerName).append("',").append(c.playerLevel[0]).append(",").append(c.playerXP[0]).append(",").append(c.playerLevel[1]).append(",").append(c.playerXP[1]).append(",").append(c.playerLevel[2]).append(",").append(c.playerXP[2]).append(",").append(c.playerLevel[3]).append(",").append(c.playerXP[3]).append(",").append(c.playerLevel[4]).append(",").append(c.playerXP[4]).append(",").append(c.playerLevel[5]).append(",").append(c.playerXP[5]).append(",").append(c.playerLevel[6]).append(",").append(c.playerXP[6]).append(",").append(c.playerLevel[7]).append(",").append(c.playerXP[7]).append(",").append(c.playerLevel[8]).append(",").append(c.playerXP[8]).append(",").append(c.playerLevel[9]).append(",").append(c.playerXP[9]).append(",").append(c.playerLevel[10]).append(",").append(c.playerXP[10]).append(",").append(c.playerLevel[11]).append(",").append(c.playerXP[11]).append(",").append(c.playerLevel[12]).append(",").append(c.playerXP[12]).append(",").append(c.playerLevel[13]).append(",").append(c.playerXP[13]).append(",").append(c.playerLevel[14]).append(",").append(c.playerXP[14]).append(",").append(c.playerLevel[15]).append(",").append(c.playerXP[15]).append(",").append(c.playerLevel[16]).append(",").append(c.playerXP[16]).append(",").append(c.playerLevel[17]).append(",").append(c.playerXP[17]).append(",").append(c.playerLevel[18]).append(",").append(c.playerXP[18]).append(",").append(c.playerLevel[19]).append(",").append(c.playerXP[19]).append(",").append(c.playerLevel[20]).append(",").append(c.playerXP[20]).append(");").toString());
                query((new StringBuilder()).append("INSERT INTO `skillsoverall` (`playerName`,`lvl`,`xp`) VALUES ('").append(c.playerName).append("',").append(c.getLevelForXP(c.playerXP[0]) + c.getLevelForXP(c.playerXP[1]) + c.getLevelForXP(c.playerXP[2]) + c.getLevelForXP(c.playerXP[3]) + c.getLevelForXP(c.playerXP[4]) + c.getLevelForXP(c.playerXP[5]) + c.getLevelForXP(c.playerXP[6]) + c.getLevelForXP(c.playerXP[7]) + c.getLevelForXP(c.playerXP[8]) + c.getLevelForXP(c.playerXP[9]) + c.getLevelForXP(c.playerXP[10]) + c.getLevelForXP(c.playerXP[11]) + c.getLevelForXP(c.playerXP[12]) + c.getLevelForXP(c.playerXP[13]) + c.getLevelForXP(c.playerXP[14]) + c.getLevelForXP(c.playerXP[15]) + c.getLevelForXP(c.playerXP[16]) + c.getLevelForXP(c.playerXP[17]) + c.getLevelForXP(c.playerXP[18]) + c.getLevelForXP(c.playerXP[19]) + c.getLevelForXP(c.playerXP[20])).append(",").append(c.playerXP[0] + c.playerXP[1] + c.playerXP[2] + c.playerXP[3] + c.playerXP[4] + c.playerXP[5] + c.playerXP[6] + c.playerXP[7] + c.playerXP[8] + c.playerXP[9] + c.playerXP[10] + c.playerXP[11] + c.playerXP[12] + c.playerXP[13] + c.playerXP[14] + c.playerXP[15] + c.playerXP[16] + c.playerXP[17] + c.playerXP[18] + c.playerXP[19] + c.playerXP[20]).append(");").toString());
            }
            catch(Exception e)
            {
                e.printStackTrace();
                return false;
            }
            return true;
        }
    
    }
    Save it as "Highscores.java" in your src.server.model.players folder. Edit the red parts I highlighted to fit your own database info.

    Step 3:
    Now that we have the correct highscores file we need to implement it into the server.

    Open Client.java(src.server.model.players) and find
    Code:
    public void logout() {
    Under it add:
    Code:
    Highscores.process();
    Highscores.save(this);
    Save & Exit Client.java

    Open Server.java(src.server) and search for
    Code:
    public static void main
    Under it you should see something like
    Code:
    System.out.println("Loading Alison317 - Zenocko.");
    Below this code ^ add:
    Code:
    if (Highscores.connected = true) {
    System.out.println("Connected to MySQL Database!");
    }
    This is so that you can make sure the server is connecting to your mysql database.

    Step 4:
    Now we need to add the mysql connector(the com.mysql.jdbc.Driver files). Alot of people already have the files but for the new people download them here: UPLOAD.EE - Download sql.rar. Anyways, once you have the files extract them to bin.server.model.players so that the "com" folder is in the same directory as the Highscores.class file.

    Save Compile & Run. You can follow this tut: http://www.rune-server.org/runescape...a-website.html for help on getting the website part to work for you.


    Anything I forgot post please. Post errors/bugs/fixes here too. I encourage people to show me more efficient ways of doing things .

    FAQ: This is my first tut. I have been coding rsps since 2006 (my mopar register date is july-20-2006). I did a few tuts on mopar but leech pissed me off so I never did one again. This tut looked like it was actually needed so I made it. Dont like it? Fuck you.

    Downloads:
    Mysql Connector files: UPLOAD.EE - Download sql.rar
    Highscore php and img files: highscores.zip

    Credits:
    IntV - You attempted to do this and it was kinda crappy no offense. You gave me the inspiration.
    deathchaos9 - For the highscore php files, imgs, and the Database.


    This is my first tut but if it helped rep++ if I get good comments Ill make some more tuts in the future.



    UMAD?
    :indeed:
    Reply With Quote  
     

  8. #7  
    Registered Member
    Join Date
    Jul 2010
    Posts
    23
    Thanks given
    0
    Thanks received
    0
    Rep Power
    1
    Quote Originally Posted by Satan666 View Post
    Hmm I'm getting an error:

    Symbol : variable Highscores
    Location : class server.Server
    if (Highscores.connected = true) {
    I'm getting the same one Help please
    Reply With Quote  
     

  9. #8  
    Registered Member Dragman's Avatar
    Join Date
    Feb 2010
    Posts
    75
    Thanks given
    0
    Thanks received
    0
    Rep Power
    2
    It's working fine!Thanks i needed this badly

    But include the sql file also as i can't find it in one of you're downloads + on the other thread.
    Need help ???

    Add [email protected]
    Reply With Quote  
     

  10. #9  
    Officially Retired


    Join Date
    Oct 2007
    Age
    30
    Posts
    5,454
    Thanks given
    558
    Thanks received
    122
    Rep Power
    1364
    Code:
    src\server\Server.java:102: cannot find symbol
    symbol  : variable Highscores
    location: class server.Server
    if (Highscores.connected = true) {
        ^
    Note: Some input files use unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    1 error
    Press any key to continue . . .
    Reply With Quote  
     

  11. #10  
    Banned
    Join Date
    May 2010
    Posts
    1,550
    Thanks given
    92
    Thanks received
    154
    Rep Power
    0
    Quote Originally Posted by 3 Hit U View Post
    Code:
    src\server\Server.java:102: cannot find symbol
    symbol  : variable Highscores
    location: class server.Server
    if (Highscores.connected = true) {
        ^
    Note: Some input files use unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    1 error
    Press any key to continue . . .
    You didn't import Highscores you idiot.
    Reply With Quote  
     

Page 1 of 25 12311 ... LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Tags for this Thread

View Tag Cloud

Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •