Page 1 of 1

Мининг вокруг себя

Posted: 04.02.2008 18:47
by MeLFiS
Если у каго мининг вокруг себя и чтобы кирки просто менял и все если можна конечно за рание спасибо .

Posted: 04.02.2008 19:45
by Edred
В моем скрипте на мининг есть соответствующие функции. Вырежь и склей. Будут проблемы - пости сюда то, что получается и спрашивай.

Отличие этого форума от форума инжекта в том, что практически бесполезно просить кого-то написать что-то за тебя. А если пытаешься разобраться сам и спрашиваешь помощи - всегда кто-нибудь поможет.

Posted: 04.02.2008 22:33
by MeLFiS
Но у тебя он такой большой но я попробую посомтреть

Posted: 04.02.2008 22:39
by MeLFiS

Code: Select all

program MinRound; 

{$Include 'all.inc'} 

const 

TileNum = $1342; 
PickAxe = $49BB5D88; 

{типы кучек} 


{Сообщения} 

Msg1 = 'put'; 
Msg2 = 'fail'; 
Msg3 = 'you try'; 
Msg4 = 'no ore'; 

var x,y,k : integer; 

Begin 


while weight < 200 do 
begin 
  for x:=-2 to 2 do 
   begin 
    for y:=-2 to 2 do 
     begin 
      WaitForTarget(500); 
      UseObject(PickAxe); 
      WaitTargetTile(TileNum,GetX(self)+x,GetY(self)+y,0); 
      addtosystemjournal('Start to mine...');  

      repeat 
        wait(100); 
      until InJournal('put|fail|no ore')<>-1; 
      

       
     end;    
   end; 
end; 


End.
Вот есть скрипт но када я запускаю он нече не делает просто стоит .Посмотри одним глазом и скажи что не правельно

Posted: 04.02.2008 22:49
by MeLFiS
Как зделать чтобы при паломке кирки чтобы он брал в руку новую и дальше копал ?

Posted: 04.02.2008 23:37
by Edred
Ну, вот так, по идее, должно работать:

Code: Select all

Program MiningAround;

var
k, x, y : Integer;
mn1, mf1, mf2, ms1 : Integer;
ctime : TDateTime;

const
Pickaxe1 = $0E85;				// Типы кирок
Pickaxe2 = $0E86;

	function CheckPickaxe : Boolean;
	// Проверяем есть ли кирка и одеваем ее (если необходимо) в правую руку
	// возвращаем true - если все ок, false - если нет кирки
	// Проверка на то, что в руке у чара не кирка не производится!
	var tmpser : Cardinal;
	begin
		Result := true;
		if (ObjAtLayerEx(RhandLayer,self) = 0) then
		begin
			// ничего в руках нету
			tmpser := findtype(Pickaxe1,backpack);
			if tmpser = 0 then tmpser := findtype(Pickaxe2,backpack);
			if tmpser = 0 then
			begin
				Result := false;
				exit;
			end;
			if not equip(RhandLayer,tmpser) then
			begin
				wait(1000);
				if not equip(RhandLayer,tmpser) then
				begin
					Result := false;
					exit;
				end;
			end;
			wait(500);
			checksave;
		end;
	end;

Begin
	for x := -2 to 2 do
	begin
		for y := -2 to 2 do
		begin
			repeat
				waitconnection(5000);
				if not CheckPickaxe then 
				begin
					exit;
				end;
				if TargetPresent then CancelTarget;
				if WarMode = true then SetWarMode(false);
				ctime := Now;
				UseObject(ObjAtLayerEx(RhandLayer,self));
				WaitForTarget(5000);
				If TargetPresent then TargetToTile(1342, GetX(self)+x, GetY(self)+y, GetZ(self));
				k := 0;
				repeat
					wait(100);
					k := k + 1;
					checksave;
					mn1 := InJournalBetweenTimes('no ore', ctime, Now);
					mf1 := InJournalBetweenTimes('you try', ctime, Now);
					mf2 := InJournalBetweenTimes('fail', ctime, Now);
					ms1 := InJournalBetweenTimes('put', ctime, Now);
				until (mn1<>-1) or (mf1<>-1) or (mf2<>-1) or (ms1<>-1) or (k > 300);
			until (mn1<>-1);
		end;
	end;
End.
Проверяй, а главное - пытайся понять что и как сделано.

Posted: 05.02.2008 14:25
by MeLFiS

Code: Select all

Compiler: [Error] (Òåêñòîâûé äîêóìåíò (2).txt at 39:10):  Unknown identifier 'checksave'

Compiler: [Error] (Òåêñòîâûé äîêóìåíò (2).txt at 48:13):  Unknown identifier 'waitconnection'

Compiler: [Error] (Òåêñòîâûé äîêóìåíò (2).txt at 62:16):  Unknown identifier 'checksave'

Вот какие ошибки. Я ети строки стер и какбы работает .

Posted: 05.02.2008 14:32
by MeLFiS
И как еше правильно вставить реконектор чтобы он при реконекте дальше продолжал и еше при максимальном весе он вырубаетса я ето в скрипте не нашол а хотелось бы чтоб он копал пока все кирки не поламаютса

Posted: 05.02.2008 17:20
by Edred

Code: Select all

{$Include 'all.inc'}
Это в начало скрипта. Процедуры и функции типа Checksave и waitconnection находятся в инклюдах. Waitconnection и нужна для нормальной обработки реконнекта.

А вообще - читай топики в разделе FAQ. Ограничитель на макс вес я в скрипт не включал. Но чар просто физически не может копать при наборе максимального веса. Так шард устроен обычно. Либо чар начинает руду просто ронять.

ЗЫ: Началось все с мининга вокруг себя. Потом нужно было кирки менять. Потом реконнектор. Потом потребуется разгрузка при максимальном весе. Потом проверка на то, что чара кильнули и рес. И так далее. Что в результате? Примерно такой же скрипт, как тот, который я на форуме и разместил. Именно так подобные скрипты и пишутся, никто не ваяет сразу какой-то супер-пупер-скрипт, сначала пишут маленький, потом постепенно расширяют.

Я пас в дальнейших усовершенствованиях. Болванку я тебе дал, дальше сам.