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

Спарринг АоП

Only working scripts
Post Reply
alpi
Novice
Novice
Posts: 51
Joined: 02.07.2009 17:37
Contact:

Спарринг АоП

Post by alpi »

самописный спарринг.
Пожелания/советы по улучшению/доработки приветствуются.
Расчитан на 2х чаров, для спаринга необходима сумка с арморами, щитами, а так же - ножами, мейсами, бинтами и прочим.
Что делает этот скрипт: одевается с сундука. Отображает количество оставшегося армора/ножей/бинтов.
Берет по 500 бинтов из сундука.
Хиляется сам, отходит при малом количестве жизни своей/противника.
Хиляет противника, когда у него мало жизни.
Качает по очереди : реслинг до 90, сворд, фенс, мейс, докачивает реслинг.
При силы больше 120 берет хитер из пака, если хитер не найден - берет кайт шилд. При ГМ парринга перестает брать щиты из сумки.
Работает на версии РС 3.0 и выше.

Code: Select all

Program Sparring;

{$Include 'move_v0_2.inc'}


Const
Oponent = $; // Айди опонента
OneSec = 1000;
ArmorPack = $; // Айди сундука с арморами
Bandages = $0E21;
WAR_X = ; // координата Х спарринга
WAR_Y = ; // координата У спарринга
HEAL_X = ; // координата Х куда отходить при лечении
HEAL_Y = ; // координата У куда отходить при лечении
EN_HEAL_X = ;  // координата Х лечения противника
EN_HEAL_Y = ;  // координата У лечения противника

type sparringrecord = Record
	id : cardinal;
	name : string;
	layer : byte;
	msgflag : boolean;
	end;
	
var sparring : array[0..6] of sparringrecord;
	healhp,okhp : byte;
	timec : integer;

  procedure SetVars;
    begin
      //sparring[0].id := ; // определение переменной происходит в функции проверки статов
	  //sparring[0].name := ''; // определение переменной происходит в функции проверки статов
	  sparring[0].layer := LhandLayer;
	  sparring[0].msgflag := true;
	  sparring[1].id := $13F2;
	  sparring[1].name := 'ringmail gloves';
	  sparring[1].layer := GlovesLayer;
	  sparring[1].msgflag := true;
	  sparring[2].id := $13C4;
	  sparring[2].name := 'chain tunic';
	  sparring[2].layer := TorsoLayer;
	  sparring[2].msgflag := true;
	  sparring[3].id := $13BB;
	  sparring[3].name := 'chain coif';
	  sparring[3].layer := HatLayer;
	  sparring[3].msgflag := true;
	  sparring[4].id := $13EF;
	  sparring[4].name := 'chain sleeves';
	  sparring[4].layer := ArmsLayer;
	  sparring[4].msgflag := true;
	  sparring[5].id := $13C3;
	  sparring[5].name := 'chain leggings';
	  sparring[5].layer := PantsLayer;
	  sparring[5].msgflag := true;
	  //sparring[6].id := ; // определение переменной происходит в функции проверки скилов
	  //sparring[6].name := ''; // определение переменной происходит в функции проверки скилов
	  sparring[6].layer := RhandLayer;
	  sparring[6].msgflag := true;
	  timec := timer;
	  healhp := GetmaxHP(self) / 3;
	  okhp := GetmaxHP(self);
    end;

*ресенд удален*
	
  procedure OpenContainer(contype:cardinal);
    begin
       wait(OneSec);
		ClearJournal;
		 FindDistance := 4;
		  UseObject(contype);
		   ClickOnObject(contype);
		    if InJournalBetweenTimes('item',OneSec,Now) <> 0 then AddToSystemJournal('Открыт контейнер');
	end;
	
  procedure CheckOponent(msgflag:boolean);
	begin 
	 if (FindType($0190,ground) <> -1) or (FindType($0191,ground) <> -1) then 
	  begin
	   if finditem = Oponent then begin Attack(finditem); if msgflag then AddToSystemJournal('Противник найден') end;
	  end
	  else if msgflag then AddToSystemJournal('Противник не найден. Поиск ...'); wait(500); exit;
	end;
	
