Code: Select all
Program New;
var i : Integer;
begin
For i := 1 to 3 do
Begin
AddToSystemJournal(inttostr(Timer));
Wait(100);
End;
end.
Втыкал ; после do, все равно не заводится
Code: Select all
Program New;
var i : Integer;
begin
For i := 1 to 3 do
Begin
AddToSystemJournal(inttostr(Timer));
Wait(100);
End;
end.
Можно ли эту функцию как-то поглядеть. Собственно интересно сколько раз в секунду меняется значениеfunction Timer: Cardinal
что я не так делаю?19:50:32:203 [Test - Test]: Compiling
19:50:32:218 [Test - Test]: Compiled succesfully
19:50:32:218 [Test - Test]: 42454953
19:50:32:328 [Test - Test]: 42455062
19:50:32:421 [Test - Test]: 42455156
19:50:32:531 [Test - Test]: Succesfully executed
19:50:32:531 [Test - Test]: Script 12.sc stopped successfuly
Code: Select all
NewMoveXY(GetX(id_Forge), GetY(id_Forge), false, 1, true);
Code: Select all
Const
id_Forge = '$40006283'
Code: Select all
Program Mining;
Const
id_OreContainer = 1;
id_JewelContainer = 1;
id_Forge = $40006283;
UseStealth = false;
UseSmelt = true;
msg_t = 'loosen some|put the';
msg_e = 'There is no|far away|mining|so close|line of sight|t use';
t_Pickaxe = $0E85;
Procedure MiningAround;
var i, j, mx, my : Integer;
Delay : TDateTime;
Begin
For i := -2 to 2 do
Begin
For j := -2 to 2 do
Begin
mx := GetX(self); my := GetY(self);
Repeat
If Weight >= 700 then
Begin
If UseSmelt then
Begin
NewMoveXY(GetX(id_Forge), GetY(id_Forge), false, 1, true);
Smelt;
End;
GoToDest('bank');
Reload;
GoToDest('cave');
End;
Stealth;
If TargetPresent then
CancelTarget;
If WarMode = true then
SetWarMod(false);
Repeat
Wait(100);
Until CheckLag(10000);
Delay := Timer;
DelJournal(msg_t|msg_e);
WaitTargetTile(1342, GetX(self) + i, GetY(self) + j, GetZ(self));
UseType(t_Pickaxe);
Repeat
Wait(100)
Until InJournal(msg_t|msg_e) or Delay + 15s <= Timer;
Until InJournal(msg_e);
End;
End;
End;
Procedure Reload;
var t_Ore = '0x1BEF 0x19B9 0x19B8 0x19BA 0x19B7 0x0F0F 0x0F10 0x0F11 0x0F13 0x0F15 0x0F16 0x0F18 0x0F25 0x0F26' : String;
i, moveDelay = 1100 : Integer;
id_RecContainer : Cardinal;
rQuit : Boolean
Begin
For i := 1 to GetWordAmount(t_Ore, ' ') do
Begin
rQuit := false;
Repeat
If FyndType(GetWord(t_Ore, ' ', 1), -1, BackPack) then
Begin
If i < 5 then id_RecContainer := id_OreContainer else id_RecContainer := id_JewelContainer;
Repeat
Wait(100);
Until CheckLag(10000);
MoveItem(FindItem, -1, id_RecContainer);
Wait(moveDelay);
else
rQuit := true;
End;
Until Quit;
End;
If Count(t_Pickaxe) < 4 then
Begin
For i := 1 to 4 - Count(t_Pickaxe) do
Begin
If FindType(t_Pickaxe, -1, id_JewelContainer) then
Begin
Repeat
Wait(100);
Until CheckLag(10000);
MoveItem(FindItem, -1, BackPack);
Wait(moveDelay);
else
AddToSystemJournal('Закончились кирки')
Break;
End;
End;
End;
End;
Procedure GoToDest(dest) : String;
var BankToCaveTilesX = '2512 2515 2521 2528 2528 2553 2556 2558 2558 2567',
BankToCaveTilesY = '553 544 538 538 501 501 504 503 496 483' : String;
i, a, b : Integer;
If dest = 'bank' then
Begin
a := -10; b := -1;
else
a := 1; b := 10;
End;
For i := a to b do
Begin
newMoveXY(StrToInt(GetWord(BankToCaveTilesX, ' ', Absolute(i))), StrToInt(GetWord(BankToCaveTilesY, ' ', Absolute(i))), true, 1);
End;
End;
Procedure Smelt;
var t_Ore = '0x19B9 0x19B8 0x19BA 0x19B7' : String;
i : Integer;
rQuit : Boolian;
Begin
For i = 1 to GetWordAmount(t_Ore, ' ') do
Begin
rQuit := false
Repeat
If FindType(GetWord(t_Ore, ' ', i), -1, BackPack) then
Begin
UseObject(FindItem);
Wait(100);
else
rQuit := true;
End;
Until rQuit;
End;
End;
Function GetWord(Const str, divider : String; num : Integer) : String;
var SL : TStringList;
rStr
Begin
SL := TStringList.Create;
StrBreakApart(str, divider, SL);
If SL.Count > 0 then rStr := Sl.Strings[num];
SL.Free;
Result := rStr
End;
Function GetWordAmount(Const str, divider : String) : Integer;
var i : Integer;
Begin
SL := TStringList.Create;
StrBreakApart(str, divider, SL);
i := Sl.Count;
SL.Free;
Result := i
End;
Procedure DelJournal(msg);
Begin
While InJornal(msg) do SetJournalLine(InJournal(msg), '');
End;
Begin
var TilesX = '2559 2560 2560 2564 2565 2568 2573 2578 2578 2578 2573 2574 2569 2568 2571 2570 2565 2564',
TilesY = '496 491 487 484 479 476 476 476 481 485 485 481 481 486 489 489 489 493' : String;
i : Integer;
While true do
Begin
For i := 1 to GetWordAmount(TilesX, ' ') do
Begin
newMoveXY(StrToInt(GetWord(BankToCaveTilesX, ' ', Absolute(i))), StrToInt(GetWord(BankToCaveTilesY, ' ', Absolute(i))), true, 1);
MiningAround;
End;
End;
End.
Дело в том, что Smelt объявлена позже, чем вызывается, поэтому компилятор о ней в момент вызова еще не знает. Есть 2 способа решить это -nah nah wrote:Он кричит, что Unknown identifier Smelt
Это в процедуре miningAround в начале, но процедура Smelt в файле присутствует... Что ему на этот раз надо? Уже сил нет.
Code: Select all
Procedure Smelt; forward;
Procedure MiningAround;
begin
...
Smelt;
...
end;
Procedure Smelt;
begin
...
end;
Code: Select all
Procedure Reload;
var t_Ore : Array of Word;
i, moveDelay : Integer;
id_RecContainer : Cardinal;
rQuit : Boolean;
Begin
t_Ore := [$1BEF, $19B9, $19B8, $19BA, $19B7, $0F0F, $0F10, $0F11, $0F13, $0F15, $0F16, $0F18, $0F25, $0F26]
moveDelay := 1100
For i := 0 to 13 do
Begin
rQuit := false;
Repeat
If FindType(t_Ore[i], BackPack) then
FindType не булеан, а кардинал.nah nah wrote:Теперь ругается на FindType Несоответствие типов. Кусок кода