Jump to content

Tryskell

Legendary Member
  • Posts

    5,359
  • Credits

  • Joined

  • Last visited

  • Days Won

    62
  • Feedback

    0%

Everything posted by Tryskell

  1. Well, my answers are generally big (I'm known for that), and in verbal jousting, it's far easier to attack rather than to defend. Unaware ppl would read your answer and will simply conclude I'm not reachable, or even worst I answer if you pay - which is completely wrong. It's extremely easy to down a reputation, far harder to defend it. L2J community was always "cheesy", it's not new. L2J ecosystem got many ressources, being videos or guidelines, regarding basic stuff. The community is probably also far younger than other type of projects. Also it's extremely easy to launch a server. There is too many "developers" and not enough players those days. It's not a chance than anyone can make his own server. Other emulators community are way more friendly because there is far, far, far lesser competition. And there is far, far, far lesser competition in other emulators because they're probably harder to install/edit/got lower community. Too many fish in the same water puddle, if you know what I mean.
  2. If you see L2PcInstance on aCis, you shouldn't touch that with a stick. It can't be rev 400, it is before rev 367. https://acis.i-live.eu/index.php?topic=30.msg49015;topicseen#msg49015 Many cleanups were done on aCis cycle 36 (360-369) to standardize names and make it friendlier/clearer. About that particular case of model.actor.instance, you got the complete explanation of changes in the dedicated changeset. I made a lot of cleanup, which goes from classes to methods rename. Nowadays, those changes are listed under "Organization", in the changesets. That cleanup stabilized few years ago, and nowadays I got limited ideas of re-organization, meaning the pack structure will stay almost the same, now. If you check aCis Creature class (L2Character on other packs), you will see it is roughly 2 times shorter than other packs. It's another type of cleaning, splitting the class in more little, dedicated classes (in that exemple, the move, attack and cast logics were moved to dedicated classes). So, shortly said, I did numerous re-organizations, consisting to : give proper naming convention to standardize method/class naming. generate package to gather stuff (eg. the enums got their own package). split complex classes in less complex classes (and generate package related to it) Unfortunately, it means you have to adapt your customs if they were shared from another pack - which isn't a real problem, since anyway, 90% of shared diff patches aren't able to be applied directly. If your diff patch can be applied directly, it means (pick 1) : You were extremely lucky and the dude did the patch based on the exact same revision than you use (which is uncommon, moreover if the share is old) You use a dead pack - shortly said, no editions were made during a big amount of time on extremely common classes, such as Player/L2PcInstance. Edit : it got the old knownlist system too, which was deleted in rev 362 - so it's extremely old. In general, don't pick a pack from another source, you got no guarantee it's safe to be used (addition of keylogger/miner/virus/backdoors). In a general matter, don't pick anything coded by a BR/RU. BR are scam masters (I couldn't meet 1 correct BR in 12y of coding), RU got 0 accuracy and 0 code description (but everything will "work").
  3. Around 3k of my posts are done in MxC dev help section, fixing code and helping newbies. I'm probably in the top 3 biggest contributors in those sections, since ~2011 (without counting my pack and my work in general which you can find in other packs, btw). I continue to read dev help section on a weekly base, unfortunately there isn't any interesting posts to reply or they are locked down too fast - even if I had interesting things to write about it, it happened twice already). I can choose which ppl I want to help and not. My time is as precious as yours. One dude actually spammed me on my Discord asking why adding his custom doesn't work - he simply picked the diff file, named it .java and added it to sources with all "+" symbols. If you don't waste a minimum of time to understand the basics by yourself, it's not to me to teach you how to do so - and I will waste my time doing it, anyway. aCis discord is helpful, even if - and they maybe clone me "a little" on that part - they got cheeky if your question is stupid. About the "diff patch Java applyer dude", few people finally helped him and eventually one dude helped him helpdesking. I don't have that time and the will to do that type of help, on a worldwide level. I obviously prefer to spend my time watching shorts on Youtube, playing video games and working on my pack rather than replying to someone which is incapable of doing some CTRL+F work by himself. I'm accessible on my Discord channel or via PMs if your question isn't totally stupid and/or already answered (notably concerning infos about aCis, which are STICKIED IN GODAMN TOPICS). About premium<>peasant stuff, I'm sorry to say than I don't give special treatment. The "diff patch Java dude" is actually a premium, and I politely replied to him, yesterday, at 21h39 : Last, but not least, aCis is one of the most documented sources (and it takes actually a lot of time to properly document each method), and I try to make it friendly adding useful methods/classes. I personally always emphasized the fisherman/hungry man quote - aCis never used precompiled, never had customs (even better : I deleted most of them), never got that "all in one" policy simply because it attracts stupid people with no ideas, and by extension you, as a player, got shitty cloned servers ran by idiotics fools which should stay players. I'm proud (and extremely humble) to say than my community is, by far, the cleverest community (except few lost souls coming and returning back to the shadows) amongst L2J communities.
  4. Lucera is the only project (I'm aware of) matching that criteria, and if that behavior exists it means people actually pays for such. You basically request customers to stop being stupid, and well, it's actually the hard part of your request. It should be common sense in 2023 than a Java project should come with sources, if you don't you are basically scammed and participate to that scam effort aswell.
  5. Edit ItemsAutoDestroy#addItem method, simply enforce whatever timer you want. L2J already handles your case, eg. herbs naturally dissapear after a while.
  6. You only show half the movement, and without any //show move on. You probably do idiotic going back and forth, it's the only possibility to get such a desync actually.
  7. Hi, the only bug I know about which could generate unstability is boats system, I don't think any other system generates unstability. Boats got a rework branch based on latest, and was heavily delayed because one of my dudes was supposed to work on it and left it, multiple times. Another dude took the task. I let "a lot of stories" for drama queens - if you got something to report or share you can contribute and get rewarded for it, otherwise I or a member of my community will eventually find or do it if we got such a report. That remembers me that guy, alzwhite or whatever, which built a special hate towards aCis (or most probably, me). He is the sort of "story teller" than you should avoid to be, generally speaking. He just shadow talks, like, he found something massively wrong, but won't tell you anything about it - and eventually call you idiot or shit-talk you because you don't know what he talks about. That's not even a problem, actually. Such project generally got a low life expentancy, impact a low amount of ppl (not the ones I would aim or who interests me, anyway) and they basically promote my own pack in the process (without the need to speak myself RU/BR). The real sad part is in case some of their fixes are actually correct, they are simply put into the void and wasted. If the fixes are incorrect, at worst it could be used as a base for a more proper fix - that would save me some times for other things. I believe than open source in L2J never really worked (see what happens with L2J itself) since at least 2012 (aCis going freemium). Or maybe I misconcept "open source" : if the goal is to generate a lot of side projects and only few survive, then yes, it's open source and yes it's a successful model. In terms of cooperation, if most of those side projects were actually concerned by finishing a chronicle, they could. I believe people don't want it end. It's probably a mix of multiples things, ego being the main part of it (and yes, if you figure out what I say, I'm also part of the problem :)). Fortunately, I can count on a very good quality community, and even if people left (and I can't blame, on a 10y scale, some boys became men and actually grew kids - not me, but at least one of them ;)), some new heads replace them. My community can do it without the help of the side projects, but we would do it faster with their help. About arrogance and ego, I stopped to bother since few years already. If such project dies (and they generally do), well, karma did the job for me. I don't need to bother about it. It's just sad to see that wasted spent time.
  8. Hi, it looks lke you struggle with aCis registration on forums. I accepted all pending activations from forums. Project name is simply "aCis". About aCis, I'm back on AI. Inventory stuff seems to work pretty much fine and is part of master branch.
  9. Player/L2PcInstance class got normally a _isIn7sDungeon variable, you can test it over EnterWorld packet to teleport player to nearest town. On aCis it would be, over EnterWorld class : To note : you can also check competition time, seal ownership, etc. To note, bis repetita : if isIn7sDungeon() behavior doesn't work for you, you have to introduce a complete zoning system, encase each Catacomb into it and then make a Creature#isInsideZone check.
  10. As said Anarchy, it's client-sided and can't be controlled (from what I know about it and from what I understood of your request). In a custom use, getAggroList()#containsKey would be your solution if you want the check to be CURRENT, and attackedBy to be both PAST and CURRENT (even with complete loss of aggro).
  11. On a regular L2J, it's named EffectList / CharEffectList. Make a search over your project with "debuff" as keyword, you probably will find easily.
  12. Your character is obviously desync. If it happens on any cases, even simple ones, it's very likely something like a stopMove() is missing, or than the calculation part is flawed. With a debug concept based on ExServerPrimitive you can easily figure out if server is currently doing crap. About basic movement, no, it doesn't do that on aCis. Green dots show real desync based on what client expects. Desync stays low. Was attacking an elpy from great distance. https://imgbb.com/fCQBKKS On aCis, you can generate such desync if you frantically click on one direction and attack in another, but that's more a lack of locked movement state (during the 100ms updatePosition) rather than movement lacking itself. Movement still needs some love.
  13. On C1 patch notes : When a pet is recalled, the items from the pet's inventory are added to the owner's inventory. If the owner's inventory is full, the items are dropped and the owner has priority to pick them up for fifteen seconds. If the NPC or main server goes down, the pet retains the items in its inventory. There is nothing about an edition of that behavior in chronicles up to at least IL, but I know than on higher chronicles, they save the items as pet inventory (L2J H5 does it, at least), so probably the concept evolved meanwhile. Also, as I tested L2OFF IL based on GF (you can actually do it yourself on AdvExt PTS), it looks indeed than pet inventories are shared. There is a common pool of items which is kept alive when you unsummon your pet with items in, and resummon another pet.
  14. CastleManager.java:159 doesn't seem to be able to retrieve the Castle you try to pick. You probably manually deleted that castle.
  15. The initial topic is refreshed concerning Cookies (to be shorter and easier to understand) and Bounty / Bounty Hunter concept is added (was added on Discord since few years, but not on main topics). I'm currently working over items : lazy SQL saving (1min single task, every modification is kept in a list and addBatch/executeBatch and list is cleared) instead of 1 query per item edition, which will save probably 80-90% of SQL server activity. That task handles item add/update/deletion, pet deletion and augmentation add/deletion. InventoryUpdate packet will be automatically filled and sent, there is no more savage ItemList or IU packet stacking on each other. Wrong uses of InventoryUpdate are indirectly fixed. It's also optimized for stackable cases in very short spans (getting proper values if I macro 50 Player#addItem, without InventoryUpdate spam). ItemList is only used on Player login or if inventory must be displayed. AI is on hold state from my side, one of my dudes currently struggles with Frintezza script.
  16. Sorry, but I never did paid tasks for other people, I busy on my own pack since few years. I only help on those boards from time to time. About your first issue, you should check if something like an abortAttack / breakAttack() is called when you start to cast and remove it. It was probably added to hide another problem, so be aware you probably will generate another issue or even an unpatched exploit. About your second issue, if your "stuck over sleep" issue can be resolved by pressing esc on your keyboard, it's a missing ActionFailed packet to send during onEvtSleeping (and probably other types of onEvt like paralyzed, etc).
  17. You have to queue the Intention to cast a skill when you do another action. Not all actions trigger that effect, for exemple moving is broken by a skill cast, but pickup should be queued, attack > attack is also queued, etc. If Sunrise store 2 intentions (at least current and future, you can also have previous) on AbstractAI, that would be easy to fix. Otherwise it's a complete missing system and you have to rework most of AbstractAI and children classes to use that system (pickup, attack, cast,...). On aCis it is stored into AbstractAI up to rev 401 https://gitlab.com/Tryskell/acis_public/-/blob/master/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/ai/type/AbstractAI.java protected Intention _currentIntention = new Intention(); protected Intention _nextIntention = new Intention(); I suppose than, currently, you enforce to stop the attack/move/whatever by calling stop() in the begin of the cast process.
  18. Long time no see ! Rejoin fee deletion Since 21th October 2022, the "rejoin fee" concept has been deleted. The initial fee is still 100€, and you still have to pay monthly to get access. If you lose access and want access back, pay 10€ minimum. I reserve the right to refuse you access if you abuse the system. PTS is refreshed with feature/IU-update branch for a short time being ! This branch adds a unique way to refresh Pet and Player inventories, supposingly fixing any type of bad uses of InventoryUpdate packet, queuing changes and sending them after a short delay (333ms actually). Pet and Players also hold one unique packet per entity, avoiding the generation of thousands and thousands of packets. Finally, "lazy" uses of ItemList are dumped (crystallization and wherever places "complex" operations regarding inventory update was done and L2J decided to lazyfix it with a ItemList send), and ItemInstance doesn't hold anymore ItemState. All changes are automatically done and sent. Up to Sunday 12th Feb, reported issues regarding inventory management will reward you x2 more cookies (4-20 cookies max instead of regular 2-10 cookies), depending about issue severity. The branch will then be shortly commited into master branch. Triskl, when next rev plx man ? It's not because there is currently no "public" revision, there is no work done in background. We're currently at commit 2832, which is 162 commits above current release. For the changeset lovers (and I know there are), the next revision is currently 77 lines long (and obviously more with the introduction of InventoryUpdate rework). Happy candlemas !
  19. 1- You store a Future _spreeTask on the Player level (your impro variable should be named _impro, btw). 2 - You cancel it and relaunch it on every kill : if (_spreeTask != null) _spreeTask.cancel(false); _spreeTask = ThreadPool.schedule(() -> _impro = 0, 60000L); Basically, if you kill someone, it will cancel current task and reschedule it with a fresh timer. If you want to avoid to make one task per Player, you can also handled it using a Manager (similar to multiple other timed stuff : pvp, random animation timer, or even movement in default L2J...), where you register all Players on a 1sec task manager and test each of those every second.
  20. Hiho, correct me if I'm wrong, but I don't think regular L2J handles that scenario too. Part of latest L2J LoginServer : InetAddress bindAddress = null; if (!server().getHost().equals("*")) { try { bindAddress = InetAddress.getByName(server().getGameServerHost()); } catch (Exception ex) { LOG.warn("The Login Server bind address is invalid, using all avaliable IPs!", ex); } } try { _selectorThread.openServerSocket(bindAddress, server().getPort()); _selectorThread.start(); LOG.info("Login Server is now listening on {}:{}.", server().getHost(), server().getPort()); } catch (Exception ex) { LOG.error("Failed to open server socket!", ex); System.exit(1); } And there is no reason it worked before, since no edition is made on that level, and it is identical to what latest L2J LoginServer delivers. Basically, hostname is translated into IP on server (being ls or gs) startup and I don't know any task updating it. As Trance said, server should use DynDNS plugins. (Btw I'm sorry, but I can't quote or got any format tool for the message since few months already).
  21. Don't use FBIAgent's TvT, it is at least 10y old and since BRs (=Sarada) don't know how to code, they simply re-share with 0 added value (or bad written configs addition).
  22. You tried to summon a SummonCubic but couldn't initialize an instance of tha Npc because it requested "cubicLvl" integer value but didn't find it. Verify your data.
  23. 1 - Use a Map to store content, ppl can flood your server simply pushing one button (put command in macro and voila, ask your clan to do that). Db should be used only to load/save at start/stop, or eventually for important stuff (character/inventories). Tbh, characters got no reason to store that info it should be a specific table (or even better, PlayerMemo). 2 - Make a new Npc instance or, even better, a new script with onFirstTalk event.
  24. @Ugleethyn Setting the TeamType isn't enough, if you only do that it will be sent the same way for everyone. That's basically what does Duel. If you check shares, you will see isInSameParty check over CharInfo, which enforces conditional appearance depending if being part of the same Party or not. So sending the "same" packet generate different output, due to inner packet conditions.
×
×
  • Create New...