help...............
Wersja do druku
Witam.
Potrzebuję skrypt do OTS:
Gdy mnie kicknie to automatycznie reloga i expi dalej
Gdy zostane zaatakowany przez postać to ucieka mi do wyznaczonego miejsca odczekuje 20 min i wraca na exp.
Z góry thx
Witam.
Potrzebuję skryptu(do ng), który będzie wrzucał kamyki z plecaka do ręki. A gdy brak kamyków to speary. Gdy znowu kamyki wylotuje to spowrotem kamyki ma rzucać. Z góry dzięki.
Szukam skrpytu o rzucanie sd w frosty... tibia bot ng ...
Siema, poterzebuje slrypta na expa na DC(Dark Catedral). Żeby zbierał kase, jadł fooda kiedy trzeba...itp wielkie dzieki.
Przy okazji żeby nie chodzil na tarante...
podacie mi stronke z kad sciagnac najnowszą tibie auto do wer. tibii 8.41 ? z góry dziekuje ;)) !!
ściągłem wersje beta i mi dalej wyskakuje błąd ze to nie jest ten client Tibi.. :// pomocy !! :( prosze o szybką odp. poki jest exp x2 .. !:P
Tibiabot.com
ng jest już i elf blackd nie wiem
Teraz moja prośba potrzebuje skrypt/hot na światło w elf bocie żeby był lighthack lub ciągle utevo vis lux mowil..
W Elfbocie:
Shift + F11
Grayu , ja bym poprosił skrypt na to aby postać wrzucała np. 20 kamieni do prawej ręki gdy jest tam ich np. 10.
Ma Ktoś może skomplikowany scrypt do Ng , że np. Gdy Postać ma poniżej 500many zakłada Ss'a i Zdejmuje je jak postać ma powyżej 5k many ? Coś na takiej zasadzie.
Do Elf Bota mam , lecz pilnie potrzebuje do Ng
Masz chyba to ??Kod:Const
SSA_ID = 3082 // Enter the amulet ID here and it will put it on amulet slot everytime it's empty.
AOL_ID = 3057 // Change the ID of the AOL
function GetItemFromOpenBackpack(ID: integer): TItem;
var
x: integer;
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;
while not terminated do
begin
UpdateWorld;
SSA := GetItemFromOpenBackpack(SSA_ID);
if SSA <> nil then
begin
UpdateWorld;
if Self.Amulet.ID = 0
then SSA.MoveToBody(Self.Amulet,0);
Sleep(500);
end;
else
begin
SSA := GetItemFromOpenBackpack(AOL_ID);
self.displayText('You Dont have SSA, So I will put AOL, Bye.');
if SSA <> nil then
SSA.MoveToBody(Self.Amulet,0);
else
begin
sleep(1500);
Self.Displaytext('LOL you dont even have aol! xD');
end;
break;
end;
sleep(100);
end;
Teraz mój request chce hota do elfa gdy ktos mnie zatakuje (pk) to on zaczyna go bic
Nie, to nie to -_-
Gdzie Ty tu widzisz miejsce do wpisania many?
@danon
Nie wiem czy będzie działać, bo przerobiłem trochę inny skrypt żeby działał z amuletami, ale spróbuj:
Żeby działało musisz nosić na sobie jakiś inny amulet i wpisać do skryptu jego ID.Kod PHP:Const // SSA // SSAMANA = 500 // ponizej tej many wlozy ssa SSAID = 3082 // Amulet // AmuletMANA = 5000 // powyzej tej many wlozy inny amulet AmuletID = xxxx // wpisz ID jakiegos innego amuletu, ktory masz var Amulet:TItem; function GetItemFromOpenBackpack(ID: integer): TItem; var x: integer; 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; begin while not Terminated do begin updateworld; If (Self.Mana <= SSAMANA) and (Self.Amulet.ID<>AmuletID) then begin Amulet := GetItemFromOpenBackpack(SSAID); if Amulet<>nil then Amulet.MoveToBody(Self.Amulet, 0); else Self.DisplayText('SSA not found in backpack >.<'); end; If (Self.Mana >= AmuletMANA) and (Self.Amulet.ID<>SSAID) then begin Amulet:=GetItemFromOpenBackpack(AmuletID); if Amulet<>nil then Amulet.MoveToBody(Self.Amulet, 0); else Self.DisplayText('Amulet not found in backpack >.<'); end; Sleep(1000); end; end;
Dobry :)
Czy ktoś z Was mógłby mi napisać skrypt do Elfbot NG, który:
Jeżeli ktoś by mógł to napisać - byłbym BARDZO wdzięczny^^
- Idzie w xx miejsce, gdy ma mniej SD niż 100, lub mniej GMP niż 50
- Dodatkowo zakańcza skrypt CaveBota - bo moje waypointy są na różnych piętrach, i nie chcę, żeby SD skończyły się na niewłaściwym piętrze^^
- Na końcu daje xloga.
Pozdrawiam, Visher
Jakiś skrypt, który omijałby ignorowałby danego monstera[w moim wypadku ghosta] i szedł poprostu dalej?
Żeby scrypt działał tak jak w TibiaAuto "Monsters to ignore".
TIBIA BOT NG
Dziękuję z góry.
Podsumując. Gray - świetny użytkownik, niezwykle pomocny. Dziękuję! :*
Kod PHP:Const Ignore='Ghost'; // if the creature is a Ghost, we wont attack it. var x : integer; Looting:boolean; function Attacking : boolean; var x : integer; begin Result := False; for x := 0 to Creatures.Count - 1 do begin if x >= Creatures.Count then Break; if Creatures.Creature[x].Attacking then begin Result := True; Exit; end; end; end; function PlayerOnScreen : Boolean; var x: integer; begin Result := False; for x := 0 to Creatures.Count - 1 do begin if x >= Creatures.Count then Break; if Creatures.Creature[x].z=self.z then if Creatures.Creature[x].Name<>Self.Name then if not Creatures.Creature[x].NPC then begin Result :=true; Exit; end; end; end; function GetCreatureByID(ID: integer): TCreature; var x: integer; begin Result := nil; for x := 0 to Creatures.Count - 1 do begin if x >= Creatures.Count then Break; if Creatures.Creature[x].ID = ID then begin Result := Creatures.Creature[x]; Exit; end; end; end; function FindClosest : integer; var i, l, closest_num, closest_range, last_closest_range : integer; begin if not attacking then begin closest_num := -1; last_closest_range := 5000; for i := 0 to Creatures.Count - 1 do if (Creatures.Creature[i].Z = Self.Z) then if (Creatures.Creature[i].NPC = true) then if (Ignore<>Creatures.Creature[i].Name) then begin closest_range := Round(Sqrt(Sqr(Self.X - Creatures.Creature[i].X)) + Sqr(Self.Y - Creatures.Creature[i].Y)); if (closest_range < last_closest_range) then begin last_closest_range := closest_range; closest_num := i; end; end; Result := closest_num; Exit; end; end; var found, Bla,y : integer; begin updateworld; Bla:=Self.Containers.Count; Looting:=false; while not terminated do begin UpdateWorld; if Self.Containers.Count>Bla then begin D:=Self.Containers.Count; Looting:=true; end; if (Looting=true) then begin updateworld; Z:=self.x; y:=self.y; Self.DisplayText('Looting'); repeat sleep(200); updateworld; until (Z<>Self.x) or (y<>self.y); Looting:=false; Self.DisplayText('Finished looting'); end; updateworld; found := FindClosest; if (found <> -1) then if (attacking=false) and (PlayerOnScreen=false) and (Looting=false) then Creatures.Creature[found].Attacking := true; Sleep(1000); end; end;
Któryś z tych dwóch powinien zadziałać.Kod PHP:Const MonsterList = ['Ghost']; //List of monsters to not attack var x : integer; Looting:boolean; function Attacking : boolean; var x : integer; begin Result := False; for x := 0 to Creatures.Count - 1 do begin if x >= Creatures.Count then Break; if Creatures.Creature[x].Attacking then begin Result := True; Exit; end; end; end; function IsAttackable(Name: String): Boolean; var x: integer; begin Result := False; for x := Low(MonsterList) to High(MonsterList) do begin if Name = MonsterList[x] then begin Result := True; Break; end; end; end; function PlayerOnScreen : Boolean; var x: integer; begin Result := False; for x := 0 to Creatures.Count - 1 do begin if x >= Creatures.Count then Break; if Creatures.Creature[x].z=self.z then if Creatures.Creature[x].Name<>Self.Name then if not Creatures.Creature[x].NPC then begin Result :=true; Exit; end; end; end; function GetCreatureByID(ID: integer): TCreature; var x: integer; begin Result := nil; for x := 0 to Creatures.Count - 1 do begin if x >= Creatures.Count then Break; if Creatures.Creature[x].ID = ID then begin Result := Creatures.Creature[x]; Exit; end; end; end; function FindClosest : integer; var i, l, closest_num, closest_range, last_closest_range : integer; begin if not attacking then begin closest_num := -1; last_closest_range := 5000; for i := 0 to Creatures.Count - 1 do if (Creatures.Creature[i].Z = Self.Z) then if (Creatures.Creature[i].NPC = true) then if (IsAttackable(Creatures.Creature[i].Name) = False) then begin closest_range := Round(Sqrt(Sqr(Self.X - Creatures.Creature[i].X)) + Sqr(Self.Y - Creatures.Creature[i].Y)); if (closest_range < last_closest_range) then begin last_closest_range := closest_range; closest_num := i; end; end; Result := closest_num; Exit; end; end; var found, Bla,y : integer; begin updateworld; Bla:=Self.Containers.Count; Looting:=false; while not terminated do begin UpdateWorld; if Self.Containers.Count>Bla then begin D:=Self.Containers.Count; Looting:=true; end; if (Looting=true) then begin updateworld; Z:=self.x; y:=self.y; Self.DisplayText('Looting'); repeat sleep(200); updateworld; until (Z<>Self.x) or (y<>self.y); Looting:=false; Self.DisplayText('Finished looting'); end; updateworld; found := FindClosest; if (found <> -1) then if (attacking=false) and (PlayerOnScreen=false) and (Looting=false) then Creatures.Creature[found].Attacking := true; Sleep(1000); end; end;
Jeśli oba nie działają, to masz jeszcze to:
W tym skrypcie wpisujesz wszystkie potwory, jakie bot ma atakować i nie zaznaczasz w cavebocie atakowania potworów.Kod PHP:Const MonsterList = ['potworek1', 'potworek2','xxxxx','yyyyyy']; //List of monsters to attack var x : integer; Looting:boolean; function Attacking : boolean; var x : integer; begin Result := False; for x := 0 to Creatures.Count - 1 do begin if x >= Creatures.Count then Break; if Creatures.Creature[x].Attacking then begin Result := True; Exit; end; end; end; function IsAttackable(Name: String): Boolean; var x: integer; begin Result := False; for x := Low(MonsterList) to High(MonsterList) do begin if Name = MonsterList[x] then begin Result := True; Break; end; end; end; function PlayerOnScreen : Boolean; var x: integer; begin Result := False; for x := 0 to Creatures.Count - 1 do begin if x >= Creatures.Count then Break; if Creatures.Creature[x].z=self.z then if Creatures.Creature[x].Name<>Self.Name then if not Creatures.Creature[x].NPC then begin Result :=true; Exit; end; end; end; function GetCreatureByID(ID: integer): TCreature; var x: integer; begin Result := nil; for x := 0 to Creatures.Count - 1 do begin if x >= Creatures.Count then Break; if Creatures.Creature[x].ID = ID then begin Result := Creatures.Creature[x]; Exit; end; end; end; function FindClosest : integer; var i, l, closest_num, closest_range, last_closest_range : integer; begin if not attacking then begin closest_num := -1; last_closest_range := 5000; for i := 0 to Creatures.Count - 1 do if (Creatures.Creature[i].Z = Self.Z) then if (Creatures.Creature[i].NPC = true) then if (IsAttackable(Creatures.Creature[i].Name) = True) then begin closest_range := Round(Sqrt(Sqr(Self.X - Creatures.Creature[i].X)) + Sqr(Self.Y - Creatures.Creature[i].Y)); if (closest_range < last_closest_range) then begin last_closest_range := closest_range; closest_num := i; end; end; Result := closest_num; Exit; end; end; var found, Bla,y : integer; begin updateworld; Bla:=Self.Containers.Count; Looting:=false; while not terminated do begin UpdateWorld; if Self.Containers.Count>Bla then begin D:=Self.Containers.Count; Looting:=true; end; if (Looting=true) then begin updateworld; Z:=self.x; y:=self.y; Self.DisplayText('Looting'); repeat sleep(200); updateworld; until (Z<>Self.x) or (y<>self.y); Looting:=false; Self.DisplayText('Finished looting'); end; updateworld; found := FindClosest; if (found <> -1) then if (attacking=false) and (PlayerOnScreen=false) and (Looting=false) then Creatures.Creature[found].Attacking := true; Sleep(1000); end; end;