Jump to content

Recommended Posts

Posted

I like it. :) It's way better that those AIO buffers that don't fit into the l2 environment which you can find on all those crappy no content 2 week server projects with "no wipes" and "5000k+ players".  :dat:

 

keep up! :)

Posted

I tell you what is terrible, your Buffer which you click only on icons without names. Ok its the old rev350 but anyway you always think that you are the best. Terrible dwarf!

If you dont accept any critism you dont need to open any topic..right now just accept the critism you got from the people..

Posted

I like it. :) It's way better that those AIO buffers that don't fit into the l2 environment which you can find on all those crappy no content 2 week server projects with "no wipes" and "5000k+ players". :dat:

 

keep up! :)

Thanks!
Posted (edited)

I tell you what is terrible, your Buffer which you click only on icons without names. Ok its the old rev350 but anyway you always think that you are the best. Terrible dwarf!

 

aCis buffer v2 got what you say fixed, and even more (edited on 364). Skill name and description, paging system, data on XML + ordered by XML loading and whole thing reorganized (cut multiple panels) to be easier to use. As a Java scheme buffer, I'm sorry to say but yeah it's the best out there (compact, performant, code/features ratio). At least it's a very good base for whatever custom edition you would eventually need.

 

I never said I'm the best (or quote me and win 50€), I only say gameplay-wise, your idea sucks. The idea to split ONE functionality into multiple NPCs sucks (I gave you the idea with CastleChamberlain, you didn't get it). You can agree or disagree, but I think most players would agree.

 

You can disagree with retail player buffer as you can disagree with scheme buffer, the thing is you mixed the worst of both worlds. It's a basic buffer splitted into multiple and renamed "buff station" just to say there is a lot of NPCs.

 

If you give one buff per NPC, you can even rename it "buff town".

 

I personally listen the criticisms of admin servers (mostly Sahar, cause he whines a lot) and try to improve stuff when I can.

Edited by Tryskell
Posted

aCis buffer v2 got what you say fixed, and even more (edited on 364). Skill name and description, paging system, data on XML + ordered by XML loading and whole thing reorganized (cut multiple panels) to be easier to use. As a Java scheme buffer, I'm sorry to say but yeah it's the best out there (compact, performant, code/features ratio). At least it's a very good base for whatever custom edition you would eventually need.

 

I never said I'm the best (or quote me and win 50€), I only say gameplay-wise, your idea sucks. The idea to split ONE functionality into multiple NPCs sucks (I gave you the idea with CastleChamberlain, you didn't get it). You can agree or disagree, but I think most players would agree.

 

You can disagree with retail player buffer as you can disagree with scheme buffer, the thing is you mixed the worst of both worlds. It's a basic buffer splitted into multiple and renamed "buff station" just to say there is a lot of NPCs.

 

If you give one buff per NPC, you can even rename it "buff town".

 

I personally listen the criticisms of admin servers (mostly Sahar, cause he whines a lot) and try to improve stuff when I can.

First I told you the Buffer from rev350 sucks hard, the new Buffer is not bad for a server (like all around) who prefere a scheme buffer- nothing for my server.

 

Secound you post in every topic anything what is better, like a smart aleck. Be a helpful guy dude and you will get more in your business! Not answer ppl when he not a customer is for me just conceited...

My server will have not that much NPCs trust me anyway that is not a problem in my eyes.

 

Im not sure how much L2 gameplay experience you have, but much code writer and project maker are know not much from gameplay styles. So all in one, I respect your opinion about my Buffstation but let it now enought to do my idea down.

Have a nice weekend!

Posted

You know argument is won when people attacks you on random subjects.

I never attack you, made just counter-arguments like a discussion.

Dwarf of smart aleck.

Posted (edited)

buffstation = buffer needlesly split in 6 npcs?

 

 

Secound you post in every topic anything what is better, like a smart aleck. Be a helpful guy dude and you will get more in your business!
 

This makes no sense btw, suggesting what is better = helping so you make no point 

Edited by An4rchy
Posted

I would agree that there are many chars in order for u to get a buff but i like how they show the animation on them .Never seen it b4.well done.

Posted

I would agree that there are many chars in order for u to get a buff but i like how they show the animation on them .Never seen it b4.well done.

Thanks! Yes there are some chars/npcs but I dont see there any problem, for me it looks better then one npc which looks like seven signs npc for example, in my eyes buffs can do only chars.

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

    • Verify if following is supposed to be the way to handle movement npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(point.getX(), point.getY(), point.getZ())); For me, it's not enough. And if it's the case, whole AI system is probably buggy.
    • 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.
  • Topics

×
×
  • Create New...