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

Tinkering_Necklace. Dragon World

Only working scripts
Blaze
Neophyte
Neophyte
Posts: 13
Joined: 07.08.2008 5:33
Location: [Dark Nazguls]

Post by Blaze »

Есть люди, далёкие от программирования, но играющие в УО. На этом форуме они расчитывают получить помощь, а не отказ в помощи.
А выражение "проще научить человека ловить рыбу чем кормить его ею всегда" растолковывается скорее "научись программировать на паскале и пиши скрипты сам".:)
Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Post by Scripts Writer »

Blaze wrote: А выражение "проще научить человека ловить рыбу чем кормить его ею всегда" растолковывается скорее "научись программировать на паскале и пиши скрипты сам".:)
Именно это я всегда и имею ввиду
RaTaMaHaTTa
Novice
Novice
Posts: 89
Joined: 16.06.2008 12:22
Location: <||TORCHKI||>
Contact:

Post by RaTaMaHaTTa »

Blaze wrote:Есть люди, далёкие от программирования, но играющие в УО. На этом форуме они расчитывают получить помощь, а не отказ в помощи.
А выражение "проще научить человека ловить рыбу чем кормить его ею всегда" растолковывается скорее "научись программировать на паскале и пиши скрипты сам".:)
Ну вобшето ему не кто не сказал пиши скрипт сам :roll:
Там поменять то делов 2 минуты :wink:
И если человек играющий в уо не может заменить типы то уж извини .
Качайтесь на Uo lope.
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

Kynep wrote:Роняет он неки, хоть убей. Без дисконектов и прочего. Щас собрал штук 25 за 30 минут работы. Кароч, дело такое, чар с мешком в паке, пускаю скрипт, наполняет пак и начинает кидать на пол. Т.е. он не видит мешок после реконекта.
Уверен что именно мой скрипт тестил? У меня он не кладет мешок в пак, мешки лежат в суднуке.Там же мешок и наполняется.При заполнении мешок перекидывается в соответствующий сундук.
ShraM
Neophyte
Neophyte
Posts: 15
Joined: 07.07.2008 2:26

Post by ShraM »

RaTaMaHaTTa wrote:
Blaze wrote:Есть люди, далёкие от программирования, но играющие в УО. На этом форуме они расчитывают получить помощь, а не отказ в помощи.
А выражение "проще научить человека ловить рыбу чем кормить его ею всегда" растолковывается скорее "научись программировать на паскале и пиши скрипты сам".:)
Ну вобшето ему не кто не сказал пиши скрипт сам :roll:
Там поменять то делов 2 минуты :wink:
И если человек играющий в уо не может заменить типы то уж извини .
Качайтесь на Uo lope.
8) :roll:
Last edited by ShraM on 09.08.2008 21:33, edited 1 time in total.
ShraM
Neophyte
Neophyte
Posts: 15
Joined: 07.07.2008 2:26

Post by ShraM »

-=JoKeR=- wrote:ShraM, очки купи !
Ну у теа я вижу достнойные очки, а мне без них норм)))
-=JoKeR=-
Novice
Novice
Posts: 153
Joined: 10.02.2008 11:19
Location: [Forest Wars] Ode$$a

Post by -=JoKeR=- »

ShraM wrote:Ну у теа я вижу достнойные очки, а мне без них норм)))
:lol:
Если норм, то почему после того, как я тебе написал причину, ты опять спрашиваешь в чём проблема ? ...
ShraM
Neophyte
Neophyte
Posts: 15
Joined: 07.07.2008 2:26

Post by ShraM »

-=JoKeR=- wrote:
ShraM wrote:Ну у теа я вижу достнойные очки, а мне без них норм)))
:lol:
Если норм, то почему после того, как я тебе написал причину, ты опять спрашиваешь в чём проблема ? ...
Да сори чето не увидал)
dukeduke
Neophyte
Neophyte
Posts: 10
Joined: 23.08.2008 10:00
Contact:

Post by dukeduke »

Попробуйте этот скрипт (парился долго):

Code: Select all

Program Tinker_Necklace; 

