- TibiaBot NG Ng bot knight gobliny facc zbieranie small stones

Status
Zamknięty.

warivek

Active User
Zarejestrowany
Dołączył
Luty 28, 2010
Posty
78
Liczba reakcji
4
witam poszukuje skryotu do NGbot na gobliny na zbieranie small stones i odkladanie ich gdy ma 10 % cap czy cos w tym stylu . jezeli ma ktos taki skrypt z wpt niech sie nim podzieli :D
 
Odp: Ng bot knight gobliny facc zbieranie small stones

chodzi mi o to zeby wracal sie z nimi do miasta i odkladal do dp :d
 
Odp: Ng bot knight gobliny facc zbieranie small stones

Znalaz?em jaki? skrypt, ale nie wiem czy dzia?a, do tego musisz jeszcze go ostro przerobi?. Patrz na kolory :
Kod:
const
  BackpackToEmpty = 2  // When at DP Empty This Backpack to Depot Chest (bp id which Stones are Stored in)
  CaveToDepotWaypoints = '[COLOR="Blue"]C:\Program Files\TibiaBot NG\GobsToDP.ng.wpt[/COLOR]' // Goblins to DP
  DepotToCaveWaypoints = '[COLOR="Lime"]C:\Program Files\TibiaBot NG\DPToGobs.ng.wpt[/COLOR]' // DP to Goblins
  StonesAmount = [COLOR="Sienna"]100[/COLOR]; // Leave Cave when this Amount of Stones
  WaitTime = 10;
var
  Stones: 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);
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 DepositeStones;
begin
  UpdateWorld;
  A := nil;
  for x := 6 to 8 do
  begin
    if x > 8 then break;
    for y := 4 to 6 do
    begin
      if y > 6 then break;
      for i := 0 to Screen.Tile[x,y].Count - 1 do
      begin
        if i >= Screen.Tile[x,y].Count then break;
        if Screen.Tile[x,y].Item[i].properties.depot then
        begin
          A := Screen.Tile[x,y].Item[i];
          break;
        end;
        SLEEP(50);
      end;
    end;
  end;
  if A <> nil then
  if BackpackToEmpty > 0 then
  begin
    A.Open;
    C := Self.Containers.Count;
    Sleep(1500);
    UpdateWorld;
    if C <> Self.Containers.Count then
    begin
      for G := Self.Containers.Container[BackpackToEmpty - 1].Count - 1 downto 0 do
      begin
        if G >= Self.Containers.Container[BackpackToEmpty - 1].Count then break;
        Self.Containers.Container[BackpackToEmpty - 1].Item[G].MoveToContainer(Self.Containers.Container[Self.Containers.Count - 1],20,0);
        sleep(100);
      end;
    end;
  end;
  else if BackpackToEmpty = 0 then
  begin
    A.Open;
    C := Self.Containers.Count;
    Sleep(1500);
    UpdateWorld;
    if C <> Self.Containers.Count then
    begin
      for ok := 0 to self.containers.Count - 2 do
      begin
        if ok >= Self.Containers.Count - 1 then break;
        for G := Self.Containers.Container[ok].Count - 1 downto 0 do
        begin
          if G >= Self.Containers.Container[ok].Count then break;
           Self.Containers.Container[ok].Item[G].MoveToContainer(Self.Containers.Container[Self.Containers.Count - 1],100,0);
          sleep(100);
        end;
      end;
    end;
  end; 
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
  Stones := CountItemAmountFromOpenBackpack(1781);
  if Stones < StonesAmount then Exit;
  FollowWaypoint(CaveToDepotWaypoints);
  While (Stones > 0) and (not terminated) do
  begin
    DepositeStones;
    Sleep(WaitTime*1000);
    updateworld;
    Stones := CountItemAmountFromOpenBackpack(3031);
  end;
  if Terminated then Exit;
  FollowWaypoint(DepotToCaveWaypoints);
  Sleep(1000);
end;

WPT z Goblin?w do Depo
WPT z Depo do Goblin?w
Ile ma zebra? small stones(w sztukach), ?eby zani?s? je do Depo
 
Odp: Ng bot knight gobliny facc zbieranie small stones

Dziki za pomoc :D reput leci
 
Status
Zamknięty.
Back
Do góry