Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Fishing DRW

Only working scripts
v26RuS
Novice
Novice
Posts: 61
Joined: 18.05.2008 16:07
Location: DRW
Contact:

Fishing DRW

Post by v26RuS »

Фишинг (с лодки) для ДРВ взят за основу скрипт Edred'a и немного доработан, скрипт умеет переплывать с места на места.
Тестировал скрипт сам прокачался на нем до гма.
Удачной ловли рыбы.

Code: Select all

program Fishing; 
// (c) v26RuS (Galiano{ASTARTA} DRW)
// Залазием на лодку прописываем трюм кидаем beckpack с пустыми сумками и вперед плывет в направлении цифры 1 на нумпаде)
{$Include 'all.inc'} 

const 
HatchID = $40338556;         // Сериал трюма 
FPoleType = $0DC0;            // Тип удочки 
BoxOfBags = $0E75;            // тип ящика с мешками 
EmptyBags = $0E76;            // тип пустого мешка 
{Сообщения} 
Mes1 = 'You pull out'; 
Mes2 = 'You fish a while, but fail'; 
Mes3 = 'There are no fish here.'; 
Mes4 = 'That is too far away.'; 
Mes5 = 'Try fishing in water.'; 
Mes6 = 'Вы не смогли выловить'; 

var 
x, y, k, n, d, s, scard, snom, m1, m2, m3, m4, m5, m6 : integer; 
ctime : TDateTime; 
CurBagID : Cardinal; 
CurBoxID : Cardinal; 
temp1 : Cardinal; 
FishResult : array[1..8] of Cardinal; 
SumResult : array[1..10] of Integer; 
FlagMagic : Integer; 
FoodID : Cardinal;

   function GetEmptyBag : Cardinal; 
   begin 
      Result := 0; 
      UseObject(HatchID); 
      wait(1000); 
      checksave; 
      CurBoxID := findtype(BoxOfBags, HatchID); 
      if CurBoxID = 0 then 
      begin 
         Addtosystemjournal( 'Не смог найти ящик с мешками'); 
         exit; 
      end; 
      UseObject(CurBoxID); 
      wait(1000); 
      checksave; 
      temp1 := findtype(EmptyBags, CurBoxID); 
      if temp1 = 0 then 
      begin 
         Addtosystemjournal( 'Не смог найти мешок в ящике'); 
         exit; 
      end; 
      MoveItem(finditem, 1, HatchID, 0, 0, 0); 
      wait(1000); 
      checksave; 
      Result := temp1; 
   end; 

procedure virar; 
var TimeInterno : TDateTime; 
   loop1, loop2 : integer; 
    
begin 
   TimeInterno := Now; 
   UOSay('Turn Left'); 
   wait(200); 
   if (inJournalBetweenTimes('boat|cannot', TimeInterno, Now) >= 0) then //Obstaculo 
   begin 
      TimeInterno := Now; 
      loop1 := 0; 
      UOSay('Right'); 
      repeat 
         wait(100) 
         loop1 := loop1 + 1; 
      until (inJournalBetweenTimes('boat|cannot|stopped', TimeInterno, Now) >= 0) OR (loop1 >= 50); 
      if (loop1 < 50) then //Obstaculo a direita. 
      begin 
         TimeInterno := Now; 
         loop2 := 0; 
         UOSay('Left'); 
         repeat 
            wait(100) 
            loop2 := loop2 + 1; 
         until (inJournalBetweenTimes('boat|cannot|stopped', TimeInterno, Now) >= 0) OR (loop2 >= 50); 
         if (loop2 < 50) then //Obstaculo a esquerda. 
         begin 
            UOSay('Back'); 
            wait(5000); 
            virar; 
         end; 
      end; 
   end; 
end;


procedure mover; 
var TimeInterno : TDateTime; 
   loop : integer; 
             
begin 
   TimeInterno := Now; 
   loop := 0; 
   UOSay('Forward'); 
   Addtosystemjournal('Переплываем на новое место ловли рыбы')
   repeat 
      wait(100) 
      loop := loop + 1; 
   until (inJournalBetweenTimes('stopped', TimeInterno, Now) >= 0) OR (loop >= 150); 
   if (loop < 150) then //Obstaculo a frente. 
   begin 
      virar; 
      mover; 
   end 
   else 
   begin 
      UOSay('Stop'); 
      wait(200); 
   end; 
end;

       
begin 
   for k := 1 to 10 do 
      SumResult[k] := 0; 
   FishResult[1] := $09CC;         // рыба 
   FishResult[2] := $09CF;         // рыба 
   FishResult[3] := $09CE;         // рыба 
   FishResult[4] := $09CD;         // рыба 
   FishResult[5] := $14EB;         // карты 
   FishResult[6] := $14EC;         // карты 
   FishResult[7] := $0DCA;         // fish net 
   FishResult[8] := $0DD6;         // prize 
   scard := 0; 
   CurBagID := GetEmptyBag; 
   if CurBagID = 0 then exit; 
   snom := 1; 
   UseObject(CurBagID); 
   wait(1000); 
   checksave; 
   s := 0; 
   repeat 
      // подсчет количества итемов в трюме 
      findtype($FFFF,HatchID); 
      if findcount > 0 then s := s + 1; 
      for k := 1 to 8 do 
      begin 
         if (GetType(finditem) = FishResult[7]) then 
         begin 
            SumResult[8] := GetQuantity(finditem); 
            break; 
         end; 
         if (GetType(finditem) = FishResult[8]) then 
         begin 
            SumResult[9] := GetQuantity(finditem); 
            break; 
         end; 
         if GetType(finditem) = FishResult[k] then SumResult[k] := GetQuantity(finditem); 
      end; 
      ignore(finditem); 
      wait(50); 
   until findcount = 0; 
   ignorereset; 
   repeat 
      UseObject(HatchID); 
      wait(1000); 
      checksave; 
FoodID := FindType($097B,backpack);
wait(500)
UseObject(FoodID);
wait(500)
UseObject(FoodID);
      for x := -6 to 6 do 
      begin 
         for y := -6 to 6 do 
         begin 
            // Если схема облова другая - уберите следующую строку: 
//            if (y < 2) AND (x > -3) AND (x < 3) then continue; 
            repeat 
               if scard >= 250 then 
               begin 
                  // взять новый мешок 
                  CurBagID := GetEmptyBag; 
                  if CurBagID = 0 then exit; 
                  UseObject(CurBagID); 
                  wait(1000); 
                  checksave; 
                  scard := 0; 
                  s := s + 1; 
                  snom := snom + 1; 
               end; 
               if TargetPresent then CancelTarget; 
               waitconnection(3000); 
               ctime := Now; 
               UseObject(ObjAtLayerEx(LHandLayer,self)); 
               WaitForTarget(5000); 
               If TargetPresent then TargetToTile(0, GetX(self)+x, GETY(self)+y, 251); 
               k := 0; 
               repeat 
                  wait(500); 
                  k := k + 1; 
                  checksave; 
                  m1 := InJournalBetweenTimes(Mes1, ctime, Now); 
                  m2 := InJournalBetweenTimes(Mes2, ctime, Now); 
                  m3 := InJournalBetweenTimes(Mes3, ctime, Now); 
                  m4 := InJournalBetweenTimes(Mes4, ctime, Now); 
                  m5 := InJournalBetweenTimes(Mes5, ctime, Now); 
                  m6 := InJournalBetweenTimes(Mes6, ctime, Now); 
               until (k > 20) or (m1<>-1) or (m2<>-1) or (m3<>-1) or (m4<>-1) or (m5<>-1); 
	       if k > 20 then
		begin
			wait(4000);
			k := 0;
 		        ClearJournal; 
			Addtosystemjournal('Лаг с западанием на ловлю')
	       end;

               if m1 <> -1 then 
               begin 
                  k := 1; 
                  for n := 1 to 8 do 
                  begin 
                     findtype(FishResult[n],ground); 
                     if finditem = 0 then continue; 
                     d := GetQuantity(finditem); 
                     if (n = 5) OR (n = 6) then 
                        MoveItem(finditem, d, CurBagID, 0, 0, 0) 
                     else 
                        MoveItem(finditem, d, HatchID, 0, 0, 0); 
                     wait(1000); 
                     checksave; 
                     // Перепроверим, переместился ли объект 
                     findtype(FishResult[n],ground); 
                     if finditem > 0 then 
                     begin 
                        // Раз не переместился - значит был реконнект 
                        UseObject(HatchID); 
                        wait(1000); 
                        checksave; 
                        UseObject(CurBagID); 
                        wait(1000); 
                        checksave; 
                        d := GetQuantity(finditem); 
                        if (n = 5) OR (n = 6) then 
                           MoveItem(finditem, d, CurBagID, 0, 0, 0) 
                        else 
                           MoveItem(finditem, d, HatchID, 0, 0, 0); 
                        wait(1000); 
                        checksave; 
                     end; 
                     if d = 0 then d := 1; 
                     if FlagMagic = 1 then SumResult[8] := SumResult[8] + d; 
                     if FlagMagic = 2 then SumResult[9] := SumResult[9] + d; 
                     if FlagMagic = 3 then SumResult[10] := SumResult[10] + d; 
                     if FlagMagic = 0 then SumResult[n] := SumResult[n] + d; 
                     if (n = 5) OR (n = 6) then scard := scard + 1; 
                     // Сообщения о результатах лова: 
                     if (n <= 4) and (FlagMagic = 0) then Addtosystemjournal( inttostr(x) + inttostr(y) + ': сбросил в трюм ' + inttostr(d) + ' рыбы типа ' + inttostr(n) + ' из ' + inttostr(SumResult[n]) + '. В трюме ' + inttostr(s) + ' итемов'); 
                     if (n = 5) OR (n = 6) then Addtosystemjournal( inttostr(x) + inttostr(y) + ': сбросил в мешок N' + inttostr(snom) + ' карту. Всего в мешке ' + inttostr(scard) + ' карт'); 
                     if (n = 7) then Addtosystemjournal( inttostr(x) + inttostr(y) + ': сбросил в трюм ' + inttostr(d) + ' fish net из ' + inttostr(SumResult[9]) + '. В трюме ' + inttostr(s) + ' итемов'); 
                     if (n = 8) then Addtosystemjournal( inttostr(x) + inttostr(y) + ': сбросил в трюм ' + inttostr(d) + ' prize or rate fish из ' + inttostr(SumResult[8]) + '. В трюме ' + inttostr(s) + ' итемов'); 
                     if s > 250 then exit; 
                  end; 
               end; 
            until (m3<>-1) or (m4<>-1) or (m5<>-1); 
         end; 
      end; 
      ClearJournal; 
      Mover; 
      wait(500);
   until False; 
