Jump to content

Recommended Posts

Posted
Hello,

 

this is a system I created that allows multiple servers to use a global chat.

In other words players from different servers can talk to each others. You

can add servers to your server's allow list and broadcast/receive messages

only to/from them.

 

How to get it:

 

Compiled version:

 

I compiled a version using Java 7 which you can download here https://mega.co.nz/#!RRklGTDB!e-E0z2pt4FNtnjJekaeXC2DXvI80pO_YAv0kFfvrd40.

 

Compile it from source:

 

This is a maven project hosted on github and can work in any Java server. 

You will need Git to download it and Maven 2 to build it. Install git and

Maven on your system (Those that are familiar with eclipse egit and m2eclipse)

you could easily integrate this process to your Eclipse platform ). After

installing those two utilities run the following command:

 


 

This will download the project on your computer. Enter in the project folder.

You will know you are there if there's a file called pom.xml. If so run the

following command:

 

2)mvn assembly:assembly

 

If the command executes sucessfully in the target folder you will find a 

file called : crossL2JServer-0.0.1-SNAPSHOT-jar-with-dependencies.jar. This

is the library file you will use in your L2JServer pack.

 

Now download a patch that is suitable for your own project to activate the

system.

 

How to implement in your project.

 

In your gameserver add the following code:

 



Injector injector = Guice.createInjector(new AssemblyModule());
ServerManager manager = injector.getInstance(ServerManager.class);


manager.setPrivateKeyPath("C:/myserver/private.key"); //SET YOUR PATH HREE
manager.setPublicKeyPath("C:/myserver/public/key"); //SET YOUR PATH HERE
manager.setServerKeylistPath("C:/myserver/keys/"); //SET YOUR PATH HERE
manager.initialize();


TransportService service = injector.getInstance(TransportService.class);
service.setHost("localhost"); //SET YOUR SERVER IP HERE
service.setMessageHandler(new IMessageHandler(){


@Override
public void handleMessage(Message m) {


//TODO: Add here your code that prints the message into chat ( global / trade whatever ).


}});


service.initialize();


 

In a chathandler of your choice ( TellAll, Trade etc ) add a variable:

 



@Inject
TransportService service;


and in the code that handles the chat message (handleChat()) write

 



service.sendMessage(new Message("", Config.SERVER_NAME, activeChar.getName(), text));


If you are not familiar with Java wait for a patch for your type of pack. I'm going to create patches when I find some volunteers that want to test with me ( since it needs more than one server on different ips ) to check good. So it goes without saying, that I need some volunteers that will add it to their testserver pack and test it together with me. Be sure you know how to add a patch and have basic understanding on how to code in java.

Posted (edited)

with the same thinking you can export charInfo so people can see each other (even pvp ?) from other servers

 

Unfortunetly I fail to understand that, since most of the packets incuding CreatureSay use objectId so the client will understand which object triggered that packet, there will be a mess with 2 different servers since they will have different databases thus possible same object oid(s) ?

Edited by xdem
Posted

I wouldn't go as far as syncing two servers over this for multiple reasons. One , its HTTP, slower than raw sockets. Second, the reason you mentioned on objectids. Generally syncing two servers is a hell of a job. So lets stay on syncing server chats for now. Much easier to do :P

Posted (edited)

And what's the point of doing this? I mean... which utility can have to talk to players of another server? Spam? More e-wars? "Come to my server, it's better"? 

Can be funny to code it but totally useless, IMO.

Edited by ^Wyatt
Posted

Theres a concept called server alliance. Sometimes one authority has multiple servers. Take for example rpg-club. Obviously sharing a public key with another server means you "trust" it and the contents it sends. So it usually is a server hosted by the same staff.

Posted (edited)

Even if it's from the same staff, where is the point of doing it? I can't even find one  :rage:

Btw, some time ago I saw a feature that connected servers and allowed to pvp each other, in that case I can see the point, but... chat? 

Edited by ^Wyatt
Posted

Even if it's from the same staff, where is the point of doing it? I can't even find one  :rage:

 

Hey, I'm not gonna share the awesome staff we have in L2JPrim, I keep them for me :P Besides that having a more "active" chat gives the feeling of a warm and active server in an l2j world of 100ppl max per server.

Posted

Hey, I'm not gonna share the awesome staff we have in L2JPrim, I keep them for me :P Besides that having a more "active" chat gives the feeling of a warm and active server in an l2j world of 100ppl max per server.

