Thread: open633 - A new revision of development

Page 1 of 5 123 ... LastLast
Results 1 to 10 of 41
  1. #1 open633 - A new revision of development 
    Donator

    .css's Avatar
    Join Date
    Dec 2018
    Age
    29
    Posts
    579
    Thanks given
    89
    Thanks received
    270
    Rep Power
    351
    Attached image

    Hello everyone. Today I'm proud to announce one of my side projects I'll be working on. This revision has never been done before and for that reason and various others I feel so proud to take up this challenge. I know there'll be a lot of things to learn like Networking and how Packets work; but hopefully with the support from the rsps scene I can learn accordingly. I personally love this very specific revision myself might I add although it's not too far off of more commonly known revisions.

    Anyways; if you're curious about my open source #727 project it's still alive; however I feel more focused on creating a new & open sourced revision for beginners and others to check out and try for themselves; I'll still work on the 727 project from time to time but it's no longer my main focus. Would also be nice to create a 633 prefix tag!

    There's a lot of work needed to be done such as code re-writing and identifying and reading packets accordingly since this was a 718 originally, the packets now need to be converted as such.
    Today just managed to do the Object clicking, Chat packet, etc.. so that's a nice confidence boost for myself haha.

    Any advice is greatly appreciated, and as always thanks for those who help & support!


    So, with that being said lets get to the main parts.

    SETUP
    Lambok
    This is an essential for setting up the environment in your IDE. You'll need to install using their installer and add the latest dependency to your project build.
    If you don't you'll have a mountain of errors before you can do anything else. In advance please check out the documentation and use accordingly!

    Gradle
    You'll need to ad Gradle to your project. Refer to your specified IDE for setup & documentation.
    I've added some basic documentation so newcomers can understand more easily what the current functions are doing. click here to preview
    You will now be required to set your Gradle version to the latest available. Click here for example I used


    GitHub Repository - Click here - Commits
    Discord - DM me for Discord invite
    Official 633 cache - Click here
    Official 633 Client - Click here

    Feel free to contribute anything, preferably Packets and more core related contents as that's the primary focus till a more structured server base can be established (in general).


    Latest News - click here

    Media
    Combat (basic shit mx)
    Attached image

    Chat Packet (example packet fixed)
    Attached image

    Fullscreen interfaces
    Attached image

    Fixing Map keys (what a nice transitional gif lol)
    Attached image

    Equipment Interface (nostalgia)
    Attached image

    Target Levels & XP
    Attached image
    Runecrafting & Skills progressions
    Attached image
    Attached image

    Attached image

    Skill Menu & Fillable Items
    Attached image

    World Map management
    Attached image

    Custom script language (already added open bank function)
    Attached image

    Attached image

    Clan Chat (Chat packet is WIP, Loot Sharing, value splitting)
    Attached image

    Login Lobby
    Attached image

    Abyss
    Attached image

    Incubator
    Attached image

    Balloon traveling
    Attached image

    Finished Stronghold of Security (Emote configs, such..)
    Attached image

    Multiple Thieving stealing success factor
    Attached image

    Potter firing & Crafting (Soft clay creation added too)
    Attached image
    Smelting
    Attached image

    Item Forging (SQ, Dragonfire, Spirit shields)
    Attached image

    PVP World demo
    Attached image

    Agility
    Attached image

    Simple plugin systems added (overtime)
    Code:
    package com.rs.plugin.impl.interfaces;
    
    import com.rs.game.player.Player;
    import com.rs.plugin.listener.RSInterface;
    import com.rs.plugin.wrapper.RSInterfaceSignature;
    
    @RSInterfaceSignature(interfaceId = {182})
    public class LogoutInterfacePlugin implements RSInterface {
    
    	@Override
    	public void execute(Player player, int interfaceId, int componentId, int packetId, byte slotId, int slotId2) throws Exception {
    		player.getSession().logout(player);
    	}
    }
    Code:
    package com.rs.net.packets.logic.impl;
    
    import com.rs.game.item.FloorItem;
    import com.rs.game.map.World;
    import com.rs.game.map.WorldTile;
    import com.rs.game.player.Player;
    import com.rs.game.player.controller.ControllerHandler;
    import com.rs.game.route.RouteEvent;
    import com.rs.io.InputStream;
    import com.rs.net.packets.logic.LogicPacket;
    import com.rs.net.packets.logic.LogicPacketSignature;
    import com.rs.utilities.Logger;
    
                            @LogicPacketSignature(packetId = 30, packetSize = 7, description = "Takes an Item from the Ground tile")
    public class ItemTakePacket implements LogicPacket {
    
    	@Override
    	public void execute(Player player, InputStream stream) {
    		if (!player.isStarted() || !player.isClientLoadedMapRegion() || player.isDead())
    			return;
    		if (player.getMovement().isLocked())
    			return;
    		int x = stream.readUnsignedShort128();
    		final int id = stream.readUnsignedShort();
    		int y = stream.readUnsignedShortLE128();
    		boolean forceRun = stream.readByte() == 1;
    		final WorldTile tile = new WorldTile(x, y, player.getPlane());
    		final int regionId = tile.getRegionId();
    		if (!player.getMapRegionsIds().contains(regionId))
    			return;
    		final FloorItem item = World.getRegion(regionId).getGroundItem(id, tile, player);
    		if (item == null)
    			return;
    		if (!ControllerHandler.execute(player, controller -> controller.canTakeItem(player, item))) {
    			return;
    		}
    		if (forceRun)
    			player.setRun(forceRun);
    		player.getMovement().stopAll();
    		player.setRouteEvent(new RouteEvent(item, () -> {
    			if (FloorItem.removeGroundItem(player, item))
    				Logger.globalLog(player.getUsername(), player.getSession().getIP(),
    						new String(" has picked up item [ id: " + item.getId() + ", amount: " + item.getAmount()
    								+ " ] originally owned to " + (item.getOwner() == null ? "no owner" : item.getOwner())
    								+ "."));
    		}));
    	}
    }
    Code:
    package com.rs.game.dialogue.impl;
    
    import com.rs.game.dialogue.DialogueEventListener;
    import com.rs.game.npc.NPC;
    import com.rs.game.player.Player;
    
    public class TestD extends DialogueEventListener {
    
    	public TestD(Player player, NPC npc) {
    		super(player, npc);
    	}
    
    	@Override
    	public void start() {
    		mes("yo sup i'm a regular message");
    		player(happy, "lol okay");
    		option("Yes", () -> {
    			System.out.println("hi");
    		}, "No", () -> {
    			System.out.println("bye");
    		}, "maybe", () -> {
    			System.out.println("bye");
    		}, "idk", () -> {
    			System.out.println("byess");
    		});
    		npc(sad, "I'm sad man..");
    		item(1050, "I'm a santa hat mate.");
    	}
    }
    Player class ~674 lines (Regular Matrix has 4,000+ lines by default)

    credits:
    Artem & lads
    Sushi - for Original release
    Kris
    Last edited by .css; 08-26-2023 at 03:04 AM.
    Reply With Quote  
     

  2. Thankful users:


  3. #2  
    WVWVWVWVWVWVWVW

    _jordan's Avatar
    Join Date
    Nov 2012
    Posts
    3,046
    Thanks given
    111
    Thanks received
    1,848
    Rep Power
    5000
    Goodluck!
    Attached image
    Attached image
    Reply With Quote  
     

  4. Thankful user:


  5. #3  
    ⚔️ Battle614 - Superiority ⚔️

    Battle614's Avatar
    Join Date
    Aug 2020
    Posts
    243
    Thanks given
    72
    Thanks received
    472
    Rep Power
    803
    Best of luck with this!

    Attached image
    Reply With Quote  
     

  6. Thankful user:


  7. #4  
    Registered Member

    Join Date
    Feb 2013
    Posts
    1,682
    Thanks given
    401
    Thanks received
    402
    Rep Power
    446
    Good luck with the project! Def. a nice revision!
    Reply With Quote  
     

  8. #5  
    Love & Hate🖤
    Gulag's Avatar
    Join Date
    Aug 2015
    Posts
    52
    Thanks given
    15
    Thanks received
    5
    Rep Power
    33
    Goodluck!
    Reply With Quote  
     

  9. #6  
    Donator

    .css's Avatar
    Join Date
    Dec 2018
    Age
    29
    Posts
    579
    Thanks given
    89
    Thanks received
    270
    Rep Power
    351
    Made some not bad progress. Been quite busy IRL. Still so much to do. If you'd like to help and get involved join the official discord!

    Switching branches overall to Developers and Development (Development now being the final output branch; developers being the one a user would commit on).
    https://github.com/openrsx/open633/commits/Developers


    Combat improvements & effects

    Attached image

    Decoder & Encoder packets support

    Attached image

    Json mob spawns

    Attached image

    Current Plugin supports

    Attached image

    Players Details (Demo class with Lambok example)
    Code:
    package com.rs.game.player;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Optional;
    
    import com.rs.game.player.type.impl.AntifireDetails;
    import com.rs.utils.MutableNumber;
    import com.rs.utils.Stopwatch;
    import com.rs.utils.Utils;
    
    import lombok.Data;
    
    /**
     * All personal variables of the Player shall be stored here for easier access.
     * 
     * @author Dennis
     *
     */ @Data
    public final class PlayerDetails {
    
    	/**
    	 * Constructs a new Player's details
    	 */
    	public PlayerDetails() {
    		pouches = new byte[4];
    		creationDate = Utils.currentTimeMillis();
    		runEnergy = 100;
    		allowChatEffects = true;
    		mouseButtons = true;
    		profanityFilter = true;
    		if (charges == null)
    			charges = new ChargesManager();
    		ownedObjectsManagerKeys = new LinkedList<String>();
    		passwordList = new ArrayList<String>();
    		ipList = new ArrayList<String>();
    		if (watchMap == null)
    			watchMap = new HashMap<>();
    	}
    
    	/**
    	 * Represents a Players password for login
    	 */
    	private String password;
    	
    	/**
    	 * The amount of authority this player has over others.
    	 */
    	public Rights rights = Rights.PLAYER;
    
    	/**
    	 * An array of Runecrafting pouches that possibly contain values.
    	 */
    	private byte[] pouches;
    
    	private long displayTime;
    
    	/**
    	 * The length of a Player being Muted (Unable to chat)
    	 */
    	private long muted;
    
    	/**
    	 * Length of the Player being Jailed (stuck in a remote area)
    	 */
    	private long jailed;
    
    	/**
    	 * Adds Players display time
    	 * 
    	 * @Param i
    	 */
    	public void addDisplayTime(long i) {
    		this.displayTime = i + Utils.currentTimeMillis();
    	}
    	
    	/**
    	 * Represents the last known IP from the Player
    	 */
    	private String lastIP;
    
    	/**
    	 * Represents if a Player is filtering out their chatbox messages
    	 */
    	private boolean filterGame;
    	/**
    	 * Represents if the Player has their experience locked
    	 */
    	private boolean xpLocked;
    
    	/**
    	 * An array of possible changes to the Max Cape customization
    	 */
    	private int[] maxedCapeCustomized;
    	/**
    	 * An array of possible changes to the Completionist Cape customization
    	 */
    	private int[] completionistCapeCustomized;
    
    	/**
    	 * Represents if the Player should be using older item models to display
    	 */
    	public boolean oldItemsLook;
    
    	/**
    	 * Represents the default Yell color for a Player
    	 */
    	public String yellColor = "ff0000";
    
    	/**
    	 * The creation date
    	 */
    	private long creationDate;
    
    	/**
    	 * The Run Engery amount a Player has
    	 */
    	private byte runEnergy;
    	
    	/**
    	 * A collection of Stopwatches
    	 */
    	public HashMap<String, Stopwatch> watchMap = new HashMap<>();
    
    	/**
    	 * TODO: Add documentation to rest of these imports. Documentation is super
    	 * important so take your time to explain their functions so others can learn!
    	 */
    	/**
    	 * Should the player be allowed to see Chat effects
    	 */
    	private boolean allowChatEffects;
    	
    	/**
    	 * Should the Player accept aid from other players?
    	 */
    	private boolean acceptAid;
    	
    	/**
    	 * Should the Player use 1-click mode, or be allowed to use both
    	 * mouse buttons for general gameplay
    	 */
    	private boolean mouseButtons;
    	
    	/**
    	 * Should the Player see profanity?
    	 */
    	private boolean profanityFilter;
    	
    	/**
    	 * The Players Private Chat options
    	 */
    	private byte privateChatSetup;
    	
    	/**
    	 * The Players Clan Chat options
    	 */
    	private byte clanChatSetup;
    
    	private boolean forceNextMapLoadRefresh;
    	
    	/**
    	 * The length of the players Ban
    	 */
    	private long banned;
    	
    	/**
    	 * Is the Player permanently banned?
    	 */
    	private boolean permBanned;
    	
    	/**
    	 * Does the Player have their Yell off?
    	 */
    	private boolean yellOff;
    	
    	// game bar status
    	private byte publicStatus;
    	private byte clanStatus;
    	private byte tradeStatus;
    	private byte assistStatus;
    
    	// Used for storing recent ips and password
    	/**
    	 * A list of the Players known Passwords to exist
    	 */
    	private ArrayList<String> passwordList = new ArrayList<String>();
    	
    	/**
    	 * A list of the Players known IP's
    	 */
    	private ArrayList<String> ipList = new ArrayList<String>();
    
    	/**
    	 * The Players Items that contain Charges
    	 */
    	private ChargesManager charges;
    
    	/**
    	 * The Players current friends chat
    	 */
    	private String currentFriendChatOwner;
    
    	/**
    	 * The Players specified quick right click action option
    	 * from the Summoning orb
    	 */
    	private byte summoningLeftClickOption;
    	
    	/**
    	 * A list of possible Objects the Player may have existing
    	 */
    	private List<String> ownedObjectsManagerKeys;
    	
    	
    	/**
    	 * A Player's Poison & Skull Timer
    	 */
    	private final MutableNumber poisonImmunity = new MutableNumber(), skullTimer = new MutableNumber();
    	
    
    	/**
    	 * Holds an optional wrapped inside the Antifire details.
    	 */
    	private Optional<AntifireDetails> antifireDetails = Optional.empty();
    	
    	/**
    	 * Sets the new anti-fire instance for this class directly.
    	 * @Param details the anti-fire instance to set.
    	 */
    	public void setAntifireDetail(AntifireDetails details) {
    		setAntifireDetail(details == null ? Optional.empty() : Optional.of(details));
    	}
    	
    	/**
    	 * Sets a new anti-fire instance for this class.
    	 * @Param details the anti-fire instance to set.
    	 */
    	public void setAntifireDetail(Optional<AntifireDetails> details) {
    		this.antifireDetails = details;
    	}
    	
    	/**
    	 * Populates the {@link #watchMap}
    	 */
    	{
    		watchMap.put("FOOD", new Stopwatch());
    		watchMap.put("DRINKS", new Stopwatch());
    		watchMap.put("TOLERANCE", new Stopwatch());
    	}
    }
    }
    Reply With Quote  
     

  10. #7  
    Donator

    .css's Avatar
    Join Date
    Dec 2018
    Age
    29
    Posts
    579
    Thanks given
    89
    Thanks received
    270
    Rep Power
    351
    Some more nice progress; work has been picking up quite a bit and will most likely have less time to work on this once covid stages update.

    A bit of everything in terms of updating. Mainly focused on workflow layout & cleaning.

    Some more JVM improvements overall as well. Coming along quite nicely.

    Attached image

    Implemented & fixed a few bits of the new Dialogue system. Here's a demo class.
    Code:
    package com.rs.game.dialogue.impl;
    
    import com.rs.game.dialogue.DialogueEventListener;
    import com.rs.game.npc.NPC;
    import com.rs.game.player.Player;
    
    public class TestD extends DialogueEventListener {
    
    	public TestD(Player player, NPC npc) {
    		super(player, npc);
    	}
    
    	@Override
    	public void start() {
    		mes("yo sup i'm a regular message");
    		player(happy, "lol okay");
    		option("Yes", () -> {
    			System.out.println("hi");
    		}, "No", () -> {
    			System.out.println("bye");
    		}, "maybe", () -> {
    			System.out.println("bye");
    		}, "idk", () -> {
    			System.out.println("byess");
    		});
    		npc(sad, "I'm sad man..");
    		item(1050, "I'm a santa hat mate.");
    	}
    }

    Attached image
    Attached image
    Attached image
    Attached image

    I wrote down some Chatbox related interfaces that may be useful. They're quite scattered in the cache so your welcome.

    Code:
    dialogue interfaces
    26 - npc seems
    64-71 - player
    90-93  npc - no continue option
    131 - possible Item dialogue
    173 - unknown - probably player (?)
    210-219 - blank statements (no entity involved)
    227-238 - select options (with swords)
    240-248 - Dialogue to far left side with npc/item on right side
    372 - Information dialogue (blue title dialogue)
    421 - A list of information lines (more than 7 with a scroll bar feature)
    451, 458 - a 3 option dialogue
    519 - npc or item model dialogue
    554 - 557 - more option
    668 - pick a puppy
    718 - 2 options dialogue
    737 - cat picking
    740 - chatbox flashing icon chat message dialogue
    757 - npc/item dialogue
    835, 846, 1020 - weird click to continue dialogue..hm
    905, 916 - looks like slidable options box
    944 - how many to make (dungeoneering)
    1018 - weirdly placed single message dialogue
    Last edited by .css; 06-10-2021 at 10:36 PM.
    Reply With Quote  
     

  11. Thankful users:


  12. #8  
    Donator

    Yuuji's Avatar
    Join Date
    Feb 2012
    Posts
    678
    Thanks given
    232
    Thanks received
    153
    Rep Power
    197
    Love to see it mate! Keep up the progress!

    Wish the best of luck with this!

    Attached image
    Attached image
    Reply With Quote  
     

  13. #9  
    Donator

    .css's Avatar
    Join Date
    Dec 2018
    Age
    29
    Posts
    579
    Thanks given
    89
    Thanks received
    270
    Rep Power
    351
    I've reworked this thread with more information, setup information, media, code.

    Thanks for support & help in the discord chat whenever I needed it guys! I've been super busy IRL now that indoor restaurants are coming very soon. I'll have time to work on this still no worries. I've pretty much stopped working on the 727 as the code is redundant to use since I could just easily convert the server to work with the 727 protocol (so just save myself the hassle of porting code), but more interested in focusing on this as my main and only.

    Much love to fellow developers & hope we can keep the rsps scene floating around much longer.
    Reply With Quote  
     

  14. #10  
    Extreme Donator open633 - A new revision of development Market Banned



    Join Date
    Dec 2010
    Age
    25
    Posts
    6,060
    Thanks given
    1,692
    Thanks received
    1,238
    Rep Power
    1765
    Thanks for reviving my favorite revision (due to the login screen design). I will be branching off this at some point and doing some work.
    Reply With Quote  
     

Page 1 of 5 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. New 3D Unity RPG [Early Stages of Development]
    By Hunter__ in forum Application Development
    Replies: 20
    Last Post: 07-08-2018, 11:39 PM
  2. Replies: 28
    Last Post: 12-23-2012, 03:02 PM
  3. Replies: 8
    Last Post: 07-18-2012, 08:21 PM
  4. Replies: 16
    Last Post: 02-27-2011, 06:55 PM
  5. [TUT] - New Style of Userbar!
    By 007 Snoop in forum Tutorials
    Replies: 7
    Last Post: 04-29-2007, 09:44 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
  •