Jump to content

Recommended Posts

Posted

Hey everyone, so as the title says I want to discuss about launching a server for the first time. I've managed to create my server, I can say it's 90% completed. I am now entering the "unknown" field. As I've previously mentioned in other posts it's my first time creating such a project so I don't really know what to do from this point forward. All I know is about protection, website/discord, topsites but that's it. If there's anyone kind enough to help and briefly explain what I have to do, I would really appreciate it.
Thanks in advance.

Posted
12 minutes ago, Seamless said:

If you describe  the uknown field maybe we can help you. otherwise it seems like a generic post. No hard feelings. 

I thought I was clear enough when I wrote " All I know is about protection, website/discord, topsites but that's it."
Because that's literally all I know lol. I mean, let's say I'm done editing/customizing my server. What do I do from here on?
-I need to add protections, adverts, topsites and so on.
-Are those enough?
-Where can I find good protection?
-Only 1 kind of protection? For example, a protection like SmartGuard covers everything?
-Do I need to rent a server to host my server?
I got newbie questions like those.
Anything related to launching a server, except making the server.

Posted (edited)

So i will answear some of those and i might cover some of your topics since i have some free time to spare. 

 

 

-Only 1 kind of protection? For example, a protection like SmartGuard covers everything?

1. SmartGuard, AAC, and similar BOT protection systems aredesigned to detect and prevent the use of third-party bot software by players. They are not  server protections against malicious attacks on your server. These systems work by monitoring and collecting data to identify and block bot programs used by players. Their main purpose is to prevent players from farming 24h/7 and destryoing the server's gameplay and economy. No other protection rather than that. 


-I need to add protections, adverts, topsites and so on.

-Where can I find good protection?
2. When it comes to protecting your server against various attacks, such as DDoS attacks and SQL injections, it's important for server administrator (YOU )  to acquire knowledge and implement  security measures. These measures may include setting up firewalls, implementing detection systems, regularly updating server software, and following secure coding practices for any websites or applications connected to your server's database. While some VPS or server providers may offer built-in firewall solutions, but are not enough. 

 

3. You can run your l2j emulator to any rented vps or bare metal server outhere.  I dont recomend to go big and rent a big ass server with 32gb of ram and 32 core cpu since you will waste your money. Personally i  prefer to go with cloud services since are  pretty cheap and scalable if you need more without having to re install everything from the start.  Some of those are hetzer , OVH and Linode (linode not offer windows server option).  A vps with 8gb of ram and 4 vcpu is enough to run a good amount of players. Ofc there are other things you need to considered once you go bigger and bigger or what functions your l2j emulator  has. For example if you want to run phantom bot engine  with 1000 fake players you might need   more resources. 

 

To conclude, before considering opening your project, set clear goals for the project. If you intend to scale it up, read up as much as you can. Otherwise, go ahead and open it, and solutions will occur as you encounter problems.

Some  self-explanatory guides can be found here:


Follow these series, and they will cover many of your questions. Additionally, if you don't understand some concepts, try Googling them.

Edited by Seamless
  • Like 1
Posted
7 minutes ago, Seamless said:

So i will answear some of those and i might cover some of your topics since i have some free time to spare. 

 

 

-Only 1 kind of protection? For example, a protection like SmartGuard covers everything?

1. SmartGuard, AAC, and similar BOT protection systems aredesigned to detect and prevent the use of third-party bot software by players. They are not  server protections against malicious attacks on your server. These systems work by monitoring and collecting data to identify and block bot programs used by players. Their main purpose is to prevent players from farming 24h/7 and destryoing the server's gameplay and economy. No other protection rather than that. 


-I need to add protections, adverts, topsites and so on.

-Where can I find good protection?
2. When it comes to protecting your server against various attacks, such as DDoS attacks and SQL injections, it's important for server administrator (YOU )  to acquire knowledge and implement  security measures. These measures may include setting up firewalls, implementing detection systems, regularly updating server software, and following secure coding practices for any websites or applications connected to your server's database. While some VPS or server providers may offer built-in firewall solutions, but are not enough. 

 

3. You can run your l2j emulator to any rented vps or bare metal server outhere.  I dont recomend to go big and rent a big ass server with 32gb of ram and 32 core cpu since you will waste your money. Personally i  prefer to go with cloud services since are  pretty cheap and scalable if you need more without having to re install everything from the start.  Some of those are hetzer , OVH and Linode (linode not offer windows server option).  A vps with 8gb of ram and 4 vcpu is enough to run a good amount of players. Ofc there are other things you need to considered once you go bigger and bigger or what functions your l2j emulator  has. For example if you want to run phantom bot engine  with 1000 fake players you might need   more resources. 

 