const 
Sunduk_With_Iron_and_Tools=$40160e74; 
Sunduk_With_Empty_Bags=$4015fa2e; 
Sunduk_With_Full_Bags=$40160e74; 
Bag=$0E76; 
Tools=$1EBC; 
Ingot=$1BEF; 
Pig=$09BB; 
Necklace=$1085; 

var 
k : integer; 
TimeStart : TDateTime; 
Neck_Bag : Cardinal; 
Quantity : integer; 


procedure Check_Necklace; 
 begin 
  Neck_Bag:=FindType(Bag,Backpack); 
  if Quantity<255 then 
    begin 
      FindType(Necklace,Backpack); 
      if FindCount>0 then 
          while FindCount>0 do
	    begin
		
		MoveItem(FindItem,1,Neck_Bag,0,0,0); 
		wait(250); 
		AddToSystemJournal('В бекпаке есть некласы - перемещаем в мешок!');
		wait(250);
		
		
		UseObject(Neck_Bag); 
		wait(250); 
		FindType(Necklace,Neck_Bag); 
		Quantity:=FindCount; 
		if Quantity=255 then 
		begin 
			AddToSystemJournal(IntToStr(Quantity)+' necklaces на данный момент в мешке.');
			MoveItem(Neck_Bag,1,Sunduk_With_Full_Bags,0,0,0);
			wait(250);
			AddToSystemJournal('Мешок заполнен в backpacke. Берём новый'); 
			UseObject(Sunduk_With_Empty_Bags); 
			wait(250); 
			FindType(Bag,Sunduk_With_Empty_Bags); 
			if FindCount>0 then 
			begin 
				MoveItem(FindType(Bag,Sunduk_With_Empty_Bags),1,Backpack,0,0,0); 
				wait(250); 
				Neck_Bag:=FindType(Bag,Backpack);
			end
			FindType(Necklace,Neck_Bag); 
			Quantity:=FindCount; 
		end;
		FindType(Necklace,Backpack);
	    end;
    end
  else 
    begin 
      MoveItem(Neck_Bag,1,Sunduk_With_Full_Bags,0,0,0); 
      wait(250); 
      Quantity:=0; 
    end 
 end; 


procedure Check_Bag; 
 begin 
  Neck_Bag:=FindType(Bag,Backpack); 
  if FindCount>0 then 
    begin 
      UseObject(Neck_Bag); 
      wait(250); 
      FindType(Necklace,Neck_Bag); 
      Quantity:=FindCount; 
      if Quantity>0 then AddToSystemJournal(IntToStr(Quantity)+' necklaces на данный момент в мешке.'); 
      if Quantity=0 then AddToSystemJournal('Начинаем новую партию изделий.'); 
    end 
  else 
    begin 
      AddToSystemJournal('Мешок не найден в backpacke. Берём новый'); 
      UseObject(Sunduk_With_Empty_Bags); 
      wait(250); 
      FindType(Bag,Sunduk_With_Empty_Bags); 
      if FindCount>0 then 
        begin 
          MoveItem(FindType(Bag,Sunduk_With_Empty_Bags),1,Backpack,0,0,0); 
          wait(250); 
        end 
    end 
 end;      


procedure Check_World_Save; 
 begin 
  if InJournal('saving')<>-1 then 
   begin 
    ClearJournal; 
    k:=0; 
    repeat 
      wait(10000) 
      k:=k+1; 
      AddToSystemJournal('World is saving more than '+IntToStr(k*10)+' seconds.'); 
    until (InJournal('data')<>-1) or (k>30) 
   end 
 end; 


procedure Check_Connect; 
 begin 
  if not Connected then 
    while not Connected do 
      begin 
        Connect; 
        wait(1000); 
      end 
 end; 


