Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

Bom galera, eu jogo um OT que tem o sistema de mineração. Nele, nós temos uma picareta e a parede (específica) para dropar os "Golden Nuggets". Quando dropa, a parede volta ao normal. Eu preciso de um script que detecte a picareta (ID=3456) na bag, mova o char até a parede que tenha os Nuggets e USE a picareta nela. Quando acabar os Nuggets de uma, ela vai pra outra, e assim sucessivamente. ID das paredes com nuggets: dirt_wall = [13635, 13635, 13637, 13638, 13639, 13640];

ABAIXO TEM UMA FOTO EXPLICANDO MELHOR O QUE EU PRECISO!

Sem_ttulo.png

ALGUÉM TEM A SOLUÇÃO DESSE PROBLEMA?!

Editado por rbsvianna (veja o histórico de edições)

Postado
  • Autor

Primeiramente obrigado por ter respondido. Não sei se coloquei o pedido no lugar certo. O script que eu preciso não é pre inserir uma função em um ot e sim em um bot, no caso, o tibiabot ng.

Postado
  • Autor

Abaixo segue o script que eu tenho, só que ele fica falando "Tentando minerar a parede X... " e não faz nada. Esse script na verdade é uma edição que eu fiz daquele de usar Obsidian Knife no corpo do monstro. Só troquei as variáveis e o nome das funções.

 

const
dwarf_pick = 3456;
dirt_wall = [13635, 13636, 13637, 13638, 13639, 13640];
function searchIntArray(id:integer): boolean;
var
i: integer;
begin
result := false;
for i := low(dirt_wall) to high(dirt_wall) do begin
if dirt_wall = id then result := true;
end;
end;
function GetItemFromOpenBackpack(ID: integer): TItem;
var
y: integer;
begin
Result := nil;
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 := Self.Containers.Container[x].Item[y];
Exit;
end;
end;
end;
end;
function DirtWalls(id:integer): Boolean;
var
x, y: integer;
pick: TItem;
t: integer;
begin
UpdateWorld;
pick := GetItemFromOpenBackpack(dwarf_pick);
if pick = nil then
begin
Self.DisplayText('A pick não foi encontrada. Abra a bag onde ela está.');
exit;
end;
t := -1;
for x := -1 to 1 do begin
for y := -1 to 1 do begin
// if Screen.Tile[7+x, 5+y].Count >= 3 then begin
// t := -2
// end else t := -1;
if searchIntArray(Screen.Tile[7+x, 5+y].Item[screen.Tile[7+x, 5+y].Count+t].ID) = true then begin
UpdateWorld;
pick := GetItemFromOpenBackpack(dwarf_pick);
if pick <> nil then begin
pick.UseWithGround(Self.X+X, Self.Y+Y, Self.Z);
Self.DisplayText('Tentando minerar a parede ' + IntToStr(Screen.Tile[7+x, 5+y].Item[screen.Tile[7+x, 5+y].Count-1].ID) + '.');
Sleep(100);
UpdateWorld;
end;
end;
end;
end;
end;
begin
while not terminated do begin
UpdateWorld;
DirtWalls(dirt_wall);
Sleep(1000);
end;
end;
 

Creio que o problema esteja ali no UseWithGround.. não deveria ser algo como UseWithWall?

Não entendo mt como funciona esses comandos porque nunca vi uma lista deles. Quem sabe, por favor, ajuda ai! 

Editado por rbsvianna (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo