Путь Лучника/Номада/Друида

Умные люди стремятся владеть информацией, мудрые - результатом её обработки!

В данном разделе находятся ответы на часто задаваемые вопросы и иная наиболее важная информация нашего шарда
  • Автор
  • Сообщение
Не в сети
Neophyte
Сообщения: 3
Зарегистрирован: 26 июл 2024, 17:35
Репутация: 0

Re: Путь Лучника/Номада/Друида

Сообщение Vortal »

Есть ли смысл качать вторым классом барда, для ПВЕ онли? будет ли он писмейкать голдов интересно или злых ПВП отцов в данже ))

Не в сети
Grandmaster
Grandmaster
Сообщения: 491
Зарегистрирован: 11 фев 2021, 20:07
Репутация: 14

Re: Путь Лучника/Номада/Друида

Сообщение Turner »

бард может быть только первым классом.

Не в сети
Neophyte
Сообщения: 1
Зарегистрирован: 20 ноя 2025, 07:56
Репутация: 0

Re: Путь Лучника/Номада/Друида

Сообщение k8sowl »

Спасибо за гайд!

Допиплил чуток скрипт на фишинг, добавил Tracking ( 5 суток, полет нормальный ) и принятие реса от лодки, ибо ГЗ в моей округе дырявое.

Код: Выделить всё

Program Fishing;
type FishR = record
tile:word;
px,py,pz:integer;
end;

var
ItemCount,i:Integer;
FishP: array [0..150] of FishR;
Pole,Eat,Tracktimer:Cardinal;
const
Maps=$0000; //??????
MapBag=$6908DC84; //??????
BoatCap=true; // ??????? ?? ?????
FilePath = 'Z:\Stealth\Scripts\ranger\fishing\'; // ???? ? ????? ? ??????? ??? ??????? - ???????? equal ???????? ?????? - ?? ????? ????

{$Include 'all.inc'}

Procedure GetFishTiles(s:String;WPos:Integer);
begin
  s := s + ' ';
  FishP[WPos].tile:=StrToInt(Copy(s,1,Pos(' ',s)-1));
  Delete(s,1,Pos(' ',s));
  FishP[WPos].px:=StrToInt(Copy(s,1,Pos(' ',s)-1));
  Delete(s,1,Pos(' ',s));
  FishP[WPos].py:=StrToInt(Copy(s,1,Pos(' ',s)-1));
  Delete(s,1,Pos(' ',s));
  FishP[WPos].pz:=StrToInt(Copy(s,1,Pos(' ',s)-1));
  Delete(s,1,Pos(' ',s));
end;

Procedure GetCoord;
var
List:TStringList;
i:integer;
begin
  List:=TStringList.Create;
  List.LoadFromFile(FilePath+CharName()+'.txt');
  for i := 0 to List.Count-1 do
  GetFishTiles(List.strings[i],i);
  ItemCount:=i;
end;

procedure camping;
begin
  finddistance:=2;
  FindType($0DE1,Ground);
  If FindCount > 0 Then
    Begin
    Wait(100);
    UseObject(FindItem);
    Wait(100);
    End;
  finddistance:=16;
end;

procedure redcheck;
begin
  finddistance:=25;
  findvertical:=255;
  if ((WarTargetID>0) {or (FindNotoriety(-1, 3) > 0)} or (FindNotoriety(-1, 4) > 0) or (FindNotoriety(-1, 6) > 0)) then
  begin
    UOSay('.guards');
    wait(5000);
  end;
  wait(50);
  While not connected or dead do
  begin
    wait(1000);
    waitgump('1');
  end;
  finddistance:=2;
end;

Procedure Change;
var
chb, chg : integer;
begin
  checkdead;
  if not dead then
  begin
    CheckSave;
    redcheck;
    finddistance:=2;
    chg:=CountGround($0DBF);
    chb:=Count($0DBF);
    if (chb> 0) and (ObjAtLayer(LhandLayer) <= 0) then
    begin
      findtype($0DBF, backpack);
      Equip(LhandLayer,finditem);
      AddToSystemJournal('Fishing poles in the backpack: '+inttostr(chb-1));
      wait(1000);
    end;
    if (chg> 0) and (ObjAtLayer(LhandLayer) <= 0) then
    begin
      findtype($0DBF, ground);
      Equip(LhandLayer,finditem)
      AddToSystemJournal('Fishing poles on the ground: '+inttostr(chg-1));
      wait(1000);
    end;
    if (chb+chg)<1 then
    begin
      AddToSystemJournal('No more fishing poles left!');
      checksave;
      redcheck;
      checkdead;
    end;

  end;
  Wait(1000);
end;

procedure tracking;
begin
  if (GetTickCount > (Tracktimer + (2 * 6 * 1000))) then
  begin
    Wait (200);
    Tracktimer := GetTickCount;
    If MenuPresent Then CloseMenu;
    UseSkill('Tracking');
    Wait(1000);
  end;
end;

Procedure Fish(tile:Word;x,y,z:Integer);
var
FBegin:TDateTime;
begin

  Tracking;
  camping;

  FBegin:=Now;
  while (not InJournalBetweenTimes('seem to be|not in your line',FBegin,Now)>=0) do
  begin
    If TargetPresent then
    CancelTarget;
    checkdead;
    redcheck;
    Change;
    UseObject(ObjAtLayer(LHandLayer));
    WaitForTarget(4000);
    TargetToTile(tile,x,y,z);
    WaitJournalLine(Now, 't fish there|a nice fish!|seem to be|not in your line|You find a message|an old tattered|not a fish!', 20000);
    redcheck;
    checkdead;
    If (GetType(Pole) = 0) then
    begin
      FindType($0DBF,ground);
      if FindCount > 0 then
      Pole:=finditem
      else
      checksave;
      redcheck;
    end;
    CheckSave;
    checkdead;
    WaitConnection(3000);
  end;
end;

Procedure FishS;
var
i:Integer;
FishT:array[1..4] of Cardinal;
begin
  checkdead;
  FishT[1] := $09CC;
  FishT[2] := $09CE;
  FishT[3] := $09CD;
  FishT[4] := $09CF;
  for i := 1 to 4 do
  stack(FishT[i],$0000);
  checkdead;
end;

Procedure Cleaner;
var
ThrowItem: array of Cardinal;
q,y: integer;
fl: boolean;
m: word;

begin
  FindDistance := 2;
  ThrowItem:=[$170D,$170B,$170F,$1711,$14ED,$099F];
  fl:=false;
  for q:=0 to (getArrayLength(ThrowItem)-1) do
  begin
    m:=Count(ThrowItem[q]);
    If m>0 then
    begin
      for y:=0 to (m-1) do
      begin
        checksave;
        redcheck;
        checkdead;
        findtype(ThrowItem[q],backpack);
        MoveItem(finditem, 0, Ground, 0,0,0);
        wait(500);
      end;
      fl:=true;
    end;
  end;
  m:=Count(Maps);
  if m>0 then
  for q:=0 to (m-1) do
  begin
    checksave;
    redcheck;
    checkdead;
    findtype(Maps,backpack);
    MoveItem(finditem, 0, MapBag, 0,0,0);
    wait(500);
  end;
  if BoatCap then
  for q:=0 to (getArrayLength(ThrowItem)-1) do
  begin
    findtype(ThrowItem[q], ground);
    m:=FindCount;
    If m>0 then
    for y:=0 to (m-1) do
    begin
      CancelWaitTarget;
      CancelTarget;
      checksave;
      redcheck;
      checkdead;
      findtype(ThrowItem[q], ground);
      UOsay('Throw Away');
      WaitForTarget(1000);
      if TargetPresent then TargetToObject(finditem);
      wait(1000);
    end;
  end;
  CancelWaitTarget;
  CancelTarget;
end;

begin
  SetArStatus(true);
  Checkdead;
  Eat:=0;
  GetCoord;
  Disarm;
  If MenuHookPresent Then CancelMenu;
  AutoMenu('Select a category','(last)');
  AutoMenu('Select a creature','(last)');
  while true do
  begin
    FindDistance := 2;
    FindVertical := 255;
    for i:=0 to ItemCount-1 do
    begin
      if (Timer > (Eat + (15 *60 *1000))) then
      begin
        finddistance:=2;
        Hungry(1,ground);
        Eat :=Timer;
        finddistance:=16;
      end;
      Cleaner;
      Fish(FishP[i].tile,FishP[i].px,FishP[i].py,FishP[i].pz);
      if Weight > 200 then FishS;
      if Weight > 300 then checksave;
      redcheck;
    end;
  end;
end.