End.
Last edited by v26RuS on 18.07.2008 20:44, edited 1 time in total.
RaTaMaHaTTa
Novice
Novice
Posts: 89
Joined: 16.06.2008 12:22
Location: <||TORCHKI||>
Contact:

Post by RaTaMaHaTTa »

Да всё отлично пашет. Токо если стоиш долго на скрипте нужно решать вопрос с трули рыбкой и сетками.
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Post by Unholy »

RaTaMaHaTTa wrote:Да всё отлично пашет. Токо если стоиш долго на скрипте нужно решать вопрос с трули рыбкой и сетками.
Как оно у тебя работает - неизвесно!
У меня выдает ошибку
15:16:19 [Unholy]: Compiling
15:16:19 [Unholy]: Compiler: [Error] (Fishing.txt at 224:59): Unknown identifier 'MagicF'
15:16:19 [Unholy]: Compiling failed
Что это за переменная? за что она отвечает?
v26RuS
Novice
Novice
Posts: 61
Joined: 18.05.2008 16:07
Location: DRW
Contact:

Post by v26RuS »

Я просто вносил изменения в скрипт и кое что не подтер... теперь заново залил все ок работает...
Невозможное возможнО!
RaTaMaHaTTa
Novice
Novice
Posts: 89
Joined: 16.06.2008 12:22
Location: <||TORCHKI||>
Contact:

Post by RaTaMaHaTTa »

Unholy wrote:
RaTaMaHaTTa wrote:Да всё отлично пашет. Токо если стоиш долго на скрипте нужно решать вопрос с трули рыбкой и сетками.
Как оно у тебя работает - неизвесно!
У меня выдает ошибку
15:16:19 [Unholy]: Compiling
15:16:19 [Unholy]: Compiler: [Error] (Fishing.txt at 224:59): Unknown identifier 'MagicF'
15:16:19 [Unholy]: Compiling failed
Что это за переменная? за что она отвечает?
Магик рыбка это )
Maruk1
Neophyte
Neophyte
Posts: 13
Joined: 14.02.2011 21:52

Post by Maruk1 »

