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

А проблем с определением координат ни у кого не возникало?

тут можно задать вопрос по скриптингу
Post Reply
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

А проблем с определением координат ни у кого не возникало?

Post by grundick »

Качал резист, бегая голыми пятками по фаерфильду и обратил внимание, что в стелсе координаты определяются с ошибкой +-1 тайл.Спасал только постоянный ресинк.Теперь в скрипте на мининг с кучкой маршрутов изза этого возникают проблемы в узких проходах.То есть частенько залезает куда не нужно.Ставить ресинк на каждом шагу не очень хочется... Кто что думает по этому поводу?
Acronym
Novice
Novice
Posts: 114
Joined: 10.05.2005 18:42
Location: Odessa, NDW
Contact:

Post by Acronym »

"в стелсе координаты определяются с ошибкой" - координаты чего то или просто координаты?

По поводу маршрута- raw_move это все таки временная замена. Пересмотри маршруты которые используешь на кривизну пути, может имеет смысл разбить несколько кривых на прямые отрезки, чтобы чар не застревал.

Ты кидаешь ФФилд, проверку на то как он лёг делаешь и если да, то корректно ли?
aka Trickster [YGG]
current version: 1.0 [RC3]
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

Координаты чара ,естественно.ФФ кидаю на тайл, находящийся в строго заданных относительно кастующего координатах.Наблюдая за процессом, заметил ,что чар часто начинает бегать параллельно ФФ,причем то с одной, то с другой стороны.Стал смотреть координаты на закладке Main.И понял, что в таких ситуациях отображаются они неверно.Пока ресинк не сделашь...
Acronym
Novice
Novice
Posts: 114
Joined: 10.05.2005 18:42
Location: Odessa, NDW
Contact:

Post by Acronym »

У тебя чар который бегает:
а)не тот же самый который кидает каст, иными словами 2 чара используются в скрипте?
б)бегает по заданным изначально координатам рядом с которыми кидается ФФ или по координатам около ФФ, котоые он вычисляет исходя из положения ФФ?
в)глупый вопрос - местность конечно ровная?

PS: что такое "ресинк"?
aka Trickster [YGG]
current version: 1.0 [RC3]
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

Вообщем так.Запускаю чара, который кастует ФФ. ФФ он кастует в соответсвии со своими кординатами.Он в глобалку кидает свои координаты. Запускаю чара, который бегает по ФФ. Он читает координаты, соответствующим образом обрабатывает.Определяет две точки, между которыми он и бегает. В общем то проблема возникала не только в этой ситуации, проблема возникает и при хождении по маршрутам в скрипте на мининг.Тоже часто слетает на +-1-2 тайла с маршрута...
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Проверяй свои скрипты. Потому что у меня никогда ничего не слетало. А так, как это описал ты, слетать просто не может физически. Потому что координаты чара определяет не стелс - их присылает шард. А шард не может ошибаться +-1 тайл. Если только не какой-нибудь кривой, написанный безграмотным скриптером на коленке...
Chepka
Neophyte
Neophyte
Posts: 40
Joined: 04.12.2005 23:19
Contact:

Post by Chepka »

кажись видел гдето на форуме что в ходилке можно выставлять точность, скорее всего там стоит единица тоесть +-1 тайл, а надо поставить 0
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

Edred wrote:Проверяй свои скрипты. Потому что у меня никогда ничего не слетало. А так, как это описал ты, слетать просто не может физически. Потому что координаты чара определяет не стелс - их присылает шард. А шард не может ошибаться +-1 тайл. Если только не какой-нибудь кривой, написанный безграмотным скриптером на коленке...
Возможно и изза шарда...Бывали чудеса ,когда минер реколился от ПК, выжидал дома 20 мин., реколился обратно и находил того же ПК.(Хотя на самом деле его и след простыл).Или ревилишь чара, от которого успеваешь на два-три экрана отбежать...
Скрипт то простейший. Чар бегает по клеткам вдоль оси Х.Y фиксированно.Я знаю чему равно Y, и стелс показывает это значение.Тем не менее чар может бегать и "справа", и "слева" от этого Y.
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Как правильно уже заметил Chepka, ты для хождения что используешь? Мной написанную функцию GotoXY? А как выглядит ее вызов из скрипта?

Code: Select all

