Все скрипты построены на одном принципе. Использовании скилла необходимого для прокачки стата и надевании курсовых шмоток по мере необходимости.
Для всех скриптов вам понадобиться "мешок с курсовыми шмотками". Мне пришлось довольно долго гуглить список всех 14 вещей, и тот, что был найден - не особо корректный.
в таком случае, указывать ID 2 и 3 куклы не обязательно
Скрипту нужно указать id мешочка с курсой, id-шники трех кукол стоящих рядом, и желаемое значение силы для прокачки.
Он будет по очереди подходить к каждой кукле и бить ее, при достижении strenghtToDressUp (по умолчанию 84) силы будет надевать следующую курсовую шмотку.
Для новичков
Авось и правда такие найдуться в 2019+.
Под куклами подразумевается Training Dummy скрипт писался под тех, что стоят в Britain ориентировочные координаты x:1588, y:1555
Цифра 84 взята не из потолка, а из официального описания сервера. Эмпирически было выяснено, что для macefighting написанное там вполне справедливо.
Мешок с набором курсы. Снимаем ВСЕ курсовые шмотки и кладем в него.
Любой музыкальный инструмент
Какой набор багофич drw использует скрипт описывать лень! Скажу две вещи.
Во-первых, он 100% работает! Не обращайте внимания на надпись "You are preoccupied with thoughts of battle.".
Во-вторых для других шардов, скорее всего будет иметь смысл не брать муз. инструмент и закомментировать\удалить следующие строки:
Скрипту нужно указать id мешочка с курсой и желаемое значение ловкости для прокачки.
Он встанет в боевой режим будет бешено пытаться всех успокоить и спрятаться. При достижении strenghtToDressUp (по умолчанию 70) ловкости будет надевать следующую курсовую шмотку.
dexToDressUp = 70; взято из потолка. Можете поиграться с этой цифрой при желании. Но с ней до 150 докачивается спокойно и довольно быстро.
program dexMadness;
const
idBagWithCursedItems = $401AABA3; //мешочек заполненный курсовыми шмотками (и ничем другим!)
targetDex = 150; // Сколько ловкости должно в итоге получиться
dexToDressUp = 70; //При достижении этого значения ловкости будет надеваться следующая курсовая вещь
cursePower = 8; //Количество ловкости отнемаемой одной курсовой шмоткой
var
cursedItems: Array of Cardinal;
cursedDex, trueDex, lastTrueDex: Integer;
guardsTimer: TDateTime;
procedure checkDressUpCursedItem;
var l: Cardinal;
begin
l := Length(cursedItems);
while (Dex >= dexToDressUp) and (l > 0) do
begin
useObject(idBagWithCursedItems);
CheckLag(15000);
useObject(cursedItems[l - 1]);
wait(500);
SetLength(cursedItems, l - 1);
l := Length(cursedItems);
cursedDex := cursedDex + cursePower;
end;
end;
procedure init;
begin
guardsTimer := IncSecond(Now, 2);
cursedDex := 0;
lastTrueDex := Dex;
useObject(idBagWithCursedItems);
CheckLag(15000);
if FindType(-1, idBagWithCursedItems) > 0 then
cursedItems := GetFoundItems
else
cursedItems := [];
end;
begin
init;
setWarmode(false);
setWarmode(true);
repeat
if guardsTimer <= Now then
begin
UOSay('guards');
guardsTimer := IncSecond(Now, 2);
CheckLag(15000);
end;
checkDressUpCursedItem;
UseSkill('Peacemaking');
UseSkill('Hiding');
trueDex := Dex + cursedDex;
if (lastTrueDex <> trueDex) then
begin
lastTrueDex := trueDex;
AddToSystemJournal('Real Dexterity = ' + IntToStr(trueDex));
end;
until ( trueDex >= targetDex );
Disconnect;
end.
Re: DRW Статы [Strength, Dexterity, Intelligence]
Posted: 24.01.2019 22:43
by Unholy
Intelligence, интеллектItem Identification
Берем в бекпак мешок с набором курсы. Снимаем ВСЕ курсовые шмотки и кладем в него.
скрипт будет использовать скилл ItemId на мешок с курсой и надевать курсу по мере необходимости.
Эффективность скрипта под большим вопросом. Мне так и не удалось найти дзен в intToDressUp, если у кого-то это получилось, отпишитесь какое значение у этой константы вы выставили.
program intTrainer;
const
idBagWithCursedItems = $401AABA3; //мешочек заполненный курсовыми шмотками (и ничем другим!)
targetInt = 200; // Сколько интеллекта должно в итоге получиться
intToDressUp = 20; //При достижении этого значения интеллекта будет надеваться следующая курсовая вещь
cursePower = 8; //Количество интеллекта отнемаемой одной курсовой шмоткой
var
cursedItems: Array of Cardinal;
cursedInt, trueInt, lastTrueInt: Integer;
guardsTimer: TDateTime;
procedure checkDressUpCursedItem;
var l: Cardinal;
begin
l := Length(cursedItems);
while (Int >= intToDressUp) and (l > 0) do
begin
useObject(idBagWithCursedItems);
CheckLag(15000);
useObject(cursedItems[l - 1]);
wait(500);
SetLength(cursedItems, l - 1);
l := Length(cursedItems);
cursedInt := cursedInt + cursePower;
end;
end;
procedure init;
begin
guardsTimer := IncSecond(Now, 2);
cursedInt := 0;
lastTrueInt := Dex;
useObject(idBagWithCursedItems);
CheckLag(15000);
if FindType(-1, idBagWithCursedItems) > 0 then
cursedItems := GetFoundItems
else
cursedItems := [];
end;
begin
init;
setWarmode(false);
repeat
if guardsTimer <= Now then
begin
UOSay('guards');
guardsTimer := IncSecond(Now, 2);
CheckLag(15000);
setWarmode(false);
end;
checkDressUpCursedItem;
WaitTargetObject(idBagWithCursedItems);
UseSkill('Item Identification');
trueInt := Int + cursedInt;
if (lastTrueInt <> trueInt) then
begin
lastTrueInt := trueInt;
AddToSystemJournal('Real Intellegence = ' + IntToStr(trueInt));
end;
until ( trueInt >= targetInt );
end.
Re: DRW Статы [Strength, Dexterity, Intelligence]
Posted: 24.01.2019 22:44
by Unholy
Strength, Силана mining-е Сразу оговорюсь, как по мне, метод - говно.
Почему?
Во-первых найти шахту, в которой вас не убьют, будет достаточно места, не придется левым чаром бежать и выпутывать основного из паутины практически не реально;
Во-вторых, лично у меня в фулле курсы получилось добить силу только до 75 (за 8 часов!). То есть, выше 187 сила таким способом не растет. Эксперименты с strenghtToDressUp успехом не увенчались;
Берем в бекпак мешок с набором курсы. Снимаем ВСЕ курсовые шмотки и кладем в него.
Также кладем в бэкпак лопату, которой чар будет копать. Даже если в вашем наборе курсы есть кирка копать он все-равно будет лопатами
Почему?
Потому, что мне лень отслеживать ситуации, когда эта кирка сломается и добавлять в алгоритм обязательное учитывание одной курсовой вещи.
Идем в шахту, где можно будет свободно обкапывать вокруг себя. Становимся в хайд (ручками!).
В скрипте указываем id мешка с курсой и желаемое кол-во силы.
Запускаем.
Руда, при достижении максимального веса будет падать на землю.
Менять эту механику смысле не вижу, т. к. если выбрасывать всю треш руду оставляя только выху у ПК будет больше соблазна вас убить, а так может даже пожалеют.
program strDummy;
const
idBagWithCursedItems = $404114B5; //мешочек заполненный курсовыми шмотками (и ничем другим!)
showelType1 = $0F39;
showelType2 = $0F3A;
targetStrength = 200; // Сколько силы должно в итоге получиться
strenghtToDressUp = 74; //При достижении этого значения силы будет надеваться следующая курсовая вещь
cursePower = 8; //Количество силы отнемаемой одной курсовой шмоткой
M_nothing1 = 'There is no ore here to mine';
M_nothing2 = 'That is too far';
M_nothing3 = 'Try mining in rock';
M_nothing4 = 'You cannot mine so close';
M_nothing5 = 'You have no line';
M_nothing6 = 'reach';
M_fizzles1 = 'You loosen some rocks';
M_needwait = 'You decide not to mine';
M_success = 'You put the';
var
cursedItems: Array of Cardinal;
cursedStrength, trueStr, mineX, mineY: Integer;
procedure checkDressUpCursedItem;
var l: Cardinal;
begin
l := Length(cursedItems);
while (Str >= strenghtToDressUp) and (l > 0) do
begin
useObject(idBagWithCursedItems);
CheckLag(15000);
useObject(cursedItems[l - 1]);
wait(500);
SetLength(cursedItems, l - 1);
l := Length(cursedItems);
cursedStrength := cursedStrength + cursePower;
end;
end;
procedure init;
begin
cursedStrength := 0;
useObject(idBagWithCursedItems);
CheckLag(15000);
mineX := -4;
mineY := -4;
if FindType(-1, idBagWithCursedItems) > 0 then
cursedItems := GetFoundItems
else
cursedItems := [];
end;
procedure mineNext;
var x, y, k: Integer;
var tx, ty, tz: Integer;
var mn1, mn2, mn3, mn4, mn5, mn6, mf1, ms1 : Integer;
var ctime : TDateTime;
begin
mineX := mineX + 1;
if (mineX >= 5) then
begin
mineX := -4;
mineY := mineY + 1;
if (mineY >= 5) then mineY := -4;
end;
if TargetPresent then CancelTarget;
if WarMode = true then SetWarMode(false);
ctime := Now;
if (FindType(showelType1, backpack) > 0) then
useObject( FindItem )
else if (FindType(showelType2, backpack) > 0) then
useObject( FindItem );
WaitForTarget(1000);
tx := GetX(self)+mineX;
ty := GetY(self)+mineY;
tz := GetZ(self);
AddToSystemJournal('Mine at ' + IntToStr(tx) + ', ' + IntToStr(ty));
If TargetPresent then TargetToTile(1342, tx, ty, tz);
k := 0;
repeat
wait(500);
k := k + 1;
CheckLag(150000);
mn1 := InJournalBetweenTimes(M_nothing1, ctime, Now);
mn2 := InJournalBetweenTimes(M_nothing2, ctime, Now);
mn3 := InJournalBetweenTimes(M_nothing3, ctime, Now);
mn4 := InJournalBetweenTimes(M_nothing4, ctime, Now);
mn5 := InJournalBetweenTimes(M_nothing5, ctime, Now);
mn6 := InJournalBetweenTimes(M_nothing6, ctime, Now);
mf1 := InJournalBetweenTimes(M_fizzles1, ctime, Now);
ms1 := InJournalBetweenTimes(M_success, ctime, Now);
until (mn1<>-1) or (mn2<>-1) or (mn3<>-1) or (mn4<>-1) or (mn5<>-1) or (mn6<>-1) or (mf1<>-1) or (ms1<>-1) or Dead or (k > 60);
end;
begin
init;
repeat
checkDressUpCursedItem;
mineNext;
trueStr := Str + cursedStrength;
AddToSystemJournal('Real Strength = ' + IntToStr(trueStr));
until ( Str + cursedStrength >= targetStrength );
Disconnect;
end.
Re: DRW Статы [Strength, Dexterity, Intelligence]
Posted: 01.02.2019 11:24
by Unholy
Strength, Сила на спаринге
Идея простая, избиваем, хилим другого персонажа. Подойдет для прокачанных персонажей.
Для этого нам понадобится дополнительный персонаж-кукла на отдельном ip.
Ему можно либо дать в руки лук, либо надеть на него меч и щит и прокачать ему parrying.
Во втором случае на нем нужно запустить вот этот маленький скрипт: