Режет не нарезанную кожу с пака.
С нарезанной кожи делает карты.
Скрафченые карты рисует.
*** не знаю как будет вести себя скрипт если в паке меньше 500 нарезаной кожи. Рекоммендую в паке иметь наличие нарезаной и ненарезаной кожи больше значения С (C = 500; // кол-во карт для цыкла крафта).
Есть косяк при переключении крафта между рисованием и крафтом карт. Удаляет 1 карту... но мне лень фиксить. Я и так там намудрил... можно было проще сделать.
Code: Select all
Program Cartography;
var
CTime, STime : TDateTime;
TempL, TempCUpL : Cardinal;
a : Integer;
const
Leather = $1078;
Scissors = $0F9E;
Kit = $0F9D;
CUpLeather = $1081;
Map = $14ED;
Pen = $0FBF;
Food = $097B;
C = 500; // кол-во карт для цыкла крафта
Procedure Eat;
begin
if (Now > (CTime + ((1.0/86400) * 900))) then
begin
if FindType(Food,Ground) <> 0 then
begin
UseObject(FindItem);
CTime := Now;
end;
end;
end;
Procedure Scan;
begin
if (InJournalBetweenTimes('You make some leather.', STime, Now) <> -1) then exit;
if (InJournalBetweenTimes('Вы изготавливаете предмет и кладете его в сумку.|Вы изготавливаете и сразу же уничтожаете предмет.', STime, Now) <> -1) then
repeat
STime := Now;
wait(4000);
until InJournalBetweenTimes('Вы изготавливаете предмет и кладете его в сумку.|Вы изготавливаете и сразу же уничтожаете предмет.|У Вас не получилось изготовить предмет', STime, Now) = -1;
end;
Procedure MakeCutUpLeather;
begin
if FindType(Leather,Backpack) = 0 then
begin
a := 1;
end;
if FindType(Leather,Backpack) <> 0 then
begin
if a = 0 then
begin
TempL := FindItem;
if FindType(Scissors,Backpack) <> 0 then
begin
UseObject(FindItem);
WaitForTarget(5000);
if TargetPresent then
begin
STime := Now;
TargetToObject(TempL);
Wait(3000);
if Count(CUpLeather) = C then
begin
a := 1;
wait(3200);
end;
end;
end;
end;
end;
end;
Procedure CraftMaps;
begin
ClearJournal;
Grab(FindType(Food,Backpack),1);
Wait(3000);
if FindType(CUpLeather,Backpack) <> 0 then
begin
if (a = 1) and (Count(Map) < C) then
begin
if MenuHookPresent = True then CancelMenu;
TempCUpL := FindItem;
WaitMenu('Leather Working','Misc.');
Wait(100);
WaitMenu('Miscellaneous','Blank Map 40% Tailoring');
Wait(100);
if FindType(Kit,Backpack) <> 0 then
begin
UseObject(FindItem);
WaitForTarget(5000);
if TargetPresent then
begin
STime := Now;
TargetToObject(TempCUpL);
Wait(3200);
if (InJournal('Вы изготавливаете') <> -1) then
begin
UOSay(Chr(39) + 'craftcreate 1');
wait(1000);
UOSay(Chr(39) + 'pc craft ' + IntToStr(C));
Scan;
end;
end;
end;
end;
if (FindType(CUpLeather,Backpack) = 0) or (Count(Map) >= C) then
begin
a := 2;
UOSay(Chr(39) + 'craftcreate 0');
wait(1000);
end;
end;
end;
Procedure DrawMaps;
begin
ClearJournal;
Grab(FindType(Food,Backpack),1);
Wait(3000);
if FindType(Map,Backpack) <> 0 then
begin
if a = 2 then
begin
if MenuHookPresent = True then CancelMenu;
if (GetSkillValue('Cartography') >= 10.0) and (GetSkillValue('Cartography') < 20.0) then
begin
WaitMenu('Draw Map', 'Map resolution 1');
end;
if (GetSkillValue('Cartography') >= 20.0) and (GetSkillValue('Cartography') < 35.0) then
begin
WaitMenu('Draw Map', 'Map resolution 2');
end;
if (GetSkillValue('Cartography') >= 35.0) and (GetSkillValue('Cartography') < 50.0) then
begin
WaitMenu('Draw Map', 'Map resolution 3');
end;
if (GetSkillValue('Cartography') >= 50.0) and (GetSkillValue('Cartography') < 70.0) then
begin
WaitMenu('Draw Map', 'Map resolution 4');
end;
if (GetSkillValue('Cartography') >= 70.0) and (GetSkillValue('Cartography') < 80.0) then
begin
WaitMenu('Draw Map', 'Map resolution 5');
end;
if (GetSkillValue('Cartography') >= 80.0) and (GetSkillValue('Cartography') < 85.0) then
begin
WaitMenu('Draw Map', 'Map resolution 6');
end;
if (GetSkillValue('Cartography') >= 85.0) and (GetSkillValue('Cartography') < 90.0) then
begin
WaitMenu('Draw Map', 'Map resolution 7');
end;
if (GetSkillValue('Cartography') >= 90.0) and (GetSkillValue('Cartography') < 95.0) then
begin
WaitMenu('Draw Map', 'Map resolution 8');
end;
if (GetSkillValue('Cartography') >= 95.0) and (GetSkillValue('Cartography') < 100.0) then
begin
WaitMenu('Draw Map', 'Map resolution 9');
end;
STime := Now;
UseSkill('Cartography');
Wait(3200);
if (InJournal('Вы изготавливаете') <> -1) then
begin
UOSay(Chr(39) + 'craftcreate 0');
Wait(1000);
UOSay(Chr(39) + 'pc craft ' + IntToStr(C));
Scan;
end;
if FindType(Map,Backpack) = 0 then
begin
a := 0;
UOSay(Chr(39) + 'craftcreate 1');
wait(3200);
end;
end;
end;
end;
begin
FindDistance := 4;
SetARStatus(True);
SetPauseScriptOnDisconnectStatus(True);
while Connected and not Dead do
begin
MakeCutUpLeather;
Eat;
CraftMaps;
DrawMaps;
end;
end.