Jump to content

Recommended Posts

Posted

Hello everybody!

Today we're gonna see the basics in order to solve a huge problem in MaxCheaters.

I am sure that all of you have seen posts like this:

Chronicle for that code? I am using Interlude!

I always reply to these guys that this question is not 'valid'. The reason? Well, java is a language, which is not different at every chronicle. So we should all know that java will always be the same, which means that if something exists in, for example, Gracia, then it can exist in, for example, Interlude too!

 

Let's now see the basics of codes' adaptions.

 

 

Finding our Code.

 

Well, of course the basic step is finding the code we'll try to use.

Most users are trying to add Epilogue codes into Interlude, since adding Interlude stuff in Gracia wouldn't be a big problem.

 

So, let's say that you have found the code that you need and try to add it.

If you don't have a full patch, then make sure that you have added everything needed, at both: DP and GS side.

 

If everything goes well, then skip the following steps and continue reading the "Testing" part.

 

But what if you fail adding it without errors?

Then, the only thing you've gotta do is to keep reading the guide.

 

 

~Typos

 

A possible reason for the error(s) is having typos.

What do I mean?

Well, you have either, accidentaly, added something that you probably shouldn't, or the code has typos because of the Chronicles' difference.

 

If you have added something, then the only way to find out what the heck you added, is to re-aply the code, or simply find the line where the error is, and delete it.

About the second case (The Chronicles' difference), then it will be very easy to correct it, since there aren't many possible cases.

 

You may wonder now, what do I mean when telling "typos because of the chronicles' difference", right?

Well, I will answer you with an example:

 

If you try to add in Interlude something like

if (activeChar.isCursedWeaponEquipped())

then you'll find an error at the 'isCursedWeaponEquipped' part.

 

It is very easy to fix it though!

You don't need any extra java knowledge, you just need to be familiar with the client you're using!

In Interlude, the fix will be to remove one "p" from the 'Equipped'.

So, it will actually become

if (activeChar.isCursedWeaponEquiped())

 

Very annoying, but easy, isn't it?

So, this a possible reason for having errors with your code.

Let's move on.

 

 

~Visibility

 

It may sound weird, but it may be a main reason for getting errors.

I will explain it to you with another example.

 

Let's say that you are trying to add a code from Gracia to Interlude, and you are having errors.

A possible reason is to have visibility differences.

If, for example, you are using a private boolean at a part of your code, since Gracia has it like this, you may need to change its visibility to suit your code.

 

So, for example, you may need to change a private boolean into a public one.

It's very simple, you just change the word that sets the visibility (private, public, etc.).

 

It is quite easy, but if you're facing problems, then I suppose that eclipse will correct it by itself.

Don't forget to check at the error symbols, or the red lines, so that eclipse will be able to provide you with its help!

 

Let's move on..

 

 

~Missing Parts

 

Well, this one is the most common problem, although it is hard to be solved by a newbie.

What do I mean when telling 'missing parts' ?

Well, if you usually use eclipse to solve such problems, then you may have noticed that sometimes, eclipse can't provide you with the proper help, in order to solve the problem.

A possible reason for this to happen, may be that you don't have the proper codes.

 

Let me use another example.

You are trying to add a code, although you must use a proper boolean in order to make it work properly.

But what happens when you the code you're looking for doesn't exist?

The solution sounds simple, but it may be harder than you think.

 

You can either write it by yourself, but since the guide is about newbies I doubt if you can, or take it from the chronicle itself.

You have to find the proper class in which the code exists.

Then you have to open the file, but in Epilogue's/Final's/etc. Chronicle.

 

After you open the proper file at Gracia's GS, you search for the proper, for example, boolean.

I suppose that you all know how to search in eclipse >_>

 

After that, simply copy/paste what you need, at your chronicle's proper file.

If everything goes well, then you can freely compile your core, and have fun.

 

But what happens if the code you pasted needs further editing?

Well, the answer is simple: Just do what you did right now.

What do I mean? Search for what it missing in order to complete the code.

 

Let's call it a chain reaction. Don't forget what I told previously: it may sound simple, but it isn't always.

If you finally find everything needed to complete the code, then you're finally done!

Let's move on..

 

 

~Imports

 

That's the last thing we'll mention.

It may sound weird and stupid, although it is something very basic.

 

Let's say that you have copy/pasted a brand new code, and created a class..

The first thing you've gotta do, before fixing further errors, is to fix the imports.

 

The imports' problem can either be simple, or complicated.

If it is simple, then you'll just have to change the starting part, in order to suit to the project you're using.

 

For example, Gracia Epilogue's imports start with

com.l2jserver

whereas Interlude's imports start with

net.sf.l2j

 

That's the easier part, and I suppose that all of you know this.

 

If the problem is complicated, then the names of the classes may be different, so they may confuse you.

But you should know that nothing is complicated at all!

There are just a few differences at the names or the packages.

 

For example, the well known L2NpcInstance in Interlude (located in model.actor.instance), is named L2Npc in Gracia (located in model.actor).

 

It's nothing so hard, so don't let simple things fool you.

 

 

So, these are the four parts with my advice.

But the guide isn't over yet!

We have to test everything ingame.

So, let's move on the last part of the guide.

 

 

Testing the Code.

 

As you may know, Interlude is a client in which if you add something, you may ruin a whole system.

So, my advice is: after adding every single code, make sure that you test it by yourself, and check if it affects other parts of your server.

 

Javac may find 0 errors, and the gs console may find 0 errors as well.

But don't think that the code will work properly.

 

You will have to test everything by yourself to see if the code you added works properly, and if it causes further problems.

 

If, in the end, everything is fine, then you're okay.

You have added everything you wanted and it works perfectly.

 

 

 

 

So, that's all for now people!

These are the basics of "adaptions", so I suppose that you will no longer have problems, like the ones I mentioned above.

 

I hope that from now on, we will see less questions like

Will it work on X Chronicle?

 

Goodbye everybody, and enjoy testing things by yourselves.

 

PS: If you have any extra ideas about more things to add, feel free to suggest them. Just make sure that they're related to the topic.

 

 

Best Regards,

Coyote™.

Posted

It's a very good guide and usefull too. btw what compiler you use?

 

Mainly eclipse.

I mention it in the guide, since most users find it easier than maven.

Posted

WoW man!

Thank you!I didn't knew how to do it... :P you see i am newbie on eclipse!

Thank you anyway, i found it very useful!

 

Will there be a video...cause i cant understand some parts!

Posted

WoW man!

Thank you!I didn't knew how to do it... :P you see i am newbie on eclipse!

Thank you anyway, i found it very useful!

 

Will there be a video...cause i cant understand some parts!

 

Videos are not my cup of tea.

I prefer writing than using such programs..

 

Sorry, but I can't help you with this.

I may translate it in Greek, though.

Posted

I am working at an epilogue l2jserver pack and i wanted to add a code!

if (activeChar.getLevel() >= 40)
    [javac]                         ^

how should i transform it?

 

where's the error?

You just gave 2 lines..

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

    • 🏆 UPDATE: CLAN RACE — R$ 300 (PIX in Brazil, or the equivalent in USDT/PayPal) for the first clan ready for World B PvP Worlds opens on Friday, September 25, 19:00 BRT (GMT-3). Everyone starts together, from scratch. The challenge: the first clan with 9 members ready to enter World B wins. Ready = level 51, World C registered and the full C set equipped (weapon, armor and jewelry) with at least 3 attributes on each piece. Only Queen Ant stands between you and World B. Rules: main character only; 9 different people, each on their own PC; the server records the exact time each member became ready. Deadline: October 14. Sign up your clan on our Discord (link on the site): l2mog.com/pvp
    • 🚀 L2-Gold Custom PvP – Beta Test is LIVE! 🚀 Hey guys! We are opening a brand new Custom PvP server and looking for passionate players to help us test it out before the official grand opening! 💥 What we offer: High Rates & Custom PvP Gameplay Custom NPC Buffer, GM Shop & Global GK Balanced classes and epic custom items Interlude with c4 skills 🎁 Beta Rewards: Every active tester who reports bugs or gives feedback will receive Exclusive Custom Rewards on the official launch day! 🛑 No website needed yet! All files, patch, and support are inside our Discord. 🔗 Join Beta Test Here: [https://discord.gg/9qkSxQtTq]
    • "CAN YOU DO A BULGARIAN REVOLUT?" – WE DID. FIRST DRAFT, NO EDITS The request came in short: a photo of a bank card, Bulgaria, Revolut. We said yes and asked the only question that matters – what data. The client was on the road, asked for a couple of hours, then sent the lot: number, expiry, CVV, payment system, bank, cardholder name. Then came the part the client never sees: - ran the number through Luhn – the check digit has to add up, otherwise the card is dead the second anything automated looks at it - matched the BIN to the issuer: Revolut in Bulgaria isn't a "local bank", the cards run through Revolut Bank UAB. The number range has to actually belong there, not just start with the right digit - built the current design, not a five-year-old picture: vertical layout, flat laser print instead of embossing, correct chip module, contactless mark where it belongs - the payment system logo – with the right gradient where the circles overlap and the wordmark sitting exactly where it should. A small thing that kills half the fakes out there - and finally, physics. Plastic has to catch light: a highlight along the edge, a micro-shadow under the chip, a faint fingerprint. A phone shot, not a render Sent the draft for approval. The client looked it over, signed off with zero corrections – final files went out. One pass, no rework. A card is a deceptively simple document. Looks like a rectangle and sixteen digits. In reality it's maths in the number, a tie to the issuer, a current design and light on plastic. Miss any one of the four and the file gets exactly two seconds of attention. Need a card for a specific bank and country? Message us. We'll tell you straight what's realistic for your case – then build it. { all data published with the client's consent} › TG: @mustang_service_ms ( https:// t.me/ mustang_service_ms ) › Channel: Mustang Service ( https:// t.me/ +JPpJCETg-xM1NjNl ) #drawing #card #photoshop #revolut #case
    • ============================================================               CLExt Classic Interlude: v7.80 ============================================================   01. Fixed ValidateLocation handling and player/client position synchronization. 02. Added protection against invalid coordinates and characters falling under the map. 03. Improved XY/Z position and heading validation. 04. Fixed MoveToLocation and MoveToPawn packet conversion and target validation. 05. Fixed TargetSelected, TargetUnselected and MyTargetSelected packet handling. 06. Improved GeoData Z-location handling and disabled unsafe PathNode modifications. 07. Added ExUserInfoInventoryWeight support. 08. Fixed inventory weight and maximum load synchronization. 09. Fixed incorrect 0% inventory weight after character login. 10. Added automatic inventory weight updates after EnterWorld and inventory changes. 11. Added inventory weight packet spam protection and safe weight caching. 12. Fixed BuyList and SellList inventory, slot and weight synchronization. 13. Improved NPC target and Buy/Sell packet validation. 14. Reworked mail attachment inventory and weight validation. 15. Added all-or-nothing mail attachment receiving and safe retry handling. 16. Fixed stackable mail attachment validation and INT_MAX overflow protection. 17. Improved COD Adena validation and post-mail inventory weight refresh. 18. Improved Warehouse Deposit and Withdraw validation. 19. Added protection against malformed warehouse item counts, DBIDs and amounts. 20. Added warehouse INT_MAX, CItem and pSID validation. 21. Improved warehouse anti-dupe protection. 22. Reworked the HTML Cache system for improved stability and memory usage. 23. Added lazy HTML loading instead of loading ~20,000 files during startup. 24. Fixed HTML Cache startup crashes with large HTML collections. 25. Added thread-safe HTML Cache access and Clear/Reload support. 26. Added bad allocation, invalid HTML and oversized HTML protection. 27. Reduced HTML Cache RAM usage, startup allocations and disk I/O. 28. Added HTML Caching ON/OFF with live HTM loading support. 29. Fixed ToggleCachingHook and added VS2005-compatible live HTML handling. 30. Fixed ShortcutInit processing and skill synchronization order. 31. Improved shortcut item validation, augmentation handling and va_list safety. 32. Added LiveMode Ability Point system. 33. Added inventory-item-based Ability Points with configurable pointItemId. 34. Preserved the original level-based Ability Point system as fallback. 35. Fixed incorrect Ability Point display and inventory synchronization. 36. Improved Ability skill learning and point validation. 37. Improved OfflineShopRestore loading and FakePC/DBID handling. 38. Added safer OfflineShopRestore socket limits and batch processing. 39. Prevented thousands of restore sockets from loading simultaneously. 40. Added delayed, non-blocking OfflineShopRestore after server startup. 41. Improved OnEnterWorld initialization order and stability. 42. Improved inventory weight, SkillList and acquired-skill initialization after login. 43. Added VIP integration to the EnterWorld process. 44. Added safe UserExtData initialization without modifying the native User structure. 45. Improved duplicate Bronch Jewel and equipped-slot protection. 46. Improved Bracelet, Belt, Bronch and general UseItem validation. 47. Improved general packet, UserSocket, User, pSD and Creature validation. 48. Added safer INT32/INT64 packet handling and malformed-packet protection. 49. Improved L2Server startup memory usage and lazy resource loading. 50. Reduced unnecessary startup allocations. 51. Improved account-only KeyEngine authentication and remote account validation. 52. Removed account expiration-time requirements. 53. Added updater/restart design without requiring CLExtUpdate.exe. 54. Improved CLIEXT HWID, shared-memory and client/server version validation. 55. Improved ReadFile/WriteFile hooks and MemoryProtector handling. 56. Added UoPilot and Extreme Injector detection handling. 57. Reworked VIP point loading, saving and database synchronization. 58. Fixed VIP Level 0 initialization and first VIP activation. 59. Fixed vip.htm activation after login and from party-shared points. 60. Fixed VIP points being incorrectly reset before successful activation. 61. Improved VIP progression from Level 1 through Level 7. 62. Added proper VIP Level 7 MAX/DONE behavior with no Level 8 requirement. 63. Disabled further VIP point collection after reaching maximum level. 64. Reworked VIP BonusInfo/ReceiveVipInfo packet synchronization. 65. Fixed VIP tier, points, duration and level requirement packet fields. 66. Added VIP duration, tier, point and User validation protections. 67. Added safer 64-bit VIP EXP and party EXP calculations. 68. Preserved subclass maximum EXP protection. 69. Improved ItemDataEx validation during character loading. 70. Fixed augmentation loss during login, relog and server restart. 71. Added safe restoration of augmentation IDs directly from the database. 72. Added CItem, pSID, pExItem and User validation during ItemDataEx loading. 73. Improved Shadow Item mana and item lifetime loading. 74. Preserved item protection timeout data during character loading. 75. Added augmentation loading diagnostics and protected valid augmentation data. 76. Preserved database value 0 for genuinely non-augmented items. 77. Added RaidBoss Status synchronization with the World Map. 78. Fixed alive/dead RaidBoss status updates after spawn and death. 79. Added RaidBossStatus as the source of truth for RaidBoss map packets. 80. Fixed RaidBoss map status synchronization after server/database loading.
    • 🚀 L2AQUILA — GRAND OPENING TOMORROW! Lineage 2 Gracia Final — Like L2 Pride, but fresh. The server you've been waiting for opens tomorrow, Saturday 19/09, 16:00 (Greek time) — No Wipe · 24/7 · Anti-DDoS. ⚔️ What's inside: • EXP 9300x · SP 3000x · Adena 5500x · High drop • Max enchant +20 · Safe +3 · 24 buffs / 3 debuffs • 20 free Custom Coins for every new player on day one! • Custom farming zones (Cave of Trials, Cemetery, Ruins of Despair + more) • PvP Events · Olympiads · Offline Trading · Weddings · Balanced classes • Starter + Dynasty shops in every town — playable from minute one 📥 Download: Client + Patch at https://l2aquila.com/index.html 💬 Discord: discord.gg/5ZyBRvG4k · Facebook: facebook.com/l2aquila Be there at opening hour — bring your squad. See you at the Grand Opening! 🔥
  • 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..