Szponiasty wrote:
Not that easy

Ofc assuming that it will be non-standarised solution. I've found few cool packets in epilogue client, to display messages/htmls in totally nonstandard windows, that none "textmode" bot is able to display in a way, that player could read and answer even simplest question
Very Easy to beat. Considering I wrote the anti-antibot script for l2.net for the servers L2relapse(pitiful attempt at an antibot [in 2 hours]) and I also wrote the non public anti-antibot for l2ownage (a bit harder to beat but not too complicated either, love rgb color values, by the way splitting the messages between system "CLIENT" messages and html was kinda silly).
The bot can intercept , parse, resend, emulate, decode, decrypt any packet that the server/client sends. And since what you speak involves data being sent and received, a packet is required to do so.
Here's a small excerpt from the l2ownage anti - 'ANTIBOT' and it works 99% of the time

This is not the finished script in full, I didn't release it on l2.net forums for reasons I will not discuss.
Code: Select all
//Yellow = (255,255,0) 1DISTANCE DIST X Y Z #i255 #i255 #i0PRINT_TEXT "<&DIST&> AND <&BESTCOLORDIST&>"IF DIST <= BESTCOLORDIST BESTCOLORDIST = DIST COLOR = #i1ENDIF
Code: Select all
FUNCTION NpcHtml DEFINE INT PacketType 0 DEFINE INT ID 0 PACKET.READ_BYTE PacketType PACKET.READ_INT32 ID PACKET.READ_STRING HTML PRINT_TEXT "Recieved NpcHtmlMessage Packet !!" PRINT_TEXT "ID = <&ID&> | HTML = <&HTML&>" NEWHTML = HTML.REPLACE HTMLFILTER1 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER2 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER3 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER4 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER5 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER6 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER7 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER8 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER9 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER10 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER11 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER12 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER13 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER14 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER15 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER16 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER17 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER18 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER19 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER20 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER21 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER22 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER23 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER24 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER25 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER26 BLANK NEWHTML = NEWHTML.REPLACE HTMLFILTER27 SEP NEWHTML = NEWHTML.REPLACE HTMLFILTER28 SEP NEWHTML = NEWHTML.REPLACE FILTER4 BLANK NEWHTML = NEWHTML.TRIM PRINT_TEXT "NEWHTML: <&NEWHTML&>"//CALLSUB ParseHTMLRETURN VOID FUNCTION ClientScreen DEFINE INT PacketType 0 DEFINE INT ID 0 // packetexid DEFINE INT Type 0 DEFINE INT Sysmsg_id 0 DEFINE INT Position 0 DEFINE INT unk1 0 DEFINE INT Size 0 DEFINE INT unk2 0 DEFINE INT unk3 0 DEFINE INT Effect 0 DEFINE INT Time 0 DEFINE INT unk4 0 PACKET.READ_BYTE PacketType PACKET.READ_INT16 ID PACKET.READ_INT32 Type PACKET.READ_INT32 Sysmsg_id PACKET.READ_INT32 Position PACKET.READ_INT32 unk1 PACKET.READ_INT32 Size PACKET.READ_INT32 unk2 PACKET.READ_INT32 unk3 PACKET.READ_INT32 Effect PACKET.READ_INT32 Time PACKET.READ_INT32 unk4 PACKET.READ_STRING Message PRINT_TEXT "Recieved Client Screen Message Ex Packet !!" PRINT_TEXT "ID = <&ID&> | Type = <&Type&> | Sysmsg_id = <&Sysmsg_id&> | Position = <&Position&>" PRINT_TEXT "unk1 = <&unk1&> | Size = <&Size&> | unk2 = <&unk2&> | unk3 = <&unk3&>" PRINT_TEXT "Effect = <&Effect&> | Time = <&Time&> | unk4 = <&unk4&> | Message = <&Message&>" IF Message.LENGTH > #i0 NEWMESSAGE = Message.REPLACE FILTER1 BLANK NEWMESSAGE = NEWMESSAGE.REPLACE FILTER5 SEP NEWMESSAGE = NEWMESSAGE.REPLACE FILTER4 SEP NEWMESSAGE = NEWMESSAGE.REPLACE FILTER3 SEP NEWMESSAGE = NEWMESSAGE.REPLACE FILTER2 SEP PRINT_TEXT "<&NEWMESSAGE&>" CALLSUB ParseStringENDIF RETURN VOID SUB FindWordSLEEP 5000 FOREACH S STRING ScreenMessageWords TEMPWORD = ScreenMessageWords.S IF "NEWHTML.CONTAINS #$<&TEMPWORD&>" == TRUE Word = ScreenMessageWords.S PRINT_TEXT "Common Word is: <&Word&>" ENDIFNEXTEACH RETURNSUB SUB ParseString DEFINE INT a 1 ScreenMessageWords.CLEAR CALL_EXTERN parse-function.l2s parse VOID 3 NEWMESSAGE SEP ScreenMessageWords FOREACH S STRING ScreenMessageWords PRINT_TEXT "<&ScreenMessageWords.S&>"NEXTEACH CALLSUB FindWordRETURNSUB SUB ParseHTML DEFINE INT a 1 HtmlMessageWords.CLEAR CALL_EXTERN parse-function.l2s parse VOID 3 NEWHTML SEP HtmlMessageWords FOREACH S STRING HtmlMessageWords PRINT_TEXT "<&HtmlMessageWords.S&>"NEXTEACH RETURNSUB
EDIT: Btw I like how poltomb is taking a special interest in this thread, what's been up buddy? I still agree with you, nothing can or will ever stop bots 100% with no margin for error factor. Get an active good, smart, GM.
As for the Gameguard packets flooding out L2.net, thanks, I'll have to test that. But honestly, how long do you think that would take slothmo (the maker of l2.net) to fix? I am almost willing to bet, not very long.