Page 1 of 1

Проблема с тайлами

Posted: 30.05.2011 21:59
by Scripts Writer
Хоть убейте, не могу грязные бинты в воде (луже/море) помыть с помощью стелса.
Перепробовал WaitTargetTile, WaitTargetXYZ, TargetToTile, TargetToXYZ.

Выскакивает таргет и ничего не происходит.
Пробую с работающим клиентом.

Posted: 30.05.2011 22:42
by Scripts Writer
,infotile на воду показывает одни координаты
используя бинт и после этого ,infotile lasttile другие
но обе не работают ни в какой из команд перечисленных выше.
мозг оф.

Posted: 31.05.2011 7:38
by Fenix
Вот для примера метод добычи в указанных координатах:

Code: Select all

procedure Mine(X, Y: Integer); 
 var 
   StaticData: TStaticCell; 
   Tile: Word; 
   Z: ShortInt; 
   Finded: Boolean; 
   Counter: Byte; 
   StartTime: TDateTime; 
   i: Integer; 
 begin 
   Finded := False; 
   StaticData := ReadStaticsXY(X, Y, WorldNum); 
   for i := 0 to StaticData.StaticCount - 1 do begin 
     if i >= StaticData.StaticCount then Break; 
     if (GetTileFlags(2, StaticData.Statics[i].Tile) and $200) = $200 then begin 
       Tile := StaticData.Statics[i].Tile; 
       Z := StaticData.Statics[i].Z; 
       Finded := True; 
       Break; 
     end; 
   end; 
   
   CheckState(); 
   while Finded do begin 
     if Dead or not Connected then Exit; 
     if TargetPresent then CancelTarget; 
     while not CheckMiningTool do begin 
       if Dead or not Connected then Exit; 
       CreateMiningTools; 
     end; 
     CheckLag(LagWait); 
     Wait(WaitTime); 
     UseObject(MiningTool); 
     CheckLag(LagWait); 
     WaitForTarget(WaitTime); 
     if TargetPresent then begin 
       StartTime := Now; 
       TargetToTile(Tile, X, Y, Z); 
       Counter := WaitCycles; 
       Finded := False; 
       while (not Finded) and (Counter > 0) do begin 
         CheckLag(LagWait); 
         if InJournalBetweenTimes('t mine there|is too far away|cannot be seen|is no metal here to mine', StartTime, Now) > 0 then Exit; 
         if InJournalBetweenTimes('put it in your backpack|loosen some rocks but fail to find any useable ore|have worn out your tool', StartTime, Now) > 0 then Finded := True; 
         if Not Finded then Wait(200); 
         Dec(Counter); 
       end; 
       CheckState(); 
     end; 
   end;    
 end;
Этот метод великолептно работал на версии 3.0, а вместе с ним и TargetToTile.

Posted: 31.05.2011 10:16
by Scripts Writer
Fenix wrote:Вот для примера метод добычи в указанных координатах:

Code: Select all

procedure Mine(X, Y: Integer); 
 var 
   StaticData: TStaticCell; 
   Tile: Word; 
   Z: ShortInt; 
   Finded: Boolean; 
   Counter: Byte; 
   StartTime: TDateTime; 
   i: Integer; 
 begin 
   Finded := False; 
   StaticData := ReadStaticsXY(X, Y, WorldNum); 
   for i := 0 to StaticData.StaticCount - 1 do begin 
     if i >= StaticData.StaticCount then Break; 
     if (GetTileFlags(2, StaticData.Statics[i].Tile) and $200) = $200 then begin 
       Tile := StaticData.Statics[i].Tile; 
       Z := StaticData.Statics[i].Z; 
       Finded := True; 
       Break; 
     end; 
   end; 
   
   CheckState(); 
   while Finded do begin 
     if Dead or not Connected then Exit; 
     if TargetPresent then CancelTarget; 
     while not CheckMiningTool do begin 
       if Dead or not Connected then Exit; 
       CreateMiningTools; 
     end; 
     CheckLag(LagWait); 
     Wait(WaitTime); 
     UseObject(MiningTool); 
     CheckLag(LagWait); 
     WaitForTarget(WaitTime); 
     if TargetPresent then begin 
       StartTime := Now; 
       TargetToTile(Tile, X, Y, Z); 
       Counter := WaitCycles; 
       Finded := False; 
       while (not Finded) and (Counter > 0) do begin 
         CheckLag(LagWait); 
         if InJournalBetweenTimes('t mine there|is too far away|cannot be seen|is no metal here to mine', StartTime, Now) > 0 then Exit; 
         if InJournalBetweenTimes('put it in your backpack|loosen some rocks but fail to find any useable ore|have worn out your tool', StartTime, Now) > 0 then Finded := True; 
         if Not Finded then Wait(200); 
         Dec(Counter); 
       end; 
       CheckState(); 
     end; 
   end;    
 end;
