Jump to content


VIP Member
  • Content Count

  • Joined

  • Last visited

  • Days Won

  • Feedback


Everything posted by Elfocrash

  1. Hello and welcome to L2ACP L2ACP is both an Account control panel but also an Admin control panel. Every action in the system is INSTANT. No more "you have to logout first" messages and such non-sense. How does it work? The gameserver will now also run a lightweight restful API which will handle the site requests. The website which is hosted on my end handles and processes the user's actions and if they are valid it sends them to the server for further processing. This enables use of the native l2j method calls and the use of the existing infrastructure. This also enhances security as there are no database exposure anymore. Reasons for sharing To get a solid acp out there which is free for everyone To see if people are interested in contributing Nobody would buy this if i just hosted it myself To show the competition that opensource projects can offer value Feature list For Players Register l2 account Change ingame password Check player stats/info/inventory Buy ingame items with donate points Buy services with donate points (Change name, set nobless, reset pks, change sex) Statistics (Top PVP, Top Pk, Top Online) Donate with Paypal for Donate points For Admins Set the items sold in the store Give items to players Punish players (acc ban, char ban, jail, chat ban, kick) Announce test Live map of the players The ability to spawn monsters anywhere in the map The ACP is in active development and way more features are coming. The site is fully responsive giving the user a great tablet or mobile experience. L2ACP Preview Lucky Wheel addition Private stores Server with private stores showcase a server set up with a great economy system However it can be really hectic when a server is populated. Players tend to look forever to find the item whey want. Well the new L2ACP feature solves all that. The user is able to buy and sell items from the ACP no matter if he is online or not. You can also use the search functionality to search for the item that you want. Here is a video preview: Security L2ACP uses symmetric encryption for the payloads and an api key validation. As long as they are changed you will have no problem with security. If you want to be 100% secure, make the server accept requests only from the ip that the site is hosted. If you want to be 101% secure, then host them together and don't expose the api port. License Both L2ACP projects are licensed under GPLv2. Here is a tldr of what that means. Github repositories - (Please star the projects if you like them, it means a lot) Gameserver Api written for aCis - https://github.com/Elfocrash/L2ACP-api Website - https://github.com/Elfocrash/L2ACP-Web Test erver - http://test.l2acp.com Contributions I don't claim to be an expert java developer, not even close. The api side of things has definitely many things to be improved. Pull requests are always welcome. I will update this with more info soon. Thanks Guides How to build L2ACP API: Already published 1677ad687d5ad5f6eb7ef421213d5276cf5f18e1 version: http://www.mediafire.com/file/gahbhk5o7b84hzd/L2ACPPublished.rar How to host .NET Core project on IIS: https://docs.microsoft.com/en-us/aspnet/core/publishing/iis How to host .NET Core project on Linux with Nginix: https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction How to host .NET Core project on Linux with Apache: https://docs.microsoft.com/en-us/aspnet/core/publishing/apache-proxy
  2. This is not the time or the topic to open this discussion. Your example is poor because you can do that with ANY class in java. It doesn't have to be an enum. Getting there
  3. No and for good reason. You SHOULDN'T be using enums in that way. Enums are not meant to be doing that much, but sadly they can in java. They are the standard and most clean way to create a singleton too in Java.
  4. 1. Violates open close principle. Terrible. 2. ONLY if the List is dynamically populated based on some expression (IE, everything that implements an interface). Move the action on it's own method to reduce nesting. 3. Same thing as 1.
  5. Migrating aCis to Kotlin surfaces so many code related issues it's funny at this point. When i completely migrate the project I will write a post about my findings.
  6. [GR] Arakse, oute exw sunfwnw me to share alla to les oti einai outdated kai oti den einai san ta latest files einai apla asteio
  7. Oh, those files are from the distant December. Which is not even 2 months ago. I'm sure there are A LOT of updates missing.
  8. Χαχαχα παίζει ναι. Αφου έφυγα απο το μαγαζί το είχα δείξει σε αρκετους (Γιάννη, Μπογάδες κλπ) οπότε μάντεψε.
  9. Έκανα το ίδιο απο τα 14 γιατι το time keeping γινόταν στο client side. Απλά άμα τον παγώσεις μπορεί να σε πιάσουν. Καλύτερα να βάλεις να κυλάει 50-70% πιο αργά. Είχα γλυτώσει άπειρα φράγκα.
  10. L2j Roboto So as I've already said i would share the fake player engine that i started working on. It is WIP so DO NOT use it on any production environment. I only share it cuz someone might be interested in giving a hand. Features Features implemented: Only attack logic for bots to bots (plan to make it configurable even ingame) Task auto scaling logic in order to have less iterations in more tasks Buff bots with auto rebuff Soulshots/Spiritshots with auto refill Arrows/Bones with auto refill One AI per class (Only a few implemented for now) Random attack picked with probability Commands //fakes - opens the fake player dashboard (will probably change to //roboto) //spawnrandom - spawns a random bot with default AI How to install L2jRoboto has minimal dependencies Find the patch.diff folder under the dist folder Github repo: https://github.com/Elfocrash/L2jRoboto Please star the project is you can. The project is licensed under MIT so take it and do whatever you want with it. Have fun
  11. Even though I hate customising the client, this one looks like a nice implementation of the system. Good luck with your sales.
  12. It is, however I would advice you to change the api key to one of your own. On top of that, I would advice you use SSL on the l2 webserver but this is optional.
  13. Pretty self explanatory. This is a new Packet in order to open any url that you want to the user's pc. Can be used in vote rewards and shit like that. It is for Interlude. package net.sf.l2j.gameserver.network.serverpackets; /** * @author Elfocrash * */ public class OpenUrl extends L2GameServerPacket { private final String _url; public OpenUrl(String url) { _url = url; } @Override protected final void writeImpl() { writeC(0x70); writeS(_url); } } Usage: activeChar.sendPacket(new OpenUrl("https://www.google.co.uk/")); Client side: entry.dll Engine.dll in case just the entry file doens't work: engine.dll If the two things above don't work either here is the whole vanilla system: system Thanks to Szaka for helping me understand how this shit works btw.
  14. I was there when the Chinese got banned up until 2012 and then I was on and off as I am now. Back in the day, yes it was insanely populated. Not anymore. That's all I'm saying.
  15. Mate I'm actively playing. It doesn't have anything near that number. Not even close.
  16. That's not really true. Elite is not that populated. It has a solid online count but nothing insane and not as high as it used to be. Around the 400-500 real players mark peak.
  17. L2jRoboto is now completely rewritten in Kotlin and part of L2Extend. Currently working on the ingame admin control panel for bots. I will start with basic things like Name, Level and AI and it will get more advanced with buffs, armor, weapon and scheduled spawns and routines. https://i.imgur.com/XQBcKKd.gifv
  18. I still don't see your point. Constants are compile time computed values. You cannot be faster or safer than that. Enums in java are static classes. Even if you have more states, you are replacing what seems to be the same HTML in every state. Just use a variable for the part that's checking and make a method that returns the rest of the string. Anyway, I don't wanna litter your topic with my replies. Just said something I observed. For detailed explanation you have my skype.
  19. You can still parameterize the query, I don't see why you need the enum. There is absolutely no need for it and even if there was, this is not a good enum usecase. Just move your data access stuff in a DAO class and create your methods there. You should have separate getTopPvp and getTopPk methods for readability and usability purposes. Those methods can use the same private parameterised method behind the scenes. Also don't use a switch for a check with one state. That's what an if check is there for. Your whole code you pasted can become this: while (rset.next()) { i++; sb.append(getTableColor(i)); sb.append("<tr><td width=50 align=\"left\">" + i + "</td><td width=140 align=\"left\"><td>" + rset.getString(1) + "</a></td><td width=150 align=\"left\">" + (type == ONLINE ? Util.formatSecondsToTime(rset.getInt(2), true) : rset.getInt(2)) + "</td></tr></table>"); } Also also, prefer StringBuilder when you deal with multiple string concatenations as String is immutable and StringBuilder isn't. PS also also also, don't say "constant variable". A constant is a constant, it isn't a variable. That's the whole point. It's value can't change.
  20. From a coding standpoint, this looks like a really bad practice. Why do you need an enum for a constant? There is absolutely no reason to have an enum. It might impress someone that has no clue, but people who know can see through this bad idea. Anyways, why do I care, good luck with your sales.
  21. Deleted all my shares a while ago but wanted to leave this one here because there are people selling this stupidly simple code. It's command based individual vote reward for Hopzone, Topzone and Network. Commands are .votehope, .votetop and .votenet. It is secured on both the account level and the IP level so it's as protected as it gets without adding HWID. It can be easily converted to a NPC based one. Code: https://gist.github.com/Elfocrash/a5ba37666dd9c4d3f9a9ec022301930c Link for gson 2.6.2 https://repo1.maven.org/maven2/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar