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

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

тут можно задать вопрос по скриптингу
Post Reply
KaToK
Neophyte
Neophyte
Posts: 40
Joined: 31.01.2008 22:40
Contact:

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

Post 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
Stealth 8.7.8 | Клиент: 7.0.64.3
yuras
Novice
Novice
Posts: 142
Joined: 11.01.2011 10:34

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

Post by yuras »

Это не грабелька, а рабочее решение. Пакеты с описание тултипов могут врийти в любой момент, или вообще не прийти. Так что лучше в цикл вставить ограничение по времени.
GeeZeR
Apprentice
Apprentice
Posts: 226
Joined: 28.01.2012 19:48

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

Post by GeeZeR »

Можно пойти другим путём - брать что-то, пока не появится мессаг в журнале типа 'Backpack is full' и реагировать на него.
Stealth 8.10.2 | Клиент: 7.0.13.4
KaToK
Neophyte
Neophyte
Posts: 40
Joined: 31.01.2008 22:40
Contact:

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

Post by KaToK »

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

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

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