Этот метод великолептно работал на версии 3.0, а вместе с ним и TargetToTile.
Да, я перепробовал множество вариаций клика по тайлу из многих скриптов, от мининга, фишинга, ламбера, суммона и пр. но не помогло.

Вопрос не в том, как у Вас это работает в Ваших скриптах, а как с открытым клиентом помыть бинты в воде- только проверенные собственными руками варианты, т.к. в теории всё на самом деле прекрасно работает, а на практике.

Posted: 31.05.2011 14:36
by Fenix
Ну так для практики неплохо было бы получить, как минимум, информацию по серверу, на котором пытаетесь такое реализовать (а как максимум - аккаунт для тестирования).
Кстати, не вижу особой разницы между мойкой бинтов с открытым клиентом и с закрытым.
К тому же вы утверждаете, что скрипты которые вы просматривали, якобы, не работают на практике. А вот конкретно ваш скрипт я так и не увидел.

Posted: 31.05.2011 18:28
by Vizit0r
пакеты бы хорошо увидеть, иначе это все гадание на кофе.

подключиться клиентом к стелсу.
удалить пакетный лог стелса.
сделать операцию клиентом (правильные пакеты), в свежесозданном логе найти пакет 0x6С, скинуть его сюда.
сказать, какие параметры пихал в WaitTargetTile.

Posted: 31.05.2011 19:28
by Scripts Writer

Code: Select all

21:24:25:591: GLHF, Server -> Client: 0x6C, len: 19
0000: 6C 00 00 00 01 ED 00 00 00 00 00 00 00 00 00 00         l...............
0010: 00 00 00                                                ...


21:24:25:591: GLHF, Client -> Server: 0x6C, len: 19
0000: 6C 00 00 00 01 ED 00 40 05 29 7C 14 A1 0B DB 00         l......@.)|.....
0010: 00 0B 44    

Code: Select all

21:24:25:733: GLHF, Server -> Client: 0x6C, len: 19
0000: 6C 00 00 00 01 ED 00 00 00 00 00 00 00 00 00 00         l...............
0010: 00 00 00                                                ...

Code: Select all

21:24:26:866: GLHF, Client -> Server: 0x6C, len: 19
0000: 6C 00 00 00 01 ED 00 00 04 79 9F 14 AE 0B D1 00         l........y......
0010: 00 01 90                                                ...

Code: Select all

21:24:30:426: GLHF, Server -> Client: 0x6C, len: 19
0000: 6C 00 00 00 01 ED 00 00 00 00 00 00 00 00 00 00         l...............
0010: 00 00 00                                                ...

Code: Select all

21:24:30:854: GLHF, Client -> Server: 0x6C, len: 19
0000: 6C 00 00 00 01 ED 00 00 04 79 9F 14 AE 0B D1 00         l........y......
0010: 00 01 90                                                ...

Code: Select all

21:24:37:033: GLHF, Server -> Client: 0x6C, len: 19
0000: 6C 00 00 00 01 ED 00 00 00 00 00 00 00 00 00 00         l...............
0010: 00 00 00                                                ...


21:24:38:172: GLHF, Client -> Server: 0x6C, len: 19
0000: 6C 00 00 00 01 ED 00 40 02 5C 8E 14 B0 0B D1 00         l......@.\......
0010: 00 17 97                                                ...

Posted: 01.06.2011 7:46
by Vizit0r
вот я подозревал такую фигню. еще хотел спросить, но подумать что это совсем уж явно, не будет человек такое делать.

с каких пор лоханка с водой (water through) стала ВОДОЙ? ты ж не с берега в море моешь свои бинты.тайлы тут вообще ни при чем , это самый что ни на есть обьект.

все элементарно просто - WaitTargetObject($00400529) если я правильно разглядел айди корыта с водой.

Posted: 01.06.2011 9:54
by Scripts Writer
Если ты подозревал такое, то я виноват.

Image

За то долгое время, которое играю, никогда такого не видел, либо не замечал- вода объектом. Примечательно, что в других местах такая же вода является тайлом.

Posted: 01.06.2011 11:09
by Alex
Визитор умеет читать матрицу :)

Posted: 01.06.2011 12:53
by MuDaCk
Незнаю как у вас, но у меня лужи объектом не считаются. Пишет - инкорект трали-вали. :wink:

Posted: 01.06.2011 15:38
by Fenix
Вполне возможно, что вода в некоторых случаях может выступать либо как объект, либо как статика, либо как тайл карты.

Posted: 01.06.2011 16:40
by Vizit0r
Scripts Writer wrote:Если ты подозревал такое, то я виноват.

Image

За то долгое время, которое играю, никогда такого не видел, либо не замечал- вода объектом. Примечательно, что в других местах такая же вода является тайлом.
оригинальное оформление. в таком виде да, фиг поймешь.

у меня на шарде (в далекие времена, когда я еще играл) эти "куски воды" можно было сделать и поставить в доме - мыть бинты, и прочее.