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

Mining for ZuluHotel - Help PLZ

Only working scripts
Post Reply
shkera123
Posts: 2
Joined: 05.04.2011 16:06
Contact:

Mining for ZuluHotel - Help PLZ

Post by shkera123 »

Люди....помогите ПЛЗ вставить в этот скрипт ArmsLore на dagger....
Буду очень признателен....
ЗЫ: сам скрипт рабочий,ходит по указанным тайлам в файле,копает,скидывает мапы и ненужную руду по цвету....

Code: Select all

Program mining;
{$Include 'all.inc'}

type LumbRecord = Record
x,y,tt : integer;
end;

var
MineDim : array [0..5000] of LumbRecord;
MaxPosL : integer;
k, x, y, c, i : Integer;
mn1, mf1, mf2, mf3, ms1 : Integer;
ctime : TDateTime;
List : TStringList;
NTH : Integer;
Color : array[1..12] of cardinal;
s: string;


const
Pickaxe1 = $0E85; // Oeiu ee?ie
Pickaxe2 = $0E86;


function CheckPickaxe : Boolean;

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;

procedure MiningAround;
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(1343, GetX(self)+x, GetY(self)+y, GetZ(self));
k := 0;
repeat
wait(100);
k := k + 1;
checksave;
mn1 := InJournalBetweenTimes('stop', ctime, Now);
mf1 := InJournalBetweenTimes('you can', ctime, Now);
mf2 := InJournalBetweenTimes('fail', ctime, Now);
mf3 := InJournalBetweenTimes('mine', ctime, Now);
ms1 := InJournalBetweenTimes('way', ctime, Now);
until (mn1<>-1) or (mf1<>-1) or (mf2<>-1) or (mf3<>-1) or (ms1<>-1) or (k > 300);
until (mn1<>-1);
end;
end;
End;



procedure DropOre;
begin
//Color[1] := $0001;// iron
//Color[2] := $0602;//coper
//Color[3] := $0455;//black draft
//Color[4] := $;//silver
//Color[5] := $;// pagan
//Color[6] := $;// spectral
//Color[7] := $;//ice
//Color[8] := $;//lava
//Color[9] := $;//mythril
//Color[10] := $;//basilik
//Color[11] := $;//dedra
//Color[12] := $;//sun
for c:=1 to 1 do 
begin
//Addtosystemjournal('Aua?anuaa? ?oaoi');
FindTypeEx($19B9,Color[c],backpack,False);
if (FindCount>0) then
begin
MoveItem(FindItem,0,ground,0,0,0);
wait(200);
checksave;
end;
end;
end;


procedure DropMap;
begin
//Addtosystemjournal('Aua?anuaa? ea?ou');
repeat
FindTypeEx($14ED,$ffff,backpack,False);
if (findcount > 0) then Drop(finditem, 0, 0, 0, 0);;
wait(100);
checksave;
until findcount = 0;
end;




procedure GotoXY(x,y,prec : integer; runflag : boolean);
var ld, ldc, dx, dy, mx, my, tmpdir : Integer;
begin
ld := 0; ldc := 0;
while true do
begin
waitconnection(3000);
DropOre;
DropMap;
dx := GetX(self) - x; if dx < 0 then dx := 0 - dx;
dy := GetY(self) - y; if dy < 0 then dy := 0 - dy;
if dy > dx then dx := dy;
if dx <= prec then exit;
mx := GetX(self); my := GetY(self);
dx := mx - x; if dx < 0 then dx := 0 - dx;
dy := my - y; if dy < 0 then dy := 0 - dy;
if dy > dx then dx := dy;
if dx <= prec then exit;
if ld = dx then begin
ldc := ldc + 1;
if ldc > 10 then
begin
tmpdir := Random(8);
DropOre;
Raw_Move(tmpdir,runflag);
DropOre;
Raw_Move(tmpdir,runflag);
DropOre;
Raw_Move(tmpdir,runflag);
end;
if ldc > 200 then begin addtosystemjournal( 'GotoXY: Cannot reach location!' ); { exit; } end;
end
else ld := dx;
waitconnection(5000);
if mx = x then begin
if my = y then exit;
// North
if my > y then begin Raw_Move(0,runflag); continue; end;
//South
DropOre;
Raw_Move(4,runflag); continue;
end;
if mx < x then begin
 // Northeast
