Перейти к контенту

Рекомендуемые сообщения

7 минут назад, naxac сказал:

for i = 1, count do

хорошо, а COUNT - сколько ставить? Если больше 300000 - вылет

upd: попробуй сам перебрать вертексы и сам всё увидишь, не работает такой перебор, он всё не перебирает.

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Ссылка на комментарий

@Баба ЯГА, вот так только что попробовал, всё работает:

Скрытый текст

function ggg()
	local pos = db.actor:position()
	local vpos
	local n = 0
	for i = 1, 595499 do	-- для Кордона
		vpos = level.vertex_position(i)
		if vpos and vpos:distance_to_sqr(pos) < 9 then
			n = n + 1
			log(i)
		end
	end
	log("found %s vertexes", n)
end

 

вот что получил:

Скрытый текст

385291
386206
386207
386208
386209
386210
387120
387121
387122
387123
387124
387125
387126
388033
388034
388035
388036
388037
388038
388039
388945
388946
388947
388948
388949
388950
388951
389852
389853
389854
389855
389856
389857
389858
389859
390747
390748
390749
390750
390751
390752
390753
391639
391640
391641
391642
391643
391644
391645
392549
392550
392551
392552
found 53 vertexes

 

Изменено пользователем naxac

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

@naxac, точно, проверил, всё работает! Ты меня просто спас :159:

Ничего не пойму, а чего у меня вылетало тогда? Я же вроде всё тоже-самое делал... :russian_ru:

1 час назад, naxac сказал:

с помощью, например, Graph Viewer

где его взять? Чтобы каждую локацию не декомпилировать для LE?

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Ссылка на комментарий

@naxac, спасибо! :drinks:

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Ссылка на комментарий
4 часа назад, Баба ЯГА сказал:

Я же вроде всё тоже-самое делал... :russian_ru:

Вообще не то же самое. Ты перебирал game-вертексы, game-вертексы объединены в game_graph, у game-вертекса есть game_vertex_id. Соответствуют graph_point в СДК. Их на локацию в среднем по 250 штук, ну и на всю игру тысяч 5.

А есть level-вертексы с level_vertex_id. Соотвествуют аи-нодам в СДК, на каждой локации по 500к.

 

  • Согласен 3
Ссылка на комментарий

Интересует вопрос навигации НПС в оффлайне и на другие локации. Для того чтобы отправить куда-то НПС (он может уходить в оффлайн и переходить на другие локации) используется метод что-то вроде :set_move_path(). Я писал схемы логики без патч и лук поинтов, НПС передвигаются/стоят на основе данных левел вертексов, по сути задаем НПС поворот и заставляем идти пока дистанция до левел вертекса будет достаточно мала, это всё работает на онлайновском НПС и в пределах локации. Меня интересует вопрос можно ли скриптово без использования патч поинтов заставить НПС ходить в оффлайне и на другие локации?

Ссылка на комментарий

@Баба ЯГА, обрати внимание на модуль lua_helper. В нём есть уже готовые функции как для поиска минимальных и максимальных game- и level-вертексов на локации, так и для определения ближайшего вертекса к заданным координатам ( а также куча других полезных функций). Если нет желания интегрировать весь модуль в свой мод, можно как минимум изучить реализацию.

Ссылка на комментарий

@abramcumner, начинаю вникать потихоньку...

@Kirgudu, обязательно посмотрю.

 

Ребята, как поставить метку на карту по заданным координатам? Не на объект, а просто в нужную точку на карте?

upd:  есть идея поставить пустой рестриктор и на него поставить метку, но возникает вопрос - можно ли ставить пустой рестриктор и будет ли это большая нагрузка на ресурсы если таких рестрикторов и меток будет скажем - 500 штук?

upd2: где-то видел не могу найти - как заспавнить пустой рестриктор через скрипт?

Нашёл, вот так можно?

local sobj = alife():create( "space_restrictor", pos, lv, gv )

upd3: и ещё. можно ли поставить метку на level_vertex?

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Ссылка на комментарий

@Kirgudu, понял, спасибо. Возник вопрос: 

как узнать gv вертекса. если я знаю ID и позицию (координаты)?

local lvid = 30087
local vpos = level.vertex_position( lvid )
local sobj = alife():create( "space_restrictor", vpos, lvid, gv ) -- КАК УЗНАТЬ gv ???

 

Как узнать gv ?? :russian_ru:

9 минут назад, Kirgudu сказал:

сам же спрашивал и уже получал ответ здесь.

я помню что спрашивал уже это, искал тут, но не нашёл, пришлось спросить ещё раз... :blush:

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Ссылка на комментарий

@Баба ЯГА, навскидку на ум приходит только перебор вертексов вокруг твоих координат и определение вертекса с минимальным расстоянием. См. комментарии выше и lua_helper.

И прекрати флудить, задавая те же вопросы другими словами.

Изменено пользователем Kirgudu
Ссылка на комментарий

 @Kirgudu, ты не понял, это всё мне уже @naxac выше подсказал, это всё готово уже - нахожнение веретексов вокруг ГГ, в итоге я знаю веретексы вокруг ГГ и их координаты, но не знаю как получить game_vertex - для level вертекс, ну я не знаю как ещё объяснить. Вот я ж выше писал:

