Code: Select all
Program BowcraftUP; 
// v.1.00b (c) Edred 
// Из логов делаем шафты. Логи берем с пола, берем по 2, скидываем 1 обратно
// (это можно изменить в константах HowGetLogs, HowDropLogs).
// Шафты скидываем обратно на пол. Даггер может быть в руках или паке.
// Первый крафт через меню, последующие через .makelast (отменяется удалением строки
// FirstTime := false;
// Если вы эту строку удалите или закомментируете - все крафты будут через меню).
{$Include 'all.inc'} 
var 
ctime : TDateTime;
k, m : integer; 
LogsID : cardinal;
FirstTime : boolean;
OldSkill : Double;
const
TypLogs = $1BDD;					// Тип досок
TypShafts = $1BD4;
HowGetLogs = 2;
HowDropLogs = 1;
HowDropShafts = 100;
ToolsType = $0F51;					// даггер
	function GetRes : boolean;
	begin
		Result := True;
		if Count(TypLogs) = 0 then
		begin
			waitconnection(3000);
			findtype(TypLogs,ground);
			if GetQuantity(Finditem) < 3 then
			begin
				repeat
					addtosystemjournal('Warning: Мало логов на полу');
					wait(10000);
					findtype(TypLogs,ground);
				until GetQuantity(Finditem) >= 3;
			end;
			m := GetQuantity(finditem);
			Grab(FindItem,HowGetLogs);
			wait(1000);
			checksave;
			waitconnection(3000);
			findtype(TypLogs,backpack);
			Drop(FindItem,HowDropLogs,0,0,0); 
			wait(1000); 
			checksave;
		end;
	end;
	procedure DropShafts;
	var tmp1 : cardinal;
		tmp2, tmp3 : Integer;
	begin
		waitconnection(3000);
		if Count(TypShafts) < HowDropShafts then exit;
		tmp3 := 0;
		tmp1 := findtype(TypShafts,backpack);
		while findcount > 0 do
		begin
			tmp2 := GetQuantity(tmp1);
			Drop(tmp1,tmp2,0,0,0);
			wait(1000);
			checksave;
			tmp3 := tmp3 + tmp2;
			tmp1 := findtype(TypShafts,backpack);
		end;
	end;
Begin 
	FindDistance := 1; 
	CancelMenu; 
	AutoMenu('What do you want', 'shaft');
	FirstTime := true;
	// Первый раз через меню
	OldSkill := GetSkillValue('Bowcraft');
	repeat
		if not GetRes then exit;
		waitconnection(3000);
		ctime := Now;
		k := 0;
		if FirstTime then
		begin
			LogsID := Findtype(TypLogs,backpack);
			if TargetPresent then CancelTarget;
			UseType(ToolsType, $FFFF);
			WaitForTarget(5000);
			If TargetPresent then TargetToObject(LogsID);
			FirstTime := false;
		end
		else UOSay('.makelast');
		repeat 
			wait(100); 
			k := k + 1; 
			checksave; 
		until (InJournalBetweenTimes('You put|You fail to complete|You fail to create', ctime, Now)<>-1) or (k > 200);
		if InJournalBetweenTimes('You fail to complete', ctime, Now)<>-1 then wait(7000);
		wait(2000)
		DropShafts;
		if GetSkillValue('Bowcraft') > OldSkill then
		begin
			AddToSystemJournal('Скилл Bowcraft вырос. Теперь он равен ' + FloatToStr(GetSkillValue('Bowcraft')));
			OldSkill := GetSkillValue('Bowcraft');
		end;
	until GetSkillValue('Bowcraft') >= 100.0;
End.

