Git Product home page Git Product logo

blackd-proxy-classic's People

Contributors

blackdtools avatar divinity76 avatar nrated avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

blackd-proxy-classic's Issues

red square for 7.7

Red square does not work for 7.7. I think we are missing the memory address in config file.

protocol violation on tibia 7.6 with tileID_ladderToUp

in tibia 7.6 , when trying to use tileID_ladderToUp=9C 07 on position x: 1835 y: 2090 z: 13
BlackD Proxy cavebot will send:
82 2B 07 2A 08 0D 9C 07 02 00
Tibia client will send (clicking manually):
82 2B 07 2A 08 0D 9C 07 01 00
this should be fixed. should also investigate if the proxy is violating the protocol in the same way in RL tibia, because if it is, this is probably something that Cipsoft could detect (and mark you as a cheater for deletion~)

i would also guess that the proxy is doing the same mistake in the closely related versions, 770, 772, 780, etc, but i haven't checked.

what does this byte mean anyway? stackpos maybe?

missing adrRSA for 960

i think its &H720D38 though, but it was found using the experimental code from #54 , so..
please verify

[7.6] [very detectable cavebot bug] Cavebot (sometimes?) spams the attack packet on same monster

The cavebot will spam the same attack packet on the same creature several times while fighting (at least with setRetryAttack), without the current attack ever being canceled. the real tibia client, without cheating, will NEVER send the same "attack that monster" packet without the current attack being canceled. (like, changing target, or changing floor, or creature dying)...

this bug was supposedly fixed in version Blackd Proxy 24.0, but in 37.1, the bug is back! (hmm, was it ever fixed?)

Blackd Proxy 24.0
----------------------------
 - Fixed another detectable thing in the cavebot attack function. Cavebot should be very hard to detect now. However we won't guarantee anything yet.
 - Fixed a rare problem in market
 - Fixed a common problem with the trainer menu
 - Activating a premium scroll should not crash Blackd Proxy now
 - Now cavebot will not have a time limit to kill monsters, unless you include this to your script: SetBot EnableMaxAttackTime=1
 - Now cavebot will resync with Tibia client memory to ensure that it is really attacking the correct creature
 - Now cavebot will not trigger any pk alarm during the first 5 seconds, to avoid false alarms

24.0 was before GitHub, Daniel, remember where the fix code is?

[Questions]Could you guys guide me read packets? custom-client 7.72 sd aim problem

Hello

i has been looking and testing but i dont get clue
im looking to make sd target works on a 772 server
the bot is fully working excluding sd aim(rune target player mostly) mana and instant heal
but im insterested in check sd target

in blackdtools forums i saw i should look into log packets but i dont know how read them
https://www.blackdtools.net/showthread.php?62447-Tibia-7-72-OT-Client-problem

should i look into
GAMECLIENT1>(clientside?) or GAMESERVER1(first player?) GAMESERVER2(seccond player?) to check about sd aiming

there are the packets(i recorded the packets being sure that are the sd attack/usage moment) :

regards

`-----------------HITTED SD TO MYSELF---------------------------------

GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4B 08 A6 02 05 63 00 01
GAMESERVER1<( hex ) 17 00 83 4B 08 A6 02 05 12 85 4B 08 A6 02 05 4B 08 A6 02 05 0B A2 80 A2 80
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4B 08 A6 02 05 63 00 01
GAMESERVER1<( hex ) 13 00 83 4B 08 A6 02 05 12 85 4B 08 A6 02 05 4B 08 A6 02 05 0B
GAMESERVER1<( hex ) 01 00 1E
GAMECLIENT1>( hex ) 01 00 1E
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4B 08 A6 02 05 63 00 01
GAMESERVER1<( hex ) 13 00 83 4B 08 A6 02 05 12 85 4B 08 A6 02 05 4B 08 A6 02 05 0B
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4B 08 A6 02 05 63 00 01
GAMESERVER1<( hex ) 13 00 83 4B 08 A6 02 05 12 85 4B 08 A6 02 05 4B 08 A6 02 05 0B

-------------------------------------------------------HIT OTHER PLAYER SD WHITOUT BEING TARGETED----------------
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4A 08 A6 02 05 63 00 02
GAMESERVER2<( hex ) AF 00 A2 80 86 95 7B 01 10 00 8C D8 7B 01 10 3A A0 E3 00 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00 A0 E3 00 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00 8C D8 7B 01 10 3A 6C 4A 08 A6 02 05 01 6A 4A 08 A6 02 05 49 0B 02 83 4A 08 A6 02 05 01 84 4A 08 A6 02 05 B4 03 00 31 36 38 B4 14 37 00 59 6F 75 20 6C 6F 73 65 20 31 36 38 20 68 69 74 70 6F 69 6E 74 73 20 64 75 65 20 74 6F 20 61 6E 20 61 74 74 61 63 6B 20 62 79 20 48 65 72 65 20 53 74 69 6E 6B 73 2E 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B
GAMESERVER1<( hex ) 4A 00 A2 00 A2 80 8C D8 7B 01 10 3A 8C D8 7B 01 10 3A 6C 4A 08 A6 02 05 01 6A 4A 08 A6 02 05 49 0B 02 83 4A 08 A6 02 05 01 84 4A 08 A6 02 05 B4 03 00 31 36 38 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B A2 80 A2 80
GAMESERVER1<( hex ) 06 00 8C D8 7B 01 10 3A
GAMESERVER2<( hex ) 1B 00 8C D8 7B 01 10 3A A0 E5 00 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4A 08 A6 02 05 63 00 02
GAMESERVER2<( hex ) AD 00 86 95 7B 01 10 00 8C D8 7B 01 10 0D A0 30 00 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00 A0 30 00 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00 8C D8 7B 01 10 0D 6C 4A 08 A6 02 05 01 6A 4A 08 A6 02 05 49 0B 02 83 4A 08 A6 02 05 01 84 4A 08 A6 02 05 B4 03 00 31 38 31 B4 14 37 00 59 6F 75 20 6C 6F 73 65 20 31 38 31 20 68 69 74 70 6F 69 6E 74 73 20 64 75 65 20 74 6F 20 61 6E 20 61 74 74 61 63 6B 20 62 79 20 48 65 72 65 20 53 74 69 6E 6B 73 2E 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B
GAMESERVER1<( hex ) 44 00 A2 80 8C D8 7B 01 10 0D 8C D8 7B 01 10 0D 6C 4A 08 A6 02 05 01 6A 4A 08 A6 02 05 49 0B 02 83 4A 08 A6 02 05 01 84 4A 08 A6 02 05 B4 03 00 31 38 31 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B


GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4A 08 A6 02 05 63 00 02
GAMESERVER2<( hex ) AF 00 A2 80 86 95 7B 01 10 00 8C D8 7B 01 10 39 A0 E0 00 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00 A0 E0 00 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00 8C D8 7B 01 10 39 6C 4A 08 A6 02 05 01 6A 4A 08 A6 02 05 49 0B 02 83 4A 08 A6 02 05 01 84 4A 08 A6 02 05 B4 03 00 31 37 31 B4 14 37 00 59 6F 75 20 6C 6F 73 65 20 31 37 31 20 68 69 74 70 6F 69 6E 74 73 20 64 75 65 20 74 6F 20 61 6E 20 61 74 74 61 63 6B 20 62 79 20 48 65 72 65 20 53 74 69 6E 6B 73 2E 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B
GAMESERVER1<( hex ) 4A 00 A2 00 A2 80 8C D8 7B 01 10 39 8C D8 7B 01 10 39 6C 4A 08 A6 02 05 01 6A 4A 08 A6 02 05 49 0B 02 83 4A 08 A6 02 05 01 84 4A 08 A6 02 05 B4 03 00 31 37 31 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B A2 80 A2 80
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4A 08 A6 02 05 63 00 02
GAMESERVER1<( hex ) 04 00 A2 80 A2 80
GAMESERVER1<( hex ) 48 00 A2 80 8C D8 7B 01 10 0B 8C D8 7B 01 10 0B 6C 4A 08 A6 02 05 01 6A 4A 08 A6 02 05 49 0B 02 83 4A 08 A6 02 05 01 84 4A 08 A6 02 05 B4 03 00 31 38 32 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B A2 80 A2 80
GAMESERVER2<( hex ) AD 00 86 95 7B 01 10 00 8C D8 7B 01 10 0B A0 2A 00 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00 A0 2A 00 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00 8C D8 7B 01 10 0B 6C 4A 08 A6 02 05 01 6A 4A 08 A6 02 05 49 0B 02 83 4A 08 A6 02 05 01 84 4A 08 A6 02 05 B4 03 00 31 38 32 B4 14 37 00 59 6F 75 20 6C 6F 73 65 20 31 38 32 20 68 69 74 70 6F 69 6E 74 73 20 64 75 65 20 74 6F 20 61 6E 20 61 74 74 61 63 6B 20 62 79 20 48 65 72 65 20 53 74 69 6E 6B 73 2E 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B

------------------------SD ON PLAYER WITH UTAMO + BEING TARGET-------------

GAMESERVER2<( hex ) 01 00 1E
GAMECLIENT2>( hex ) 01 00 1E
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4A 08 A6 02 05 63 00 02
GAMESERVER2<( hex ) 90 00 A2 90 86 95 7B 01 10 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 5C 04 0F 05 2D 00 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 5C 04 0F 05 2D 00 00 B4 14 34 00 59 6F 75 20 6C 6F 73 65 20 31 37 39 20 6D 61 6E 61 20 62 6C 6F 63 6B 69 6E 67 20 61 6E 20 61 74 74 61 63 6B 20 62 79 20 48 65 72 65 20 53 74 69 6E 6B 73 2E 84 4A 08 A6 02 05 05 03 00 31 37 39 83 4A 08 A6 02 05 02 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B
GAMESERVER1<( hex ) 2E 00 A2 00 A2 80 84 4A 08 A6 02 05 05 03 00 31 37 39 83 4A 08 A6 02 05 02 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B A2 80 A2 80
GAMESERVER1<( hex ) 01 00 1E
GAMECLIENT1>( hex ) 01 00 1E
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4A 08 A6 02 05 63 00 02
GAMESERVER1<( hex ) 28 00 A2 80 84 4A 08 A6 02 05 05 03 00 31 37 34 83 4A 08 A6 02 05 02 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B
GAMESERVER2<( hex ) 8E 00 86 95 7B 01 10 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 AE 03 0F 05 2D 00 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 AE 03 0F 05 2D 00 00 B4 14 34 00 59 6F 75 20 6C 6F 73 65 20 31 37 34 20 6D 61 6E 61 20 62 6C 6F 63 6B 69 6E 67 20 61 6E 20 61 74 74 61 63 6B 20 62 79 20 48 65 72 65 20 53 74 69 6E 6B 73 2E 84 4A 08 A6 02 05 05 03 00 31 37 34 83 4A 08 A6 02 05 02 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B
GAMESERVER2<( hex ) 16 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 B6 03 0F 05 2D 00 00 1E
GAMECLIENT2>( hex ) 01 00 1E
GAMESERVER1<( hex ) 04 00 A2 80 A2 80
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4A 08 A6 02 05 63 00 02
GAMESERVER1<( hex ) 2C 00 A2 80 84 4A 08 A6 02 05 05 03 00 31 37 37 83 4A 08 A6 02 05 02 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B A2 80 A2 80
GAMESERVER2<( hex ) 8E 00 86 95 7B 01 10 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 05 03 0F 05 2D 00 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 05 03 0F 05 2D 00 00 B4 14 34 00 59 6F 75 20 6C 6F 73 65 20 31 37 37 20 6D 61 6E 61 20 62 6C 6F 63 6B 69 6E 67 20 61 6E 20 61 74 74 61 63 6B 20 62 79 20 48 65 72 65 20 53 74 69 6E 6B 73 2E 84 4A 08 A6 02 05 05 03 00 31 37 37 83 4A 08 A6 02 05 02 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B
GAMESERVER2<( hex ) 15 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 0D 03 0F 05 2D 00 00
GAMESERVER2<( hex ) 15 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 15 03 0F 05 2D 00 00
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4A 08 A6 02 05 63 00 02
GAMESERVER1<( hex ) 2C 00 A2 80 84 4A 08 A6 02 05 05 03 00 31 37 39 83 4A 08 A6 02 05 02 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B A2 80 A2 80
GAMESERVER2<( hex ) 8E 00 86 95 7B 01 10 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 62 02 0F 05 2D 00 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 62 02 0F 05 2D 00 00 B4 14 34 00 59 6F 75 20 6C 6F 73 65 20 31 37 39 20 6D 61 6E 61 20 62 6C 6F 63 6B 69 6E 67 20 61 6E 20 61 74 74 61 63 6B 20 62 79 20 48 65 72 65 20 53 74 69 6E 6B 73 2E 84 4A 08 A6 02 05 05 03 00 31 37 39 83 4A 08 A6 02 05 02 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B
GAMESERVER1<( hex ) 01 00 1E
GAMECLIENT1>( hex ) 01 00 1E
GAMESERVER2<( hex ) 15 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 6A 02 0F 05 2D 00 00
GAMESERVER1<( hex ) 04 00 A2 80 A2 80
GAMESERVER2<( hex ) 01 00 1E
GAMECLIENT2>( hex ) 01 00 1E
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 53 0C 00 4A 08 A6 02 05 63 00 02
GAMESERVER1<( hex ) 2C 00 A2 80 84 4A 08 A6 02 05 05 03 00 31 36 37 83 4A 08 A6 02 05 02 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B A2 80 A2 80
GAMESERVER1<( hex ) 0A 00 6B 4A 08 A6 02 05 01 4A 0B 02
GAMESERVER2<( hex ) 8E 00 86 95 7B 01 10 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 C3 01 0F 05 2D 00 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 C3 01 0F 05 2D 00 00 B4 14 34 00 59 6F 75 20 6C 6F 73 65 20 31 36 37 20 6D 61 6E 61 20 62 6C 6F 63 6B 69 6E 67 20 61 6E 20 61 74 74 61 63 6B 20 62 79 20 48 65 72 65 20 53 74 69 6E 6B 73 2E 84 4A 08 A6 02 05 05 03 00 31 36 37 83 4A 08 A6 02 05 02 83 4A 08 A6 02 05 12 85 4B 08 A6 02 05 4A 08 A6 02 05 0B
GAMESERVER2<( hex ) 0A 00 6B 4A 08 A6 02 05 01 4A 0B 02
GAMESERVER2<( hex ) 15 00 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 CB 01 0F 05 2D 00 00
GAMESERVER1<( hex ) 04 00 A2 80 A2 80

------Just targeting other player but NOT ATTACKING NO SD NO BURST ARROW...NOTHING JUST TARGETING -----

AMECLIENT2>( hex ) 01 00 1E
GAMESERVER1<( hex ) 02 00 A2 80
GAMESERVER1<( hex ) 09 00 A2 80 83 4A 08 A6 02 05 04
GAMESERVER2<( hex ) 0D 00 86 95 7B 01 10 00 83 4A 08 A6 02 05 04
GAMECLIENT1>( hex ) 05 00 A1 00 00 00 00
GAMESERVER1<( hex ) 01 00 A3
GAMESERVER1<( hex ) 01 00 1E
GAMECLIENT1>( hex ) 01 00 1E
GAMECLIENT1>( hex ) 05 00 A1 D8 7B 01 10
GAMESERVER1<( hex ) 0B 00 A2 80 A2 80 83 4A 08 A6 02 05 03
GAMESERVER2<( hex ) 0D 00 86 95 7B 01 10 00 83 4A 08 A6 02 05 03
GAMESERVER2<( hex ) 01 00 1E
GAMECLIENT2>( hex ) 01 00 1E
GAMECLIENT1>( hex ) 05 00 A1 00 00 00 00
GAMESERVER1<( hex ) 01 00 A3
GAMESERVER1<( hex ) 01 00 1E
GAMECLIENT1>( hex ) 01 00 1E
GAMECLIENT1>( hex ) 05 00 A1 D8 7B 01 10
GAMESERVER1<( hex ) 02 00 A2 80
GAMESERVER1<( hex ) 09 00 A2 80 83 4A 08 A6 02 05 04
GAMESERVER2<( hex ) 0D 00 86 95 7B 01 10 00 83 4A 08 A6 02 05 04
GAMECLIENT1>( hex ) 05 00 A1 00 00 00 00
GAMESERVER1<( hex ) 01 00 A3

-----------AUTO UH ON ME--------------------------
AMESERVER1<( hex ) 01 00 1E
GAMECLIENT1>( hex ) 01 00 1E
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 58 0C 00 49 08 A6 02 05 63 00 01
GAMESERVER2<( hex ) 0D 00 8C 73 7C 01 10 64 83 49 08 A6 02 05 0D
GAMESERVER1<( hex ) 26 00 8C 73 7C 01 10 64 A0 8B 01 8B 01 AD 00 04 30 1C 00 32 00 00 6B 03 0F 05 2D 00 00 83 49 08 A6 02 05 0D A2 80 A2 80
GAMESERVER1<( hex ) 04 00 A2 80 A2 80
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 00 58 0C 00 49 08 A6 02 05 63 00 01
GAMESERVER2<( hex ) 0D 00 8C 73 7C 01 10 64 83 49 08 A6 02 05 0D
GAMESERVER1<( hex ) 26 00 8C 73 7C 01 10 64 A0 8B 01 8B 01 AD 00 04 30 1C 00 32 00 00 6B 03 0F 05 2D 00 00 83 49 08 A6 02 05 0D A2 80 A2 80
GAMESERVER2<( hex ) 01 00 1E
GAMECLIENT2>( hex ) 01 00 1E
GAMESERVER1<( hex ) 05 00 A2 80 A2 80 1E
GAMECLIENT1>( hex ) 01 00 1E
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 04 58 0C 04 49 08 A6 02 05 63 00 01
GAMESERVER1<( hex ) 26 00 8C 73 7C 01 10 64 A0 8B 01 8B 01 AD 00 04 30 1C 00 32 00 00 6B 03 0F 05 2D 00 00 83 49 08 A6 02 05 0D A2 80 A2 80
GAMESERVER2<( hex ) 0D 00 8C 73 7C 01 10 64 83 49 08 A6 02 05 0D
GAMESERVER1<( hex ) 04 00 A2 80 A2 80
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 09 58 0C 09 49 08 A6 02 05 63 00 01
GAMESERVER1<( hex ) 26 00 8C 73 7C 01 10 64 A0 8B 01 8B 01 AD 00 04 30 1C 00 32 00 00 6B 03 0F 05 2D 00 00 83 49 08 A6 02 05 0D A2 80 A2 80
GAMESERVER2<( hex ) 0D 00 8C 73 7C 01 10 64 83 49 08 A6 02 05 0D
GAMESERVER2<( hex ) 01 00 1E
GAMECLIENT2>( hex ) 01 00 1E
GAMESERVER1<( hex ) 04 00 A2 80 A2 80
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 0A 58 0C 0A 49 08 A6 02 05 63 00 01
GAMESERVER1<( hex ) 26 00 8C 73 7C 01 10 64 A0 8B 01 8B 01 AD 00 04 30 1C 00 32 00 00 6B 03 0F 05 2D 00 00 83 49 08 A6 02 05 0D A2 80 A2 80
GAMESERVER2<( hex ) 0D 00 8C 73 7C 01 10 64 83 49 08 A6 02 05 0D
GAMESERVER1<( hex ) 01 00 1E
GAMECLIENT1>( hex ) 01 00 1E
GAMESERVER1<( hex ) 04 00 A2 80 A2 80

--------------------------UH on other player whitout being taget---------
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 04 58 0C 04 E0 7E C8 7E 07 63 00 01
GAMESERVER1<( hex ) 11 00 8C 4A 7C 01 10 64 83 E0 7E C8 7E 07 0D A2 00 A2 00
GAMESERVER2<( hex ) 22 00 8C 4A 7C 01 10 64 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00 83 E0 7E C8 7E 07 0D
GAMESERVER2<( hex ) 01 00 1E
GAMECLIENT2>( hex ) 01 00 1E
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 05 58 0C 05 E0 7E C8 7E 07 63 00 01
GAMESERVER1<( hex ) 05 00 A2 00 A2 00 1E
GAMECLIENT1>( hex ) 01 00 1E
GAMESERVER2<( hex ) 22 00 8C 4A 7C 01 10 64 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00 83 E0 7E C8 7E 07 0D
GAMESERVER1<( hex ) 11 00 8C 4A 7C 01 10 64 83 E0 7E C8 7E 07 0D A2 00 A2 00
GAMECLIENT1>( hex ) 11 00 FF FF FF 40 00 04 58 0C 04 E0 7E C8 7E 07 63 00 01
GAMESERVER2<( hex ) 22 00 8C 4A 7C 01 10 64 A0 8B 01 8B 01 25 01 04 30 1C 00 32 00 00 0F 05 0F 05 2D 00 00 83 E0 7E C8 7E 07 0D
GAMESERVER1<( hex ) 0D 00 8C 4A 7C 01 10 64 83 E0 7E C8 7E 07 0D
GAMESERVER1<( hex ) 04 00 A2 00 A2 00
GAMESERVER2<( hex ) 01 00 1E
GAMECLIENT2>( hex ) 01 00 1E `

