Page 1 of 1

Veterinary

Posted: 09.03.2008 16:09
by -=JoKeR=-
Давно не писал скрипты на стэлс, немного на сфере писал, помогаю админу одному =)
Решил прокачать ветеринарию и написал себе скриптик. Но есть пару вопросов.
Скрипт работает отлично, но в журнале проскакивает строка: System: Unexpected target info. Не знаю из-за чего.
Хочу чтобы при выключении скрипта сбрасывался вар режим, такое возможно ?
Проверьте пожалуста на корректность скрипта тоже если не лень =)
Что вспомню допишу.
Update: Процедура CleenBandages не вызывается или не работает.

Code: Select all

Program Veterinary;
// made by -=JoKeR=- ©
// For Forest Wars Shard ©
// v1.4

{$Include 'all.inc'}

const
Animal = $000DBE9B;
Bandages = $0E21;
BlBandages = $0E20;
Wash = $400C9D71;
WeaponBag = $400E0C0A;
WeaponType = $13F8;
MaxBlBandages = 200;

// берём оружие с сумки на полу
  procedure GetWeapon;
  Begin
  if ObjAtLayer(LhandLayer) = 0 then
    AddToSystemJournal('Открываем сумку');
	checklag;
	checksave;
    UseObject(WeaponBag);
	wait(2000);
	AddToSystemJournal('Ищем оружие');
	FindType(WeaponType,WeaponBag);
	if FindCount >= 1 then
	  begin
	    wait(1000);
		checklag;
		checksave;
	    MoveItem(FindItem,1,backpack,0,0,0);
		AddToSystemJournal('Взял оружие из сумки');
		wait(1000);
	  end
	else
	  begin
	    AddToSystemJournal('Не нашол оружия в сумке! -=Exit=-');
		SetWarMode(false);
		exit;
		SetARStatus(false);
		Disconnect;
	  end;
	FindType(WeaponType,backpack);
	if FindCount >=1 then
	  begin
	    checklag;
		checksave;
	    UseObject(FindItem);
		AddToSystemJournal('Одел оружие');
		wait(2000);
		canceltarget;
	  end
	else
	  begin
	    AddToSystemJournal('Не нашол оружия в бэкпаке! -=Exit=-');
		SetWarMode(false);
		exit;
		SetARStatus(false);
		Disconnect;
	  end;
  End;
  
// берём бинты с пола
  procedure GetBandages;
  Begin
    FindType(Bandages,ground);
	if FindCount >= 0 then
	  begin
	    checklag;
		checksave;
	    Grab(FindItem,100);
		wait(2000);
		AddToSystemJournal('Взял бинты с пола');
	  end
	else
	  begin
	    AddToSystemJournal('Нет бинтов на полу! -=Exit=-');
		SetWarMode(false);
		exit;
		SetARStatus(false);
		Disconnect;
	  end;
  End;

// моем бинты  
  procedure CleenBandages;
  Begin
    checklag;
	checksave;
    AddToSystemJournal('Начинаю мыть бинты');
	UseObject(BlBandages);
	WaitForTarget(5000); 
	if TargetPresent then TargetToObject(Wash);
	AddToSystemJournal('Вымыл бинты');
  End;
  
   function AnimalHPControl : Double; 
   begin 
      Result := 100 * GetHP(Animal) / GetMaxHP(Animal); 
   end;
  
Begin
  AddToSystemJournal('START');
  FindDistance := 3;
  SetARStatus(true);
  While not Dead do
  begin
    if (AnimalHPControl > 30.0) then
      if ObjAtLayer(LHandLayer) = 0 then
      GetWeapon;
      if not WarMode then SetWarMode(true);
	  AddToSystemJournal('Начинаем атаку');
	  Attack(Animal);
	  repeat
	    if TargetPresent then CancelTarget;
	    wait(2000)
	    FindType(Bandages,backpack);
	    if FindCount >= 1 then
		  checklag;
		  checksave;
	      UseType(Bandages,$FFFF);
	      WaitForTarget(5000);
	      If TargetPresent then TargetToObject(Animal);
	  until (Count(Bandages) <= 0);
	  FindType(Bandages,backpack);
	  if FindCount <= 0 then
	    AddToSystemJournal('Нет бинтов в бэкпаке, будем добирать');
	    GetBandages;
	  FindType(BlBandages,backpack);
	  if FindCount >= MaxBlBandages then
	    CleenBandages
	else
	  begin
	    SetWarMode(false);
		wait(500);
	  end;
  end;
End.

Posted: 10.03.2008 19:48
by -=JoKeR=-
без вариантов ? ... :?

Posted: 10.03.2008 23:38
by Edred
Я не смотрю - слишком длинный скрипт. Я для себя давно выработал правило - чужие скрипты длиннее строк так 30 не читать.

Локализуй ошибку сам, хоть примерно. Сделать это легко выводом тестовых сообщений. Потом кидай кусок и описание ошибки. Тогда посмотрим.

Posted: 26.05.2008 16:28
by AlexM2008
FindCount - Количество найденных СТОПОК!

Если у тебя FindType(BlBandages,backpack) будет больше 200 (MaxBlBandages), тогда твоя конструкция

Code: Select all

if FindCount >= MaxBlBandages then 
       CleenBandages 
сработает.

Пробуй:

Code: Select all

if count(BlBandages)>= MaxBlBandages then 
       CleenBandages 

Posted: 26.05.2008 18:19
by -=JoKeR=-
я уже давно написал по другому и проще, и давно прокачал скил :)

Posted: 26.05.2008 20:13
by AlexM2008
О! Живые люди!

Кто-нибудь пользует библиотеку функций StealthMUL?

Posted: 26.05.2008 21:50
by -=JoKeR=-
лично я - нет
незачем

Re: Veterinary

Posted: 23.12.2012 23:33
by aalexx
А есть у кого скрипт, чтобы полиморфаться и отхиливаться с курсой ?