Recent Posts

Pages: 1 ... 8 9 [10]
Announcements / aCis got a Discord server !
« Last post by Tryskell on February 20, 2017, 10:32:50 PM »
We gonna test the implementation of a Discord server for aCis project, since RHDS suggested it.

Discord is a mix between Teamspeak and Skype, reachable from generic application, web and phones. It can be used for fast chat, getting fast answers, speaking about project, etc. The use is, for now, experimental.

If you got suggestions, notably as channels, consider to feed the initial topic. If the system isn't used, the server will be disbanded (let's give it 3 to 6 months).

Download Discord here :
aCis Discord server (permanent link) :

Discord isn't designed for bugs report, so consider to use FORUMS to REPORT BUGS. Ty in advance.
Announcements / Re: Last aCis updates
« Last post by Tryskell on February 19, 2017, 01:21:23 AM »
Changeset 367 (668)

Reorganization ! You will hate me.

Edit all instance types.

All instances types are shortcuted as following : L2PetInstance > Pet (remove "L2" and "Instance" from naming convention, to shortcut checks and writing style).
Mother classes simply lose the "L2" prefix (L2Attackable, L2Character, L2Playable,...).

The previous rule doesn't apply exactly on following cases :

   - L2BufferInstance > SchemeBuffer (fits better with the role).
   - L2PcInstance > Player (I guess Pc stands for 'player character', so make it more intuitive).
   - L2SummonInstance > Servitor (to avoid confusion between L2Summon and L2SummonInstance ; the first being mother class of all summons and second being summoners servitors).
   - L2XMassTreeInstance > ChristmasTree (because we aren't #1337 #YOLO #Swag #doge).
   - L2WarehouseInstance > WarehouseKeeper (conflict with Warehouse, part of Inventory).
   - L2CastleWarehouseInstance > CastleWarehouseKeeper (to fit with above).
   - L2CabaleBufferInstance > CabalBuffer (cabal in english, not cabale).
   - L2ArtefactInstance > HolyThing (L2OFF naming).
   - L2ObservationInstance > BroadcastingTower (more proper name).
   - L2NpcInstance > Folk (because those are considered as non attackable targets).
   - L2MutedNpcInstance > MutedFolk (because they are based on Folk).
   - L2FriendlyMobInstance > FriendlyMonster (Monster not Mob).
   - L2NpcWalkerInstance > Walker (drop of Npc).
   - L2TeleporterInstance > Gatekeeper (fits better with the role).
   - L2DoormenInstance > Doorman (not plural).
   - L2CastleDoormenInstance > CastleDoorman (not plural).
   - L2ClanHallDoormenInstance > ClanHallDoorman (not plural).
   - L2GoldenRamInstance > GoldenRamMercenary (more informative).
   - L2CastleTeleporterInstance > CastleGatekeeper.

   - All "Manager" ending NPC types are followed by "Npc" to avoid any conflict with instancemanager (ex : L2ClanHallManagerInstance > ClanHallManagerNpc), even if there isn't any conflict (just respect same rule everytime).
   - Rename StaticObject serverpacket to StaticObjectInfo (after all we got CharInfo, PetInfo, UserInfo,...), to avoid conflict with StaticObject instance type.

   - Fix //removecastle admincommand (owner was still listed).
   - Fix Christmas Trees (and cleanup the instance). Ty Azik for report.
   - Deletion of GNU headers. Reasons :
      - aCis uses its own licence.
      - There is more licence than actual code characters in 80% of classes (notably packets).
      - Faster search tool, lighweight-ier sources when distributed.
   - Edit of licence.htm with latest aCis ToA.
PS : Since it's a complete mess, I will share, exceptionally, the complete pack on rev 367. For people who already owns a server, may Elmoroden gods pity you. I'm the best troll ever.
Announcements / Re: aCis - How to get access.
« Last post by Tryskell on February 18, 2017, 05:37:03 PM »
ToA is refreshed to be shorter and cleaner.
Announcements / Re: Last aCis updates
« Last post by Tryskell on February 16, 2017, 08:01:45 PM »
Changeset 366 (664)

Castle, Siege part II, ZoneManager / zones, Clans, Misc

   - Rename _zone > _siegeZone (getter included).
   - Move zones attributions to entity creation (instead of getters).

Siege part II
   - Due to following ZoneManager and zones rework, we now support :
      - PKs are ported in the vicinity of second closest town (and not inside).
      - banished players are ported in the vicinity of the castle (and not on closest town).
   - Cleanup L2SiegeFlagInstance, it works even if clan parameter is broken.
   - Cleanup loadSiegeClan() uses, which were called on numerous useless places (called on startSiege(), approveSiegeDefenderClan(), removeSiegeClan(), startAutoTask()).
   - On castle siege end, if your clan is victorious versus former clan, you gain static 1K CRP instead of calculated amount based on former clan CRPs.
   - All CastleManager.getInstance().getCastle(player) used to only retrieve an ACTIVE siege are now replaced by CastleManager.getInstance().getSiege(player), as it is shorter and cleaner.
   - Drop SiegeClan layer. Siege flag is now registered on L2Clan.
   - Creation of SiegeSide enum. Store it under String format rather than int (similar to CabalType, SealType, etc).
   - CopyOnWriteArrayLists about attackers / defenders / pending defenders are replaced by a single ConcurrentHashMap (better performance and avoid heavy lists manipulations).
   - Creation of checkSide(L2Clan), checkSide(L2Clan, SiegeSide), checkSides(L2Clan, SiegeSide...) methods, which is now the center of sides checks (instead of getAttackerClan / getDefenderClan).
   - Drop the possiblity for a clan to hold numerous headquarters flags (it was producing a IOOBE when the first flag of the list was destroyed anyway).
   - L2Clan.isRegisteredOnSiege() method simply checks memory content rather than making a SQL query.
   - Fix following checks :
      - dissolve alliance now checks if ANY allied clans is registered on a active siege (before was only checking your clan status).
      - create alliance now checks if your clan is registered into an ACTIVE siege (avoid to stuck creation if you're castle lord).
      - join alliance now checks if the invited clan is registered as an opposite clan, on any active siege. The previous check checking both characters are on siege zone is dropped (pointless).
ZoneManager / zones
   - Little cleanup of ZoneManager (drop of getArena(L2PcInstance), getOlympiadStadium(L2PcInstance), checkId(int) and getClosestZone(L2Object, Class<T>) methods).
   - L2SiegeZone zones are now considered L2SpawnZone, and hold following L2OFF lists : other_restart_village_list && chao_restart_point_list. Drop the isGM() exception from banishForeigners. Zones shape match with retail values.
   - L2CastleZone zones now hold banish_point_list. chao_restart_point_list is moved to L2SiegeZone, but still hold owner_restart_point_list. We drop _castle variable, which is pointless. Zones shape match with retail values.
   - L2CastleTeleportZone cleanup (isOnline() check is wrong, it basically means a offline shop can stay here).
   - L2ZoneType _characterList is edited from CopyOnWriteArrayList to ConcurrentHashMap (performance boost). The class is cleaned up (javadocs, comments, organization).
   - ZoneManager _debugItems is edited from List to ConcurrentHashMap (performance boost).
   - L2DynamicZone is deleted (no purpose).
   - //zone_visual adena drop count reflects zone id (for an instant overview). Their step spawn is also cutted by 2.5 (from 20 to 50) to faster the generation process.

   - clans are registered into a ConcurrentHashMap to avoid ConcurrentException. Drop synchronized keywords. getClans() returns a Collection instead of array.
   - destroyClan() is reworked ; parameter is now a L2Clan, the clan is removed of ANY siege (before : only if you had a castle)
   - getClanAllies() returns a Collections.emptyList() if no alliance is found.
   - checkAllyJoinCondition is now static (as variables are setted up as parameters).
   - RequestRestartPoint packet is cleaned up, jail location is now static.
   - Drop ALT_GAME_FREE_TELEPORT config, as HTMs can't scale with that config (were still displaying adena cost).
   - Fix L2TeleportLocation isForNoble() item consumption, ty Heinsenberg.
   - Fix skillId 1402 enchantlevel, ty Anarchy.
   - Fix TownPet instance task. Ty TreasureHuman for report.
   - Fix the merchant NPE due to Castle rework.
   - Random cleanup
      - MapRegionTable.getTeleToLocation renamed getLocationToTeleport (english plz). Method is cleaned up, MDT location is now static.
      - FIXED revive option uses player.getPosition() rather than generating a new Location object based on x/y/z.
      - RequestAnswerJoinAlly packet is secured (transaction is correctly cleaned up).
PS : due to Sieges part II, sieges_clans is edited. I invite you to either drop the whole table and add the new one asking your players to register anew on sieges (castle owners are automatically registered), or you can query it to edit all int values to String values.
Announcements / Re: Forum Announcements
« Last post by Sido on February 13, 2017, 07:50:24 PM »
Maintenance period is over.
If you find anything not working as you expected please contact me >HERE<, >HERE<, >HERE<, or >HERE<.
Announcements / Re: Forum Announcements
« Last post by Sido on February 11, 2017, 05:53:12 AM »
Planned maintenance on the following days will be done so expect up and down periods.
Announcements / Re: Forum Announcements
« Last post by Sido on January 21, 2017, 09:08:24 AM »
Maintenance period is over.
Announcements / Re: Forum Announcements
« Last post by Sido on January 13, 2017, 11:42:33 PM »
Theme selection got restored for everyone as aCis v2.
Planned maintenance on the following days will be done so expect up and down periods.
Announcements / Re: Last aCis updates
« Last post by Tryskell on January 10, 2017, 12:05:23 AM »
Changeset 365 (652)

Dimensional Rift, AbstractGroup / Party / CommandChannel, Scheme Buffer, Misc

Dimensional Rift
   - cleaned up (delete _deadPlayers, unify writting style, delete single use methods).
   - Fix an issue with _isBossRoom not being fed.
   - L2 legacy website : "When the party changes (such as leaving or banning from party) in the Dimensional Rift, the party will be transported to the waiting room."
   - Remove all custom messages.
   - Fix a ConcurrentException on _revivedInWaitingRoom.
AbstractGroup / Party / CommandChannel
   - cleaning
      - enum generation, enforce types.
      - party leader reference is stored and not retrieved from .get(0) - avoid a rare IOOBE (probably occuring during leader transfer ?).
      - remove L2 prefix to Party and CommandChannel classes.
      - generate a package
      - Both Party and CommandChannel use at least the 2 initial parameters (leader / invited member type).
      - creation of AbstractGroup class, a layer shared between Party and CommandChannel.
   - Modify Party creation to be handled by RequestAnswerJoinParty instead of RequestJoinParty, which was one big exploit (party leader being considered positive to isInParty() for the whole duration of invite request - while there is no party yet created).
   - Fix "The party has dispersed" bug issue, generated if you let the invite run off (due to Party object being created and immediately deleted - main reason of the above rework), ty Marcatu.
   - Party requestor is now checked regarding pending request (he wasn't before, so you could request a trade and a party invite).
   - Strategy Guide item is now consumed on CommandChannel creation, and not simply checked. Drop getPledgeClass() check (plain wrong) and item check (handled by creation) on CommandChannel invitation.
   - Drop ALT_LEAVE_PARTY_LEADER config. Apply default party disband case to all scenarios.

Scheme Buffer
   - Available buffs are ordered as listed on XML. Ty Sahar.
   - Fix a NumberFormatException on schemes restore. Ty Sahar.

   - Fix a MysqlDataTruncation on punish_timer. Ty katara.
   - Fix TARGET_AREA_SUMMON skills type. Ty x-user.
   - Cleanup FishingSkill skillhandler, fix the penalty issue. Ty Ailierynn.
   - Introduce isUsingServerSideName / isUsingServerSideTitle to fix client/custom NPC names/titles.
   - Fix previous revision regarding AURA type skills registration on NPC templates. Ty Sahar.
   - Enforce "party size" (2/9 min/max) for Four Sepulcher and Festival of Darkness configs. Cleanup "beyond exotic" 1-man case Four Sepulcher.
   - Merchant mustn't have the option to trade Shadow Weapon coupons, only grand masters are. Refresh all Shadow Weapon related HTMs. Ty Anarchy for report.
   - Release transaction (requestor/onTransactionRequest) as fast as possible (before you were stucked in middle of a transaction on whatever returning check...). All cases are edited.
   - To keep an harmony, party duels are canceled if party is modified (added/removed member now cancels it, before only leader drop was leading to that scenario) - Dimensional Rift rule.
   - //party_info admincommand cleanup.
   - Cleanup Quest getPartyMembers / getPartyMembersState methods.
Guides / [GUIDE] Java keywords (public, protected, private, final, static)
« Last post by Tryskell on January 04, 2017, 10:42:28 PM »
A simple and basic Java lesson, keywords ! This topic can be fed or edited overtime.

PS : in this topic, an object is considered either a variable, a method, or a class.

Keywords meaning and main uses

It defines the visibility of the object. Public means it is reachable by any class, protected means there must have a link between classes, private means it's an internal object, usable only by this object (not reachable by children).

Main use : define and limit the scope of an object, which help you to understand faster the purpose of the object.

The object can't be re-allocated ; for a method, it means you can't override it, for a variable such as int it means you can't edit the value anymore, for a List/Map it means you can't dump the object, or replace the object by another (you still can .clear() the data from it or affect the data ; you simply can't DUMP the object HashMap or replace it by another new HashMap<>()).

Main use : mostly used as a security valve, as it tells you than the object can't be re-allocated. So you're SURE the object, once allocated, stays allocated (no null check needed, etc). In case of method, you are sure than children don't override it.

The object is shared amongst all generated objects, which avoid to generate one reference per clone.

Main use : correctly used for variable case, can seriously decrease RAM consumption of an object. In case of a method, it is generally used for "commons" task, where all parameters used by the method are given by method parameters and not based on class content.

Misc informations
  • You can use keywords on class, method or variable.
  • The order of keywords got no impact.
  • Only the static keyword, if correctly used, got an impact on performances. Other keywords are more about readability/safety.
  • enum is considered static by default, you don't need to define that keyword.
Pages: 1 ... 8 9 [10]