To conclude, before considering opening your project, set clear goals for the project. If you intend to scale it up, read up as much as you can. Otherwise, go ahead and open it, and solutions will occur as you encounter problems.

Some  self-explanatory guides can be found here:


Follow these series, and they will cover many of your questions. Additionally, if you don't understand some concepts, try Googling them.

Wow thanks a lot mate. Especially for clarifying the different types of protections, I was unaware. I will take a look into what you sent and do some more research. I will take some time before opening the server, at least some months to get further informed. 

Thanks again! 

  • Like 1
Posted

https://github.com/nightw0lv/iTopZ-Java

this is a free solution for your server vote system 1.6 is under work

soon there will be also a video how to install it your self

 

 

this video will teach you to setup a website and protect it with cloudflare A to Z

 

this video will teach you to compile your server correctly

 

in the videos is featured the donation panel from denart designs you can see the DEMO here

 

about the server you can buy from contabo.com a small vps with 25/month as a medium solution specially if you plan to open an interlude server for starter pack

 

 

Posted

Seriously, who suggests Contabo for production servers? For a staging server, they are fine. But the numbers they claim are totally fake. €31 for 60GB RAM and 10 vCPUs? I have tried Contabo in the past before going to production with 8GB RAM and 4 vCPUs, and the loading times were a joke in terms of the runnable programs and hardware ratio. Then we went for an OVH staging server with 2 vCores and 4GB RAM, and it was blazingly fast compared to Contabo.

Posted

I think i said as a medium solution so.. if you dont like it i cant do something, contabo is a very good company with features like snapshots for free and the most simple vps more than enough for a medium solution since the server is not official and wont carry 1k people.

