jabol123
Administrator
Dołączył: 05 Mar 2009
Posty: 26
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Czw 21:12, 05 Mar 2009 |
|
|
Auto depositer gold
Kod: |
////////////////////////////////////////////
const
CaveToBankWaypoints = 'F:\CtBw1.wpt' // Waypoint z Expa do banku
BankToCaveWaypoints = 'F:\BtCw2.wpt' // Waypoint z banku do Expa
MinCap = 10;
WaitTime = 10;
////////////////////////////////////////////
var
Coins: integer;
Function GetTileFromXYZ(X, Y, Z: integer): TTile;
begin
Result := nil;
if abs((Self.X - 7) - X) > 14 then Exit;
if abs((Self.Y - 5) - Y) > 11 then Exit;
if Self.Z <> Z then Exit;
Result := Screen.Tile[abs((Self.X - 7) - X), abs((Self.Y - 5) - Y)];
end;
Procedure UseTile(X,Y,Z: Integer);
Var
Tile: TTile;
begin
if Z = Self.Z then
begin
Tile := GetTileFromXYZ(X, Y, Z);
Tile.Item[1].Use;
end;
else Unreachable := True;
end;
Procedure UseRope(X,Y,Z: Integer);
begin
if Z = Self.Z then
begin
Self.Containers.UseItemWithGround(3003, X, Y, Z);
end;
else Unreachable := True;
end;
Procedure MoveTo(X,Y,Z: Integer);
begin
if Z = Self.Z then
begin
Self.MoveTo(X,Y,Z);
end;
else Unreachable := True;
end;
Procedure UseShovel(X,Y,Z: Integer);
begin
if Z = Self.Z then
begin
Self.Containers.UseItemWithGround(3457, X, Y, Z);
Self.Containers.UseItemWithGround(5710, X, Y, Z);
Sleep(1000);
Self.MoveTo(X, Y, Z);
end;
else Unreachable := True;
end;
Procedure WaypointToAction(X,Y,Z,Action :Integer);
begin
UpdateWorld;
Case Action of
1: UseRope(X,Y,Z);
2: UseTile(X,Y,Z);
3: MoveTo(X, Y+1, Z+1);
4: MoveTo(X, Y-1, Z-1);
5: MoveTo(X, Y, Z-1);
6: MoveTo(X, Y, Z);
7: UseShovel(X,Y,Z-1);
8: MoveTo(X, Y, Z);
9: Sleep(X*1000);
else
MoveTo(X,Y,Z);
end;
end;
Function WaypointReached(X,Y,Z,Action :Integer): Boolean;
begin
UpdateWorld;
Result := False;
Case Action of
1: if (Z = Self.Z + 1) then Result := True;
2: if (Z = Self.Z + 1) then Result := True;
3: if (Z = Self.Z) then Result := True;
4: if (Z = Self.Z) then Result := True;
5: if (Z = Self.Z) then Result := True;
6: if ((X = Self.X) and (Y = Self.Y) and (Z = Self.Z)) then Result := True;
7: if (Z = Self.Z) then Result := True;
8: if (abs(Z - Self.Z) = 1) then Result := True;
9: Result := True;
else
if ((X = Self.X) and (Y = Self.Y) and (Z = Self.Z)) then Result := True;
end;
end;
Function CountWaypoints(FilePath: String): Integre;
Var
i: Integer
WaypointFile: TextFile
begin
i := 0
AssignFile(WaypointFile, FilePath);
ReSet(WaypointFile);
while not EoF(WaypointFile) do
begin
temp:= ReadLn(WaypointFile);
i := i+1;
end;
Result:= (i/4);
end;
Function ExtractWaypointsFromFile(FilePath: String; Count: Integer): Integre;
Var
i: Integr
WaypointsArray: Integer
WaypointFile: TextFile
begin
WaypointsArray := VarArrayCreate([0, Count - 1, 0, 3], $C);
AssignFile(WaypointFile, FilePath);
ReSet(WaypointFile);
for i:=0 to Count-1 do
begin
WaypointsArray[i,0] := StrToInt(ReadLn(WaypointFile));
WaypointsArray[i,1] := StrToInt(ReadLn(WaypointFile));
WaypointsArray[i,2] := StrToInt(ReadLn(WaypointFile));
WaypointsArray[i,3] := StrToInt(ReadLn(WaypointFile));
end;
CloseFile(WaypointFile);
Result := WaypointsArray;
end;
procedure DepositeGold;
begin
UpdateWorld;
Sleep(2000);
Self.Say('hi');
Sleep(2000);
Self.Say('deposit all');
Sleep(2000);
Self.Say('yes');
Sleep(2000);
Self.Say('bye');
end;
function CountItemAmountFromOpenBackpack(ID: integer): integer;
var
x: integer;
y: integer;
begin
Result := 0;
for x := 0 to Self.Containers.Count - 1 do
begin
if x >= Self.Containers.Count then Break;
for y := 0 to Self.Containers.Container[x].Count - 1 do begin
if y >= Self.Containers.Container[x].Count then Break;
if Self.Containers.Container[x].Item[y].ID = ID then begin
Result := Result + Self.Containers.Container[x].Item[y].Amount;
end;
end;
end;
end;
Procedure FollowWaypoint(FilePath: String)
begin
Index := 0
Unreachable := False
WaypointsCount := CountWaypoints(FilePath);
WP := ExtractWaypointsFromFile(FilePath, WaypointsCount);
while (Index <> (WaypointsCount-1)) and (not Terminated) do
begin
if Unreachable then
begin
Index := Index+1;
Unreachable := False;
end;
if Index = (WaypointsCount-1) then Index := 0;
if WaypointReached(WP[Index,0],WP[Index,1],WP[Index,2],WP[Index,3]) then
Index := Index +1;
WaypointToAction(WP[Index,0],WP[Index,1],WP[Index,2],WP[Index,3]);
Sleep(1000);
end;
end;
begin
updateworld
Coins := CountItemAmountFromOpenBackpack(3031);
if Self.Capacity > MinCap then exit;
//-------------------------------------------//
//***** Get from the Cave to the banker *****//
//-------------------------------------------//
//
//
FollowWaypoint(CaveToBankWaypoints); //
//
//
//*******************************************//
While (Coins > 0) and (not terminated) do
begin
DepositeGold;
Sleep(WaitTime*1000);
updateworld;
Coins := CountItemAmountFromOpenBackpack(3031);
end;
if Terminated then Exit;
//-------------------------------------------//
//**** Return from the banker to the cave ***//
//-------------------------------------------//
//
//
FollowWaypoint(BankToCaveWaypoints); //
//
//
//*******************************************//
Sleep(1000);
end;
|
Post został pochwalony 0 razy
|
|