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

Функция открыт ли банк с булевым результатом.

тут можно задать вопрос по скриптингу
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Функция открыт ли банк с булевым результатом.

Post by shinma »

попробуй перед юзом всегда вызывать проверку ид сундка банка если ненайдет uosay('bank');
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Функция открыт ли банк с булевым результатом.

Post by drabadan »

shinma wrote:попробуй перед юзом всегда вызывать проверку ид сундка банка если ненайдет uosay('bank');
А как мне проверить банковский сундук? LastContainer не катит ибо в банке лежит сумка с инструментами.. Откуда не подойди всюду... опа.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Функция открыт ли банк с булевым результатом.

Post by Vizit0r »

drabadan wrote:
Vizit0r wrote:ты не понял. с чего ты взял, что банк закрывается? в чем это выражается?
инготы выложить не может то-есть DragItem выполняет а DropItem с результатом в бекпак выполняется.
причина неудачного дропа какая в журнале пишется?
банк что, постоянно открыт, и в теории не закрывается?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Функция открыт ли банк с булевым результатом.

Post by drabadan »

Vizit0r wrote:
drabadan wrote:
Vizit0r wrote:ты не понял. с чего ты взял, что банк закрывается? в чем это выражается?
инготы выложить не может то-есть DragItem выполняет а DropItem с результатом в бекпак выполняется.
причина неудачного дропа какая в журнале пишется?
банк что, постоянно открыт, и в теории не закрывается?
ничего не пишется в журнале, просто инготы или логи "берутся на пальчик" и падают опять в сумку. Такое есть только при выгрузке выложу процедуру целиком.

Code: Select all

{CRAFTING SECTION}	
procedure CraftTool(Tool : Cardinal; CategoryBtn, ItemBtn : Integer);
var
	gi : TGumpInfo;
		begin
			while IsGump do	CloseSimpleGump(GetGumpsCount-1); 
			WaitAverageLag(AVERAGE_LAG_MS);	
			Useobject(FindType(Tool, backpack));
			WaitAverageLag(AVERAGE_LAG_MS*2);	
			GetGumpInfo(GetGumpsCount-1, gi); 
			WaitAverageLag(AVERAGE_LAG_MS);	
			NumGumpButton(GetGumpsCount-1, gi.GumpButtons[CategoryBtn].return_value);
			WaitAverageLag(AVERAGE_LAG_MS*2);	       
			NumGumpButton(GetGumpsCount-1, gi.GumpButtons[ItemBtn].return_value); 
			WaitAverageLag(AVERAGE_LAG_MS*3);	
		end;

procedure LoadCraftResources;
	begin
		while GetQuantity(FindType(Logs, backpack)) < 100 do 
			begin
				UOSay('BANK');
				if GetQuantity(FindItem) > 100 then break;
				MoveItem(FindType(Logs, BANK_ID), 25, backpack, 0,0,0);
				WaitAverageLag(AVERAGE_LAG_MS);
			end;
		while GetQuantity(FindType(Ingot_Type, backpack)) < 100 do 
			begin
				UOSay('BANK');
				if GetQuantity(FindItem) > 100 then break;	
				MoveItem(FindType(Ingot_Type, BANK_ID), 25, backpack, 0,0,0);
				WaitAverageLag(AVERAGE_LAG_MS);
			end;
	end;
	
function Count(Tool, Container : Cardinal) : Integer;
var 
tmpInt : Integer;
	begin
		FindType(Tool, Container);
		tmpInt := FindCount;
		FindType(Tool, Backpack);
		Result := tmpInt + FindCount;
	end;
	
procedure ToolsCheck;
var 
tmpContainer : Cardinal;
	begin
		NewMoveXY(WayPoint[0].x, WayPoint[0].y, true, 0, true);
		UOSay('BANK');
		WaitAverageLag(AVERAGE_LAG_MS);
		tmpContainer := FindType($0E75, BANK_ID);
		UseObject(tmpContainer);
		WaitAverageLag(AVERAGE_LAG_MS);
		while GetQuantity(FindType(Logs, BANK_ID)) < 500 do GetLogs;			
		//UOSay(IntToStr(Count(Dig_Tool_Type, tmpContainer)));
		while Count(Pickaxe.TypeOfItem, tmpContainer) < 25 do
			begin
				LoadCraftResources;
				if FindType(Tinker_Tools.TypeOfItem, backpack) <= 0 then MoveItem(FindType(Tinker_Tools.TypeOfItem, tmpContainer), 1, backpack, 0,0,0);				
				CraftTool(Tinker_Tools.TypeOfItem, Pickaxe.CategoryBtn, Pickaxe.ItemBtn);
				WaitAverageLag(AVERAGE_LAG_MS*2);
			end;
		while Count(Hatchet.TypeOfItem, tmpContainer) < 15 do
			begin
				LoadCraftResources;
				if FindType(Carpentry_Tools.TypeOfItem, backpack) <= 0 then MoveItem(FindType(Carpentry_Tools.TypeOfItem, tmpContainer), 1, backpack, 0,0,0);
				CraftTool(Carpentry_Tools.TypeOfItem, Hatchet.CategoryBtn, Hatchet.ItemBtn);
				WaitAverageLag(AVERAGE_LAG_MS*2);
			end;
		while Count(Tinker_Tools.TypeOfItem, tmpContainer) < 8 do
			begin
				LoadCraftResources;
				if FindType(Tinker_Tools.TypeOfItem, backpack) <= 0 then MoveItem(FindType(Tinker_Tools.TypeOfItem, tmpContainer), 1, backpack, 0,0,0);
				CraftTool(Tinker_Tools.TypeOfItem, Tinker_Tools.CategoryBtn, Tinker_Tools.ItemBtn);
				WaitAverageLag(AVERAGE_LAG_MS*2);
			end;
		while Count(Carpentry_Tools.TypeOfItem, tmpContainer) < 8 do
			begin
				LoadCraftResources;
				if FindType(Tinker_Tools.TypeOfItem, backpack) <= 0 then MoveItem(FindType(Tinker_Tools.TypeOfItem, tmpContainer), 1, backpack, 0,0,0);
				CraftTool(Tinker_Tools.TypeOfItem, Carpentry_Tools.CategoryBtn, Carpentry_Tools.ItemBtn);
				WaitAverageLag(AVERAGE_LAG_MS*2);
			end;
		Unload;
		while FindType($FFFF, backpack) > 0 do
			begin
				UOSay('BANK');
				WaitAverageLag(AVERAGE_LAG_MS);
				MoveItem(FindItem, 0, tmpContainer, 0,0,0);
				WaitAverageLag(AVERAGE_LAG_MS);
			end;
	end;
{CRAFTING SECTION END}
идея в том, чтобы в лупы загрузки вписать некую булефункцию которая бы гарантировала открытость или закрытость банка.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Функция открыт ли банк с булевым результатом.

Post by shinma »

короче не парься положи в банк сумку её ID всегда одно и тоже и только её. открываешь банк чатом и пользуешься обьектом ид сумки в банке. ид пропиши в константы и все.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Функция открыт ли банк с булевым результатом.

Post by drabadan »

shinma wrote:короче не парься положи в банк сумку её ID всегда одно и тоже и только её. открываешь банк чатом и пользуешься обьектом ид сумки в банке. ид пропиши в константы и все.
а можно попросить изобразить это кодом, а то я не улавливаю немного.
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Функция открыт ли банк с булевым результатом.

Post by shinma »

Code: Select all

const
bankbox=$408428E8 ;

..............................

.......................................
 Procedure PutMoneyBank;
begin
  checklag(60000);
  AddToSystemJournal('606 Заработал ГП : '+ inttostr(CountEx(goldcoin,$0000,backpack)));
  begin
     while (CountEx(goldcoin,$0000,backpack) > 0) and not dead do
     begin
       checklag(60000);
       FindTypeEx (goldcoin,$0000,Backpack,True) ;
       checklag(60000);
        MoveItem(FindItem,0,bankbox,0,0,0);
     wait(2000);
     end;
  end;
end;
.........................

      checklag(60000);
      uosay('bank'); 
      wait(1000); 
      UseObject(bankbox); 
      PutMoneyBank;
 
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Функция открыт ли банк с булевым результатом.

Post by drabadan »

shinma wrote:

Code: Select all

const
bankbox=$408428E8 ;

..............................

.......................................
 Procedure PutMoneyBank;
