Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
FindType & FindTypeEx не находит мобов.
Re: FindType & FindTypeEx не находит мобов.
хорошее предложение, не забивать мусором память а брать конкретную переменную функцией. Вот правда не уверен очистится ли testarray после вызова функции?
и функцией объявлять удобней т.к. в самом скрипте функций много и пока найдешь основной "Begin" и где там чего объявлять. устанешь ) но можно и в константы запихнуть как вариант.
и функцией объявлять удобней т.к. в самом скрипте функций много и пока найдешь основной "Begin" и где там чего объявлять. устанешь ) но можно и в константы запихнуть как вариант.
Stealth 8.7.8 | Клиент: 7.0.64.3
Re: FindType & FindTypeEx не находит мобов.
аха нашел косяк в массиве
естесвенно он не находил 1 тип )
Code: Select all
MobTypeList[3]:=$00E8; //Bull
MobTypeList[3]:=$00E9; //Bull 2
Stealth 8.7.8 | Клиент: 7.0.64.3
Re: FindType & FindTypeEx не находит мобов.
да просто надо было проверить что находится в переменной, поставить AddToSystemJournal(inttostr(MobTypeList[3])); перед FindType(MobTypeList[3],ground);
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: FindType & FindTypeEx не находит мобов.
кстати можешь сократить код:
FindTypesArrayEx([$00CF, $00D8, $00DC, $00E8, $00E9], [$FFFF], [Ground], False);
ищет сразу всех, потом гасишь их по finditem, тебе ж в принципе всё равно кого именно.
FindTypesArrayEx([$00CF, $00D8, $00DC, $00E8, $00E9], [$FFFF], [Ground], False);
ищет сразу всех, потом гасишь их по finditem, тебе ж в принципе всё равно кого именно.
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: FindType & FindTypeEx не находит мобов.
по идее должен уничтожиться после завершения работы функции. Я те говорю тебе оно не надо, просто создай массив в обычном виде без всяких функций.KaToK wrote:Вот правда не уверен очистится ли testarray после вызова функции?
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: FindType & FindTypeEx не находит мобов.
Если бы писал чисто для личного пользования именно так бы и сделал, но бегаю на буржуйском http://paradisefounduo.com их форум пестрит скриптами на изиуо, думаю переманить их на светлую сторону. Для этого нужно писать так, что бы легко и понятно можно было добавлять/менять мобов, что делать очень сложно если загнать все даже в вид
жаль нельзя (или я не знаю как) создавать массивы типа [$00CF,11.1,$00E9,71.1]
Да и сами скрипт(ы) стараюсь делать универсальным, что бы и через 5 лет быстро осилить что куда )
ну в общем как-то так )
Вот еще никак не пойму как бы сформировать именно динамический массив пишу таминг нужно постоянно отбирать типы мобов которых я могу тамить и которых не могу (убивать лишних если тамить некого) на основе массивов MobTypeList и MobTypeSkillList
хоты вроде мысли появились через SetLength(MobToTame,Length); SetLength(MobToKill,Length);
UPD кажись и с массивами типа [$00CF,11.1,$00E9,71.1] разобрался, через Record можно делать любые массивы. поковыряю как-то эту штуку.
Code: Select all
MobTypeList:= [$00CF, $00D8, $00DC, $00E8, $00E9];
MobTypeSkillList:=[ 11.1, 11.1, 29.1, 71.1, 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
Re: FindType & FindTypeEx не находит мобов.
Ты слишком всё усложняешь, типы животных привязаны к твоему скилу таминга сделай функцию типа:
если LFAnimal() найдёт что-нить, то вернёт его ID, если нет, то вернёт 0.
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.
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: FindType & FindTypeEx не находит мобов.
а более универсальные вещи делать? Вот что накорябал )
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
Re: FindType & FindTypeEx не находит мобов.
а зачем? Я тоже таким страдал поначалу, думал чем круче тем лучше, через неделю ты хрен вспомнишь чё ты хотел, или неочевидный баг возникнет ты с ума сойдёшь. Делай проще, зачем тебе эти массивы.
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: FindType & FindTypeEx не находит мобов.
Возможно ты и прав, но я пока пострадаю )
Stealth 8.7.8 | Клиент: 7.0.64.3
Re: FindType & FindTypeEx не находит мобов.
хех ну вот и косяк №1
Функция
функция возвращает массив с длинной 2
в скрипте вызываю
получаю ошибку.
Exec: [Error] (PFUO_AnimalTaming.sc at 178:5): Type Mismatch
ну и массивы которые использую везде указаны как
Функция
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;
в скрипте вызываю
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
Re: FindType & FindTypeEx не находит мобов.
по моему так не будет работать, в FindTypesArrayEx нужно именно перечислить элементы, а просто написать там название массива не получится
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: FindType & FindTypeEx не находит мобов.
хм, и как это можно через переменную сделать?
Stealth 8.7.8 | Клиент: 7.0.64.3
Re: FindType & FindTypeEx не находит мобов.
с этой функцией вот так:
var
hmm: array of word;
...
hmm := TypeFTaming;
FindTypesArrayEx([hmm[0], hmm[1], и т.д...], [$FFFF], [Ground], False);
или возвращай конкретные индексы массива из TypeFTaming, я ж грю геморойная схема
var
hmm: array of word;
...
hmm := TypeFTaming;
FindTypesArrayEx([hmm[0], hmm[1], и т.д...], [$FFFF], [Ground], False);
или возвращай конкретные индексы массива из TypeFTaming, я ж грю геморойная схема
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: FindType & FindTypeEx не находит мобов.
Скорее я уж через FindTypes сделаю, хотя в моем случае FindTypesArrayEx подходит идеально.
Кстати если тип указан как $0000 стелс ведь никогда ничего такого не найдет, т.к. типа $0000 не сущществует?
Кстати если тип указан как $0000 стелс ведь никогда ничего такого не найдет, т.к. типа $0000 не сущществует?
Stealth 8.7.8 | Клиент: 7.0.64.3