L1nkZ Posted January 24, 2018 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 40 Reputation: 73 Joined: 01/24/18 Last Seen: December 30, 2022 Share Posted January 24, 2018 (edited) Hey guys, Sooo, a few days ago, I wanted to try and do something related to RO, but open-source for once ... I figured, why not make a plugin system ? The idea is simple: expose an API that will allow anyone to interface with the client through a high-level scripting language. As far I as I know, this isn't the first RO client plugin system project. If I recall correctly, there was something named ROPS (Ragnarok Online Plugin System) that existed a few years ago, but it has since disappeared. Edit: I was told that apparently there was also rextensions recently, that went in the same direction as ROPS and gave access to a few hooks for use with C or C++ extensions. The idea behind this thread is, mainly, to see if there's any interest in such a system, and if there is, to see what people want to be able to do with it. This is totally a work in progress and I don't know where it'll lead or what it's gonna end up like, but it's open-sourced so it'll be potentially re-usable (if anyone's brave enough) anyway. Here are screenshots picturing different parts of the system as it is right now: Link to the github: https://github.com/L1nkZ/Bourgeon Cheers. Edited February 3, 2018 by L1nkZ 5 1 Quote Link to comment Share on other sites More sharing options...
Haziel Posted January 24, 2018 Group: Content Moderator Topic Count: 22 Topics Per Day: 0.00 Content Count: 639 Reputation: 609 Joined: 11/25/11 Last Seen: March 7 Share Posted January 24, 2018 (edited) Awesome. In what depth are you able to inject the plugin on, what kind of changes can it achieve? I'm really interested. I see that you can properly retrieve information from the client, but are you able to command the client itself? Edited January 24, 2018 by Haziel Quote Link to comment Share on other sites More sharing options...
hendra814 Posted January 25, 2018 Group: Members Topic Count: 59 Topics Per Day: 0.01 Content Count: 1281 Reputation: 170 Joined: 06/12/12 Last Seen: 1 hour ago Share Posted January 25, 2018 Is this like OK, but with running client? Quote Link to comment Share on other sites More sharing options...
L1nkZ Posted January 26, 2018 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 40 Reputation: 73 Joined: 01/24/18 Last Seen: December 30, 2022 Author Share Posted January 26, 2018 (edited) On 1/25/2018 at 12:45 AM, Haziel said: Awesome. In what depth are you able to inject the plugin on, what kind of changes can it achieve? I'm really interested. I see that you can properly retrieve information from the client, but are you able to command the client itself? Well, it's merely a PoC at the moment. But anything that you can think of that is event-driven is doable. All it takes is some work and deciding what you want to hook. At the moment, the only api that "commands" the client is a print_in_chat function that allows writing into the game chat from inside the plugins. As it is now, it would be possible, for example, to make an event-driven Discord or IRC client as a plugin (since you can use the usual python libraries) that would be plugged to the client and printing messages from Discord or IRC channels into the game chat. On 1/25/2018 at 4:01 AM, hendra814 said: Is this like OK, but with running client? Yes that's a way of seeing it, with enough support from Bourgeon, you could imagine exposing networking parts (or higher level stuff like, move player, attack mob id) of the client and do whatever. Edited January 26, 2018 by L1nkZ 2 Quote Link to comment Share on other sites More sharing options...
L1nkZ Posted January 27, 2018 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 40 Reputation: 73 Joined: 01/24/18 Last Seen: December 30, 2022 Author Share Posted January 27, 2018 (edited) Alright, so to further illustrate the idea behind the plugin system I added a couple of examples on the github repository. First I added the possibility to use items (with ragnarok_client.use_items) from within python plugins and made a basic autopot plugin out of it. You can take a look at the autopot.py plugin example in the examples folder. And secondly, since a bird in the hand is worth two in the bush, I also added a small irc.py plugin that does what I mentioned in my previous post. The plugin listens to an IRC channel and transfer messages from IRC to the in-game chat. Here's a screenshot: Edited January 27, 2018 by L1nkZ edit repo link 2 Quote Link to comment Share on other sites More sharing options...
nitrous Posted January 27, 2018 Group: Developer Topic Count: 4 Topics Per Day: 0.00 Content Count: 141 Reputation: 46 Joined: 08/14/12 Last Seen: April 5 Share Posted January 27, 2018 >sov >hercules reeeeeeeeeeeeeeeeeeeeeeee 1 Quote Link to comment Share on other sites More sharing options...
L1nkZ Posted January 27, 2018 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 40 Reputation: 73 Joined: 01/24/18 Last Seen: December 30, 2022 Author Share Posted January 27, 2018 (edited) 1 hour ago, Nitrous said: >sov >hercules reeeeeeeeeeeeeeeeeeeeeeee Here's some rAthena for you So yeah, I uploaded a very basic discord plugin on the github repository. It's a bit ugly but it does the job. Need a few things more in the API to make writing plugins a bit easier but right now it's already fairly usable. Debugging plugins is still currently messy because of the lack of exception handling (I'll be working on that) and utf8 support is still missing. I'll keep this thread updated. Edited January 27, 2018 by L1nkZ lel 1 Quote Link to comment Share on other sites More sharing options...
Rynbef Posted January 28, 2018 Group: Forum Moderator Topic Count: 48 Topics Per Day: 0.01 Content Count: 941 Reputation: 125 Joined: 05/23/12 Last Seen: Saturday at 06:31 PM Share Posted January 28, 2018 Its a nice idea but how about Client-Security? I think there are many ways to abuse this system. Rynbef~ Quote Link to comment Share on other sites More sharing options...
L1nkZ Posted January 28, 2018 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 40 Reputation: 73 Joined: 01/24/18 Last Seen: December 30, 2022 Author Share Posted January 28, 2018 (edited) 4 hours ago, Rynbef said: Its a nice idea but how about Client-Security? I think there are many ways to abuse this system. Rynbef~ I'm not sure what you mean by client security in this case but I'll assume that you're asking about making use of the plugin system to make bots, for example, rather than using of the plugin system to compromise a client with malicious scripts (although that is also a problem that users must acknowledge). In this case, well yeah it's clear that there are many things to consider before rushing into implementing new features. Everything that allows the player to automate something is, technically, a step closer to him being able to make a bot. For example, if we add an API that allows scripts to move the player to given coordinates, we can imagine doing a plugin that would, for example, get along with the tracking system and conveniently do the walk for you, that sounds like good enough use case to me. But then again, what about potential abuses ? Being able to move programmatically is a good start for botting as well. So it's an open problem right now. But no matter what, a system that is open-source will always benefit to both sides I guess. Edited January 28, 2018 by L1nkZ 2 Quote Link to comment Share on other sites More sharing options...
Rynbef Posted January 29, 2018 Group: Forum Moderator Topic Count: 48 Topics Per Day: 0.01 Content Count: 941 Reputation: 125 Joined: 05/23/12 Last Seen: Saturday at 06:31 PM Share Posted January 29, 2018 Thats exactly what I mean. U have to add some event restrictions like the move system, chat system or else. But it whould be easy to add new bots in my opinion. But I'll check it after a few commits. Rynbef~ Quote Link to comment Share on other sites More sharing options...
Noil Posted February 20, 2018 Group: Members Topic Count: 0 Topics Per Day: 0 Content Count: 3 Reputation: 2 Joined: 04/23/17 Last Seen: May 12, 2018 Share Posted February 20, 2018 Thats absolutely cool! I think for the bot matter it should be compiled to a dll and get hash checked so a player cannot script their own plugin. That way server owner can go crazy and build awesome stuff based on your api but in the end you get bound to that stuff they coded. Heck you could even end up writing your own game guard (user input --> event happens you check for ahk --> forward to client or discard) The possiblities are endless awesome! :3 1 Quote Link to comment Share on other sites More sharing options...
Haikenz Posted February 21, 2018 Group: Members Topic Count: 84 Topics Per Day: 0.02 Content Count: 309 Reputation: 82 Joined: 11/15/11 Last Seen: October 1, 2023 Share Posted February 21, 2018 @L1nkZ Is it possible to have the "announce of the NPC" advertised in the discord, Instead of chat?? Quote Link to comment Share on other sites More sharing options...
L1nkZ Posted February 24, 2018 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 40 Reputation: 73 Joined: 01/24/18 Last Seen: December 30, 2022 Author Share Posted February 24, 2018 On 2/21/2018 at 5:11 PM, Popcorn said: @L1nkZ Is it possible to have the "announce of the NPC" advertised in the discord, Instead of chat?? Hum, I'm not sure what you mean by that, could you elaborate ? Quote Link to comment Share on other sites More sharing options...
Noil Posted April 18, 2018 Group: Members Topic Count: 0 Topics Per Day: 0 Content Count: 3 Reputation: 2 Joined: 04/23/17 Last Seen: May 12, 2018 Share Posted April 18, 2018 On 21.2.2018 at 5:11 PM, Haikenz said: @L1nkZ Is it possible to have the "announce of the NPC" advertised in the discord, Instead of chat?? It would be easier to make this server side via plugin, because the server knows when an announce happens. All you need to do is wire this to a discord server of your choosing. Making it the way you intended via players that receive the announce the discord server would get the message n times the player count. 1 Quote Link to comment Share on other sites More sharing options...
Vykimo Posted November 27, 2018 Group: Members Topic Count: 23 Topics Per Day: 0.00 Content Count: 236 Reputation: 189 Joined: 11/27/11 Last Seen: August 4, 2024 Share Posted November 27, 2018 Nice project ! Thanks for releasing it Quote Link to comment Share on other sites More sharing options...
Vietlubu Posted February 3, 2023 Group: Members Topic Count: 36 Topics Per Day: 0.01 Content Count: 141 Reputation: 24 Joined: 01/19/12 Last Seen: March 30 Share Posted February 3, 2023 (edited) Hi guys, how to get base address and offset in file `configuration.h` and `20190116.h`. I want to update for new client Edited March 20, 2024 by Vietlubu Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.