begin
  checklag(60000);
  AddToSystemJournal('606 Заработал ГП : '+ inttostr(CountEx(goldcoin,$0000,backpack)));
  begin
     while (CountEx(goldcoin,$0000,backpack) > 0) and not dead do
     begin
       checklag(60000);
       FindTypeEx (goldcoin,$0000,Backpack,True) ;
       checklag(60000);
        MoveItem(FindItem,0,bankbox,0,0,0);
     wait(2000);
     end;
  end;
end;
.........................

      checklag(60000);
      uosay('bank'); 
      wait(1000); 
      UseObject(bankbox); 
      PutMoneyBank;
 
замечательный код, но. Я просил не об этом.
Но спасибо за труды и внимание к моей проблеме!
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: Функция открыт ли банк с булевым результатом.

Post by shinma »

вообще не вижу проблем. просто переписать скрипт на работу с сумкой в банке, а не с самим банком. там хоть 20 сумок запихай и ид их юзай.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Функция открыт ли банк с булевым результатом.

Post by drabadan »

shinma wrote:вообще не вижу проблем. просто переписать скрипт на работу с сумкой в банке, а не с самим банком. там хоть 20 сумок запихай и ид их юзай.
проблема в том, что иногда происходит ситуация самозакрывания банка. Я не смогу выкладывать результаты крафта в закрытый банк, сессия выкладки иногда очень длинная т.к. результатов крафта много овер 50 * 1,5 сек среднего лага получается 75 секунд. И это только одна из фаз! Каждый раз флудить "Bank" перед каждой выкладкой некоего результата крафта не хочется, по-этому и выносятся себе и окружающим мозги. Как же, блина, проверить что банк, блина, открыт собака.

практический пример - выкладка 30 кирок - 15 топоров - 5 тинкер тулсов - 5 карпентри тулсов - логов - инготов - некие дополнительные результаты работы скрипта. Если всегда кричать банк перед каждой киркой - это может вызвать некие подозрения, но это не главный фактор, к тому еще есть время которое автоматом увеличивается на ожидание открытия самого банка после команды чата. Итого 50*3 = 150 секунд. Я конечно, не придалбываюсь и не перфекционист - просто для меня это задачка которую я хочу разгадать, у самого не получается по причине скудоумия. Вот подключаю коллектив.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Функция открыт ли банк с булевым результатом.

Post by Vizit0r »

пока ты не выложишь пакеты с момента этого якобы закрытия банка - можно фантазировать хоть до нового года.
лично у меня ощущение, что банк нифига не закрывается.

Для проверки можно подключиться клиентом к стелсу и посмотреть, что там делается.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Функция открыт ли банк с булевым результатом.

Post by drabadan »

как скрипт может узнать "открыт" ли банк в текущий момент времени?
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Re: Функция открыт ли банк с булевым результатом.

Post by grundick »

Ну а если с другой стороны подойти? Тебе ведь надо проверять, положился ли айтем в банк? Тогда перед выкладыванием запоминай текущее кол-во, после выкладывания проверяй. Соответственно, если не изменилось (банк закрыт), значит кричи БАНК.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Функция открыт ли банк с булевым результатом.

Post by drabadan »

grundick wrote:Ну а если с другой стороны подойти? Тебе ведь надо проверять, положился ли айтем в банк? Тогда перед выкладыванием запоминай текущее кол-во, после выкладывания проверяй. Соответственно, если не изменилось (банк закрыт), значит кричи БАНК.
так и придумал! только описал через вес =) Спасибо всем за помощь!
листинг:

Code: Select all

function ItemMoved(PreviousWeight : Integer): Boolean;
	begin
		Result := False;
		if Weight <> PreviousWeight then Result := True;
	end;
 .........
  while FindType($FFFF, backpack) > 0 do
			begin
				PreviousWeight := Weight;
				MoveItem(FindItem, 0, tmpContainer, 0,0,0);
				WaitAverageLag(AVERAGE_LAG_MS);
				if not ItemMoved(PreviousWeight) then CallBank;
			end;
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Функция открыт ли банк с булевым результатом.

Post by Vizit0r »

это не решение, это костыль.

Впрочем, тогда уже лучше заюзать ивент evRejectMoveItem - http://stealth.od.ua/Doc:RU/Manual/Reference/Events
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply