Исправил две нехорошие ошибки в боте:
тут, бот брал не ближайшего моба, а первого попавшегося.
Код:
function GetMinDistID : integer; // функция поиска ближайшего моба в БД
var
i, Dist, MinDist : integer;
begin
result:= 0;
if MobsLastIndex = 0 then exit;
MinDist:=RastoyanieToMe(MobsXYZ[1,OX], MobsXYZ[1,OY]);
for i:=1 to MobsLastIndex do if (MobsDist[i] <= Radius) and (MobsIsAttackable[i]) then
begin
Dist:= RastoyanieToMe(MobsXYZ[i,OX], MobsXYZ[i,OY]);
if Dist <= MinDist then
begin
MinDist:= Dist;
result:= i;
end; // если нашли хоть одного моба или несколько, товозращаем индекс ближайшего
end;
end;
А тут, если вы качаетесь не один, то бот бегал и пытался убить уже убитых не вами мобов.
Код:
procedure Die06;
var
i: integer;
begin
i:= TestPovtor(ReadD(2));
if i > 0 then begin
MobsIsAttackable[i]:= false;
MobsAgression[i]:= false;
if MobsObjID[i] = TargetID then
begin
TimerCombat.enabled:= false;
if Spoil and Spoiled then
if ReadD(22) = 1 then RequestMagicSkillUse(42);
LastKilledMobObjID:=TargetID;
inc (MobsKilled); // подводим статистику
Spoiled:= false;
TargetID:= 0;
TimerCombat.enabled:= true;
end;
end;
end;
Делал раньше еще какие то доработки, уже не помню.
Добавлено через 3 минуты
Раньше бот тупил ппц из за этого, и сразу было видно. А теперь точно не отличишь от человека
Добавлено через 9 минут
Еще вспомнил одну фишку, я играю на хеллбоунде может с этим связано, а может это ошибка, но в процедуре InventoryCreate начальное смещение у меня почему то не 76 а 76-4, вот так: