Jump to content

Bots prevention system, version 2.0!


Caparso

Recommended Posts

Bots prevention system, version 2.0!
authors: @Agent @Caparso
---
history of this project reaching back to 2015 and we are back in the business!
special credits goes to: @Tryskell @Rootware @Hasha @SweeTs
(each of them brought something to this project, in the present or in the past - we simply won't let it go)

 

how does it work?
prevention system was designed to put an end to unfair practices during farming process.
extermination of monsters triggers an event with an limited time in order to validate human being behaviour, player have to choose corresponding pattern to match the randomly generated image. smooth and easy to solve for the human eye, doesn't bother the players much - as simple as possible!

 

new version brings:

  • more improvements and safeguards against attempts to bypass validation process (we are still working to make it even better in the future).
  • visual changes supporting new behaviours and more user-friendly solutions, but is also better from an admin point of view (main concept remains the same and no client-side modifications are needed).
  • an eye on players involving summons/pets into farming process.
  • possible checks against supports. system counts party kills adjusting the counter based on the number and type of professions of the characters in the party, then triggers a verification process for selected classes of your choice (available variations: PP, SWS, BD, EE, SE, BP, WC, OL).
  • rewarding system awards player with a selected type of item for passing the validation process correctly (we want to make lineage world a better place, so the whole process give in-game event vibes).
  • visible countdown and additional safe period of time, giving the player some extra seconds to adapt to the situation.
  • opportunity to allow a second attempt, so player can try one more time in case of incorrect verification.
  • adaptation to acis' latest public branch (commit 401) - neat code, minimally violates existing source.
  • most features can be turned on/off via configuration files, it's a matter of how much control you want to have over farming areas - the decision is yours!

some screens:

https://i.postimg.cc/vBXMxT8R/event.gif
https://i.postimg.cc/VkPT111X/punishment.gif

 

code preview? check it out on pastebin.
patch: bots_prevention_system.patch
put necessary prevention folder to: datapack/data/html/mods/

 

Edited by Caparso
update resource links.
  • Like 1
  • Thanks 1
  • Upvote 1
Link to comment
Share on other sites

To detect players using Adrenaline, you can implement a system that monitors game activity and identifies patterns of behavior that are indicative of botting. To detect these patterns, you can implement algorithms that analyze player behavior and flag any instances that deviate significantly from what is considered normal. Additionally, you can also gather data on known botting software and their behavior patterns, and use this information to develop more sophisticated detection algorithms.

I'm not judging your share, just thinking out loud. 🙂

Edited by Trance
  • Upvote 1
Link to comment
Share on other sites

adrenaline's authors are smart and highly experienced, plus with a proper tools you can bypass almost everything. we spend a lot of time in order to make this system functional and user-friendly. there are way more better solutions to fight with bots, but most of the time it also a big deal for normal players and it hits 'em in the face somehow. in my opinion nowadays mmorpgs are semi-automatic where word semi is so important in this puzzle. we still want players to be a part of the game so they have to keep an eye on their bots while farming!

Link to comment
Share on other sites

my bad, forgot to include this in the patch.

patch in the head thread has been updated, but you may use this patch as well to insert missing changes.

 

- good eye, @andy1984!

Link to comment
Share on other sites

i all ready applied mine 😄 . but i wasn't sure if its needed! 

 

            //custom
            BotsPreventionManager.getInstance().cleanUp();
            LOGGER.info("Bots Prevention tasks has been stopped.");

 

 

Edited by andy1984
Link to comment
Share on other sites

On 2/11/2023 at 3:16 AM, Caparso said:

adrenaline's authors are smart and highly experienced, plus with a proper tools you can bypass almost everything. we spend a lot of time in order to make this system functional and user-friendly. there are way more better solutions to fight with bots, but most of the time it also a big deal for normal players and it hits 'em in the face somehow. in my opinion nowadays mmorpgs are semi-automatic where word semi is so important in this puzzle. we still want players to be a part of the game so they have to keep an eye on their bots while farming!


My reply is strictly referring to server side.

Link to comment
Share on other sites

  • 2 months later...

@Caparso for acis 382 does not have the distance2D method which can be used to replace it?

image.thumb.png.b2ca21698cdd0354ef355e905f4add24.png

Just now, jhonata123 said:

@Caparso for acis 382 does not have the distance2D method which can be used to replace it?

image.thumb.png.b2ca21698cdd0354ef355e905f4add24.png

 

Link to comment
Share on other sites

17 hours ago, jhonata123 said:

@Caparso for acis 382 does not have the distance2D method which can be used to replace it?

You can use with MathUtil.checkIfInRange instead of distance2D. 

Link to comment
Share on other sites

hey,

 

On 3/7/2020 at 4:08 PM, Tryskell said:

Changeset 389 (1660)

       - Rework Point2D / Location distance methods ; they are now called distance2D/distance3D and isIn2DRadius/isIn3DRadius for proper usage.

Link to comment
Share on other sites

1 hour ago, 'Baggos' said:

You can use with MathUtil.checkIfInRange instead of distance2D. 

 

1 hour ago, Caparso said:

hey,

 

 

thanks I ended up finding it here on acis 382.

 

if (player.isInsideRadius(member, 2000, false, false))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • Official Website @>> https://www.eventbrite.com/e/biopeak-male-enhancement-reviews-warning-important-information-no-one-will-tell-you-tickets-894184589177   Biopeak Male Enhancement:- Considering the mind-boggling interest in their products, the organization needed to confine the quantity of units ready to move. We considered what compelled this sugary treat to surprise the world, and we discussed whether it satisfied our grand assumptions,    https://www.facebook.com/BiopeakMaleEnhancementInUS/ https://www.facebook.com/Get.BiopeakMaleEnhancementUS/   https://trybiopeakme.clubeo.com/calendar/2024/04/29/biopeak-male-enhancement-reviews-the-disturbing-biopeak-supplements-truth https://trybiopeakme.clubeo.com/calendar/2024/04/28/biopeak-male-enhancement-reviews-warning-important-information-no-one-will-tell-you https://trybiopeakme.clubeo.com/calendar/2024/04/28/biopeak-male-enhancement-reviews-truth-exposed-2024-biopeak-supplements-usa-for-men https://medium.com/@BiopeakMaleEnhancementBuyNow/biopeak-male-enhancement-reviews-revitalize-your-sexual-biopeak-supplements-health-with-1b0dcc117608 https://medium.com/@BiopeakMaleEnhancementBuyNow/biopeak-male-enhancement-reviews-warning-usa-ca-important-information-no-one-will-tell-you-f375f53b3cd9 https://medium.com/@BiopeakMaleEnhancementBuyNow/biopeak-male-enhancement-reviews-truth-exposed-2024-is-biopeak-supplements-it-scam-or-real-9b8fc49be4c3 https://medium.com/@BiopeakMaleEnhancementBuyNow/be-informed-biopeak-male-enhancement-reviews-on-scam-alert-this-enhancement-for-male-female-2d49c8f9ec17   Nexalyn Norway Official Links   https://www.facebook.com/NexalynInNorway/ https://www.facebook.com/NexalynNorway/ https://nexalyn-norway.company.site/ https://nexalyn-norway.jimdosite.com/ https://nexalyn-norway-1.jimdosite.com/   https://infogram.com/nexalyn-norway-reviews-advarsel-viktig-informasjon-ingen-vil-fortelle-deg-1h0n25oyjvynz4p?live https://medium.com/@NexalynNorway/nexalyn-norway-reviews-truth-exposed-2024-nexalyn-tablet-iceland-for-men-ad3f06ce6c83 https://medium.com/@NexalynNorway/nexalyn-norway-reviews-2024-er-nexalyn-tablet-iceland-lovlig-eller-svindel-ac2a9a8506d3 https://medium.com/@NexalynNorway/nexalyn-norway-reviews-revitalisere-din-nexalyn-tablet-seksuelle-helse-med-a0d44852760c https://bonniedgrafh.clubeo.com/calendar/2024/04/26/nexalyn-norway-reviews-does-it-really-work https://bonniedgrafh.clubeo.com/calendar/2024/04/26/nexalyn-norway-reviews-revitalisere-din-nexalyn-tablet-seksuelle-helse-med https://bonniedgrafh.clubeo.com/calendar/2024/04/27/nexalyn-norway-reviews-advarsel-viktig-informasjon-ingen-vil-fortelle-deg https://bonniedgrafh.clubeo.com/calendar/2024/04/26/nexalyn-norway-reviews-testo-booster-pills-real-buyers-alert https://medium.com/@NexalynNorway/v%C3%A6r-informert-nexalyn-norway-reviews-om-svindelvarsel-denne-forbedringen-for-mannlig-og-kvinnelig-f52047570116
    • WELCOME TO THE BOXID MARKETPLACE THE BOXID is the best place to buy accounts in bulk. Also on THE BOXID there are any services for digital marketing and arbitrage! We offer cheap accounts and provide flexible prices, discounts and bonuses for loyal customers. If you want to make a bulk order, specify the quantity of items in the checkout form or contact our manager and ask for help with your bulk purchase. We sell social media at the most affordable price! https://theboxid.com/category/accounts/
    • Hello, I am adapting it to acis 401, and when I run it in the game it tells me: No rights defined for admin command 'admin_search'. Admin tried to use admin command 'admin_search', but has no access to use it.   Also try to adapt it in AdminAdmin.java with else in the last lines using it as admin_buscar (buscar = search in spanish) and I get the same error: No rights defined for admin command 'admin_buscar'. Admin tried to use admin command 'admin_search', but has no access to use it. I have the AdminSearch.java like this: package net.sf.l2j.gameserver.handler.admincommandhandlers; import java.util.Arrays; import java.util.List; import java.util.StringTokenizer; import net.sf.l2j.commons.lang.StringUtil; import net.sf.l2j.commons.math.MathUtil; import net.sf.l2j.gameserver.data.xml.ItemData; import net.sf.l2j.gameserver.handler.IAdminCommandHandler; import net.sf.l2j.gameserver.model.WorldObject; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.model.item.kind.Item; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; public class AdminSearch implements IAdminCommandHandler { private static final String[] ADMIN_COMMANDS = { "admin_search" }; private static final int PAGE_LIMIT = 15; @Override public void useAdminCommand(String command, Player activeChar) { if (command.startsWith("admin_search")) { StringTokenizer st = new StringTokenizer(command, " "); st.nextToken(); if (!st.hasMoreTokens()) { final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile("data/html/admin/search.htm"); html.replace("%items%", ""); html.replace("%pages%", ""); activeChar.sendPacket(html); } else { final String item = st.nextToken(); int page = 1; if (st.hasMoreTokens()) { try { page = Integer.parseInt(st.nextToken()); } catch (NumberFormatException e) { page = 1; } } results(activeChar, item, page); } } return; } private static void results(Player activeChar, String item, int page) { final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile("data/html/admin/search.htm"); //List<Item> items = new ArrayList<>();//no sirvio List<Object> items = Arrays.asList(ItemData.getInstance().getAllItems()); for (Object itemName : items) if (itemName != null) if (((WorldObject) itemName).getName().toLowerCase().contains(item.toLowerCase())) items.add(itemName); if (items.isEmpty()) { html.replace("%items%", "<tr><td>No items found with word " + item + ".</td></tr>"); html.replace("%pages%", ""); activeChar.sendPacket(html); return; } final int max = Math.min(100, MathUtil.countPagesNumber(items.size(), PAGE_LIMIT)); items = items.subList((page - 1) * PAGE_LIMIT, Math.min(page * PAGE_LIMIT, items.size())); final StringBuilder sb = new StringBuilder(); for (Object itemName : items) { String actualName = getFontedWord(item, ((WorldObject) itemName).getName()); StringUtil.append(sb, "<tr><td>", actualName, " (", ((Item) itemName).getItemId(), ")", "</td></tr>"); } html.replace("%items%", sb.toString()); sb.setLength(0); for (int i = 0; i < max; i++) { final int pagenr = i + 1; if (page == pagenr) StringUtil.append(sb, pagenr, "&nbsp;"); else StringUtil.append(sb, "<a action=\"bypass -h admin_search ", item, " ", pagenr, "\">", pagenr, "</a>&nbsp;"); } html.replace("%pages%", sb.toString()); activeChar.sendPacket(html); } private static String getFontedWord(String word, String tt) { int position = tt.toLowerCase().indexOf(word.toLowerCase()); StringBuilder str = new StringBuilder(tt); String font = "<FONT COLOR=\"LEVEL\">"; str.insert(position, font); str.insert(position + (font.length() + word.length()), "</FONT>"); return str.toString(); } @Override public String[] getAdminCommandList() { return ADMIN_COMMANDS; } } Can someone give me a hand and tell me what I'm doing wrong?  
    • Contact me: Disrcord : https://discord.gg/fJ5geYMu Skype: pparik2451 Email: golbergsoft@gmail.com You are welcome
    • Add Premium Account features. Add Weight Limit
  • Topics

×
×
  • Create New...