*реконнект удален*
	
  {procedure checkwait(waitlength:cardinal);
	begin
	  if timer - timec > waitlength then AddToSystemJournal('Какие-то тормоза. задержка '+IntToStr(timer-timec)+' мс')
	  else wait(waitlength-(timer - timec));
	end;}
	
  procedure HealEnemy;
   var tmp_bandages,tmp_rhand,tmp_lhand : cardinal;
    begin
	 
	  if TargetPresent then CancelTarget;
	  tmp_lhand := ObjAtLayer(LhandLayer);
	   tmp_rhand := ObjAtLayer(RhandLayer);
	     WaitTargetObject(Oponent); 
	      wait(100);
	       tmp_bandages := FindType(Bandages,backpack);
		    useobject(tmp_bandages);
		     wait(100);
		      if tmp_lhand <> 0 then equip(LhandLayer,tmp_lhand);
		       wait(100);
		        if tmp_rhand <> 0 then equip(RhandLayer,tmp_rhand);
				 wait(7400);
	end;
	
  procedure CheckEnemyHP;
    begin
	  if (GetHP(Oponent) < (GetMaxHP(Oponent) / 3)) then 
	    begin
		 GotoXY(HEAL_X,HEAL_Y,false,0);
		  while GetHP(Oponent) < (GetMaxHP(Oponent) - 20) do HealEnemy;
		   GotoXY(WAR_X,WAR_Y,false,0);
		end;
	  if (GetX(Oponent) = EN_HEAL_X) and (GetY(Oponent) = EN_HEAL_Y) and (GetHP(Oponent) < GetMaxHP(Oponent)) then HealEnemy;
	end;
	
  function CheckSkills:integer;
	begin
	WaitConnection('begin check skills');
		if (GetSkillValue('Wrestling') < 90.0) or (str < 150) then 
			begin result := 5; exit; end
		 else
		  begin
		  WaitConnection('variables checkskills');;
		    if GetSkillValue('Swordsmanship') < 100.0 then 
				begin sparring[6].id := $0EC4; sparring[6].name := 'skinning knife'; result := 6; exit; end;
			if GetSkillValue('Fencing') < 100.0 then
				begin sparring[6].id := $0F51; sparring[6].name := 'dagger'; result := 6; exit; end; 
			if GetSkillValue('Mace Fighting') < 100.0 then
				begin sparring[6].id := $0DF2; sparring[6].name := 'sceptre'; result := 6; exit; end;
			if (GetSkillValue('Wrestling') < 100.0) then 
				begin result := 5; exit; end;
			if (GetSkillValue('Fencing') = 100.0) and (GetSkillValue('Swordsmanship') = 100.0) 
				and (GetSkillValue('Mace Fighting') = 100.0) and (GetSkillValue('Wrestling') = 100.0) 
				and (GetSkillValue('Parrying') = 100.0) then begin SetARStatus(false); disconnect; end;
		  end;
	end;
	
  function CheckStats:boolean;
  var tmp_id : cardinal;
    begin
	 WaitConnection('begin checkstat');
	  if GetSkillValue('Parrying') = 100.0 then begin result := false; exit; end;
	   tmp_id := FindType($1B76,ArmorPack); // хитер
	    if (str < 120) or (tmp_id = 0) then begin sparring[0].id := $1B74; sparring[0].name := 'metal kite'; end
		 else begin sparring[0].id := $1B76; sparring[0].name := 'heater'; end;
		  result := true;
	end;
	
  procedure CheckBandages(msgflag : boolean); 
  	var band_self,band_cont : integer;
	    band_self_id,band_cont_id : cardinal;
	begin
	WaitConnection('begin checkbandages');
	 band_self_id := FindType(Bandages,backpack); wait(50);
      band_self := GetQuantity(band_self_id);
	   if msgflag then AddToSystemJournal('бинтов на начало макроса: '+IntToStr(band_self));
	    if band_self < 100 then 
		  begin
    	   WaitConnection('< 100 do bandages');
			if band_self_id = 0 then band_self_id := backpack; 
			 AddToSystemJournal('добираю бинты из сундука');
			  band_cont_id := FindType(Bandages,ArmorPack);
			   if band_cont_id <> 0 then 
			    begin
				 moveitem(band_cont_id,500,band_self_id,1,1,1); wait(500);
			      band_cont := GetQuantity(band_cont_id);
				   AddToSystemJournal('Остаток бинтов в сундуке : '+IntToStr(band_cont)+' шт');
				    if band_cont_id < 1000 then AddToSystemJournal('ВНИМАНИЕ, ПОПОЛНИТЕ ЗАПАС БИНТОВ В СУНДУКЕ!');
				end;
		  end;
	end;
	
  function CheckMyEquip(msgflag : boolean):boolean;
    var tmp_layer, tmp_id : cardinal;
		tmp_true : boolean;
		i : byte;
	begin     // Ищем в бекпаке броню и одеваем, если есть
	 UseObject(backpack);
	  CheckStats;
	   for i:= 0 to CheckSkills do
	    begin
		WaitConnection('begin checkmyequip');
		 tmp_layer := ObjAtLayer(sparring[i].layer);
		   if (tmp_layer <> 0) or (i = 0) and (CheckStats = false) then result := true
			else begin
			WaitConnection('checking layer checkmyequip');
			 tmp_id := FindType(sparring[i].id,backpack);
			  If GetQuantity(tmp_id) <> 0 then 
			   begin
			    tmp_true := false;   
				  while not tmp_true do 
				   begin
				   WaitConnection('while checkmyequip');
					tmp_true := equipt(sparring[i].layer,sparring[i].id);
					 AddToSystemJournal(sparring[i].name+' найден в рюкзаке, одеваю');
					  wait(onesec/2);
				   end;
			   end;
			end;
	  tmp_layer := ObjAtLayer(sparring[i].layer);
	   if (tmp_layer <> 0) or (i = 0) and (CheckStats = false) then result := true
		else begin
		 WaitConnection('ArmorPack checkmyequip');
		  tmp_id := FindType(sparring[i].id,ArmorPack);
		   if findcount = 0 then 
			begin 
			 WaitConnection('moveing item checkmyequip');
			  If (i <> 0) or (GetSkillValue('Parrying') < 100.0) then
			   If msgflag or sparring[i].msgflag then AddToSystemJournal('ЗАКОНЧИЛИСЬ >> '+sparring[i].name+' << В СУНДУКЕ'); 
			    sparring[i].msgflag := false;
			     result := true; 
			end else
			 begin
			  WaitConnection('sysmsg checkmyequip');
			   AddToSystemJournal('Беру из сундука '+sparring[i].name);
			    if (findcount - 1 = 0) and sparring[i].msgflag then 
				 begin AddToSystemJournal('ЗАКОНЧИЛИСЬ >> '+sparring[i].name+' << В СУНДУКЕ'); 
				  sparring[i].msgflag := false; 
				   end else AddToSystemJournal('Осталось '+IntToStr(findcount-1)+' шт');
				  if tmp_id <> 0 then
           		   begin
				    repeat
				     WaitConnection('move repeat checkmyequip');
					  moveitem(tmp_id,1,backpack,1,1,1);
					   wait(onesec/2);
					    until equipt(sparring[i].layer,sparring[i].id); end;
				   end;
			 end;
		end;
	end;
	
  function startHealing:boolean;
	begin
	WaitConnection('begin healing');
	If Life < okhp then 
		begin
		 If Life < healhp then 
		  begin
		   WaitConnection('< 80 healing');
			GotoXY(HEAL_X,HEAL_Y,false,0);
			 repeat
			  WaitConnection('repeat healing');
			    UOSay(Chr(39)+'pc heal self');
				 wait(7400);
			      until Life > okhp - 10;
				   CheckMyEquip(false);
				    GotoXY(WAR_X,WAR_Y,false,0);
		  end;
		    UOSay(Chr(39)+'pc heal self');
			 wait(7400);
		end else result := true;
	end;
	
  procedure StartMacro;
    begin
	  If waitresend then AddToSystemJournal('запуск макроса');
	   OpenContainer(ArmorPack);
	    CheckBandages(true);
		 CheckOponent(true); 
  	      If CheckMyEquip(true) then AddToSystemJournal('окончена проверка вещей'); 
   		   If startHealing then AddToSystemJournal('чар отхилен и рвется в бой'); 
		    GotoXY(WAR_X,WAR_Y,false,0);
		     AddToSystemJournal('выходим на исходную позицию');
		      wait(2*OneSec);
	end;
