Chyvachok писал: cl_entity_s *gun = gEngfuncs.GetViewModel(); и заработало.
Учти, луч берёт углы от вьюмодели. То есть такое годится только для эффекта от первого лица. Если захочется рисовать от третьего, например другим игрокам в мультиплеере, получится бред.
Ku2zoff с этим клиентом я кстати заметил еще проблему, трасса на клиенте с сервером расходится, особенно заметно на карте с большими расстояниями, урон наносится строго в прицел, а луч и не только он, декали, эффект попадания наносятся немного ниже, бывает трассу вообще под определенным углом скашивает, прямо но заметно ниже прицела. Причем код трассы взят из стандартных эвентов, я его не изменял.
Я смотрел код лучевой пушки из ХДМ-а, там аж 3 мессаги у оружия, одна для звука выстрела и анимации, потом отдельной мессагой рисуется луч, и третим эффект попадания. У меня все в одной мессаге.
Aynekko писал: Вопрос такой, задаю звук текстурам в materials.txt и при добавлении очередной текстуры у предыдущей звук снова сменился на generic, хотя она прописана. Если удалить новую текстуру из списка, то к предыдущей звук возвращается.
Написано, что лимит в файле 512, хотя строчек в файле около 300 - я уже не говорю про то, что между ними пробелы даже есть.
Опытным путем заметил, что можно заставить обе эти текстуры звучать, если удалить еще какие-то строчки. То есть явно идет упор в лимит. Почему, и как его обойти?
Собственно, я полез ковыряться, но ничего не получилось (не сломалось, но и не заработало). Куда копать?
Все еще не могу побороть этот бред. Текстура me_grass, не работает (играет дефолтный звук ходьбы). Закомментил штук 20 строчек в разделе unbreakable crates (напр. W CRATE1 и так по списку). Текстура все равно не работает.
Переименовал me_grass в me_grsss. Сразу же заработала. (само собой переложил текстуру на карте и перекомпилил)
НО ПРИ ЭТОМ ОТВАЛИЛАСЬ ДРУГАЯ ТЕКСТУРА
C++ Source Code:
1
M ME_METAL
2
M ME_SERVSIDE
3
M ME_GRATE // <--- вот эта отвалилась, играет дефолт
4
M ME_GRATEBL
5
M ME_GRATEWH
Это вообще что и как? У меня уже мозг плавится.
Добавлено 28-10-2020 в 12:26:
Кое-что удалось нарыть.
При значении CTEXTURESMAX 300 текстура заработала.
При значении 340 текстура все еще не работает.
При значении 330 отвалилось еще 3 текстуры.
320 - 2 из 4 отвалившихся вернулись в строй…
310 - работают вроде бы все.
При этом в файле прописаны активные 343 текстуры. ЧТО ЗА
Я разобрался кажется и текстуры заработали.
У меня в materials всего около 370 строчек, включая все закомментированные и т.д. и т.п. А CTEXTURESMAX проставил 512, при этом текстуры отваливаются.
Я взял и заспамил файл строчками в конце
C++ Source Code:
1
D NONE
2
D NONE
3
D NONE
4
D NONE
5
D NONE
6
......
Хотел null, но вспомнил что такая текстура есть. Не суть важно думаю, прописал ту, которой вообще в игре нет. В итоге всего строчек в файле стало больше 512 (540 где-то).
Неужели алгоритму сортировки не нравился пустой конец файла? Это только мои догадки. Но без этого спама нужная текстура не работает. Со спамом работает вообще все (по крайней мере, что активно тестил и активно отваливалось). Такие дела.
Добавлено 28-10-2020 в 13:28:
Поднял лимит текстур до 1024, увеличил буфер на 1024 и т.д.
Добавил новую текстуру - она сразу отвалилась.
Добил файл до 1060 строчек - текстура заработала. Остальные тоже работают. ох, халфа-халфушка родименькая. Обожаю.
Все же это не точно. Т.к. когда добавил еще до 1200 строчек, текстура снова отвалилась. Черт его знает. В общем, путем манипуляции с фейковыми строчками можно заставлять работать текстуры, если они не хотят.
Так я удалял. И поведение непредсказуемо - удалишь, одна заработает, отвалится другая. Сейчас по моей методе у меня вообще более 800 неактивных текстур в файле (текстура NONE прописана 700 с чем-то раз) и пока все окей вроде.
После добавления новых текстур все равно идут отвалы. Так вот я попробовал заменить i < gcTextures и j < gcTextures на знак меньше или равно. В итоге все текстуры, кроме одной (из тех что я тестирую) вернулись в строй. Но тут метод тыка, ибо я здесь что-то понимаю очень отдаленно.
Добавлено 28-10-2020 в 17:50:
Нашел другой, пока что безотказный, метод без спама строчками. Просто прописываем текстуру в файл повторно, пока она не заработает.
Я подозреваю, что там калечный парсер, не всегда видит перенос строки.
Ты каком блокноте заполняешь этот файлик?
Добавлено 28-10-2020 в 18:55:
А. Вот что я вспомнил. У тебя есть имена текстур более 13 символов?
Если да - вот они-то всё и портят.
C++ Source Code:
#define CBTEXTURENAMEMAX 13 // only load first n chars of name
Массив же непрерывный и при выходе за границы имени, он тебе просто затирает часть имени следующей текстуры. Отсюда и это шаманство - там добавлю, тут испортится.
Увеличь до 16 символов и по идее все баги пропадут.
static int gcTextures = 0;
Потом в инит тоже gcTextures = 0.
Цитата:
Дядя Миша писал: Увеличь до 16 символов и по идее все баги пропадут.
Поставил 24, не помогло. Текстура была прописана 1 раз. Прописал ее 2 раза - заработала. Для одной текстуры вообще 3 раза пришлось прописать.
Блокнот самый обычный виндовый.