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

FindType & FindTypeEx не находит мобов.

тут можно задать вопрос по скриптингу
KaToK
Neophyte
Neophyte
Posts: 40
Joined: 31.01.2008 22:40
Contact:

Re: FindType & FindTypeEx не находит мобов.

Post by KaToK »

хорошее предложение, не забивать мусором память а брать конкретную переменную функцией. Вот правда не уверен очистится ли testarray после вызова функции?

и функцией объявлять удобней т.к. в самом скрипте функций много и пока найдешь основной "Begin" и где там чего объявлять. устанешь ) но можно и в константы запихнуть как вариант.
Stealth 8.7.8 | Клиент: 7.0.64.3
KaToK
Neophyte
Neophyte
Posts: 40
Joined: 31.01.2008 22:40
Contact:

Re: FindType & FindTypeEx не находит мобов.

Post by KaToK »

аха нашел косяк в массиве

Code: Select all

MobTypeList[3]:=$00E8;       //Bull
MobTypeList[3]:=$00E9;       //Bull 2
естесвенно он не находил 1 тип )
Stealth 8.7.8 | Клиент: 7.0.64.3
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: FindType & FindTypeEx не находит мобов.

Post by GeeZeR »

да просто надо было проверить что находится в переменной, поставить AddToSystemJournal(inttostr(MobTypeList[3])); перед FindType(MobTypeList[3],ground);
Stealth 8.10.2 | Клиент: 7.0.13.4
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: FindType & FindTypeEx не находит мобов.

Post by GeeZeR »

кстати можешь сократить код:
FindTypesArrayEx([$00CF, $00D8, $00DC, $00E8, $00E9], [$FFFF], [Ground], False);
ищет сразу всех, потом гасишь их по finditem, тебе ж в принципе всё равно кого именно.
Stealth 8.10.2 | Клиент: 7.0.13.4
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: FindType & FindTypeEx не находит мобов.

Post by GeeZeR »

KaToK wrote:Вот правда не уверен очистится ли testarray после вызова функции?
по идее должен уничтожиться после завершения работы функции. Я те говорю тебе оно не надо, просто создай массив в обычном виде без всяких функций.
Stealth 8.10.2 | Клиент: 7.0.13.4
KaToK
Neophyte
Neophyte
Posts: 40
Joined: 31.01.2008 22:40
Contact:

Re: FindType & FindTypeEx не находит мобов.

Post by KaToK »

Если бы писал чисто для личного пользования именно так бы и сделал, но бегаю на буржуйском http://paradisefounduo.com их форум пестрит скриптами на изиуо, думаю переманить их на светлую сторону. :D Для этого нужно писать так, что бы легко и понятно можно было добавлять/менять мобов, что делать очень сложно если загнать все даже в вид

Code: Select all

  MobTypeList:=     [$00CF, $00D8, $00DC, $00E8, $00E9];
  MobTypeSkillList:=[ 11.1,  11.1,  29.1,  71.1,  71.1];
жаль нельзя (или я не знаю как) создавать массивы типа [$00CF,11.1,$00E9,71.1]

Да и сами скрипт(ы) стараюсь делать универсальным, что бы и через 5 лет быстро осилить что куда )
ну в общем как-то так )

Вот еще никак не пойму как бы сформировать именно динамический массив пишу таминг нужно постоянно отбирать типы мобов которых я могу тамить и которых не могу (убивать лишних если тамить некого) на основе массивов MobTypeList и MobTypeSkillList
хоты вроде мысли появились через SetLength(MobToTame,Length); SetLength(MobToKill,Length);

UPD кажись и с массивами типа [$00CF,11.1,$00E9,71.1] разобрался, через Record можно делать любые массивы. поковыряю как-то эту штуку.
Stealth 8.7.8 | Клиент: 7.0.64.3
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: FindType & FindTypeEx не находит мобов.

Post by GeeZeR »

Ты слишком всё усложняешь, типы животных привязаны к твоему скилу таминга сделай функцию типа:

Code: Select all

PROGRAM New;

function LFAnimal():Cardinal;
begin
	if (GetSkillValue('Animal Taming') >= 11.1) and (GetSkillValue('Animal Taming')< 29.1) then begin
		Result := FindTypesArrayEx([$00CF, $00D8], [$FFFF], [Ground], False);
		Exit;
	end;
	if (GetSkillValue('Animal Taming') >= 29.1) and (GetSkillValue('Animal Taming')< 71.1) then begin
		Result := FindTypesArrayEx([$00DC], [$FFFF], [Ground], False);
		Exit;
	end;
	if (GetSkillValue('Animal Taming') >= 71.1) then begin
		Result := FindTypesArrayEx([$00E8, $00E9], [$FFFF], [Ground], False);
		Exit;
	end;
end;

BEGIN

	if LFAnimal() > 0 then begin
		<код для таминга>
	end;

END.
если LFAnimal() найдёт что-нить, то вернёт его ID, если нет, то вернёт 0.
Stealth 8.10.2 | Клиент: 7.0.13.4
KaToK
Neophyte
Neophyte
Posts: 40
Joined: 31.01.2008 22:40
Contact:

Re: FindType & FindTypeEx не находит мобов.

Post by KaToK »

а более универсальные вещи делать? ;) Вот что накорябал )

Code: Select all

Function IsTaming(a: Integer): Boolean;
begin
  if ( (GetSkillCurrentValue('Animal Taming')-MobTypeSkillList[a]-0.2)*2<100 ) and (GetSkillCurrentValue('Animal Taming')>=MobTypeSkillList[a])  then begin Result:=True; end else Result:=False;
end;

Function TypeFTaming : array of Word;
var
TypeForTaming : array of Word;
a : Integer;
begin
  SetLength(TypeForTaming,0)
  for a:=0 to Length(MobTypeList)-1 do
  begin
    if IsTaming(a) then
    begin
      SetLength(TypeForTaming,Length(TypeForTaming)+1);
      TypeForTaming[Length(TypeForTaming)-1]:=MobTypeList[a];
    end;
  end;
  Result:= TypeForTaming;
end;
Stealth 8.7.8 | Клиент: 7.0.64.3
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: FindType & FindTypeEx не находит мобов.

Post by GeeZeR »

а зачем? Я тоже таким страдал поначалу, думал чем круче тем лучше, через неделю ты хрен вспомнишь чё ты хотел, или неочевидный баг возникнет ты с ума сойдёшь. Делай проще, зачем тебе эти массивы.
Stealth 8.10.2 | Клиент: 7.0.13.4
KaToK
Neophyte
Neophyte
Posts: 40
Joined: 31.01.2008 22:40
Contact:

Re: FindType & FindTypeEx не находит мобов.

Post by KaToK »

Возможно ты и прав, но я пока пострадаю )
Stealth 8.7.8 | Клиент: 7.0.64.3
KaToK
Neophyte
Neophyte
Posts: 40
Joined: 31.01.2008 22:40
Contact:

Re: FindType & FindTypeEx не находит мобов.

Post by KaToK »

хех ну вот и косяк №1
Функция

Code: Select all

Function TypeFTaming : array of Word;
var
TypeForTaming : array of Word;
a : Integer;
begin
  SetLength(TypeForTaming,0)
  for a:=0 to Length(MobTypeList)-1 do
  begin
    if IsTaming(a) then
    begin
      SetLength(TypeForTaming,Length(TypeForTaming)+1);
      TypeForTaming[Length(TypeForTaming)-1]:=MobTypeList[a];
    end;
  end;
  Result:= TypeForTaming;
end;
функция возвращает массив с длинной 2
в скрипте вызываю

Code: Select all

    FindTypesArrayEx(TypeFTaming, [$FFFF], [Ground], False);
получаю ошибку.
Exec: [Error] (PFUO_AnimalTaming.sc at 178:5): Type Mismatch
ну и массивы которые использую везде указаны как

Code: Select all

MobTypeList : array of Word;
Stealth 8.7.8 | Клиент: 7.0.64.3
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: FindType & FindTypeEx не находит мобов.

Post by GeeZeR »

по моему так не будет работать, в FindTypesArrayEx нужно именно перечислить элементы, а просто написать там название массива не получится
Stealth 8.10.2 | Клиент: 7.0.13.4
KaToK
Neophyte
Neophyte
Posts: 40
Joined: 31.01.2008 22:40
Contact:

Re: FindType & FindTypeEx не находит мобов.

Post by KaToK »

хм, и как это можно через переменную сделать? :D
Stealth 8.7.8 | Клиент: 7.0.64.3
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

Re: FindType & FindTypeEx не находит мобов.

Post by GeeZeR »

с этой функцией вот так:

var
hmm: array of word;
...
hmm := TypeFTaming;
FindTypesArrayEx([hmm[0], hmm[1], и т.д...], [$FFFF], [Ground], False);

:)

или возвращай конкретные индексы массива из TypeFTaming, я ж грю геморойная схема
Stealth 8.10.2 | Клиент: 7.0.13.4
KaToK
Neophyte
Neophyte
Posts: 40
Joined: 31.01.2008 22:40
Contact:

Re: FindType & FindTypeEx не находит мобов.

Post by KaToK »

Скорее я уж через FindTypes сделаю, хотя в моем случае FindTypesArrayEx подходит идеально.

Кстати если тип указан как $0000 стелс ведь никогда ничего такого не найдет, т.к. типа $0000 не сущществует?
Stealth 8.7.8 | Клиент: 7.0.64.3
Post Reply