procedure Check_Iron; 
 begin 
  FindType(Ingot,Backpack); 
  if (FindCount=0) OR (Count(Ingot)<50) then 
    begin 
      UseObject(Sunduk_With_Iron_and_Tools); 
      wait(250); 
      FindType(Ingot,Sunduk_With_Iron_and_Tools); 
      if (FindCount>0) and (CountEx(Ingot,$0000,Sunduk_With_Iron_and_Tools)>50) then 
        begin 
          MoveItem(FindItem,50,Backpack,0,0,0); 
          wait(250); 
          AddToSystemJournal('Добрали 50 iron ingots. На данный момент имеем '+IntToStr(Count(Ingot))+' штук. Осталось ещё '+IntToStr(CountEx(Ingot,$0000,Sunduk_With_Iron_and_Tools))+' iron ingots.'); 
        end 
      else 
        AddToSystemJournal('Ошибка во время добора Iron Ignots.'); 
    end 
 end; 
        
  
Begin 

 ClearJournal; 
 while not Dead do 
   begin 
     Check_Connect; 
     Check_Necklace;
     Check_Iron; 
     Check_Bag;
     
	AddToSystemJournal('Попытка сделать неклас - использую тулс.'); 
     k:=0; 
     TimeStart:=Now; 
     WaitMenu( 'Tinkering' , 'Jew' ); 
     WaitMenu( 'Jew' , 'neck' ); 
     UseObject(FindType(Tools,Backpack)); 
      
     repeat 
       wait(100); 
       k := k + 1; 
       Check_World_Save; 
     until (InJournalBetweenTimes('You put|failed', TimeStart, Now)<>-1) or (k > 300);
     wait(100); 

// Проверка - не упал ли на землю некласы!

     FindType(Necklace, Ground); 
     if FindCount > 0 then 
     while FindCount > 0 do
     begin 
     MoveItem(FindItem,1,Neck_Bag,0,0,0); 
     AddToSystemJournal('Подняли с пола неклас.'); 
     wait(600); 
     FindType(Necklace, Ground);
     End;

// Конец такой проверки

     FindType(Necklace,Backpack); 
     if Count(Necklace)>0 then Check_Necklace; 
   end    
End.
I'M
dukeduke
Neophyte
Neophyte
Posts: 10
Joined: 23.08.2008 10:00
Contact:

Post by dukeduke »

необходимо 2 сундука - в одном лежат пустые мешки, в другом айрон инги и полные мешки! Тинкер тулс в бек паке! :)
I'M
OnlyMe
Neophyte
Neophyte
Posts: 15
Joined: 09.11.2008 1:38
Contact:

Post by OnlyMe »

отличный скрипт , но вот еду он всетаки не кушает , для качи плохо :)! Хотя я не обламался, и так прокачал)
CxC
Neophyte
Neophyte
Posts: 34
Joined: 25.10.2009 15:45
Contact:

Post by CxC »

Code: Select all

Program kluch; 

{$Include 'all.inc'} 
{$Include 'CheckLag.inc'} 

Const 
   Sunduk_With_Iron_and_Tools=$40325F58;     // сундук с айрон инготами и тинкер тулсами 
   Sunduk_With_Empty_Bags=$40F09DA0;         // сундук с пустыми сумочками  
   Sunduk_With_Full_Bags=$40F08386;          // сундук ,куда складываем заполненные сумочки 
   Bag=$0E76;  
   Tools=$1EBC; 
   Ingot=$1BEF;  //(Antares) 
   Eda=$097B; 
   MaxQnt=250;                                   //максимальное кол-во никлейсов в сумке                              

Var 
   NeckType: array of word; 
   CurrentBag: cardinal; 
   i: integer; 
   LastContOpen: TDateTime; 

procedure Check_World_Save; 
  begin 
     if InJournal('saving')<>-1 then 
        begin 
        SetJournalLine(InJournal('saving'),''); 
        SetJournalLine(InJournal('data'),''); 
        i:=0; 
        repeat 
           wait(10000); 
           i:=i+1; 
           AddToSystemJournal('World is saving more than '+IntToStr(i*10)+' seconds.'); 
        until (InJournal('data')<>-1) or (i>30); 
        end; 
 end; 

procedure LoadIron; 
Begin 
If Dead Or (Not Connected) then Exit; 
If Count(Ingot)<2 then 
    begin 
    FindTypeEx(Ingot,$0000,Sunduk_With_Iron_and_Tools,false); 
    If Not DragItem(FindItem,100) then  AddToSystemJournal('В сундуке кончились айрон инготы!'); 
    Wait(500); 
    If (Weight>(STR*4)) then  
       begin 
       DropItem(Sunduk_With_Iron_and_Tools,0,0,0); 
       raiseException(erCustomError,'У НАС ЯВНЫЙ ПЕРЕГРУЗ!!!МЫ НЕ МОЖЕМ ВЗЯТЬ ИНГОТЫ!!!'); 
       end 
    Else DropItem(backpack,0,0,0); 
    end; 
End; 

procedure Check_Food; 
 begin 
  UseObject(Sunduk_With_Iron_and_Tools) 
  wait(250); 
  FindType(Eda,Sunduk_With_Iron_and_Tools); 
  if FindCount>0 then 
    begin 
      MoveItem(FindItem,1,Backpack,0,0,0); 
      wait(250); 
      UseObject(FindItem); 
      FindType(Eda,Backpack); 
      if FindCount=0 then AddToSystemJournal('Покушали.'); 
      if FindCount>0 then MoveItem(FindItem,1,Sunduk_With_Iron_and_Tools,0,0,0); 
    end 
  else 
    AddToSystemJournal('a Eda не был найден в сундуке.'); 
 end;

procedure LoadTinkerTools; 
Begin 
If Dead Or (Not Connected) then Exit; 
If Count(Tools)<1 then 
    begin 
    If FindType(Tools,Sunduk_With_Iron_and_Tools)=0 then AddToSystemJournal('Не могу найти тинкер тулсу!') 
    Else  Moveitem(FindItem,1,backpack,0,0,0); 
    end; 
End; 

procedure Craftkluch; 
Var 
   STime: TDateTime; 
   FailCounter: integer; 

Begin 
Check_World_Save; 
Stime:=Now; 
UseType(Tools,$FFFF); 
AutoMenu('Tinkering','Keys'); 
AutoMenu( 'Keys','Iron key' );
WaitJournalLine(STime,'You put|failed',30000); 
wait(200); 
   If (InJournalBetweenTimes('failed',Stime,Now)<>-1) then FailCounter:=(FailCounter+1); 
   If (InJournalBetweenTimes('You put',Stime,Now)<>-1) then FailCounter:=0; 
   If FailCounter>=20 then Wait(30000); 
End; 

procedure FindEmptyBag; 
var 
TempBag: cardinal; 
SumQnt: integer; 


Begin 
FindType(bag,Sunduk_With_Empty_Bags); 
   While FindCount>0 do 
       begin 
       If Dead or (Not Connected) then Exit; 
       Check_World_Save; 
       TempBag:=FindItem; 
       UseObject(FindItem); 
       Wait(1000); 
       SumQnt:=CountEx(NeckType[0],$FFFF,TempBag)+CountEx(NeckType[1],$FFFF,TempBag); 
       If (SumQnt<MaxQnt) then                                                  
           begin 
      AddToSystemJournal('запоминаем пустую сумочку...'); 
           CurrentBag:=TempBag; 
      Exit; 
      end 
        else 
      begin 
      AddToSystemJournal('Найденная сумочка забита до отказа!Перекладываем в сундук с заполненными сумками.'); 
      MoveItem(TempBag,1,Sunduk_With_Full_Bags,0,0,0); 
      Wait(1000); 
      end; 
       FindType(bag,Sunduk_With_Empty_Bags); 
       wait(200); 
       end; 
    If (FindCount<1) then raiseException(erCustomError,'Свободных сумочек больше нету.останавливаем скрипт.') 
End; 

procedure OpenContainer(f : boolean); 
   // если f - true - просто открываем все нужные контейнеры, то есть: 
   // SundukIngots,SundukEmptyBag,Sunduk2Craft и curbag (если он не равен 0) 
   // если f - false - проверяем, был ли реконнект чара после последнего 
   // открывания контейнеров, если был - переоткрываем контейнеры и записываем 
   // новое значение в переменную LastContOpen, если не был - ничего не делаем 
