Jump to content


VIP Member
  • Content Count

  • Joined

  • Last visited

  • Days Won

  • Feedback


Tryskell last won the day on August 12

Tryskell had the most liked content!

Community Reputation

21 Excellent

About Tryskell

  • Rank
    Distinguished King
  • Birthday 11/15/1986

Contact Methods

  • Website URL

Profile Information

  • Current Mood
  • Gender
  • Country
  • Location
    In your kitchen eating cookies.
  • Interests
    Bitchslapping IL since 2010.

Recent Profile Visitors

4,835 profile views
  1. I try to thank any helper on my changesets (being reports or bug fixes) , it is just common respect. I simply await you to do the same, notably if you found the code useful and you share it. It got nothing to do with being called "pro coder" - since 8 years of L2J coding, I don't need any validation (moreover for a 5min fix). There are exactly 512 "ty" on aCis changesets. Finally, you should better post such thing here : https://maxcheaters.com/forum/165-adapted-customs/
  2. aCis changeset 376 is out ! :)

  3. Changeset 376 (990) PetitionManager, "Chaos time" system, Loot protection, Doors / Walls, Misc PetitionManager - Creation of the package model.petition to hold inner classes of PetitionManager. Move PetitionManager to data.manager. - HashMap > ConcurrentHashMap to avoid CMEs. - Generic cleanup on all those classes. "Chaos time" system. - RBs are affected by chaos time, for the following rule : 20% luck to change target every 1m (set on the same task than "return by teleport to spawn" behavior). - RBs minions got 33% luck to change target, tested every 1m (set on the same task than their RB to avoid pointless objects). - I didn't see specific/general rules for GrandBosses regarding chaos system. There isn't a single method call RandomizeAttackDesire() on those scripts. The behavior is entirely dropped. Scripts would be eventually edited to reflect this change. This little rework will fix those issues : - Divide between 6 to 10 the amount of target switch. - The random aspect to choose the next target is now really random. - Slight improvement, as no action is done if the same target is chosen. - The logic between all conditions is normally correctly handled. Loot protection - Improvement of logic behind the main damager dealer acquisition : - Main damage dealer isn't edited into ItemInstance.create anymore, it is now done way before to avoid to process it on every item creation. - "First command channel leader" as "master looter" is now also taken into consideration on custom config AUTO_LOOT. - setDropProtection is moved out of ItemInstance.create, into the single usage (Attackable#dropItem) to avoid pointless casting. - Drop the single occurence of doItemDrop(Creature), cleanup unused parameters for 2 other methods. - Fix the loot protection for RBs. Regular player rules apply on them. No party thing. Doors / Walls - Doors HPs are visible by anyone in sieges. Ty TigVecc for report. - Doors/walls are anew attackable by player skills upon a castle siege progress, but deal 0 damage (cosmetic edit). Ty TigVecc for report. - Missing CTRL (forced attack) behavior for Doors/Walls is added. Misc - Don't clear Lists on Harvest/Sweep while they are still processed, to avoid ConcurrentException - let onSpawn() handles the cleaning. - Implemented retail player spawn locations system. Ty vampir for the hint. - Desire intention can't be null anymore, to avoid NPEs (2 scenarios with _nextIntention). Ty Sahar. - Fix the Exception when players are riding Striders with GM Haste on and disconnect. Merge stopAllTimers() to the single-used location. Ty Sahar. - Add back the food task on //ride, since a simple //kill and //revive generate a food task, making it looks like an "issue" while it was a "GM feature". - Fix Wyvern mounted players, which got their attack speed set to 300 (static) and 150 if Wyvern is hungry. Fix indirectly the single Wyvern skill. - Addition of "Food for Wyvern" into the GM shop. - Fix Q027. Ty zarie. - Fix Q218 quest logic behind Talin pieces acquisition. Ty Nophaie for report. - Tweak calcMagicSuccess in order low level skills can affect targets (base calculated on a 30 levels difference). - Fix Blacksmith of Mammon - Unseal/Reseal. Ty zarie. - Ban/kick actions don't close the client anymore, only the logout action does it. Drop secondary logout() method. - Fix any Plando-like creature (throwing spears issue). - EffectTargetMe fix after previous Desire edit (any aggression skill). - Retail /clanpenalty implementation. Ty Caparso for report. - Fast fix for Summon PC / AV - Teleport (Portas, Flash of Splendor,...). - "Kailu Balu" Z spawn fix. - Few mini cleanups : - _isRaid is dropped from Creature. - Few lambdas use. - Timestamp class is moved out of Player class, to model.holder package.
  4. That was on an AMSTRAD CPC 6128, following the tutorial book. First exemple was a game where an avion was throwing bombs on buildings to avoid to crash on them, the second was an Arsene Lupin game where dogs were hunting you (and the first time it scared me). I was 10-12 years old. And the disk reader was broken, so I couldn't save my programs. That was a one-time use program... :P
  5. I know it's 3 lines and a 1min test for me, but you could AT LEAST provide credits, since you came with a question and left with a solution... Regarding custom addition you can simply pick L2J PcItemTemplate and add it raw. Nothing special to add. Not sure why you made a public topic for such thing.
  6. It's one of the fattest thing you can do, worst case scenario being magic cast. Remove MagicSkillUse usage on a 1k+ siege to get what I mean.
  7. If it's a skill effect, you have to either broadcast the effect from time to time (using MagicSkillUse), which is kinda fat, or you find a talented client side dude which can transform the skill effect to an abnormal effect and register it as an abnormal effect, which would be far easier to handle.
  8. You have to log following content : getActingPlayer() first, then if everything is fine (returns the object reference and not "null"), the acquired level : getActingPlayer().getServitorShareBonus(Stats.MAX_HP) It's only a guess since it's not my chronicle, but since you are under the process of creating the summon, I guess it's not yet created and you ask info about it, which is simply impossible. It could work if, let's say, you use template data from NPC template instead of SummonStat data (since SummonStat data isn't yet created when you ask about it...). Or at least move the content using getMaxHp() AFTER the summon creation (at least, AFTER SummonStat creation). A simple test / not retail fix is to remove the whole method (the whole thing you quoted), which will use automatically the "mother" method instead (the "super.getMaxHp()" part).
  9. What's your L2ServitorInstance#getMaxHp() (the whole method), and point also the line 377.
  10. Support the project using the latest version and not a leaked version. That would avoid that sort of topic. And if you're already a Customer, it's time to refresh your sources. Whatever people can say about what I commit, there are fixes on every, single, revision.
  11. activeChar.addSkill(s, false); "False" means the skill isn't stored, it is used to reward temporary skills - such as noblesse, hero, and mount skills. Set it to true to register it. Beware, you have to handle that aspect.
  12. To remove clans halls you have to dig here and there to remove all associated content -like castle system. It would be about zones, sql and hardcoded stuff. Regarding your other ask, the stuff is hardcoded in AuctionManager#ITEM_INIT_DATA
  13. My politic is to avoid null when I can, getKnownType / getKnownTypeInRadius never show null. The list is at best a static List or a new ArrayList, but in the end there is a List, so any action on this List is ok. An iteration on it, without any check, is fully ok. The idea is more about if a Fake player is supposed to be a Player or if there is a specific instance for it (ake, if it's a FakePlayer, you have to check this instance type). You got a specific admin command to check your current knownlist and associated types around you, //knownlist, for that purpose.
  14. It matters, depending which sort of GC you are using (and JDK version) ; classic GC generates a "STW" effect, which basically translates to a freeze impacting your whole server. That freeze is a real burden, since it stops all actions, everytime the GC is running. It can be beaten using another type of GC (for Java8, the most successful - for me - is CMS, G1GC being experimental). Since Java9, G1GC is now the actual GC, and has been improved. So if you're on a Java9 project, you won't know the STW effect. How to minimize frequency of GC calls ? The easiest is to avoid to generate new objects - either by reusing existing ones (via a pool, which recycles old objects to give them a new life) or to avoid to regenerate ones when the output can/should found over and over (via a cache). Also, the accumulation of good practices (use int and avoid Integer, correctly handle for/loop content, lazy initialization, String manipulation) avoid to use expensive operations/variables, which save you objects in the end. Ofc, it has to reclaim all the "dynamic" memory at a point (a lot of variables/classes are static and are never unloaded - for example all cached data basically, like cached xml/sql - and it's perfectly normal). If not, it means it will simply store more and more... Which means you got a memory leak, because you are physically limited with memory (and JVM size). Such scenario generally happens when at least one link to the object to delete is kept - meaning the object isn't collectable. It is always "ok" to minimize the GC calls, since it uses ressources of your hardware to complete it. All in one, you have to go through GC, a time or another. It's normal. The point is to avoid to get abusive amount of GC calls.