aCis


Beginning of the cycle 380-389. Current focus : exploit fixes, scripts ending. Changeset 380 (1133) is up !

Recent Posts

1
Announcements / Re: Last aCis updates
« Last post by Tryskell on Yesterday at 04:20:09 PM »
Changeset 380 (1133)

RaidBossManager rework, Admincommands, DayNightSpawnManager rework, Scripts, Cleanup, Bugfixes


RaidBossManager rework
   - Regular cleanup (CLogger, try-with-ressources, stringified queries,...).
   - Edit tasks to not be canceled, probably fixing InterruptedException on raid boss death.
   - Tweak raid boss death query in order to only update it, and not all raid bosses.
   - Fix the raid boss loaded HPs upon server restart.
   
Admincommands
   - Revert //setinvul (setIsInvul true), rename it //invul and move it on AdminEffects.
   - Add //undying, which takes back the current //setinvul behavior (setIsMortal false).
   - Add //buff <skillId skillLvl>. If no valid Creature target, use player itself. Can be used as buff/debuff.
   - Fix admincommands para_all / para (mobs were still ending current casting/attack).
   - Add admin_debug for the alt+G panel ("Information" button).
   
DayNightSpawnManager rework
   - Cleanup (divide by 3 the class).
   - Hellmann is moved out, to its own script. The day/night spawn is fixed.
   - Fix the issue where day/night spawns are only handled on next day/night change after server start.
   
Scripts
   - ON_CREATURE_SEE event type is added.
   - Fix Q023 : upon saying Innocentin you didn't read the book, the quest was freezed.
   - Q024_InhabitantsOfTheForestOfTheDead is added.
   - "ForestOfTheDead" script is added. In the end, it will gather all related AIs. Handle following for now :
      - Hellmann day/night spawn.
      - Cursed Village NPCs day spawns.
      - Q023 "Maid of Lidia" night spawn.
      - Q024 night Dorian check.
   - Add a missing QueenAnt onAttack condition regarding fire spells. Ty bowling4soup.
   - NPE fix for onKill. Also allow onKill to handle custom suicide behaviours (simply check if killer is npc).
   
Cleanup
   - Complete ChangeMoveType packet structure. Ty RooT.
   - Complete TeleportToLocation packet structure.
   - Rename Creature#teleToLocation for teleportTo.
   - Addition of instantTeleportTo method (used for short distance teleport, mostly skills). GetPlayer skillhandler is edited to use it.
   - Addition of WorldObject#refreshKnownlist() method (used only by instantTeleportTo).
   - Drop unused Player constructor.
   - Move all unrelated content (spoil, soul crystals, seed,...) from Attackable to Monster (1 Map, 2 Lists, few other variables : Guard / SiegeGuard don't need such).
   - Slight Henna rework, ty StinkyMadness.

Bugfixes
   - On teleport, the heading is now taken in consideration.
   - Fix NPE for detached Players upon //character_info use. Ty sahar.
   - Complete previous fix regarding auto-attack behavior which should stop once the target isn't autoattackable anymore.
   - Fix Q634 Dimensional Fragments drop amount/rate.
   - Anakazel rewards Soul Crystal leveling to all party members.
   - Fix a weapon equip task exploit. Ty Celestine for the detailed video.   
   - Fix ghost attacks upon stun/sleep/paralyzed/... effects. Notably visible on NPCs.
2
Announcements / UseItem exploit fix (duplicate items) - ALL L2J VERSIONS
« Last post by Tryskell on February 07, 2019, 02:10:59 AM »
https://www.youtube.com/watch?v=wvwudQvQwIE


The video was produced using my pack (or so state the server owner/developer), but L2J got the same issue. All non-customized L2J versions using WeaponEquipTask got this issue. Even if you patched other places to avoid to get multiple similar items with same objectId, this is the initial problem and the only fix you should apply.


For the goodness of L2J, I decided to post this fix for free.


Short version : Upon UseItem use, and if you're currently attacking, WeaponEquipTask is called to delay the time your weapon is wear.


Issue : There is no check upon task call. The item is equipped, no matter what happened between the call time, and the wear time (if you deleted, crystallized, dropped, put item elsewhere,...).


Fix : check upon task call if the item is still existing on inventory.


For L2J (consider to edit the called method - remove item parameter).


Code: [Select]
   /** Weapon Equip Task */
    private static class WeaponEquipTask implements Runnable
    {
        private final L2PcInstance activeChar;
       
        protected WeaponEquipTask(L2PcInstance character)
        {
            activeChar = character;
        }
       
        @Override
        public void run()
        {
            // Check if the item is still on inventory.
            final ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);
            if (item == null)
                return;
           
            // Equip or unEquip
            activeChar.useEquippableItem(item, false);
        }
    }


