Прострел ворот EmuRT

Ackustik

Выдающийся
Местный
Сообщения
147
Розыгрыши
0
Репутация
112
Реакции
73
Баллы
1 323
Начал разбираться с исходами EmuRT last reva (как было написано) потихоньку правлю мелочевку (причем странно как будто специально баги создавали:: ). Столкнулся с проблемой прострела ворот при осадах замков. Геодаты использовал разные эффект тот же. при проверки таргета на видимость через гео в EmuRT //geo_los для него ворот просто не существует стены прекрасно видит. Может кто уже сталкивался и сможет подсказать в какую сторону копать? это геодвиг при проверке таргета перед атакой какую проверку липить надо?

З.Ы. Хорошо хоть сквозь ворота перс не проходит.
 
Последнее редактирование:
Я бы не советовал брать их за основу.
 
Реакции: deMEV

    deMEV

    Баллов: 18
    За эпический ответ
что то критичное?) просто пока нечего критичного не нашел ну кроме ворот конечно))
 
Даже не сомневаюсь, но думаю такое не только в этой сборке) глубоко в код пока не лез, так правка XMLок, чуток кода что бы с компилилось, увеличил рэндж каста флага на осадах фортов, вобщем по мелочи. А так поднял на работе на серваке, пару задротов бегают тестят пока их все устраивает.
 

я так понимаю у геодвига он все таки спрашивает видна ли цель или нет) осталось рассказать геодвигу что ворота не пустой звук)

вот гео двиг:


GeoCollision


Shape


Помогите с пониманием Геометрии того как это все работает (хотя скорее должно работать)
 
Последнее редактирование модератором:
Есть тут те кто ставил эту сборку и была ли такая проблема, или это только у меня?
 
Последнее редактирование:
Так, для раздумий
Код:
public boolean doorInfo(int x, int y, int z, int instance, int doorid)
    {
        worldService.getRegion(x, y).getSurroundingRegions().stream().forEach(region -> {
            region.getDoorService().getDoor(instance).stream().forEach(door -> {
                final Collision collision = door.getCollision();

                if (collision == null) {
                    continue;
                }
                
                for (int ix = -MathUtil.LossyPointsOnConvert; ix <= MathUtil.LossyPointsOnConvert; ix++) {
                    for (int iy = -MathUtil.LossyPointsOnConvert; iy <= MathUtil.LossyPointsOnConvert; iy++) {
                        if (collision.isInside(x + ix, y + iy, z)) {
                            if (door.getDoorId() == doorid) {
                                return false;
                            }
                            return true;
                        }
                    }
                }
            });
        });
    
        return false;
    }
 
А какая разница под какую? Перевести овер на 8 смешно...