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

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

Only working scripts
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

ЗАПИСЬ МАРШРУТА НА ИНЖЕКТЕ
(для последующего использования в стелсе)

В данной версии:
1. маршрут пишется в текстовое окно, а не файл.
2. Если чар пришел к дереву и повернулся, а потом начал рубить - данная точка запишется в маршрут дважды: сначала с нулями на конце, потом с типом и координатами тайлов. Для ходилок это несущественно, хотя можно и удалить (пока только вручную)
3. Сериал чара, сказавшего Finish, не проверяется.

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

Code: Select all

sub MarkRail()
; ====================================================
; ВНИМАНИЕ! Это скрипт для инжекта, а не для стелса!!!
; ====================================================
; Скрипт разметки маршрута передвижения чара и копки/рубки
; Создает файл со строками вида:
; X Y TileType TileX TileY TileZ
; где: X, Y - координаты чара в узловой точке
;      TileType   - тип цели. То есть тип тайла или статики,
;                   которую либо рубим/либо копаем
;      TileX, TileY, TileZ - координаты цели
; Узловые точки могут быть двух видов - либо тут копаем/рубим,
; либо тут чар должен повернуть при передвижении. Если второе, то
; последние четыре параметра равны 0. Учитывайте это в своих скриптах.
; 
; Как работает? Записываются начальные координаты с нулями в четырех последних
; параметрах, запоминается направление взгляда чара, чистится журнал.
; Потом каждые 50 мс проверяются: не изменилось ли направление взгляда чара, не
; появилось ли сообщение в журнале о копке/рубке. Если одно из условий выполнено,
; то в файл записывается строка с текущими данными чара. То есть, если чар повернул,
; но копка/рубка не началась - пишется строка с четырьмя нулями в конце, если есть
; сообщение - пишутся координаты ласттайла и тип из-под него.
; Скрипт прекращает работу при появлении в журнале слова Finish, произнесенного
; данным чаром (проверяется по сериалу строки журнала).
;
; v.1.01b (с) Edred
;
; В данной версии данные пишутся в текстовое окно, а не файл.
; Также не проверяется сериал чара, сказавшего Finish.
;
	VAR msg1 = 'You put the'
	VAR msg2 = 'There is nothing'
	VAR msgf = 'Finish'
	VAR cx1, cy1, cdir1, tx1, ty1, tz1, ttyp1, oldx, oldy
	UO.TextOpen()
	UO.TextClear()
	cx1 = UO.GetX()
	cy1 = UO.GetY()
	cdir1 = UO.GetDir()
	UO.TextPrint(str(cx1) + ' ' + str(cy1) + ' ' + '0 0 0 0')
	oldx = cx1
	oldy = cy1
	repeat
		UO.DeleteJournal()
		repeat
			wait(50)
		until UO.InJournal(msg1) OR UO.InJournal(msg2) OR UO.InJournal(msgf) OR UO.GetDir() <> cdir1
		if UO.InJournal(msgf) then
			return
		endif
		If UO.InJournal(msg1) OR UO.InJournal(msg2) Then
			cx1 = UO.GetX()
			cy1 = UO.GetY()
			ttyp1 = UO.LastTile( 0 )
			tx1 = UO.LastTile( 1 )
			ty1 = UO.LastTile( 2 )
			tz1 = UO.LastTile( 3 )
			UO.TextPrint(str(cx1) + ' ' + str(cy1) + ' ' + str(ttyp1) + ' ' + str(tx1) + ' ' + str(ty1) + ' ' + str(tz1))
			oldx = cx1
			oldy = cy1
			cdir1 = UO.GetDir()
		Else
			cx1 = UO.GetX()
			cy1 = UO.GetY()
			if (cx1 <> oldx) OR (cy1 <> oldy) then
				UO.TextPrint(str(cx1) + ' ' + str(cy1) + ' ' + '0 0 0 0')
				oldx = cx1
				oldy = cy1
			endif
			cdir1 = UO.GetDir()
		Endif
	until false
endsub
Last edited by Edred on 14.11.2006 23:20, edited 1 time in total.
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Post by CFA »

мысли по поводу ходилки.
раз сейчас нет возможности узнать что за тайл по нужным координатам, то и проверить его на проходимость тоже нельзя. поэтому можно использовать заранее построенную битовую карты проходимости - стандартный размер УОшной карты - 6144x4096 - 6144*4096/8 = 3 мб. имея такую карту - можно сделать трассировку маршрута. решение конечно не идеальное (не учитываеться динамика например), но всяко лучше чем ходить на угад.
проблема в том как построить такой файл, и неудобная работа с двоичными файлами в стелсе.
Lokkie
Neophyte
Neophyte
Posts: 30
Joined: 02.08.2006 7:55

Post by Lokkie »

CFA wrote:мысли по поводу ходилки.
раз сейчас нет возможности узнать что за тайл по нужным координатам, то и проверить его на проходимость тоже нельзя. поэтому можно использовать заранее построенную битовую карты проходимости - стандартный размер УОшной карты - 6144x4096 - 6144*4096/8 = 3 мб..
Идея - класс, но как реализовать? В принципе ВСЮ карту и не надо, обычно хватит и пары экранов
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Post by CFA »

нада обработать файлы клиента - tiledata.mul - на предмет проходимости итемов/тайлов и если я правильно понимаю map0.mul - на предмет того, что именно находиться в нужных координатах.
я их формата не знаю, но наверняка он где-то расписан.
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Поправил пост о записи маршрута
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

CFA wrote:я их формата не знаю, но наверняка он где-то расписан.
http://gonzo.kiev.ua/formats/file_formats.html
Xtreem
Neophyte
Neophyte
Posts: 44
Joined: 02.12.2006 4:29

Post by Xtreem »

Edred wrote:у меня в скрипте на мининг
Вот былобы не плохо если бы ты его выложил, а мы бы его переделали каждый под свой шард :oops:
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Я добывающие выкладываю только после того, как они мне самому не нужны. И для пилота так было, и для инжекта, и для Изи. А теперь так будет для стелса. 8)

Так что удовлетворись тем, что я все остальные скрипты выкладываю сразу после написания и первичной отладки. И новые версии, если не забываю, скидываю тоже.

Единственное исключение - фишинг. Он уже лежит. А мининг, ламбер, бот на ПвМ - это для личного использования (последний на стелсе еще не писал, времени нету).
Xtreem
Neophyte
Neophyte
Posts: 44
Joined: 02.12.2006 4:29

Post by Xtreem »

Поделись со мной :) Я тебе конкуренции не составлю, т.к. играю на богом забытом сервере называется IPY Alkar Pre-Aos ;)
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

В моих правилах не делать исключения из правил. Иначе это уже не правила. Все данное кому-то куда-то для частного использования очень быстро оказывается у всех в общем пользовании. У меня опыт в этом большой.
Destruction
Neophyte
Neophyte
Posts: 17
Joined: 03.09.2006 11:05
Contact:

Post by Destruction »

Edred, исключения лишь подтверждают правила, разве нет?

PS: Со мной поделись, а? Ты же выложил на UltimaSoft - ASM, пароль вроде как не расползся... Да и я - не дурак, чтобы делится скриптами.
Acronym
Novice
Novice
Posts: 114
Joined: 10.05.2005 18:42
Location: Odessa, NDW
Contact:

Post by Acronym »

Miralex wrote:
CFA wrote:я их формата не знаю, но наверняка он где-то расписан.
http://gonzo.kiev.ua/formats/file_formats.html
http://sorea.profitux.cz/patching

Еще одна интересная ссылка
aka Trickster [YGG]
current version: 1.0 [RC3]
Post Reply