Nie tylko o Tibii i OTS...
Witam, dzisiaj znowu dodaje nie MOJE skrypty, lecz teraz do NG Bot'a bo też wiele osób poszukuję.
Skrypty pochodzą z paru for.
Więc zaczynamy :
Strzelanie z runy:
Const RuneID = 3155 // tutaj id runy MinHP = 1100 // ponizej xx hp nie strzeli z runy function GetAttackedCreature:TCreature; begin UpdateWorld; result := nil; for i := 0 to Creatures.Count -1 do begin if i >= Creatures.Count then break; if Creatures.Creature[i].ID = Self.Attacking then Begin result := Creatures.Creature[i]; exit; end; end; end; while not terminated do begin UpdateWorld; Creature := GetAttackedCreature; if Creature <> nil then if Self.Health >= MinHP then Self.Containers.UseItemWithCreature(RuneID,Creature); sleep(3000); end;
Używanie mana potiona, gdy xxx HP:
const Hp='666' // przy jakiej ilosci hp ma sie uleczyc Mana='20' // ilosc mana, mozna zmienic na exure gran/vite ManaPotionId='000' //ID manapotiony, ktory chcemy uzyc HealSpell='Exura' while not terminated do begin if Self.Mana < Mana then Self.Containers.UseItemWithSelf(ManaPotionId); Sleep(200); if Self.Health <= Hp then Self.Say(HealSpell); Sleep(2000); end;
Wyloguj gdy wbijesz xx exp:
Const Exp = 4200 while not terminated do begin UpdateWorld; if Self.Experience >= Exp then Self.Logout(True); Sleep(1000); end;
Zmiana SOFTów na BOHy i na odwrót:
Zmiana butów z bohy na softboots i na odwrót w zależności od HP. Np, jeżeli ustawimy w const HPsoft = 1000 i HPboh = 1500 (tak jak jest teraz), to gdy HP nam spadnie poniżej 1000 to założy soft buty, a gdy będzie powyżej 1500 to założy bohy.
const BohID = 3079; SoftID = 6529; HPsoft = 1000; HPboh = 1500; procedure changeBoots(id : integer); var x,i:integer; begin for x:=0 to self.containers.count-1 do begin for i:=0 to self.containers.container[x].count -1 do begin if self.containers.container[x].item[i].id = id then begin self.containers.container[x].item[i].movetobody(self.feet,1); exit; end; end; end; end; begin updateworld; if self.health > HPboh then if self.feet.ID = bohID then exit else changeBoots(BohID); else if self.health < HPsoft then if self.feet.ID = SoftID then exit else changeboots(softID); end;
Użycie Exori, gdy Stalker blisko:
Const MonsterToCheck = 'Stalker' MinHealth = 300 MinMana = 200 function CountMonstersBesideYou:Integer; begin Result := 0; UpdateWorld; for i := 0 to creatures.Count -1 do begin if i >= Creatures.Count then break for x := -1 to 1 do begin if x >= 2 then break for y := -1 to 1 do begin if y > 1 then break; if Creatures.Creature[i].NPC then if (Creatures.Creature[i].x = Self.X +x) and (Creatures.Creature[i].y = Self.y + y) then if Creatures.Creature[i].Name = MonsterToCheck then Result := Result + 1; end; end; end; end; while not terminated do begin UpdateWorld; if CountMonstersBesideYou >= 1 then if Self.Mana >= MinMana then if Self.Health > MinHealth then Self.Say('exori'); sleep(200); end;
Rozbudowany Slime trainer:
const Food_Id = 3606; // zmień na inne id jedzenia MinMana = 30; // do ile many ma jeść StrongWeaponID = 3320; l// ID "normalne" broni HealAtHp =400; // ulecz gdy masz x hp UhAtHp=300; // uh gdy max x hp KillAtHp=320; // zabij matke gdy max x hp var StrongWeapon: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; function Attacking: boolean; begin UpdateWorld; for x := 0 to Creatures.Count - 1 do begin UpdateWorld; if Creatures.Creature[x].Attacking then begin Result := True; Exit; end; end; Result := False; Exit; end; function GetFollowedCreatureID: integer; begin UpdateWorld; for x := 0 to Creatures.Count - 1 do begin UpdateWorld; if Creatures.Creature[x].Following then begin Result := Creatures.Creature[x].ID; Exit; end; end; end; var MotherSlime, X1, Y1: integer; begin updateworld; updateworld; MotherSlime := GetFollowedCreatureID; while not Terminated do begin UpdateWorld; if self.LogoutBlock=false then self.Logout(false) begin UpdateWorld; if ((Self.Health) <(HealAtHp)) and ((Self.Mana)>(25)) then Self.Say('exura') UpdateWorld; //if ((Self.Health) <(UhAtHp)) then Self.Containers.UseItemWithSelf(ITEM_RUNE_UH); Sleep(1000); end; if not Attacking then begin UpdateWorld; for x := 0 to Creatures.Count - 1 do begin UpdateWorld; if Creatures.Creature[x].ID <> MotherSlime then begin if (Creatures.Creature[x].Name <> Self.Name) and Creatures.Creature[x].NPC then begin UpdateWorld; X1 := Creatures.Creature[x].X; Y1 := Creatures.Creature[x].Y; if (X1 - Self.X = 1) or (X1 - Self.X = 0) or (X1 - Self.X = -1) then begin UpdateWorld; if (Y1 - Self.Y = 1) or (Y1 - Self.Y = 0) or (Y1 - Self.Y = -1) then begin if Creatures.Creature[x].Health>70 then Begin Creatures.Creature[x].Attacking := true; Break; end; end; end; end; end; end; end; else begin if self.Health < KillAtHp then Begin PlaySound('d:\ouch.wav'); UpdateWorld; for x := 0 to Creatures.Count - 1 do begin UpdateWorld; if Creatures.Creature[x].ID = MotherSlime then begin if (Creatures.Creature[x].Name <> Self.Name) and Creatures.Creature[x].NPC then Creatures.Creature[x].Attacking := true; StrongWeapon:= GetItemFromOpenBackpack(StrongWeaponID); if StrongWeapon <> nil then StrongWeapon.MoveToBody(Self.RightHand, 0); Break; end; end; end; if Self.Mana < MinMana then begin UpdateWorld; for container := 0 to Self.Containers.Count - 1 do begin UpdateWorld; for item := 0 to Self.Containers.Container[container].Count - 1 do begin UpdateWorld; if Self.Containers.Container[container].Item[item].ID = Food_Id then Self.Containers.Container[container].Item[item].Use; end; end; end; end; Sleep(1000); end; end;
Gdy w ręku nie ma spearów/kamyków, postać się wylogowuje:
while not terminated do begin UpdateWorld; if Self.RightHand.ID = 0 then Self.Logout(true); sleep(500); end;
Wyślij wiadomość, gdy wpadnie x% skilla:
Const FriendName = 'Mateusz Dragon Wielki' begin UpdateWorld; X := Self.Skills.Sword.Percentage; Y := Self.Skills.Shielding.Percentage; X1 := Self.Skills.Axe.Percentage; Y1 := Self.Skills.Club.Percentage; Z := Self.Skills.Fist.Percentage; Z1 := Self.Skills.Distance.Percentage XX := Self.Skills.Magic.Percentage; while not terminated do begin UpdateWorld; if X <> Self.Skills.Sword.Percentage then begin Self.PrivateMessage(FriendName,intToStr(100 - Self.Skills.Sword.Percentage) + '% to Sword level ' + IntToStr(Self.Skills.Sword.Level + 1)); X := Self.Skills.Sword.Percentage; sleep(1500); end; if Y <> Self.Skills.Shielding.Percentage then begin Self.PrivateMessage(FriendName, IntToStr(100 - Self.Skills.Shielding.Percentage) + '% to Shield level ' + IntToStr(Self.Skills.Shielding.Level + 1)); Y := Self.Skills.Shielding.Percentage; Sleep(1500); end; if X1 <> Self.Skills.Axe.Percentage then begin Self.PrivateMessage(FriendName,intToStr(100 - Self.Skills.Axe.Percentage) + '% to Axe level ' + IntToStr(Self.Skills.Axe.Level + 1)); X1 := Self.Skills.Axe.Percentage; sleep(1500); end; if Y1 <> Self.Skills.Club.Percentage then begin Self.PrivateMessage(FriendName,intToStr(100 - Self.Skills.Club.Percentage) + '% to Club level ' + IntToStr(Self.Skills.Club.Level + 1)); Y1 := Self.Skills.Club.Percentage; sleep(1500); end; if Z <> Self.Skills.Fist.Percentage then begin Self.PrivateMessage(FriendName,intToStr(100 - Self.Skills.Fist.Percentage) + '% to Fist level ' + IntToStr(Self.Skills.Fist.Level + 1)); Z := Self.Skills.Fist.Percentage; sleep(1500); end; if Z1 <> Self.Skills.Distance.Percentage then begin Self.PrivateMessage(FriendName,intToStr(100 - Self.Skills.distance.Percentage) + '% to Distance level ' + IntToStr(Self.Skills.Distance.Level + 1)); Z1 := Self.Skills.Distance.Percentage; sleep(1500); end; if XX <> Self.Skills.Magic.Percentage then begin Self.PrivateMessage(Self.Name,intToStr(100 - Self.Skills.Magic.Percentage) + '% to Magic level ' + IntToStr(Self.Skills.Magic.Level + 1)); XX := Self.Skills.Magic.Percentage; sleep(1500); end; sleep(100); end; end;
Zbieranie spearów z ziemi do prawej ręki:
const ITEM_SPEAR_ID = 3277; AMOUNT = 10; var Item: TItem; Tile: TTile; 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; function GetItemOnTile(ID: integer; Tile: TTile): TItem; var Z: integer; begin Result := nil; for Z := 0 to Tile.Count - 1 do begin if Z >= Tile.Count then Break; if Tile.Item[Z].ID = ID then begin Result := Tile.Item[Z]; Exit; end; end; end; begin while not Terminated do begin UpdateWorld; if Self.RightHand.Amount <= Amount then begin UpdateWorld; //Northwest Tile := GetTileFromXYZ(Self.X - 1, Self.Y - 1, Self.Z); Item := GetItemOnTile(ITEM_SPEAR_ID, Tile); if Item <> nil then Item.MoveToBody(Self.RightHand,0); //North Tile := GetTileFromXYZ(Self.X, Self.Y - 1, Self.Z); Item := GetItemOnTile(ITEM_SPEAR_ID, Tile); if Item <> nil then Item.MoveToBody(Self.RightHand,0); //Northeast Tile := GetTileFromXYZ(Self.X + 1, Self.Y - 1, Self.Z); Item := GetItemOnTile(ITEM_SPEAR_ID, Tile); if Item <> nil then Item.MoveToBody(Self.RightHand,0); //West Tile := GetTileFromXYZ(Self.X - 1, Self.Y, Self.Z); Item := GetItemOnTile(ITEM_SPEAR_ID, Tile); if Item <> nil then Item.MoveToBody(Self.RightHand,0); //Center Tile := GetTileFromXYZ(Self.X, Self.Y, Self.Z); Item := GetItemOnTile(ITEM_SPEAR_ID, Tile); if Item <> nil then Item.MoveToBody(Self.RightHand,0); //East Tile := GetTileFromXYZ(Self.X + 1, Self.Y, Self.Z); Item := GetItemOnTile(ITEM_SPEAR_ID, Tile); if Item <> nil then Item.MoveToBody(Self.RightHand,0); //Southwest Tile := GetTileFromXYZ(Self.X - 1, Self.Y + 1, Self.Z); Item := GetItemOnTile(ITEM_SPEAR_ID, Tile); if Item <> nil then Item.MoveToBody(Self.RightHand,0); //South Tile := GetTileFromXYZ(Self.X, Self.Y + 1, Self.Z); Item := GetItemOnTile(ITEM_SPEAR_ID, Tile); if Item <> nil then Item.MoveToBody(Self.RightHand,0); //Southeast Tile := GetTileFromXYZ(Self.X + 1, Self.Y + 1, Self.Z); Item := GetItemOnTile(ITEM_SPEAR_ID, Tile); if Item <> nil then Item.MoveToBody(Self.RightHand,0); end; Sleep(200); end; end;
Alarm, gdy mało many:
Const MinMana = 50 AlertPath = 'C:/Windows/Media/Notify.wav' while not terminated do begin UpdateWorld; if Self.Mana <= MinMana then PlaySound(AlertPath); Sleep(500); end;
Alarm, gdy brak food w BP:
Const FoodID = 1111 // WPISZ ID FOODA MusicPath = 'C:\Windows\Media\Notify.wav' while not terminated do begin UpdateWorld; a:=0; For x:= 0 to Self.Containers.Count - 1 do begin for y := 0 to Self.Containers.Container[x].Count - 1 do begin if Self.Containers.Container[x].Item[y].ID = FoodID then a := 1; Sleep(100); end; sleep(100); end; sleep(100); if a = 0 then PlaySound(MusicPath); end;
Alarm, gdy Twoja postać, nie rusza się xx sekund:
const MaxIdleSeconds = 15; AudioFile = 'D:\WINDOWS\Media\ringout.wav'; var LastX: integer; LastY: integer; IdleCount: integer; begin LastX := 0; LastY := 0; IdleCount := 0; while not Terminated do begin UpdateWorld; if ((Self.X = LastX) and (Self.Y = LastY)) then Inc(IdleCount) else IdleCount := 0; if IdleCount >= MaxIdleSeconds then PlaySound(AudioFile); LastX := Self.X; LastY := Self.Y; Sleep(1000); end; end;
Alarm, gdy mało cap:
Const cap = 10 while not terminated do begin UpdateWorld; if self.capacity < cap then PlaySound('C:\Windows\Media\notify.wav'); Sleep(100); end;
Alarm, gdy zostanie xx potionów/manasów:
Const tItem = 'mana potions...'; iMin = 20; //Minimum potions AlertFrom = 'C:/Windows/Media/Notify.wav'; Var iItem : integer; procedure Event_Notice(Text: String); begin if Pos(tItem, Text) = 0 then Exit; Delete(Text, 1, 13); iItem := StrToInt(Copy(Text, 1, Pos(' ', Text) - 1)); end; While not terminated do begin iItem := 0; updateworld; ProcessEvents; if iItem <> 0 then begin if iItem < iMin then begin PlaySound(AlertFrom); end; end; end;
Zamiana GP w platinium coins
var Coins: integer; Finished: boolean; function GetCreatureByName(Name: string): 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].Name = Name then begin Result := Creatures.Creature[x]; Exit; end; end; end; procedure Event_Message(Channel: integer; Name, Text: String); begin UpdateWorld; Creature := GetCreatureByName(Name); if Creature = nil then Exit; if Creature.NPC then begin if Pos('platinum', Text) <> 0 then begin Self.Say(IntToStr(Coins)); Sleep(1000); Self.Say('yes'); Sleep(1000); Self.Say('bye'); Finished := True; end; end; end; procedure Event_Notice(Text: String); begin if Pos('gold coins', Text) = 0 then Exit; Delete(Text, 1, 13); Coins := IntToStr(Copy(Text, 1, Pos(' ', Text) - 1)) div 100; if Coins <> 0 then begin Self.Say('hi'); Sleep(1000); Self.Say('change gold'); end; end; begin Finished := False; UpdateWorld; Self.Containers.UseItemWithSelf(3031); while ((not Terminated) and (not Finished)) do begin ProcessEvents; Sleep(100); end; end;
Używanie Obsidian Knife:
onst obsidian_knife = 5908; skin_body = [4011, 4047, 4052, 4057]; function searchIntArray(id:integer): boolean; var i: integer; begin result := false; for i := low(skin_body) to high(skin_body) do begin if skin_body[i] = 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 SkinBodies(id:integer): Boolean; var x, y: integer; knife: TItem; t: integer; begin UpdateWorld; knife := GetItemFromOpenBackpack(obsidian_knife); if knife = nil then begin Self.DisplayText('An Obsidian Knife could not be found, please open a container with it.'); 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; knife := GetItemFromOpenBackpack(obsidian_knife); if knife <> nil then begin knife.UseWithGround(Self.X+X, Self.Y+Y, Self.Z); Self.DisplayText('Attempted to skin a creature with the ID ' + 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; SkinBodies(skin_body); Sleep(100); end; end;
Screen, gdy awansujesz:
var Level: integer; FistLevel: integer; MagicLevel: integer; ClubLevel: integer; SwordLevel: integer; DistanceLevel: integer; AxeLevel: integer; ShieldLevel: integer; FishLevel: integer; begin UpdateWorld; Level := Self.Level; FistLevel:= Self.Skills.Fist.Level; MLevel := Self.Skills.Magic; ClubLevel:= Self.Skills.Club.Level; SwordLevel:= Self.Skills.Sword.Level; DistanceLevel:= Self.Skills.Distance.Level; Axe := Self.Skills.Axe.Level; Shielding := Self.Skills.Shielding; FishLevel:= Self.Skills.Fishing.Level; while not Terminated do begin UpdateWorld; if Level <> Self.Level then begin Level := Self.Level; Sleep(1000); ScreenShot('c:\level' + IntToStr(Level) + '.jpg'); Level := Self.Level; end; if FistLevel <> Self.Skills.Fist.Level then begin FistLevel:= Self.Skills.Fist.Level; Sleep(1000); ScreenShot('c:\FistLevel' + IntToStr(FistLevel) + '.jpg'); FistLevel:= Self.Skills.Fist.Level; end; if MLevel <> Self.Skills.Magic then begin MLevel := Self.Skills.Magic; Sleep(1000); ScreenShot('c:\Mlevel' + IntToStr(MLevel) + '.jpg'); MLevel := Self.Skills.Magic; end; if ClubLevel <> Self.Skills.Club.Level then begin ClubLevel:= Self.Skills.Club.Level; Sleep(1000); ScreenShot('c:\ClubLevel' + IntToStr(ClubLevel) + '.jpg'); ClubLevel:= Self.Skills.Club.Level; end; if Swordlevel <> Self.Skills.Sword.Level then begin SwordLevel:= Self.Skills.Sword.Level; Sleep(1000); ScreenShot('c:\Swordlevel' + IntToStr(Swordlevel) + '.jpg'); SwordLevel:= Self.Skills.Sword.Level; end; if DistanceLevel <> Self.Skills.Distance.Level then begin DistanceLevel:= Self.Skills.Distance.Level; Sleep(1000); ScreenShot('c:\DistanceLevel' + IntToStr(DistanceLevel) + '.jpg'); DistanceLevel:= Self.Skills.Distance.Level; end; if Axe <> Self.Skills.Axe.Level then begin Axe := Self.Skills.Axe.Level; Sleep(1000); ScreenShot('c:\Axe' + IntToStr(Axe) + '.jpg'); Axe := Self.Skills.Axe.Level; end; if Shielding <> Self.Skills.Shielding then begin Shielding := Self.Skills.Shielding; Sleep(1000); ScreenShot('c:\Shielding' + IntToStr(Shielding) + '.jpg'); Shielding := Self.Skills.Shielding; end; if FishLevel <> Self.Skills.Fishing.Level then begin FishLevel:= Self.Skills.Fishing.Level; Sleep(1000); ScreenShot('c:\FishLevel' + IntToStr(FishLevel) + '.jpg'); FishLevel:= Self.Skills.Fishing.Level; end; Sleep(1000); end; end;
Rzuca m-wall przed kogoś
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; begin while not Terminated do begin UpdateWorld; if Self.Attacking <> 0 then begin Creature := GetCreatureByID(Self.Attacking); if Creature <> nil then begin case Creature.Direction of 0: Self.Containers.UseItemWithGround(3180, Creature.X, Creature.Y - 2, Creature.Z); 1: Self.Containers.UseItemWithGround(3180, Creature.X + 2, Creature.Y, Creature.Z); 2: Self.Containers.UseItemWithGround(3180, Creature.X, Creature.Y + 2, Creature.Z); 3: Self.Containers.UseItemWithGround(3180, Creature.X - 2, Creature.Y, Creature.Z); end; end; end; Sleep(2000); end; end;
Narazie to wszystko w najbliższym czasie postaram się dodać więcej.
Ostatnio edytowany przez Dynamo (2010-04-22 16:50:02)
Piszę poprawnie po Polsku.
Offline
Dla mnie do NG bardziej przydatne
NG rlz
Na pewno się przyda.
Offline