VIP Member
  • Content Count

  • Joined

  • Last visited

  • Days Won

  • Feedback


DnR last won the day on August 10

DnR had the most liked content!

Community Reputation

18 Good

About DnR

  • Rank

Contact Methods

  • Website URL

Profile Information

  • Current Mood
  • Gender
  • Country

Recent Profile Visitors

1,141 profile views
  1. Project has moved to GitLab. Link was added in first post. Thank you all for your support until now. BR, DnR
  2. Since revision 679, project is using Java 11. Current revision: 681 Best regards, DnR
  3. So here is the thing. There is a check for private sell stores that verifies if each of listed items has a corresponding item template. I checked most of projects out there and all had the same issue. Here is the code I refer to, nested in TradeList privateStoreBuy() method: // Check if requested item is available for manipulation L2ItemInstance oldItem = _owner.checkItemManipulation(item.getObjectId(), item.getCount(), "sell"); if (oldItem == null || !oldItem.isTradeable()) { // Private store sell invalid item - disable it lock(); return false; } final L2Item template = ItemTable.getInstance().getTemplate(item.getItemId()); if (template == null) { continue; } weight += item.getCount() * template.getWeight(); if (!template.isStackable()) { slots += item.getCount(); } else if (player.getInventory().getItemByItemId(item.getItemId()) == null) { slots++; } Object 'item', which happens to be an instance of ItemRequest class, is used for retrieving item template and checking whether there are items of the corresponding ID inside buyer's inventory, in the case of stackable items. What's really interesting is that this object has no Item ID. Private store sell listed items are usually distinct by Object ID instead. Here is another code I refer to, nested in RequestPrivateStoreBuy class: @Override protected void readImpl() { _storePlayerId = readD(); _count = readD(); if (_count < 0 || (_count * 12) > _buf.remaining() || _count > Config.MAX_ITEM_IN_PACKET) { _count = 0; } _items = new ItemRequest[_count]; for (int i = 0; i < _count; i++) { int objectId = readD(); long count = readD(); int price = readD(); if (objectId < 1 || count < 1 || count > Integer.MAX_VALUE || price < 0) { _items = null; return; } _items[i] = new ItemRequest(objectId, (int) count, price); } } And here is the conclusion. Private store sell never performs slot and weight checks at this point, since privateStoreBuy is searching for an item template using 0 as Item ID, therefore skipping rest of code inside loop. Finally, using L2ItemInstance oldItem object for doing those checks, instead of ItemRequest item would probably be enough to solve this issue. // Check if requested item is available for manipulation L2ItemInstance oldItem = _owner.checkItemManipulation(item.getObjectId(), item.getCount(), "sell"); if (oldItem == null || !oldItem.isTradeable()) { // Private store sell invalid item - disable it lock(); return false; } weight += item.getCount() * oldItem.getItem().getWeight(); if (!oldItem.isStackable()) { slots += item.getCount(); } else if (player.getInventory().getItemByItemId(oldItem.getItemId()) == null) { slots++; } Best regards, DnR
  4. Project shutdown was postponed, and we have been working on it since summer. Latest revision: 678.
  5. Hello folks. I have a really simple client patch for an interactive raid boss map demo which I decided to share. Map includes zoom, panning, and search control. It can also be adapted in a website using any size. Raid bosses are displayed as markers (blue for alive, red for dead) and users can hover those markers to see boss status and respawn time. It also uses gameserver-equivalent world dimensions, so there is no need for trying to set markers on map manually. I have included a small PHP script for local test purposes in order to retrieve data from database using an ajax request. Few screenshots Link 1 Link 2 Default functionality is for C4, but I have included map overlays for C5 and Interlude. Have fun, DnR
  6. I think you misunderstood the whole thing. The issue isn't just game brightness. The issue is that brightness is increased across whole OS UI, as long as client is running. I do not prefer decreasing client brightness, so that does not help.
  7. Is there any way to get rid of screen brightness issue when L2 client is minimized? I know there is a way to fix this using an external program, but what about client editing?
  8. This is a simple yet nice-looking gatekeeper that was already shared by its original author Cronia/LamprosJr in this forum for acis Interlude. I adapted it to my own project and already shared it with my people. It can also be adapted in Frozen-like projects. My work: - Converted XML data to sql. Data is stored in custom tables. - Added quotes to all HTML attribute values. - Added missing font closing tags. In addition to Interlude, C4 HTML window renders unclosed tags as plain text. - Calculated and improved width on certain elements. - Removed useless align and colspan attributes. - Fixed widths that were greater than 300. - Title has become clickable and redirects to main page. - Changed button backgrounds to "down" instead of "hover". - Removed C5-IL teleports. - Tested all teleports one by one. They are fully functional. Link 1 Link 2 I hope you find it useful. *EDITED: Corrected wrong query in custom_npc file.
  9. Dear members, Project has made a lot of progress since Revision 599 of 2018 which was thought to be the final version, and it hasn't been so active since 2015. Now, it's time that I personally halt my activities for the next few months since lots of things are going on and I have to put certain priorities. It's out of the question that troubleshooting is still a priority and fatal bug reports will be dealt with. We all put a lot of effort and I think we should all take some summer rest for start. I want to thank you all for your efforts, and for being a part of this up until now. :) Also, it would please me if I saw any new server projects sprout. I hope I do. Either way, I have also been suggested for a mid rate server, but I haven't given a final answer yet. I hope you enjoy the rest of summer relaxing, like I'll do and we'll be in contact again in the future. *Previous post updated. Current commit is 657. Best regards, DnR
  10. Actually, L2J has been using both as integers until Freya (in the case of getRunSpeed, it's probably because packets write speed stats as integers and it seemed an easy solution to them). Here is the method he's probably using. /** * Return the RunSpeed (base+modifier) of the L2Character in function of the Armour Expertise Penalty. */ public int getRunSpeed() { if (_activeChar == null) { return 1; } // err we should be adding TO the persons run speed // not making it a constant double baseRunSpd = _activeChar.getTemplate().baseRunSpd; if (baseRunSpd == 0) { return 0; } return (int) Math.round(calcStat(Stats.RUN_SPEED, baseRunSpd, null, null)); } They even preferred rounding value and casting it to int instead of returning it as it is.
  11. You seem to have zero knowledge regarding Python OOP, so I suggest you take a small look here: https://www.w3schools.com/python/python_classes.asp For start, try calling your new method using 'self' reference which is almost equivalent to Java's 'this' reference. Also, there must be an extra first parameter that refers to current object and exists solely to give you access to it. In most cases, developers name it self. So, your method parameters should look like this: def testas(self, player): and you should call it like this: self.test(player) *Note: Do not use semicolons in Python. I hope you find these tips helpful.
  12. I see, that makes a lot of sense now. I also checked package origins and confirmed it's acis but I noticed that public source build file is set to use Java 8 so I think there is also the question of whether he is using your public or premium source?! Here is the repository I took a look at: https://xp-dev.com/svn/aCis_public/ Regardless, it's him who should post more details about his server origin. About your points regarding JDK 11, this really sounds interesting since GC has always been a pain for developers until now. Thanks a lot for your suggestion.
  13. What is your definition of trying? If by any chance you've kept all those versions installed, I doubt you even know which version your server is run with. After doing a bit of search regarding error tips, I realized you are more likely using acis (public sources at least), so yes it must be Java 8 compatible. I did not get any spare time to try JDK 11 or even read docs, so thanks a lot for correcting me on this. However, even though you seem informed, It seems really strange to me that it still didn't cross your mind at first, since this is one of the most common error cases of JDK 8 -> 9 incompatibility in the past 2 years and I believe it's worth checking. @AominePride If you have not yet, please perform a clean installation of JRE 8 and JDK 8. Secondly, if you still have more versions installed, make sure your server is running using the proper version. In worse case, regarding suggestions above, you could also try and run an out-of-the-box compiled version to check whether it's a compilation issue or not. Good luck.
  14. Hello AominePride. Your error definitely indicates that your default Java environment version for running this server is 9 or newer. This means a NoSuchMethodError occurs because the server you are trying to run is compatible with (hopefully) Java 8 or an earlier version. In newer versions of Java (9+), ByteBuffer class has no longer access to clear() method, resulting in the error mentioned above. If you really want to run this server, you should either install Java 8 or do some dirty work and possibly add Buffer class casts to all ByteBuffer objects that try to call clear() method. Good luck.
  15. This is definitely wrong. In the past, there have been private servers based on L2JServer branch (yes a 12-year old branch full of bugs) and many of them lasted for long, comparing to servers nowadays. Back then, server admins had decent balls and a little of programming experience to manage and solve any kind of trouble occuring in their servers. These years were pretty joyful and I wish they were back. Nowadays, admins are endlessly complaining while looking for something perfect. Acis has long reached a decent quality for a live server, and I hope they keep up the good work. In fact, it's 2019 and we are talking about emulators of such an old game that you all should at least be a bit thankful for the work of L2J projects up until now, instead of complaining. Admins should worry more about creating a decent community for their servers. All those good people who used to play and love this game have long given up.