*инициализация скрипта удалена*
just student
Werewind
Posts: 2
Joined: 18.02.2011 16:53

Post by Werewind »

Как я понял его можно двум чарам одновременно запустить?
alpi
Novice
Novice
Posts: 51
Joined: 02.07.2009 17:37
Contact:

Re: Спарринг АоП

Post by alpi »

нужно :D
just student
ArtemDT
Posts: 3
Joined: 01.05.2020 17:13

Re: Спарринг АоП

Post by ArtemDT »

Вообще не запускается ни на какой версии.

"
4:46:10 PM [Hatecore]: Error Include: File Not Exist
4:46:10 PM [Hatecore]: D:\games\AoP\stealth 3\Scripts\Include\move_v0_2.inc
4:46:10 PM [Hatecore]: Compiling
4:46:10 PM [Hatecore]: Compiler: [Error] (sparAop.sc at 17:1): Identifier expected
4:46:10 PM [Hatecore]: Compiling failed
4:46:10 PM [Hatecore]: Script sparAop.sc stopped successfuly
"
Procosha
Neophyte
Neophyte
Posts: 30
Joined: 10.09.2009 21:04
Location: AoP
Contact:

Re: Спарринг АоП

Post by Procosha »

корявый, но... вроди... працуЭээ! Версия стелса 8.10.2

Как работает:

Идея была такова что бы чар выКакал боевой скилл до 100. После чего переходил к прокаКачке следующего боевого скила.

Что делать и как запускать:

а) ставим 2 персонажа один перед другим;
б) рядом ставим сундук с оружием, щитами, бинтами, кольцами на стамину;
в) вписываем айди сундука в макрос StaffChest;
г) вписываем айди кого будем бить enemyID;
д) задаем координаты где будут драться FightX и FightY;
е) задаем координаты где будет лечиться и добирать с сундука что нужно HealX и HealY
ё) задаем тип сундука с приколами StaffChestType.

По идее больше ничего менять не надо.

Code: Select all

Program Sparring;

const
enemyID = ; // emeny ID
FightX = ;       // Fighting coord X
FightY = ;        // Fighting coord Y
HealX = ;        // Healing coord X
HealY = ;         // Healing coord Y
StaffChest = ; // ID of chest with staff (weapons, bandages, rings, shields)
StaffChestType = $0E7E;
SKnife = $0ec4;
Dagger = $0f51;
Scepter = $0df2;
KShield = $1b74;
MShield = $1b7b;
SRing = $108a;
SRingColour = $002C;
Bandages = $0e21;

var
loading : Integer;
SCNTBANDAGE : TDateTime;

