Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Очень бы хотелось скупку регов.
Рекомендую оставить подобные высказывания при себе. Это серьезное предупреждение. Мне лично надоело постоянно везде наблюдать подобные комментарии к постам Acronym. Особенно с учетом, что умение скриптить Acronim-а гораздо выше твоего. И пользы на форуме от него гораздо больше.Scripts Writer wrote:Ничего глупее никогда не слышал.
-
- Novice
- Posts: 130
- Joined: 06.05.2008 18:03
Ну забань в таком случае,- у меня своё мнение на этот счёт.Edred wrote:Рекомендую оставить подобные высказывания при себе. Это серьезное предупреждение. Мне лично надоело постоянно везде наблюдать подобные комментарии к постам Acronym. Особенно с учетом, что умение скриптить Acronim-а гораздо выше твоего. И пользы на форуме от него гораздо больше.Scripts Writer wrote:Ничего глупее никогда не слышал.
Проще научить человека ловить рыбу, чем постоянно ею его кормить. (с) Destruction
Реги садятся обычно вручную и собирают, пока их кто-то не уничтожит.proZak wrote:А можеш выложыть скрипт на посадку регов? буду очень благодарен!!Acronym wrote: б)Вопросы мне не адресовать, я скупкой никогда не интересовался. Я реги выращивал)
[/code]!!
А скрипт на сбор примерно такой (если он еще рабочий):
Code: Select all
Program PesokRB;
var i, MaxWeight, X_GK, Y_GK : Integer;
TrapID, RB : Cardinal;
HarvestNS, HarvestBM, HarvestMR, HarvestGA, HarvestGS, HarvestWheet : Boolean;
temptime : TDateTime;
MakeTime : Cardinal;
Const
{Типы кустов}
ShrubNS = $18E5;
ShrubBM = $1783;
ShrubMR = $18E0;
ShrubGA = $18E1;
ShrubGS = $18E9;
ShrubWheet = $0C56;
{Типы Сырых ресурсов}
RawNS = $18E7;
RawBM = $0C70;
RawMR = $18DE;
RawGA = $18E3;
RawGS = $18EB;
Wheet = $1EBD;
Fertile_Dirts = $0F81;
{$Include 'all.inc'}
procedure SetValues;
begin
TrapID := $4EFD3A0A;
RB := $4F1C1006;
HarvestNS := true;
HarvestBM := true;
HarvestMR := true;
HarvestGA := true;
HarvestGS := true;
HarvestWheet := true;
MaxWeight := 350;
X_GK := 4070;
Y_GK := 530;
end;
procedure FullDisconnect;
begin
SetARStatus(false);
Disconnect;
end;
procedure CheckDead;
begin
WaitConnection(3000);
CheckSave;
if Dead then
begin
SetWarMode(true);
WaitGump('1');
wait(5000);
while (Dead) do
begin
UOSay('.c I''m was killed on Field at ' + IntToStr(GetX(Self)) + ' ' + IntToStr(GetY(Self)) + ' ! ' + 'Waiting while anybody ressurect me!');
Wait (200000);
end;
wait (2000);
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
Hungry(1, backpack);
end;
end;
procedure Harvest(HarvestType : Word);
var c,d,e,f : Integer;
StrubsList : TStringList;
SaveFindDistanse : Integer;
StrubID : Cardinal;
stime : TDateTime;
begin
SaveFindDistanse := FindDistance;
FindDistance := 2;
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
FindType(HarvestType, Ground);
if (FindFullQuantity = 0) then Exit;
StrubsList := TStringList.Create;
GetFindedList(StrubsList);
While (StrubsList.Count > 0) and (Not Dead) and (Weight < MaxWeight) do
begin
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
StrubID := StrToInt('$'+StrubsList.Strings[0]);
stime := Now;
{Начинаем собирать}
UseObject(StrubID);
WaitGump('0');
repeat
c := InJournalBetweenTimes('performing|doing', stime, Now);
d := InJournalBetweenTimes('That has already been harvested', stime, Now);
e := InJournalBetweenTimes('You harvest all you can', stime, Now);
f := InJournalBetweenTimes('That has already been harvested', stime, Now);
wait(200);
until (c >= 0) or (d >= 0) or (e >= 0) or (f >= 0) or (Now > stime + (2.0/1440)) or Dead;
if (f >= 0) then WaitGump('0');
if (c >= 0) then wait(2000);
wait(200);
StrubsList.Delete(0);
end; {End While (StrubsList.Count > 0) and (Not Dead)}
StrubsList.Free;
FindDistance := SaveFindDistanse;
end;
procedure MakeField;
Begin
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
AddToSystemJournal('Make Field');
if (HarvestNS) and (Weight < MaxWeight) then Harvest(ShrubNS);
if (HarvestBM) and (Weight < MaxWeight) then Harvest(ShrubBM);
if (HarvestMR) and (Weight < MaxWeight) then Harvest(ShrubMR);
if (HarvestGA) and (Weight < MaxWeight) then Harvest(ShrubGA);
if (HarvestGS) and (Weight < MaxWeight) then Harvest(ShrubGS);
if (HarvestWheet) and (Weight < MaxWeight) then Harvest(ShrubWheet);
end; {End procedure MakeField;}
function CheckRegs : Boolean;
begin
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
result := true;
{Проверяем кол-во регов}
if (Count(BM) < 10) or (Count(BP) < 10) or (Count(MR) < 10) then result := false;
end;
function GetRegs : Boolean;
begin
wait(500);
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
{Если мало BM, то берем в бекпак}
findtype(BM, backpack);
if FindFullQuantity < 10 then
begin
AddToSystemJournal('Drag BM');
if findtype(BM, ground) <> 0 then Grab(finditem, 30)
else AddToSystemJournal('Error: No BM at GK');
wait(1000);
end;
{Если мало BP, то берем в бекпак}
findtype(BP, backpack);
if FindFullQuantity < 10 then
begin
AddToSystemJournal('Drag BP');
if findtype(BP, ground) <> 0 then Grab(finditem, 30)
else AddToSystemJournal('Error: No BP at GK');
wait(1000);
end;
{Если мало MR, то берем в бекпак}
findtype(MR, backpack);
if FindFullQuantity < 10 then
begin
AddToSystemJournal('Drag MR');
if findtype(MR, ground) <> 0 then Grab(finditem, 30)
else AddToSystemJournal('Error: No MR at GK');
wait(1000);
end;
result := true;
end;
procedure DropRawRegs;
begin
findtype(RawNS, backpack);
if (FindFullQuantity > 0) then
begin
Stack(RawNS, GetColor(finditem));
findtype(RawNS, ground);
AddToSystemJournal('There are '+IntToStr(FindFullQuantity)+' RawNS');
wait(1000);
end;
findtype(RawBM, backpack);
if (FindFullQuantity > 0) then
begin
Stack(RawBM, GetColor(finditem));
findtype(RawBM, ground);
AddToSystemJournal('There are '+IntToStr(FindFullQuantity)+' RawBM');
wait(1000);
end;
findtype(RawMR, backpack);
if (FindFullQuantity > 0) then
begin
Stack(RawMR, GetColor(finditem));
findtype(RawMR, ground);
AddToSystemJournal('There are '+IntToStr(FindFullQuantity)+' RawMR');
wait(1000);
end;
findtype(RawGA, backpack);
if (FindFullQuantity > 0) then
begin
Stack(RawGA, GetColor(finditem));
findtype(RawGA, ground);
AddToSystemJournal('There are '+IntToStr(FindFullQuantity)+' RawGA');
wait(1000);
end;
findtype(RawGS, backpack);
if (FindFullQuantity > 0) then
begin
Stack(RawGS, GetColor(finditem));
findtype(RawGS, ground);
AddToSystemJournal('There are '+IntToStr(FindFullQuantity)+' RawGS');
wait(1000);
end;
findtype(Wheet, backpack);
if (FindFullQuantity > 0) then
begin
Stack(Wheet, GetColor(finditem));
findtype(Wheet, ground);
AddToSystemJournal('There are '+IntToStr(FindFullQuantity)+' Wheet');
wait(1000);
end;
findtype(Fertile_Dirts, backpack);
if (FindFullQuantity > 0) then
begin
Stack(Fertile_Dirts, GetColor(finditem));
findtype(Fertile_Dirts, ground);
AddToSystemJournal('There are '+IntToStr(FindFullQuantity)+' Fertile_Dirts');
wait(1000);
end;
end;
function RecallRB(RBID : Cardinal; RuneNumber : Integer) : Boolean;
var CurMana : Integer;
Recalled : Boolean;
c,d,e,f : Integer;
stime : TDateTime;
LastX, LastY : Integer;
begin
wait(500);
AddToSystemJournal('function RecallRB started');
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
LastX := GetX(Self);
LastY := GetY(Self);
{Если в руках чтото есть, то снимаем}
if ObjAtLayer(RhandLayer) <> 0 then
begin
disarm;
wait(1000);
end;
Recalled := false;
while (not Recalled) do
begin
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
{Если в руках чтото есть, то снимаем}
if ObjAtLayer(RhandLayer) <> 0 then
begin
disarm;
wait(1000);
end;
{Ждем пока восстановиться мана, если она не полная}
while Mana < MaxMana do
begin
UseSkill('Meditation');
wait(8000);
end;
wait(500);
stime := Now;
CurMana := Mana;
{Если нету регов на рекол, то реколимся по заряду}
if (Count(BP) > 0) and (Count(MR) > 0) and (Count(BM) > 0) then
begin
{Recall используя реги}
UseObject(RBID);
WaitGump(IntToStr(600 + RuneNumber));
end
else
begin
{Recall используя заряд РБ}
AddToSystemJournal('Регов нету! Recall по заряду!');
UseObject(RBID);
WaitGump(IntToStr(2 * RuneNumber));
end;
AddToSystemJournal('Try to recall');
repeat
c := InJournalBetweenTimes('perform|doing', stime, Now);
d := InJournalBetweenTimes('fizzles', stime, Now);
e := InJournalBetweenTimes('cast with things in your hands', stime, Now);
f := InJournalBetweenTimes('your book is out of charges', stime, Now);
wait(500);
until (c >= 0) or (d >= 0) or (e >= 0) or (Mana < CurMana) or (Now > stime + (1.0/1440));
AddToSystemJournal('c = '+IntToStr(c)+' '+'d = '+IntToStr(d)+' '+'e = '+IntToStr(e)+' '+'Mana = '+IntToStr(Mana)+' '+'CurMana = '+IntToStr(CurMana));
wait(500);
{Если шард говорит, что чтото в руках, то явно глюк и реконнектимся}
if (e >= 0) then
begin
Disconnect;
wait(2000);
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
end;
{Если шард говорит что нету зарядов, то полный дисконнект, пока не забросят вручную заряды}
if (f >= 0) then
begin
AddToSystemJournal('Нету зарядов!');
FullDisconnect;
wait(2000);
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
end;
{Если среколились, то Recalled := true;}
if (Mana < CurMana) then Recalled := true;
AddToSystemJournal('Mana = '+IntToStr(Mana)+' '+'CurMana = '+IntToStr(CurMana));
if Recalled then AddToSystemJournal('Recalled')
else AddToSystemJournal('Not Recalled');
end; {End while not Recalled}
{Раз среколились, то надо подождать чуток, пока изменяться координаты}
stime := Now;
if Recalled then repeat
wait(500);
until (Now > stime + (0.1/1440)) or (LastX <> GetX(Self)) or (LastY <> GetY(Self));
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
if Recalled then result := true
else Result := false;
end;
function Lodka : Boolean;
var i,c : Integer;
stime : TDateTime;
begin
wait(1000);
AddToSystemJournal('function GK started');
result := True;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
if not ((X_GK = GetX(Self)) and (Y_GK = GetY(Self))) then
begin
{Реколимся в GK}
AddToSystemJournal('Реколимся в GK!');
RecallRB(RB, 2);
wait(1000);
end;
stime := Now;
repeat
wait(500);
until (Now > stime + (1.0/1440)) or ((X_GK = GetX(Self)) and (Y_GK = GetY(Self)));
if not ((X_GK = GetX(Self)) and (Y_GK = GetY(Self))) then
begin
result := false;
Exit;
end;
c := 0;
repeat
{Далее производим синхронизацию снаряжения}
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
DropRawRegs;
GetRegs;
until (c > 2) or (CheckRegs);
if not CheckRegs then Result := false;
wait(1000);
end;
Begin {Main Program Start}
SetValues;
FindDistance := 2;
SetARStatus(false);
WaitConnection(3000);
CheckSave;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
wait(3000);
SetARStatus(true);
if FindType($097B, $FFFFFFFF) <> 0 then Hungry(1, $FFFFFFFF);
{Перед запуском устанавливаем РБ в состояние Cast Recall (кнопка 403)}
WaitGump('');
WaitConnection(3000);
CheckSave;
Wait(2000);
UseObject(RB);
WaitGump('403');
Wait(4000);
WaitConnection(3000);
CheckSave;
while true do
begin
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
{Если мало регов или полный пак, то идем домой}
if (CheckRegs = false) or (Weight >= MaxWeight) then while not Lodka do
begin
AddToSystemJournal('Error with lodka');
wait(10000);
end;
CheckTargetError(5, 2);
WaitConnection(3000);
CheckSave;
CheckDead;
if FindType($097B, $FFFFFFFF) <> 0 then Hungry(1, $FFFFFFFF);
wait(500);
{Ждем 5 минут после последнего збора поля}
temptime := Now;
AddToSystemJournal('Waiting some time ...');
repeat
wait(2000);
until (Now > temptime + (3.0/1440)) or (Timer > (Maketime + (5 * 60 * 1000)));
MakeTime := Timer;
AddToSystemJournal('Waiting complete.');
i := 0;
while (i < 1) and CheckRegs and (Weight < MaxWeight) do
begin
{Реколл на поле}
while not RecallRB(RB, 3) do
begin
AddToSystemJournal('Не могу среколиться на поле!');
wait(30000);
end;
wait(1000);
MakeField;
wait(500);
while not RecallRB(RB, 4) do
begin
AddToSystemJournal('Не могу среколиться на поле!');
wait(30000);
end;
wait(1000);
MakeField;
wait(500);
i := i + 1;
end;
end;
End.
Спасибо канешно но скрипт неподходит под наш шард!!Miralex wrote:Реги садятся обычно вручную и собирают, пока их кто-то не уничтожит.proZak wrote:А можеш выложыть скрипт на посадку регов? буду очень благодарен!!Acronym wrote: б)Вопросы мне не адресовать, я скупкой никогда не интересовался. Я реги выращивал)
[/code]!!
А скрипт на сбор примерно такой (если он еще рабочий):
.[/code]
[Ultima and Dota]-pro... Gamer