Jump to content

Recommended Posts

Posted

Gah.. Like all IL java based system the Tutorial System is not working correctly. No narration, no Newbie Guide windows and the Blue Gem is auto pickup (should not be). :(

 

For once can't at least one L2j based IL system have this basic feature working that has been part of the game since C1? I can't think of a single Interlude pack that has ever got this working. :)

 

Acis seems like a good system, been watching it but have not used it yet as I feel it is not ready.

Posted

Gah.. Like all IL java based system the Tutorial System is not working correctly. No narration, no Newbie Guide windows and the Blue Gem is auto pickup (should not be). :(

 

For once can't at least one L2j based IL system have this basic feature working that has been part of the game since C1? I can't think of a single Interlude pack that has ever got this working. :)

 

Acis seems like a good system, been watching it but have not used it yet as I feel it is not ready.

you could report all this on our forum, rather than playing smart around ;)

and to not make u continue a offtopic, i said "playing smart" thinking that the project didnt start the work "in that part" of the project. and no one said this project is finished.

so before saing "things not work" , that we all know some things not work, u can join our forum and report them. to be more easy found when tryskell will work on them.

Posted

Gah.. Like all IL java based system the Tutorial System is not working correctly. No narration, no Newbie Guide windows and the Blue Gem is auto pickup (should not be). :(

 

For once can't at least one L2j based IL system have this basic feature working that has been part of the game since C1? I can't think of a single Interlude pack that has ever got this working. :)

 

Acis seems like a good system, been watching it but have not used it yet as I feel it is not ready.

 

This is a minor issue for me right now, lol. From what I know of it, 3 packets, a couple of htms, and quest fix.

 

Don't expect all is corrected after 74 revisions and 3,5 months :). And another part, nothing constraint you to share missing parts of code.

 

But you're right, and I know the issue already.

 

Edit : rev 75 is out.

Posted

Well, he wants direct access to svn without I even know if he is good or not.

 

He is stubborn, I'm stubborn, but I got the lead so he has to follow rules. Basically he doesn't want to share diff patches, but to commit directly without I check.

 

So I still got no clue if he is good or no (well from what I saw for the moment, he is better than the common MxC lvl, no offense intended :P), and for the moment it's on a dead point on this subject :).

Posted

Any news about the new developer?

I heard that u was going to invite someone in ur project if he finish the tests ( what happen ? he failed ? )

this was a news "few posts talk" few weeks ago,

i even forgot about it =)

 

but nah, tryskell know better with his lol customs wannabe =) (u know what i talk about tryskell, just add config for it mofo)

Posted

Rev 76 is out

 

L2J sync 3384, pets, teleport issue corrected

 

L2J sync 3384

- "Improvements on CharStat, CharStatus, ObjectPosition, Knownlist initialization, thanks Erb"

- I won't bother saying it's useful.

- Debug (from what I tested...) the teleToLocation function, where players zones types weren't updated sometimes (only happened using teleToLocation, imagine you //recall a player who was in town and you're in pvp area, he was still considered as peace/town zone).

 

Pets

- isHungry() implementation, and "you can't mount hungry pets" condition;

- added death message "you got 20min to ress your poor little thing, hurry or emocry because you lose it";

- doRevive and doDie improvements (IA is active at revive, the feed bar isn't set to 10% when pet die, etc);

- when you're mounted, the pet collision height and width is taken instead of regular player's race collision.

- when hungry, the pet is walking, once feed, it's running anew.

 

Formulas / Misc

- deleted 2 commands (unride_wyvern and unride_strider), I thought even to remove //unride (they don't know /dismount ?), but I kept only for //ride/unride.

- reverted the getStdNPCCalculators() content (part of rev 62). Mobs were way too much overpowered.

- All "Stat" types have been refactored (PcStat, PetStat, CharStat, blablabla). Adds are numerous, like :

- seperated messages if you earn only XP, SP or both;

- drop of 2 configs, the speed when mounted is only linked to the pet template runspd, nothing more.

- added MAX_EVASION config.

- pet atkspd/multiplier is divided per 2 when hungry.

- L2WyvernManager refactor.

Posted

Rev 77 is out

 

RecipeController refactor, not a lot to say, and not a lot to load (-6mo ram on GS stats).

 

- .csv -> .xml

- All retail messages.

- cleaner code (with the craft custom shit removed, it removes like 20% of code).

 

I used a mix between Hellbound (for XML engine) and Freya for the code. The recipes.xml comes from Hellbound, minus the dynasty stuff. It's normally the same stats (to be honest I checked 10 random values to see if they fit and that fitted). If by any hazard values aren't the same (NCZoft's logic is sometimes strange), you're allowed to cry on forum.

 

I tested a private manufacture and self use aswell.

 

Ty for the 25 pages thread and the 10k views :).

 

Edit :

 

Rev 79 is out, btw.

Rev 80 adds 2 skills XMLs :o

Posted

Rev 81.

 

2 others XMLs, ty DarthVader? (but take care about element next time :D).

 

Rev 82.

 

Organizating containers type.

 

Nothing to care of for you, no rework atm.

Posted

Rev 84 is out

 

   Misc - GM Panel, commands, and stuff

 

   Admin Panel && commands

 

       Add of //camera

       Clean a couple of admincommands (deletion of old and Freya)

       Added AdminBuffs? (//getbuffs, //areacancel, //removereuse) handler.

       cleaned and improved the main panels, jukeBox, && a couple of others htms.

 

   Packets

 

       Added SkillCoolTime? packet. You can now see the correct reuse at relog/use of skills/change subclass.

       Added more arguments on SpecialCamera?.

 

   Misc

 

       Siege skills take in consideration the fact the player is/isn't a noble (advanced HQs skill)

       some Singleton.

Posted

Rev 85 is out, 86 already on fire

 

This is... SpartaCis !

 

Status refactor

 

   All status have been corrected, and 2 have been added (Folk and Attackable).

   Noblesse is fixed (only a visual bug left, but I wait next rev to correct)

 

Pets

 

   PetInfo packet refactor (many useful infos added, but reachable only in a next rev :D)

   karma/pvpflag stuff have been entirely dropped (it uses owner values)

 

Entire Death refactor (Ask that to Chuck Norris, he can't)

 

   isKilledAlready => isDead

   isFakeDead moved to L2PcInstance

   correct //res command (from what I tested), and add anti-exploits.

 

setCurrentHp refactor

 

   you can selfDoT using meditation now (tyrant toggle bug + meditation which break the meditation is corrected)

   when you're invul, selfDoT and selfHP consumption skills still damage you.

 

Misc

 

   NPCWalker cleaning

   killByDOT implementation (only one skill uses it)

   L2Character doAttack() method : your attack is canceled if your target enters in peace zone, can't attack with wyvern on melee)

   typos : isImobilised )> isImmobilized, and others

   corrected isHeroItem() method (any non droppable items (Manacle Penitent and such) were considered as hero items...)

   getEquipSlot -> getLocationSlot.

   doors can't be DoT anymore.

   L2Npc canInteract() method improved.

   Mobs can anew launch skills, but their animation is a little broken.

 

 

WARNING : I tested as much as I can, but it needs a shitload of tests in order to see if I didn't mess something. Changes are heavy, and touch general ingame behavior.

 

Part of rev 86

 

shot00014sy.jpg

Posted

Rev 87.

 

I believe I can fly + 1 xml

 

        * FlyToLocation? implementation.

        * core support for 5000-5099, ty DarthVader? for the good work on XML part.

 

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



  • 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