procedure Arms;
begin
  if ObjAtLayer(RhandLayer) = 0 then
  begin
    if GetSkillValue('Swordsmanship') < 100.0 then
    begin
      if FindType(SKnife,backpack) > 0 then
      begin
        Equip(RhandLayer,FindType(SKnife,Backpack));
      end;
      if (ObjAtLayer(RhandLayer) = 0) and (FindType(SKnife,backpack) = 0) then
      begin
        loading :=1;
        exit;
      end;
    end;
  end;
  if ObjAtLayer(RhandLayer) = 0 then
  begin
    if GetSkillValue('Fencing') < 100.0 then
    begin
      if FindType(Dagger,backpack) > 0 then
      begin
        Equip(RhandLayer,FindType(Dagger,Backpack));
      end;
      if (ObjAtLayer(RhandLayer) = 0) and (FindType(Dagger,backpack) = 0) then
      begin
        loading :=1;
        exit;
      end;
    end;
  end;
  if ObjAtLayer(RhandLayer) = 0 then
  begin
    if GetSkillValue('Mace Fighting') < 100.0 then
    begin
      if FindType(Scepter,backpack) > 0 then
      begin
        Equip(RhandLayer,FindType(Scepter,Backpack));
      end;
      if (ObjAtLayer(RhandLayer) = 0) and (FindType(Scepter,backpack) = 0) then
      begin
        loading :=1;
        exit;
      end;
    end;
  end;
  if ObjAtLayer(LhandLayer) = 0 then
  begin
    if FindTypesArrayEx([KShield,MShield],[$FFFF],[backpack],false) > 0 then
    begin
      if (Str >= 80) then Equip(LhandLayer,FindType(KShield,Backpack));
      if (Str < 80) then Equip(LhandLayer,FindType(MShield,Backpack));
    end;
    if (ObjAtLayer(LhandLayer) = 0) and (FindTypesArrayEx([KShield,MShield],[$FFFF],[backpack],false) = 0) then
    begin
      loading :=1;
      exit;
    end;
  end;
end;

procedure Equipment;
begin
  if ObjAtLayer(RingLayer) = 0 then
  begin
    if FindType(SRing,backpack) > 0 then
    begin
      Equip(RingLayer,FindType(SRing,Backpack));
    end;
  end;
  if (ObjAtLayer(RingLayer) = 0) and (FindType(SRing,backpack) = 0) then
  begin
    loading :=1;
  end;
  FindType(Bandages,backpack)
  if FindQuantity < 50 then
  begin
    loading :=1;
  end;
end;

procedure GetStaff;
begin
  if loading = 1 then
  begin
    NewMoveXY(HealX,HealY,true,0,true);
    if FindType(StaffChestType,Ground) <> 0 then
    begin
      UseObject(StaffChest);
      wait(1000);
    end;
    if FindType(StaffChestType,Ground) = 0 then
    begin
      UOSay(Chr(39)+'resend');
      wait(9000);
    end;
    if ObjAtLayer(RingLayer) = 0 then
    begin
      if FindType(SRing,StaffChest) > 0 then
      begin
        Equip(RingLayer,FindType(SRing,StaffChest));
      end;
    end;
    if ObjAtLayer(LhandLayer) = 0 then
    begin
      if FindTypesArrayEx([KShield,MShield],[$FFFF],[StaffChest],false) > 0 then
      begin
        if (Str >= 80) then Equip(LhandLayer,FindType(KShield,StaffChest));
        if (Str < 80) then Equip(LhandLayer,FindType(MShield,StaffChest));
      end;
    end;
    if ObjAtLayer(RhandLayer) = 0 then
    begin
      if GetSkillValue('Swordsmanship') < 100.0 then
      begin
        if FindType(SKnife,StaffChest) > 0 then
        begin
          Equip(RhandLayer,FindType(SKnife,StaffChest));
        end;
      end;
    end;
    if ObjAtLayer(RhandLayer) = 0 then
    begin
      if GetSkillValue('Fencing') < 100.0 then
      begin
        if FindType(Dagger,StaffChest) > 0 then
        begin
          Equip(RhandLayer,FindType(Dagger,StaffChest));
        end;
      end;
    end;
    if ObjAtLayer(RhandLayer) = 0 then
    begin
      if GetSkillValue('Mace Fighting') < 100.0 then
      begin
        if FindType(Scepter,StaffChest) > 0 then
        begin
          Equip(RhandLayer,FindType(Scepter,StaffChest));
        end;
      end;
    end;
    if FindType(Bandages,StaffChest) > 0 then
    begin
    FindType(Bandages,backpack);
    if FindQuantity < 50 then MoveItem(FindType(Bandages,StaffChest), 200, backpack, 0, 0, 0);
    end;
    loading := 0;
    NewMoveXY(FightX,FightY,True,0,True);
  end;
