Thread: [0.03a] RForge - Intuitive & Instanced PI - Extremely Stable - Release

Page 1 of 3 123 LastLast
Results 1 to 10 of 26
  1. #1 [0.03a] RForge - Intuitive & Instanced PI - Extremely Stable - Release 
    Banned

    Join Date
    May 2017
    Age
    27
    Posts
    1,552
    Thanks given
    946
    Thanks received
    1,395
    Rep Power
    0
    Attached image

    It is a fresh release among the released PI's in history. Believe me or not, this version of Project Insanity will help you create a server from scratch without requirements.
    This package is perfect for beginner programmers as well as for advanced ones. RForge is an extremely stable design of files, classes and rules so you will not be disappointed with the performance of your individual configuration.
    Enjoy I do not intend to update this package. However, if there are people who are willing, we can transform the project as open-source on github.





    Attached image

    Well, why not?

    Original Project Insanity has much things to offer. RForge has much more, they are well used from the predecessor and were developed it to final stage.
    Check the features below.



    Attached image Original Project Insanity:


    • Amazing combat
    • Fairly accurate accuracy formulas (tweaked a lot)
    • Fully functional clan chat
    • 3/4 godwar bosses
    • Amazing npc drop system
    • Fight Pits
    • Pest Control
    • Barrows
    • Fight Caves (360 onwards, easy to add all ways, just build on the array)
    • Quite a few skills (some half-assed)
    • All 474 items (loaded through cache)
    • Most pots work, very easy to add more
    • Most food work, very east to add more
    • 100% Potion dose mixing
    • Base for skill menus
    • Piety + chivalry
    • Perfect prayer draining
    • Custom infinity/mage book minigame
    • Working obelisks
    • Perfect prayer draining and protection prayer delay in pvp



    Attached image RForge 0.03a:


    • A lot of Dupe Fixed (ones released with Jacks source, there is like 3-4 more)
    • Cycle-Based EventManager
    • Boat Sailing
    • Gnome Glider
    • Crystal Chest
    • Current Weapon Speeds
    • Far Casting (Magic/Ranged)
    • Cow Milking
    • Flax Milking
    • Mute/Banning + Timers
    • Server-Sided Clipped Following
    • ItemOnPlayer Packet Handling
    • Single+ Double Door handler
    • Greatly Improved Item Handler
    • A Shit Load of Combat Improvements (Bug Wise)
    • Current Weapon Speeds
    • Correct Ranged Max-Hit Formulae
    • Better Drop System (easier to add new drops)
    • God Book Making + Preaching
    • Fixed 15 Bugs
    • Character Appearance Interface on Start-up (thought it was a decent edition )
    • Better Commands Handler
    • 6 Player Rights (all configured)
    • NPC Facing (Check NPC Spawn.cfg for more info)
    • Removed all of the Pointless cfg files and renamed them better
    • Cleaned-up All classes, Electronically and Manually
    • Tweaked a lot of timers!
    • Players Save on a individual basis (might want to re-add to config class)
    • No Errors in eclipse
    • Fixed as many Warnings as I could
    • Re-Did packaging, classes can be found easily and it isn't a maze of BS now
    • Home is in lumbridge



    Attached image

    Attached image
    The package itself does not have a compiler Attached image
    Make one yourself or try this one:

    https://www.jetbrains.com/idea/


    Attached image

    Each project has its drawbacks, which are noticeable only in the post-production.
    However, I noticed that I have some time so I will help you now.
    Spoiler for 0.03 fixes:
    ----------------------------------------
    objectHandler:

    under public boolean loadDoorConfig

    find
    Code:
            try {
                line = objectFile.readLine();
            } catch(final IOException ioexception) {
                Misc.println(fileName+": error loading file.");
                return false;
        }
    and simply remove the return false


    under loadGlobalObjects find

    Code:
        try {
                line = objectFile.readLine();
            } catch(final IOException ioexception) {
                Misc.println(fileName+": error loading file.");
                return false;
            }

    and remove the return false

    ----------------------------------------

    ItemHandler:

    under loadItemList
    find
    Code:
        try {
            line = characterfile.readLine();
        } catch(final IOException ioexception) {
            Misc.println(FileName+": error loading file.");
            return false;
        }
    and remove return false

    ----------------------------------------

    NpcHandler:

    under loadAutoSpawn

    find
    Code:
            try {
                line = characterfile.readLine();
            } catch(final IOException ioexception) {
                Misc.println(FileName+": error loading file.");
                return false;
            }
    and remove the return false


    under loadNpcList
    find
    Code:
            try {
                line = characterfile.readLine();
            } catch(final IOException ioexception) {
                Misc.println(FileName+": error loading file.");
                return false;
            }
    and remove the return false

    ----------------------------------------

    ShopHandler

    under loadShops
    find
    Code:
            try {
                line = characterfile.readLine();
            } catch(final IOException ioexception) {
                Misc.println(FileName+": error loading file.");
                return false;
            }
    and remove the return false

    ----------------------------------------

    Class I

    under containsKey
    find
    Code:
                    try {
                s = bufferedreader.readLine();
            } catch(final IOException ioexception){
                ioexception.printStackTrace();
                return;
            }
    and remove return

    ----------------------------------------


    Spoiler for 0.03 fixes 2:
    ----------------------------------------
    PlayerHandler.java
    Replace your updatePlayer method with this code
    Code:
    public void updatePlayer(final Player plr, final Stream str) {
            updateBlock.currentOffset = 0;
            if (PlayerHandler.updateRunning && !PlayerHandler.updateAnnounced) {
                str.createFrame(114);
                str.writeWordBigEndian(PlayerHandler.updateSeconds * 50 / 30);
            }
            plr.updateThisPlayerMovement(str);
            final boolean saveChatTextUpdate = plr.isChatTextUpdateRequired();
            plr.setChatTextUpdateRequired(false);
            plr.appendPlayerUpdateBlock(updateBlock);
            plr.setChatTextUpdateRequired(saveChatTextUpdate);
            str.writeBits(8, plr.playerListSize);
            final int size = plr.playerListSize;
            plr.playerListSize = 0;
            for (int i = 0; i < size; i++) {
                if (!plr.didTeleport && !plr.playerList[i].didTeleport
                        && plr.withinDistance(plr.playerList[i])) {
                    plr.playerList[i].updatePlayerMovement(str);
                    plr.playerList[i].appendPlayerUpdateBlock(updateBlock);
                    plr.playerList[plr.playerListSize++] = plr.playerList[i];
                } else {
                    final int id = plr.playerList[i].playerId;
                    plr.playerInListBitmap[id >> 3] &= ~(1 << (id & 7));
                    str.writeBits(1, 1);
                    str.writeBits(2, 3);
                }
            }
            int j = 0;
            for (int i = 0; i < Config.MAX_PLAYERS; i++) {
                if (plr.playerListSize >= 254) {
                    break;
                }
                if (updateBlock.currentOffset + str.currentOffset >= 4900) {
                    break;
                }
                if (PlayerHandler.players[i] == null
                        || !PlayerHandler.players[i].isActive
                        || PlayerHandler.players[i] == plr) {
                    continue;
                }
                final int id = PlayerHandler.players[i].playerId;
                if ((plr.playerInListBitmap[id >> 3] & 1 << (id & 7)) != 0) {
                    continue;
                }
                if (j >= 10) {
                    break;
                }
                if (!plr.withinDistance(PlayerHandler.players[i])) {
                    continue;
                }
                plr.addNewPlayer(PlayerHandler.players[i], str, updateBlock);
                j++;
            }
    
            if (updateBlock.currentOffset > 0) {
                str.writeBits(11, 2047);
                str.finishBitAccess();
    
                str.writeBytes(updateBlock.buffer, updateBlock.currentOffset, 0);
            } else {
                str.finishBitAccess();
            }
    
            str.endFrameVarSizeWord();
    
        }
    Then in player.java replace your withinDistance method (the player one) with this:
    Code:
    public boolean withinDistance(Player otherPlr) {
            if(heightLevel != otherPlr.heightLevel) return false;
            int deltaX = otherPlr.absX-absX, deltaY = otherPlr.absY-absY;
            return deltaX <= 15 && deltaX >= -16 && deltaY <= 15 && deltaY >= -16;
        }


    Spoiler for 0.03 firstClickObject fix:
    ----------------------------------------
    This fixes firstClickObject for the actionHandler class
    Navigate to the ClickObject class
    find:
    Code:
    if (client.goodDistance(client.objectX + client.objectXOffset, client.objectY + client.objectYOffset, client.getX(), client.getY(), client.objectDistance)) {
    and add this right under it:
    Code:
    client.getActions().firstClickObject(client.objectId, client.objectX, client.objectY);


    Spoiler for 0.03 fixes combat/total:
    ----------------------------------------
    Total level fix
    Navigate to the PlayerAssistant class and under
    public void setSkillLevel
    this method ^, add this method:
    Code:
    public void totallevelsupdate() {
                int totalLevel = (getLevelForXP(c.playerXP[0]) + getLevelForXP(c.playerXP[1]) + getLevelForXP(c.playerXP[2]) + getLevelForXP(c.playerXP[3]) + getLevelForXP(c.playerXP[4]) + getLevelForXP(c.playerXP[5]) + getLevelForXP(c.playerXP[6]) + getLevelForXP(c.playerXP[7]) + getLevelForXP(c.playerXP[8]) + getLevelForXP(c.playerXP[9]) + getLevelForXP(c.playerXP[10]) + getLevelForXP(c.playerXP[11]) + getLevelForXP(c.playerXP[12]) + getLevelForXP(c.playerXP[13]) + getLevelForXP(c.playerXP[14]) + getLevelForXP(c.playerXP[15]) + getLevelForXP(c.playerXP[16]) + getLevelForXP(c.playerXP[17]) + getLevelForXP(c.playerXP[18]) + getLevelForXP(c.playerXP[19]) + getLevelForXP(c.playerXP[20]));
                sendFrame126("Levels: "+totalLevel, 13983);
                }
    Navigate to the Client class and in the
    Code:
    public void initialize() {
    method, add this:
    Code:
    getPA().totallevelsupdate();
    ----------------------------------------
    Combat level fix
    Navigate to the Client class and add this method towards the very top but under:
    Code:
    public client (blah blah blah crap blah) {
    add this

    Code:
        public int getCombatLevel() {
            int mag = (int) ((getLevelForXP(playerXP[6])) * 1.5);
            int ran = (int) ((getLevelForXP(playerXP[4])) * 1.5);
            int attstr = (int) ((double) (getLevelForXP(playerXP[0])) + (double) (getLevelForXP(playerXP[2])));
                if (ran > attstr) {
                    combatLevel = (int) (((getLevelForXP(playerXP[1])) * 0.25)
                            + ((getLevelForXP(playerXP[3])) * 0.25)
                            + ((getLevelForXP(playerXP[5])) * 0.125) + ((getLevelForXP(playerXP[4])) * 0.4875));
                } else if (mag > attstr) {
                    combatLevel = (int) (((getLevelForXP(playerXP[1])) * 0.25)
                            + ((getLevelForXP(playerXP[3])) * 0.25)
                            + ((getLevelForXP(playerXP[5])) * 0.125) + ((getLevelForXP(playerXP[6])) * 0.4875));
                } else {
                    combatLevel = (int) (((getLevelForXP(playerXP[1])) * 0.25)
                            + ((getLevelForXP(playerXP[3])) * 0.25)
                            + ((getLevelForXP(playerXP[5])) * 0.125)
                            + ((getLevelForXP(playerXP[0])) * 0.325) + ((getLevelForXP(playerXP[2])) * 0.325));
                }
                return combatLevel;
        }
    now add this:
    Code:
    getPA().sendFrame126("Combat Level: "+getCombatLevel(), 3983);
    in the
    Code:
    public void initialize() {
    method.


    Spoiler for 0.03 fixes chat:
    ----------------------------------------
    Cannot see text in chat? Here we go:

    Navigate to the Chat class and change this:
    Code:
    if (System.currentTimeMillis() < c.muteEnd) {
                c.sendMessage("You are muted, know one can hear you.");
                return;
            } else {
                c.muteEnd = 0;
            }
        }
    
    }
    to this:

    Code:
    if (System.currentTimeMillis() < c.muteEnd) {
                c.sendMessage("You are muted, know one can hear you.");
                return;
            } else {
                c.setChatTextUpdateRequired(true);
                c.muteEnd = 0;
            }
        }
    
    }


    Spoiler for 0.03 fix idle logout packet:
    ----------------------------------------
    IDLE LOG-OUT FIX
    Code:
    package engine.packet;
    
    import game.*;
    
    /*
     * RForge - Instanced PI @Caelum
     * IdleLogout.java
     */
    
    public class IdleLogout implements PacketType {
        
        @Override
        public void processPacket(final Client c, final int packetType, final int packetSize) {
            if (Config.IDLE_LOGOUT == true) {
                switch (packetType) {
                case 202:
                    if ((c.underAttackBy > 0) || (c.underAttackBy2 > 0)) {
                        return;
                    } else {
                        c.logout();
                    }
                    break;
                }
            }
        }
        
    }


    Spoiler for 0.03 run fix:
    ----------------------------------------
    Run fix
    This is the protectionist fix for running when you first log-in (should be walking?)

    Player classchange this:
    Code:
    public boolean isRunning2 = true;
    to this:
    Code:
    public boolean isRunning2 = false;


    Spoiler for 0.03 itemreplace fix:
    ----------------------------------------
    ItemReplace Fix

    Under

    Code:
    public void handleCharacter(final File f) {
    Find and Remove

    Code:
    s = new Scanner(f);


    Attached image

    Attached image

    RForge0.03a-RELEASE.zip
    (19,3MB)
    Code:
    https://github.com/uxuii/rfreleases/raw/master/RForge0.03a-RELEASE.zip
    Quote Originally Posted by Omelete View Post
    y not? pi is the best base out there m8!

    -

    pics for those that are interested lol:

    Attached image
    Attached image
    Reply With Quote  
     

  2. Thankful user:


  3. #2  
    Registered Member
    Join Date
    Jul 2014
    Posts
    44
    Thanks given
    3
    Thanks received
    4
    Rep Power
    10
    no pic, no click.

    nice effort tho.
    Reply With Quote  
     

  4. #3  
    Registered Member GLaiive's Avatar
    Join Date
    Dec 2012
    Posts
    138
    Thanks given
    6
    Thanks received
    5
    Rep Power
    11
    Thanks for your Contribution my dude
    Reply With Quote  
     

  5. #4  
    Donator

    .css's Avatar
    Join Date
    Dec 2018
    Age
    29
    Posts
    579
    Thanks given
    89
    Thanks received
    270
    Rep Power
    351
    PI still a thing? Let's not start 2019 with this.

    ot: i'm sure someone may find this useful.
    Reply With Quote  
     

  6. Thankful user:


  7. #5  
    Registered Member

    Join Date
    Oct 2011
    Posts
    2,084
    Thanks given
    0
    Thanks received
    1,043
    Rep Power
    3608
    Quote Originally Posted by .css View Post
    PI still a thing? Let's not start 2019 with this.

    ot: i'm sure someone may find this useful.
    y not? pi is the best base out there m8!

    -

    pics for those that are interested lol:

    Attached image
    Attached image
    Reply With Quote  
     

  8. #6  
    Banned

    Join Date
    May 2017
    Age
    27
    Posts
    1,552
    Thanks given
    946
    Thanks received
    1,395
    Rep Power
    0
    Quote Originally Posted by Omelete View Post
    y not? pi is the best base out there m8!

    -

    pics for those that are interested lol:

    Attached image
    Attached image
    thanks, added
    Reply With Quote  
     

  9. #7  
    Registered Member
    Join Date
    Dec 2018
    Posts
    11
    Thanks given
    0
    Thanks received
    1
    Rep Power
    11
    Thanks for the Contribution
    And btw what does PI mean... Sorry might be a stupid question
    Reply With Quote  
     

  10. #8  
    Banned

    Join Date
    May 2017
    Age
    27
    Posts
    1,552
    Thanks given
    946
    Thanks received
    1,395
    Rep Power
    0
    Quote Originally Posted by apina View Post
    Thanks for the Contribution
    And btw what does PI mean... Sorry might be a stupid question
    Project Insanity - Known as PI, it was created by a member known as Sanity and gained immense popularity due to how it's code was written. It's very easy to adapt to for beginners in programming, but as a drawback of this simplicity the first version had loads of bugs, exploits, dupes and other problems which meant it could only manage to hold around ~40 players depending on computer host specs before major lag problems occured.

    There have been improvements to PI which replace old systems with new ones to fix dupes, bugs and lag problems while keeping the old code style so newbies could still learn and use it with ease.
    Reply With Quote  
     

  11. #9  
    Officially Running

    Mr Dream's Avatar
    Join Date
    Dec 2013
    Posts
    1,922
    Thanks given
    555
    Thanks received
    295
    Rep Power
    905
    ty lol also "Flax Milking"
    Attached image
    Attached image
    Reply With Quote  
     

  12. Thankful user:


  13. #10  
    Registered Member
    Join Date
    Dec 2018
    Posts
    11
    Thanks given
    0
    Thanks received
    1
    Rep Power
    11
    Quote Originally Posted by Alan Garner View Post
    Project Insanity - Known as PI, it was created by a member known as Sanity and gained immense popularity due to how it's code was written. It's very easy to adapt to for beginners in programming, but as a drawback of this simplicity the first version had loads of bugs, exploits, dupes and other problems which meant it could only manage to hold around ~40 players depending on computer host specs before major lag problems occured.

    There have been improvements to PI which replace old systems with new ones to fix dupes, bugs and lag problems while keeping the old code style so newbies could still learn and use it with ease.
    Okay. Thanks!
    Reply With Quote  
     

Page 1 of 3 123 LastLast

Thread Information
Users Browsing this Thread

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


User Tag List

Similar Threads

  1. Replies: 430
    Last Post: 05-10-2017, 09:55 AM
  2. Replies: 8
    Last Post: 08-06-2016, 12:12 PM
  3. [PI] Extreme Donor Rank
    By Famouz in forum Help
    Replies: 6
    Last Post: 05-25-2012, 06:35 AM
  4. [PI] Extreme pots + Overload
    By Faqqot Jr in forum Help
    Replies: 7
    Last Post: 07-24-2011, 06:07 PM
  5. [PI] Extremely High Engine load?
    By Harambe_ in forum Help
    Replies: 4
    Last Post: 12-13-2010, 01:38 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •