скрипт на атаку (не работает вообще, даже не запускается, пишет 0:52:38 [Berragwoman]: Compiling
0:52:38 [Berragwoman]: Compiler: [Error] (war_attack.sc at 33:3): Semicolon (';') expected
0:52:38 [Berragwoman]: Compiling failed
0:52:38 [Berragwoman]: Script war_attack.sc stopped successfuly, хотя на предыдущей версии стелса работал исправно):
Code: Select all
Program War_attack;
{$Include 'all.inc'}
const
Targ = $030850A4; // ID Чела которого бить
Sumka = $42F33D53; // Сумка с дивами
Divik = $1401; // Тип девайса (!!!!!! только одноручный!!!!!)
Begin
wait (1000);
UseObject( Sumka );
wait (1000);
addtosystemjournal('Сумка с димвами открыта');
wait (1000);
while not Dead do
begin
attack( Targ );
if GetType(ObjAtLayer(RhandLayer)) <> Divik then
begin
wait (1000);
addtosystemjournal('Берем девайс');
FindType( Divik, Sumka )
if FindCount = 0 Then
begin
addtosystemjournal('Девайсы ненайдены, скрипт остановлен');
exit;
end
Grab( finditem, 1 );
wait( 3000 );
equipt(RhandLayer, Divik);
end;
wait (60000);
end;
end.
Code: Select all
Program Kach_heal;
{$Include 'all.inc'}
var
i, WarX, WarY, SafeX, SafeY: integer;
const
Shield = $1B76; //ID щита
Sumka = $7FF95727; // Сумка со щитами
Bint = $0E21; // Тип бинта
BBint = $0F87; // Тип грязного бинта
EnemyWarrior = $312456D; // Чар который бьет
//ПРОВЕРКА ЩИТА, ЕСЛИ НЕТ БЕРЕМ ИЗ СУМКИ И ОДЕВАЕМ
procedure CheckShield;
begin
CheckLag;
if GetType(ObjAtLayer(LhandLayer)) <> Shield then
begin
UseObject( Sumka );
wait (1000);
addtosystemjournal('Берем щит');
FindType( Shield, Sumka );
if FindCount = 0 Then
begin
addtosystemjournal('Щиты не найдены');
end
else
begin
CheckLag;
Grab( finditem, 1 );
wait( 3000 );
CheckLag;
equipt(LhandLayer, Shield);
end;
end;
end;
//ПРОВЕРКА ГРЯЗНЫХ БИНТОВ, ЕСЛИ ЕСТЬ ВЫКЛАДЫВАЕМ В СУМКУ
procedure CheckBBint;
begin
CheckLag;
FindType( BBint, Backpack );
if FindCount <> 0 Then
begin
UseObject( Sumka );
wait(1000);
addtosystemjournal('Выкладываем бинты');
while Count( BBint ) > 0 do
begin
FindType( BBint, backpack );
MoveItem( finditem, 0, Sumka, 0, 0, 0 );
wait( 500 );
end;
end
end;
// ХОДИЛКА
procedure GotoXY(x,y,prec : integer; runflag : boolean);
// x,y - координаты, в которые идем
// prec - точность подхода
// runflag - бежать или идти
// v. 1.04 (с) Edred, скрипт портирован с инжекта
// оригинальная версия Yoko с доработкой AGRS и Edred.
var ld, ldc, dx, dy, mx, my : Integer;
begin
ld := 0; ldc := 0;
while true do
begin
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 > 100 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
Raw_Move(4,runflag); continue;
end;
if mx < x then begin
// Northeast
if my > y then begin Raw_Move(1,runflag); continue; end;
// East
if my = y then begin Raw_Move(2,runflag); continue; end;
// Southeast
Raw_Move(3,runflag); continue;
end;
// Southwest
if my < y then begin Raw_Move(5,runflag); continue; end;
// West
if my = y then begin Raw_Move(6,runflag); continue; end;
// Nortwest
Raw_Move(7,runflag); continue;
end;
end;
// КУДА ОТХОДИТЬ
// Определяет координаты, где стоит чар и где стоит враг. Вычисляет направление
// и определяет координаты точки отхода. Записывает их в SafeX и SafeY.
// Текущие координаты - в WarX, WarY.
function CreateSafePoints : boolean;
var tmpx, tmpy : cardinal;
begin
Result := false;
WarX := GetX(self);
WarY := GetY(self);
tmpx := GetX(EnemyWarrior);
tmpy := GetY(EnemyWarrior);
if (WarX <> tmpx) AND (WarY <> tmpY) then
begin
AddToSystemJournal('Error: Неправильная установка чаров!');
AddToSystemJournal('Чары должны стоять по одной из осей,');
AddToSystemJournal('Поставьте чаров либо по направлению 1-9 (на цифровой клавиатуре),');
AddToSystemJournal('либо по направлению 3-7.');
exit;
end;
if WarY = tmpy then
begin
SafeY := WarY;
if WarX < tmpx then SafeX := WarX - 1;
if WarX > tmpx then SafeX := WarX + 1;
if WarX = tmpx then
begin
AddToSystemJournal('Error: Чары стоят в одной точке!');
exit;
end;
end;
if WarX = tmpx then
begin
SafeX := WarX;
if WarY < tmpy then SafeY := WarY - 1;
if WarY > tmpy then SafeY := WarY + 1;
end;
Result := true;
end;
//ПРОВЕРКА ХП, ЕСЛИ МАЛО ОТХОДИМ, ОТХИЛИВАЕМСЯ И ПОДХОДИМ
procedure CheckHP;
begin
if (HP < 30) then
begin
GotoXY(SafeX,SafeY,0,false);
CheckLag;
while (HP <> MaxHP) do
begin
FindType( Bint, Ground )
If FindCount = 0 Then
begin
addtosystemjournal('Закончились бинты');
wait (20000);
end
Else
begin
UseFromGround(Bint, 0);
WaitTargetSelf;
wait (3500);
CheckLag;
end;
end;
CheckLag;
GotoXY(WarX,WarY,0,false);
end;
end;
//ЗВУК ТРЕВОГИ
procedure alarm;
var siren: string;
begin
siren:='C:\Games\UOSoft\stealth_v1.0 (rc 1)\Stealth_v1.0 (RC 1)\alarm.wav'; //путь к файлу со звуком тревоги
playwav(siren);
end;
Begin
if not CreateSafePoints then exit;
i:=0;
while not Dead do
begin
if i=100 then
begin
i:=0;
CheckBBint;
end;
i:=i+1;
FindType( Bint, Ground )
If FindCount = 0 Then
begin
alarm;
addtosystemjournal('Закончились бинты');
wait (20000);
end
Else
begin
UseFromGround(Bint, 0);
WaitTargetSelf;
wait (3500);
CheckLag;
CheckHP;
end;
end;
end.