Page 1 of 1

грабелька с обновлениями ToolTip

Posted: 20.06.2018 12:52
by KaToK

Code: Select all

function bpwleft:integer;
var tt : integer;
begin
  checklag(1000);
  itt := GetToolTipRec(BackPack);
  tt:=StrToInt(itt.items[2].params[3])-StrToInt(itt.items[2].params[2]);
  if debug then AddToSystemJournal('есть '+itt.items[2].params[2]+' всего '+itt.items[2].params[3]+' доступно '+IntToStr(StrToInt(itt.items[2].params[3])-StrToInt(itt.items[2].params[2]))+' round '+inttostr(round(tt/5))+' trunc '+inttostr(trunc(tt/5)));
  Result := tt;
end;
собственно код вроде простой, цель выявление сколько еще веса влезет в мой пак. ипользую в автолуте.

но вот в процессе работы получаю ошибку
Exec: [Error] (D:\Games\UO\Stealth\Scripts\PFUO_Client2.sc at 181:3): Out Of Range
в этот момент на бекпаке нет ToolTip т.е. 0 строк.
обойти этот косяк не проблема, уже сделал таким костылем

Code: Select all

  itt := GetToolTipRec(BackPack);
  while (itt.Count=0) do
  begin
    checklag(1000);
    itt := GetToolTipRec(BackPack);
  end;
Но возможно есть более адекватный вариант? да и возможно будет поводом зафиксить.
Вызывается обновлением веса в паке, т.е. запустил while true do bpwleft; и таскай в пак/из пака что-то.

Stealth 8.7.8 & UO 7.0.64.3

Re: грабелька с обновлениями ToolTip

Posted: 21.06.2018 9:18
by yuras
Это не грабелька, а рабочее решение. Пакеты с описание тултипов могут врийти в любой момент, или вообще не прийти. Так что лучше в цикл вставить ограничение по времени.

Re: грабелька с обновлениями ToolTip

Posted: 21.06.2018 18:09
by GeeZeR
Можно пойти другим путём - брать что-то, пока не появится мессаг в журнале типа 'Backpack is full' и реагировать на него.

Re: грабелька с обновлениями ToolTip

Posted: 22.06.2018 8:59
by KaToK
да вот какраз этого я и хочу избежать, потеря времени. но проблема больше даже в другом, максимум бекпак вмещает 500, на текущий момент в нем пусть 250. а в трупе кожи 66 штук общий вес 330 ) по 1-2 штуки подымать пока не получу месадж глупо и долго высчитать максимальный вес лучше.

пока тот вариант что описал выше норм работает.

второй вариант который тоже пойдет это 1 раз в начале скрипта берем общий вес из переменных чара - текущий вес сумки = вес чара
ну а дальше просто на ходу 500-текущий вес+вес чара = что можем взять.