if my > y then begin DropOre; Raw_Move(1,runflag); continue; end;
//  East
if my = y then begin DropOre; Raw_Move(2,runflag); continue;
end;
// Southeast
DropOre; Raw_Move(3,runflag); continue;
end;
// Southwest
if my < y then begin DropOre; Raw_Move(5,runflag); continue; end;
// West
if my = y then begin DropOre; Raw_Move(6,runflag); continue; end;
// Nortwest
DropOre; Raw_Move(7,runflag); continue;
end;
end;



Begin

List := TStringList.Create;
List.LoadFromFile('D:\min_minoc.txt');
for i := 0 to List.Count-1 do
begin
s:=List.strings[i]+' ';
MineDim[i].tt:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
MineDim[i].x:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
MineDim[i].y:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));


end;
MaxPosL:=i;
while (connected) do
begin
For NTH := 0 to MaxPosL-1 do
begin

GotoXY(MineDim[NTH].x,MineDim[NTH].y,0,false);

if MineDim[NTH].tt <> 0 then MiningAround;
end;
end;
End.

for script work you need place in D:\ a file called min_minoc.txt with positions of places to mining, if you dont know how you take positions say ,infotile and click in floor.

this script drop any ore you want, for script not drop ore change the line:

for c:=1 to 1 do 
begin
//Addtosystemjournal('Aua?anuaa? ?oaoi');
FindTypeEx($19B9,Color[c],backpack,False);
if (FindCount>0) then
begin
MoveItem(FindItem,0,ground,0,0,0);
wait(200);
checksave;
end;
end;
end;

to if (FindCount<0) then
shkera123
Posts: 2
Joined: 05.04.2011 16:06
Contact:

Post by shkera123 »

UP
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Post by Fenix »

Code: Select all

const
Dager = $00000000//суда ID дагера
...
procedure ArmsLore;
begin
  CancelTarget; //на всякий случай уберем таргет
  UseSkill('Arms Lore'); //используем скилл
  ChekLag(15000); //проверка на лаг
  WaitForTarget(500); //ждем таргет половину секунды
  if TargetPresent then //если таргет появился
  begin
    TargetToObject(Dager); //таргет на дагер
    Wait(3500); //ждем пока отработает Arms Lore
  end;
end;
Добавляешь данный код в скрипт. Вызов ArmsLore ставишь в нужном тебе месте.
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
Mazhor
Posts: 1
Joined: 02.01.2012 20:32

Re: Mining for ZuluHotel - Help PLZ

Post by Mazhor »

Доброго времени суток... у меня стелс версии 3.9.8. При запуске данного скрипта выдаёт ошибку
Compiling
Compiler: [Error] (Mining.sc at 49:1): Unknown identifier 'checksave'
Compiling failed
и как создаётся файл
List.LoadFromFile('D:\min_minoc.txt');
Fenix
Developer
Developer
Posts: 275
Joined: 24.08.2010 7:20
Location: Ставрополь
Contact:

Re: Mining for ZuluHotel - Help PLZ

Post by Fenix »

Насчет формата файла не подскажу, но CheckSave объявлен в инклуде:

Code: Select all

{$Include 'all.inc'}
Можешь просто вместо CheckSave использовать CheckLag(30000).
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
trylala
Posts: 5
Joined: 27.05.2013 19:01

Re: Mining for ZuluHotel - Help PLZ

Post by trylala »

народ плз
что именно нужно оставить в этом скрипте чтобы он просто на месте стоял и копал
выкопал круг и остановился скрипт
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Mining for ZuluHotel - Help PLZ

Post by drabadan »

trylala wrote:народ плз
что именно нужно оставить в этом скрипте чтобы он просто на месте стоял и копал
выкопал круг и остановился скрипт
Попробуй, не тестил.