GotoXY(111,222,1,true);
Так, нет? Просто напоминаю - третий параметр - точность подхода к точке.

Code: Select all

procedure GotoXY(x,y,prec : integer; runflag : boolean);
// x,y - координаты, в которые идем
// prec - точность подхода
// runflag - бежать или идти
ЗЫ: Сослаться, что мол, шард кривой или стелс неправильно работает - это проще всего. Гораздо труднее понять, что в 99% случаев виноват кривой скрипт. Так что скрипты в студию.
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

Как скажешь, белый хозяин...

Code: Select all

Program Resist;

  {$Include 'GotoXY.inc'}
  {$Include 'all.inc'}

Var
   xxMage,yyMage: integer;
   x0,x1,x2,y: integer;
Const
   Gloves=$13C6;

Procedure InitCoord;
Begin
repeat
AddToSystemJournal('Считываем координаты мага ...');
xxMage:=myStrToInt(GetGlobal('stealth','xMage'));
yyMage:=myStrToInt(GetGlobal('stealth','yMage'));
Wait(2000);
until ((xxMage<>-666) AND (yyMage<>-666));
AddToSystemJournal('Координаты мага инициализированы. X='+IntToStr(xxMage)+', Y='+IntToStr(yyMage));
x0:=xxMage-2;
x1:=xxMage;
x2:=xxMage+2;
y:=yyMage+3;
end;

Procedure CheckSkill;
Begin
If GetSkillValue('Magic Resistance')>=100 then
    begin
    GotoXY(xxMage,yyMage+2,0,false);
    SetGlobal('stealth','TargetStatus','STOP');
    FullllDisconnect;
    raiseException(erCustomError,'Скилл достиг максимума!');
    end;
End;

Procedure CheckHealth;
Begin
If Life<80 then 
   begin
   AddToSystemJournal('Со здоровьем совсем хреновенько! Выходим из огня! ');
   GotoXY(xxMage,yyMage+2,0,false);
   While (Life<>STR) do Wait(500);
   end;
end;


BEGIN
WaitConnection(3000);
SetARStatus(true);
InitCoord;
SetGlobal('stealth','ResistTargetID',IntToStr(self));
SetGlobal('stealth','TargetStatus','Ready');
While Not Dead do
    begin
    If Connected then 
        begin
	CheckSkill;
	PutTheGloves;
	UOSay('.resync');
        Wait(300);
	
	CheckHealth;
	GotoXY(x0,y,0,false);
        
	CheckHealth;
	GotoXY(x1,y,0,false);
	
	CheckHealth;
	GotoXY(x2,y,0,false);
	end
    Else 
        Wait(3000);
    end;
If Dead then 
   begin
   AddToSystemJournal('Я  ПОДОХЛА!!');
   PlayWav('death2.wav');
   Exit;
   end;
END.

Ребят, я прекрасно понимаю как пользоваться вашими функциями.Кстати, в ходилке СамБоди расстояние между точками рассчитывается неверно.Кв Корень не катит...
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Ну, я, конечно, сделал бы не так, но неважно. Ошибок не вижу. Правда, я не вижу и скрипта, который кастует фаерфилд в координату yyMage+3. Плюс есть еще какая-то PutTheGloves, но она явно не влияет. Перчатки чар что ли какие надевает? :lol: По названию похоже...

Кидай скрипт второго чара на каст. А вообще, если нет ошибок, подумай об обходном маневре. Легко ведь можно вычислить, попал чар в стенку или нет. Если, как у тебя получается, он ошибся на 1 линию, ну что ж, засекаем здоровье, пробегаемся, если здоровье не изменилось - надо попробовать сдвинуться по оси Y... Сначала в одну сторону, потом в другую... И все ок, чар будет сам подстраиваться под огненную стенку...

А вообще, встрой "доходилку". Если обратишь внимание на мои мининг и ламбер, там подобная штука встроена когда чар приходит на разгрузку. То есть после перехода в какую-то координату дополнительно проверяется (причем в цикле), дошел ли чар на самом деле до этой координаты. Если нет - повтор перемещения. Потому как просто элементарно не дойти чар может легко. Как раз обычно на одну-две клетки. Слишком уж несовершенны raw_move, ну что с ними сделаешь, временные функции всего лишь.
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