Begin 
If Dead or (Not Connected) then Exit; 
if (f = true) or (LastContOpen < ConnectedTime) then 
    begin 
         UseObject(Sunduk_With_Empty_Bags); 
         wait(1000); 
         Check_World_Save; 
         UseObject(Sunduk_With_Full_Bags); 
         wait(1000); 
         Check_World_Save; 
         UseObject(Sunduk_With_Iron_and_Tools); 
    wait(1000); 
    Check_World_Save; 
    if CurrentBag <> 0 then 
             begin 
             UseObject(CurrentBag); 
             wait(1000); 
             Check_World_Save; 
             end 
    Else 
        FindEmptyBag; 
         LastContOpen := Now; 
         addtosystemjournal('Контейнеры открыты в ' + DateTimeToStr(Now)); 
      end; 
End; 

procedure UnLoadNecklace; 
Begin 
If (Weight>(4*Str-100)) or ((Count(NeckType[0])+Count(NeckType[1]))>=MaxQnt) then      
    begin 
    For i:=0 to 1 do 
         repeat 
         If Dead Or (Not Connected) then Exit; 
    Check_World_Save; 
         If (CountEx(NeckType[0],$FFFF,CurrentBag)+CountEx(NeckType[1],$FFFF,CurrentBag))>=MaxQnt then              
        begin 
        AddToSystemJournal('Сумку заполнили полностью!Перекладываем в сундук с заполненными сумками.'); 
        MoveItem(CurrentBag,1,Sunduk_With_Full_Bags,0,0,0); 
        Wait(1000); 
        FindEmptyBag; 
        end; 

    FindType(NeckType[0],Backpack); 
         if FindCount>0 then 
            begin 
            MoveItem(FindItem,1,CurrentBag,0,0,0); 
            end; 
         until  (FindType(NeckType[0],Backpack)=0); 
    end; 
End; 

BEGIN 
NeckType[0]:=$1010; 

WaitConnection(3000); 
SetARStatus(true); 
LastContOpen:=Now; 
OpenContainer(true); 

While not Dead do 
    begin 
    If Connected then 
        begin 
   OpenContainer(false); 
   LoadIron; 
   Check_Food
   LoadTinkerTools; 
   Craftkluch; 
   UnloadNecklace; 
   end 
    Else Wait(3000); 
    end; 
END.
Выдает ошибку, помогите, плиз

16:32:22 [Corvin]: Compiling
16:32:22 [Corvin]: Compiled succesfully
16:32:22 [Corvin]: Out Of Range at 0.10
16:32:22 [Corvin]: Script Тинкер.sc stopped successfuly
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

объявлен массив

Code: Select all

NeckType: array of word;
первому элементу присвоено значение, размер массива стал=1. Т.е обращаться можно только к первому элементу NeckType[0]

Code: Select all

BEGIN 
NeckType[0]:=$1010;<------------------------ 

WaitConnection(3000); 
SetARStatus(true); 
LastContOpen:=Now; 
OpenContainer(true);
....
в скрипте-же есть места где указано обращение и ко 2му элементу NeckType[1], отсюда и Out of Range...

Code: Select all

If (CountEx(NeckType[0],$FFFF,CurrentBag)+CountEx(NeckType[1],$FFFF,CurrentBag))>=MaxQnt
нужно добавить второй тип итема

Code: Select all

BEGIN 
NeckType[0]:=$1010; 
NeckType[1]:=$????<----------------------
WaitConnection(3000); 
SetARStatus(true); 
LastContOpen:=Now; 
OpenContainer(true);
....
CxC
Neophyte
Neophyte
Posts: 34
Joined: 25.10.2009 15:45
Contact:

Post by CxC »

спасибо, оставил размер массива 2, но т.к. 2-ой мне не нужен - написал левый тип. Теперь возникает ошибка скорее всего в FindEmptyBag.

Code: Select all

22:56:44 [Corvin]: Compiling
22:56:44 [Corvin]: Compiled succesfully
22:56:44 [Corvin]: UseObject error: Object not finded.
22:56:45 [Corvin]: UseObject error: Object not finded.
22:56:47 [Corvin]: Свободных сумочек больше нету.останавливаем скрипт. at 53.1044
22:56:47 [Corvin]: Script Тинкер.sc stopped successfuly
вот сам скрипт

Code: Select all

Program Keys; 

{$Include 'all.inc'} 
{$Include 'CheckLag.inc'} 

Const 
   Sunduk_With_Iron_and_Tools=$40325F58;     // сундук с айрон инготами и тинкер тулсами 
   Sunduk_With_Empty_Bags=$40F09DA0;         // сундук с пустыми сумочками  
   Sunduk_With_Full_Bags=$40F08386;          // сундук ,куда складываем заполненные сумочки 
   Bag=$0E76;  
   Tools=$1EBC; 
   Ingot=$1BEF;  //(Antares) 
   Eda=$097B; 
   MaxQnt=250;                                   //максимальное кол-во никлейсов в сумке                              

Var 
   KeyType: array [0..1] of word; 
   CurrentBag: cardinal; 
   i: integer; 
   LastContOpen: TDateTime; 

procedure Check_World_Save; 
  begin 
     if InJournal('saving')<>-1 then 
        begin 
        SetJournalLine(InJournal('saving'),''); 
        SetJournalLine(InJournal('data'),''); 
        i:=0; 
        repeat 
           wait(10000); 
           i:=i+1; 
           AddToSystemJournal('World is saving more than '+IntToStr(i*10)+' seconds.'); 
        until (InJournal('data')<>-1) or (i>30); 
        end; 
 end; 

procedure LoadIron; 
Begin 
If Dead Or (Not Connected) then Exit; 
If Count(Ingot)<2 then 
    begin 
    FindTypeEx(Ingot,$0000,Sunduk_With_Iron_and_Tools,false); 
    If Not DragItem(FindItem,100) then  AddToSystemJournal('В сундуке кончились айрон инготы!'); 
    Wait(500); 
    If (Weight>(STR*4)) then  
       begin 
       DropItem(Sunduk_With_Iron_and_Tools,0,0,0); 
       raiseException(erCustomError,'У НАС ЯВНЫЙ ПЕРЕГРУЗ!!!МЫ НЕ МОЖЕМ ВЗЯТЬ ИНГОТЫ!!!'); 
       end 
    Else DropItem(backpack,0,0,0); 
    end; 
End; 

procedure LoadTinkerTools; 
Begin 
If Dead Or (Not Connected) then Exit; 
If Count(Tools)<1 then 
    begin 
    If FindType(Tools,Sunduk_With_Iron_and_Tools)=0 then AddToSystemJournal('Не могу найти тинкер тулсу!') 
    Else  Moveitem(FindItem,1,backpack,0,0,0); 
    end; 
End; 

procedure CraftKeys; 
Var 
   STime: TDateTime; 
   FailCounter: integer; 

Begin 
Check_World_Save; 
Stime:=Now; 
UseType(Tools,$FFFF); 
 AutoMenu( 'Tinkering' , 'Keys' ); 
 AutoMenu( 'Keys','Iron key' ); 
WaitJournalLine(STime,'You put|failed',30000); 
wait(200); 
   If (InJournalBetweenTimes('failed',Stime,Now)<>-1) then FailCounter:=(FailCounter+1); 
   If (InJournalBetweenTimes('You put',Stime,Now)<>-1) then FailCounter:=0; 
   If FailCounter>=20 then Wait(30000); 
End; 

procedure FindEmptyBag; 
var 
TempBag: cardinal; 
SumQnt: integer; 

Begin 
FindType(bag,Sunduk_With_Empty_Bags); 
   If FindCount>0 then 
       begin 
       If Dead or (Not Connected) then Exit; 
       Check_World_Save; 
       TempBag:=FindItem; 
       UseObject(FindItem); 
       CheckLag; 
       Wait(1000); 
       SumQnt:=CountEx(KeyType[0],$FFFF,TempBag)+CountEx(KeyType[1],$FFFF,TempBag); 
       If (SumQnt<MaxQnt) then                                                  
           begin 
      AddToSystemJournal('запоминаем пустую сумочку...'); 
           CurrentBag:=TempBag; 
      Exit; 
      end 
        else 
      begin 
      AddToSystemJournal('Найденная сумочка забита до отказа!Перекладываем в сундук с заполненными сумками.'); 
      MoveItem(TempBag,1,Sunduk_With_Full_Bags,0,0,0); 
      Wait(1000); 
      end; 
       FindType(bag,Sunduk_With_Empty_Bags); 
       wait(200); 
       end; 
    If (FindCount<1) then raiseException(erCustomError,'Свободных сумочек больше нету.останавливаем скрипт.') 
