Thread: [435] RuneJS - An open-source RuneScape game server written in TypeScript & ES6

Page 4 of 7 FirstFirst ... 23456 ... LastLast
Results 31 to 40 of 67
  1. #31  
    Registered Member
    TheBlackParade's Avatar
    Join Date
    Dec 2019
    Posts
    36
    Thanks given
    42
    Thanks received
    37
    Rep Power
    105
    Started working on a preliminary "plugin" system to make writing some content easier... Currently have two different plugin types: npc interaction and object interactions. This system is likely to change since I just threw it up on a whim without any real planning... But the big thing for me is that the plugins have a hot reloading feature.

    When running the server with the standard npm start command, the server will watch for changes to any files in the src/plugins/ directory and rebuild them automatically. You can then reload them by entering the :: plugins command ingame!


















    Spoiler for hans-plugin.ts:
    Code:
    import { npcAction, NpcActionPlugin } from '@server/world/mob/player/action/npc-action';
    import { dialogueAction, DialogueEmote } from '@server/world/mob/player/action/dialogue/dialogue-action';
    
    const npcIds: number[] = [ 0 ];
    
    const action: npcAction = (player, npc) => {
        dialogueAction(player)
            .then(d => d.npc(npc, DialogueEmote.CALM_TALK_1, [ 'Hot reloading plugins!' ]))
            .then(d => d.npc(npc, DialogueEmote.CALM_TALK_2, [ 'How do you feel about Rune.JS so far?', 'Please take a moment to let us know what you think!' ]))
            .then(d => d.options('Thoughts?', [ 'Love it!', 'Kind of cool.', `Eh, I don't know...`, `Not my cup of tea, honestly.`, `It's literally the worst.` ]))
            .then(d => {
                switch(d.action) {
                    case 1:
                        return d.player(DialogueEmote.JOYFUL, [ 'Loving it so far, thanks for asking!' ])
                            .then(d => d.npc(npc, DialogueEmote.JOYFUL,  [ `You're very welcome! Glad to hear it.` ]));
                    case 2:
                        return d.player(DialogueEmote.DEFAULT, [ `It's kind of cool, I guess.`, 'Bit of a weird gimmick.' ])
                            .then(d => d.npc(npc, DialogueEmote.DEFAULT,  [ `Please let us know if you have any suggestions.` ]));
                    case 3:
                        return d.player(DialogueEmote.NOT_INTERESTED, [ `Ehhh... I don't know...` ])
                            .then(d => d.npc(npc, DialogueEmote.CALM_TALK_1, [ `We're always open to feedback or`, `Pull Requests anytime you like.` ]))
                            .then(d => d.player(DialogueEmote.CALM_TALK_1, [ `I'll keep that in mind, thanks.` ]));
                    case 4:
                        return d.player(DialogueEmote.CALM_TALK_2, [ `Not really my cup of tea, but keep at it.` ])
                            .then(d => d.npc(npc, DialogueEmote.JOYFUL, [ `Thanks for the support!` ]));
                    case 5:
                        return d.player(DialogueEmote.ANGRY_1, [ `Literally the worst thing I've ever seen.`, 'You disgust me on a personal level.' ])
                            .then(d => d.npc(npc, DialogueEmote.SAD_3, [ `I-is that so?...`, `Well I'm... I'm sorry to hear that.` ]))
                            .then(d => {
                                d.action = 1;
                                return d;
                            });
                }
            })
            .then(d => {
                d.close();
    
                if(d.action === 1) {
                    player.packetSender.chatboxMessage('Hans wanders off rather dejectedly.');
                } else {
                    player.packetSender.chatboxMessage('Hans wanders off aimlessly through the courtyard.');
                }
            });
    };
    
    export default { npcIds, action, walkTo: true } as NpcActionPlugin;
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  2. Thankful user:


  3. #32  
    Infinite in Mystery.

    Join Date
    Jul 2012
    Posts
    130
    Thanks given
    18
    Thanks received
    17
    Rep Power
    12
    Added some plugins because I had some leftover time:
    Cow milking with animations,
    Ladder climbing
    and cabbage, flax, onion, potato and grain picking.
    working on a lumbridge mill plugin
    Reply With Quote  
     

  4. Thankful users:


  5. #33  
    Registered Member
    Join Date
    Feb 2020
    Posts
    1
    Thanks given
    0
    Thanks received
    1
    Rep Power
    0
    This is great! Definitely keeping an eye open for future changes.
    Reply With Quote  
     

  6. Thankful user:


  7. #34  
    Registered Member
    Join Date
    Jan 2015
    Posts
    282
    Thanks given
    8
    Thanks received
    38
    Discord
    View profile
    Rep Power
    8
    Keeping an eye on this. Good luck with further development. Looks pretty nice so far mate.
    Reply With Quote  
     

  8. Thankful user:


  9. #35 Shop implementation 
    Registered Member
    Join Date
    Nov 2017
    Posts
    12
    Thanks given
    0
    Thanks received
    2
    Rep Power
    11
    I have been working on a simple implementaton of shops.

    Features implemented:
    1. Loading shops from a yaml file
    2. Opening the shops via plugins
    3. Buying items
    4. Item value option


    Item value option:


    The shops config file:


    More pictures:

    Reply With Quote  
     

  10. Thankful user:


  11. #36  
    Registered Member
    TheBlackParade's Avatar
    Join Date
    Dec 2019
    Posts
    36
    Thanks given
    42
    Thanks received
    37
    Rep Power
    105
    Just thought I'd post a little update note that we're working to switch over from revision #377 to revision #435. For now we're just going to be hacking in some 377 maps to get things going. Already just about got the edits made to the cache parser to load newer gen definitions (minus clipping data since we'll be using 377 for that for now still...). After that we'll segmet off a branch to convert existing packets and such to #435.

    Code:
    > ts-node src/parser.ts
    
    ItemDefinition {
      groundOptions: [ null, null, 'Take', null, null ],
      inventoryOptions: [ null, 'Wield', null, null, 'Drop' ],
      inventoryModelId: 5412,
      modelOffset1: -2,
      modelOffset2: 56,
      modelZoom: 840,
      modelRotation1: 280,
      members: true,
      value: 120001,
      name: 'Abyssal whip'
    }
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  12. #37  
    Registered Member
    TheBlackParade's Avatar
    Join Date
    Dec 2019
    Posts
    36
    Thanks given
    42
    Thanks received
    37
    Rep Power
    105
    Published the final revision #377 release today! It can be found here: [Only registered and activated users can see links. ]

    Moving forward, all releases will be using game revision #435. The working branch for this can be found here: [Only registered and activated users can see links. ]

    If you don't feel like clicking the release link, this release includes:

    Code:
    Features
    - Initial TypeScript plugin system! #33 #70 
    - Plugin reload command `::plugins` #39 #34 
    - Looping plugins/actions & action cancelling #44 
    - Support for input command plugins #73 
    - Support for widget button plugins #47 
    - Support for item-on-item plugins #45 
    - Support for landscape object interaction plugins #32 
    - Support for player/npc skills #40 
    - Simple shop implementation #67 
    - Support for item dropping #35 
    - Game welcome screen #65 
    - Additional npc update masks #63 
    - Skill guide plugin support #61 
    - Pickable object support #55 
    - Ladder plugin #50 
    - Cow milking plugin #49 
    - Door, double door, and gate plugins #30 
    - Basic firemaking plugin #46 
    - Support for stackable items #38 
    - Player to player public chat #36 
    
    Technical
    - Asynchronous plugin loading #58 
    - Quadtree based player and npc updating #68 
    - Renamed all interface-related components to widgets #64 
    - Implementing config file for RSA and server hostname/port #52 
    - Improved dialogue system #29 
    - Player rights saving/loading #37 
    - Linting rules and contribution guidelines #28
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  13. #38  
    Banned
    Join Date
    Feb 2020
    Posts
    24
    Thanks given
    4
    Thanks received
    10
    Rep Power
    0
    Ill be keeping an eye on this interesting project. Goodluck!
    Reply With Quote  
     

  14. Thankful user:


  15. #39  
    Registered Member
    TheBlackParade's Avatar
    Join Date
    Dec 2019
    Posts
    36
    Thanks given
    42
    Thanks received
    37
    Rep Power
    105
    We've almost reached full feature parity for the 435 conversion!

    The 435 conversion is now live on master: [Only registered and activated users can see links. ]

    The following client can be used to log in: [Only registered and activated users can see links. ]

    For the client, the update server is disabled. So be sure to drop the 435 cache from RuneJS into C:/.435cache









    Spoiler for More images!:




    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  16. #40  
    Community Veteran

    Dust R I P's Avatar
    Join Date
    Jan 2008
    Posts
    2,556
    Thanks given
    183
    Thanks received
    198
    Rep Power
    561
    Is there a specific reason you picked revision 435?
    Reply With Quote  
     

Page 4 of 7 FirstFirst ... 23456 ... 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: 1
    Last Post: 12-06-2011, 09:30 PM
  2. Replies: 5
    Last Post: 09-28-2011, 06:39 AM
  3. Replies: 38
    Last Post: 09-01-2009, 10:02 PM
  4. PyWorld - Runescape server written in Python
    By w::v::d in forum Projects
    Replies: 15
    Last Post: 08-10-2009, 11:25 PM
  5. Replies: 8
    Last Post: 04-27-2008, 05:41 AM
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
  •