Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

таргей

тут можно задать вопрос по скриптингу
Post Reply
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

таргей

Post by roma777 »

можно ли как-то кликнуть таргетом по относительным координатам?
alpi
Novice
Novice
Posts: 51
Joined: 02.07.2009 17:37
Contact:

Re: таргей

Post by alpi »

что такое относительные координаты?
just student
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

Re: таргей

Post by roma777 »

alpi wrote:что такое относительные координаты?
ну в разоре есть такое. допустим чар это (0,0), а точка (4,4) это +4 по (х) и +4 по (y) тайл относительно чара.
я делаю скрипт на ламбер с реколом. руны у меня замарчены в места, где вокруг чара 4 дерева которые он может рубить с точки рекола. я пытался сделать через targettotile(0,getx()-2,gety()+2,getz()), но так не выходит. нужен номер тайла обязательно. а я покачто не могу въехать как сделать перебор номеров тайлов.
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: таргей

Post by nepopus »

roma777 wrote:
alpi wrote:что такое относительные координаты?
ну в разоре есть такое. допустим чар это (0,0), а точка (4,4) это +4 по (х) и +4 по (y) тайл относительно чара.
я делаю скрипт на ламбер с реколом. руны у меня замарчены в места, где вокруг чара 4 дерева которые он может рубить с точки рекола. я пытался сделать через targettotile(0,getx()-2,gety()+2,getz()), но так не выходит. нужен номер тайла обязательно. а я покачто не могу въехать как сделать перебор номеров тайлов.

Code: Select all

WaitTargetXYZ(getx(self)+4, gety(self)+4, getz(self));
Или же по вашему примеру:

Code: Select all

TargetToXYZ(getx(self)+4, gety(self)+4, getz(self));
<( o_O<) <( O_O )> (>O_o )>
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

Re: таргей

Post by roma777 »

вот такой скрипт для теста сделал:

Code: Select all

Program New;
var x,y,z : Integer;
begin
x := getx(self);
y := gety(self);
z := getz(self);
useobject($40CDB8F1)
wait(500)
TargetToXYZ(x-2,y+1,z);
wait(2000)
useobject($40CDB8F1)
wait(500)
TargetToXYZ(x-2,y-2,z);
wait(2000)
useobject($40CDB8F1)
wait(500)
TargetToXYZ(x+2,y-2,z);
wait(2000)
useobject($40CDB8F1)
wait(500)
TargetToXYZ(x+2,y+1,z);
wait(2000)
end.
не хочет рубить через tagettoxyz, пишет You can't use an axe on that.
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: таргей

Post by nepopus »

roma777 wrote:вот такой скрипт для теста сделал:

Code: Select all

Program New;
var x,y,z : Integer;
begin
x := getx(self);
y := gety(self);
z := getz(self);
useobject($40CDB8F1)
wait(500)
TargetToXYZ(x-2,y+1,z);
wait(2000)
useobject($40CDB8F1)
wait(500)
TargetToXYZ(x-2,y-2,z);
wait(2000)
useobject($40CDB8F1)
wait(500)
TargetToXYZ(x+2,y-2,z);
wait(2000)
useobject($40CDB8F1)
wait(500)
TargetToXYZ(x+2,y+1,z);
wait(2000)
end.
не хочет рубить через tagettoxyz, пишет You can't use an axe on that.
Могу предположить самое страшное, что нельзя использовать топор на этом предмете. : )
Посоветую лишь, во избежание глюков, вставить

Code: Select all

if TargetPresent then
  CancelTarget;
для отмены существующего таргета.
И, если вы по каким то причинам вы не хотите использовать WaitTargetXYZ, вставлять

Code: Select all

WaitForTarget;
для ожидания таргета.
<( o_O<) <( O_O )> (>O_o )>
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

Re: таргей

Post by roma777 »

вот инфотайл деревьев и места где я стою

Code: Select all

Tile: 3283   X: 2092   Y: 2115   Z: 0 - дерево1
Tile: 3392   X: 2092   Y: 2113   Z: 0 - дерево2
Tile: 3280   X: 2096   Y: 2112   Z: 0 - дерево3
Tile: 3299   X: 2096   Y: 2115   Z: 0 - дерево4
Tile: 605   X: 2094   Y: 2114   Z: 0 - я
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: таргей

Post by nepopus »

roma777 wrote:вот инфотайл деревьев и места где я стою

Code: Select all

