Postado Abril 30, 2014 11 anos 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! ALGUÉM TEM A SOLUÇÃO DESSE PROBLEMA?! Editado Maio 1, 2014 11 anos por rbsvianna (veja o histórico de edições)
Postado Abril 30, 2014 11 anos Dá uma olhada aqui : • http://www.tibiaking.com/forum/topic/28999-minera%C3%A7%C3%A3ocoleta/ • http://www.tibiaking.com/forum/topic/8035-action-sistema-de-mineracao/ STYLLER OT 2022
Postado Maio 1, 2014 11 anos 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 Maio 1, 2014 11 anos 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 Maio 1, 2014 11 anos 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.