Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Дорогие скриптеры я обращаюсь с большой просьбой
Дорогие скриптеры я обращаюсь с большой просьбой
Нужен простой скрипт на мининг и ламбер чтоб вырубывал (обкапывал) определенный участок а дерево выкидывал на пол.
Я очень буду благодарен если этот скрипт будет разложен по косточкам и присутствовало описание всего скрипта. С целью научиться писать простейшие скрипты. Может есть учебник на примерах по стелсу?
Моя аська 471778638.
Я очень буду благодарен если этот скрипт будет разложен по косточкам и присутствовало описание всего скрипта. С целью научиться писать простейшие скрипты. Может есть учебник на примерах по стелсу?
Моя аська 471778638.
заляни-ка ты в разделы Help и FAQ
как пример прямо в прилепленных там висит топик "Как написать стелс на ламбер".
в асю писать не буду.
и это, пользуйся поиском по форуму.
как пример прямо в прилепленных там висит топик "Как написать стелс на ламбер".
в асю писать не буду.
и это, пользуйся поиском по форуму.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Program Mining_minoc;
type MinePosition = record
x,y,z:integer;
end;
const
positions = 10;
PickAxeType = $0E85;
var
mines: array[0..positions] of MinePosition;
position: integer;
res: boolean;
l_x: integer;
l_y: integer;
h_x: integer;
h_y: integer;
c_x: integer;
c_y: integer;
time: TDateTime;
{$Include 'all.inc'}
procedure Init;
begin
position := 0;
mines[0].x := 2575; mines[0].y := 476; mines[0].z := 0;
mines[1].x := 2575; mines[1].y := 481; mines[1].z := 0;
mines[2].x := 2570; mines[2].y := 477; mines[2].z := 0;
mines[3].x := 2570; mines[3].y := 482; mines[3].z := 0;
mines[4].x := 2570; mines[4].y := 486; mines[4].z := 0;
mines[5].x := 2575; mines[5].y := 476; mines[5].z := 0;
mines[6].x := 2575; mines[6].y := 481; mines[6].z := 0;
mines[7].x := 2570; mines[7].y := 477; mines[7].z := 0;
mines[8].x := 2570; mines[8].y := 482; mines[8].z := 0;
mines[9].x := 2570; mines[9].y := 486; mines[9].z := 0;
end;
procedure CheckEquipment;
var
pickaxe : Cardinal;
Begin
if GetType(ObjAtLayer(RhandLayer)) <> PickAxeType then
begin
Disarm;
wait(1000);
FindType(PickAxeType, backpack);
if FindCount > 0 then
begin
pickaxe := finditem;
Equip(RhandLayer, pickaxe);
repeat
wait(1000);
until ObjAtLayer(RhandLayer) = pickaxe
end
else
begin
AddToSystemJournal('Pickaxe not found.');
SetArStatus(false);
Disconnect;
end
end
end;
procedure CheckElemental;
begin
if InJournalBetweenTimes('what is this?!', time, Now) > 0 then
begin
UOSay('die');
end
end;
// Move - move character
// x, y - position
// prec - precision
// runFlag - run
// delay - in second
function Move(x, y, prec: integer; runFlag: boolean; delay: byte):boolean;
var
charX, charY, dist, distX, distY, lastDist, lastCharX, lastCharY: integer;
pDirec, Direc, lastDirec, blocked: byte;
tMove: TDateTime;
begin
tMove := now;
blocked := 0;
while (true) do begin
WaitConnection(3000);
wait(500);
charX:= GetX(self); charY:= GetY(self);
distX:= Trunc(Abs(x - charX)); distY:= Trunc(Abs(y - charY));
if (distX > distY) then
begin
dist:= distX;
end
else
begin
dist:= distY;
end
if (dist <= prec) then
begin
result:= true;
exit;
end;
if (lastDist = dist) then
begin
blocked:= (blocked + 1);
if (blocked > 10) then
begin
addToSystemJournal('You cannot location!');
result:= false;
exit;
end;
end
else
begin
blocked:= 0;
end;
if (delay <> 0) then begin
if (now > tMove + (1.0 / 1440 * delay)) then
begin
addToSystemJournal('Time move out!');
result:= false;
exit;
end;
end;
if x < charX then begin
if y > charY then begin pDirec:= 5; end;
if y = charY then begin pDirec:= 6; end;
if y < charY then begin pDirec:= 7; end;
end;
if x = charX then
begin
if y > charY then begin pDirec:= 4; end;
if y < charY then begin pDirec:= 0; end;
end;
if x > charX then
begin
if y > charY then begin pDirec:= 3; end;
if y = charY then begin pDirec:= 2; end;
if y < charY then begin pDirec:= 1; end;
end;
//
if (lastCharX = charX) and (lastCharY = charY) then
begin
pDirec:= pDirec + 1;
if (pDirec > 7) then begin pDirec:= 0; end;
end;
//
Direc:= pDirec;
lastCharX:= charX; lastCharY:= charY; lastDirec:= Direc; lastDist:= Dist;
if (GetDirection(self) <> Direc) then begin Raw_Move(Direc,false); end;
Raw_Move(Direc, runFlag);
end;
end;
procedure Mine();
var
z: integer;
begin
l_x := (GetX(self) - 2);
h_x := (GetX(self) + 2);
l_y := (GetY(self) - 2);
h_y := (GetY(self) + 2);
z := GetZ(self);
for c_x := l_x to h_x do
begin
for c_y := l_y to h_y do
begin
if TargetPresent then
begin
CancelTarget;
wait(500);
end
CheckEquipment;
time := Now;
Check;
UseObject(ObjAtLayer(RhandLayer));
WaitTargetXYZ(c_x, c_y, z);
WaitJournalLine(Now, 'no more ore|broke|stop mining|cannot see|far away|cannot mine|what is this?!', 60000);
CheckElemental;
end
end
end;
Begin
AddToSystemJournal('Mining script in minoc[by xmind]');
Init;
while true do
begin
Check;
res := Move(mines[position].x,mines[position].y,0,true,999);
position := position + 1;
if position = positions then
begin
position := 0;
end
if res then
begin
AddToSystemJournal('Mine position: '+IntToStr(position));
Mine;
hungry(1,backpack);
end
end;
end.
В этом скрипте мне нужно чтоб были убраны всякие функции на голод смерть и т.д.
Сейчас стелс выдает ошибку:
Compiler: [Error] (mining final.sc at 169:46): Unknown identifier 'Raw_Move'
type MinePosition = record
x,y,z:integer;
end;
const
positions = 10;
PickAxeType = $0E85;
var
mines: array[0..positions] of MinePosition;
position: integer;
res: boolean;
l_x: integer;
l_y: integer;
h_x: integer;
h_y: integer;
c_x: integer;
c_y: integer;
time: TDateTime;
{$Include 'all.inc'}
procedure Init;
begin
position := 0;
mines[0].x := 2575; mines[0].y := 476; mines[0].z := 0;
mines[1].x := 2575; mines[1].y := 481; mines[1].z := 0;
mines[2].x := 2570; mines[2].y := 477; mines[2].z := 0;
mines[3].x := 2570; mines[3].y := 482; mines[3].z := 0;
mines[4].x := 2570; mines[4].y := 486; mines[4].z := 0;
mines[5].x := 2575; mines[5].y := 476; mines[5].z := 0;
mines[6].x := 2575; mines[6].y := 481; mines[6].z := 0;
mines[7].x := 2570; mines[7].y := 477; mines[7].z := 0;
mines[8].x := 2570; mines[8].y := 482; mines[8].z := 0;
mines[9].x := 2570; mines[9].y := 486; mines[9].z := 0;
end;
procedure CheckEquipment;
var
pickaxe : Cardinal;
Begin
if GetType(ObjAtLayer(RhandLayer)) <> PickAxeType then
begin
Disarm;
wait(1000);
FindType(PickAxeType, backpack);
if FindCount > 0 then
begin
pickaxe := finditem;
Equip(RhandLayer, pickaxe);
repeat
wait(1000);
until ObjAtLayer(RhandLayer) = pickaxe
end
else
begin
AddToSystemJournal('Pickaxe not found.');
SetArStatus(false);
Disconnect;
end
end
end;
procedure CheckElemental;
begin
if InJournalBetweenTimes('what is this?!', time, Now) > 0 then
begin
UOSay('die');
end
end;
// Move - move character
// x, y - position
// prec - precision
// runFlag - run
// delay - in second
function Move(x, y, prec: integer; runFlag: boolean; delay: byte):boolean;
var
charX, charY, dist, distX, distY, lastDist, lastCharX, lastCharY: integer;
pDirec, Direc, lastDirec, blocked: byte;
tMove: TDateTime;
begin
tMove := now;
blocked := 0;
while (true) do begin
WaitConnection(3000);
wait(500);
charX:= GetX(self); charY:= GetY(self);
distX:= Trunc(Abs(x - charX)); distY:= Trunc(Abs(y - charY));
if (distX > distY) then
begin
dist:= distX;
end
else
begin
dist:= distY;
end
if (dist <= prec) then
begin
result:= true;
exit;
end;
if (lastDist = dist) then
begin
blocked:= (blocked + 1);
if (blocked > 10) then
begin
addToSystemJournal('You cannot location!');
result:= false;
exit;
end;
end
else
begin
blocked:= 0;
end;
if (delay <> 0) then begin
if (now > tMove + (1.0 / 1440 * delay)) then
begin
addToSystemJournal('Time move out!');
result:= false;
exit;
end;
end;
if x < charX then begin
if y > charY then begin pDirec:= 5; end;
if y = charY then begin pDirec:= 6; end;
if y < charY then begin pDirec:= 7; end;
end;
if x = charX then
begin
if y > charY then begin pDirec:= 4; end;
if y < charY then begin pDirec:= 0; end;
end;
if x > charX then
begin
if y > charY then begin pDirec:= 3; end;
if y = charY then begin pDirec:= 2; end;
if y < charY then begin pDirec:= 1; end;
end;
//
if (lastCharX = charX) and (lastCharY = charY) then
begin
pDirec:= pDirec + 1;
if (pDirec > 7) then begin pDirec:= 0; end;
end;
//
Direc:= pDirec;
lastCharX:= charX; lastCharY:= charY; lastDirec:= Direc; lastDist:= Dist;
if (GetDirection(self) <> Direc) then begin Raw_Move(Direc,false); end;
Raw_Move(Direc, runFlag);
end;
end;
procedure Mine();
var
z: integer;
begin
l_x := (GetX(self) - 2);
h_x := (GetX(self) + 2);
l_y := (GetY(self) - 2);
h_y := (GetY(self) + 2);
z := GetZ(self);
for c_x := l_x to h_x do
begin
for c_y := l_y to h_y do
begin
if TargetPresent then
begin
CancelTarget;
wait(500);
end
CheckEquipment;
time := Now;
Check;
UseObject(ObjAtLayer(RhandLayer));
WaitTargetXYZ(c_x, c_y, z);
WaitJournalLine(Now, 'no more ore|broke|stop mining|cannot see|far away|cannot mine|what is this?!', 60000);
CheckElemental;
end
end
end;
Begin
AddToSystemJournal('Mining script in minoc[by xmind]');
Init;
while true do
begin
Check;
res := Move(mines[position].x,mines[position].y,0,true,999);
position := position + 1;
if position = positions then
begin
position := 0;
end
if res then
begin
AddToSystemJournal('Mine position: '+IntToStr(position));
Mine;
hungry(1,backpack);
end
end;
end.
В этом скрипте мне нужно чтоб были убраны всякие функции на голод смерть и т.д.
Сейчас стелс выдает ошибку:
Compiler: [Error] (mining final.sc at 169:46): Unknown identifier 'Raw_Move'
Code: Select all
Program Mining_minoc;
type MinePosition = record
x,y,z:integer;
end;
const
positions = 10;
PickAxeType = $0E85;
var
mines: array[0..positions] of MinePosition;
position: integer;
res: boolean;
l_x: integer;
l_y: integer;
h_x: integer;
h_y: integer;
c_x: integer;
c_y: integer;
time: TDateTime;
{$Include 'all.inc'}
procedure Init;
begin
position := 0;
mines[0].x := 2575; mines[0].y := 476; mines[0].z := 0;
mines[1].x := 2575; mines[1].y := 481; mines[1].z := 0;
mines[2].x := 2570; mines[2].y := 477; mines[2].z := 0;
mines[3].x := 2570; mines[3].y := 482; mines[3].z := 0;
mines[4].x := 2570; mines[4].y := 486; mines[4].z := 0;
mines[5].x := 2575; mines[5].y := 476; mines[5].z := 0;
mines[6].x := 2575; mines[6].y := 481; mines[6].z := 0;
mines[7].x := 2570; mines[7].y := 477; mines[7].z := 0;
mines[8].x := 2570; mines[8].y := 482; mines[8].z := 0;
mines[9].x := 2570; mines[9].y := 486; mines[9].z := 0;
end;
procedure Mine();
var
z: integer;
begin
l_x := (GetX(self) - 2);
h_x := (GetX(self) + 2);
l_y := (GetY(self) - 2);
h_y := (GetY(self) + 2);
z := GetZ(self);
for c_x := l_x to h_x do
begin
for c_y := l_y to h_y do
begin
if TargetPresent then
begin
CancelTarget;
wait(500);
end
time := Now;
UseObject(ObjAtLayer(RhandLayer));
WaitTargetXYZ(c_x, c_y, z);
WaitJournalLine(Now, 'no more ore|broke|stop mining|cannot see|far away|cannot mine', 60000);
end
end
end;
Begin
Init;
while true do
begin
res := Move(mines[position].x,mines[position].y,0,true,999);
position := position + 1;
if position = positions then
begin
position := 0;
end
if res then
begin
AddToSystemJournal('Mine position: '+IntToStr(position));
Mine;
end
end;
end.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".