Tile: 3283   X: 2092   Y: 2115   Z: 0 - дерево1
Tile: 3392   X: 2092   Y: 2113   Z: 0 - дерево2
Tile: 3280   X: 2096   Y: 2112   Z: 0 - дерево3
Tile: 3299   X: 2096   Y: 2115   Z: 0 - дерево4
Tile: 605   X: 2094   Y: 2114   Z: 0 - я
А, ну правильно. Деревья рубятся только по тайлам. Сори я до конца не разобрался, прочитал первое сообщение)
Самое простое решение - использовать самый часто встрчающийся тип тайла, т.к. их дохрена.
Либо я могу подогнать макрос написанный своими потом и кровью. Ну договориться мона : )
<( o_O<) <( O_O )> (>O_o )>
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

Re: таргей

Post by roma777 »

я выкрутился так:

Code: Select all

Program New;
var TArray : array [0..3] of integer;
    i,a,b : integer;
begin
   TArray[0] := 3283;
   TArray[1] := 3288;
   TArray[2] := 3293;
   TArray[3] := 3302;
for i := 0 to 3 do
begin
if i = 0 then
begin
   a := -2
   b := 1
end;
if i = 1 then
begin
   a := -2
   b := -2
end;
if i = 2 then
begin
   a := 2
   b := -2
end;
if i = 3 then
begin
   a := 2
   b := 1
end;
repeat
AddToSystemJournal('рубим дерево ' + IntToStr(i));
WaitTargettile(TArray[i],getx(self)+a,gety(self)+b,getz(self));
useobject($40CDB8F1);
WaitJournalLine(now,'harvest.|wood.|backpack!|backpack.',5000);
wait(500);
until (InJournal('harvest.')<>-1)
ClearJournal
AddToSystemJournal('срубили дерево ' + IntToStr(i));
end;
end.
скажите а есть предел длинны масива?
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: таргей

Post by nepopus »

roma777 wrote:я выкрутился так:

Code: Select all

Program New;
var TArray : array [0..3] of integer;
    i,a,b : integer;
begin
   TArray[0] := 3283;
   TArray[1] := 3288;
   TArray[2] := 3293;
   TArray[3] := 3302;
for i := 0 to 3 do
begin
if i = 0 then
begin
   a := -2
   b := 1
end;
if i = 1 then
begin
   a := -2
   b := -2
end;
if i = 2 then
begin
   a := 2
   b := -2
end;
if i = 3 then
begin
   a := 2
   b := 1
end;
repeat
AddToSystemJournal('рубим дерево ' + IntToStr(i));
WaitTargettile(TArray[i],getx(self)+a,gety(self)+b,getz(self));
useobject($40CDB8F1);
WaitJournalLine(now,'harvest.|wood.|backpack!|backpack.',5000);
wait(500);
until (InJournal('harvest.')<>-1)
ClearJournal
AddToSystemJournal('срубили дерево ' + IntToStr(i));
end;
end.
скажите а есть предел длинны масива?
Можно просто вручную прописать каждое дерево:

Code: Select all

var
  i: integer;
  trees: array of array of word;

begin
  setlength(trees, 4);
  trees[0] := {тип1, кордаХ1, кордаУ1};
  trees[1] := {тип2, кордаХ2, кордаУ2};
  trees[2] := {тип3, кордаХ3, кордаУ3};
  trees[3] := {тип4, кордаХ4, кордаУ4};

  while NOT dead do
    for i := 0 to high(trees) do
      .....
end.
<( o_O<) <( O_O )> (>O_o )>
alpi
Novice
Novice
Posts: 51
Joined: 02.07.2009 17:37
Contact:

Re: таргей

Post by alpi »

http://stealth.od.ua/forum/viewtopic.ph ... lit=lamber
этот скрипт видели? чем не устраивает?
есть еще с автопоиском: http://stealth.od.ua/forum/viewtopic.ph ... 0%B5%D1%80

себе скоро буду на ламбер делать тоже, интересно, какой подход лучше?
just student
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: таргей

Post by Vizit0r »

тот, который тебе удобнее.
есть ситуации, когда жестко прописанный маршрут с деревьями.
А в общем случае скрипт с автопоиском проще и удобнее.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
admir
Novice
Novice
Posts: 97
Joined: 28.10.2008 20:44

Re: таргей

Post by admir »

А если в месте рекола в радиусе 3х(4х?) тайлов сделать поиск деревьев ( диапазон типов дерева) и по каждому найденому топором шмакать?
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: таргей

Post by nepopus »

admir wrote:А если в месте рекола в радиусе 3х(4х?) тайлов сделать поиск деревьев ( диапазон типов дерева) и по каждому найденому топором шмакать?
Если человек сможет сделать поиск деревьев по диапазону типов тайлов на нужный радиус, то там не так далеко до ходилки, а то и до сортировки.
<( o_O<) <( O_O )> (>O_o )>
Post Reply