Proverka predmeta na chare
Posted: 17.08.2009 16:29
Zdrasvujte,
Kak proverit' esli predmet "A" nahodetca v rukah ?
Kak proverit' esli predmet "A" nahodetca v rukah ?
Альтернативный клиент Ultima Online
https://stealth.od.ua/forum/
Ardno wrote:Zdrasvujte,
Kak proverit' esli predmet "A" nahodetca v rukah ?
Code: Select all
function GetLayer(Obj : Cardinal) : Byte
Возвращает слой (layer), в котором находится обьект
и для верности можно еще проверить Parent - должен быть равен Self, чтобы случайно не зацепить айтемы на слоях чужих чаровMacks wrote:Ardno wrote:Zdrasvujte,
Kak proverit' esli predmet "A" nahodetca v rukah ?Code: Select all
function GetLayer(Obj : Cardinal) : Byte Возвращает слой (layer), в котором находится обьект
Sposibo vam oboim za vashi otveti i pomosh, no esli vam neslozhno nemoglibi prevesti mne ekzemplar po ispolzovaniju etih funkcij ?Vizit0r wrote:и для верности можно еще проверить Parent - должен быть равен Self, чтобы случайно не зацепить айтемы на слоях чужих чаровMacks wrote:Ardno wrote:Zdrasvujte,
Kak proverit' esli predmet "A" nahodetca v rukah ?Code: Select all
function GetLayer(Obj : Cardinal) : Byte Возвращает слой (layer), в котором находится обьект
Code: Select all
if GetLayer(ID) <> 0 then
begin
IF GetParent(ID) <> Self then
AddToSystemJournal('Айтем одет на чаре или в руках, но это не наш чар :)')
else
AddToSystemJournal('Айтем одет на чаре или в руках');
end
else
AddToSystemJournal('Айтем не одет на чаре и не в руках');
Sposibo Vizit0r za premerVizit0r wrote:писал тут, поэтому могут быть ошибкиCode: Select all
if GetLayer(ID) <> 0 then begin IF GetParent(ID) <> Self then AddToSystemJournal('Айтем одет на чаре или в руках, но это не наш чар :)') else AddToSystemJournal('Айтем одет на чаре или в руках'); end else AddToSystemJournal('Айтем не одет на чаре и не в руках');
Code: Select all
FindType(ID, Self);
U menja esho 1 vopros, nadejus' vi ne ustali otve4at' na moi tupie voprosiVizit0r wrote:правильный вопрос. это и есть второй вариант
поискать, а потом взять слой найденного и сравнитьс нужным
Code: Select all
function BpackLayer: Byte; // 0x15 - Сумка персонажа - Backpack
Code: Select all
если предмет в подсумке то
UseObject(ID_OF_SUMKA)
ID:=FindType(Item,LastContainer);
либо
ID:=FindTypeEx(item,ItemColor,Backpack,true);
Code: Select all
if WearItem(RhandLayer, ID) then > предмет в правой руке
if ObjAtLayer(RhandLayer)=ID then > предмет в правой руке
if GetLayer(ID)=RhandLayer then > предмет в правой руке
неправильно понимаешь. он возвращает слой вещи, а не ищет ее.Ardno wrote: Kak ja ponimaju GetLayer ishet objekt v vseh Layers kotorij vklu4aet v sebja
no v mojom slu4ie po4emuta v backpacke UOSC ne smog najti tam predmetCode: Select all
function BpackLayer: Byte; // 0x15 - Сумка персонажа - Backpack
Code: Select all
Program OnChar;
Const
ObjType = $1716; // Straw Tall Hat
Begin
FindTypeEx(ObjType,$FFFF,Self,true);
IF FindItem <> 0 then
Begin
if GetLayer(FindItem) <> 0 then
Begin
Addtosystemjournal('Found on Layer, UnEquipting.....');
UnEquip(GetLayer(FindItem));
End
else
Addtosystemjournal('Found in container, using.....');
UseObject(FindItem);
End
else
Addtosystemjournal('Nothing Found');
End.
Code: Select all
23:54:01 [UOSCT]: Compiling
23:54:01 [UOSCT]: Compiled succesfully
23:54:01 [UOSCT]: Found on Layer, UnEquipting.....
23:54:02 [UOSCT]: UseObject error: Object not finded.
23:54:02 [UOSCT]: Succesfully executed
23:54:02 [UOSCT]: Script tests.sc stopped successfuly
в случае else выполняется только одна строкаif GetLayer(FindItem) <> 0 then
Begin
Addtosystemjournal('Found on Layer, UnEquipting.....');
UnEquip(GetLayer(FindItem));
End
else
Addtosystemjournal('Found in container, using.....');
UseObject(FindItem);
if GetLayer(FindItem) <> 0 then
Begin
Addtosystemjournal('Found on Layer, UnEquipting.....');
UnEquip(GetLayer(FindItem));
End
else
Begin
Addtosystemjournal('Found in container, using.....');
UseObject(FindItem);
End
Code: Select all
Program OnChar;
Const
ObjType = $1716; // Straw Tall Hat
Begin
if GetType(ObjAtLayer(RhandLayer))=ObjType then Begin
Addtosystemjournal('Found on Layer, UnEquipting.....');
UnEquip(RhandLayer);
end
else if FindTypeEx(ObjType,$FFFF,backpack,true)>0 then begin
Addtosystemjournal('Found in container, using.....');
UseObject(FindItem);
end
else Addtosystemjournal('Nothing Found');
End.