Page 1 of 2

Простенькая ходилка (только для RC1)

Posted: 30.10.2006 12:42
by Edred
Функция будет работать только начиная с версии стелса 1.00 RC1 (всем качать).

Внимание: При хождении чар периодически будет останавливаться без всяких причин на 1 мин. Это не ошибка скрипта, это фича стелса (то есть уже известная ошибка 8) ). Просто стелс в некоторых невыясненных ситуациях может не поймать ответ сервера на команду перемещения чара, тогда он ждет по таймауту, то есть 1 мин. Это будет (я надеюсь) поправлено в следующих версиях.

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
			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;

Posted: 30.10.2006 17:57
by Lokkie
Спасибо партии родной за ходилку. Попробую сделать лесоруба. :oops: Выложу если получиться...
к ходилке стоит наверно тест на стамину прибавить ;)

Posted: 30.10.2006 19:16
by Edred
В ходилку встраивать тест стамины нет смысла, у меня в скрипте на мининг сделано отдельной процедурой:

Code: Select all

procedure RestoreStamina;
// если стамины мало, восстанавливаем ее чару до полной
begin
	if Stam < 20 then
	begin
		repeat
			waitconnection(3000);
			wait(1000);
		until Stam = MaxStam;
	end;
end;

Posted: 30.10.2006 19:18
by Edred
Кстати, рекомендую обратить внимание на одну важную вещь: эта ходилка устойчива к конлостам! То есть после реконнекта чар спокойно пойдет дальше, ничего не собъется. Подобными свойствами не могут похвастаться большинство ходилок на большинстве макросных программ...

Posted: 31.10.2006 13:18
by SkvidvarD
Молодцы, одним словом! :D :D :D

Posted: 03.11.2006 17:43
by Flash
Как понять что ставить в переменной точность?
Я не пойму? Самое точное 1?
И насчет булевой переменной? Ставить false или true? Верно? :D

Posted: 03.11.2006 18:37
by Flash
И еще, х и у координаты экрана? просто нету не координаты зед ни тайла.

Posted: 03.11.2006 22:01
by Edred
Самое точное - 0. Придет точно в указанные координаты. Поставишь 1 - придет либо в координаты, либо в один из соседних тайлов. И т. д.

Координаты мировые. Какой на хрен экран в стелсе? Откуда ты его взял?

На фига ходилке тип тайла (или его сериал) не мог понять, даже перечитав твой пост 10 раз. Координата Z не принципиальна - чар ведь не летает, куда придет по поверхности (или в данже), такая координата z и будет. Толку тебе ее задавать, чар прыгать и в землю закапываться не умеет...

ЗЫ: Насчет булевой - молодец, наверное, в школе по логике пятерку имел... :shock:

Posted: 04.11.2006 13:35
by SLAK
Edred wrote: наверное, в школе по логике пятерку имел... :shock:
Не гони :) Ну учится ещё человек, не нада с него так гнать :D

Posted: 05.11.2006 12:36
by Lokkie
Уважаемый Eldred,
а не было ли попытки научить ходилку простые препятствия обходить? А то сделал лесоруба, да только он если в дерево уперся пока вектор движения не поменяешь не сдвинется.

На сайте йоко есть пару альтернативных ходилок. Может кто-нибудь их портировал?

Posted: 05.11.2006 14:37
by Edred
Lokkie wrote:а не было ли попытки научить ходилку простые препятствия обходить?
В планах. Дальних. Причем перед этим в планах столько пунктов... Так что скоро не жди.

ЗЫ: Так что придется просто больше поработать. Ты сделал массив деревьев? А тебе надо еще массив точек, в которых должен стоять чар перед этими деревьями, да перемещаться чар между этими точками должен по прямой (либо прописывать еще точки изменения направления движения). В тех же моих планах, гораздо ближе к началу, написать скрипт для инжи на автоматическую разметку маршрута... Я такие уже писал раньше, надо порыться и переправить. Идея простая: записываются точки, в которых чар меняет направление "взгляда". Ну и точки, в которых он пытается что-то рубить или копать. К последним добавляются координаты куда он тыркает топором/киркой плюс тип статики/тайла. Тогда массив будет (естественно, в файл) будет разметить очень просто - один раз пройти по лесу и по разу тыркнуть топором в каждое рубимое дерево.

ЗЫ: Когда найду время написать - выложу. Здесь, а не на форуме инжи.

Posted: 11.11.2006 15:02
by Diego
Lokkie wrote:Спасибо партии родной за ходилку. Попробую сделать лесоруба. :oops: Выложу если получиться...
к ходилке стоит наверно тест на стамину прибавить ;)
А кто то обещал сделать лесоруба... Ждём... )

Posted: 11.11.2006 16:02
by *13*
Diego wrote:
Lokkie wrote:Спасибо партии родной за ходилку. Попробую сделать лесоруба. :oops: Выложу если получиться...
к ходилке стоит наверно тест на стамину прибавить ;)
А кто то обещал сделать лесоруба... Ждём... )
а самому слабо написать, а не сидеть на форуме как последний нюб, просить "подправить" скрипты и ждать пока ктото чтото там напишет? ненавижу такой тип людей с храническим лентяйством. " не умею писать на паскале " не канает, я тоже когда вышла первая версия стелса, не умел. и научился.
хотя у нас основная масса фофовцев именно таких, как ты...

Posted: 12.11.2006 8:24
by Diego
*13* wrote:
Diego wrote:
Lokkie wrote:Спасибо партии родной за ходилку. Попробую сделать лесоруба. :oops: Выложу если получиться...
к ходилке стоит наверно тест на стамину прибавить ;)
А кто то обещал сделать лесоруба... Ждём... )
а самому слабо написать, а не сидеть на форуме как последний нюб, просить "подправить" скрипты и ждать пока ктото чтото там напишет? ненавижу такой тип людей с храническим лентяйством. " не умею писать на паскале " не канает, я тоже когда вышла первая версия стелса, не умел. и научился.
хотя у нас основная масса фофовцев именно таких, как ты...
я может простенькие скрипты и могу написать... или что то изменить...
сложные... это ещё для меня сильно сложно... так что не надо...

Posted: 12.11.2006 10:38
by Lokkie
Diego wrote: А кто то обещал сделать лесоруба... Ждём... )
выложил