PS: I have 2 vps on OVH i cant say i am dissapointed but i would not use them for l2, they are good for webservers tho.

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • hello, i want to wtt my charracter in l2elmorelab 1x harbor for 1.5kkk adena in l2reborn 10x new. Or if you interested tell me your offer. :)) Clean Mail 30 lvl Cleric Naked   Updated.
    • package ai.npc.NFWalker; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import l2r.gameserver.enums.CtrlIntention; import l2r.gameserver.model.Location; import l2r.gameserver.model.actor.L2Npc; import l2r.gameserver.model.quest.Quest; import l2r.gameserver.network.clientpackets.Say2; import l2r.gameserver.network.serverpackets.NpcSay; public class NFWalkerAI extends Quest { private static final int WALKER_NPC_ID = 20116; private final Map<String, Route> routes = new HashMap<>(); private final Map<Integer, Integer> npcIndexes = new HashMap<>(); private final Map<Integer, Boolean> npcReverse = new HashMap<>(); private final Map<Integer, String> npcCurrentRoute = new HashMap<>(); public NFWalkerAI() { super(-1, NFWalkerAI.class.getSimpleName(), "ai/npc/NFWalker"); loadRoutes(); addSpawnId(WALKER_NPC_ID); } private void loadRoutes() { // Route 1 Data Route route1 = new Route("route1"); route1.addPoint(new RoutePoint(0, 149363, 172341, -941, 0, false, "")); route1.addPoint(new RoutePoint(1, 148568, 172328, -980, 5, true, "Puff")); route1.addPoint(new RoutePoint(2, 148536, 172792, -980, 0, false, "")); // Route 2 Data Route route2 = new Route("route2"); route2.addPoint(new RoutePoint(0, 149363, 172341, -941, 0, false, "")); route2.addPoint(new RoutePoint(1, 150248, 172328, -980, 5, true, "Rise my children! Bring me the servants of the god! Let them be offered to our god Bifrons!")); route2.addPoint(new RoutePoint(2, 150248, 172776, -980, 0, false, "")); // Add routes to the map routes.put("route1", route1); routes.put("route2", route2); } @Override public String onSpawn(L2Npc npc) { if (npc.getId() == WALKER_NPC_ID) { selectInitialRouteForNpc(npc); } return super.onSpawn(npc); } @Override public String onAdvEvent(String event, L2Npc npc, l2r.gameserver.model.actor.instance.L2PcInstance player) { if (event.equalsIgnoreCase("move")) { moveNpc(npc); } else if (event.equalsIgnoreCase("check_reached")) { checkIfReached(npc); } return null; } private void moveNpc(L2Npc npc) { String routeName = npcCurrentRoute.get(npc.getObjectId()); Route route = routes.get(routeName); Integer pointIndex = npcIndexes.get(npc.getObjectId()); if (route != null && pointIndex != null) { RoutePoint point = route.getPoints().get(pointIndex); if (point.isRun()) { npc.setRunning(); } else { npc.setWalking(); } if (!point.getChat().isEmpty()) { npc.broadcastPacket(new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getId(), point.getChat())); } npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(point.getX(), point.getY(), point.getZ())); // Log movement intention System.out.println("NPC " + npc.getObjectId() + " moving to " + point.getX() + ", " + point.getY() + ", " + point.getZ()); // Schedule a check to see if the NPC has reached its destination startQuestTimer("check_reached", 1000, npc, null); } } private void checkIfReached(L2Npc npc) { String routeName = npcCurrentRoute.get(npc.getObjectId()); Route route = routes.get(routeName); Integer pointIndex = npcIndexes.get(npc.getObjectId()); if (route != null && pointIndex != null) { RoutePoint point = route.getPoints().get(pointIndex); Location currentLocation = npc.getLocation(); Location targetLocation = new Location(point.getX(), point.getY(), point.getZ()); // Check if the NPC has reached the target location if (currentLocation.equals(targetLocation)) { // Log that the NPC has reached the target System.out.println("NPC " + npc.getObjectId() + " reached target " + targetLocation); // Schedule the next movement startQuestTimer("move", point.getDelay() * 1000, npc, null); if (!npcReverse.get(npc.getObjectId())) { pointIndex++; if (pointIndex >= route.getPoints().size()) { npcReverse.put(npc.getObjectId(), true); pointIndex = route.getPoints().size() - 1; } } else { pointIndex--; if (pointIndex < 0) { npcReverse.put(npc.getObjectId(), false); pointIndex = 0; // Choose a new route after completing the current one in both directions switchRouteForNpc(npc); return; } } npcIndexes.put(npc.getObjectId(), pointIndex); } else { // Check again after 1 second startQuestTimer("check_reached", 1000, npc, null); } } } private void selectInitialRouteForNpc(L2Npc npc) { // Randomly select either route1 or route2 String selectedRouteName = "route" + (new Random().nextInt(2) + 1); npcCurrentRoute.put(npc.getObjectId(), selectedRouteName); npcIndexes.put(npc.getObjectId(), 0); npcReverse.put(npc.getObjectId(), false); startQuestTimer("move", 5000, npc, null); // Log initial route selection System.out.println("NPC " + npc.getObjectId() + " selected initial route " + selectedRouteName); } private void switchRouteForNpc(L2Npc npc) { String currentRoute = npcCurrentRoute.get(npc.getObjectId()); String newRoute = currentRoute.equals("route1") ? "route2" : "route1"; npcCurrentRoute.put(npc.getObjectId(), newRoute); npcIndexes.put(npc.getObjectId(), 0); npcReverse.put(npc.getObjectId(), false); startQuestTimer("move", 5000, npc, null); // Log route switching System.out.println("NPC " + npc.getObjectId() + " switched to route " + newRoute); } private static class Route { private List<RoutePoint> points = new ArrayList<>(); public Route(String name) { } public void addPoint(RoutePoint point) { points.add(point); } public List<RoutePoint> getPoints() { return points; } } private static class RoutePoint { private int id; private int x, y, z, delay; private boolean run; private String chat; public RoutePoint(int id, int x, int y, int z, int delay, boolean run, String chat) { this.id = id; this.x = x; this.y = y; this.z = z; this.delay = delay; this.run = run; this.chat = chat; } public int getId() { return id; } public int getX() { return x; } public int getY() { return y; } public int getZ() { return z; } public int getDelay() { return delay; } public boolean isRun() { return run; } public String getChat() { return chat; } } } I looking for help, with this, the npc not start to move. Im trying to create, an NPC wich have multiple walk routes basic logic is  random pick a route complite the route  like Route 1 start form zero (0 -> 1 -> 2(or more) -> 1 -> 0) When the npc return to 0, the script should pic the other route and start again.  And if there is a message like point 1 here     "route1.addPoint(new RoutePoint(1, 148568, 172328, -980, 5, true, "Puff"));" The npc should display the chat message. Currently my problem is the npc not moving, but if I manage it to start moving its randomly move between the route 1 and 2 set of coordinates. Currently for me its  a nightmare. I hope anyone can help somhow.
    • We are certainly not an ambulance, but we will definitely cure you of blacklists and empty pockets. Live freely with SX! Each of you will receive a trial version of SX to familiarize yourself with the product, all you have to do is post in this thread
    • qual e o valor pra atualizar o java da soucer ?
  • Topics

×
×
  • Create New...