Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Mining DRW
-
- Novice
- Posts: 89
- Joined: 16.06.2008 12:22
- Location: <||TORCHKI||>
- Contact:
-
- Novice
- Posts: 89
- Joined: 16.06.2008 12:22
- Location: <||TORCHKI||>
- Contact:
Code: Select all
21:40:32 [EDDY27]: Compiling
21:40:32 [EDDY27]: Compiler: [Error] (VIP.sc at 17:1): Semicolon (';') expected
21:40:32 [EDDY27]: Compiling failed
Code: Select all
Cords_y = 1121 // Кордината сундука Y
Незнаю поставил
Code: Select all
;
Code: Select all
21:45:05 [EDDY27]: Compiler: [Error] (VIP.sc at 46:1): Unknown identifier 'FullDisconnect'
21:45:05 [EDDY27]: Compiling failed
Code: Select all
21:47:39 [EDDY27]: Compiler: [Error] (VIP.sc at 59:13): Unknown identifier 'Itype'
Спасбо что написал все исправлено работает нормально единственное добавь куданибудь себе в инклуды в любой файл вот эти строчки и все будет работать норм)
Code: Select all
procedure FullDisconnect;
begin
SetARStatus(false);
Disconnect;
Exit;
end;
Невозможное возможнО!
-
- Novice
- Posts: 89
- Joined: 16.06.2008 12:22
- Location: <||TORCHKI||>
- Contact:
В инклюды добавил !
Но терь вылазит
Чёто у меня ошибка за ошибкой лезит
Убрал чтобы посмореть что будет дальше функции связанные с елементалем и дальше вылезло
60строка--->
У тебя на стелс нечего на верх не стоит ?
чё у меня он так ругается
Но терь вылазит
Code: Select all
Compiler: [Error] (VIP.sc at 69:21): Unknown identifier 'vxcol'
Убрал чтобы посмореть что будет дальше функции связанные с елементалем и дальше вылезло
Code: Select all
Error] (VIP.sc at 60:32): Unknown identifier 'd'
Code: Select all
ld := 0; ldc := 0; d := 0; e := 2;
У тебя на стелс нечего на верх не стоит ?
чё у меня он так ругается
-
- Novice
- Posts: 89
- Joined: 16.06.2008 12:22
- Location: <||TORCHKI||>
- Contact:
-
- Novice
- Posts: 89
- Joined: 16.06.2008 12:22
- Location: <||TORCHKI||>
- Contact:
Обьсни пожалуйста принцип поиска елема, он регирует токо на своего елементаля тоесть если выкопал другой чар он будет дальше копать ?
Я просто хотел зделать пару чаров копают как елем появился так они стоят и ждут команды старт , как и есть в скрипте) а вот одному врубить килл елема и чтобы он убивал елема выкопаного любым чаров. Как убил говорит start.
Я просто хотел зделать пару чаров копают как елем появился так они стоят и ждут команды старт , как и есть в скрипте) а вот одному врубить килл елема и чтобы он убивал елема выкопаного любым чаров. Как убил говорит start.
В данном скрипте он реагирует только на своего эля и то когда выкопал тогда нужно заменить проверку на выкопку эля на другую примерно такую
Замени вот это:
на это:
и добавь 1 процедуру
Замени вот это:
Code: Select all
if InJournalBetweenTimes('heavy', ctime, Now) <> -1 then
begin
Result := 6
exit;
end;
Code: Select all
check_el
Code: Select all
procedure check_el;
var TimeInterno : TDateTime;
element : Cardinal; // Тип эелементаля незнаю какой)
begin
element:=$0000;
FindDistance:=10;
findtype(element,ground);
if FindCount > 0 then
begin
TimeInterno := Now;
Addtosystemjournal('Найден ЭНТ для продолжение напишите start');
repeat
wait(2000);
until (inJournalBetweenTimes('start', TimeInterno, Now) >= 0);
end;
end;
Last edited by v26RuS on 01.08.2008 12:02, edited 1 time in total.
Невозможное возможнО!
Новая версия скрипта для копки в вип шахте на ДРВ.
Большое спасибо RaTaMaHaTTa за новые идеи в скрипте и найденные ошибки, а так-же за тестирование скрипта.
Новое:
- исправлены ошибки
- изменена функция выгрузки догрузки
- изменена функция поиска элементаля он теперь их ищет в радиусе 10 тайлов
- исправлена фукнция убивания элементаля
Большое спасибо RaTaMaHaTTa за новые идеи в скрипте и найденные ошибки, а так-же за тестирование скрипта.
Новое:
- исправлены ошибки
- изменена функция выгрузки догрузки
- изменена функция поиска элементаля он теперь их ищет в радиусе 10 тайлов
- исправлена фукнция убивания элементаля
Code: Select all
program MiningVip;
// Мининг в VIP пещере
// (c) v26RuS (Galiano{ASTARTA} DRW) v1.2
// Tested by RaTaMaHaTTa on DRW
{$Include 'all.inc'}
const
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 = 'in your pack.';
MaxLimit = 15; // максимальное кол-во физлов одной точки
Cords_x = 2063; // Кордината сундука X
Cords_y = 2266; // Кордината сундука Y
Cord_x = 2063; // Кордината копки X
Cord_y = 2266; // Кордината копки Y
Pickaxe1 = $0E85; // Типы кирок
Pickaxe2 = $0E86;
Ore1 = $19B7; // 1 Ore
Ore2 = $19BA; // 2 Ore
Ore3 = $19B8; // 3 Ore
Ore4 = $19B9; // 4 Ore
Sunduk = $403D03EC; // Общий сундук
Sunduk_pix = $4042414D; //Сундук c кирками
Sunduk_ore = $403EDEF3; // Сундук для руды
MyMaxWeight = 400; // Max Weight
CaveLimit = 1282; // Cave limit
Incol=$0F0E; // Цвет инвизки
kill_elem=1; // Убивать элементаля (в паке должны быть инвизки, скролы вортекса, скролы масс диспела)
vxcol=$1F66; // Тип скрола вортекса
vacol=$1F62; // Тип скрола мас диспела
element=$0010; // Тип элементаля
var
minret,StartFlag : Integer;
HowManyDischarge : Integer;
ScriptStartTime : TDateTime;
flag1 : Boolean;
procedure CheckDead;
Begin
if Dead then
begin
AddToSystemJournal('Персонаж мертв: '+TimeToStr(now));
FullDisconnect;
end
end;
procedure GoXY(x,y : integer; runflag : boolean);
// x,y - eii?aeiaou, a eioi?ua eaai
// prec - oi?iinou iiaoiaa
// runflag - aa?aou eee eaoe
// v. 1.04 (n) Edred, ne?eio ii?oe?iaai n ei?aeoa
// i?eaeiaeuiay aa?ney Yoko n ai?aaioeie AGRS e Edred.
var ld, ldc, dx, dy, mx, my,d,e,a : Integer;
begin
ld := 0; ldc := 0; d := 0; e := 2;
AddToSystemJournal('Начинаем переход');
while true do
begin
dx := GetX(self) - x; if dx < 0 then dx := 0 - dx;
dy := GetY(self) - y; if dy < 0 then dy := 0 - dy;
if dy > dx then dx := dy;
mx := GetX(self); my := GetY(self);
dx := mx - x; if dx < 0 then dx := 0 - dx;
dy := my - y; if dy < 0 then dy := 0 - dy;
if dy > dx then dx := dy;
if ld = dx then begin
ldc := ldc + 1;
if ldc > 4 then begin
addtosystemjournal( 'GotoXY: Cannot reach location!' );
a := 0
repeat
Raw_Move(d,runflag);
a := a+1
until a = e
d := d + 2;
If d = 8 then d:=0 e:= e+1 ldc :=0
end;
end
else ld := dx;
waitconnection(5000);
if mx = x then begin
if my = y then exit;
// North
if my > y then begin Raw_Move(0,runflag); continue; end;
// South
Raw_Move(4,runflag); continue;
end;
if mx < x then begin
// Northeast
if my > y then begin Raw_Move(1,runflag); continue; end;
// East
if my = y then begin Raw_Move(2,runflag); continue; end;
// Southeast
Raw_Move(3,runflag); continue;
end;
// Southwest
if my < y then begin Raw_Move(5,runflag); continue; end;
// West
if my = y then begin Raw_Move(6,runflag); continue; end;
// Nortwest
Raw_Move(7,runflag); continue;
end;
end;
procedure kill_elemental;
var
ctime : TDateTime;
castvx, castva : Boolean;
c,Vrx,Vry : Integer;
begin
castvx:=false;
castva:=false;
// Search and use Invisible potion
FindTypeEx($0F0E,incol,backpack,false);
if FindCount>0 then
begin
UseObject(FindItem);
end;
// Search and use Vortex Scroll
repeat
FindType(vxcol,Backpack);
if FindCount>0 then
begin
AddToSystemJournal('Кастую вортекса');
repeat
UseObject(FindItem);
WaitForTarget(1000);
If TargetPresent then TargetToTile(1342, GetX(self)+1, GetY(self)+1, GetZ(self));
ctime:=Now;
wait(5000);
FindType(vxcol,backpack);
until (inJournalBetweenTimes('Vortex', ctime, Now)<>-1) or (FindCount = 0);
if (inJournalBetweenTimes('Vortex', ctime, Now)<>-1) then castvx:=true;
end;
// Search Elemental
if castvx = true then
begin
FindDistance:=17;
AddToSystemJournal('Жду пока умрет элементаль');
FindType(element,ground)
Vrx:=GetX(FindItem);
Vry:=GetY(FIndItem);
c:=0;
repeat
c:=c+1;
wait(10000);
FindType(element,ground)
until (FindCount = 0) OR (c = 20);
end;
until (c < 20) or (castvx = false);
// Search and use Vas An Ort Scroll
if castvx = true then
begin
FindType(vacol,backpack);
if FindCount>0 then
begin
AddToSystemJournal('Кастую воз ан орт');
repeat
UseObject(FindItem);
WaitForTarget(1000);
If TargetPresent then TargetToObject(Self);
ctime:=Now;
wait(10000);
FindType(vacol,backpack);
until (inJournalBetweenTimes('fizzles', ctime, Now) = -1) or (FindCount = 0);
if (inJournalBetweenTimes('fizzles', ctime, Now) = -1) then castva:=true;
end;
if castva = true then
begin
GoXY(Vrx,Vry,true);
AddToSystemJournal('Лутаю');
FindType($19B9,ground);
if FindCount > 0 then
begin
grab(FindItem,0);
wait(800)
end;
FindType($19B7,ground);
if FindCount > 0 then
begin
grab(FindItem,0);
wait(800)
end;
FindType($19BA,ground);
if FindCount > 0 then
begin
grab(FindItem,0);
wait(800)
end;
FindType($19B8,ground);
if FindCount > 0 then
begin
grab(FindItem,0);
wait(800)
end;
FindType($0EED,ground);
if FindCount > 0 then
begin
grab(FindItem,0);
wait(800)
end;
GoXY(Cord_x,Cord_y,true);
end;
end;
end;
procedure elemental;
var TimeInterno : TDateTime;
begin
if kill_elem = 1 then
begin
kill_elemental;
wait(1000);
exit;
end;
ClearJournal;
TimeInterno := Now;
Addtosystemjournal('В переще элементаль для продолжение напишите start');
repeat
// UOSay('\w Galiano: Elemental!!!'); // Приватное сообщение помощнику (который прийдет и убьет эля)...
wait(3000);
until (inJournalBetweenTimes('start', TimeInterno, Now) >= 0);
end;
function check_el : Boolean;
begin
Result := false;
FindDistance:=10;
findtype(element,ground);
if FindCount > 0 then
begin
Result := true;
end;
end;
function CheckPickaxe : Boolean;
// Проверяем есть ли кирка и одеваем ее (если необходимо) в правую руку
// возвращаем true - если все ок, false - если нет кирки
// Проверка на то, что в руке у чара не кирка не производится!
var tmpser : Cardinal;
begin
Result := true;
if (ObjAtLayerEx(RhandLayer,self) = 0) then
begin
// ничего в руках нету
tmpser := findtype(Pickaxe1,backpack);
if tmpser = 0 then tmpser := findtype(Pickaxe2,backpack);
if tmpser = 0 then
begin
Result := false;
addtosystemjournal('Нету кирки :((');
exit;
end;
if not equip(RhandLayer,tmpser) then
begin
wait(1000);
if not equip(RhandLayer,tmpser) then
begin
Result := false;
addtosystemjournal('Нету кирки :((');
exit;
end;
end;
wait(500);
checksave;
end;
end;
procedure CheckHide;
begin
if Hidden then exit;
if WarMode = true then SetWarMode(false);
repeat
UseSkill('Hiding');
wait(4500);
checksave;
until Hidden or (not Connected);
end;
function MiningAround : Integer ;
// копаем вокруг чара
// параметр - максимальный вес.
// возвращаем:
// 1 - вокруг чара все вскопано успешно
// 2 - превышен максимальный вес
// 3 - чар под атакой
// 4 - нет кирки
var k, r, x, y : Integer;
var mn1, mn2, mn3, mn4, mn5, mn6, mf1, mw1, ms1 : Integer;
var ctime : TDateTime;
begin
Result := 1;
addtosystemjournal(inttostr(GetX(self)) + ' ' + inttostr(GetY(self)) + ': Начинаем обкопку. Вес чара: ' + inttostr(Weight));
for x := -4 to 4 do
begin
for y := -4 to 4 do
begin
r := 0;
repeat
waitconnection(5000);
if CheckPickaxe = false then
begin
Result := 4;
exit;
end;
CheckHide;
if TargetPresent then CancelTarget;
if WarMode = true then SetWarMode(false);
ctime := Now;
UseObject(ObjAtLayerEx(RhandLayer,self));
WaitForTarget(1000);
If TargetPresent then TargetToTile(1342, GetX(self)+x, GetY(self)+y, GetZ(self));
k := 0;
repeat
wait(100);
k := k + 1;
checksave;
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 > 300);
if check_el = true then
begin
Result := 6
exit;
end;
if Weight > MyMaxWeight then
begin
Result := 2;
exit;
end;
if (mf1<>-1) then
begin
r := r + 1;
if r >= 10 then break
else continue;
end;
if (mw1<>-1) then wait(3000);
until (mn1<>-1) or (mn2<>-1) or (mn3<>-1) or (mn4<>-1) or (mn5<>-1) or (mn6<>-1);
end;
end;
end;
function DischargeSunduk : Boolean;
var
tmpid : Cardinal;
tmpconnect : TDateTime;
begin
addtosystemjournal('Пришли на разгрузку');
Result := true;
waitconnection(3000);
tmpconnect := ConnectedTime;
CheckDead;
if Dead then
begin
Result := false;
exit;
end;
UseObject(Sunduk);
wait(1000);
UseObject(Sunduk_ore);
checksave;
// Переместим руду
repeat
tmpid := Findtype(Ore1,backpack);
if tmpid = 0 then tmpid := Findtype(Ore2,backpack);
if tmpid = 0 then tmpid := Findtype(Ore3,backpack);
if tmpid = 0 then tmpid := Findtype(Ore4,backpack);
if tmpid = 0 then break;
waitconnection(3000);
MoveItem(tmpid,GetQuantity(tmpid),Sunduk_ore,0,0,0);
wait(1000);
CheckSave;
until tmpid = 0;
IgnoreReset;
FindTypeEx($0F0E,Incol,Backpack,false);
if (FindCount = 0) or (CountEx($0F0E,Incol,backpack) <= 2) then
begin
AddToSystemJournal('Добираем инвизки');
FindTypeEx($0F0E,Incol,Sunduk_ore,false);
if FindCount > 0 then
begin
MoveItem(FindItem,5,Backpack,0,0,0);
end;
end;
FindType(vxcol,Backpack);
if (FindCount = 0) or (Count(vxcol) <= 2) then
begin
AddToSystemJournal('Добираем скролы вортексов');
FindType(vxcol,Sunduk_ore);
if FindCount > 0 then
begin
MoveItem(FindItem,5,Backpack,0,0,0);
end;
end;
FindType(vacol,Backpack);
if (FindCount = 0) or (Count(vacol) <= 2) then
begin
AddToSystemJournal('Добираем скролы масс диспел');
FindType(vacol,Sunduk_ore);
if FindCount > 0 then
begin
MoveItem(FindItem,5,Backpack,0,0,0);
end;
end;
addtosystemjournal('Разгрузка закончена');
end;
function GetPickaxe : Boolean;
// Проверяем есть ли кирка и одеваем ее (если необходимо) в правую руку
// возвращаем true - если все ок, false - если нет кирки
// Проверка на то, что в руке у чара не кирка не производится!
var tmpser : Cardinal;
begin
Result := true;
GoXY(Cords_x,Cords_y,true);
useobject(sunduk_ore);
wait(1000);
useobject(Sunduk_pix);
wait(1000);
tmpser := findtype(Pickaxe1,Sunduk_pix);
if tmpser = 0 then tmpser := findtype(Pickaxe2,Sunduk_pix);
tmpser := findtype(Pickaxe1,Sunduk_pix);
if tmpser = 0 then tmpser := findtype(Pickaxe2,Sunduk_pix);
if tmpser = 0 then
begin
Result := false;
addtosystemjournal('Нету кирки в сундуке:((');
end;
grab(Finditem,1);
if not equip(RhandLayer,tmpser) then
begin
wait(1000);
if not equip(RhandLayer,tmpser) then
begin
Result := false;
addtosystemjournal('Нету кирки в сундуке:((');
exit;
end;
end;
wait(500);
checksave;
GoXY(Cord_x,Cord_y,true);
end;
Begin
ScriptStartTime := Now;
HowManyDischarge := 0;
StartFlag := 1;
repeat
// стартуем от сундука
CheckDead;
addtosystemjournal('Вылетаю в шахту');
GoXY(Cord_x,Cord_y,true);
repeat
CheckDead;
if Dead then break;
minret := MiningAround;
CheckDead;
if Dead then break;
if minret = 4 then GetPickaxe;
if minret = 6 then elemental;
until minret = 2;
addtosystemjournal('Пора на разгрузку');
CheckDead;
GoXY(Cords_x,Cords_y,true);
if not Dead then
begin
repeat
WaitConnection(5000);
CheckDead;
if Dead then break;
flag1 := DischargeSunduk;
wait(100);
until flag1 = true;
GoXY(Cord_x,Cord_y,true);
end;
CheckDead;
until false;
End.
Невозможное возможнО!
Скажите пожалуйста, что в действительности написано в процедуре "procedure GoXY" в местах с недоступными пониманию иероглифами в виде "eii?aeiaou, a eioi?ua eaai" например?
Установка ли это дополнительных точек копания в той же шахте, или скрипт окапывает лишь стоя в одной точке вокруг себя?
Как настроить чтобы чар копал не в одной, а в двух точках в вип шахте?
Заранее спасибо.
Установка ли это дополнительных точек копания в той же шахте, или скрипт окапывает лишь стоя в одной точке вокруг себя?
Как настроить чтобы чар копал не в одной, а в двух точках в вип шахте?
Заранее спасибо.
-
- Novice
- Posts: 89
- Joined: 16.06.2008 12:22
- Location: <||TORCHKI||>
- Contact:
Blaze wrote:Скажите пожалуйста, что в действительности написано в процедуре "procedure GoXY" в местах с недоступными пониманию иероглифами в виде "eii?aeiaou, a eioi?ua eaai" например?
Установка ли это дополнительных точек копания в той же шахте, или скрипт окапывает лишь стоя в одной точке вокруг себя?
Как настроить чтобы чар копал не в одной, а в двух точках в вип шахте?
Заранее спасибо.
Code: Select all
procedure GotoXY(x,y,prec : integer; runflag : boolean);
// x,y - координаты, в которые идем
// prec - точность подхода
// runflag - бежать или идти
// v. 1.04 (с) Edred, скрипт портирован с инжекта
// оригинальная версия Yoko с доработкой AGRS и Edred.
var ld, ldc, dx, dy, mx, my : Integer;
begin
ld := 0; ldc := 0;
while true do
begin
CheckSave;
dx := GetX(self) - x; if dx < 0 then dx := 0 - dx;
dy := GetY(self) - y; if dy < 0 then dy := 0 - dy;
if dy > dx then dx := dy;
if dx <= prec then exit;
mx := GetX(self); my := GetY(self);
dx := mx - x; if dx < 0 then dx := 0 - dx;
dy := my - y; if dy < 0 then dy := 0 - dy;
if dy > dx then dx := dy;
if dx <= prec then exit;
if ld = dx then begin
ldc := ldc + 1;
if ldc > 100 then begin addtosystemjournal( 'GotoXY: Cannot reach location!' ); exit; end;
end
else ld := dx;
waitconnection(5000);
if mx = x then begin
if my = y then exit;
// North
if my > y then begin Raw_Move(0,runflag); continue; end;
// South
Raw_Move(4,runflag); continue;
end;
if mx < x then begin
// Northeast
if my > y then begin Raw_Move(1,runflag); continue; end;
// East
if my = y then begin Raw_Move(2,runflag); continue; end;
// Southeast
Raw_Move(3,runflag); continue;
end;
// Southwest
if my < y then begin Raw_Move(5,runflag); continue; end;
// West
if my = y then begin Raw_Move(6,runflag); continue; end;
// Nortwest
Raw_Move(7,runflag); continue;
end;
end;
Спасибо. Хотелось бы ещё узнать у тех кто юзает этот скрипт, при появлении элемов чар в большинстве случаев убивает его нормально? Я копаю уже целый день, и, по моим наблюдениям, в большинстве случаев чару не удаётся убивать элементаля (убил лишь раз).
Подскажите пожалуйста, есть ли какие хитрости в борьбе с элементалями? Как действовать эффективнее всего?
Подскажите пожалуйста, есть ли какие хитрости в борьбе с элементалями? Как действовать эффективнее всего?
-
- Novice
- Posts: 89
- Joined: 16.06.2008 12:22
- Location: <||TORCHKI||>
- Contact:
А что именно в журнале пишется а то без подробностей не скажу в чём дело ) Да и всётаки мне кажется тут чтото с системой килла елема.Blaze wrote:Спасибо. Хотелось бы ещё узнать у тех кто юзает этот скрипт, при появлении элемов чар в большинстве случаев убивает его нормально? Я копаю уже целый день, и, по моим наблюдениям, в большинстве случаев чару не удаётся убивать элементаля (убил лишь раз).
Подскажите пожалуйста, есть ли какие хитрости в борьбе с элементалями? Как действовать эффективнее всего?
Я сам пока лично пускаю елемов на немножко ранней версии, с ней тьфу тьфу тьфу всё в порядке Но у неё нету проверки на вортекса и в случае если елем не здохент с первого вортекса будут проблемы
Last edited by RaTaMaHaTTa on 07.08.2008 17:57, edited 1 time in total.