Jump to content
  • 0

Question About Project


Question

Posted

Hello. I'm not profesional developer, but i know little java,c++ and i want start do somethink for my own experience, and i have questions.

 

1. Better for me is start with aCis or any l2off pack?

2. To run test srv to max 20ppl with full geodata OVH VPS 2GB Ram is enough, or i must go to 4GB ?

3. To make svn Assembla free plaan (1Gb) is enough or i must go to Xp-dev.com pro small 2gb?

4. Where i can buy best machine with ddos protect to live srv?

5. Best Anti bot software?

 

 

Recommended Posts

  • 0
Posted (edited)

Hello. I'm not profesional developer, but i know little java,c++ and i want start do somethink for my own experience, and i have questions.

 

1. Better for me is start with aCis or any l2off pack?

2. To run test srv to max 20ppl with full geodata OVH VPS 2GB Ram is enough, or i must go to 4GB ?

3. To make svn Assembla free plaan (1Gb) is enough or i must go to Xp-dev.com pro small 2gb?

4. Where i can buy best machine with ddos protect to live srv?

5. Best Anti bot software?

1. Don't even consider l2j if you want Lineage II gameplay.

2. Geo size directly depends on the chronicle (how many regions in total and how many objects/obstacles are there [comparing to superflat ocean regions]). 2GB is a little low, even for l2j. Neither 2 nor 4 GB will be enough for GF-based l2off (even if it is "extended"/downgraded to IL). 4 GB might be enough for C4-based l2off, considering you set a small amount of IO buffers in config.

3. 1GB is enough for everything.

4. SoftLayer without any competition. (You'd be looking for "bare metal" type)

5. No such thing.

Edited by _dev_
  • 0
Posted

Thx for fast reply, btw. best l2off pack in your opinion?>

There's only one OFF pack provider.

 

If you mean extenders, idk. All of them are primarily about custom, non-Lineage II features.

Since most leaks were from PTS or equivalent servers, so there are exploits, both in AI and general (e.g. packet handling), so I suggest just to check their public changelogs to see how much work was done on finding and fixing these. In particular, leaked C1 AI (any leak, so CN, EN, TW) has a lot of exploits, ranging from free adena & XP to the ability to shut down the server (or at least L2NPC).

 

And don't forget: any exploit that exists in the current official servers (e.g. lottery infinite adena (fixed recently), free teleports, permanent invisibility @ CoC/Oly), surely exists in these outdated versions.

  • 0
Posted (edited)

It has to do with Gracia, if you know what I mean :D

 

Also, I suggest having harp + warrior's - drum, since 1st CoC starts in a way that will require either waiting it out at the NPC (risky if there's some server-side delays that might have affected scheduling), or some quick reflexes to re-rotate view and jump in during the last 10 (more like 7) seconds before you are ported to the arena.

 

By the way, after the Oly/CoC match (you will have to wait until the time expires), you will not be ported back. That is, you will be ported out of instance, but to the same location where you are. That's how you can permanently enter cleft, SSQ, Oly arenas. If you smuggle a Wynn in, you can later summon other characters there. All these arenas are PvP zones, so no flagging or XP loss on death.

Edited by _dev_
  • 0
Posted (edited)

If you want to build your own gameplay, L2J is way better. If you want retail behavior, use L2OFF. L2J also uses far lesser ressources, and isn't stucked to windows / SQLserver.

 

About aCis, if you manage to fix or find issues, you can report both on forums, and make the project moves a little more. With geo on, you would prefer 4g more than 2g.

 

aCis is a permanent WIP.

 

