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.