Трюм прописал типы проверил, удочку в руку дал, а ловить не хочет (((
15:52:36:088 [Mar]: Compiled succesfully
15:52:41:963 [Mar]: UseObject error: Object not found.
15:52:42:465 [Mar]: UseObject error: Object not found.
15:52:58:128 [Mar]: Лаг с западанием на ловлю

Никак не могу понять что он не находит
bugger
Novice
Novice
Posts: 86
Joined: 02.02.2011 11:21

Post by bugger »

скорей всего не находит удочку, возможно она должна быть экипирована.
Maruk1
Neophyte
Neophyte
Posts: 13
Joined: 14.02.2011 21:52

Post by Maruk1 »

удочку в руки дал, и в пак положил чтобы наверняка. Тоже самое.
Maruk1
Neophyte
Neophyte
Posts: 13
Joined: 14.02.2011 21:52

Post by Maruk1 »

тестил в stealth v.1 пишет что не может найти ящик с мешками, ну я не знаю что делать, айди трюма проверил, типы проверил, ну не знаю в чем проблема. ((((
Pidjak
Posts: 1
Joined: 10.02.2011 19:13

Post by Pidjak »

Program fishing;
{$Include 'all.inc'}
var fishingpole : cardinal;
var mx, my, mz, i, j, ii, is_fish : integer;

BEGIN
Finddistance:=2;
mx := GetX(self);
my := GetY(self);
mz := GetZ(self);

unequip(RHandLayer);
unequip(LHandLayer);
wait(2000);
if (findtype($0DBF, Backpack) <> 0) then fishingpole := finditem;
if (findtype($0DBF, ground) <> 0) then fishingpole := finditem;
wait(2000);
equip(RHandLayer,finditem);

AddToSystemJournal (IntToStr(fishingpole));

While Not Dead do
begin

ClearJournal();
For i := mx-5 to mx+5 do
begin
For j := my-5 to my+5 do
begin
Hungry(1,ground);
AddToSystemJournal ('Now Fishing In: '+IntToStr(i)+' '+IntToStr(j));

while ( InJournal('fish there') = -1 ) and ( InJournal('fish here') = -1 ) and ( InJournal('location') = -1 )
and ( InJournal('far away') = -1 ) and ( InJournal('in water') = -1 ) and ( InJournal('use that on this') = -1 ) do
begin

AddToSystemJournal ('Fish...');

Waittargettile(0, i, j, 251);
UseObject(fishingpole);
Wait(5000);
If WEIGHT > 200 Then
begin
Stack($09CC,-1);
Stack($09CD,-1);
Stack($09CE,-1);
end;
end;
ClearJournal();
end;
end;
end;

END.





Помогите пожалуйста на сервере ломаются удочки, при запуске он удочку одевает, а потом с паки не берет помогите !!
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Post by Fenix »

Функция проверяет стоит ли в левой руке удочка, если нет - ищет её в рюкзаке или на земле, после чего перемещает в руки (если вернуло истину, то удочка должна быть в руках, если ложь - удочек нет ни в рюкзаке, ни на земле):

Code: Select all

const
  WaitTime = 1500;
  WaitLag = 30000;

...

function CheckFishingPole: Boolean;
begin
  if GetType(ObjAtLayer(LhandLayer)) <> $0DBF then
  begin
    fishingpole := FindType($0DBF, Backpack);
    if fishingpole = 0 then fishingpole := FindType($0DBF, Ground);
    Result := fishingpole <> 0;
    if Result then
    begin
      unequip(RHandLayer); 
      CheckLag(WaitLag);
      Wait(WaitTime);
      unequip(LHandLayer);
      CheckLag(WaitLag);
      Wait(WaitTime);
      equip(RHandLayer, fishingpole);
      CheckLag(WaitLag);
      Wait(WaitTime);
    end;
  end else Result := True;
end;
Соответственно, вызов этой функции нужно добавить в цикл ловли рыбы.
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
smileplz
Posts: 1
Joined: 26.08.2011 7:48

Re:

Post by smileplz »

Maruk1 wrote:Трюм прописал типы проверил, удочку в руку дал, а ловить не хочет (((
15:52:36:088 [Mar]: Compiled succesfully
15:52:41:963 [Mar]: UseObject error: Object not found.
15:52:42:465 [Mar]: UseObject error: Object not found.
15:52:58:128 [Mar]: Лаг с западанием на ловлю

Никак не могу понять что он не находит
и у меня такая же проблема :(
teslo
Posts: 1
Joined: 05.01.2012 15:15

Re: Fishing DRW

Post by teslo »

Мужики подскажите в чем проблема? Compiler: [Error] (Fish.sc at 7:12): Semicolon (';') expected
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Fishing DRW

Post by Vizit0r »

google.translate сказал, что
Компилятор: [Error] (Fish.sc на 7:12): точка с запятой (';') ожидается
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Re: Fishing DRW

Post by Scripts Writer »

teslo wrote:Мужики подскажите в чем проблема? Compiler: [Error] (Fish.sc at 7:12): Semicolon (';') expected
Выкладывай код, который выдаёт эту ошибку. Телепаты в отпуске.
Проще научить человека ловить рыбу, чем постоянно ею его кормить. (с) Destruction
Post Reply