end;

Procedure Heal;
begin
  If (HP < MaxHP) and (Now > (SCNTBANDAGE + ((1.0/86400) * 8))) then
  begin
    UOSay(Chr(39)+'pc heal self');
    SCNTBANDAGE := Now;
  end;
end;

Procedure Fight;
begin
if HP > 30 then 
begin
NewMoveXY(FightX,FightY,True,0,True);
Attack(enemyID);
end;
end;

begin
  MoveThroughNPC := 10;
  DressSpeed := 350;
  //Body of Script
  while not Dead do
  begin
  Arms;
  Equipment;
  GetStaff;
  Heal;
  Fight;
  wait(1000);
  end;
end.
*ули - гули!
ArtemDT
Posts: 3
Joined: 01.05.2020 17:13

Re: Спарринг АоП

Post by ArtemDT »

Procosha wrote:корявый, но... вроди... працуЭээ! Версия стелса 8.10.2

Как работает:

Идея была такова что бы чар выКакал боевой скилл до 100. После чего переходил к прокаКачке следующего боевого скила.

Что делать и как запускать:

а) ставим 2 персонажа один перед другим;
б) рядом ставим сундук с оружием, щитами, бинтами, кольцами на стамину;
в) вписываем айди сундука в макрос StaffChest;
г) вписываем айди кого будем бить enemyID;
д) задаем координаты где будут драться FightX и FightY;
е) задаем координаты где будет лечиться и добирать с сундука что нужно HealX и HealY
ё) задаем тип сундука с приколами StaffChestType.

По идее больше ничего менять не надо.

Code: Select all

Program Sparring;

const
enemyID = ; // emeny ID
FightX = ;       // Fighting coord X
FightY = ;        // Fighting coord Y
HealX = ;        // Healing coord X
HealY = ;         // Healing coord Y
StaffChest = ; // ID of chest with staff (weapons, bandages, rings, shields)
StaffChestType = $0E7E;
SKnife = $0ec4;
Dagger = $0f51;
Scepter = $0df2;
KShield = $1b74;
MShield = $1b7b;
SRing = $108a;
SRingColour = $002C;
Bandages = $0e21;

var
loading : Integer;
SCNTBANDAGE : TDateTime;

procedure Arms;
begin
  if ObjAtLayer(RhandLayer) = 0 then
  begin
    if GetSkillValue('Swordsmanship') < 100.0 then
    begin
      if FindType(SKnife,backpack) > 0 then
      begin
        Equip(RhandLayer,FindType(SKnife,Backpack));
      end;
      if (ObjAtLayer(RhandLayer) = 0) and (FindType(SKnife,backpack) = 0) then
      begin
        loading :=1;
        exit;
      end;
    end;
  end;
  if ObjAtLayer(RhandLayer) = 0 then
  begin
    if GetSkillValue('Fencing') < 100.0 then
    begin
      if FindType(Dagger,backpack) > 0 then
      begin
        Equip(RhandLayer,FindType(Dagger,Backpack));
      end;
      if (ObjAtLayer(RhandLayer) = 0) and (FindType(Dagger,backpack) = 0) then
      begin
        loading :=1;
        exit;
      end;
    end;
  end;
  if ObjAtLayer(RhandLayer) = 0 then
  begin
    if GetSkillValue('Mace Fighting') < 100.0 then
    begin
      if FindType(Scepter,backpack) > 0 then
      begin
        Equip(RhandLayer,FindType(Scepter,Backpack));
      end;
      if (ObjAtLayer(RhandLayer) = 0) and (FindType(Scepter,backpack) = 0) then
      begin
        loading :=1;
        exit;
      end;
    end;
  end;
  if ObjAtLayer(LhandLayer) = 0 then
  begin
    if FindTypesArrayEx([KShield,MShield],[$FFFF],[backpack],false) > 0 then
    begin
      if (Str >= 80) then Equip(LhandLayer,FindType(KShield,Backpack));
      if (Str < 80) then Equip(LhandLayer,FindType(MShield,Backpack));
    end;
    if (ObjAtLayer(LhandLayer) = 0) and (FindTypesArrayEx([KShield,MShield],[$FFFF],[backpack],false) = 0) then
    begin
      loading :=1;
      exit;
    end;
  end;