can we stop putting installer binaries in the repos directly?

keep doing this makes the repo very big when you clone the entire history over several years; since git forgets nothing, it remembers every single version of the installer, and makes the repository history much bigger. thus i suggest we stop putting the installer binaries in the repo itself, and make "github releases" instead, which are NOT stored in the git history (it is stored on github.com servers only), see how to do that here - https://help.github.com/articles/creating-releases/

just noticed that today, after not playing tibia for quite a while, decided to try again; cloned blackd proxy sources, and it took a while to download, i bet most of it is those installers.

[super detectable bug!] Cavebot will start meele attacking creatures out of sight

the cavebot will send attack packet to start attacking monsters that are out of sight. whilst still in tibia memory / part of map, the mobs are so far away that it's IMPOSSIBLE to start attacking them without CHEATING. the cavebot knows they're there, and will start attacking them... which is super detectable at cipsoft's side :)

New-GUI

Hey,
what do you guys think about making new GUI in one window for blackd? and new functions ; p It's a bit too old and troublesome to use
there are new ppl to contribute so we could actually rewrite this bot and make better support for OpenTibia
I've made my "basic" gui but for now I'm too lazy to work alone : (
bez tytulu

LETS DO THIS GUYS. CMON

TryToUpdateRSA fails with ASLR (Windows Vista+)

it's a known problem,
anyway, in theory, we can use
hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32,pid);
-> Module32First(hSnapshot, &MODULEENTRY32);
-> base address of main module is MODULEENTRY32.modBaseAddr regardless of ASLR being active or not , where i think the RSA address is stored not far away, regardless of tibia version

.. im working on a test implementation now

can we get a dedicated folder for cavebot scripts?

can we get a dedicated folder for cavebot scripts? its annoying to have them in the main folder with everything else; just a "cavebot" folder or something where all cavebot scripts is stored would be good imo

[7.6] Looter and wrong stackPos

Ok, so there's a huge problem with opening bodies on all 7.6 servers that I was playing on.
It's counting wrong stackPos. OldLootMode is True on default because bproxy is using OpenCorpse function when looter is enabled. Besides I was checking SmartLootCorpse Function and I've fund big problem there.

For lSS = 1 To 10
    SS = CByte(lSS)
    tileID = GetTheLong(Matrix(ydif, xdif, myZ(idConnection), idConnection).s(SS).t1, Matrix(ydif, xdif, myZ(idConnection), idConnection).s(SS).t2)
    If DatTiles(tileID).alwaysOnTop = True Then  
      SOPT = &HFF
    ElseIf DatTiles(tileID).iscontainer = True Then
      SOPT = SS
      Exit For
    Else
      Exit For
    End If
  Next lSS

ok this thing is wrong. If DatTile(tileID).isContainer = True Then
stackPos = current iteration and it's escaping from For - that's good.
but when it's not a container then it exits for loop either when it is supposed to keep looping throught lSS(stackPos) to find container. So basicly loops ends anyways right after first iteration and it doesn't matter if container is found or not