I can just see spam and e-wars, maybe it could bring more action to a server with -100 people, but with others.. spam spam cry ban bun!

 

My last post, I'm a spammer  :rage:

Posted

e-wars is what most ppl in L2 live for ;) Imagine this getting cross-server ... I don't know about you, but I really enjoy boasting about how great my clan is compared to clans from other servers. Maybe it's just me.

Posted

I join also Wyatt on the useful question, notably about Trade chat...

 

Until you introduce special events where one server has to do something while another do another thing, and both results are shared amongst servers, I don't get the use. It really has few, if not a single use overall.

 

If you want to make a USEFUL chat concept, see what Cryptic did for STO and Neverwinter, aka your ACCOUNT is linked to your friend/ban lists and not a single characters. Meaning if you register ONE character you register the whole list. That avoids scams, that avoids to add back your whole lists, that avoids "what is your new name" questions, and it got (sorry but it's true) a better use of your time. It's registered under a playername@accountname form.

 

If your server got only 100 ppl on, you should consider to simply close it or edit the gameplay. That's not adding a shared chat ppl will stay on :P.

 

Otherwise the code is clean, you can use "try ()" to avoid the "finally" if it's only about closing stuff, Java 7 feature.

Posted (edited)

HTTP is indeed overhead. It could be done with sockets too. But it's how about time I learn something new ( hmm maybe netty too :P ). As for Inversion of control and dependency injection, I don't see why it's a big deal to do runtime injection compared to compile time. I mean yea, there's some extra resource ugage, but so minimal.

Edited by Leluche
Posted

HTTP is indeed overhead. It could be done with sockets too. But it's how about time I learn something new ( hmm maybe netty too :P ). As for Inversion of control and dependency injection, I don't see why it's a big deal to do runtime injection compared to compile time. I mean yea, there's some extra resource ugage, but so minimal.

 

Learning is cool. But you use guice only few times for DI. I think it doesn't worth that. And netty is great framework. You precisely shall try it.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • I’m coming to you with a small update — internal testing is currently underway. We’re working on catching minor issues and resolving them before the server launch 😉 In the near future, we’re planning public tests, which you’ll all be invited to. At the same time, I’ll be sharing a few Quality of Life changes coming to L2 Genesis.   Even if you’re not interested in playing right now, but you are a long-time Lineage 2 player, feel free to join our community. We would greatly appreciate your experience and feedback to help us improve and develop our project. Join the growing L2Genesis community: https://discord.gg/mcuHsQzNCm Also check our website: https://l2genesis.com/   Offline Shop System — run your shop without being online.   Buff Shop System — playing as a buffer? When you’re not in the game, sell buffs! Reworked classic interface, adapted to Interlude — shown here with the inventory menu as an example. New custom mob drop and spoil preview. DualBox Verification System — each player can only use one active account at a time. Genesis Wiki — a collection of all essential information about items, NPCs, drops, spoils, and quests.
    • https://gitlab.com/Tryskell/acis_public nai swsta, exeis kati pio updated na mas protineis? 
    • 🔥 L2Gold Enma – High Rate PvP Interlude 🔥 Interlude Chronicle • C6 Skills • Pure PvP Experience Welcome to L2Gold Enma, a high-rate PvP server designed for players who want instant action, balanced gameplay and nonstop PvP, without pointless grinding. ⚔️ Server Rates XP / SP: x1000 Adena / Drops: x10 Chronicle: Interlude Skills: C6 balanced skills Buff duration: 2 hours No weight limit 🎮 Gameplay Philosophy Fast leveling, instant PvP Clean Interlude experience No pay-to-win mechanics Focus on skill-based PvP 🛡️ Core Features Global Gatekeeper Offline shops Auto events (TvT, DM, CTF, etc.) Retail-like Olympiad with custom balance Active Raid Bosses Easy access to PvP gear 🏰 PvP & Competition Mass PvP & clan wars Meaningful castle sieges Olympiad focused on player skill Balanced classes for both solo & group PvP ⚡ Why L2Gold Enma? Interlude nostalgia with C6 skills High rates, low grind Stable server & active development Community-focused updates 💥 Join L2Gold Enma and dominate the battlefield! This is not a farm server. This is PvP   https://l2gold-enma.com/ https://discord.com/invite/Ba9cHj3HUJ
    • Hi I'm still online for this but making backup of everything in that time I didn't organize well so let me create a pack and upload to archive.org maybe. Thanks ! we can enrich togethers this if everyone add more and more old files.
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..