Путь Лучника/Номада/Друида
- Автор
- Сообщение
-
Не в сети
- Neophyte
- Сообщения: 3
- Зарегистрирован: 26 июл 2024, 17:35
- Репутация: 0
Re: Путь Лучника/Номада/Друида
Есть ли смысл качать вторым классом барда, для ПВЕ онли? будет ли он писмейкать голдов интересно или злых ПВП отцов в данже ))
-
Не в сети
- Grandmaster

- Сообщения: 491
- Зарегистрирован: 11 фев 2021, 20:07
- Репутация: 14
Re: Путь Лучника/Номада/Друида
бард может быть только первым классом.
-
Не в сети
- Neophyte
- Сообщения: 1
- Зарегистрирован: 20 ноя 2025, 07:56
- Репутация: 0
Re: Путь Лучника/Номада/Друида
Спасибо за гайд!
Допиплил чуток скрипт на фишинг, добавил Tracking ( 5 суток, полет нормальный ) и принятие реса от лодки, ибо ГЗ в моей округе дырявое.
Допиплил чуток скрипт на фишинг, добавил 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.