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

Проблема скрипта Lumber

тут можно задать вопрос по скриптингу
Post Reply
Dark Scout
Posts: 3
Joined: 18.03.2016 2:38

Проблема скрипта Lumber

Post by Dark Scout »

Доброго времени суток. В скриптах я чайник, говорю сразу. На вопросы а почему тут так? а тут вот так? Не смогу ответить, так как я скрипт лепил из очень оригинального мининга. Сам скрипт выдает вот такую ошибку.
21:34:14:802 [Elizabet Help Craft]: Compiling
21:34:14:932 [Elizabet Help Craft]: Compiler: [Hint] (Lumber Elizabet test New111.sc at 353:11): Variable 'Result' never used
21:34:15:030 [Elizabet Help Craft]: Compiler: [Hint] (Lumber Elizabet test New111.sc at 7:1): Variable 'LOGCOL' never used
21:34:15:122 [Elizabet Help Craft]: Compiler: [Hint] (Lumber Elizabet test New111.sc at 8:1): Variable 'A' never used
21:34:15:203 [Elizabet Help Craft]: Compiler: [Hint] (Lumber Elizabet test New111.sc at 8:1): Variable 'D' never used
21:34:15:285 [Elizabet Help Craft]: Compiler: [Hint] (Lumber Elizabet test New111.sc at 8:1): Variable 'E' never used
21:34:15:361 [Elizabet Help Craft]: Compiler: [Hint] (Lumber Elizabet test New111.sc at 10:1): Variable 'MINLOGCOL' never used
21:34:15:365 [Elizabet Help Craft]: Compiled succesfully
21:34:15:368 [Elizabet Help Craft]: Out Of Range at 34.230
21:34:15:372 [Elizabet Help Craft]: Script Lumber Elizabet test New111.sc stopped successfuly

Прошу знатоков ткнуть меня носом или направить на путь истинный :)
Собственно вот сам скрипт:
Program Lumber; // vlf
type LumberR = record
tile:word;
px,py,pz:integer;
end;
Var LumberP: array of LumberR;
logCol : Array [0..115] of Word;
a,d,e : byte;
ItemCount,b:Integer;
MinLogCol: word;
Const
Forge = $40DA5C36; // АЙДИ ПЛАВИЛКИ
pointX = 2569; //координаты возле плавилки(прямо возле неё, ИНАЧЕ НЕ ВИДИТ)
pointY = 517;// координаты возле плавилки
eda = $097B;
point1X = 2083; //координаты перед шахтой
point1Y = 453; // координаты перед шахтой
point2X = 2083; // координаты внутри шахты - примерно 2-3 шага от входа
point2Y = 450; // координаты внутри шахты - примерно 2-3 шага от входа
point3X = 2083; // 2 координаты чуть дальше от лодки
point3Y = 453; // 2 координаты чуть дальше от лодки
nearX = 2078; //координаты возле лодки
nearY = 460; // координаты возле лодки
onboadx = 2076; //координаты на лодке
onboady = 463; //координаты на лодке
onboadz = -2; //координаты на лодке(не меняется)
Trap = $41A0C657; // SERIAL - трапа лодки (с помощью Injection ,info )
waightlimit = 370; // максимальный лимит веса
logType = $1BDD; // в этих строках ничего менять не надо!
AxeType = $0F43; // в этих строках ничего менять не надо!
AxeGump = '3907'; // в этих строках ничего менять не надо!
Tinktype = $1EBC; // в этих строках ничего менять не надо!
CopperType = $1BF2;// в этих строках ничего менять не надо!

{$Include 'all.inc'}

Procedure GetLumberTiles(s:String;WPos:Integer);
begin
s := s + ' ';
LumberP[WPos].tile:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
LumberP[WPos].px:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
LumberP[WPos].py:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
LumberP[WPos].pz:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
end;

Procedure GetCoord;
var
List:TStringList;
b:integer;
begin
List:=TStringList.Create;
List.LoadFromFile('C:\Zulu Hotel Europe\Zulu Hotel Europe\ZHE_Stealth\Elizabet Help Craft\Tile Tree Elizabet.txt'); //тут прописывается путь к файлу с тайлами)
for b := 0 to List.Count-1 do
GetLumberTiles(List.strings,b);
ItemCount:=b;
end;
Procedure autoloops;
begin
UoSay('.autoloop 15') //меняем значение сколько копает раз)))
wait(1000)
end;

procedure checkcoord;
begin
CheckSave;
checkdead;
if (GetZ(self) = onboadz) then
begin
repeat
UseObject(Trap);
wait(500);
Raw_Move(2, True); // менять чтоб выйти с лодки 0 2 4 6 8
Raw_Move(2, True);
wait(500);
until (GetZ(self) <> onboadz);
UOSay('OMG');
AddToSystemJournal('Сошел на берег успешно!');
MoveXY(point1X,point1Y, True, 0, True);
if (GetX(self) = point1X) then
begin
MoveXY(point2X,point2Y, True, 0, True);
if (GetX(self) = point2X) then
begin
MoveXY(point3X,point3Y, True, 0, True);
autoloops;
end;
end;
end;
end;

procedure CheckCooper;
begin
FindType(CopperType, Backpack);
if (FindFullQuantity < 10) then
begin
FindTypeEx(CopperType,$0602,Ground,true); //Изменить цвет если делать кирку с высшего метала
MoveItem(finditem, 25, backpack, 0,0,0);
wait(1000);
end;
end;

Procedure make_item;
Begin
CancelMenu;
WaitMenu('What', 'Deadly Tools');
WaitMenu('make', 'Hatchet');
if TargetPresent then CancelTarget;
WaitTargetType(CopperType);
usetype(Tinktype,$ffff);
end;

procedure CheckPick;
begin
CheckSave;
checkdead;
CheckCooper;
if (Count(AxeType) < 1) then
begin
repeat
ClearJournal;
make_item;
WaitGump(AxeGump);
WaitTargetobject(findtype(CopperType,backpack));
UseObject(FindType(TinkType,Ground));
WaitJournalLine(Now, 'You create|destroy|You put', 30000);
wait(500);
until (Count(AxeType) >= 1);
end;
end;
procedure DropOre;
var g : integer;
LogCol : Array [0..20] of Word;
Begin
finddistance := 3;
CheckSave;
AddToSystemJournal('Сбрасываем Дерево');
logCol[0] := $0000; // Normal
logCol[1] := $0362; // Jade
logCol[2] := $010D; // Oak
logCol[3] := $0094; // Karund
logCol[4] := $01B0; // Leshram
logCol[5] := $01A2; // Tourmalite
logCol[6] := $0026; // Emerint
logCol[7] := $094A; // Darkwood
logCol[8] := $094D; // Sun
logCol[9] := $00CB; // Legrand
logCol[10] := $095F; // Solmur
logCol[11] := $0937; // Kleor
logCol[12] := $093D; // Logradoom
logCol[13] := $0947; // Vialonit
logCol[14] := $087D; // Stardust
logCol[15] := $0A05; // Pyronil
logCol[16] := $09EE; // Mystic
logCol[17] := $07F2; // Elvin
logCol[18] := $0683; // Young Oak
logCol[19] := $0AAA; // Elkris
logCol[20] := $0802; // Goddess
for g := 0 to 20 do
begin
CheckSave;
FindTypeEx(logType,logCol[g],backpack,true);
if FindCount > 0 then
begin
stack(logType,logCol[g]);
wait(1000);
end;
end;
hungry (1,-1);
wait(500);
Addtosystemjournal('=========================================');
FindType(logType,ground);
Addtosystemjournal('Всего металла на лодке - '+intToStr(findfullquantity));
FindTypeEx(logType,$0000,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Normal Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$0362,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Jade Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$010D,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Oak Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$0094,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Karund Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$01B0,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Lesharm Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$01A2,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Tourmalite Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$0026,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Emerint Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$094A,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Darkwood Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$094D,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Sun Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$00CB,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Legrand Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$095F,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Solmur Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$0937,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Kleor Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$093D,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Logradum Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$0947,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Vialonit Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$087D,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Stardust Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$0A05,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Pyronil Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$09EE,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Mystik Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$07F2,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Elvin Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$0683,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Young Log - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$0AAA,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Elkris - '+intToStr(findfullquantity));
end;
FindTypeEx(logType,$0802,ground,False);
if FindCount > 0 then
begin
Addtosystemjournal('Goodess Log - '+intToStr(findfullquantity));
end;


FindType(TinkType,ground);
Addtosystemjournal('Тулзов на лодке - '+intToStr(findfullquantity));
FindType(eda,ground);
Addtosystemjournal('Еды осталось - '+intToStr(findfullquantity));
Addtosystemjournal('=========================================');

End;
Procedure gen;
begin
UoSay('.autoloop 2')//не меняем,иначе кирок сделает до утра;-)
wait(1000)
end;
procedure smelting;
begin
if (Count(logType) <> 0) then
begin
repeat
WaitTargetObject(Forge);
UseObject(FindType(logType,Backpack));
WaitJournalLine(Now, 'You create|destroy', 20000);
wait(500);
until (Count(logType) = 0);
gen;
end;
end;
procedure GotoOnBoad;
begin
CheckSave;
checkdead;
MoveXY(pointX,pointY,true,0,True);
smelting;
MoveXY(point1X,point1Y, True, 0, True);
MoveXY(point2X,point2Y, True, 0, True);
MoveXY(nearX,nearY, True, 0, True);
wait(500);
repeat
UseObject(Trap);
wait(1000);
until (GetX(self) = OnBoadX) and (GetY(self) = OnBoadY);
wait(500);
Hungry(1, -1);
DropOre;
CheckPick;
checkcoord;
end;

procedure checktools;
begin
FindType(AxeType, Backpack);
if (FindCount < 1) then
begin
GotoOnBoad;
end;
end;

procedure CheckEquip;
Var EquipAxe : Cardinal;
begin
if (GetType(ObjAtLayer(RhandLayer)) <> AxeType) then
begin
Disarm;
wait(500);
checktools;
FindType(AxeType, Backpack);
EquipAxe := finditem;
Equip(RhandLayer, EquipAxe);
end;
end;

function Lumber(tile:Word;x,y,z:Integer):boolean;
begin
CheckSave;
checkdead;
WaitTargetTile(tile,x,y,z);
UseObject(ObjAtLayer(RhandLayer));
WaitJournalLine(now,'You can''chop''|stop|''|OMG|''|no logs left there|''t|enough|how to use|broke|stop|can''t see|far away', 200000);
checktools;
end;

procedure checkweight;
begin
if (Weight > waightlimit) then
begin
GotoOnBoad;
end;
end;

Begin
SetArStatus(true);
checkdead;
getcoord;
ClearJournal;
AddToSystemJournal('Скрипт успешно стартовал.');
While (not Dead) do
begin
for b :=0 to 115 do //если хотите чтобы ваш скрипт не останавливался пишите количество ваших тайлов если их 80 ставим 79
begin
CheckSave;
CheckDead;
CheckCoord;
CheckWeight;
MoveXY(LumberP.px,LumberP.py, True, 1, True);
Addtosystemjournal('Tile number '+intToStr(b)+'!');
CheckEquip;
Lumber(LumberP.tile,LumberP.px,LumberP.py,LumberP.pz);
Wait(500);
end;
end;
End.

Суть скрипта, рубит дерево по тайлам, носит его на лодку, стакает, проверяет на инструмент, делает топоры и по кругу)
Gauhar
Novice
Novice
Posts: 87
Joined: 08.07.2008 17:40

