blackdtools / blackd-proxy-classic Goto Github PK
View Code? Open in Web Editor NEWBlackd Proxy CLASSIC
License: MIT License
Blackd Proxy CLASSIC
License: MIT License
with
resetKill
setAny
the cavebot will attack absolutely nothing and nobody, as far as i can see..
even if you do
resetKill
setAny
setPriority Demon:+1
it will not attack Demon.
Red square does not work for 7.7. I think we are missing the memory address in config file.
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?
i think its &H720D38 though, but it was found using the experimental code from #54 , so..
please verify
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?
Aimbot attack "first creature found that has same name as last creature attacked" by default,
as for why this is a problem, see https://cdn.mediacru.sh/9/9u9tWlXu1m7l.jpg
, notice how i get "You cannot throw here", rather than aiming for the dragon with the red square, it's trying to aim for the first "creature with name Dragon that it found in memory"
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 `
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.
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 :)
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 : (
LETS DO THIS GUYS. CMON
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? 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
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 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 ?
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..
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.
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.
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?
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
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 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
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"
i can't get "MSG THAT CONTAINS..." Action: to activate for PMs on 7.6.. does it work for anyone else? on any version?
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
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 =/
is there a way to download the old version of blackd to use magebomb on otserver 7.7??
thanks
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
Damn...I wish I could explain this thing better but im bounded by my english skills
It has to be tested anyways : P
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
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
the cavebot thinks it's already "close enough to the ladder"; and will attempt to use it, when standing 2SQM away diagonally, while obviously it needs to move closer first.. the character just stands there inifinitely with the client going "Too far away" (to use ladder). some bug in the cavebot pathfinder
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...
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;
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'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
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 whatever reason, sometimes it doesn't register that a creature has died/gotten HP 0. the result:
$hpofhex-id:{$hex-lastattackedid$}$ may return something >0 ... like here, it return the HP before the final blow: http://prntscr.com/602kqr
.... 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
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!
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
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
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" 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!
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 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)
when using "all MCs cast rune", like "exiva +0" without a name, only 1 player will shoot the SD, the other MCs will do nothing. with a name, it works though... should fix this
"setMeleeKill *" will also attack creatures in friend list. should setMeleeKill honour the friend list? or attack friends too? 1 workaround is to setMeleeKill *; setMeleeKill FriendName; with the code from #42
.. comments?
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
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?
while the cavebot is capable of walking down ladders, and walking up stairs, it refuse to walk up ladders in tibia 7.6.. screenshot https://cdn.mediacru.sh/z/zUlRwmYi4kR2.jpe
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.