If you got only 20 ppl, you maybe wouldn't need specially anticheat/antibot, cause it's easy to review inventories/behaviors. But that's up to you. You got all derivated LameGuard children for packets exploit, about antibot I don't know (SmartGuard ?). And about DDoS, Sahar (L2OVC) moved from OVH to HyperFilter (but it's quite expensive).

 

About Assembla / XP-dev, generic offer is enough.

Edited by Tryskell
  • 0
Posted (edited)

20ppl i mean on test srv, my friends. But on live srv if i try to open it i have more players ;p I think L2j like as you say is more "customizable", mean i can do what i need if i have have enough experience.

Edited by Selim
  • 0
Posted

20ppl i mean on test srv, my friends. But on live srv if i try to open it i have more players ;p I think L2j like as you say is more "customizable", mean i can do what i need if i have have enough experience.

With l2j you have the source of a generic MMO that can be played via the l2 client + a datapack that makes most of the client-side assets available. So obviously, if you don't really need the "ground rules" from L2, and aim for custom (or at least customized) gameplay, then l2j (full source available) will be much easier to handle + the lower resource usage is always nice.

  • 0
Posted

With l2j you have the source of a generic MMO that can be played via the l2 client + a datapack that makes most of the client-side assets available. So obviously, if you don't really need the "ground rules" from L2, and aim for custom (or at least customized) gameplay, then l2j (full source available) will be much easier to handle + the lower resource usage is always nice.

Ok I've clearly read to much of those ground rules.

 

Could you please elaborate ? I want those shit fixed.

  • 0
Posted

There is not much elaborate on. You got available fully working server written in java and you can modify any piece of code as u like.

This is correct. The point being that if you don't claim it's a Lineage II server, there's really nothing much to complain about.

 

There's just too much to write about, and trust me, l2j players have learned not to care that much, even though it's a matter of minutes after first login to determine if it's a Lineage II server or l2j. Obviously, if looking at packets, then it takes a few seconds max. You don't need to do precise testing or anything of the sort. They simply differ in everything.

  • 0
Posted

It's kinda the point of emulating, mimic mechanics.

 

Though I feel like every time you say that there is a _huge_ difference between both.

 

Packets aside where people got lazy, formula and stats, what fundamentals are broken to the core ?

  • 0
Posted

20ppl i mean on test srv, my friends. But on live srv if i try to open it i have more players ;p I think L2j like as you say is more "customizable", mean i can do what i need if i have have enough experience.

No to be mean im also noob but how exactly you gonna have more on online? Your knowledge is low, interlude no have many players, there are already 355.201.502 servers (only this week)

and im sure u dont have the proper experience to make a server or even the website to attract people.. lets no speak about ideas.. before post something i always search but you didnt even care

to read the previous post (everyday we see 50 post about pack suggestion from people who dont even know what localhost is).. soo... relax :P

  • 0
Posted (edited)

AI, both player and NPC is designed entirely differently, I'd say it's just two disconnected parallel universes. Perhaps on players it is less visible, since aside from certain abnormal states, the 1 intention + queued next intention (and whatever it has evolved to now) serves pretty well.

 

The worst part in l2j, is that the central, most important and fundamental Lineage II element IS WRONG. IT'S SO FUCKING WRONG IT ALONE CHANGES THE OUTCOME OF PVP (very noticeable in mass PvP).

 

Think about it: what could this element be? What, if removed, would render Lineage II dead the same moment? What, if removed, everyone could just disconnect, uninstall the client and never come back?

 

Basic attack execution.

 

 

 

I would say emulation is about reproducing what can be observed (in L2, plenty of leaks mean everything can be extensively playtested, if need be) and definitely not looking at something and saying "hey, I can do a better job out of this!" or "hmm, this will have to be modified to fit my private server" and then committing the implementation. No real testing, just "it looks roughly/kinda +-, if we also ignore some stuff".

 

From my testing on L2OFF, including on NA, you have to second guess every single feature/formula/design choice. Very few things look alike, and they are still not done exactly the way things work in Lineage II.

 

EDIT: which annoys me to no end. Why on earth someone didn't simply test something to the end, mark it as "done" and move on to the next feature? Did I mention that the respawn/SoE location selection algorithm is wrong?

Did I mention that shout and trade chats, which existed for more than 10 years now, ARE FUCKING WRONG?!!

 

Showing l2j to me is like jumping in front of a bull dressed up all red. There's nothing salvageable from L2J, Lineage II-wise.

Edited by _dev_
Guest
This topic is now closed to further replies.


  • Posts

    • what pack you use  send me on discord for it
    • package custom.events.RandomZoneEvent; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.ScheduledFuture; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.time.TimeUtil; import org.l2jmobius.commons.util.IXmlReader; import org.l2jmobius.gameserver.managers.ZoneManager; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.quest.Event; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.model.zone.type.RandomZone; import org.l2jmobius.gameserver.util.Broadcast; /** * Random Zone Event - Activates one random PvP zone temporarily. No modifica la clase de la zona: usa flags PvP en runtime. * @author Juan */ public class RandomZoneEvent extends Event { private static final String CONFIG_FILE = "data/scripts/custom/events/RandomZoneEvent/config.xml"; private static int EVENT_DURATION_MINUTES = 15; private static boolean _isActive = false; private ScheduledFuture<?> _eventTask = null; private final List<ZoneType> _availableZones = new ArrayList<>(); private ZoneType _activeZone = null; public RandomZoneEvent() { loadConfig(); loadZones(); registerZoneListeners(); } /** * Registra listeners a TODAS LAS ZONAS random */ private void registerZoneListeners() { for (ZoneType zone : _availableZones) { addEnterZoneId(zone.getId()); addExitZoneId(zone.getId()); LOGGER.info("[RandomZoneEvent] Registered listener for zone: " + zone.getName()); } } private void loadConfig() { new IXmlReader() { @Override public void load() { parseDatapackFile(CONFIG_FILE); } @Override public void parseDocument(Document doc, File file) { forEach(doc, "event", eventNode -> { final StatSet att = new StatSet(parseAttributes(eventNode)); final String name = att.getString("name"); for (Node node = eventNode.getFirstChild(); node != null; node = node.getNextSibling()) { if ("schedule".equals(node.getNodeName())) { final StatSet attributes = new StatSet(parseAttributes(node)); final String pattern = attributes.getString("pattern"); final SchedulingPattern schedulingPattern = new SchedulingPattern(pattern); final StatSet params = new StatSet(); params.set("Name", name); params.set("SchedulingPattern", pattern); final long delay = schedulingPattern.getDelayToNextFromNow(); getTimers().addTimer("Schedule_" + name, params, delay + 5000, null, null); LOGGER.info("[RandomZoneEvent] Event " + name + " scheduled at " + TimeUtil.getDateTimeString(System.currentTimeMillis() + delay)); } } }); } }.load(); } private void loadZones() { for (ZoneType zone : ZoneManager.getInstance().getAllZones(RandomZone.class)) { if ((zone.getName() != null) && zone.getName().toLowerCase().startsWith("random_zone")) { _availableZones.add(zone); LOGGER.info("[RandomZoneEvent] Loaded zone: " + zone.getName() + " (id=" + zone.getId() + ")"); } } LOGGER.info("[RandomZoneEvent] Total random zones loaded: " + _availableZones.size()); } @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { if (event.startsWith("Schedule_")) { eventStart(null); final SchedulingPattern schedulingPattern = new SchedulingPattern(params.getString("SchedulingPattern")); final long delay = schedulingPattern.getDelayToNextFromNow(); getTimers().addTimer(event, params, delay + 5000, null, null); LOGGER.info("[RandomZoneEvent] Rescheduled for " + TimeUtil.getDateTimeString(System.currentTimeMillis() + delay)); } } @Override public boolean eventStart(Player eventMaker) { if (_isActive) { if (eventMaker != null) { eventMaker.sendMessage("RandomZoneEvent already active."); } return false; } if (_availableZones.isEmpty()) { Broadcast.toAllOnlinePlayers("[RandomZoneEvent] No zones configured."); return false; } _isActive = true; Broadcast.toAllOnlinePlayers("⚔️ Random Zone Event has started!"); _eventTask = ThreadPool.schedule(this::activateRandomZone, 5_000); return true; } private void activateRandomZone() { _activeZone = _availableZones.get(new Random().nextInt(_availableZones.size())); _activeZone.setEnabled(true); Broadcast.toAllOnlinePlayers("🔥 Random Zone Event: " + _activeZone.getName() + " is now PvP for " + EVENT_DURATION_MINUTES + " minutes!"); _eventTask = ThreadPool.schedule(this::eventStop, EVENT_DURATION_MINUTES * 60 * 1000L); } @Override public boolean eventStop() { if (!_isActive) { return false; } _isActive = false; if (_eventTask != null) { _eventTask.cancel(true); _eventTask = null; } if (_activeZone != null) { _activeZone.setEnabled(false); Broadcast.toAllOnlinePlayers("🏁 Random Zone Event ended. " + _activeZone.getName() + " is back to normal."); _activeZone = null; } else { Broadcast.toAllOnlinePlayers("🏁 Random Zone Event ended."); } return true; } @Override public void onEnterZone(Creature creature, ZoneType zone) { if (!_isActive || (_activeZone == null)) { return; } if ((zone == _activeZone) && creature.isPlayable()) { creature.setInsideZone(ZoneId.PVP, true); if (creature.isPlayer()) { creature.sendMessage("Esta zona está en modo PvP temporalmente."); } } } @Override public void onExitZone(Creature creature, ZoneType zone) { if (!_isActive || (_activeZone == null)) { return; } if ((zone == _activeZone) && creature.isPlayable()) { creature.setInsideZone(ZoneId.PVP, false); if (creature.isPlayer()) { creature.sendMessage("Abandonaste la zona PvP temporal."); } } } @Override public boolean eventBypass(Player player, String bypass) { return true; } @Override public String onEvent(String event, Npc npc, Player player) { return super.onEvent(event, npc, player); } @Override public String onFirstTalk(Npc npc, Player player) { return null; } public static void main(String[] args) { new RandomZoneEvent(); } } i have this but its not working
    • ZonePvPSpawnBossRadio=0 ZonePvPSpawnBossBarakiel=0 at the Customs.ini in L2Server folder. Im prety sure this is it because i had the same problem with you in cruma 1 floor for example and i couldn't fix it but i fixed it finally by changing these 2 lines
    • Siege Reward Start PM Msg Rework Config root BossDieAnnounce and BossDieSound in the L24Team.properties and Config.java files for global raid boss death notifications and sounds. Adds a new reward_list table to the DB.sql file to track castle rewards. Improves character creation logic for thread safety and validation. Adds extensive state checks to the RequestEnchantItem method to prevent enchantments during inappropriate player states. Fixed auto-attack animation bug (there was no attack animation, only damage animation) Clean Code Other fixes I forgot to list! Java 14 Fixed issue where deleting a character would prevent it from leaving the screen or being removed, or even after a delete CD (it would only exit when re-logging in or creating a new character). Added Premium System from the other C2 project (Needs testing and improvement). Added the "Improved" Community Board (incomplete).
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock