Jump to content

Recommended Posts

Posted

Did you fix changeset 143 as i told you ? :D

 

Yup, he did :D

 

fixed the drop protection, only party must be affected, not clan (ty Finito for report and "the ride" :D)

Posted

Rev 154 is out.

 

Changeset 154

 

Skill fixes && misc.

 

Misc

- builds.xml have been formated and cleaned. DP doesn't create a .zip anymore, nor try to update/clean it (faster compilation).

- .project is supposed to correctly "link" dp and core (you don't have to make manually the fix anymore). Ty Voqus.

- 2 items are now considered as quest items ("seductive whispers" and a "game of cards").

 

Skills

- Once sitted, you can only disable a toggle, not activate it anymore. Issues like using fakedeath during private shops weren't so cool... The initial feature (and bugs) has been introduced at revision 50.

- Slow reuse time is 7sec, not 2sec.

- Seal of Disease acts like a seal, not like a one man target && far-casting spell (Gracia behavior), ty Vonak.

- cancellation and such CANCEL skillType are now corrected. Formulas were linking to another skillType, CANCEL_DEBUFF, which isn't the good effect ;p. So from now, Mental Shield and such buffs should correctly add resistance to cancellation type skills. CANCEL skillType is now 100% effect success aswell. Ty Vonak and Sim for report.

- confusionVuln is now handled directly by derangementVuln. This property (confusionVuln) doesn't exist anymore.

 

You have to update skills XMLs.

Posted

Revision 155-161 add :

 

- retail magical critical rate formula (based on l2p work)

- corrected Confusion effects (mobs are killing themselves and can go to another mob).

- unified project organization (on 4 commits instead of 1, like any bad project)

- added 6 teleports "quests", all tested and corrected using L2off htms.

- Correction of MANADAM effects, which now support MDOT. Effect is really supposed to burn some initial mana then to do a MDOT.

- Fixes the teleport skill from Blade of Splendor (VoS), which had 2 skillType (o_o).

- Fixes attack button on pet betray mod.

- Bypass shield's check on Hydro Blast's use (2007 L2Guru topics)

- fix macro items use deleting the itemUse fP. Even put at 1, it was making it bugging.

 

Thanks to the growing faCebook community, aCis page got now a decent URL ^^. Ty to all followers ! You can find it clicking here. I know it's named L2aCis, but faCebook doesn't allow 4 letters ;o. Project is aCis, not L2JaCis, not L2aCis... Just aCis !

 

Special mention to Vonak, who made me open a section only for him (skills report) !

Posted

Ty Street, gl to L2Brick too :)

 


 

Current internal developement hotpoint, NPC skills reworked using L2off. Sry about quality, imageshack sux when it comes to slideshow.

 

Before : http://img215.imageshack.us/slideshow/webplayer.php?id=shot00080t.jpg

 

After : http://img7.imageshack.us/slideshow/webplayer.php?id=shot00066gn.jpg

 


 

The result is more or less +4k skills (24k skills -> 28k).

Posted

Ty Street, gl to L2Brick too :)

 


 

Current internal developement hotpoint, NPC skills reworked using L2off. Sry about quality, imageshack sux when it comes to slideshow.

 

Before : http://img215.imageshack.us/slideshow/webplayer.php?id=shot00080t.jpg

 

After : http://img7.imageshack.us/slideshow/webplayer.php?id=shot00066gn.jpg

 


 

The result is more or less +4k skills (24k skills -> 28k).

You have no dwarf in the ss....

Posted

I bump my stickied topic because 17792 views aren't enough (I want 22222) ! Rev 165.

 

XMLFactory, Formulas rework, baseStats deletion.

 

Ok, that does 3 days I didn't commit but there was a good reason (as always when I don't commit) ^_^". I was testing some experimental features, and some revert back. Some formulas have been corrected aswell, or "tweaked". Here's the list of changes :

 

baseStats

- reverted baseStats.xml to IL stuff. Why ? Values/tables are calculated on the fly from core (no use of external technology = less ram/cpu consumption), and are more accurate (no rounded values).

- saveVs from skills have been deleted, and replaced by core side formula (= less data from skill as all skillTypes use same stats, aka MEN or CON, to be calculated). Many XMLs are concerned.

 

XMLFactory

- That's EXPERIMENTAL feature. All XMLs are now loaded from a single instance. That means clean code (some XML refactor codes are cut per 1/3), and normally less objects created. The use is very simple aswell. From the moment, no problem has been discovered using it.

- armorsets' XML got a new structure (must be updated).

 

Formulas

- a big rework has been made on Formulas.java. All Func have been moved in the folder named "funcs". Old funcs have been moved on a new folder "basefuncs".

- many formulas (mainly magical) got now proper logs. You can see them activating "Developer" option in server.properties. I hope it will help you to find eventual issues.

- some formulas have been reworked from scrap:

- calcAtkBreak (renamed calcCastBreak) has been improved and the use is more simple/generic. Mobs casts aren't broken so often (depending of IA, goes to 10% to 30% of player rate).

- calcHitMiss uses retail infos (verified from l2guru 2007 forum post / L2p bravehost).

- calcMagicEffect has been tweaked (because effects weren't noticeable at all : 10% fail only on a red mob). Effect has been x2. I think the formula is still "too kind" with players, anyway.

- resistances are now directly applied instead of lolcalculated (understand than 20 resist = 20% now instead of 24%, etc).

Posted

Nice project im gonna test it as soon as you tell me how I can manage to connect an interlude gs to my freya ls. Any idea? Tried to modify the LoginServerThread of the il server already but without success somehow. :S

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