Old Loot Mode is using stackpos received from the packet and it's wrong because it should loop through stackPos just like here to find the container!
I've made few changes and my looter is opening every dead body. Gonna pull commit after testing it on higher tibia versions ; p

setAvoidFront not working properly

setAvoidFront is not working properly right now on version 37.1 for tibia 10.90 (and I think it's not working properly for a long time).

Sometimes it goes on diagonal of the monster, sometimes it doesn't. Most of the time it stands diagonal for the first time (when you go to the monster or he comes for you), but after that what happens is pretty random. Sometimes it goes diagonal for more 23 times with a 12s delay after the monster is facing you, sometimes it goes diagonal after 5~8s or it just doesn't.

I have tried MANY different ways to see if I found a way around, like using setfollow, setnofollow, setting auto follow on client on/off, changing the timer on cavebot to high/low, no delay, high delay, tried different monsters... It was the same on every way.

BUT I found something that might help. When you log in for the first time, you can't attack/be attacked for X seconds (blackd still tries to attack in this period) and while this protection lasts, the diagonal command works pretty well; after that, it goes back to normal or works for a few more seconds on that monster.

Tested it some days ago and I tested today again on 17/Jan/16 using different methods, on official Tibia, of course.

Let me know if I can help you somehow doing some tests (in game tests that would take your time, I'm not a programmer).

By the way, are you accepting proposals ?

can we get a `SetDropOnFloor XX,XX` to complement the SetLoot command? [enhancement request]

am in a position where there are valuable but heavy items being dropped by mobs the cavebot is killing, but they're too heavy to loot as the cavebot is running, so i want a way to drop those items on the floor instead, and just clean up the floor after the cavebot session..

  • there is a DropLootToFloor command, but that one also drops all the food to the floor, which will get me killed, i need a way to drop specific items to floor..

if SetNoFollow is on, SetLootDistance is ignored

if SetNoFollow is on, the cavebot will never go to a dead corpse to loot it, it will just try to loot where it's at, and if it's too far away (which it is like 99.999% of the time you're fighting with SetNoFollow), it will just go "too far away", and the cavebot will ignore the body.

action starting with "#y" not parsed correctly..

messages starting with "#y " will automatically be converted to yelling (even in hotkeys) BY THE CLIENT, NOT THE SERVER this means that it's detectable botting behavior; one cannot start a message in tibia with "#y " without cheating, and it's certainly something that cipsoulf COULD DETECT,
BlackD does not parse messages with "#y " correctly when Action: "#y blabla"; BlackD will send the message as-is, but what it SHOULD be doing, is to remove "#y " from the message, and convert the message to a YELLING , and send it off to server.

StackItems is broken on 8.0

Same issue as on 7.6 thread #23bugfix,when trying to stack itesm ("sorry not possible"). Can someone answer how can I handle with this?

activating cavebot should reset exp/h

as far as i know, there's currently no way to reset exp/h meter, i think it would be useful if exp/h counter reset whenever you press the "activate cavebot" button

Creature ID's, can we stop referring to them as Double?

edit: damn, i've been reading the wrong documentation; turns out, Long is Int32 in VB6 ;
Some places in the code, we refer to creature IDs as Double (for instance, in MeleeAttack->targetID and TypeTileInfo->dblID), and some places, we refer to creature IDs as Long ( for instance, ReadRedSquare ) in some places, we have to do CLng(doubleID) and other places, Cdbl(LongID) because of this.. could we just drop that nonsense and agree on a single data type for creature IDs? (my vote would go to Long)

the latestchanges page is wayyyy out of date (v 26.5 last update)

the latestchanges page at http://blackdtools.com/lastchanges.php is seriously out of date - currently listing changes up to version 26.5

i wrote a php script that will download the latest github version of frmNews.frm , parse the strMsg code that makes the news in-proxy, and make a html version of it, if you run it as a daily chron on your webhost, the changes page should never be more than ~24 hours out of date - as of writing, this code correctly parses everything from version 14.1 to 37.2 , so it probably won't break anytime soon..

<?php
$rawtext = file_get_contents('https://raw.githubusercontent.com/blackdtools/Blackd-Proxy-CLASSIC/master/frmNews.frm');

function tohtml($str)
{
    return htmlentities($str, ENT_QUOTES | ENT_HTML401 | ENT_SUBSTITUTE | ENT_DISALLOWED, 'UTF-8', true);
}
function parse_strMsg($text)
{
    $matches = array();
    $res     = preg_match('/(strMsg\s*=.*?)Me\.txtBoard/is', $text, $matches);
    assert($res === 1);
    $text       = $matches[1];
    //var_dump($res,$text);
    $text       = trim($text);
    $parsedText = '';
    $i          = 0;
    foreach (preg_split("/((\r?\n)|(\r\n?))/", $text) as $line) {
        ++$i;
        $line = trim($line);
        while (strlen($line) > 2) {
            if (stripos($line, 'vbCrLf') === 0) {
                $line = substr($line, strlen('vbCrLf'));
                $parsedText .= "\n";
                continue;
            }
            if ($line[0] === '"') {
                $line = substr($line, 1);
                $to   = stripos($line, '"');
                if ($to === false) {
                    var_dump($parsedText);
                    throw new LogicException('cannot find the end " in line ' . $i . ': ' . $line);
                }
                //var_dump("ADDING: ",substr($line,0,$to));
                $parsedText .= substr($line, 0, $to);
                $line = substr($line, $to + 1);
                //var_dump('FOO',$line);
                continue;
            }
            $line = substr($line, 1);
        }
    }
    //var_dump('"PARSED TEXT:',$parsedText);
    return $parsedText;
}
$parsedText = parse_strMsg($rawtext);
echo '<pre>' . tohtml($parsedText) . '</pre>';

goddam i have too much free time

8.60 connection is broken?

i downloaded tibia 8.60,
and using blackd proxy 37.1 for Tibia 8.6, i can't connect to any 8.6 server. but when i use the IP changer from https://otland.net/threads/otland-ip-changer.134369/ , i can connect just fine. i tried several 8.60 servers from http://otservlist.org/ , and it was the same with all of them.

the log from proxy is

#client1 connected (IP 127.0.0.1) , forwarding to 127.0.0.1:7171 #
#server1 connected#
#server1 closed (by server) #

, first it connects to the server, then instantly disconnect, and the tibia client says
"Error: Disconnected from server. (200002)"

to reproduce:

download & install tibia 860 from here http://remeresmapeditor.com/marklar.php?clients

download & start 8.60 server from here https://github.com/opentibia/server/releases
(OR just find a random 8.60 server from http://otservlist.org/ )

start 860 from blackd, with settings: ot server ip: 127.0.0.1

connect with username "tibia" and password "tibia"

  • With BlackD Proxy, you'll get "error: disconnected from server",
    but other IP changers, you can connect normally.

sources corrupted? can't compile

when i download clean v35.5 sources, and try to open it in vb6,
i get a lot of errors like
"Error during load. Refer to ~\blackd\frmMain.log for details."
( http://prntscr.com/65yksx )

while i can still successfully "Start with full compile", compile, edit, and debug, version 34.8 sources without problem on the same computer.

The error logs contains:
'0' could not be loaded Line 0: The file C:\Users\hanshenrik\Desktop\OT\tibianic\tibia\blackd\frmMain.frm could not be loaded.

somehow, looks like the sources posted on github are corrupted, or maybe *.OBJ files was more important than i realized?

to reproduce:
go to https://github.com/blackdtools/Blackd-Proxy-CLASSIC/tree/98df19962cb6bbb6f824fde22710ff898c009f36

then press "Download ZIP"

then download, and extract to a new folder, then try to open that in VB6..

theory 1:the *.OBJ files was more important than i realized, and VB can't open the source files without them???? (i think theory 2 is more likely)
theory 2: git with the .gitattribute :
`
#Auto detect text files and perform LF normalization

  • text=auto
    `

that text=auto
is converting it to a line-ending that does not agree with VB6, and VB6 errors out trying to read the files
i suggest replacing
* text=auto
with
* binary
, push, and download zip, and try to open again, hopefully that should fix the errors =/

Magebomb OT 7.7

is there a way to download the old version of blackd to use magebomb on otserver 7.7??
thanks

Possible issue with exiva check and it's result $lastchecktileid$

Well...I'm not sure about this cuz I've found this problem on OT server 7.6 so it might work for other tibia versions/servers but here's the thing:
If there's more than one permament item on the pos, and you will throw cash or anything on top of it, then check will "look" at cash but $lastcheckresult$ returns ID of permament item behind cash
Damn...I wish I could explain this thing better but im bounded by my english skills
It has to be tested anyways : P

"Clear Logs" button doesn't log to file

image

the "Clear Logs" button does not log to file before clearing, which it should do when the "log to file and clear" setting is active. i'd call this a bug.

[7.6] Problem with connecting under windows 8.1

Well...so I'm having a rly hard time trying to log into the game...70% of the time after typing my password, server returns "disconnected". It is really troublesome and I don't know how to solve this

Issue with packetType &HAA and it's subPackets

Ok, im not sure about this but it isn't working on 7.6 at least.
In function LearnFromPacket theres a case &HAA

Case &HAA
       ' chat - eval to skip enough bytes
      If TibiaVersionLong > 760 Then
        pos = pos + 4 'skip 4 strange bytes (always 00 00 00 00 )
      End If
      lonN = GetTheLong(packet(pos + 1), packet(pos + 2))
      pos = pos + 3

      nameofgivenID = ""
      For itemCount = 1 To lonN
        nameofgivenID = nameofgivenID & Chr(packet(pos))
        pos = pos + 1
      Next itemCount
      If (nameofgivenID = CharacterName(idConnection)) Then
        itsMe = True
      Else
        itsMe = False
      End If
      blnDebug1 = False 'for debug

      If TibiaVersionLong >= 773 Then
        ' NEW : level of the person who is talking
        'frmMain.txtPackets.Text = frmMain.txtPackets.Text & vbCrLf & _
         "TALKING > " & GoodHex(packet(pos)) & " " & GoodHex(packet(pos + 1))
        templ1 = GetTheLong(packet(pos), packet(pos + 1))
        If templ1 = 0 Then ' npc is talking
            doingTrade(idConnection) = True
        End If
        pos = pos + 2 'skip level
      End If
      subType = CLng(packet(pos))
      Select Case subType

      Case newchatmessage_H9
        ' new since Tibia 8.72 ' use hotkey

Thats a shortened vertsion but what i meant is that subPacket is being translated into LONG:

subType = CLng(packet(pos))
 Select Case subType
 Case newchatmessage_H9
        ' new since Tibia 8.72 ' use hotkey

and this select contains cases with variables like oldmessage_H7 and the value signed to it is a byte(&H7) so it won't probably work since select case should be a LONG so oldmessage_H7 should be equal to 7, not &H7

There's no way to use RRV in 7.6 server that i'm playing on while using blackd with hardcorecheats turned on

[Question]Tibia title info doesn't seem to work on tibia 7.6 lately

Hi,
I don't know what happened lately in blackdproxy but I can't display anything in tibia title while playing on tibia 7.6. Has anyone encountered this problem recently?
Maybe it's related to changes in the newest tibia protocols or that's just because of windows 10...

[feature request] can we get a OnReconnectGoTo for the cavebot?

as far as i know, there is no way to specify what to do when it has reconnected from server restart/connection drop; it simply opens the first backpack (if any); sometimes i would like to do more than just opening the first backpack, like opening the loot backpack;

StackItems is broken on 7.6

It refuses to stack Platinum Coins. This is my opened backpack #1

When i do
StackItems
SayMessage stacked

it will hang indefinitely on StackItems, constantly sending the packet
"0E 00 78 FF FF 40 00 00 DB 0B FF FF 40 00 01 14 "
(judging by the last byte 0x14, meaning 20 in decimal, its trying to move the 20x platinum coin, as expected. but the packet is malformed somehow, because the server does not understand it.)
When i move the last platinum in to the first, manually, the bytes are:
"0F 00 78 FF FF 40 00 01 DB 0B 01 FF FF 40 00 00 14"
As you can see, though quite similar, the length of the packet does not match, meaning a byte is missing! (I guess the protocol changed in a newer version, with removing some un-needed information, and you removed it for every version? maybe? :p )

Runemaker alarms does not work for 7.6

Runemaker's "Play ding.wav at message" and "Play player.wav when an unfriendly player-creature pop on screen", both of these options does nothing in 7.6

SckClientGame_DataArrival doesn't handle TCP_NODELAY / Nagle's algorithm

Sometimes, it happens rarely, but sometimes, in SckClientGame_DataArrival , when
GetTheLong(packet(0), packet(1)) + 2
is NOT EQUAL to bytesTotal , the client used http://en.wikipedia.org/wiki/Nagle%27s_algorithm to try to send several packets at once. the result? the bot may completely ignore certain orders, and not learn correctly from packets, for instance, sometimes during pvp, sometimes i say "exiva 0" so everybody see it, instead of shooting an SD. makes it bloody obvious that im cheating.
i only play tibia 7.6 these days, i don't know if it's an issue with newer client versions,hopefully Cipsoft disabled Nagle's Algorithm sometime after 7.6 (as it shouldn't be on for games where low latency is important), but i don't know.

for tibia >= 8.41, "Bypass Login Server" disabled for antibanmode=0

.... i think bypass login server should only be disabled with
antibanmode=1 , thus thus this is a bug.

the offending code appears to be in frmMain looking like

  If ((Antibanmode = 1) Or (TibiaVersionLong >= 841)) Then
    'frmHardcoreCheats.chkAutorelog.Value = 0
    'frmHardcoreCheats.chkAutorelog.enabled = False
    If TibiaVersionLong >= 841 Then
       frmHardcoreCheats.chkAutorelog.Caption = "Autorelog disabled since 8.41"
       frmHardcoreCheats.chkAutorelog.value = 0
       frmHardcoreCheats.chkAutorelog.enabled = False
    Else
    frmHardcoreCheats.chkAutorelog.Caption = "Autorelog. WARNING: do not use during server save!"
    frmHardcoreCheats.chkAutorelog.ForeColor = vbYellow
    'frmHardcoreCheats.txtRelogBackpacks.enabled = False
    'frmHardcoreCheats.lblBackpacks.enabled = False
    End If
    frmAdvanced.chkWantBypass.value = 0
    frmAdvanced.chkWantBypass.Caption = "Bypass disabled (antiban mode)"
    frmAdvanced.chkWantBypass.enabled = False
  End If

Cavebot sometimes incorrectly detects GM's when going down floors

there is some weird bug wherein this error will occur:
mychar closed with this message: Client closed - condition onGMcloseConnection was activated: GM Tsar

when blackd proxy have seen GM Tsar when leaving depot, and cavebot has onGMcloseConnection, it may sometimes (completely incorrectly!!) believe that GM Tsar is nearby when the cavebot is changing floor down!

Cavebot isn't very smart on this path..

Image

On this path (1, 2, 3), cavebot will go to the first, then go up the stairs.. but then, one would expect the cavebot to continue to the East > , to the stairs down closer to the destination, but the cavebot walks down West, and then just gets stuck, it has no idea how to get to location 3.. (which would be east x3) .. obviously some bug in the cavebot pathfinder

DropLootOnFloor freeze cavebot indefinitely on 7.6

On tibia 7.6, on Outcastserver.com OT, the following script will make the character walk to the location, throwing some loot on the floor, then just stand there indefinitely.. (possibly trying to throw more stuff on the floor, i dont know.).. it will reach "dropLootOnGround 1011,689,13
" , but never reach "sayMessage dropped"

... any idea how to debug this?

resetKill
SetMaxHit 99999
setRetryAttacks
setBot LootAll=1
setNoFollow
setBot PKwarnings=1
setBot AllowRepositionAtStart=1
setBot AllowRepositionAtTrap=1
setBot AutoEatFood=1
setMeleeKill bermudan draconis
setSDKill bermudan draconis
setPriority bermudan draconis:+5
setMeleeKill Arm Of Wrath
setSDKill Arm Of Wrath
setMeleeKill Demon
setSDKill Demon
setMeleeKill Orshabaal
setSDKill Orshabaal
setPriority Orshabaal:+4
SetMaxAttackTimeMs 999999
setBot EnableMaxAttackTime=0
:start
dropLootOnGround 1011,689,13
sayMessage dropped
move 1012,686,13
move 1008,697,13
move 1001,702,13
move 997,699,13
move 1008,700,13
move 1014,699,13
move 1021,699,13
move 1021,709,13
move 1020,713,13
move 1022,702,13
move 1027,699,13
move 1031,699,13
move 1035,690,13
move 1033,696,13
move 1031,698,13
move 1021,699,13
move 1021,707,13
move 1021,700,13
move 1012,699,13
move 1012,686,13
gotoScriptLine $nlineoflabel:start$

change path for config folders

Well it's not an issue but it would nice if all config folders were placed in /blackd/configs/ path : D
ex. blackd/configs/760 or config760/config.ini

The "highlight executing line" isn't always up to date

the "highlight executing line" code isn't always up to date, there's many places scattered around where the executing line could get updated,

as such, i propose a new function called updateExeLine,

Public exeLine() As Long ' please use updateExeLine instead when changing
' Sid=client id
' newExeLine= new line you want to set.
'RelativeToOldLine = should the new line number be relative to the old line (+1?), or absolute?
'returns: the new executing line number
Public Function updateExeLine(ByVal Sid As Long, ByVal  newExeLine As Long, ByVal  RelativeToOldLine As Boolean) As Long
'Static exeLine() As Long
If (RelativeToOldLine = True) Then
exeLine(Sid) = exeLine(Sid) + newExeLine
Else
exeLine(Sid) = newExeLine
End If
If (modMap.cavebotIDselected = Sid) Then
frmCavebot.lstScript.ListIndex = exeLine(Sid)
End If
updateExeLine = exeLine(Sid)
End Function

and replace most of the exeLine(Sid) = exeLine(Sid) + 1
with updateExeLine(Sid,1,true)
and replace most of the exeLine(sid) = 0
with updateExeLine(Sid,0,false)

i can't submit a patch right now, as my current local blackd code won't compile, but i can do it later~
this should ensure that the frmCavebot.lstScript.ListIndex is always up to date (which it isn't now)

btw, when this highligh code feature is functioning correctly, it helps a lot in debugging large cavebot scripts!

we should have a feature to duplicate an MC's "red square" attack

this will make it easier to control several MCs at once in the battle field.
currently we have "all MCs cast rune", but they dont' even work unless you specify the exact name of who you want to shoot, making it highly impractical to use on several targets at once (i have a fix here #76 )

2nd, there is no way to make MCs automatically follow a player across floors ( i have a fix here #72 )

3rd, there is no way to make MCs weapon ("red square") attack the same creature as another MC.. this should be implemented (for instance when using 4 MC paladins to chase a target, only 1 of the MCs will actually attack with their weapon.. lame! could significantly increase dps if all mcs attacked the same creature)

since 10.73 update, cavebot is disconnecting people

since the 10.73 update, in the forums, people are complaining that they're being disconnected when using cavebot+MC
( http://www.blackdtools.net/showthread.php?61963-Updated-for-Tibia-10-73&p=446851#post446851 / http://www.blackdtools.net/showthread.php?61963-Updated-for-Tibia-10-73&p=446858#post446858 )
I guess error is about this #1 (it highlights a code line from MC1's cavebot, highlight a line that doesn't exist in the GUI's current list, as it list the cavebot script from MC2, gets an error, and disconnects), however that's just my best guess, i have't actually investigated it,
Anyway, Until someone actually investigate this, i suggest disabling the code

 frmCavebot.lstScript.ListIndex = currLineNumber - 1 'why -1? ListIndex start at 0, currLineNumber start at 1

and make a quickfix release, (or you could investigate it and fix it ofc, maybe im wrong, who knows. unfortunately im busy with marriage papers these days)

An cavebot xyz recorder would be nice.

a cavebot xyz auto recorder would be nice
i made one myself, but i didn't know where to put the buttons etc, and i don't like the fact that my version modifies the frmHardcoreCheats->positionUpdate code, which afaik, can be very cpu intensive, so there's probably a better way to do this, but i don't know how.
so i'm just gonna post my (tested & working) sample implementation here, and hope that you'll make something similar (or improve my code?) for the official blackd proxy:

in frmCavebot , add a AutoRecord checkbox button. and the click event:

Private Sub AutoRecord_Click()
    If (AutoRecord.Value = 1) Then
        frmHardcoreCheats.chkAutoUpdateMap.Value = 1
        'setting it to true triggers the click event, according to https://msdn.microsoft.com/en-us/library/kd7e4yte%28v=vs.90%29.aspx
        'but according to my debugger... it's 1 or 0 , not true or false, and it matters..
    Else
        frmHardcoreCheats.chkManualUpdate = 1
    End If
End Sub

then in frmHardcoreCheats add new function:

Private Sub lblPosition_Change()
    Static oldX As Long
    Static oldY As Long
    Static oldZ As Long
    Dim newX As Long
    Dim newY As Long
    Dim newZ As Long
    Dim oldtext As String
    Dim newtext As String
    If (frmCavebot.AutoRecord.Value <> 1) Then
        'auto record disabled.
        Exit Sub
    End If
    If (modMap.cavebotIDselected <> mapIDselected) Then
        'I DONT KNOW WHAT TO DO IN THIS CASE...
        Debug.Print "modCavebot.cavebotIDselected is not equal to mapIDselected bug... fixme"
        Exit Sub    'to avoid writing to some other characters cavebot list.. not sure how to fix this.
    End If
    newX = myX(mapIDselected)
    newY = myY(mapIDselected)
    newZ = myZ(mapIDselected)
    If (oldX = newX And oldY = newY And oldZ = newZ) Then
        Exit Sub
    End If
    oldX = newX
    oldY = newY
    oldZ = newZ
    oldtext = LCase(frmCavebot.lstScript.List(frmCavebot.lstScript.ListCount - 1))
    newtext = "move " & newX & "," & newY & "," & newZ
    If (oldtext = newtext) Then    'don't make duplicates
        'Debug.Print "oldtext = newtext, skipping.."
        Exit Sub
    End If
    modCavebot.AddCavebotMovePoint mapIDselected, newX, newY, newZ
    'note: currently AddCavebotMovePoint actually ignores mapIDselected/idConnection..
End Sub

again, note that in frmHardcoreCheats , there's a warning about chkAutoUpdateMap being slow ( i guess that means it use a lot of cpu), so there's probably a better way to do this.. i just don't know it.

anyway, the result is that a move x,y,z is automatically added each time you move your character, which is nice, especially on areas where the cavebot easily get confused/stuck and unable to find the path, in those areas, i have experienced that being very explicit about move instructions, help the cavebot to not get stuck

Source not compile

I have downloaded Visual Basic 6 Enterprise Edition and instaled too the blackd source libraries v2.0 and the service pack 6 how I always do. But in this time not run..

Can you help me to complete the compile?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.