If you use aCis, here's the modified task found on UseItem (will be part of rev 380) :


Code: [Select]
			if (activeChar.isAttackingNow())
ThreadPool.schedule(() -> {
final ItemInstance itemToTest = activeChar.getInventory().getItemByObjectId(_objectId);
if(itemToTest == null)
return;

activeChar.useEquippableItem(itemToTest, false);
}, activeChar.getAttackEndTime() - System.currentTimeMillis());
else
activeChar.useEquippableItem(item, true);

Good luck everyone !  :clap:
3
Announcements / Re: Searching for laboratory monkeys !
« Last post by Tryskell on February 02, 2019, 11:40:42 PM »
Refreshed the topic !  :srsly:
4
Announcements / Re: Last aCis updates
« Last post by Tryskell on February 02, 2019, 09:32:34 AM »
Changeset 379 (1104)

Zaken, Four Sepulchers, Dimensional Rift, Cleanup, Bugfixes


Zaken
   - Addition of Zaken script. Ty Asmodeus for the initial work. Numerous cleanup and fixes have been done to fit exactly L2OFF script.

Four Sepulchers
   - Big cleanup (CLogger, Maps are reviewed, merged methods, try-with-ressources,...) with a complete events cycle rework.
   - Fix NPE issue and invalid weight penalty check on FourSepulchersManager.tryEntry (called by Q620_FourGoblets).
   - Drop the 4 duplicated managers spawns from spawnlist (already handled by the Java class).
   - Fix multiple bugs/exploits related to chests interaction (they now instantly disappear).
   - SepulcherNpc onActionShift behavior is added.
   - Add the regular message broadcast "The monsters have spawned!" for Hall Gatekeepers on door opening.
   - Monsters, upon mysterious chest opening, instantly spawn. There isn't 3,5s delay.
   - The petrification effect on statues is now instant upon statue spawn to avoid statues got time to move/get aggro. Statues are also set as noRndWalk.
   - SepulcherMonster class is dropped, a script named FourSepulchers handle all old behaviors (and even more). NPCs are re-allocated as Monster.
      - Victims are removed from FleeingNPCs script to be included directly on FourSepulchers script.
      - Archon of Halisha (the ones with 18xxx npcId) are removed from SpeakingNPCs script (not retail).
      - Victim behaviour is added (run and shout while being hit by a NPC).
   - Added retail time limit upon Mysterious Boxes opening (can't open anymore after the 49th minute), with the associated message broadcast.
   - Add HalishaChest instance : animation on spawn, don't attack, don't random walk anymore.
   - Delete remnant Chapel Keys from Players on zone oust.
   - Edit begin/end timer to fit with royal_rush_npc AI, aka : 50th min game end, 55th min game registration, 0th min game start. Shouts are made from 5th min to 45th.
   
Dimensional Rift
   - Regular cleanup on DimensionalRiftManager (IXmlReader, CLogger,...)
   - The room choice process is entirely revamped to avoid to use do/while loops which can potentially stuck up.
   - DimensionalRiftRoom is moved in its own file. A lot of cleanup here too (_roomMobs List is dropped, Location instead of int[]...).
   - Fix an issue where getFreeRooms considered boss room as valid empty room on initial start method (Rift was considered as 1 free cell to teleport in - while there was actually none).
   - teleToLocation override is moved from Creature to Player. Player also got a new teleToLocation(Location) method which simply call the super method and avoid the rift check (used only by Rift system).
   - Regular cleanup on DimensionalRift.
      - Store DimensionalRiftRoom instead of its id, which avoid to make a lot of get on DimensionalRiftManager rooms.
      - Timer / TimerTask are replaced for Future<?> and get use of ThreadPool.
      - CopyOnWriteArrayList > ConcurrentHashMap.newKeySet().
   
Cleanup
   - More Cloggers.
   - oustAllPlayers() returns the List of kicked Players.
   - Add scriptValue as part of npcinfo.htm.
   - GameServerTable is slightly refactored : renamed to GameServerManager, get use of CLogger and IXmlReader. servername.xml is renamed serverNames.xml.
   - PlaySound complete packet structure. Ty RooT.
   - Add IXmlReader addAttributes to feed an existing StatsSet. Few StatsSet cleanup. Ty Melron.
   - Npc#onActionShift npcinfo GM content is moved on sendNpcInfos.
   - L2AttackableAIScript#testCursesOnAttack method is added and used on every GrandBoss (bosses who haven't yet been reworked aren't affected - Core and Orfen). testCursesOnAggro is also added.
   - Quest / Scripting
      - onAttack behavior is edited to allow any Creature attacker to trigger it (and not only Playable).
      - onKill behavior is edited to allow any Creature killer to trigger it (and not only Playable). Indirectly fix a huge issue, where a NPC attacker would stuck victim onKill event.
      - Following methods return QuestState instead of Player, for easier management inside quests. Associated quests have been edited.
         - getPartyMembers(Player player, Npc npc, String var, String value).
         - getRandomPartyMember(Player player, Npc npc, String var, String value).
         - getRandomPartyMember(Player player, Npc npc, String value).
         - getPartyMembersState(Player player, Npc npc, byte state).
         - getRandomPartyMemberState(Player player, Npc npc, byte state).
      - Addition of Quest#addGameTimeNotify(). You can now easily add scripts behaviours based on ingame day time.
   - Add Creature#isInsideRadius(Location loc, int radius, boolean checkZ, boolean strictCheck).
   - Add Attackable#cleanAllHate() - which clean the hate, but keep all AggroInfos (to keep track of rewards).
   
Bugfixes
   - isBannedGameserverIP returns true if IP address can't be retrieved.
   - Fix the auto-attack behavior which should stop once the target isn't autoattackable anymore (include skills nextActionIsAttack behavior). Ty Kraker for fix.
   - Some crests related packets checks addition. Fix one potential client crash. Ty RooT.
   - Fix a title exploit adding a regex pattern for RequestGiveNickName. Drop isValidPlayerName.
   - Fix minions dissapearing after healing (ex : Ant Nurses)
   - MutedFolk onActionShift behavior is added.
   - Stop the current bow attack if the Player hasn't enough MP. Ty ForgeOfGods.
   - Fix the possibility to target things when incapacited.
   - Add OTHER_PARTY_IS_Broken check for duels.
   - Edit Attackable#returnHome(boolean) to use cleanAllHate() instead of _aggroList.clear(). Drop hasAI() and getMoveSpeed() checks (the first creates issues upon single player region teleport, the second is simply pointless).
   - AutoSpawnManager fix on AutoDespawner. Ty Denzel for fix.
   
PS : Four Sepulchers configs are all edited. Please refresh your events.properties.
PS : Regular teleToLocation(Location, int) should always be used. The only counter to this rule is teleported by rift itself (otherwise you are moved back to waiting room) or eventually custom skills which teleport you (rush, etc).
5
Crappy servers / Nuevo servidor Lineage 2 Aura Interlude
« Last post by cheewe on January 28, 2019, 04:34:04 PM »
Lineage 2 Aura Interlude

www.l2aura.es

Lanzamos la BETA del servidor, estara operativa hasta el dia 2 de marzo, puedes crear tu cuenta, y probar el servidor desde ahora mismo!

FECHA OFICIAL DE APERTURA: 2 DE MARZO 2019 A LAS 20:00 HORA ESPAÑOLA

RATES
EXP 2x
SP 2x
Adena 2x
Party EXP 1,5x
Party SP 1,5x
Drop 2x
Spoil 2x
Quest 2x
Raids 1x
Mascotas 2x
Si Eater 1x

ENCANTAMIENTOS
Encantamiento seguro +3
Encatamiento máximo +16

FUNCIONES
Quest de cambio de clase: Las quest hay que hacerlas todas, no se pueden comprar.
Tiendas Offline: Puedes dejar tu personaje vendiendo en modo offline.
Sistema Antibot: Captcha para prevencion de bots.
Auction House en Community: Venta en Community de hasta 5 items por jugador.
Evento: Champions Especiales: Todos los champions dropean un item valido para comerciar con el NPC de eventos.
Evento Trivia: Cada dos horas lanzamos evento trivia, con el cual podras conseguir un item valido para comerciar con el NPC de eventos
Nuevos eventos en produccion.
NPC Aghata: Encargada de eventos en todas las ciudades importantes.
FANTASY ISLAND (Para eventos acceso gratuito en todo momento)
UNDER GROUND COLISEUM (Para eventos acceso gratuito en todo momento)

-----------------------------------------------------------------------------------
Lineage 2 Aura Interlude

www.l2aura.es

We launched the BETA server, it will be operational until March 2, you can create your account, and test the server from now!


OFFICIAL OPENING DATE: MARCH 2, 2019 AT 20:00 SPANISH HOUR

RATES
EXP 2x
SP 2x
Adena 2x
Party EXP 1,5x
Party SP 1,5x
Drop 2x
Spoil 2x
Quest 2x
Raids 1x
Mascotas 2x
Si Eater 1x

ENCHANTS
Safe Enchant +3
Max Enchant +16

Quest of change of class: The quest must be done all, can not be bought.
Offline Stores: You can leave your character selling in offline mode.
Antibot System: Captcha for prevention of bots.
Auction House in Community: Community sale of up to 5 items per player.
Event: Special Champions: All champions drop a valid item to trade with the NPC of events.
Trivia Event: Every two hours we launch a trivia event, with which you can get a valid item to trade with the NPC of events
New events in production.
NPC Aghata: Event Manager in all major cities.
FANTASY ISLAND (For events free access at all times)
UNDER GROUND COLISEUM (For events, free access at all times)
6
Announcements / Re: Questions & Answers
« Last post by Marcatu on January 22, 2019, 05:53:05 PM »
Why you used NWSE block cells? Just change height for one cells line up to 100-200 higher and nearest cells add block in neccessary direction. In this case you create invisible wall, what can be deleted in future easerly.

I told you, what you know nothing about how geodata work.

Ok, thank you for the advice. Definetly you have more experience than me in Geodata. Thing is that i've done the say i showed you before, and it worked. I'll try your way and hope it will work. Thank you!
7
Announcements / Re: Questions & Answers
« Last post by Rootware on January 21, 2019, 05:08:00 PM »
Why you used NWSE block cells? Just change height for one cells line up to 100-200 higher and nearest cells add block in neccessary direction. In this case you create invisible wall, what can be deleted in future easerly.

I told you, what you know nothing about how geodata work.
8
Announcements / Re: Questions & Answers
« Last post by Marcatu on January 20, 2019, 10:10:06 PM »
Make a video from G3D Editor of your wall.

I don't think it is necessary to record the screen  :D i have attached a photo.
9
Announcements / Re: Questions & Answers
« Last post by Rootware on January 20, 2019, 05:02:12 PM »
Root, this is not the first time i did this. It should actually work, since i blocked the path on the direction i wanted in Geodata Block. It does not apply to the server.

Make a video from G3D Editor of your wall.
10
Announcements / Re: Questions & Answers
« Last post by Marcatu on January 20, 2019, 08:11:07 AM »
You need to learn how it work, first.
Root, this is not the first time i did this. It should actually work, since i blocked the path on the direction i wanted in Geodata Block. It does not apply to the server.