Да, одевает перчатки когда скилл достигает 30%.Иначе скилл не растет.Перчатки дают +к резисту, потом он их снимает.Вырезал, это роли не играет.Вот кастер:

Code: Select all

program Resist_Mage;

{$Include 'all.inc'}

Const
   ReagsChest=$40028EC0;
   FFType=$3996;

   
Procedure CastFF;

Var
   STime: TDateTime;
Begin
FindType(FFType,ground);
AddToSystemJournal(IntToStr(FindCount)+' FireField tiles found');
UOSay('.resync');
Wait(700);
If FindCount<6 then
   Repeat
       STime:=Now;
       IF Mana<20 then Exit;
       Cast('Fire Field');
       WaitTargetTile(400,GetX(self),GetY(self)+3,GetZ(self));
       Wait(5000);
   Until (InJournalBetweenTimes('Заклинание не удалось!',STime,Now)=-1);
End;

Procedure CoordInit;
Begin
UOSay('.resync');
Wait(700);
SetGlobal('stealth','xMage',IntToStr(GetX(self)));
SetGlobal('stealth','yMage',IntToStr(GetY(self)));
End;

Procedure meditation;
VAR
STime:TDateTime;

Begin
repeat
  //AddToSystemJournal('Медитируем...') ;
  STime:=Now;
  SetWarMode(false);
  UseSkill('Meditation')
  wait(1500);
  WaitJournalLine(STime,'at peace.|прервана',60000); 
  If (InJournalBetweenTimes('прервана',STime,Now)<>-1) then Wait(500);
until (InJournalBetweenTimes('at peace',STime,Now)<>-1);   
end;

BEGIN
SetARStatus(true);
WaitConnection(2000);
FindDistance:=8;
FindVertical:=8;
CoordInit;

While Not Dead do
    begin
    If Connected then
        begin
	If (GetGlobal('stealth','TargetStatus')='STOP') then
	    begin
	    FullllDisconnect;
            raiseException(erCustomError,'Резист прокачан!');
	    end;
	LoadItem(BP,$FFFF,ReagsChest,40,10);
	LoadItem(SS,$FFFF,ReagsChest,40,10);
	LoadItem(SA,$FFFF,ReagsChest,40,10);
	CastFF;
	Meditation;
	Wait(100000); 
	end
    Else 
        Wait(30000);

    end;
END.
Вообще ситуацию я спасаю ресинками.Просто и доступно:)
Блин, почему тут отступы неверно отображаются?
А равмув я обвинить не могу.Я знаю значение координаты У, на закладке main отображается именно оно.Но бегает чар по соседним У.То есть равмув тут ни причем.Делаешь ресинк, маршрут выправляется...Пробегает пару "кругов"- и опять сбивается.
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

И всё таки он глючит... Что ИЗЯ, что инжект показывают вернуюю координату!!! Стелс же ошибаеться на плис-минус единицу!!! Просто делаю реконект и стелс начинает правильно показывать её.
У фаерфильда Y=2000. Конекчюсь... Показывает Y=1999. Запускаю скрипт, чар делает один шаг, а стелсе координата Y оказывается равной 2001! За один шаг она увеличилась на две единицы! Чар из огня выскакивает на один тайл, теперь Y чара равно 2000... Делаю реконект, Y опять равно 1999.
ПС: ресинк отрубили ,суки...
omi4
Neophyte
Neophyte
Posts: 28
Joined: 19.03.2008 17:28

Post by omi4 »

Ошибка действительно есть!!! И не только в Стелсе, Инжа тем же страдает. Ходилка это ух как не просто.
Vladimirus
Neophyte
Neophyte
Posts: 17
Joined: 12.11.2006 10:07
Contact:

Post by Vladimirus »

в инжекте спасает ,resend
в стелзе кроме как реконекта -выхода не нашел
еще интересное обновление координаты- z на лодке -2, он сходит с лодки, и z остается -2, хотя на самом деле у него она изменяется.
а самый ужасначинается при пробежках по пересеченной местности, скажем, по песчаным барханам- очень часто высота меняется и становится оч тяжело копать - в оригинале таргет кидался на мировые координаты + GetZ(self) -пишет что не может, т.к. точка не достежима - потому как копает где себя видит.а не там где на самом деле стоит...
Post Reply