Re: Проблема скрипта Lumber

Post by Gauhar »

Скорее всего в файле

Code: Select all

List.LoadFromFile('C:\UOProgs\Stealth 6\Scripts\Include\Tile Tree Elizabet.txt'); //тут прописывается путь к файлу с тайлами)
количество деревьев меньше чем нужно для цикла:

Code: Select all

for b := 0 to 115 do //если хотите чтобы ваш скрипт не останавливался пишите количество ваших тайлов если их 80 ставим 79
Предлагаю добавить новую переменную

Code: Select all

CountTrees: Integer;
в глобальные переменнуе скрипта:

Code: Select all

Var
   LumberP: array of LumberR;
   //logCol : Array [0..115] of Word;
   //a,d,e : byte;
   ItemCount,b:Integer;
   //MinLogCol: word;
   CountTrees: Integer;
Для того чтобы можно было сделать так:

Code: Select all

Procedure GetCoord;
var
   List:TStringList;
   b:integer;
begin
   List:=TStringList.Create;
   List.LoadFromFile('C:\Zulu Hotel Europe\Zulu Hotel Europe\ZHE_Stealth\Elizabet Help Craft\Tile Tree Elizabet.txt'); //тут прописывается путь к файлу с тайлами)
   CountTrees := List.Count-1;
   for b := 0 to CountTrees do
      GetLumberTiles(List.strings[b],b);
   ItemCount:=b;
end;
а вместо

Code: Select all

for b := 0 to 115 do //если хотите чтобы ваш скрипт не останавливался пишите количество ваших тайлов если их 80 ставим 79
сделать так

Code: Select all

for b := 0 to CountTrees do
Так же нужно дополнить эту процедуру:

Code: Select all

Procedure GetLumberTiles(s:String;WPos:Integer);
begin
   s := s + ' ';
   SetLength(LumberP, Length(LumberP) + 1);  //увеличиваем размер массива
   LumberP[WPos].tile:=StrToInt(Copy(s,1,Pos(' ',s)-1));
   Delete(s,1,Pos(' ',s));
   LumberP[WPos].px:=StrToInt(Copy(s,1,Pos(' ',s)-1));
   Delete(s,1,Pos(' ',s));
   LumberP[WPos].py:=StrToInt(Copy(s,1,Pos(' ',s)-1));
   Delete(s,1,Pos(' ',s));
   LumberP[WPos].pz:=StrToInt(Copy(s,1,Pos(' ',s)-1));
   Delete(s,1,Pos(' ',s));
end;
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Проблема скрипта Lumber

Post by Vizit0r »

21:34:15:368 [Elizabet Help Craft]: Out Of Range at 34.230

чую дух очень старой версии стелса...
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Dark Scout
Posts: 3
Joined: 18.03.2016 2:38

Re: Проблема скрипта Lumber

Post by Dark Scout »

Версия стелс 4,3,6. Исправил все как описано выше, стал рубить, но не ходит :)
chernysh
Novice
Novice
Posts: 61
Joined: 05.06.2011 14:54
Location: Ukraine

Re: Проблема скрипта Lumber

Post by chernysh »

Обнови версию стелза до 6.7
А сервер случайно не Inceptum?
Verana
Novice
Novice
Posts: 60
Joined: 26.06.2015 18:44

Re: Проблема скрипта Lumber

Post by Verana »

Скорее всего zuluhotel.net
Post Reply