end;

procedure Equipment;
begin
  if ObjAtLayer(RingLayer) = 0 then
  begin
    if FindType(SRing,backpack) > 0 then
    begin
      Equip(RingLayer,FindType(SRing,Backpack));
    end;
  end;
  if (ObjAtLayer(RingLayer) = 0) and (FindType(SRing,backpack) = 0) then
  begin
    loading :=1;
  end;
  FindType(Bandages,backpack)
  if FindQuantity < 50 then
  begin
    loading :=1;
  end;
end;

procedure GetStaff;
begin
  if loading = 1 then
  begin
    NewMoveXY(HealX,HealY,true,0,true);
    if FindType(StaffChestType,Ground) <> 0 then
    begin
      UseObject(StaffChest);
      wait(1000);
    end;
    if FindType(StaffChestType,Ground) = 0 then
    begin
      UOSay(Chr(39)+'resend');
      wait(9000);
    end;
    if ObjAtLayer(RingLayer) = 0 then
    begin
      if FindType(SRing,StaffChest) > 0 then
      begin
        Equip(RingLayer,FindType(SRing,StaffChest));
      end;
    end;
    if ObjAtLayer(LhandLayer) = 0 then
    begin
      if FindTypesArrayEx([KShield,MShield],[$FFFF],[StaffChest],false) > 0 then
      begin
        if (Str >= 80) then Equip(LhandLayer,FindType(KShield,StaffChest));
        if (Str < 80) then Equip(LhandLayer,FindType(MShield,StaffChest));
      end;
    end;
    if ObjAtLayer(RhandLayer) = 0 then
    begin
      if GetSkillValue('Swordsmanship') < 100.0 then
      begin
        if FindType(SKnife,StaffChest) > 0 then
        begin
          Equip(RhandLayer,FindType(SKnife,StaffChest));
        end;
      end;
    end;
    if ObjAtLayer(RhandLayer) = 0 then
    begin
      if GetSkillValue('Fencing') < 100.0 then
      begin
        if FindType(Dagger,StaffChest) > 0 then
        begin
          Equip(RhandLayer,FindType(Dagger,StaffChest));
        end;
      end;
    end;
    if ObjAtLayer(RhandLayer) = 0 then
    begin
      if GetSkillValue('Mace Fighting') < 100.0 then
      begin
        if FindType(Scepter,StaffChest) > 0 then
        begin
          Equip(RhandLayer,FindType(Scepter,StaffChest));
        end;
      end;
    end;
    if FindType(Bandages,StaffChest) > 0 then
    begin
    FindType(Bandages,backpack);
    if FindQuantity < 50 then MoveItem(FindType(Bandages,StaffChest), 200, backpack, 0, 0, 0);
    end;
    loading := 0;
    NewMoveXY(FightX,FightY,True,0,True);
  end;
end;

Procedure Heal;
begin
  If (HP < MaxHP) and (Now > (SCNTBANDAGE + ((1.0/86400) * 8))) then
  begin
    UOSay(Chr(39)+'pc heal self');
    SCNTBANDAGE := Now;
  end;
end;

Procedure Fight;
begin
if HP > 30 then 
begin
NewMoveXY(FightX,FightY,True,0,True);
Attack(enemyID);
end;
end;

begin
  MoveThroughNPC := 10;
  DressSpeed := 350;
  //Body of Script
  while not Dead do
  begin
  Arms;
  Equipment;
  GetStaff;
  Heal;
  Fight;
  wait(1000);
  end;
end.



Спасибо большое, но вообще там писало ошибку в самом скрипте, почему он и не запускался изначально, а не выдавало ошибку в журнале.

А какой версии вы используете клиент стелса?
Post Reply