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

[ДРВ] Хилинг со стиркой и одеванием оружия

тут можно задать вопрос по скриптингу
Post Reply
Nearga
Novice
Novice
Posts: 58
Joined: 04.03.2012 22:03
Location: DRW
Contact:

[ДРВ] Хилинг со стиркой и одеванием оружия

Post by Nearga »

Первое, типы

Code: Select all

const
BandageType = $0E21;     		//Тип чистых бинтов
BloodyBandageType = $0E20;      //Тип грязных бинтов
WashType = $1008;        		//Тип Тазика для мытья бинтов
Второе, собственно мойка грязных бинтов. Тут все работает.

Code: Select all

procedure WashBandages;
var 
bandages : cardinal;
begin
bandages := FindType(BloodyBandageType,Backpack);
if (bandages <> 0) then begin
	UseObject(bandages);
	repeat
		wait(100);
		CheckWorldSave;
	until (targetpresent); // or to_out(true));
	WaitTargetObject(FindType(WashType,Backpack));
end;
end;
Ну и сама проблема: хилинг.

Code: Select all

function Bandageself: boolean;
var tmp: cardinal;
	tmp_rhand,tmp_lhand : cardinal;
 begin
   tmp := FindType(BandageType, Backpack);
   wait(100);
   if TargetPresent then CancelTarget;
   tmp_lhand := ObjAtLayer(LhandLayer);
   tmp_rhand := ObjAtLayer(RhandLayer);

     begin
       repeat
         AddToSystemJournal('*Лечусь...*');
         WaitTargetSelf;
         wait(100);
         ClearJournal;
         UseObject(tmp);
         repeat
           wait(500);
         until (InJournal('You put the bloody') <> -1) OR (InJournal('You apply the') <> -1) OR (InJournal('Healing was') <> -1) OR (GetHP(Self) = GetMaxHP(Self));
         wait(500);
         ClearJournal;
       until (GetHP(Self) = GetMaxHP(Self));
       result := true;
       AddToSystemJournal('*Здоров*');
     end
	
	if tmp_lhand <> 0 then equip(LhandLayer,tmp_lhand);
    CheckLag();
    if tmp_rhand <> 0 then equip(RhandLayer,tmp_rhand);
	CheckLag();
 end;
 
Проблема в том, что перс вроде как берет оружие обратно в руки.. Но если оставить его часа на пол, то после возвращения видно, что он бьет руками, а вещь лежит в инвентаре.

Пробовал вызывать его вот так (без equip в самом хилинге)

Code: Select all

          SetDress();
		disarm();
			
        repeat
          AddToSystemJournal('*Пора лечить...*'); 
          SetWarMode(false);
          BandageOther(enemy);
        until GetHP(enemy)=GetMaxHP(enemy) 
		
			WashBandages();  
			UseSkillSpiritSpeak;
			CheckLag;
			EquipDressSet;
Та же хрень.. идей вообще нету, почему это может быть
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: [ДРВ] Хилинг со стиркой и одеванием оружия

Post by nepopus »

Попробуй указать экипировку один раз при старте скрипта.
<( o_O<) <( O_O )> (>O_o )>
Nearga
Novice
Novice
Posts: 58
Joined: 04.03.2012 22:03
Location: DRW
Contact:

Re: [ДРВ] Хилинг со стиркой и одеванием оружия

Post by Nearga »

Хорошая мысля.. но хотелось бы менять оружие для кача без перезапуска.. но попробовать однозначно стоит :)
Nearga
Novice
Novice
Posts: 58
Joined: 04.03.2012 22:03
Location: DRW
Contact:

Re: [ДРВ] Хилинг со стиркой и одеванием оружия

Post by Nearga »

В принципе да, работает.. наверно, так и оставлю - фиг с ним
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: [ДРВ] Хилинг со стиркой и одеванием оружия

Post by nepopus »

Nearga wrote:В принципе да, работает.. наверно, так и оставлю - фиг с ним
просто этот вариант отбрасывает большинство глюков. я это понял еще на инже, когда у меня при реконнекте и перезапуске скрипта во время бинтования за оружие брались голые руки. В стелсе бинтование я пока не писал = )
<( o_O<) <( O_O )> (>O_o )>
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: [ДРВ] Хилинг со стиркой и одеванием оружия

Post by nah nah »

почему бы не запоминать оружие в каждой руке отдельно? через objatlayer
Nearga
Novice
Novice
Posts: 58
Joined: 04.03.2012 22:03
Location: DRW
Contact:

Re: [ДРВ] Хилинг со стиркой и одеванием оружия

Post by Nearga »

Нууу.. так и делал :)
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: [ДРВ] Хилинг со стиркой и одеванием оружия

Post by nah nah »

чё-то я прошляпил =) Загони в цикл

Code: Select all

while tmp_lhand != 0 and not ObjAtLayer(LhandLayer()):
    Equip(tmp_lhand)
    CheckLag()
Nearga
Novice
Novice
Posts: 58
Joined: 04.03.2012 22:03
Location: DRW
Contact:

Re: [ДРВ] Хилинг со стиркой и одеванием оружия

Post by Nearga »

Нифига не понял...

Code: Select all


  BowID := ObjAtLayerEx(RhandLayer,self);
****
while true
****
if IsTimeToHeal then begin
****
while ObjAtLayer(LhandLayer()) = 0 do begin
			Equip(LhandLayer,BowID);
			///CheckLag();
			wait(300);
			AddToSystemJournal('Берем лук');
		end;
    AddToSystemJournal('Типа взяли лук');
возвращает
Типа взяли лук
Drag error: Object not found.
Пащиму? 0_0

Апдейт: взял вручную айдишник лука, прописал в BowID - работает при одиночном вызове. Однако, в цикле он берет лук в руку, а потом выбрасывает
while ObjAtLayer(LhandLayer()) = 0 do begin
Equip(LhandLayer,BowID);
///CheckLag();
wait(300);
AddToSystemJournal('Берем лук');
end;
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: [ДРВ] Хилинг со стиркой и одеванием оружия

Post by nepopus »

Nearga wrote:Нифига не понял...

Code: Select all

BowID := ObjAtLayerEx(RhandLayer,self);
Equip(LhandLayer,BowID);
<( o_O<) <( O_O )> (>O_o )>
Nearga
Novice
Novice
Posts: 58
Joined: 04.03.2012 22:03
Location: DRW
Contact:

Re: [ДРВ] Хилинг со стиркой и одеванием оружия

Post by Nearga »

*epic fail*
Post Reply