Code: Select all

program MiningAround;
var
ctime : TDateTime;
x, y, k, mn1, mf1, mf2, mf3, ms1 : Integer;
	Begin
		for x := -2 to 2 do
			begin
				for y := -2 to 2 do
					begin
						repeat							
							if TargetPresent then CancelTarget;
							if WarMode = true then SetWarMode(false);
							ctime := Now;
							UseObject(ObjAtLayerEx(RhandLayer,self));
							WaitForTarget(5000);
							If TargetPresent then TargetToTile(1343, GetX(self)+x, GetY(self)+y, GetZ(self));
							k := 0;
							repeat
								wait(100);
								k := k + 1;
								//checksave;
								mn1 := InJournalBetweenTimes('stop', ctime, Now);
								mf1 := InJournalBetweenTimes('you can', ctime, Now);
								mf2 := InJournalBetweenTimes('fail', ctime, Now);
								mf3 := InJournalBetweenTimes('mine', ctime, Now);
								ms1 := InJournalBetweenTimes('way', ctime, Now);
							until (mn1<>-1) or (mf1<>-1) or (mf2<>-1) or (mf3<>-1) or (ms1<>-1) or (k > 300);
						until (mn1<>-1);
					end;
			end;
	End.
trylala
Posts: 5
Joined: 27.05.2013 19:01

Re: Mining for ZuluHotel - Help PLZ

Post by trylala »

:) cпасибо
вот что у меня получилось

Code: Select all

program MiningAround;
var
ctime : TDateTime;
x, y, k, mn1, mf1, mf2, mf3, ms1 : Integer;
   Begin
      for x := -2 to 2 do
         begin
            for y := -2 to 2 do
               begin
                  repeat                     
                     if TargetPresent then CancelTarget;
                     if WarMode = true then SetWarMode(false);
                     ctime := Now;
                     UseObject(ObjAtLayerEx(RhandLayer,self));
                     WaitForTarget(5000);
                     If TargetPresent then TargetToTile(0, GetX(self)+x, GetY(self)+y, GetZ(self)); // поменял на 0 так как тайлы разные в шахе (сейчас копает все)
                     k := 0;
                     repeat
                        wait(100);
                        k := k + 1;
                        //checksave;
                        mn1 := InJournalBetweenTimes('Здесь больше нет руды', ctime, Now);
                        mf1 := InJournalBetweenTimes('Вы не можете добывать здесь', ctime, Now);
                        mf2 := InJournalBetweenTimes('Вы не видите это место', ctime, Now);
                        mf3 := InJournalBetweenTimes('Вы поранились киркой', ctime, Now);
                        ms1 := InJournalBetweenTimes('Вы добыли', ctime, Now);
                     until (mn1<>-1) or (mf1<>-1) or (mf2<>-1) or (mf3<>-1) or (ms1<>-1) or (k > 300);
                  until (mn1<>-1);
               end;
         end;
   End.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Mining for ZuluHotel - Help PLZ

Post by Vizit0r »

Code: Select all

      for x := -2 to 2 do
         begin
            for y := -2 to 2 do
               begin
                  repeat        
меняется на

Code: Select all

      for x := -2 to 2 do
            for y := -2 to 2 do
                  repeat   

ну и снизу соответственно два энда тоже можно выкинуть
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Sorme.it
Neophyte
Neophyte
Posts: 46
Joined: 24.05.2013 9:02

Re: Mining for ZuluHotel - Help PLZ

Post by Sorme.it »

вопрос к топикстартеру - какого вида должен быть твой файл

Code: Select all

List.LoadFromFile('D:\min_minoc.txt');
?
хочу свои координаты просто вставить 8)
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Mining for ZuluHotel - Help PLZ

Post by Vizit0r »

TTTTT XXXXX YYYYYY

T - тайл
X,Y
разделитель - пробел, в конце пробела нет.
длина каждого типа может быть хоть один, хоть 10 - до разделителя вобщем.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply