Ir para conteúdo
  • Cadastre-se

[TUTORIAL] Criando depositer


Posts Recomendados

Ola,como muitas pessoas tem dificuldades para fazer o depositer do NG vim ajudar '-'

Tutorial

criandodepositer.png

Apos configurar certinho e fazer tudo direitinho,voce deve pegar seu WPT da cave normal e add o script como mostra o tutorial do Edson

Script

////////////////////////////////////////////

const

CaveToBankWaypoints = 'C:\Arquivos de programas\TibiaBot NG\Troll_Bank.wpt'

BankToCaveWaypoints = 'C:\Arquivos de programas\TibiaBot NG\Bank_Troll.wpt'

GoldAmount = 1700;

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);

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 DepositeGold;

begin

UpdateWorld;

Sleep(2000);

Self.NPCSay('hi');

Sleep(2000);

Self.NPCSay('deposit');

Sleep(2000);

Self.NPCSay(IntToStr(Coins));

Sleep(2000);

Self.NPCSay('yes');

Sleep(2000);

Self.NPCSay('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 Coins < GoldAmount 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;

Se ajudei REP+

Qualquer duvida postar que tentarei ajudar da melhor maneira.

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

Ae sem querer floodar,mas minha duvida é a seguinte:

É só isso o depositer de grana? e como o char vai falar pro npc? Hi,Deposit all,yes??

n tem q colocar o nome do npc em algum lugar ai?

E como faz pra depositar itens no dp? ( iron ore,small stone,empty flask)

??

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo