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

Проблема поднятия вещей с пола.

тут можно задать вопрос по скриптингу
Post Reply
Spirit
Neophyte
Neophyte
Posts: 13
Joined: 05.02.2006 19:50
Contact:

Проблема поднятия вещей с пола.

Post by Spirit »

Дело вот в чём, после включения скрипта всё хороше, чар находит что одеть и одевает, а после смерти(воскрешения и разрезки дегером трупа) те же самые вещи неможет найти.

Code: Select all

Compiling
Compiled succesfully
Weapon Change, найдено 1
Neck Change, найдено 1
Ring Change, найдено 1
Resself. Enter
Weapon Change, найдено 0
Neck Change, найдено 0
Ring Change, найдено 0
Resself. Exit
Ставил и дольшие задержки(после резрезки трупа) и проверку на наличие вещей на полу, тот же эффект, как будто после первого раза они кидаются в игнор...

Вот сам скрипт(в задумке скрипт должен быть на резист :roll: , атаковать магов, воскрешаться после смерти, подбирать +, ну и есть естественно...), немного переделаный со скрипта на спаринг:

Code: Select all

Program xxxxxxx;
var
t:integer;
enemy1,enemy2:cardinal;
tweapon,tropjetka,tkolco:word;

{$Include 'all.inc'}

procedure FullDisconnect;
begin
SetARStatus(false);
Disconnect;
end;

procedure weaponckeck;
begin
Finddistance:=1;
if (not dead) and (connected) then begin
checksave;
if (getquantity(findtype(tweapon,ground)) > 0) and (gettype(ObjAtLayer(RhandLayer)) <> gettype(finditem)) then begin
addtosystemjournal('Weapon Change, найдено '+inttostr(findcount));
UnEquip(RHandLayer);
wait(500);
Equip(RhandLayer,finditem);
end;
Wait(3000);
checksave;
if (getquantity(findtype(tropjetka,ground)) > 0) and (gettype(ObjAtLayer(NeckLayer)) <> gettype(finditem)) then begin
addtosystemjournal('Neck Change, найдено '+inttostr(findcount));
UnEquip(NeckLayer);
wait(500);
Equip(NeckLayer,finditem);
end;
checksave;
if (getquantity(findtype(tkolco,ground)) > 0) and (gettype(ObjAtLayer(RingLayer)) <> gettype(finditem)) then begin
addtosystemjournal('Ring Change, найдено '+inttostr(findcount));
UnEquip(RingLayer);
wait(500);
Equip(RingLayer,finditem);
end;
end;
end;

procedure resself;
begin
AddToSystemJournal('Resself. Enter');
WaitConnection(3000);
checksave;
UOSay('.forgivethee');
Wait(1000);
WaitGump('1');
setwarmode(true);
while dead do wait(1000);
if findtype($2006,ground) > 0 then begin
if targetpresent then canceltarget;
waittargetobject(finditem);
useobject(findtype($0F51,backpack));
wait(1000);
end;
hungry(1,ground);
weaponckeck;
Wait(30000);
UOSay('Thank');
AddToSystemJournal('Resself. Exit');
end;

Begin
SetARStatus(true);
Finddistance:=1;
{--------------------------------------}
ENEMY1 := $013AB4F0;
ENEMY2 := $01357DF4;
tweapon := $13B5;
tropjetka := $1088;
tkolco := $108A;
{--------------------------------------}
while true do begin
if connected then begin
for t:=1 to 5 do begin
WaitConnection(2000);
if dead then begin
resself;
end;
attack(enemy1); 
attack(enemy2); 
checksave;
wait(3000);
end;
hungry(1,ground);
end;
Wait(100);
end;
End.
Можно ли как то сделать, чтобы он их брал не только после включения скрипта но и после воскрешения ??? И если можно, то как ???
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

1. Проверь высоту чара и высоту упавших вещей.

2. Попробуй поменять

Code: Select all

if (getquantity(findtype(tweapon,ground)) > 0) and (gettype(ObjAtLayer(RhandLayer)) <> gettype(finditem)) then
на:

Code: Select all

if ((findtype(tweapon,ground) <> 0) and (ObjAtLayer(RhandLayer) = 0)) then
(И для остальных слоев аналогично)

3. Также попробуй вызывать weaponckeck; постоянно.
Spirit
Neophyte
Neophyte
Posts: 13
Joined: 05.02.2006 19:50
Contact:

Post by Spirit »

1 пунк.
Как узнать высоту :?:
Поставил "FindVertical:=6;", это стандарт как я понял, ищет на любой высоте...
Я просто ниразу ещё не работал с этим параметром :(

2 пунк.

Code: Select all

procedure weaponckeck;
begin
if (not dead) and (connected) then begin
checksave;
{Weapon}
if ((findtype(tweapon,ground) <> 0) and (ObjAtLayer(RhandLayer) = 0)) then begin
addtosystemjournal('Weapon Change, осталось '+inttostr(findcount));
UnEquip(RHandLayer);
wait(500);
Equip(RhandLayer,finditem);
end;
Wait(3000);
checksave;
{Neck}
if ((findtype(tropjetka,ground) <> 0) and (ObjAtLayer(RhandLayer) = 0)) then begin
addtosystemjournal('Neck Change, осталось '+inttostr(findcount));
UnEquip(NeckLayer);
wait(500);
Equip(NeckLayer,finditem);
end;
Wait(3000);
checksave;
{Ring}
if ((findtype(tkolco,ground) <> 0) and (ObjAtLayer(RhandLayer) = 0)) then begin
addtosystemjournal('Ring Change, осталось '+inttostr(findcount));
UnEquip(RingLayer);
wait(500);
Equip(RingLayer,finditem);
end;
Wait(3000);
checksave;
end;
end;
Так же пробовал без проверки на наличие предмета на земле

Code: Select all

if ((findtype(tkolco,ground) <> 0) and (ObjAtLayer(RhandLayer) = 0)) then begin
оставлять только проверку наличия какого либа предмета надетого на чаре

Code: Select all

if ObjAtLayer(RhandLayer) = 0 then begin

3 пунк.

Code: Select all

Begin
SetARStatus(true);
FindDistance:=1;
FindVertical:=6;
{--------------------------------------}
ENEMY1 := $013AB4F0;
ENEMY2 := $01357DF4;
tweapon := $13B5;
tropjetka := $1088;
tkolco := $108A;
{--------------------------------------}
while true do begin
if connected then begin
for t:=1 to 30 do begin
WaitConnection(2000);
if dead then begin
resself;
end;
if getdistance(enemy1) < 5 then begin
attack(enemy1); 
wait(300);
end;
if getdistance(enemy2) < 5 then begin
attack(enemy2); 
wait(300);
end;
checksave;
wait(1500);
weaponckeck;
end;
hungry(1,ground);
weaponckeck;
end;
Wait(100);
end;
End.
2-й и 3-й пункты ничего не дали :(
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

Высоту определить можно в инжекте (через ,info) или в стелсе (в закладке World).

Code: Select all

if ((findtype(tropjetka,ground) <> 0) and (ObjAtLayer(RhandLayer) = 0)) then begin
addtosystemjournal('Neck Change, осталось '+inttostr(findcount));
UnEquip(NeckLayer);
wait(500);
Equip(NeckLayer,finditem);
end;
А зачем UnEquip? и в ObjAtLayer() указывай именно тот слой, который проверяешь.

В любом случае, раз у тебя находит 0 штук, и ты уверен, что они лежат под тобой, то проблема 99% в высоте.
Spirit
Neophyte
Neophyte
Posts: 13
Joined: 05.02.2006 19:50
Contact:

Post by Spirit »

Выставил высоту, всё равно не берёт в руку тот предмет который уже брал...
Прописал в скрипте чтобы чар подбирал шмотку с пола(без поиска) и одевал её из бекпака. Подбирать то он подбирает, но одевать не хочет даже из пака...

Кстати тоже самое я заметитил и у воинов... После смерти(воскрешения и разрезки трупа), предмет который одевался как бы кидается в игнор...

Code: Select all

.....
10:55:24: Resself. Enter
10:55:59: Weapon Change, найдено 329
10:57:00: Resself. Exit
10:57:25: Resself. Enter
10:58:33: Weapon Change, найдено 328
10:59:38: Resself. Exit
11:00:03: Character Reienaun Disconnected
11:01:27: Character Reienaun Connected
11:03:13: Resself. Enter
11:03:59: Weapon Change, найдено 338
11:05:00: Resself. Exit
11:08:37: Resself. Enter
11:09:31: Weapon Change, найдено 337
11:10:35: Resself. Exit
11:12:38: Resself. Enter
11:13:28: Weapon Change, найдено 336
11:14:27: Resself. Exit
12:15:11: Resself. Enter
12:16:20: Weapon Change, найдено 335
12:17:22: Resself. Exit
12:18:04: Resself. Enter
12:18:59: Weapon Change, найдено 334
12:20:05: Resself. Exit
12:20:28: Resself. Enter
12:21:32: Weapon Change, найдено 333
12:22:23: Resself. Exit
12:31:05: Resself. Enter
12:32:18: Weapon Change, найдено 332
12:33:09: Resself. Exit
12:55:38: Resself. Enter
12:56:11: Weapon Change, найдено 331
12:56:58: Resself. Exit
12:59:07: Resself. Enter
12:59:35: Weapon Change, найдено 330
13:00:22: Resself. Exit
13:01:58: Resself. Enter
13:05:18: Resself. Exit
13:05:50: Resself. Enter
13:06:19: Weapon Change, найдено 329
13:07:16: Resself. Exit
13:45:30: Resself. Enter
13:46:49: Weapon Change, найдено 328
13:48:01: Resself. Exit
13:48:15: Resself. Enter
13:48:40: Weapon Change, найдено 328
13:49:27: Resself. Exit
13:50:48: Resself. Enter
13:51:48: Weapon Change, найдено 327
13:52:46: Resself. Exit
13:53:45: Resself. Enter
13:54:09: Weapon Change, найдено 326
13:54:55: Resself. Exit
14:17:44: Resself. Enter
14:18:20: Weapon Change, найдено 325
14:19:07: Resself. Exit
14:20:48: Resself. Enter
.....
помогает только дисконект...

Code: Select all

.....
10:57:00: Resself. Exit
10:57:25: Resself. Enter
10:58:33: Weapon Change, найдено 328
10:59:38: Resself. Exit
11:00:03: Character Reienaun Disconnected
11:01:27: Character Reienaun Connected
11:03:13: Resself. Enter
11:03:59: Weapon Change, найдено 338
.....
Если прописать после каждой смерти дисконект то всё работает, чар подбирает вещь повторно...
Post Reply