Форум TeamX
   Home   Members  
Pages: [1] |   Go Down
 
Author Topic: Как получить координаты соседнего гекса, и определить что гекс занят.  (Read 1185 times)
Fakels
Пользователь
Posts: 337

Модный геймер


Как получить координаты соседнего гекса, и определить что гекс занят.
« on: 10 August 2008, 14:14:01 »

В общем вот проблемка.
Так сказать, как от центрального гекса получить номера соседних, как это реализовать?

зы: сейчас использую critter_attempt_placement(ObjectPtr, hex, elev).
но он как то неправильно располагает критеров не пососедним гексам Грустный  если гекс уже занят.
« Last Edit: 10 August 2008, 20:45:25 by Fakels »

"Необходимо учесть все условия и тогда - нет проблем"
Fakels
Пользователь
Posts: 337

Модный геймер


Re: Как получить координаты соседнего гекса.
« Reply #1 on: 10 August 2008, 20:44:24 »

Все решил проблему функцией tile_num_in_direction. Не узрел эту функцию.
А другие есть вариаты решения?

Тут сразу же возникла другая проблема, как определить что данный гекс уже занят?
функция tile_contains_obj_pid не про катит так как пиды на гексе могут быть разными.

"Необходимо учесть все условия и тогда - нет проблем"
Oleg
Пользователь
Posts: 547


Re: Как получить координаты соседнего гекса, и определить что гекс занят.
« Reply #2 on: 10 August 2008, 22:22:58 »

Поищи на старом форуме. Там кто-то делал автоматическую сборку предметов с трупов после боя... Можно сказать аналогичная ситуация... Улыбка

За сим прощаюсь, Олег.
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Как получить координаты соседнего гекса, и определить что гекс занят.
« Reply #3 on: 11 August 2008, 10:09:20 »

Quote
А другие есть вариаты решения?
А смысл в других вариантах?
Quote
Тут сразу же возникла другая проблема, как определить что данный гекс уже занят?
И снова: а смысл? Да, были попытки и даже были рабочие функции. Только тормозили они немеряно. critter_attempt_placement как раз пытается расположить криттера на гексе и как раз учитывает занятость гекса. Но только один раз. Т.е. если ты пытаешься разместить десять криттеров в жутком тёмном углу на одном гексе, ничего у тебя не выйдет. Улыбка

PS "Баг толпы", кстати, хорошо виден в "караванных" встречах Ф1. Там тоже используется critter_attempt_placement, но толпа настолько плотная, что всё равно часть криттеров оказывается в результате на одном и том же гексе. Потому что пробует другой гекс функция всего один раз. И правильно делает, ибо перебирать всё -- верный путь к тормозам.
Fakels
Пользователь
Posts: 337

Модный геймер


Re: Как получить координаты соседнего гекса, и определить что гекс занят.
« Reply #4 on: 11 August 2008, 20:41:45 »

Quote from: Wasteland Ghost on 11 August 2008, 10:09:20
А смысл в других вариантах?
Да ты права, смысла нет.

Quote from: Wasteland Ghost on 11 August 2008, 10:09:20
critter_attempt_placement как раз пытается расположить криттера на гексе и как раз учитывает занятость гекса. Но только один раз.
ибо перебирать всё -- верный путь к тормозам.
Да мне и одной проверки достаточно, главное что-бы размещало на соседнем гексе, а не на дистанции в пять гексов, просто такая ситуация, в доме нужно расположить критеров, а когда гекс уже занят функция может разместить критера и за пределами дома, что не очень выглядит. Дом маленький получился, зараза. Грустный

Лано попробую добится более менее нормального расположения еще с помощью tile_get_next_critter.

Жалко что бисовцы не предусмотрели такую комманду чтобы проверяла гекс на не проходимый(занятый), мож в sfall есть что нибудь?

зы: А насчет тормозов, что от проца не зависит, думаю у нас уже давно не те компы, что раньше.
« Last Edit: 11 August 2008, 20:54:59 by Fakels »

"Необходимо учесть все условия и тогда - нет проблем"
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Как получить координаты соседнего гекса, и определить что гекс занят.
« Reply #5 on: 14 August 2008, 12:11:30 »

Вы таки будете смеяться, но некоторые играют на старых компах. Или на симуляторах. И пожирание игрой ресурсов не есть гуд.
Pages: [1] |   Go Up