Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
добыча (mining recall script)
добыча (mining recall script)
English: I got some macro miner here in the Scripting section but no work to do to mine around the mine, and recall home and kept ores in a chest or bank and recall back to mine.
I am in need of a script to do it, if someone has or can help me I would be grateful
thank you
Russian: Я получил некоторые макросы шахтера здесь, в разделе сценариев, но не поработать, чтобы мои вокруг мое, и все Recalada руд в груди или скамейке Recalada а затем обратно в шахту.
Я нуждается в сценарии этого делать, если кто-либо может помочь мне, я был бы признателен
спасибо
Sorry if something is not clear,i am brazilian and i'm using Google Translate
[] 's
I am in need of a script to do it, if someone has or can help me I would be grateful
thank you
Russian: Я получил некоторые макросы шахтера здесь, в разделе сценариев, но не поработать, чтобы мои вокруг мое, и все Recalada руд в груди или скамейке Recalada а затем обратно в шахту.
Я нуждается в сценарии этого делать, если кто-либо может помочь мне, я был бы признателен
спасибо
Sorry if something is not clear,i am brazilian and i'm using Google Translate
[] 's
Re: добыча (mining recall script)
try this one:
Code: Select all
program Mining;
{$Include 'all.inc'}
type st = array[0..100] of array[1..3] of word;
const
Radius = 2; //Если Radius = 2, то 25 клеток копки; если 1, то 9 клеток копки; если 0, то поидее 1 летка;
MaxWght = 400; //Максимальный вес с которым может поднимать вещи
MinOre = 8; //Минимальный уровень руды,с которую будет брать, остальное игнориться на полу
MaxFood = 2;
OreType = $19B9;
AxeType = $0E85;
RedRadius = 10; //Радиус поиска красного
CountAxeInPack = 2; //Количество кирок, которых должно быть в паке
AxeGump = '3717';
TinkGump = '7865';
Eda = $097B; //Тип еды
TinkType = $1EB9;
CopperType = $1BF2;
//Для выгрузки руды, настроено для ГК. Выгрузка идет на север со смещением одной клетки.
OreX = -1;
OreY = -1;
OreZ = 2; //Если выгрузка идет на ступеньки ГК тут надо поставить 2
//Для рекола
RuneBook = $52363CB3; //Рунобука с рунами по шахтам
KolRun = 15; //Количество рун по шахтам
RbToHome = $4C08F883; //Рунобука домой
HomeRune = 1; //Номер руны домой
AtHomeX = 2073; //Координата Х положения чара в доме.
AtHomeY = 1246; //Координата Y положения чара в доме.
NeedMana = 94; //Количество манны, которое чар будет ждать прежде чем улететь
//Состояние чара
IN_MINING = 1;
AT_HOME = 2;
NEED_RESOURCE = 3;
WAIT_MANA = 4;
IN_DANGER = 5;
MAKE_RESOURCE = 6;
START_SCRIPT = 7;
ORE_IN_FINGER = 8;
TO_HOME = 9;
RES_SELF = 10;
//Музыкальный файл
FileName = 'd:\help.wav'; //Звуковой файл, обязательно *.wav
var
OreColor : Array [0..16] of Word;
MinOreCol : integer;
Koord : st;
Status : integer;
MaxCharges : integer; // Максимальное количество зарядов в RuneBook, в последствии подредактируется
CountKoord : integer;
FullPack : boolean;
stime : TDateTime;
TileX, TileY : word;
OreInFinger : Cardinal;
OreInFingerColor : word;
StartX,StartY,EndX,EndY: integer;
a,b,c,d,e,f,g,h,k,r,Krug : Integer;
procedure Raschet;
var
i: integer;
begin
StartX := GetX(self) - Radius;
StartY := GetY(self) - Radius;
EndX := GetX(self) + Radius;
EndY := GetY(self) + Radius;
i := 0;
for TileX := StartX to EndX do
begin
for TileY:=StartY to EndY do
begin
Koord[i][1] := TileX;
Koord[i][2] := TileY;
i := i + 1;
end;
end;
CountKoord := i-1;
end;
procedure CheckConnect;
begin
if not Connected then begin
while not Connected do wait(2000);
ClickOnObject(backpack);
WaitJournalLine(Now,'backpack',120000);
CheckSave;
Addtosystemjournal('Поплыли дальше после реконнекта.');
end;
end;
procedure ResSelf;
begin
AddToSystemJournal('Resself. Enter');
PlayWav(FileName);
CheckConnect;
Wait(1000);
WaitGump('1');
setwarmode(true);
while dead do wait(1000);
if targetpresent then canceltarget;
if dead then exit;
UOSay('Спасибо.');
AddToSystemJournal('Resself. Exit');
Status := RES_SELF;
end;
function AllRight():boolean;
begin
if ((Status = NEED_RESOURCE) or (Status = IN_DANGER) or (Status = RES_SELF)) then result := false
else result := true;
end;
function DangerCheck():boolean;
var
Enemy:array[1..3] of Word;
z:Integer;
begin
Enemy[1] := $0190;
Enemy[2] := $0191;
Enemy[3] := $000E;
Ignore(Self);
finddistance:=RedRadius;
for z:=1 to 3 do
begin
CheckConnect;
if FindType(Enemy[z],ground) > 0 then
begin
if (GetNotoriety(finditem) = 6) or (z=3) then
begin
AddToSystemJournal('В шахту пришел(а) ' + GetCliloc(finditem));
Status := IN_DANGER;
Raw_Move(GetDirection(self),true);
wait(50);
Raw_Move(GetDirection(self),true);
wait(50);
result := true;
exit;
end
end;
end;
result := false;
end;
Procedure GrabOre;
var q,qq: integer;
stime : TDateTime;
OreGrab, CountGrab: cardinal;
begin
finddistance:=2;
FindType(OreType,ground);
if findcount>0 then
begin
if Status = TO_HOME then qq := 1
else qq := MinOre;
for q:=15 downto qq do
begin
stime:=Now;
FindTypeEx(OreType,OreColor[q],ground,false);
if (FindQuantity>0) and not FullPack then
begin
CheckConnect;
addtosystemjournal(' Найдено: ' + GetCliloc(finditem));
OreGrab:=finditem;
CountGrab:=GetQuantity(finditem);
Grab(OreGrab, CountGrab);
end;
if InJournalBetweenTimes('That item is too heavy',stime,Now)>=0 then begin addtosystemjournal('Тяжеловато!!!'); FullPack:=true; exit; end;
end;
end;
end;
procedure EquipPicAxe;
begin
FindType(AxeType,backpack);
if (FindQuantity>0) then
begin
Equip(RHandLayer,finditem);
CheckConnect;
wait(1500);
end
else
begin
Status := NEED_RESOURCE;
addtosystemjournal('Закончились кирки. Пора домой!');
end;
end;
function WaitMining():boolean;
var
stime : TDateTime;
begin
stime:=Now;
if DangerCheck then result:=false;
WaitJournalLine(Now, 'You put some|no more ore|broke|stop mining|cannot see|far away|cannot mine|what is this?!', 30000);
if InJournalBetweenTimes('You put some', stime, Now) >=0 then
begin
GrabOre();
result:=true;
end
else
begin
result:=false;
end;
end;
function StartMining(x,y : word):boolean;
var
stime : TDateTime;
TileInfo : TStaticCell;
i : Integer;
begin
stime:=Now;
if TargetPresent then CancelTarget;
CheckConnect;
if dead then resself;
if GetType(ObjAtLayer(RhandLayer)) <> AxeType then EquipPicAxe;
if AllRight() then
begin
TileInfo:=ReadStaticsXY(x, y, 1);
for i := 0 to TileInfo.StaticCount -1 do
if (TileInfo.Statics[i].Tile >= 1339) and (TileInfo.Statics[i].Tile <= 1343) then
begin
WaitTargetTile(TileInfo.Statics[i].tile,TileInfo.Statics[i].x,TileInfo.Statics[i].y,TileInfo.Statics[i].z);
UseObject(ObjAtLayer(RHandLayer));
while WaitMining() do wait(100);
end;
end;
if dead then resself;
a := InJournalBetweenTimes('no more ore', stime, Now);
b := InJournalBetweenTimes('broke', stime, Now);
c := InJournalBetweenTimes('stop mining', stime, Now);
d := InJournalBetweenTimes('cannot see', stime, Now);
e := InJournalBetweenTimes('far away', stime, Now);
f := InJournalBetweenTimes('cannot mine', stime, Now);
g := InJournalBetweenTimes('what is this?!', stime, Now);
CheckSave;
if b >=0 then
begin
wait(1000);
if GetType(ObjAtLayer(RhandLayer)) <> AxeType then begin
EquipPicAxe;
Addtosystemjournal('Сменили кирку!');
end;
end;
if ((a >=0) or (b >=0) or (c >=0) or (d >=0) or (e >=0) or (f >=0) or (g >=0) or (h >=0)) then begin result:=false; end
else begin result:=true; end;
end;
procedure StackOre(ObjType, Color : word; OreX,OreY : integer);
var
PackItem, GroundItem : Cardinal;
stime : TDateTime;
begin
PackItem := 0;
GroundItem := 0;
FindtypeEx(ObjType,Color,backpack,false);
IF FindFullQuantity > 0 then PackItem := finditem;
FindtypeEx(ObjType,Color,ground,false);
IF FindFullQuantity > 0 then IgnoreReset;
repeat
FindtypeEx(ObjType,Color,ground,false);
IF FindCount > 0 then
if FindQuantity > 55000 then Ignore(finditem)
else
Begin
GroundItem := finditem;
if (PackItem <> 0) and (GroundItem <> 0) then
begin
CheckConnect;
stime := Now;
MoveItems(backpack,ObjType,Color,GroundItem,0,0,0,700);
if InJournalBetweenTimes('Could not add item to stack', stime, Now) > 0 then
Begin
Ignore(GroundItem);
GroundItem := 0;
end;
end
end;
until (FindCount = 0) or (GroundItem <> 0);
if GroundItem = 0 then drop(PackItem,-1,OreX,OreY,OreZ);
end;
procedure DropOre;
var
flag : boolean;
X,Y : Integer;
q: Integer;
PackItem : Cardinal;
begin
FindType(OreType,backpack);
if findcount > 0 then
begin
addtosystemjournal('Количество найденых стопок руды в паке: ' + IntToStr(FindCount));
for q:=0 to 15 do
begin
FindTypeEx(OreType,OreColor[q],backpack,true);
if FindCount > 0 then
begin
StackOre(OreType,OreColor[q],OreX,OreY);
wait(200);
end;
end;
FullPack := false;
end;
end;
procedure CheckAxe;
var food: integer;
Begin
AddToSystemJournal('Проверяю инструменты...');
if (count($097B)<MaxFood) then
begin
repeat
food:=count (Eda);
FindType(Eda,ground);
if finditem=0 then continue;
if (findquantity>(MaxFood-food)) then grab (finditem, MaxFood-food) else grab (finditem, 0);
wait (1000);
AddToSystemJournal('Подкинул '+inttostr(count (Eda)-food)+' еды в бэкпак');
until (countground(Eda)=0) or (count(Eda)>MaxFood-1);
end;
if (Count(AxeType) < CountAxeInPack) then
begin
FindType(Tinktype,ground);
if FindCount < 3 then
begin
CheckConnect;
AddToSystemJournal('Делаем тузлы');
UseObject(FindType(TinkType,ground));
WaitTargetobject(findtype(CopperType,ground));
GumpAutoTextEntry(513,'1');
WaitGump(TinkGump);
wait(500);
WaitJournalLine(Now, 'You create|destroy|You put', 30000);
drop(FindType(TinkType,backpack),-1,OreX,GetY(self),OreZ);
end;
repeat
WaitConnection(3000);
CheckSave;
CheckDead(false);
FindType(CopperType,ground);
if FindCount > 0 then
begin
finddistance:=1;
AddToSystemJournal('Делаем кирку.');
UseObject(FindType(TinkType,ground));
WaitTargetobject(findtype(CopperType,ground));
GumpAutoTextEntry(513,'1');
WaitGump(AxeGump);
wait(500);
WaitJournalLine(Now, 'You create|destroy|You put', 30000);
end
else
begin
AddToSystemJournal('Не могу найти руду, чтобы сделать инструмент добывательный!');
FullDisconnect;
end;
until (Count(AxeType) >= CountAxeInPack);
end;
End;
function GetRuneId() : Integer;
var
Tmp,FileList : TStringList;
M,N : Integer;
GI: Integer;
FindNo : Boolean;
Begin
FileList := TStringList.Create();
Tmp := TStringList.Create();
GetGumpFullLines(GI,FileList);
m:=0;
N:=0;
FindNo := true;
while (m < FileList.count-1) and FindNo do
BEGIN
StrBreakApart(FileList.Strings[m], ' ', Tmp);
if (Tmp.Strings[0] = 'GumpButtons:') then
begin
N:=m+2;
end;
m:=m+1;
END;
StrBreakApart(FileList.Strings[N], ' ', Tmp);
if N > 0 then
begin
result:=StrToInt(Tmp.Strings[Tmp.count-3]);
end
else
begin
result:=0;
end;
FileList.Free;
Tmp.Free;
End;
function Recall(RB : Cardinal; N:Integer):boolean;
var
Num : Integer;
Serial : Integer;
begin
if N < 1 then
N:=1;
Serial := 0;
repeat
if not (Serial = 0) then CloseSimpleGump(Serial);
UseObject(RB);
CheckConnect;
wait(3000);
GetGumpSerial(Serial);
until (GetGumpsCount > 0)
Num := GetRuneId();
if Num > 0 then
begin
waitGump(IntToStr(Num+(N-1)));
wait(5000);
result := true;
end
else
begin
addtosystemjournal('Руна не найдена :(');
result := false;
end;
end;
function CheckRunebook(ItemCheck: cardinal): integer;
var
s1,s2: string;
Charges, i, indx: integer;
starttime: TdateTime;
check: boolean;
begin
waitconnection(3000);
check:=false;
while connected and not check do
begin
starttime := Now;
ClickOnObject(ItemCheck);
repeat
wait(50);
i:=i+1;
until (InJournalBetweenTimes('[charges:|a runebook', starttime, Now)<>-1) or (i>=200);
if i>=200 then i:=0 else check:=true;
if (InJournalBetweenTimes('[charges:', starttime, Now)=-1) then
begin
check:=true;
result:=MaxCharges;
addToSystemJournal('Переименуйте как-то главную рунабуку! Не могу определить количество зарядов');
exit;
end;
if check=true then indx:=LineIndex;
checksave;
end;
s2:=Journal(indx);
s1:=Copy(s2, length(s2)-2 ,2);
s2:=Trim(s1);
Charges:=StrToInt(s2);
result:=Charges;
end;
Procedure CheckCharges(RB: Cardinal);
var
NeedCharges, TempCharges: integer;
Changed: boolean;
GateTravels: cardinal;
begin
waitconnection(3000);
if Count($1F60)>0 then
begin
stack($1F60, $0000);
wait (2000);
end;
Changed:=false;
FindType($1F60, ground);
if FindCount=0 then
begin
FindDistance:=0;
FindType($1F60, ground);
end;
GateTravels:=finditem;
repeat
NeedCharges:=MaxCharges-CheckRunebook(RB);
if NeedCharges<0 then
begin
MaxCharges:=MaxCharges+5;
Changed:=true;
end;
until NeedCharges>=0;
if Changed then
begin
AddToSystemJournal (' Максимальное количество зарядов рунабуки изненено, теперь '+inttostr(MaxCharges));
Changed:=false;
end;
if (FindCount > 0) and (NeedCharges>0) then
begin
TempCharges:=Count($1F60);
addToSystemJournal('Заправляю рунабуку на ' +inttostr(NeedCharges)+' заряд(а)');
DragItem(GateTravels, NeedCharges);
wait (2000);
DropItem(RB, 0,0,0);
CheckSave;
wait (2000);
CheckSave;
if Count($1F60)>TempCharges then
begin
MaxCharges:=MaxCharges-Count($1F60);
AddToSystemJournal (' Максимальное количество зарядов рунабуки изненено, теперь '+inttostr(MaxCharges));
stack($1F60, $0000);
end;
end
else
if (FindCount < 0) and (NeedCharges>0) then
begin
addToSystemJournal('Закончились заряды для рунабуки в месте заправки! Выхожу...');
FullDisconnect;
end;
end;
procedure WaitNeedMana;
var
wm: integer;
begin
if Status = AT_HOME then wm := NeedMana
else wm := 70;
if Mana < wm then
begin
addToSystemJournal('Ожидаем пока востановится мана...');
while Mana <= wm do
begin
if GetSkillValue('Meditation') > 0 then UseSkill('Meditation');
wait(1000);
end;
end;
end;
procedure GetOreInFinger;
var q: integer;
CountGrab: cardinal;
begin
finddistance:=2;
FindType(OreType,ground);
if findcount > 0 then
for q:=15 downto 0 do
begin
FindTypeEx(OreType,OreColor[q],ground,false);
if FindQuantity > 0 then
begin
addtosystemjournal('Берем на палец: ' + GetCliloc(finditem));
OreInFinger:=finditem;
OreInFingerColor := GetColor(OreInFinger);
CountGrab:=GetQuantity(finditem);
DragItem(OreInFinger, CountGrab);
Status := ORE_IN_FINGER;
exit;
end;
end;
end;
procedure DropOreFromFinger;
var q: integer;
GroundItem, CountGrab: cardinal;
begin
finddistance:=2;
if Status = ORE_IN_FINGER then
begin
repeat
FindtypeEx(OreType,OreInFingerColor,ground,false);
IF FindCount > 0 then
if FindQuantity > 55000 then Ignore(finditem)
else
Begin
GroundItem := finditem;
if (OreInFinger <> 0) and (GroundItem <> 0) then
begin
stime := Now;
DropItem(GroundItem,0,0,0);
wait(1000);
CheckConnect;
if InJournalBetweenTimes('Could not add item to stack', stime, Now) > 0 then
Begin
Ignore(GroundItem);
GroundItem := 0;
end;
end
end;
until (FindCount = 0) or (GroundItem <> 0);
if GroundItem = 0 then DropItem(ground,OreX,OreY,OreZ);
Addtosystemjournal('Освободили руки...');
end;
end;
procedure GoHome;
begin
if dead then resself;
CheckConnect;
if Status = IN_MINING then begin Status := TO_HOME; GrabOre; end;
if Status = TO_HOME then GetOreInFinger;
WaitNeedMana;
Addtosystemjournal('Полетели домой...');
if (not ((GetX(self) = AtHomeX) and (GetY(self) = AtHomeY))) then Recall(RbToHome,HomeRune);
if Status = ORE_IN_FINGER then DropOreFromFinger;
Status := AT_HOME;
UnEquip(RHandLayer);
wait(1000);
CheckConnect;
end;
procedure GoToWaxta(Num: integer);
begin
if dead then resself;
WaitNeedMana;
Addtosystemjournal('Полетели в шахту...');
Status := IN_MINING;
if ((GetX(self) = AtHomeX) and (GetY(self) = AtHomeY)) then Recall(RuneBook,Num);
end;
procedure InfoRes;
begin
FindDistance := 2;
FindType(Eda,ground);
Addtosystemjournal('Еды на земле '+intToStr(findfullquantity)+'!');
FindType(TinkType,ground);
Addtosystemjournal('Тулзов на земле '+intToStr(findfullquantity)+'!');
FindType(CopperType,ground);
Addtosystemjournal('Металла на земле '+intToStr(findfullquantity)+'!');
FindType($1F60,ground);
Addtosystemjournal('Гейтов на земле '+intToStr(findfullquantity)+'!');
Addtosystemjournal('--==Руда==--');
Addtosystemjournal('Количество Cooper: ' + inttostr(CountEx(OreType,$07DF,Ground)));
Addtosystemjournal('Количество Iron: ' + inttostr(CountEx(OreType,$0000,Ground)));
Addtosystemjournal('Количество Steel: ' + inttostr(CountEx(OreType,$0482,Ground)));
Addtosystemjournal('Количество Anra: ' + inttostr(CountEx(OreType,$045E,Ground)));
Addtosystemjournal('Количество Valurit: ' + inttostr(CountEx(OreType,$07D6,Ground)));
Addtosystemjournal('Количество LavaRock: ' + inttostr(CountEx(OreType,$006f,Ground)));
Addtosystemjournal('Количество IceRock: ' + inttostr(CountEx(OreType,$09f9,Ground)));
Addtosystemjournal('Количество Shadow: ' + inttostr(CountEx(OreType,$0940,Ground)));
Addtosystemjournal('Количество Azurite: ' + inttostr(CountEx(OreType,$094A,Ground)));
Addtosystemjournal('Количество Doom: ' + inttostr(CountEx(OreType,$0943,Ground)));
Addtosystemjournal('Количество BlueSteel: ' + inttostr(CountEx(OreType,$094E,Ground)));
Addtosystemjournal('Количество DarkRuby: ' + inttostr(CountEx(OreType,$0214,Ground)));
Addtosystemjournal('Количество Crystalit: ' + inttostr(CountEx(OreType,$0487,Ground)));
Addtosystemjournal('Количество Onix: ' + inttostr(CountEx(OreType,$0946,Ground)));
Addtosystemjournal('Количество Mefril: ' + inttostr(CountEx(OreType,$093F,Ground)));
Addtosystemjournal('Количество GeMa: ' + inttostr(CountEx(OreType,$05D7,Ground)));
end;
Begin
SetARStatus(true);
OreColor[0] := $07DF; // 0 - Cooper
OreColor[1] := $0000; // 1 - Iron
OreColor[2] := $0482; // 2 - Steel
OreColor[3] := $045E; // 3 - Anra
OreColor[4] := $07D6; // 4 - Valurit
OreColor[5] := $006f; // 5 - LavaRock
OreColor[6] := $09f9; // 6 - IceRock
OreColor[7] := $0940; // 7 - Shadow
OreColor[8] := $094A; // 8 - Azurite
OreColor[9] := $0943; // 9 - Doom
OreColor[10] := $094E; // 10 - BlueSteel
OreColor[11] := $0214; // 11 - DarkRuby
OreColor[12] := $0487; // 12 - Crystalit
OreColor[13] := $0946; // 13 - Onix
OreColor[14] := $093F; // 14 - Mefril
OreColor[15] := $05D7; // 15 - Gem
MinOreCol := OreColor[MinOre];
MaxCharges := 10;
Addtosystemjournal('--==Скрипт сделан MindOM==--');
while not Connected do wait(2000);
FindDistance := 15;
FindVertical := 128;
if (WarMode = true) then SetWarMode(false);
Status := START_SCRIPT;
Krug := 0;
while 1=1 do
begin
for r := 0 to KolRun - 1 do
begin
GoHome;
DropOre;
CheckAxe;
CheckCharges(RuneBook);
CheckCharges(RbToHome);
Hungry(1,ground);
InfoRes;
CheckSave;
GoToWaxta(r+1);
Raschet;
CheckConnect;
for k := 0 to CountKoord -1 do
begin
if dead then resself;
CheckSave;
if AllRight() then
begin
Hungry(1,backpack);
Addtosystemjournal('Круг №'+inttostr(Krug+1)+'; Шахта №'+inttostr(r+1)+'; Точка № '+inttostr(k+1)+'/'+inttostr(CountKoord)+' (X=' + inttostr(Koord[k][1])+ ', Y='+ inttostr(Koord[k][2])+')');
while StartMining(Koord[k][1],Koord[k][2]) do wait(100);
end;
end;
end;
Krug := Krug + 1;
Addtosystemjournal('Закончили круг № '+inttostr(Krug));
end;
End.
Новый стелс лежит тут. Стелс это произведение искусства!
Re: добыча (mining recall script)
Thank Alex for your contribution
O Compiling script and ocurred this errors:
Although i dont understand much, try to solve the problem and if anyone here can help me know and I'm thankful
Tkz
[]'s
O Compiling script and ocurred this errors:
Code: Select all
15:28:20:129 [eduxxx]: Compiler: [Hint] (miner.sc at 289:3): Variable 'X' never used
15:28:20:130 [eduxxx]: Compiler: [Hint] (miner.sc at 289:3): Variable 'Y' never used
15:28:20:131 [eduxxx]: Compiler: [Hint] (miner.sc at 291:3): Variable 'PACKITEM' never used
15:28:20:132 [eduxxx]: Compiler: [Error] (miner.sc at 343:10): Unknown identifier 'CheckDead'
15:28:20:134 [eduxxx]: Compiling failed
15:28:20:136 [eduxxx]: Script miner.sc stopped successfuly
Tkz
[]'s
Re: добыча (mining recall script)
remove "CheckDead(false);" from the script
Новый стелс лежит тут. Стелс это произведение искусства!
Re: добыча (mining recall script)
After removing the line CheckDead compiled the script however is giving another error
I think the line is to use the pickaxe to mine, but try to find yourself thinking TinkType be the same and did not work = [
Code: Select all
17:18:41:545 [edur0x7]: Compiled succesfully
17:18:41:547 [edur0x7]: --==?????? ?????? Mindomo ==--
17:18:41:549 [edur0x7]: ???????? ?????...
17:18:41:550 [edur0x7]: [b]UseObject error: Object not found.[/b]
Re: добыча (mining recall script)
Code: Select all
function GetRuneId() : Integer;
var
Tmp,FileList : TStringList;
M,N : Integer;
GI: Integer;
FindNo : Boolean;
Begin
FileList := TStringList.Create();
Tmp := TStringList.Create();
GetGumpFullLines(GI,FileList);
m:=0;
N:=0;
FindNo := true;
while (m < FileList.count-1) and FindNo do
BEGIN
StrBreakApart(FileList.Strings[m], ' ', Tmp);
if (Tmp.Strings[0] = 'GumpButtons:') then
begin
N:=m+2;
end;
m:=m+1;
END;
1. используя заряды буки (левая кнопка)
2. используя реагенты (правая кнопка)
как я понял твоя функция кликает именно на правую, потому как только я поменял N:=m+2; на N:=m+1; чар стал реколится.
Поправь, если я неправ.
Второй момент
AtHomeX = 2073; //Координата Х положения чара в доме.
AtHomeY = 1246; //Координата Y положения чара в доме.
это, если я опять же правильно понял из коментов, координаты чара при выгрузке загрузке руды/регов у дома
Так вот есил их поменять на свои то по прилету в шахту выдается системное сообщение что Круг 1 Шахта 1 .......и в скобках координаты AtHomeX AtHomeY попарвленные на мои и следом ошибка Out of Range 56. не помню дальше и все скрипт останавливается, но если поменять эти координаты на координаты 1 шахты он начинает копать.
Смысл скрипта это сбрасывать всю руду на пол а при реколе домой подымать с пола "на палец" только какой-то один вид руды?
MinOre = 8; //Минимальный уровень руды,с которую будет брать, остальное игнориться на полу - просто вот это не совсем понятно
Еще я понял что если нет кирок он их сам делает
Просто не успел полностью потестить скрипт, задумка очень хорошая, но реализовано под конкретный шард. Просто я бы хотел уточнить кое какие нюансы.
Можешь в нескольких словах работу скрипта описать? Т.е. что делает по шагам
Можеш в асю кинуть 43209490
Заранее благодарю.
Re: добыча (mining recall script)
AtHomeX - это координаты точки домашней, чар сравнивает с ними текущие координаты что бы понять где он сейчас находится
по Out of Range, придется с помощью AddToSystemJournal('*line number*') выискивать где падает
по поводу руды, он собирает с пола в сумку "полезную"(зависит от значения MinOre) а потом кроме того еще хватает в руки самую крутую из оставшихся под ногами
нюансы спрашивай)
по Out of Range, придется с помощью AddToSystemJournal('*line number*') выискивать где падает
по поводу руды, он собирает с пола в сумку "полезную"(зависит от значения MinOre) а потом кроме того еще хватает в руки самую крутую из оставшихся под ногами
нюансы спрашивай)
Новый стелс лежит тут. Стелс это произведение искусства!
Re: добыча (mining recall script)
Уважаемый создатель скрипта, а как бы сделать перед реколлом проверку на наличие кирки в руках... А то на зхр не реколится зараза. И почему-то скидывает руду даже если 0 ставлю.
Re: добыча (mining recall script)
там есть функцияx CheckAxe которая делает тинкерингом кирки если их в сумке нету, а одеть в руки можно с помощью этой функции - http://stealth.od.ua/wiki/doku.php?id=equipsoulen wrote:Уважаемый создатель скрипта, а как бы сделать перед реколлом проверку на наличие кирки в руках... А то на зхр не реколится зараза. И почему-то скидывает руду даже если 0 ставлю.
а по поводу cкидывает руду, тут тебе придется копатся в скрипте, разбиратся почему
Новый стелс лежит тут. Стелс это произведение искусства!
Re: добыча (mining recall script)
А чем плох скрипт Феникса?
http://stealth.od.ua/forum/viewtopic.php?f=3&t=1570
http://stealth.od.ua/forum/viewtopic.php?f=3&t=1570
My name is Игорёшка
Пишу скрипты за еду
Пишу скрипты за еду
Re: добыча (mining recall script)
Тем, что тот скрипт предметы в руки не берет для добычи (на том шарде их можно использовать прямо из бекпака) и, соответственно, не убирает их потом из рук перед реколом.
Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall