Скрипты на варскиллы (атака и хил + парринг)
Posted: 05.11.2009 22:19
				
				Люди, я в скриптах вообще не бум-бум, есть 2 скрипта, на хил + парринг с отходом и на атаку вторым чаром, оба не хотят работать, стелс релиз 1.0, помогите, пожалуйста, скажите, где в них ошибки и как их исправить? Шард: Утопия
скрипт на атаку (не работает вообще, даже не запускается, пишет 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, хотя на предыдущей версии стелса работал исправно):
скрипт на хил + парринг с отходом (не работает взятие щита из сумки, не хочет перекладывать грязные бинты в сумку, отход, вроде, норм работает, но может и другие ошибки есть?):
Заранее огромнейшее спасибо
			скрипт на атаку (не работает вообще, даже не запускается, пишет 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.