NG Phorum

Forum o bocie TibiaNG oraz ElfBotNG


  • Index
  •  » Skrypty
  •  » Wracanie do dp, jeżeli ktoś Cie ropnie

#1 2009-05-02 12:10:30

Admin

Administrator

Zarejestrowany: 2009-04-02
Posty: 24
Punktów :   

Wracanie do dp, jeżeli ktoś Cie ropnie

- 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]

Kod:

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]

Kod:

CaveToDepotWaypoints = 'C:\Arquivos de programas\TibiaBot NG\Scripts + Waypoints\Waypoints\GobsToDP.wpt' [/hide]

Wpisujemy ścieżkę drogi z exp'owiska do depo.

Offline

 
  • Index
  •  » Skrypty
  •  » Wracanie do dp, jeżeli ktoś Cie ropnie

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.cll.pun.pl www.nutriolandia.pun.pl www.microrc.pun.pl www.gossip-girl.pun.pl www.bulletsofpain.pun.pl