Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Функция открыт ли банк с булевым результатом.
Функция открыт ли банк с булевым результатом.
Собственно сабж, никто никогда такого себе не писал?
Подскажите если есть такой опыт или вообще соображения в подобной логике.
Я пока из того что придумал сам - запоминать по серийнику итем в переменную при инициализации скрипта, а потом после UOSay('BANK') искать файндтайпом. Но, при тесте такой ф-ции вылазят "какие-то бока"...
Буду рад полезным советам!
Подскажите если есть такой опыт или вообще соображения в подобной логике.
Я пока из того что придумал сам - запоминать по серийнику итем в переменную при инициализации скрипта, а потом после UOSay('BANK') искать файндтайпом. Но, при тесте такой ф-ции вылазят "какие-то бока"...
Буду рад полезным советам!
Re: Функция открыт ли банк с булевым результатом.
а если заюзать LastContainer?
Re: Функция открыт ли банк с булевым результатом.
а чем она мне поможет? Может, я просто недопонимаю всей глубины этой функции?grundick wrote:а если заюзать LastContainer?
Re: Функция открыт ли банк с булевым результатом.
Ну как чем... Насколько я понимаю, тебе нужно убедиться, что банк открылся? По идее (на практике не проверял), если банк открылся, в LastContainer попадёт ИД банка.
Re: Функция открыт ли банк с булевым результатом.
Оно у меня там всегда будет, ибо открывается только банк.grundick wrote:Ну как чем... Насколько я понимаю, тебе нужно убедиться, что банк открылся? По идее (на практике не проверял), если банк открылся, в LastContainer попадёт ИД банка.
Re: Функция открыт ли банк с булевым результатом.
Ну чтоб его там всегда не было, ты перед открытием банка открой что-нибудь другое, например, свой бекпак. Потом кричишь BANk и проверяешь LastContainer...
Re: Функция открыт ли банк с булевым результатом.
Вся идея - это во время выгрузки или загрузки, а также после крафта - проверить открыт ли банк.grundick wrote:Ну чтоб его там всегда не было, ты перед открытием банка открой что-нибудь другое, например, свой бекпак. Потом кричишь BANk и проверяешь LastContainer...
Re: Функция открыт ли банк с булевым результатом.
при коннекте чара бекпак открывается всегда автоматически, так что ластконтейнер нулем не будет.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re: Функция открыт ли банк с булевым результатом.
Я, наверно, не правильно описал свою "трудность".
По порядку, есть скрипт в котором есть функции - некоторые из них пользуются банком. Суть - иногда при работе скрипта - чар, открыв банк, загружает себе ресурсы в бекпак. После загрузки - крафтит некие вещи, в процессе крафта проверяет - хватает ли ресурсов, коль их не хватает - догружает.
Проблема - в том, что иногда банк "самопроизвольно" закрывается, совершенно вопиющим способом, и скрипт соответственно переходит в цикл без конца и края. По сему, было желание "изобрести" некую булевую фцию которая бы без кд совершенно точно бы утверждала что банк - открыт, ну или закрыт.
Айди банка, мне мало чем поможет, поможет только глупое постоянное открытие банка перед каждым действием связанным с ним.
Что-то вроде расширения...
примерный код, может так нагляднее будет:
Будет ли оно работать на отличненько?
По порядку, есть скрипт в котором есть функции - некоторые из них пользуются банком. Суть - иногда при работе скрипта - чар, открыв банк, загружает себе ресурсы в бекпак. После загрузки - крафтит некие вещи, в процессе крафта проверяет - хватает ли ресурсов, коль их не хватает - догружает.
Проблема - в том, что иногда банк "самопроизвольно" закрывается, совершенно вопиющим способом, и скрипт соответственно переходит в цикл без конца и края. По сему, было желание "изобрести" некую булевую фцию которая бы без кд совершенно точно бы утверждала что банк - открыт, ну или закрыт.
Айди банка, мне мало чем поможет, поможет только глупое постоянное открытие банка перед каждым действием связанным с ним.
Что-то вроде расширения
Code: Select all
function IsContainer(ObjID : Cardinal) : Boolean
примерный код, может так нагляднее будет:
Code: Select all
function BankIsOpen : Boolean;
begin
Result := False;
if FindType(Item_Type, Bank_Id) <> 0 then Result := True;
end;
Re: Функция открыт ли банк с булевым результатом.
самый простой способ - это если в банке что-то есть, то поиск в банковском контейнере, если findquantity > 0, значится банк открыт.
кстати, было бы интересно посмотреть на пакеты от сервера в момент закрытия банковского контейнера.
кстати, было бы интересно посмотреть на пакеты от сервера в момент закрытия банковского контейнера.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re: Функция открыт ли банк с булевым результатом.
Пакеты собирать не умею, а проблемка выскакивает раз на 3-5 часов, вручную уследить - крайне трудная задача!Vizit0r wrote:самый простой способ - это если в банке что-то есть, то поиск в банковском контейнере, если findquantity > 0, значится банк открыт.
кстати, было бы интересно посмотреть на пакеты от сервера в момент закрытия банковского контейнера.
код с FindQuantity работает только 1 раз =), дальше он наверно запоминает все в банке или я хз.
Code: Select all
function MoveItem(ItemID : Cardinal; Count : Integer; MoveIntoID : Cardinal; X,Y,Z : Integer) : Boolean
вот кусок моего скрипта, может мне MoveItem можно через проверку какую-то написать?
Code: Select all
while GetQuantity(FindType(Logs, backpack)) < 100 do
begin
UOSay('BANK');
WaitAverageLag(AVERAGE_LAG_MS*2);
if GetQuantity(FindItem) > 100 then break;
MoveItem(FindType(Logs, BANK_ID), 25, backpack, 0,0,0);
WaitAverageLag(AVERAGE_LAG_MS);
end;
Code: Select all
while GetQuantity(FindType(Logs, backpack)) < 100 do
begin
if GetQuantity(FindItem) > 100 then break;
if not MoveItem(FindType(Logs, BANK_ID), 25, backpack, 0,0,0) then UOSay('BANK');
WaitAverageLag(AVERAGE_LAG_MS);
end;
Re: Функция открыт ли банк с булевым результатом.
что происходит, когда этот самый банковский контейнер якобы закрывается?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re: Функция открыт ли банк с булевым результатом.
не могу сказать на 100%, видел при ворлд сейве, иногда если кто-то "насквозь" пробегает. Иногда сам юзверь скрипта включает клиент и банк закрывается, иногда при обработке гампа крафт меню.Vizit0r wrote:что происходит, когда этот самый банковский контейнер якобы закрывается?
Это важно?
Re: Функция открыт ли банк с булевым результатом.
ты не понял. с чего ты взял, что банк закрывается? в чем это выражается?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re: Функция открыт ли банк с булевым результатом.
инготы выложить не может то-есть DragItem выполняет а DropItem с результатом в бекпак выполняется.Vizit0r wrote:ты не понял. с чего ты взял, что банк закрывается? в чем это выражается?