Forum o bocie TibiaNG oraz ElfBotNG
- Skrypt przydatny, kiedy "bocimy" na przykład na Rotwormach. W przypadku ropnięcia, bot automatycznie wraca do dp, dzięki czemu unikniemy zgonu.
- Zrób waypont drogi, z exp'owiska do depo
[hide]
const CaveToDepotWaypoints = 'C:\Arquivos de programas\TibiaBot NG\Scripts + Waypoints\Waypoints\GobsToDP.wpt' 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); var Tile: TTile begin if Z = Self.Z then begin repeat Self.Containers.UseItemWithGround(5710, X, Y, Z); Self.Containers.UseItemWithGround(3457, X, Y, Z); Sleep(1000); UpdateWorld; Tile := GetTileFromXYZ(X, Y, Z); until Tile.Item[0].Properties.Hole or Terminated 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 FollowWaypoint(FilePath: String) var block: integer; 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 begin Index := 0; end; 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 If Self.Z = 7 then FollowWaypoint(CaveToDepotWaypoints); Sleep(1000); end; [/hide]
W linijce:
[hide]
CaveToDepotWaypoints = 'C:\Arquivos de programas\TibiaBot NG\Scripts + Waypoints\Waypoints\GobsToDP.wpt' [/hide]
Wpisujemy ścieżkę drogi z exp'owiska do depo.
Offline