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

DRW Lumber Без гвард зоны (outside guard zone) V 1.0

Only working scripts
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

А энт пользуется детектом? Если нет, то действительно лучше сделать как Виз предложил, быстренько свалить в сторонку, потом опять в хайд и пошёл рубить...
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

нет не пользуется детектом. на данном этапе чар так и делает - сваливает. но я придумал только рекол по рунбуке, а как сделать так чтобы он не реколился, а сам искал добрую полянку для рубки ума не приложу. карта уо не бесконечная и идти в одном направлении он все равно упрется в какого нибудь пк или красного нпс чаерез пару часов.
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

А энт какой урон может нанести одним ударом?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

упрется - реснуться, топор в зубы и опять рубить. до следующего ПК :)
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

может промахнутся а может 124 хп снять из моих 200.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

const
Vendor =ID вендора;

пока не указал вендора как константу чар нормлаьно к нему подходил, а сейчас заменил все переменные продовца константой и чар перестал подходть. Это нормально? скрипт ниже.

Code: Select all

procedure podhod;
begin
AddToSystemJournal('Продацец: '+GetName(Vendor)+'. координата Х: '+inttostr(GetX(Vendor))+'. координата Y: '+inttostr(GetY(Vendor))+'. дистанция: ' +inttostr(GetDistance(Vendor)));
NewMoveXY(GetX(Vendor),GetY(Vendor),true,1,false);
repeat
wait(2000);
checksave;
until GetDistance(Vendor)< 3
end; 
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

ты по-моему в своих же топиках запутался)))
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

неа этот кусок из скрипта на лумбер.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

Code: Select all

procedure poisk_tree;
begin
  SetArStatus(true);
  init;
  sum:=0;  
  // поиск деревьев и составление массива
  arr_sum:=0;
   for i:=0 to 9 do
    begin

когда дохожу до этой строки второй раз мне выдает Out Of Range at 67.328. ну в смсыле пытаюсь эту процедуру запустить повторно в коде и на этой строке если юзаю еще раз вылетает эта ошибка. мне чтото надо обнулить при повторном использовании этой команды?

rs:=GetStaticTilesArray(RegArr[j].minX,RegArr[j].minY,RegArr[j].maxX,RegArr[j].maxY,1,TreeTile,tfta);
//вылетает тут


Code: Select all

 if rs>0 then
      for k:=0 to rs-1 do temp[arr_sum+k]:=tfta[k];
     arr_sum:=arr_sum+rs;
    end;
   QuickSort(temp,arr_sum,start_p);
   for k:=0 to arr_sum-1 do res_arr[sum+k]:=temp[k];
   sum:=sum+arr_sum; 
end;
Last edited by shinma on 02.05.2011 21:46, edited 1 time in total.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

скорее всего переполняется tfta но как этот массив обнулить одной командой без заморочек?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

ttfa динамический массив?
если да - SetLength(0)
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

да он изменяемый я написал SetLength(tfta,0);
один фиг проблема осталась(
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

если просто эту же строку скопировать и вставить рядом - тоже ошибка?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

Code: Select all

procedure init;
begin
 start_p.X:=GetX(Self); //Стартовая координата игрока
 start_p.Y:=GetY(Self); //Стартовая координата игрока
 //Tile Tree
 TreeTile[0]:=3283;
 TreeTile[1]:=3277;
 TreeTile[2]:=3293;
 TreeTile[3]:=3296;
 TreeTile[4]:=3302;
 TreeTile[5]:=3299;
 TreeTile[6]:=3290;
 TreeTile[7]:=3288;
 TreeTile[8]:=3286;
 TreeTile[9]:=3280;
 //Рубить в области +/- 30 клеток от Стартовой координаты игрока
 RegArr[0].minX:=start_p.X-10;
 RegArr[0].minY:=start_p.Y-10;
 RegArr[0].maxX:=start_p.X+10;
 RegArr[0].maxY:=start_p.Y+10;
end;

procedure poisk_tree;
begin
  SetArStatus(true);//фигня
  init;
  sum:=0;  
  // поиск деревьев и составление массива
  arr_sum:=0;
  rs:=0;
   for i:=0 to 9 do
    begin
     

rs:=GetStaticTilesArray(RegArr[j].minX,RegArr[j].minY,RegArr[j].maxX,RegArr[j].maxY,1,TreeTile[i],tfta);


     if rs>0 then
      for k:=0 to rs-1 do temp[arr_sum+k]:=tfta[k];
     arr_sum:=arr_sum+rs;
    end;
   QuickSort(temp,arr_sum,start_p);
   for k:=0 to arr_sum-1 do res_arr[sum+k]:=temp[k];
   sum:=sum+arr_sum; 
end;


procedure Chop(f_tile:TFoundTile);
var
 ctime : TDateTime;
 iter_max:integer;
 next_lumb,lumb_result,wait_lumb: string;
 fizzles:word;
begin
 wait_lumb:=l_fizzles+'|'+l_needwait;
 next_lumb:=l_nothing1+'|'+l_nothing2+'|'+l_far+'|'+l_see;;
 lumb_result:=wait_lumb+'|'+next_lumb+'|'+l_success+'|'+l_elemental+'|'+l_bad+'|'+l_heavy;
 fizzles:=0;
  h:=0;
 repeat
  equip_tool(hatcher,LhandLayer);
  cancel;
  iter_max:=0;
  check_hide;
  UseObject(ObjAtLayer(LhandLayer));
  check_hide;
  Wait_Target(5000);
  ctime := Now;
  TargetToTile(f_tile.Tile,f_tile.X,f_tile.Y,f_tile.Z);
  repeat
   iter_max:=iter_max+1;
   wait(2000);
   checksave;
   check_war;
   check_hide;
  until  ((InJournalBetweenTimes(lumb_result, ctime, Now)<>-1) or (iter_max>10));
  if (InJournalBetweenTimes(l_fizzles, ctime, Now)<>-1) then fizzles:=fizzles+1;
 // if (InJournalBetweenTimes('OOPS !!! It isn''t a tree, it''s an Ent!!!|is attacking you|Vas Corp Por|notice', ctime, Now)<>-1) then
 //  begin
//	PlayWav('C:\WINDOWS\Media\tada.wav');

        	//		WinExec('E:\Program files\aimp3\AIMP3.exe', 0);	//у меня стоит 3 аимп с музыкой в плейлисте. при запуске аимпа он сразу начинает играть. Эту строку можно и закоментрировать.
			speedee(400,300,600,500);
			check_hide;
			newmovexy(GetX(Self)+20,GetY(Self)+20,true,1,false);
			check_hide;
				while gethp(self) < getmaxhp(self) do
				begin		
					check_hide;
					UseObject(FindType(clean_bandages,Backpack));
					wait_target(2000);
					WaitTargetObject(Self); 
				wait (5000);		
				end;			
			speedee(speed,speed,speed,speed);
			
		
        poisk_tree;
	check_hide;
	h:=1; 
    wait(1000);
    alarm;
    Break;

SetLength(tfta,0);



Code: Select all

  // end;
 until ((InJournalBetweenTimes(next_lumb, ctime, Now)<>-1) or (fizzles>15) or (h=1));
// if h=1 then exit;
end;


При заходе на пофтор выдает ошибку в строке
процедура Shop вызывает poisk_tree . а процедура poisk_tree вызывает процедуру init

rs:=GetStaticTilesArray(RegArr[j].minX,RegArr[j].minY,RegArr[j].maxX,RegArr[j].maxY,1,TreeTile,tfta);
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Post by shinma »

Vizit0r wrote:если просто эту же строку скопировать и вставить рядом - тоже ошибка?
я не понял куда вставить чтобы обнулить.
Post Reply