local sobj = alife():create( "space_restrictor", ЭТО ЕСТЬ, ЭТО ЕСТЬ, ЭТО КАК УЗНАТЬ??? )

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Ссылка на комментарий
5 часов назад, Graff46 сказал:

можно ли скриптово без использования патч поинтов заставить НПС ходить в оффлайне и на другие локации?

В пределах локации можно и проще, по координатам - npc:set_dest_level_vertex_id(lvid)

Для перемещения же на другие локации вроде надо работать с привязкой НПС к смартам. Что-то подобное обсуждали давно здесь.

 

@Баба ЯГА, я-то всё прекрасно понял, а тебе все необходимые подсказки уже дали.

У тебя есть level-вертекс и его координаты. Для поиска game-вертекса можно воспользоваться перебором, аналогичным тому, который предложил @naxac для level-вертексов. Например:

Скрытый текст

function get_gvid_by_pos(pos)
	local gmg, vpos, n = game_graph(), vector(), 0
	for i = gvid_min, gvid_max do -- gvid_min, gvid_max - минимальный и максимальный game-вертексы для данной локации
		vpos = gmg:vertex(i):level_point()
		if vpos and vpos:distance_to_sqr(pos) < 9 then
			n = n + 1
			log(i)
		end
	end
	log("found %s game vertexes", n)
end

 

 

Изменено пользователем Kirgudu
Ссылка на комментарий

@Kirgudu, попробую объяснить ещё раз что мне нужно, курил я твой код никуда его не смог прикрутить...

Итак:

1) перебираю вокруг ГГ все вертексы в радиусе 20 метров

2) заношу их в таблицу вида = id вертекса, координаты вертекса

3) спавню пустые рестрикторы по координатам найденных вертексов и на них ставлю метки. НО. чтобы заспавнить рестриктор, мне нужен ГЕЙМ ВЕРТЕКС, вот ты перебираешь гейм вертексы. а как мне определить к какому ЛЕВЕЛ вертексу подходит ГЕЙМ вертекс которые ты перебираешь? Ещё не понял? Ну нашёл я в радиусе 20 метров по твоему скрипту 4 гейм вертекса и что мне с ними делать? У меня таблица, в ней, для примера:

t = { 30087 = { -120.00,-18.00,-200.00 } }

вот из твоего скрипта нашло 4 гейм вертекса = 47, 22,17,44 - и как мне узнать какой именно ГЕЙМ ВЕРТЕКС нужен для спавна -> 30087 = { -120.00,-18.00,-200.00 }?  

t = { 30087 = { -120.00,-18.00,-200.00 } }

вот мне нужно заспавнить рестриктор:
local sobj = alife():create( "space_restrictor", 30087-120.00,-18.00,-200.00 ,  а сюда какой из твоих геймвертексов ставить??? их четыре - какой сюда? )

@Kirgudu ???

5 часов назад, Kirgudu сказал:

for i = gvid_min, gvid_max do -- gvid_min, gvid_max - минимальный и максимальный game-вертексы для данной локации

И откуда мне знать какой минимальный гейм вертекс на локации вертекс а какой максимальный.

Изменено пользователем W.A.S.P.
красный цвет
Добавлено  Опричник,

Правила форума, п. 2.3 (красный цвет в постах)

Предупреждение.

Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... ©

Ссылка на комментарий

@Баба ЯГА, полегче, полегче. Красным цветом и прописными буквами пиши в другом месте. Надо разжевать и в рот положить, да? Извини, не по адресу обратился. Предпочитаю дать пищу для самостоятельных размышлений, хотя бы минимальных.

47 минут назад, Баба ЯГА сказал:

Ну нашёл я в радиусе 20 метров по твоему скрипту 4 гейм вертекса и что мне с ними делать?

Например, модифицировать функцию так, чтобы сразу искала единственный гейм-вертекс, находящийся на минимальном расстоянии от твоих координат, а не все вертексы в радиусе 9 метров.

 

52 минуты назад, Баба ЯГА сказал:

И откуда мне знать какой минимальный гейм вертекс на локации вертекс а какой максимальный.

 

8 часов назад, Kirgudu сказал:

обрати внимание на модуль lua_helper. В нём есть уже готовые функции как для поиска минимальных и максимальных game- и level-вертексов на локации, так и для определения ближайшего вертекса к заданным координатам ( а также куча других полезных функций)

 

Ссылка на комментарий

Времени доброго! А подскажите пожалуйста, куда ковырнуть, чтобы навыки по обходу аномалий у NPC откорректировать? Только я в них влетаю, ни одного трупа НПС от аномалий :|

Ссылка на комментарий

@Graff46, Совсем не лишне бы было указать версию/патч, и допустим с Кругловым могут возникнуть неполадки (правится), да и зомбарям как нить отрезать (бреду себе).:)

Ссылка на комментарий

@Graff46, а в солянке та же схема интегрирована от товарища Ред?

Просто поведение НПС  несколько отличается - соляночной от этого мода.

В солянке НПС плавно обходят аномалии, а в моде они начинают впадать в режим "готов стрелять" и с пушкой в руках оббегают аномалию по маленькому шагу, выглядит очень странно

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

×
×
  • Создать...