End; 

procedure OpenContainer(f : boolean); 
   // если f - true - просто открываем все нужные контейнеры, то есть: 
   // SundukIngots,SundukEmptyBag,Sunduk2Craft и curbag (если он не равен 0) 
   // если f - false - проверяем, был ли реконнект чара после последнего 
   // открывания контейнеров, если был - переоткрываем контейнеры и записываем 
   // новое значение в переменную LastContOpen, если не был - ничего не делаем 
Begin 
If Dead or (Not Connected) then Exit; 
if (f = true) or (LastContOpen < ConnectedTime) then 
    begin 
         UseObject(Sunduk_With_Empty_Bags); 
         wait(1000); 
         Check_World_Save; 
         UseObject(Sunduk_With_Full_Bags); 
         wait(1000); 
         Check_World_Save; 
         UseObject(Sunduk_With_Iron_and_Tools); 
    wait(1000); 
    Check_World_Save; 
    if CurrentBag <> 0 then 
             begin 
             UseObject(CurrentBag); 
             wait(1000); 
             Check_World_Save; 
             end 
    Else 
        FindEmptyBag; 
         LastContOpen := Now; 
         addtosystemjournal('Контейнеры открыты в ' + DateTimeToStr(Now)); 
      end; 
End; 

procedure UnLoadKeys; 
Begin 
If (Weight>(4*Str-100)) or ((Count(KeyType[0])+Count(KeyType[1]))>=MaxQnt) then      
    begin 
    For i:=0 to 1 do 
         repeat 
         If Dead Or (Not Connected) then Exit; 
    Check_World_Save; 
         If (CountEx(KeyType[0],$FFFF,CurrentBag)+CountEx(KeyType[1],$FFFF,CurrentBag))>=MaxQnt then              
        begin 
        AddToSystemJournal('Сумку заполнили полностью!Перекладываем в сундук с заполненными сумками.'); 
        MoveItem(CurrentBag,1,Sunduk_With_Full_Bags,0,0,0); 
        Wait(1000); 
        FindEmptyBag; 
        end; 

    FindType(KeyType[i],Backpack); 
         if FindCount>0 then 
            begin 
            MoveItem(FindItem,1,CurrentBag,0,0,0); 
            CheckLag; 
            end; 
         until  (FindType(KeyType[i],Backpack)=0); 
    end; 
End; 

BEGIN 
KeyType[0]:=$1010; 
KeyType[1]:=$1085; 

WaitConnection(3000); 
SetARStatus(true); 
LastContOpen:=Now; 
OpenContainer(true); 

While not Dead do 
    begin 
    If Connected then 
        begin 
   OpenContainer(false); 
   LoadIron; 
   LoadTinkerTools; 
   CraftKeys; 
   UnloadKeys; 
   end 
    Else Wait(3000); 
    end; 
END.
перед тем, как отпостить, попробовал все варианты, которые смог придумать. Исправьте, пожалуйста
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

Возможные проблемы:
1)В Sunduk_With_Empty_Bags записан неверный ID.Там должен быть ID сундука с пустыми сумками.
2)В Sunduk_With_Empty_Bags нет сумок.
3)Sunduk_With_Empty_Bags вне зоны доступа чара.
4)Воткни в начало скрипта

Code: Select all

LastContOpen:=Now; 
OpenContainer(true); 
<----------------------
While not Dead do 
......
вот это, и посмотри что покажет.

Code: Select all

FindType(Bag,Sunduk_With_Empty_Bags);
case FindCount of
  0:AddToSystemJournal('Или в сундуке нет сумок или я его не смог открыть. ');
else 
AddToSystemJournal('В сундуке нашлось '+IntToStr(FindCount)+' сумок.');
end;
Post Reply