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

Сбор хлопка

тут можно задать вопрос по скриптингу
Post Reply
Apofis
Neophyte
Neophyte
Posts: 30
Joined: 18.07.2009 11:15

Сбор хлопка

Post by Apofis »

Собственно посадил хлопок в визарде на первом этаже и на крыше, самого чара хочу поставить между первым этажем и крышей, так как он достает хлопок и с низу и сверху и вокруг себя. Хотелось бы узнать как поправить скрипт что бы он добывал не только что на его уровне находится но и то же посажено ниже и выше соответственно.

Code: Select all

Procedure Sbor(Container : cardinal);
Begin
UseObject(Container);
AddToSystemJournal('Пора бы проверить наличие хлопка на наших полях!');
If Not Hidden then begin UseSkill('Hiding'); Wait(5000); end;
       While UseFromGround(Cotton,$FFFF)>0 do
           begin
	   CheckLag;
	   If Life<Str then Exit;
	   If (Weight>STR*3) then 
	       begin
	       FindType(Bales,backpack);
	       MoveItem(FindItem,0,Container,0,0,0);
	       Wait(1000);
	       end;
	   end;
Заранее спасибо!
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

FindDistance: Integer; // Радиус поиска обьектов на земле
FindVertical: Integer; // Высота поиска обьектов на земле
по умолчанию: FindDistance:=2; FindVertical:=6;

Думаю нужно изменять параметр FindVertical под каждый этаж.
а ля

Code: Select all

FirstFloorZ := 10;// координата Z Первого этажа
FloorHeigth  := 15; // разница в координате Z между этажами
For i := 1 to 3 do begin
    FindVertical := FirstFloorZ + ( (i-1) * FloorHeigth )+1; //+1  на всякий пожарный
    while FindTypeEx( Cotton,$FFFF,Ground,false ) > 0 do begin
       // тут собираем хлопок (finditem)
    end;
end;
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
Apofis
Neophyte
Neophyte
Posts: 30
Joined: 18.07.2009 11:15

Post by Apofis »

если я правильно понял то надо заменить эту строку:

Code: Select all

While UseFromGround(Cotton,$FFFF)>0 do
на то что ты написал выше?
Antoska
Neophyte
Neophyte
Posts: 45
Joined: 10.07.2009 22:21
Location: Латвия, Рига

Post by Antoska »

Это весь скрипт? Если нет, то выложи пожалуйста полностью скрипт.)
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

Apofis wrote:если я правильно понял то надо заменить эту строку:

Code: Select all

While UseFromGround(Cotton,$FFFF)>0 do
на то что ты написал выше?
не строку, а весь цикл.
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
Apofis
Neophyte
Neophyte
Posts: 30
Joined: 18.07.2009 11:15

Post by Apofis »

Или я что-то не улавливаю но помоему это и есть весь цикл, остальное проверка к нему не относящаяся.
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

Похоже чего-то не улавливаешь...
А вообще сразу поставь FindVertical равным высоте последнего этажа, в начале своего скрипта, результат будет почти таким-же. :)
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
Apofis
Neophyte
Neophyte
Posts: 30
Joined: 18.07.2009 11:15

Post by Apofis »

если не сложно мохни то что там нужно, а то что-то вообще не улавливаю тему.. =(

Code: Select all

Var 
    StartSborTimer: cardinal;
Const
    Bales=$0DF9;
    Cotton=$0C4F;
    Spools=$0FA0;
    Cloth=$175D;
    Scissors=$0F9E;
    Bolt=$0F95;


Procedure InitStartSbor;
Begin
StartSborTimer:=Timer;
End;

Procedure Sbor(Container : cardinal);
Begin
UseObject(Container);
AddToSystemJournal('Пора бы проверить наличие хлопка на наших полях!');
If Not Hidden then begin UseSkill('Hiding'); Wait(5000); end;
       While UseFromGround(Cotton,$FFFF)>0 do
           begin
	   CheckLag;
	   If Life<Str then Exit;
	   If (Weight>STR*3) then 
	       begin
	       FindType(Bales,backpack);
	       MoveItem(FindItem,0,Container,0,0,0);
	       Wait(1000);
	       end;
	   end;
If FindType(Bales,backpack)>0 then begin MoveItem(FindItem,0,Container,0,0,0);  Wait(1000); end;

AddToSystemJournal('в мешочке '+IntToStr(CountEx(Bales,$0000,Container))+' хлопка.');
AddToSystemJournal('плюс '+IntToStr(CountEx(Spools,$0000,Container))+' нитей и '+IntToStr(CountEx(Cloth,$0000,Container))+' ткани!');

StartSborTimer:=Timer;
End;

Procedure ToSpools(Container,SpWheel: cardinal);
var StartToSpool: TDateTime;
Begin
UseObject(Container);
CheckLag;
Wait(1000);
If CountEx(Bales,$0000,Container)>10 then
    begin
    If Count(Bales)<1 then
        begin
	//AddToSystemJournal('Подгружаем хлопок...');
        FindType(Bales,Container);
	If Not DragItem(FindItem,10) then 
            begin
            AddToSystemJournal('хлопок не найден');
            Exit;
            end;
        CheckLag;
        Wait(500);
        If (Weight>(STR*4)) then  
	      begin
	      DropItem(Container,0,0,0);
	      AddToSystemJournal('У НАС ЯВНЫЙ ПЕРЕГРУЗ!!!МЫ НЕ МОЖЕМ ВЗЯТЬ РЕСУРСЫ!!!');
	      Wait(1000);
	      Exit;
	      end
        Else DropItem(backpack,0,0,0);
	end;
    end
Else  
    begin
    Wait(1000); 
    Exit; 
    end; 
    
AddToSystemJournal('Плетём нити из хлопка');
While FindType(Bales,backpack)>0 do
   begin
   If Dead or Not Connected then Exit;
   StartToSpool:=Now;
   UseObject(finditem);
   WaitTargetObject(SpWheel);
   WaitJournalLine(StartToSpool,'put',5000);
   Wait(2200);
   end;

If (Weight>STR*3) then 
    If FindType(Spools,backpack)>0 then 
        begin
	MoveItem(finditem,0,Container,0,0,0);
        Wait(1000);
	end;
End;


Procedure ToBolts(Pryalka: cardinal);
Begin
If Count(Spools)<10 then
    begin
    Wait(500);
    Exit;
    end;
While FindType(Spools,backpack)>0 do
    begin
    If Dead or Not Connected then Exit;
    UseObject(finditem);
    WaitTargetObject(Pryalka);
    CheckLag;
    end;
end;

Procedure ToCloth(Container: cardinal);
Begin
While FindType(Bolt,backpack)>0 do
   begin 
   If Dead or Not Connected then Exit;
   UseType(Scissors,$0000);
   WaitTargetType(Bolt);
   CheckLag;
   Wait(1000);
   end;
While FindType(Cloth,backpack)>0 Do
   begin 
   If Dead or Not Connected then Exit;
   MoveItem(FindItem,0,Container,0,0,0);  
   Wait(1000); 
   end;
End;
Antoska
Neophyte
Neophyte
Posts: 45
Joined: 10.07.2009 22:21
Location: Латвия, Рига

Post by Antoska »

Это полный скрипт?
Apofis
Neophyte
Neophyte
Posts: 30
Joined: 18.07.2009 11:15

Post by Apofis »

да
Post Reply